User Tools

Site Tools


gtav:natives

Differences

This shows you the differences between two versions of the page.


gtav:natives [2022/02/01 23:18] (current) – old revision restored (2022/02/01 23:09) jitnaught
Line 1: Line 1:
 +====== GTA V Natives ======
 +===== SYSTEM =====
 +==== WAIT ====
 +<code cpp>void SYSTEM::WAIT(int ms) // 0x4EDE34FBADD967A6 0x7715C03B b323</code>
  
 +<code>Pauses execution of the current script, please note this behavior is only seen when called from one of the game script files(ysc). In order to wait an asi script use "static void WAIT(DWORD time);" found in main.h</code>
 +==== START_NEW_SCRIPT ====
 +<code cpp>int SYSTEM::START_NEW_SCRIPT(const char* scriptName, int stackSize) // 0xE81651AD79516E48 0x3F166D0E b323</code>
 +
 +<code>Examples:
 + g_384A = SYSTEM::START_NEW_SCRIPT("cellphone_flashhand", 1424);
 + l_10D = SYSTEM::START_NEW_SCRIPT("taxiService", 1828);
 + SYSTEM::START_NEW_SCRIPT("AM_MP_YACHT", 5000);
 + SYSTEM::START_NEW_SCRIPT("emergencycall", 512);
 + SYSTEM::START_NEW_SCRIPT("emergencycall", 512); 
 + SYSTEM::START_NEW_SCRIPT("FM_maintain_cloud_header_data", 1424);
 + SYSTEM::START_NEW_SCRIPT("FM_Mission_Controller", 31000);
 + SYSTEM::START_NEW_SCRIPT("tennis_family", 3650);
 + SYSTEM::START_NEW_SCRIPT("Celebrations", 3650);
 +
 +Decompiled examples of usage when starting a script:
 + 
 +    SCRIPT::REQUEST_SCRIPT(a_0);
 +    if (SCRIPT::HAS_SCRIPT_LOADED(a_0)) {
 +        SYSTEM::START_NEW_SCRIPT(a_0, v_3);
 +        SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(a_0);
 +        return 1;
 +    }
 + 
 +or:
 +
 +    v_2 = "MrsPhilips2";
 +    SCRIPT::REQUEST_SCRIPT(v_2);
 +    while (!SCRIPT::HAS_SCRIPT_LOADED(v_2)) {
 +    SCRIPT::REQUEST_SCRIPT(v_2);
 +    SYSTEM::WAIT(0);
 +    }
 +    sub_8792(36);
 +    SYSTEM::START_NEW_SCRIPT(v_2, 17000);
 +    SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(v_2);
 +
 +All native script names: pastebin.com/K9adDsu4 and pastebin.com/yLNWicUi</code>
 +==== START_NEW_SCRIPT_WITH_ARGS ====
 +<code cpp>int SYSTEM::START_NEW_SCRIPT_WITH_ARGS(const char* scriptName, Any* args, int argCount, int stackSize) // 0xB8BA7F44DF1575E1 0x4A2100E4 b323</code>
 +
 +<code>return : script thread id, 0 if failed
 +Pass pointer to struct of args in p1, size of struct goes into p2</code>
 +==== START_NEW_SCRIPT_WITH_NAME_HASH ====
 +<code cpp>int SYSTEM::START_NEW_SCRIPT_WITH_NAME_HASH(Hash scriptHash, int stackSize) // 0xEB1C67C3A5333A92 0x8D15BE5D b323</code>
 +
 +==== START_NEW_SCRIPT_WITH_NAME_HASH_AND_ARGS ====
 +<code cpp>int SYSTEM::START_NEW_SCRIPT_WITH_NAME_HASH_AND_ARGS(Hash scriptHash, Any* args, int argCount, int stackSize) // 0xC4BB298BD441BE78 0xE38A3AD4 b323</code>
 +
 +==== TIMERA ====
 +<code cpp>int SYSTEM::TIMERA() // 0x83666F9FB8FEBD4B 0x45C8C188 b323</code>
 +
 +<code>Counts up. Every 1000 is 1 real-time second. Use SETTIMERA(int value) to set the timer (e.g.: SETTIMERA(0)).</code>
 +==== TIMERB ====
 +<code cpp>int SYSTEM::TIMERB() // 0xC9D9444186B5A374 0x330A9C0C b323</code>
 +
 +==== SETTIMERA ====
 +<code cpp>void SYSTEM::SETTIMERA(int value) // 0xC1B1E9A034A63A62 0x35785333 b323</code>
 +
 +==== SETTIMERB ====
 +<code cpp>void SYSTEM::SETTIMERB(int value) // 0x5AE11BC36633DE4E 0x27C1B7C6 b323</code>
 +
 +==== TIMESTEP ====
 +<code cpp>float SYSTEM::TIMESTEP() // 0x0000000050597EE2 0x50597EE2 b323</code>
 +
 +<code>Gets the current frame time.</code>
 +==== SIN ====
 +<code cpp>float SYSTEM::SIN(float value) // 0x0BADBFA3B172435F 0xBF987F58 b323</code>
 +
 +==== COS ====
 +<code cpp>float SYSTEM::COS(float value) // 0xD0FFB162F40A139C 0x00238FE9 b323</code>
 +
 +==== SQRT ====
 +<code cpp>float SYSTEM::SQRT(float value) // 0x71D93B57D07F9804 0x145C7701 b323</code>
 +
 +==== POW ====
 +<code cpp>float SYSTEM::POW(float base, float exponent) // 0xE3621CC40F31FE2E 0x85D134F8 b323</code>
 +
 +==== _LOG10 ====
 +<code cpp>float SYSTEM::_LOG10(float value) // 0xE816E655DE37FE20  b1604</code>
 +
 +==== VMAG ====
 +<code cpp>float SYSTEM::VMAG(float x, float y, float z) // 0x652D2EEEF1D3E62C 0x1FCF1ECD b323</code>
 +
 +<code>Calculates the magnitude of a vector.</code>
 +==== VMAG2 ====
 +<code cpp>float SYSTEM::VMAG2(float x, float y, float z) // 0xA8CEACB4F35AE058 0xE796E629 b323</code>
 +
 +<code>Calculates the magnitude of a vector but does not perform Sqrt operations. (Its way faster)</code>
 +==== VDIST ====
 +<code cpp>float SYSTEM::VDIST(float x1, float y1, float z1, float x2, float y2, float z2) // 0x2A488C176D52CCA5 0x3C08ECB7 b323</code>
 +
 +<code>Calculates distance between vectors.</code>
 +==== VDIST2 ====
 +<code cpp>float SYSTEM::VDIST2(float x1, float y1, float z1, float x2, float y2, float z2) // 0xB7A628320EFF8E47 0xC85DEF1F b323</code>
 +
 +<code>Calculates distance between vectors but does not perform Sqrt operations. (Its way faster)</code>
 +==== SHIFT_LEFT ====
 +<code cpp>int SYSTEM::SHIFT_LEFT(int value, int bitShift) // 0xEDD95A39E5544DE8 0x314CC6CD b323</code>
 +
 +==== SHIFT_RIGHT ====
 +<code cpp>int SYSTEM::SHIFT_RIGHT(int value, int bitShift) // 0x97EF1E5BCE9DC075 0x352633CA b323</code>
 +
 +==== FLOOR ====
 +<code cpp>int SYSTEM::FLOOR(float value) // 0xF34EE736CF047844 0x32E9BE04 b323</code>
 +
 +==== CEIL ====
 +<code cpp>int SYSTEM::CEIL(float value) // 0x11E019C8F43ACC8A 0xD536A1DF b323</code>
 +
 +<code>I'm guessing this rounds a float value up to the next whole number, and FLOOR rounds it down</code>
 +==== ROUND ====
 +<code cpp>int SYSTEM::ROUND(float value) // 0xF2DB717A73826179 0x323B0E24 b323</code>
 +
 +==== TO_FLOAT ====
 +<code cpp>float SYSTEM::TO_FLOAT(int value) // 0xBBDA792448DB5A89 0x67116627 b323</code>
 +
 +==== SET_THREAD_PRIORITY ====
 +<code cpp>void SYSTEM::SET_THREAD_PRIORITY(int priority) // 0x42B65DEEF2EDF2A1  b877</code>
 +
 +<code>0 = high
 +1 = normal
 +2 = low</code>
 +
 +===== APP =====
 +==== APP_DATA_VALID ====
 +<code cpp>BOOL APP::APP_DATA_VALID() // 0x846AA8E7D55EE5B6 0x72BDE002 b323</code>
 +
 +==== APP_GET_INT ====
 +<code cpp>int APP::APP_GET_INT(const char* property) // 0xD3A58A12C77D9D4B 0x2942AAD2 b323</code>
 +
 +==== APP_GET_FLOAT ====
 +<code cpp>float APP::APP_GET_FLOAT(const char* property) // 0x1514FB24C02C2322 0xD87F3A1C b323</code>
 +
 +==== APP_GET_STRING ====
 +<code cpp>const char* APP::APP_GET_STRING(const char* property) // 0x749B023950D2311C 0x849CEB80 b323</code>
 +
 +==== APP_SET_INT ====
 +<code cpp>void APP::APP_SET_INT(const char* property, int value) // 0x607E8E3D3E4F9611 0x1B509C32 b323</code>
 +
 +==== APP_SET_FLOAT ====
 +<code cpp>void APP::APP_SET_FLOAT(const char* property, float value) // 0x25D7687C68E0DAA4 0xF3076135 b323</code>
 +
 +==== APP_SET_STRING ====
 +<code cpp>void APP::APP_SET_STRING(const char* property, const char* value) // 0x3FF2FCEC4B7721B4 0x23DF19A8 b323</code>
 +
 +==== APP_SET_APP ====
 +<code cpp>void APP::APP_SET_APP(const char* appName) // 0xCFD0406ADAF90D2B 0x8BAC4146 b323</code>
 +
 +<code>Called in the gamescripts like:
 +APP::APP_SET_APP("car");
 +APP::APP_SET_APP("dog");</code>
 +==== APP_SET_BLOCK ====
 +<code cpp>void APP::APP_SET_BLOCK(const char* blockName) // 0x262AB456A3D21F93 0xC2D54DD9 b323</code>
 +
 +==== APP_CLEAR_BLOCK ====
 +<code cpp>void APP::APP_CLEAR_BLOCK() // 0x5FE1DF3342DB7DBA 0xDAB86A18 b323</code>
 +
 +==== APP_CLOSE_APP ====
 +<code cpp>void APP::APP_CLOSE_APP() // 0xE41C65E07A5F05FC 0x03767C7A b323</code>
 +
 +==== APP_CLOSE_BLOCK ====
 +<code cpp>void APP::APP_CLOSE_BLOCK() // 0xE8E3FCF72EAC0EF8 0xED97B202 b323</code>
 +
 +==== APP_HAS_LINKED_SOCIAL_CLUB_ACCOUNT ====
 +<code cpp>BOOL APP::APP_HAS_LINKED_SOCIAL_CLUB_ACCOUNT() // 0x71EEE69745088DA0 0xD368BA15 b323</code>
 +
 +==== APP_HAS_SYNCED_DATA ====
 +<code cpp>BOOL APP::APP_HAS_SYNCED_DATA(const char* appName) // 0xCA52279A7271517F 0x1DE2A63D b323</code>
 +
 +==== APP_SAVE_DATA ====
 +<code cpp>void APP::APP_SAVE_DATA() // 0x95C5D356CDA6E85F 0x84A3918D b323</code>
 +
 +==== APP_GET_DELETED_FILE_STATUS ====
 +<code cpp>int APP::APP_GET_DELETED_FILE_STATUS() // 0xC9853A2BE3DED1A6 0x784D550B b323</code>
 +
 +==== APP_DELETE_APP_DATA ====
 +<code cpp>BOOL APP::APP_DELETE_APP_DATA(const char* appName) // 0x44151AEA95C8A003 0x2A2FBD1C b323</code>
 +
 +
 +===== AUDIO =====
 +==== PLAY_PED_RINGTONE ====
 +<code cpp>void AUDIO::PLAY_PED_RINGTONE(const char* ringtoneName, Ped ped, BOOL p2) // 0xF9E56683CA8E11A5 0x1D530E47 b323</code>
 +
 +<code>All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/RFb4GTny
 +
 +AUDIO::PLAY_PED_RINGTONE("Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);
 +AUDIO::PLAY_PED_RINGTONE("Dial_and_Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);
 +</code>
 +==== IS_PED_RINGTONE_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_PED_RINGTONE_PLAYING(Ped ped) // 0x1E8E5E20937E3137 0xFE576EE4 b323</code>
 +
 +==== STOP_PED_RINGTONE ====
 +<code cpp>void AUDIO::STOP_PED_RINGTONE(Ped ped) // 0x6C5AE23EFA885092 0xFEEA107C b323</code>
 +
 +==== IS_MOBILE_PHONE_CALL_ONGOING ====
 +<code cpp>BOOL AUDIO::IS_MOBILE_PHONE_CALL_ONGOING() // 0x7497D2CE2C30D24C 0x4ED1400A b323</code>
 +
 +==== _0xC8B1B2425604CDD0 ====
 +<code cpp>BOOL AUDIO::_0xC8B1B2425604CDD0() // 0xC8B1B2425604CDD0 0x16FB88B5 b323</code>
 +
 +<code>IS_MOBILE_PHONE_*</code>
 +==== CREATE_NEW_SCRIPTED_CONVERSATION ====
 +<code cpp>void AUDIO::CREATE_NEW_SCRIPTED_CONVERSATION() // 0xD2C91A0B572AAE56 0xB2BC25F8 b323</code>
 +
 +==== ADD_LINE_TO_CONVERSATION ====
 +<code cpp>void AUDIO::ADD_LINE_TO_CONVERSATION(int index, const char* p1, const char* p2, int p3, int p4, BOOL p5, BOOL p6, BOOL p7, BOOL p8, int p9, BOOL p10, BOOL p11, BOOL p12) // 0xC5EF963405593646 0x96CD0513 b323</code>
 +
 +<code>NOTE: ones that are -1, 0 - 35 are determined by a function where it gets a TextLabel from a global then runs,
 +_GET_TEXT_SUBSTRING and depending on what the result is it goes in check order of 0 - 9 then A - Z then z (lowercase). So it will then return 0 - 35 or -1 if it's 'z'. The func to handle that ^^ is func_67 in dialog_handler.c atleast in TU27 Xbox360 scripts.
 +
 +p0 is -1, 0 - 35
 +p1 is a char or string (whatever you wanna call it)
 +p2 is Global 10597 + i * 6. 'i' is a while(i < 70) loop
 +p3 is again -1, 0 - 35 
 +p4 is again -1, 0 - 35 
 +p5 is either 0 or 1 (bool ?)
 +p6 is either 0 or 1 (The func to determine this is bool)
 +p7 is either 0 or 1 (The func to determine this is bool)
 +p8 is either 0 or 1 (The func to determine this is bool)
 +p9 is 0 - 3 (Determined by func_60 in dialogue_handler.c)
 +p10 is either 0 or 1 (The func to determine this is bool)
 +p11 is either 0 or 1 (The func to determine this is bool)
 +p12 is unknown as in TU27 X360 scripts it only goes to p11.</code>
 +==== ADD_PED_TO_CONVERSATION ====
 +<code cpp>void AUDIO::ADD_PED_TO_CONVERSATION(int index, Ped ped, const char* p2) // 0x95D9F4BC443956E7 0xF8D5EB86 b323</code>
 +
 +<code>4 calls in the b617d scripts. The only one with p0 and p2 in clear text:
 +
 +AUDIO::ADD_PED_TO_CONVERSATION(5, l_AF, "DINAPOLI");
 +
 +=================================================
 +One of the 2 calls in dialogue_handler.c p0 is in a while-loop, and so is determined to also possibly be 0 - 15.</code>
 +==== _0x33E3C6C6F2F0B506 ====
 +<code cpp>void AUDIO::_0x33E3C6C6F2F0B506(Any p0, float p1, float p2, float p3) // 0x33E3C6C6F2F0B506 0x73C6F979 b323</code>
 +
 +==== _0x892B6AB8F33606F5 ====
 +<code cpp>void AUDIO::_0x892B6AB8F33606F5(int p0, Entity entity) // 0x892B6AB8F33606F5 0x88203DDA b323</code>
 +
 +==== SET_MICROPHONE_POSITION ====
 +<code cpp>void AUDIO::SET_MICROPHONE_POSITION(BOOL p0, float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3) // 0xB6AE90EDDE95C762 0xAD7BB191 b323</code>
 +
 +<code>If this is the correct name, what microphone? I know your TV isn't going to reach out and adjust your headset so..</code>
 +==== _0x0B568201DD99F0EB ====
 +<code cpp>void AUDIO::_0x0B568201DD99F0EB(BOOL p0) // 0x0B568201DD99F0EB 0x1193ED6E b323</code>
 +
 +==== _0x61631F5DF50D1C34 ====
 +<code cpp>void AUDIO::_0x61631F5DF50D1C34(BOOL p0) // 0x61631F5DF50D1C34  b323</code>
 +
 +==== START_SCRIPT_PHONE_CONVERSATION ====
 +<code cpp>void AUDIO::START_SCRIPT_PHONE_CONVERSATION(BOOL p0, BOOL p1) // 0x252E5F915EABB675 0x38E42D07 b323</code>
 +
 +==== PRELOAD_SCRIPT_PHONE_CONVERSATION ====
 +<code cpp>void AUDIO::PRELOAD_SCRIPT_PHONE_CONVERSATION(BOOL p0, BOOL p1) // 0x6004BCB0E226AAEA 0x9ACB213A b323</code>
 +
 +==== START_SCRIPT_CONVERSATION ====
 +<code cpp>void AUDIO::START_SCRIPT_CONVERSATION(BOOL p0, BOOL p1, BOOL p2, BOOL p3) // 0x6B17C62C9635D2DC 0xE5DE7D9D b323</code>
 +
 +==== PRELOAD_SCRIPT_CONVERSATION ====
 +<code cpp>void AUDIO::PRELOAD_SCRIPT_CONVERSATION(BOOL p0, BOOL p1, BOOL p2, BOOL p3) // 0x3B3CAD6166916D87 0xDDF5C579 b323</code>
 +
 +==== START_PRELOADED_CONVERSATION ====
 +<code cpp>void AUDIO::START_PRELOADED_CONVERSATION() // 0x23641AFE870AF385 0xA170261B b323</code>
 +
 +==== GET_IS_PRELOADED_CONVERSATION_READY ====
 +<code cpp>BOOL AUDIO::GET_IS_PRELOADED_CONVERSATION_READY() // 0xE73364DB90778FFA 0x336F3D35 b323</code>
 +
 +==== IS_SCRIPTED_CONVERSATION_ONGOING ====
 +<code cpp>BOOL AUDIO::IS_SCRIPTED_CONVERSATION_ONGOING() // 0x16754C556D2EDE3D 0xCB8FD96F b323</code>
 +
 +==== IS_SCRIPTED_CONVERSATION_LOADED ====
 +<code cpp>BOOL AUDIO::IS_SCRIPTED_CONVERSATION_LOADED() // 0xDF0D54BE7A776737 0xE1870EA9 b323</code>
 +
 +==== GET_CURRENT_SCRIPTED_CONVERSATION_LINE ====
 +<code cpp>int AUDIO::GET_CURRENT_SCRIPTED_CONVERSATION_LINE() // 0x480357EE890C295A 0x9620E41F b323</code>
 +
 +==== PAUSE_SCRIPTED_CONVERSATION ====
 +<code cpp>void AUDIO::PAUSE_SCRIPTED_CONVERSATION(BOOL p0) // 0x8530AD776CD72B12 0xE2C9C6F8 b323</code>
 +
 +==== RESTART_SCRIPTED_CONVERSATION ====
 +<code cpp>void AUDIO::RESTART_SCRIPTED_CONVERSATION() // 0x9AEB285D1818C9AC 0x6CB24B56 b323</code>
 +
 +==== STOP_SCRIPTED_CONVERSATION ====
 +<code cpp>int AUDIO::STOP_SCRIPTED_CONVERSATION(BOOL p0) // 0xD79DEEFB53455EBA 0xAB77DA7D b323</code>
 +
 +==== SKIP_TO_NEXT_SCRIPTED_CONVERSATION_LINE ====
 +<code cpp>void AUDIO::SKIP_TO_NEXT_SCRIPTED_CONVERSATION_LINE() // 0x9663FE6B7A61EB00 0x85C98304 b323</code>
 +
 +==== INTERRUPT_CONVERSATION ====
 +<code cpp>void AUDIO::INTERRUPT_CONVERSATION(Any p0, Any* p1, Any* p2) // 0xA018A12E5C5C2FA6 0xF3A67AF3 b323</code>
 +
 +==== INTERRUPT_CONVERSATION_AND_PAUSE ====
 +<code cpp>void AUDIO::INTERRUPT_CONVERSATION_AND_PAUSE(Ped ped, const char* p1, const char* p2) // 0x8A694D7A68F8DC38 0xDD4A3F1F b323</code>
 +
 +<code>One call found in the b617d scripts:
 +
 +AUDIO::_8A694D7A68F8DC38(NETWORK::NET_TO_PED(l_3989._f26F[0/*1*/]), "CONV_INTERRUPT_QUIT_IT", "LESTER");</code>
 +==== _0xAA19F5572C38B564 ====
 +<code cpp>Any AUDIO::_0xAA19F5572C38B564(Any* p0) // 0xAA19F5572C38B564 0xB58B8FF3 b323</code>
 +
 +==== _0xB542DE8C3D1CB210 ====
 +<code cpp>void AUDIO::_0xB542DE8C3D1CB210(BOOL p0) // 0xB542DE8C3D1CB210 0x789D8C6C b323</code>
 +
 +==== REGISTER_SCRIPT_WITH_AUDIO ====
 +<code cpp>void AUDIO::REGISTER_SCRIPT_WITH_AUDIO(int p0) // 0xC6ED9D5092438D91 0xA6203643 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== UNREGISTER_SCRIPT_WITH_AUDIO ====
 +<code cpp>void AUDIO::UNREGISTER_SCRIPT_WITH_AUDIO() // 0xA8638BE228D4751A 0x66728EFE b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== REQUEST_MISSION_AUDIO_BANK ====
 +<code cpp>BOOL AUDIO::REQUEST_MISSION_AUDIO_BANK(const char* p0, BOOL p1, Any p2) // 0x7345BDD95E62E0F2 0x916E37CA b323</code>
 +
 +<code> All occurrences and usages found in b617d: pastebin.com/NzZZ2Tmm
 + </code>
 +==== REQUEST_AMBIENT_AUDIO_BANK ====
 +<code cpp>BOOL AUDIO::REQUEST_AMBIENT_AUDIO_BANK(const char* p0, BOOL p1, Any p2) // 0xFE02FFBED8CA9D99 0x23C88BC7 b323</code>
 +
 +<code>All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: pastebin.com/XZ1tmGEz</code>
 +==== REQUEST_SCRIPT_AUDIO_BANK ====
 +<code cpp>BOOL AUDIO::REQUEST_SCRIPT_AUDIO_BANK(const char* p0, BOOL p1, int p2) // 0x2F844A8B08D76685 0x21322887 b323</code>
 +
 +<code>All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: pastebin.com/AkmDAVn6</code>
 +==== _0x40763EA7B9B783E7 ====
 +<code cpp>Any AUDIO::_0x40763EA7B9B783E7(Any p0, Any p1, Any p2) // 0x40763EA7B9B783E7  b573</code>
 +
 +==== HINT_AMBIENT_AUDIO_BANK ====
 +<code cpp>Any AUDIO::HINT_AMBIENT_AUDIO_BANK(Any p0, Any p1, Any p2) // 0x8F8C0E370AE62F5C 0xF1850DDC b323</code>
 +
 +==== HINT_SCRIPT_AUDIO_BANK ====
 +<code cpp>Any AUDIO::HINT_SCRIPT_AUDIO_BANK(Any p0, Any p1, Any p2) // 0xFB380A29641EC31A 0x41FA0E51 b323</code>
 +
 +==== RELEASE_MISSION_AUDIO_BANK ====
 +<code cpp>void AUDIO::RELEASE_MISSION_AUDIO_BANK() // 0x0EC92A1BF0857187 0x8E8824C7 b323</code>
 +
 +==== RELEASE_AMBIENT_AUDIO_BANK ====
 +<code cpp>void AUDIO::RELEASE_AMBIENT_AUDIO_BANK() // 0x65475A218FFAA93D 0x8C938784 b323</code>
 +
 +==== RELEASE_NAMED_SCRIPT_AUDIO_BANK ====
 +<code cpp>void AUDIO::RELEASE_NAMED_SCRIPT_AUDIO_BANK(const char* audioBank) // 0x77ED170667F50170 0x16707ABC b323</code>
 +
 +==== RELEASE_SCRIPT_AUDIO_BANK ====
 +<code cpp>void AUDIO::RELEASE_SCRIPT_AUDIO_BANK() // 0x7A2D8AD0A9EB9C3F 0x22F865E5 b323</code>
 +
 +==== _0x19AF7ED9B9D23058 ====
 +<code cpp>void AUDIO::_0x19AF7ED9B9D23058() // 0x19AF7ED9B9D23058 0xA58BBF4F b323</code>
 +
 +==== _0x9AC92EED5E4793AB ====
 +<code cpp>void AUDIO::_0x9AC92EED5E4793AB() // 0x9AC92EED5E4793AB 0xE67446E9 b323</code>
 +
 +==== _0x11579D940949C49E ====
 +<code cpp>void AUDIO::_0x11579D940949C49E(Any p0) // 0x11579D940949C49E  b678</code>
 +
 +==== GET_SOUND_ID ====
 +<code cpp>int AUDIO::GET_SOUND_ID() // 0x430386FE9BF80B45 0x6AE0AD56 b323</code>
 +
 +==== RELEASE_SOUND_ID ====
 +<code cpp>void AUDIO::RELEASE_SOUND_ID(int soundId) // 0x353FC880830B88FA 0x9C080899 b323</code>
 +
 +==== PLAY_SOUND ====
 +<code cpp>void AUDIO::PLAY_SOUND(int soundId, const char* audioName, const char* audioRef, BOOL p3, Any p4, BOOL p5) // 0x7FF4944CC209192D 0xB6E1917F b323</code>
 +
 +<code>All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/A8Ny8AHZ
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== PLAY_SOUND_FRONTEND ====
 +<code cpp>void AUDIO::PLAY_SOUND_FRONTEND(int soundId, const char* audioName, const char* audioRef, BOOL p3) // 0x67C540AA08E4A6F5 0x2E458F74 b323</code>
 +
 +<code>List: https://pastebin.com/DCeRiaLJ
 +
 +All occurrences as of Cayo Perico Heist DLC (b2189), sorted alphabetically and identical lines removed: https://git.io/JtLxM
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== PLAY_DEFERRED_SOUND_FRONTEND ====
 +<code cpp>void AUDIO::PLAY_DEFERRED_SOUND_FRONTEND(const char* soundName, const char* soundsetName) // 0xCADA5A0D0702381E 0xC70E6CFA b323</code>
 +
 +<code>Only call found in the b617d scripts:
 +
 +AUDIO::PLAY_DEFERRED_SOUND_FRONTEND("BACK", "HUD_FREEMODE_SOUNDSET");
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== PLAY_SOUND_FROM_ENTITY ====
 +<code cpp>void AUDIO::PLAY_SOUND_FROM_ENTITY(int soundId, const char* audioName, Entity entity, const char* audioRef, BOOL isNetwork, Any p5) // 0xE65F427EB70AB1ED 0x95AE00F8 b323</code>
 +
 +<code>All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/f2A7vTj0 
 +No changes made in b678d.
 +
 +gtaforums.com/topic/795622-audio-for-mods
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== _0x5B9853296731E88D ====
 +<code cpp>void AUDIO::_0x5B9853296731E88D(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x5B9853296731E88D  b877</code>
 +
 +==== PLAY_SOUND_FROM_COORD ====
 +<code cpp>void AUDIO::PLAY_SOUND_FROM_COORD(int soundId, const char* audioName, float x, float y, float z, const char* audioRef, BOOL isNetwork, int range, BOOL p8) // 0x8D8686B622B88120 0xCAD3E2D5 b323</code>
 +
 +<code>All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/eeFc5DiW
 +
 +gtaforums.com/topic/795622-audio-for-mods
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== _0x7EC3C679D0E7E46B ====
 +<code cpp>void AUDIO::_0x7EC3C679D0E7E46B(Any p0, Any p1, Any p2, Any p3) // 0x7EC3C679D0E7E46B  b678</code>
 +
 +==== STOP_SOUND ====
 +<code cpp>void AUDIO::STOP_SOUND(int soundId) // 0xA3B0C41BA5CC0BB5 0xCD7F4030 b323</code>
 +
 +==== GET_NETWORK_ID_FROM_SOUND_ID ====
 +<code cpp>int AUDIO::GET_NETWORK_ID_FROM_SOUND_ID(int soundId) // 0x2DE3F0A134FFBC0D 0x2576F610 b323</code>
 +
 +<code>Could this be used alongside either, 
 +SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES or _SET_NETWORK_ID_SYNC_TO_PLAYER to make it so other players can hear the sound while online? It'd be a bit troll-fun to be able to play the Zancudo UFO creepy sounds globally.</code>
 +==== GET_SOUND_ID_FROM_NETWORK_ID ====
 +<code cpp>int AUDIO::GET_SOUND_ID_FROM_NETWORK_ID(int netId) // 0x75262FD12D0A1C84 0xD064D4DC b323</code>
 +
 +==== SET_VARIABLE_ON_SOUND ====
 +<code cpp>void AUDIO::SET_VARIABLE_ON_SOUND(int soundId, Any* p1, float p2) // 0xAD6B3148A78AE9B6 0x606EE5FA b323</code>
 +
 +==== SET_VARIABLE_ON_STREAM ====
 +<code cpp>void AUDIO::SET_VARIABLE_ON_STREAM(const char* p0, float p1) // 0x2F9D3834AEB9EF79 0xF67BB44C b323</code>
 +
 +<code>From the scripts, p0:
 +
 +"ArmWrestlingIntensity",
 +"INOUT",
 +"Monkey_Stream",
 +"ZoomLevel"</code>
 +==== OVERRIDE_UNDERWATER_STREAM ====
 +<code cpp>void AUDIO::OVERRIDE_UNDERWATER_STREAM(Any* p0, BOOL p1) // 0xF2A9CDABCEA04BD6 0x9A083B7E b323</code>
 +
 +==== SET_VARIABLE_ON_UNDER_WATER_STREAM ====
 +<code cpp>void AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM(const char* variableName, float value) // 0x733ADF241531E5C2 0x62D026BE b323</code>
 +
 +<code>AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 1.0);
 +AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 0.0);</code>
 +==== HAS_SOUND_FINISHED ====
 +<code cpp>BOOL AUDIO::HAS_SOUND_FINISHED(int soundId) // 0xFCBDCE714A7C88E5 0xE85AEC2E b323</code>
 +
 +==== PLAY_PED_AMBIENT_SPEECH_NATIVE ====
 +<code cpp>void AUDIO::PLAY_PED_AMBIENT_SPEECH_NATIVE(Ped ped, const char* speechName, const char* speechParam, Any p3) // 0x8E04FEDD28D42462 0x5C57B85D b323</code>
 +
 +<code>Plays ambient speech. See also _0x444180DB.
 +
 +ped: The ped to play the ambient speech.
 +speechName: Name of the speech to play, eg. "GENERIC_HI".
 +speechParam: Can be one of the following:
 +SPEECH_PARAMS_STANDARD
 +SPEECH_PARAMS_ALLOW_REPEAT
 +SPEECH_PARAMS_BEAT
 +SPEECH_PARAMS_FORCE
 +SPEECH_PARAMS_FORCE_FRONTEND
 +SPEECH_PARAMS_FORCE_NO_REPEAT_FRONTEND
 +SPEECH_PARAMS_FORCE_NORMAL
 +SPEECH_PARAMS_FORCE_NORMAL_CLEAR
 +SPEECH_PARAMS_FORCE_NORMAL_CRITICAL
 +SPEECH_PARAMS_FORCE_SHOUTED
 +SPEECH_PARAMS_FORCE_SHOUTED_CLEAR
 +SPEECH_PARAMS_FORCE_SHOUTED_CRITICAL
 +SPEECH_PARAMS_FORCE_PRELOAD_ONLY
 +SPEECH_PARAMS_MEGAPHONE
 +SPEECH_PARAMS_HELI
 +SPEECH_PARAMS_FORCE_MEGAPHONE
 +SPEECH_PARAMS_FORCE_HELI
 +SPEECH_PARAMS_INTERRUPT
 +SPEECH_PARAMS_INTERRUPT_SHOUTED
 +SPEECH_PARAMS_INTERRUPT_SHOUTED_CLEAR
 +SPEECH_PARAMS_INTERRUPT_SHOUTED_CRITICAL
 +SPEECH_PARAMS_INTERRUPT_NO_FORCE
 +SPEECH_PARAMS_INTERRUPT_FRONTEND
 +SPEECH_PARAMS_INTERRUPT_NO_FORCE_FRONTEND
 +SPEECH_PARAMS_ADD_BLIP
 +SPEECH_PARAMS_ADD_BLIP_ALLOW_REPEAT
 +SPEECH_PARAMS_ADD_BLIP_FORCE
 +SPEECH_PARAMS_ADD_BLIP_SHOUTED
 +SPEECH_PARAMS_ADD_BLIP_SHOUTED_FORCE
 +SPEECH_PARAMS_ADD_BLIP_INTERRUPT
 +SPEECH_PARAMS_ADD_BLIP_INTERRUPT_FORCE
 +SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED
 +SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CLEAR
 +SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CRITICAL
 +SPEECH_PARAMS_SHOUTED
 +SPEECH_PARAMS_SHOUTED_CLEAR
 +SPEECH_PARAMS_SHOUTED_CRITICAL
 +
 +Note: A list of Name and Parameters can be found here pastebin.com/1GZS5dCL
 +
 +Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json
 +
 +Old name: _PLAY_AMBIENT_SPEECH1</code>
 +==== PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE ====
 +<code cpp>void AUDIO::PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE(Ped ped, const char* speechName, const char* speechParam, Any p3) // 0xC6941B4A3A8FBBB9 0x444180DB b323</code>
 +
 +<code>Plays ambient speech. See also _0x5C57B85D.
 +
 +See PLAY_PED_AMBIENT_SPEECH_NATIVE for parameter specifications.
 +
 +Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json</code>
 +==== PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE ====
 +<code cpp>void AUDIO::PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(Ped ped, const char* speechName, const char* voiceName, const char* speechParam, BOOL p4) // 0x3523634255FC3318 0x8386AE28 b323</code>
 +
 +<code>This is the same as PLAY_PED_AMBIENT_SPEECH_NATIVE and PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE but it will allow you to play a speech file from a specific voice file. It works on players and all peds, even animals.
 +
 +EX (C#):
 +GTA.Native.Function.Call(Hash._0x3523634255FC3318, Game.Player.Character, "GENERIC_INSULT_HIGH", "s_m_y_sheriff_01_white_full_01", "SPEECH_PARAMS_FORCE_SHOUTED", 0);
 +
 +The first param is the ped you want to play it on, the second is the speech name, the third is the voice name, the fourth is the speech param, and the last param is usually always 0.
 +
 +Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json</code>
 +==== PLAY_AMBIENT_SPEECH_FROM_POSITION_NATIVE ====
 +<code cpp>void AUDIO::PLAY_AMBIENT_SPEECH_FROM_POSITION_NATIVE(const char* speechName, const char* voiceName, float x, float y, float z, const char* speechParam) // 0xED640017ED337E45 0xA1A1402E b323</code>
 +
 +<code>Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json</code>
 +==== OVERRIDE_TREVOR_RAGE ====
 +<code cpp>void AUDIO::OVERRIDE_TREVOR_RAGE(const char* voiceEffect) // 0x13AD665062541A7E 0x05B9B5CF b323</code>
 +
 +<code>This native enables the audio flag "TrevorRageIsOverridden" and sets the voice effect to `voiceEffect`</code>
 +==== RESET_TREVOR_RAGE ====
 +<code cpp>void AUDIO::RESET_TREVOR_RAGE() // 0xE78503B10C4314E0 0xE80CF0D4 b323</code>
 +
 +==== SET_PLAYER_ANGRY ====
 +<code cpp>void AUDIO::SET_PLAYER_ANGRY(Ped ped, BOOL toggle) // 0xEA241BB04110F091 0x782CA58D b323</code>
 +
 +==== PLAY_PAIN ====
 +<code cpp>void AUDIO::PLAY_PAIN(Ped ped, int painID, int p1, Any p3) // 0xBC9AE166038A5CEC 0x874BD6CB b323</code>
 +
 +<code>Needs another parameter [int p2]. The signature is PED::PLAY_PAIN(Ped ped, int painID, int p1, int p2);
 +
 +Last 2 parameters always seem to be 0.
 +
 +EX: Function.Call(Hash.PLAY_PAIN, TestPed, 6, 0, 0);
 +
 +Known Pain IDs
 +________________________
 +
 +1 - Doesn't seem to do anything. Does NOT crash the game like previously said. (Latest patch)
 +6 - Scream (Short)
 +7 - Scared Scream (Kinda Long)
 +8 - On Fire
 +</code>
 +==== RELEASE_WEAPON_AUDIO ====
 +<code cpp>void AUDIO::RELEASE_WEAPON_AUDIO() // 0xCE4AC0439F607045 0x6096504C b323</code>
 +
 +==== ACTIVATE_AUDIO_SLOWMO_MODE ====
 +<code cpp>void AUDIO::ACTIVATE_AUDIO_SLOWMO_MODE(const char* p0) // 0xD01005D2BA2EB778 0x59A3A17D b323</code>
 +
 +==== DEACTIVATE_AUDIO_SLOWMO_MODE ====
 +<code cpp>void AUDIO::DEACTIVATE_AUDIO_SLOWMO_MODE(const char* p0) // 0xDDC635D5B3262C56 0x0E387BFE b323</code>
 +
 +==== SET_AMBIENT_VOICE_NAME ====
 +<code cpp>void AUDIO::SET_AMBIENT_VOICE_NAME(Ped ped, const char* name) // 0x6C8065A3B780185B 0xBD2EA1A1 b323</code>
 +
 +<code>Audio List
 +gtaforums.com/topic/795622-audio-for-mods/
 +
 +All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/FTeAj4yZ
 +
 +Yes</code>
 +==== _SET_AMBIENT_VOICE_NAME_HASH ====
 +<code cpp>void AUDIO::_SET_AMBIENT_VOICE_NAME_HASH(Ped ped, Hash hash) // 0x9A53DED9921DE990  b463</code>
 +
 +==== _GET_AMBIENT_VOICE_NAME_HASH ====
 +<code cpp>Hash AUDIO::_GET_AMBIENT_VOICE_NAME_HASH(Ped ped) // 0x5E203DA2BA15D436  b463</code>
 +
 +==== _SET_PED_SCREAM ====
 +<code cpp>void AUDIO::_SET_PED_SCREAM(Ped ped) // 0x40CF0D12D142A9E8  b323</code>
 +
 +<code>Assigns some ambient voice to the ped.</code>
 +==== _0x1B7ABE26CBCBF8C7 ====
 +<code cpp>void AUDIO::_0x1B7ABE26CBCBF8C7(Ped ped, Any p1, Any p2) // 0x1B7ABE26CBCBF8C7  b372</code>
 +
 +==== _SET_PED_VOICE_GROUP ====
 +<code cpp>void AUDIO::_SET_PED_VOICE_GROUP(Ped ped, Hash voiceGroupHash) // 0x7CDC8C3B89F661B3  b323</code>
 +
 +<code>From the scripts:
 +
 +AUDIO::_SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("PAIGE_PVG"));
 +AUDIO::_SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("TALINA_PVG"));
 +AUDIO::_SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_BLACK_PVG"));
 +AUDIO::_SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_WHITE_PVG"));</code>
 +==== _SET_PED_AUDIO_GENDER ====
 +<code cpp>void AUDIO::_SET_PED_AUDIO_GENDER(Ped ped, BOOL p1) // 0xA5342D390CDA41D6  b323</code>
 +
 +==== STOP_CURRENT_PLAYING_SPEECH ====
 +<code cpp>void AUDIO::STOP_CURRENT_PLAYING_SPEECH(Ped ped) // 0x7A73D05A607734C7 0x5B7463F4 b323</code>
 +
 +==== STOP_CURRENT_PLAYING_AMBIENT_SPEECH ====
 +<code cpp>void AUDIO::STOP_CURRENT_PLAYING_AMBIENT_SPEECH(Ped ped) // 0xB8BEC0CA6F0EDB0F 0xBB8E64BF b323</code>
 +
 +==== IS_AMBIENT_SPEECH_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_AMBIENT_SPEECH_PLAYING(Ped ped) // 0x9072C8B49907BFAD 0x1972E8AA b323</code>
 +
 +==== IS_SCRIPTED_SPEECH_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_SCRIPTED_SPEECH_PLAYING(Any p0) // 0xCC9AA18DCC7084F4 0x2C653904 b323</code>
 +
 +==== IS_ANY_SPEECH_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_ANY_SPEECH_PLAYING(Ped ped) // 0x729072355FA39EC9 0x2B74A6D6 b323</code>
 +
 +==== _0x30CA2EF91D15ADF8 ====
 +<code cpp>Any AUDIO::_0x30CA2EF91D15ADF8() // 0x30CA2EF91D15ADF8  b2189</code>
 +
 +==== _CAN_PED_SPEAK ====
 +<code cpp>BOOL AUDIO::_CAN_PED_SPEAK(Ped ped, const char* speechName, BOOL unk) // 0x49B99BF3FDA89A7A 0x8BD5F11E b323</code>
 +
 +<code>Checks if the ped can play the speech or has the speech file, last parameter is usually 0
 +
 +DOES_C*</code>
 +==== IS_PED_IN_CURRENT_CONVERSATION ====
 +<code cpp>BOOL AUDIO::IS_PED_IN_CURRENT_CONVERSATION(Ped ped) // 0x049E937F18F4020C 0x7B2F0743 b323</code>
 +
 +==== SET_PED_IS_DRUNK ====
 +<code cpp>void AUDIO::SET_PED_IS_DRUNK(Ped ped, BOOL toggle) // 0x95D2D383D5396B8A 0xD2EA77A3 b323</code>
 +
 +<code>Sets the ped drunk sounds.  Only works with PLAYER_PED_ID
 +
 +====================================================
 +
 +As mentioned above, this only sets the drunk sound to ped/player.
 +
 +To give the Ped a drunk effect with drunk walking animation try using SET_PED_MOVEMENT_CLIPSET
 +
 +Below is an example
 +
 +if (!Function.Call<bool>(Hash.HAS_ANIM_SET_LOADED, "move_m@drunk@verydrunk"))
 +                {
 +                    Function.Call(Hash.REQUEST_ANIM_SET, "move_m@drunk@verydrunk");
 +                }
 +                Function.Call(Hash.SET_PED_MOVEMENT_CLIPSET, Ped.Handle, "move_m@drunk@verydrunk", 0x3E800000);
 +
 +
 +
 +And to stop the effect use
 +RESET_PED_MOVEMENT_CLIPSET</code>
 +==== PLAY_ANIMAL_VOCALIZATION ====
 +<code cpp>void AUDIO::PLAY_ANIMAL_VOCALIZATION(Ped pedHandle, int p1, const char* speechName) // 0xEE066C7006C49C0A 0x498849F3 b323</code>
 +
 +<code>Plays sounds from a ped with chop model. For example it used to play bark or sniff sounds. p1 is always 3 or 4294967295 in decompiled scripts. By a quick disassembling I can assume that this arg is unused.
 +This native is works only when you call it on the ped with right model (ac_chop only ?)
 +Speech Name can be: CHOP_SNIFF_SEQ CHOP_WHINE CHOP_LICKS_MOUTH CHOP_PANT bark GROWL SNARL BARK_SEQ</code>
 +==== IS_ANIMAL_VOCALIZATION_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_ANIMAL_VOCALIZATION_PLAYING(Ped pedHandle) // 0xC265DF9FB44A9FBD 0x0CBAF2EF b323</code>
 +
 +==== SET_ANIMAL_MOOD ====
 +<code cpp>void AUDIO::SET_ANIMAL_MOOD(Ped animal, int mood) // 0xCC97B29285B1DC3B 0x3EA7C6CB b323</code>
 +
 +<code>mood can be 0 or 1 (it's not a boolean value!). Effects audio of the animal.</code>
 +==== IS_MOBILE_PHONE_RADIO_ACTIVE ====
 +<code cpp>BOOL AUDIO::IS_MOBILE_PHONE_RADIO_ACTIVE() // 0xB35CE999E8EF317E 0x6E502A5B b323</code>
 +
 +==== SET_MOBILE_PHONE_RADIO_STATE ====
 +<code cpp>void AUDIO::SET_MOBILE_PHONE_RADIO_STATE(BOOL state) // 0xBF286C554784F3DF 0xE1E0ED34 b323</code>
 +
 +==== GET_PLAYER_RADIO_STATION_INDEX ====
 +<code cpp>int AUDIO::GET_PLAYER_RADIO_STATION_INDEX() // 0xE8AF77C4C06ADC93 0x1C4946AC b323</code>
 +
 +<code>Returns 255 (radio off index) if the function fails.</code>
 +==== GET_PLAYER_RADIO_STATION_NAME ====
 +<code cpp>const char* AUDIO::GET_PLAYER_RADIO_STATION_NAME() // 0xF6D733C32076AD03 0xD909C107 b323</code>
 +
 +<code>Returns active radio station name</code>
 +==== GET_RADIO_STATION_NAME ====
 +<code cpp>const char* AUDIO::GET_RADIO_STATION_NAME(int radioStation) // 0xB28ECA15046CA8B9 0x3DF493BC b323</code>
 +
 +<code>Returns String with radio station name.</code>
 +==== GET_PLAYER_RADIO_STATION_GENRE ====
 +<code cpp>int AUDIO::GET_PLAYER_RADIO_STATION_GENRE() // 0xA571991A7FE6CCEB 0x872CF0EA b323</code>
 +
 +==== IS_RADIO_RETUNING ====
 +<code cpp>BOOL AUDIO::IS_RADIO_RETUNING() // 0xA151A7394A214E65 0xCF29097B b323</code>
 +
 +==== IS_RADIO_FADED_OUT ====
 +<code cpp>BOOL AUDIO::IS_RADIO_FADED_OUT() // 0x0626A247D2405330 0x815CAE99 b323</code>
 +
 +==== _0xFF266D1D0EB1195D ====
 +<code cpp>void AUDIO::_0xFF266D1D0EB1195D() // 0xFF266D1D0EB1195D 0x53DB6994 b323</code>
 +
 +<code>Tune Forward... ?
 +
 +SET_RADIO_*</code>
 +==== _0xDD6BCF9E94425DF9 ====
 +<code cpp>void AUDIO::_0xDD6BCF9E94425DF9() // 0xDD6BCF9E94425DF9 0xD70ECC80 b323</code>
 +
 +<code>Tune Backwards... ?
 +
 +SET_RADIO_*</code>
 +==== SET_RADIO_TO_STATION_NAME ====
 +<code cpp>void AUDIO::SET_RADIO_TO_STATION_NAME(const char* stationName) // 0xC69EDA28699D5107 0x7B36E35E b323</code>
 +
 +<code>For a full list, see here: pastebin.com/Kj9t38KF</code>
 +==== SET_VEH_RADIO_STATION ====
 +<code cpp>void AUDIO::SET_VEH_RADIO_STATION(Vehicle vehicle, const char* radioStation) // 0x1B9C0099CB942AC6 0xE391F55F b323</code>
 +
 +<code>For a full list, see here: pastebin.com/Kj9t38KF</code>
 +==== _0x0BE4BE946463F917 ====
 +<code cpp>BOOL AUDIO::_0x0BE4BE946463F917(Vehicle vehicle) // 0x0BE4BE946463F917  b505</code>
 +
 +<code>IS_VEHICLE_*</code>
 +==== _0xC1805D05E6D4FE10 ====
 +<code cpp>void AUDIO::_0xC1805D05E6D4FE10(Vehicle vehicle) // 0xC1805D05E6D4FE10 0x7ABB89D2 b323</code>
 +
 +<code>SET_VEH*</code>
 +==== SET_EMITTER_RADIO_STATION ====
 +<code cpp>void AUDIO::SET_EMITTER_RADIO_STATION(const char* emitterName, const char* radioStation) // 0xACF57305B12AF907 0x87431585 b323</code>
 +
 +<code>Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json</code>
 +==== SET_STATIC_EMITTER_ENABLED ====
 +<code cpp>void AUDIO::SET_STATIC_EMITTER_ENABLED(const char* emitterName, BOOL toggle) // 0x399D2D3B33F1B8EB 0x91F72E92 b323</code>
 +
 +<code>Example:
 +AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_01_STAGE", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_02_MAIN_ROOM", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_03_BACK_ROOM", false);
 +
 +This turns off surrounding sounds not connected directly to peds.
 +
 +Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json</code>
 +==== _LINK_STATIC_EMITTER_TO_ENTITY ====
 +<code cpp>void AUDIO::_LINK_STATIC_EMITTER_TO_ENTITY(const char* emitterName, Entity entity) // 0x651D3228960D08AF  b505</code>
 +
 +<code>L* (LINK_*?)
 +
 +Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json</code>
 +==== SET_RADIO_TO_STATION_INDEX ====
 +<code cpp>void AUDIO::SET_RADIO_TO_STATION_INDEX(int radioStation) // 0xA619B168B8A8570F 0x1D82766D b323</code>
 +
 +<code>Sets radio station by index.</code>
 +==== SET_FRONTEND_RADIO_ACTIVE ====
 +<code cpp>void AUDIO::SET_FRONTEND_RADIO_ACTIVE(BOOL active) // 0xF7F26C6E9CC9EBB8 0xB1172075 b323</code>
 +
 +==== UNLOCK_MISSION_NEWS_STORY ====
 +<code cpp>void AUDIO::UNLOCK_MISSION_NEWS_STORY(int newsStory) // 0xB165AB7C248B2DC1 0xCCD9ABE4 b323</code>
 +
 +<code>I see this as a native that would of been used back in GTA III when you finally unlocked the bridge to the next island and such.</code>
 +==== IS_MISSION_NEWS_STORY_UNLOCKED ====
 +<code cpp>BOOL AUDIO::IS_MISSION_NEWS_STORY_UNLOCKED(int newsStory) // 0x66E49BF55B4B1874 0x27305D37 b323</code>
 +
 +==== GET_AUDIBLE_MUSIC_TRACK_TEXT_ID ====
 +<code cpp>int AUDIO::GET_AUDIBLE_MUSIC_TRACK_TEXT_ID() // 0x50B196FC9ED6545B 0xA2B88CA7 b323</code>
 +
 +==== PLAY_END_CREDITS_MUSIC ====
 +<code cpp>void AUDIO::PLAY_END_CREDITS_MUSIC(BOOL play) // 0xCD536C4D33DCC900 0x8E88B3CC b323</code>
 +
 +==== SKIP_RADIO_FORWARD ====
 +<code cpp>void AUDIO::SKIP_RADIO_FORWARD() // 0x6DDBBDD98E2E9C25 0x10D36630 b323</code>
 +
 +==== FREEZE_RADIO_STATION ====
 +<code cpp>void AUDIO::FREEZE_RADIO_STATION(const char* radioStation) // 0x344F393B027E38C3 0x286BF543 b323</code>
 +
 +==== UNFREEZE_RADIO_STATION ====
 +<code cpp>void AUDIO::UNFREEZE_RADIO_STATION(const char* radioStation) // 0xFC00454CF60B91DD 0x4D46202C b323</code>
 +
 +==== SET_RADIO_AUTO_UNFREEZE ====
 +<code cpp>void AUDIO::SET_RADIO_AUTO_UNFREEZE(BOOL toggle) // 0xC1AA9F53CE982990 0xA40196BF b323</code>
 +
 +==== SET_INITIAL_PLAYER_STATION ====
 +<code cpp>void AUDIO::SET_INITIAL_PLAYER_STATION(const char* radioStation) // 0x88795F13FACDA88D 0x9B069233 b323</code>
 +
 +==== SET_USER_RADIO_CONTROL_ENABLED ====
 +<code cpp>void AUDIO::SET_USER_RADIO_CONTROL_ENABLED(BOOL toggle) // 0x19F21E63AE6EAE4E 0x52E054CE b323</code>
 +
 +==== SET_RADIO_TRACK ====
 +<code cpp>void AUDIO::SET_RADIO_TRACK(const char* radioStation, const char* radioTrack) // 0xB39786F201FEE30B 0x76E96212 b323</code>
 +
 +<code>Only found this one in the decompiled scripts:
 +
 +AUDIO::SET_RADIO_TRACK("RADIO_03_HIPHOP_NEW", "ARM1_RADIO_STARTS");
 +</code>
 +==== _SET_RADIO_TRACK_MIX ====
 +<code cpp>void AUDIO::_SET_RADIO_TRACK_MIX(const char* radioStationName, const char* mixName, int p2) // 0x2CB0075110BE1E56  b1493</code>
 +
 +==== _0x55ECF4D13D9903B0 ====
 +<code cpp>void AUDIO::_0x55ECF4D13D9903B0(Any p0, Any p1, Any p2, Any p3) // 0x55ECF4D13D9903B0  b1868</code>
 +
 +==== SET_VEHICLE_RADIO_LOUD ====
 +<code cpp>void AUDIO::SET_VEHICLE_RADIO_LOUD(Vehicle vehicle, BOOL toggle) // 0xBB6F1CAEC68B0BCE 0x8D9EDD99 b323</code>
 +
 +==== _IS_VEHICLE_RADIO_LOUD ====
 +<code cpp>BOOL AUDIO::_IS_VEHICLE_RADIO_LOUD(Vehicle vehicle) // 0x032A116663A4D5AC 0xCBA99F4A b323</code>
 +
 +==== SET_MOBILE_RADIO_ENABLED_DURING_GAMEPLAY ====
 +<code cpp>void AUDIO::SET_MOBILE_RADIO_ENABLED_DURING_GAMEPLAY(BOOL toggle) // 0x1098355A16064BB3 0x990085F0 b323</code>
 +
 +==== DOES_PLAYER_VEH_HAVE_RADIO ====
 +<code cpp>BOOL AUDIO::DOES_PLAYER_VEH_HAVE_RADIO() // 0x109697E2FFBAC8A1 0x46B0C696 b323</code>
 +
 +==== IS_PLAYER_VEH_RADIO_ENABLE ====
 +<code cpp>BOOL AUDIO::IS_PLAYER_VEH_RADIO_ENABLE() // 0x5F43D83FD6738741 0x2A3E5E8B b323</code>
 +
 +==== SET_VEHICLE_RADIO_ENABLED ====
 +<code cpp>void AUDIO::SET_VEHICLE_RADIO_ENABLED(Vehicle vehicle, BOOL toggle) // 0x3B988190C0AA6C0B 0x6F812CAB b323</code>
 +
 +<code>can't seem to enable radio on cop cars etc</code>
 +==== _0xDA07819E452FFE8F ====
 +<code cpp>void AUDIO::_0xDA07819E452FFE8F(Any p0) // 0xDA07819E452FFE8F  b505</code>
 +
 +==== SET_CUSTOM_RADIO_TRACK_LIST ====
 +<code cpp>void AUDIO::SET_CUSTOM_RADIO_TRACK_LIST(const char* radioStation, const char* trackListName, BOOL p2) // 0x4E404A9361F75BB2 0x128C3873 b323</code>
 +
 +<code>Examples:
 +
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_TREVOR", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_SAVE_MICHAEL_TREVOR", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_06_COUNTRY", "MAGDEMO2_RADIO_DINGHY", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE", "SEA_RACE_RADIO_PLAYLIST", 1);
 +AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);</code>
 +==== CLEAR_CUSTOM_RADIO_TRACK_LIST ====
 +<code cpp>void AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST(const char* radioStation) // 0x1654F24A88A8E3FE 0x1D766976 b323</code>
 +
 +<code>3 calls in the b617d scripts, removed duplicate.
 +
 +AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE");
 +AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK");</code>
 +==== GET_NUM_UNLOCKED_RADIO_STATIONS ====
 +<code cpp>int AUDIO::GET_NUM_UNLOCKED_RADIO_STATIONS() // 0xF1620ECB50E01DE7 0xCC91FCF5 b323</code>
 +
 +==== FIND_RADIO_STATION_INDEX ====
 +<code cpp>int AUDIO::FIND_RADIO_STATION_INDEX(int station) // 0x8D67489793FF428B 0xECA1512F b323</code>
 +
 +==== SET_RADIO_STATION_MUSIC_ONLY ====
 +<code cpp>void AUDIO::SET_RADIO_STATION_MUSIC_ONLY(const char* radioStation, BOOL toggle) // 0x774BD811F656A122 0xB1FF7137 b323</code>
 +
 +<code>6 calls in the b617d scripts, removed identical lines:
 +
 +AUDIO::SET_RADIO_STATION_MUSIC_ONLY("RADIO_01_CLASS_ROCK", 1);
 +AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 0);
 +AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 1);</code>
 +==== SET_RADIO_FRONTEND_FADE_TIME ====
 +<code cpp>void AUDIO::SET_RADIO_FRONTEND_FADE_TIME(float fadeTime) // 0x2C96CDB04FCA358E 0xC8B514E2 b323</code>
 +
 +==== UNLOCK_RADIO_STATION_TRACK_LIST ====
 +<code cpp>void AUDIO::UNLOCK_RADIO_STATION_TRACK_LIST(const char* radioStation, const char* trackListName) // 0x031ACB6ABA18C729 0xBE998184 b323</code>
 +
 +<code>AUDIO::UNLOCK_RADIO_STATION_TRACK_LIST("RADIO_16_SILVERLAKE", "MIRRORPARK_LOCKED");</code>
 +==== _UPDATE_LSUR ====
 +<code cpp>void AUDIO::_UPDATE_LSUR(BOOL enableMixes) // 0x47AED84213A47510  b1493</code>
 +
 +<code>Just a nullsub (i.e. does absolutely nothing) since build 1604.</code>
 +==== _LOCK_RADIO_STATION ====
 +<code cpp>void AUDIO::_LOCK_RADIO_STATION(const char* radioStationName, BOOL toggle) // 0x477D9DB48F889591  b1493</code>
 +
 +<code>Disables the radio station (hides it from the radio wheel).</code>
 +==== _0xC64A06D939F826F5 ====
 +<code cpp>BOOL AUDIO::_0xC64A06D939F826F5(float* p0, float* p1, int* p2) // 0xC64A06D939F826F5  b1493</code>
 +
 +<code>GET_NE*
 +Gets values from the radio?</code>
 +==== _GET_CURRENT_RADIO_STATION_HASH ====
 +<code cpp>int AUDIO::_GET_CURRENT_RADIO_STATION_HASH(const char* radioStationName) // 0x3E65CDE5215832C1  b1493</code>
 +
 +<code>GET_CURRENT_*
 +Seems to return hashed radio station name?</code>
 +==== _0x34D66BC058019CE0 ====
 +<code cpp>Hash AUDIO::_0x34D66BC058019CE0(const char* radioStationName) // 0x34D66BC058019CE0  b1493</code>
 +
 +<code>GET_CURRENT_*</code>
 +==== _0xF3365489E0DD50F9 ====
 +<code cpp>void AUDIO::_0xF3365489E0DD50F9(Vehicle vehicle, BOOL toggle) // 0xF3365489E0DD50F9 0x8AFC488D b323</code>
 +
 +<code>SET_VEHICLE_*</code>
 +==== SET_AMBIENT_ZONE_STATE ====
 +<code cpp>void AUDIO::SET_AMBIENT_ZONE_STATE(const char* zoneName, BOOL p1, BOOL p2) // 0xBDA07E5950085E46 0x2849CAC9 b323</code>
 +
 +<code>Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json</code>
 +==== CLEAR_AMBIENT_ZONE_STATE ====
 +<code cpp>void AUDIO::CLEAR_AMBIENT_ZONE_STATE(const char* zoneName, BOOL p1) // 0x218DD44AAAC964FF 0xCDFF3C82 b323</code>
 +
 +<code>This function also has a p2, unknown. Signature AUDIO::CLEAR_AMBIENT_ZONE_STATE(const char* zoneName, bool p1, Any p2);
 +
 +Still needs more research.
 +
 +Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json</code>
 +==== SET_AMBIENT_ZONE_LIST_STATE ====
 +<code cpp>void AUDIO::SET_AMBIENT_ZONE_LIST_STATE(Any* p0, BOOL p1, BOOL p2) // 0x9748FA4DE50CCE3E 0xBF80B412 b323</code>
 +
 +==== CLEAR_AMBIENT_ZONE_LIST_STATE ====
 +<code cpp>void AUDIO::CLEAR_AMBIENT_ZONE_LIST_STATE(Any* p0, BOOL p1) // 0x120C48C614909FA4 0x38B9B8D4 b323</code>
 +
 +==== SET_AMBIENT_ZONE_STATE_PERSISTENT ====
 +<code cpp>void AUDIO::SET_AMBIENT_ZONE_STATE_PERSISTENT(const char* ambientZone, BOOL p1, BOOL p2) // 0x1D6650420CEC9D3B 0xC1FFB672 b323</code>
 +
 +<code>Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json</code>
 +==== SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT ====
 +<code cpp>void AUDIO::SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT(const char* ambientZone, BOOL p1, BOOL p2) // 0xF3638DAE8C4045E1 0x5F5A2605 b323</code>
 +
 +<code>Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json</code>
 +==== IS_AMBIENT_ZONE_ENABLED ====
 +<code cpp>BOOL AUDIO::IS_AMBIENT_ZONE_ENABLED(const char* ambientZone) // 0x01E2817A479A7F9B 0xBFABD872 b323</code>
 +
 +<code>Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json</code>
 +==== _0x5D2BFAAB8D956E0E ====
 +<code cpp>void AUDIO::_0x5D2BFAAB8D956E0E() // 0x5D2BFAAB8D956E0E  b573</code>
 +
 +==== SET_CUTSCENE_AUDIO_OVERRIDE ====
 +<code cpp>void AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE(const char* name) // 0x3B4BF5F0859204D9 0xCE1332B7 b323</code>
 +
 +<code>All occurrences found in b617d, sorted alphabetically and identical lines removed: 
 +
 +AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_AK");
 +AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_CUSTOM");
 +AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_TOOTHLESS");</code>
 +==== _SET_VARIABLE_ON_CUTSCENE_AUDIO ====
 +<code cpp>void AUDIO::_SET_VARIABLE_ON_CUTSCENE_AUDIO(const char* variableName, float value) // 0xBCC29F935ED07688 0xD63CF33A b323</code>
 +
 +<code>SET_VARIABLE_ON_*</code>
 +==== PLAY_POLICE_REPORT ====
 +<code cpp>int AUDIO::PLAY_POLICE_REPORT(const char* name, float p1) // 0xDFEBD56D9BD1EB16 0x3F277B62 b323</code>
 +
 +<code>Plays the given police radio message.
 +
 +All found occurrences in b617d, sorted alphabetically and identical lines removed: pastebin.com/GBnsQ5hr</code>
 +==== _CANCEL_CURRENT_POLICE_REPORT ====
 +<code cpp>void AUDIO::_CANCEL_CURRENT_POLICE_REPORT() // 0xB4F90FAF7670B16F  b323</code>
 +
 +==== BLIP_SIREN ====
 +<code cpp>void AUDIO::BLIP_SIREN(Vehicle vehicle) // 0x1B9025BDA76822B6 0xC0EB6924 b323</code>
 +
 +<code>Plays the siren sound of a vehicle which is otherwise activated when fastly double-pressing the horn key.
 +Only works on vehicles with a police siren.</code>
 +==== OVERRIDE_VEH_HORN ====
 +<code cpp>void AUDIO::OVERRIDE_VEH_HORN(Vehicle vehicle, BOOL override, int hornHash) // 0x3CDC1E622CCE0356 0x2ACAB783 b323</code>
 +
 +<code>Overrides the vehicle's horn hash.
 +When changing this hash on a vehicle, it will not return the 'overwritten' hash. It will still always return the default horn hash (same as GET_VEHICLE_DEFAULT_HORN)
 +
 +vehicle - the vehicle whose horn should be overwritten
 +mute - p1 seems to be an option for muting the horn
 +p2 - maybe a horn id, since the function AUDIO::GET_VEHICLE_DEFAULT_HORN(veh) exists?</code>
 +==== IS_HORN_ACTIVE ====
 +<code cpp>BOOL AUDIO::IS_HORN_ACTIVE(Vehicle vehicle) // 0x9D6BFC12B05C6121 0x20E2BDD0 b323</code>
 +
 +<code>Checks whether the horn of a vehicle is currently played.</code>
 +==== SET_AGGRESSIVE_HORNS ====
 +<code cpp>void AUDIO::SET_AGGRESSIVE_HORNS(BOOL toggle) // 0x395BF71085D1B1D9 0x01D6EABE b323</code>
 +
 +<code>Makes pedestrians sound their horn longer, faster and more agressive when they use their horn.</code>
 +==== _0x02E93C796ABD3A97 ====
 +<code cpp>void AUDIO::_0x02E93C796ABD3A97(BOOL p0) // 0x02E93C796ABD3A97 0x3C395AEE b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0x58BB377BEC7CD5F4 ====
 +<code cpp>void AUDIO::_0x58BB377BEC7CD5F4(BOOL p0, BOOL p1) // 0x58BB377BEC7CD5F4 0x8CE63FA1 b323</code>
 +
 +==== _0x9BD7BD55E4533183 ====
 +<code cpp>void AUDIO::_0x9BD7BD55E4533183(Any p0, Any p1, Any p2) // 0x9BD7BD55E4533183  b1290</code>
 +
 +==== IS_STREAM_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_STREAM_PLAYING() // 0xD11FA52EB849D978 0xF1F51A14 b323</code>
 +
 +==== GET_STREAM_PLAY_TIME ====
 +<code cpp>int AUDIO::GET_STREAM_PLAY_TIME() // 0x4E72BBDBCA58A3DB 0xB4F0AD56 b323</code>
 +
 +==== LOAD_STREAM ====
 +<code cpp>BOOL AUDIO::LOAD_STREAM(const char* streamName, const char* soundSet) // 0x1F1F957154EC51DF 0x0D89599D b323</code>
 +
 +<code>Example:
 +AUDIO::LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET");
 +
 +All found occurrences in the b678d decompiled scripts: pastebin.com/3rma6w5w
 +
 +Stream names often ends with "_MASTER", "_SMALL" or "_STREAM". Also "_IN", "_OUT" and numbers.   
 +
 +soundSet is often set to 0 in the scripts. These are common to end the soundSets: "_SOUNDS", "_SOUNDSET" and numbers.
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== LOAD_STREAM_WITH_START_OFFSET ====
 +<code cpp>BOOL AUDIO::LOAD_STREAM_WITH_START_OFFSET(const char* streamName, int startOffset, const char* soundSet) // 0x59C16B79F53B3712 0xE5B5745C b323</code>
 +
 +<code>Example:
 +AUDIO::LOAD_STREAM_WITH_START_OFFSET("STASH_TOXIN_STREAM", 2400, "FBI_05_SOUNDS");
 +
 +Only called a few times in the scripts.
 +
 +Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json</code>
 +==== PLAY_STREAM_FROM_PED ====
 +<code cpp>void AUDIO::PLAY_STREAM_FROM_PED(Ped ped) // 0x89049DD63C08B5D1 0xA1D7FABE b323</code>
 +
 +==== PLAY_STREAM_FROM_VEHICLE ====
 +<code cpp>void AUDIO::PLAY_STREAM_FROM_VEHICLE(Vehicle vehicle) // 0xB70374A758007DFA 0xF8E4BDA2 b323</code>
 +
 +==== PLAY_STREAM_FROM_OBJECT ====
 +<code cpp>void AUDIO::PLAY_STREAM_FROM_OBJECT(Object object) // 0xEBAA9B64D76356FD 0xC5266BF7 b323</code>
 +
 +<code>Used with AUDIO::LOAD_STREAM
 +
 +Example from finale_heist2b.c4:
 +TASK::TASK_SYNCHRONIZED_SCENE(l_4C8[2/*14*/], l_4C8[2/*14*/]._f7, l_30A, "push_out_vault_l", 4.0, -1.5, 5, 713, 4.0, 0);
 +                    PED::SET_SYNCHRONIZED_SCENE_PHASE(l_4C8[2/*14*/]._f7, 0.0);
 +                    PED::_2208438012482A1A(l_4C8[2/*14*/], 0, 0);
 +                    PED::SET_PED_COMBAT_ATTRIBUTES(l_4C8[2/*14*/], 38, 1);
 +                    PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(l_4C8[2/*14*/], 1);
 +                    if (AUDIO::LOAD_STREAM("Gold_Cart_Push_Anim_01", "BIG_SCORE_3B_SOUNDS")) {
 +                        AUDIO::PLAY_STREAM_FROM_OBJECT(l_36F[0/*1*/]);
 +                    }</code>
 +==== PLAY_STREAM_FRONTEND ====
 +<code cpp>void AUDIO::PLAY_STREAM_FRONTEND() // 0x58FCE43488F9F5F4 0x2C2A16BC b323</code>
 +
 +==== PLAY_STREAM_FROM_POSITION ====
 +<code cpp>void AUDIO::PLAY_STREAM_FROM_POSITION(float x, float y, float z) // 0x21442F412E8DE56B 0x6FE5D865 b323</code>
 +
 +==== STOP_STREAM ====
 +<code cpp>void AUDIO::STOP_STREAM() // 0xA4718A1419D18151 0xD1E364DE b323</code>
 +
 +==== STOP_PED_SPEAKING ====
 +<code cpp>void AUDIO::STOP_PED_SPEAKING(Ped ped, BOOL shaking) // 0x9D64D7405520E3D3 0xFF92B49D b323</code>
 +
 +==== _0xF8AD2EED7C47E8FE ====
 +<code cpp>void AUDIO::_0xF8AD2EED7C47E8FE(Ped ped, BOOL p1, BOOL p2) // 0xF8AD2EED7C47E8FE  b1734</code>
 +
 +<code>BL*</code>
 +==== _0xAB6781A5F3101470 ====
 +<code cpp>void AUDIO::_0xAB6781A5F3101470(Any p0, Any p1) // 0xAB6781A5F3101470  b1868</code>
 +
 +==== DISABLE_PED_PAIN_AUDIO ====
 +<code cpp>void AUDIO::DISABLE_PED_PAIN_AUDIO(Ped ped, BOOL toggle) // 0xA9A41C1E940FB0E8 0x3B8E2D5F b323</code>
 +
 +==== IS_AMBIENT_SPEECH_DISABLED ====
 +<code cpp>BOOL AUDIO::IS_AMBIENT_SPEECH_DISABLED(Ped ped) // 0x932C2D096A2C3FFF 0x109D1F89 b323</code>
 +
 +<code>Common in the scripts:
 +AUDIO::IS_AMBIENT_SPEECH_DISABLED(PLAYER::PLAYER_PED_ID());</code>
 +==== _0xA8A7D434AFB4B97B ====
 +<code cpp>void AUDIO::_0xA8A7D434AFB4B97B(const char* p0, int p1) // 0xA8A7D434AFB4B97B  b1493</code>
 +
 +==== _0x2ACABED337622DF2 ====
 +<code cpp>void AUDIO::_0x2ACABED337622DF2(const char* p0) // 0x2ACABED337622DF2  b1493</code>
 +
 +==== SET_SIREN_WITH_NO_DRIVER ====
 +<code cpp>void AUDIO::SET_SIREN_WITH_NO_DRIVER(Vehicle vehicle, BOOL toggle) // 0x1FEF0683B96EBCF2 0x77182D58 b323</code>
 +
 +==== _TRIGGER_SIREN ====
 +<code cpp>void AUDIO::_TRIGGER_SIREN(Vehicle vehicle) // 0x66C3FB05206041BA  b1290</code>
 +
 +==== _SOUND_VEHICLE_HORN_THIS_FRAME ====
 +<code cpp>void AUDIO::_SOUND_VEHICLE_HORN_THIS_FRAME(Vehicle vehicle) // 0x9C11908013EA4715 0xDE8BA3CD b323</code>
 +
 +<code>SET_*</code>
 +==== SET_HORN_ENABLED ====
 +<code cpp>void AUDIO::SET_HORN_ENABLED(Vehicle vehicle, BOOL toggle) // 0x76D683C108594D0E 0x6EB92D05 b323</code>
 +
 +==== SET_AUDIO_VEHICLE_PRIORITY ====
 +<code cpp>void AUDIO::SET_AUDIO_VEHICLE_PRIORITY(Vehicle vehicle, Any p1) // 0xE5564483E407F914 0x271A9766 b323</code>
 +
 +==== _0x9D3AF56E94C9AE98 ====
 +<code cpp>void AUDIO::_0x9D3AF56E94C9AE98(Vehicle vehicle, float p1) // 0x9D3AF56E94C9AE98 0x2F0A16D1 b323</code>
 +
 +<code>SET_H*</code>
 +==== USE_SIREN_AS_HORN ====
 +<code cpp>void AUDIO::USE_SIREN_AS_HORN(Vehicle vehicle, BOOL toggle) // 0xFA932DE350266EF8 0xC6BC16F3 b323</code>
 +
 +==== _FORCE_VEHICLE_ENGINE_AUDIO ====
 +<code cpp>void AUDIO::_FORCE_VEHICLE_ENGINE_AUDIO(Vehicle vehicle, const char* audioName) // 0x4F0C413926060B38 0x33B0B007 b323</code>
 +
 +<code>This native sets the audio of the specified vehicle to the audioName (p1).
 +
 +Use the audioNameHash found in vehicles.meta
 +
 +Example:
 +_SET_VEHICLE_AUDIO(veh, "ADDER");
 +The selected vehicle will now have the audio of the Adder.
 +
 +FORCE_VEHICLE_???</code>
 +==== _PRELOAD_VEHICLE_AUDIO ====
 +<code cpp>void AUDIO::_PRELOAD_VEHICLE_AUDIO(Hash vehicleModel) // 0xCA4CEA6AE0000A7E  b1180</code>
 +
 +==== _0xF1F8157B8C3F171C ====
 +<code cpp>void AUDIO::_0xF1F8157B8C3F171C(Vehicle vehicle, const char* p1, const char* p2) // 0xF1F8157B8C3F171C 0x1C0C5E4C b323</code>
 +
 +<code>2 calls found in the b617d scripts:
 +
 +AUDIO::_F1F8157B8C3F171C(l_A42, "Franklin_Bike_Rev", "BIG_SCORE_3A_SOUNDS");
 +AUDIO::_F1F8157B8C3F171C(l_166, "Trevor_Revs_Off", "PALETO_SCORE_SETUP_SOUNDS");</code>
 +==== _0xD2DCCD8E16E20997 ====
 +<code cpp>void AUDIO::_0xD2DCCD8E16E20997(Any p0) // 0xD2DCCD8E16E20997  b323</code>
 +
 +==== _0x5DB8010EE71FDEF2 ====
 +<code cpp>BOOL AUDIO::_0x5DB8010EE71FDEF2(Vehicle vehicle) // 0x5DB8010EE71FDEF2 0x6E660D3F b323</code>
 +
 +==== SET_VEHICLE_AUDIO_ENGINE_DAMAGE_FACTOR ====
 +<code cpp>void AUDIO::SET_VEHICLE_AUDIO_ENGINE_DAMAGE_FACTOR(Vehicle vehicle, float damageFactor) // 0x59E7B488451F4D3A 0x23BE6432 b323</code>
 +
 +==== SET_VEHICLE_AUDIO_BODY_DAMAGE_FACTOR ====
 +<code cpp>void AUDIO::SET_VEHICLE_AUDIO_BODY_DAMAGE_FACTOR(Vehicle vehicle, float p1) // 0x01BB4D577D38BD9E 0xE81FAC68 b323</code>
 +
 +==== _0x1C073274E065C6D2 ====
 +<code cpp>void AUDIO::_0x1C073274E065C6D2(Vehicle vehicle, BOOL toggle) // 0x1C073274E065C6D2 0x9365E042 b323</code>
 +
 +<code>ENABLE_VEHICLE_*</code>
 +==== ENABLE_VEHICLE_EXHAUST_POPS ====
 +<code cpp>void AUDIO::ENABLE_VEHICLE_EXHAUST_POPS(Vehicle vehicle, BOOL toggle) // 0x2BE4BC731D039D5A 0x2A60A90E b323</code>
 +
 +==== SET_VEHICLE_BOOST_ACTIVE ====
 +<code cpp>void AUDIO::SET_VEHICLE_BOOST_ACTIVE(Vehicle vehicle, BOOL toggle) // 0x4A04DE7CAB2739A1 0x072F15F2 b323</code>
 +
 +<code>SET_VEHICLE_BOOST_ACTIVE(vehicle, 1, 0);
 +SET_VEHICLE_BOOST_ACTIVE(vehicle, 0, 0); 
 +
 +Will give a boost-soundeffect.</code>
 +==== _0x6FDDAD856E36988A ====
 +<code cpp>void AUDIO::_0x6FDDAD856E36988A(Vehicle vehicle, BOOL toggle) // 0x6FDDAD856E36988A 0x934BE749 b323</code>
 +
 +<code>SET_P*</code>
 +==== SET_SCRIPT_UPDATE_DOOR_AUDIO ====
 +<code cpp>void AUDIO::SET_SCRIPT_UPDATE_DOOR_AUDIO(Hash doorHash, BOOL toggle) // 0x06C0023BED16DD6B 0xE61110A2 b323</code>
 +
 +==== PLAY_VEHICLE_DOOR_OPEN_SOUND ====
 +<code cpp>void AUDIO::PLAY_VEHICLE_DOOR_OPEN_SOUND(Vehicle vehicle, int doorIndex) // 0x3A539D52857EA82D 0x84930330 b323</code>
 +
 +==== PLAY_VEHICLE_DOOR_CLOSE_SOUND ====
 +<code cpp>void AUDIO::PLAY_VEHICLE_DOOR_CLOSE_SOUND(Vehicle vehicle, int doorIndex) // 0x62A456AA4769EF34 0xBA2CF407 b323</code>
 +
 +==== ENABLE_STALL_WARNING_SOUNDS ====
 +<code cpp>void AUDIO::ENABLE_STALL_WARNING_SOUNDS(Vehicle vehicle, BOOL toggle) // 0xC15907D667F7CFB2 0x563B635D b323</code>
 +
 +<code>Works for planes only.</code>
 +==== IS_GAME_IN_CONTROL_OF_MUSIC ====
 +<code cpp>BOOL AUDIO::IS_GAME_IN_CONTROL_OF_MUSIC() // 0x6D28DC1671E334FD 0x7643170D b323</code>
 +
 +<code>Hardcoded to return 1</code>
 +==== SET_GPS_ACTIVE ====
 +<code cpp>void AUDIO::SET_GPS_ACTIVE(BOOL active) // 0x3BD3F52BA9B1E4E8 0x0FC3379A b323</code>
 +
 +==== PLAY_MISSION_COMPLETE_AUDIO ====
 +<code cpp>void AUDIO::PLAY_MISSION_COMPLETE_AUDIO(const char* audioName) // 0xB138AAB8A70D3C69 0x3033EA1D b323</code>
 +
 +<code>Called 38 times in the scripts. There are 5 different audioNames used.
 + One unknown removed below.
 +
 +AUDIO::PLAY_MISSION_COMPLETE_AUDIO("DEAD");
 +AUDIO::PLAY_MISSION_COMPLETE_AUDIO("FRANKLIN_BIG_01");
 +AUDIO::PLAY_MISSION_COMPLETE_AUDIO("GENERIC_FAILED");
 +AUDIO::PLAY_MISSION_COMPLETE_AUDIO("TREVOR_SMALL_01");</code>
 +==== IS_MISSION_COMPLETE_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_MISSION_COMPLETE_PLAYING() // 0x19A30C23F5827F8A 0x939982A1 b323</code>
 +
 +==== IS_MISSION_COMPLETE_READY_FOR_UI ====
 +<code cpp>BOOL AUDIO::IS_MISSION_COMPLETE_READY_FOR_UI() // 0x6F259F82D873B8B8 0xCBE09AEC b323</code>
 +
 +==== BLOCK_DEATH_JINGLE ====
 +<code cpp>void AUDIO::BLOCK_DEATH_JINGLE(BOOL toggle) // 0xF154B8D1775B2DEC 0xD2858D8A b323</code>
 +
 +==== START_AUDIO_SCENE ====
 +<code cpp>BOOL AUDIO::START_AUDIO_SCENE(const char* scene) // 0x013A80FC08F6E4F2 0xE48D757B b323</code>
 +
 +<code>Used to prepare a scene where the surrounding sound is muted or a bit changed. This does not play any sound.
 +
 +List of all usable scene names found in b617d. Sorted alphabetically and identical names removed: pastebin.com/MtM9N9CC</code>
 +==== STOP_AUDIO_SCENE ====
 +<code cpp>void AUDIO::STOP_AUDIO_SCENE(const char* scene) // 0xDFE8422B3B94E688 0xA08D8C58 b323</code>
 +
 +==== STOP_AUDIO_SCENES ====
 +<code cpp>void AUDIO::STOP_AUDIO_SCENES() // 0xBAC7FC81A75EC1A1 0xF6C7342A b323</code>
 +
 +<code>??</code>
 +==== IS_AUDIO_SCENE_ACTIVE ====
 +<code cpp>BOOL AUDIO::IS_AUDIO_SCENE_ACTIVE(const char* scene) // 0xB65B60556E2A9225 0xACBED05C b323</code>
 +
 +==== SET_AUDIO_SCENE_VARIABLE ====
 +<code cpp>void AUDIO::SET_AUDIO_SCENE_VARIABLE(const char* scene, const char* variable, float value) // 0xEF21A9EF089A2668 0x19BB3CE8 b323</code>
 +
 +==== SET_AUDIO_SCRIPT_CLEANUP_TIME ====
 +<code cpp>void AUDIO::SET_AUDIO_SCRIPT_CLEANUP_TIME(int time) // 0xA5F377B175A699C5 0xE812925D b323</code>
 +
 +==== ADD_ENTITY_TO_AUDIO_MIX_GROUP ====
 +<code cpp>void AUDIO::ADD_ENTITY_TO_AUDIO_MIX_GROUP(Entity entity, const char* groupName, float p2) // 0x153973AB99FE8980 0x2BC93264 b323</code>
 +
 +<code>All found occurrences in b678d:
 +pastebin.com/ceu67jz8</code>
 +==== REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP ====
 +<code cpp>void AUDIO::REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(Entity entity, float p1) // 0x18EB48CFC41F2EA0 0x308ED0EC b323</code>
 +
 +==== AUDIO_IS_SCRIPTED_MUSIC_PLAYING ====
 +<code cpp>BOOL AUDIO::AUDIO_IS_SCRIPTED_MUSIC_PLAYING() // 0x845FFC3A4FEEFA3E 0x86E995D1 b323</code>
 +
 +==== _0x2DD39BF3E2F9C47F ====
 +<code cpp>Any AUDIO::_0x2DD39BF3E2F9C47F() // 0x2DD39BF3E2F9C47F  b463</code>
 +
 +==== PREPARE_MUSIC_EVENT ====
 +<code cpp>BOOL AUDIO::PREPARE_MUSIC_EVENT(const char* eventName) // 0x1E5185B72EF5158A 0x534A5C1C b323</code>
 +
 +<code>All music event names found in the b617d scripts: pastebin.com/GnYt0R3P</code>
 +==== CANCEL_MUSIC_EVENT ====
 +<code cpp>BOOL AUDIO::CANCEL_MUSIC_EVENT(const char* eventName) // 0x5B17A90291133DA5 0x89FF942D b323</code>
 +
 +<code>All music event names found in the b617d scripts: pastebin.com/GnYt0R3P</code>
 +==== TRIGGER_MUSIC_EVENT ====
 +<code cpp>BOOL AUDIO::TRIGGER_MUSIC_EVENT(const char* eventName) // 0x706D57B0F50DA710 0xB6094948 b323</code>
 +
 +<code>List of all usable event names found in b617d used with this native. Sorted alphabetically and identical names removed: pastebin.com/RzDFmB1W
 +
 +All music event names found in the b617d scripts: pastebin.com/GnYt0R3P</code>
 +==== IS_MUSIC_ONESHOT_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_MUSIC_ONESHOT_PLAYING() // 0xA097AB275061FB21 0x2705C4D5 b323</code>
 +
 +==== GET_MUSIC_PLAYTIME ====
 +<code cpp>int AUDIO::GET_MUSIC_PLAYTIME() // 0xE7A0D23DC414507B 0xD633C809 b323</code>
 +
 +==== _0x159B7318403A1CD8 ====
 +<code cpp>void AUDIO::_0x159B7318403A1CD8(Any p0) // 0x159B7318403A1CD8  b1103</code>
 +
 +==== RECORD_BROKEN_GLASS ====
 +<code cpp>void AUDIO::RECORD_BROKEN_GLASS(float x, float y, float z, float radius) // 0xFBE20329593DEC9D 0x53FC3FEC b323</code>
 +
 +==== CLEAR_ALL_BROKEN_GLASS ====
 +<code cpp>void AUDIO::CLEAR_ALL_BROKEN_GLASS() // 0xB32209EFFDC04913 0xE6B033BF b323</code>
 +
 +==== _0x70B8EC8FC108A634 ====
 +<code cpp>void AUDIO::_0x70B8EC8FC108A634(BOOL p0, Any p1) // 0x70B8EC8FC108A634 0x95050CAD b323</code>
 +
 +==== _0x149AEE66F0CB3A99 ====
 +<code cpp>void AUDIO::_0x149AEE66F0CB3A99(float p0, float p1) // 0x149AEE66F0CB3A99 0xE64F97A0 b323</code>
 +
 +==== _0x8BF907833BE275DE ====
 +<code cpp>void AUDIO::_0x8BF907833BE275DE(float p0, float p1) // 0x8BF907833BE275DE  b323</code>
 +
 +==== _0x062D5EAD4DA2FA6A ====
 +<code cpp>void AUDIO::_0x062D5EAD4DA2FA6A() // 0x062D5EAD4DA2FA6A 0xD87AF337 b323</code>
 +
 +<code>FORCE_*</code>
 +==== PREPARE_ALARM ====
 +<code cpp>BOOL AUDIO::PREPARE_ALARM(const char* alarmName) // 0x9D74AE343DB65533 0x084932E8 b323</code>
 +
 +<code>Example:
 +
 +bool prepareAlarm = AUDIO::PREPARE_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");</code>
 +==== START_ALARM ====
 +<code cpp>void AUDIO::START_ALARM(const char* alarmName, BOOL p2) // 0x0355EF116C4C97B2 0x703F524B b323</code>
 +
 +<code>Example:
 +
 +This will start the alarm at Fort Zancudo.
 +
 +AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);
 +
 +First parameter (char) is the name of the alarm.
 +Second parameter (bool) is unknown, it does not seem to make a difference if this one is 0 or 1.
 +
 +----------
 +
 +It DOES make a difference but it has to do with the duration or something I dunno yet
 +
 +----------
 +
 + Found in the b617d scripts:
 +
 + AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS", 0);
 + AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER", 1);
 + AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER_B", 0);
 + AUDIO::START_ALARM("BIG_SCORE_HEIST_VAULT_ALARMS", a_0);
 + AUDIO::START_ALARM("FBI_01_MORGUE_ALARMS", 1);
 + AUDIO::START_ALARM("FIB_05_BIOTECH_LAB_ALARMS", 0);
 + AUDIO::START_ALARM("JEWEL_STORE_HEIST_ALARMS", 0);
 + AUDIO::START_ALARM("PALETO_BAY_SCORE_ALARM", 1);
 + AUDIO::START_ALARM("PALETO_BAY_SCORE_CHICKEN_FACTORY_ALARM", 0);
 + AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);
 + AUDIO::START_ALARM("PORT_OF_LS_HEIST_SHIP_ALARMS", 0);
 + AUDIO::START_ALARM("PRISON_ALARMS", 0);
 + AUDIO::START_ALARM("PROLOGUE_VAULT_ALARMS", 0);</code>
 +==== STOP_ALARM ====
 +<code cpp>void AUDIO::STOP_ALARM(const char* alarmName, BOOL toggle) // 0xA1CADDCD98415A41 0xF987BE8C b323</code>
 +
 +<code>Example:
 +
 +This will stop the alarm at Fort Zancudo.
 +
 +AUDIO::STOP_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);
 +
 +First parameter (char) is the name of the alarm.
 +Second parameter (bool) has to be true (1) to have any effect.</code>
 +==== STOP_ALL_ALARMS ====
 +<code cpp>void AUDIO::STOP_ALL_ALARMS(BOOL stop) // 0x2F794A877ADD4C92 0xC3CB9DC6 b323</code>
 +
 +==== IS_ALARM_PLAYING ====
 +<code cpp>BOOL AUDIO::IS_ALARM_PLAYING(const char* alarmName) // 0x226435CB96CCFC8C 0x9D8E1D23 b323</code>
 +
 +<code>Example:
 +
 +bool playing = AUDIO::IS_ALARM_PLAYING("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");</code>
 +==== GET_VEHICLE_DEFAULT_HORN ====
 +<code cpp>Hash AUDIO::GET_VEHICLE_DEFAULT_HORN(Vehicle vehicle) // 0x02165D55000219AC 0xE84ABC19 b323</code>
 +
 +<code>Returns hash of default vehicle horn
 +
 +Hash is stored in audVehicleAudioEntity</code>
 +==== GET_VEHICLE_DEFAULT_HORN_IGNORE_MODS ====
 +<code cpp>Hash AUDIO::GET_VEHICLE_DEFAULT_HORN_IGNORE_MODS(Vehicle vehicle) // 0xACB5DCCA1EC76840 0xFD4B5B3B b323</code>
 +
 +==== RESET_PED_AUDIO_FLAGS ====
 +<code cpp>void AUDIO::RESET_PED_AUDIO_FLAGS(Ped ped) // 0xF54BB7B61036F335 0xDF720C86 b323</code>
 +
 +==== _SET_PED_AUDIO_FOOTSTEP_LOUD ====
 +<code cpp>void AUDIO::_SET_PED_AUDIO_FOOTSTEP_LOUD(Ped ped, BOOL toggle) // 0x0653B735BFBDFE87  b1493</code>
 +
 +<code>Enables/disables ped's "loud" footstep sound.</code>
 +==== _SET_PED_AUDIO_FOOTSTEP_QUIET ====
 +<code cpp>void AUDIO::_SET_PED_AUDIO_FOOTSTEP_QUIET(Ped ped, BOOL toggle) // 0x29DA3CA8D8B2692D  b1493</code>
 +
 +<code>Enables/disables ped's "quiet" footstep sound.</code>
 +==== OVERRIDE_PLAYER_GROUND_MATERIAL ====
 +<code cpp>void AUDIO::OVERRIDE_PLAYER_GROUND_MATERIAL(Hash hash, BOOL toggle) // 0xD2CC78CD3D0B50F9 0xC307D531 b323</code>
 +
 +<code>Sets audio flag "OverridePlayerGroundMaterial"</code>
 +==== _0xBF4DC1784BE94DFA ====
 +<code cpp>void AUDIO::_0xBF4DC1784BE94DFA(Ped ped, BOOL p1, Hash hash) // 0xBF4DC1784BE94DFA  b323</code>
 +
 +<code>Something like UPDATE_PED_*</code>
 +==== _OVERRIDE_MICROPHONE_SETTINGS ====
 +<code cpp>void AUDIO::_OVERRIDE_MICROPHONE_SETTINGS(Hash hash, BOOL toggle) // 0x75773E11BA459E90  b323</code>
 +
 +<code>Sets audio flag "OverrideMicrophoneSettings"</code>
 +==== FREEZE_MICROPHONE ====
 +<code cpp>void AUDIO::FREEZE_MICROPHONE() // 0xD57AAAE0E2214D11 0x2B9D91E8 b323</code>
 +
 +==== DISTANT_COP_CAR_SIRENS ====
 +<code cpp>void AUDIO::DISTANT_COP_CAR_SIRENS(BOOL value) // 0x552369F549563AD5 0x13EB5861 b323</code>
 +
 +<code>If value is set to true, and ambient siren sound will be played.
 +Appears to enable/disable an audio flag.</code>
 +==== _0x43FA0DFC5DF87815 ====
 +<code cpp>void AUDIO::_0x43FA0DFC5DF87815(Vehicle vehicle, BOOL p1) // 0x43FA0DFC5DF87815 0x7BED1872 b323</code>
 +
 +==== _0xB81CF134AEB56FFB ====
 +<code cpp>void AUDIO::_0xB81CF134AEB56FFB() // 0xB81CF134AEB56FFB  b791</code>
 +
 +==== SET_AUDIO_FLAG ====
 +<code cpp>void AUDIO::SET_AUDIO_FLAG(const char* flagName, BOOL toggle) // 0xB9EFD5C25018725A 0x1C09C9E0 b323</code>
 +
 +<code>Possible flag names:
 +"ActivateSwitchWheelAudio"
 +"AllowAmbientSpeechInSlowMo"
 +"AllowCutsceneOverScreenFade"
 +"AllowForceRadioAfterRetune"
 +"AllowPainAndAmbientSpeechToPlayDuringCutscene"
 +"AllowPlayerAIOnMission"
 +"AllowPoliceScannerWhenPlayerHasNoControl"
 +"AllowRadioDuringSwitch"
 +"AllowRadioOverScreenFade"
 +"AllowScoreAndRadio"
 +"AllowScriptedSpeechInSlowMo"
 +"AvoidMissionCompleteDelay"
 +"DisableAbortConversationForDeathAndInjury"
 +"DisableAbortConversationForRagdoll"
 +"DisableBarks"
 +"DisableFlightMusic"
 +"DisableReplayScriptStreamRecording"
 +"EnableHeadsetBeep"
 +"ForceConversationInterrupt"
 +"ForceSeamlessRadioSwitch"
 +"ForceSniperAudio"
 +"FrontendRadioDisabled"
 +"HoldMissionCompleteWhenPrepared"
 +"IsDirectorModeActive"
 +"IsPlayerOnMissionForSpeech"
 +"ListenerReverbDisabled"
 +"LoadMPData"
 +"MobileRadioInGame"
 +"OnlyAllowScriptTriggerPoliceScanner"
 +"PlayMenuMusic"
 +"PoliceScannerDisabled"
 +"ScriptedConvListenerMaySpeak"
 +"SpeechDucksScore"
 +"SuppressPlayerScubaBreathing"
 +"WantedMusicDisabled"
 +"WantedMusicOnMission"
 +
 +-------------------------------
 +No added flag names between b393d and b573d, including b573d.
 +
 +#######################################################################
 +
 +"IsDirectorModeActive" is an audio flag which will allow you to play speech infinitely without any pauses like in Director Mode.
 +
 +-----------------------------------------------------------------------
 +
 +All flag IDs and hashes:
 +
 +ID: 00 | Hash: 0x0FED7A7F
 +ID: 01 | Hash: 0x20A7858F
 +ID: 02 | Hash: 0xA11C2259
 +ID: 03 | Hash: 0x08DE4700
 +ID: 04 | Hash: 0x989F652F
 +ID: 05 | Hash: 0x3C9E76BA
 +ID: 06 | Hash: 0xA805FEB0
 +ID: 07 | Hash: 0x4B94EA26
 +ID: 08 | Hash: 0x803ACD34
 +ID: 09 | Hash: 0x7C741226
 +ID: 10 | Hash: 0x31DB9EBD
 +ID: 11 | Hash: 0xDF386F18
 +ID: 12 | Hash: 0x669CED42
 +ID: 13 | Hash: 0x51F22743
 +ID: 14 | Hash: 0x2052B35C
 +ID: 15 | Hash: 0x071472DC
 +ID: 16 | Hash: 0xF9928BCC
 +ID: 17 | Hash: 0x7ADBDD48
 +ID: 18 | Hash: 0xA959BA1A
 +ID: 19 | Hash: 0xBBE89B60
 +ID: 20 | Hash: 0x87A08871
 +ID: 21 | Hash: 0xED1057CE
 +ID: 22 | Hash: 0x1584AD7A
 +ID: 23 | Hash: 0x8582CFCB
 +ID: 24 | Hash: 0x7E5E2FB0
 +ID: 25 | Hash: 0xAE4F72DB
 +ID: 26 | Hash: 0x5D16D1FA
 +ID: 27 | Hash: 0x06B2F4B8
 +ID: 28 | Hash: 0x5D4CDC96
 +ID: 29 | Hash: 0x8B5A48BA
 +ID: 30 | Hash: 0x98FBD539
 +ID: 31 | Hash: 0xD8CB0473
 +ID: 32 | Hash: 0x5CBB4874
 +ID: 33 | Hash: 0x2E9F93A9
 +ID: 34 | Hash: 0xD93BEA86
 +ID: 35 | Hash: 0x92109B7D
 +ID: 36 | Hash: 0xB7EC9E4D
 +ID: 37 | Hash: 0xCABDBB1D
 +ID: 38 | Hash: 0xB3FD4A52
 +ID: 39 | Hash: 0x370D94E5
 +ID: 40 | Hash: 0xA0F7938F
 +ID: 41 | Hash: 0xCBE1CE81
 +ID: 42 | Hash: 0xC27F1271
 +ID: 43 | Hash: 0x9E3258EB
 +ID: 44 | Hash: 0x551CDA5B
 +ID: 45 | Hash: 0xCB6D663C
 +ID: 46 | Hash: 0x7DACE87F
 +ID: 47 | Hash: 0xF9DE416F
 +ID: 48 | Hash: 0x882E6E9E
 +ID: 49 | Hash: 0x16B447E7
 +ID: 50 | Hash: 0xBD867739
 +ID: 51 | Hash: 0xA3A58604
 +ID: 52 | Hash: 0x7E046BBC
 +ID: 53 | Hash: 0xD95FDB98
 +ID: 54 | Hash: 0x5842C0ED
 +ID: 55 | Hash: 0x285FECC6
 +ID: 56 | Hash: 0x9351AC43
 +ID: 57 | Hash: 0x50032E75
 +ID: 58 | Hash: 0xAE6D0D59
 +ID: 59 | Hash: 0xD6351785
 +ID: 60 | Hash: 0xD25D71BC
 +ID: 61 | Hash: 0x1F7F6423
 +ID: 62 | Hash: 0xE24C3AA6
 +ID: 63 | Hash: 0xBFFDD2B7</code>
 +==== PREPARE_SYNCHRONIZED_AUDIO_EVENT ====
 +<code cpp>Any AUDIO::PREPARE_SYNCHRONIZED_AUDIO_EVENT(const char* p0, Any p1) // 0xC7ABCACA4985A766 0xE1D91FD0 b323</code>
 +
 +==== PREPARE_SYNCHRONIZED_AUDIO_EVENT_FOR_SCENE ====
 +<code cpp>BOOL AUDIO::PREPARE_SYNCHRONIZED_AUDIO_EVENT_FOR_SCENE(Any p0, Any* p1) // 0x029FE7CD1B7E2E75 0x7652DD49 b323</code>
 +
 +==== PLAY_SYNCHRONIZED_AUDIO_EVENT ====
 +<code cpp>BOOL AUDIO::PLAY_SYNCHRONIZED_AUDIO_EVENT(Any p0) // 0x8B2FD4560E55DD2D 0x507F3241 b323</code>
 +
 +==== STOP_SYNCHRONIZED_AUDIO_EVENT ====
 +<code cpp>BOOL AUDIO::STOP_SYNCHRONIZED_AUDIO_EVENT(Any p0) // 0x92D6A88E64A94430 0xADEED2B4 b323</code>
 +
 +==== _0xC8EDE9BDBCCBA6D4 ====
 +<code cpp>void AUDIO::_0xC8EDE9BDBCCBA6D4(Any* p0, float p1, float p2, float p3) // 0xC8EDE9BDBCCBA6D4 0x55A21772 b323</code>
 +
 +==== _SET_SYNCHRONIZED_AUDIO_EVENT_POSITION_THIS_FRAME ====
 +<code cpp>void AUDIO::_SET_SYNCHRONIZED_AUDIO_EVENT_POSITION_THIS_FRAME(const char* p0, Entity p1) // 0x950A154B8DAB6185 0xA17F9AB0 b323</code>
 +
 +<code>Sets the position of the audio event to the entity's position for one frame(?)
 +
 +if (l_8C3 == 0) {
 +    sub_27fd1(0, -1, 1);
 +    if (PED::IS_SYNCHRONIZED_SCENE_RUNNING(l_87D)) {
 +        AUDIO::STOP_SYNCHRONIZED_AUDIO_EVENT(l_87D);
 +    }
 +    if (sub_7dd(l_A00)) {
 +        AUDIO::_950A154B8DAB6185("PAP2_IG1_POPPYSEX", l_A00);
 +    }
 +    sub_91c("TK************ SETTING SYNCH SCENE AUDIO POSITION THIS FRAME ************TK");
 +    l_8C3 = 1;
 +}
 +
 +--
 +
 +Found in the b617d scripts, duplicates removed: 
 +
 +AUDIO::_950A154B8DAB6185("CAR_5_IG_6", l_7FE[1/*1*/]);
 +AUDIO::_950A154B8DAB6185("EX03_TRAIN_BIKE_LAND",   PLAYER::PLAYER_PED_ID());
 +AUDIO::_950A154B8DAB6185("FBI_2_MCS_1_LeadIn", l_40[2/*1*/]);
 +AUDIO::_950A154B8DAB6185("FIN_C2_MCS_1", l_24C[0/*1*/]);
 +AUDIO::_950A154B8DAB6185("MNT_DNC", l_5F);
 +AUDIO::_950A154B8DAB6185("PAP2_IG1_POPPYSEX", l_A00);</code>
 +==== SET_AUDIO_SPECIAL_EFFECT_MODE ====
 +<code cpp>void AUDIO::SET_AUDIO_SPECIAL_EFFECT_MODE(int mode) // 0x12561FCBB62D5B9C 0x62B43677 b323</code>
 +
 +<code>Needs to be called every frame.
 +Audio mode to apply this frame: https://alloc8or.re/gta5/doc/enums/audSpecialEffectMode.txt</code>
 +==== SET_PORTAL_SETTINGS_OVERRIDE ====
 +<code cpp>void AUDIO::SET_PORTAL_SETTINGS_OVERRIDE(const char* p0, const char* p1) // 0x044DBAD7A7FA2BE5 0x8AD670EC b323</code>
 +
 +<code>Found in the b617d scripts, duplicates removed:  
 +
 +AUDIO::_044DBAD7A7FA2BE5("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN");
 +
 + AUDIO::_044DBAD7A7FA2BE5("V_CIA_PS_WINDOW_UNBROKEN", "V_CIA_PS_WINDOW_BROKEN");
 +
 + AUDIO::_044DBAD7A7FA2BE5("V_DLC_HEIST_APARTMENT_DOOR_CLOSED", "V_DLC_HEIST_APARTMENT_DOOR_OPEN");
 +
 + AUDIO::_044DBAD7A7FA2BE5("V_FINALEBANK_PS_VAULT_INTACT", "V_FINALEBANK_PS_VAULT_BLOWN");
 +
 + AUDIO::_044DBAD7A7FA2BE5("V_MICHAEL_PS_BATHROOM_WITH_WINDOW", "V_MICHAEL_PS_BATHROOM_WITHOUT_WINDOW");</code>
 +==== REMOVE_PORTAL_SETTINGS_OVERRIDE ====
 +<code cpp>void AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE(const char* p0) // 0xB4BBFD9CD8B3922B 0xD24B4D0C b323</code>
 +
 +<code> Found in the b617d scripts, duplicates removed: 
 +
 + AUDIO::_B4BBFD9CD8B3922B("V_CARSHOWROOM_PS_WINDOW_UNBROKEN");
 + AUDIO::_B4BBFD9CD8B3922B("V_CIA_PS_WINDOW_UNBROKEN");
 + AUDIO::_B4BBFD9CD8B3922B("V_DLC_HEIST_APARTMENT_DOOR_CLOSED");
 + AUDIO::_B4BBFD9CD8B3922B("V_FINALEBANK_PS_VAULT_INTACT");
 + AUDIO::_B4BBFD9CD8B3922B("V_MICHAEL_PS_BATHROOM_WITH_WINDOW");</code>
 +==== _0xE4E6DD5566D28C82 ====
 +<code cpp>void AUDIO::_0xE4E6DD5566D28C82() // 0xE4E6DD5566D28C82 0x7262B5BA b323</code>
 +
 +<code>STOP_S*</code>
 +==== _0x3A48AB4445D499BE ====
 +<code cpp>Any AUDIO::_0x3A48AB4445D499BE() // 0x3A48AB4445D499BE 0x93A44A1F b323</code>
 +
 +==== _SET_PED_TALK ====
 +<code cpp>void AUDIO::_SET_PED_TALK(Ped ped) // 0x4ADA3F19BE4A6047 0x13777A0B b323</code>
 +
 +<code>Speech related.</code>
 +==== _0x0150B6FF25A9E2E5 ====
 +<code cpp>void AUDIO::_0x0150B6FF25A9E2E5() // 0x0150B6FF25A9E2E5 0x1134F68B b323</code>
 +
 +==== _0xBEF34B1D9624D5DD ====
 +<code cpp>void AUDIO::_0xBEF34B1D9624D5DD(BOOL p0) // 0xBEF34B1D9624D5DD 0xE0047BFD b323</code>
 +
 +==== STOP_CUTSCENE_AUDIO ====
 +<code cpp>void AUDIO::STOP_CUTSCENE_AUDIO() // 0x806058BBDC136E06 0x55461BE6 b323</code>
 +
 +==== _HAS_MULTIPLAYER_AUDIO_DATA_LOADED ====
 +<code cpp>BOOL AUDIO::_HAS_MULTIPLAYER_AUDIO_DATA_LOADED() // 0x544810ED9DB6BBE6  b323</code>
 +
 +<code>HAS_*</code>
 +==== _HAS_MULTIPLAYER_AUDIO_DATA_UNLOADED ====
 +<code cpp>BOOL AUDIO::_HAS_MULTIPLAYER_AUDIO_DATA_UNLOADED() // 0x5B50ABB1FE3746F4  b323</code>
 +
 +<code>HAS_*</code>
 +==== _GET_VEHICLE_DEFAULT_HORN_VARIATION ====
 +<code cpp>int AUDIO::_GET_VEHICLE_DEFAULT_HORN_VARIATION(Vehicle vehicle) // 0xD53F3A29BCE2580E  b1365</code>
 +
 +==== _SET_VEHICLE_HORN_VARIATION ====
 +<code cpp>void AUDIO::_SET_VEHICLE_HORN_VARIATION(Vehicle vehicle, int value) // 0x0350E7E17BA767D0  b1365</code>
 +
 +
 +===== BRAIN =====
 +==== ADD_SCRIPT_TO_RANDOM_PED ====
 +<code cpp>void BRAIN::ADD_SCRIPT_TO_RANDOM_PED(const char* name, Hash model, float p2, float p3) // 0x4EE5367468A65CCC 0xECC76C3D b323</code>
 +
 +<code>BRAIN::ADD_SCRIPT_TO_RANDOM_PED("pb_prostitute", ${s_f_y_hooker_01}, 100, 0);
 +
 +- Nacorpio
 +
 +-----
 +
 +Hardcoded to not work in Multiplayer.</code>
 +==== REGISTER_OBJECT_SCRIPT_BRAIN ====
 +<code cpp>void BRAIN::REGISTER_OBJECT_SCRIPT_BRAIN(const char* scriptName, Hash modelHash, int p2, float activationRange, int p4, int p5) // 0x0BE84C318BA6EC22 0xB6BCC608 b323</code>
 +
 +<code>Registers a script for any object with a specific model hash.
 +
 +BRAIN::REGISTER_OBJECT_SCRIPT_BRAIN("ob_telescope", ${prop_telescope_01}, 100, 4.0, -1, 9);
 +
 +- Nacorpio</code>
 +==== IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE ====
 +<code cpp>BOOL BRAIN::IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE(Object object) // 0xCCBA154209823057 0xBA4CAA56 b323</code>
 +
 +==== REGISTER_WORLD_POINT_SCRIPT_BRAIN ====
 +<code cpp>void BRAIN::REGISTER_WORLD_POINT_SCRIPT_BRAIN(const char* scriptName, float activationRange, int p2) // 0x3CDC7136613284BD 0x725D91F7 b323</code>
 +
 +==== IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE ====
 +<code cpp>BOOL BRAIN::IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE() // 0xC5042CC6F5E3D450 0x2CF305A0 b323</code>
 +
 +<code>Gets whether the world point the calling script is registered to is within desired range of the player.</code>
 +==== ENABLE_SCRIPT_BRAIN_SET ====
 +<code cpp>void BRAIN::ENABLE_SCRIPT_BRAIN_SET(int brainSet) // 0x67AA4D73F0CFA86B 0x2765919F b323</code>
 +
 +==== DISABLE_SCRIPT_BRAIN_SET ====
 +<code cpp>void BRAIN::DISABLE_SCRIPT_BRAIN_SET(int brainSet) // 0x14D8518E9760F08F 0xFBD13FAD b323</code>
 +
 +==== _0x0B40ED49D7D6FF84 ====
 +<code cpp>void BRAIN::_0x0B40ED49D7D6FF84() // 0x0B40ED49D7D6FF84 0x19B27825 b323</code>
 +
 +==== _0x4D953DF78EBF8158 ====
 +<code cpp>void BRAIN::_0x4D953DF78EBF8158() // 0x4D953DF78EBF8158 0xF3A3AB08 b323</code>
 +
 +<code>Something like flush_all_scripts 
 +
 +Most of time comes after NETWORK_END_TUTORIAL_SESSION() or before TERMINATE_THIS_THREAD()</code>
 +==== _0x6D6840CEE8845831 ====
 +<code cpp>void BRAIN::_0x6D6840CEE8845831(const char* action) // 0x6D6840CEE8845831 0x949FE53E b323</code>
 +
 +<code>Possible values:
 +
 +act_cinema
 +am_mp_carwash_launch
 +am_mp_carwash_control
 +am_mp_property_ext
 +chop
 +fairgroundHub
 +launcher_BasejumpHeli
 +launcher_BasejumpPack
 +launcher_CarWash
 +launcher_golf
 +launcher_Hunting_Ambient
 +launcher_MrsPhilips
 +launcher_OffroadRacing
 +launcher_pilotschool
 +launcher_Racing
 +launcher_rampage
 +launcher_rampage
 +launcher_range
 +launcher_stunts
 +launcher_stunts
 +launcher_tennis
 +launcher_Tonya
 +launcher_Triathlon
 +launcher_Yoga
 +ob_mp_bed_low
 +ob_mp_bed_med</code>
 +==== _0x6E91B04E08773030 ====
 +<code cpp>void BRAIN::_0x6E91B04E08773030(const char* action) // 0x6E91B04E08773030 0x29CE8BAA b323</code>
 +
 +<code>Looks like a cousin of above function _6D6840CEE8845831 as it was found among them. Must be similar
 +
 +Here are possible values of argument - 
 +
 +"ob_tv"
 +"launcher_Darts"</code>
 +
 +===== CAM =====
 +==== RENDER_SCRIPT_CAMS ====
 +<code cpp>void CAM::RENDER_SCRIPT_CAMS(BOOL render, BOOL ease, int easeTime, BOOL p3, BOOL p4, Any p5) // 0x07E5B515DB0636FC 0x74337969 b323</code>
 +
 +<code>ease - smooth transition between the camera's positions
 +easeTime - Time in milliseconds for the transition to happen
 +
 +If you have created a script (rendering) camera, and want to go back to the 
 +character (gameplay) camera, call this native with render set to 0.
 +Setting ease to 1 will smooth the transition.</code>
 +==== STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP ====
 +<code cpp>void CAM::STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(BOOL render, float p1, int p2, Any p3) // 0xC819F3CBB62BF692 0xD3C08183 b323</code>
 +
 +<code>This native makes the gameplay camera zoom into first person/third person with a special effect.</code>
 +==== CREATE_CAM ====
 +<code cpp>Cam CAM::CREATE_CAM(const char* camName, BOOL p1) // 0xC3981DCE61D9E13F 0xE9BF2A7D b323</code>
 +
 +<code>"DEFAULT_SCRIPTED_CAMERA"
 +"DEFAULT_ANIMATED_CAMERA"
 +"DEFAULT_SPLINE_CAMERA"
 +"DEFAULT_SCRIPTED_FLY_CAMERA"
 +"TIMED_SPLINE_CAMERA"</code>
 +==== CREATE_CAM_WITH_PARAMS ====
 +<code cpp>Cam CAM::CREATE_CAM_WITH_PARAMS(const char* camName, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float fov, BOOL p8, int p9) // 0xB51194800B257161 0x23B02F15 b323</code>
 +
 +<code>camName is always set to "DEFAULT_SCRIPTED_CAMERA" in Rockstar's scripts.
 +------------
 +Camera names found in the b617d scripts:
 +"DEFAULT_ANIMATED_CAMERA"
 +"DEFAULT_SCRIPTED_CAMERA"
 +"DEFAULT_SCRIPTED_FLY_CAMERA"
 +"DEFAULT_SPLINE_CAMERA"
 +------------
 +Side Note: It seems p8 is basically to represent what would be the bool p1 within CREATE_CAM native. As well as the p9 since it's always 2 in scripts seems to represent what would be the last param within SET_CAM_ROT native which normally would be 2.</code>
 +==== CREATE_CAMERA ====
 +<code cpp>Cam CAM::CREATE_CAMERA(Hash camHash, BOOL p1) // 0x5E3CF89C6BCCA67D 0x5D6739AE b323</code>
 +
 +==== CREATE_CAMERA_WITH_PARAMS ====
 +<code cpp>Cam CAM::CREATE_CAMERA_WITH_PARAMS(Hash camHash, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float fov, BOOL p8, Any p9) // 0x6ABFA3E16460F22D 0x0688BE9A b323</code>
 +
 +<code>CAM::_GET_GAMEPLAY_CAM_COORDS can be used instead of posX,Y,Z
 +CAM::_GET_GAMEPLAY_CAM_ROT can be used instead of rotX,Y,Z
 +CAM::_80EC114669DAEFF4() can be used instead of p7 (Possible p7 is FOV parameter. )
 +p8 ???
 +p9 uses 2 by default
 +</code>
 +==== DESTROY_CAM ====
 +<code cpp>void CAM::DESTROY_CAM(Cam cam, BOOL bScriptHostCam) // 0x865908C81A2C22E9 0xC39302BD b323</code>
 +
 +<code>BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.</code>
 +==== DESTROY_ALL_CAMS ====
 +<code cpp>void CAM::DESTROY_ALL_CAMS(BOOL bScriptHostCam) // 0x8E5FB15663F79120 0x10C151CE b323</code>
 +
 +<code>BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.</code>
 +==== DOES_CAM_EXIST ====
 +<code cpp>BOOL CAM::DOES_CAM_EXIST(Cam cam) // 0xA7A932170592B50E 0x1EF89DC0 b323</code>
 +
 +<code>Returns whether or not the passed camera handle exists.</code>
 +==== SET_CAM_ACTIVE ====
 +<code cpp>void CAM::SET_CAM_ACTIVE(Cam cam, BOOL active) // 0x026FB97D0A425F84 0x064659C2 b323</code>
 +
 +<code>Set camera as active/inactive.</code>
 +==== IS_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::IS_CAM_ACTIVE(Cam cam) // 0xDFB2B516207D3534 0x4B58F177 b323</code>
 +
 +<code>Returns whether or not the passed camera handle is active.</code>
 +==== IS_CAM_RENDERING ====
 +<code cpp>BOOL CAM::IS_CAM_RENDERING(Cam cam) // 0x02EC0AF5C5A49B7A 0x6EC6B5B2 b323</code>
 +
 +==== GET_RENDERING_CAM ====
 +<code cpp>Cam CAM::GET_RENDERING_CAM() // 0x5234F9F10919EABA 0x0FCF4DF1 b323</code>
 +
 +==== GET_CAM_COORD ====
 +<code cpp>Vector3 CAM::GET_CAM_COORD(Cam cam) // 0xBAC038F7459AE5AE 0x7C40F09C b323</code>
 +
 +==== GET_CAM_ROT ====
 +<code cpp>Vector3 CAM::GET_CAM_ROT(Cam cam, int rotationOrder) // 0x7D304C1C955E3E12 0xDAC84C9F b323</code>
 +
 +<code>The last parameter, as in other "ROT" methods, is usually 2.</code>
 +==== GET_CAM_FOV ====
 +<code cpp>float CAM::GET_CAM_FOV(Cam cam) // 0xC3330A45CCCDB26A 0xD6E9FCF5 b323</code>
 +
 +==== GET_CAM_NEAR_CLIP ====
 +<code cpp>float CAM::GET_CAM_NEAR_CLIP(Cam cam) // 0xC520A34DAFBF24B1 0xCFCD35EE b323</code>
 +
 +==== GET_CAM_FAR_CLIP ====
 +<code cpp>float CAM::GET_CAM_FAR_CLIP(Cam cam) // 0xB60A9CFEB21CA6AA 0x09F119B8 b323</code>
 +
 +==== GET_CAM_FAR_DOF ====
 +<code cpp>float CAM::GET_CAM_FAR_DOF(Cam cam) // 0x255F8DAFD540D397 0x98C5CCE9 b323</code>
 +
 +==== SET_CAM_PARAMS ====
 +<code cpp>void CAM::SET_CAM_PARAMS(Cam cam, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float fieldOfView, Any p8, int p9, int p10, int p11) // 0xBFD8727AEA3CCEBA 0x2167CEBF b323</code>
 +
 +==== SET_CAM_COORD ====
 +<code cpp>void CAM::SET_CAM_COORD(Cam cam, float posX, float posY, float posZ) // 0x4D41783FB745E42E 0x7A8053AF b323</code>
 +
 +<code>Sets the position of the cam.</code>
 +==== SET_CAM_ROT ====
 +<code cpp>void CAM::SET_CAM_ROT(Cam cam, float rotX, float rotY, float rotZ, int rotationOrder) // 0x85973643155D0B07 0xEE38B3C1 b323</code>
 +
 +<code>Sets the rotation of the cam.
 +Last parameter unknown.
 +
 +Last parameter seems to always be set to 2.</code>
 +==== SET_CAM_FOV ====
 +<code cpp>void CAM::SET_CAM_FOV(Cam cam, float fieldOfView) // 0xB13C14F66A00D047 0xD3D5D74F b323</code>
 +
 +<code>Sets the field of view of the cam.
 +---------------------------------------------
 +Min: 1.0f
 +Max: 130.0f</code>
 +==== SET_CAM_NEAR_CLIP ====
 +<code cpp>void CAM::SET_CAM_NEAR_CLIP(Cam cam, float nearClip) // 0xC7848EFCCC545182 0x46DB13B1 b323</code>
 +
 +==== SET_CAM_FAR_CLIP ====
 +<code cpp>void CAM::SET_CAM_FAR_CLIP(Cam cam, float farClip) // 0xAE306F2A904BF86E 0x0D23E381 b323</code>
 +
 +==== _0xAABD62873FFB1A33 ====
 +<code cpp>void CAM::_0xAABD62873FFB1A33(Any p0, Any p1) // 0xAABD62873FFB1A33  b2189</code>
 +
 +==== SET_CAM_MOTION_BLUR_STRENGTH ====
 +<code cpp>void CAM::SET_CAM_MOTION_BLUR_STRENGTH(Cam cam, float strength) // 0x6F0F77FBA9A8F2E6 0xFD6E0D67 b323</code>
 +
 +==== SET_CAM_NEAR_DOF ====
 +<code cpp>void CAM::SET_CAM_NEAR_DOF(Cam cam, float nearDOF) // 0x3FA4BF0A7AB7DE2C 0xF28254DF b323</code>
 +
 +==== SET_CAM_FAR_DOF ====
 +<code cpp>void CAM::SET_CAM_FAR_DOF(Cam cam, float farDOF) // 0xEDD91296CD01AEE0 0x58515E8E b323</code>
 +
 +==== SET_CAM_DOF_STRENGTH ====
 +<code cpp>void CAM::SET_CAM_DOF_STRENGTH(Cam cam, float dofStrength) // 0x5EE29B4D7D5DF897 0x3CC4EB3F b323</code>
 +
 +==== SET_CAM_DOF_PLANES ====
 +<code cpp>void CAM::SET_CAM_DOF_PLANES(Cam cam, float p1, float p2, float p3, float p4) // 0x3CF48F6F96E749DC 0xAD6C2B8F b323</code>
 +
 +==== SET_CAM_USE_SHALLOW_DOF_MODE ====
 +<code cpp>void CAM::SET_CAM_USE_SHALLOW_DOF_MODE(Cam cam, BOOL toggle) // 0x16A96863A17552BB 0x8306C256 b323</code>
 +
 +==== SET_USE_HI_DOF ====
 +<code cpp>void CAM::SET_USE_HI_DOF() // 0xA13B0222F3D94A94 0x8BBF2950 b323</code>
 +
 +==== _0xF55E4046F6F831DC ====
 +<code cpp>void CAM::_0xF55E4046F6F831DC(Any p0, float p1) // 0xF55E4046F6F831DC  b323</code>
 +
 +==== _0xE111A7C0D200CBC5 ====
 +<code cpp>void CAM::_0xE111A7C0D200CBC5(Any p0, float p1) // 0xE111A7C0D200CBC5  b323</code>
 +
 +==== _SET_CAM_DOF_FNUMBER_OF_LENS ====
 +<code cpp>void CAM::_SET_CAM_DOF_FNUMBER_OF_LENS(Cam camera, float p1) // 0x7DD234D6F3914C5B  b323</code>
 +
 +<code>This native has its name defined inside its codE
 +</code>
 +==== _SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER ====
 +<code cpp>void CAM::_SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER(Cam camera, float multiplier) // 0x47B595D60664CFFA  b1011</code>
 +
 +<code>Native name labeled within its code</code>
 +==== _SET_CAM_DOF_FOCUS_DISTANCE_BIAS ====
 +<code cpp>void CAM::_SET_CAM_DOF_FOCUS_DISTANCE_BIAS(Cam camera, float p1) // 0xC669EEA5D031B7DE  b323</code>
 +
 +<code>This native has a name defined inside its code</code>
 +==== _SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE ====
 +<code cpp>void CAM::_SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE(Cam camera, float p1) // 0xC3654A441402562D  b323</code>
 +
 +<code>This native has a name defined inside its code</code>
 +==== _SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL ====
 +<code cpp>void CAM::_SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(Cam camera, float p1) // 0x2C654B4943BDDF7C  b323</code>
 +
 +<code>This native has a name defined inside its code</code>
 +==== ATTACH_CAM_TO_ENTITY ====
 +<code cpp>void CAM::ATTACH_CAM_TO_ENTITY(Cam cam, Entity entity, float xOffset, float yOffset, float zOffset, BOOL isRelative) // 0xFEDB7D269E8C60E3 0xAD7C45F6 b323</code>
 +
 +<code>Last param determines if its relative to the Entity</code>
 +==== ATTACH_CAM_TO_PED_BONE ====
 +<code cpp>void CAM::ATTACH_CAM_TO_PED_BONE(Cam cam, Ped ped, int boneIndex, float x, float y, float z, BOOL heading) // 0x61A3DBA14AB7F411 0x506BB35C b323</code>
 +
 +==== _ATTACH_CAM_TO_PED_BONE_2 ====
 +<code cpp>void CAM::_ATTACH_CAM_TO_PED_BONE_2(Cam cam, Ped ped, int boneIndex, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9) // 0x149916F50C34A40D  b1180</code>
 +
 +==== _0x202A5ED9CE01D6E7 ====
 +<code cpp>void CAM::_0x202A5ED9CE01D6E7(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8) // 0x202A5ED9CE01D6E7  b2189</code>
 +
 +==== _ATTACH_CAM_TO_VEHICLE_BONE ====
 +<code cpp>void CAM::_ATTACH_CAM_TO_VEHICLE_BONE(Cam cam, Vehicle vehicle, int boneIndex, BOOL relativeRotation, float rotX, float rotY, float rotZ, float offsetX, float offsetY, float offsetZ, BOOL fixedDirection) // 0x8DB3F12A02CAEF72  b1290</code>
 +
 +<code>This native works with vehicles only. Bone indexes are usually given by this native GET_ENTITY_BONE_INDEX_BY_NAME.</code>
 +==== DETACH_CAM ====
 +<code cpp>void CAM::DETACH_CAM(Cam cam) // 0xA2FABBE87F4BAD82 0xF4FBF14A b323</code>
 +
 +==== SET_CAM_INHERIT_ROLL_VEHICLE ====
 +<code cpp>void CAM::SET_CAM_INHERIT_ROLL_VEHICLE(Cam cam, BOOL p1) // 0x45F1DE9C34B93AE6 0xE4BD5342 b323</code>
 +
 +<code>The native seems to only be called once.
 +
 +The native is used as so,
 +CAM::SET_CAM_INHERIT_ROLL_VEHICLE(l_544, getElem(2, &l_525, 4));
 +In the exile1 script.</code>
 +==== POINT_CAM_AT_COORD ====
 +<code cpp>void CAM::POINT_CAM_AT_COORD(Cam cam, float x, float y, float z) // 0xF75497BB865F0803 0x914BC21A b323</code>
 +
 +==== POINT_CAM_AT_ENTITY ====
 +<code cpp>void CAM::POINT_CAM_AT_ENTITY(Cam cam, Entity entity, float p2, float p3, float p4, BOOL p5) // 0x5640BFF86B16E8DC 0x7597A0F7 b323</code>
 +
 +<code>p5 always seems to be 1 i.e TRUE</code>
 +==== POINT_CAM_AT_PED_BONE ====
 +<code cpp>void CAM::POINT_CAM_AT_PED_BONE(Cam cam, Ped ped, int boneIndex, float x, float y, float z, BOOL p6) // 0x68B2B5F33BA63C41 0x09F47049 b323</code>
 +
 +<code>Parameters p0-p5 seems correct. The bool p6 is unknown, but through every X360 script it's always 1. Please correct p0-p5 if any prove to be wrong. </code>
 +==== STOP_CAM_POINTING ====
 +<code cpp>void CAM::STOP_CAM_POINTING(Cam cam) // 0xF33AB75780BA57DE 0x5435F6A5 b323</code>
 +
 +==== SET_CAM_AFFECTS_AIMING ====
 +<code cpp>void CAM::SET_CAM_AFFECTS_AIMING(Cam cam, BOOL toggle) // 0x8C1DC7770C51DC8D 0x0C74F9AF b323</code>
 +
 +<code>Allows you to aim and shoot at the direction the camera is facing.</code>
 +==== _0x661B5C8654ADD825 ====
 +<code cpp>void CAM::_0x661B5C8654ADD825(Cam cam, BOOL p1) // 0x661B5C8654ADD825 0xE1A0B2F1 b323</code>
 +
 +<code>SET_CAM_*</code>
 +==== _0xA2767257A320FC82 ====
 +<code cpp>void CAM::_0xA2767257A320FC82(Any p0, BOOL p1) // 0xA2767257A320FC82  b323</code>
 +
 +==== _0x271017B9BA825366 ====
 +<code cpp>void CAM::_0x271017B9BA825366(Any p0, BOOL p1) // 0x271017B9BA825366 0x43220969 b323</code>
 +
 +==== SET_CAM_DEBUG_NAME ====
 +<code cpp>void CAM::SET_CAM_DEBUG_NAME(Cam camera, const char* name) // 0x1B93E0107865DD40 0x9B00DF3F b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== ADD_CAM_SPLINE_NODE ====
 +<code cpp>void CAM::ADD_CAM_SPLINE_NODE(Cam camera, float x, float y, float z, float xRot, float yRot, float zRot, int length, int p8, int p9) // 0x8609C75EC438FB3B 0xAD3C7EAA b323</code>
 +
 +<code>I filled p1-p6 (the floats) as they are as other natives with 6 floats in a row are similar and I see no other method. So if a test from anyone proves them wrong please correct.
 +
 +p7 (length) determines the length of the spline, affects camera path and duration of transition between previous node and this one
 +
 +p8 big values ~100 will slow down the camera movement before reaching this node
 +
 +p9 != 0 seems to override the rotation/pitch (bool?)</code>
 +==== ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME ====
 +<code cpp>void CAM::ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME(Cam cam, Cam cam2, int p2, int p3) // 0x0A9F2A468B328E74 0x30510511 b323</code>
 +
 +==== ADD_CAM_SPLINE_NODE_USING_CAMERA ====
 +<code cpp>void CAM::ADD_CAM_SPLINE_NODE_USING_CAMERA(Cam cam, Cam cam2, int p2, int p3) // 0x0FB82563989CF4FB 0xBA6C085B b323</code>
 +
 +==== ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME ====
 +<code cpp>void CAM::ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME(Cam cam, int p1, int p2) // 0x609278246A29CA34 0xB4737F03 b323</code>
 +
 +==== SET_CAM_SPLINE_PHASE ====
 +<code cpp>void CAM::SET_CAM_SPLINE_PHASE(Cam cam, float p1) // 0x242B5874F0A4E052 0xF0AED233 b323</code>
 +
 +==== GET_CAM_SPLINE_PHASE ====
 +<code cpp>float CAM::GET_CAM_SPLINE_PHASE(Cam cam) // 0xB5349E36C546509A 0x39784DD9 b323</code>
 +
 +<code>Can use this with SET_CAM_SPLINE_PHASE to set the float it this native returns.
 +
 +(returns 1.0f when no nodes has been added, reached end of non existing spline)</code>
 +==== GET_CAM_SPLINE_NODE_PHASE ====
 +<code cpp>float CAM::GET_CAM_SPLINE_NODE_PHASE(Cam cam) // 0xD9D0E694C8282C96 0x7B9522F6 b323</code>
 +
 +<code>I'm pretty sure the parameter is the camera as usual, but I am not certain so I'm going to leave it as is.</code>
 +==== SET_CAM_SPLINE_DURATION ====
 +<code cpp>void CAM::SET_CAM_SPLINE_DURATION(Cam cam, int timeDuration) // 0x1381539FEE034CDA 0x3E91FC8A b323</code>
 +
 +<code>I named p1 as timeDuration as it is obvious. I'm assuming tho it is ran in ms(Milliseconds) as usual.</code>
 +==== SET_CAM_SPLINE_SMOOTHING_STYLE ====
 +<code cpp>void CAM::SET_CAM_SPLINE_SMOOTHING_STYLE(Cam cam, int smoothingStyle) // 0xD1B0F412F109EA5D 0x15E141CE b323</code>
 +
 +==== GET_CAM_SPLINE_NODE_INDEX ====
 +<code cpp>int CAM::GET_CAM_SPLINE_NODE_INDEX(Cam cam) // 0xB22B17DF858716A6 0xF8AEB6BD b323</code>
 +
 +==== SET_CAM_SPLINE_NODE_EASE ====
 +<code cpp>void CAM::SET_CAM_SPLINE_NODE_EASE(Cam cam, int p1, int p2, float p3) // 0x83B8201ED82A9A2D 0x21D275DA b323</code>
 +
 +==== SET_CAM_SPLINE_NODE_VELOCITY_SCALE ====
 +<code cpp>void CAM::SET_CAM_SPLINE_NODE_VELOCITY_SCALE(Cam cam, int p1, float scale) // 0xA6385DEB180F319F 0xA3BD9E94 b323</code>
 +
 +==== OVERRIDE_CAM_SPLINE_VELOCITY ====
 +<code cpp>void CAM::OVERRIDE_CAM_SPLINE_VELOCITY(Cam cam, int p1, float p2, float p3) // 0x40B62FA033EB0346 0x326A17E2 b323</code>
 +
 +==== OVERRIDE_CAM_SPLINE_MOTION_BLUR ====
 +<code cpp>void CAM::OVERRIDE_CAM_SPLINE_MOTION_BLUR(Cam cam, int p1, float p2, float p3) // 0x7DCF7C708D292D55 0x633179E6 b323</code>
 +
 +<code>Max value for p1 is 15.</code>
 +==== SET_CAM_SPLINE_NODE_EXTRA_FLAGS ====
 +<code cpp>void CAM::SET_CAM_SPLINE_NODE_EXTRA_FLAGS(Cam cam, int p1, int flags) // 0x7BF1A54AE67AC070 0xC90B2DDC b323</code>
 +
 +==== IS_CAM_SPLINE_PAUSED ====
 +<code cpp>BOOL CAM::IS_CAM_SPLINE_PAUSED(Any p0) // 0x0290F35C0AD97864 0x60B34FF5 b323</code>
 +
 +==== SET_CAM_ACTIVE_WITH_INTERP ====
 +<code cpp>void CAM::SET_CAM_ACTIVE_WITH_INTERP(Cam camTo, Cam camFrom, int duration, int easeLocation, int easeRotation) // 0x9FBDA379383A52A4 0x7983E7F0 b323</code>
 +
 +<code>Previous declaration void SET_CAM_ACTIVE_WITH_INTERP(Cam camTo, Cam camFrom, int duration, BOOL easeLocation, BOOL easeRotation) is completely wrong. The last two params are integers not BOOLs...
 +</code>
 +==== IS_CAM_INTERPOLATING ====
 +<code cpp>BOOL CAM::IS_CAM_INTERPOLATING(Cam cam) // 0x036F97C908C2B52C 0x7159CB5D b323</code>
 +
 +==== SHAKE_CAM ====
 +<code cpp>void CAM::SHAKE_CAM(Cam cam, const char* type, float amplitude) // 0x6A25241C340D3822 0x1D4211B0 b323</code>
 +
 +<code>Possible shake types (updated b617d):
 +
 +DEATH_FAIL_IN_EFFECT_SHAKE
 +DRUNK_SHAKE
 +FAMILY5_DRUG_TRIP_SHAKE
 +HAND_SHAKE
 +JOLT_SHAKE
 +LARGE_EXPLOSION_SHAKE
 +MEDIUM_EXPLOSION_SHAKE
 +SMALL_EXPLOSION_SHAKE
 +ROAD_VIBRATION_SHAKE
 +SKY_DIVING_SHAKE
 +VIBRATE_SHAKE
 +
 +Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json</code>
 +==== ANIMATED_SHAKE_CAM ====
 +<code cpp>void CAM::ANIMATED_SHAKE_CAM(Cam cam, const char* p1, const char* p2, const char* p3, float amplitude) // 0xA2746EEAE3E577CD 0xE1168767 b323</code>
 +
 +<code>Example from michael2 script.
 +
 +CAM::ANIMATED_SHAKE_CAM(l_5069, "shake_cam_all@", "light", "", 1f);</code>
 +==== IS_CAM_SHAKING ====
 +<code cpp>BOOL CAM::IS_CAM_SHAKING(Cam cam) // 0x6B24BFE83A2BE47B 0x0961FD9B b323</code>
 +
 +==== SET_CAM_SHAKE_AMPLITUDE ====
 +<code cpp>void CAM::SET_CAM_SHAKE_AMPLITUDE(Cam cam, float amplitude) // 0xD93DB43B82BC0D00 0x60FF6382 b323</code>
 +
 +==== STOP_CAM_SHAKING ====
 +<code cpp>void CAM::STOP_CAM_SHAKING(Cam cam, BOOL p1) // 0xBDECF64367884AC3 0x40D0EB87 b323</code>
 +
 +==== SHAKE_SCRIPT_GLOBAL ====
 +<code cpp>void CAM::SHAKE_SCRIPT_GLOBAL(const char* p0, float p1) // 0xF4C8CF9E353AFECA 0x2B0F05CD b323</code>
 +
 +<code>CAM::SHAKE_SCRIPT_GLOBAL("HAND_SHAKE", 0.2);
 +
 +Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json</code>
 +==== ANIMATED_SHAKE_SCRIPT_GLOBAL ====
 +<code cpp>void CAM::ANIMATED_SHAKE_SCRIPT_GLOBAL(const char* p0, const char* p1, const char* p2, float p3) // 0xC2EAE3FB8CDBED31 0xCB75BD9C b323</code>
 +
 +<code>CAM::ANIMATED_SHAKE_SCRIPT_GLOBAL("SHAKE_CAM_medium", "medium", "", 0.5f);
 +
 +Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json</code>
 +==== IS_SCRIPT_GLOBAL_SHAKING ====
 +<code cpp>BOOL CAM::IS_SCRIPT_GLOBAL_SHAKING() // 0xC912AF078AF19212 0x6AEFE6A5 b323</code>
 +
 +<code>In drunk_controller.c4, sub_309
 +if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {
 +    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);
 +}</code>
 +==== STOP_SCRIPT_GLOBAL_SHAKING ====
 +<code cpp>void CAM::STOP_SCRIPT_GLOBAL_SHAKING(BOOL p0) // 0x1C9D7949FA533490 0x26FCFB96 b323</code>
 +
 +<code>In drunk_controller.c4, sub_309
 +if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {
 +    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);
 +}</code>
 +==== _0x5D96CFB59DA076A0 ====
 +<code cpp>void CAM::_0x5D96CFB59DA076A0(Vehicle vehicle, int p1, float p2) // 0x5D96CFB59DA076A0  b2060</code>
 +
 +<code>p1: 0..16</code>
 +==== PLAY_CAM_ANIM ====
 +<code cpp>BOOL CAM::PLAY_CAM_ANIM(Cam cam, const char* animName, const char* animDictionary, float x, float y, float z, float xRot, float yRot, float zRot, BOOL p9, int p10) // 0x9A2D0FB2E7852392 0xBCEFB87E b323</code>
 +
 +<code>Atleast one time in a script for the zRot Rockstar uses GET_ENTITY_HEADING to help fill the parameter.
 +
 +p9 is unknown at this time.
 +p10 throughout all the X360 Scripts is always 2.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== IS_CAM_PLAYING_ANIM ====
 +<code cpp>BOOL CAM::IS_CAM_PLAYING_ANIM(Cam cam, const char* animName, const char* animDictionary) // 0xC90621D8A0CEECF2 0xB998CB49 b323</code>
 +
 +==== SET_CAM_ANIM_CURRENT_PHASE ====
 +<code cpp>void CAM::SET_CAM_ANIM_CURRENT_PHASE(Cam cam, float phase) // 0x4145A4C44FF3B5A6 0x3CB1D17F b323</code>
 +
 +==== GET_CAM_ANIM_CURRENT_PHASE ====
 +<code cpp>float CAM::GET_CAM_ANIM_CURRENT_PHASE(Cam cam) // 0xA10B2DB49E92A6B0 0x345F72D0 b323</code>
 +
 +==== PLAY_SYNCHRONIZED_CAM_ANIM ====
 +<code cpp>BOOL CAM::PLAY_SYNCHRONIZED_CAM_ANIM(Any p0, Any p1, const char* animName, const char* animDictionary) // 0xE32EFE9AB4A9AA0C 0x9458459E b323</code>
 +
 +<code>Examples:
 +
 +CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_2734, NETWORK::_02C40BF885C567B6(l_2739), "PLAYER_EXIT_L_CAM", "mp_doorbell");
 +
 +CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_F0D[7/*1*/], l_F4D[15/*1*/], "ah3b_attackheli_cam2", "missheistfbi3b_helicrash");</code>
 +==== SET_FLY_CAM_HORIZONTAL_RESPONSE ====
 +<code cpp>void CAM::SET_FLY_CAM_HORIZONTAL_RESPONSE(Cam cam, float p1, float p2, float p3) // 0x503F5920162365B2 0x56F9ED27 b323</code>
 +
 +==== _SET_FLY_CAM_VERTICAL_SPEED_MULTIPLIER ====
 +<code cpp>void CAM::_SET_FLY_CAM_VERTICAL_SPEED_MULTIPLIER(Cam cam, float p1, float p2, float p3) // 0xE827B9382CFB41BA  b791</code>
 +
 +==== SET_FLY_CAM_MAX_HEIGHT ====
 +<code cpp>void CAM::SET_FLY_CAM_MAX_HEIGHT(Cam cam, float height) // 0xF9D02130ECDD1D77 0x71570DBA b323</code>
 +
 +==== SET_FLY_CAM_COORD_AND_CONSTRAIN ====
 +<code cpp>void CAM::SET_FLY_CAM_COORD_AND_CONSTRAIN(Cam cam, float x, float y, float z) // 0xC91C6C55199308CA 0x60B345DE b323</code>
 +
 +==== _0xC8B5C4A79CC18B94 ====
 +<code cpp>void CAM::_0xC8B5C4A79CC18B94(Cam cam) // 0xC8B5C4A79CC18B94 0x44473EFC b323</code>
 +
 +==== _0x5C48A1D6E3B33179 ====
 +<code cpp>BOOL CAM::_0x5C48A1D6E3B33179(Cam cam) // 0x5C48A1D6E3B33179 0xDA931D65 b323</code>
 +
 +<code>W*</code>
 +==== IS_SCREEN_FADED_OUT ====
 +<code cpp>BOOL CAM::IS_SCREEN_FADED_OUT() // 0xB16FCE9DDC7BA182 0x9CAA05FA b323</code>
 +
 +==== IS_SCREEN_FADED_IN ====
 +<code cpp>BOOL CAM::IS_SCREEN_FADED_IN() // 0x5A859503B0C08678 0x4F37276D b323</code>
 +
 +==== IS_SCREEN_FADING_OUT ====
 +<code cpp>BOOL CAM::IS_SCREEN_FADING_OUT() // 0x797AC7CB535BA28F 0x79275A57 b323</code>
 +
 +==== IS_SCREEN_FADING_IN ====
 +<code cpp>BOOL CAM::IS_SCREEN_FADING_IN() // 0x5C544BC6C57AC575 0xC7C82800 b323</code>
 +
 +==== DO_SCREEN_FADE_IN ====
 +<code cpp>void CAM::DO_SCREEN_FADE_IN(int duration) // 0xD4E8E24955024033 0x66C1BDEE b323</code>
 +
 +<code>Fades the screen in.
 +
 +duration: The time the fade should take, in milliseconds.</code>
 +==== DO_SCREEN_FADE_OUT ====
 +<code cpp>void CAM::DO_SCREEN_FADE_OUT(int duration) // 0x891B5B39AC6302AF 0x89D01805 b323</code>
 +
 +<code>Fades the screen out.
 +
 +duration: The time the fade should take, in milliseconds.</code>
 +==== SET_WIDESCREEN_BORDERS ====
 +<code cpp>void CAM::SET_WIDESCREEN_BORDERS(BOOL p0, int p1) // 0xDCD4EA924F42D01A 0x1A75DC9A b323</code>
 +
 +==== _0x4879E4FE39074CDF ====
 +<code cpp>BOOL CAM::_0x4879E4FE39074CDF() // 0x4879E4FE39074CDF  b372</code>
 +
 +<code>A*</code>
 +==== GET_GAMEPLAY_CAM_COORD ====
 +<code cpp>Vector3 CAM::GET_GAMEPLAY_CAM_COORD() // 0x14D6F5678D8F1B37 0x9388CF79 b323</code>
 +
 +==== GET_GAMEPLAY_CAM_ROT ====
 +<code cpp>Vector3 CAM::GET_GAMEPLAY_CAM_ROT(int rotationOrder) // 0x837765A25378F0BB 0x13A010B5 b323</code>
 +
 +<code>p0 dosen't seem to change much, I tried it with 0, 1, 2:
 +0-Pitch(X): -70.000092
 +0-Roll(Y): -0.000001
 +0-Yaw(Z): -43.886459
 +1-Pitch(X): -70.000092
 +1-Roll(Y): -0.000001
 +1-Yaw(Z): -43.886463
 +2-Pitch(X): -70.000092
 +2-Roll(Y): -0.000002
 +2-Yaw(Z): -43.886467</code>
 +==== GET_GAMEPLAY_CAM_FOV ====
 +<code cpp>float CAM::GET_GAMEPLAY_CAM_FOV() // 0x65019750A0324133 0x4D6B3BFA b323</code>
 +
 +==== _0x487A82C650EB7799 ====
 +<code cpp>void CAM::_0x487A82C650EB7799(float p0) // 0x487A82C650EB7799 0xA6E73135 b323</code>
 +
 +<code>some camera effect that is used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled.</code>
 +==== _0x0225778816FDC28C ====
 +<code cpp>void CAM::_0x0225778816FDC28C(float p0) // 0x0225778816FDC28C 0x1126E37C b323</code>
 +
 +<code>some camera effect that is (also) used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled. Possibly a cinematic or script-cam version of _0x487A82C650EB7799</code>
 +==== GET_GAMEPLAY_CAM_RELATIVE_HEADING ====
 +<code cpp>float CAM::GET_GAMEPLAY_CAM_RELATIVE_HEADING() // 0x743607648ADD4587 0xCAF839C2 b323</code>
 +
 +==== SET_GAMEPLAY_CAM_RELATIVE_HEADING ====
 +<code cpp>void CAM::SET_GAMEPLAY_CAM_RELATIVE_HEADING(float heading) // 0xB4EC2312F4E5B1F1 0x20C6217C b323</code>
 +
 +<code>Sets the camera position relative to heading in float from -360 to +360.
 +
 +Heading is alwyas 0 in aiming camera.</code>
 +==== GET_GAMEPLAY_CAM_RELATIVE_PITCH ====
 +<code cpp>float CAM::GET_GAMEPLAY_CAM_RELATIVE_PITCH() // 0x3A6867B4845BEDA2 0xFC5A4946 b323</code>
 +
 +==== SET_GAMEPLAY_CAM_RELATIVE_PITCH ====
 +<code cpp>void CAM::SET_GAMEPLAY_CAM_RELATIVE_PITCH(float angle, float scalingFactor) // 0x6D0858B8EDFD2B7D 0x6381B963 b323</code>
 +
 +<code>This native sets the camera's pitch (rotation on the x-axis).</code>
 +==== _SET_GAMEPLAY_CAM_RELATIVE_ROTATION ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_RELATIVE_ROTATION(float roll, float pitch, float yaw) // 0x48608C3464F58AB4  b505</code>
 +
 +==== _0x28B022A17B068A3A ====
 +<code cpp>void CAM::_0x28B022A17B068A3A(float p0, float p1) // 0x28B022A17B068A3A  b1734</code>
 +
 +<code>F*</code>
 +==== _SET_GAMEPLAY_CAM_RAW_YAW ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_RAW_YAW(float yaw) // 0x103991D4A307D472  b323</code>
 +
 +<code>Does nothing</code>
 +==== _SET_GAMEPLAY_CAM_RAW_PITCH ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_RAW_PITCH(float pitch) // 0x759E13EBC1C15C5A  b323</code>
 +
 +==== _0x469F2ECDEC046337 ====
 +<code cpp>void CAM::_0x469F2ECDEC046337(BOOL p0) // 0x469F2ECDEC046337  b323</code>
 +
 +==== SHAKE_GAMEPLAY_CAM ====
 +<code cpp>void CAM::SHAKE_GAMEPLAY_CAM(const char* shakeName, float intensity) // 0xFD55E49555E017CF 0xF2EFE660 b323</code>
 +
 +<code>Possible shake types (updated b617d):
 +
 +DEATH_FAIL_IN_EFFECT_SHAKE
 +DRUNK_SHAKE
 +FAMILY5_DRUG_TRIP_SHAKE
 +HAND_SHAKE
 +JOLT_SHAKE
 +LARGE_EXPLOSION_SHAKE
 +MEDIUM_EXPLOSION_SHAKE
 +SMALL_EXPLOSION_SHAKE
 +ROAD_VIBRATION_SHAKE
 +SKY_DIVING_SHAKE
 +VIBRATE_SHAKE
 +
 +Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json</code>
 +==== IS_GAMEPLAY_CAM_SHAKING ====
 +<code cpp>BOOL CAM::IS_GAMEPLAY_CAM_SHAKING() // 0x016C090630DF1F89 0x3457D681 b323</code>
 +
 +==== SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE ====
 +<code cpp>void CAM::SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE(float amplitude) // 0xA87E00932DB4D85D 0x9219D44A b323</code>
 +
 +<code>Sets the amplitude for the gameplay (i.e. 3rd or 1st) camera to shake. Used in script "drunk_controller.ysc.c4" to simulate making the player drunk.</code>
 +==== STOP_GAMEPLAY_CAM_SHAKING ====
 +<code cpp>void CAM::STOP_GAMEPLAY_CAM_SHAKING(BOOL p0) // 0x0EF93E9F3D08C178 0xFD569E4E b323</code>
 +
 +==== SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE ====
 +<code cpp>void CAM::SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(Ped ped) // 0x8BBACBF51DA047A8 0x7D3007A2 b323</code>
 +
 +==== IS_GAMEPLAY_CAM_RENDERING ====
 +<code cpp>BOOL CAM::IS_GAMEPLAY_CAM_RENDERING() // 0x39B5D1B10383F0C8 0x0EF276DA b323</code>
 +
 +<code>Examples when this function will return 0 are:
 +- During busted screen.
 +- When player is coming out from a hospital.
 +- When player is coming out from a police station.
 +- When player is buying gun from AmmuNation.</code>
 +==== _0x3044240D2E0FA842 ====
 +<code cpp>BOOL CAM::_0x3044240D2E0FA842() // 0x3044240D2E0FA842 0xC0B00C20 b323</code>
 +
 +==== _0x705A276EBFF3133D ====
 +<code cpp>BOOL CAM::_0x705A276EBFF3133D() // 0x705A276EBFF3133D 0x60C23785 b323</code>
 +
 +==== _0xDB90C6CCA48940F1 ====
 +<code cpp>void CAM::_0xDB90C6CCA48940F1(BOOL p0) // 0xDB90C6CCA48940F1 0x20BFF6E5 b323</code>
 +
 +==== _ENABLE_CROSSHAIR_THIS_FRAME ====
 +<code cpp>void CAM::_ENABLE_CROSSHAIR_THIS_FRAME() // 0xEA7F0AD7E9BA676F 0xA61FF9AC b323</code>
 +
 +<code>Shows the crosshair even if it wouldn't show normally. Only works for one frame, so make sure to call it repeatedly.
 +
 +DISABLE_*</code>
 +==== IS_GAMEPLAY_CAM_LOOKING_BEHIND ====
 +<code cpp>BOOL CAM::IS_GAMEPLAY_CAM_LOOKING_BEHIND() // 0x70FDA869F3317EA9 0x33C83F17 b323</code>
 +
 +==== _DISABLE_CAM_COLLISION_FOR_ENTITY ====
 +<code cpp>void CAM::_DISABLE_CAM_COLLISION_FOR_ENTITY(Entity entity) // 0x2AED6301F67007D5 0x2701A9AD b323</code>
 +
 +==== DISABLE_CAM_COLLISION_FOR_OBJECT ====
 +<code cpp>void CAM::DISABLE_CAM_COLLISION_FOR_OBJECT(Entity entity) // 0x49482F9FCD825AAA 0xC4736ED3 b323</code>
 +
 +==== _0xA7092AFE81944852 ====
 +<code cpp>void CAM::_0xA7092AFE81944852() // 0xA7092AFE81944852  b2189</code>
 +
 +==== _0xFD3151CD37EA2245 ====
 +<code cpp>void CAM::_0xFD3151CD37EA2245(Entity entity) // 0xFD3151CD37EA2245  b323</code>
 +
 +==== _0xB1381B97F70C7B30 ====
 +<code cpp>void CAM::_0xB1381B97F70C7B30() // 0xB1381B97F70C7B30  b1180</code>
 +
 +<code>Sets some flag on cinematic camera</code>
 +==== _0xDD79DF9F4D26E1C9 ====
 +<code cpp>void CAM::_0xDD79DF9F4D26E1C9() // 0xDD79DF9F4D26E1C9 0x6B0E9D57 b323</code>
 +
 +==== IS_SPHERE_VISIBLE ====
 +<code cpp>BOOL CAM::IS_SPHERE_VISIBLE(float x, float y, float z, float radius) // 0xE33D59DA70B58FDF 0xDD1329E2 b323</code>
 +
 +==== IS_FOLLOW_PED_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::IS_FOLLOW_PED_CAM_ACTIVE() // 0xC6D3D26810C8E0F9 0x9F9E856C b323</code>
 +
 +==== SET_FOLLOW_PED_CAM_THIS_UPDATE ====
 +<code cpp>BOOL CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE(const char* camName, int p1) // 0x44A113DD6FFC48D1 0x1425F6AC b323</code>
 +
 +<code>From the scripts:
 +
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ATTACHED_TO_ROPE_CAMERA", 0);
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ON_EXILE1_LADDER_CAMERA", 1500);
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 3000);
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_FAMILY5_CAMERA", 0);
 +CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);</code>
 +==== _0x271401846BD26E92 ====
 +<code cpp>void CAM::_0x271401846BD26E92(BOOL p0, BOOL p1) // 0x271401846BD26E92 0x8DC53629 b323</code>
 +
 +==== _0xC8391C309684595A ====
 +<code cpp>void CAM::_0xC8391C309684595A() // 0xC8391C309684595A 0x1F9DE6E4 b323</code>
 +
 +==== _CLAMP_GAMEPLAY_CAM_YAW ====
 +<code cpp>void CAM::_CLAMP_GAMEPLAY_CAM_YAW(float minimum, float maximum) // 0x8F993D26E0CA5E8E 0x749909AC b323</code>
 +
 +<code>minimum: Degrees between -180f and 180f.
 +maximum: Degrees between -180f and 180f.
 +
 +Clamps the gameplay camera's current yaw.
 +
 +Eg. _CLAMP_GAMEPLAY_CAM_YAW(0.0f, 0.0f) will set the horizontal angle directly behind the player.</code>
 +==== _CLAMP_GAMEPLAY_CAM_PITCH ====
 +<code cpp>void CAM::_CLAMP_GAMEPLAY_CAM_PITCH(float minimum, float maximum) // 0xA516C198B7DCA1E1 0xFA3A16E7 b323</code>
 +
 +<code>minimum: Degrees between -90f and 90f.
 +maximum: Degrees between -90f and 90f.
 +
 +Clamps the gameplay camera's current pitch.
 +
 +Eg. _CLAMP_GAMEPLAY_CAM_PITCH(0.0f, 0.0f) will set the vertical angle directly behind the player.</code>
 +==== _ANIMATE_GAMEPLAY_CAM_ZOOM ====
 +<code cpp>void CAM::_ANIMATE_GAMEPLAY_CAM_ZOOM(float p0, float distance) // 0xDF2E1F7742402E81 0x77340650 b323</code>
 +
 +<code>Seems to animate the gameplay camera zoom.
 +
 +Eg. _ANIMATE_GAMEPLAY_CAM_ZOOM(1f, 1000f);
 +will animate the camera zooming in from 1000 meters away.
 +
 +Game scripts use it like this:
 +
 +// Setting this to 1 prevents V key from changing zoom
 +PLAYER::SET_PLAYER_FORCED_ZOOM(PLAYER::PLAYER_ID(), 1);
 +
 +// These restrict how far you can move cam up/down left/right
 +CAM::_CLAMP_GAMEPLAY_CAM_YAW(-20f, 50f);
 +CAM::_CLAMP_GAMEPLAY_CAM_PITCH(-60f, 0f);
 +
 +CAM::_ANIMATE_GAMEPLAY_CAM_ZOOM(1f, 1f);</code>
 +==== SET_IN_VEHICLE_CAM_STATE_THIS_UPDATE ====
 +<code cpp>void CAM::SET_IN_VEHICLE_CAM_STATE_THIS_UPDATE(Vehicle p0, int p1) // 0xE9EA16D6E54CDCA4 0x4B22C5CB b323</code>
 +
 +==== _DISABLE_FIRST_PERSON_CAM_THIS_FRAME ====
 +<code cpp>void CAM::_DISABLE_FIRST_PERSON_CAM_THIS_FRAME() // 0xDE2EF5DA284CC8DF  b323</code>
 +
 +<code>Disables first person camera for the current frame.
 +
 +Found in decompiled scripts:
 +GRAPHICS::DRAW_DEBUG_TEXT_2D("Disabling First Person Cam", 0.5, 0.8, 0.0, 0, 0, 255, 255);
 +CAM::_DE2EF5DA284CC8DF();</code>
 +==== _0x59424BD75174C9B1 ====
 +<code cpp>void CAM::_0x59424BD75174C9B1() // 0x59424BD75174C9B1  b323</code>
 +
 +==== _0x9F97DA93681F87EA ====
 +<code cpp>void CAM::_0x9F97DA93681F87EA() // 0x9F97DA93681F87EA  b1734</code>
 +
 +<code>B*</code>
 +==== GET_FOLLOW_PED_CAM_ZOOM_LEVEL ====
 +<code cpp>int CAM::GET_FOLLOW_PED_CAM_ZOOM_LEVEL() // 0x33E6C8EFD0CD93E9 0x57583DF1 b323</code>
 +
 +==== GET_FOLLOW_PED_CAM_VIEW_MODE ====
 +<code cpp>int CAM::GET_FOLLOW_PED_CAM_VIEW_MODE() // 0x8D4D46230B2C353A 0xA65FF946 b323</code>
 +
 +<code>Returns
 +0 - Third Person Close
 +1 - Third Person Mid
 +2 - Third Person Far
 +4 - First Person</code>
 +==== SET_FOLLOW_PED_CAM_VIEW_MODE ====
 +<code cpp>void CAM::SET_FOLLOW_PED_CAM_VIEW_MODE(int viewMode) // 0x5A4F9EDF1673F704 0x495DBE8D b323</code>
 +
 +<code>Sets the type of Player camera:
 +
 +0 - Third Person Close
 +1 - Third Person Mid
 +2 - Third Person Far
 +4 - First Person</code>
 +==== IS_FOLLOW_VEHICLE_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::IS_FOLLOW_VEHICLE_CAM_ACTIVE() // 0xCBBDE6D335D6D496 0x8DD49B77 b323</code>
 +
 +==== _0x91EF6EE6419E5B97 ====
 +<code cpp>void CAM::_0x91EF6EE6419E5B97(BOOL p0) // 0x91EF6EE6419E5B97 0x9DB5D391 b323</code>
 +
 +==== _0x9DFE13ECDC1EC196 ====
 +<code cpp>void CAM::_0x9DFE13ECDC1EC196(BOOL p0, BOOL p1) // 0x9DFE13ECDC1EC196 0x92302899 b323</code>
 +
 +<code>SET_FOLLOW_*</code>
 +==== _0x79C0E43EB9B944E2 ====
 +<code cpp>BOOL CAM::_0x79C0E43EB9B944E2(Hash hash) // 0x79C0E43EB9B944E2  b1734</code>
 +
 +==== GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL ====
 +<code cpp>int CAM::GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() // 0xEE82280AB767B690 0x8CD67DE3 b323</code>
 +
 +==== SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL ====
 +<code cpp>void CAM::SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(int zoomLevel) // 0x19464CB6E4078C8A 0x8F55EBBE b323</code>
 +
 +==== GET_FOLLOW_VEHICLE_CAM_VIEW_MODE ====
 +<code cpp>int CAM::GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() // 0xA4FF579AC0E3AAAE 0xA4B4DB03 b323</code>
 +
 +<code>Returns the type of camera:
 +
 +0 - Third Person Close
 +1 - Third Person Mid
 +2 - Third Person Far
 +4 - First Person</code>
 +==== SET_FOLLOW_VEHICLE_CAM_VIEW_MODE ====
 +<code cpp>void CAM::SET_FOLLOW_VEHICLE_CAM_VIEW_MODE(int viewMode) // 0xAC253D7842768F48 0xC4FBBBD3 b323</code>
 +
 +<code>Sets the type of Player camera in vehicles:
 +
 +0 - Third Person Close
 +1 - Third Person Mid
 +2 - Third Person Far
 +4 - First Person</code>
 +==== _0xEE778F8C7E1142E2 ====
 +<code cpp>Any CAM::_0xEE778F8C7E1142E2(Any p0) // 0xEE778F8C7E1142E2 0xF3B148A6 b323</code>
 +
 +<code>interprets the result of CAM::_0x19CAFA3C87F7C2FF()
 +
 +example: // checks if you're currently in first person
 +if ((CAM::_EE778F8C7E1142E2(CAM::_19CAFA3C87F7C2FF()) == 4) && (!__463_$28ED382849B17AFC())) {
 +HUD::_FDEC055AB549E328();
 +HUD::_SET_NOTIFICATION_TEXT_ENTRY("REC_FEED_WAR");
 +l_CE[0/*1*/] = HUD::_DRAW_NOTIFICATION(0, 1);
 +}
 +</code>
 +==== _0x2A2173E46DAECD12 ====
 +<code cpp>void CAM::_0x2A2173E46DAECD12(Any p0, Any p1) // 0x2A2173E46DAECD12 0x1DEBCB45 b323</code>
 +
 +==== _0x19CAFA3C87F7C2FF ====
 +<code cpp>Any CAM::_0x19CAFA3C87F7C2FF() // 0x19CAFA3C87F7C2FF  b323</code>
 +
 +<code>Seems to return the current type of view
 +example: // checks if you're currently in first person
 +if ((CAM::_EE778F8C7E1142E2(CAM::_19CAFA3C87F7C2FF()) == 4) && (!__463_$28ED382849B17AFC())) {
 +    HUD::_FDEC055AB549E328();
 +    HUD::_SET_NOTIFICATION_TEXT_ENTRY("REC_FEED_WAR");
 +    l_CE[0/*1*/] = HUD::_DRAW_NOTIFICATION(0, 1);
 +}</code>
 +==== _USE_STUNT_CAMERA_THIS_FRAME ====
 +<code cpp>void CAM::_USE_STUNT_CAMERA_THIS_FRAME() // 0x6493CF69859B116A  b791</code>
 +
 +==== _SET_GAMEPLAY_CAM_HASH ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_HASH(const char* camName) // 0x425A920FDB9A0DDA  b1180</code>
 +
 +<code>Sets gameplay camera to hash</code>
 +==== _0x0AA27680A0BD43FA ====
 +<code cpp>void CAM::_0x0AA27680A0BD43FA() // 0x0AA27680A0BD43FA  b1103</code>
 +
 +==== _SET_FOLLOW_TURRET_SEAT_CAM ====
 +<code cpp>void CAM::_SET_FOLLOW_TURRET_SEAT_CAM(int seatIndex) // 0x5C90CAB09951A12F  b1365</code>
 +
 +==== IS_AIM_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::IS_AIM_CAM_ACTIVE() // 0x68EDDA28A5976D07 0xC24B4F6F b323</code>
 +
 +==== _IS_AIM_CAM_THIRD_PERSON_ACTIVE ====
 +<code cpp>BOOL CAM::_IS_AIM_CAM_THIRD_PERSON_ACTIVE() // 0x74BD83EA840F6BC9 0x8F320DE4 b323</code>
 +
 +<code>IS_A*</code>
 +==== IS_FIRST_PERSON_AIM_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::IS_FIRST_PERSON_AIM_CAM_ACTIVE() // 0x5E346D934122613F 0xD6280468 b323</code>
 +
 +==== DISABLE_AIM_CAM_THIS_UPDATE ====
 +<code cpp>void CAM::DISABLE_AIM_CAM_THIS_UPDATE() // 0x1A31FE0049E542F6 0x1BAA7182 b323</code>
 +
 +==== GET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR ====
 +<code cpp>float CAM::GET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR() // 0x7EC52CC40597D170 0x33951005 b323</code>
 +
 +==== SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR ====
 +<code cpp>void CAM::SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(float zoomFactor) // 0x70894BD0915C5BCA 0x9F4AF763 b323</code>
 +
 +==== _0xCED08CBE8EBB97C7 ====
 +<code cpp>void CAM::_0xCED08CBE8EBB97C7(float p0, float p1) // 0xCED08CBE8EBB97C7 0x68BA0730 b323</code>
 +
 +==== _0x2F7F2B26DD3F18EE ====
 +<code cpp>void CAM::_0x2F7F2B26DD3F18EE(float p0, float p1) // 0x2F7F2B26DD3F18EE 0x2F29F0D5 b323</code>
 +
 +==== _SET_FIRST_PERSON_CAM_PITCH_RANGE ====
 +<code cpp>void CAM::_SET_FIRST_PERSON_CAM_PITCH_RANGE(float p0, float p1) // 0xBCFC632DB7673BF0 0x76DAC96C b323</code>
 +
 +==== SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE ====
 +<code cpp>void CAM::SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE(float p0) // 0x0AF7B437918103B3 0x0E21069D b323</code>
 +
 +==== SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE ====
 +<code cpp>void CAM::SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE(float p0) // 0x42156508606DE65E 0x71E9C63E b323</code>
 +
 +==== _0x4008EDF7D6E48175 ====
 +<code cpp>void CAM::_0x4008EDF7D6E48175(BOOL p0) // 0x4008EDF7D6E48175 0xD1EEBC45 b323</code>
 +
 +==== _0x380B4968D1E09E55 ====
 +<code cpp>void CAM::_0x380B4968D1E09E55() // 0x380B4968D1E09E55  b1290</code>
 +
 +==== GET_FINAL_RENDERED_CAM_COORD ====
 +<code cpp>Vector3 CAM::GET_FINAL_RENDERED_CAM_COORD() // 0xA200EB1EE790F448 0x9C84BDA0 b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_ROT ====
 +<code cpp>Vector3 CAM::GET_FINAL_RENDERED_CAM_ROT(int rotationOrder) // 0x5B4E4C817FCC2DFB 0x1FFBEFC5 b323</code>
 +
 +<code>p0 seems to consistently be 2 across scripts
 +
 +Function is called faily often by CAM::CREATE_CAM_WITH_PARAMS</code>
 +==== GET_FINAL_RENDERED_IN_WHEN_FRIENDLY_ROT ====
 +<code cpp>Vector3 CAM::GET_FINAL_RENDERED_IN_WHEN_FRIENDLY_ROT(Player player, int rotationOrder) // 0x26903D9CD1175F2C 0xACADF916 b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_FOV ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_FOV() // 0x80EC114669DAEFF4 0x721B763B b323</code>
 +
 +<code>Gets some camera fov</code>
 +==== GET_FINAL_RENDERED_IN_WHEN_FRIENDLY_FOV ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_IN_WHEN_FRIENDLY_FOV(Player player) // 0x5F35F6732C3FBBA0 0x23E3F106 b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_NEAR_CLIP ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_NEAR_CLIP() // 0xD0082607100D7193 0x457AE195 b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_FAR_CLIP ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_FAR_CLIP() // 0xDFC8CBC606FDB0FC 0x46CB3A49 b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_NEAR_DOF ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_NEAR_DOF() // 0xA03502FC581F7D9B 0x19297A7A b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_FAR_DOF ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_FAR_DOF() // 0x9780F32BCAF72431 0xF24777CA b323</code>
 +
 +==== GET_FINAL_RENDERED_CAM_MOTION_BLUR_STRENGTH ====
 +<code cpp>float CAM::GET_FINAL_RENDERED_CAM_MOTION_BLUR_STRENGTH() // 0x162F9D995753DC19 0x38992E83 b323</code>
 +
 +==== SET_GAMEPLAY_COORD_HINT ====
 +<code cpp>void CAM::SET_GAMEPLAY_COORD_HINT(float x, float y, float z, int duration, int blendOutDuration, int blendInDuration, int unk) // 0xD51ADCD2D8BC0FB3 0xF27483C9 b323</code>
 +
 +==== SET_GAMEPLAY_PED_HINT ====
 +<code cpp>void CAM::SET_GAMEPLAY_PED_HINT(Ped p0, float x1, float y1, float z1, BOOL p4, Any p5, Any p6, Any p7) // 0x2B486269ACD548D3 0x7C27343E b323</code>
 +
 +==== SET_GAMEPLAY_VEHICLE_HINT ====
 +<code cpp>void CAM::SET_GAMEPLAY_VEHICLE_HINT(Vehicle vehicle, float offsetX, float offsetY, float offsetZ, BOOL p4, int time, int easeInTime, int easeOutTime) // 0xA2297E18F3E71C2E 0x2C9A11D8 b323</code>
 +
 +<code>Focuses the camera on the specified vehicle.</code>
 +==== SET_GAMEPLAY_OBJECT_HINT ====
 +<code cpp>void CAM::SET_GAMEPLAY_OBJECT_HINT(Any p0, float p1, float p2, float p3, BOOL p4, Any p5, Any p6, Any p7) // 0x83E87508A2CA2AC6 0x2ED5E2F8 b323</code>
 +
 +==== SET_GAMEPLAY_ENTITY_HINT ====
 +<code cpp>void CAM::SET_GAMEPLAY_ENTITY_HINT(Entity entity, float xOffset, float yOffset, float zOffset, BOOL p4, int p5, int p6, int p7, Any p8) // 0x189E955A8313E298 0x66C32306 b323</code>
 +
 +<code>p6 & p7 - possibly length or time</code>
 +==== IS_GAMEPLAY_HINT_ACTIVE ====
 +<code cpp>BOOL CAM::IS_GAMEPLAY_HINT_ACTIVE() // 0xE520FF1AD2785B40 0xAD8DA205 b323</code>
 +
 +==== STOP_GAMEPLAY_HINT ====
 +<code cpp>void CAM::STOP_GAMEPLAY_HINT(BOOL p0) // 0xF46C581C61718916 0x1BC28B7B b323</code>
 +
 +==== _0xCCD078C2665D2973 ====
 +<code cpp>void CAM::_0xCCD078C2665D2973(BOOL p0) // 0xCCD078C2665D2973 0xCAFEE798 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== _0x247ACBC4ABBC9D1C ====
 +<code cpp>void CAM::_0x247ACBC4ABBC9D1C(BOOL p0) // 0x247ACBC4ABBC9D1C  b323</code>
 +
 +==== _0xBF72910D0F26F025 ====
 +<code cpp>Any CAM::_0xBF72910D0F26F025() // 0xBF72910D0F26F025  b323</code>
 +
 +==== SET_GAMEPLAY_HINT_FOV ====
 +<code cpp>void CAM::SET_GAMEPLAY_HINT_FOV(float FOV) // 0x513403FB9C56211F 0x96FD173B b323</code>
 +
 +==== SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR ====
 +<code cpp>void CAM::SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(float value) // 0xF8BDBF3D573049A1 0x72E8CD3A b323</code>
 +
 +<code>Old name: _SET_GAMEPLAY_HINT_ANIM_OFFSETZ</code>
 +==== SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET ====
 +<code cpp>void CAM::SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET(float value) // 0xD1F8363DFAD03848 0x79472AE3 b323</code>
 +
 +<code>Old name: _SET_GAMEPLAY_HINT_ANGLE</code>
 +==== _SET_GAMEPLAY_HINT_ANIM_OFFSETX ====
 +<code cpp>void CAM::_SET_GAMEPLAY_HINT_ANIM_OFFSETX(float xOffset) // 0x5D7B620DAE436138 0xFC7464A0 b323</code>
 +
 +==== _SET_GAMEPLAY_HINT_ANIM_OFFSETY ====
 +<code cpp>void CAM::_SET_GAMEPLAY_HINT_ANIM_OFFSETY(float yOffset) // 0xC92717EF615B6704 0x3554AA0E b323</code>
 +
 +==== _SET_GAMEPLAY_HINT_ANIM_CLOSEUP ====
 +<code cpp>void CAM::_SET_GAMEPLAY_HINT_ANIM_CLOSEUP(BOOL toggle) // 0xE3433EADAAF7EE40 0x2F0CE859 b323</code>
 +
 +==== SET_CINEMATIC_BUTTON_ACTIVE ====
 +<code cpp>void CAM::SET_CINEMATIC_BUTTON_ACTIVE(BOOL p0) // 0x51669F7D1FB53D9F 0x3FBC5D00 b323</code>
 +
 +==== IS_CINEMATIC_CAM_RENDERING ====
 +<code cpp>BOOL CAM::IS_CINEMATIC_CAM_RENDERING() // 0xB15162CB5826E9E8 0x80471AD9 b323</code>
 +
 +==== SHAKE_CINEMATIC_CAM ====
 +<code cpp>void CAM::SHAKE_CINEMATIC_CAM(const char* p0, float p1) // 0xDCE214D9ED58F3CF 0x61815F31 b323</code>
 +
 +<code>p0 argument found in the b617d scripts: "DRUNK_SHAKE"
 +
 +Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json</code>
 +==== IS_CINEMATIC_CAM_SHAKING ====
 +<code cpp>BOOL CAM::IS_CINEMATIC_CAM_SHAKING() // 0xBBC08F6B4CB8FF0A 0x8376D939 b323</code>
 +
 +==== SET_CINEMATIC_CAM_SHAKE_AMPLITUDE ====
 +<code cpp>void CAM::SET_CINEMATIC_CAM_SHAKE_AMPLITUDE(float p0) // 0xC724C701C30B2FE7 0x67510C4B b323</code>
 +
 +==== STOP_CINEMATIC_CAM_SHAKING ====
 +<code cpp>void CAM::STOP_CINEMATIC_CAM_SHAKING(BOOL p0) // 0x2238E588E588A6D7 0x71C12904 b323</code>
 +
 +==== _DISABLE_VEHICLE_FIRST_PERSON_CAM_THIS_FRAME ====
 +<code cpp>void CAM::_DISABLE_VEHICLE_FIRST_PERSON_CAM_THIS_FRAME() // 0xADFF1B2A555F5FBA 0x5AC6DAC9 b323</code>
 +
 +==== _0x62ECFCFDEE7885D6 ====
 +<code cpp>void CAM::_0x62ECFCFDEE7885D6() // 0x62ECFCFDEE7885D6 0x837F8581 b323</code>
 +
 +==== _INVALIDATE_VEHICLE_IDLE_CAM ====
 +<code cpp>void CAM::_INVALIDATE_VEHICLE_IDLE_CAM() // 0x9E4CFFF989258472 0x65DDE8AF b323</code>
 +
 +<code>Resets the vehicle idle camera timer. Calling this in a loop will disable the idle camera.</code>
 +==== INVALIDATE_IDLE_CAM ====
 +<code cpp>void CAM::INVALIDATE_IDLE_CAM() // 0xF4F2C0D4EE209E20 0xD75CDD75 b323</code>
 +
 +<code>Resets the idle camera timer. Calling that in a loop once every few seconds is enough to disable the idle cinematic camera.</code>
 +==== IS_CINEMATIC_IDLE_CAM_RENDERING ====
 +<code cpp>BOOL CAM::IS_CINEMATIC_IDLE_CAM_RENDERING() // 0xCA9D2AA3E326D720 0x96A07066 b323</code>
 +
 +==== _IS_IN_VEHICLE_CAM_DISABLED ====
 +<code cpp>BOOL CAM::_IS_IN_VEHICLE_CAM_DISABLED() // 0x4F32C0D5A90A9B40  b323</code>
 +
 +==== CREATE_CINEMATIC_SHOT ====
 +<code cpp>void CAM::CREATE_CINEMATIC_SHOT(Any p0, int p1, Any p2, Entity entity) // 0x741B0129D4560F31 0xAC494E35 b323</code>
 +
 +==== IS_CINEMATIC_SHOT_ACTIVE ====
 +<code cpp>BOOL CAM::IS_CINEMATIC_SHOT_ACTIVE(Any p0) // 0xCC9F3371A7C28BC9 0xA4049042 b323</code>
 +
 +==== STOP_CINEMATIC_SHOT ====
 +<code cpp>void CAM::STOP_CINEMATIC_SHOT(Hash p0) // 0x7660C6E75D3A078E 0xD78358C5 b323</code>
 +
 +<code>Only used once in carsteal3 with p0 set to -1096069633 (CAMERA_MAN_SHOT)</code>
 +==== FORCE_CINEMATIC_RENDERING_THIS_UPDATE ====
 +<code cpp>void CAM::FORCE_CINEMATIC_RENDERING_THIS_UPDATE(BOOL p0) // 0xA41BCD7213805AAC 0xFBB85E02 b323</code>
 +
 +==== _0xDC9DA9E8789F5246 ====
 +<code cpp>void CAM::_0xDC9DA9E8789F5246() // 0xDC9DA9E8789F5246 0x4938C82F b323</code>
 +
 +==== SET_CINEMATIC_MODE_ACTIVE ====
 +<code cpp>void CAM::SET_CINEMATIC_MODE_ACTIVE(BOOL toggle) // 0xDCF0754AC3D6FD4E 0x2009E747 b323</code>
 +
 +<code>Toggles the vehicle cinematic cam; requires the player ped to be in a vehicle to work.</code>
 +==== _0x1F2300CB7FA7B7F6 ====
 +<code cpp>Any CAM::_0x1F2300CB7FA7B7F6() // 0x1F2300CB7FA7B7F6 0x6739AD55 b323</code>
 +
 +==== _0x17FCA7199A530203 ====
 +<code cpp>Any CAM::_0x17FCA7199A530203() // 0x17FCA7199A530203  b323</code>
 +
 +==== _0xD7360051C885628B ====
 +<code cpp>Any CAM::_0xD7360051C885628B() // 0xD7360051C885628B  b372</code>
 +
 +==== _IS_CINEMATIC_CAM_ACTIVE ====
 +<code cpp>BOOL CAM::_IS_CINEMATIC_CAM_ACTIVE() // 0xF5F1E89A970B7796  b1493</code>
 +
 +<code>Tests some cinematic camera flags</code>
 +==== _0x7B8A361C1813FBEF ====
 +<code cpp>void CAM::_0x7B8A361C1813FBEF() // 0x7B8A361C1813FBEF  b573</code>
 +
 +==== STOP_CUTSCENE_CAM_SHAKING ====
 +<code cpp>void CAM::STOP_CUTSCENE_CAM_SHAKING() // 0xDB629FFD9285FA06 0xF07D603D b323</code>
 +
 +==== _0x324C5AA411DA7737 ====
 +<code cpp>void CAM::_0x324C5AA411DA7737(Any p0) // 0x324C5AA411DA7737  b323</code>
 +
 +==== _0x12DED8CA53D47EA5 ====
 +<code cpp>void CAM::_0x12DED8CA53D47EA5(float p0) // 0x12DED8CA53D47EA5 0x067BA6F5 b323</code>
 +
 +<code>Hardcoded to only work in multiplayer.</code>
 +==== GET_FOCUS_PED_ON_SCREEN ====
 +<code cpp>Ped CAM::GET_FOCUS_PED_ON_SCREEN(float p0, int p1, float p2, float p3, float p4, float p5, float p6, int p7, int p8) // 0x89215EC747DF244A 0xFD99BE2B b323</code>
 +
 +==== _0x5A43C76F7FC7BA5F ====
 +<code cpp>void CAM::_0x5A43C76F7FC7BA5F() // 0x5A43C76F7FC7BA5F 0xE206C450 b323</code>
 +
 +==== _SET_CAM_EFFECT ====
 +<code cpp>void CAM::_SET_CAM_EFFECT(int p0) // 0x80C8B1846639BB19 0xB06CCD38 b323</code>
 +
 +<code>if p0 is 0, effect is cancelled
 +
 +if p0 is 1, effect zooms in, gradually tilts cam clockwise apx 30 degrees, wobbles slowly. Motion blur is active until cancelled.
 +
 +if p0 is 2, effect immediately tilts cam clockwise apx 30 degrees, begins to wobble slowly, then gradually tilts cam back to normal. The wobbling will continue until the effect is cancelled.</code>
 +==== _0x5C41E6BABC9E2112 ====
 +<code cpp>void CAM::_0x5C41E6BABC9E2112(Any p0) // 0x5C41E6BABC9E2112  b323</code>
 +
 +==== _SET_GAMEPLAY_CAM_VEHICLE_CAMERA ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_VEHICLE_CAMERA(const char* vehicleName) // 0x21E253A7F8DA5DFB  b323</code>
 +
 +<code>From b617 scripts:
 +
 +CAM::_21E253A7F8DA5DFB("DINGHY");
 +CAM::_21E253A7F8DA5DFB("ISSI2");
 +CAM::_21E253A7F8DA5DFB("SPEEDO");</code>
 +==== _SET_GAMEPLAY_CAM_VEHICLE_CAMERA_NAME ====
 +<code cpp>void CAM::_SET_GAMEPLAY_CAM_VEHICLE_CAMERA_NAME(Hash vehicleModel) // 0x11FA5D3479C7DD47  b323</code>
 +
 +==== _0xEAF0FA793D05C592 ====
 +<code cpp>Any CAM::_0xEAF0FA793D05C592() // 0xEAF0FA793D05C592  b323</code>
 +
 +==== _0x62374889A4D59F72 ====
 +<code cpp>void CAM::_0x62374889A4D59F72() // 0x62374889A4D59F72  b877</code>
 +
 +==== _REPLAY_FREE_CAM_GET_MAX_RANGE ====
 +<code cpp>float CAM::_REPLAY_FREE_CAM_GET_MAX_RANGE() // 0x8BFCEB5EA1B161B6  b323</code>
 +
 +
 +===== CLOCK =====
 +==== SET_CLOCK_TIME ====
 +<code cpp>void CLOCK::SET_CLOCK_TIME(int hour, int minute, int second) // 0x47C3B5848C3E45D8 0x26F6AF14 b323</code>
 +
 +<code>SET_CLOCK_TIME(12, 34, 56);</code>
 +==== PAUSE_CLOCK ====
 +<code cpp>void CLOCK::PAUSE_CLOCK(BOOL toggle) // 0x4055E40BD2DBEC1D 0xB02D6124 b323</code>
 +
 +==== ADVANCE_CLOCK_TIME_TO ====
 +<code cpp>void CLOCK::ADVANCE_CLOCK_TIME_TO(int hour, int minute, int second) // 0xC8CA9670B9D83B3B 0x57B8DA7C b323</code>
 +
 +==== ADD_TO_CLOCK_TIME ====
 +<code cpp>void CLOCK::ADD_TO_CLOCK_TIME(int hours, int minutes, int seconds) // 0xD716F30D8C8980E2 0xCC40D20D b323</code>
 +
 +==== GET_CLOCK_HOURS ====
 +<code cpp>int CLOCK::GET_CLOCK_HOURS() // 0x25223CA6B4D20B7F 0x7EF8316F b323</code>
 +
 +<code>Gets the current ingame hour, expressed without zeros. (09:34 will be represented as 9)</code>
 +==== GET_CLOCK_MINUTES ====
 +<code cpp>int CLOCK::GET_CLOCK_MINUTES() // 0x13D2B8ADD79640F2 0x94AAC486 b323</code>
 +
 +<code>Gets the current ingame clock minute.</code>
 +==== GET_CLOCK_SECONDS ====
 +<code cpp>int CLOCK::GET_CLOCK_SECONDS() // 0x494E97C2EF27C470 0x099C927E b323</code>
 +
 +<code>Gets the current ingame clock second. Note that ingame clock seconds change really fast since a day in GTA is only 48 minutes in real life.</code>
 +==== SET_CLOCK_DATE ====
 +<code cpp>void CLOCK::SET_CLOCK_DATE(int day, int month, int year) // 0xB096419DF0D06CE7 0x96891C94 b323</code>
 +
 +==== GET_CLOCK_DAY_OF_WEEK ====
 +<code cpp>int CLOCK::GET_CLOCK_DAY_OF_WEEK() // 0xD972E4BD7AEB235F 0x84E4A289 b323</code>
 +
 +<code>Gets the current day of the week.
 +
 +0: Sunday
 +1: Monday
 +2: Tuesday
 +3: Wednesday
 +4: Thursday
 +5: Friday
 +6: Saturday</code>
 +==== GET_CLOCK_DAY_OF_MONTH ====
 +<code cpp>int CLOCK::GET_CLOCK_DAY_OF_MONTH() // 0x3D10BC92A4DB1D35 0xC7A5ACB7 b323</code>
 +
 +==== GET_CLOCK_MONTH ====
 +<code cpp>int CLOCK::GET_CLOCK_MONTH() // 0xBBC72712E80257A1 0x3C48A3D5 b323</code>
 +
 +==== GET_CLOCK_YEAR ====
 +<code cpp>int CLOCK::GET_CLOCK_YEAR() // 0x961777E64BDAF717 0xB8BECF15 b323</code>
 +
 +==== GET_MILLISECONDS_PER_GAME_MINUTE ====
 +<code cpp>int CLOCK::GET_MILLISECONDS_PER_GAME_MINUTE() // 0x2F8B4D1C595B11DB 0x3B74095C b323</code>
 +
 +==== GET_POSIX_TIME ====
 +<code cpp>void CLOCK::GET_POSIX_TIME(int* year, int* month, int* day, int* hour, int* minute, int* second) // 0xDA488F299A5B164E 0xE15A5281 b323</code>
 +
 +<code>Gets system time as year, month, day, hour, minute and second.
 +
 +Example usage:
 +
 +    int year;
 + int month;
 +    int day;
 +  int hour;
 + int minute;
 +   int second;
 +
 + TIME::GET_POSIX_TIME(&year, &month, &day, &hour, &minute, &second);
 +</code>
 +==== GET_UTC_TIME ====
 +<code cpp>void CLOCK::GET_UTC_TIME(int* year, int* month, int* day, int* hour, int* minute, int* second) // 0x8117E09A19EEF4D3 0xC589CD7D b323</code>
 +
 +<code>Gets current UTC time </code>
 +==== GET_LOCAL_TIME ====
 +<code cpp>void CLOCK::GET_LOCAL_TIME(int* year, int* month, int* day, int* hour, int* minute, int* second) // 0x50C7A99057A69748 0x124BCFA2 b323</code>
 +
 +<code>Gets local system time as year, month, day, hour, minute and second.
 +
 +Example usage:
 +
 +int year;
 +int month;
 +int day;
 +int hour;
 +int minute;
 +int second;
 +or use std::tm struct
 +
 +TIME::GET_LOCAL_TIME(&year, &month, &day, &hour, &minute, &second);
 +</code>
 +
 +===== CUTSCENE =====
 +==== REQUEST_CUTSCENE ====
 +<code cpp>void CUTSCENE::REQUEST_CUTSCENE(const char* cutsceneName, int flags) // 0x7A86743F475D9E09 0xB5977853 b323</code>
 +
 +<code>flags: Usually 8</code>
 +==== REQUEST_CUTSCENE_WITH_PLAYBACK_LIST ====
 +<code cpp>void CUTSCENE::REQUEST_CUTSCENE_WITH_PLAYBACK_LIST(const char* cutsceneName, int playbackFlags, int flags) // 0xC23DE0E91C30B58C 0xD98F656A b323</code>
 +
 +<code>flags: Usually 8
 +
 +playbackFlags: Which scenes should be played.
 +Example: 0x105 (bit 0, 2 and 8 set) will enable scene 1, 3 and 9.</code>
 +==== REMOVE_CUTSCENE ====
 +<code cpp>void CUTSCENE::REMOVE_CUTSCENE() // 0x440AF51A3462B86F 0x8052F533 b323</code>
 +
 +==== HAS_CUTSCENE_LOADED ====
 +<code cpp>BOOL CUTSCENE::HAS_CUTSCENE_LOADED() // 0xC59F528E9AB9F339 0xF9998582 b323</code>
 +
 +==== HAS_THIS_CUTSCENE_LOADED ====
 +<code cpp>BOOL CUTSCENE::HAS_THIS_CUTSCENE_LOADED(const char* cutsceneName) // 0x228D3D94F8A11C3C 0x3C5619F2 b323</code>
 +
 +==== _0x8D9DF6ECA8768583 ====
 +<code cpp>void CUTSCENE::_0x8D9DF6ECA8768583(int threadId) // 0x8D9DF6ECA8768583 0x25A2CABC b323</code>
 +
 +<code>SET_SCRIPT_*
 +
 +Sets the cutscene's owning thread ID.</code>
 +==== CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY ====
 +<code cpp>BOOL CUTSCENE::CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() // 0xB56BBBCC2955D9CB 0xDD8878E9 b323</code>
 +
 +==== IS_CUTSCENE_PLAYBACK_FLAG_SET ====
 +<code cpp>BOOL CUTSCENE::IS_CUTSCENE_PLAYBACK_FLAG_SET(int flag) // 0x71B74D2AE19338D0 0x7B93CDAA b323</code>
 +
 +==== SET_CUTSCENE_ENTITY_STREAMING_FLAGS ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_ENTITY_STREAMING_FLAGS(const char* cutsceneEntName, int p1, int p2) // 0x4C61C75BEE8184C2 0x47DB08A9 b323</code>
 +
 +==== REQUEST_CUT_FILE ====
 +<code cpp>void CUTSCENE::REQUEST_CUT_FILE(const char* cutsceneName) // 0x06A3524161C502BA 0x0D732CD6 b323</code>
 +
 +<code>Simply loads the cutscene and doesn't do extra stuff that REQUEST_CUTSCENE does.</code>
 +==== HAS_CUT_FILE_LOADED ====
 +<code cpp>BOOL CUTSCENE::HAS_CUT_FILE_LOADED(const char* cutsceneName) // 0xA1C996C2A744262E 0x56D5B144 b323</code>
 +
 +<code>Simply checks if the cutscene has loaded and doesn't check via CutSceneManager as opposed to HAS_[THIS]_CUTSCENE_LOADED.</code>
 +==== REMOVE_CUT_FILE ====
 +<code cpp>void CUTSCENE::REMOVE_CUT_FILE(const char* cutsceneName) // 0xD00D76A7DFC9D852 0xB70D7C6D b323</code>
 +
 +<code>Simply unloads the cutscene and doesn't do extra stuff that REMOVE_CUTSCENE does.</code>
 +==== _GET_CUT_FILE_NUM_SECTIONS ====
 +<code cpp>int CUTSCENE::_GET_CUT_FILE_NUM_SECTIONS(const char* cutsceneName) // 0x0ABC54DE641DC0FC  b323</code>
 +
 +<code>Jenkins hash probably is 0xFD8B1AC2</code>
 +==== START_CUTSCENE ====
 +<code cpp>void CUTSCENE::START_CUTSCENE(int flags) // 0x186D5CB5E7B0FF7B 0x210106F6 b323</code>
 +
 +<code>flags: Usually 0.</code>
 +==== START_CUTSCENE_AT_COORDS ====
 +<code cpp>void CUTSCENE::START_CUTSCENE_AT_COORDS(float x, float y, float z, int flags) // 0x1C9ADDA3244A1FBF 0x58BEA436 b323</code>
 +
 +<code>flags: Usually 0.</code>
 +==== STOP_CUTSCENE ====
 +<code cpp>void CUTSCENE::STOP_CUTSCENE(BOOL p0) // 0xC7272775B4DC786E 0x5EE84DC7 b323</code>
 +
 +==== STOP_CUTSCENE_IMMEDIATELY ====
 +<code cpp>void CUTSCENE::STOP_CUTSCENE_IMMEDIATELY() // 0xD220BDD222AC4A1E 0xF528A2AD b323</code>
 +
 +==== SET_CUTSCENE_ORIGIN ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_ORIGIN(float x, float y, float z, float p3, int p4) // 0xB812B3FD1C01CF27 0xB0AD7792 b323</code>
 +
 +<code>p3 could be heading. Needs more research.</code>
 +==== _0x011883F41211432A ====
 +<code cpp>void CUTSCENE::_0x011883F41211432A(float x1, float y1, float z1, float x2, float y2, float z2, int p6) // 0x011883F41211432A  b323</code>
 +
 +==== GET_CUTSCENE_TIME ====
 +<code cpp>int CUTSCENE::GET_CUTSCENE_TIME() // 0xE625BEABBAFFDAB9 0x53F5B5AB b323</code>
 +
 +==== GET_CUTSCENE_TOTAL_DURATION ====
 +<code cpp>int CUTSCENE::GET_CUTSCENE_TOTAL_DURATION() // 0xEE53B14A19E480D4 0x0824EBE8 b323</code>
 +
 +==== _0x971D7B15BCDBEF99 ====
 +<code cpp>int CUTSCENE::_0x971D7B15BCDBEF99() // 0x971D7B15BCDBEF99  b1734</code>
 +
 +<code>GET_CUTSCENE_*</code>
 +==== WAS_CUTSCENE_SKIPPED ====
 +<code cpp>BOOL CUTSCENE::WAS_CUTSCENE_SKIPPED() // 0x40C8656EDAEDD569 0xC9B6949D b323</code>
 +
 +==== HAS_CUTSCENE_FINISHED ====
 +<code cpp>BOOL CUTSCENE::HAS_CUTSCENE_FINISHED() // 0x7C0A893088881D57 0x5DED14B4 b323</code>
 +
 +==== IS_CUTSCENE_ACTIVE ====
 +<code cpp>BOOL CUTSCENE::IS_CUTSCENE_ACTIVE() // 0x991251AFC3981F84 0xCCE2FE9D b323</code>
 +
 +==== IS_CUTSCENE_PLAYING ====
 +<code cpp>BOOL CUTSCENE::IS_CUTSCENE_PLAYING() // 0xD3C2E180A40F031E 0xA3A78392 b323</code>
 +
 +==== GET_CUTSCENE_SECTION_PLAYING ====
 +<code cpp>int CUTSCENE::GET_CUTSCENE_SECTION_PLAYING() // 0x49010A6A396553D8 0x1026F0D6 b323</code>
 +
 +==== GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY ====
 +<code cpp>Entity CUTSCENE::GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY(const char* cutsceneEntName, Hash modelHash) // 0x0A2E9FDB9A8C62F6 0x1D09ABC7 b323</code>
 +
 +==== _0x583DF8E3D4AFBD98 ====
 +<code cpp>int CUTSCENE::_0x583DF8E3D4AFBD98() // 0x583DF8E3D4AFBD98 0x5AE68AE6 b323</code>
 +
 +==== _0x4CEBC1ED31E8925E ====
 +<code cpp>BOOL CUTSCENE::_0x4CEBC1ED31E8925E(const char* cutsceneName) // 0x4CEBC1ED31E8925E  b323</code>
 +
 +<code>This function is hard-coded to always return 1.</code>
 +==== _0x4FCD976DA686580C ====
 +<code cpp>Any CUTSCENE::_0x4FCD976DA686580C(Any p0) // 0x4FCD976DA686580C  b1290</code>
 +
 +==== REGISTER_ENTITY_FOR_CUTSCENE ====
 +<code cpp>void CUTSCENE::REGISTER_ENTITY_FOR_CUTSCENE(Ped cutscenePed, const char* cutsceneEntName, int p2, Hash modelHash, int p4) // 0xE40C1C56DF95C2E8 0x7CBC3EC7 b323</code>
 +
 +==== GET_ENTITY_INDEX_OF_REGISTERED_ENTITY ====
 +<code cpp>Entity CUTSCENE::GET_ENTITY_INDEX_OF_REGISTERED_ENTITY(const char* cutsceneEntName, Hash modelHash) // 0xC0741A26499654CD 0x46D18755 b323</code>
 +
 +==== _0x7F96F23FA9B73327 ====
 +<code cpp>void CUTSCENE::_0x7F96F23FA9B73327(Hash modelHash) // 0x7F96F23FA9B73327  b323</code>
 +
 +<code>SET_VEHICLE_*
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== SET_CUTSCENE_TRIGGER_AREA ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_TRIGGER_AREA(float p0, float p1, float p2, float p3, float p4, float p5) // 0x9896CE4721BE84BA 0x9D76D9DE b323</code>
 +
 +<code>Only used twice in R* scripts</code>
 +==== CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY ====
 +<code cpp>BOOL CUTSCENE::CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY(const char* cutsceneEntName, Hash modelHash) // 0x645D0B458D8E17B5 0x55C30B26 b323</code>
 +
 +<code>modelHash (p1) was always 0 in R* scripts</code>
 +==== CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY ====
 +<code cpp>BOOL CUTSCENE::CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY(const char* cutsceneEntName, Hash modelHash) // 0x4C6A6451C79E4662 0x8FF5D3C4 b323</code>
 +
 +==== CAN_SET_EXIT_STATE_FOR_CAMERA ====
 +<code cpp>BOOL CUTSCENE::CAN_SET_EXIT_STATE_FOR_CAMERA(BOOL p0) // 0xB2CBCD0930DFB420 0xEDAE6C02 b323</code>
 +
 +==== _0xC61B86C9F61EB404 ====
 +<code cpp>void CUTSCENE::_0xC61B86C9F61EB404(BOOL toggle) // 0xC61B86C9F61EB404 0x35721A08 b323</code>
 +
 +<code>Toggles a value (bool) for cutscenes.
 +
 +SET_*</code>
 +==== SET_CUTSCENE_FADE_VALUES ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_FADE_VALUES(BOOL p0, BOOL p1, BOOL p2, BOOL p3) // 0x8093F23ABACCC7D4 0xD19EF0DD b323</code>
 +
 +==== _0x20746F7B1032A3C7 ====
 +<code cpp>void CUTSCENE::_0x20746F7B1032A3C7(BOOL p0, BOOL p1, BOOL p2, BOOL p3) // 0x20746F7B1032A3C7  b323</code>
 +
 +==== _0x06EE9048FD080382 ====
 +<code cpp>void CUTSCENE::_0x06EE9048FD080382(BOOL p0) // 0x06EE9048FD080382  b323</code>
 +
 +==== _0xA0FE76168A189DDB ====
 +<code cpp>int CUTSCENE::_0xA0FE76168A189DDB() // 0xA0FE76168A189DDB  b323</code>
 +
 +==== _0x2F137B508DE238F2 ====
 +<code cpp>void CUTSCENE::_0x2F137B508DE238F2(BOOL p0) // 0x2F137B508DE238F2 0x8338DA1D b323</code>
 +
 +==== _0xE36A98D8AB3D3C66 ====
 +<code cpp>void CUTSCENE::_0xE36A98D8AB3D3C66(BOOL p0) // 0xE36A98D8AB3D3C66 0x04377C10 b323</code>
 +
 +==== _0x5EDEF0CF8C1DAB3C ====
 +<code cpp>Any CUTSCENE::_0x5EDEF0CF8C1DAB3C() // 0x5EDEF0CF8C1DAB3C 0xDBD88708 b323</code>
 +
 +==== SET_CUTSCENE_CAN_BE_SKIPPED ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_CAN_BE_SKIPPED(BOOL p0) // 0x41FAA8FB2ECE8720 0x28D54A7F b323</code>
 +
 +==== REGISTER_SYNCHRONISED_SCRIPT_SPEECH ====
 +<code cpp>void CUTSCENE::REGISTER_SYNCHRONISED_SCRIPT_SPEECH() // 0x2131046957F31B04 0xB60CFBB9 b323</code>
 +
 +==== SET_CUTSCENE_PED_COMPONENT_VARIATION ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_PED_COMPONENT_VARIATION(const char* cutsceneEntName, int p1, int p2, int p3, Hash modelHash) // 0xBA01E7B6DEEFBBC9 0x6AF994A1 b323</code>
 +
 +<code>Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json</code>
 +==== SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED(const char* cutsceneEntName, Ped ped, Hash modelHash) // 0x2A56C06EBEF2B0D9 0x1E7DA95E b323</code>
 +
 +==== DOES_CUTSCENE_ENTITY_EXIST ====
 +<code cpp>BOOL CUTSCENE::DOES_CUTSCENE_ENTITY_EXIST(const char* cutsceneEntName, Hash modelHash) // 0x499EF20C5DB25C59 0x58E67409 b323</code>
 +
 +==== SET_CUTSCENE_PED_PROP_VARIATION ====
 +<code cpp>void CUTSCENE::SET_CUTSCENE_PED_PROP_VARIATION(const char* cutsceneEntName, int p1, int p2, int p3, Hash modelHash) // 0x0546524ADE2E9723 0x22E9A9DE b323</code>
 +
 +<code>Thanks R*! ;)
 +
 +if ((l_161 == 0) || (l_161 == 2)) {
 +    sub_2ea27("Trying to set Jimmy prop variation");
 +    CUTSCENE::_0546524ADE2E9723("Jimmy_Boston", 1, 0, 0, 0);
 +}
 +
 +Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json</code>
 +==== _HAS_CUTSCENE_CUT_THIS_FRAME ====
 +<code cpp>BOOL CUTSCENE::_HAS_CUTSCENE_CUT_THIS_FRAME() // 0x708BDD8CD795B043 0x4315A7C5 b323</code>
 +
 +<code>HAS_CUTSCENE_*
 +Possibly HAS_CUTSCENE_CUT_THIS_FRAME, needs more research.</code>
 +
 +===== DATAFILE =====
 +==== DATAFILE_WATCH_REQUEST_ID ====
 +<code cpp>void DATAFILE::DATAFILE_WATCH_REQUEST_ID(int id) // 0xAD6875BBC0FC899C 0x621388FF b323</code>
 +
 +<code>Adds the given request ID to the watch list.</code>
 +==== DATAFILE_CLEAR_WATCH_LIST ====
 +<code cpp>void DATAFILE::DATAFILE_CLEAR_WATCH_LIST() // 0x6CC86E78358D5119 0x5B39D0AC b323</code>
 +
 +==== DATAFILE_IS_VALID_REQUEST_ID ====
 +<code cpp>BOOL DATAFILE::DATAFILE_IS_VALID_REQUEST_ID(int index) // 0xFCCAE5B92A830878 0x01393D16 b323</code>
 +
 +==== DATAFILE_HAS_LOADED_FILE_DATA ====
 +<code cpp>BOOL DATAFILE::DATAFILE_HAS_LOADED_FILE_DATA(Any p0) // 0x15FF52B809DB2353 0x36FB8B3F b323</code>
 +
 +==== DATAFILE_HAS_VALID_FILE_DATA ====
 +<code cpp>BOOL DATAFILE::DATAFILE_HAS_VALID_FILE_DATA(Any p0) // 0xF8CC1EBE0B62E29F 0x2A9411DA b323</code>
 +
 +==== DATAFILE_SELECT_ACTIVE_FILE ====
 +<code cpp>BOOL DATAFILE::DATAFILE_SELECT_ACTIVE_FILE(Any p0) // 0x22DA66936E0FFF37 0xB41064A4 b323</code>
 +
 +==== DATAFILE_DELETE_REQUESTED_FILE ====
 +<code cpp>BOOL DATAFILE::DATAFILE_DELETE_REQUESTED_FILE(Any p0) // 0x8F5EA1C01D65A100 0x9DB63CFF b323</code>
 +
 +==== UGC_CREATE_CONTENT ====
 +<code cpp>BOOL DATAFILE::UGC_CREATE_CONTENT(Any* data, int dataCount, const char* contentName, const char* description, const char* tagsCsv, const char* contentTypeName, BOOL publish) // 0xC84527E235FCA219 0xF09157B0 b323</code>
 +
 +==== UGC_CREATE_MISSION ====
 +<code cpp>BOOL DATAFILE::UGC_CREATE_MISSION(const char* contentName, const char* description, const char* tagsCsv, const char* contentTypeName, BOOL publish) // 0xA5EFC3E847D60507 0xD96860FC b323</code>
 +
 +==== UGC_UPDATE_CONTENT ====
 +<code cpp>BOOL DATAFILE::UGC_UPDATE_CONTENT(const char* contentId, Any* data, int dataCount, const char* contentName, const char* description, const char* tagsCsv, const char* contentTypeName) // 0x648E7A5434AF7969 0x459F2683 b323</code>
 +
 +==== UGC_UPDATE_MISSION ====
 +<code cpp>BOOL DATAFILE::UGC_UPDATE_MISSION(const char* contentId, const char* contentName, const char* description, const char* tagsCsv, const char* contentTypeName) // 0x4645DE9980999E93 0xDBB83E2B b323</code>
 +
 +==== UGC_SET_PLAYER_DATA ====
 +<code cpp>BOOL DATAFILE::UGC_SET_PLAYER_DATA(const char* contentId, float rating, const char* contentTypeName) // 0x692D808C34A82143 0xBB6321BD b323</code>
 +
 +==== DATAFILE_SELECT_UGC_DATA ====
 +<code cpp>BOOL DATAFILE::DATAFILE_SELECT_UGC_DATA(int p0) // 0xA69AC4ADE82B57A4 0xE8D56DA2 b323</code>
 +
 +==== DATAFILE_SELECT_UGC_STATS ====
 +<code cpp>BOOL DATAFILE::DATAFILE_SELECT_UGC_STATS(int p0, BOOL p1) // 0x9CB0BFA7A9342C3D 0xCB6A351E b323</code>
 +
 +==== DATAFILE_SELECT_UGC_PLAYER_DATA ====
 +<code cpp>BOOL DATAFILE::DATAFILE_SELECT_UGC_PLAYER_DATA(int p0) // 0x52818819057F2B40 0xA4D1B30E b323</code>
 +
 +==== DATAFILE_SELECT_CREATOR_STATS ====
 +<code cpp>BOOL DATAFILE::DATAFILE_SELECT_CREATOR_STATS(int p0) // 0x01095C95CD46B624 0xB8515B2F b323</code>
 +
 +<code>if ((NETWORK::_597F8DBA9B206FC7() > 0) && DATAFILE::_01095C95CD46B624(0)) {
 +    v_10 = DATAFILE::_GET_ROOT_OBJECT();
 +    v_11 = DATAFILE::_OBJECT_VALUE_GET_INTEGER(v_10, "pt");
 +    sub_20202(2, v_11);
 +    a_0 += 1;
 +} else { 
 +    a_0 += 1;
 +}
 +</code>
 +==== DATAFILE_LOAD_OFFLINE_UGC ====
 +<code cpp>BOOL DATAFILE::DATAFILE_LOAD_OFFLINE_UGC(const char* filename) // 0xC5238C011AF405E4 0x660C468E b323</code>
 +
 +<code>Loads a User-Generated Content (UGC) file. These files can be found in "[GTA5]\data\ugc" and "[GTA5]\common\patch\ugc". They seem to follow a naming convention, most likely of "[name]_[part].ugc". See example below for usage.
 +
 +Returns whether or not the file was successfully loaded.
 +
 +Example:
 +DATAFILE::_LOAD_UGC_FILE("RockstarPlaylists") // loads "rockstarplaylists_00.ugc"</code>
 +==== DATAFILE_CREATE ====
 +<code cpp>void DATAFILE::DATAFILE_CREATE() // 0xD27058A1CA2B13EE 0x95F8A221 b323</code>
 +
 +==== DATAFILE_DELETE ====
 +<code cpp>void DATAFILE::DATAFILE_DELETE() // 0x9AB9C1CFC8862DFB 0xDEF31B0A b323</code>
 +
 +==== DATAFILE_STORE_MISSION_HEADER ====
 +<code cpp>void DATAFILE::DATAFILE_STORE_MISSION_HEADER() // 0x2ED61456317B8178 0x4E03F632 b323</code>
 +
 +==== DATAFILE_FLUSH_MISSION_HEADER ====
 +<code cpp>void DATAFILE::DATAFILE_FLUSH_MISSION_HEADER() // 0xC55854C7D7274882 0xF11F956F b323</code>
 +
 +==== DATAFILE_GET_FILE_DICT ====
 +<code cpp>const char* DATAFILE::DATAFILE_GET_FILE_DICT() // 0x906B778CA1DC72B6 0x86DDF9C2 b323</code>
 +
 +==== DATAFILE_START_SAVE_TO_CLOUD ====
 +<code cpp>BOOL DATAFILE::DATAFILE_START_SAVE_TO_CLOUD(const char* filename) // 0x83BCCE3224735F05 0x768CBB35 b323</code>
 +
 +==== DATAFILE_UPDATE_SAVE_TO_CLOUD ====
 +<code cpp>BOOL DATAFILE::DATAFILE_UPDATE_SAVE_TO_CLOUD(BOOL* p0) // 0x4DFDD9EB705F8140 0x0B4087F7 b323</code>
 +
 +==== DATAFILE_IS_SAVE_PENDING ====
 +<code cpp>BOOL DATAFILE::DATAFILE_IS_SAVE_PENDING() // 0xBEDB96A7584AA8CF 0x5DCD0796 b323</code>
 +
 +<code>Example:
 +if (!DATAFILE::_BEDB96A7584AA8CF())
 +{
 +    if (!g_109E3)
 + {
 +        if (((sub_d4f() == 2) == 0) && (!NETWORK::NETWORK_IS_GAME_IN_PROGRESS()))
 +      {
 +            if (NETWORK::NETWORK_IS_CLOUD_AVAILABLE())
 +         {
 +                g_17A8B = 0;
 +            }
 +            if (!g_D52C)
 +          {
 +                sub_730();
 +            }
 +        }
 +    }
 +}
 +
 +</code>
 +==== _0xA6EEF01087181EDD ====
 +<code cpp>Any DATAFILE::_0xA6EEF01087181EDD(Any p0, Any p1) // 0xA6EEF01087181EDD  b2189</code>
 +
 +==== _0x6AD0BD5E087866CB ====
 +<code cpp>void DATAFILE::_0x6AD0BD5E087866CB(Any p0) // 0x6AD0BD5E087866CB  b2189</code>
 +
 +==== _0xDBF860CF1DB8E599 ====
 +<code cpp>Any DATAFILE::_0xDBF860CF1DB8E599(Any p0) // 0xDBF860CF1DB8E599  b2189</code>
 +
 +==== DATADICT_SET_BOOL ====
 +<code cpp>void DATAFILE::DATADICT_SET_BOOL(Any* objectData, const char* key, BOOL value) // 0x35124302A556A325 0x9B29D99B b323</code>
 +
 +==== DATADICT_SET_INT ====
 +<code cpp>void DATAFILE::DATADICT_SET_INT(Any* objectData, const char* key, int value) // 0xE7E035450A7948D5 0xEFCF554A b323</code>
 +
 +==== DATADICT_SET_FLOAT ====
 +<code cpp>void DATAFILE::DATADICT_SET_FLOAT(Any* objectData, const char* key, float value) // 0xC27E1CC2D795105E 0xE972CACF b323</code>
 +
 +==== DATADICT_SET_STRING ====
 +<code cpp>void DATAFILE::DATADICT_SET_STRING(Any* objectData, const char* key, const char* value) // 0x8FF3847DADD8E30C 0xD437615C b323</code>
 +
 +==== DATADICT_SET_VECTOR ====
 +<code cpp>void DATAFILE::DATADICT_SET_VECTOR(Any* objectData, const char* key, float valueX, float valueY, float valueZ) // 0x4CD49B76338C7DEE 0x75FC6C3C b323</code>
 +
 +==== DATADICT_CREATE_DICT ====
 +<code cpp>Any* DATAFILE::DATADICT_CREATE_DICT(Any* objectData, const char* key) // 0xA358F56F10732EE1 0x96A8E05F b323</code>
 +
 +==== DATADICT_CREATE_ARRAY ====
 +<code cpp>Any* DATAFILE::DATADICT_CREATE_ARRAY(Any* objectData, const char* key) // 0x5B11728527CA6E5F 0x03939B8D b323</code>
 +
 +==== DATADICT_GET_BOOL ====
 +<code cpp>BOOL DATAFILE::DATADICT_GET_BOOL(Any* objectData, const char* key) // 0x1186940ED72FFEEC 0x8876C872 b323</code>
 +
 +==== DATADICT_GET_INT ====
 +<code cpp>int DATAFILE::DATADICT_GET_INT(Any* objectData, const char* key) // 0x78F06F6B1FB5A80C 0xA6C68693 b323</code>
 +
 +==== DATADICT_GET_FLOAT ====
 +<code cpp>float DATAFILE::DATADICT_GET_FLOAT(Any* objectData, const char* key) // 0x06610343E73B9727 0xA92C1AF4 b323</code>
 +
 +==== DATADICT_GET_STRING ====
 +<code cpp>const char* DATAFILE::DATADICT_GET_STRING(Any* objectData, const char* key) // 0x3D2FD9E763B24472 0x942160EC b323</code>
 +
 +==== DATADICT_GET_VECTOR ====
 +<code cpp>Vector3 DATAFILE::DATADICT_GET_VECTOR(Any* objectData, const char* key) // 0x46CD3CB66E0825CC 0xE84A127A b323</code>
 +
 +==== DATADICT_GET_DICT ====
 +<code cpp>Any* DATAFILE::DATADICT_GET_DICT(Any* objectData, const char* key) // 0xB6B9DDC412FCEEE2 0xC9C13D8D b323</code>
 +
 +==== DATADICT_GET_ARRAY ====
 +<code cpp>Any* DATAFILE::DATADICT_GET_ARRAY(Any* objectData, const char* key) // 0x7A983AA9DA2659ED 0x1F2F7D00 b323</code>
 +
 +==== DATADICT_GET_TYPE ====
 +<code cpp>int DATAFILE::DATADICT_GET_TYPE(Any* objectData, const char* key) // 0x031C55ED33227371 0x2678342A b323</code>
 +
 +<code>Types:
 +1 = Boolean
 +2 = Integer
 +3 = Float
 +4 = String
 +5 = Vector3
 +6 = Object
 +7 = Array</code>
 +==== DATAARRAY_ADD_BOOL ====
 +<code cpp>void DATAFILE::DATAARRAY_ADD_BOOL(Any* arrayData, BOOL value) // 0xF8B0F5A43E928C76 0x08174B90 b323</code>
 +
 +==== DATAARRAY_ADD_INT ====
 +<code cpp>void DATAFILE::DATAARRAY_ADD_INT(Any* arrayData, int value) // 0xCABDB751D86FE93B 0xF29C0B36 b323</code>
 +
 +==== DATAARRAY_ADD_FLOAT ====
 +<code cpp>void DATAFILE::DATAARRAY_ADD_FLOAT(Any* arrayData, float value) // 0x57A995FD75D37F56 0xE4302123 b323</code>
 +
 +==== DATAARRAY_ADD_STRING ====
 +<code cpp>void DATAFILE::DATAARRAY_ADD_STRING(Any* arrayData, const char* value) // 0x2F0661C155AEEEAA 0xF3C01350 b323</code>
 +
 +==== DATAARRAY_ADD_VECTOR ====
 +<code cpp>void DATAFILE::DATAARRAY_ADD_VECTOR(Any* arrayData, float valueX, float valueY, float valueZ) // 0x407F8D034F70F0C2 0x16F464B6 b323</code>
 +
 +==== DATAARRAY_ADD_DICT ====
 +<code cpp>Any* DATAFILE::DATAARRAY_ADD_DICT(Any* arrayData) // 0x6889498B3E19C797 0xC174C71B b323</code>
 +
 +==== DATAARRAY_GET_BOOL ====
 +<code cpp>BOOL DATAFILE::DATAARRAY_GET_BOOL(Any* arrayData, int arrayIndex) // 0x50C1B2874E50C114 0xA2E5F921 b323</code>
 +
 +==== DATAARRAY_GET_INT ====
 +<code cpp>int DATAFILE::DATAARRAY_GET_INT(Any* arrayData, int arrayIndex) // 0x3E5AE19425CD74BE 0xBB120CFC b323</code>
 +
 +==== DATAARRAY_GET_FLOAT ====
 +<code cpp>float DATAFILE::DATAARRAY_GET_FLOAT(Any* arrayData, int arrayIndex) // 0xC0C527B525D7CFB5 0x08AD2CC2 b323</code>
 +
 +==== DATAARRAY_GET_STRING ====
 +<code cpp>const char* DATAFILE::DATAARRAY_GET_STRING(Any* arrayData, int arrayIndex) // 0xD3F2FFEB8D836F52 0x93F985A6 b323</code>
 +
 +==== DATAARRAY_GET_VECTOR ====
 +<code cpp>Vector3 DATAFILE::DATAARRAY_GET_VECTOR(Any* arrayData, int arrayIndex) // 0x8D2064E5B64A628A 0x80E3DA55 b323</code>
 +
 +==== DATAARRAY_GET_DICT ====
 +<code cpp>Any* DATAFILE::DATAARRAY_GET_DICT(Any* arrayData, int arrayIndex) // 0x8B5FADCC4E3A145F 0xECE81278 b323</code>
 +
 +==== DATAARRAY_GET_COUNT ====
 +<code cpp>int DATAFILE::DATAARRAY_GET_COUNT(Any* arrayData) // 0x065DB281590CEA2D 0xA8A21766 b323</code>
 +
 +==== DATAARRAY_GET_TYPE ====
 +<code cpp>int DATAFILE::DATAARRAY_GET_TYPE(Any* arrayData, int arrayIndex) // 0x3A0014ADB172A3C5 0xFA2402C8 b323</code>
 +
 +<code>Types:
 +1 = Boolean
 +2 = Integer
 +3 = Float
 +4 = String
 +5 = Vector3
 +6 = Object
 +7 = Array</code>
 +
 +===== DECORATOR =====
 +==== DECOR_SET_TIME ====
 +<code cpp>BOOL DECORATOR::DECOR_SET_TIME(Entity entity, const char* propertyName, int timestamp) // 0x95AED7B8E39ECAA4 0xBBAEEF94 b323</code>
 +
 +==== DECOR_SET_BOOL ====
 +<code cpp>BOOL DECORATOR::DECOR_SET_BOOL(Entity entity, const char* propertyName, BOOL value) // 0x6B1E8E2ED1335B71 0x8E101F5C b323</code>
 +
 +<code>This function sets metadata of type bool to specified entity.
 +</code>
 +==== DECOR_SET_FLOAT ====
 +<code cpp>BOOL DECORATOR::DECOR_SET_FLOAT(Entity entity, const char* propertyName, float value) // 0x211AB1DD8D0F363A 0xBC7BD5CB b323</code>
 +
 +==== DECOR_SET_INT ====
 +<code cpp>BOOL DECORATOR::DECOR_SET_INT(Entity entity, const char* propertyName, int value) // 0x0CE3AA5E1CA19E10 0xDB718B21 b323</code>
 +
 +<code>Sets property to int.</code>
 +==== DECOR_GET_BOOL ====
 +<code cpp>BOOL DECORATOR::DECOR_GET_BOOL(Entity entity, const char* propertyName) // 0xDACE671663F2F5DB 0xDBCE51E0 b323</code>
 +
 +==== DECOR_GET_FLOAT ====
 +<code cpp>float DECORATOR::DECOR_GET_FLOAT(Entity entity, const char* propertyName) // 0x6524A2F114706F43 0x8DE5382F b323</code>
 +
 +==== DECOR_GET_INT ====
 +<code cpp>int DECORATOR::DECOR_GET_INT(Entity entity, const char* propertyName) // 0xA06C969B02A97298 0xDDDE59B5 b323</code>
 +
 +==== DECOR_EXIST_ON ====
 +<code cpp>BOOL DECORATOR::DECOR_EXIST_ON(Entity entity, const char* propertyName) // 0x05661B80A8C9165F 0x74EF9C40 b323</code>
 +
 +<code>Returns whether or not the specified property is set for the entity.</code>
 +==== DECOR_REMOVE ====
 +<code cpp>BOOL DECORATOR::DECOR_REMOVE(Entity entity, const char* propertyName) // 0x00EE9F297C738720 0xE0E2640B b323</code>
 +
 +==== DECOR_REGISTER ====
 +<code cpp>void DECORATOR::DECOR_REGISTER(const char* propertyName, int type) // 0x9FD90732F56403CE 0x68BD42A9 b323</code>
 +
 +<code>https://alloc8or.re/gta5/doc/enums/eDecorType.txt</code>
 +==== DECOR_IS_REGISTERED_AS_TYPE ====
 +<code cpp>BOOL DECORATOR::DECOR_IS_REGISTERED_AS_TYPE(const char* propertyName, int type) // 0x4F14F9F870D6FBC8 0x7CF0971D b323</code>
 +
 +<code>type: see DECOR_REGISTER</code>
 +==== DECOR_REGISTER_LOCK ====
 +<code cpp>void DECORATOR::DECOR_REGISTER_LOCK() // 0xA9D14EEA259F9248 0x7F3F1C02 b323</code>
 +
 +<code>Called after all decorator type initializations.</code>
 +
 +===== DLC =====
 +==== _0x241FCA5B1AA14F75 ====
 +<code cpp>BOOL DLC::_0x241FCA5B1AA14F75() // 0x241FCA5B1AA14F75 0x0AF83036 b323</code>
 +
 +<code>Only used once in scripts, in maintransition.
 +
 +maintransition.c4, line ~82432:
 +if (PED::_7350823473013C02(PLAYER::PLAYER_PED_ID()) && (DECORATOR::_241FCA5B1AA14F75() == 0)) {
 +    g_2542A5 = a_1; // 'g_2542A5' used in 'building_controller.ysc' for IPL stuff?
 +    return 1;
 +}
 +
 +Likely used solely for the players ped. The function it's in seems to only be used for initialization/quitting. Called among natives to discard scaleforms, disable frontend, fading in/out, etc. Neighboring strings to some calls include "HUD_JOINING", "HUD_QUITTING".
 +
 +Most likely ARE_*</code>
 +==== IS_DLC_PRESENT ====
 +<code cpp>BOOL DLC::IS_DLC_PRESENT(Hash dlcHash) // 0x812595A0644CE1DE 0x1F321943 b323</code>
 +
 +<code>Example:
 +DLC::IS_DLC_PRESENT($\mpbusiness2\);
 +($ = gethashkey)
 +
 +bruteforce these:
 +0xB119F6D
 +0x96F02EE6</code>
 +==== _0xF2E07819EF1A5289 ====
 +<code cpp>BOOL DLC::_0xF2E07819EF1A5289() // 0xF2E07819EF1A5289 0x881B1FDB b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 1.</code>
 +==== _0x9489659372A81585 ====
 +<code cpp>BOOL DLC::_0x9489659372A81585() // 0x9489659372A81585 0xC2169164 b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _0xA213B11DFF526300 ====
 +<code cpp>BOOL DLC::_0xA213B11DFF526300() // 0xA213B11DFF526300 0xF79A97F5 b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 1.</code>
 +==== _GET_EXTRA_CONTENT_PACK_HAS_BEEN_INSTALLED ====
 +<code cpp>BOOL DLC::_GET_EXTRA_CONTENT_PACK_HAS_BEEN_INSTALLED() // 0x8D30F648014A92B5 0xF69B729C b323</code>
 +
 +==== GET_IS_LOADING_SCREEN_ACTIVE ====
 +<code cpp>BOOL DLC::GET_IS_LOADING_SCREEN_ACTIVE() // 0x10D0A8F259E93EC9 0x517B601B b323</code>
 +
 +==== _0xC4637A6D03C24CC3 ====
 +<code cpp>BOOL DLC::_0xC4637A6D03C24CC3() // 0xC4637A6D03C24CC3  b1734</code>
 +
 +<code>GET_IS_LOADING_*</code>
 +==== HAS_CLOUD_REQUESTS_FINISHED ====
 +<code cpp>BOOL DLC::HAS_CLOUD_REQUESTS_FINISHED(BOOL* p0, Any unused) // 0x46E2B844905BC5F0 0x6087C10C b323</code>
 +
 +<code>Sets the value of the specified variable to 0.
 +Always returns true.</code>
 +==== ON_ENTER_SP ====
 +<code cpp>void DLC::ON_ENTER_SP() // 0xD7C10C4A637992C9 0x8BF60FC3 b323</code>
 +
 +<code>Unloads GROUP_MAP (GTAO/MP) DLC data and loads GROUP_MAP_SP DLC. Neither are loaded by default, 0888C3502DBBEEF5 is a cognate to this function and loads MP DLC (and unloads SP DLC by extension).
 +
 +The original (and wrong) definition is below:
 +
 +This unload the GTA:O DLC map parts (like high end garages/apartments).
 +Works in singleplayer.</code>
 +==== ON_ENTER_MP ====
 +<code cpp>void DLC::ON_ENTER_MP() // 0x0888C3502DBBEEF5 0xC65586A9 b323</code>
 +
 +<code>This loads the GTA:O dlc map parts (high end garages, apartments).
 +Works in singleplayer.
 +In order to use GTA:O heist IPL's you have to call this native with the following params: SET_INSTANCE_PRIORITY_MODE(1);</code>
 +
 +===== ENTITY =====
 +==== DOES_ENTITY_EXIST ====
 +<code cpp>BOOL ENTITY::DOES_ENTITY_EXIST(Entity entity) // 0x7239B21A38F536BA 0x3AC90869 b323</code>
 +
 +<code>Checks whether an entity exists in the game world.</code>
 +==== DOES_ENTITY_BELONG_TO_THIS_SCRIPT ====
 +<code cpp>BOOL ENTITY::DOES_ENTITY_BELONG_TO_THIS_SCRIPT(Entity entity, BOOL p1) // 0xDDE6DF5AE89981D2 0xACFEB3F9 b323</code>
 +
 +==== DOES_ENTITY_HAVE_DRAWABLE ====
 +<code cpp>BOOL ENTITY::DOES_ENTITY_HAVE_DRAWABLE(Entity entity) // 0x060D6E96F8B8E48D 0xA5B33300 b323</code>
 +
 +==== DOES_ENTITY_HAVE_PHYSICS ====
 +<code cpp>BOOL ENTITY::DOES_ENTITY_HAVE_PHYSICS(Entity entity) // 0xDA95EA3317CC5064 0x9BCD2979 b323</code>
 +
 +==== HAS_ENTITY_ANIM_FINISHED ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_ANIM_FINISHED(Entity entity, const char* animDict, const char* animName, int p3) // 0x20B711662962B472 0x1D9CAB92 b323</code>
 +
 +<code>P3 is always 3 as far as i cant tell
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT(Entity entity) // 0x95EB9964FF5C5C65 0x6B74582E b323</code>
 +
 +==== HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(Entity entity) // 0x605F5A140F202491 0x53FD4A25 b323</code>
 +
 +==== HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(Entity entity) // 0xDFD5033FDBA0A9C8 0x878C2CE0 b323</code>
 +
 +==== HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(Entity entity1, Entity entity2, BOOL p2) // 0xC86D67D52A707CF8 0x07FC77E0 b323</code>
 +
 +<code>Entity 1 = Victim
 +Entity 2 = Attacker
 +
 +p2 seems to always be 1</code>
 +==== HAS_ENTITY_CLEAR_LOS_TO_ENTITY ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_CLEAR_LOS_TO_ENTITY(Entity entity1, Entity entity2, int traceType) // 0xFCDFF7B72D23A1AC 0x53576FA7 b323</code>
 +
 +<code>traceType is always 17 in the scripts.
 +
 +There is other codes used for traceType:
 +19 - in jewelry_prep1a
 +126 - in am_hunt_the_beast
 +256 & 287 - in fm_mission_controller</code>
 +==== _HAS_ENTITY_CLEAR_LOS_TO_ENTITY_2 ====
 +<code cpp>Any ENTITY::_HAS_ENTITY_CLEAR_LOS_TO_ENTITY_2(Entity entity1, Entity entity2, int traceType) // 0x394BDE2A7BBA031E  b1868</code>
 +
 +==== HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(Entity entity1, Entity entity2) // 0x0267D00AF114F17A 0x210D87C8 b323</code>
 +
 +<code>Has the entity1 got a clear line of sight to the other entity2 from the direction entity1 is facing.
 +This is one of the most CPU demanding BOOL natives in the game; avoid calling this in things like nested for-loops</code>
 +==== HAS_ENTITY_COLLIDED_WITH_ANYTHING ====
 +<code cpp>BOOL ENTITY::HAS_ENTITY_COLLIDED_WITH_ANYTHING(Entity entity) // 0x8BAD02F0368D9E14 0x662A2F41 b323</code>
 +
 +<code>Called on tick.
 +Tested with vehicles, returns true whenever the vehicle is touching any entity.
 +
 +Note: for vehicles, the wheels can touch the ground and it will still return false, but if the body of the vehicle touches the ground, it will return true.</code>
 +==== GET_LAST_MATERIAL_HIT_BY_ENTITY ====
 +<code cpp>Hash ENTITY::GET_LAST_MATERIAL_HIT_BY_ENTITY(Entity entity) // 0x5C3D0A935F535C4C 0xC0E3AA47 b323</code>
 +
 +==== GET_COLLISION_NORMAL_OF_LAST_HIT_FOR_ENTITY ====
 +<code cpp>Vector3 ENTITY::GET_COLLISION_NORMAL_OF_LAST_HIT_FOR_ENTITY(Entity entity) // 0xE465D4AB7CA6AE72 0xAB415C07 b323</code>
 +
 +==== FORCE_ENTITY_AI_AND_ANIMATION_UPDATE ====
 +<code cpp>void ENTITY::FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(Entity entity) // 0x40FDEDB72F8293B2 0x58D9775F b323</code>
 +
 +<code>Based on carmod_shop script decompile this takes a vehicle parameter. It is called when repair is done on initial enter.</code>
 +==== GET_ENTITY_ANIM_CURRENT_TIME ====
 +<code cpp>float ENTITY::GET_ENTITY_ANIM_CURRENT_TIME(Entity entity, const char* animDict, const char* animName) // 0x346D81500D088F42 0x83943F41 b323</code>
 +
 +<code>Returns a float value representing animation's current playtime with respect to its total playtime. This value increasing in a range from [0 to 1] and wrap back to 0 when it reach 1.
 +
 +Example:
 +0.000000 - mark the starting of animation.
 +0.500000 - mark the midpoint of the animation.
 +1.000000 - mark the end of animation.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_ENTITY_ANIM_TOTAL_TIME ====
 +<code cpp>float ENTITY::GET_ENTITY_ANIM_TOTAL_TIME(Entity entity, const char* animDict, const char* animName) // 0x50BD2730B191E360 0x433A9D18 b323</code>
 +
 +<code>Returns a float value representing animation's total playtime in milliseconds.
 +
 +Example:
 +GET_ENTITY_ANIM_TOTAL_TIME(PLAYER_ID(),"amb@world_human_yoga@female@base","base_b"
 +return 20800.000000
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_ANIM_DURATION ====
 +<code cpp>float ENTITY::GET_ANIM_DURATION(const char* animDict, const char* animName) // 0xFEDDF04D62B8D790 0x8B5E3E3D b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_ENTITY_ATTACHED_TO ====
 +<code cpp>Entity ENTITY::GET_ENTITY_ATTACHED_TO(Entity entity) // 0x48C2BED9180FE123 0xFE1589F9 b323</code>
 +
 +==== GET_ENTITY_COORDS ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_COORDS(Entity entity, BOOL alive) // 0x3FEF770D40960D5A 0x1647F1CB b323</code>
 +
 +<code>Gets the current coordinates for a specified entity.
 +`entity` = The entity to get the coordinates from.
 +`alive` = Unused by the game, potentially used by debug builds of GTA in order to assert whether or not an entity was alive.</code>
 +==== GET_ENTITY_FORWARD_VECTOR ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_FORWARD_VECTOR(Entity entity) // 0x0A794A5A57F8DF91 0x84DCECBF b323</code>
 +
 +<code>Gets the entity's forward vector.</code>
 +==== GET_ENTITY_FORWARD_X ====
 +<code cpp>float ENTITY::GET_ENTITY_FORWARD_X(Entity entity) // 0x8BB4EF4214E0E6D5 0x49FAE914 b323</code>
 +
 +<code>Gets the X-component of the entity's forward vector.</code>
 +==== GET_ENTITY_FORWARD_Y ====
 +<code cpp>float ENTITY::GET_ENTITY_FORWARD_Y(Entity entity) // 0x866A4A5FAE349510 0x9E2F917C b323</code>
 +
 +<code>Gets the Y-component of the entity's forward vector.</code>
 +==== GET_ENTITY_HEADING ====
 +<code cpp>float ENTITY::GET_ENTITY_HEADING(Entity entity) // 0xE83D4F9BA2A38914 0x972CC383 b323</code>
 +
 +<code>Returns the heading of the entity in degrees. Also know as the "Yaw" of an entity.</code>
 +==== _GET_ENTITY_PHYSICS_HEADING ====
 +<code cpp>float ENTITY::_GET_ENTITY_PHYSICS_HEADING(Entity entity) // 0x846BF6291198A71E 0x9320E642 b323</code>
 +
 +<code>Gets the heading of the entity physics in degrees, which tends to be more accurate than just "GET_ENTITY_HEADING". This can be clearly seen while, for example, ragdolling a ped/player.
 +
 +NOTE: The name and description of this native are based on independent research. If you find this native to be more suitable under a different name and/or described differently, please feel free to do so.
 +
 +GET_ENTITY_HEADING_*</code>
 +==== GET_ENTITY_HEALTH ====
 +<code cpp>int ENTITY::GET_ENTITY_HEALTH(Entity entity) // 0xEEF059FAD016D209 0x8E3222B7 b323</code>
 +
 +<code>Returns an integer value of entity's current health.
 +
 +Example of range for ped:
 +- Player [0 to 200]
 +- Ped [100 to 200]
 +- Vehicle [0 to 1000]
 +- Object [0 to 1000]
 +
 +Health is actually a float value but this native casts it to int.
 +In order to get the actual value, do:
 +float health = *(float *)(entityAddress + 0x280);</code>
 +==== GET_ENTITY_MAX_HEALTH ====
 +<code cpp>int ENTITY::GET_ENTITY_MAX_HEALTH(Entity entity) // 0x15D757606D170C3C 0xC7AE6AA1 b323</code>
 +
 +<code>Return an integer value of entity's maximum health.
 +
 +Example:
 +- Player = 200
 +- Ped = 150</code>
 +==== SET_ENTITY_MAX_HEALTH ====
 +<code cpp>void ENTITY::SET_ENTITY_MAX_HEALTH(Entity entity, int value) // 0x166E7CF68597D8B5 0x96F84DF8 b323</code>
 +
 +<code>For instance: ENTITY::SET_ENTITY_MAX_HEALTH(PLAYER::PLAYER_PED_ID(), 200); // director_mode.c4: 67849</code>
 +==== GET_ENTITY_HEIGHT ====
 +<code cpp>float ENTITY::GET_ENTITY_HEIGHT(Entity entity, float X, float Y, float Z, BOOL atTop, BOOL inWorldCoords) // 0x5A504562485944DD 0xEE443481 b323</code>
 +
 +==== GET_ENTITY_HEIGHT_ABOVE_GROUND ====
 +<code cpp>float ENTITY::GET_ENTITY_HEIGHT_ABOVE_GROUND(Entity entity) // 0x1DD55701034110E5 0x57F56A4D b323</code>
 +
 +<code>Return height (z-dimension) above ground. 
 +Example: The pilot in a titan plane is 1.844176 above ground.
 +
 +How can i convert it to meters?
 +Everything seems to be in meters, probably this too.</code>
 +==== GET_ENTITY_MATRIX ====
 +<code cpp>void ENTITY::GET_ENTITY_MATRIX(Entity entity, Vector3* forwardVector, Vector3* rightVector, Vector3* upVector, Vector3* position) // 0xECB2FC7235A7D137 0xEB9EB001 b323</code>
 +
 +==== GET_ENTITY_MODEL ====
 +<code cpp>Hash ENTITY::GET_ENTITY_MODEL(Entity entity) // 0x9F47B058362C84B5 0xDAFCB3EC b323</code>
 +
 +<code>Returns the model hash from the entity</code>
 +==== GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS ====
 +<code cpp>Vector3 ENTITY::GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(Entity entity, float posX, float posY, float posZ) // 0x2274BC1C4885E333 0x6477EC9E b323</code>
 +
 +<code>Converts world coords (posX - Z) to coords relative to the entity
 +
 +Example:
 +posX is given as 50
 +entity's x coord is 40
 +the returned x coord will then be 10 or -10, not sure haven't used this in a while (think it is 10 though).</code>
 +==== GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ====
 +<code cpp>Vector3 ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(Entity entity, float offsetX, float offsetY, float offsetZ) // 0x1899F328B0E12848 0xABCF043A b323</code>
 +
 +<code>Offset values are relative to the entity.
 +
 +x = left/right
 +y = forward/backward
 +z = up/down</code>
 +==== GET_ENTITY_PITCH ====
 +<code cpp>float ENTITY::GET_ENTITY_PITCH(Entity entity) // 0xD45DC2893621E1FE 0xFCE6ECE5 b323</code>
 +
 +==== GET_ENTITY_QUATERNION ====
 +<code cpp>void ENTITY::GET_ENTITY_QUATERNION(Entity entity, float* x, float* y, float* z, float* w) // 0x7B3703D2D32DFA18 0x5154EC90 b323</code>
 +
 +<code>w is the correct parameter name!</code>
 +==== GET_ENTITY_ROLL ====
 +<code cpp>float ENTITY::GET_ENTITY_ROLL(Entity entity) // 0x831E0242595560DF 0x36610842 b323</code>
 +
 +<code>Displays the current ROLL axis of the entity [-180.0000/180.0000+]
 +(Sideways Roll) such as a vehicle tipped on its side</code>
 +==== GET_ENTITY_ROTATION ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_ROTATION(Entity entity, int rotationOrder) // 0xAFBD61CC738D9EB9 0x8FF45B04 b323</code>
 +
 +<code>rotationOrder is the order yaw, pitch and roll is applied. Usually 2. Returns a vector where the Z coordinate is the yaw.
 +
 +rotationOrder refers to the order yaw pitch roll is applied; value ranges from 0 to 5 and is usually *2* in scripts.
 +What you use for rotationOrder when getting must be the same as rotationOrder when setting the rotation.
 +
 +What it returns is the yaw on the z part of the vector, which makes sense considering R* considers z as vertical. Here's a picture for those of you who don't understand pitch, yaw, and roll: www.allstar.fiu.edu/aero/images/pic5-1.gif
 +
 +Rotation Orders:
 +0: ZYX - Rotate around the z-axis, then the y-axis and finally the x-axis.
 +1: YZX - Rotate around the y-axis, then the z-axis and finally the x-axis.
 +2: ZXY - Rotate around the z-axis, then the x-axis and finally the y-axis.
 +3: XZY - Rotate around the x-axis, then the z-axis and finally the y-axis.
 +4: YXZ - Rotate around the y-axis, then the x-axis and finally the z-axis.
 +5: XYZ - Rotate around the x-axis, then the y-axis and finally the z-axis.</code>
 +==== GET_ENTITY_ROTATION_VELOCITY ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_ROTATION_VELOCITY(Entity entity) // 0x213B91045D09B983 0x9BF8A73F b323</code>
 +
 +==== GET_ENTITY_SCRIPT ====
 +<code cpp>const char* ENTITY::GET_ENTITY_SCRIPT(Entity entity, ScrHandle* script) // 0xA6E9C38DB51D7748 0xB7F70784 b323</code>
 +
 +<code>All ambient entities in-world seem to have the same value for the second argument (Any *script), depending on when the scripthook was activated/re-activated. I've seen numbers from ~5 to almost 70 when the value was translated with to_string. The function return value seems to always be 0.</code>
 +==== GET_ENTITY_SPEED ====
 +<code cpp>float ENTITY::GET_ENTITY_SPEED(Entity entity) // 0xD5037BA82E12416F 0x9E1E4798 b323</code>
 +
 +<code>result is in meters per second
 +
 +------------------------------------------------------------
 +So would the conversion to mph and km/h, be along the lines of this.
 +
 +float speed = GET_ENTITY_SPEED(veh);
 +float kmh = (speed * 3.6);
 +float mph = (speed * 2.236936);
 +------------------------------------------------------------</code>
 +==== GET_ENTITY_SPEED_VECTOR ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_SPEED_VECTOR(Entity entity, BOOL relative) // 0x9A8D700A51CB7B0D 0x3ED2B997 b323</code>
 +
 +<code>Relative can be used for getting speed relative to the frame of the vehicle, to determine for example, if you are going in reverse (-y speed) or not (+y speed). </code>
 +==== GET_ENTITY_UPRIGHT_VALUE ====
 +<code cpp>float ENTITY::GET_ENTITY_UPRIGHT_VALUE(Entity entity) // 0x95EED5A694951F9F 0xF4268190 b323</code>
 +
 +==== GET_ENTITY_VELOCITY ====
 +<code cpp>Vector3 ENTITY::GET_ENTITY_VELOCITY(Entity entity) // 0x4805D2B1D8CF94A9 0xC14C9B6B b323</code>
 +
 +==== GET_OBJECT_INDEX_FROM_ENTITY_INDEX ====
 +<code cpp>Object ENTITY::GET_OBJECT_INDEX_FROM_ENTITY_INDEX(Entity entity) // 0xD7E3B9735C0F89D6 0xBC5A9C58 b323</code>
 +
 +<code>Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).</code>
 +==== GET_PED_INDEX_FROM_ENTITY_INDEX ====
 +<code cpp>Ped ENTITY::GET_PED_INDEX_FROM_ENTITY_INDEX(Entity entity) // 0x04A2A40C73395041 0xC46F74AC b323</code>
 +
 +<code>Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).</code>
 +==== GET_VEHICLE_INDEX_FROM_ENTITY_INDEX ====
 +<code cpp>Vehicle ENTITY::GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(Entity entity) // 0x4B53F92932ADFAC0 0xC69CF43D b323</code>
 +
 +<code>Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).</code>
 +==== GET_WORLD_POSITION_OF_ENTITY_BONE ====
 +<code cpp>Vector3 ENTITY::GET_WORLD_POSITION_OF_ENTITY_BONE(Entity entity, int boneIndex) // 0x44A8FCB8ED227738 0x7C6339DF b323</code>
 +
 +<code>Returns the coordinates of an entity-bone.</code>
 +==== GET_NEAREST_PLAYER_TO_ENTITY ====
 +<code cpp>Player ENTITY::GET_NEAREST_PLAYER_TO_ENTITY(Entity entity) // 0x7196842CB375CDB3 0xCE17FDEC b323</code>
 +
 +==== GET_NEAREST_PLAYER_TO_ENTITY_ON_TEAM ====
 +<code cpp>Player ENTITY::GET_NEAREST_PLAYER_TO_ENTITY_ON_TEAM(Entity entity, int team) // 0x4DC9A62F844D9337 0xB1808F56 b323</code>
 +
 +==== GET_ENTITY_TYPE ====
 +<code cpp>int ENTITY::GET_ENTITY_TYPE(Entity entity) // 0x8ACD366038D14505 0x0B1BD08D b323</code>
 +
 +<code>Returns:
 +0 = no entity
 +1 = ped
 +2 = vehicle
 +3 = object</code>
 +==== GET_ENTITY_POPULATION_TYPE ====
 +<code cpp>int ENTITY::GET_ENTITY_POPULATION_TYPE(Entity entity) // 0xF6F5161F4534EDFF 0xFC30DDFF b323</code>
 +
 +<code>A population type, from the following enum: https://alloc8or.re/gta5/doc/enums/ePopulationType.txt</code>
 +==== IS_AN_ENTITY ====
 +<code cpp>BOOL ENTITY::IS_AN_ENTITY(int handle) // 0x731EC8A916BD11A1 0xD4B9715A b323</code>
 +
 +==== IS_ENTITY_A_PED ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_A_PED(Entity entity) // 0x524AC5ECEA15343E 0x55D33EAB b323</code>
 +
 +==== IS_ENTITY_A_MISSION_ENTITY ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_A_MISSION_ENTITY(Entity entity) // 0x0A7B270912999B3C 0x2632E124 b323</code>
 +
 +==== IS_ENTITY_A_VEHICLE ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_A_VEHICLE(Entity entity) // 0x6AC7003FA6E5575E 0xBE800B01 b323</code>
 +
 +==== IS_ENTITY_AN_OBJECT ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_AN_OBJECT(Entity entity) // 0x8D68C8FD0FACA94E 0x3F52E561 b323</code>
 +
 +==== IS_ENTITY_AT_COORD ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_AT_COORD(Entity entity, float xPos, float yPos, float zPos, float xSize, float ySize, float zSize, BOOL p7, BOOL p8, int p9) // 0x20B60995556D004F 0xD749B606 b323</code>
 +
 +<code>Checks if entity is within x/y/zSize distance of x/y/z. 
 +
 +Last three are unknown ints, almost always p7 = 0, p8 = 1, p9 = 0</code>
 +==== IS_ENTITY_AT_ENTITY ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_AT_ENTITY(Entity entity1, Entity entity2, float xSize, float ySize, float zSize, BOOL p5, BOOL p6, int p7) // 0x751B70C3D034E187 0xDABDCB52 b323</code>
 +
 +<code>Checks if entity1 is within the box defined by x/y/zSize of entity2.
 +
 +Last three parameters are almost alwasy p5 = 0, p6 = 1, p7 = 0</code>
 +==== IS_ENTITY_ATTACHED ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ATTACHED(Entity entity) // 0xB346476EF1A64897 0xEC1479D5 b323</code>
 +
 +<code>Whether the entity is attached to any other entity.</code>
 +==== IS_ENTITY_ATTACHED_TO_ANY_OBJECT ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ATTACHED_TO_ANY_OBJECT(Entity entity) // 0xCF511840CEEDE0CC 0x0B5DE340 b323</code>
 +
 +==== IS_ENTITY_ATTACHED_TO_ANY_PED ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ATTACHED_TO_ANY_PED(Entity entity) // 0xB1632E9A5F988D11 0x9D7A609C b323</code>
 +
 +==== IS_ENTITY_ATTACHED_TO_ANY_VEHICLE ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ATTACHED_TO_ANY_VEHICLE(Entity entity) // 0x26AA915AD89BFB4B 0xDE5C995E b323</code>
 +
 +==== IS_ENTITY_ATTACHED_TO_ENTITY ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ATTACHED_TO_ENTITY(Entity from, Entity to) // 0xEFBE71898A993728 0xB0ABFEA8 b323</code>
 +
 +==== IS_ENTITY_DEAD ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_DEAD(Entity entity, BOOL p1) // 0x5F9532F3B5CC2551 0xB6F7CBAC b323</code>
 +
 +==== IS_ENTITY_IN_AIR ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_IN_AIR(Entity entity) // 0x886E37EC497200B6 0xA4157987 b323</code>
 +
 +==== IS_ENTITY_IN_ANGLED_AREA ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_IN_ANGLED_AREA(Entity entity, float x1, float y1, float z1, float x2, float y2, float z2, float width, BOOL debug, BOOL includeZ, Any p10) // 0x51210CED3DA1C78A 0x883622FA b323</code>
 +
 +<code>`p8` is a debug flag invoking functions in the same path as ``DRAW_MARKER``
 +`p10` is some entity flag check, also used in `IS_ENTITY_AT_ENTITY`, `IS_ENTITY_IN_AREA`, and `IS_ENTITY_AT_COORD`.
 +See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.</code>
 +==== IS_ENTITY_IN_AREA ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_IN_AREA(Entity entity, float x1, float y1, float z1, float x2, float y2, float z2, BOOL p7, BOOL p8, Any p9) // 0x54736AA40E271165 0x8C2DFA9D b323</code>
 +
 +==== IS_ENTITY_IN_ZONE ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_IN_ZONE(Entity entity, const char* zone) // 0xB6463CF6AF527071 0x45C82B21 b323</code>
 +
 +<code>Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json</code>
 +==== IS_ENTITY_IN_WATER ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_IN_WATER(Entity entity) // 0xCFB0A0D8EDD145A3 0x4C3C2508 b323</code>
 +
 +==== GET_ENTITY_SUBMERGED_LEVEL ====
 +<code cpp>float ENTITY::GET_ENTITY_SUBMERGED_LEVEL(Entity entity) // 0xE81AFC1BC4CC41CE 0x0170F68C b323</code>
 +
 +<code>Get how much of the entity is submerged.  1.0f is whole entity.</code>
 +==== _0x694E00132F2823ED ====
 +<code cpp>void ENTITY::_0x694E00132F2823ED(Entity entity, BOOL toggle) // 0x694E00132F2823ED 0x40C84A74 b323</code>
 +
 +<code>SET_ENTITY_R*</code>
 +==== IS_ENTITY_ON_SCREEN ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_ON_SCREEN(Entity entity) // 0xE659E47AF827484B 0xC1FEC5ED b323</code>
 +
 +<code>Returns true if the entity is in between the minimum and maximum values for the 2d screen coords. 
 +This means that it will return true even if the entity is behind a wall for example, as long as you're looking at their location. 
 +Chipping</code>
 +==== IS_ENTITY_PLAYING_ANIM ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_PLAYING_ANIM(Entity entity, const char* animDict, const char* animName, int taskFlag) // 0x1F0B79228E461EC9 0x0D130D34 b323</code>
 +
 +<code>See also PED::IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM 0x6EC47A344923E1ED 0x3C30B447
 +
 +Taken from ENTITY::IS_ENTITY_PLAYING_ANIM(PLAYER::PLAYER_PED_ID(), "creatures@shark@move", "attack_player", 3)
 +
 +p4 is always 3 in the scripts.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== IS_ENTITY_STATIC ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_STATIC(Entity entity) // 0x1218E6886D3D8327 0x928E12E9 b323</code>
 +
 +<code>a static ped will not react to natives like "APPLY_FORCE_TO_ENTITY" or "SET_ENTITY_VELOCITY" and oftentimes will not react to task-natives like "TASK::TASK_COMBAT_PED". The only way I know of to make one of these peds react is to ragdoll them (or sometimes to use CLEAR_PED_TASKS_IMMEDIATELY(). Static peds include almost all far-away peds, beach-combers, peds in certain scenarios, peds crossing a crosswalk, peds walking to get back into their cars, and others. If anyone knows how to make a ped non-static without ragdolling them, please edit this with the solution.
 +
 +how can I make an entity static???</code>
 +==== IS_ENTITY_TOUCHING_ENTITY ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_TOUCHING_ENTITY(Entity entity, Entity targetEntity) // 0x17FFC1B2BA35A494 0x6B931477 b323</code>
 +
 +==== IS_ENTITY_TOUCHING_MODEL ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_TOUCHING_MODEL(Entity entity, Hash modelHash) // 0x0F42323798A58C8C 0x307E7611 b323</code>
 +
 +==== IS_ENTITY_UPRIGHT ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_UPRIGHT(Entity entity, float angle) // 0x5333F526F6AB19AA 0x3BCDF4E1 b323</code>
 +
 +==== IS_ENTITY_UPSIDEDOWN ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_UPSIDEDOWN(Entity entity) // 0x1DBD58820FA61D71 0x5ACAA48F b323</code>
 +
 +==== IS_ENTITY_VISIBLE ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_VISIBLE(Entity entity) // 0x47D6F43D77935C75 0x120B4ED5 b323</code>
 +
 +==== IS_ENTITY_VISIBLE_TO_SCRIPT ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_VISIBLE_TO_SCRIPT(Entity entity) // 0xD796CB5BA8F20E32 0x5D240E9D b323</code>
 +
 +==== IS_ENTITY_OCCLUDED ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_OCCLUDED(Entity entity) // 0xE31C2C72B8692B64 0x46BC5B40 b323</code>
 +
 +==== WOULD_ENTITY_BE_OCCLUDED ====
 +<code cpp>BOOL ENTITY::WOULD_ENTITY_BE_OCCLUDED(Hash entityModelHash, float x, float y, float z, BOOL p4) // 0xEE5D2A122E09EC42 0xEA127CBC b323</code>
 +
 +==== IS_ENTITY_WAITING_FOR_WORLD_COLLISION ====
 +<code cpp>BOOL ENTITY::IS_ENTITY_WAITING_FOR_WORLD_COLLISION(Entity entity) // 0xD05BFF0C0A12C68F 0x00AB7A4A b323</code>
 +
 +==== APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS ====
 +<code cpp>void ENTITY::APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(Entity entity, int forceType, float x, float y, float z, BOOL p5, BOOL isDirectionRel, BOOL isForceRel, BOOL p8) // 0x18FF00FC7EFF559E 0x28924E98 b323</code>
 +
 +<code>Applies a force to the specified entity.
 +
 +**List of force types (p1)**:
 +public enum ForceType
 +{
 +    MinForce = 0,
 +    MaxForceRot = 1,
 +    MinForce2 = 2,
 +    MaxForceRot2 = 3,
 +    ForceNoRot = 4,
 +    ForceRotPlusForce = 5
 +}
 +Research/documentation on the gtaforums can be found here https://gtaforums.com/topic/885669-precisely-define-object-physics/) and here https://gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/.
 +
 +p6/relative - makes the xyz force not relative to world coords, but to something else
 +p7/highForce - setting false will make the force really low</code>
 +==== APPLY_FORCE_TO_ENTITY ====
 +<code cpp>void ENTITY::APPLY_FORCE_TO_ENTITY(Entity entity, int forceFlags, float x, float y, float z, float offX, float offY, float offZ, int boneIndex, BOOL isDirectionRel, BOOL ignoreUpVec, BOOL isForceRel, BOOL p12, BOOL p13) // 0xC5F68BE9613E2D18 0xC1C0855A b323</code>
 +
 +<code>Documented here:
 +gtaforums.com/topic/885669-precisely-define-object-physics/
 +gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/
 +
 +forceFlags:
 +First bit (lowest): Strong force flag, factor 100
 +Second bit: Unkown flag
 +Third bit: Momentum flag=1 (vector (x,y,z) is a momentum, more research needed)
 +If higher bits are unequal 0 the function doesn't applay any forces at all.
 +(As integer possible values are 0-7)
 +
 +0: weak force
 +1: strong force
 +2: same as 0 (2nd bit?)
 +3: same as 1
 +4: weak momentum
 +5: strong momentum
 +6: same as 4
 +7: same as 5
 +
 +isLocal: vector defined in local (body-fixed) coordinate frame
 +isMassRel: if true the force gets multiplied with the objects mass (this is why it was known as highForce) and different objects will have the same acceleration.
 +
 +p8 !!! Whenever I set this !=0, my script stopped.</code>
 +==== ATTACH_ENTITY_TO_ENTITY ====
 +<code cpp>void ENTITY::ATTACH_ENTITY_TO_ENTITY(Entity entity1, Entity entity2, int boneIndex, float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, BOOL p9, BOOL useSoftPinning, BOOL collision, BOOL isPed, int vertexIndex, BOOL fixedRot) // 0x6B9BBD38AB0796DF 0xEC024237 b323</code>
 +
 +<code>Attaches entity1 to bone (boneIndex) of entity2.
 +
 +boneIndex - this is different to boneID, use GET_PED_BONE_INDEX to get the index from the ID. use the index for attaching to specific bones. entity1 will be attached to entity2's centre if bone index given doesn't correspond to bone indexes for that entity type.
 +
 +useSoftPinning - if set to false attached entity will not detach when fixed
 +collision - controls collision between the two entities (FALSE disables collision).
 +isPed - pitch doesnt work when false and roll will only work on negative numbers (only peds)
 +vertexIndex - position of vertex
 +fixedRot - if false it ignores entity vector 
 +</code>
 +==== _ATTACH_ENTITY_BONE_TO_ENTITY_BONE ====
 +<code cpp>void ENTITY::_ATTACH_ENTITY_BONE_TO_ENTITY_BONE(Entity entity1, Entity entity2, int boneIndex1, int boneIndex2, BOOL p4, BOOL p5) // 0x5C48B75732C8456C  b791</code>
 +
 +==== _ATTACH_ENTITY_BONE_TO_ENTITY_BONE_PHYSICALLY ====
 +<code cpp>void ENTITY::_ATTACH_ENTITY_BONE_TO_ENTITY_BONE_PHYSICALLY(Entity entity1, Entity entity2, int boneIndex1, int boneIndex2, BOOL p4, BOOL p5) // 0xFD1695C5D3B05439  b791</code>
 +
 +==== ATTACH_ENTITY_TO_ENTITY_PHYSICALLY ====
 +<code cpp>void ENTITY::ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(Entity entity1, Entity entity2, int boneIndex1, int boneIndex2, float xPos1, float yPos1, float zPos1, float xPos2, float yPos2, float zPos2, float xRot, float yRot, float zRot, float breakForce, BOOL fixedRot, BOOL p15, BOOL collision, BOOL p17, int p18) // 0xC3675780C92F90F9 0x0547417F b323</code>
 +
 +<code>breakForce is the amount of force required to break the bond.
 +p14 - is always 1 in scripts
 +p15 - is 1 or 0 in scripts - unknoun what it does
 +p16 - controls collision between the two entities (FALSE disables collision).
 +p17 - do not teleport entity to be attached to the position of the bone Index of the target entity (if 1, entity will not be teleported to target bone)
 +p18 - is always 2 in scripts.
 +
 +</code>
 +==== PROCESS_ENTITY_ATTACHMENTS ====
 +<code cpp>void ENTITY::PROCESS_ENTITY_ATTACHMENTS(Entity entity) // 0xF4080490ADC51C6F 0x6909BA59 b323</code>
 +
 +<code>Called to update entity attachments.</code>
 +==== GET_ENTITY_BONE_INDEX_BY_NAME ====
 +<code cpp>int ENTITY::GET_ENTITY_BONE_INDEX_BY_NAME(Entity entity, const char* boneName) // 0xFB71170B7E76ACBA 0xE4ECAC22 b323</code>
 +
 +<code>Returns the index of the bone. If the bone was not found, -1 will be returned. 
 +
 +list:
 +pastebin.com/D7JMnX1g
 +
 +BoneNames:
 +  chassis,
 +  windscreen,
 +   seat_pside_r,
 + seat_dside_r,
 + bodyshell,
 +    suspension_lm,
 +    suspension_lr,
 +    platelight,
 +   attach_female,
 +    attach_male,
 +  bonnet,
 +   boot,
 + chassis_dummy,  //Center of the dummy
 + chassis_Control,    //Not found yet
 +   door_dside_f,   //Door left, front
 +    door_dside_r,   //Door left, back
 + door_pside_f,   //Door right, front
 +   door_pside_r,   //Door right, back
 +    Gun_GripR,
 +    windscreen_f,
 + platelight, //Position where the light above the numberplate is located
 +   VFX_Emitter,
 +  window_lf,  //Window left, front
 +  window_lr,  //Window left, back
 +   window_rf,  //Window right, front
 + window_rr,  //Window right, back
 +  engine, //Position of the engine
 +  gun_ammo,
 + ROPE_ATTATCH,   //Not misspelled. In script "finale_heist2b.c4".
 +    wheel_lf,   //Wheel left, front
 +   wheel_lr,   //Wheel left, back
 +    wheel_rf,   //Wheel right, front
 +  wheel_rr,   //Wheel right, back
 +   exhaust,    //Exhaust. shows only the position of the stock-exhaust
 +   overheat,   //A position on the engine(not exactly sure, how to name it)
 +  misc_e, //Not a car-bone.
 + seat_dside_f,   //Driver-seat
 + seat_pside_f,   //Seat next to driver
 + Gun_Nuzzle,
 +   seat_r
 +
 +I doubt that the function is case-sensitive, since I found a "Chassis" and a "chassis". - Just tested: Definitely not case-sensitive.
 +
 +</code>
 +==== CLEAR_ENTITY_LAST_DAMAGE_ENTITY ====
 +<code cpp>void ENTITY::CLEAR_ENTITY_LAST_DAMAGE_ENTITY(Entity entity) // 0xA72CD9CA74A5ECBA 0x2B83F43B b323</code>
 +
 +==== DELETE_ENTITY ====
 +<code cpp>void ENTITY::DELETE_ENTITY(Entity* entity) // 0xAE3CBE5BF394C9C9 0xFAA3D236 b323</code>
 +
 +<code>Deletes the specified entity, then sets the handle pointed to by the pointer to NULL.</code>
 +==== DETACH_ENTITY ====
 +<code cpp>void ENTITY::DETACH_ENTITY(Entity entity, BOOL dynamic, BOOL collision) // 0x961AC54BF0613F5D 0xC8EFCB41 b323</code>
 +
 +<code>If `collision` is set to true, both entities won't collide with the other until the distance between them is above 4 meters.
 +Set `dynamic` to true to keep velocity after dettaching</code>
 +==== FREEZE_ENTITY_POSITION ====
 +<code cpp>void ENTITY::FREEZE_ENTITY_POSITION(Entity entity, BOOL toggle) // 0x428CA6DBD1094446 0x65C16D57 b323</code>
 +
 +<code>Freezes or unfreezes an entity preventing its coordinates to change by the player if set to `true`. You can still change the entity position using SET_ENTITY_COORDS.</code>
 +==== _SET_ENTITY_CLEANUP_BY_ENGINE ====
 +<code cpp>void ENTITY::_SET_ENTITY_CLEANUP_BY_ENGINE(Entity entity, BOOL toggle) // 0x3910051CCECDB00C 0xD3850671 b323</code>
 +
 +<code>True means it can be deleted by the engine when switching lobbies/missions/etc, false means the script is expected to clean it up.</code>
 +==== PLAY_ENTITY_ANIM ====
 +<code cpp>BOOL ENTITY::PLAY_ENTITY_ANIM(Entity entity, const char* animName, const char* animDict, float p3, BOOL loop, BOOL stayInAnim, BOOL p6, float delta, Any bitset) // 0x7FB218262B810701 0x878753D5 b323</code>
 +
 +<code>delta and bitset are guessed fields. They are based on the fact that most of the calls have 0 or nil field types passed in.
 +
 +The only time bitset has a value is 0x4000 and the only time delta has a value is during stealth with usually <1.0f values.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== PLAY_SYNCHRONIZED_ENTITY_ANIM ====
 +<code cpp>BOOL ENTITY::PLAY_SYNCHRONIZED_ENTITY_ANIM(Entity entity, int syncedScene, const char* animation, const char* propName, float p4, float p5, Any p6, float p7) // 0xC77720A12FE14A86 0x012760AA b323</code>
 +
 +<code>p4 and p7 are usually 1000.0f.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== PLAY_SYNCHRONIZED_MAP_ENTITY_ANIM ====
 +<code cpp>BOOL ENTITY::PLAY_SYNCHRONIZED_MAP_ENTITY_ANIM(float p0, float p1, float p2, float p3, Any p4, Any p5, Any* p6, Any* p7, float p8, float p9, Any p10, float p11) // 0xB9C54555ED30FBC4 0xEB4CBA74 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== STOP_SYNCHRONIZED_MAP_ENTITY_ANIM ====
 +<code cpp>BOOL ENTITY::STOP_SYNCHRONIZED_MAP_ENTITY_ANIM(float p0, float p1, float p2, float p3, Any p4, float p5) // 0x11E79CAB7183B6F5 0x7253D5B2 b323</code>
 +
 +==== STOP_ENTITY_ANIM ====
 +<code cpp>Any ENTITY::STOP_ENTITY_ANIM(Entity entity, const char* animation, const char* animGroup, float p3) // 0x28004F88151E03E0 0xC4769830 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +RAGEPluginHook list: docs.ragepluginhook.net/html/62951c37-a440-478c-b389-c471230ddfc5.htm</code>
 +==== STOP_SYNCHRONIZED_ENTITY_ANIM ====
 +<code cpp>BOOL ENTITY::STOP_SYNCHRONIZED_ENTITY_ANIM(Entity entity, float p1, BOOL p2) // 0x43D3807C077261E3 0xE27D2FC1 b323</code>
 +
 +<code>p1 sync task id?</code>
 +==== HAS_ANIM_EVENT_FIRED ====
 +<code cpp>BOOL ENTITY::HAS_ANIM_EVENT_FIRED(Entity entity, Hash actionHash) // 0xEAF4CD9EA3E7E922 0x66571CA0 b323</code>
 +
 +<code>if (ENTITY::HAS_ANIM_EVENT_FIRED(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("CreateObject")))</code>
 +==== FIND_ANIM_EVENT_PHASE ====
 +<code cpp>BOOL ENTITY::FIND_ANIM_EVENT_PHASE(const char* animDictionary, const char* animName, const char* p2, Any* p3, Any* p4) // 0x07F1BE2BCCAA27A7 0xC41DDA62 b323</code>
 +
 +<code>In the script "player_scene_t_bbfight.c4":
 +"if (ENTITY::FIND_ANIM_EVENT_PHASE(&l_16E, &l_19F[v_4/*16*/], v_9, &v_A, &v_B))"
 +-- &l_16E (p0) is requested as an anim dictionary earlier in the script.
 +-- &l_19F[v_4/*16*/] (p1) is used in other natives in the script as the "animation" param.
 +-- v_9 (p2) is instantiated as "victim_fall"; I'm guessing that's another anim
 +--v_A and v_B (p3 & p4) are both set as -1.0, but v_A is used immediately after this native for: 
 +"if (v_A < ENTITY::GET_ENTITY_ANIM_CURRENT_TIME(...))"
 +Both v_A and v_B are seemingly used to contain both Vector3's and floats, so I can't say what either really is other than that they are both output parameters. p4 looks more like a *Vector3 though
 +-alphazolam
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== SET_ENTITY_ANIM_CURRENT_TIME ====
 +<code cpp>void ENTITY::SET_ENTITY_ANIM_CURRENT_TIME(Entity entity, const char* animDictionary, const char* animName, float time) // 0x4487C259F0F70977 0x99D90735 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== SET_ENTITY_ANIM_SPEED ====
 +<code cpp>void ENTITY::SET_ENTITY_ANIM_SPEED(Entity entity, const char* animDictionary, const char* animName, float speedMultiplier) // 0x28D1A16553C51776 0x3990C90A b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== SET_ENTITY_AS_MISSION_ENTITY ====
 +<code cpp>void ENTITY::SET_ENTITY_AS_MISSION_ENTITY(Entity entity, BOOL p1, BOOL p2) // 0xAD738C3085FE7E11 0x5D1F9E0F b323</code>
 +
 +<code>Makes the specified entity (ped, vehicle or object) persistent. Persistent entities will not automatically be removed by the engine.
 +
 +p1 has no effect when either its on or off 
 +maybe a quick disassembly will tell us what it does
 +
 +p2 has no effect when either its on or off 
 +maybe a quick disassembly will tell us what it does</code>
 +==== SET_ENTITY_AS_NO_LONGER_NEEDED ====
 +<code cpp>void ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(Entity* entity) // 0xB736A491E64A32CF 0xADF2267C b323</code>
 +
 +<code>Marks the specified entity (ped, vehicle or object) as no longer needed.
 +Entities marked as no longer needed, will be deleted as the engine sees fit.</code>
 +==== SET_PED_AS_NO_LONGER_NEEDED ====
 +<code cpp>void ENTITY::SET_PED_AS_NO_LONGER_NEEDED(Ped* ped) // 0x2595DD4236549CE3 0x9A388380 b323</code>
 +
 +<code>This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.</code>
 +==== SET_VEHICLE_AS_NO_LONGER_NEEDED ====
 +<code cpp>void ENTITY::SET_VEHICLE_AS_NO_LONGER_NEEDED(Vehicle* vehicle) // 0x629BFA74418D6239 0x9B0E10BE b323</code>
 +
 +<code>This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.</code>
 +==== SET_OBJECT_AS_NO_LONGER_NEEDED ====
 +<code cpp>void ENTITY::SET_OBJECT_AS_NO_LONGER_NEEDED(Object* object) // 0x3AE22DEB5BA5A3E6 0x3F6B949F b323</code>
 +
 +<code>This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.</code>
 +==== SET_ENTITY_CAN_BE_DAMAGED ====
 +<code cpp>void ENTITY::SET_ENTITY_CAN_BE_DAMAGED(Entity entity, BOOL toggle) // 0x1760FFA8AB074D66 0x60B6E744 b323</code>
 +
 +==== _GET_ENTITY_CAN_BE_DAMAGED ====
 +<code cpp>BOOL ENTITY::_GET_ENTITY_CAN_BE_DAMAGED(Entity entity) // 0xD95CC5D2AB15A09F  b757</code>
 +
 +==== SET_ENTITY_CAN_BE_DAMAGED_BY_RELATIONSHIP_GROUP ====
 +<code cpp>void ENTITY::SET_ENTITY_CAN_BE_DAMAGED_BY_RELATIONSHIP_GROUP(Entity entity, BOOL bCanBeDamaged, int relGroup) // 0xE22D8FDE858B8119 0x34165B5D b323</code>
 +
 +==== _0x352E2B5CF420BF3B ====
 +<code cpp>void ENTITY::_0x352E2B5CF420BF3B(Any p0, Any p1) // 0x352E2B5CF420BF3B  b573</code>
 +
 +==== SET_ENTITY_CAN_BE_TARGETED_WITHOUT_LOS ====
 +<code cpp>void ENTITY::SET_ENTITY_CAN_BE_TARGETED_WITHOUT_LOS(Entity entity, BOOL toggle) // 0xD3997889736FD899 0x3B13797C b323</code>
 +
 +<code>Sets whether the entity can be targeted without being in line-of-sight.</code>
 +==== SET_ENTITY_COLLISION ====
 +<code cpp>void ENTITY::SET_ENTITY_COLLISION(Entity entity, BOOL toggle, BOOL keepPhysics) // 0x1A9205C1B9EE827F 0x139FD37D b323</code>
 +
 +==== GET_ENTITY_COLLISION_DISABLED ====
 +<code cpp>BOOL ENTITY::GET_ENTITY_COLLISION_DISABLED(Entity entity) // 0xCCF1E97BEFDAE480 0xE8C0C629 b323</code>
 +
 +==== SET_ENTITY_COMPLETELY_DISABLE_COLLISION ====
 +<code cpp>void ENTITY::SET_ENTITY_COMPLETELY_DISABLE_COLLISION(Entity entity, BOOL toggle, BOOL keepPhysics) // 0x9EBC85ED0FFFE51C 0xBD0D4831 b323</code>
 +
 +==== SET_ENTITY_COORDS ====
 +<code cpp>void ENTITY::SET_ENTITY_COORDS(Entity entity, float xPos, float yPos, float zPos, BOOL xAxis, BOOL yAxis, BOOL zAxis, BOOL clearArea) // 0x06843DA7060A026B 0xDF70B41B b323</code>
 +
 +<code>p7 is always 1 in the scripts. Set to 1, an area around the destination coords for the moved entity is cleared from other entities. 
 + 
 +Often ends with 1, 0, 0, 1); in the scripts. It works. 
 +
 +Axis - Invert Axis Flags</code>
 +==== SET_ENTITY_COORDS_WITHOUT_PLANTS_RESET ====
 +<code cpp>void ENTITY::SET_ENTITY_COORDS_WITHOUT_PLANTS_RESET(Entity entity, float xPos, float yPos, float zPos, BOOL alive, BOOL deadFlag, BOOL ragdollFlag, BOOL clearArea) // 0x621873ECE1178967 0x749B282E b323</code>
 +
 +==== SET_ENTITY_COORDS_NO_OFFSET ====
 +<code cpp>void ENTITY::SET_ENTITY_COORDS_NO_OFFSET(Entity entity, float xPos, float yPos, float zPos, BOOL xAxis, BOOL yAxis, BOOL zAxis) // 0x239A3351AC1DA385 0x4C83DE8D b323</code>
 +
 +<code>Axis - Invert Axis Flags</code>
 +==== SET_ENTITY_DYNAMIC ====
 +<code cpp>void ENTITY::SET_ENTITY_DYNAMIC(Entity entity, BOOL toggle) // 0x1718DE8E3F2823CA 0x236F525B b323</code>
 +
 +==== SET_ENTITY_HEADING ====
 +<code cpp>void ENTITY::SET_ENTITY_HEADING(Entity entity, float heading) // 0x8E2530AA8ADA980E 0xE0FF064D b323</code>
 +
 +<code>Set the heading of an entity in degrees also known as "Yaw".</code>
 +==== SET_ENTITY_HEALTH ====
 +<code cpp>void ENTITY::SET_ENTITY_HEALTH(Entity entity, int health, int p2) // 0x6B76DC1F3AE6E6A3 0xFBCD1831 b323</code>
 +
 +<code>health >= 0
 +male ped ~= 100 - 200
 +female ped ~= 0 - 100</code>
 +==== SET_ENTITY_INVINCIBLE ====
 +<code cpp>void ENTITY::SET_ENTITY_INVINCIBLE(Entity entity, BOOL toggle) // 0x3882114BDE571AD4 0xC1213A21 b323</code>
 +
 +<code>Sets a ped or an object totally invincible. It doesn't take any kind of damage. Peds will not ragdoll on explosions and the tazer animation won't apply either.
 +
 +If you use this for a ped and you want Ragdoll to stay enabled, then do:
 +*(DWORD *)(pedAddress + 0x188) |= (1 << 9);
 +
 +Use this if you want to get the invincibility status:
 +  bool IsPedInvincible(Ped ped)
 + {
 +     auto addr = getScriptHandleBaseAddress(ped);    
 +
 +        if (addr)
 +     {
 +         DWORD flag = *(DWORD *)(addr + 0x188);
 +            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);
 +      }
 +
 +       return false;
 + }</code>
 +==== SET_ENTITY_IS_TARGET_PRIORITY ====
 +<code cpp>void ENTITY::SET_ENTITY_IS_TARGET_PRIORITY(Entity entity, BOOL p1, float p2) // 0xEA02E132F5C68722 0x9729EE32 b323</code>
 +
 +==== SET_ENTITY_LIGHTS ====
 +<code cpp>void ENTITY::SET_ENTITY_LIGHTS(Entity entity, BOOL toggle) // 0x7CFBA6A80BDF3874 0xE8FC85AF b323</code>
 +
 +==== SET_ENTITY_LOAD_COLLISION_FLAG ====
 +<code cpp>void ENTITY::SET_ENTITY_LOAD_COLLISION_FLAG(Entity entity, BOOL toggle, Any p2) // 0x0DC7CABAB1E9B67E 0xC52F295B b323</code>
 +
 +<code>Loads collision grid for an entity spawned outside of a player's loaded area. This allows peds to execute tasks rather than sit dormant because of a lack of a physics grid.
 +Certainly not the main usage of this native but when set to true for a Vehicle, it will prevent the vehicle to explode if it is spawned far away from the player.</code>
 +==== HAS_COLLISION_LOADED_AROUND_ENTITY ====
 +<code cpp>BOOL ENTITY::HAS_COLLISION_LOADED_AROUND_ENTITY(Entity entity) // 0xE9676F61BC0B3321 0x851687F9 b323</code>
 +
 +==== SET_ENTITY_MAX_SPEED ====
 +<code cpp>void ENTITY::SET_ENTITY_MAX_SPEED(Entity entity, float speed) // 0x0E46A3FCBDE2A1B1 0x46AFFED3 b323</code>
 +
 +==== SET_ENTITY_ONLY_DAMAGED_BY_PLAYER ====
 +<code cpp>void ENTITY::SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(Entity entity, BOOL toggle) // 0x79F020FF9EDC0748 0x4B707F50 b323</code>
 +
 +==== SET_ENTITY_ONLY_DAMAGED_BY_RELATIONSHIP_GROUP ====
 +<code cpp>void ENTITY::SET_ENTITY_ONLY_DAMAGED_BY_RELATIONSHIP_GROUP(Entity entity, BOOL p1, Any p2) // 0x7022BD828FA0B082 0x202237E2 b323</code>
 +
 +==== SET_ENTITY_PROOFS ====
 +<code cpp>void ENTITY::SET_ENTITY_PROOFS(Entity entity, BOOL bulletProof, BOOL fireProof, BOOL explosionProof, BOOL collisionProof, BOOL meleeProof, BOOL p6, BOOL p7, BOOL drownProof) // 0xFAEE099C6F890BB8 0x7E9EAB66 b323</code>
 +
 +<code>Enable / disable each type of damage.
 +
 +Can't get drownProof to work.
 +--------------
 +p7 is to to '1' in am_mp_property_ext/int: entity::set_entity_proofs(uParam0->f_19, true, true, true, true, true, true, 1, true);
 +</code>
 +==== _GET_ENTITY_PROOFS ====
 +<code cpp>BOOL ENTITY::_GET_ENTITY_PROOFS(Entity entity, BOOL* bulletProof, BOOL* fireProof, BOOL* explosionProof, BOOL* collisionProof, BOOL* meleeProof, BOOL* steamProof, BOOL* p7, BOOL* drownProof) // 0xBE8CD9BE829BBEBF  b1604</code>
 +
 +==== SET_ENTITY_QUATERNION ====
 +<code cpp>void ENTITY::SET_ENTITY_QUATERNION(Entity entity, float x, float y, float z, float w) // 0x77B21BE7AC540F07 0x83B6046F b323</code>
 +
 +<code>w is the correct parameter name!</code>
 +==== SET_ENTITY_RECORDS_COLLISIONS ====
 +<code cpp>void ENTITY::SET_ENTITY_RECORDS_COLLISIONS(Entity entity, BOOL toggle) // 0x0A50A1EEDAD01E65 0x6B189A1A b323</code>
 +
 +==== SET_ENTITY_ROTATION ====
 +<code cpp>void ENTITY::SET_ENTITY_ROTATION(Entity entity, float pitch, float roll, float yaw, int rotationOrder, BOOL p5) // 0x8524A8B0171D5E07 0x0A345EFE b323</code>
 +
 +<code>rotationOrder refers to the order yaw pitch roll is applied
 +value ranges from 0 to 5. What you use for rotationOrder when setting must be the same as rotationOrder when getting the rotation. 
 +Unsure what value corresponds to what rotation order, more testing will be needed for that.
 +For the most part R* uses 1 or 2 as the order.
 +p5 is usually set as true
 +</code>
 +==== SET_ENTITY_VISIBLE ====
 +<code cpp>void ENTITY::SET_ENTITY_VISIBLE(Entity entity, BOOL toggle, BOOL unk) // 0xEA1C610A04DB6BBB 0xD043E8E1 b323</code>
 +
 +<code>unk was always 0.</code>
 +==== _0xC34BC448DA29F5E9 ====
 +<code cpp>void ENTITY::_0xC34BC448DA29F5E9(Entity entity, BOOL toggle) // 0xC34BC448DA29F5E9  b573</code>
 +
 +<code>SET_ENTITY_*</code>
 +==== _0xE66377CDDADA4810 ====
 +<code cpp>void ENTITY::_0xE66377CDDADA4810(Entity entity, BOOL p1) // 0xE66377CDDADA4810  b1734</code>
 +
 +<code>SET_ENTITY_M*</code>
 +==== SET_ENTITY_VELOCITY ====
 +<code cpp>void ENTITY::SET_ENTITY_VELOCITY(Entity entity, float x, float y, float z) // 0x1C99BB7B6E96D16F 0xFF5A1988 b323</code>
 +
 +<code>Note that the third parameter(denoted as z) is "up and down" with positive numbers encouraging upwards movement.</code>
 +==== SET_ENTITY_HAS_GRAVITY ====
 +<code cpp>void ENTITY::SET_ENTITY_HAS_GRAVITY(Entity entity, BOOL toggle) // 0x4A4722448F18EEF5 0xE2F262BF b323</code>
 +
 +==== SET_ENTITY_LOD_DIST ====
 +<code cpp>void ENTITY::SET_ENTITY_LOD_DIST(Entity entity, int value) // 0x5927F96A78577363 0xD7ACC7AD b323</code>
 +
 +<code>LOD distance can be 0 to 0xFFFF (higher values will result in 0xFFFF) as it is actually stored as a 16-bit value (aka uint16_t).</code>
 +==== GET_ENTITY_LOD_DIST ====
 +<code cpp>int ENTITY::GET_ENTITY_LOD_DIST(Entity entity) // 0x4159C2762B5791D6 0x4DA3D51F b323</code>
 +
 +<code>Returns the LOD distance of an entity.</code>
 +==== SET_ENTITY_ALPHA ====
 +<code cpp>void ENTITY::SET_ENTITY_ALPHA(Entity entity, int alphaLevel, BOOL skin) // 0x44A0870B7E92D7C0 0xAE667CB0 b323</code>
 +
 +<code>skin - everything alpha except skin
 +Set entity alpha level. Ranging from 0 to 255 but chnages occur after every 20 percent (after every 51).</code>
 +==== GET_ENTITY_ALPHA ====
 +<code cpp>int ENTITY::GET_ENTITY_ALPHA(Entity entity) // 0x5A47B3B5E63E94C6 0x1560B017 b323</code>
 +
 +==== RESET_ENTITY_ALPHA ====
 +<code cpp>void ENTITY::RESET_ENTITY_ALPHA(Entity entity) // 0x9B1E824FFBB7027A 0x8A30761C b323</code>
 +
 +==== _0x490861B88F4FD846 ====
 +<code cpp>void ENTITY::_0x490861B88F4FD846(Any p0) // 0x490861B88F4FD846  b944</code>
 +
 +==== _0xCEA7C8E1B48FF68C ====
 +<code cpp>void ENTITY::_0xCEA7C8E1B48FF68C(Any p0, Any p1) // 0xCEA7C8E1B48FF68C  b678</code>
 +
 +==== _0x5C3B791D580E0BC2 ====
 +<code cpp>void ENTITY::_0x5C3B791D580E0BC2(Entity entity, float p1) // 0x5C3B791D580E0BC2  b323</code>
 +
 +<code>Only called once in the scripts.
 +
 +Related to weapon objects.
 +</code>
 +==== SET_ENTITY_ALWAYS_PRERENDER ====
 +<code cpp>void ENTITY::SET_ENTITY_ALWAYS_PRERENDER(Entity entity, BOOL toggle) // 0xACAD101E1FB66689 0xD8FF798A b323</code>
 +
 +==== SET_ENTITY_RENDER_SCORCHED ====
 +<code cpp>void ENTITY::SET_ENTITY_RENDER_SCORCHED(Entity entity, BOOL toggle) // 0x730F5F8D3F0F2050 0xAAC9317B b323</code>
 +
 +==== SET_ENTITY_TRAFFICLIGHT_OVERRIDE ====
 +<code cpp>void ENTITY::SET_ENTITY_TRAFFICLIGHT_OVERRIDE(Entity entity, int state) // 0x57C5DB656185EAC4 0xC47F5B91 b323</code>
 +
 +<code>Example here: www.gtaforums.com/topic/830463-help-with-turning-lights-green-and-causing-peds-to-crash-into-each-other/#entry1068211340
 +
 +0 = green
 +1 = red
 +2 = yellow
 +3 = reset changes
 +changing lights may not change the behavior of vehicles</code>
 +==== _0x78E8E3A640178255 ====
 +<code cpp>void ENTITY::_0x78E8E3A640178255(Entity entity) // 0x78E8E3A640178255  b323</code>
 +
 +<code>Related to cutscene entities. Unsure about the use.
 +
 +SET_ENTITY_*</code>
 +==== CREATE_MODEL_SWAP ====
 +<code cpp>void ENTITY::CREATE_MODEL_SWAP(float x, float y, float z, float radius, Hash originalModel, Hash newModel, BOOL p6) // 0x92C47782FDA8B2A3 0x0BC12F9E b323</code>
 +
 +<code>Only works with objects!
 +Network players do not see changes done with this.
 +- Did ya try modifying p6 lol</code>
 +==== REMOVE_MODEL_SWAP ====
 +<code cpp>void ENTITY::REMOVE_MODEL_SWAP(float x, float y, float z, float radius, Hash originalModel, Hash newModel, BOOL p6) // 0x033C0F9A64E229AE 0xCE0AA8BC b323</code>
 +
 +==== CREATE_MODEL_HIDE ====
 +<code cpp>void ENTITY::CREATE_MODEL_HIDE(float x, float y, float z, float radius, Hash modelHash, BOOL p5) // 0x8A97BCA30A0CE478 0x7BD5CF2F b323</code>
 +
 +<code>p5 = sets as true in scripts
 +Same as the comment for CREATE_MODEL_SWAP unless for some reason p5 affects it this only works with objects as well.
 +
 +Network players do not see changes done with this.</code>
 +==== CREATE_MODEL_HIDE_EXCLUDING_SCRIPT_OBJECTS ====
 +<code cpp>void ENTITY::CREATE_MODEL_HIDE_EXCLUDING_SCRIPT_OBJECTS(float x, float y, float z, float radius, Hash modelHash, BOOL p5) // 0x3A52AE588830BF7F 0x07AAF22C b323</code>
 +
 +==== REMOVE_MODEL_HIDE ====
 +<code cpp>void ENTITY::REMOVE_MODEL_HIDE(float x, float y, float z, float radius, Hash modelHash, BOOL p5) // 0xD9E3006FB3CBD765 0x993DBC10 b323</code>
 +
 +<code>This native makes entities visible that are hidden by the native CREATE_MODEL_HIDE.
 +p5 should be false, true does nothing</code>
 +==== CREATE_FORCED_OBJECT ====
 +<code cpp>void ENTITY::CREATE_FORCED_OBJECT(float x, float y, float z, Any p3, Hash modelHash, BOOL p5) // 0x150E808B375A385A 0x335190A2 b323</code>
 +
 +==== REMOVE_FORCED_OBJECT ====
 +<code cpp>void ENTITY::REMOVE_FORCED_OBJECT(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x61B6775E83C0DB6F 0xAED73ADD b323</code>
 +
 +==== SET_ENTITY_NO_COLLISION_ENTITY ====
 +<code cpp>void ENTITY::SET_ENTITY_NO_COLLISION_ENTITY(Entity entity1, Entity entity2, BOOL thisFrameOnly) // 0xA53ED5520C07654A 0x1E11BFE9 b323</code>
 +
 +<code>Calling this function disables collision between two entities.
 +The importance of the order for entity1 and entity2 is unclear.
 +The third parameter, `thisFrame`, decides whether the collision is to be disabled until it is turned back on, or if it's just this frame.</code>
 +==== SET_ENTITY_MOTION_BLUR ====
 +<code cpp>void ENTITY::SET_ENTITY_MOTION_BLUR(Entity entity, BOOL toggle) // 0x295D82A8559F9150 0xE90005B8 b323</code>
 +
 +==== SET_CAN_AUTO_VAULT_ON_ENTITY ====
 +<code cpp>void ENTITY::SET_CAN_AUTO_VAULT_ON_ENTITY(Entity entity, BOOL toggle) // 0xE12ABE5E3A389A6C 0x44767B31 b323</code>
 +
 +<code>p1 always false.</code>
 +==== SET_CAN_CLIMB_ON_ENTITY ====
 +<code cpp>void ENTITY::SET_CAN_CLIMB_ON_ENTITY(Entity entity, BOOL toggle) // 0xA80AE305E0A3044F 0xE224A6A5 b323</code>
 +
 +<code>p1 always false.</code>
 +==== _0xDC6F8601FAF2E893 ====
 +<code cpp>void ENTITY::_0xDC6F8601FAF2E893(Entity entity, BOOL toggle) // 0xDC6F8601FAF2E893 0xA0466A69 b323</code>
 +
 +<code>SET_*
 +
 +Only called within 1 script for x360. 'fm_mission_controller' and it used on an object. 
 +
 +Ran after these 2 natives,
 +set_object_targettable(uParam0, 0);
 +set_entity_invincible(uParam0, 1);</code>
 +==== _SET_ENTITY_DECALS_DISABLED ====
 +<code cpp>void ENTITY::_SET_ENTITY_DECALS_DISABLED(Entity entity, BOOL p1) // 0x2C2E3DC128F44309  b323</code>
 +
 +<code>SET_ENTITY_*</code>
 +==== _0x1A092BB0C3808B96 ====
 +<code cpp>void ENTITY::_0x1A092BB0C3808B96(Entity entity, BOOL p1) // 0x1A092BB0C3808B96  b323</code>
 +
 +<code>SET_ENTITY_*</code>
 +==== _GET_ENTITY_BONE_ROTATION ====
 +<code cpp>Vector3 ENTITY::_GET_ENTITY_BONE_ROTATION(Entity entity, int boneIndex) // 0xCE6294A232D03786  b791</code>
 +
 +<code>Gets the world rotation of the specified bone of the specified entity.</code>
 +==== _GET_ENTITY_BONE_POSITION_2 ====
 +<code cpp>Vector3 ENTITY::_GET_ENTITY_BONE_POSITION_2(Entity entity, int boneIndex) // 0x46F8696933A63C9B  b877</code>
 +
 +<code>Gets the world rotation of the specified bone of the specified entity.
 +This native is used in casinoroulette.c but I don't know yet what is the difference with _GET_ENTITY_BONE_ROTATION</code>
 +==== _GET_ENTITY_BONE_ROTATION_LOCAL ====
 +<code cpp>Vector3 ENTITY::_GET_ENTITY_BONE_ROTATION_LOCAL(Entity entity, int boneIndex) // 0xBD8D32550E5CEBFE  b1734</code>
 +
 +<code>Gets the local rotation of the specified bone of the specified entity.</code>
 +==== _GET_ENTITY_BONE_COUNT ====
 +<code cpp>int ENTITY::_GET_ENTITY_BONE_COUNT(Entity entity) // 0xB328DCC3A3AA401B  b791</code>
 +
 +==== _ENABLE_ENTITY_UNK ====
 +<code cpp>void ENTITY::_ENABLE_ENTITY_UNK(Entity entity) // 0x6CE177D014502E8A  b877</code>
 +
 +<code>ENABLE_*</code>
 +==== _0xB17BC6453F6CF5AC ====
 +<code cpp>void ENTITY::_0xB17BC6453F6CF5AC(Any p0, Any p1) // 0xB17BC6453F6CF5AC  b944</code>
 +
 +==== _0x68B562E124CC0AEF ====
 +<code cpp>void ENTITY::_0x68B562E124CC0AEF(Pickup pickup, Pickup pickup2) // 0x68B562E124CC0AEF  b1180</code>
 +
 +<code>Puts pickup2 ptr somewhere in pickup?</code>
 +==== _0x36F32DE87082343E ====
 +<code cpp>void ENTITY::_0x36F32DE87082343E(Any p0, Any p1) // 0x36F32DE87082343E  b1011</code>
 +
 +==== _GET_ENTITY_PICKUP ====
 +<code cpp>Entity ENTITY::_GET_ENTITY_PICKUP(Entity entity, Hash modelHash) // 0x1F922734E259BD26  b1180</code>
 +
 +<code>GET_ENTITY_*
 +
 +Seems to return the handle of the entity's portable pickup.</code>
 +==== _0xD7B80E7C3BEFC396 ====
 +<code cpp>void ENTITY::_0xD7B80E7C3BEFC396(Pickup pickup, BOOL toggle) // 0xD7B80E7C3BEFC396  b1180</code>
 +
 +<code>Sets 32nd bit of pickup+188
 +SET_PICKUP_??</code>
 +
 +===== EVENT =====
 +==== SET_DECISION_MAKER ====
 +<code cpp>void EVENT::SET_DECISION_MAKER(Ped ped, Hash name) // 0xB604A2942ADED0EE 0x19CEAC9E b323</code>
 +
 +==== CLEAR_DECISION_MAKER_EVENT_RESPONSE ====
 +<code cpp>void EVENT::CLEAR_DECISION_MAKER_EVENT_RESPONSE(Hash name, int eventType) // 0x4FC9381A7AEE8968 0x07ABD94D b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== BLOCK_DECISION_MAKER_EVENT ====
 +<code cpp>void EVENT::BLOCK_DECISION_MAKER_EVENT(Hash name, int eventType) // 0xE42FCDFD0E4196F7 0x57506EA6 b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
 +
 +This is limited to 4 blocked events at a time.</code>
 +==== UNBLOCK_DECISION_MAKER_EVENT ====
 +<code cpp>void EVENT::UNBLOCK_DECISION_MAKER_EVENT(Hash name, int eventType) // 0xD7CD9CF34F2C99E8 0x62A3161D b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== ADD_SHOCKING_EVENT_AT_POSITION ====
 +<code cpp>ScrHandle EVENT::ADD_SHOCKING_EVENT_AT_POSITION(int eventType, float x, float y, float z, float duration) // 0xD9F8455409B525E9 0x0B30F779 b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== ADD_SHOCKING_EVENT_FOR_ENTITY ====
 +<code cpp>ScrHandle EVENT::ADD_SHOCKING_EVENT_FOR_ENTITY(int eventType, Entity entity, float duration) // 0x7FD8F3BE76F89422 0xA81B5B71 b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== IS_SHOCKING_EVENT_IN_SPHERE ====
 +<code cpp>BOOL EVENT::IS_SHOCKING_EVENT_IN_SPHERE(int eventType, float x, float y, float z, float radius) // 0x1374ABB7C15BAB92 0x2F98823E b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== REMOVE_SHOCKING_EVENT ====
 +<code cpp>BOOL EVENT::REMOVE_SHOCKING_EVENT(ScrHandle event) // 0x2CDA538C44C6CCE5 0xF82D5A87 b323</code>
 +
 +==== REMOVE_ALL_SHOCKING_EVENTS ====
 +<code cpp>void EVENT::REMOVE_ALL_SHOCKING_EVENTS(BOOL p0) // 0xEAABE8FDFA21274C 0x64DF6282 b323</code>
 +
 +==== REMOVE_SHOCKING_EVENT_SPAWN_BLOCKING_AREAS ====
 +<code cpp>void EVENT::REMOVE_SHOCKING_EVENT_SPAWN_BLOCKING_AREAS() // 0x340F1415B68AEADE 0xA0CE89C8 b323</code>
 +
 +==== SUPPRESS_SHOCKING_EVENTS_NEXT_FRAME ====
 +<code cpp>void EVENT::SUPPRESS_SHOCKING_EVENTS_NEXT_FRAME() // 0x2F9A292AD0A3BD89 0x4CC674B5 b323</code>
 +
 +==== SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME ====
 +<code cpp>void EVENT::SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME(int eventType) // 0x3FD2EC8BF1F1CF30 0xA0FDCB82 b323</code>
 +
 +<code>eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt</code>
 +==== SUPPRESS_AGITATION_EVENTS_NEXT_FRAME ====
 +<code cpp>void EVENT::SUPPRESS_AGITATION_EVENTS_NEXT_FRAME() // 0x5F3B7749C112D552 0x80340396 b323</code>
 +
 +
 +===== FILES =====
 +==== GET_NUM_TATTOO_SHOP_DLC_ITEMS ====
 +<code cpp>int FILES::GET_NUM_TATTOO_SHOP_DLC_ITEMS(int character) // 0x278F76C3B0A8F109 0x71D0CF3E b323</code>
 +
 +<code>Character types:
 +0 = Michael, 
 +1 = Franklin, 
 +2 = Trevor, 
 +3 = MPMale, 
 +4 = MPFemale</code>
 +==== GET_TATTOO_SHOP_DLC_ITEM_DATA ====
 +<code cpp>BOOL FILES::GET_TATTOO_SHOP_DLC_ITEM_DATA(int characterType, int decorationIndex, Any* outComponent) // 0xFF56381874F82086 0x2E9D628C b323</code>
 +
 +<code>Character types:
 +0 = Michael, 
 +1 = Franklin, 
 +2 = Trevor, 
 +3 = MPMale, 
 +4 = MPFemale
 +
 +
 +enum TattooZoneData
 +{  
 +    ZONE_TORSO = 0,  
 +    ZONE_HEAD = 1,  
 +    ZONE_LEFT_ARM = 2,  
 +    ZONE_RIGHT_ARM = 3,  
 +    ZONE_LEFT_LEG = 4,  
 +    ZONE_RIGHT_LEG = 5,  
 +    ZONE_UNKNOWN = 6,
 +    ZONE_NONE = 7,  
 +};
 +struct outComponent
 +{
 +    // these vars are suffixed with 4 bytes of padding each.
 +    uint unk;
 +    int unk2;
 +    uint tattooCollectionHash;
 +    uint tattooNameHash;
 +    int unk3;
 +    TattooZoneData zoneId;
 +    uint unk4;
 +    uint unk5;
 +    // maybe more, not sure exactly, decompiled scripts are very vague around this part.
 +}</code>
 +==== _0x10144267DD22866C ====
 +<code cpp>int FILES::_0x10144267DD22866C(Hash overlayHash, Any p1, int character) // 0x10144267DD22866C  b2189</code>
 +
 +<code>Returns some sort of index/offset for overlays/decorations.
 +
 +Character types:
 +0 = Michael, 
 +1 = Franklin, 
 +2 = Trevor, 
 +3 = MPMale, 
 +4 = MPFemale</code>
 +==== INIT_SHOP_PED_COMPONENT ====
 +<code cpp>void FILES::INIT_SHOP_PED_COMPONENT(Any* outComponent) // 0x1E8C308FD312C036 0xB818C7FC b323</code>
 +
 +==== INIT_SHOP_PED_PROP ====
 +<code cpp>void FILES::INIT_SHOP_PED_PROP(Any* outProp) // 0xEB0A2B758F7B850F 0xF5659E50 b323</code>
 +
 +==== SETUP_SHOP_PED_APPAREL_QUERY ====
 +<code cpp>int FILES::SETUP_SHOP_PED_APPAREL_QUERY(int p0, int p1, int p2, int p3) // 0x50F457823CE6EB5F 0xC937FF3D b323</code>
 +
 +==== SETUP_SHOP_PED_APPAREL_QUERY_TU ====
 +<code cpp>int FILES::SETUP_SHOP_PED_APPAREL_QUERY_TU(int character, int p1, int p2, BOOL p3, int p4, int componentId) // 0x9BDF59818B1E38C1 0x594E862C b323</code>
 +
 +<code>character is 0 for Michael, 1 for Franklin, 2 for Trevor, 3 for freemode male, and 4 for freemode female.
 +
 +componentId is between 0 and 11 and corresponds to the usual component slots.
 +
 +p1 could be the outfit number; unsure.
 +
 +p2 is usually -1; unknown function.
 +
 +p3 appears to be for selecting between clothes and props; false is used with components/clothes, true is used with props.
 +
 +p4 is usually -1; unknown function.
 +
 +componentId is -1 when p3 is true in decompiled scripts.</code>
 +==== GET_SHOP_PED_QUERY_COMPONENT ====
 +<code cpp>void FILES::GET_SHOP_PED_QUERY_COMPONENT(int componentId, Any* outComponent) // 0x249E310B2D920699 0xC0718904 b323</code>
 +
 +<code>See https://git.io/JtcRf for example and structs.</code>
 +==== _0x96E2929292A4DB77 ====
 +<code cpp>int FILES::_0x96E2929292A4DB77(Hash componentHash) // 0x96E2929292A4DB77  b2189</code>
 +
 +<code>Returns some sort of index/offset for components.
 +Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = false and componentId with the drawable's component slot first, returns -1 otherwise.</code>
 +==== GET_SHOP_PED_COMPONENT ====
 +<code cpp>void FILES::GET_SHOP_PED_COMPONENT(Hash componentHash, Any* outComponent) // 0x74C0E2A57EC66760 0xB39677C5 b323</code>
 +
 +<code>More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86</code>
 +==== GET_SHOP_PED_QUERY_PROP ====
 +<code cpp>void FILES::GET_SHOP_PED_QUERY_PROP(int componentId, Any* outProp) // 0xDE44A00999B2837D 0x1D3C1466 b323</code>
 +
 +<code>See https://git.io/JtcRf for example and structs.</code>
 +==== _0x6CEBE002E58DEE97 ====
 +<code cpp>int FILES::_0x6CEBE002E58DEE97(Hash componentHash) // 0x6CEBE002E58DEE97  b2189</code>
 +
 +<code>Returns some sort of index/offset for props.
 +Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = true and componentId = -1 first, returns -1 otherwise.</code>
 +==== GET_SHOP_PED_PROP ====
 +<code cpp>void FILES::GET_SHOP_PED_PROP(Hash componentHash, Any* outProp) // 0x5D5CAFF661DDF6FC 0xDB0A7A58 b323</code>
 +
 +<code>More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86</code>
 +==== GET_HASH_NAME_FOR_COMPONENT ====
 +<code cpp>Hash FILES::GET_HASH_NAME_FOR_COMPONENT(Entity entity, int componentId, int drawableVariant, int textureVariant) // 0x0368B3A838070348 0xC8A4BF12 b323</code>
 +
 +==== GET_HASH_NAME_FOR_PROP ====
 +<code cpp>Hash FILES::GET_HASH_NAME_FOR_PROP(Entity entity, int componentId, int propIndex, int propTextureIndex) // 0x5D6160275CAEC8DD 0x7D876DC0 b323</code>
 +
 +==== GET_SHOP_PED_APPAREL_VARIANT_COMPONENT_COUNT ====
 +<code cpp>int FILES::GET_SHOP_PED_APPAREL_VARIANT_COMPONENT_COUNT(Hash componentHash) // 0xC17AD0E5752BECDA 0x159751B4 b323</code>
 +
 +==== _GET_SHOP_PED_APPAREL_VARIANT_PROP_COUNT ====
 +<code cpp>int FILES::_GET_SHOP_PED_APPAREL_VARIANT_PROP_COUNT(Hash propHash) // 0xD40AAC51E8E4C663  b791</code>
 +
 +<code>`propHash`: Ped helmet prop hash?
 +This native returns 1 when the player helmet has a visor (there is another prop index for the same helmet with closed/opened visor variant) that can be toggled. 0 if there's no alternative version with a visor for this helmet prop.</code>
 +==== GET_VARIANT_COMPONENT ====
 +<code cpp>void FILES::GET_VARIANT_COMPONENT(Hash componentHash, int variantComponentIndex, Hash* nameHash, int* enumValue, int* componentType) // 0x6E11F282F11863B6 0xE4FF7103 b323</code>
 +
 +==== _GET_VARIANT_PROP ====
 +<code cpp>void FILES::_GET_VARIANT_PROP(Hash componentHash, int variantPropIndex, Hash* nameHash, int* enumValue, int* anchorPoint) // 0xD81B7F27BC773E66  b791</code>
 +
 +==== GET_SHOP_PED_APPAREL_FORCED_COMPONENT_COUNT ====
 +<code cpp>int FILES::GET_SHOP_PED_APPAREL_FORCED_COMPONENT_COUNT(Hash componentHash) // 0xC6B9DB42C04DD8C3 0xCE70F183 b323</code>
 +
 +<code>Returns number of possible values of the forcedComponentIndex argument of GET_FORCED_COMPONENT.</code>
 +==== GET_SHOP_PED_APPAREL_FORCED_PROP_COUNT ====
 +<code cpp>int FILES::GET_SHOP_PED_APPAREL_FORCED_PROP_COUNT(Hash componentHash) // 0x017568A8182D98A6 0xC560D7C0 b323</code>
 +
 +<code>Returns number of possible values of the forcedPropIndex argument of GET_FORCED_PROP.</code>
 +==== GET_FORCED_COMPONENT ====
 +<code cpp>void FILES::GET_FORCED_COMPONENT(Hash componentHash, int forcedComponentIndex, Hash* nameHash, int* enumValue, int* componentType) // 0x6C93ED8C2F74859B 0x382C70BE b323</code>
 +
 +==== GET_FORCED_PROP ====
 +<code cpp>void FILES::GET_FORCED_PROP(Hash componentHash, int forcedPropIndex, Hash* nameHash, int* enumValue, int* anchorPoint) // 0xE1CA84EBF72E691D 0x22DAE257 b323</code>
 +
 +==== DOES_SHOP_PED_APPAREL_HAVE_RESTRICTION_TAG ====
 +<code cpp>BOOL FILES::DOES_SHOP_PED_APPAREL_HAVE_RESTRICTION_TAG(Hash componentHash, Hash restrictionTagHash, int componentId) // 0x341DE7ED1D2A1BFD 0x8E2C7FD5 b323</code>
 +
 +<code>Full list of restriction tags by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedApparelRestrictionTags.json
 +
 +componentId/last parameter seems to be unused.</code>
 +==== SETUP_SHOP_PED_OUTFIT_QUERY ====
 +<code cpp>int FILES::SETUP_SHOP_PED_OUTFIT_QUERY(int character, BOOL p1) // 0xF3FBE2D50A6A8C28 0x1ECD23E7 b323</code>
 +
 +<code>characters
 +
 +0: Michael
 +1: Franklin
 +2: Trevor
 +3: MPMale
 +4: MPFemale</code>
 +==== GET_SHOP_PED_QUERY_OUTFIT ====
 +<code cpp>void FILES::GET_SHOP_PED_QUERY_OUTFIT(int outfitIndex, Any* outfit) // 0x6D793F03A631FE56 0x2F8013A1 b323</code>
 +
 +<code>outfitIndex: from 0 to _GET_NUM_SHOP_PED_OUTFITS(characterIndex, false) - 1.
 +See https://git.io/JtcB8 for example and outfit struct.</code>
 +==== GET_SHOP_PED_OUTFIT ====
 +<code cpp>void FILES::GET_SHOP_PED_OUTFIT(Any p0, Any* p1) // 0xB7952076E444979D 0xCAFE9209 b323</code>
 +
 +==== GET_SHOP_PED_OUTFIT_LOCATE ====
 +<code cpp>int FILES::GET_SHOP_PED_OUTFIT_LOCATE(Any p0) // 0x073CA26B079F956E 0x2798F56F b323</code>
 +
 +==== GET_SHOP_PED_OUTFIT_PROP_VARIANT ====
 +<code cpp>BOOL FILES::GET_SHOP_PED_OUTFIT_PROP_VARIANT(Hash outfitHash, int variantIndex, Any* outPropVariant) // 0xA9F9C2E0FDE11CBB 0x6641A864 b323</code>
 +
 +<code>See https://git.io/JtcBH for example and structs.</code>
 +==== GET_SHOP_PED_OUTFIT_COMPONENT_VARIANT ====
 +<code cpp>BOOL FILES::GET_SHOP_PED_OUTFIT_COMPONENT_VARIANT(Hash outfitHash, int variantIndex, Any* outComponentVariant) // 0x19F2A026EDF0013F 0x818534AC b323</code>
 +
 +<code>See https://git.io/JtcBH for example and structs.</code>
 +==== GET_NUM_DLC_VEHICLES ====
 +<code cpp>int FILES::GET_NUM_DLC_VEHICLES() // 0xA7A866D21CD2329B 0x8EAF9CF6 b323</code>
 +
 +==== GET_DLC_VEHICLE_MODEL ====
 +<code cpp>Hash FILES::GET_DLC_VEHICLE_MODEL(int dlcVehicleIndex) // 0xECC01B7C5763333C 0xA2201E09 b323</code>
 +
 +<code>dlcVehicleIndex is 0 to GET_NUM_DLC_VEHICLS() - 1</code>
 +==== GET_DLC_VEHICLE_DATA ====
 +<code cpp>BOOL FILES::GET_DLC_VEHICLE_DATA(int dlcVehicleIndex, int* outData) // 0x33468EDC08E371F6 0xCF428FA4 b323</code>
 +
 +<code>dlcVehicleIndex takes a number from 0 - GET_NUM_DLC_VEHICLES() - 1.
 +outData is a struct of 3 8-byte items.
 +The Second item in the struct *(Hash *)(outData + 1) is the vehicle hash.</code>
 +==== GET_DLC_VEHICLE_FLAGS ====
 +<code cpp>int FILES::GET_DLC_VEHICLE_FLAGS(int dlcVehicleIndex) // 0x5549EE11FA22FCF2 0xAB12738C b323</code>
 +
 +==== GET_NUM_DLC_WEAPONS ====
 +<code cpp>int FILES::GET_NUM_DLC_WEAPONS() // 0xEE47635F352DA367 0x2B757E6C b323</code>
 +
 +<code>Returns the total number of DLC weapons.</code>
 +==== _GET_NUM_DLC_WEAPONS_SP ====
 +<code cpp>int FILES::_GET_NUM_DLC_WEAPONS_SP() // 0x4160B65AE085B5A9  b2060</code>
 +
 +<code>Returns the total number of DLC weapons that are available in SP (availableInSP field in shop_weapon.meta).</code>
 +==== GET_DLC_WEAPON_DATA ====
 +<code cpp>BOOL FILES::GET_DLC_WEAPON_DATA(int dlcWeaponIndex, int* outData) // 0x79923CD21BECE14E 0xD88EC8EA b323</code>
 +
 +<code>
 +dlcWeaponIndex takes a number from 0 - GET_NUM_DLC_WEAPONS() - 1.
 +struct DlcWeaponData
 +{
 +int emptyCheck; //use DLC1::_IS_DLC_DATA_EMPTY on this
 +int padding1;
 +int weaponHash;
 +int padding2;
 +int unk;
 +int padding3;
 +int weaponCost;
 +int padding4;
 +int ammoCost;
 +int padding5;
 +int ammoType;
 +int padding6;
 +int defaultClipSize;
 +int padding7;
 +char nameLabel[64];
 +char descLabel[64];
 +char desc2Label[64]; // usually "the" + name
 +char upperCaseNameLabel[64];
 +};</code>
 +==== _GET_DLC_WEAPON_DATA_SP ====
 +<code cpp>BOOL FILES::_GET_DLC_WEAPON_DATA_SP(int dlcWeaponIndex, int* outData) // 0x310836EE7129BA33  b2060</code>
 +
 +<code>Same as GET_DLC_WEAPON_DATA but only works for DLC weapons that are available in SP.</code>
 +==== GET_NUM_DLC_WEAPON_COMPONENTS ====
 +<code cpp>int FILES::GET_NUM_DLC_WEAPON_COMPONENTS(int dlcWeaponIndex) // 0x405425358A7D61FE 0x476B23A9 b323</code>
 +
 +<code>Returns the total number of DLC weapon components.</code>
 +==== _GET_NUM_DLC_WEAPON_COMPONENTS_SP ====
 +<code cpp>int FILES::_GET_NUM_DLC_WEAPON_COMPONENTS_SP(int dlcWeaponIndex) // 0xAD2A7A6DFF55841B  b2060</code>
 +
 +<code>Returns the total number of DLC weapon components that are available in SP.</code>
 +==== GET_DLC_WEAPON_COMPONENT_DATA ====
 +<code cpp>BOOL FILES::GET_DLC_WEAPON_COMPONENT_DATA(int dlcWeaponIndex, int dlcWeapCompIndex, int* ComponentDataPtr) // 0x6CF598A2957C2BF8 0x4B83FCAF b323</code>
 +
 +<code>p0 seems to be the weapon index
 +p1 seems to be the weapon component index
 +struct DlcComponentData{
 +int attachBone;
 +int padding1;
 +int bActiveByDefault;
 +int padding2;
 +int unk;
 +int padding3;
 +int componentHash;
 +int padding4;
 +int unk2;
 +int padding5;
 +int componentCost;
 +int padding6;
 +char nameLabel[64];
 +char descLabel[64];
 +};
 +</code>
 +==== _GET_DLC_WEAPON_COMPONENT_DATA_SP ====
 +<code cpp>BOOL FILES::_GET_DLC_WEAPON_COMPONENT_DATA_SP(int dlcWeaponIndex, int dlcWeapCompIndex, int* ComponentDataPtr) // 0x31D5E073B6F93CDC  b2060</code>
 +
 +<code>Same as GET_DLC_WEAPON_COMPONENT_DATA but only works for DLC components that are available in SP.</code>
 +==== IS_CONTENT_ITEM_LOCKED ====
 +<code cpp>BOOL FILES::IS_CONTENT_ITEM_LOCKED(Hash itemHash) // 0xD4D7B033C3AA243C 0x06396058 b323</code>
 +
 +==== IS_DLC_VEHICLE_MOD ====
 +<code cpp>BOOL FILES::IS_DLC_VEHICLE_MOD(Hash hash) // 0x0564B9FF9631B82C 0x35BCA844 b323</code>
 +
 +==== GET_DLC_VEHICLE_MOD_LOCK_HASH ====
 +<code cpp>Hash FILES::GET_DLC_VEHICLE_MOD_LOCK_HASH(Hash hash) // 0xC098810437312FFF 0x59352658 b323</code>
 +
 +==== _LOAD_CONTENT_CHANGE_SET_GROUP ====
 +<code cpp>void FILES::_LOAD_CONTENT_CHANGE_SET_GROUP(Hash hash) // 0x6BEDF5769AC2DC07  b1604</code>
 +
 +<code>From fm_deathmatch_creator and fm_race_creator:
 +
 +FILES::_UNLOAD_CONTENT_CHANGE_SET_GROUP(joaat("GROUP_MAP_SP"));
 +FILES::_LOAD_CONTENT_CHANGE_SET_GROUP(joaat("GROUP_MAP"));</code>
 +==== _UNLOAD_CONTENT_CHANGE_SET_GROUP ====
 +<code cpp>void FILES::_UNLOAD_CONTENT_CHANGE_SET_GROUP(Hash hash) // 0x3C1978285B036B25  b1604</code>
 +
 +<code>From fm_deathmatch_creator and fm_race_creator:
 +
 +FILES::_UNLOAD_CONTENT_CHANGE_SET_GROUP(joaat("GROUP_MAP_SP"));
 +FILES::_LOAD_CONTENT_CHANGE_SET_GROUP(joaat("GROUP_MAP"));</code>
 +
 +===== FIRE =====
 +==== START_SCRIPT_FIRE ====
 +<code cpp>FireId FIRE::START_SCRIPT_FIRE(float X, float Y, float Z, int maxChildren, BOOL isGasFire) // 0x6B83617E04503888 0xE7529357 b323</code>
 +
 +<code>Starts a fire:
 +
 +xyz: Location of fire
 +maxChildren: The max amount of times a fire can spread to other objects. Must be 25 or less, or the function will do nothing.
 +isGasFire: Whether or not the fire is powered by gasoline.</code>
 +==== REMOVE_SCRIPT_FIRE ====
 +<code cpp>void FIRE::REMOVE_SCRIPT_FIRE(FireId fireHandle) // 0x7FF548385680673F 0x6B21FE26 b323</code>
 +
 +==== START_ENTITY_FIRE ====
 +<code cpp>FireId FIRE::START_ENTITY_FIRE(Entity entity) // 0xF6A9D9708F6F23DF 0x8928428E b323</code>
 +
 +==== STOP_ENTITY_FIRE ====
 +<code cpp>void FIRE::STOP_ENTITY_FIRE(Entity entity) // 0x7F0DD2EBBB651AFF 0xCE8C9066 b323</code>
 +
 +==== IS_ENTITY_ON_FIRE ====
 +<code cpp>BOOL FIRE::IS_ENTITY_ON_FIRE(Entity entity) // 0x28D3FED7190D3A0B 0x8C73E64F b323</code>
 +
 +==== GET_NUMBER_OF_FIRES_IN_RANGE ====
 +<code cpp>int FIRE::GET_NUMBER_OF_FIRES_IN_RANGE(float x, float y, float z, float radius) // 0x50CAD495A460B305 0x654D93B7 b323</code>
 +
 +==== _SET_FIRE_SPREAD_RATE ====
 +<code cpp>void FIRE::_SET_FIRE_SPREAD_RATE(float p0) // 0x8F390AC4155099BA  b1734</code>
 +
 +<code>SET_FIRE_*</code>
 +==== STOP_FIRE_IN_RANGE ====
 +<code cpp>void FIRE::STOP_FIRE_IN_RANGE(float x, float y, float z, float radius) // 0x056A8A219B8E829F 0x725C7205 b323</code>
 +
 +==== GET_CLOSEST_FIRE_POS ====
 +<code cpp>BOOL FIRE::GET_CLOSEST_FIRE_POS(Vector3* outPosition, float x, float y, float z) // 0x352A9F6BCF90081F 0xC4977B47 b323</code>
 +
 +<code>Returns TRUE if it found something. FALSE if not.</code>
 +==== ADD_EXPLOSION ====
 +<code cpp>void FIRE::ADD_EXPLOSION(float x, float y, float z, int explosionType, float damageScale, BOOL isAudible, BOOL isInvisible, float cameraShake, BOOL noDamage) // 0xE3AD2BDBAEE269AC 0x10AF5258 b323</code>
 +
 +<code>BOOL isAudible = If explosion makes a sound.
 +BOOL isInvisible = If the explosion is invisible or not.
 +
 +explosionType: https://alloc8or.re/gta5/doc/enums/eExplosionTag.txt</code>
 +==== ADD_OWNED_EXPLOSION ====
 +<code cpp>void FIRE::ADD_OWNED_EXPLOSION(Ped ped, float x, float y, float z, int explosionType, float damageScale, BOOL isAudible, BOOL isInvisible, float cameraShake) // 0x172AA1B624FA1013 0x27EE0D67 b323</code>
 +
 +<code>isAudible: If explosion makes a sound.
 +isInvisible: If the explosion is invisible or not.
 +explosionType: See ADD_EXPLOSION.</code>
 +==== ADD_EXPLOSION_WITH_USER_VFX ====
 +<code cpp>void FIRE::ADD_EXPLOSION_WITH_USER_VFX(float x, float y, float z, int explosionType, Hash explosionFx, float damageScale, BOOL isAudible, BOOL isInvisible, float cameraShake) // 0x36DD3FE58B5E5212 0xCF358946 b323</code>
 +
 +<code>isAudible: If explosion makes a sound.
 +isInvisible: If the explosion is invisible or not.
 +explosionType: See ADD_EXPLOSION.</code>
 +==== IS_EXPLOSION_IN_AREA ====
 +<code cpp>BOOL FIRE::IS_EXPLOSION_IN_AREA(int explosionType, float x1, float y1, float z1, float x2, float y2, float z2) // 0x2E2EBA0EE7CED0E0 0xFB40075B b323</code>
 +
 +<code>explosionType: See ADD_EXPLOSION.</code>
 +==== IS_EXPLOSION_ACTIVE_IN_AREA ====
 +<code cpp>BOOL FIRE::IS_EXPLOSION_ACTIVE_IN_AREA(int explosionType, float x1, float y1, float z1, float x2, float y2, float z2) // 0x6070104B699B2EF4 0x37C388DB b323</code>
 +
 +<code>explosionType: See ADD_EXPLOSION.</code>
 +==== IS_EXPLOSION_IN_SPHERE ====
 +<code cpp>BOOL FIRE::IS_EXPLOSION_IN_SPHERE(int explosionType, float x, float y, float z, float radius) // 0xAB0F816885B0E483 0xD455A7F3 b323</code>
 +
 +<code>explosionType: See ADD_EXPLOSION.</code>
 +==== _GET_ENTITY_INSIDE_EXPLOSION_SPHERE ====
 +<code cpp>Entity FIRE::_GET_ENTITY_INSIDE_EXPLOSION_SPHERE(int explosionType, float x, float y, float z, float radius) // 0xB3CD51E3DB86F176  b1290</code>
 +
 +<code>explosionType: See ADD_EXPLOSION.</code>
 +==== IS_EXPLOSION_IN_ANGLED_AREA ====
 +<code cpp>BOOL FIRE::IS_EXPLOSION_IN_ANGLED_AREA(int explosionType, float x1, float y1, float z1, float x2, float y2, float z2, float width) // 0xA079A6C51525DC4B 0x0128FED9 b323</code>
 +
 +<code>explosionType: See ADD_EXPLOSION, -1 for any explosion type
 +</code>
 +==== _GET_ENTITY_INSIDE_EXPLOSION_AREA ====
 +<code cpp>Entity FIRE::_GET_ENTITY_INSIDE_EXPLOSION_AREA(int explosionType, float x1, float y1, float z1, float x2, float y2, float z2, float radius) // 0x14BA4BA137AF6CEC 0xAEC0D176 b323</code>
 +
 +<code>Returns a handle to the first entity within the a circle spawned inside the 2 points from a radius.
 +
 +explosionType: See ADD_EXPLOSION.</code>
 +
 +===== GRAPHICS =====
 +==== SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE ====
 +<code cpp>void GRAPHICS::SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(BOOL enabled) // 0x175B6BFC15CDD0C5 0x1418CA37 b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_DEBUG_LINE ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_LINE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0x7FDFADE676AA3CB0 0xABF783AB b323</code>
 +
 +==== DRAW_DEBUG_LINE_WITH_TWO_COLOURS ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_LINE_WITH_TWO_COLOURS(float x1, float y1, float z1, float x2, float y2, float z2, int r1, int g1, int b1, int r2, int g2, int b2, int alpha1, int alpha2) // 0xD8B9A8AC5608FF94 0xE8BFF632 b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_DEBUG_SPHERE ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_SPHERE(float x, float y, float z, float radius, int red, int green, int blue, int alpha) // 0xAAD68E1AB39DA632 0x304D0EEF b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_DEBUG_BOX ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_BOX(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0x083A2CA4F2E573BD 0x8524A848 b323</code>
 +
 +==== DRAW_DEBUG_CROSS ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_CROSS(float x, float y, float z, float size, int red, int green, int blue, int alpha) // 0x73B1189623049839 0xB6DF3709 b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_DEBUG_TEXT ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_TEXT(const char* text, float x, float y, float z, int red, int green, int blue, int alpha) // 0x3903E216620488E8 0x269B006F b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_DEBUG_TEXT_2D ====
 +<code cpp>void GRAPHICS::DRAW_DEBUG_TEXT_2D(const char* text, float x, float y, float z, int red, int green, int blue, int alpha) // 0xA3BB2E9555C05A8F 0x528B973B b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== DRAW_LINE ====
 +<code cpp>void GRAPHICS::DRAW_LINE(float x1, float y1, float z1, float x2, float y2, float z2, int red, int green, int blue, int alpha) // 0x6B7256074AE34680 0xB3426BCC b323</code>
 +
 +<code>Draws a depth-tested line from one point to another.
 +----------------
 +x1, y1, z1 : Coordinates for the first point
 +x2, y2, z2 : Coordinates for the second point
 +r, g, b, alpha : Color with RGBA-Values
 +I recommend using a predefined function to call this.
 +[VB.NET]
 +Public Sub DrawLine(from As Vector3, [to] As Vector3, col As Color)
 +    [Function].Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, [to].X, [to].Y, [to].Z, col.R, col.G, col.B, col.A)
 +End Sub
 +
 +[C#]
 +public void DrawLine(Vector3 from, Vector3 to, Color col)
 +{
 +    Function.Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, to.X, to.Y, to.Z, col.R, col.G, col.B, col.A);
 +}</code>
 +==== DRAW_POLY ====
 +<code cpp>void GRAPHICS::DRAW_POLY(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, int red, int green, int blue, int alpha) // 0xAC26716048436851 0xABD19253 b323</code>
 +
 +<code>x/y/z - Location of a vertex (in world coords), presumably.
 +----------------
 +x1, y1, z1     : Coordinates for the first point
 +x2, y2, z2     : Coordinates for the second point
 +x3, y3, z3     : Coordinates for the third point
 +r, g, b, alpha : Color with RGBA-Values
 +
 +Keep in mind that only one side of the drawn triangle is visible: It's the side, in which the vector-product of the vectors heads to: (b-a)x(c-a) Or (b-a)x(c-b).
 +But be aware: The function seems to work somehow differently. I have trouble having them drawn in rotated orientation. Try it yourself and if you somehow succeed, please edit this and post your solution.
 +I recommend using a predefined function to call this.
 +[VB.NET]
 +Public Sub DrawPoly(a As Vector3, b As Vector3, c As Vector3, col As Color)
 +    [Function].Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A)
 +End Sub
 +
 +[C#]
 +public void DrawPoly(Vector3 a, Vector3 b, Vector3 c, Color col)
 +{
 +    Function.Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A);
 +}
 +BTW: Intersecting triangles are not supported: They overlap in the order they were called.</code>
 +==== _DRAW_SPRITE_POLY ====
 +<code cpp>void GRAPHICS::_DRAW_SPRITE_POLY(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, int red, int green, int blue, int alpha, const char* textureDict, const char* textureName, float u1, float v1, float w1, float u2, float v2, float w2, float u3, float v3, float w3) // 0x29280002282F1928  b877</code>
 +
 +<code>Used for drawling Deadline trailing lights, see deadline.ytd
 +
 +p15 through p23 are values that appear to be related to illiumation, scaling, and rotation; more testing required.
 +For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.</code>
 +==== _DRAW_SPRITE_POLY_2 ====
 +<code cpp>void GRAPHICS::_DRAW_SPRITE_POLY_2(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float red1, float green1, float blue1, int alpha1, float red2, float green2, float blue2, int alpha2, float red3, float green3, float blue3, int alpha3, const char* textureDict, const char* textureName, float u1, float v1, float w1, float u2, float v2, float w2, float u3, float v3, float w3) // 0x736D7AA1B750856B  b877</code>
 +
 +<code>Used for drawling Deadline trailing lights, see deadline.ytd
 +
 +Each vertex has its own colour that is blended/illuminated on the texture. Additionally, the R, G, and B components are floats that are int-casted internally.
 +For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.</code>
 +==== DRAW_BOX ====
 +<code cpp>void GRAPHICS::DRAW_BOX(float x1, float y1, float z1, float x2, float y2, float z2, int red, int green, int blue, int alpha) // 0xD3A9971CADAC7252 0xCD4D9DD5 b323</code>
 +
 +<code>x,y,z = start pos
 +x2,y2,z2 = end pos
 +
 +Draw's a 3D Box between the two x,y,z coords.
 +--------------
 +Keep in mind that the edges of the box do only align to the worlds base-vectors. Therefore something like rotation cannot be applied. That means this function is pretty much useless, unless you want a static unicolor box somewhere.
 +I recommend using a predefined function to call this.
 +[VB.NET]
 +Public Sub DrawBox(a As Vector3, b As Vector3, col As Color)
 +    [Function].Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A)
 +End Sub
 +
 +[C#]
 +public void DrawBox(Vector3 a, Vector3 b, Color col)
 +{
 +    Function.Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A);
 +}</code>
 +==== SET_BACKFACECULLING ====
 +<code cpp>void GRAPHICS::SET_BACKFACECULLING(BOOL toggle) // 0x23BA6B0C2AD7B0D3 0xC44C2F44 b323</code>
 +
 +==== _0xC5C8F970D4EDFF71 ====
 +<code cpp>void GRAPHICS::_0xC5C8F970D4EDFF71(Any p0) // 0xC5C8F970D4EDFF71  b877</code>
 +
 +==== BEGIN_TAKE_MISSION_CREATOR_PHOTO ====
 +<code cpp>Any GRAPHICS::BEGIN_TAKE_MISSION_CREATOR_PHOTO() // 0x1DD2139A9A20DCE8 0xBA9AD458 b323</code>
 +
 +==== GET_STATUS_OF_TAKE_MISSION_CREATOR_PHOTO ====
 +<code cpp>Any GRAPHICS::GET_STATUS_OF_TAKE_MISSION_CREATOR_PHOTO() // 0x90A78ECAA4E78453 0xADBBA287 b323</code>
 +
 +==== FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO ====
 +<code cpp>void GRAPHICS::FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO() // 0x0A46AF8A78DC5E0A 0x9E553002 b323</code>
 +
 +==== LOAD_MISSION_CREATOR_PHOTO ====
 +<code cpp>BOOL GRAPHICS::LOAD_MISSION_CREATOR_PHOTO(Any* p0, Any p1, Any p2, Any p3) // 0x4862437A486F91B0 0x56C1E488 b323</code>
 +
 +==== GET_STATUS_OF_LOAD_MISSION_CREATOR_PHOTO ====
 +<code cpp>int GRAPHICS::GET_STATUS_OF_LOAD_MISSION_CREATOR_PHOTO(Any* p0) // 0x1670F8D05056F257 0x226B08EA b323</code>
 +
 +==== _0x7FA5D82B8F58EC06 ====
 +<code cpp>Any GRAPHICS::_0x7FA5D82B8F58EC06() // 0x7FA5D82B8F58EC06 0x1F3CADB0 b323</code>
 +
 +==== _0x5B0316762AFD4A64 ====
 +<code cpp>Any GRAPHICS::_0x5B0316762AFD4A64() // 0x5B0316762AFD4A64 0xA9DC8558 b323</code>
 +
 +==== _0x346EF3ECAAAB149E ====
 +<code cpp>void GRAPHICS::_0x346EF3ECAAAB149E() // 0x346EF3ECAAAB149E 0x88EAF398 b323</code>
 +
 +==== BEGIN_TAKE_HIGH_QUALITY_PHOTO ====
 +<code cpp>BOOL GRAPHICS::BEGIN_TAKE_HIGH_QUALITY_PHOTO() // 0xA67C35C56EB1BD9D 0x47B0C137 b323</code>
 +
 +==== GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO ====
 +<code cpp>int GRAPHICS::GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO() // 0x0D6CA79EEEBD8CA3 0x65376C9B b323</code>
 +
 +==== FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO ====
 +<code cpp>void GRAPHICS::FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO() // 0xD801CC02177FA3F1 0x9CBA682A b323</code>
 +
 +==== _0x1BBC135A4D25EDDE ====
 +<code cpp>void GRAPHICS::_0x1BBC135A4D25EDDE(BOOL p0) // 0x1BBC135A4D25EDDE  b323</code>
 +
 +==== _0xF3F776ADA161E47D ====
 +<code cpp>void GRAPHICS::_0xF3F776ADA161E47D(Any p0, Any p1) // 0xF3F776ADA161E47D  b1604</code>
 +
 +==== _0xADD6627C4D325458 ====
 +<code cpp>void GRAPHICS::_0xADD6627C4D325458(Any p0) // 0xADD6627C4D325458  b2189</code>
 +
 +==== SAVE_HIGH_QUALITY_PHOTO ====
 +<code cpp>BOOL GRAPHICS::SAVE_HIGH_QUALITY_PHOTO(int unused) // 0x3DEC726C25A11BAC 0x3B15D33C b323</code>
 +
 +<code>1 match in 1 script. cellphone_controller.
 +p0 is -1 in scripts.</code>
 +==== GET_STATUS_OF_SAVE_HIGH_QUALITY_PHOTO ====
 +<code cpp>int GRAPHICS::GET_STATUS_OF_SAVE_HIGH_QUALITY_PHOTO() // 0x0C0C4E81E1AC60A0 0xEC5D0317 b323</code>
 +
 +==== _0x759650634F07B6B4 ====
 +<code cpp>BOOL GRAPHICS::_0x759650634F07B6B4(Any p0) // 0x759650634F07B6B4 0x25D569EB b323</code>
 +
 +==== _0xCB82A0BF0E3E3265 ====
 +<code cpp>Any GRAPHICS::_0xCB82A0BF0E3E3265(Any p0) // 0xCB82A0BF0E3E3265 0xCFCDC518 b323</code>
 +
 +==== FREE_MEMORY_FOR_LOW_QUALITY_PHOTO ====
 +<code cpp>void GRAPHICS::FREE_MEMORY_FOR_LOW_QUALITY_PHOTO() // 0x6A12D88881435DCA 0x108F36CC b323</code>
 +
 +==== DRAW_LOW_QUALITY_PHOTO_TO_PHONE ====
 +<code cpp>void GRAPHICS::DRAW_LOW_QUALITY_PHOTO_TO_PHONE(BOOL p0, BOOL p1) // 0x1072F115DAB0717E 0xE9F2B68F b323</code>
 +
 +==== GET_MAXIMUM_NUMBER_OF_PHOTOS ====
 +<code cpp>int GRAPHICS::GET_MAXIMUM_NUMBER_OF_PHOTOS() // 0x34D23450F028B0BF 0x727AA63F b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== GET_MAXIMUM_NUMBER_OF_CLOUD_PHOTOS ====
 +<code cpp>int GRAPHICS::GET_MAXIMUM_NUMBER_OF_CLOUD_PHOTOS() // 0xDC54A7AF8B3A14EF 0x239272BD b323</code>
 +
 +<code>This function is hard-coded to always return 96.</code>
 +==== GET_CURRENT_NUMBER_OF_CLOUD_PHOTOS ====
 +<code cpp>int GRAPHICS::GET_CURRENT_NUMBER_OF_CLOUD_PHOTOS() // 0x473151EBC762C6DA 0x21DBF0C9 b323</code>
 +
 +==== _0x2A893980E96B659A ====
 +<code cpp>Any GRAPHICS::_0x2A893980E96B659A(Any p0) // 0x2A893980E96B659A 0x199FABF0 b323</code>
 +
 +<code>2 matches across 2 scripts. Only showed in appcamera & appmedia. Both were 0.</code>
 +==== GET_STATUS_OF_SORTED_LIST_OPERATION ====
 +<code cpp>Any GRAPHICS::GET_STATUS_OF_SORTED_LIST_OPERATION(Any p0) // 0xF5BED327CEA362B1 0x596B900D b323</code>
 +
 +<code>3 matches across 3 scripts. First 2 were 0, 3rd was 1. Possibly a bool.
 +appcamera, appmedia, and cellphone_controller.</code>
 +==== _0x4AF92ACD3141D96C ====
 +<code cpp>void GRAPHICS::_0x4AF92ACD3141D96C() // 0x4AF92ACD3141D96C 0xC9EF81ED b323</code>
 +
 +==== _0xE791DF1F73ED2C8B ====
 +<code cpp>Any GRAPHICS::_0xE791DF1F73ED2C8B(Any p0) // 0xE791DF1F73ED2C8B 0x9D84554C b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== _0xEC72C258667BE5EA ====
 +<code cpp>Any GRAPHICS::_0xEC72C258667BE5EA(Any p0) // 0xEC72C258667BE5EA 0x9C106AD9 b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== _RETURN_TWO ====
 +<code cpp>int GRAPHICS::_RETURN_TWO(int p0) // 0x40AFB081F8ADD4EE 0x762E5C5F b323</code>
 +
 +<code>GET_L*
 +
 +Hardcoded to always return 2.</code>
 +==== _DRAW_LIGHT_WITH_RANGE_AND_SHADOW ====
 +<code cpp>void GRAPHICS::_DRAW_LIGHT_WITH_RANGE_AND_SHADOW(float x, float y, float z, int r, int g, int b, float range, float intensity, float shadow) // 0xF49E9A9716A04595  b323</code>
 +
 +==== DRAW_LIGHT_WITH_RANGE ====
 +<code cpp>void GRAPHICS::DRAW_LIGHT_WITH_RANGE(float posX, float posY, float posZ, int colorR, int colorG, int colorB, float range, float intensity) // 0xF2A1B2771A01DBD4 0x6A396E9A b323</code>
 +
 +==== DRAW_SPOT_LIGHT ====
 +<code cpp>void GRAPHICS::DRAW_SPOT_LIGHT(float posX, float posY, float posZ, float dirX, float dirY, float dirZ, int colorR, int colorG, int colorB, float distance, float brightness, float hardness, float radius, float falloff) // 0xD0F64B265C8C8B33 0xBDBC410C b323</code>
 +
 +<code>Parameters:
 +* pos - coordinate where the spotlight is located
 +* dir - the direction vector the spotlight should aim at from its current position
 +* r,g,b - color of the spotlight
 +* distance - the maximum distance the light can reach
 +* brightness - the brightness of the light
 +* roundness - "smoothness" of the circle edge
 +* radius - the radius size of the spotlight
 +* falloff - the falloff size of the light's edge (example: www.i.imgur.com/DemAWeO.jpg)
 +
 +Example in C# (spotlight aims at the closest vehicle):
 +Vector3 myPos = Game.Player.Character.Position;
 +Vehicle nearest = World.GetClosestVehicle(myPos , 1000f);
 +Vector3 destinationCoords = nearest.Position;
 +Vector3 dirVector = destinationCoords - myPos;
 +dirVector.Normalize();
 +Function.Call(Hash.DRAW_SPOT_LIGHT, pos.X, pos.Y, pos.Z, dirVector.X, dirVector.Y, dirVector.Z, 255, 255, 255, 100.0f, 1f, 0.0f, 13.0f, 1f);</code>
 +==== _DRAW_SPOT_LIGHT_WITH_SHADOW ====
 +<code cpp>void GRAPHICS::_DRAW_SPOT_LIGHT_WITH_SHADOW(float posX, float posY, float posZ, float dirX, float dirY, float dirZ, int colorR, int colorG, int colorB, float distance, float brightness, float roundness, float radius, float falloff, int shadowId) // 0x5BCA583A583194DB 0x32BF9598 b323</code>
 +
 +==== FADE_UP_PED_LIGHT ====
 +<code cpp>void GRAPHICS::FADE_UP_PED_LIGHT(float p0) // 0xC9B18B4619F48F7B 0x93628786 b323</code>
 +
 +==== UPDATE_LIGHTS_ON_ENTITY ====
 +<code cpp>void GRAPHICS::UPDATE_LIGHTS_ON_ENTITY(Entity entity) // 0xDEADC0DEDEADC0DE 0xC12AC47A b323</code>
 +
 +==== _0x9641588DAB93B4B5 ====
 +<code cpp>void GRAPHICS::_0x9641588DAB93B4B5(Any p0) // 0x9641588DAB93B4B5  b877</code>
 +
 +==== _0x393BD2275CEB7793 ====
 +<code cpp>Any GRAPHICS::_0x393BD2275CEB7793() // 0x393BD2275CEB7793  b1103</code>
 +
 +==== DRAW_MARKER ====
 +<code cpp>void GRAPHICS::DRAW_MARKER(int type, float posX, float posY, float posZ, float dirX, float dirY, float dirZ, float rotX, float rotY, float rotZ, float scaleX, float scaleY, float scaleZ, int red, int green, int blue, int alpha, BOOL bobUpAndDown, BOOL faceCamera, int p19, BOOL rotate, const char* textureDict, const char* textureName, BOOL drawOnEnts) // 0x28477EC23D892089 0x48D84A02 b323</code>
 +
 +<code>enum MarkerTypes
 +{
 +    MarkerTypeUpsideDownCone = 0,
 + MarkerTypeVerticalCylinder = 1,
 +   MarkerTypeThickChevronUp = 2,
 + MarkerTypeThinChevronUp = 3,
 +  MarkerTypeCheckeredFlagRect = 4,
 +  MarkerTypeCheckeredFlagCircle = 5,
 +    MarkerTypeVerticleCircle = 6,
 + MarkerTypePlaneModel = 7,
 + MarkerTypeLostMCDark = 8,
 + MarkerTypeLostMCLight = 9,
 +    MarkerTypeNumber0 = 10,
 +   MarkerTypeNumber1 = 11,
 +   MarkerTypeNumber2 = 12,
 +   MarkerTypeNumber3 = 13,
 +   MarkerTypeNumber4 = 14,
 +   MarkerTypeNumber5 = 15,
 +   MarkerTypeNumber6 = 16,
 +   MarkerTypeNumber7 = 17,
 +   MarkerTypeNumber8 = 18,
 +   MarkerTypeNumber9 = 19,
 +   MarkerTypeChevronUpx1 = 20,
 +   MarkerTypeChevronUpx2 = 21,
 +   MarkerTypeChevronUpx3 = 22,
 +   MarkerTypeHorizontalCircleFat = 23,
 +   MarkerTypeReplayIcon = 24,
 +    MarkerTypeHorizontalCircleSkinny = 25,
 +    MarkerTypeHorizontalCircleSkinny_Arrow = 26,
 +  MarkerTypeHorizontalSplitArrowCircle = 27,
 +    MarkerTypeDebugSphere = 28,
 +   MarkerTypeDallorSign = 29,
 +    MarkerTypeHorizontalBars = 30,
 +    MarkerTypeWolfHead = 31
 +};
 +
 +dirX/Y/Z represent a heading on each axis in which the marker should face, alternatively you can rotate each axis independently with rotX/Y/Z (and set dirX/Y/Z all to 0).
 +
 +faceCamera - Rotates only the y-axis (the heading) towards the camera
 +
 +p19 - no effect, default value in script is 2
 +
 +rotate - Rotates only on the y-axis (the heading)
 +
 +textureDict - Name of texture dictionary to load texture from (e.g. "GolfPutting")
 +
 +textureName - Name of texture inside dictionary to load (e.g. "PuttingMarker")
 +
 +drawOnEnts - Draws the marker onto any entities that intersect it
 +
 +basically what he said, except textureDict and textureName are totally not const char*, or if so, then they are always set to 0/NULL/nullptr in every script I checked, eg:
 +
 +bj.c: graphics::draw_marker(6, vParam0, 0f, 0f, 1f, 0f, 0f, 0f, 4f, 4f, 4f, 240, 200, 80, iVar1, 0, 0, 2, 0, 0, 0, false);
 +
 +his is what I used to draw an amber downward pointing chevron "V", has to be redrawn every frame.  The 180 is for 180 degrees rotation around the Y axis, the 50 is alpha, assuming max is 100, but it will accept 255.
 +
 +GRAPHICS::DRAW_MARKER(2, v.x, v.y, v.z + 2, 0, 0, 0, 0, 180, 0, 2, 2, 2, 255, 128, 0, 50, 0, 1, 1, 0, 0, 0, 0);
 +
 +</code>
 +==== _DRAW_MARKER_2 ====
 +<code cpp>void GRAPHICS::_DRAW_MARKER_2(int type, float posX, float posY, float posZ, float dirX, float dirY, float dirZ, float rotX, float rotY, float rotZ, float scaleX, float scaleY, float scaleZ, int red, int green, int blue, int alpha, BOOL bobUpAndDown, BOOL faceCamera, Any p19, BOOL rotate, const char* textureDict, const char* textureName, BOOL drawOnEnts, BOOL p24, BOOL p25) // 0xE82728F0DE75D13A  b573</code>
 +
 +==== _DRAW_SPHERE ====
 +<code cpp>void GRAPHICS::_DRAW_SPHERE(float x, float y, float z, float radius, int red, int green, int blue, float alpha) // 0x799017F9E3B10112  b463</code>
 +
 +<code>Draws a 3D sphere, typically seen in the GTA:O freemode event "Penned In".
 +Example https://imgur.com/nCbtS4H</code>
 +==== CREATE_CHECKPOINT ====
 +<code cpp>int GRAPHICS::CREATE_CHECKPOINT(int type, float posX1, float posY1, float posZ1, float posX2, float posY2, float posZ2, float diameter, int red, int green, int blue, int alpha, int reserved) // 0x0134F0835AB6BFCB 0xF541B690 b323</code>
 +
 +<code>Creates a checkpoint. Returns the handle of the checkpoint.
 +
 +20/03/17 : Attention, checkpoints are already handled by the game itself, so you must not loop it like markers.
 +
 +Parameters:
 +* type - The type of checkpoint to create. See below for a list of checkpoint types.
 +* pos1 - The position of the checkpoint.
 +* pos2 - The position of the next checkpoint to point to.
 +* radius - The radius of the checkpoint.
 +* color - The color of the checkpoint.
 +* reserved - Special parameter, see below for details. Usually set to 0 in the scripts.
 +
 +Checkpoint types:
 +0-4---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
 +5-9---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
 +10-14-------Ring: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker
 +15-19-------1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker      
 +20-24-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker 
 +25-29-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker    
 +30-34-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker 
 +35-38-------Ring: Airplane Up, Left, Right, UpsideDown
 +39----------?
 +40----------Ring: just a ring
 +41----------?
 +42-44-------Cylinder w/ number (uses 'reserved' parameter)
 +45-47-------Cylinder no arrow or number
 +
 +If using type 42-44, reserved sets number / number and shape to display
 +
 +0-99------------Just numbers (0-99)
 +100-109-----------------Arrow (0-9)
 +110-119------------Two arrows (0-9)
 +120-129----------Three arrows (0-9)
 +130-139----------------Circle (0-9)
 +140-149------------CycleArrow (0-9)
 +150-159----------------Circle (0-9)
 +160-169----Circle  w/ pointer (0-9)
 +170-179-------Perforated ring (0-9)
 +180-189----------------Sphere (0-9)</code>
 +==== _SET_CHECKPOINT_SCALE ====
 +<code cpp>void GRAPHICS::_SET_CHECKPOINT_SCALE(int checkpoint, float p0) // 0x4B5B4DA5D79F1943 0x80151CCF b323</code>
 +
 +<code>p0 - Scale? Looks to be a normalized value (0.0 - 1.0)
 +
 +offroad_races.c4, line ~67407:
 +a_3._f7 = GRAPHICS::CREATE_CHECKPOINT(v_D, v_A, a_4, a_7, v_E, v_F, v_10, sub_62b2(v_A, 220, 255), 0);
 +HUD::GET_HUD_COLOUR(134, &v_E, &v_F, &v_10, &v_11);
 +GRAPHICS::_SET_CHECKPOINT_ICON_RGBA(a_3._f7, v_E, v_F, v_10, sub_62b2(v_A, 70, 210));
 +GRAPHICS::_4B5B4DA5D79F1943(a_3._f7, 0.95);
 +GRAPHICS::SET_CHECKPOINT_CYLINDER_HEIGHT(a_3._f7, 4.0, 4.0, 100.0);
 +</code>
 +==== _SET_CHECKPOINT_ICON_SCALE ====
 +<code cpp>void GRAPHICS::_SET_CHECKPOINT_ICON_SCALE(int checkpoint, float scale) // 0x44621483FF966526  b877</code>
 +
 +==== SET_CHECKPOINT_CYLINDER_HEIGHT ====
 +<code cpp>void GRAPHICS::SET_CHECKPOINT_CYLINDER_HEIGHT(int checkpoint, float nearHeight, float farHeight, float radius) // 0x2707AAE9D9297D89 0xFF0F9B22 b323</code>
 +
 +<code>Sets the cylinder height of the checkpoint.
 +
 +Parameters:
 +* nearHeight - The height of the checkpoint when inside of the radius.
 +* farHeight - The height of the checkpoint when outside of the radius.
 +* radius - The radius of the checkpoint.</code>
 +==== SET_CHECKPOINT_RGBA ====
 +<code cpp>void GRAPHICS::SET_CHECKPOINT_RGBA(int checkpoint, int red, int green, int blue, int alpha) // 0x7167371E8AD747F7 0xEF9C8CB3 b323</code>
 +
 +<code>Sets the checkpoint color.</code>
 +==== SET_CHECKPOINT_RGBA2 ====
 +<code cpp>void GRAPHICS::SET_CHECKPOINT_RGBA2(int checkpoint, int red, int green, int blue, int alpha) // 0xB9EA40907C680580 0xA5456DBB b323</code>
 +
 +<code>Sets the checkpoint icon color.</code>
 +==== _0xF51D36185993515D ====
 +<code cpp>void GRAPHICS::_0xF51D36185993515D(int checkpoint, float posX, float posY, float posZ, float unkX, float unkY, float unkZ) // 0xF51D36185993515D 0x20EABD0F b323</code>
 +
 +<code>This does not move an existing checkpoint... so wtf.</code>
 +==== _0xFCF6788FC4860CD4 ====
 +<code cpp>void GRAPHICS::_0xFCF6788FC4860CD4(int checkpoint) // 0xFCF6788FC4860CD4  b1734</code>
 +
 +<code>SET_CHECKPOINT_*</code>
 +==== _0x615D3925E87A3B26 ====
 +<code cpp>void GRAPHICS::_0x615D3925E87A3B26(int checkpoint) // 0x615D3925E87A3B26 0x1E3A3126 b323</code>
 +
 +<code>Unknown. Called after creating a checkpoint (type: 51) in the creators.</code>
 +==== _0xDB1EA9411C8911EC ====
 +<code cpp>void GRAPHICS::_0xDB1EA9411C8911EC(Any p0) // 0xDB1EA9411C8911EC  b1180</code>
 +
 +==== _0x3C788E7F6438754D ====
 +<code cpp>void GRAPHICS::_0x3C788E7F6438754D(Any p0, Any p1, Any p2, Any p3) // 0x3C788E7F6438754D  b1180</code>
 +
 +==== DELETE_CHECKPOINT ====
 +<code cpp>void GRAPHICS::DELETE_CHECKPOINT(int checkpoint) // 0xF5ED37F54CD4D52E 0xB66CF3CA b323</code>
 +
 +==== DONT_RENDER_IN_GAME_UI ====
 +<code cpp>void GRAPHICS::DONT_RENDER_IN_GAME_UI(BOOL p0) // 0x22A249A53034450A 0x932FDB81 b323</code>
 +
 +==== FORCE_RENDER_IN_GAME_UI ====
 +<code cpp>void GRAPHICS::FORCE_RENDER_IN_GAME_UI(BOOL toggle) // 0xDC459CFA0CCE245B 0x7E946E87 b323</code>
 +
 +==== REQUEST_STREAMED_TEXTURE_DICT ====
 +<code cpp>void GRAPHICS::REQUEST_STREAMED_TEXTURE_DICT(const char* textureDict, BOOL p1) // 0xDFA2EF8E04127DD5 0x4C9B035F b323</code>
 +
 +<code>This function can requests texture dictonaries from following RPFs:
 +scaleform_generic.rpf
 +scaleform_minigames.rpf
 +scaleform_minimap.rpf
 +scaleform_web.rpf
 +
 +last param isnt a toggle</code>
 +==== HAS_STREAMED_TEXTURE_DICT_LOADED ====
 +<code cpp>BOOL GRAPHICS::HAS_STREAMED_TEXTURE_DICT_LOADED(const char* textureDict) // 0x0145F696AAAAD2E4 0x3F436EEF b323</code>
 +
 +==== SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED ====
 +<code cpp>void GRAPHICS::SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED(const char* textureDict) // 0xBE2CACCF5A8AA805 0xF07DDA38 b323</code>
 +
 +==== DRAW_RECT ====
 +<code cpp>void GRAPHICS::DRAW_RECT(float x, float y, float width, float height, int r, int g, int b, int a, BOOL p8) // 0x3A618A217E5154F0 0xDD2BFC77 b323</code>
 +
 +<code>Draws a rectangle on the screen.
 +
 +-x: The relative X point of the center of the rectangle. (0.0-1.0, 0.0 is the left edge of the screen, 1.0 is the right edge of the screen)
 +
 +-y: The relative Y point of the center of the rectangle. (0.0-1.0, 0.0 is the top edge of the screen, 1.0 is the bottom edge of the screen)
 +
 +-width: The relative width of the rectangle. (0.0-1.0, 1.0 means the whole screen width)
 +
 +-height: The relative height of the rectangle. (0.0-1.0, 1.0 means the whole screen height)
 +
 +-R: Red part of the color. (0-255)
 +
 +-G: Green part of the color. (0-255)
 +
 +-B: Blue part of the color. (0-255)
 +
 +-A: Alpha part of the color. (0-255, 0 means totally transparent, 255 means totally opaque)
 +
 +The total number of rectangles to be drawn in one frame is apparently limited to 399.
 +</code>
 +==== SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU ====
 +<code cpp>void GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(BOOL toggle) // 0xC6372ECD45D73BCD 0xF8FBCC25 b323</code>
 +
 +<code>Sets a flag defining whether or not script draw commands should continue being drawn behind the pause menu. This is usually used for TV channels and other draw commands that are used with a world render target.</code>
 +==== SET_SCRIPT_GFX_DRAW_ORDER ====
 +<code cpp>void GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(int drawOrder) // 0x61BB1D9B3A95D802 0xADF81D24 b323</code>
 +
 +<code>Sets the draw order for script draw commands.
 +
 +Examples from decompiled scripts:
 +GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(7);
 +GRAPHICS::DRAW_RECT(0.5, 0.5, 3.0, 3.0, v_4, v_5, v_6, a_0._f172, 0);
 +
 +GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(1);
 +GRAPHICS::DRAW_RECT(0.5, 0.5, 1.5, 1.5, 0, 0, 0, 255, 0);</code>
 +==== SET_SCRIPT_GFX_ALIGN ====
 +<code cpp>void GRAPHICS::SET_SCRIPT_GFX_ALIGN(int horizontalAlign, int verticalAlign) // 0xB8A850F20A067EB6 0x228A2598 b323</code>
 +
 +<code>horizontalAlign: The horizontal alignment. This can be 67 ('C'), 76 ('L'), or 82 ('R').
 +verticalAlign: The vertical alignment. This can be 67 ('C'), 66 ('B'), or 84 ('T').
 +
 +This function anchors script draws to a side of the safe zone. This needs to be called to make the interface independent of the player's safe zone configuration.
 +
 +These values are equivalent to alignX and alignY in common:/data/ui/frontend.xml, which can be used as a baseline for default alignment.
 +
 +Using any other value (including 0) will result in the safe zone not being taken into account for this draw. The canonical value for this is 'I' (73).
 +
 +For example, you can use SET_SCRIPT_GFX_ALIGN(0, 84) to only scale on the Y axis (to the top), but not change the X axis.
 +
 +To reset the value, use RESET_SCRIPT_GFX_ALIGN.</code>
 +==== RESET_SCRIPT_GFX_ALIGN ====
 +<code cpp>void GRAPHICS::RESET_SCRIPT_GFX_ALIGN() // 0xE3A3DB414A373DAB 0x3FE33BD6 b323</code>
 +
 +<code>This function resets the alignment set using SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS to the default values ('I', 'I'; 0, 0, 0, 0).
 +This should be used after having used the aforementioned functions in order to not affect any other scripts attempting to draw.</code>
 +==== SET_SCRIPT_GFX_ALIGN_PARAMS ====
 +<code cpp>void GRAPHICS::SET_SCRIPT_GFX_ALIGN_PARAMS(float x, float y, float w, float h) // 0xF5A2C681787E579D 0x76C641E4 b323</code>
 +
 +<code>Sets the draw offset/calculated size for SET_SCRIPT_GFX_ALIGN. If using any alignment other than left/top, the game expects the width/height to be configured using this native in order to get a proper starting position for the draw command.</code>
 +==== _GET_SCRIPT_GFX_POSITION ====
 +<code cpp>void GRAPHICS::_GET_SCRIPT_GFX_POSITION(float x, float y, float* calculatedX, float* calculatedY) // 0x6DD8F5AA635EB4B2  b323</code>
 +
 +<code>Calculates the effective X/Y fractions when applying the values set by SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS</code>
 +==== GET_SAFE_ZONE_SIZE ====
 +<code cpp>float GRAPHICS::GET_SAFE_ZONE_SIZE() // 0xBAF107B6BB2C97F0 0x3F0D1A6F b323</code>
 +
 +<code>Gets the scale of safe zone. if the safe zone size scale is max, it will return 1.0.</code>
 +==== DRAW_SPRITE ====
 +<code cpp>void GRAPHICS::DRAW_SPRITE(const char* textureDict, const char* textureName, float screenX, float screenY, float width, float height, float heading, int red, int green, int blue, int alpha, BOOL p11) // 0xE7FFAE5EBF23D890 0x1FEC16B0 b323</code>
 +
 +<code>Draws a 2D sprite on the screen.
 +
 +Parameters:
 +textureDict - Name of texture dictionary to load texture from (e.g. "CommonMenu", "MPWeaponsCommon", etc.)
 +
 +textureName - Name of texture to load from texture dictionary (e.g. "last_team_standing_icon", "tennis_icon", etc.)
 +
 +screenX/Y - Screen offset (0.5 = center)
 +scaleX/Y - Texture scaling. Negative values can be used to flip the texture on that axis. (0.5 = half)
 +
 +heading - Texture rotation in degrees (default = 0.0) positive is clockwise, measured in degrees
 +
 +red,green,blue - Sprite color (default = 255/255/255)
 +
 +alpha - opacity level</code>
 +==== _0x2D3B147AFAD49DE0 ====
 +<code cpp>void GRAPHICS::_0x2D3B147AFAD49DE0(const char* textureDict, const char* textureName, float x, float y, float width, float height, float p6, int red, int green, int blue, int alpha, Any p11) // 0x2D3B147AFAD49DE0  b1290</code>
 +
 +<code>Used in arcade games and Beam hack minigame in Doomsday Heist. I will most certainly dive into this to try replicate arcade games.
 +x position must be between 0.0 and 1.0 (1.0 being the most right side of the screen)
 +y position must be between 0.0 and 1.0 (1.0 being the most bottom side of the screen)
 +width 0.0 - 1.0 is the reasonable amount generally
 +height 0.0 - 1.0 is the reasonable amount generally
 +p6 almost always 0.0
 +p11 seems to be unknown but almost always 0 int</code>
 +==== _DRAW_INTERACTIVE_SPRITE ====
 +<code cpp>void GRAPHICS::_DRAW_INTERACTIVE_SPRITE(const char* textureDict, const char* textureName, float screenX, float screenY, float width, float height, float heading, int red, int green, int blue, int alpha) // 0x2BC54A8188768488  b877</code>
 +
 +<code>Similar to _DRAW_SPRITE, but seems to be some kind of "interactive" sprite, at least used by render targets.
 +These seem to be the only dicts ever requested by this native:
 +
 +prop_screen_biker_laptop
 +Prop_Screen_GR_Disruption
 +Prop_Screen_TaleOfUs
 +prop_screen_nightclub
 +Prop_Screen_IE_Adhawk
 +prop_screen_sm_free_trade_shipping
 +prop_screen_hacker_truck
 +MPDesktop
 +Prop_Screen_Nightclub
 +And a few others
 +</code>
 +==== _DRAW_SPRITE_UV ====
 +<code cpp>void GRAPHICS::_DRAW_SPRITE_UV(const char* textureDict, const char* textureName, float x, float y, float width, float height, float u1, float v1, float u2, float v2, float heading, int red, int green, int blue, int alpha) // 0x95812F9B26074726  b1868</code>
 +
 +<code>Similar to DRAW_SPRITE, but allows to specify the texture coordinates used to draw the sprite.
 +
 +u1, v1 - texture coordinates for the top-left corner
 +u2, v2 - texture coordinates for the bottom-right corner</code>
 +==== ADD_ENTITY_ICON ====
 +<code cpp>Any GRAPHICS::ADD_ENTITY_ICON(Entity entity, const char* icon) // 0x9CD43EEE12BF4DD0 0xF3027D21 b323</code>
 +
 +<code>Example:
 +GRAPHICS::ADD_ENTITY_ICON(a_0, "MP_Arrow");
 +
 +I tried this and nothing happened...</code>
 +==== SET_ENTITY_ICON_VISIBILITY ====
 +<code cpp>void GRAPHICS::SET_ENTITY_ICON_VISIBILITY(Entity entity, BOOL toggle) // 0xE0E8BEECCA96BA31 0xD1D2FD52 b323</code>
 +
 +==== SET_ENTITY_ICON_COLOR ====
 +<code cpp>void GRAPHICS::SET_ENTITY_ICON_COLOR(Entity entity, int red, int green, int blue, int alpha) // 0x1D5F595CCAE2E238 0x6EE1E946 b323</code>
 +
 +==== SET_DRAW_ORIGIN ====
 +<code cpp>void GRAPHICS::SET_DRAW_ORIGIN(float x, float y, float z, Any p3) // 0xAA0008F3BBB8F416 0xE10198D5 b323</code>
 +
 +<code>Sets the on-screen drawing origin for draw-functions (which is normally x=0,y=0 in the upper left corner of the screen) to a world coordinate.
 +From now on, the screen coordinate which displays the given world coordinate on the screen is seen as x=0,y=0.
 +
 +Example in C#:
 +Vector3 boneCoord = somePed.GetBoneCoord(Bone.SKEL_Head);
 +Function.Call(Hash.SET_DRAW_ORIGIN, boneCoord.X, boneCoord.Y, boneCoord.Z, 0);
 +Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, -0.015, 0.013, 0.013, 0.0, 255, 0, 0, 200);
 +Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, -0.015, 0.013, 0.013, 90.0, 255, 0, 0, 200);
 +Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, 0.015, 0.013, 0.013, 270.0, 255, 0, 0, 200);
 +Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, 0.015, 0.013, 0.013, 180.0, 255, 0, 0, 200);
 +Function.Call(Hash.CLEAR_DRAW_ORIGIN);
 +
 +Result: www11.pic-upload.de/19.06.15/bkqohvil2uao.jpg
 +If the pedestrian starts walking around now, the sprites are always around her head, no matter where the head is displayed on the screen.
 +
 +This function also effects the drawing of texts and other UI-elements.
 +The effect can be reset by calling GRAPHICS::CLEAR_DRAW_ORIGIN().</code>
 +==== CLEAR_DRAW_ORIGIN ====
 +<code cpp>void GRAPHICS::CLEAR_DRAW_ORIGIN() // 0xFF0B610F6BE0D7AF 0xDD76B263 b323</code>
 +
 +<code>Resets the screen's draw-origin which was changed by the function GRAPHICS::SET_DRAW_ORIGIN(...) back to x=0,y=0.
 +
 +See GRAPHICS::SET_DRAW_ORIGIN(...) for further information.</code>
 +==== _SET_BINK_MOVIE ====
 +<code cpp>int GRAPHICS::_SET_BINK_MOVIE(const char* name) // 0x338D9F609FD632DB  b1290</code>
 +
 +==== _PLAY_BINK_MOVIE ====
 +<code cpp>void GRAPHICS::_PLAY_BINK_MOVIE(int binkMovie) // 0x70D2CC8A542A973C  b1290</code>
 +
 +==== _STOP_BINK_MOVIE ====
 +<code cpp>void GRAPHICS::_STOP_BINK_MOVIE(int binkMovie) // 0x63606A61DE68898A  b1290</code>
 +
 +==== _RELEASE_BINK_MOVIE ====
 +<code cpp>void GRAPHICS::_RELEASE_BINK_MOVIE(int binkMovie) // 0x04D950EEFA4EED8C  b1290</code>
 +
 +==== _DRAW_BINK_MOVIE ====
 +<code cpp>void GRAPHICS::_DRAW_BINK_MOVIE(int binkMovie, float p1, float p2, float p3, float p4, float p5, int r, int g, int b, int a) // 0x7118E83EEB9F7238  b1290</code>
 +
 +==== _SET_BINK_MOVIE_TIME ====
 +<code cpp>void GRAPHICS::_SET_BINK_MOVIE_TIME(int binkMovie, float progress) // 0x0CB6B3446855B57A  b1290</code>
 +
 +<code>In percentage: 0.0 - 100.0</code>
 +==== _GET_BINK_MOVIE_TIME ====
 +<code cpp>float GRAPHICS::_GET_BINK_MOVIE_TIME(int binkMovie) // 0x8E17DDD6B9D5BF29  b1734</code>
 +
 +<code>In percentage: 0.0 - 100.0</code>
 +==== _SET_BINK_MOVIE_VOLUME ====
 +<code cpp>void GRAPHICS::_SET_BINK_MOVIE_VOLUME(int binkMovie, float value) // 0xAFF33B1178172223  b1290</code>
 +
 +<code>binkMovie: Is return value from _SET_BINK_MOVIE. Has something to do with bink volume? (audRequestedSettings::SetVolumeCurveScale)</code>
 +==== ATTACH_TV_AUDIO_TO_ENTITY ====
 +<code cpp>void GRAPHICS::ATTACH_TV_AUDIO_TO_ENTITY(Entity entity) // 0x845BAD77CC770633 0x784944DB b323</code>
 +
 +<code>Might be more appropriate in AUDIO?</code>
 +==== _SET_BINK_MOVIE_UNK_2 ====
 +<code cpp>void GRAPHICS::_SET_BINK_MOVIE_UNK_2(int binkMovie, BOOL p1) // 0xF816F2933752322D  b1868</code>
 +
 +==== SET_TV_AUDIO_FRONTEND ====
 +<code cpp>void GRAPHICS::SET_TV_AUDIO_FRONTEND(BOOL toggle) // 0x113D2C5DC57E1774 0x2E0DFA35 b323</code>
 +
 +<code>Probably changes tvs from being a 3d audio to being "global" audio</code>
 +==== _SET_BINK_SHOULD_SKIP ====
 +<code cpp>void GRAPHICS::_SET_BINK_SHOULD_SKIP(int binkMovie, BOOL bShouldSkip) // 0x6805D58CAA427B72  b1290</code>
 +
 +==== LOAD_MOVIE_MESH_SET ====
 +<code cpp>int GRAPHICS::LOAD_MOVIE_MESH_SET(const char* movieMeshSetName) // 0xB66064452270E8F1 0x9627905C b323</code>
 +
 +==== RELEASE_MOVIE_MESH_SET ====
 +<code cpp>void GRAPHICS::RELEASE_MOVIE_MESH_SET(int movieMeshSet) // 0xEB119AA014E89183 0x4FA5501D b323</code>
 +
 +==== QUERY_MOVIE_MESH_SET_STATE ====
 +<code cpp>Any GRAPHICS::QUERY_MOVIE_MESH_SET_STATE(Any p0) // 0x9B6E70C5CEEF4EEB 0x9D5D9B38 b323</code>
 +
 +==== GET_SCREEN_RESOLUTION ====
 +<code cpp>void GRAPHICS::GET_SCREEN_RESOLUTION(int* x, int* y) // 0x888D57E407E63624 0x29F3572F b323</code>
 +
 +<code>int screenresx,screenresy;
 +GET_SCREEN_RESOLUTION(&screenresx,&screenresy);</code>
 +==== _GET_ACTIVE_SCREEN_RESOLUTION ====
 +<code cpp>void GRAPHICS::_GET_ACTIVE_SCREEN_RESOLUTION(int* x, int* y) // 0x873C9F3104101DD3  b323</code>
 +
 +<code>Returns current screen resolution.</code>
 +==== _GET_ASPECT_RATIO ====
 +<code cpp>float GRAPHICS::_GET_ASPECT_RATIO(BOOL b) // 0xF1307EF624A80D87  b323</code>
 +
 +==== _0xB2EBE8CBC58B90E9 ====
 +<code cpp>Any GRAPHICS::_0xB2EBE8CBC58B90E9() // 0xB2EBE8CBC58B90E9  b323</code>
 +
 +==== GET_IS_WIDESCREEN ====
 +<code cpp>BOOL GRAPHICS::GET_IS_WIDESCREEN() // 0x30CF4BDA4FCB1905 0xEC717AEF b323</code>
 +
 +<code>Setting Aspect Ratio Manually in game will return:
 +
 +false - for Narrow format Aspect Ratios (3:2, 4:3, 5:4, etc. )
 +true - for Wide format Aspect Ratios (5:3, 16:9, 16:10, etc. )
 +
 +Setting Aspect Ratio to "Auto" in game will return "false" or "true" based on the actual set Resolution Ratio.</code>
 +==== GET_IS_HIDEF ====
 +<code cpp>BOOL GRAPHICS::GET_IS_HIDEF() // 0x84ED31191CC5D2C9 0x1C340359 b323</code>
 +
 +<code>false = Any resolution < 1280x720
 +true = Any resolution >= 1280x720</code>
 +==== _0xEFABC7722293DA7C ====
 +<code cpp>void GRAPHICS::_0xEFABC7722293DA7C() // 0xEFABC7722293DA7C  b323</code>
 +
 +<code>AD*</code>
 +==== SET_NIGHTVISION ====
 +<code cpp>void GRAPHICS::SET_NIGHTVISION(BOOL toggle) // 0x18F621F7A5B1F85D 0xD1E5565F b323</code>
 +
 +<code>Enables Night Vision.
 +
 +Example:
 +C#: Function.Call(Hash.SET_NIGHTVISION, true);
 +C++: GRAPHICS::SET_NIGHTVISION(true);
 +
 +BOOL toggle:
 +true = turns night vision on for your player.
 +false = turns night vision off for your player.</code>
 +==== GET_REQUESTINGNIGHTVISION ====
 +<code cpp>BOOL GRAPHICS::GET_REQUESTINGNIGHTVISION() // 0x35FB78DC42B7BD21 0xF3A6309E b323</code>
 +
 +==== GET_USINGNIGHTVISION ====
 +<code cpp>BOOL GRAPHICS::GET_USINGNIGHTVISION() // 0x2202A3F42C8E5F79 0x62619061 b323</code>
 +
 +==== _0xEF398BEEE4EF45F9 ====
 +<code cpp>void GRAPHICS::_0xEF398BEEE4EF45F9(BOOL p0) // 0xEF398BEEE4EF45F9  b323</code>
 +
 +==== _0x814AF7DCAACC597B ====
 +<code cpp>void GRAPHICS::_0x814AF7DCAACC597B(Any p0) // 0x814AF7DCAACC597B  b372</code>
 +
 +==== _0x43FA7CBE20DAB219 ====
 +<code cpp>void GRAPHICS::_0x43FA7CBE20DAB219(Any p0) // 0x43FA7CBE20DAB219  b1290</code>
 +
 +==== SET_NOISEOVERIDE ====
 +<code cpp>void GRAPHICS::SET_NOISEOVERIDE(BOOL toggle) // 0xE787BF1C5CF823C9 0xD576F5DD b323</code>
 +
 +==== SET_NOISINESSOVERIDE ====
 +<code cpp>void GRAPHICS::SET_NOISINESSOVERIDE(float value) // 0xCB6A7C3BB17A0C67 0x046B62D9 b323</code>
 +
 +==== GET_SCREEN_COORD_FROM_WORLD_COORD ====
 +<code cpp>BOOL GRAPHICS::GET_SCREEN_COORD_FROM_WORLD_COORD(float worldX, float worldY, float worldZ, float* screenX, float* screenY) // 0x34E82F05DF2974F5 0x1F950E4B b323</code>
 +
 +<code>Convert a world coordinate into its relative screen coordinate.  (WorldToScreen)
 +
 +Returns a boolean; whether or not the operation was successful. It will return false if the coordinates given are not visible to the rendering camera.
 +
 +
 +For .NET users...
 +
 +VB:
 +Public Shared Function World3DToScreen2d(pos as vector3) As Vector2
 +
 +        Dim x2dp, y2dp As New Native.OutputArgument
 +
 +        Native.Function.Call(Of Boolean)(Native.Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.x, pos.y, pos.z, x2dp, y2dp)
 +        Return New Vector2(x2dp.GetResult(Of Single), y2dp.GetResult(Of Single))
 +      
 +    End Function
 +
 +C#:
 +Vector2 World3DToScreen2d(Vector3 pos)
 +    {
 +        var x2dp = new OutputArgument();
 +        var y2dp = new OutputArgument();
 +
 +        Function.Call<bool>(Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.X, pos.Y, pos.Z, x2dp, y2dp);
 +        return new Vector2(x2dp.GetResult<float>(), y2dp.GetResult<float>());
 +    }
 +//USE VERY SMALL VALUES FOR THE SCALE OF RECTS/TEXT because it is dramatically larger on screen than in 3D, e.g '0.05' small.
 +
 +Used to be called _WORLD3D_TO_SCREEN2D
 +
 +I thought we lost you from the scene forever. It does seem however that calling SET_DRAW_ORIGIN then your natives, then ending it. Seems to work better for certain things such as keeping boxes around people for a predator missile e.g.</code>
 +==== GET_TEXTURE_RESOLUTION ====
 +<code cpp>Vector3 GRAPHICS::GET_TEXTURE_RESOLUTION(const char* textureDict, const char* textureName) // 0x35736EE65BD00C11 0x096DAA4D b323</code>
 +
 +<code>Returns the texture resolution of the passed texture dict+name.
 +
 +Note: Most texture resolutions are doubled compared to the console version of the game.</code>
 +==== _OVERRIDE_PED_BADGE_TEXTURE ====
 +<code cpp>BOOL GRAPHICS::_OVERRIDE_PED_BADGE_TEXTURE(Ped ped, const char* txd, const char* txn) // 0x95EB5E34F821BABE  b877</code>
 +
 +<code>Overriding ped badge texture to a passed texture. It's synced between players (even custom textures!), don't forget to request used dict on *all* clients to make it sync properly. Can be removed by passing empty strings.</code>
 +==== _0xE2892E7E55D7073A ====
 +<code cpp>void GRAPHICS::_0xE2892E7E55D7073A(float p0) // 0xE2892E7E55D7073A 0x455F1084 b323</code>
 +
 +==== SET_FLASH ====
 +<code cpp>void GRAPHICS::SET_FLASH(float p0, float p1, float fadeIn, float duration, float fadeOut) // 0x0AB84296FED9CFC6 0x7E55A1EE b323</code>
 +
 +<code>Purpose of p0 and p1 unknown.</code>
 +==== DISABLE_OCCLUSION_THIS_FRAME ====
 +<code cpp>void GRAPHICS::DISABLE_OCCLUSION_THIS_FRAME() // 0x3669F1B198DCAA4F 0x0DCC0B8B b323</code>
 +
 +==== SET_ARTIFICIAL_LIGHTS_STATE ====
 +<code cpp>void GRAPHICS::SET_ARTIFICIAL_LIGHTS_STATE(BOOL state) // 0x1268615ACE24D504 0xAA2A0EAF b323</code>
 +
 +<code>Does not affect weapons, particles, fire/explosions, flashlights or the sun.
 +When set to true, all emissive textures (including ped components that have light effects), street lights, building lights, vehicle lights, etc will all be turned off.
 +
 +Used in Humane Labs Heist for EMP.
 +
 +state: True turns off all artificial light sources in the map: buildings, street lights, car lights, etc. False turns them back on.</code>
 +==== _SET_ARTIFICIAL_LIGHTS_STATE_AFFECTS_VEHICLES ====
 +<code cpp>void GRAPHICS::_SET_ARTIFICIAL_LIGHTS_STATE_AFFECTS_VEHICLES(BOOL toggle) // 0xE2B187C0939B3D32  b2060</code>
 +
 +<code>If "blackout" is enabled, this native allows you to ignore "blackout" for vehicles.</code>
 +==== _0xC35A6D07C93802B2 ====
 +<code cpp>void GRAPHICS::_0xC35A6D07C93802B2() // 0xC35A6D07C93802B2  b323</code>
 +
 +==== CREATE_TRACKED_POINT ====
 +<code cpp>int GRAPHICS::CREATE_TRACKED_POINT() // 0xE2C9439ED45DEA60 0x3129C31A b323</code>
 +
 +<code>Creates a tracked point, useful for checking the visibility of a 3D point on screen.</code>
 +==== SET_TRACKED_POINT_INFO ====
 +<code cpp>void GRAPHICS::SET_TRACKED_POINT_INFO(int point, float x, float y, float z, float radius) // 0x164ECBB3CF750CB0 0x28689AA4 b323</code>
 +
 +==== IS_TRACKED_POINT_VISIBLE ====
 +<code cpp>BOOL GRAPHICS::IS_TRACKED_POINT_VISIBLE(int point) // 0xC45CCDAAC9221CA8 0x0BFC4F64 b323</code>
 +
 +==== DESTROY_TRACKED_POINT ====
 +<code cpp>void GRAPHICS::DESTROY_TRACKED_POINT(int point) // 0xB25DC90BAD56CA42 0x14AC675F b323</code>
 +
 +==== _0xBE197EAA669238F4 ====
 +<code cpp>Any GRAPHICS::_0xBE197EAA669238F4(Any p0, Any p1, Any p2, Any p3) // 0xBE197EAA669238F4  b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== _0x61F95E5BB3E0A8C6 ====
 +<code cpp>void GRAPHICS::_0x61F95E5BB3E0A8C6(Any p0) // 0x61F95E5BB3E0A8C6  b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== _0xAE51BC858F32BA66 ====
 +<code cpp>void GRAPHICS::_0xAE51BC858F32BA66(Any p0, float p1, float p2, float p3, float p4) // 0xAE51BC858F32BA66  b323</code>
 +
 +==== _0x649C97D52332341A ====
 +<code cpp>void GRAPHICS::_0x649C97D52332341A(Any p0) // 0x649C97D52332341A  b323</code>
 +
 +==== _0x2C42340F916C5930 ====
 +<code cpp>Any GRAPHICS::_0x2C42340F916C5930(Any p0) // 0x2C42340F916C5930  b323</code>
 +
 +==== _0x14FC5833464340A8 ====
 +<code cpp>void GRAPHICS::_0x14FC5833464340A8() // 0x14FC5833464340A8  b323</code>
 +
 +==== _0x0218BA067D249DEA ====
 +<code cpp>void GRAPHICS::_0x0218BA067D249DEA() // 0x0218BA067D249DEA  b323</code>
 +
 +==== _0x1612C45F9E3E0D44 ====
 +<code cpp>void GRAPHICS::_0x1612C45F9E3E0D44() // 0x1612C45F9E3E0D44  b323</code>
 +
 +==== _0x5DEBD9C4DC995692 ====
 +<code cpp>void GRAPHICS::_0x5DEBD9C4DC995692() // 0x5DEBD9C4DC995692  b323</code>
 +
 +==== _0xAAE9BE70EC7C69AB ====
 +<code cpp>void GRAPHICS::_0xAAE9BE70EC7C69AB(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7) // 0xAAE9BE70EC7C69AB  b1290</code>
 +
 +==== _GRASS_LOD_SHRINK_SCRIPT_AREAS ====
 +<code cpp>void GRAPHICS::_GRASS_LOD_SHRINK_SCRIPT_AREAS(float x, float y, float z, float radius, float p4, float p5, float p6) // 0x6D955F6A9E0295B1  b323</code>
 +
 +<code>Wraps 0xAAE9BE70EC7C69AB with FLT_MAX as p7, Jenkins: 0x73E96210?</code>
 +==== _GRASS_LOD_RESET_SCRIPT_AREAS ====
 +<code cpp>void GRAPHICS::_GRASS_LOD_RESET_SCRIPT_AREAS() // 0x302C91AB2D477F7E  b323</code>
 +
 +==== CASCADE_SHADOWS_INIT_SESSION ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_INIT_SESSION() // 0x03FC694AE06C5A20 0x48F16186 b323</code>
 +
 +==== CASCADE_SHADOWS_SET_CASCADE_BOUNDS ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_CASCADE_BOUNDS(Any p0, BOOL p1, float p2, float p3, float p4, float p5, BOOL p6, float p7) // 0xD2936CAB8B58FCBD 0x84F05943 b323</code>
 +
 +==== CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE(float p0) // 0x5F0F3F56635809EF 0x13D4ABC0 b323</code>
 +
 +==== CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE(float p0) // 0x5E9DAF5A20F15908 0xD2157428 b323</code>
 +
 +==== _0x36F6626459D91457 ====
 +<code cpp>void GRAPHICS::_0x36F6626459D91457(float p0) // 0x36F6626459D91457 0xC07C64C9 b323</code>
 +
 +==== _0x259BA6D4E6F808F1 ====
 +<code cpp>void GRAPHICS::_0x259BA6D4E6F808F1(Any p0) // 0x259BA6D4E6F808F1  b1011</code>
 +
 +==== CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(BOOL toggle) // 0x80ECBC0C856D3B0B 0xFE903D0F b323</code>
 +
 +<code>When this is set to ON, shadows only draw as you get nearer.
 +
 +When OFF, they draw from a further distance.</code>
 +==== _0x25FC3E33A31AD0C9 ====
 +<code cpp>void GRAPHICS::_0x25FC3E33A31AD0C9(BOOL p0) // 0x25FC3E33A31AD0C9  b323</code>
 +
 +==== CASCADE_SHADOWS_SET_SHADOW_SAMPLE_TYPE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_SHADOW_SAMPLE_TYPE(const char* type) // 0xB11D94BC55F41932 0xDE10BA1F b323</code>
 +
 +<code>Possible values:
 +"CSM_ST_POINT"
 +"CSM_ST_LINEAR"
 +"CSM_ST_TWOTAP"
 +"CSM_ST_BOX3x3"
 +"CSM_ST_BOX4x4"
 +"CSM_ST_DITHER2_LINEAR"
 +"CSM_ST_CUBIC"
 +"CSM_ST_DITHER4"
 +"CSM_ST_DITHER16"
 +"CSM_ST_SOFT16"
 +"CSM_ST_DITHER16_RPDB"
 +"CSM_ST_POISSON16_RPDB_GNORM"
 +"CSM_ST_HIGHRES_BOX4x4"
 +"CSM_ST_CLOUDS_SIMPLE"
 +"CSM_ST_CLOUDS_LINEAR"
 +"CSM_ST_CLOUDS_TWOTAP"
 +"CSM_ST_CLOUDS_BOX3x3"
 +"CSM_ST_CLOUDS_BOX4x4"
 +"CSM_ST_CLOUDS_DITHER2_LINEAR"
 +"CSM_ST_CLOUDS_SOFT16"
 +"CSM_ST_CLOUDS_DITHER16_RPDB"
 +"CSM_ST_CLOUDS_POISSON16_RPDB_GNORM"</code>
 +==== _CASCADE_SHADOWS_CLEAR_SHADOW_SAMPLE_TYPE ====
 +<code cpp>void GRAPHICS::_CASCADE_SHADOWS_CLEAR_SHADOW_SAMPLE_TYPE() // 0x27CB772218215325  b323</code>
 +
 +==== CASCADE_SHADOWS_SET_AIRCRAFT_MODE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_AIRCRAFT_MODE(BOOL p0) // 0x6DDBF9DFFC4AC080 0x9F470BE3 b323</code>
 +
 +==== CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_MODE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_MODE(BOOL p0) // 0xD39D13C9FEBF0511 0x4A124267 b323</code>
 +
 +==== CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_VALUE ====
 +<code cpp>void GRAPHICS::CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_VALUE(float p0) // 0x02AC28F3A01FA04A 0xB19B2764 b323</code>
 +
 +==== _0x0AE73D8DF3A762B2 ====
 +<code cpp>void GRAPHICS::_0x0AE73D8DF3A762B2(BOOL p0) // 0x0AE73D8DF3A762B2 0x342FA2B4 b323</code>
 +
 +==== _0xCA465D9CC0D231BA ====
 +<code cpp>void GRAPHICS::_0xCA465D9CC0D231BA(Any p0) // 0xCA465D9CC0D231BA  b1011</code>
 +
 +==== GOLF_TRAIL_SET_ENABLED ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_ENABLED(BOOL toggle) // 0xA51C4B86B71652AE 0x5D3BFFC9 b323</code>
 +
 +==== GOLF_TRAIL_SET_PATH ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_PATH(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, BOOL p8) // 0x312342E1A4874F3F 0xD9653728 b323</code>
 +
 +<code>p8 seems to always be false.</code>
 +==== GOLF_TRAIL_SET_RADIUS ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_RADIUS(float p0, float p1, float p2) // 0x2485D34E50A22E84 0x72BA8A14 b323</code>
 +
 +==== GOLF_TRAIL_SET_COLOUR ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_COLOUR(int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10, int p11) // 0x12995F2E53FFA601 0x804F444C b323</code>
 +
 +==== GOLF_TRAIL_SET_TESSELLATION ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_TESSELLATION(int p0, int p1) // 0xDBAA5EC848BA2D46 0xBB1A1294 b323</code>
 +
 +==== _0xC0416B061F2B7E5E ====
 +<code cpp>void GRAPHICS::_0xC0416B061F2B7E5E(BOOL p0) // 0xC0416B061F2B7E5E 0x1A1A72EF b323</code>
 +
 +<code>GOLF_TRAIL_SET_*</code>
 +==== GOLF_TRAIL_SET_FIXED_CONTROL_POINT ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_FIXED_CONTROL_POINT(int type, float xPos, float yPos, float zPos, float p4, int red, int green, int blue, int alpha) // 0xB1BB03742917A5D6 0x3BB12B75 b323</code>
 +
 +<code>12 matches across 4 scripts. All 4 scripts were job creators.
 +
 +type ranged from 0 - 2.
 +p4 was always 0.2f. Likely scale.
 +assuming p5 - p8 is RGBA, the graphic is always yellow (255, 255, 0, 255).
 +
 +Tested but noticed nothing.</code>
 +==== GOLF_TRAIL_SET_SHADER_PARAMS ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_SHADER_PARAMS(float p0, float p1, float p2, float p3, float p4) // 0x9CFDD90B2B844BF7 0x4EA70FB4 b323</code>
 +
 +<code>Only appeared in Golf & Golf_mp. Parameters were all ptrs</code>
 +==== GOLF_TRAIL_SET_FACING ====
 +<code cpp>void GRAPHICS::GOLF_TRAIL_SET_FACING(BOOL p0) // 0x06F761EA47C1D3ED 0x0D830DC7 b323</code>
 +
 +==== GOLF_TRAIL_GET_MAX_HEIGHT ====
 +<code cpp>float GRAPHICS::GOLF_TRAIL_GET_MAX_HEIGHT() // 0xA4819F5E23E2FFAD 0xA08B46AD b323</code>
 +
 +==== GOLF_TRAIL_GET_VISUAL_CONTROL_POINT ====
 +<code cpp>Vector3 GRAPHICS::GOLF_TRAIL_GET_VISUAL_CONTROL_POINT(int p0) // 0xA4664972A9B8F8BA 0xECD470F0 b323</code>
 +
 +==== SET_SEETHROUGH ====
 +<code cpp>void GRAPHICS::SET_SEETHROUGH(BOOL toggle) // 0x7E08924259E08CE0 0x74D4995C b323</code>
 +
 +<code>Toggles Heatvision on/off.</code>
 +==== GET_USINGSEETHROUGH ====
 +<code cpp>BOOL GRAPHICS::GET_USINGSEETHROUGH() // 0x44B80ABAB9D80BD3 0x1FE547F2 b323</code>
 +
 +==== SEETHROUGH_RESET ====
 +<code cpp>void GRAPHICS::SEETHROUGH_RESET() // 0x70A64C0234EF522C 0x310E9B67 b323</code>
 +
 +==== _SEETHROUGH_SET_FADE_START_DISTANCE ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_FADE_START_DISTANCE(float distance) // 0xA78DE25577300BA1  b573</code>
 +
 +==== _SEETHROUGH_SET_FADE_END_DISTANCE ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_FADE_END_DISTANCE(float distance) // 0x9D75795B9DC6EBBF  b573</code>
 +
 +==== _SEETHROUGH_GET_MAX_THICKNESS ====
 +<code cpp>float GRAPHICS::_SEETHROUGH_GET_MAX_THICKNESS() // 0x43DBAE39626CE83F  b1290</code>
 +
 +==== _SEETHROUGH_SET_MAX_THICKNESS ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_MAX_THICKNESS(float thickness) // 0x0C8FAC83902A62DF  b573</code>
 +
 +<code>0.0 = you will not be able to see people behind the walls. 50.0 and more = you will see everyone through the walls. More value is "better" view. See https://gfycat.com/FirmFlippantGourami
 +min: 1.0
 +max: 10000.0</code>
 +==== _SEETHROUGH_SET_NOISE_AMOUNT_MIN ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_NOISE_AMOUNT_MIN(float amount) // 0xFF5992E1C9E65D05  b573</code>
 +
 +==== _SEETHROUGH_SET_NOISE_AMOUNT_MAX ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_NOISE_AMOUNT_MAX(float amount) // 0xFEBFBFDFB66039DE  b573</code>
 +
 +==== _SEETHROUGH_SET_HI_LIGHT_INTENSITY ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_HI_LIGHT_INTENSITY(float intensity) // 0x19E50EB6E33E1D28  b573</code>
 +
 +==== _SEETHROUGH_SET_HI_LIGHT_NOISE ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_HI_LIGHT_NOISE(float noise) // 0x1636D7FC127B10D2  b573</code>
 +
 +==== SEETHROUGH_SET_HEATSCALE ====
 +<code cpp>void GRAPHICS::SEETHROUGH_SET_HEATSCALE(int index, float heatScale) // 0xD7D0B00177485411 0x654F0287 b323</code>
 +
 +<code>min: 0.0
 +max: 0.75</code>
 +==== _SEETHROUGH_SET_COLOR_NEAR ====
 +<code cpp>void GRAPHICS::_SEETHROUGH_SET_COLOR_NEAR(int red, int green, int blue) // 0x1086127B3A63505E  b573</code>
 +
 +==== _0xB3C641F3630BF6DA ====
 +<code cpp>void GRAPHICS::_0xB3C641F3630BF6DA(float p0) // 0xB3C641F3630BF6DA 0xF6B837F0 b323</code>
 +
 +<code>Setter for 0xE59343E9E96529E7
 +
 +SET_M*</code>
 +==== _0xE59343E9E96529E7 ====
 +<code cpp>float GRAPHICS::_0xE59343E9E96529E7() // 0xE59343E9E96529E7 0xD906A3A9 b323</code>
 +
 +<code>Getter for 0xB3C641F3630BF6DA
 +
 +GET_M*</code>
 +==== _0x6A51F78772175A51 ====
 +<code cpp>void GRAPHICS::_0x6A51F78772175A51(BOOL toggle) // 0x6A51F78772175A51  b1011</code>
 +
 +<code>SET_F*</code>
 +==== _0xE63D7C6EECECB66B ====
 +<code cpp>void GRAPHICS::_0xE63D7C6EECECB66B(BOOL toggle) // 0xE63D7C6EECECB66B 0xD34A6CBA b323</code>
 +
 +<code>TOGGLE_*</code>
 +==== _0xE3E2C1B4C59DBC77 ====
 +<code cpp>void GRAPHICS::_0xE3E2C1B4C59DBC77(int unk) // 0xE3E2C1B4C59DBC77 0xD8CC7221 b323</code>
 +
 +<code>Sets an unknown value related to timecycles.</code>
 +==== TRIGGER_SCREENBLUR_FADE_IN ====
 +<code cpp>BOOL GRAPHICS::TRIGGER_SCREENBLUR_FADE_IN(float transitionTime) // 0xA328A24AAA6B7FDC 0x5604B890 b323</code>
 +
 +<code>time in ms to transition to fully blurred screen</code>
 +==== TRIGGER_SCREENBLUR_FADE_OUT ====
 +<code cpp>BOOL GRAPHICS::TRIGGER_SCREENBLUR_FADE_OUT(float transitionTime) // 0xEFACC8AEF94430D5 0x46617502 b323</code>
 +
 +<code>time in ms to transition from fully blurred to normal</code>
 +==== DISABLE_SCREENBLUR_FADE ====
 +<code cpp>void GRAPHICS::DISABLE_SCREENBLUR_FADE() // 0xDE81239437E8C5A8 0xDB7AECDA b323</code>
 +
 +==== GET_SCREENBLUR_FADE_CURRENT_TIME ====
 +<code cpp>float GRAPHICS::GET_SCREENBLUR_FADE_CURRENT_TIME() // 0x5CCABFFCA31DDE33 0xEA432A94 b323</code>
 +
 +==== IS_SCREENBLUR_FADE_RUNNING ====
 +<code cpp>BOOL GRAPHICS::IS_SCREENBLUR_FADE_RUNNING() // 0x7B226C785A52A0A9 0x926B8734 b323</code>
 +
 +<code>Returns whether screen transition to blur/from blur is running.</code>
 +==== TOGGLE_PAUSED_RENDERPHASES ====
 +<code cpp>void GRAPHICS::TOGGLE_PAUSED_RENDERPHASES(BOOL toggle) // 0xDFC252D8A3E15AB7 0x30ADE541 b323</code>
 +
 +==== GET_TOGGLE_PAUSED_RENDERPHASES_STATUS ====
 +<code cpp>BOOL GRAPHICS::GET_TOGGLE_PAUSED_RENDERPHASES_STATUS() // 0xEB3DAC2C86001E5E 0xD4F5D07D b323</code>
 +
 +==== RESET_PAUSED_RENDERPHASES ====
 +<code cpp>void GRAPHICS::RESET_PAUSED_RENDERPHASES() // 0xE1C8709406F2C41C 0x0113EAE4 b323</code>
 +
 +==== _0x851CD923176EBA7C ====
 +<code cpp>void GRAPHICS::_0x851CD923176EBA7C() // 0x851CD923176EBA7C 0xDCBA251B b323</code>
 +
 +==== _SET_HIDOF_ENV_BLUR_PARAMS ====
 +<code cpp>void GRAPHICS::_SET_HIDOF_ENV_BLUR_PARAMS(BOOL p0, BOOL p1, float nearplaneOut, float nearplaneIn, float farplaneOut, float farplaneIn) // 0xBA3D65906822BED5 0x513D444B b323</code>
 +
 +<code>Every p2 - p5 occurrence was 0f.</code>
 +==== _0xB569F41F3E7E83A4 ====
 +<code cpp>void GRAPHICS::_0xB569F41F3E7E83A4(Any p0) // 0xB569F41F3E7E83A4  b1103</code>
 +
 +==== _0x7AC24EAB6D74118D ====
 +<code cpp>BOOL GRAPHICS::_0x7AC24EAB6D74118D(BOOL p0) // 0x7AC24EAB6D74118D 0xB2410EAB b323</code>
 +
 +==== _0xBCEDB009461DA156 ====
 +<code cpp>Any GRAPHICS::_0xBCEDB009461DA156() // 0xBCEDB009461DA156 0x5AB94128 b323</code>
 +
 +==== _0x27FEB5254759CDE3 ====
 +<code cpp>BOOL GRAPHICS::_0x27FEB5254759CDE3(const char* textureDict, BOOL p1) // 0x27FEB5254759CDE3 0xD63FCB3E b323</code>
 +
 +==== START_PARTICLE_FX_NON_LOOPED_AT_COORD ====
 +<code cpp>int GRAPHICS::START_PARTICLE_FX_NON_LOOPED_AT_COORD(const char* effectName, float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis) // 0x25129531F77B9ED3 0xDD79D679 b323</code>
 +
 +<code>GRAPHICS::START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_paleto_roof_impact", -140.8576f, 6420.789f, 41.1391f, 0f, 0f, 267.3957f, 0x3F800000, 0, 0, 0);
 +
 +Axis - Invert Axis Flags
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
 +
 +
 +-------------------------------------------------------------------
 +C#
 +
 +Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, = you are calling this function.
 +
 +char *effectname = This is an in-game effect name, for e.g. "scr_fbi4_trucks_crash" is used to give the effects when truck crashes etc
 +
 +float x, y, z pos = this one is Simple, you just have to declare, where do you want this effect to take place at, so declare the ordinates
 +
 +float xrot, yrot, zrot = Again simple? just mention the value in case if you want the effect to rotate.
 +
 +float scale = is declare the scale of the effect, this may vary as per the effects for e.g 1.0f
 +
 +bool xaxis, yaxis, zaxis = To bool the axis values.
 +
 +example:
 +Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, "scr_fbi4_trucks_crash", GTA.Game.Player.Character.Position.X, GTA.Game.Player.Character.Position.Y, GTA.Game.Player.Character.Position.Z + 4f, 0, 0, 0, 5.5f, 0, 0, 0);</code>
 +==== START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD ====
 +<code cpp>BOOL GRAPHICS::START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD(const char* effectName, float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis, BOOL p11) // 0xF56B8137DF10135D 0x633F8C48 b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE ====
 +<code cpp>BOOL GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE(const char* effectName, Ped ped, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, int boneIndex, float scale, BOOL axisX, BOOL axisY, BOOL axisZ) // 0x0E7E72961BA18619 0x53DAEF4E b323</code>
 +
 +<code>GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE("scr_sh_bong_smoke", PLAYER::PLAYER_PED_ID(), -0.025f, 0.13f, 0f, 0f, 0f, 0f, 31086, 0x3F800000, 0, 0, 0);
 +
 +Axis - Invert Axis Flags
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_PED_BONE ====
 +<code cpp>BOOL GRAPHICS::START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_PED_BONE(const char* effectName, Ped ped, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, int boneIndex, float scale, BOOL axisX, BOOL axisY, BOOL axisZ) // 0xA41B6A43642AC2CF 0x161780C1 b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_PARTICLE_FX_NON_LOOPED_ON_ENTITY ====
 +<code cpp>BOOL GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_ENTITY(const char* effectName, Entity entity, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, float scale, BOOL axisX, BOOL axisY, BOOL axisZ) // 0x0D53A3B8DA0809D2 0x9604DAD4 b323</code>
 +
 +<code>Starts a particle effect on an entity for example your player.
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
 +
 +Example:
 +C#:
 +Function.Call(Hash.REQUEST_NAMED_PTFX_ASSET, "scr_rcbarry2");                     Function.Call(Hash._SET_PTFX_ASSET_NEXT_CALL, "scr_rcbarry2");                             Function.Call(Hash.START_PARTICLE_FX_NON_LOOPED_ON_ENTITY, "scr_clown_appears", Game.Player.Character, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false);
 +
 +Internally this calls the same function as GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE
 +however it uses -1 for the specified bone index, so it should be possible to start a non looped fx on an entity bone using that native
 +
 +-can confirm START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE does NOT work on vehicle bones.</code>
 +==== START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY ====
 +<code cpp>BOOL GRAPHICS::START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY(const char* effectName, Entity entity, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, float scale, BOOL axisX, BOOL axisY, BOOL axisZ) // 0xC95EB1DB6E92113D 0x469A2B4A b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== _START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY_BONE ====
 +<code cpp>BOOL GRAPHICS::_START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY_BONE(const char* effectName, Entity entity, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, int boneIndex, float scale, BOOL axisX, BOOL axisY, BOOL axisZ) // 0x02B1F2A72E0F5325  b2189</code>
 +
 +==== SET_PARTICLE_FX_NON_LOOPED_COLOUR ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_NON_LOOPED_COLOUR(float r, float g, float b) // 0x26143A59EF48B262 0x7B689E20 b323</code>
 +
 +<code>only works on some fx's, not networked</code>
 +==== SET_PARTICLE_FX_NON_LOOPED_ALPHA ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_NON_LOOPED_ALPHA(float alpha) // 0x77168D722C58B2FC 0x497EAFF2 b323</code>
 +
 +<code>Usage example for C#:
 +
 +Function.Call(Hash.SET_PARTICLE_FX_NON_LOOPED_ALPHA, new InputArgument[] { 0.1f });
 +
 +Note: the argument alpha ranges from 0.0f-1.0f !</code>
 +==== _0x8CDE909A0370BB3A ====
 +<code cpp>void GRAPHICS::_0x8CDE909A0370BB3A(BOOL toggle) // 0x8CDE909A0370BB3A  b323</code>
 +
 +<code>Used only once in the scripts (taxi_clowncar)
 +
 +SET_PARTICLE_FX_*</code>
 +==== START_PARTICLE_FX_LOOPED_AT_COORD ====
 +<code cpp>int GRAPHICS::START_PARTICLE_FX_LOOPED_AT_COORD(const char* effectName, float x, float y, float z, float xRot, float yRot, float zRot, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis, BOOL p11) // 0xE184F4F0DC5910E7 0xD348E3E6 b323</code>
 +
 +<code>GRAPHICS::START_PARTICLE_FX_LOOPED_AT_COORD("scr_fbi_falling_debris", 93.7743f, -749.4572f, 70.86904f, 0f, 0f, 0f, 0x3F800000, 0, 0, 0, 0)
 +
 +
 +p11 seems to be always 0
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_PARTICLE_FX_LOOPED_ON_PED_BONE ====
 +<code cpp>int GRAPHICS::START_PARTICLE_FX_LOOPED_ON_PED_BONE(const char* effectName, Ped ped, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, int boneIndex, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis) // 0xF28DA9F38CD1787C 0xF8FC196F b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_PARTICLE_FX_LOOPED_ON_ENTITY ====
 +<code cpp>int GRAPHICS::START_PARTICLE_FX_LOOPED_ON_ENTITY(const char* effectName, Entity entity, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis) // 0x1AE42C1660FD6517 0x0D06FF62 b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE ====
 +<code cpp>int GRAPHICS::START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE(const char* effectName, Entity entity, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, int boneIndex, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis) // 0xC6EB449E33977F0B 0x23BF0F9B b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY ====
 +<code cpp>int GRAPHICS::START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY(const char* effectName, Entity entity, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis, Any p12, Any p13, Any p14, Any p15) // 0x6F60E89A7B64EE1D 0x110752B2 b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY_BONE ====
 +<code cpp>int GRAPHICS::START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY_BONE(const char* effectName, Entity entity, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, int boneIndex, float scale, BOOL xAxis, BOOL yAxis, BOOL zAxis, Any p13, Any p14, Any p15, Any p16) // 0xDDE23F30CC5A0F03 0xF478EFCF b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== STOP_PARTICLE_FX_LOOPED ====
 +<code cpp>void GRAPHICS::STOP_PARTICLE_FX_LOOPED(int ptfxHandle, BOOL p1) // 0x8F75998877616996 0xD245455B b323</code>
 +
 +<code>p1 is always 0 in the native scripts</code>
 +==== REMOVE_PARTICLE_FX ====
 +<code cpp>void GRAPHICS::REMOVE_PARTICLE_FX(int ptfxHandle, BOOL p1) // 0xC401503DFE8D53CF 0x6BA48C7E b323</code>
 +
 +==== REMOVE_PARTICLE_FX_FROM_ENTITY ====
 +<code cpp>void GRAPHICS::REMOVE_PARTICLE_FX_FROM_ENTITY(Entity entity) // 0xB8FEAEEBCC127425 0xCEDE52E9 b323</code>
 +
 +==== REMOVE_PARTICLE_FX_IN_RANGE ====
 +<code cpp>void GRAPHICS::REMOVE_PARTICLE_FX_IN_RANGE(float X, float Y, float Z, float radius) // 0xDD19FA1C6D657305 0x7EB8F275 b323</code>
 +
 +==== _0xBA0127DA25FD54C9 ====
 +<code cpp>void GRAPHICS::_0xBA0127DA25FD54C9(Any p0, Any p1) // 0xBA0127DA25FD54C9  b372</code>
 +
 +==== DOES_PARTICLE_FX_LOOPED_EXIST ====
 +<code cpp>BOOL GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(int ptfxHandle) // 0x74AFEF0D2E1E409B 0xCBF91D2A b323</code>
 +
 +==== SET_PARTICLE_FX_LOOPED_OFFSETS ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_OFFSETS(int ptfxHandle, float x, float y, float z, float rotX, float rotY, float rotZ) // 0xF7DDEBEC43483C43 0x641F7790 b323</code>
 +
 +==== SET_PARTICLE_FX_LOOPED_EVOLUTION ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_EVOLUTION(int ptfxHandle, const char* propertyName, float amount, BOOL noNetwork) // 0x5F0C4B5B1C393BE2 0x1CBC1373 b323</code>
 +
 +==== SET_PARTICLE_FX_LOOPED_COLOUR ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_COLOUR(int ptfxHandle, float r, float g, float b, BOOL p4) // 0x7F8F65877F88783B 0x5219D530 b323</code>
 +
 +<code>only works on some fx's
 +
 +p4 = 0</code>
 +==== SET_PARTICLE_FX_LOOPED_ALPHA ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_ALPHA(int ptfxHandle, float alpha) // 0x726845132380142E 0x5ED49BE1 b323</code>
 +
 +==== SET_PARTICLE_FX_LOOPED_SCALE ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_SCALE(int ptfxHandle, float scale) // 0xB44250AAA456492D 0x099B8B49 b323</code>
 +
 +==== SET_PARTICLE_FX_LOOPED_FAR_CLIP_DIST ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_LOOPED_FAR_CLIP_DIST(int ptfxHandle, float range) // 0xDCB194B85EF7B541 0x233DE879 b323</code>
 +
 +==== SET_PARTICLE_FX_CAM_INSIDE_VEHICLE ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_CAM_INSIDE_VEHICLE(BOOL p0) // 0xEEC4047028426510 0x19EC0001 b323</code>
 +
 +==== SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(Vehicle vehicle, BOOL p1) // 0xACEE6F360FC1F6B6 0x6B125A02 b323</code>
 +
 +==== SET_PARTICLE_FX_SHOOTOUT_BOAT ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_SHOOTOUT_BOAT(Any p0) // 0x96EF97DAEB89BEF5 0xD938DEE0 b323</code>
 +
 +==== _0x2A251AA48B2B46DB ====
 +<code cpp>void GRAPHICS::_0x2A251AA48B2B46DB() // 0x2A251AA48B2B46DB  b323</code>
 +
 +==== _0x908311265D42A820 ====
 +<code cpp>void GRAPHICS::_0x908311265D42A820(Any p0) // 0x908311265D42A820  b323</code>
 +
 +==== _0xCFD16F0DB5A3535C ====
 +<code cpp>void GRAPHICS::_0xCFD16F0DB5A3535C(BOOL toggle) // 0xCFD16F0DB5A3535C  b2060</code>
 +
 +==== _0x5F6DF3D92271E8A1 ====
 +<code cpp>void GRAPHICS::_0x5F6DF3D92271E8A1(BOOL toggle) // 0x5F6DF3D92271E8A1 0x18136DE0 b323</code>
 +
 +<code>DISABLE_*</code>
 +==== _0x2B40A97646381508 ====
 +<code cpp>void GRAPHICS::_0x2B40A97646381508(Any p0) // 0x2B40A97646381508  b1011</code>
 +
 +==== ENABLE_CLOWN_BLOOD_VFX ====
 +<code cpp>void GRAPHICS::ENABLE_CLOWN_BLOOD_VFX(BOOL toggle) // 0xD821490579791273 0xC61C75E9 b323</code>
 +
 +<code>Creates cartoon effect when Michel smokes the weed</code>
 +==== ENABLE_ALIEN_BLOOD_VFX ====
 +<code cpp>void GRAPHICS::ENABLE_ALIEN_BLOOD_VFX(BOOL toggle) // 0x9DCE1F0F78260875 0xCE8B8748 b323</code>
 +
 +<code>Creates a motion-blur sort of effect, this native does not seem to work, however by using the `START_SCREEN_EFFECT` native with `DrugsMichaelAliensFight` as the effect parameter, you should be able to get the effect.</code>
 +==== SET_PARTICLE_FX_BULLET_IMPACT_SCALE ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_BULLET_IMPACT_SCALE(float scale) // 0x27E32866E9A5C416 0xC1AD5DDF b323</code>
 +
 +==== _0xBB90E12CAC1DAB25 ====
 +<code cpp>void GRAPHICS::_0xBB90E12CAC1DAB25(float p0) // 0xBB90E12CAC1DAB25 0x3968E915 b323</code>
 +
 +==== _0xCA4AE345A153D573 ====
 +<code cpp>void GRAPHICS::_0xCA4AE345A153D573(BOOL p0) // 0xCA4AE345A153D573 0x64BA4648 b323</code>
 +
 +==== _0x54E22EA2C1956A8D ====
 +<code cpp>void GRAPHICS::_0x54E22EA2C1956A8D(float p0) // 0x54E22EA2C1956A8D 0x8BE3D47F b323</code>
 +
 +==== _0x949F397A288B28B3 ====
 +<code cpp>void GRAPHICS::_0x949F397A288B28B3(float p0) // 0x949F397A288B28B3 0xE3880F5A b323</code>
 +
 +==== _0xBA3D194057C79A7B ====
 +<code cpp>void GRAPHICS::_0xBA3D194057C79A7B(const char* p0) // 0xBA3D194057C79A7B  b877</code>
 +
 +<code>SET_PARTICLE_FX_*
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== _0x5DBF05DB5926D089 ====
 +<code cpp>void GRAPHICS::_0x5DBF05DB5926D089(Any p0) // 0x5DBF05DB5926D089  b1011</code>
 +
 +==== _0x9B079E5221D984D3 ====
 +<code cpp>void GRAPHICS::_0x9B079E5221D984D3(BOOL p0) // 0x9B079E5221D984D3 0x447A9EB9 b323</code>
 +
 +<code>FORCE_*</code>
 +==== USE_PARTICLE_FX_ASSET ====
 +<code cpp>void GRAPHICS::USE_PARTICLE_FX_ASSET(const char* name) // 0x6C38AF3693A69A91 0x9C720B61 b323</code>
 +
 +<code>From the b678d decompiled scripts:
 +
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("FM_Mission_Controler");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_apartment_mp");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_indep_fireworks");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_mp_cig_plane");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_mp_creator");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_ornate_heist");
 + GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("scr_prison_break_heist_station");
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== SET_PARTICLE_FX_OVERRIDE ====
 +<code cpp>void GRAPHICS::SET_PARTICLE_FX_OVERRIDE(const char* oldAsset, const char* newAsset) // 0xEA1E2D93F6F75ED9 0xC92719A7 b323</code>
 +
 +<code>Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== RESET_PARTICLE_FX_OVERRIDE ====
 +<code cpp>void GRAPHICS::RESET_PARTICLE_FX_OVERRIDE(const char* name) // 0x89C8553DD3274AAE 0x9E8D8B72 b323</code>
 +
 +<code>Resets the effect of SET_PARTICLE_FX_OVERRIDE
 +
 +Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json</code>
 +==== _0xA46B73FAA3460AE1 ====
 +<code cpp>void GRAPHICS::_0xA46B73FAA3460AE1(BOOL p0) // 0xA46B73FAA3460AE1  b323</code>
 +
 +==== _0xF78B803082D4386F ====
 +<code cpp>void GRAPHICS::_0xF78B803082D4386F(float p0) // 0xF78B803082D4386F  b323</code>
 +
 +==== WASH_DECALS_IN_RANGE ====
 +<code cpp>void GRAPHICS::WASH_DECALS_IN_RANGE(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x9C30613D50A6ADEF 0xDEECBC57 b323</code>
 +
 +==== WASH_DECALS_FROM_VEHICLE ====
 +<code cpp>void GRAPHICS::WASH_DECALS_FROM_VEHICLE(Vehicle vehicle, float p1) // 0x5B712761429DBC14 0x2929F11A b323</code>
 +
 +==== FADE_DECALS_IN_RANGE ====
 +<code cpp>void GRAPHICS::FADE_DECALS_IN_RANGE(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xD77EDADB0420E6E0 0xF81E884A b323</code>
 +
 +<code>Fades nearby decals within the range specified</code>
 +==== REMOVE_DECALS_IN_RANGE ====
 +<code cpp>void GRAPHICS::REMOVE_DECALS_IN_RANGE(float x, float y, float z, float range) // 0x5D6B2D4830A67C62 0x06A619A0 b323</code>
 +
 +<code>Removes all decals in range from a position, it includes the bullet holes, blood pools, petrol...</code>
 +==== REMOVE_DECALS_FROM_OBJECT ====
 +<code cpp>void GRAPHICS::REMOVE_DECALS_FROM_OBJECT(Object obj) // 0xCCF71CBDDF5B6CB9 0x8B67DCA7 b323</code>
 +
 +==== REMOVE_DECALS_FROM_OBJECT_FACING ====
 +<code cpp>void GRAPHICS::REMOVE_DECALS_FROM_OBJECT_FACING(Object obj, float x, float y, float z) // 0xA6F6F70FDC6D144C 0xF4999A55 b323</code>
 +
 +==== REMOVE_DECALS_FROM_VEHICLE ====
 +<code cpp>void GRAPHICS::REMOVE_DECALS_FROM_VEHICLE(Vehicle vehicle) // 0xE91F1B65F2B48D57 0x831D06CA b323</code>
 +
 +==== ADD_DECAL ====
 +<code cpp>int GRAPHICS::ADD_DECAL(int decalType, float posX, float posY, float posZ, float p4, float p5, float p6, float p7, float p8, float p9, float width, float height, float rCoef, float gCoef, float bCoef, float opacity, float timeout, BOOL p17, BOOL p18, BOOL p19) // 0xB302244A1839BDAD 0xEAD0C412 b323</code>
 +
 +<code>decal types:
 +
 +public enum DecalTypes
 +{
 +    splatters_blood = 1010,
 +    splatters_blood_dir = 1015,
 +    splatters_blood_mist = 1017,
 +    splatters_mud = 1020,
 +    splatters_paint = 1030,
 +    splatters_water = 1040,
 +    splatters_water_hydrant = 1050,
 +    splatters_blood2 = 1110,
 +    weapImpact_metal = 4010,
 +    weapImpact_concrete = 4020,
 +    weapImpact_mattress = 4030,
 +    weapImpact_mud = 4032,
 +    weapImpact_wood = 4050,
 +    weapImpact_sand = 4053,
 +    weapImpact_cardboard = 4040,
 +    weapImpact_melee_glass = 4100,
 +    weapImpact_glass_blood = 4102,
 +    weapImpact_glass_blood2 = 4104,
 +    weapImpact_shotgun_paper = 4200,
 +    weapImpact_shotgun_mattress,
 +    weapImpact_shotgun_metal,
 +    weapImpact_shotgun_wood,
 +    weapImpact_shotgun_dirt,
 +    weapImpact_shotgun_tvscreen,
 +    weapImpact_shotgun_tvscreen2,
 +    weapImpact_shotgun_tvscreen3,
 +    weapImpact_melee_concrete = 4310,
 +    weapImpact_melee_wood = 4312,
 +    weapImpact_melee_metal = 4314,
 +    burn1 = 4421,
 +    burn2,
 +    burn3,
 +    burn4,
 +    burn5,
 +    bang_concrete_bang = 5000,
 +    bang_concrete_bang2,
 +    bang_bullet_bang,
 +    bang_bullet_bang2 = 5004,
 +    bang_glass = 5031,
 +    bang_glass2,
 +    solidPool_water = 9000,
 +    solidPool_blood,
 +    solidPool_oil,
 +    solidPool_petrol,
 +    solidPool_mud,
 +    porousPool_water,
 +    porousPool_blood,
 +    porousPool_oil,
 +    porousPool_petrol,
 +    porousPool_mud,
 +    porousPool_water_ped_drip,
 +    liquidTrail_water = 9050
 +}</code>
 +==== ADD_PETROL_DECAL ====
 +<code cpp>int GRAPHICS::ADD_PETROL_DECAL(float x, float y, float z, float groundLvl, float width, float transparency) // 0x4F5212C7AD880DF8 0x1259DF42 b323</code>
 +
 +==== START_PETROL_TRAIL_DECALS ====
 +<code cpp>void GRAPHICS::START_PETROL_TRAIL_DECALS(float p0) // 0x99AC7F0D8B9C893D 0xE3938B0B b323</code>
 +
 +==== ADD_PETROL_TRAIL_DECAL_INFO ====
 +<code cpp>void GRAPHICS::ADD_PETROL_TRAIL_DECAL_INFO(float x, float y, float z, float p3) // 0x967278682CB6967A 0xBAEC6ADD b323</code>
 +
 +==== END_PETROL_TRAIL_DECALS ====
 +<code cpp>void GRAPHICS::END_PETROL_TRAIL_DECALS() // 0x0A123435A26C36CD 0xCCCA6855 b323</code>
 +
 +==== REMOVE_DECAL ====
 +<code cpp>void GRAPHICS::REMOVE_DECAL(int decal) // 0xED3F346429CCD659 0xA4363188 b323</code>
 +
 +==== IS_DECAL_ALIVE ====
 +<code cpp>BOOL GRAPHICS::IS_DECAL_ALIVE(int decal) // 0xC694D74949CAFD0C 0xCDD4A61A b323</code>
 +
 +==== GET_DECAL_WASH_LEVEL ====
 +<code cpp>float GRAPHICS::GET_DECAL_WASH_LEVEL(int decal) // 0x323F647679A09103 0x054448EF b323</code>
 +
 +==== _0xD9454B5752C857DC ====
 +<code cpp>void GRAPHICS::_0xD9454B5752C857DC() // 0xD9454B5752C857DC 0xEAB6417C b323</code>
 +
 +==== _0x27CFB1B1E078CB2D ====
 +<code cpp>void GRAPHICS::_0x27CFB1B1E078CB2D() // 0x27CFB1B1E078CB2D 0xC2703B88 b323</code>
 +
 +==== SET_DISABLE_DECAL_RENDERING_THIS_FRAME ====
 +<code cpp>void GRAPHICS::SET_DISABLE_DECAL_RENDERING_THIS_FRAME() // 0x4B5CFC83122DF602 0xA706E84D b323</code>
 +
 +==== GET_IS_PETROL_DECAL_IN_RANGE ====
 +<code cpp>BOOL GRAPHICS::GET_IS_PETROL_DECAL_IN_RANGE(float xCoord, float yCoord, float zCoord, float radius) // 0x2F09F7976C512404 0x242C6A04 b323</code>
 +
 +==== PATCH_DECAL_DIFFUSE_MAP ====
 +<code cpp>void GRAPHICS::PATCH_DECAL_DIFFUSE_MAP(int decalType, const char* textureDict, const char* textureName) // 0x8A35C742130C6080 0x335695CF b323</code>
 +
 +<code>Old name: _OVERRIDE_DECAL_TEXTURE</code>
 +==== UNPATCH_DECAL_DIFFUSE_MAP ====
 +<code cpp>void GRAPHICS::UNPATCH_DECAL_DIFFUSE_MAP(int decalType) // 0xB7ED70C49521A61D 0x7B786555 b323</code>
 +
 +<code>Old name: _UNDO_DECAL_TEXTURE_OVERRIDE</code>
 +==== MOVE_VEHICLE_DECALS ====
 +<code cpp>void GRAPHICS::MOVE_VEHICLE_DECALS(Any p0, Any p1) // 0x84C8D7C2D30D3280 0xCE9E6CF2 b323</code>
 +
 +==== ADD_VEHICLE_CREW_EMBLEM ====
 +<code cpp>BOOL GRAPHICS::ADD_VEHICLE_CREW_EMBLEM(Vehicle vehicle, Ped ped, int boneIndex, float x1, float x2, float x3, float y1, float y2, float y3, float z1, float z2, float z3, float scale, Any p13, int alpha) // 0x428BDCB9DA58DA53 0x12077738 b323</code>
 +
 +<code>boneIndex is always chassis_dummy in the scripts. The x/y/z params are location relative to the chassis bone.</code>
 +==== _0x82ACC484FFA3B05F ====
 +<code cpp>Any GRAPHICS::_0x82ACC484FFA3B05F(Any p0) // 0x82ACC484FFA3B05F  b372</code>
 +
 +==== REMOVE_VEHICLE_CREW_EMBLEM ====
 +<code cpp>void GRAPHICS::REMOVE_VEHICLE_CREW_EMBLEM(Vehicle vehicle, int p1) // 0xD2300034310557E4 0x667046A8 b323</code>
 +
 +==== GET_VEHICLE_CREW_EMBLEM_REQUEST_STATE ====
 +<code cpp>int GRAPHICS::GET_VEHICLE_CREW_EMBLEM_REQUEST_STATE(Vehicle vehicle, int p1) // 0xFE26117A5841B2FF 0x4F4D76E8 b323</code>
 +
 +==== DOES_VEHICLE_HAVE_CREW_EMBLEM ====
 +<code cpp>BOOL GRAPHICS::DOES_VEHICLE_HAVE_CREW_EMBLEM(Vehicle vehicle, int p1) // 0x060D935D3981A275 0x6D58F73B b323</code>
 +
 +==== _0x0E4299C549F0D1F1 ====
 +<code cpp>void GRAPHICS::_0x0E4299C549F0D1F1(BOOL toggle) // 0x0E4299C549F0D1F1 0x9BABCBA4 b323</code>
 +
 +==== _0x02369D5C8A51FDCF ====
 +<code cpp>void GRAPHICS::_0x02369D5C8A51FDCF(BOOL toggle) // 0x02369D5C8A51FDCF 0xFDF6D8DA b323</code>
 +
 +<code>DISABLE_S*</code>
 +==== _0x46D1A61A21F566FC ====
 +<code cpp>void GRAPHICS::_0x46D1A61A21F566FC(float p0) // 0x46D1A61A21F566FC 0x2056A015 b323</code>
 +
 +==== OVERRIDE_INTERIOR_SMOKE_NAME ====
 +<code cpp>void GRAPHICS::OVERRIDE_INTERIOR_SMOKE_NAME(const char* name) // 0x2A2A52824DB96700 0x0F486429 b323</code>
 +
 +==== OVERRIDE_INTERIOR_SMOKE_LEVEL ====
 +<code cpp>void GRAPHICS::OVERRIDE_INTERIOR_SMOKE_LEVEL(float level) // 0x1600FD8CF72EBC12 0xD87CC710 b323</code>
 +
 +==== OVERRIDE_INTERIOR_SMOKE_END ====
 +<code cpp>void GRAPHICS::OVERRIDE_INTERIOR_SMOKE_END() // 0xEFB55E7C25D3B3BE 0xE29EE145 b323</code>
 +
 +==== _REGISTER_NOIR_SCREEN_EFFECT_THIS_FRAME ====
 +<code cpp>void GRAPHICS::_REGISTER_NOIR_SCREEN_EFFECT_THIS_FRAME() // 0xA44FF770DFBC5DAE  b323</code>
 +
 +<code>Used with 'NG_filmnoir_BW{01,02}' timecycles and the "NOIR_FILTER_SOUNDS" audioref.</code>
 +==== DISABLE_VEHICLE_DISTANTLIGHTS ====
 +<code cpp>void GRAPHICS::DISABLE_VEHICLE_DISTANTLIGHTS(BOOL toggle) // 0xC9F98AC1884E73A2 0x7CFAE36F b323</code>
 +
 +==== _0x03300B57FCAC6DDB ====
 +<code cpp>void GRAPHICS::_0x03300B57FCAC6DDB(BOOL p0) // 0x03300B57FCAC6DDB 0x60F72371 b323</code>
 +
 +==== _0x98EDF76A7271E4F2 ====
 +<code cpp>void GRAPHICS::_0x98EDF76A7271E4F2() // 0x98EDF76A7271E4F2  b323</code>
 +
 +<code>REQUEST_*</code>
 +==== _SET_FORCE_PED_FOOTSTEPS_TRACKS ====
 +<code cpp>void GRAPHICS::_SET_FORCE_PED_FOOTSTEPS_TRACKS(BOOL toggle) // 0xAEEDAD1420C65CC0 0xC53576CA b323</code>
 +
 +<code>Forces footstep tracks on all surfaces.
 +
 +USE_/USING_*</code>
 +==== _SET_FORCE_VEHICLE_TRAILS ====
 +<code cpp>void GRAPHICS::_SET_FORCE_VEHICLE_TRAILS(BOOL toggle) // 0x4CC7F0FEA5283FE0 0x7158B1EA b323</code>
 +
 +<code>Forces vehicle trails on all surfaces.
 +
 +USE_/USING_*</code>
 +==== _DISABLE_SCRIPT_AMBIENT_EFFECTS ====
 +<code cpp>void GRAPHICS::_DISABLE_SCRIPT_AMBIENT_EFFECTS(Any p0) // 0xEFD97FF47B745B8D  b791</code>
 +
 +==== PRESET_INTERIOR_AMBIENT_CACHE ====
 +<code cpp>void GRAPHICS::PRESET_INTERIOR_AMBIENT_CACHE(const char* timecycleModifierName) // 0xD7021272EB0A451E 0x137E3E24 b323</code>
 +
 +<code>Only one match in the scripts:
 +
 +GRAPHICS::PRESET_INTERIOR_AMBIENT_CACHE("int_carrier_hanger");</code>
 +==== SET_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::SET_TIMECYCLE_MODIFIER(const char* modifierName) // 0x2C933ABF17A1DF41 0xA81F3638 b323</code>
 +
 +<code>Loads the specified timecycle modifier. Modifiers are defined separately in another file (e.g. "timecycle_mods_1.xml")
 +
 +Parameters:
 +modifierName - The modifier to load (e.g. "V_FIB_IT3", "scanline_cam", etc.)
 +
 +Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json</code>
 +==== SET_TIMECYCLE_MODIFIER_STRENGTH ====
 +<code cpp>void GRAPHICS::SET_TIMECYCLE_MODIFIER_STRENGTH(float strength) // 0x82E7FFCD5B2326B3 0x458F4F45 b323</code>
 +
 +==== SET_TRANSITION_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::SET_TRANSITION_TIMECYCLE_MODIFIER(const char* modifierName, float transition) // 0x3BCF567485E1971C 0xBB2BA72A b323</code>
 +
 +<code>Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json</code>
 +==== _0x1CBA05AE7BD7EE05 ====
 +<code cpp>void GRAPHICS::_0x1CBA05AE7BD7EE05(float p0) // 0x1CBA05AE7BD7EE05 0x56345F6B b323</code>
 +
 +<code>SET_TRA*</code>
 +==== CLEAR_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::CLEAR_TIMECYCLE_MODIFIER() // 0x0F07E7745A236711 0x8D8DF8EE b323</code>
 +
 +==== GET_TIMECYCLE_MODIFIER_INDEX ====
 +<code cpp>int GRAPHICS::GET_TIMECYCLE_MODIFIER_INDEX() // 0xFDF3D97C674AFB66 0x594FEEC4 b323</code>
 +
 +<code>Only use for this in the PC scripts is:
 +
 +if (GRAPHICS::GET_TIMECYCLE_MODIFIER_INDEX() != -1)
 +
 +For a full list, see here: pastebin.com/cnk7FTF2</code>
 +==== GET_TIMECYCLE_TRANSITION_MODIFIER_INDEX ====
 +<code cpp>int GRAPHICS::GET_TIMECYCLE_TRANSITION_MODIFIER_INDEX() // 0x459FD2C8D0AB78BC 0x03C44E4B b323</code>
 +
 +==== _0x98D18905BF723B99 ====
 +<code cpp>Any GRAPHICS::_0x98D18905BF723B99() // 0x98D18905BF723B99  b1493</code>
 +
 +==== PUSH_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::PUSH_TIMECYCLE_MODIFIER() // 0x58F735290861E6B4 0x7E082045 b323</code>
 +
 +==== POP_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::POP_TIMECYCLE_MODIFIER() // 0x3C8938D7D872211E 0x79D7D235 b323</code>
 +
 +==== SET_CURRENT_PLAYER_TCMODIFIER ====
 +<code cpp>void GRAPHICS::SET_CURRENT_PLAYER_TCMODIFIER(const char* modifierName) // 0xBBF327DED94E4DEB 0x85BA15A4 b323</code>
 +
 +==== SET_PLAYER_TCMODIFIER_TRANSITION ====
 +<code cpp>void GRAPHICS::SET_PLAYER_TCMODIFIER_TRANSITION(float value) // 0xBDEB86F4D5809204 0x9559BB38 b323</code>
 +
 +==== SET_NEXT_PLAYER_TCMODIFIER ====
 +<code cpp>void GRAPHICS::SET_NEXT_PLAYER_TCMODIFIER(const char* modifierName) // 0xBF59707B3E5ED531 0x554BA16E b323</code>
 +
 +==== ADD_TCMODIFIER_OVERRIDE ====
 +<code cpp>void GRAPHICS::ADD_TCMODIFIER_OVERRIDE(const char* modifierName1, const char* modifierName2) // 0x1A8E2C8B9CF4549C 0xE8F538B5 b323</code>
 +
 +==== REMOVE_TCMODIFIER_OVERRIDE ====
 +<code cpp>void GRAPHICS::REMOVE_TCMODIFIER_OVERRIDE(const char* p0) // 0x15E33297C3E8DC60 0x805BAB08 b323</code>
 +
 +==== _SET_EXTRA_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::_SET_EXTRA_TIMECYCLE_MODIFIER(const char* modifierName) // 0x5096FD9CCB49056D 0x908A335E b323</code>
 +
 +<code>Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json</code>
 +==== _CLEAR_EXTRA_TIMECYCLE_MODIFIER ====
 +<code cpp>void GRAPHICS::_CLEAR_EXTRA_TIMECYCLE_MODIFIER() // 0x92CCC17A7A2285DA 0x6776720A b323</code>
 +
 +<code>Clears the secondary timecycle modifier usually set with _SET_EXTRA_TIMECYCLE_MODIFIER</code>
 +==== _GET_EXTRA_TIMECYCLE_MODIFIER_INDEX ====
 +<code cpp>int GRAPHICS::_GET_EXTRA_TIMECYCLE_MODIFIER_INDEX() // 0xBB0527EC6341496D  b323</code>
 +
 +<code>See _0xFDF3D97C674AFB66 for use, works the same just for the secondary timecycle modifier.
 +Returns an integer representing the Timecycle modifier</code>
 +==== _SET_EXTRA_TIMECYCLE_MODIFIER_STRENGTH ====
 +<code cpp>void GRAPHICS::_SET_EXTRA_TIMECYCLE_MODIFIER_STRENGTH(float strength) // 0x2C328AF17210F009  b323</code>
 +
 +<code>ENABLE_*
 +The same as SET_TIMECYCLE_MODIFIER_STRENGTH but for the secondary timecycle modifier.</code>
 +==== _RESET_EXTRA_TIMECYCLE_MODIFIER_STRENGTH ====
 +<code cpp>void GRAPHICS::_RESET_EXTRA_TIMECYCLE_MODIFIER_STRENGTH() // 0x2BF72AD5B41AA739  b323</code>
 +
 +<code>Resets the extra timecycle modifier strength normally set with 0x2C328AF17210F009</code>
 +==== REQUEST_SCALEFORM_MOVIE ====
 +<code cpp>int GRAPHICS::REQUEST_SCALEFORM_MOVIE(const char* scaleformName) // 0x11FE353CF9733E6F 0xC67E3DCB b323</code>
 +
 +==== _REQUEST_SCALEFORM_MOVIE_2 ====
 +<code cpp>int GRAPHICS::_REQUEST_SCALEFORM_MOVIE_2(const char* scaleformName) // 0x65E7E78842E74CDB  b372</code>
 +
 +<code>Another REQUEST_SCALEFORM_MOVIE equivalent.</code>
 +==== REQUEST_SCALEFORM_MOVIE_INSTANCE ====
 +<code cpp>int GRAPHICS::REQUEST_SCALEFORM_MOVIE_INSTANCE(const char* scaleformName) // 0xC514489CFB8AF806 0x7CC8057D b323</code>
 +
 +==== _REQUEST_SCALEFORM_MOVIE_INTERACTIVE ====
 +<code cpp>int GRAPHICS::_REQUEST_SCALEFORM_MOVIE_INTERACTIVE(const char* scaleformName) // 0xBD06C611BB9048C2  b323</code>
 +
 +<code>Similar to REQUEST_SCALEFORM_MOVIE, but seems to be some kind of "interactive" scaleform movie?
 +
 +These seem to be the only scaleforms ever requested by this native:
 +"breaking_news"
 +"desktop_pc"
 +"ECG_MONITOR"
 +"Hacking_PC"
 +"TEETH_PULLING"
 +
 +Note: Unless this hash is out-of-order, this native is next-gen only.
 +</code>
 +==== HAS_SCALEFORM_MOVIE_LOADED ====
 +<code cpp>BOOL GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(int scaleformHandle) // 0x85F01B8D5B90570E 0xDDFB6448 b323</code>
 +
 +==== _0x2FCB133CA50A49EB ====
 +<code cpp>BOOL GRAPHICS::_0x2FCB133CA50A49EB(int val) // 0x2FCB133CA50A49EB  b1290</code>
 +
 +<code>val is 1-20 (0 will return false)
 +SET_???</code>
 +==== _0x86255B1FC929E33E ====
 +<code cpp>BOOL GRAPHICS::_0x86255B1FC929E33E(int val) // 0x86255B1FC929E33E  b1290</code>
 +
 +<code>val is 1-20. Return is related to INSTRUCTIONAL_BUTTONS, COLOUR_SWITCHER_02, etc?</code>
 +==== HAS_SCALEFORM_MOVIE_FILENAME_LOADED ====
 +<code cpp>BOOL GRAPHICS::HAS_SCALEFORM_MOVIE_FILENAME_LOADED(const char* scaleformName) // 0x0C1C5D756FB5F337 0x494A9E50 b323</code>
 +
 +<code>Only values used in the scripts are:
 +
 +"heist_mp"
 +"heistmap_mp"
 +"instructional_buttons"
 +"heist_pre"</code>
 +==== HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT ====
 +<code cpp>BOOL GRAPHICS::HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT(int scaleformHandle) // 0x8217150E1217EBFD 0x1DFE8D8A b323</code>
 +
 +==== SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED ====
 +<code cpp>void GRAPHICS::SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(int* scaleformHandle) // 0x1D132D614DD86811 0x5FED3BA1 b323</code>
 +
 +==== SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME ====
 +<code cpp>void GRAPHICS::SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME(int scaleform, BOOL toggle) // 0x6D8EB211944DCE08 0x18C9DE8D b323</code>
 +
 +==== _0x32F34FF7F617643B ====
 +<code cpp>void GRAPHICS::_0x32F34FF7F617643B(Any p0, Any p1) // 0x32F34FF7F617643B  b573</code>
 +
 +==== _SET_SCALEFORM_FIT_RENDERTARGET ====
 +<code cpp>void GRAPHICS::_SET_SCALEFORM_FIT_RENDERTARGET(int scaleformHandle, BOOL toggle) // 0xE6A9F00D4240B519  b877</code>
 +
 +<code>This native is used in some casino scripts to fit the scaleform in the rendertarget.</code>
 +==== DRAW_SCALEFORM_MOVIE ====
 +<code cpp>void GRAPHICS::DRAW_SCALEFORM_MOVIE(int scaleformHandle, float x, float y, float width, float height, int red, int green, int blue, int alpha, int unk) // 0x54972ADAF0294A93 0x48DA6A58 b323</code>
 +
 +==== DRAW_SCALEFORM_MOVIE_FULLSCREEN ====
 +<code cpp>void GRAPHICS::DRAW_SCALEFORM_MOVIE_FULLSCREEN(int scaleform, int red, int green, int blue, int alpha, int unk) // 0x0DF606929C105BE1 0x7B48E696 b323</code>
 +
 +<code>unk is not used so no need</code>
 +==== DRAW_SCALEFORM_MOVIE_FULLSCREEN_MASKED ====
 +<code cpp>void GRAPHICS::DRAW_SCALEFORM_MOVIE_FULLSCREEN_MASKED(int scaleform1, int scaleform2, int red, int green, int blue, int alpha) // 0xCF537FDE4FBD4CE5 0x9C59FC06 b323</code>
 +
 +==== DRAW_SCALEFORM_MOVIE_3D ====
 +<code cpp>void GRAPHICS::DRAW_SCALEFORM_MOVIE_3D(int scaleform, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float p7, float p8, float p9, float scaleX, float scaleY, float scaleZ, Any p13) // 0x87D51D72255D4E78 0xC4F63A89 b323</code>
 +
 +==== DRAW_SCALEFORM_MOVIE_3D_SOLID ====
 +<code cpp>void GRAPHICS::DRAW_SCALEFORM_MOVIE_3D_SOLID(int scaleform, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float p7, float p8, float p9, float scaleX, float scaleY, float scaleZ, Any p13) // 0x1CE592FDC749D6F5 0x899933C8 b323</code>
 +
 +==== CALL_SCALEFORM_MOVIE_METHOD ====
 +<code cpp>void GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD(int scaleform, const char* method) // 0xFBD96D87AC96D533 0x7AB77B57 b323</code>
 +
 +<code>Calls the Scaleform function.</code>
 +==== CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER ====
 +<code cpp>void GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(int scaleform, const char* methodName, float param1, float param2, float param3, float param4, float param5) // 0xD0837058AE2E4BEE 0x557EDA1D b323</code>
 +
 +<code>Calls the Scaleform function and passes the parameters as floats.
 +
 +The number of parameters passed to the function varies, so the end of the parameter list is represented by -1.0.</code>
 +==== CALL_SCALEFORM_MOVIE_METHOD_WITH_STRING ====
 +<code cpp>void GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_STRING(int scaleform, const char* methodName, const char* param1, const char* param2, const char* param3, const char* param4, const char* param5) // 0x51BC1ED3CC44E8F7 0x91A7FCEB b323</code>
 +
 +<code>Calls the Scaleform function and passes the parameters as strings.
 +
 +The number of parameters passed to the function varies, so the end of the parameter list is represented by 0 (NULL).</code>
 +==== CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING ====
 +<code cpp>void GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(int scaleform, const char* methodName, float floatParam1, float floatParam2, float floatParam3, float floatParam4, float floatParam5, const char* stringParam1, const char* stringParam2, const char* stringParam3, const char* stringParam4, const char* stringParam5) // 0xEF662D8D57E290B1 0x6EAF56DE b323</code>
 +
 +<code>Calls the Scaleform function and passes both float and string parameters (in their respective order).
 +
 +The number of parameters passed to the function varies, so the end of the float parameters is represented by -1.0, and the end of the string parameters is represented by 0 (NULL).
 +
 +NOTE: The order of parameters in the function prototype is important! All float parameters must come first, followed by the string parameters.
 +
 +Examples:
 +// function MY_FUNCTION(floatParam1, floatParam2, stringParam)
 +GRAPHICS::_CALL_SCALEFORM_MOVIE_FUNCTION_MIXED_PARAMS(scaleform, "MY_FUNCTION", 10.0, 20.0, -1.0, -1.0, -1.0, "String param", 0, 0, 0, 0);
 +
 +// function MY_FUNCTION_2(floatParam, stringParam1, stringParam2)
 +GRAPHICS::_CALL_SCALEFORM_MOVIE_FUNCTION_MIXED_PARAMS(scaleform, "MY_FUNCTION_2", 10.0, -1.0, -1.0, -1.0, -1.0, "String param #1", "String param #2", 0, 0, 0);</code>
 +==== BEGIN_SCALEFORM_SCRIPT_HUD_MOVIE_METHOD ====
 +<code cpp>BOOL GRAPHICS::BEGIN_SCALEFORM_SCRIPT_HUD_MOVIE_METHOD(int hudComponent, const char* methodName) // 0x98C494FD5BDFBFD5 0x5D66CE1E b323</code>
 +
 +<code>Pushes a function from the Hud component Scaleform onto the stack. Same behavior as GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD, just a hud component id instead of a Scaleform.
 +
 +Known components:
 +19 - MP_RANK_BAR
 +20 - HUD_DIRECTOR_MODE
 +
 +This native requires more research - all information can be found inside of 'hud.gfx'. Using a decompiler, the different components are located under "scripts\__Packages\com\rockstargames\gtav\hud\hudComponents" and "scripts\__Packages\com\rockstargames\gtav\Multiplayer".</code>
 +==== BEGIN_SCALEFORM_MOVIE_METHOD ====
 +<code cpp>BOOL GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD(int scaleform, const char* methodName) // 0xF6E48914C7A8694E 0x215ABBE8 b323</code>
 +
 +<code>Push a function from the Scaleform onto the stack
 +</code>
 +==== BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND ====
 +<code cpp>BOOL GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND(const char* methodName) // 0xAB58C27C2E6123C6 0xF6015178 b323</code>
 +
 +<code>Starts frontend (pause menu) scaleform movie methods.
 +This can be used when you want to make custom frontend menus, and customize things like images or text in the menus etc.
 +Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER` for header scaleform functions.</code>
 +==== BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER ====
 +<code cpp>BOOL GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER(const char* methodName) // 0xB9449845F73F5E9C 0x5E219B67 b323</code>
 +
 +<code>Starts frontend (pause menu) scaleform movie methods for header options.
 +Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND` to customize the content inside the frontend menus.</code>
 +==== END_SCALEFORM_MOVIE_METHOD ====
 +<code cpp>void GRAPHICS::END_SCALEFORM_MOVIE_METHOD() // 0xC6796A8FFA375E53 0x02DBF2D7 b323</code>
 +
 +<code>Pops and calls the Scaleform function on the stack</code>
 +==== END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE ====
 +<code cpp>Any GRAPHICS::END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE() // 0xC50AA39A577AF886 0x2F38B526 b323</code>
 +
 +==== IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY ====
 +<code cpp>BOOL GRAPHICS::IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(int methodReturn) // 0x768FF8961BA904D6 0x5CD7C3C0 b323</code>
 +
 +<code>methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE
 +Returns true if the return value of a scaleform function is ready to be collected (using GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING or GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT).</code>
 +==== GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT ====
 +<code cpp>int GRAPHICS::GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(int methodReturn) // 0x2DE7EFA66B906036 0x2CFB0E6D b323</code>
 +
 +<code>methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE
 +Used to get a return value from a scaleform function. Returns an int in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING returns a string.</code>
 +==== _GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL ====
 +<code cpp>BOOL GRAPHICS::_GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL(int methodReturn) // 0xD80A80346A45D761  b757</code>
 +
 +<code>methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE</code>
 +==== GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING ====
 +<code cpp>const char* GRAPHICS::GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING(int methodReturn) // 0xE1E258829A885245 0x516862EB b323</code>
 +
 +<code>methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE
 +Used to get a return value from a scaleform function. Returns a string in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT returns an int.</code>
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(int value) // 0xC3D0841A0CC546A6 0x716777CB b323</code>
 +
 +<code>Pushes an integer for the Scaleform function onto the stack.</code>
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(float value) // 0xD69736AAE04DB51A 0x9A01FFDA b323</code>
 +
 +<code>Pushes a float for the Scaleform function onto the stack.</code>
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(BOOL value) // 0xC58424BA936EB458 0x0D4AE8CB b323</code>
 +
 +<code>Pushes a boolean for the Scaleform function onto the stack.</code>
 +==== BEGIN_TEXT_COMMAND_SCALEFORM_STRING ====
 +<code cpp>void GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING(const char* componentType) // 0x80338406F3475E55 0x3AC9CB55 b323</code>
 +
 +<code>Called prior to adding a text component to the UI. After doing so, GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING is called.
 +
 +Examples:
 +GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("NUMBER");
 +HUD::ADD_TEXT_COMPONENT_INTEGER(MISC::ABSI(a_1));
 +GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();
 +
 +GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING");
 +HUD::_ADD_TEXT_COMPONENT_STRING(a_2);
 +GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();
 +
 +GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM2");
 +HUD::_0x17299B63C7683A2B(v_3);
 +HUD::_0x17299B63C7683A2B(v_4);
 +GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();
 +
 +GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM1");
 +HUD::_0x17299B63C7683A2B(v_3);
 +GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();</code>
 +==== END_TEXT_COMMAND_SCALEFORM_STRING ====
 +<code cpp>void GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING() // 0x362E2D3FE93A9959 0x386CE0B8 b323</code>
 +
 +==== _END_TEXT_COMMAND_SCALEFORM_STRING_2 ====
 +<code cpp>void GRAPHICS::_END_TEXT_COMMAND_SCALEFORM_STRING_2() // 0xAE4E8157D9ECF087 0x2E80DB52 b323</code>
 +
 +<code>Same as END_TEXT_COMMAND_SCALEFORM_STRING but does not perform HTML conversion for text tokens.</code>
 +==== _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 ====
 +<code cpp>void GRAPHICS::_SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2(const char* string) // 0x77FE3402004CD1B0  b573</code>
 +
 +<code>Same as SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING
 +Both SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING / _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 works, but _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 is usually used for "name" (organisation, players..).</code>
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING(const char* string) // 0xBA7148484BD90365 0x4DAAD55B b323</code>
 +
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING(const char* string) // 0xE83A3E3557A56640 0xCCBF0334 b323</code>
 +
 +==== _0x5E657EF1099EDD65 ====
 +<code cpp>BOOL GRAPHICS::_0x5E657EF1099EDD65(Any p0) // 0x5E657EF1099EDD65 0x91A081A1 b323</code>
 +
 +<code>DOES_*</code>
 +==== SCALEFORM_MOVIE_METHOD_ADD_PARAM_LATEST_BRIEF_STRING ====
 +<code cpp>void GRAPHICS::SCALEFORM_MOVIE_METHOD_ADD_PARAM_LATEST_BRIEF_STRING(int value) // 0xEC52C631A1831C03 0x83A9811D b323</code>
 +
 +==== REQUEST_SCALEFORM_SCRIPT_HUD_MOVIE ====
 +<code cpp>void GRAPHICS::REQUEST_SCALEFORM_SCRIPT_HUD_MOVIE(int hudComponent) // 0x9304881D6F6537EA 0x7AF85862 b323</code>
 +
 +==== HAS_SCALEFORM_SCRIPT_HUD_MOVIE_LOADED ====
 +<code cpp>BOOL GRAPHICS::HAS_SCALEFORM_SCRIPT_HUD_MOVIE_LOADED(int hudComponent) // 0xDF6E5987D2B4D140 0x79B43255 b323</code>
 +
 +==== REMOVE_SCALEFORM_SCRIPT_HUD_MOVIE ====
 +<code cpp>void GRAPHICS::REMOVE_SCALEFORM_SCRIPT_HUD_MOVIE(int hudComponent) // 0xF44A5456AC3F4F97 0x03D87600 b323</code>
 +
 +==== _0xD1C7CB175E012964 ====
 +<code cpp>BOOL GRAPHICS::_0xD1C7CB175E012964(int scaleformHandle) // 0xD1C7CB175E012964 0xE9183D3A b323</code>
 +
 +==== SET_TV_CHANNEL ====
 +<code cpp>void GRAPHICS::SET_TV_CHANNEL(int channel) // 0xBAABBB23EB6E484E 0x41A8A627 b323</code>
 +
 +==== GET_TV_CHANNEL ====
 +<code cpp>int GRAPHICS::GET_TV_CHANNEL() // 0xFC1E275A90D39995 0x6B96145A b323</code>
 +
 +==== SET_TV_VOLUME ====
 +<code cpp>void GRAPHICS::SET_TV_VOLUME(float volume) // 0x2982BF73F66E9DDC 0xF3504F4D b323</code>
 +
 +==== GET_TV_VOLUME ====
 +<code cpp>float GRAPHICS::GET_TV_VOLUME() // 0x2170813D3DD8661B 0x39555CF0 b323</code>
 +
 +==== DRAW_TV_CHANNEL ====
 +<code cpp>void GRAPHICS::DRAW_TV_CHANNEL(float xPos, float yPos, float xScale, float yScale, float rotation, int red, int green, int blue, int alpha) // 0xFDDC2B4ED3C69DF0 0x8129EF89 b323</code>
 +
 +<code>All calls to this native are preceded by calls to GRAPHICS::_0x61BB1D9B3A95D802 and GRAPHICS::_0xC6372ECD45D73BCD, respectively.
 +
 +"act_cinema.ysc", line 1483:
 +HUD::SET_HUD_COMPONENT_POSITION(15, 0.0, -0.0375);
 +HUD::SET_TEXT_RENDER_ID(l_AE);
 +GRAPHICS::_0x61BB1D9B3A95D802(4);
 +GRAPHICS::_0xC6372ECD45D73BCD(1);
 +if (GRAPHICS::_0x0AD973CA1E077B60(${movie_arthouse})) {
 +    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 0.7375, 1.0, 0.0, 255, 255, 255, 255);
 +} else { 
 +    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);
 +}
 +
 +"am_mp_property_int.ysc", line 102545:
 +if (ENTITY::DOES_ENTITY_EXIST(a_2._f3)) {
 +    if (HUD::IS_NAMED_RENDERTARGET_LINKED(ENTITY::GET_ENTITY_MODEL(a_2._f3))) {
 +        HUD::SET_TEXT_RENDER_ID(a_2._f1);
 +        GRAPHICS::_0x61BB1D9B3A95D802(4);
 +        GRAPHICS::_0xC6372ECD45D73BCD(1);
 +        GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);
 +        if (GRAPHICS::GET_TV_CHANNEL() == -1) {
 +            sub_a8fa5(a_2, 1);
 +        } else { 
 +            sub_a8fa5(a_2, 1);
 +            GRAPHICS::ATTACH_TV_AUDIO_TO_ENTITY(a_2._f3);
 +        }
 +        HUD::SET_TEXT_RENDER_ID(HUD::GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID());
 +    }
 +}
 +</code>
 +==== SET_TV_CHANNEL_PLAYLIST ====
 +<code cpp>void GRAPHICS::SET_TV_CHANNEL_PLAYLIST(int tvChannel, const char* playlistName, BOOL restart) // 0xF7B38B8305F1FE8B 0xB262DE67 b323</code>
 +
 +<code>Loads specified video sequence into the TV Channel
 +TV_Channel ranges from 0-2
 +VideoSequence can be any of the following:
 +"PL_STD_CNT" CNT Standard Channel
 +"PL_STD_WZL" Weazel Standard Channel
 +"PL_LO_CNT"
 +"PL_LO_WZL"
 +"PL_SP_WORKOUT"
 +"PL_SP_INV" - Jay Norris Assassination Mission Fail
 +"PL_SP_INV_EXP" - Jay Norris Assassination Mission Success
 +"PL_LO_RS" - Righteous Slaughter Ad
 +"PL_LO_RS_CUTSCENE" - Righteous Slaughter Cut-scene
 +"PL_SP_PLSH1_INTRO"
 +"PL_LES1_FAME_OR_SHAME"
 +"PL_STD_WZL_FOS_EP2"
 +"PL_MP_WEAZEL" - Weazel Logo on loop
 +"PL_MP_CCTV" - Generic CCTV loop
 +
 +Restart:
 +0=video sequence continues as normal
 +1=sequence restarts from beginning every time that channel is selected
 +
 +
 +The above playlists work as intended, and are commonly used, but there are many more playlists, as seen in `tvplaylists.xml`. A pastebin below outlines all playlists, they will be surronded by the name tag I.E. (<Name>PL_STD_CNT</Name> = PL_STD_CNT).
 +https://pastebin.com/zUzGB6h7</code>
 +==== SET_TV_CHANNEL_PLAYLIST_AT_HOUR ====
 +<code cpp>void GRAPHICS::SET_TV_CHANNEL_PLAYLIST_AT_HOUR(int tvChannel, const char* playlistName, int hour) // 0x2201C576FACAEBE8 0x78C4DCBE b323</code>
 +
 +==== CLEAR_TV_CHANNEL_PLAYLIST ====
 +<code cpp>void GRAPHICS::CLEAR_TV_CHANNEL_PLAYLIST(int tvChannel) // 0xBEB3D46BB7F043C0 0xCBE7068F b323</code>
 +
 +==== _IS_PLAYLIST_UNK ====
 +<code cpp>BOOL GRAPHICS::_IS_PLAYLIST_UNK(int tvChannel, Any p1) // 0x1F710BFF7DAE6261  b1604</code>
 +
 +==== _IS_TV_PLAYLIST_ITEM_PLAYING ====
 +<code cpp>BOOL GRAPHICS::_IS_TV_PLAYLIST_ITEM_PLAYING(Hash videoCliphash) // 0x0AD973CA1E077B60 0x4D1EB0FB b323</code>
 +
 +<code>IS_*</code>
 +==== ENABLE_MOVIE_KEYFRAME_WAIT ====
 +<code cpp>void GRAPHICS::ENABLE_MOVIE_KEYFRAME_WAIT(BOOL toggle) // 0x74C180030FDE4B69 0x796DE696 b323</code>
 +
 +==== _0xD1C55B110E4DF534 ====
 +<code cpp>void GRAPHICS::_0xD1C55B110E4DF534(Any p0) // 0xD1C55B110E4DF534 0xD99EC000 b323</code>
 +
 +<code>SET_TV_???</code>
 +==== _0x30432A0118736E00 ====
 +<code cpp>Hash GRAPHICS::_0x30432A0118736E00() // 0x30432A0118736E00  b1493</code>
 +
 +<code>GET_CURRENT_*</code>
 +==== ENABLE_MOVIE_SUBTITLES ====
 +<code cpp>void GRAPHICS::ENABLE_MOVIE_SUBTITLES(BOOL toggle) // 0x873FA65C778AD970 0xC2DEBA3D b323</code>
 +
 +==== UI3DSCENE_IS_AVAILABLE ====
 +<code cpp>BOOL GRAPHICS::UI3DSCENE_IS_AVAILABLE() // 0xD3A10FC7FD8D98CD 0xE40A0F1A b323</code>
 +
 +==== UI3DSCENE_PUSH_PRESET ====
 +<code cpp>BOOL GRAPHICS::UI3DSCENE_PUSH_PRESET(const char* presetName) // 0xF1CEA8A4198D8E9A 0x2E7D9B98 b323</code>
 +
 +<code>All presets can be found in common\data\ui\uiscenes.meta</code>
 +==== _0x98C4FE6EC34154CA ====
 +<code cpp>BOOL GRAPHICS::_0x98C4FE6EC34154CA(const char* presetName, Ped ped, int p2, float posX, float posY, float posZ) // 0x98C4FE6EC34154CA 0x9A0E3BFE b323</code>
 +
 +<code>It's called after 0xD3A10FC7FD8D98CD and 0xF1CEA8A4198D8E9A
 +
 +presetName was always "CELEBRATION_WINNER"
 +All presets can be found in common\data\ui\uiscenes.meta
 +
 +UI3DSCENE_*</code>
 +==== _0x7A42B2E236E71415 ====
 +<code cpp>void GRAPHICS::_0x7A42B2E236E71415() // 0x7A42B2E236E71415 0x431AA036 b323</code>
 +
 +<code>UI3DSCENE_*</code>
 +==== _0x108BE26959A9D9BB ====
 +<code cpp>void GRAPHICS::_0x108BE26959A9D9BB(BOOL toggle) // 0x108BE26959A9D9BB 0x24A7A7F6 b323</code>
 +
 +<code>UI3DSCENE_*</code>
 +==== TERRAINGRID_ACTIVATE ====
 +<code cpp>void GRAPHICS::TERRAINGRID_ACTIVATE(BOOL toggle) // 0xA356990E161C9E65 0xA1CB6C94 b323</code>
 +
 +<code>This native enables/disables the gold putting grid display (https://i.imgur.com/TC6cku6.png).
 +This requires these two natives to be called as well to configure the grid: `0x1c4fc5752bcd8e48` and `0x5ce62918f8d703c7`.</code>
 +==== TERRAINGRID_SET_PARAMS ====
 +<code cpp>void GRAPHICS::TERRAINGRID_SET_PARAMS(float x, float y, float z, float p3, float rotation, float p5, float width, float height, float p8, float scale, float glowIntensity, float normalHeight, float heightDiff) // 0x1C4FC5752BCD8E48 0x3B637AA7 b323</code>
 +
 +<code>This native is used along with these two natives: `0xa356990e161c9e65` and `0x5ce62918f8d703c7`.
 +This native configures the location, size, rotation, normal height, and the difference ratio between min, normal and max.
 +
 +All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png</code>
 +==== TERRAINGRID_SET_COLOURS ====
 +<code cpp>void GRAPHICS::TERRAINGRID_SET_COLOURS(int lowR, int lowG, int lowB, int lowAlpha, int r, int g, int b, int alpha, int highR, int highG, int highB, int highAlpha) // 0x5CE62918F8D703C7 0xDF552973 b323</code>
 +
 +<code>This native is used along with these two natives: `0xa356990e161c9e65` and `0x1c4fc5752bcd8e48`.
 +This native sets the colors for the golf putting grid. the 'min...' values are for the lower areas that the grid covers, the 'max...' values are for the higher areas that the grid covers, all remaining values are for the 'normal' ground height.
 +All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png</code>
 +==== ANIMPOSTFX_PLAY ====
 +<code cpp>void GRAPHICS::ANIMPOSTFX_PLAY(const char* effectName, int duration, BOOL looped) // 0x2206BF9A37B7F724 0x1D980479 b323</code>
 +
 +<code>duration - is how long to play the effect for in milliseconds. If 0, it plays the default length
 +if loop is true, the effect won't stop until you call ANIMPOSTFX_STOP on it. (only loopable effects)
 +
 +Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json</code>
 +==== ANIMPOSTFX_STOP ====
 +<code cpp>void GRAPHICS::ANIMPOSTFX_STOP(const char* effectName) // 0x068E835A1D0DC0E3 0x06BB5CDA b323</code>
 +
 +<code>See ANIMPOSTFX_PLAY
 +
 +Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json</code>
 +==== _ANIMPOSTFX_GET_UNK ====
 +<code cpp>float GRAPHICS::_ANIMPOSTFX_GET_UNK(const char* effectName) // 0xE35B38A27E8E7179  b877</code>
 +
 +<code>See ANIMPOSTFX_PLAY
 +
 +Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json</code>
 +==== ANIMPOSTFX_IS_RUNNING ====
 +<code cpp>BOOL GRAPHICS::ANIMPOSTFX_IS_RUNNING(const char* effectName) // 0x36AD3E690DA5ACEB 0x089D5921 b323</code>
 +
 +<code>Returns whether the specified effect is active.
 +See ANIMPOSTFX_PLAY
 +
 +Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json</code>
 +==== ANIMPOSTFX_STOP_ALL ====
 +<code cpp>void GRAPHICS::ANIMPOSTFX_STOP_ALL() // 0xB4EDDC19532BFB85 0x4E6D875B b323</code>
 +
 +<code>Stops ALL currently playing effects.</code>
 +==== _ANIMPOSTFX_STOP_AND_DO_UNK ====
 +<code cpp>void GRAPHICS::_ANIMPOSTFX_STOP_AND_DO_UNK(const char* effectName) // 0xD2209BE128B5418C  b323</code>
 +
 +<code>Stops the effect and sets a value (bool) in its data (+0x199) to false.
 +See ANIMPOSTFX_PLAY
 +
 +Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json</code>
 +
 +===== HUD =====
 +==== BEGIN_TEXT_COMMAND_BUSYSPINNER_ON ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_BUSYSPINNER_ON(const char* string) // 0xABA17D7CE615ADBF 0xCB7C8994 b323</code>
 +
 +<code>Initializes the text entry for the the text next to a loading prompt. All natives for building UI texts can be used here
 +
 +
 +e.g
 +void StartLoadingMessage(char *text, int spinnerType = 3)
 +  {
 +     _SET_LOADING_PROMPT_TEXT_ENTRY("STRING");
 +       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +       _SHOW_LOADING_PROMPT(spinnerType);
 +    }
 +/*OR*/
 + void ShowLoadingMessage(char *text, int spinnerType = 3, int timeMs = 10000)
 +  {
 +     _SET_LOADING_PROMPT_TEXT_ENTRY("STRING");
 +       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +       _SHOW_LOADING_PROMPT(spinnerType);
 +        WAIT(timeMs);
 +     _REMOVE_LOADING_PROMPT();
 + }
 +
 +
 +These are some localized strings used in the loading spinner.
 +"PM_WAIT"                   = Please Wait
 +"CELEB_WPLYRS"              = Waiting For Players.
 +"CELL_SPINNER2"             = Scanning storage.
 +"ERROR_CHECKYACHTNAME" = Registering your yacht's name. Please wait.
 +"ERROR_CHECKPROFANITY"   = Checking your text for profanity. Please wait.
 +"FM_COR_AUTOD"                        = Just spinner no text
 +"FM_IHELP_WAT2"                        = Waiting for other players
 +"FM_JIP_WAITO"                            = Game options are being set
 +"FMMC_DOWNLOAD"                    = Downloading
 +"FMMC_PLYLOAD"                         = Loading
 +"FMMC_STARTTRAN"                    = Launching session
 +"HUD_QUITTING"                            Quiting session
 +"KILL_STRIP_IDM"                         = Waiting for to accept
 +"MP_SPINLOADING"                      = Loading</code>
 +==== END_TEXT_COMMAND_BUSYSPINNER_ON ====
 +<code cpp>void HUD::END_TEXT_COMMAND_BUSYSPINNER_ON(int busySpinnerType) // 0xBD12F8228410D9B4 0x903F5EE4 b323</code>
 +
 +<code>enum eBusySpinnerType
 +{
 + BUSY_SPINNER_LEFT,
 + BUSY_SPINNER_LEFT_2,
 + BUSY_SPINNER_LEFT_3,
 + BUSY_SPINNER_SAVE,
 + BUSY_SPINNER_RIGHT,
 +};</code>
 +==== BUSYSPINNER_OFF ====
 +<code cpp>void HUD::BUSYSPINNER_OFF() // 0x10D373323E5B9C0D 0x94119534 b323</code>
 +
 +<code>Removes the loading prompt at the bottom right of the screen.</code>
 +==== PRELOAD_BUSYSPINNER ====
 +<code cpp>void HUD::PRELOAD_BUSYSPINNER() // 0xC65AB383CD91DF98 0x71077FBD b323</code>
 +
 +==== BUSYSPINNER_IS_ON ====
 +<code cpp>BOOL HUD::BUSYSPINNER_IS_ON() // 0xD422FCC5F239A915 0xB8B3A5D0 b323</code>
 +
 +==== BUSYSPINNER_IS_DISPLAYING ====
 +<code cpp>BOOL HUD::BUSYSPINNER_IS_DISPLAYING() // 0xB2A592B04648A9CB 0x3AF34DEF b323</code>
 +
 +==== _0x9245E81072704B8A ====
 +<code cpp>void HUD::_0x9245E81072704B8A(BOOL p0) // 0x9245E81072704B8A  b323</code>
 +
 +<code>DISABLE_*</code>
 +==== _SET_MOUSE_CURSOR_ACTIVE_THIS_FRAME ====
 +<code cpp>void HUD::_SET_MOUSE_CURSOR_ACTIVE_THIS_FRAME() // 0xAAE7CE1D63167423  b323</code>
 +
 +<code>Shows the cursor on screen for one frame.</code>
 +==== _SET_MOUSE_CURSOR_SPRITE ====
 +<code cpp>void HUD::_SET_MOUSE_CURSOR_SPRITE(int spriteId) // 0x8DB8CFFD58B62552  b323</code>
 +
 +<code>Changes the mouse cursor's sprite. 
 +1 = Normal
 +6 = Left Arrow
 +7 = Right Arrow</code>
 +==== _SET_MOUSE_CURSOR_VISIBLE_IN_MENUS ====
 +<code cpp>void HUD::_SET_MOUSE_CURSOR_VISIBLE_IN_MENUS(BOOL toggle) // 0x98215325A695E78A  b323</code>
 +
 +<code>Shows/hides the frontend cursor on the pause menu or similar menus.
 +Clicking off and then on the game window will show it again.</code>
 +==== _0x3D9ACB1EB139E702 ====
 +<code cpp>Any HUD::_0x3D9ACB1EB139E702() // 0x3D9ACB1EB139E702  b323</code>
 +
 +==== _0x632B2940C67F4EA9 ====
 +<code cpp>BOOL HUD::_0x632B2940C67F4EA9(int scaleformHandle, Any* p1, Any* p2, Any* p3) // 0x632B2940C67F4EA9  b323</code>
 +
 +==== THEFEED_ONLY_SHOW_TOOLTIPS ====
 +<code cpp>void HUD::THEFEED_ONLY_SHOW_TOOLTIPS(BOOL toggle) // 0x6F1554B0CC2089FA 0xA7C8594B b323</code>
 +
 +==== THEFEED_SET_SCRIPTED_MENU_HEIGHT ====
 +<code cpp>void HUD::THEFEED_SET_SCRIPTED_MENU_HEIGHT(float pos) // 0x55598D21339CB998 0x1DA7E41A b323</code>
 +
 +==== _THEFEED_DISABLE_LOADING_SCREEN_TIPS ====
 +<code cpp>void HUD::_THEFEED_DISABLE_LOADING_SCREEN_TIPS() // 0x32888337579A5970  b463</code>
 +
 +<code>Stops loading screen tips shown by invoking either `0x488043841BBE156F` or `0x15CFA549788D35EF`</code>
 +==== THEFEED_HIDE_THIS_FRAME ====
 +<code cpp>void HUD::THEFEED_HIDE_THIS_FRAME() // 0x25F87B30C382FCA7 0x1E63088A b323</code>
 +
 +<code>Once called each frame hides all above radar notifications.</code>
 +==== _THEFEED_DISPLAY_LOADING_SCREEN_TIPS ====
 +<code cpp>void HUD::_THEFEED_DISPLAY_LOADING_SCREEN_TIPS() // 0x15CFA549788D35EF  b463</code>
 +
 +<code>Displays loading screen tips, requires `0x56C8B608CFD49854` to be called beforehand.</code>
 +==== THEFEED_FLUSH_QUEUE ====
 +<code cpp>void HUD::THEFEED_FLUSH_QUEUE() // 0xA8FDB297A8D25FBA 0x5205C6F5 b323</code>
 +
 +==== THEFEED_REMOVE_ITEM ====
 +<code cpp>void HUD::THEFEED_REMOVE_ITEM(int notificationId) // 0xBE4390CB40B3E627 0xECA8ACB9 b323</code>
 +
 +<code>Removes a notification instantly instead of waiting for it to disappear</code>
 +==== THEFEED_FORCE_RENDER_ON ====
 +<code cpp>void HUD::THEFEED_FORCE_RENDER_ON() // 0xA13C11E1B5C06BFC 0x520FCB6D b323</code>
 +
 +==== THEFEED_FORCE_RENDER_OFF ====
 +<code cpp>void HUD::THEFEED_FORCE_RENDER_OFF() // 0x583049884A2EEE3C 0xC8BAB2F2 b323</code>
 +
 +<code>Enables loading screen tips to be be shown (`_0x15CFA549788D35EF` and `_0x488043841BBE156F`), blocks other kinds of notifications from being displayed (at least from current script). Call `0xADED7F5748ACAFE6` to display those again.</code>
 +==== THEFEED_PAUSE ====
 +<code cpp>void HUD::THEFEED_PAUSE() // 0xFDB423997FA30340 0x4D0449C6 b323</code>
 +
 +==== THEFEED_RESUME ====
 +<code cpp>void HUD::THEFEED_RESUME() // 0xE1CD1E48E025E661 0xD3F40140 b323</code>
 +
 +==== THEFEED_IS_PAUSED ====
 +<code cpp>BOOL HUD::THEFEED_IS_PAUSED() // 0xA9CBFD40B3FA3010 0xC5223796 b323</code>
 +
 +==== THEFEED_SPS_EXTEND_WIDESCREEN_ON ====
 +<code cpp>void HUD::THEFEED_SPS_EXTEND_WIDESCREEN_ON() // 0xD4438C0564490E63 0x709B4BCB b323</code>
 +
 +==== THEFEED_SPS_EXTEND_WIDESCREEN_OFF ====
 +<code cpp>void HUD::THEFEED_SPS_EXTEND_WIDESCREEN_OFF() // 0xB695E2CD0A2DA9EE 0x4A4A40A4 b323</code>
 +
 +==== THEFEED_GET_FIRST_VISIBLE_DELETE_REMAINING ====
 +<code cpp>int HUD::THEFEED_GET_FIRST_VISIBLE_DELETE_REMAINING() // 0x82352748437638CA 0x294405D4 b323</code>
 +
 +<code>Returns the handle for the notification currently displayed on the screen. Name may be a hash collision, but describes the function accurately.</code>
 +==== THEFEED_COMMENT_TELEPORT_POOL_ON ====
 +<code cpp>void HUD::THEFEED_COMMENT_TELEPORT_POOL_ON() // 0x56C8B608CFD49854 0xF881AB87 b323</code>
 +
 +<code>Enables loading screen tips to be be shown (`_0x15CFA549788D35EF` and `_0x488043841BBE156F`), blocks other kinds of notifications from being displayed (at least from current script). Call `0xADED7F5748ACAFE6` to display those again.</code>
 +==== THEFEED_COMMENT_TELEPORT_POOL_OFF ====
 +<code cpp>void HUD::THEFEED_COMMENT_TELEPORT_POOL_OFF() // 0xADED7F5748ACAFE6 0x1D6859CA b323</code>
 +
 +<code>Displays "normal" notifications again after calling `_0x56C8B608CFD49854` (those that were drawn before calling this native too), though those will have a weird offset and stay on screen forever (tested with notifications created from same script).</code>
 +==== _THEFEED_SET_NEXT_POST_BACKGROUND_COLOR ====
 +<code cpp>void HUD::_THEFEED_SET_NEXT_POST_BACKGROUND_COLOR(int hudColorIndex) // 0x92F0DA1E27DB96DC 0x07CE2EA4 b323</code>
 +
 +<code>From the decompiled scripts:
 +HUD::_92F0DA1E27DB96DC(6);
 +HUD::_92F0DA1E27DB96DC(184);
 +HUD::_92F0DA1E27DB96DC(190);
 +
 +sets background color for the next notification
 +6 = red
 +184 = green
 +190 = yellow
 +
 +Here is a list of some colors that can be used: gyazo.com/68bd384455fceb0a85a8729e48216e15</code>
 +==== _THEFEED_SET_ANIMPOSTFX_COLOR ====
 +<code cpp>void HUD::_THEFEED_SET_ANIMPOSTFX_COLOR(int red, int green, int blue, int alpha) // 0x17430B918701C342 0xCF14D7F2 b323</code>
 +
 +==== _THEFEED_SET_ANIMPOSTFX_COUNT ====
 +<code cpp>void HUD::_THEFEED_SET_ANIMPOSTFX_COUNT(int count) // 0x17AD8C9706BDD88A 0x24A97AF8 b323</code>
 +
 +<code>Related to notification color flashing, setting p0 to 0 invalidates a `_SET_NOTIFICATION_FLASH_COLOR` call for the target notification.</code>
 +==== _THEFEED_SET_ANIMPOSTFX_SOUND ====
 +<code cpp>void HUD::_THEFEED_SET_ANIMPOSTFX_SOUND(BOOL toggle) // 0x4A0C7C9BB10ABB36 0x44018EDB b323</code>
 +
 +==== THEFEED_RESET_ALL_PARAMETERS ====
 +<code cpp>void HUD::THEFEED_RESET_ALL_PARAMETERS() // 0xFDD85225B2DEA55E 0xA4524B23 b323</code>
 +
 +==== THEFEED_FREEZE_NEXT_POST ====
 +<code cpp>void HUD::THEFEED_FREEZE_NEXT_POST() // 0xFDEC055AB549E328 0xAFA1148B b323</code>
 +
 +<code>Requires manual management of game stream handles (i.e., 0xBE4390CB40B3E627).</code>
 +==== THEFEED_CLEAR_FROZEN_POST ====
 +<code cpp>void HUD::THEFEED_CLEAR_FROZEN_POST() // 0x80FE4F3AB4E1B62A 0x3CD4307C b323</code>
 +
 +==== _THEFEED_SET_FLUSH_ANIMPOSTFX ====
 +<code cpp>void HUD::_THEFEED_SET_FLUSH_ANIMPOSTFX(BOOL p0) // 0xBAE4F9B97CD43B30  b323</code>
 +
 +==== _THEFEED_ADD_TXD_REF ====
 +<code cpp>void HUD::_THEFEED_ADD_TXD_REF(Any* p0, Any* p1, Any* p2, Any* p3) // 0x317EBA71D7543F52  b323</code>
 +
 +<code>From the decompiled scripts, called 61 times:
 +HUD::_317EBA71D7543F52(&v_13, &v_13, &v_3, &v_3);</code>
 +==== BEGIN_TEXT_COMMAND_THEFEED_POST ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_THEFEED_POST(const char* text) // 0x202709F4C58A0424 0x574EE85C b323</code>
 +
 +<code>Declares the entry type of a notification, for example "STRING".
 +
 +int ShowNotification(char *text)
 +{
 + BEGIN_TEXT_COMMAND_THEFEED_POST("STRING");
 + ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 + return _DRAW_NOTIFICATION(1, 1);
 +}</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_STATS ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_STATS(const char* statTitle, int iconEnum, BOOL stepVal, int barValue, BOOL isImportant, const char* pictureTextureDict, const char* pictureTextureName) // 0x2B7E9A4EAAA93C89 0xED130FA1 b323</code>
 +
 +<code>List of picture names: https://pastebin.com/XdpJVbHz
 +Example result: https://i.imgur.com/SdEZ22m.png</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT(const char* txdName, const char* textureName, BOOL flash, int iconType, const char* sender, const char* subject) // 0x1CCD9A37359072CF 0xE7E3C98B b323</code>
 +
 +<code>This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.
 +
 +List of picNames: pastebin.com/XdpJVbHz
 +
 +
 +flash is a bool for fading in.
 +iconTypes:
 +1 : Chat Box
 +2 : Email
 +3 : Add Friend Request
 +4 : Nothing
 +5 : Nothing
 +6 : Nothing
 +7 : Right Jumping Arrow
 +8 : RP Icon
 +9 : $ Icon
 +
 +"sender" is the very top header. This can be any old string.
 +"subject" is the header under the sender.</code>
 +==== _END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_GXT_ENTRY ====
 +<code cpp>int HUD::_END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_GXT_ENTRY(const char* txdName, const char* textureName, BOOL flash, int iconType, const char* sender, const char* subject) // 0xC6F580E4C94926AC  b323</code>
 +
 +<code>This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.
 +
 +Needs more research.
 +
 +Only one type of usage in the scripts:
 +
 +HUD::_C6F580E4C94926AC("CHAR_ACTING_UP", "CHAR_ACTING_UP", 0, 0, "DI_FEED_CHAR", a_0);</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU(const char* txdName, const char* textureName, BOOL flash, int iconType, const char* sender, const char* subject, float duration) // 0x1E6611149DB3DB6B 0x0EB382B7 b323</code>
 +
 +<code>This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.
 +
 +NOTE: 'duration' is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.
 +
 +Example, only occurrence in the scripts:
 +v_8 = HUD::_1E6611149DB3DB6B("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 0, 0, &v_9, "", a_5);</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG(const char* txdName, const char* textureName, BOOL flash, int iconType, const char* sender, const char* subject, float duration, const char* clanTag) // 0x5CBF7BADE20DB93E 0x3E807FE3 b323</code>
 +
 +<code>This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.
 +
 +List of picNames pastebin.com/XdpJVbHz
 +
 +flash is a bool for fading in.
 +iconTypes:
 +1 : Chat Box
 +2 : Email
 +3 : Add Friend Request
 +4 : Nothing
 +5 : Nothing
 +6 : Nothing
 +7 : Right Jumping Arrow
 +8 : RP Icon
 +9 : $ Icon
 +
 +"sender" is the very top header. This can be any old string.
 +"subject" is the header under the sender.
 +"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.
 +"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG_AND_ADDITIONAL_ICON ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG_AND_ADDITIONAL_ICON(const char* txdName, const char* textureName, BOOL flash, int iconType1, const char* sender, const char* subject, float duration, const char* clanTag, int iconType2, int p9) // 0x531B84E7DA981FB6 0xDEB491C8 b323</code>
 +
 +<code>This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.
 +
 +List of picNames: pastebin.com/XdpJVbHz
 +
 +flash is a bool for fading in.
 +iconTypes:
 +1 : Chat Box
 +2 : Email
 +3 : Add Friend Request
 +4 : Nothing
 +5 : Nothing
 +6 : Nothing
 +7 : Right Jumping Arrow
 +8 : RP Icon
 +9 : $ Icon
 +
 +"sender" is the very top header. This can be any old string.
 +"subject" is the header under the sender.
 +"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.
 +"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)
 +iconType2 is a mirror of iconType. It shows in the "subject" line, right under the original iconType.
 +
 +
 +int IconNotification(char *text, char *text2, char *Subject)
 +{
 +    _SET_NOTIFICATION_TEXT_ENTRY("STRING");
 + ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +   _SET_NOTIFICATION_MESSAGE_CLAN_TAG_2("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 1, 7, text2, Subject, 1.0f, "__EXAMPLE", 7);
 +   return _DRAW_NOTIFICATION(1, 1);
 +}</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_TICKER ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_TICKER(BOOL blink, BOOL p1) // 0x2ED7843F8F801023 0x08F7AF78 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_TICKER_FORCED ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_TICKER_FORCED(BOOL blink, BOOL p1) // 0x44FA03975424A0EE 0x57B8D0D4 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_TICKER_WITH_TOKENS ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_TICKER_WITH_TOKENS(BOOL blink, BOOL p1) // 0x378E809BF61EC840 0x02BCAF9B b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_AWARD ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_AWARD(const char* textureDict, const char* textureName, int rpBonus, int colorOverlay, const char* titleLabel) // 0xAA295B6F28BD587D 0x02DED2B8 b323</code>
 +
 +<code>Shows an "award" notification above the minimap, example: https://i.imgur.com/e2DNaKX.png
 +Example:
 +
 +HUD::_SET_NOTIFICATION_TEXT_ENTRY("HUNT");
 +HUD::_0xAA295B6F28BD587D("Hunting", "Hunting_Gold_128", 0, 109, "HUD_MED_UNLKED");</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_CREWTAG ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_CREWTAG(BOOL p0, BOOL p1, int* p2, int p3, BOOL isLeader, BOOL unk0, int clanDesc, int R, int G, int B) // 0x97C9E4E7024A8F2C 0xA9CCEF66 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_CREWTAG_WITH_GAME_NAME ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_CREWTAG_WITH_GAME_NAME(BOOL p0, BOOL p1, int* p2, int p3, BOOL isLeader, BOOL unk0, int clanDesc, const char* playerName, int R, int G, int B) // 0x137BC35589E34E1E 0x88B9B909 b323</code>
 +
 +<code>p0 = 1 or 0
 +
 +crashes my game...
 +this is for sending invites to network players - jobs/apartment/ect... 
 +return notification handle
 +
 +int invite(Player player)
 +   {
 +     networkHandleMgr netHandle;
 +       networkClanMgr clan;
 +      char *playerName = GET_PLAYER_NAME(player);
 +       _SET_NOTIFICATION_TEXT_ENTRY("STRING");
 +     _SET_NOTIFACTION_COLOR_NEXT(1);
 +       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(playerName);
 +     NETWORK_HANDLE_FROM_PLAYER(player, &netHandle.netHandle, 13);
 +     if (NETWORK_CLAN_PLAYER_IS_ACTIVE(&netHandle.netHandle))
 +      {
 +         NETWORK_CLAN_PLAYER_GET_DESC(&clan.clanHandle, 35, &netHandle.netHandle);
 +         _DRAW_NOTIFICATION_CLAN_INVITE(0, _0x54E79E9C(&clan.clanHandle, 35), &clan.unk17, clan.isLeader, 0, 0, clan.clanHandle, playerName, 0, 0, 0);
 +     }
 + }</code>
 +==== END_TEXT_COMMAND_THEFEED_POST_UNLOCK ====
 +<code cpp>Any HUD::END_TEXT_COMMAND_THEFEED_POST_UNLOCK(Any p0, Any p1, Any p2) // 0x33EE12743CCD6343 0xE05E7052 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU ====
 +<code cpp>Any HUD::END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU(Any p0, Any p1, Any p2, Any p3) // 0xC8F3AAF93D0600BF 0x4FA43BA4 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU_WITH_COLOR ====
 +<code cpp>Any HUD::END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU_WITH_COLOR(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x7AE0589093A2E088 0x8C90D22F b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_MPTICKER ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_MPTICKER(BOOL blink, BOOL p1) // 0xF020C96915705B3A 0x8E319AB8 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_CREW_RANKUP ====
 +<code cpp>int HUD::END_TEXT_COMMAND_THEFEED_POST_CREW_RANKUP(const char* p0, const char* p1, const char* p2, BOOL p3, BOOL p4) // 0x8EFCCF6EC66D85E4 0x76FB0F21 b323</code>
 +
 +==== END_TEXT_COMMAND_THEFEED_POST_VERSUS_TU ====
 +<code cpp>Any HUD::END_TEXT_COMMAND_THEFEED_POST_VERSUS_TU(Any* p0, Any* p1, Any p2, Any* p3, Any* p4, Any p5, Any p6, Any p7) // 0xB6871B0555B02996 0x5E93FBFA b323</code>
 +
 +==== _END_TEXT_COMMAND_THEFEED_POST_REPLAY_ICON ====
 +<code cpp>int HUD::_END_TEXT_COMMAND_THEFEED_POST_REPLAY_ICON(int type, int image, const char* text) // 0xD202B92CBF1D816F  b323</code>
 +
 +<code>returns a notification handle, prints out a notification like below:
 +type range: 0 - 2
 +if you set type to 1, image goes from 0 - 39 - Xbox you can add text to
 +
 +example: 
 +HUD::_0xD202B92CBF1D816F(1, 20, "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");
 +- imgur.com/lGBPCz3</code>
 +==== _END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT ====
 +<code cpp>int HUD::_END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(int type, const char* button, const char* text) // 0xDD6CB2CCE7C2735C  b323</code>
 +
 +<code>returns a notification handle, prints out a notification like below:
 +type range: 0 - 2
 +if you set type to 1, button accepts "~INPUT_SOMETHING~"
 +
 +example:
 +HUD::_0xDD6CB2CCE7C2735C(1, "~INPUT_TALK~", "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");
 +- imgur.com/UPy0Ial
 +
 +
 +Examples from the scripts:
 +l_D1[1/*1*/]=HUD::_DD6CB2CCE7C2735C(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");
 +l_D1[2/*1*/]=HUD::_DD6CB2CCE7C2735C(1,"~INPUT_SAVE_REPLAY_CLIP~","");
 +l_D1[1/*1*/]=HUD::_DD6CB2CCE7C2735C(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");
 +l_D1[2/*1*/]=HUD::_DD6CB2CCE7C2735C(1,"~INPUT_REPLAY_START_STOP_RECORDING_SECONDARY~","");
 +</code>
 +==== BEGIN_TEXT_COMMAND_PRINT ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_PRINT(const char* GxtEntry) // 0xB87A37EEB7FAA67D 0xF42C43C7 b323</code>
 +
 +<code>Used to be known as _SET_TEXT_ENTRY_2
 +
 +void ShowSubtitle(char *text)
 +{
 +  BEGIN_TEXT_COMMAND_PRINT("STRING");
 + ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +   END_TEXT_COMMAND_PRINT(2000, 1);
 +}</code>
 +==== END_TEXT_COMMAND_PRINT ====
 +<code cpp>void HUD::END_TEXT_COMMAND_PRINT(int duration, BOOL drawImmediately) // 0x9D77056A530643F6 0x38F82261 b323</code>
 +
 +<code>Draws the subtitle at middle center of the screen.
 +
 +int duration = time in milliseconds to show text on screen before disappearing
 +
 +drawImmediately = If true, the text will be drawn immediately, if false, the text will be drawn after the previous subtitle has finished
 +
 +Used to be known as _DRAW_SUBTITLE_TIMED</code>
 +==== BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED(const char* text) // 0x853648FD1063A213 0xDD524A11 b323</code>
 +
 +<code>nothin doin. 
 +
 +BOOL Message(const char* text)
 +   {
 +     BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED("STRING");
 +      ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +       return END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED();
 +   }</code>
 +==== END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED ====
 +<code cpp>BOOL HUD::END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED() // 0x8A9BA1AB3E237613 0x672EFB45 b323</code>
 +
 +==== BEGIN_TEXT_COMMAND_DISPLAY_TEXT ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_DISPLAY_TEXT(const char* text) // 0x25FBB336DF1804CB 0x3E35563E b323</code>
 +
 +<code>The following were found in the decompiled script files:
 +STRING, TWOSTRINGS, NUMBER, PERCENTAGE, FO_TWO_NUM, ESMINDOLLA, ESDOLLA, MTPHPER_XPNO, AHD_DIST, CMOD_STAT_0, CMOD_STAT_1, CMOD_STAT_2, CMOD_STAT_3, DFLT_MNU_OPT, F3A_TRAFDEST, ES_HELP_SOC3
 +
 +ESDOLLA - cash
 +ESMINDOLLA - cash (negative)
 +
 +Used to be known as _SET_TEXT_ENTRY</code>
 +==== END_TEXT_COMMAND_DISPLAY_TEXT ====
 +<code cpp>void HUD::END_TEXT_COMMAND_DISPLAY_TEXT(float x, float y, int p2) // 0xCD015E5BB0D96A57 0x6F8350CE b323</code>
 +
 +<code>After applying the properties to the text (See HUD::SET_TEXT_), this will draw the text in the applied position. Also 0.0f < x, y < 1.0f, percentage of the axis.
 +
 +Used to be known as _DRAW_TEXT</code>
 +==== _BEGIN_TEXT_COMMAND_GET_WIDTH ====
 +<code cpp>void HUD::_BEGIN_TEXT_COMMAND_GET_WIDTH(const char* text) // 0x54CE8AC98E120CAB 0x51E7A037 b323</code>
 +
 +<code>BEGIN_TEXT_COMMAND_*
 +
 +Example:
 +_BEGIN_TEXT_COMMAND_GET_WIDTH("NUMBER");
 +ADD_TEXT_COMPONENT_FLOAT(69.420f, 2);
 +float width = _END_TEXT_COMMAND_GET_WIDTH(1);</code>
 +==== _END_TEXT_COMMAND_GET_WIDTH ====
 +<code cpp>float HUD::_END_TEXT_COMMAND_GET_WIDTH(BOOL p0) // 0x85F061DA64ED2F67 0xD12A643A b323</code>
 +
 +<code>END_TEXT_COMMAND_*
 +
 +In scripts font most of the time is passed as 1.
 +Use _BEGIN_TEXT_GET_COMMAND_GET_WIDTH
 +
 +param is not font from what i've tested</code>
 +==== _BEGIN_TEXT_COMMAND_LINE_COUNT ====
 +<code cpp>void HUD::_BEGIN_TEXT_COMMAND_LINE_COUNT(const char* entry) // 0x521FB041D93DD0E4 0x94B82066 b323</code>
 +
 +<code>BEGIN_TEXT_COMMAND_*
 +
 +get's line count
 +
 +
 +int GetLineCount(char *text, float x, float y)
 +    {
 +     _BEGIN_TEXT_COMMAND_LINE_COUNT("STRING");
 +                ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +      return _END_TEXT_COMMAND_GET_LINE_COUNT(x, y);
 +    }</code>
 +==== _END_TEXT_COMMAND_LINE_COUNT ====
 +<code cpp>int HUD::_END_TEXT_COMMAND_LINE_COUNT(float x, float y) // 0x9040DFB09BE75706 0xAA318785 b323</code>
 +
 +<code>END_TEXT_COMMAND_*
 +
 +Determines how many lines the text string will use when drawn on screen. 
 +Must use 0x521FB041D93DD0E4 for setting up</code>
 +==== BEGIN_TEXT_COMMAND_DISPLAY_HELP ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_DISPLAY_HELP(const char* inputType) // 0x8509B634FBE7DA11 0xB245FC10 b323</code>
 +
 +<code>Used to be known as _SET_TEXT_COMPONENT_FORMAT</code>
 +==== END_TEXT_COMMAND_DISPLAY_HELP ====
 +<code cpp>void HUD::END_TEXT_COMMAND_DISPLAY_HELP(int p0, BOOL loop, BOOL beep, int shape) // 0x238FFE5C7B0498A6 0xB59B530D b323</code>
 +
 +<code>shape goes from -1 to 50 (may be more).
 +p0 is always 0.
 +
 +Example:
 +void FloatingHelpText(const char* text)
 +{
 +    BEGIN_TEXT_COMMAND_DISPLAY_HELP("STRING");
 +  ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
 +   END_TEXT_COMMAND_DISPLAY_HELP (0, 0, 1, -1);
 +}
 +
 +Image:
 +- imgbin.org/images/26209.jpg
 +
 +more inputs/icons:
 +- pastebin.com/nqNYWMSB
 +
 +Used to be known as _DISPLAY_HELP_TEXT_FROM_STRING_LABEL</code>
 +==== BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(const char* labelName) // 0x0A24DA3A41B718F5 0x00E20F2D b323</code>
 +
 +<code>BOOL IsContextActive(char *ctx)
 +    {
 +     BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(ctx);
 +     return END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(0);
 +  }</code>
 +==== END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED ====
 +<code cpp>BOOL HUD::END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(int p0) // 0x10BDDBFC529428DD 0xF63A13EC b323</code>
 +
 +==== BEGIN_TEXT_COMMAND_SET_BLIP_NAME ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_SET_BLIP_NAME(const char* textLabel) // 0xF9113A30DE5C6670 0xF4C211F6 b323</code>
 +
 +<code>Starts a text command to change the name of a blip displayed in the pause menu.
 +This should be paired with `END_TEXT_COMMAND_SET_BLIP_NAME`, once adding all required text components.
 +Example:
 +
 +HUD::BEGIN_TEXT_COMMAND_SET_BLIP_NAME("STRING");
 +HUD::_ADD_TEXT_COMPONENT_STRING("Name");
 +HUD::END_TEXT_COMMAND_SET_BLIP_NAME(blip);</code>
 +==== END_TEXT_COMMAND_SET_BLIP_NAME ====
 +<code cpp>void HUD::END_TEXT_COMMAND_SET_BLIP_NAME(Blip blip) // 0xBC38B49BCB83BC9B 0xE8E59820 b323</code>
 +
 +<code>Finalizes a text command started with BEGIN_TEXT_COMMAND_SET_BLIP_NAME, setting the name of the specified blip.</code>
 +==== _BEGIN_TEXT_COMMAND_OBJECTIVE ====
 +<code cpp>void HUD::_BEGIN_TEXT_COMMAND_OBJECTIVE(const char* p0) // 0x23D69E0465570028 0x0E103475 b323</code>
 +
 +==== _END_TEXT_COMMAND_OBJECTIVE ====
 +<code cpp>void HUD::_END_TEXT_COMMAND_OBJECTIVE(BOOL p0) // 0xCFDBDF5AE59BA0F4 0x2944A6C5 b323</code>
 +
 +==== BEGIN_TEXT_COMMAND_CLEAR_PRINT ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_CLEAR_PRINT(const char* text) // 0xE124FA80A759019C 0x550665AE b323</code>
 +
 +<code>clears a print text command with this text</code>
 +==== END_TEXT_COMMAND_CLEAR_PRINT ====
 +<code cpp>void HUD::END_TEXT_COMMAND_CLEAR_PRINT() // 0xFCC75460ABA29378 0x67785AF2 b323</code>
 +
 +==== BEGIN_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT ====
 +<code cpp>void HUD::BEGIN_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT(const char* gxtEntry) // 0x8F9EE5687F8EECCD 0xBF855650 b323</code>
 +
 +==== END_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT ====
 +<code cpp>void HUD::END_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT(int p0) // 0xA86911979638106F 0x6E7FDA1C b323</code>
 +
 +==== ADD_TEXT_COMPONENT_INTEGER ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_INTEGER(int value) // 0x03B504CF259931BC 0xFE272A57 b323</code>
 +
 +==== ADD_TEXT_COMPONENT_FLOAT ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_FLOAT(float value, int decimalPlaces) // 0xE7DCB5B874BCD96E 0x24D78013 b323</code>
 +
 +==== ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(const char* labelName) // 0xC63CD5D2920ACBE7 0xDCE05406 b323</code>
 +
 +==== ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(Hash gxtEntryHash) // 0x17299B63C7683A2B 0x150E03B6 b323</code>
 +
 +<code>It adds the localized text of the specified GXT entry name. Eg. if the argument is GET_HASH_KEY("ES_HELP"), adds "Continue". Just uses a text labels hash key</code>
 +==== ADD_TEXT_COMPONENT_SUBSTRING_BLIP_NAME ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_BLIP_NAME(Blip blip) // 0x80EAD8E2E1D5D52E 0x5DE98F0A b323</code>
 +
 +==== ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(const char* text) // 0x6C188BE134E074AA 0x27A244D8 b323</code>
 +
 +==== ADD_TEXT_COMPONENT_SUBSTRING_TIME ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_TIME(int timestamp, int flags) // 0x1115F16B8AB9E8BF 0x135B3CD0 b323</code>
 +
 +<code>Adds a timer (e.g. "00:00:00:000"). The appearance of the timer depends on the flags, which needs more research.</code>
 +==== ADD_TEXT_COMPONENT_FORMATTED_INTEGER ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_FORMATTED_INTEGER(int value, BOOL commaSeparated) // 0x0E4C749FF9DE9CC4 0x12929BDF b323</code>
 +
 +==== ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER(const char* p0, int p1) // 0x761B77454205A61D 0x65E1D404 b323</code>
 +
 +<code>p1 was always -1</code>
 +==== ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE(const char* website) // 0x94CF4AC034C9C986 0xC736999E b323</code>
 +
 +<code>This native (along with 0x5F68520888E69014 and 0x6C188BE134E074AA) do not actually filter anything. They simply add the provided text (as of 944)</code>
 +==== ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY ====
 +<code cpp>void HUD::ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY(const char* string) // 0x5F68520888E69014 0x0829A799 b323</code>
 +
 +==== SET_COLOUR_OF_NEXT_TEXT_COMPONENT ====
 +<code cpp>void HUD::SET_COLOUR_OF_NEXT_TEXT_COMPONENT(int hudColor) // 0x39BBF623FC803EAC 0x6F1A1901 b323</code>
 +
 +==== _GET_TEXT_SUBSTRING ====
 +<code cpp>const char* HUD::_GET_TEXT_SUBSTRING(const char* text, int position, int length) // 0x169BD9382084C8C0 0x34A396EE b323</code>
 +
 +<code>Returns a substring of a specified length starting at a specified position.
 +
 +Example:
 +// Get "STRING" text from "MY_STRING"
 +subStr = HUD::_GET_TEXT_SUBSTRING("MY_STRING", 3, 6);</code>
 +==== _GET_TEXT_SUBSTRING_SAFE ====
 +<code cpp>const char* HUD::_GET_TEXT_SUBSTRING_SAFE(const char* text, int position, int length, int maxLength) // 0xB2798643312205C5 0x0183A66C b323</code>
 +
 +<code>Returns a substring of a specified length starting at a specified position. The result is guaranteed not to exceed the specified max length.
 +
 +NOTE: The 'maxLength' parameter might actually be the size of the buffer that is returned. More research is needed. -CL69
 +
 +Example:
 +// Condensed example of how Rockstar uses this function
 +strLen = HUD::GET_LENGTH_OF_LITERAL_STRING(MISC::GET_ONSCREEN_KEYBOARD_RESULT());
 +subStr = HUD::_GET_TEXT_SUBSTRING_SAFE(MISC::GET_ONSCREEN_KEYBOARD_RESULT(), 0, strLen, 63);
 +
 +--
 +
 +"fm_race_creator.ysc", line 85115:
 +// parameters modified for clarity
 +BOOL sub_8e5aa(char *text, int length) {
 +    for (i = 0; i <= (length - 2); i += 1) {
 +        if (!MISC::ARE_STRINGS_EQUAL(HUD::_GET_TEXT_SUBSTRING_SAFE(text, i, i + 1, 1), " ")) {
 +            return FALSE;
 +        }
 +    }
 +    return TRUE;
 +}</code>
 +==== _GET_TEXT_SUBSTRING_SLICE ====
 +<code cpp>const char* HUD::_GET_TEXT_SUBSTRING_SLICE(const char* text, int startPosition, int endPosition) // 0xCE94AEBA5D82908A 0xFA6373BB b323</code>
 +
 +<code>Returns a substring that is between two specified positions. The length of the string will be calculated using (endPosition - startPosition).
 +
 +Example:
 +// Get "STRING" text from "MY_STRING"
 +subStr = HUD::_GET_TEXT_SUBSTRING_SLICE("MY_STRING", 3, 9);
 +// Overflows are possibly replaced with underscores (needs verification)
 +subStr = HUD::_GET_TEXT_SUBSTRING_SLICE("MY_STRING", 3, 10); // "STRING_"?</code>
 +==== _GET_LABEL_TEXT ====
 +<code cpp>const char* HUD::_GET_LABEL_TEXT(const char* labelName) // 0x7B5280EBA9840C72 0x95C4B5AD b323</code>
 +
 +<code>Gets a string literal from a label name.
 +
 +GET_F*</code>
 +==== CLEAR_PRINTS ====
 +<code cpp>void HUD::CLEAR_PRINTS() // 0xCC33FA791322B9D9 0x216CB1C5 b323</code>
 +
 +==== CLEAR_BRIEF ====
 +<code cpp>void HUD::CLEAR_BRIEF() // 0x9D292F73ADBD9313 0x9F75A929 b323</code>
 +
 +==== CLEAR_ALL_HELP_MESSAGES ====
 +<code cpp>void HUD::CLEAR_ALL_HELP_MESSAGES() // 0x6178F68A87A4D3A0 0x9E5D9198 b323</code>
 +
 +==== CLEAR_THIS_PRINT ====
 +<code cpp>void HUD::CLEAR_THIS_PRINT(const char* p0) // 0xCF708001E1E536DD 0x06878327 b323</code>
 +
 +<code>p0: found arguments in the b617d scripts: pastebin.com/X5akCN7z</code>
 +==== CLEAR_SMALL_PRINTS ====
 +<code cpp>void HUD::CLEAR_SMALL_PRINTS() // 0x2CEA2839313C09AC 0xA869A238 b323</code>
 +
 +==== DOES_TEXT_BLOCK_EXIST ====
 +<code cpp>BOOL HUD::DOES_TEXT_BLOCK_EXIST(const char* gxt) // 0x1C7302E725259789 0x96F74838 b323</code>
 +
 +==== REQUEST_ADDITIONAL_TEXT ====
 +<code cpp>void HUD::REQUEST_ADDITIONAL_TEXT(const char* gxt, int slot) // 0x71A78003C8E71424 0x9FA9175B b323</code>
 +
 +<code>Request a gxt into the passed slot.</code>
 +==== REQUEST_ADDITIONAL_TEXT_FOR_DLC ====
 +<code cpp>void HUD::REQUEST_ADDITIONAL_TEXT_FOR_DLC(const char* gxt, int slot) // 0x6009F9F1AE90D8A6 0xF4D27EBE b323</code>
 +
 +==== HAS_ADDITIONAL_TEXT_LOADED ====
 +<code cpp>BOOL HUD::HAS_ADDITIONAL_TEXT_LOADED(int slot) // 0x02245FE4BED318B8 0xB0E56045 b323</code>
 +
 +==== CLEAR_ADDITIONAL_TEXT ====
 +<code cpp>void HUD::CLEAR_ADDITIONAL_TEXT(int p0, BOOL p1) // 0x2A179DF17CCF04CD 0x518141E0 b323</code>
 +
 +==== IS_STREAMING_ADDITIONAL_TEXT ====
 +<code cpp>BOOL HUD::IS_STREAMING_ADDITIONAL_TEXT(int p0) // 0x8B6817B71B85EBF0 0xF079E4EB b323</code>
 +
 +==== HAS_THIS_ADDITIONAL_TEXT_LOADED ====
 +<code cpp>BOOL HUD::HAS_THIS_ADDITIONAL_TEXT_LOADED(const char* gxt, int slot) // 0xADBF060E2B30C5BC 0x80A52040 b323</code>
 +
 +<code>Checks if the specified gxt has loaded into the passed slot.</code>
 +==== IS_MESSAGE_BEING_DISPLAYED ====
 +<code cpp>BOOL HUD::IS_MESSAGE_BEING_DISPLAYED() // 0x7984C03AA5CC2F41 0x6A77FE8D b323</code>
 +
 +==== DOES_TEXT_LABEL_EXIST ====
 +<code cpp>BOOL HUD::DOES_TEXT_LABEL_EXIST(const char* gxt) // 0xAC09CA973C564252 0x6ECAE560 b323</code>
 +
 +<code>Checks if the passed gxt name exists in the game files.</code>
 +==== _0x98C3CF913D895111 ====
 +<code cpp>const char* HUD::_0x98C3CF913D895111(const char* string, int length) // 0x98C3CF913D895111  b505</code>
 +
 +<code>GET_F*</code>
 +==== GET_LENGTH_OF_STRING_WITH_THIS_TEXT_LABEL ====
 +<code cpp>int HUD::GET_LENGTH_OF_STRING_WITH_THIS_TEXT_LABEL(const char* gxt) // 0x801BD273D3A23F74 0xA4CA7BE5 b323</code>
 +
 +<code>Returns the string length of the string from the gxt string .</code>
 +==== GET_LENGTH_OF_LITERAL_STRING ====
 +<code cpp>int HUD::GET_LENGTH_OF_LITERAL_STRING(const char* string) // 0xF030907CCBB8A9FD 0x99379D55 b323</code>
 +
 +<code>Returns the length of the string passed (much like strlen).</code>
 +==== GET_LENGTH_OF_LITERAL_STRING_IN_BYTES ====
 +<code cpp>int HUD::GET_LENGTH_OF_LITERAL_STRING_IN_BYTES(const char* string) // 0x43E4111189E54F0E 0x7DBC0764 b323</code>
 +
 +==== GET_STREET_NAME_FROM_HASH_KEY ====
 +<code cpp>const char* HUD::GET_STREET_NAME_FROM_HASH_KEY(Hash hash) // 0xD0EF8A959B8A4CB9 0x1E8E310C b323</code>
 +
 +<code>This functions converts the hash of a street name into a readable string.
 +
 +For how to get the hashes, see PATHFIND::GET_STREET_NAME_AT_COORD.</code>
 +==== IS_HUD_PREFERENCE_SWITCHED_ON ====
 +<code cpp>BOOL HUD::IS_HUD_PREFERENCE_SWITCHED_ON() // 0x1930DFA731813EC4 0xC3BC1B4F b323</code>
 +
 +==== IS_RADAR_PREFERENCE_SWITCHED_ON ====
 +<code cpp>BOOL HUD::IS_RADAR_PREFERENCE_SWITCHED_ON() // 0x9EB6522EA68F22FE 0x14AEAA28 b323</code>
 +
 +==== IS_SUBTITLE_PREFERENCE_SWITCHED_ON ====
 +<code cpp>BOOL HUD::IS_SUBTITLE_PREFERENCE_SWITCHED_ON() // 0xAD6DACA4BA53E0A4 0x63BA19F5 b323</code>
 +
 +==== DISPLAY_HUD ====
 +<code cpp>void HUD::DISPLAY_HUD(BOOL toggle) // 0xA6294919E56FF02A 0xD10E4E31 b323</code>
 +
 +<code>If Hud should be displayed</code>
 +==== _DISPLAY_HUD_WHEN_DEAD_THIS_FRAME ====
 +<code cpp>void HUD::_DISPLAY_HUD_WHEN_DEAD_THIS_FRAME() // 0x7669F9E39DC17063 0xC380AC85 b323</code>
 +
 +<code>Enables drawing some hud components, such as help labels, this frame, when the player is dead.</code>
 +==== DISPLAY_HUD_WHEN_PAUSED_THIS_FRAME ====
 +<code cpp>void HUD::DISPLAY_HUD_WHEN_PAUSED_THIS_FRAME() // 0x402F9ED62087E898 0xC47AB1B0 b323</code>
 +
 +==== DISPLAY_RADAR ====
 +<code cpp>void HUD::DISPLAY_RADAR(BOOL toggle) // 0xA0EBB943C300E693 0x52816BD4 b323</code>
 +
 +<code>If Minimap / Radar should be displayed.</code>
 +==== _0xCD74233600C4EA6B ====
 +<code cpp>void HUD::_0xCD74233600C4EA6B(BOOL toggle) // 0xCD74233600C4EA6B  b505</code>
 +
 +<code>Setter for 0xC2D2AD9EAAE265B8
 +
 +SET_*</code>
 +==== _0xC2D2AD9EAAE265B8 ====
 +<code cpp>BOOL HUD::_0xC2D2AD9EAAE265B8() // 0xC2D2AD9EAAE265B8  b505</code>
 +
 +<code>Getter for 0xCD74233600C4EA6B
 +
 +GET_*</code>
 +==== IS_HUD_HIDDEN ====
 +<code cpp>BOOL HUD::IS_HUD_HIDDEN() // 0xA86478C6958735C5 0x40BADA1D b323</code>
 +
 +==== IS_RADAR_HIDDEN ====
 +<code cpp>BOOL HUD::IS_RADAR_HIDDEN() // 0x157F93B036700462 0x1AB3B954 b323</code>
 +
 +==== IS_MINIMAP_RENDERING ====
 +<code cpp>BOOL HUD::IS_MINIMAP_RENDERING() // 0xAF754F20EB5CD51A 0x9CD18314 b323</code>
 +
 +==== _0x0C698D8F099174C7 ====
 +<code cpp>void HUD::_0x0C698D8F099174C7(Any p0) // 0x0C698D8F099174C7  b1180</code>
 +
 +==== _0xE4C3B169876D33D7 ====
 +<code cpp>void HUD::_0xE4C3B169876D33D7(Any p0) // 0xE4C3B169876D33D7  b1290</code>
 +
 +==== _0xEB81A3DADD503187 ====
 +<code cpp>void HUD::_0xEB81A3DADD503187() // 0xEB81A3DADD503187  b1290</code>
 +
 +==== SET_BLIP_ROUTE ====
 +<code cpp>void HUD::SET_BLIP_ROUTE(Blip blip, BOOL enabled) // 0x4F7D8A9BFB0B43E9 0x3E160C90 b323</code>
 +
 +<code>Enable / disable showing route for the Blip-object.</code>
 +==== _CLEAR_ALL_BLIP_ROUTES ====
 +<code cpp>void HUD::_CLEAR_ALL_BLIP_ROUTES() // 0xD12882D3FF82BF11  b877</code>
 +
 +==== SET_BLIP_ROUTE_COLOUR ====
 +<code cpp>void HUD::SET_BLIP_ROUTE_COLOUR(Blip blip, int colour) // 0x837155CD2F63DA09 0xDDE7C65C b323</code>
 +
 +==== _0x2790F4B17D098E26 ====
 +<code cpp>void HUD::_0x2790F4B17D098E26(BOOL toggle) // 0x2790F4B17D098E26  b573</code>
 +
 +<code>SET_F*</code>
 +==== _0x6CDD58146A436083 ====
 +<code cpp>void HUD::_0x6CDD58146A436083(Any p0) // 0x6CDD58146A436083  b573</code>
 +
 +==== _0xD1942374085C8469 ====
 +<code cpp>void HUD::_0xD1942374085C8469(Any p0) // 0xD1942374085C8469  b505</code>
 +
 +==== ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS ====
 +<code cpp>void HUD::ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(BOOL p0) // 0x60296AF4BA14ABC5 0xB58B25BD b323</code>
 +
 +==== _0x57D760D55F54E071 ====
 +<code cpp>void HUD::_0x57D760D55F54E071(int p0) // 0x57D760D55F54E071 0x9854485F b323</code>
 +
 +<code>FORCE_*</code>
 +==== SET_RADAR_ZOOM_PRECISE ====
 +<code cpp>void HUD::SET_RADAR_ZOOM_PRECISE(float zoom) // 0xBD12C5EEE184C337 0xDCA3F423 b323</code>
 +
 +==== SET_RADAR_ZOOM ====
 +<code cpp>void HUD::SET_RADAR_ZOOM(int zoomLevel) // 0x096EF57A0C999BBA 0x2A50D1A6 b323</code>
 +
 +<code>zoomLevel ranges from 0 to 200 </code>
 +==== SET_RADAR_ZOOM_TO_BLIP ====
 +<code cpp>void HUD::SET_RADAR_ZOOM_TO_BLIP(Blip blip, float zoom) // 0xF98E4B3E56AFC7B1 0x25EC28C0 b323</code>
 +
 +==== SET_RADAR_ZOOM_TO_DISTANCE ====
 +<code cpp>void HUD::SET_RADAR_ZOOM_TO_DISTANCE(float zoom) // 0xCB7CC0D58405AD41 0x09CF1CE5 b323</code>
 +
 +==== _0xD2049635DEB9C375 ====
 +<code cpp>void HUD::_0xD2049635DEB9C375() // 0xD2049635DEB9C375 0xE8D3A910 b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== GET_HUD_COLOUR ====
 +<code cpp>void HUD::GET_HUD_COLOUR(int hudColorIndex, int* r, int* g, int* b, int* a) // 0x7C9C91AB74A0360F 0x63F66A0B b323</code>
 +
 +<code>HUD colors and their values: pastebin.com/d9aHPbXN</code>
 +==== SET_SCRIPT_VARIABLE_HUD_COLOUR ====
 +<code cpp>void HUD::SET_SCRIPT_VARIABLE_HUD_COLOUR(int r, int g, int b, int a) // 0xD68A5FF8A3A89874 0x0E41E45C b323</code>
 +
 +<code>Sets the color of HUD_COLOUR_SCRIPT_VARIABLE</code>
 +==== _SET_SCRIPT_VARIABLE_2_HUD_COLOUR ====
 +<code cpp>void HUD::_SET_SCRIPT_VARIABLE_2_HUD_COLOUR(int r, int g, int b, int a) // 0x16A304E6CB2BFAB9 0x6BE3ACA8 b323</code>
 +
 +<code>Sets the color of HUD_COLOUR_SCRIPT_VARIABLE_2</code>
 +==== REPLACE_HUD_COLOUR ====
 +<code cpp>void HUD::REPLACE_HUD_COLOUR(int hudColorIndex, int hudColorIndex2) // 0x1CCC708F0F850613 0x3B216749 b323</code>
 +
 +<code>HUD colors and their values: pastebin.com/d9aHPbXN
 +--------------------------------------------------
 +makes hudColorIndex2 color into hudColorIndex color</code>
 +==== REPLACE_HUD_COLOUR_WITH_RGBA ====
 +<code cpp>void HUD::REPLACE_HUD_COLOUR_WITH_RGBA(int hudColorIndex, int r, int g, int b, int a) // 0xF314CF4F0211894E 0xF6E7E92B b323</code>
 +
 +<code>HUD colors and their values: pastebin.com/d9aHPbXN</code>
 +==== _SET_ABILITY_BAR_VISIBILITY_IN_MULTIPLAYER ====
 +<code cpp>void HUD::_SET_ABILITY_BAR_VISIBILITY_IN_MULTIPLAYER(BOOL visible) // 0x1DFEDD15019315A9  b1493</code>
 +
 +==== _SET_ALLOW_ABILITY_BAR_IN_MULTIPLAYER ====
 +<code cpp>void HUD::_SET_ALLOW_ABILITY_BAR_IN_MULTIPLAYER(BOOL toggle) // 0x889329C80FE5963C  b1868</code>
 +
 +==== FLASH_ABILITY_BAR ====
 +<code cpp>void HUD::FLASH_ABILITY_BAR(int millisecondsToFlash) // 0x02CFBA0C9E9275CE 0x3648960D b323</code>
 +
 +==== SET_ABILITY_BAR_VALUE ====
 +<code cpp>void HUD::SET_ABILITY_BAR_VALUE(float p0, float p1) // 0x9969599CCFF5D85E 0x24E53FD8 b323</code>
 +
 +==== FLASH_WANTED_DISPLAY ====
 +<code cpp>void HUD::FLASH_WANTED_DISPLAY(BOOL p0) // 0xA18AFB39081B6A1F 0x629F866B b323</code>
 +
 +==== _0xBA8D65C1C65702E5 ====
 +<code cpp>void HUD::_0xBA8D65C1C65702E5(BOOL toggle) // 0xBA8D65C1C65702E5 0x58612465 b323</code>
 +
 +<code>FORCE_*</code>
 +==== GET_RENDERED_CHARACTER_HEIGHT ====
 +<code cpp>float HUD::GET_RENDERED_CHARACTER_HEIGHT(float size, int font) // 0xDB88A37483346780 0x3330175B b323</code>
 +
 +<code>This gets the height of the FONT and not the total text. You need to get the number of lines your text uses, and get the height of a newline (I'm using a smaller value) to get the total text height.
 +
 +Old name: _GET_TEXT_SCALE_HEIGHT</code>
 +==== SET_TEXT_SCALE ====
 +<code cpp>void HUD::SET_TEXT_SCALE(float scale, float size) // 0x07C837F9A01C34C9 0xB6E15B23 b323</code>
 +
 +<code>Size range : 0F to 1.0F
 +p0 is unknown and doesn't seem to have an effect, yet in the game scripts it changes to 1.0F sometimes.</code>
 +==== SET_TEXT_COLOUR ====
 +<code cpp>void HUD::SET_TEXT_COLOUR(int red, int green, int blue, int alpha) // 0xBE6B23FFA53FB442 0xE54DD2C8 b323</code>
 +
 +<code>colors you input not same as you think?
 +A: for some reason its R B G A</code>
 +==== SET_TEXT_CENTRE ====
 +<code cpp>void HUD::SET_TEXT_CENTRE(BOOL align) // 0xC02F4DBFB51D988B 0xE26D39A1 b323</code>
 +
 +==== SET_TEXT_RIGHT_JUSTIFY ====
 +<code cpp>void HUD::SET_TEXT_RIGHT_JUSTIFY(BOOL toggle) // 0x6B3C4650BC8BEE47 0x45B60520 b323</code>
 +
 +==== SET_TEXT_JUSTIFICATION ====
 +<code cpp>void HUD::SET_TEXT_JUSTIFICATION(int justifyType) // 0x4E096588B13FFECA 0x68CDFA60 b323</code>
 +
 +<code>Types -
 +0: Center-Justify
 +1: Left-Justify
 +2: Right-Justify
 +
 +Right-Justify requires SET_TEXT_WRAP, otherwise it will draw to the far right of the screen</code>
 +==== SET_TEXT_WRAP ====
 +<code cpp>void HUD::SET_TEXT_WRAP(float start, float end) // 0x63145D9C883A1A70 0x6F60AB54 b323</code>
 +
 +<code>It sets the text in a specified box and wraps the text if it exceeds the boundries. Both values are for X axis. Useful when positioning text set to center or aligned to the right.
 +
 +start - left boundry on screen position (0.0 - 1.0)
 +end - right boundry on screen position (0.0 - 1.0)</code>
 +==== SET_TEXT_LEADING ====
 +<code cpp>void HUD::SET_TEXT_LEADING(int p0) // 0xA50ABC31E3CDFAFF 0x98CE21D4 b323</code>
 +
 +==== SET_TEXT_PROPORTIONAL ====
 +<code cpp>void HUD::SET_TEXT_PROPORTIONAL(BOOL p0) // 0x038C1F517D7FDCF8 0xF49D8A08 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_TEXT_FONT ====
 +<code cpp>void HUD::SET_TEXT_FONT(int fontType) // 0x66E0276CC5F6B9DA 0x80BC530D b323</code>
 +
 +<code>fonts that mess up your text where made for number values/misc stuff</code>
 +==== SET_TEXT_DROP_SHADOW ====
 +<code cpp>void HUD::SET_TEXT_DROP_SHADOW() // 0x1CA3E9EAC9D93E5E 0xE2A11511 b323</code>
 +
 +==== SET_TEXT_DROPSHADOW ====
 +<code cpp>void HUD::SET_TEXT_DROPSHADOW(int distance, int r, int g, int b, int a) // 0x465C84BC39F1C351 0xE6587517 b323</code>
 +
 +<code>distance - shadow distance in pixels, both horizontal and vertical
 +r, g, b, a - color</code>
 +==== SET_TEXT_OUTLINE ====
 +<code cpp>void HUD::SET_TEXT_OUTLINE() // 0x2513DFB0FB8400FE 0xC753412F b323</code>
 +
 +==== SET_TEXT_EDGE ====
 +<code cpp>void HUD::SET_TEXT_EDGE(int p0, int r, int g, int b, int a) // 0x441603240D202FA6 0x3F1A5DAB b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_TEXT_RENDER_ID ====
 +<code cpp>void HUD::SET_TEXT_RENDER_ID(int renderId) // 0x5F15302936E07111 0xC5C3B7F3 b323</code>
 +
 +==== GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID ====
 +<code cpp>int HUD::GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID() // 0x52F0982D7FD156B6 0x8188935F b323</code>
 +
 +<code>This function is hard-coded to always return 1.</code>
 +==== REGISTER_NAMED_RENDERTARGET ====
 +<code cpp>BOOL HUD::REGISTER_NAMED_RENDERTARGET(const char* name, BOOL p1) // 0x57D9C12635E25CE3 0xFAE5D6F0 b323</code>
 +
 +==== IS_NAMED_RENDERTARGET_REGISTERED ====
 +<code cpp>BOOL HUD::IS_NAMED_RENDERTARGET_REGISTERED(const char* name) // 0x78DCDC15C9F116B4 0x284057F5 b323</code>
 +
 +==== RELEASE_NAMED_RENDERTARGET ====
 +<code cpp>BOOL HUD::RELEASE_NAMED_RENDERTARGET(const char* name) // 0xE9F6FFE837354DD4 0xD3F6C892 b323</code>
 +
 +==== LINK_NAMED_RENDERTARGET ====
 +<code cpp>void HUD::LINK_NAMED_RENDERTARGET(Hash modelHash) // 0xF6C09E276AEB3F2D 0x6844C4B9 b323</code>
 +
 +==== GET_NAMED_RENDERTARGET_RENDER_ID ====
 +<code cpp>int HUD::GET_NAMED_RENDERTARGET_RENDER_ID(const char* name) // 0x1A6478B61C6BDC3B 0xF9D7A401 b323</code>
 +
 +==== IS_NAMED_RENDERTARGET_LINKED ====
 +<code cpp>BOOL HUD::IS_NAMED_RENDERTARGET_LINKED(Hash modelHash) // 0x113750538FA31298 0x8B52601F b323</code>
 +
 +==== CLEAR_HELP ====
 +<code cpp>void HUD::CLEAR_HELP(BOOL toggle) // 0x8DFCED7A656F8802 0xE6D85741 b323</code>
 +
 +==== IS_HELP_MESSAGE_ON_SCREEN ====
 +<code cpp>BOOL HUD::IS_HELP_MESSAGE_ON_SCREEN() // 0xDAD37F45428801AE 0x4B3C9CA9 b323</code>
 +
 +==== _0x214CD562A939246A ====
 +<code cpp>BOOL HUD::_0x214CD562A939246A() // 0x214CD562A939246A 0x812CBE0E b323</code>
 +
 +<code>HAS_S*</code>
 +==== IS_HELP_MESSAGE_BEING_DISPLAYED ====
 +<code cpp>BOOL HUD::IS_HELP_MESSAGE_BEING_DISPLAYED() // 0x4D79439A6B55AC67 0xA65F262A b323</code>
 +
 +==== IS_HELP_MESSAGE_FADING_OUT ====
 +<code cpp>BOOL HUD::IS_HELP_MESSAGE_FADING_OUT() // 0x327EDEEEAC55C369 0x3E50AE92 b323</code>
 +
 +==== _SET_HELP_MESSAGE_TEXT_STYLE ====
 +<code cpp>void HUD::_SET_HELP_MESSAGE_TEXT_STYLE(int style, int hudColor, int alpha, int p3, int p4) // 0xB9C362BABECDDC7A  b463</code>
 +
 +==== GET_STANDARD_BLIP_ENUM_ID ====
 +<code cpp>BOOL HUD::GET_STANDARD_BLIP_ENUM_ID() // 0x4A9923385BDB9DAD 0x87871CE0 b323</code>
 +
 +<code>This function is hard-coded to always return 1.</code>
 +==== GET_WAYPOINT_BLIP_ENUM_ID ====
 +<code cpp>int HUD::GET_WAYPOINT_BLIP_ENUM_ID() // 0x186E5D252FA50E7D 0xB9827942 b323</code>
 +
 +==== GET_NUMBER_OF_ACTIVE_BLIPS ====
 +<code cpp>int HUD::GET_NUMBER_OF_ACTIVE_BLIPS() // 0x9A3FF3DE163034E8 0x144020FA b323</code>
 +
 +==== GET_NEXT_BLIP_INFO_ID ====
 +<code cpp>Blip HUD::GET_NEXT_BLIP_INFO_ID(int blipSprite) // 0x14F96AA50D6FBEA7 0x9356E92F b323</code>
 +
 +==== GET_FIRST_BLIP_INFO_ID ====
 +<code cpp>Blip HUD::GET_FIRST_BLIP_INFO_ID(int blipSprite) // 0x1BEDE233E6CD2A1F 0x64C0273D b323</code>
 +
 +==== _GET_CLOSEST_BLIP_OF_TYPE ====
 +<code cpp>Blip HUD::_GET_CLOSEST_BLIP_OF_TYPE(int blipSprite) // 0xD484BF71050CA1EE  b1180</code>
 +
 +==== GET_BLIP_INFO_ID_COORD ====
 +<code cpp>Vector3 HUD::GET_BLIP_INFO_ID_COORD(Blip blip) // 0xFA7C7F0AADF25D09 0xB7374A66 b323</code>
 +
 +==== GET_BLIP_INFO_ID_DISPLAY ====
 +<code cpp>int HUD::GET_BLIP_INFO_ID_DISPLAY(Blip blip) // 0x1E314167F701DC3B 0xD0FC19F4 b323</code>
 +
 +==== GET_BLIP_INFO_ID_TYPE ====
 +<code cpp>int HUD::GET_BLIP_INFO_ID_TYPE(Blip blip) // 0xBE9B0959FFD0779B 0x501D7B4E b323</code>
 +
 +<code>Returns a value based on what the blip is attached to
 +1 - Vehicle
 +2 - Ped
 +3 - Object
 +4 - Coord
 +5 - unk
 +6 - Pickup
 +7 - Radius</code>
 +==== GET_BLIP_INFO_ID_ENTITY_INDEX ====
 +<code cpp>Entity HUD::GET_BLIP_INFO_ID_ENTITY_INDEX(Blip blip) // 0x4BA4E2553AFEDC2C 0xA068C40B b323</code>
 +
 +==== GET_BLIP_INFO_ID_PICKUP_INDEX ====
 +<code cpp>Pickup HUD::GET_BLIP_INFO_ID_PICKUP_INDEX(Blip blip) // 0x9B6786E4C03DD382 0x86913D37 b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== GET_BLIP_FROM_ENTITY ====
 +<code cpp>Blip HUD::GET_BLIP_FROM_ENTITY(Entity entity) // 0xBC8DBDCA2436F7E8 0x005A2A47 b323</code>
 +
 +<code>Returns the Blip handle of given Entity.</code>
 +==== ADD_BLIP_FOR_RADIUS ====
 +<code cpp>Blip HUD::ADD_BLIP_FOR_RADIUS(float posX, float posY, float posZ, float radius) // 0x46818D79B1F7499A 0x4626756C b323</code>
 +
 +==== _ADD_BLIP_FOR_AREA ====
 +<code cpp>Blip HUD::_ADD_BLIP_FOR_AREA(float x, float y, float z, float width, float height) // 0xCE5D0E5E315DB238  b463</code>
 +
 +<code>Adds a rectangular blip for the specified coordinates/area.
 +
 +It is recommended to use SET_BLIP_ROTATION and SET_BLIP_COLOUR to make the blip not rotate along with the camera.
 +
 +By default, the blip will show as a _regular_ blip with the specified color/sprite if it is outside of the minimap view.
 +
 +Example image:
 +minimap https://w.wew.wtf/pdcjig.png
 +big map https://w.wew.wtf/zgcjcm.png
 +
 +(Native name is _likely_ to actually be ADD_BLIP_FOR_AREA, but due to the usual reasons this can't be confirmed)</code>
 +==== ADD_BLIP_FOR_ENTITY ====
 +<code cpp>Blip HUD::ADD_BLIP_FOR_ENTITY(Entity entity) // 0x5CDE92C702A8FCE7 0x30822554 b323</code>
 +
 +<code>Returns red ( default ) blip attached to entity.
 +
 +Example:
 +Blip blip; //Put this outside your case or option
 +blip = HUD::ADD_BLIP_FOR_ENTITY(YourPedOrBodyguardName);
 +HUD::SET_BLIP_AS_FRIENDLY(blip, true);</code>
 +==== ADD_BLIP_FOR_PICKUP ====
 +<code cpp>Blip HUD::ADD_BLIP_FOR_PICKUP(Pickup pickup) // 0xBE339365C863BD36 0x16693C3A b323</code>
 +
 +==== ADD_BLIP_FOR_COORD ====
 +<code cpp>Blip HUD::ADD_BLIP_FOR_COORD(float x, float y, float z) // 0x5A039BB0BCA604B6 0xC6F43D0E b323</code>
 +
 +<code>Creates an orange ( default ) Blip-object. Returns a Blip-object which can then be modified.</code>
 +==== TRIGGER_SONAR_BLIP ====
 +<code cpp>void HUD::TRIGGER_SONAR_BLIP(float posX, float posY, float posZ, float radius, int p4) // 0x72DD432F3CDFC0EE 0xBF25E7B2 b323</code>
 +
 +==== ALLOW_SONAR_BLIPS ====
 +<code cpp>void HUD::ALLOW_SONAR_BLIPS(BOOL toggle) // 0x60734CC207C9833C 0xE7E1E32B b323</code>
 +
 +==== SET_BLIP_COORDS ====
 +<code cpp>void HUD::SET_BLIP_COORDS(Blip blip, float posX, float posY, float posZ) // 0xAE2AF67E9D9AF65D 0x680A34D4 b323</code>
 +
 +==== GET_BLIP_COORDS ====
 +<code cpp>Vector3 HUD::GET_BLIP_COORDS(Blip blip) // 0x586AFE3FF72D996E 0xEF6FF47B b323</code>
 +
 +==== SET_BLIP_SPRITE ====
 +<code cpp>void HUD::SET_BLIP_SPRITE(Blip blip, int spriteId) // 0xDF735600A4696DAF 0x8DBBB0B9 b323</code>
 +
 +<code>Sets the displayed sprite for a specific blip..
 +
 +You may have your own list, but since dev-c didn't show it I was bored and started looking through scripts and functions to get a presumable almost positive list of a majority of blip IDs
 +h t t p://pastebin.com/Bpj9Sfft
 +
 +Blips Images + IDs:
 +gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html</code>
 +==== GET_BLIP_SPRITE ====
 +<code cpp>int HUD::GET_BLIP_SPRITE(Blip blip) // 0x1FC877464A04FC4F 0x72FF2E73 b323</code>
 +
 +<code>Blips Images + IDs:
 +gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html</code>
 +==== _0x9FCB3CBFB3EAD69A ====
 +<code cpp>void HUD::_0x9FCB3CBFB3EAD69A(int p0, float p1) // 0x9FCB3CBFB3EAD69A  b1734</code>
 +
 +<code>SET_C*</code>
 +==== _0xB7B873520C84C118 ====
 +<code cpp>void HUD::_0xB7B873520C84C118() // 0xB7B873520C84C118  b1734</code>
 +
 +<code>SET_C*</code>
 +==== SET_BLIP_NAME_FROM_TEXT_FILE ====
 +<code cpp>void HUD::SET_BLIP_NAME_FROM_TEXT_FILE(Blip blip, const char* gxtEntry) // 0xEAA0FFE120D92784 0xAC8A5461 b323</code>
 +
 +<code>Doesn't work if the label text of gxtEntry is >= 80.</code>
 +==== SET_BLIP_NAME_TO_PLAYER_NAME ====
 +<code cpp>void HUD::SET_BLIP_NAME_TO_PLAYER_NAME(Blip blip, Player player) // 0x127DE7B20C60A6A3 0x03A0B8F9 b323</code>
 +
 +==== SET_BLIP_ALPHA ====
 +<code cpp>void HUD::SET_BLIP_ALPHA(Blip blip, int alpha) // 0x45FF974EEE1C8734 0xA791FCCD b323</code>
 +
 +<code>Sets alpha-channel for blip color.
 +
 +Example:
 +
 +Blip blip = HUD::ADD_BLIP_FOR_ENTITY(entity);
 +HUD::SET_BLIP_COLOUR(blip , 3);
 +HUD::SET_BLIP_ALPHA(blip , 64);
 +</code>
 +==== GET_BLIP_ALPHA ====
 +<code cpp>int HUD::GET_BLIP_ALPHA(Blip blip) // 0x970F608F0EE6C885 0x297AF6C8 b323</code>
 +
 +==== SET_BLIP_FADE ====
 +<code cpp>void HUD::SET_BLIP_FADE(Blip blip, int opacity, int duration) // 0x2AEE8F8390D2298C 0xA5999031 b323</code>
 +
 +==== _0x2C173AE2BDB9385E ====
 +<code cpp>int HUD::_0x2C173AE2BDB9385E(Blip blip) // 0x2C173AE2BDB9385E  b463</code>
 +
 +<code>GET_BLIP_*
 +
 +Seems to always return 0 from what I can tell. I've tried a lot of different blip related natives and it always seems to return 0. Decompiled scripts always pass a blip handle as p0.</code>
 +==== SET_BLIP_ROTATION ====
 +<code cpp>void HUD::SET_BLIP_ROTATION(Blip blip, int rotation) // 0xF87683CDF73C3F6E 0x6B8F44FE b323</code>
 +
 +<code>After some testing, looks like you need to use CEIL() on the rotation (vehicle/ped heading) before using it there.</code>
 +==== _SET_BLIP_SQUARED_ROTATION ====
 +<code cpp>void HUD::_SET_BLIP_SQUARED_ROTATION(Blip blip, float heading) // 0xA8B6AFDAC320AC87  b877</code>
 +
 +<code>Does not require whole number/integer rotations.</code>
 +==== _0x003E92BA477F9D7F ====
 +<code cpp>int HUD::_0x003E92BA477F9D7F(Blip blip) // 0x003E92BA477F9D7F  b2060</code>
 +
 +==== SET_BLIP_FLASH_TIMER ====
 +<code cpp>void HUD::SET_BLIP_FLASH_TIMER(Blip blip, int duration) // 0xD3CD6FD297AE87CC 0x8D5DF611 b323</code>
 +
 +<code>Adds up after viewing multiple R* scripts. I believe that the duration is in miliseconds.</code>
 +==== SET_BLIP_FLASH_INTERVAL ====
 +<code cpp>void HUD::SET_BLIP_FLASH_INTERVAL(Blip blip, Any p1) // 0xAA51DB313C010A7E 0xEAF67377 b323</code>
 +
 +==== SET_BLIP_COLOUR ====
 +<code cpp>void HUD::SET_BLIP_COLOUR(Blip blip, int color) // 0x03D7FB09E75D6B7E 0xBB3C5A41 b323</code>
 +
 +<code>https://gtaforums.com/topic/864881-all-blip-color-ids-pictured/</code>
 +==== SET_BLIP_SECONDARY_COLOUR ====
 +<code cpp>void HUD::SET_BLIP_SECONDARY_COLOUR(Blip blip, int r, int g, int b) // 0x14892474891E09EB 0xC6384D32 b323</code>
 +
 +==== GET_BLIP_COLOUR ====
 +<code cpp>int HUD::GET_BLIP_COLOUR(Blip blip) // 0xDF729E8D20CF7327 0xDD6A1E54 b323</code>
 +
 +==== GET_BLIP_HUD_COLOUR ====
 +<code cpp>int HUD::GET_BLIP_HUD_COLOUR(Blip blip) // 0x729B5F1EFBC0AAEE 0xE88B4BC2 b323</code>
 +
 +==== IS_BLIP_SHORT_RANGE ====
 +<code cpp>BOOL HUD::IS_BLIP_SHORT_RANGE(Blip blip) // 0xDA5F8727EB75B926 0x1226765A b323</code>
 +
 +==== IS_BLIP_ON_MINIMAP ====
 +<code cpp>BOOL HUD::IS_BLIP_ON_MINIMAP(Blip blip) // 0xE41CA53051197A27 0x258CBA3A b323</code>
 +
 +==== DOES_BLIP_HAVE_GPS_ROUTE ====
 +<code cpp>BOOL HUD::DOES_BLIP_HAVE_GPS_ROUTE(Blip blip) // 0xDD2238F57B977751 0x3E47F357 b323</code>
 +
 +==== SET_BLIP_HIDDEN_ON_LEGEND ====
 +<code cpp>void HUD::SET_BLIP_HIDDEN_ON_LEGEND(Blip blip, BOOL toggle) // 0x54318C915D27E4CE 0x43996428 b323</code>
 +
 +==== SET_BLIP_HIGH_DETAIL ====
 +<code cpp>void HUD::SET_BLIP_HIGH_DETAIL(Blip blip, BOOL toggle) // 0xE2590BC29220CEBB 0xD5842BFF b323</code>
 +
 +==== SET_BLIP_AS_MISSION_CREATOR_BLIP ====
 +<code cpp>void HUD::SET_BLIP_AS_MISSION_CREATOR_BLIP(Blip blip, BOOL toggle) // 0x24AC0137444F9FD5 0x802FB686 b323</code>
 +
 +==== IS_MISSION_CREATOR_BLIP ====
 +<code cpp>BOOL HUD::IS_MISSION_CREATOR_BLIP(Blip blip) // 0x26F49BF3381D933D 0x24ACC4E9 b323</code>
 +
 +==== GET_NEW_SELECTED_MISSION_CREATOR_BLIP ====
 +<code cpp>Blip HUD::GET_NEW_SELECTED_MISSION_CREATOR_BLIP() // 0x5C90988E7C8E1AF4 0xFFD7476C b323</code>
 +
 +==== IS_HOVERING_OVER_MISSION_CREATOR_BLIP ====
 +<code cpp>BOOL HUD::IS_HOVERING_OVER_MISSION_CREATOR_BLIP() // 0x4167EFE0527D706E 0xC5EB849A b323</code>
 +
 +==== SHOW_START_MISSION_INSTRUCTIONAL_BUTTON ====
 +<code cpp>void HUD::SHOW_START_MISSION_INSTRUCTIONAL_BUTTON(BOOL p0) // 0xF1A6C18B35BCADE6 0xA2CAAB4F b323</code>
 +
 +==== _0x2916A928514C9827 ====
 +<code cpp>void HUD::_0x2916A928514C9827() // 0x2916A928514C9827  b573</code>
 +
 +==== _0xB552929B85FC27EC ====
 +<code cpp>void HUD::_0xB552929B85FC27EC(Any p0, Any p1) // 0xB552929B85FC27EC  b573</code>
 +
 +==== SET_BLIP_FLASHES ====
 +<code cpp>void HUD::SET_BLIP_FLASHES(Blip blip, BOOL toggle) // 0xB14552383D39CE3E 0xC0047F15 b323</code>
 +
 +==== SET_BLIP_FLASHES_ALTERNATE ====
 +<code cpp>void HUD::SET_BLIP_FLASHES_ALTERNATE(Blip blip, BOOL toggle) // 0x2E8D9498C56DD0D1 0x1A81202B b323</code>
 +
 +==== IS_BLIP_FLASHING ====
 +<code cpp>BOOL HUD::IS_BLIP_FLASHING(Blip blip) // 0xA5E41FD83AD6CEF0 0x52E111D7 b323</code>
 +
 +==== SET_BLIP_AS_SHORT_RANGE ====
 +<code cpp>void HUD::SET_BLIP_AS_SHORT_RANGE(Blip blip, BOOL toggle) // 0xBE8BE4FE60E27B72 0x5C67725E b323</code>
 +
 +<code>Sets whether or not the specified blip should only be displayed when nearby, or on the minimap.</code>
 +==== SET_BLIP_SCALE ====
 +<code cpp>void HUD::SET_BLIP_SCALE(Blip blip, float scale) // 0xD38744167B2FA257 0x1E6EC434 b323</code>
 +
 +==== _SET_BLIP_SCALE_TRANSFORMATION ====
 +<code cpp>void HUD::_SET_BLIP_SCALE_TRANSFORMATION(Blip blip, float xScale, float yScale) // 0xCD6524439909C979  b1734</code>
 +
 +<code>See https://imgur.com/a/lLkEsMN</code>
 +==== SET_BLIP_PRIORITY ====
 +<code cpp>void HUD::SET_BLIP_PRIORITY(Blip blip, int priority) // 0xAE9FC9EF6A9FAC79 0xCE87DA6F b323</code>
 +
 +<code>See this topic for more details : gtaforums.com/topic/717612-v-scriptnative-documentation-and-research/page-35?p=1069477935</code>
 +==== SET_BLIP_DISPLAY ====
 +<code cpp>void HUD::SET_BLIP_DISPLAY(Blip blip, int displayId) // 0x9029B2F3DA924928 0x2B521F91 b323</code>
 +
 +<code>Display Id behaviours:
 +0 = Doesn't show up, ever, anywhere.
 +1 = Doesn't show up, ever, anywhere.
 +2 = Shows on both main map and minimap. (Selectable on map)
 +3 = Shows on main map only. (Selectable on map)
 +4 = Shows on main map only. (Selectable on map)
 +5 = Shows on minimap only.
 +6 = Shows on both main map and minimap. (Selectable on map)
 +7 = Doesn't show up, ever, anywhere.
 +8 = Shows on both main map and minimap. (Not selectable on map)
 +9 = Shows on minimap only.
 +10 = Shows on both main map and minimap. (Not selectable on map)
 +
 +Anything higher than 10 seems to be exactly the same as 10.</code>
 +==== SET_BLIP_CATEGORY ====
 +<code cpp>void HUD::SET_BLIP_CATEGORY(Blip blip, int index) // 0x234CDD44D996FD9A 0xEF72F533 b323</code>
 +
 +<code>Example: https://i.imgur.com/skY6vAJ.png
 +
 +Index:
 +1 = No distance shown in legend
 +2 = Distance shown in legend
 +7 = "Other Players" category, also shows distance in legend
 +10 = "Property" category
 +11 = "Owned Property" category
 +
 +Any other value behaves like index = 1, index wraps around after 255
 +Blips with categories 7, 10 or 11 will all show under the specific categories listing in the map legend, regardless of sprite or name.
 +Legend entries:
 +7 = Other Players (BLIP_OTHPLYR)
 +10 = Property (BLIP_PROPCAT)
 +11 = Owned Property (BLIP_APARTCAT)
 +
 +Category needs to be `7` in order for blip names to show on the expanded minimap when using DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS.</code>
 +==== REMOVE_BLIP ====
 +<code cpp>void HUD::REMOVE_BLIP(Blip* blip) // 0x86A652570E5F25DD 0xD8C3C1CD b323</code>
 +
 +<code>In the C++ SDK, this seems not to work-- the blip isn't removed immediately. I use it for saving cars.
 +
 +E.g.:
 +
 +Ped pped = PLAYER::PLAYER_PED_ID();
 +Vehicle v = PED::GET_VEHICLE_PED_IS_USING(pped);
 +Blip b = HUD::ADD_BLIP_FOR_ENTITY(v);
 +
 +works fine.
 +But later attempting to delete it with:
 +
 +Blip b = HUD::GET_BLIP_FROM_ENTITY(v);
 +if (HUD::DOES_BLIP_EXIST(b)) HUD::REMOVE_BLIP(&b);
 +
 +doesn't work. And yes, doesn't work without the DOES_BLIP_EXIST check either. Also, if you attach multiple blips to the same thing (say, a vehicle), and that thing disappears, the blips randomly attach to other things (in my case, a vehicle).
 +
 +Thus for me, HUD::REMOVE_BLIP(&b) only works if there's one blip, (in my case) the vehicle is marked as no longer needed, you drive away from it and it eventually despawns, AND there is only one blip attached to it. I never intentionally attach multiple blips but if the user saves the car, this adds a blip. Then if they delete it, it is supposed to remove the blip, but it doesn't. Then they can immediately save it again, causing another blip to re-appear.
 +-------------
 +
 +Passing the address of the variable instead of the value works for me.
 +e.g.
 +int blip = HUD::ADD_BLIP_FOR_ENTITY(ped);
 +HUD::REMOVE_BLIP(&blip);
 +
 +
 +Remove blip will currently crash your game, just artificially remove the blip by setting the sprite to a id that is 'invisible'.
 +
 +--
 +It crashes my game.</code>
 +==== SET_BLIP_AS_FRIENDLY ====
 +<code cpp>void HUD::SET_BLIP_AS_FRIENDLY(Blip blip, BOOL toggle) // 0x6F6F290102C02AB4 0xF290CFD8 b323</code>
 +
 +<code>false for enemy
 +true for friendly</code>
 +==== PULSE_BLIP ====
 +<code cpp>void HUD::PULSE_BLIP(Blip blip) // 0x742D6FD43115AF73 0x44253855 b323</code>
 +
 +==== SHOW_NUMBER_ON_BLIP ====
 +<code cpp>void HUD::SHOW_NUMBER_ON_BLIP(Blip blip, int number) // 0xA3C0B359DCB848B6 0x7BFC66C6 b323</code>
 +
 +==== HIDE_NUMBER_ON_BLIP ====
 +<code cpp>void HUD::HIDE_NUMBER_ON_BLIP(Blip blip) // 0x532CFF637EF80148 0x0B6D610D b323</code>
 +
 +==== SHOW_HEIGHT_ON_BLIP ====
 +<code cpp>void HUD::SHOW_HEIGHT_ON_BLIP(Blip blip, BOOL toggle) // 0x75A16C3DA34F1245 0x1D99F676 b323</code>
 +
 +==== SHOW_TICK_ON_BLIP ====
 +<code cpp>void HUD::SHOW_TICK_ON_BLIP(Blip blip, BOOL toggle) // 0x74513EA3E505181E 0x3DCF0092 b323</code>
 +
 +<code>Adds a green checkmark on top of a blip.</code>
 +==== SHOW_HEADING_INDICATOR_ON_BLIP ====
 +<code cpp>void HUD::SHOW_HEADING_INDICATOR_ON_BLIP(Blip blip, BOOL toggle) // 0x5FBCA48327B914DF 0xD1C3D71B b323</code>
 +
 +<code>Adds the GTA: Online player heading indicator to a blip.</code>
 +==== SHOW_OUTLINE_INDICATOR_ON_BLIP ====
 +<code cpp>void HUD::SHOW_OUTLINE_INDICATOR_ON_BLIP(Blip blip, BOOL toggle) // 0xB81656BC81FE24D1 0x8DE82C15 b323</code>
 +
 +<code>Highlights a blip by a cyan color circle.
 +
 +Color can be changed with SET_BLIP_SECONDARY_COLOUR</code>
 +==== SHOW_FRIEND_INDICATOR_ON_BLIP ====
 +<code cpp>void HUD::SHOW_FRIEND_INDICATOR_ON_BLIP(Blip blip, BOOL toggle) // 0x23C3EB807312F01A 0x4C8F02B4 b323</code>
 +
 +<code>Highlights a blip by a half cyan circle on the right side of the blip. https://i.imgur.com/FrV9M4e.png
 +.Indicating that that player is a friend (in GTA:O). This color can not be changed.
 +To toggle the left side (crew member indicator) of the half circle around the blip, use: `SHOW_CREW_INDICATOR_ON_BLIP`</code>
 +==== SHOW_CREW_INDICATOR_ON_BLIP ====
 +<code cpp>void HUD::SHOW_CREW_INDICATOR_ON_BLIP(Blip blip, BOOL toggle) // 0xDCFB5D4DB8BF367E 0xABBE1E45 b323</code>
 +
 +<code>Enables or disables the blue half circle https://i.imgur.com/iZes9Ec.png around the specified blip on the left side of the blip. This is used to indicate that the player is in your crew in GTA:O. Color is changeable by using `SET_BLIP_SECONDARY_COLOUR`.</code>
 +==== _SET_BLIP_DISPLAY_INDICATOR_ON_BLIP ====
 +<code cpp>void HUD::_SET_BLIP_DISPLAY_INDICATOR_ON_BLIP(Blip blip, BOOL toggle) // 0xC4278F70131BAA6D 0x6AA6A1CC b323</code>
 +
 +<code>Must be toggled before being queued for animation</code>
 +==== _0x4B5B620C9B59ED34 ====
 +<code cpp>void HUD::_0x4B5B620C9B59ED34(Any p0, Any p1) // 0x4B5B620C9B59ED34  b678</code>
 +
 +==== _0x2C9F302398E13141 ====
 +<code cpp>void HUD::_0x2C9F302398E13141(Any p0, Any p1) // 0x2C9F302398E13141  b1103</code>
 +
 +==== _SET_BLIP_SHRINK ====
 +<code cpp>void HUD::_SET_BLIP_SHRINK(Blip blip, BOOL toggle) // 0x2B6D467DAB714E8D 0xC575F0BC b323</code>
 +
 +<code>Makes a blip go small when off the minimap.
 +
 +SET_BLIP_AS_*</code>
 +==== SET_RADIUS_BLIP_EDGE ====
 +<code cpp>void HUD::SET_RADIUS_BLIP_EDGE(Blip blip, BOOL toggle) // 0x25615540D894B814 0x40E25DB8 b323</code>
 +
 +<code>Enabling this on a radius blip will make it outline only. See https://cdn.discordapp.com/attachments/553235301632573459/575132227935928330/unknown.png</code>
 +==== DOES_BLIP_EXIST ====
 +<code cpp>BOOL HUD::DOES_BLIP_EXIST(Blip blip) // 0xA6DB27D19ECBB7DA 0xAE92DD96 b323</code>
 +
 +==== SET_WAYPOINT_OFF ====
 +<code cpp>void HUD::SET_WAYPOINT_OFF() // 0xA7E4E2D361C2627F 0xB3496E1B b323</code>
 +
 +<code>This native removes the current waypoint from the map.
 +
 +Example:
 +C#:
 +Function.Call(Hash.SET_WAYPOINT_OFF);
 +
 +C++:
 +HUD::SET_WAYPOINT_OFF();</code>
 +==== _DELETE_WAYPOINT ====
 +<code cpp>void HUD::_DELETE_WAYPOINT() // 0xD8E694757BCEA8E9 0x62BABF2C b323</code>
 +
 +==== REFRESH_WAYPOINT ====
 +<code cpp>void HUD::REFRESH_WAYPOINT() // 0x81FA173F170560D1 0xB395D753 b323</code>
 +
 +==== IS_WAYPOINT_ACTIVE ====
 +<code cpp>BOOL HUD::IS_WAYPOINT_ACTIVE() // 0x1DD1F58F493F1DA5 0x5E4DF47B b323</code>
 +
 +==== SET_NEW_WAYPOINT ====
 +<code cpp>void HUD::SET_NEW_WAYPOINT(float x, float y) // 0xFE43368D2AA4F2FC 0x8444E1F0 b323</code>
 +
 +==== SET_BLIP_BRIGHT ====
 +<code cpp>void HUD::SET_BLIP_BRIGHT(Blip blip, BOOL toggle) // 0xB203913733F27884 0x72BEE6DF b323</code>
 +
 +==== SET_BLIP_SHOW_CONE ====
 +<code cpp>void HUD::SET_BLIP_SHOW_CONE(Blip blip, BOOL toggle, Any p2) // 0x13127EC3665E8EE1 0xFF545AD8 b323</code>
 +
 +==== _0xC594B315EDF2D4AF ====
 +<code cpp>void HUD::_0xC594B315EDF2D4AF(Ped ped) // 0xC594B315EDF2D4AF 0x41B0D022 b323</code>
 +
 +<code>Interesting fact: A hash collision for this is RESET_JETPACK_MODEL_SETTINGS</code>
 +==== _0xF83D0FEBE75E62C9 ====
 +<code cpp>void HUD::_0xF83D0FEBE75E62C9(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8) // 0xF83D0FEBE75E62C9  b1290</code>
 +
 +==== _0x35A3CD97B2C0A6D2 ====
 +<code cpp>void HUD::_0x35A3CD97B2C0A6D2(Blip blip) // 0x35A3CD97B2C0A6D2  b1290</code>
 +
 +==== _0x8410C5E0CD847B9D ====
 +<code cpp>void HUD::_0x8410C5E0CD847B9D() // 0x8410C5E0CD847B9D  b1290</code>
 +
 +==== SET_MINIMAP_COMPONENT ====
 +<code cpp>Any HUD::SET_MINIMAP_COMPONENT(int componentId, BOOL toggle, int overrideColor) // 0x75A9A10948D1DEA6 0x419DCDC4 b323</code>
 +
 +<code>This native is used to colorize certain map components like the army base at the top of the map.
 +p2 appears to be always -1. If p2 is -1 then native wouldn't change the color. See https://gfycat.com/SkinnyPinkChupacabra</code>
 +==== _SET_MINIMAP_SONAR_ENABLED ====
 +<code cpp>void HUD::_SET_MINIMAP_SONAR_ENABLED(BOOL toggle) // 0x6B50FC8749632EC1  b2189</code>
 +
 +==== _SHOW_SIGNIN_UI ====
 +<code cpp>void HUD::_SHOW_SIGNIN_UI() // 0x60E892BA4F5BDCA4  b323</code>
 +
 +==== GET_MAIN_PLAYER_BLIP_ID ====
 +<code cpp>Blip HUD::GET_MAIN_PLAYER_BLIP_ID() // 0xDCD4EC3F419D02FA 0xAB93F020 b323</code>
 +
 +==== _0x41350B4FC28E3941 ====
 +<code cpp>void HUD::_0x41350B4FC28E3941(BOOL p0) // 0x41350B4FC28E3941  b323</code>
 +
 +==== HIDE_LOADING_ON_FADE_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_LOADING_ON_FADE_THIS_FRAME() // 0x4B0311D3CDC4648F 0x35087963 b323</code>
 +
 +==== SET_RADAR_AS_INTERIOR_THIS_FRAME ====
 +<code cpp>void HUD::SET_RADAR_AS_INTERIOR_THIS_FRAME(Hash interior, float x, float y, int z, int zoom) // 0x59E727A1C9D3E31A 0x6F2626E1 b323</code>
 +
 +<code>List of interior hashes: pastebin.com/1FUyXNqY
 +Not for every interior zoom > 0 available.</code>
 +==== _0x504DFE62A1692296 ====
 +<code cpp>void HUD::_0x504DFE62A1692296(BOOL toggle) // 0x504DFE62A1692296  b1493</code>
 +
 +==== SET_RADAR_AS_EXTERIOR_THIS_FRAME ====
 +<code cpp>void HUD::SET_RADAR_AS_EXTERIOR_THIS_FRAME() // 0xE81B7D2A3DAB2D81 0x39ABB10E b323</code>
 +
 +==== _SET_PLAYER_BLIP_POSITION_THIS_FRAME ====
 +<code cpp>void HUD::_SET_PLAYER_BLIP_POSITION_THIS_FRAME(float x, float y) // 0x77E2DD177910E1CF 0x54E75C7D b323</code>
 +
 +<code>Sets the position of the arrow icon representing the player on both the minimap and world map.
 +
 +Too bad this wouldn't work over the network (obviously not). Could spoof where we would be.</code>
 +==== _0xA17784FCA9548D15 ====
 +<code cpp>void HUD::_0xA17784FCA9548D15(Any p0, Any p1, Any p2) // 0xA17784FCA9548D15  b877</code>
 +
 +==== _IS_MINIMAP_IN_INTERIOR ====
 +<code cpp>BOOL HUD::_IS_MINIMAP_IN_INTERIOR() // 0x9049FE339D5F6F6F 0x199DED14 b323</code>
 +
 +==== HIDE_MINIMAP_EXTERIOR_MAP_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_MINIMAP_EXTERIOR_MAP_THIS_FRAME() // 0x5FBAE526203990C9 0x1A4318F7 b323</code>
 +
 +==== HIDE_MINIMAP_INTERIOR_MAP_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_MINIMAP_INTERIOR_MAP_THIS_FRAME() // 0x20FE7FDFEEAD38C0 0xCE36E3FE b323</code>
 +
 +==== _SET_TOGGLE_MINIMAP_HEIST_ISLAND ====
 +<code cpp>void HUD::_SET_TOGGLE_MINIMAP_HEIST_ISLAND(BOOL toggle) // 0x5E1460624D194A38  b2189</code>
 +
 +<code>Toggles the Cayo Perico map.</code>
 +==== DONT_TILT_MINIMAP_THIS_FRAME ====
 +<code cpp>void HUD::DONT_TILT_MINIMAP_THIS_FRAME() // 0x6D14BFDC33B34F55 0x334EFD46 b323</code>
 +
 +<code>When calling this, the current frame will have the players "arrow icon" be focused on the dead center of the radar.</code>
 +==== _0x55F5A5F07134DE60 ====
 +<code cpp>void HUD::_0x55F5A5F07134DE60() // 0x55F5A5F07134DE60  b1180</code>
 +
 +==== SET_WIDESCREEN_FORMAT ====
 +<code cpp>void HUD::SET_WIDESCREEN_FORMAT(Any p0) // 0xC3B07BA00A83B0F1 0xF016E08F b323</code>
 +
 +==== DISPLAY_AREA_NAME ====
 +<code cpp>void HUD::DISPLAY_AREA_NAME(BOOL toggle) // 0x276B6CE369C33678 0x489FDD41 b323</code>
 +
 +==== DISPLAY_CASH ====
 +<code cpp>void HUD::DISPLAY_CASH(BOOL toggle) // 0x96DEC8D5430208B7 0x0049DF83 b323</code>
 +
 +<code>"DISPLAY_CASH(false);" makes the cash amount render on the screen when appropriate
 +"DISPLAY_CASH(true);" disables cash amount rendering</code>
 +==== _0x170F541E1CADD1DE ====
 +<code cpp>void HUD::_0x170F541E1CADD1DE(BOOL p0) // 0x170F541E1CADD1DE  b323</code>
 +
 +<code>Related to displaying cash on the HUD
 +Always called before HUD::_SET_SINGLEPLAYER_HUD_CASH in decompiled scripts</code>
 +==== _SET_PLAYER_CASH_CHANGE ====
 +<code cpp>void HUD::_SET_PLAYER_CASH_CHANGE(int cash, int bank) // 0x0772DF77852C2E30  b323</code>
 +
 +<code>Displays cash change notifications on HUD.</code>
 +==== DISPLAY_AMMO_THIS_FRAME ====
 +<code cpp>void HUD::DISPLAY_AMMO_THIS_FRAME(BOOL display) // 0xA5E78BA2B1331C55 0x60693CEE b323</code>
 +
 +==== DISPLAY_SNIPER_SCOPE_THIS_FRAME ====
 +<code cpp>void HUD::DISPLAY_SNIPER_SCOPE_THIS_FRAME() // 0x73115226F4814E62 0xBC6C73CB b323</code>
 +
 +<code>Displays the crosshair for this frame.</code>
 +==== HIDE_HUD_AND_RADAR_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_HUD_AND_RADAR_THIS_FRAME() // 0x719FF505F097FD20 0xB75D4AD2 b323</code>
 +
 +<code>I think this works, but seems to prohibit switching to other weapons (or accessing the weapon wheel)</code>
 +==== _0xE67C6DFD386EA5E7 ====
 +<code cpp>void HUD::_0xE67C6DFD386EA5E7(BOOL p0) // 0xE67C6DFD386EA5E7 0x5476B9FD b323</code>
 +
 +==== SET_MULTIPLAYER_WALLET_CASH ====
 +<code cpp>void HUD::SET_MULTIPLAYER_WALLET_CASH() // 0xC2D15BEF167E27BC 0xF4F3C796 b323</code>
 +
 +==== REMOVE_MULTIPLAYER_WALLET_CASH ====
 +<code cpp>void HUD::REMOVE_MULTIPLAYER_WALLET_CASH() // 0x95CF81BD06EE1887 0x7BFFE82F b323</code>
 +
 +==== SET_MULTIPLAYER_BANK_CASH ====
 +<code cpp>void HUD::SET_MULTIPLAYER_BANK_CASH() // 0xDD21B55DF695CD0A 0x2C842D03 b323</code>
 +
 +==== REMOVE_MULTIPLAYER_BANK_CASH ====
 +<code cpp>void HUD::REMOVE_MULTIPLAYER_BANK_CASH() // 0xC7C6789AA1CFEDD0 0x728B4EF4 b323</code>
 +
 +==== SET_MULTIPLAYER_HUD_CASH ====
 +<code cpp>void HUD::SET_MULTIPLAYER_HUD_CASH(int p0, int p1) // 0xFD1D220394BCB824 0xA8DB435E b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== REMOVE_MULTIPLAYER_HUD_CASH ====
 +<code cpp>void HUD::REMOVE_MULTIPLAYER_HUD_CASH() // 0x968F270E39141ECA 0x07BF4A7D b323</code>
 +
 +<code>Removes multiplayer cash hud each frame</code>
 +==== HIDE_HELP_TEXT_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_HELP_TEXT_THIS_FRAME() // 0xD46923FC481CA285 0xF3807BED b323</code>
 +
 +==== _0x801879A9B4F4B2FB ====
 +<code cpp>BOOL HUD::_0x801879A9B4F4B2FB() // 0x801879A9B4F4B2FB  b372</code>
 +
 +<code>IS_*</code>
 +==== DISPLAY_HELP_TEXT_THIS_FRAME ====
 +<code cpp>void HUD::DISPLAY_HELP_TEXT_THIS_FRAME(const char* message, BOOL p1) // 0x960C9FF8F616E41C 0x18E3360A b323</code>
 +
 +<code>The messages are localized strings.
 +Examples:
 +"No_bus_money"
 +"Enter_bus"
 +"Tour_help"
 +"LETTERS_HELP2"
 +"Dummy"
 +
 +**The bool appears to always be false (if it even is a bool, as it's represented by a zero)**
 +--------
 +p1 doesn't seem to make a difference, regardless of the state it's in. 
 +
 +
 +picture of where on the screen this is displayed? </code>
 +==== HUD_FORCE_WEAPON_WHEEL ====
 +<code cpp>void HUD::HUD_FORCE_WEAPON_WHEEL(BOOL show) // 0xEB354E5376BC81A7 0x1EFFB02A b323</code>
 +
 +<code>Forces the weapon wheel to show/hide.</code>
 +==== _HUD_DISPLAY_LOADING_SCREEN_TIPS ====
 +<code cpp>void HUD::_HUD_DISPLAY_LOADING_SCREEN_TIPS() // 0x488043841BBE156F  b1011</code>
 +
 +<code>Displays loading screen tips, requires `_0x56C8B608CFD49854` to be called beforehand.</code>
 +==== _HUD_WEAPON_WHEEL_IGNORE_SELECTION ====
 +<code cpp>void HUD::_HUD_WEAPON_WHEEL_IGNORE_SELECTION() // 0x0AFC4AF510774B47 0xB26FED2B b323</code>
 +
 +<code>Calling this each frame, stops the player from receiving a weapon via the weapon wheel.</code>
 +==== _HUD_WEAPON_WHEEL_GET_SELECTED_HASH ====
 +<code cpp>Hash HUD::_HUD_WEAPON_WHEEL_GET_SELECTED_HASH() // 0xA48931185F0536FE 0x22E9F555 b323</code>
 +
 +<code>Returns the weapon hash to the selected/highlighted weapon in the wheel</code>
 +==== HUD_SET_WEAPON_WHEEL_TOP_SLOT ====
 +<code cpp>void HUD::HUD_SET_WEAPON_WHEEL_TOP_SLOT(Hash weaponHash) // 0x72C1056D678BB7D8 0x83B608A0 b323</code>
 +
 +<code>Set the active slotIndex in the wheel weapon to the slot associated with the provided Weapon hash</code>
 +==== _HUD_WEAPON_WHEEL_GET_SLOT_HASH ====
 +<code cpp>Hash HUD::_HUD_WEAPON_WHEEL_GET_SLOT_HASH(int weaponTypeIndex) // 0xA13E93403F26C812  b323</code>
 +
 +<code>Returns the weapon hash active in a specific weapon wheel slotList</code>
 +==== _HUD_WEAPON_WHEEL_IGNORE_CONTROL_INPUT ====
 +<code cpp>void HUD::_HUD_WEAPON_WHEEL_IGNORE_CONTROL_INPUT(BOOL toggle) // 0x14C9FDCC41F81F63 0xE70D1F43 b323</code>
 +
 +<code>Sets a global that disables many weapon input tasks (shooting, aiming, etc.). Does not work with vehicle weapons, only used in selector.ysc</code>
 +==== SET_GPS_FLAGS ====
 +<code cpp>void HUD::SET_GPS_FLAGS(int p0, float p1) // 0x5B440763A4C8D15B 0x60539BAB b323</code>
 +
 +<code>Only the script that originally called SET_GPS_FLAGS can set them again. Another script cannot set the flags, until the first script that called it has called CLEAR_GPS_FLAGS.
 +
 +Doesn't seem like the flags are actually read by the game at all.</code>
 +==== CLEAR_GPS_FLAGS ====
 +<code cpp>void HUD::CLEAR_GPS_FLAGS() // 0x21986729D6A3A830 0x056AFCE6 b323</code>
 +
 +<code>Clears the GPS flags. Only the script that originally called SET_GPS_FLAGS can clear them.
 +
 +Doesn't seem like the flags are actually read by the game at all.</code>
 +==== SET_RACE_TRACK_RENDER ====
 +<code cpp>void HUD::SET_RACE_TRACK_RENDER(BOOL toggle) // 0x1EAC5F91BCBC5073 0xFB9BABF5 b323</code>
 +
 +==== CLEAR_GPS_RACE_TRACK ====
 +<code cpp>void HUD::CLEAR_GPS_RACE_TRACK() // 0x7AA5B4CE533C858B 0x40C59829 b323</code>
 +
 +<code>Does the same as SET_RACE_TRACK_RENDER(false);</code>
 +==== START_GPS_CUSTOM_ROUTE ====
 +<code cpp>void HUD::START_GPS_CUSTOM_ROUTE(int hudColor, BOOL displayOnFoot, BOOL followPlayer) // 0xDB34E8D56FC13B08 0x7F93799B b323</code>
 +
 +<code>Starts a new GPS custom-route, allowing you to plot lines on the map.
 +Lines are drawn directly between points.
 +The GPS custom route works like the GPS multi route, except it does not follow roads.
 +Example result: https://i.imgur.com/BDm5pzt.png
 +hudColor: The HUD color of the GPS path.
 +displayOnFoot: Draws the path regardless if the player is in a vehicle or not.
 +followPlayer: Draw the path partially between the previous and next point based on the players position between them. When false, the GPS appears to not disappear after the last leg is completed.</code>
 +==== ADD_POINT_TO_GPS_CUSTOM_ROUTE ====
 +<code cpp>void HUD::ADD_POINT_TO_GPS_CUSTOM_ROUTE(float x, float y, float z) // 0x311438A071DD9B1A 0xEEBDFE55 b323</code>
 +
 +==== SET_GPS_CUSTOM_ROUTE_RENDER ====
 +<code cpp>void HUD::SET_GPS_CUSTOM_ROUTE_RENDER(BOOL toggle, int radarThickness, int mapThickness) // 0x900086F371220B6F 0xDA0AF00E b323</code>
 +
 +<code>radarThickness: The width of the GPS route on the radar
 +mapThickness: The width of the GPS route on the map</code>
 +==== CLEAR_GPS_CUSTOM_ROUTE ====
 +<code cpp>void HUD::CLEAR_GPS_CUSTOM_ROUTE() // 0xE6DE0561D9232A64 0xCF2E3E24 b323</code>
 +
 +==== START_GPS_MULTI_ROUTE ====
 +<code cpp>void HUD::START_GPS_MULTI_ROUTE(int hudColor, BOOL routeFromPlayer, BOOL displayOnFoot) // 0x3D3D15AF7BCAAF83 0xC3DCBEDB b323</code>
 +
 +<code>Starts a new GPS multi-route, allowing you to create custom GPS paths.
 +GPS functions like the waypoint, except it can contain multiple points it's forced to go through.
 +Once the player has passed a point, the GPS will no longer force its path through it.
 +
 +Works independently from the player-placed waypoint and blip routes.
 +Example result: https://i.imgur.com/ZZHQatX.png
 +hudColor: The HUD color of the GPS path.
 +routeFromPlayer: Makes the GPS draw a path from the player to the next point, rather than the original path from the previous point.
 +displayOnFoot: Draws the GPS path regardless if the player is in a vehicle or not.</code>
 +==== ADD_POINT_TO_GPS_MULTI_ROUTE ====
 +<code cpp>void HUD::ADD_POINT_TO_GPS_MULTI_ROUTE(float x, float y, float z) // 0xA905192A6781C41B 0xFE485135 b323</code>
 +
 +==== SET_GPS_MULTI_ROUTE_RENDER ====
 +<code cpp>void HUD::SET_GPS_MULTI_ROUTE_RENDER(BOOL toggle) // 0x3DDA37128DD1ACA8 0xE87CBE4C b323</code>
 +
 +==== CLEAR_GPS_MULTI_ROUTE ====
 +<code cpp>void HUD::CLEAR_GPS_MULTI_ROUTE() // 0x67EEDEA1B9BAFD94 0x0D9969E4 b323</code>
 +
 +<code>Does the same as SET_GPS_MULTI_ROUTE_RENDER(false);</code>
 +==== CLEAR_GPS_PLAYER_WAYPOINT ====
 +<code cpp>void HUD::CLEAR_GPS_PLAYER_WAYPOINT() // 0xFF4FB7C8CDFA3DA7 0x0B9C7FC2 b323</code>
 +
 +==== SET_GPS_FLASHES ====
 +<code cpp>void HUD::SET_GPS_FLASHES(BOOL toggle) // 0x320D0E0D936A0E9B 0xE991F733 b323</code>
 +
 +==== _0x7B21E0BB01E8224A ====
 +<code cpp>void HUD::_0x7B21E0BB01E8224A(Any p0) // 0x7B21E0BB01E8224A  b323</code>
 +
 +==== FLASH_MINIMAP_DISPLAY ====
 +<code cpp>void HUD::FLASH_MINIMAP_DISPLAY() // 0xF2DD778C22B15BDA 0xB8359952 b323</code>
 +
 +<code>adds a short flash to the Radar/Minimap
 +Usage: UI.FLASH_MINIMAP_DISPLAY</code>
 +==== FLASH_MINIMAP_DISPLAY_WITH_COLOR ====
 +<code cpp>void HUD::FLASH_MINIMAP_DISPLAY_WITH_COLOR(int hudColorIndex) // 0x6B1DE27EE78E6A19 0x79A6CAF6 b323</code>
 +
 +==== TOGGLE_STEALTH_RADAR ====
 +<code cpp>void HUD::TOGGLE_STEALTH_RADAR(BOOL toggle) // 0x6AFDFB93754950C7 0xC68D47C4 b323</code>
 +
 +==== SET_MINIMAP_IN_SPECTATOR_MODE ====
 +<code cpp>void HUD::SET_MINIMAP_IN_SPECTATOR_MODE(BOOL toggle, Ped ped) // 0x1A5CD7752DD28CD3 0xD5BFCADB b323</code>
 +
 +==== SET_MISSION_NAME ====
 +<code cpp>void HUD::SET_MISSION_NAME(BOOL p0, const char* name) // 0x5F28ECF5FC84772F 0x68DCAE10 b323</code>
 +
 +==== _SET_MISSION_NAME_2 ====
 +<code cpp>void HUD::_SET_MISSION_NAME_2(BOOL p0, const char* name) // 0xE45087D85F468BC2 0x8D9A1734 b323</code>
 +
 +==== _0x817B86108EB94E51 ====
 +<code cpp>void HUD::_0x817B86108EB94E51(BOOL p0, Any* p1, Any* p2, Any* p3, Any* p4, Any* p5, Any* p6, Any* p7, Any* p8) // 0x817B86108EB94E51 0xD2161E77 b323</code>
 +
 +<code>HUD::_817B86108EB94E51(1, &g_189F36._f10CD1[0/*16*/], &g_189F36._f10CD1[1/*16*/], &g_189F36._f10CD1[2/*16*/], &g_189F36._f10CD1[3/*16*/], &g_189F36._f10CD1[4/*16*/], &g_189F36._f10CD1[5/*16*/], &g_189F36._f10CD1[6/*16*/], &g_189F36._f10CD1[7/*16*/]);</code>
 +==== SET_MINIMAP_BLOCK_WAYPOINT ====
 +<code cpp>void HUD::SET_MINIMAP_BLOCK_WAYPOINT(BOOL toggle) // 0x58FADDED207897DC 0xA41C3B62 b323</code>
 +
 +==== SET_MINIMAP_IN_PROLOGUE ====
 +<code cpp>void HUD::SET_MINIMAP_IN_PROLOGUE(BOOL toggle) // 0x9133955F1A2DA957 0x02F5F1D1 b323</code>
 +
 +<code>Toggles the North Yankton map</code>
 +==== SET_MINIMAP_HIDE_FOW ====
 +<code cpp>void HUD::SET_MINIMAP_HIDE_FOW(BOOL toggle) // 0xF8DEE0A5600CBB93 0xD8D77733 b323</code>
 +
 +<code>If true, the entire map will be revealed.
 +
 +FOW = Fog of War</code>
 +==== GET_MINIMAP_FOW_DISCOVERY_RATIO ====
 +<code cpp>float HUD::GET_MINIMAP_FOW_DISCOVERY_RATIO() // 0xE0130B41D3CF4574 0xA4098ACC b323</code>
 +
 +==== GET_MINIMAP_FOW_COORDINATE_IS_REVEALED ====
 +<code cpp>BOOL HUD::GET_MINIMAP_FOW_COORDINATE_IS_REVEALED(float x, float y, float z) // 0x6E31B91145873922 0x65B705F6 b323</code>
 +
 +==== _0x62E849B7EB28E770 ====
 +<code cpp>void HUD::_0x62E849B7EB28E770(BOOL p0) // 0x62E849B7EB28E770  b323</code>
 +
 +==== SET_MINIMAP_FOW_REVEAL_COORDINATE ====
 +<code cpp>void HUD::SET_MINIMAP_FOW_REVEAL_COORDINATE(float x, float y, float z) // 0x0923DBF87DFF735E 0xE010F081 b323</code>
 +
 +==== SET_MINIMAP_GOLF_COURSE ====
 +<code cpp>void HUD::SET_MINIMAP_GOLF_COURSE(int hole) // 0x71BDB63DBAF8DA59 0x5133A750 b323</code>
 +
 +<code>Not much is known so far on what it does _exactly_.
 +All I know for sure is that it draws the specified hole ID on the pause menu map as well as on the mini-map/radar. This native also seems to change some other things related to the pause menu map's behaviour, for example: you can no longer set waypoints, the pause menu map starts up in a 'zoomed in' state. This native does not need to be executed every tick.
 +You need to center the minimap manually as well as change/lock it's zoom and angle in order for it to appear correctly on the minimap.
 +You'll also need to use the `GOLF` scaleform in order to get the correct minmap border to show up.
 +Use `0x35edd5b2e3ff01c0` to reset the map when you no longer want to display any golf holes (you still need to unlock zoom, position and angle of the radar manually after calling this).</code>
 +==== SET_MINIMAP_GOLF_COURSE_OFF ====
 +<code cpp>void HUD::SET_MINIMAP_GOLF_COURSE_OFF() // 0x35EDD5B2E3FF01C0 0x20FD3E87 b323</code>
 +
 +==== LOCK_MINIMAP_ANGLE ====
 +<code cpp>void HUD::LOCK_MINIMAP_ANGLE(int angle) // 0x299FAEBB108AE05B 0xDEC733E4 b323</code>
 +
 +<code>Locks the minimap to the specified angle in integer degrees.
 +
 +angle: The angle in whole degrees. If less than 0 or greater than 360, unlocks the angle.</code>
 +==== UNLOCK_MINIMAP_ANGLE ====
 +<code cpp>void HUD::UNLOCK_MINIMAP_ANGLE() // 0x8183455E16C42E3A 0x742043F9 b323</code>
 +
 +==== LOCK_MINIMAP_POSITION ====
 +<code cpp>void HUD::LOCK_MINIMAP_POSITION(float x, float y) // 0x1279E861A329E73F 0xB9632A91 b323</code>
 +
 +<code>Locks the minimap to the specified world position.</code>
 +==== UNLOCK_MINIMAP_POSITION ====
 +<code cpp>void HUD::UNLOCK_MINIMAP_POSITION() // 0x3E93E06DB8EF1F30 0x5E8E6F54 b323</code>
 +
 +==== _SET_MINIMAP_ALTITUDE_INDICATOR_LEVEL ====
 +<code cpp>void HUD::_SET_MINIMAP_ALTITUDE_INDICATOR_LEVEL(float altitude, BOOL p1, Any p2) // 0xD201F3FF917A506D 0x0308EDF6 b323</code>
 +
 +<code>Argument must be 0.0f or above 38.0f, or it will be ignored.</code>
 +==== SET_HEALTH_HUD_DISPLAY_VALUES ====
 +<code cpp>void HUD::SET_HEALTH_HUD_DISPLAY_VALUES(int health, int capacity, BOOL wasAdded) // 0x3F5CC444DCAAA8F2 0x7FB6FB2A b323</code>
 +
 +==== SET_MAX_HEALTH_HUD_DISPLAY ====
 +<code cpp>void HUD::SET_MAX_HEALTH_HUD_DISPLAY(int maximumValue) // 0x975D66A0BC17064C 0xF07D8CEF b323</code>
 +
 +==== SET_MAX_ARMOUR_HUD_DISPLAY ====
 +<code cpp>void HUD::SET_MAX_ARMOUR_HUD_DISPLAY(int maximumValue) // 0x06A320535F5F0248 0x827F14DE b323</code>
 +
 +==== SET_BIGMAP_ACTIVE ====
 +<code cpp>void HUD::SET_BIGMAP_ACTIVE(BOOL toggleBigMap, BOOL showFullMap) // 0x231C8F89D0539D8F 0x08EB83D2 b323</code>
 +
 +<code>Toggles the big minimap state like in GTA:Online.</code>
 +==== IS_HUD_COMPONENT_ACTIVE ====
 +<code cpp>BOOL HUD::IS_HUD_COMPONENT_ACTIVE(int id) // 0xBC4C9EA5391ECC0D 0x6214631F b323</code>
 +
 +<code>Full list of components below
 +
 +HUD = 0;
 +HUD_WANTED_STARS = 1;
 +HUD_WEAPON_ICON = 2;
 +HUD_CASH = 3;
 +HUD_MP_CASH = 4;
 +HUD_MP_MESSAGE = 5;
 +HUD_VEHICLE_NAME = 6;
 +HUD_AREA_NAME = 7;
 +HUD_VEHICLE_CLASS = 8;
 +HUD_STREET_NAME = 9;
 +HUD_HELP_TEXT = 10;
 +HUD_FLOATING_HELP_TEXT_1 = 11;
 +HUD_FLOATING_HELP_TEXT_2 = 12;
 +HUD_CASH_CHANGE = 13;
 +HUD_RETICLE = 14;
 +HUD_SUBTITLE_TEXT = 15;
 +HUD_RADIO_STATIONS = 16;
 +HUD_SAVING_GAME = 17;
 +HUD_GAME_STREAM = 18;
 +HUD_WEAPON_WHEEL = 19;
 +HUD_WEAPON_WHEEL_STATS = 20;
 +MAX_HUD_COMPONENTS = 21;
 +MAX_HUD_WEAPONS = 22;
 +MAX_SCRIPTED_HUD_COMPONENTS = 141;</code>
 +==== IS_SCRIPTED_HUD_COMPONENT_ACTIVE ====
 +<code cpp>BOOL HUD::IS_SCRIPTED_HUD_COMPONENT_ACTIVE(int id) // 0xDD100EB17A94FF65 0x2B86F382 b323</code>
 +
 +==== HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME(int id) // 0xE374C498D8BADC14 0x31ABA127 b323</code>
 +
 +==== _SHOW_SCRIPTED_HUD_COMPONENT_THIS_FRAME ====
 +<code cpp>void HUD::_SHOW_SCRIPTED_HUD_COMPONENT_THIS_FRAME(int id) // 0x4F38DCA127DAAEA2  b1734</code>
 +
 +<code>SHOW_*</code>
 +==== IS_SCRIPTED_HUD_COMPONENT_HIDDEN_THIS_FRAME ====
 +<code cpp>BOOL HUD::IS_SCRIPTED_HUD_COMPONENT_HIDDEN_THIS_FRAME(int id) // 0x09C0403ED9A751C2 0xE8C8E535 b323</code>
 +
 +==== HIDE_HUD_COMPONENT_THIS_FRAME ====
 +<code cpp>void HUD::HIDE_HUD_COMPONENT_THIS_FRAME(int id) // 0x6806C51AD12B83B8 0xDB2D0762 b323</code>
 +
 +<code>This function hides various HUD (Heads-up Display) components.
 +Listed below are the integers and the corresponding HUD component.
 +- 1 : WANTED_STARS
 +- 2 : WEAPON_ICON
 +- 3 : CASH
 +- 4 : MP_CASH
 +- 5 : MP_MESSAGE
 +- 6 : VEHICLE_NAME
 +- 7 : AREA_NAME
 +- 8 : VEHICLE_CLASS
 +- 9 : STREET_NAME
 +- 10 : HELP_TEXT
 +- 11 : FLOATING_HELP_TEXT_1
 +- 12 : FLOATING_HELP_TEXT_2
 +- 13 : CASH_CHANGE
 +- 14 : RETICLE
 +- 15 : SUBTITLE_TEXT
 +- 16 : RADIO_STATIONS
 +- 17 : SAVING_GAME
 +- 18 : GAME_STREAM
 +- 19 : WEAPON_WHEEL
 +- 20 : WEAPON_WHEEL_STATS
 +- 21 : HUD_COMPONENTS
 +- 22 : HUD_WEAPONS
 +
 +These integers also work for the `SHOW_HUD_COMPONENT_THIS_FRAME` native, but instead shows the HUD Component.</code>
 +==== SHOW_HUD_COMPONENT_THIS_FRAME ====
 +<code cpp>void HUD::SHOW_HUD_COMPONENT_THIS_FRAME(int id) // 0x0B4DF1FA60C0E664 0x95E1546E b323</code>
 +
 +<code>This function hides various HUD (Heads-up Display) components.
 +Listed below are the integers and the corresponding HUD component.
 +- 1 : WANTED_STARS
 +- 2 : WEAPON_ICON
 +- 3 : CASH
 +- 4 : MP_CASH
 +- 5 : MP_MESSAGE
 +- 6 : VEHICLE_NAME
 +- 7 : AREA_NAME
 +- 8 : VEHICLE_CLASS
 +- 9 : STREET_NAME
 +- 10 : HELP_TEXT
 +- 11 : FLOATING_HELP_TEXT_1
 +- 12 : FLOATING_HELP_TEXT_2
 +- 13 : CASH_CHANGE
 +- 14 : RETICLE
 +- 15 : SUBTITLE_TEXT
 +- 16 : RADIO_STATIONS
 +- 17 : SAVING_GAME
 +- 18 : GAME_STREAM
 +- 19 : WEAPON_WHEEL
 +- 20 : WEAPON_WHEEL_STATS
 +- 21 : HUD_COMPONENTS
 +- 22 : HUD_WEAPONS
 +
 +These integers also work for the `HIDE_HUD_COMPONENT_THIS_FRAME` native, but instead hides the HUD Component.</code>
 +==== _HIDE_AREA_AND_VEHICLE_NAME_THIS_FRAME ====
 +<code cpp>void HUD::_HIDE_AREA_AND_VEHICLE_NAME_THIS_FRAME() // 0xA4DEDE28B1814289 0x52746FE1 b323</code>
 +
 +<code>HIDE_*_THIS_FRAME
 +
 +Hides area and vehicle name HUD components for one frame.</code>
 +==== RESET_RETICULE_VALUES ====
 +<code cpp>void HUD::RESET_RETICULE_VALUES() // 0x12782CE0A636E9F0 0xBE27AA3F b323</code>
 +
 +==== RESET_HUD_COMPONENT_VALUES ====
 +<code cpp>void HUD::RESET_HUD_COMPONENT_VALUES(int id) // 0x450930E616475D0D 0xD15B46DA b323</code>
 +
 +==== SET_HUD_COMPONENT_POSITION ====
 +<code cpp>void HUD::SET_HUD_COMPONENT_POSITION(int id, float x, float y) // 0xAABB1F56E2A17CED 0x2F3A0D15 b323</code>
 +
 +==== GET_HUD_COMPONENT_POSITION ====
 +<code cpp>Vector3 HUD::GET_HUD_COMPONENT_POSITION(int id) // 0x223CA69A8C4417FD 0x080DCED6 b323</code>
 +
 +==== CLEAR_REMINDER_MESSAGE ====
 +<code cpp>void HUD::CLEAR_REMINDER_MESSAGE() // 0xB57D8DD645CFA2CF 0x5BBCC934 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== GET_HUD_SCREEN_POSITION_FROM_WORLD_POSITION ====
 +<code cpp>BOOL HUD::GET_HUD_SCREEN_POSITION_FROM_WORLD_POSITION(float worldX, float worldY, float worldZ, float* screenX, float* screenY) // 0xF9904D11F1ACBEC3 0xFE9A39F8 b323</code>
 +
 +<code>World to relative screen coords, this world to screen will keep the text on screen. Was named _GET_SCREEN_COORD_FROM_WORLD_COORD, but this conflicts with 0x34E82F05DF2974F5. As that hash actually matches GET_SCREEN_COORD_FROM_WORLD_COORD that one supercedes and this one was renamed to _GET_2D_COORD_FROM_3D_COORD</code>
 +==== OPEN_REPORTUGC_MENU ====
 +<code cpp>void HUD::OPEN_REPORTUGC_MENU() // 0x523A590C1A3CC0D3 0x10DE5150 b323</code>
 +
 +<code>Shows a menu for reporting UGC content.</code>
 +==== FORCE_CLOSE_REPORTUGC_MENU ====
 +<code cpp>void HUD::FORCE_CLOSE_REPORTUGC_MENU() // 0xEE4C0E6DBC6F2C6F 0x67649EE0 b323</code>
 +
 +==== IS_REPORTUGC_MENU_OPEN ====
 +<code cpp>BOOL HUD::IS_REPORTUGC_MENU_OPEN() // 0x9135584D09A3437E 0x9D2C94FA b323</code>
 +
 +==== IS_FLOATING_HELP_TEXT_ON_SCREEN ====
 +<code cpp>BOOL HUD::IS_FLOATING_HELP_TEXT_ON_SCREEN(int hudIndex) // 0x2432784ACA090DA4 0x45472FD5 b323</code>
 +
 +==== SET_FLOATING_HELP_TEXT_SCREEN_POSITION ====
 +<code cpp>void HUD::SET_FLOATING_HELP_TEXT_SCREEN_POSITION(int hudIndex, float x, float y) // 0x7679CC1BCEBE3D4C 0x198F32D7 b323</code>
 +
 +==== SET_FLOATING_HELP_TEXT_WORLD_POSITION ====
 +<code cpp>void HUD::SET_FLOATING_HELP_TEXT_WORLD_POSITION(int hudIndex, float x, float y, float z) // 0x784BA7E0ECEB4178 0x93045157 b323</code>
 +
 +==== SET_FLOATING_HELP_TEXT_TO_ENTITY ====
 +<code cpp>void HUD::SET_FLOATING_HELP_TEXT_TO_ENTITY(int hudIndex, Entity entity, float offsetX, float offsetY) // 0xB094BC1DB4018240 0x18B012B7 b323</code>
 +
 +==== SET_FLOATING_HELP_TEXT_STYLE ====
 +<code cpp>void HUD::SET_FLOATING_HELP_TEXT_STYLE(int hudIndex, int p1, int p2, int p3, int p4, int p5) // 0x788E7FD431BD67F1 0x97852A82 b323</code>
 +
 +==== CLEAR_FLOATING_HELP ====
 +<code cpp>void HUD::CLEAR_FLOATING_HELP(int hudIndex, BOOL p1) // 0x50085246ABD3FEFA 0xB181F88F b323</code>
 +
 +==== CREATE_MP_GAMER_TAG_WITH_CREW_COLOR ====
 +<code cpp>void HUD::CREATE_MP_GAMER_TAG_WITH_CREW_COLOR(Player player, const char* username, BOOL pointedClanTag, BOOL isRockstarClan, const char* clanTag, int clanFlag, int r, int g, int b) // 0x6DD05E9D83EFA4C9 0xC969F2D0 b323</code>
 +
 +<code>clanFlag: takes a number 0-5</code>
 +==== IS_MP_GAMER_TAG_MOVIE_ACTIVE ====
 +<code cpp>BOOL HUD::IS_MP_GAMER_TAG_MOVIE_ACTIVE() // 0x6E0EB3EB47C8D7AA 0xEFD2564A b323</code>
 +
 +==== CREATE_FAKE_MP_GAMER_TAG ====
 +<code cpp>int HUD::CREATE_FAKE_MP_GAMER_TAG(Ped ped, const char* username, BOOL pointedClanTag, BOOL isRockstarClan, const char* clanTag, int clanFlag) // 0xBFEFE3321A3F5015 0xF5CD2AA4 b323</code>
 +
 +<code>clanFlag: takes a number 0-5</code>
 +==== REMOVE_MP_GAMER_TAG ====
 +<code cpp>void HUD::REMOVE_MP_GAMER_TAG(int gamerTagId) // 0x31698AA80E0223F8 0x3D081FE4 b323</code>
 +
 +==== IS_MP_GAMER_TAG_ACTIVE ====
 +<code cpp>BOOL HUD::IS_MP_GAMER_TAG_ACTIVE(int gamerTagId) // 0x4E929E7A5796FD26 0x60118951 b323</code>
 +
 +==== IS_MP_GAMER_TAG_FREE ====
 +<code cpp>BOOL HUD::IS_MP_GAMER_TAG_FREE(int gamerTagId) // 0x595B5178E412E199 0x63959059 b323</code>
 +
 +==== SET_MP_GAMER_TAG_VISIBILITY ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_VISIBILITY(int gamerTagId, int component, BOOL toggle, Any p3) // 0x63BB75ABEDC1F6A0 0xD41DF479 b323</code>
 +
 +<code>enum eMpGamerTagComponent
 +{
 + MP_TAG_GAMER_NAME,
 + MP_TAG_CREW_TAG,
 + MP_TAG_HEALTH_ARMOUR,
 + MP_TAG_BIG_TEXT,
 + MP_TAG_AUDIO_ICON,
 + MP_TAG_USING_MENU,
 + MP_TAG_PASSIVE_MODE,
 + MP_TAG_WANTED_STARS,
 + MP_TAG_DRIVER,
 + MP_TAG_CO_DRIVER,
 + MP_TAG_TAGGED,
 + MP_TAG_GAMER_NAME_NEARBY,
 + MP_TAG_ARROW,
 + MP_TAG_PACKAGES,
 + MP_TAG_INV_IF_PED_FOLLOWING,
 + MP_TAG_RANK_TEXT,
 + MP_TAG_TYPING,
 + MP_TAG_BAG_LARGE,
 + MP_TAG_ARROW,
 + MP_TAG_GANG_CEO,
 + MP_TAG_GANG_BIKER,
 + MP_TAG_BIKER_ARROW,
 + MP_TAG_MC_ROLE_PRESIDENT,
 + MP_TAG_MC_ROLE_VICE_PRESIDENT,
 + MP_TAG_MC_ROLE_ROAD_CAPTAIN,
 + MP_TAG_MC_ROLE_SARGEANT,
 + MP_TAG_MC_ROLE_ENFORCER,
 + MP_TAG_MC_ROLE_PROSPECT,
 + MP_TAG_TRANSMITTER,
 + MP_TAG_BOMB
 +};</code>
 +==== _SET_MP_GAMER_TAG_ENABLED ====
 +<code cpp>void HUD::_SET_MP_GAMER_TAG_ENABLED(int gamerTagId, BOOL toggle) // 0xEE76FF7E6A0166B0 0x767DED29 b323</code>
 +
 +==== _SET_MP_GAMER_TAG_ICONS ====
 +<code cpp>void HUD::_SET_MP_GAMER_TAG_ICONS(int gamerTagId, BOOL toggle) // 0xA67F9C46D612B6F1 0xB01A5434 b323</code>
 +
 +<code>Displays a bunch of icons above the players name, and level, and their name twice</code>
 +==== _SET_MP_GAMER_HEALTH_BAR_DISPLAY ====
 +<code cpp>void HUD::_SET_MP_GAMER_HEALTH_BAR_DISPLAY(int gamerTagId, BOOL toggle) // 0xD29EC58C2F6B5014  b1365</code>
 +
 +==== _SET_MP_GAMER_HEALTH_BAR_MAX ====
 +<code cpp>void HUD::_SET_MP_GAMER_HEALTH_BAR_MAX(int gamerTagId, int value, int maximumValue) // 0x1563FE35E9928E67  b1365</code>
 +
 +==== SET_MP_GAMER_TAG_COLOUR ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_COLOUR(int gamerTagId, int component, int hudColorIndex) // 0x613ED644950626AE 0x7E3AA40A b323</code>
 +
 +<code>Sets a gamer tag's component colour
 +
 +gamerTagId is obtained using for example CREATE_FAKE_MP_GAMER_TAG
 +Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.</code>
 +==== SET_MP_GAMER_TAG_HEALTH_BAR_COLOUR ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_HEALTH_BAR_COLOUR(int gamerTagId, int hudColorIndex) // 0x3158C77A7E888AB4 0x5777EC77 b323</code>
 +
 +<code>Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.
 +Should be enabled as flag (2). Has 0 opacity by default.
 +
 +- This was _SET_MP_GAMER_TAG_HEALTH_BAR_COLOR,
 +-> Rockstar use the EU spelling of 'color' so I hashed the same name with COLOUR and it came back as the correct hash, so it has been corrected above.</code>
 +==== SET_MP_GAMER_TAG_ALPHA ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_ALPHA(int gamerTagId, int component, int alpha) // 0xD48FE545CD46F857 0xF4418611 b323</code>
 +
 +<code>Sets flag's sprite transparency. 0-255.</code>
 +==== SET_MP_GAMER_TAG_WANTED_LEVEL ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_WANTED_LEVEL(int gamerTagId, int wantedlvl) // 0xCF228E2AA03099C3 0x0EBB003F b323</code>
 +
 +<code>displays wanted star above head</code>
 +==== _SET_MP_GAMER_TAG_UNK ====
 +<code cpp>void HUD::_SET_MP_GAMER_TAG_UNK(int gamerTagId, int p1) // 0x9C16459B2324B2CF  b877</code>
 +
 +==== SET_MP_GAMER_TAG_NAME ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_NAME(int gamerTagId, const char* string) // 0xDEA2B8283BAA3944 0x627A559B b323</code>
 +
 +==== _IS_VALID_MP_GAMER_TAG_MOVIE ====
 +<code cpp>BOOL HUD::_IS_VALID_MP_GAMER_TAG_MOVIE(int gamerTagId) // 0xEB709A36958ABE0D 0xF11414C4 b323</code>
 +
 +<code>IS_*</code>
 +==== SET_MP_GAMER_TAG_BIG_TEXT ====
 +<code cpp>void HUD::SET_MP_GAMER_TAG_BIG_TEXT(int gamerTagId, const char* string) // 0x7B7723747CCB55B6 0x939218AB b323</code>
 +
 +==== GET_CURRENT_WEBPAGE_ID ====
 +<code cpp>int HUD::GET_CURRENT_WEBPAGE_ID() // 0x01A358D9128B7A86 0xAB5B7C18 b323</code>
 +
 +==== GET_CURRENT_WEBSITE_ID ====
 +<code cpp>int HUD::GET_CURRENT_WEBSITE_ID() // 0x97D47996FC48CBAD 0x42A55B14 b323</code>
 +
 +==== GET_GLOBAL_ACTIONSCRIPT_FLAG ====
 +<code cpp>int HUD::GET_GLOBAL_ACTIONSCRIPT_FLAG(int flagIndex) // 0xE3B05614DCE1D014 0xD217EE7E b323</code>
 +
 +<code>Returns the ActionScript flagValue.
 +ActionScript flags are global flags that scaleforms use
 +Flags found during testing
 +0: Returns 1 if the web_browser keyboard is open, otherwise 0
 +1: Returns 1 if the player has clicked back twice on the opening page, otherwise 0 (web_browser)
 +2: Returns how many links the player has clicked in the web_browser scaleform, returns 0 when the browser gets closed
 +9: Returns the current selection on the mobile phone scaleform
 +
 +There are 20 flags in total.</code>
 +==== RESET_GLOBAL_ACTIONSCRIPT_FLAG ====
 +<code cpp>void HUD::RESET_GLOBAL_ACTIONSCRIPT_FLAG(int flagIndex) // 0xB99C4E4D9499DF29 0x4C4C10CF b323</code>
 +
 +==== _IS_WARNING_MESSAGE_ACTIVE_2 ====
 +<code cpp>BOOL HUD::_IS_WARNING_MESSAGE_ACTIVE_2() // 0xAF42195A42C63BBA  b323</code>
 +
 +<code>IS_WARNING_MESSAGE_*</code>
 +==== SET_WARNING_MESSAGE ====
 +<code cpp>void HUD::SET_WARNING_MESSAGE(const char* titleMsg, int flags, const char* promptMsg, BOOL p3, int p4, const char* p5, const char* p6, BOOL showBackground, Any p8) // 0x7B1776B3B53F8D74 0xBE699BDE b323</code>
 +
 +<code>You can only use text entries. No custom text.
 +
 +Example: SET_WARNING_MESSAGE("t20", 3, "adder", false, -1, 0, 0, true);</code>
 +==== SET_WARNING_MESSAGE_WITH_HEADER ====
 +<code cpp>void HUD::SET_WARNING_MESSAGE_WITH_HEADER(const char* entryHeader, const char* entryLine1, int instructionalKey, const char* entryLine2, BOOL p4, Any p5, Any* showBackground, Any* p7, BOOL p8, Any p9) // 0xDC38CC1E35B6A5D7 0x2DB9EAB5 b323</code>
 +
 +<code>Shows a warning message on screen with a header.
 +Note: You can only use text entries. No custom text. You can recreate this easily with scaleforms.
 +Example: https://i.imgur.com/ITJt8bJ.png</code>
 +==== SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS ====
 +<code cpp>void HUD::SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS(const char* entryHeader, const char* entryLine1, Any instructionalKey, const char* entryLine2, BOOL p4, Any p5, Any p6, Any* p7, Any* p8, BOOL p9, Any p10) // 0x701919482C74B5AB 0x749929D3 b323</code>
 +
 +<code>You can only use text entries. No custom text.</code>
 +==== _SET_WARNING_MESSAGE_WITH_HEADER_UNK ====
 +<code cpp>void HUD::_SET_WARNING_MESSAGE_WITH_HEADER_UNK(const char* entryHeader, const char* entryLine1, int flags, const char* entryLine2, BOOL p4, Any p5, Any* p6, Any* p7, BOOL showBg, Any p9, Any p10) // 0x38B55259C2E078ED  b1493</code>
 +
 +==== _SET_WARNING_MESSAGE_WITH_ALERT ====
 +<code cpp>void HUD::_SET_WARNING_MESSAGE_WITH_ALERT(const char* labelTitle, const char* labelMessage, int p2, int p3, const char* labelMessage2, BOOL p5, int p6, int p7, const char* p8, const char* p9, BOOL background, int errorCode) // 0x15803FEC3B9A872B  b573</code>
 +
 +<code>labelTitle: Label of the alert's title.
 +labelMsg: Label of the alert's message.
 +p2: This is an enum, check the description for a list.
 +p3: This is an enum, check the description for a list.
 +labelMsg2: Label of another message line
 +p5: usually 0
 +p6: usually -1
 +p7: usually 0
 +p8: unknown label
 +p9: unknown label
 +background: Set to anything other than 0 or false (even any string) and it will draw a background. Setting it to 0 or false will draw no background.
 +errorCode: Error code, shown at the bottom left if set to value other than 0.
 +
 +instructionalKey enum list:
 +Buttons = {
 +      Empty = 0,
 +      Select = 1, -- (RETURN)
 +      Ok = 2, -- (RETURN)
 +      Yes = 4, -- (RETURN)
 +      Back = 8, -- (ESC)
 +      Cancel = 16, -- (ESC)
 +      No = 32, -- (ESC)
 +      RetrySpace = 64, -- (SPACE)
 +      Restart = 128, -- (SPACE)
 +      Skip = 256, -- (SPACE)
 +      Quit = 512, -- (ESC)
 +      Adjust = 1024, -- (ARROWS)
 +      SpaceKey = 2048, -- (SPACE)
 +      Share = 4096, -- (SPACE)
 +      SignIn = 8192, -- (SPACE)
 +      Continue = 16384, -- (RETURN)
 +      AdjustLeftRight = 32768, -- (SCROLL L/R)
 +      AdjustUpDown = 65536, -- (SCROLL U/D)
 +      Overwrite = 131072, -- (SPACE)
 +      SocialClubSignup = 262144, -- (RETURN)
 +      Confirm = 524288, -- (RETURN)
 +      Queue = 1048576, -- (RETURN)
 +      RetryReturn = 2097152, -- (RETURN)
 +      BackEsc = 4194304, -- (ESC)
 +      SocialClub = 8388608, -- (RETURN)
 +      Spectate = 16777216, -- (SPACE)
 +      OkEsc = 33554432, -- (ESC)
 +      CancelTransfer = 67108864, -- (ESC)
 +      LoadingSpinner = 134217728,
 +      NoReturnToGTA = 268435456, -- (ESC)
 +      CancelEsc = 536870912, -- (ESC)
 +}
 +
 +Alt = {
 +      Empty = 0,
 +      No = 1, -- (SPACE)
 +      Host = 2, -- (ESC)
 +      SearchForJob = 4, -- (RETURN)
 +      ReturnKey = 8, -- (TURN)
 +      Freemode = 16, -- (ESC)
 +}
 +
 +Example: https://i.imgur.com/TvmNF4k.png</code>
 +==== _GET_WARNING_MESSAGE_TITLE_HASH ====
 +<code cpp>Hash HUD::_GET_WARNING_MESSAGE_TITLE_HASH() // 0x81DF9ABA6C83DFF9  b1290</code>
 +
 +<code>Has to do with the confirmation overlay (E.g. confirm exit)</code>
 +==== _SET_WARNING_MESSAGE_LIST_ROW ====
 +<code cpp>BOOL HUD::_SET_WARNING_MESSAGE_LIST_ROW(int index, const char* name, int cash, int rp, int lvl, int colour) // 0x0C5A80A9E096D529  b323</code>
 +
 +<code>Some sort of list displayed in a warning message. Yet unknown how to prevent repeating.
 +Param names copied from the corresponding scaleform function "SET_LIST_ROW".
 +Example: https://i.imgur.com/arKvOYx.png</code>
 +==== _0xDAF87174BE7454FF ====
 +<code cpp>BOOL HUD::_0xDAF87174BE7454FF(Any p0) // 0xDAF87174BE7454FF  b323</code>
 +
 +==== _REMOVE_WARNING_MESSAGE_LIST_ITEMS ====
 +<code cpp>void HUD::_REMOVE_WARNING_MESSAGE_LIST_ITEMS() // 0x6EF54AB721DC6242  b323</code>
 +
 +==== IS_WARNING_MESSAGE_ACTIVE ====
 +<code cpp>BOOL HUD::IS_WARNING_MESSAGE_ACTIVE() // 0xE18B138FABC53103 0x94C834AD b323</code>
 +
 +==== CLEAR_DYNAMIC_PAUSE_MENU_ERROR_MESSAGE ====
 +<code cpp>void HUD::CLEAR_DYNAMIC_PAUSE_MENU_ERROR_MESSAGE() // 0x7792424AA0EAC32E 0x2F9A309C b323</code>
 +
 +==== _RACE_GALLERY_FULLSCREEN ====
 +<code cpp>void HUD::_RACE_GALLERY_FULLSCREEN(BOOL toggle) // 0x5354C5BA2EA868A4 0xE4FD20D8 b323</code>
 +
 +<code>If toggle is true, the map is shown in full screen
 +If toggle is false, the map is shown in normal mode</code>
 +==== _RACE_GALLERY_NEXT_BLIP_SPRITE ====
 +<code cpp>void HUD::_RACE_GALLERY_NEXT_BLIP_SPRITE(int spriteId) // 0x1EAE6DD17B7A5EFA 0x13E7A5A9 b323</code>
 +
 +<code>Sets the sprite of the next BLIP_GALLERY blip, values used in the native scripts: 143 (ObjectiveBlue), 144 (ObjectiveGreen), 145 (ObjectiveRed), 146 (ObjectiveYellow).</code>
 +==== _RACE_GALLERY_ADD_BLIP ====
 +<code cpp>Any HUD::_RACE_GALLERY_ADD_BLIP(float x, float y, float z) // 0x551DF99658DB6EE8 0x786CA0A2 b323</code>
 +
 +<code>Add a BLIP_GALLERY at the specific coordinate. Used in fm_maintain_transition_players to display race track points.</code>
 +==== _CLEAR_RACE_GALLERY_BLIPS ====
 +<code cpp>void HUD::_CLEAR_RACE_GALLERY_BLIPS() // 0x2708FC083123F9FF 0xCBEC9369 b323</code>
 +
 +==== FORCE_SONAR_BLIPS_THIS_FRAME ====
 +<code cpp>Any HUD::FORCE_SONAR_BLIPS_THIS_FRAME() // 0x1121BFA1A1A522A8 0x3F4AFB13 b323</code>
 +
 +<code>Doesn't actually return anything.</code>
 +==== _GET_NORTH_RADAR_BLIP ====
 +<code cpp>Blip HUD::_GET_NORTH_RADAR_BLIP() // 0x3F0CF9CB7E589B88  b463</code>
 +
 +==== DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS ====
 +<code cpp>void HUD::DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS(BOOL toggle) // 0x82CEDC33687E1F50 0x2F28F0A6 b323</code>
 +
 +<code>Toggles whether or not name labels are shown on the expanded minimap next to player blips, like in GTA:O.
 +Doesn't need to be called every frame.
 +Preview: https://i.imgur.com/DfqKWfJ.png
 +
 +Make sure to call SET_BLIP_CATEGORY with index 7 for this to work on the desired blip.</code>
 +==== _0x211C4EF450086857 ====
 +<code cpp>void HUD::_0x211C4EF450086857() // 0x211C4EF450086857 0x801D0D86 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== _0xBF4F34A85CA2970C ====
 +<code cpp>void HUD::_0xBF4F34A85CA2970C() // 0xBF4F34A85CA2970C 0x317775DF b323</code>
 +
 +==== ACTIVATE_FRONTEND_MENU ====
 +<code cpp>void HUD::ACTIVATE_FRONTEND_MENU(Hash menuhash, BOOL togglePause, int component) // 0xEF01D36B9C9D0C7B 0x01D83872 b323</code>
 +
 +<code>Does stuff like this:
 +gyazo.com/7fcb78ea3520e3dbc5b2c0c0f3712617
 +
 +Example:
 +int GetHash = GET_HASH_KEY("fe_menu_version_corona_lobby");
 +ACTIVATE_FRONTEND_MENU(GetHash, 0, -1);
 +
 +BOOL p1 is a toggle to define the game in pause.
 +int p2 is unknown but -1 always works, not sure why though.
 +
 +[30/03/2017] ins1de :
 +
 +the int p2 is actually a component variable. When the pause menu is visible, it opens the tab related to it.
 +
 +Example : Function.Call(Hash.ACTIVATE_FRONTEND_MENU,-1171018317, 0, 42);
 +Result : Opens the "Online" tab without pausing the menu, with -1 it opens the map.Below is a list of all known Frontend Menu Hashes.
 +- FE_MENU_VERSION_SP_PAUSE
 +- FE_MENU_VERSION_MP_PAUSE
 +- FE_MENU_VERSION_CREATOR_PAUSE
 +- FE_MENU_VERSION_CUTSCENE_PAUSE
 +- FE_MENU_VERSION_SAVEGAME
 +- FE_MENU_VERSION_PRE_LOBBY
 +- FE_MENU_VERSION_LOBBY
 +- FE_MENU_VERSION_MP_CHARACTER_SELECT
 +- FE_MENU_VERSION_MP_CHARACTER_CREATION
 +- FE_MENU_VERSION_EMPTY
 +- FE_MENU_VERSION_EMPTY_NO_BACKGROUND
 +- FE_MENU_VERSION_TEXT_SELECTION
 +- FE_MENU_VERSION_CORONA
 +- FE_MENU_VERSION_CORONA_LOBBY
 +- FE_MENU_VERSION_CORONA_JOINED_PLAYERS
 +- FE_MENU_VERSION_CORONA_INVITE_PLAYERS
 +- FE_MENU_VERSION_CORONA_INVITE_FRIENDS
 +- FE_MENU_VERSION_CORONA_INVITE_CREWS
 +- FE_MENU_VERSION_CORONA_INVITE_MATCHED_PLAYERS
 +- FE_MENU_VERSION_CORONA_INVITE_LAST_JOB_PLAYERS
 +- FE_MENU_VERSION_CORONA_RACE
 +- FE_MENU_VERSION_CORONA_BETTING
 +- FE_MENU_VERSION_JOINING_SCREEN
 +- FE_MENU_VERSION_LANDING_MENU
 +- FE_MENU_VERSION_LANDING_KEYMAPPING_MENU</code>
 +==== RESTART_FRONTEND_MENU ====
 +<code cpp>void HUD::RESTART_FRONTEND_MENU(Hash menuHash, int p1) // 0x10706DC6AD2D49C0 0xB07DAF98 b323</code>
 +
 +<code>Before using this native click the native above and look at the decription.
 +
 +Example:
 +int GetHash = Function.Call<int>(Hash.GET_HASH_KEY, "fe_menu_version_corona_lobby");
 +Function.Call(Hash.ACTIVATE_FRONTEND_MENU, GetHash, 0, -1);
 +Function.Call(Hash.RESTART_FRONTEND_MENU(GetHash, -1);
 +
 +This native refreshes the frontend menu.
 +
 +p1 = Hash of Menu
 +p2 = Unknown but always works with -1.</code>
 +==== GET_CURRENT_FRONTEND_MENU_VERSION ====
 +<code cpp>Hash HUD::GET_CURRENT_FRONTEND_MENU_VERSION() // 0x2309595AD6145265 0x33D6868F b323</code>
 +
 +<code>if (HUD::GET_CURRENT_FRONTEND_MENU_VERSION() == joaat("fe_menu_version_empty_no_background"))</code>
 +==== SET_PAUSE_MENU_ACTIVE ====
 +<code cpp>void HUD::SET_PAUSE_MENU_ACTIVE(BOOL toggle) // 0xDF47FC56C71569CF 0x1DCD878E b323</code>
 +
 +==== DISABLE_FRONTEND_THIS_FRAME ====
 +<code cpp>void HUD::DISABLE_FRONTEND_THIS_FRAME() // 0x6D3465A73092F0E6 0xD86A029E b323</code>
 +
 +==== SUPPRESS_FRONTEND_RENDERING_THIS_FRAME ====
 +<code cpp>void HUD::SUPPRESS_FRONTEND_RENDERING_THIS_FRAME() // 0xBA751764F0821256 0x7F349900 b323</code>
 +
 +==== _ALLOW_PAUSE_MENU_WHEN_DEAD_THIS_FRAME ====
 +<code cpp>void HUD::_ALLOW_PAUSE_MENU_WHEN_DEAD_THIS_FRAME() // 0xCC3FDDED67BCFC63 0x630CD8EE b323</code>
 +
 +<code>Allows opening the pause menu this frame, when the player is dead.</code>
 +==== SET_FRONTEND_ACTIVE ====
 +<code cpp>void HUD::SET_FRONTEND_ACTIVE(BOOL active) // 0x745711A75AB09277 0x81E1AD32 b323</code>
 +
 +==== IS_PAUSE_MENU_ACTIVE ====
 +<code cpp>BOOL HUD::IS_PAUSE_MENU_ACTIVE() // 0xB0034A223497FFCB 0xD3600591 b323</code>
 +
 +==== _0x2F057596F2BD0061 ====
 +<code cpp>BOOL HUD::_0x2F057596F2BD0061() // 0x2F057596F2BD0061 0xC85C4487 b323</code>
 +
 +<code>Returns something related to the store.
 +
 +IS_S*
 +
 +IS_STORE_EXIT_PURCHASE_CAPABILITY_ACTIVATED ?</code>
 +==== GET_PAUSE_MENU_STATE ====
 +<code cpp>int HUD::GET_PAUSE_MENU_STATE() // 0x272ACD84970869C5 0x92F50134 b323</code>
 +
 +<code>Returns:
 +
 +0
 +5
 +10
 +15
 +20
 +25
 +30
 +35
 +</code>
 +==== _0x5BFF36D6ED83E0AE ====
 +<code cpp>Vector3 HUD::_0x5BFF36D6ED83E0AE() // 0x5BFF36D6ED83E0AE  b323</code>
 +
 +<code>GET_PAUSE_MENU_*</code>
 +==== IS_PAUSE_MENU_RESTARTING ====
 +<code cpp>BOOL HUD::IS_PAUSE_MENU_RESTARTING() // 0x1C491717107431C7 0x3C4CF4D9 b323</code>
 +
 +==== _LOG_DEBUG_INFO ====
 +<code cpp>void HUD::_LOG_DEBUG_INFO(const char* p0) // 0x2162C446DFDF38FD 0x2DFD35C7 b323</code>
 +
 +<code>Not present in retail version of the game, actual definiton seems to be
 +_LOG_DEBUG_INFO(const char* category, const char* debugText);</code>
 +==== _0x77F16B447824DA6C ====
 +<code cpp>void HUD::_0x77F16B447824DA6C(Any p0) // 0x77F16B447824DA6C 0x0A89336C b323</code>
 +
 +==== _0xCDCA26E80FAECB8F ====
 +<code cpp>void HUD::_0xCDCA26E80FAECB8F() // 0xCDCA26E80FAECB8F 0xC84BE309 b323</code>
 +
 +==== _0x2DE6C5E2E996F178 ====
 +<code cpp>void HUD::_0x2DE6C5E2E996F178(Any p0) // 0x2DE6C5E2E996F178  b372</code>
 +
 +==== PAUSE_MENU_ACTIVATE_CONTEXT ====
 +<code cpp>void HUD::PAUSE_MENU_ACTIVATE_CONTEXT(Hash contextHash) // 0xDD564BDD0472C936 0x9FE8FD5E b323</code>
 +
 +<code>Activates the specified frontend menu context.
 +pausemenu.xml defines some specific menu options using 'context'. Context is basically a 'condition'
 +The `*ALL*` part of the context means that whatever is being defined, will be active when any or all of those conditions after `*ALL*` are met.
 +The `*NONE*` part of the context section means that whatever is being defined, will NOT be active if any or all of the conditions after `*NONE*` are met.
 +This basically allows you to hide certain menu sections, or things like instructional buttons.</code>
 +==== PAUSE_MENU_DEACTIVATE_CONTEXT ====
 +<code cpp>void HUD::PAUSE_MENU_DEACTIVATE_CONTEXT(Hash contextHash) // 0x444D8CF241EC25C5 0x0029046E b323</code>
 +
 +==== PAUSE_MENU_IS_CONTEXT_ACTIVE ====
 +<code cpp>BOOL HUD::PAUSE_MENU_IS_CONTEXT_ACTIVE(Hash contextHash) // 0x84698AB38D0C6636 0xC51BC42F b323</code>
 +
 +==== PAUSE_MENU_IS_CONTEXT_MENU_ACTIVE ====
 +<code cpp>Any HUD::PAUSE_MENU_IS_CONTEXT_MENU_ACTIVE() // 0x2A25ADC48F87841F 0x016D7AF9 b323</code>
 +
 +==== _0xDE03620F8703A9DF ====
 +<code cpp>Any HUD::_0xDE03620F8703A9DF() // 0xDE03620F8703A9DF  b323</code>
 +
 +==== _0x359AF31A4B52F5ED ====
 +<code cpp>Any HUD::_0x359AF31A4B52F5ED() // 0x359AF31A4B52F5ED  b323</code>
 +
 +==== _0x13C4B962653A5280 ====
 +<code cpp>Any HUD::_0x13C4B962653A5280() // 0x13C4B962653A5280  b323</code>
 +
 +==== _0xC8E1071177A23BE5 ====
 +<code cpp>BOOL HUD::_0xC8E1071177A23BE5(Any* p0, Any* p1, Any* p2) // 0xC8E1071177A23BE5  b323</code>
 +
 +==== _0x4895BDEA16E7C080 ====
 +<code cpp>void HUD::_0x4895BDEA16E7C080(int p0) // 0x4895BDEA16E7C080 0x15B24768 b323</code>
 +
 +==== PAUSE_MENU_SET_BUSY_SPINNER ====
 +<code cpp>void HUD::PAUSE_MENU_SET_BUSY_SPINNER(BOOL p0, Any p1, Any p2) // 0xC78E239AC5B2DDB9 0x6C67131A b323</code>
 +
 +==== _0xF06EBB91A81E09E3 ====
 +<code cpp>void HUD::_0xF06EBB91A81E09E3(BOOL p0) // 0xF06EBB91A81E09E3 0x11D09737 b323</code>
 +
 +==== IS_FRONTEND_READY_FOR_CONTROL ====
 +<code cpp>BOOL HUD::IS_FRONTEND_READY_FOR_CONTROL() // 0x3BAB9A4E4F2FF5C7 0xD3BF3ABD b323</code>
 +
 +==== TAKE_CONTROL_OF_FRONTEND ====
 +<code cpp>void HUD::TAKE_CONTROL_OF_FRONTEND() // 0xEC9264727EEC0F28 0xC06B763D b323</code>
 +
 +<code>Disables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard. Not sure about controller. Does not disable mouse controls. No need to call this every tick.
 +
 +To enable the keys again, use `0x14621BB1DF14E2B2`.</code>
 +==== RELEASE_CONTROL_OF_FRONTEND ====
 +<code cpp>void HUD::RELEASE_CONTROL_OF_FRONTEND() // 0x14621BB1DF14E2B2 0xB9392CE7 b323</code>
 +
 +<code>Enables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard if they were disabled using the native below.
 +To disable the keys, use `0xEC9264727EEC0F28`</code>
 +==== _0x66E7CB63C97B7D20 ====
 +<code cpp>Any HUD::_0x66E7CB63C97B7D20() // 0x66E7CB63C97B7D20 0x92DAFA78 b323</code>
 +
 +==== _0x593FEAE1F73392D4 ====
 +<code cpp>Any HUD::_0x593FEAE1F73392D4() // 0x593FEAE1F73392D4 0x22CA9F2A b323</code>
 +
 +==== IS_NAVIGATING_MENU_CONTENT ====
 +<code cpp>Any HUD::IS_NAVIGATING_MENU_CONTENT() // 0x4E3CD0EF8A489541 0xDA7951A2 b323</code>
 +
 +==== _0xF284AC67940C6812 ====
 +<code cpp>Any HUD::_0xF284AC67940C6812() // 0xF284AC67940C6812 0x7D95AFFF b323</code>
 +
 +==== _0x2E22FEFA0100275E ====
 +<code cpp>BOOL HUD::_0x2E22FEFA0100275E() // 0x2E22FEFA0100275E 0x96863460 b323</code>
 +
 +<code>Returns true when the menu state(?) changed this frame.
 +HAS_*? _GET_MENU_STATE_CHANGED_THIS_FRAME?</code>
 +==== _0x0CF54F20DE43879C ====
 +<code cpp>void HUD::_0x0CF54F20DE43879C(Any p0) // 0x0CF54F20DE43879C  b323</code>
 +
 +==== _GET_PAUSE_MENU_SELECTION ====
 +<code cpp>void HUD::_GET_PAUSE_MENU_SELECTION(int* lastItemMenuId, int* selectedItemUniqueId) // 0x36C1451A88A09630 0x8543AAC8 b323</code>
 +
 +==== _GET_PAUSE_MENU_SELECTION_DATA ====
 +<code cpp>void HUD::_GET_PAUSE_MENU_SELECTION_DATA(int* lastItemMenuId, int* selectedItemMenuId, int* selectedItemUniqueId) // 0x7E17BE53E1AAABAF 0x6025AA2F b323</code>
 +
 +<code>lastItemMenuId: this is the menuID of the last selected item minus 1000 (lastItem.menuID - 1000)
 +selectedItemMenuId: same as lastItemMenuId except for the currently selected menu item
 +selectedItemUniqueId: this is uniqueID of the currently selected menu item
 +
 +when the pausemenu is closed:
 +lastItemMenuId = -1
 +selectedItemMenuId = -1
 +selectedItemUniqueId = 0
 +
 +when the header gains focus:
 +lastItemMenuId updates as normal or 0 if the pausemenu was just opened
 +selectedItemMenuId becomes a unique id for the pausemenu page that focus was taken from (?) or 0 if the pausemenu was just opened
 +selectedItemUniqueId = -1
 +
 +when focus is moved from the header to a pausemenu page:
 +lastItemMenuId becomes a unique id for the pausemenu page that focus was moved to (?)
 +selectedItemMenuId = -1
 +selectedItemUniqueId updates as normal</code>
 +==== _0xA238192F33110615 ====
 +<code cpp>BOOL HUD::_0xA238192F33110615(int* p0, int* p1, int* p2) // 0xA238192F33110615 0x46794EB2 b323</code>
 +
 +==== GET_MENU_PED_INT_STAT ====
 +<code cpp>BOOL HUD::GET_MENU_PED_INT_STAT(Any p0, Any* p1) // 0xEF4CED81CEBEDC6D 0x4370999E b323</code>
 +
 +==== _0xCA6B2F7CE32AB653 ====
 +<code cpp>BOOL HUD::_0xCA6B2F7CE32AB653(Any p0, Any* p1, Any p2) // 0xCA6B2F7CE32AB653  b323</code>
 +
 +==== GET_MENU_PED_MASKED_INT_STAT ====
 +<code cpp>BOOL HUD::GET_MENU_PED_MASKED_INT_STAT(Any p0, Any* p1, Any p2, Any p3) // 0x90A6526CF0381030 0xD6CC4766 b323</code>
 +
 +==== _0x24A49BEAF468DC90 ====
 +<code cpp>BOOL HUD::_0x24A49BEAF468DC90(Any p0, Any* p1, Any p2, Any p3, Any p4) // 0x24A49BEAF468DC90  b323</code>
 +
 +==== GET_MENU_PED_FLOAT_STAT ====
 +<code cpp>BOOL HUD::GET_MENU_PED_FLOAT_STAT(Any p0, float* p1) // 0x5FBD7095FE7AE57F 0x51972B04 b323</code>
 +
 +==== _0x8F08017F9D7C47BD ====
 +<code cpp>BOOL HUD::_0x8F08017F9D7C47BD(Any p0, Any* p1, Any p2) // 0x8F08017F9D7C47BD  b323</code>
 +
 +==== GET_MENU_PED_BOOL_STAT ====
 +<code cpp>BOOL HUD::GET_MENU_PED_BOOL_STAT(Hash p0, Any* p1) // 0x052991E59076E4E4 0xD43BB56D b323</code>
 +
 +<code>p0 was always 0xAE2602A3.</code>
 +==== CLEAR_PED_IN_PAUSE_MENU ====
 +<code cpp>void HUD::CLEAR_PED_IN_PAUSE_MENU() // 0x5E62BE5DC58E9E06 0x28058ACF b323</code>
 +
 +==== GIVE_PED_TO_PAUSE_MENU ====
 +<code cpp>void HUD::GIVE_PED_TO_PAUSE_MENU(Ped ped, int p1) // 0xAC0BFBDC3BE00E14 0x2AD2C9CE b323</code>
 +
 +<code>p1 is either 1 or 2 in the PC scripts.</code>
 +==== SET_PAUSE_MENU_PED_LIGHTING ====
 +<code cpp>void HUD::SET_PAUSE_MENU_PED_LIGHTING(BOOL state) // 0x3CA6050692BC61B0 0x127310EB b323</code>
 +
 +<code>Toggles the light state for the pause menu ped in frontend menus.
 +
 +This is used by R* in combination with `SET_PAUSE_MENU_PED_SLEEP_STATE` to toggle the "offline" or "online" state in the "friends" tab of the pause menu in GTA Online.
 +
 +
 +Example:
 +Lights On: https://vespura.com/hi/i/2019-04-01_16-09_540ee_1015.png
 +Lights Off: https://vespura.com/hi/i/2019-04-01_16-10_8b5e7_1016.png</code>
 +==== SET_PAUSE_MENU_PED_SLEEP_STATE ====
 +<code cpp>void HUD::SET_PAUSE_MENU_PED_SLEEP_STATE(BOOL state) // 0xECF128344E9FF9F1 0x8F45D327 b323</code>
 +
 +<code>Toggles the pause menu ped sleep state for frontend menus.
 +
 +Example: https://vespura.com/hi/i/2019-04-01_15-51_8ed38_1014.gif
 +
 +`state` 0 will make the ped slowly fall asleep, 1 will slowly wake the ped up.</code>
 +==== OPEN_ONLINE_POLICIES_MENU ====
 +<code cpp>void HUD::OPEN_ONLINE_POLICIES_MENU() // 0x805D7CBB36FD6C4C 0x19FCBBB2 b323</code>
 +
 +==== _0xF13FE2A80C05C561 ====
 +<code cpp>BOOL HUD::_0xF13FE2A80C05C561() // 0xF13FE2A80C05C561 0x850690FF b323</code>
 +
 +==== IS_ONLINE_POLICIES_MENU_ACTIVE ====
 +<code cpp>BOOL HUD::IS_ONLINE_POLICIES_MENU_ACTIVE() // 0x6F72CD94F7B5B68C 0x9D4934F4 b323</code>
 +
 +<code>Returns the same as IS_SOCIAL_CLUB_ACTIVE</code>
 +==== OPEN_SOCIAL_CLUB_MENU ====
 +<code cpp>void HUD::OPEN_SOCIAL_CLUB_MENU() // 0x75D3691713C3B05A 0x57218529 b323</code>
 +
 +<code>Uses the `SOCIAL_CLUB2` scaleform.</code>
 +==== CLOSE_SOCIAL_CLUB_MENU ====
 +<code cpp>void HUD::CLOSE_SOCIAL_CLUB_MENU() // 0xD2B32BE3FC1626C6 0x5F86AA39 b323</code>
 +
 +==== SET_SOCIAL_CLUB_TOUR ====
 +<code cpp>void HUD::SET_SOCIAL_CLUB_TOUR(const char* name) // 0x9E778248D6685FE0 0x7AD67C95 b323</code>
 +
 +<code>HUD::SET_SOCIAL_CLUB_TOUR("Gallery");
 +HUD::SET_SOCIAL_CLUB_TOUR("Missions");
 +HUD::SET_SOCIAL_CLUB_TOUR("General");
 +HUD::SET_SOCIAL_CLUB_TOUR("Playlists");</code>
 +==== IS_SOCIAL_CLUB_ACTIVE ====
 +<code cpp>BOOL HUD::IS_SOCIAL_CLUB_ACTIVE() // 0xC406BE343FC4B9AF 0xD4DA14EF b323</code>
 +
 +==== _0x1185A8087587322C ====
 +<code cpp>void HUD::_0x1185A8087587322C(BOOL p0) // 0x1185A8087587322C  b323</code>
 +
 +<code>SET_TEXT_??? - Used in golf and golf_mp</code>
 +==== _FORCE_CLOSE_TEXT_INPUT_BOX ====
 +<code cpp>void HUD::_FORCE_CLOSE_TEXT_INPUT_BOX() // 0x8817605C2BA76200  b323</code>
 +
 +==== _0x577599CCED639CA2 ====
 +<code cpp>void HUD::_0x577599CCED639CA2(Any p0) // 0x577599CCED639CA2  b505</code>
 +
 +==== _OVERRIDE_MULTIPLAYER_CHAT_PREFIX ====
 +<code cpp>void HUD::_OVERRIDE_MULTIPLAYER_CHAT_PREFIX(Hash gxtEntryHash) // 0x6A1738B4323FE2D9  b573</code>
 +
 +==== _IS_MULTIPLAYER_CHAT_ACTIVE ====
 +<code cpp>BOOL HUD::_IS_MULTIPLAYER_CHAT_ACTIVE() // 0xB118AF58B5F332A1  b323</code>
 +
 +<code>Returns whether or not the text chat (MULTIPLAYER_CHAT Scaleform component) is active.</code>
 +==== _CLOSE_MULTIPLAYER_CHAT ====
 +<code cpp>void HUD::_CLOSE_MULTIPLAYER_CHAT() // 0x1AC8F4AD40E22127  b323</code>
 +
 +==== _0x7C226D5346D4D10A ====
 +<code cpp>void HUD::_0x7C226D5346D4D10A(Any p0) // 0x7C226D5346D4D10A  b372</code>
 +
 +==== _OVERRIDE_MULTIPLAYER_CHAT_COLOUR ====
 +<code cpp>void HUD::_OVERRIDE_MULTIPLAYER_CHAT_COLOUR(int p0, int hudColor) // 0xF47E567B3630DD12  b678</code>
 +
 +==== _SET_TEXT_CHAT_UNK ====
 +<code cpp>void HUD::_SET_TEXT_CHAT_UNK(BOOL p0) // 0x1DB21A44B09E8BA3  b323</code>
 +
 +<code>Sets an unknown boolean value in the text chat.</code>
 +==== FLAG_PLAYER_CONTEXT_IN_TOURNAMENT ====
 +<code cpp>void HUD::FLAG_PLAYER_CONTEXT_IN_TOURNAMENT(BOOL toggle) // 0xCEF214315D276FD1 0xFF06772A b323</code>
 +
 +==== SET_PED_HAS_AI_BLIP ====
 +<code cpp>void HUD::SET_PED_HAS_AI_BLIP(Ped ped, BOOL hasCone) // 0xD30C50DF888D58B5 0x96C4C4DD b323</code>
 +
 +<code>This native turns on the AI blip on the specified ped. It also disappears automatically when the ped is too far or if the ped is dead. You don't need to control it with other natives.
 +
 +See gtaforums.com/topic/884370-native-research-ai-blips for further information.</code>
 +==== _SET_PED_HAS_AI_BLIP_WITH_COLOR ====
 +<code cpp>void HUD::_SET_PED_HAS_AI_BLIP_WITH_COLOR(Ped ped, BOOL hasCone, int color) // 0xB13DCB4C6FAAD238  b505</code>
 +
 +<code>color: see SET_BLIP_COLOUR</code>
 +==== DOES_PED_HAVE_AI_BLIP ====
 +<code cpp>BOOL HUD::DOES_PED_HAVE_AI_BLIP(Ped ped) // 0x15B8ECF844EE67ED 0x3BE1257F b323</code>
 +
 +==== SET_PED_AI_BLIP_GANG_ID ====
 +<code cpp>void HUD::SET_PED_AI_BLIP_GANG_ID(Ped ped, int gangId) // 0xE52B8E7F85D39A08 0xD8E31B1A b323</code>
 +
 +==== SET_PED_AI_BLIP_HAS_CONE ====
 +<code cpp>void HUD::SET_PED_AI_BLIP_HAS_CONE(Ped ped, BOOL toggle) // 0x3EED80DFF7325CAA 0x872C2CFB b323</code>
 +
 +==== SET_PED_AI_BLIP_FORCED_ON ====
 +<code cpp>void HUD::SET_PED_AI_BLIP_FORCED_ON(Ped ped, BOOL toggle) // 0x0C4BBF625CA98C4E 0xFFDF46F0 b323</code>
 +
 +==== SET_PED_AI_BLIP_NOTICE_RANGE ====
 +<code cpp>void HUD::SET_PED_AI_BLIP_NOTICE_RANGE(Ped ped, float range) // 0x97C65887D4B37FA9 0xF9DC2AF7 b323</code>
 +
 +==== _SET_PED_AI_BLIP_SPRITE ====
 +<code cpp>void HUD::_SET_PED_AI_BLIP_SPRITE(Ped ped, int spriteId) // 0xFCFACD0DB9D7A57D  b877</code>
 +
 +==== _GET_AI_BLIP_2 ====
 +<code cpp>Blip HUD::_GET_AI_BLIP_2(Ped ped) // 0x7CD934010E115C2C 0x06349065 b323</code>
 +
 +==== _GET_AI_BLIP ====
 +<code cpp>Blip HUD::_GET_AI_BLIP(Ped ped) // 0x56176892826A4FE8 0xCA52CF43 b323</code>
 +
 +<code>Returns the current AI BLIP for the specified ped</code>
 +==== _HAS_DIRECTOR_MODE_BEEN_TRIGGERED ====
 +<code cpp>BOOL HUD::_HAS_DIRECTOR_MODE_BEEN_TRIGGERED() // 0xA277800A9EAE340E  b323</code>
 +
 +<code>HAS_*</code>
 +==== _SET_DIRECTOR_MODE_CLEAR_TRIGGERED_FLAG ====
 +<code cpp>void HUD::_SET_DIRECTOR_MODE_CLEAR_TRIGGERED_FLAG() // 0x2632482FD6B9AB87  b323</code>
 +
 +<code>SET_*</code>
 +==== _SET_PLAYER_IS_IN_DIRECTOR_MODE ====
 +<code cpp>void HUD::_SET_PLAYER_IS_IN_DIRECTOR_MODE(BOOL toggle) // 0x808519373FD336A3  b323</code>
 +
 +<code>If toggle is true, hides special ability bar / character name in the pause menu
 +If toggle is false, shows special ability bar / character name in the pause menu
 +
 +SET_PLAYER_*</code>
 +==== _0x04655F9D075D0AE5 ====
 +<code cpp>void HUD::_0x04655F9D075D0AE5(BOOL toggle) // 0x04655F9D075D0AE5  b323</code>
 +
 +<code>SET_*</code>
 +==== _0x243296A510B562B6 ====
 +<code cpp>void HUD::_0x243296A510B562B6() // 0x243296A510B562B6  b2060</code>
 +
 +
 +===== INTERIOR =====
 +==== _GET_INTERIOR_HEADING ====
 +<code cpp>float INTERIOR::_GET_INTERIOR_HEADING(Interior interior) // 0xF49B58631D9E22D9  b1493</code>
 +
 +<code>GET_INTERIOR_*</code>
 +==== _GET_INTERIOR_INFO ====
 +<code cpp>void INTERIOR::_GET_INTERIOR_INFO(Interior interior, Vector3* position, Hash* nameHash) // 0x252BDC06B73FA6EA  b1290</code>
 +
 +<code>GET_INTERIOR_*</code>
 +==== GET_INTERIOR_GROUP_ID ====
 +<code cpp>int INTERIOR::GET_INTERIOR_GROUP_ID(Interior interior) // 0xE4A84ABF135EF91A 0x09D6376F b323</code>
 +
 +<code>Returns the group ID of the specified interior. For example, regular interiors have group 0, subway interiors have group 1. There are a few other groups too.</code>
 +==== GET_OFFSET_FROM_INTERIOR_IN_WORLD_COORDS ====
 +<code cpp>Vector3 INTERIOR::GET_OFFSET_FROM_INTERIOR_IN_WORLD_COORDS(Interior interior, float x, float y, float z) // 0x9E3B3E6D66F6E22F 0x7D8F26A1 b323</code>
 +
 +==== IS_INTERIOR_SCENE ====
 +<code cpp>BOOL INTERIOR::IS_INTERIOR_SCENE() // 0xBC72B5D7A1CBD54D 0x55226C13 b323</code>
 +
 +==== IS_VALID_INTERIOR ====
 +<code cpp>BOOL INTERIOR::IS_VALID_INTERIOR(Interior interior) // 0x26B0E73D7EAAF4D3 0x39C0B635 b323</code>
 +
 +==== CLEAR_ROOM_FOR_ENTITY ====
 +<code cpp>void INTERIOR::CLEAR_ROOM_FOR_ENTITY(Entity entity) // 0xB365FC0C4E27FFA7 0x7DDADB92 b323</code>
 +
 +==== FORCE_ROOM_FOR_ENTITY ====
 +<code cpp>void INTERIOR::FORCE_ROOM_FOR_ENTITY(Entity entity, Interior interior, Hash roomHashKey) // 0x52923C4710DD9907 0x10BD4435 b323</code>
 +
 +<code>Does anyone know what this does? I know online modding isn't generally supported especially by the owner of this db, but I first thought this could be used to force ourselves into someones apartment, but I see now that isn't possible.</code>
 +==== GET_ROOM_KEY_FROM_ENTITY ====
 +<code cpp>Hash INTERIOR::GET_ROOM_KEY_FROM_ENTITY(Entity entity) // 0x47C2A06D4F5F424B 0xE4ACF8C3 b323</code>
 +
 +<code>Gets the room hash key from the room that the specified entity is in. Each room in every interior has a unique key. Returns 0 if the entity is outside.</code>
 +==== GET_KEY_FOR_ENTITY_IN_ROOM ====
 +<code cpp>Hash INTERIOR::GET_KEY_FOR_ENTITY_IN_ROOM(Entity entity) // 0x399685DB942336BC 0x91EA80EF b323</code>
 +
 +<code>Seems to do the exact same as INTERIOR::GET_ROOM_KEY_FROM_ENTITY</code>
 +==== GET_INTERIOR_FROM_ENTITY ====
 +<code cpp>Interior INTERIOR::GET_INTERIOR_FROM_ENTITY(Entity entity) // 0x2107BA504071A6BB 0x5C644614 b323</code>
 +
 +<code>Returns the handle of the interior that the entity is in. Returns 0 if outside.</code>
 +==== _0x82EBB79E258FA2B7 ====
 +<code cpp>void INTERIOR::_0x82EBB79E258FA2B7(Entity entity, Interior interior) // 0x82EBB79E258FA2B7 0xE645E162 b323</code>
 +
 +==== _CLEAR_INTERIOR_FOR_ENTITY ====
 +<code cpp>void INTERIOR::_CLEAR_INTERIOR_FOR_ENTITY(Entity entity) // 0x85D5422B2039A70D  b2189</code>
 +
 +<code>Immediately removes entity from an interior. Like sets entity to `limbo` room.</code>
 +==== _0x38C1CB1CB119A016 ====
 +<code cpp>void INTERIOR::_0x38C1CB1CB119A016(Any p0, Any p1) // 0x38C1CB1CB119A016  b1493</code>
 +
 +==== FORCE_ROOM_FOR_GAME_VIEWPORT ====
 +<code cpp>void INTERIOR::FORCE_ROOM_FOR_GAME_VIEWPORT(int interiorID, Hash roomHashKey) // 0x920D853F3E17F1DA 0xD79803B5 b323</code>
 +
 +==== _0xAF348AFCB575A441 ====
 +<code cpp>void INTERIOR::_0xAF348AFCB575A441(const char* roomName) // 0xAF348AFCB575A441 0x1F6B4B13 b323</code>
 +
 +<code>Exemple of use(carmod_shop.c4)
 + INTERIOR::_AF348AFCB575A441("V_CarModRoom");</code>
 +==== _0x405DC2AEF6AF95B9 ====
 +<code cpp>void INTERIOR::_0x405DC2AEF6AF95B9(Hash roomHashKey) // 0x405DC2AEF6AF95B9 0x0E9529CC b323</code>
 +
 +<code>Usage: INTERIOR::_0x405DC2AEF6AF95B9(INTERIOR::GET_KEY_FOR_ENTITY_IN_ROOM(PLAYER::PLAYER_PED_ID()));</code>
 +==== GET_ROOM_KEY_FOR_GAME_VIEWPORT ====
 +<code cpp>Hash INTERIOR::GET_ROOM_KEY_FOR_GAME_VIEWPORT() // 0xA6575914D2A0B450 0x4FF3D3F5 b323</code>
 +
 +==== CLEAR_ROOM_FOR_GAME_VIEWPORT ====
 +<code cpp>void INTERIOR::CLEAR_ROOM_FOR_GAME_VIEWPORT() // 0x23B59D8912F94246 0x617DC75D b323</code>
 +
 +==== _GET_INTERIOR_FROM_GAMEPLAY_CAM ====
 +<code cpp>Interior INTERIOR::_GET_INTERIOR_FROM_GAMEPLAY_CAM() // 0xE7D267EC6CA966C3  b1604</code>
 +
 +<code>Returns the current interior id from gameplay camera</code>
 +==== GET_INTERIOR_AT_COORDS ====
 +<code cpp>Interior INTERIOR::GET_INTERIOR_AT_COORDS(float x, float y, float z) // 0xB0F7F8663821D9C3 0xA17FBF37 b323</code>
 +
 +<code>Returns interior ID from specified coordinates. If coordinates are outside, then it returns 0.
 +
 +Example for VB.NET
 +Dim interiorID As Integer = Native.Function.Call(Of Integer)(Hash.GET_INTERIOR_AT_COORDS, X, Y, Z)</code>
 +==== ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME ====
 +<code cpp>void INTERIOR::ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(Pickup pickup, const char* roomName) // 0x3F6167F351168730 0xA2A73564 b323</code>
 +
 +==== PIN_INTERIOR_IN_MEMORY ====
 +<code cpp>void INTERIOR::PIN_INTERIOR_IN_MEMORY(Interior interior) // 0x2CA429C029CCF247 0x3ADA414E b323</code>
 +
 +==== UNPIN_INTERIOR ====
 +<code cpp>void INTERIOR::UNPIN_INTERIOR(Interior interior) // 0x261CCE7EED010641 0xFCFF792A b323</code>
 +
 +<code>Does something similar to INTERIOR::DISABLE_INTERIOR.
 +
 +You don't fall through the floor but everything is invisible inside and looks the same as when INTERIOR::DISABLE_INTERIOR is used. Peds behaves normally inside. </code>
 +==== IS_INTERIOR_READY ====
 +<code cpp>BOOL INTERIOR::IS_INTERIOR_READY(Interior interior) // 0x6726BDCCC1932F0E 0xE1EF6450 b323</code>
 +
 +==== _0x4C2330E61D3DEB56 ====
 +<code cpp>Any INTERIOR::_0x4C2330E61D3DEB56(Interior interior) // 0x4C2330E61D3DEB56  b323</code>
 +
 +<code>Only used once in the entire game scripts.
 +Does not actually return anything.</code>
 +==== GET_INTERIOR_AT_COORDS_WITH_TYPE ====
 +<code cpp>Interior INTERIOR::GET_INTERIOR_AT_COORDS_WITH_TYPE(float x, float y, float z, const char* interiorType) // 0x05B7A89BD78797FC 0x96525B06 b323</code>
 +
 +<code>Returns the interior ID representing the requested interior at that location (if found?). The supplied interior string is not the same as the one used to load the interior.
 +
 +Use: INTERIOR::UNPIN_INTERIOR(INTERIOR::GET_INTERIOR_AT_COORDS_WITH_TYPE(x, y, z, interior))
 +
 +Interior types include: "V_Michael", "V_Franklins", "V_Franklinshouse", etc.. you can find them in the scripts.
 +
 +Not a very useful native as you could just use GET_INTERIOR_AT_COORDS instead and get the same result, without even having to specify the interior type.</code>
 +==== GET_INTERIOR_AT_COORDS_WITH_TYPEHASH ====
 +<code cpp>Interior INTERIOR::GET_INTERIOR_AT_COORDS_WITH_TYPEHASH(float x, float y, float z, Hash typeHash) // 0xF0F77ADB9F67E79D 0x11718507 b323</code>
 +
 +<code>Hashed version of GET_INTERIOR_AT_COORDS_WITH_TYPE</code>
 +==== _0x483ACA1176CA93F1 ====
 +<code cpp>void INTERIOR::_0x483ACA1176CA93F1() // 0x483ACA1176CA93F1  b1103</code>
 +
 +==== IS_COLLISION_MARKED_OUTSIDE ====
 +<code cpp>BOOL INTERIOR::IS_COLLISION_MARKED_OUTSIDE(float x, float y, float z) // 0xEEA5AC2EDA7C33E8 0x7762249C b323</code>
 +
 +<code>Returns true if the collision at the specified coords is marked as being outside (false if there's an interior)</code>
 +==== GET_INTERIOR_FROM_COLLISION ====
 +<code cpp>int INTERIOR::GET_INTERIOR_FROM_COLLISION(float x, float y, float z) // 0xEC4CF9FCB29A4424 0x7ED33DC1 b323</code>
 +
 +==== _0x7ECDF98587E92DEC ====
 +<code cpp>void INTERIOR::_0x7ECDF98587E92DEC(Any p0) // 0x7ECDF98587E92DEC  b1604</code>
 +
 +==== ACTIVATE_INTERIOR_ENTITY_SET ====
 +<code cpp>void INTERIOR::ACTIVATE_INTERIOR_ENTITY_SET(Interior interior, const char* entitySetName) // 0x55E86AF2712B36A1 0xC80A5DDF b323</code>
 +
 +<code>More info: http://gtaforums.com/topic/836367-adding-props-to-interiors/
 +
 +Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== DEACTIVATE_INTERIOR_ENTITY_SET ====
 +<code cpp>void INTERIOR::DEACTIVATE_INTERIOR_ENTITY_SET(Interior interior, const char* entitySetName) // 0x420BD37289EEE162 0xDBA768A1 b323</code>
 +
 +<code>Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== IS_INTERIOR_ENTITY_SET_ACTIVE ====
 +<code cpp>BOOL INTERIOR::IS_INTERIOR_ENTITY_SET_ACTIVE(Interior interior, const char* entitySetName) // 0x35F7DD45E8C0A16D 0x39A3CC6F b323</code>
 +
 +<code>Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== _SET_INTERIOR_ENTITY_SET_COLOR ====
 +<code cpp>void INTERIOR::_SET_INTERIOR_ENTITY_SET_COLOR(Interior interior, const char* entitySetName, int color) // 0xC1F1920BAF281317  b877</code>
 +
 +<code>Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== REFRESH_INTERIOR ====
 +<code cpp>void INTERIOR::REFRESH_INTERIOR(Interior interior) // 0x41F37C3427C75AE0 0x9A29ACE6 b323</code>
 +
 +==== ENABLE_EXTERIOR_CULL_MODEL_THIS_FRAME ====
 +<code cpp>void INTERIOR::ENABLE_EXTERIOR_CULL_MODEL_THIS_FRAME(Hash mapObjectHash) // 0xA97F257D0151A6AB 0x1F375B4C b323</code>
 +
 +<code>This is the native that is used to hide the exterior of GTA Online apartment buildings when you are inside an apartment.
 +
 +More info: http://gtaforums.com/topic/836301-hiding-gta-online-apartment-exteriors/</code>
 +==== _ENABLE_SCRIPT_CULL_MODEL_THIS_FRAME ====
 +<code cpp>void INTERIOR::_ENABLE_SCRIPT_CULL_MODEL_THIS_FRAME(Hash mapObjectHash) // 0x50C375537449F369  b757</code>
 +
 +==== DISABLE_INTERIOR ====
 +<code cpp>void INTERIOR::DISABLE_INTERIOR(Interior interior, BOOL toggle) // 0x6170941419D7D8EC 0x093ADEA5 b323</code>
 +
 +<code>Example: 
 +This removes the interior from the strip club and when trying to walk inside the player just falls:
 +
 +INTERIOR::DISABLE_INTERIOR(118018, true);</code>
 +==== IS_INTERIOR_DISABLED ====
 +<code cpp>BOOL INTERIOR::IS_INTERIOR_DISABLED(Interior interior) // 0xBC5115A5A939DD15 0x81F34C71 b323</code>
 +
 +==== CAP_INTERIOR ====
 +<code cpp>void INTERIOR::CAP_INTERIOR(Interior interior, BOOL toggle) // 0xD9175F941610DB54 0x34E735A6 b323</code>
 +
 +<code>Does something similar to INTERIOR::DISABLE_INTERIOR</code>
 +==== IS_INTERIOR_CAPPED ====
 +<code cpp>BOOL INTERIOR::IS_INTERIOR_CAPPED(Interior interior) // 0x92BAC8ACF88CEC26 0x18B17C80 b323</code>
 +
 +==== _0x9E6542F0CE8E70A3 ====
 +<code cpp>void INTERIOR::_0x9E6542F0CE8E70A3(BOOL toggle) // 0x9E6542F0CE8E70A3 0x5EF9C5C2 b323</code>
 +
 +<code>DISABLE_*</code>
 +==== _0x7241CCB7D020DB69 ====
 +<code cpp>void INTERIOR::_0x7241CCB7D020DB69(Entity entity, BOOL toggle) // 0x7241CCB7D020DB69  b791</code>
 +
 +<code>Jenkins hash _might_ be 0xFC227584.</code>
 +
 +===== ITEMSET =====
 +==== CREATE_ITEMSET ====
 +<code cpp>Vehicle ITEMSET::CREATE_ITEMSET(BOOL p0) // 0x35AD299F50D91B24 0x0A113B2C b323</code>
 +
 +==== DESTROY_ITEMSET ====
 +<code cpp>void ITEMSET::DESTROY_ITEMSET(Any p0) // 0xDE18220B1C183EDA 0x83CE1A4C b323</code>
 +
 +==== IS_ITEMSET_VALID ====
 +<code cpp>BOOL ITEMSET::IS_ITEMSET_VALID(Any p0) // 0xB1B1EA596344DFAB 0xD201FC29 b323</code>
 +
 +==== ADD_TO_ITEMSET ====
 +<code cpp>BOOL ITEMSET::ADD_TO_ITEMSET(Any p0, Any p1) // 0xE3945201F14637DD 0x6B0FE61B b323</code>
 +
 +==== REMOVE_FROM_ITEMSET ====
 +<code cpp>void ITEMSET::REMOVE_FROM_ITEMSET(Any p0, Any p1) // 0x25E68244B0177686 0xA9565228 b323</code>
 +
 +==== GET_ITEMSET_SIZE ====
 +<code cpp>Any ITEMSET::GET_ITEMSET_SIZE(ScrHandle x) // 0xD9127E83ABF7C631 0x2B31F41A b323</code>
 +
 +==== GET_INDEXED_ITEM_IN_ITEMSET ====
 +<code cpp>Any ITEMSET::GET_INDEXED_ITEM_IN_ITEMSET(Any p0, Any p1) // 0x7A197E2521EE2BAB 0x3F712874 b323</code>
 +
 +==== IS_IN_ITEMSET ====
 +<code cpp>BOOL ITEMSET::IS_IN_ITEMSET(Any p0, Any p1) // 0x2D0FC594D1E9C107 0x0D4B9730 b323</code>
 +
 +==== CLEAN_ITEMSET ====
 +<code cpp>void ITEMSET::CLEAN_ITEMSET(Any p0) // 0x41BC0D722FC04221 0x919A4858 b323</code>
 +
 +
 +===== LOADINGSCREEN =====
 +==== _0xF2CA003F167E21D2 ====
 +<code cpp>int LOADINGSCREEN::_0xF2CA003F167E21D2() // 0xF2CA003F167E21D2 0x106C8317 b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _LOADINGSCREEN_GET_LOAD_FREEMODE ====
 +<code cpp>BOOL LOADINGSCREEN::_LOADINGSCREEN_GET_LOAD_FREEMODE() // 0xEF7D17BC6C85264C 0xD87F3A9E b323</code>
 +
 +==== _LOADINGSCREEN_SET_LOAD_FREEMODE ====
 +<code cpp>void LOADINGSCREEN::_LOADINGSCREEN_SET_LOAD_FREEMODE(BOOL toggle) // 0xB0C56BD3D808D863 0xC0B971EA b323</code>
 +
 +==== _LOADINGSCREEN_GET_LOAD_FREEMODE_WITH_EVENT_NAME ====
 +<code cpp>BOOL LOADINGSCREEN::_LOADINGSCREEN_GET_LOAD_FREEMODE_WITH_EVENT_NAME() // 0x8AA464D4E0F6ACCD 0x94BCAC7C b323</code>
 +
 +==== _LOADINGSCREEN_SET_LOAD_FREEMODE_WITH_EVENT_NAME ====
 +<code cpp>void LOADINGSCREEN::_LOADINGSCREEN_SET_LOAD_FREEMODE_WITH_EVENT_NAME(BOOL toggle) // 0xFC309E94546FCDB5 0x7D90EEE5 b323</code>
 +
 +==== _LOADINGSCREEN_IS_LOADING_FREEMODE ====
 +<code cpp>BOOL LOADINGSCREEN::_LOADINGSCREEN_IS_LOADING_FREEMODE() // 0xC6DC823253FBB366 0x734CFEDA b323</code>
 +
 +==== _LOADINGSCREEN_SET_IS_LOADING_FREEMODE ====
 +<code cpp>void LOADINGSCREEN::_LOADINGSCREEN_SET_IS_LOADING_FREEMODE(BOOL toggle) // 0xC7E7181C09F33B69 0x8C227332 b323</code>
 +
 +==== _0xFA1E0E893D915215 ====
 +<code cpp>void LOADINGSCREEN::_0xFA1E0E893D915215(BOOL toggle) // 0xFA1E0E893D915215 0x5C350D78 b323</code>
 +
 +
 +===== LOCALIZATION =====
 +==== _LOCALIZATION_GET_SYSTEM_LANGUAGE ====
 +<code cpp>int LOCALIZATION::_LOCALIZATION_GET_SYSTEM_LANGUAGE() // 0x497420E022796B3F  b877</code>
 +
 +<code>Same return values as GET_CURRENT_LANGUAGE</code>
 +==== GET_CURRENT_LANGUAGE ====
 +<code cpp>int LOCALIZATION::GET_CURRENT_LANGUAGE() // 0x2BDD44CC428A7EAE 0x761BE00B b323</code>
 +
 +<code>0 = american (en-US)
 +1 = french (fr-FR)
 +2 = german (de-DE)
 +3 = italian (it-IT)
 +4 = spanish (es-ES)
 +5 = brazilian (pt-BR)
 +6 = polish (pl-PL)
 +7 = russian (ru-RU)
 +8 = korean (ko-KR)
 +9 = chinesetrad (zh-TW)
 +10 = japanese (ja-JP)
 +11 = mexican (es-MX)
 +12 = chinesesimp (zh-CN)</code>
 +==== _LOCALIZATION_GET_SYSTEM_DATE_FORMAT ====
 +<code cpp>int LOCALIZATION::_LOCALIZATION_GET_SYSTEM_DATE_FORMAT() // 0xA8AE43AEC1A61314  b323</code>
 +
 +<code>Possible return values: 0, 1, 2</code>
 +
 +===== MISC =====
 +==== GET_ALLOCATED_STACK_SIZE ====
 +<code cpp>int MISC::GET_ALLOCATED_STACK_SIZE() // 0x8B3CA62B1EF19B62 0x4E9CA30A b323</code>
 +
 +==== GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE ====
 +<code cpp>int MISC::GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE(int stackSize) // 0xFEAD16FC8F9DFC0F 0x11A178B8 b323</code>
 +
 +==== SET_RANDOM_SEED ====
 +<code cpp>void MISC::SET_RANDOM_SEED(int seed) // 0x444D98F98C11F3EC 0xDB3FEB5C b323</code>
 +
 +==== SET_TIME_SCALE ====
 +<code cpp>void MISC::SET_TIME_SCALE(float timeScale) // 0x1D408577D440E81E 0xA7F84694 b323</code>
 +
 +<code>Maximum value is 1.
 +At a value of 0 the game will still run at a minimum time scale.
 +
 +Slow Motion 1: 0.6
 +Slow Motion 2: 0.4
 +Slow Motion 3: 0.2</code>
 +==== SET_MISSION_FLAG ====
 +<code cpp>void MISC::SET_MISSION_FLAG(BOOL toggle) // 0xC4301E5121A0ED73 0x57592D52 b323</code>
 +
 +<code>If true, the player can't save the game. 
 +
 +
 +If the parameter is true, sets the mission flag to true, if the parameter is false, the function does nothing at all.
 +
 +^ also, if the mission flag is already set, the function does nothing at all</code>
 +==== GET_MISSION_FLAG ====
 +<code cpp>BOOL MISC::GET_MISSION_FLAG() // 0xA33CDCCDA663159E 0x95115F97 b323</code>
 +
 +==== SET_RANDOM_EVENT_FLAG ====
 +<code cpp>void MISC::SET_RANDOM_EVENT_FLAG(BOOL toggle) // 0x971927086CFD2158 0xA77F31E8 b323</code>
 +
 +<code>If the parameter is true, sets the random event flag to true, if the parameter is false, the function does nothing at all.
 +Does nothing if the mission flag is set.</code>
 +==== GET_RANDOM_EVENT_FLAG ====
 +<code cpp>BOOL MISC::GET_RANDOM_EVENT_FLAG() // 0xD2D57F1D764117B1 0x794CC92C b323</code>
 +
 +==== _GET_GLOBAL_CHAR_BUFFER ====
 +<code cpp>const char* MISC::_GET_GLOBAL_CHAR_BUFFER() // 0x24DA7D7667FD7B09  b323</code>
 +
 +<code>Returns pointer to an empty string.
 +
 +GET_C*</code>
 +==== _0x4DCDF92BF64236CD ====
 +<code cpp>void MISC::_0x4DCDF92BF64236CD(const char* p0, const char* p1) // 0x4DCDF92BF64236CD  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0x31125FD509D9043F ====
 +<code cpp>void MISC::_0x31125FD509D9043F(const char* p0) // 0x31125FD509D9043F  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0xEBD3205A207939ED ====
 +<code cpp>void MISC::_0xEBD3205A207939ED(const char* p0) // 0xEBD3205A207939ED  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0x97E7E2C04245115B ====
 +<code cpp>void MISC::_0x97E7E2C04245115B(Any p0) // 0x97E7E2C04245115B  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0x916CA67D26FD1E37 ====
 +<code cpp>void MISC::_0x916CA67D26FD1E37(const char* p0) // 0x916CA67D26FD1E37  b2060</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0xEB078CA2B5E82ADD ====
 +<code cpp>void MISC::_0xEB078CA2B5E82ADD(const char* p0, const char* p1) // 0xEB078CA2B5E82ADD  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0x703CC7F60CBB2B57 ====
 +<code cpp>void MISC::_0x703CC7F60CBB2B57(const char* p0) // 0x703CC7F60CBB2B57  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0x8951EB9C6906D3C8 ====
 +<code cpp>void MISC::_0x8951EB9C6906D3C8() // 0x8951EB9C6906D3C8  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.</code>
 +==== _0xBA4B8D83BDC75551 ====
 +<code cpp>void MISC::_0xBA4B8D83BDC75551(const char* p0) // 0xBA4B8D83BDC75551  b323</code>
 +
 +<code>Does nothing (it's a nullsub). Seems to be PS4 specific.
 +
 +Used only once in the scripts (ingamehud) with p0 = "AF_GAMEMODE"</code>
 +==== _HAS_RESUMED_FROM_SUSPEND ====
 +<code cpp>BOOL MISC::_HAS_RESUMED_FROM_SUSPEND() // 0xE8B9C0EC9E183F35  b323</code>
 +
 +<code>Hardcoded to return false.</code>
 +==== _0x65D2EBB47E1CEC21 ====
 +<code cpp>void MISC::_0x65D2EBB47E1CEC21(BOOL toggle) // 0x65D2EBB47E1CEC21  b323</code>
 +
 +<code>Sets GtaThread+0x14A
 +
 +SET_S*</code>
 +==== _0x6F2135B6129620C1 ====
 +<code cpp>void MISC::_0x6F2135B6129620C1(BOOL toggle) // 0x6F2135B6129620C1 0x8B2DE971 b323</code>
 +
 +<code>Sets bit 3 in GtaThread+0x150
 +
 +SET_T*</code>
 +==== _0x8D74E26F54B4E5C3 ====
 +<code cpp>void MISC::_0x8D74E26F54B4E5C3(const char* p0) // 0x8D74E26F54B4E5C3 0xE77199F7 b323</code>
 +
 +<code>I*</code>
 +==== _GET_BASE_ELEMENT_METADATA ====
 +<code cpp>BOOL MISC::_GET_BASE_ELEMENT_METADATA(Any* p0, Any* p1, Any p2, BOOL p3) // 0xB335F761606DB47C 0xE23416C1 b323</code>
 +
 +==== GET_PREV_WEATHER_TYPE_HASH_NAME ====
 +<code cpp>Hash MISC::GET_PREV_WEATHER_TYPE_HASH_NAME() // 0x564B884A05EC45A3 0xA8171E9E b323</code>
 +
 +<code>Returns current weather name hash</code>
 +==== GET_NEXT_WEATHER_TYPE_HASH_NAME ====
 +<code cpp>Hash MISC::GET_NEXT_WEATHER_TYPE_HASH_NAME() // 0x711327CD09C8F162 0x353E8056 b323</code>
 +
 +<code>Returns weather name hash</code>
 +==== IS_PREV_WEATHER_TYPE ====
 +<code cpp>BOOL MISC::IS_PREV_WEATHER_TYPE(const char* weatherType) // 0x44F28F86433B10A9 0x250ADA61 b323</code>
 +
 +==== IS_NEXT_WEATHER_TYPE ====
 +<code cpp>BOOL MISC::IS_NEXT_WEATHER_TYPE(const char* weatherType) // 0x2FAA3A30BEC0F25D 0x99CB167F b323</code>
 +
 +==== SET_WEATHER_TYPE_PERSIST ====
 +<code cpp>void MISC::SET_WEATHER_TYPE_PERSIST(const char* weatherType) // 0x704983DF373B198F 0xC6C04C75 b323</code>
 +
 +<code>The following weatherTypes are used in the scripts:
 +"CLEAR"
 +"EXTRASUNNY"
 +"CLOUDS"
 +"OVERCAST"
 +"RAIN"
 +"CLEARING"
 +"THUNDER"
 +"SMOG"
 +"FOGGY"
 +"XMAS"
 +"SNOWLIGHT"
 +"BLIZZARD"</code>
 +==== SET_WEATHER_TYPE_NOW_PERSIST ====
 +<code cpp>void MISC::SET_WEATHER_TYPE_NOW_PERSIST(const char* weatherType) // 0xED712CA327900C8A 0xC869FE97 b323</code>
 +
 +<code>The following weatherTypes are used in the scripts:
 +"CLEAR"
 +"EXTRASUNNY"
 +"CLOUDS"
 +"OVERCAST"
 +"RAIN"
 +"CLEARING"
 +"THUNDER"
 +"SMOG"
 +"FOGGY"
 +"XMAS"
 +"SNOWLIGHT"
 +"BLIZZARD"</code>
 +==== SET_WEATHER_TYPE_NOW ====
 +<code cpp>void MISC::SET_WEATHER_TYPE_NOW(const char* weatherType) // 0x29B487C359E19889 0x361E9EAC b323</code>
 +
 +<code>The following weatherTypes are used in the scripts:
 +"CLEAR"
 +"EXTRASUNNY"
 +"CLOUDS"
 +"OVERCAST"
 +"RAIN"
 +"CLEARING"
 +"THUNDER"
 +"SMOG"
 +"FOGGY"
 +"XMAS"
 +"SNOWLIGHT"
 +"BLIZZARD"</code>
 +==== SET_WEATHER_TYPE_OVERTIME_PERSIST ====
 +<code cpp>void MISC::SET_WEATHER_TYPE_OVERTIME_PERSIST(const char* weatherType, float time) // 0xFB5045B7C42B75BF 0x386F0D25 b323</code>
 +
 +==== SET_RANDOM_WEATHER_TYPE ====
 +<code cpp>void MISC::SET_RANDOM_WEATHER_TYPE() // 0x8B05F884CF7E8020 0xE7AA1BC9 b323</code>
 +
 +==== CLEAR_WEATHER_TYPE_PERSIST ====
 +<code cpp>void MISC::CLEAR_WEATHER_TYPE_PERSIST() // 0xCCC39339BEF76CF5 0x6AB757D8 b323</code>
 +
 +==== _0x0CF97F497FE7D048 ====
 +<code cpp>void MISC::_0x0CF97F497FE7D048(float p0) // 0x0CF97F497FE7D048  b1103</code>
 +
 +<code>0 as param = weird black and green screen
 +0.1 - 0.99 = Prevent rain effect from falling (still sound and effects on puddles) and prevent puddles from increase/decrease, seems than it prevent any weather change too
 +1 and more = "Unfreeze" rain puddles but clear weather too
 +When 'freezing' is enabled, it seem to also freeze value getted with GetRainLevel</code>
 +==== _GET_WEATHER_TYPE_TRANSITION ====
 +<code cpp>void MISC::_GET_WEATHER_TYPE_TRANSITION(Hash* weatherType1, Hash* weatherType2, float* percentWeather2) // 0xF3BBE884A14BB413 0x9A5C1D56 b323</code>
 +
 +==== _SET_WEATHER_TYPE_TRANSITION ====
 +<code cpp>void MISC::_SET_WEATHER_TYPE_TRANSITION(Hash weatherType1, Hash weatherType2, float percentWeather2) // 0x578C752848ECFA0C 0x5CA74040 b323</code>
 +
 +<code>Mixes two weather types. If percentWeather2 is set to 0.0f, then the weather will be entirely of weatherType1, if it is set to 1.0f it will be entirely of weatherType2. If it's set somewhere in between, there will be a mixture of weather behaviors. To test, try this in the RPH console, and change the float to different values between 0 and 1:
 +
 +execute "NativeFunction.Natives.x578C752848ECFA0C(Game.GetHashKey(""RAIN""), Game.GetHashKey(""SMOG""), 0.50f);
 +
 +Note that unlike most of the other weather natives, this native takes the hash of the weather name, not the plain string. These are the weather names and their hashes:
 +
 +CLEAR  0x36A83D84
 +EXTRASUNNY  0x97AA0A79
 +CLOUDS  0x30FDAF5C
 +OVERCAST    0xBB898D2D
 +RAIN    0x54A69840
 +CLEARING    0x6DB1A50D
 +THUNDER 0xB677829F
 +SMOG    0x10DCF4B5
 +FOGGY   0xAE737644
 +XMAS    0xAAC9C895
 +SNOWLIGHT   0x23FB812B
 +BLIZZARD    0x27EA2814
 +
 +
 +
 +
 +
 +/* OLD INVALID INFO BELOW */
 +Not tested. Based purely on disassembly. Instantly sets the weather to sourceWeather, then transitions to targetWeather over the specified transitionTime in seconds.
 +
 +If an invalid hash is specified for sourceWeather, the current weather type will be used.
 +If an invalid hash is specified for targetWeather, the next weather type will be used.
 +If an invalid hash is specified for both sourceWeather and targetWeather, the function just changes the transition time of the current transition.</code>
 +==== SET_OVERRIDE_WEATHER ====
 +<code cpp>void MISC::SET_OVERRIDE_WEATHER(const char* weatherType) // 0xA43D5C6FE51ADBEF 0xD9082BB5 b323</code>
 +
 +<code>Appears to have an optional bool parameter that is unused in the scripts.
 +
 +If you pass true, something will be set to zero.</code>
 +==== _0x1178E104409FE58C ====
 +<code cpp>void MISC::_0x1178E104409FE58C(Any p0, Any p1) // 0x1178E104409FE58C  b2189</code>
 +
 +==== CLEAR_OVERRIDE_WEATHER ====
 +<code cpp>void MISC::CLEAR_OVERRIDE_WEATHER() // 0x338D2E3477711050 0x7740EA4E b323</code>
 +
 +==== WATER_OVERRIDE_SET_SHOREWAVEAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_SHOREWAVEAMPLITUDE(float amplitude) // 0xB8F87EAD7533B176 0x625181DC b323</code>
 +
 +==== WATER_OVERRIDE_SET_SHOREWAVEMINAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_SHOREWAVEMINAMPLITUDE(float minAmplitude) // 0xC3EAD29AB273ECE8 0xBEBBFDC8 b323</code>
 +
 +==== WATER_OVERRIDE_SET_SHOREWAVEMAXAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_SHOREWAVEMAXAMPLITUDE(float maxAmplitude) // 0xA7A1127490312C36 0x6926AB03 b323</code>
 +
 +==== WATER_OVERRIDE_SET_OCEANNOISEMINAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_OCEANNOISEMINAMPLITUDE(float minAmplitude) // 0x31727907B2C43C55 0xD447439D b323</code>
 +
 +==== WATER_OVERRIDE_SET_OCEANWAVEAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_OCEANWAVEAMPLITUDE(float amplitude) // 0x405591EC8FD9096D 0x584E9C59 b323</code>
 +
 +==== WATER_OVERRIDE_SET_OCEANWAVEMINAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_OCEANWAVEMINAMPLITUDE(float minAmplitude) // 0xF751B16FB32ABC1D 0x5656D578 b323</code>
 +
 +==== WATER_OVERRIDE_SET_OCEANWAVEMAXAMPLITUDE ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_OCEANWAVEMAXAMPLITUDE(float maxAmplitude) // 0xB3E6360DDE733E82 0x0DE40C28 b323</code>
 +
 +==== WATER_OVERRIDE_SET_RIPPLEBUMPINESS ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_RIPPLEBUMPINESS(float bumpiness) // 0x7C9C0B1EEB1F9072 0x98C9138B b323</code>
 +
 +==== WATER_OVERRIDE_SET_RIPPLEMINBUMPINESS ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_RIPPLEMINBUMPINESS(float minBumpiness) // 0x6216B116083A7CB4 0xFB1A9CDE b323</code>
 +
 +==== WATER_OVERRIDE_SET_RIPPLEMAXBUMPINESS ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_RIPPLEMAXBUMPINESS(float maxBumpiness) // 0x9F5E6BB6B34540DA 0x1C0CAE89 b323</code>
 +
 +==== WATER_OVERRIDE_SET_RIPPLEDISTURB ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_RIPPLEDISTURB(float disturb) // 0xB9854DFDE0D833D6 0x4671AC2E b323</code>
 +
 +==== WATER_OVERRIDE_SET_STRENGTH ====
 +<code cpp>void MISC::WATER_OVERRIDE_SET_STRENGTH(float strength) // 0xC54A08C85AE4D410 0xDA02F415 b323</code>
 +
 +<code>This seems to edit the water wave, intensity around your current location.
 +
 +0.0f = Normal
 +1.0f = So Calm and Smooth, a boat will stay still.
 +3.0f = Really Intense.</code>
 +==== WATER_OVERRIDE_FADE_IN ====
 +<code cpp>void MISC::WATER_OVERRIDE_FADE_IN(float p0) // 0xA8434F1DFF41D6E7 0x5F3DDEC0 b323</code>
 +
 +==== WATER_OVERRIDE_FADE_OUT ====
 +<code cpp>void MISC::WATER_OVERRIDE_FADE_OUT(float p0) // 0xC3C221ADDDE31A11 0x63A89684 b323</code>
 +
 +==== SET_WIND ====
 +<code cpp>void MISC::SET_WIND(float speed) // 0xAC3A74E8384A9919 0xC6294698 b323</code>
 +
 +<code>Sets the the raw wind speed value.</code>
 +==== SET_WIND_SPEED ====
 +<code cpp>void MISC::SET_WIND_SPEED(float speed) // 0xEE09ECEDBABE47FC 0x45705F94 b323</code>
 +
 +<code>Using this native will clamp the wind speed value to a range of 0.0- 12.0. Using SET_WIND sets the same value but without the restriction.</code>
 +==== GET_WIND_SPEED ====
 +<code cpp>float MISC::GET_WIND_SPEED() // 0xA8CF1CC0AFCD3F12 0x098F0F3C b323</code>
 +
 +==== SET_WIND_DIRECTION ====
 +<code cpp>void MISC::SET_WIND_DIRECTION(float direction) // 0xEB0F4468467B4528 0x381AEEE9 b323</code>
 +
 +<code>The wind direction in radians
 +180 degrees, wind will blow from the south</code>
 +==== GET_WIND_DIRECTION ====
 +<code cpp>Vector3 MISC::GET_WIND_DIRECTION() // 0x1F400FEF721170DA 0x89499A0D b323</code>
 +
 +==== _SET_RAIN_LEVEL ====
 +<code cpp>void MISC::_SET_RAIN_LEVEL(float intensity) // 0x643E26EA6E024D92  b323</code>
 +
 +<code>With an `intensity` higher than `0.5f`, only the creation of puddles gets faster, rain and rain sound won't increase after that.
 +With an `intensity` of `0.0f` rain and rain sounds are disabled and there won't be any new puddles.
 +To use the rain intensity of the current weather, call this native with `-1f` as `intensity`.</code>
 +==== GET_RAIN_LEVEL ====
 +<code cpp>float MISC::GET_RAIN_LEVEL() // 0x96695E368AD855F3 0xC9F67F28 b323</code>
 +
 +==== _SET_SNOW_LEVEL ====
 +<code cpp>void MISC::_SET_SNOW_LEVEL(float level) // 0x7F06937B0CDCBC1A  b1868</code>
 +
 +==== GET_SNOW_LEVEL ====
 +<code cpp>float MISC::GET_SNOW_LEVEL() // 0xC5868A966E5BE3AE 0x1B09184F b323</code>
 +
 +==== FORCE_LIGHTNING_FLASH ====
 +<code cpp>void MISC::FORCE_LIGHTNING_FLASH() // 0xF6062E089251C898 0xDF38165E b323</code>
 +
 +<code>creates single lightning+thunder at random position</code>
 +==== _0x02DEAAC8F8EA7FE7 ====
 +<code cpp>void MISC::_0x02DEAAC8F8EA7FE7(const char* p0) // 0x02DEAAC8F8EA7FE7  b323</code>
 +
 +<code>Found in the scripts:
 +
 +MISC::_02DEAAC8F8EA7FE7("");</code>
 +==== PRELOAD_CLOUD_HAT ====
 +<code cpp>void MISC::PRELOAD_CLOUD_HAT(const char* name) // 0x11B56FBBF7224868 0x8727A4C5 b323</code>
 +
 +<code>Found in the scripts:
 +
 +MISC::_11B56FBBF7224868("CONTRAILS");</code>
 +==== LOAD_CLOUD_HAT ====
 +<code cpp>void MISC::LOAD_CLOUD_HAT(const char* name, float transitionTime) // 0xFC4842A34657BFCB 0xED88FC61 b323</code>
 +
 +<code>The following cloudhats are useable:
 +altostratus
 +Cirrus
 +cirrocumulus
 +Clear 01
 +Cloudy 01
 +Contrails
 +Horizon
 +horizonband1
 +horizonband2
 +horizonband3
 +horsey
 +Nimbus
 +Puffs
 +RAIN
 +Snowy 01
 +Stormy 01
 +stratoscumulus
 +Stripey
 +shower
 +Wispy
 +</code>
 +==== UNLOAD_CLOUD_HAT ====
 +<code cpp>void MISC::UNLOAD_CLOUD_HAT(const char* name, float p1) // 0xA74802FB8D0B7814 0xC9FA6E07 b323</code>
 +
 +<code>Called 4 times in the b617d scripts:
 +MISC::_A74802FB8D0B7814("CONTRAILS", 0);</code>
 +==== _CLEAR_CLOUD_HAT ====
 +<code cpp>void MISC::_CLEAR_CLOUD_HAT() // 0x957E790EA1727B64 0x2D7787BC b323</code>
 +
 +==== _SET_CLOUD_HAT_OPACITY ====
 +<code cpp>void MISC::_SET_CLOUD_HAT_OPACITY(float opacity) // 0xF36199225D6D8C86  b323</code>
 +
 +==== _GET_CLOUD_HAT_OPACITY ====
 +<code cpp>float MISC::_GET_CLOUD_HAT_OPACITY() // 0x20AC25E781AE4A84  b323</code>
 +
 +==== GET_GAME_TIMER ====
 +<code cpp>int MISC::GET_GAME_TIMER() // 0x9CD27B0045628463 0xA4EA0691 b323</code>
 +
 +==== GET_FRAME_TIME ====
 +<code cpp>float MISC::GET_FRAME_TIME() // 0x15C40837039FFAF7 0x96374262 b323</code>
 +
 +==== _GET_BENCHMARK_TIME ====
 +<code cpp>float MISC::_GET_BENCHMARK_TIME() // 0xE599A503B3837E1B  b323</code>
 +
 +==== GET_FRAME_COUNT ====
 +<code cpp>int MISC::GET_FRAME_COUNT() // 0xFC8202EFC642E6F2 0xB477A015 b323</code>
 +
 +==== GET_RANDOM_FLOAT_IN_RANGE ====
 +<code cpp>float MISC::GET_RANDOM_FLOAT_IN_RANGE(float startRange, float endRange) // 0x313CE5879CEB6FCD 0x0562C4D0 b323</code>
 +
 +==== GET_RANDOM_INT_IN_RANGE ====
 +<code cpp>int MISC::GET_RANDOM_INT_IN_RANGE(int startRange, int endRange) // 0xD53343AA4FB7DD28 0x4051115B b323</code>
 +
 +==== _GET_RANDOM_INT_IN_RANGE_2 ====
 +<code cpp>int MISC::_GET_RANDOM_INT_IN_RANGE_2(int startRange, int endRange) // 0xF2D49816A804D134  b1734</code>
 +
 +==== GET_GROUND_Z_FOR_3D_COORD ====
 +<code cpp>BOOL MISC::GET_GROUND_Z_FOR_3D_COORD(float x, float y, float z, float* groundZ, BOOL ignoreWater, BOOL p5) // 0xC906A7DAB05C8D2B 0xA1BFD5E0 b323</code>
 +
 +<code>Gets the ground elevation at the specified position. Note that if the specified position is below ground level, the function will output zero!
 +
 +x: Position on the X-axis to get ground elevation at.
 +y: Position on the Y-axis to get ground elevation at.
 +z: Position on the Z-axis to get ground elevation at.
 +groundZ: The ground elevation at the specified position.
 +ignoreWater: Nearly always 0, very rarely 1 in the scripts: https://gfycat.com/NiftyTatteredCricket
 +
 +Bear in mind this native can only calculate the elevation when the coordinates are within the client's render distance.</code>
 +==== GET_GROUND_Z_AND_NORMAL_FOR_3D_COORD ====
 +<code cpp>BOOL MISC::GET_GROUND_Z_AND_NORMAL_FOR_3D_COORD(float x, float y, float z, float* groundZ, Vector3* normal) // 0x8BDC7BFC57A81E76 0x64D91CED b323</code>
 +
 +==== _GET_GROUND_Z_FOR_3D_COORD_2 ====
 +<code cpp>BOOL MISC::_GET_GROUND_Z_FOR_3D_COORD_2(float x, float y, float z, float* groundZ, BOOL p4, BOOL p5) // 0x9E82F0F362881B29  b505</code>
 +
 +==== ASIN ====
 +<code cpp>float MISC::ASIN(float p0) // 0xC843060B5765DCE7 0x998E5CAD b323</code>
 +
 +==== ACOS ====
 +<code cpp>float MISC::ACOS(float p0) // 0x1D08B970013C34B6 0xF4038776 b323</code>
 +
 +==== TAN ====
 +<code cpp>float MISC::TAN(float p0) // 0x632106CC96E82E91 0xD320CE5E b323</code>
 +
 +==== ATAN ====
 +<code cpp>float MISC::ATAN(float p0) // 0xA9D1795CD5043663 0x7A03CC8E b323</code>
 +
 +==== ATAN2 ====
 +<code cpp>float MISC::ATAN2(float p0, float p1) // 0x8927CBF9D22261A4 0x2508AC81 b323</code>
 +
 +==== GET_DISTANCE_BETWEEN_COORDS ====
 +<code cpp>float MISC::GET_DISTANCE_BETWEEN_COORDS(float x1, float y1, float z1, float x2, float y2, float z2, BOOL useZ) // 0xF1B760881820C952 0xF698765E b323</code>
 +
 +<code>Returns the distance between two three-dimensional points, optionally ignoring the Z values.
 +If useZ is false, only the 2D plane (X-Y) will be considered for calculating the distance.
 +
 +Consider using this faster native instead: SYSTEM::VDIST - DVIST always takes in consideration the 3D coordinates.</code>
 +==== GET_ANGLE_BETWEEN_2D_VECTORS ====
 +<code cpp>float MISC::GET_ANGLE_BETWEEN_2D_VECTORS(float x1, float y1, float x2, float y2) // 0x186FC4BE848E1C92 0xDBF75E58 b323</code>
 +
 +==== GET_HEADING_FROM_VECTOR_2D ====
 +<code cpp>float MISC::GET_HEADING_FROM_VECTOR_2D(float dx, float dy) // 0x2FFB6B224F4B2926 0xD209D52B b323</code>
 +
 +<code>dx = x1 - x2
 +dy = y1 - y2</code>
 +==== _0x7F8F6405F4777AF6 ====
 +<code cpp>float MISC::_0x7F8F6405F4777AF6(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9) // 0x7F8F6405F4777AF6 0x89459F0A b323</code>
 +
 +==== _0x21C235BC64831E5A ====
 +<code cpp>Vector3 MISC::_0x21C235BC64831E5A(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9) // 0x21C235BC64831E5A 0xCAECF37E b323</code>
 +
 +<code>GET_C*</code>
 +==== _0xF56DFB7B61BE7276 ====
 +<code cpp>BOOL MISC::_0xF56DFB7B61BE7276(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9, float p10, float p11, float* p12) // 0xF56DFB7B61BE7276 0xC6CC812C b323</code>
 +
 +==== _0xA0AD167E4B39D9A2 ====
 +<code cpp>Any MISC::_0xA0AD167E4B39D9A2(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9, Any p10, Any p11, Any p12, Any p13) // 0xA0AD167E4B39D9A2  b2189</code>
 +
 +==== SET_BIT ====
 +<code cpp>void MISC::SET_BIT(int* address, int offset) // 0x933D6A9EEC1BACD0 0x4EFE7E6B b323</code>
 +
 +<code>This sets bit [offset] of [address] to on.
 +
 +The offsets used are different bits to be toggled on and off, typically there is only one address used in a script.
 +
 +Example:
 +MISC::SET_BIT(&bitAddress, 1);
 +
 +To check if this bit has been enabled:
 +MISC::IS_BIT_SET(bitAddress, 1); // will return 1 afterwards
 +
 +Please note, this method may assign a value to [address] when used.</code>
 +==== CLEAR_BIT ====
 +<code cpp>void MISC::CLEAR_BIT(int* address, int offset) // 0xE80492A9AC099A93 0x8BC9E618 b323</code>
 +
 +<code>This sets bit [offset] of [address] to off.
 +
 +Example:
 +MISC::CLEAR_BIT(&bitAddress, 1);
 +
 +To check if this bit has been enabled:
 +MISC::IS_BIT_SET(bitAddress, 1); // will return 0 afterwards</code>
 +==== GET_HASH_KEY ====
 +<code cpp>Hash MISC::GET_HASH_KEY(const char* string) // 0xD24D37CC275948CC 0x98EFF6F1 b323</code>
 +
 +<code>This native converts its past string to hash. It is hashed using jenkins one at a time method.</code>
 +==== SLERP_NEAR_QUATERNION ====
 +<code cpp>void MISC::SLERP_NEAR_QUATERNION(float t, float x, float y, float z, float w, float x1, float y1, float z1, float w1, float* outX, float* outY, float* outZ, float* outW) // 0xF2F6A2FA49278625 0x87B92190 b323</code>
 +
 +<code>This native always come right before SET_ENTITY_QUATERNION where its final 4 parameters are SLERP_NEAR_QUATERNION p9 to p12</code>
 +==== IS_AREA_OCCUPIED ====
 +<code cpp>BOOL MISC::IS_AREA_OCCUPIED(float p0, float p1, float p2, float p3, float p4, float p5, BOOL p6, BOOL p7, BOOL p8, BOOL p9, BOOL p10, Any p11, BOOL p12) // 0xA61B4DF533DCB56E 0xC013972F b323</code>
 +
 +==== _0x39455BF4F4F55186 ====
 +<code cpp>Any MISC::_0x39455BF4F4F55186(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9, Any p10, Any p11, Any p12) // 0x39455BF4F4F55186  b1868</code>
 +
 +==== IS_POSITION_OCCUPIED ====
 +<code cpp>BOOL MISC::IS_POSITION_OCCUPIED(float x, float y, float z, float range, BOOL p4, BOOL checkVehicles, BOOL checkPeds, BOOL p7, BOOL p8, Entity ignoreEntity, BOOL p10) // 0xADCDE75E1C60F32D 0x452E8D9E b323</code>
 +
 +<code>`range`: The range, seems to not be very accurate during testing.
 +`p4`: Unknown, when set to true it seems to always return true no matter what I try.
 +`checkVehicle`: Check for any vehicles in that area.
 +`checkPeds`: Check for any peds in that area.
 +`ignoreEntity`: This entity will be ignored if it's in the area. Set to 0 if you don't want to exclude any entities.
 +The BOOL parameters that are documented have not been confirmed. They are just documented from what I've found during testing. They may not work as expected in all cases.
 +
 +Returns true if there is anything in that location matching the provided parameters.</code>
 +==== IS_POINT_OBSCURED_BY_A_MISSION_ENTITY ====
 +<code cpp>BOOL MISC::IS_POINT_OBSCURED_BY_A_MISSION_ENTITY(float p0, float p1, float p2, float p3, float p4, float p5, Any p6) // 0xE54E209C35FFA18D 0xC161558D b323</code>
 +
 +==== CLEAR_AREA ====
 +<code cpp>void MISC::CLEAR_AREA(float X, float Y, float Z, float radius, BOOL p4, BOOL ignoreCopCars, BOOL ignoreObjects, BOOL p7) // 0xA56F01F3765B93A0 0x854E9AB8 b323</code>
 +
 +<code>Example: CLEAR_AREA(0, 0, 0, 30, true, false, false, false);</code>
 +==== CLEAR_AREA_LEAVE_VEHICLE_HEALTH ====
 +<code cpp>void MISC::CLEAR_AREA_LEAVE_VEHICLE_HEALTH(float x, float y, float z, float radius, BOOL p4, BOOL p5, BOOL p6, BOOL p7) // 0x957838AAF91BD12D 0x20E4FFD9 b323</code>
 +
 +<code>MISC::_0x957838AAF91BD12D(x, y, z, radius, false, false, false, false); seem to make all objects go away, peds, vehicles etc. All booleans set to true doesn't seem to change anything. </code>
 +==== CLEAR_AREA_OF_VEHICLES ====
 +<code cpp>void MISC::CLEAR_AREA_OF_VEHICLES(float x, float y, float z, float radius, BOOL p4, BOOL p5, BOOL p6, BOOL p7, BOOL p8, BOOL p9) // 0x01C7B9B38428AEB6 0x63320F3C b323</code>
 +
 +<code>Example:
 +CLEAR_AREA_OF_VEHICLES(0.0f, 0.0f, 0.0f, 10000.0f, false, false, false, false, false, false);</code>
 +==== CLEAR_ANGLED_AREA_OF_VEHICLES ====
 +<code cpp>void MISC::CLEAR_ANGLED_AREA_OF_VEHICLES(float x1, float y1, float z1, float x2, float y2, float z2, float width, BOOL p7, BOOL p8, BOOL p9, BOOL p10, BOOL p11, Any p12) // 0x11DB3500F042A8AA 0xF11A3018 b323</code>
 +
 +==== CLEAR_AREA_OF_OBJECTS ====
 +<code cpp>void MISC::CLEAR_AREA_OF_OBJECTS(float x, float y, float z, float radius, int flags) // 0xDD9B9B385AAC7F5B 0xBB720FE7 b323</code>
 +
 +<code>I looked through the PC scripts that this site provides you with a link to find. It shows the last param mainly uses, (0, 2, 6, 16, and 17) so I am going to assume it is a type of flag. </code>
 +==== CLEAR_AREA_OF_PEDS ====
 +<code cpp>void MISC::CLEAR_AREA_OF_PEDS(float x, float y, float z, float radius, int flags) // 0xBE31FD6CE464AC59 0x25BE7FA8 b323</code>
 +
 +<code>Example:       CLEAR_AREA_OF_PEDS(0, 0, 0, 10000, 1);</code>
 +==== CLEAR_AREA_OF_COPS ====
 +<code cpp>void MISC::CLEAR_AREA_OF_COPS(float x, float y, float z, float radius, int flags) // 0x04F8FC8FCF58F88D 0x95C53824 b323</code>
 +
 +<code>flags appears to always be 0</code>
 +==== CLEAR_AREA_OF_PROJECTILES ====
 +<code cpp>void MISC::CLEAR_AREA_OF_PROJECTILES(float x, float y, float z, float radius, int flags) // 0x0A1CB9094635D1A6 0x18DB5434 b323</code>
 +
 +<code>flags is usually 0 in the scripts.</code>
 +==== _0x7EC6F9A478A6A512 ====
 +<code cpp>void MISC::_0x7EC6F9A478A6A512() // 0x7EC6F9A478A6A512  b323</code>
 +
 +<code>Possibly used to clear scenario points.
 +
 +CLEAR_*</code>
 +==== SET_SAVE_MENU_ACTIVE ====
 +<code cpp>void MISC::SET_SAVE_MENU_ACTIVE(BOOL ignoreVehicle) // 0xC9BF75D28165FF77 0xF5CCF164 b323</code>
 +
 +<code>ignoreVehicle - bypasses vehicle check of the local player (it will not open if you are in a vehicle and this is set to false)</code>
 +==== _0x397BAA01068BAA96 ====
 +<code cpp>int MISC::_0x397BAA01068BAA96() // 0x397BAA01068BAA96 0x39771F21 b323</code>
 +
 +==== SET_CREDITS_ACTIVE ====
 +<code cpp>void MISC::SET_CREDITS_ACTIVE(BOOL toggle) // 0xB938B7E6D3C0620C 0xEC2A0ECF b323</code>
 +
 +==== _0xB51B9AB9EF81868C ====
 +<code cpp>void MISC::_0xB51B9AB9EF81868C(BOOL toggle) // 0xB51B9AB9EF81868C 0x75B06B5A b323</code>
 +
 +==== HAVE_CREDITS_REACHED_END ====
 +<code cpp>BOOL MISC::HAVE_CREDITS_REACHED_END() // 0x075F1D57402C93BA 0x2569C9A7 b323</code>
 +
 +==== TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME ====
 +<code cpp>void MISC::TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(const char* scriptName) // 0x9DC711BC69C548DF 0x9F861FD4 b323</code>
 +
 +<code>For a full list, see here: pastebin.com/yLNWicUi</code>
 +==== NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME ====
 +<code cpp>void MISC::NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() // 0x9243BAC96D64C050 0x878486CE b323</code>
 +
 +==== ADD_HOSPITAL_RESTART ====
 +<code cpp>int MISC::ADD_HOSPITAL_RESTART(float x, float y, float z, float p3, Any p4) // 0x1F464EF988465A81 0x4F3E3104 b323</code>
 +
 +<code>Returns the index of the newly created hospital spawn point.
 +
 +p3 might be radius?</code>
 +==== DISABLE_HOSPITAL_RESTART ====
 +<code cpp>void MISC::DISABLE_HOSPITAL_RESTART(int hospitalIndex, BOOL toggle) // 0xC8535819C450EBA8 0x09F49C72 b323</code>
 +
 +<code>The game by default has 5 hospital respawn points. Disabling them all will cause the player to respawn at the last position they were.</code>
 +==== ADD_POLICE_RESTART ====
 +<code cpp>Any MISC::ADD_POLICE_RESTART(float p0, float p1, float p2, float p3, Any p4) // 0x452736765B31FC4B 0xE96C29FE b323</code>
 +
 +==== DISABLE_POLICE_RESTART ====
 +<code cpp>void MISC::DISABLE_POLICE_RESTART(int policeIndex, BOOL toggle) // 0x23285DED6EBD7EA3 0x0A280324 b323</code>
 +
 +<code>Disables the spawn point at the police house on the specified index.
 +
 +policeIndex: The police house index.
 +toggle: true to enable the spawn point, false to disable.
 +
 +- Nacorpio</code>
 +==== _SET_RESTART_CUSTOM_POSITION ====
 +<code cpp>void MISC::_SET_RESTART_CUSTOM_POSITION(float x, float y, float z, float heading) // 0x706B5EDCAA7FA663  b323</code>
 +
 +==== _CLEAR_RESTART_CUSTOM_POSITION ====
 +<code cpp>void MISC::_CLEAR_RESTART_CUSTOM_POSITION() // 0xA2716D40842EAF79  b323</code>
 +
 +==== PAUSE_DEATH_ARREST_RESTART ====
 +<code cpp>void MISC::PAUSE_DEATH_ARREST_RESTART(BOOL toggle) // 0x2C2B3493FBF51C71 0x296574AE b323</code>
 +
 +==== IGNORE_NEXT_RESTART ====
 +<code cpp>void MISC::IGNORE_NEXT_RESTART(BOOL toggle) // 0x21FFB63D8C615361 0xDA13A4B6 b323</code>
 +
 +==== SET_FADE_OUT_AFTER_DEATH ====
 +<code cpp>void MISC::SET_FADE_OUT_AFTER_DEATH(BOOL toggle) // 0x4A18E01DF2C87B86 0xC9F6F0BC b323</code>
 +
 +<code>Sets whether the game should fade out after the player dies.</code>
 +==== SET_FADE_OUT_AFTER_ARREST ====
 +<code cpp>void MISC::SET_FADE_OUT_AFTER_ARREST(BOOL toggle) // 0x1E0B4DC0D990A4E7 0xCB074B9D b323</code>
 +
 +<code>Sets whether the game should fade out after the player is arrested.</code>
 +==== SET_FADE_IN_AFTER_DEATH_ARREST ====
 +<code cpp>void MISC::SET_FADE_IN_AFTER_DEATH_ARREST(BOOL toggle) // 0xDA66D2796BA33F12 0xACDE6985 b323</code>
 +
 +<code>Sets whether the game should fade in after the player dies or is arrested.</code>
 +==== SET_FADE_IN_AFTER_LOAD ====
 +<code cpp>void MISC::SET_FADE_IN_AFTER_LOAD(BOOL toggle) // 0xF3D78F59DFE18D79 0x6E00EB0B b323</code>
 +
 +==== REGISTER_SAVE_HOUSE ====
 +<code cpp>Any MISC::REGISTER_SAVE_HOUSE(float p0, float p1, float p2, float p3, Any* p4, Any p5, Any p6) // 0xC0714D0A7EEECA54 0x39C1849A b323</code>
 +
 +==== SET_SAVE_HOUSE ====
 +<code cpp>void MISC::SET_SAVE_HOUSE(Any p0, BOOL p1, BOOL p2) // 0x4F548CABEAE553BC 0xC3240BB4 b323</code>
 +
 +==== OVERRIDE_SAVE_HOUSE ====
 +<code cpp>BOOL MISC::OVERRIDE_SAVE_HOUSE(BOOL p0, float p1, float p2, float p3, float p4, BOOL p5, float p6, float p7) // 0x1162EA8AE9D24EEA 0x47436C12 b323</code>
 +
 +==== _0xA4A0065E39C9F25C ====
 +<code cpp>BOOL MISC::_0xA4A0065E39C9F25C(Vector3* p0, float* p1, BOOL* fadeInAfterLoad, BOOL* p3) // 0xA4A0065E39C9F25C 0xC4D71AB4 b323</code>
 +
 +<code>GET_SAVE_*
 +
 +GET_SAVE_UNLESS_CUSTOM_DOT ?</code>
 +==== DO_AUTO_SAVE ====
 +<code cpp>void MISC::DO_AUTO_SAVE() // 0x50EEAAD86232EE55 0x54C44B1A b323</code>
 +
 +==== GET_IS_AUTO_SAVE_OFF ====
 +<code cpp>BOOL MISC::GET_IS_AUTO_SAVE_OFF() // 0x6E04F06094C87047 0xA8546914 b323</code>
 +
 +<code>Returns true if profile setting 208 is equal to 0.</code>
 +==== IS_AUTO_SAVE_IN_PROGRESS ====
 +<code cpp>BOOL MISC::IS_AUTO_SAVE_IN_PROGRESS() // 0x69240733738C19A0 0x36F75399 b323</code>
 +
 +==== _0x2107A3773771186D ====
 +<code cpp>BOOL MISC::_0x2107A3773771186D() // 0x2107A3773771186D 0x78350773 b323</code>
 +
 +<code>HAS_*</code>
 +==== _0x06462A961E94B67C ====
 +<code cpp>void MISC::_0x06462A961E94B67C() // 0x06462A961E94B67C 0x5A45B11A b323</code>
 +
 +<code>CLEAR_*</code>
 +==== BEGIN_REPLAY_STATS ====
 +<code cpp>void MISC::BEGIN_REPLAY_STATS(Any p0, Any p1) // 0xE0E500246FF73D66 0x17F4F44D b323</code>
 +
 +==== ADD_REPLAY_STAT_VALUE ====
 +<code cpp>void MISC::ADD_REPLAY_STAT_VALUE(Any value) // 0x69FE6DC87BD2A5E9 0x81216EE0 b323</code>
 +
 +==== END_REPLAY_STATS ====
 +<code cpp>void MISC::END_REPLAY_STATS() // 0xA23E821FBDF8A5F2 0xCB570185 b323</code>
 +
 +==== _0xD642319C54AADEB6 ====
 +<code cpp>Any MISC::_0xD642319C54AADEB6() // 0xD642319C54AADEB6 0xC58250F1 b323</code>
 +
 +==== _0x5B1F2E327B6B6FE1 ====
 +<code cpp>Any MISC::_0x5B1F2E327B6B6FE1() // 0x5B1F2E327B6B6FE1 0x50C39926 b323</code>
 +
 +==== GET_REPLAY_STAT_MISSION_TYPE ====
 +<code cpp>int MISC::GET_REPLAY_STAT_MISSION_TYPE() // 0x2B626A0150E4D449 0x710E5D1E b323</code>
 +
 +==== GET_REPLAY_STAT_COUNT ====
 +<code cpp>int MISC::GET_REPLAY_STAT_COUNT() // 0xDC9274A7EF6B2867 0xC7BD1AF0 b323</code>
 +
 +==== GET_REPLAY_STAT_AT_INDEX ====
 +<code cpp>int MISC::GET_REPLAY_STAT_AT_INDEX(int index) // 0x8098C8D6597AAE18 0x22BE2423 b323</code>
 +
 +==== CLEAR_REPLAY_STATS ====
 +<code cpp>void MISC::CLEAR_REPLAY_STATS() // 0x1B1AB132A16FDA55 0xC47DFF02 b323</code>
 +
 +==== _0x72DE52178C291CB5 ====
 +<code cpp>Any MISC::_0x72DE52178C291CB5() // 0x72DE52178C291CB5 0xF62B3C48 b323</code>
 +
 +==== _0x44A0BDC559B35F6E ====
 +<code cpp>BOOL MISC::_0x44A0BDC559B35F6E() // 0x44A0BDC559B35F6E 0x3589452B b323</code>
 +
 +<code>Shows the screen which is visible before you redo a mission? The game will make a restoration point where you will cameback when the mission is over.
 +Returns 1 if the message isn't currently on screen</code>
 +==== _0xEB2104E905C6F2E9 ====
 +<code cpp>Any MISC::_0xEB2104E905C6F2E9() // 0xEB2104E905C6F2E9  b323</code>
 +
 +==== _0x2B5E102E4A42F2BF ====
 +<code cpp>Any MISC::_0x2B5E102E4A42F2BF() // 0x2B5E102E4A42F2BF 0x144AAF22 b323</code>
 +
 +==== IS_MEMORY_CARD_IN_USE ====
 +<code cpp>BOOL MISC::IS_MEMORY_CARD_IN_USE() // 0x8A75CE2956274ADD 0x40CE4DFD b323</code>
 +
 +==== SHOOT_SINGLE_BULLET_BETWEEN_COORDS ====
 +<code cpp>void MISC::SHOOT_SINGLE_BULLET_BETWEEN_COORDS(float x1, float y1, float z1, float x2, float y2, float z2, int damage, BOOL p7, Hash weaponHash, Ped ownerPed, BOOL isAudible, BOOL isInvisible, float speed) // 0x867654CBC7606F2C 0xCB7415AC b323</code>
 +
 +==== SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY ====
 +<code cpp>void MISC::SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY(float x1, float y1, float z1, float x2, float y2, float z2, int damage, BOOL p7, Hash weaponHash, Ped ownerPed, BOOL isAudible, BOOL isInvisible, float speed, Entity entity, Any p14) // 0xE3A7742E0B7A2F8B 0x52ACCB7B b323</code>
 +
 +<code>entity - entity to ignore</code>
 +==== SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY_NEW ====
 +<code cpp>void MISC::SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY_NEW(float x1, float y1, float z1, float x2, float y2, float z2, int damage, BOOL p7, Hash weaponHash, Ped ownerPed, BOOL isAudible, BOOL isInvisible, float speed, Entity entity, BOOL p14, BOOL p15, BOOL p16, BOOL p17, Any p18, Any p19, Any p20) // 0xBFE5756E7407064A 0xCCDC33CC b323</code>
 +
 +<code>entity - entity to ignore</code>
 +==== GET_MODEL_DIMENSIONS ====
 +<code cpp>void MISC::GET_MODEL_DIMENSIONS(Hash modelHash, Vector3* minimum, Vector3* maximum) // 0x03E8D3D5F549087A 0x91ABB8E0 b323</code>
 +
 +<code>Gets the dimensions of a model.
 +
 +Calculate (maximum - minimum) to get the size, in which case, Y will be how long the model is.
 +
 +Example from the scripts: MISC::GET_MODEL_DIMENSIONS(ENTITY::GET_ENTITY_MODEL(PLAYER::PLAYER_PED_ID()), &v_1A, &v_17);</code>
 +==== SET_FAKE_WANTED_LEVEL ====
 +<code cpp>void MISC::SET_FAKE_WANTED_LEVEL(int fakeWantedLevel) // 0x1454F2448DE30163 0x85B1C9FA b323</code>
 +
 +<code>Sets a visually fake wanted level on the user interface. Used by Rockstar's scripts to "override" regular wanted levels and make custom ones while the real wanted level and multipliers are still in effect.
 +
 +Max is 6, anything above this makes it just 6. Also the mini-map gets the red & blue flashing effect.</code>
 +==== GET_FAKE_WANTED_LEVEL ====
 +<code cpp>int MISC::GET_FAKE_WANTED_LEVEL() // 0x4C9296CBCD1B971E 0x0022A430 b323</code>
 +
 +==== IS_BIT_SET ====
 +<code cpp>BOOL MISC::IS_BIT_SET(int address, int offset) // 0xA921AA820C25702F 0x902E26AC b323</code>
 +
 +<code>Returns bit's boolean state from [offset] of [address].
 +
 +Example:
 +MISC::IS_BIT_SET(bitAddress, 1);
 +
 +To enable and disable bits, see:
 +MISC::SET_BIT(&bitAddress, 1);   // enable
 +MISC::CLEAR_BIT(&bitAddress, 1); // disable</code>
 +==== USING_MISSION_CREATOR ====
 +<code cpp>void MISC::USING_MISSION_CREATOR(BOOL toggle) // 0xF14878FC50BEC6EE 0x20AB0B6B b323</code>
 +
 +==== ALLOW_MISSION_CREATOR_WARP ====
 +<code cpp>void MISC::ALLOW_MISSION_CREATOR_WARP(BOOL toggle) // 0xDEA36202FC3382DF 0x082BA6F2 b323</code>
 +
 +==== SET_MINIGAME_IN_PROGRESS ====
 +<code cpp>void MISC::SET_MINIGAME_IN_PROGRESS(BOOL toggle) // 0x19E00D7322C6F85B 0x348B9046 b323</code>
 +
 +==== IS_MINIGAME_IN_PROGRESS ====
 +<code cpp>BOOL MISC::IS_MINIGAME_IN_PROGRESS() // 0x2B4A15E44DE0F478 0x53A95E13 b323</code>
 +
 +==== IS_THIS_A_MINIGAME_SCRIPT ====
 +<code cpp>BOOL MISC::IS_THIS_A_MINIGAME_SCRIPT() // 0x7B30F65D7B710098 0x7605EF6F b323</code>
 +
 +==== IS_SNIPER_INVERTED ====
 +<code cpp>BOOL MISC::IS_SNIPER_INVERTED() // 0x61A23B7EDA9BDA24 0x5C3BF51B b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== SHOULD_USE_METRIC_MEASUREMENTS ====
 +<code cpp>BOOL MISC::SHOULD_USE_METRIC_MEASUREMENTS() // 0xD3D15555431AB793 0xBAF17315 b323</code>
 +
 +<code>Returns true if the game is using the metric measurement system (profile setting 227), false if imperial is used.</code>
 +==== GET_PROFILE_SETTING ====
 +<code cpp>int MISC::GET_PROFILE_SETTING(int profileSetting) // 0xC488FF2356EA7791 0xD374BEBC b323</code>
 +
 +==== ARE_STRINGS_EQUAL ====
 +<code cpp>BOOL MISC::ARE_STRINGS_EQUAL(const char* string1, const char* string2) // 0x0C515FAB3FF9EA92 0x877C0BC5 b323</code>
 +
 +==== COMPARE_STRINGS ====
 +<code cpp>int MISC::COMPARE_STRINGS(const char* str1, const char* str2, BOOL matchCase, int maxLength) // 0x1E34710ECD4AB0EB 0xFE25A58F b323</code>
 +
 +<code>Compares two strings up to a specified number of characters.
 +
 +Parameters:
 +str1 - String to be compared.
 +str2 - String to be compared.
 +matchCase - Comparison will be case-sensitive.
 +maxLength - Maximum number of characters to compare. A value of -1 indicates an infinite length.
 +
 +Returns:
 +A value indicating the relationship between the strings:
 +<0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'A' < 'B', so result = -1)
 +0 - The contents of both strings are equal.
 +>0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'B' > 'A', so result = 1)
 +
 +Examples:
 +MISC::COMPARE_STRINGS("STRING", "string", false, -1); // 0; equal
 +MISC::COMPARE_STRINGS("TESTING", "test", false, 4); // 0; equal
 +MISC::COMPARE_STRINGS("R2D2", "R2xx", false, 2); // 0; equal
 +MISC::COMPARE_STRINGS("foo", "bar", false, -1); // 4; 'f' > 'b'
 +MISC::COMPARE_STRINGS("A", "A", true, 1); // 0; equal
 +
 +When comparing case-sensitive strings, lower-case characters are greater than upper-case characters:
 +MISC::COMPARE_STRINGS("A", "a", true, 1); // -1; 'A' < 'a'
 +MISC::COMPARE_STRINGS("a", "A", true, 1); // 1; 'a' > 'A'</code>
 +==== ABSI ====
 +<code cpp>int MISC::ABSI(int value) // 0xF0D31AD191A74F87 0xB44677C5 b323</code>
 +
 +==== ABSF ====
 +<code cpp>float MISC::ABSF(float value) // 0x73D57CFFDD12C355 0xAF6F6E0B b323</code>
 +
 +==== IS_SNIPER_BULLET_IN_AREA ====
 +<code cpp>BOOL MISC::IS_SNIPER_BULLET_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2) // 0xFEFCF11B01287125 0x0483715C b323</code>
 +
 +<code>Determines whether there is a sniper bullet within the specified coordinates. The coordinates form an axis-aligned bounding box.</code>
 +==== IS_PROJECTILE_IN_AREA ====
 +<code cpp>BOOL MISC::IS_PROJECTILE_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL ownedByPlayer) // 0x5270A8FBC098C3F8 0x78E1A557 b323</code>
 +
 +<code>Determines whether there is a projectile within the specified coordinates. The coordinates form a rectangle.
 +
 +- Nacorpio
 +
 +
 +ownedByPlayer = only projectiles fired by the player will be detected.</code>
 +==== IS_PROJECTILE_TYPE_IN_AREA ====
 +<code cpp>BOOL MISC::IS_PROJECTILE_TYPE_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, int type, BOOL ownedByPlayer) // 0x2E0DC353342C4A6D 0x2B73BCF6 b323</code>
 +
 +<code>Determines whether there is a projectile of a specific type within the specified coordinates. The coordinates form a axis-aligned bounding box.</code>
 +==== IS_PROJECTILE_TYPE_IN_ANGLED_AREA ====
 +<code cpp>BOOL MISC::IS_PROJECTILE_TYPE_IN_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width, Any p7, BOOL ownedByPlayer) // 0xF0BC12401061DEA0 0xD1AE2681 b323</code>
 +
 +<code>See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.</code>
 +==== IS_PROJECTILE_TYPE_WITHIN_DISTANCE ====
 +<code cpp>BOOL MISC::IS_PROJECTILE_TYPE_WITHIN_DISTANCE(float x, float y, float z, Hash projectileHash, float radius, BOOL ownedByPlayer) // 0x34318593248C8FB2 0xBE81F1E2 b323</code>
 +
 +==== GET_COORDS_OF_PROJECTILE_TYPE_IN_AREA ====
 +<code cpp>BOOL MISC::GET_COORDS_OF_PROJECTILE_TYPE_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, Hash projectileHash, Vector3* projectilePos, BOOL ownedByPlayer) // 0x8D7A43EC6A5FEA45 0x1A40454B b323</code>
 +
 +==== GET_COORDS_OF_PROJECTILE_TYPE_WITHIN_DISTANCE ====
 +<code cpp>Vector3 MISC::GET_COORDS_OF_PROJECTILE_TYPE_WITHIN_DISTANCE(Ped ped, Hash weaponHash, float radius, Entity* entity, BOOL ownedByPlayer) // 0xDFB4138EEFED7B81 0x6BDE5CE4 b323</code>
 +
 +==== _GET_PROJECTILE_NEAR_PED ====
 +<code cpp>BOOL MISC::_GET_PROJECTILE_NEAR_PED(Ped ped, Hash weaponhash, float p2, float p3, float p4, BOOL p5) // 0x82FDE6A57EE4EE44 0x507BC6F7 b323</code>
 +
 +<code>GET_PROJECTILE_*</code>
 +==== IS_BULLET_IN_ANGLED_AREA ====
 +<code cpp>BOOL MISC::IS_BULLET_IN_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width, BOOL ownedByPlayer) // 0x1A8B5F3C01E2B477 0xE2DB58F7 b323</code>
 +
 +<code>For projectiles, see: IS_PROJECTILE_TYPE_IN_ANGLED_AREA
 +See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
 +Returns True if a bullet, as maintained by a pool within CWeaponManager, has been fired into the defined angled area.</code>
 +==== IS_BULLET_IN_AREA ====
 +<code cpp>BOOL MISC::IS_BULLET_IN_AREA(float x, float y, float z, float radius, BOOL ownedByPlayer) // 0x3F2023999AD51C1F 0xB54F46CA b323</code>
 +
 +==== IS_BULLET_IN_BOX ====
 +<code cpp>BOOL MISC::IS_BULLET_IN_BOX(float x1, float y1, float z1, float x2, float y2, float z2, BOOL ownedByPlayer) // 0xDE0F6D7450D37351 0xAB73ED26 b323</code>
 +
 +==== HAS_BULLET_IMPACTED_IN_AREA ====
 +<code cpp>BOOL MISC::HAS_BULLET_IMPACTED_IN_AREA(float x, float y, float z, float p3, BOOL p4, BOOL p5) // 0x9870ACFB89A90995 0x902BC7D9 b323</code>
 +
 +<code>p3 - possibly radius?</code>
 +==== HAS_BULLET_IMPACTED_IN_BOX ====
 +<code cpp>BOOL MISC::HAS_BULLET_IMPACTED_IN_BOX(float p0, float p1, float p2, float p3, float p4, float p5, BOOL p6, BOOL p7) // 0xDC8C5D7CFEAB8394 0x2C2618CC b323</code>
 +
 +==== IS_ORBIS_VERSION ====
 +<code cpp>BOOL MISC::IS_ORBIS_VERSION() // 0xA72BC0B675B1519E 0x40282018 b323</code>
 +
 +<code>PS4</code>
 +==== IS_DURANGO_VERSION ====
 +<code cpp>BOOL MISC::IS_DURANGO_VERSION() // 0x4D982ADB1978442D 0x46FB06A5 b323</code>
 +
 +<code>XBOX ONE</code>
 +==== IS_XBOX360_VERSION ====
 +<code cpp>BOOL MISC::IS_XBOX360_VERSION() // 0xF6201B4DAF662A9D 0x24005CC8 b323</code>
 +
 +==== IS_PS3_VERSION ====
 +<code cpp>BOOL MISC::IS_PS3_VERSION() // 0xCCA1072C29D096C2 0x4C0D5303 b323</code>
 +
 +==== IS_PC_VERSION ====
 +<code cpp>BOOL MISC::IS_PC_VERSION() // 0x48AF36444B965238 0x4D5D9EE3 b323</code>
 +
 +==== IS_AUSSIE_VERSION ====
 +<code cpp>BOOL MISC::IS_AUSSIE_VERSION() // 0x9F1935CA1F724008 0x944BA1DC b323</code>
 +
 +<code>if (MISC::IS_AUSSIE_VERSION()) {
 +    sub_127a9(&l_31, 1024); // l_31 |= 1024
 +    l_129 = 3;
 +    sub_129d2("AUSSIE VERSION IS TRUE!?!?!"); // DEBUG
 +}
 +
 +Used to block some of the prostitute stuff due to laws in Australia.</code>
 +==== IS_STRING_NULL ====
 +<code cpp>BOOL MISC::IS_STRING_NULL(const char* string) // 0xF22B6C47C6EAB066 0x8E71E00F b323</code>
 +
 +==== IS_STRING_NULL_OR_EMPTY ====
 +<code cpp>BOOL MISC::IS_STRING_NULL_OR_EMPTY(const char* string) // 0xCA042B6957743895 0x42E9F2CA b323</code>
 +
 +==== STRING_TO_INT ====
 +<code cpp>BOOL MISC::STRING_TO_INT(const char* string, int* outInteger) // 0x5A5F40FE637EB584 0x590A8160 b323</code>
 +
 +<code>Returns false if it's a null or empty string or if the string is too long. outInteger will be set to -999 in that case.
 +
 +If all checks have passed successfully, the return value will be set to whatever strtol(string, 0i64, 10); returns.</code>
 +==== SET_BITS_IN_RANGE ====
 +<code cpp>void MISC::SET_BITS_IN_RANGE(int* var, int rangeStart, int rangeEnd, int p3) // 0x8EF07E15701D61ED 0x32094719 b323</code>
 +
 +==== GET_BITS_IN_RANGE ====
 +<code cpp>int MISC::GET_BITS_IN_RANGE(int var, int rangeStart, int rangeEnd) // 0x53158863FCC0893A 0xCA03A1E5 b323</code>
 +
 +==== ADD_STUNT_JUMP ====
 +<code cpp>int MISC::ADD_STUNT_JUMP(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4, float camX, float camY, float camZ, int p15, int p16, int p17) // 0x1A992DA297A4630C 0xB630E5FF b323</code>
 +
 +<code>See description of `ADD_STUNT_JUMP_ANGLED` for detailed info. The only difference really is this one does not have the radius (or angle, not sure) floats parameters for entry and landing zones.</code>
 +==== ADD_STUNT_JUMP_ANGLED ====
 +<code cpp>int MISC::ADD_STUNT_JUMP_ANGLED(float x1, float y1, float z1, float x2, float y2, float z2, float radius1, float x3, float y3, float z3, float x4, float y4, float z4, float radius2, float camX, float camY, float camZ, int p17, int p18, int p19) // 0xBBE5D803A5360CBF 0xB9B7E777 b323</code>
 +
 +<code>Creates a new stunt jump.
 +
 +The radius1 and radius2 might actually not be a radius at all, but that's what it seems to me testing them in-game. But they may be 'angle' floats instead, considering this native is named ADD_STUNT_JUMP_**ANGLED**.
 +
 +Info about the specific 'parameter sections':
 +
 +
 +**x1, y1, z1, x2, y2, z2 and radius1:**
 +
 +First coordinates are for the jump entry area, and the radius that will be checked around that area. So if you're not exactly within the coordinates, but you are within the outter radius limit then it will still register as entering the stunt jump. Note as mentioned above, the radius is just a guess, I'm not really sure about it's exact purpose.
 +
 +
 +**x3, y3, z3, x4, y4, z4 and radius2:**
 +
 +Next part is the landing area, again starting with the left bottom (nearest to the stunt jump entry zone) coordinate, and the second one being the top right furthest away part of the landing area. Followed by another (most likely) radius float, this is usually slightly larger than the entry zone 'radius' float value, just because you have quite a lot of places where you can land (I'm guessing).
 +
 +
 +**camX, camY and camZ:**
 +
 +The final coordinate in this native is the Camera position. Rotation and zoom/FOV is managed by the game itself, you just need to provide the camera location.
 +
 +
 +**unk1, unk2 and unk3:**
 +
 +Not sure what these are for, but they're always `150, 0, 0` in decompiled scripts.
 +
 +Visualized example in-game: https://d.fivem.dev/2019-03-15_18-24_c7802_846.png
 +
 +Here is a list of almost all of the stunt jumps from GTA V (taken from decompiled scripts): https://pastebin.com/EW1jBPkY</code>
 +==== _0xFB80AB299D2EE1BD ====
 +<code cpp>void MISC::_0xFB80AB299D2EE1BD(BOOL toggle) // 0xFB80AB299D2EE1BD  b757</code>
 +
 +<code>Toggles some stunt jump stuff.</code>
 +==== DELETE_STUNT_JUMP ====
 +<code cpp>void MISC::DELETE_STUNT_JUMP(int p0) // 0xDC518000E39DAE1F 0x840CB5DA b323</code>
 +
 +==== ENABLE_STUNT_JUMP_SET ====
 +<code cpp>void MISC::ENABLE_STUNT_JUMP_SET(int p0) // 0xE369A5783B866016 0x9D1E7785 b323</code>
 +
 +==== DISABLE_STUNT_JUMP_SET ====
 +<code cpp>void MISC::DISABLE_STUNT_JUMP_SET(int p0) // 0xA5272EBEDD4747F6 0x644C9FA4 b323</code>
 +
 +==== SET_STUNT_JUMPS_CAN_TRIGGER ====
 +<code cpp>void MISC::SET_STUNT_JUMPS_CAN_TRIGGER(BOOL toggle) // 0xD79185689F8FD5DF 0x3C806A2D b323</code>
 +
 +==== IS_STUNT_JUMP_IN_PROGRESS ====
 +<code cpp>BOOL MISC::IS_STUNT_JUMP_IN_PROGRESS() // 0x7A3F19700A4D0525 0xF477D0B1 b323</code>
 +
 +==== IS_STUNT_JUMP_MESSAGE_SHOWING ====
 +<code cpp>BOOL MISC::IS_STUNT_JUMP_MESSAGE_SHOWING() // 0x2272B0A1343129F4 0x021636EE b323</code>
 +
 +==== GET_NUM_SUCCESSFUL_STUNT_JUMPS ====
 +<code cpp>int MISC::GET_NUM_SUCCESSFUL_STUNT_JUMPS() // 0x996DD1E1E02F1008 0x006F9BA2 b323</code>
 +
 +==== GET_TOTAL_SUCCESSFUL_STUNT_JUMPS ====
 +<code cpp>int MISC::GET_TOTAL_SUCCESSFUL_STUNT_JUMPS() // 0x6856EC3D35C81EA4 0x495BE324 b323</code>
 +
 +==== CANCEL_STUNT_JUMP ====
 +<code cpp>void MISC::CANCEL_STUNT_JUMP() // 0xE6B7B0ACD4E4B75E 0xF43D9821 b323</code>
 +
 +==== SET_GAME_PAUSED ====
 +<code cpp>void MISC::SET_GAME_PAUSED(BOOL toggle) // 0x577D1284D6873711 0x8230FF6C b323</code>
 +
 +<code>Make sure to call this from the correct thread if you're using multiple threads because all other threads except the one which is calling SET_GAME_PAUSED will be paused which means you will lose control and the game remains in paused mode until you exit GTA5.exe</code>
 +==== SET_THIS_SCRIPT_CAN_BE_PAUSED ====
 +<code cpp>void MISC::SET_THIS_SCRIPT_CAN_BE_PAUSED(BOOL toggle) // 0xAA391C728106F7AF 0xA0C3CE29 b323</code>
 +
 +==== SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT ====
 +<code cpp>void MISC::SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(BOOL toggle) // 0xB98236CAAECEF897 0xD06F1720 b323</code>
 +
 +==== _HAS_BUTTON_COMBINATION_JUST_BEEN_ENTERED ====
 +<code cpp>BOOL MISC::_HAS_BUTTON_COMBINATION_JUST_BEEN_ENTERED(Hash hash, int amount) // 0x071E2A839DE82D90 0xFF6191E1 b323</code>
 +
 +<code>This native appears on the cheat_controller script and tracks a combination of buttons, which may be used to toggle cheats in-game. Credits to ThreeSocks for the info. The hash contains the combination, while the "amount" represents the amount of buttons used in a combination. The following page can be used to make a button combination: gta5offset.com/ts/hash/
 +
 +INT_SCORES_SCORTED was a hash collision</code>
 +==== _HAS_CHEAT_STRING_JUST_BEEN_ENTERED ====
 +<code cpp>BOOL MISC::_HAS_CHEAT_STRING_JUST_BEEN_ENTERED(Hash hash) // 0x557E43C447E700A8  b323</code>
 +
 +<code>Get inputted "Cheat code", for example:
 +
 +while (TRUE)
 +{
 +    if (MISC::_557E43C447E700A8(${fugitive}))
 +    {
 +       // Do something.
 +    }
 +    SYSTEM::WAIT(0);
 +}
 +
 +Calling this will also set the last saved string hash to zero.
 +</code>
 +==== _0xFA3FFB0EEBC288A3 ====
 +<code cpp>void MISC::_0xFA3FFB0EEBC288A3(BOOL p0) // 0xFA3FFB0EEBC288A3  b2060</code>
 +
 +==== SET_INSTANCE_PRIORITY_MODE ====
 +<code cpp>void MISC::SET_INSTANCE_PRIORITY_MODE(int p0) // 0x9BAE5AD2508DF078 0x721B2492 b323</code>
 +
 +<code>Formerly known as _LOWER_MAP_PROP_DENSITY and wrongly due to idiots as _ENABLE_MP_DLC_MAPS.
 +Sets the maximum prop density and changes a loading screen flag from 'loading story mode' to 'loading GTA Online'. Does not touch DLC map data at all.
 +
 +In fact, I doubt this changes the flag whatsoever, that's the OTHER native idiots use together with this that does so, this one only causes a loading screen to show as it reloads map data.</code>
 +==== SET_INSTANCE_PRIORITY_HINT ====
 +<code cpp>void MISC::SET_INSTANCE_PRIORITY_HINT(int flag) // 0xC5F0A8EBD3F361CE 0xE202879D b323</code>
 +
 +<code>Sets an unknown flag used by CScene in determining which entities from CMapData scene nodes to draw, similar to SET_INSTANCE_PRIORITY_MODE.</code>
 +==== IS_FRONTEND_FADING ====
 +<code cpp>BOOL MISC::IS_FRONTEND_FADING() // 0x7EA2B6AF97ECA6ED 0x8FF6232C b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== POPULATE_NOW ====
 +<code cpp>void MISC::POPULATE_NOW() // 0x7472BB270D7B4F3E 0x72C20700 b323</code>
 +
 +<code>spawns a few distant/out-of-sight peds, vehicles, animals etc each time it is called</code>
 +==== GET_INDEX_OF_CURRENT_LEVEL ====
 +<code cpp>int MISC::GET_INDEX_OF_CURRENT_LEVEL() // 0xCBAD6729F7B1F4FC 0x6F203C6E b323</code>
 +
 +==== SET_GRAVITY_LEVEL ====
 +<code cpp>void MISC::SET_GRAVITY_LEVEL(int level) // 0x740E14FAD5842351 0x2D833F4A b323</code>
 +
 +<code>level can be from 0 to 3
 +0: 9.8 - normal
 +1: 2.4 - low
 +2: 0.1 - very low
 +3: 0.0 - off
 +
 +//SuckMyCoke</code>
 +==== START_SAVE_DATA ====
 +<code cpp>void MISC::START_SAVE_DATA(Any* p0, Any p1, BOOL p2) // 0xA9575F812C6A7997 0x881A694D b323</code>
 +
 +==== STOP_SAVE_DATA ====
 +<code cpp>void MISC::STOP_SAVE_DATA() // 0x74E20C9145FB66FD 0x3B1C07C8 b323</code>
 +
 +==== GET_SIZE_OF_SAVE_DATA ====
 +<code cpp>int MISC::GET_SIZE_OF_SAVE_DATA(BOOL p0) // 0xA09F896CE912481F 0x9EF0BC64 b323</code>
 +
 +==== REGISTER_INT_TO_SAVE ====
 +<code cpp>void MISC::REGISTER_INT_TO_SAVE(Any* p0, const char* name) // 0x34C9EE5986258415 0xB930956F b323</code>
 +
 +==== _REGISTER_INT64_TO_SAVE ====
 +<code cpp>void MISC::_REGISTER_INT64_TO_SAVE(Any* p0, const char* name) // 0xA735353C77334EA0  b323</code>
 +
 +==== REGISTER_ENUM_TO_SAVE ====
 +<code cpp>void MISC::REGISTER_ENUM_TO_SAVE(Any* p0, const char* name) // 0x10C2FA78D0E128A1 0x9B38374A b323</code>
 +
 +==== REGISTER_FLOAT_TO_SAVE ====
 +<code cpp>void MISC::REGISTER_FLOAT_TO_SAVE(Any* p0, const char* name) // 0x7CAEC29ECB5DFEBB 0xDB06F7AD b323</code>
 +
 +==== REGISTER_BOOL_TO_SAVE ====
 +<code cpp>void MISC::REGISTER_BOOL_TO_SAVE(Any* p0, const char* name) // 0xC8F4131414C835A1 0x5417E0E0 b323</code>
 +
 +==== REGISTER_TEXT_LABEL_TO_SAVE ====
 +<code cpp>void MISC::REGISTER_TEXT_LABEL_TO_SAVE(Any* p0, const char* name) // 0xEDB1232C5BEAE62F 0x284352C4 b323</code>
 +
 +==== _REGISTER_TEXT_LABEL_TO_SAVE_2 ====
 +<code cpp>void MISC::_REGISTER_TEXT_LABEL_TO_SAVE_2(Any* p0, const char* name) // 0x6F7794F28C6B2535 0xE2089749 b323</code>
 +
 +<code>Seems to have the same functionality as REGISTER_TEXT_LABEL_TO_SAVE?
 +
 +MISC::_6F7794F28C6B2535(&a_0._f1, "tlPlateText");
 +MISC::_6F7794F28C6B2535(&a_0._f1C, "tlPlateText_pending");
 +MISC::_6F7794F28C6B2535(&a_0._f10B, "tlCarAppPlateText");
 +
 +"tl" prefix sounds like "Text Label"</code>
 +==== _0x48F069265A0E4BEC ====
 +<code cpp>void MISC::_0x48F069265A0E4BEC(Any* p0, const char* name) // 0x48F069265A0E4BEC 0xF91B8C33 b323</code>
 +
 +<code>Only found 3 times in decompiled scripts. Not a whole lot to go off of.
 +
 +MISC::_48F069265A0E4BEC(a_0, "Movie_Name_For_This_Player");
 +MISC::_48F069265A0E4BEC(&a_0._fB, "Ringtone_For_This_Player");
 +MISC::_48F069265A0E4BEC(&a_0._f1EC4._f12[v_A/*6*/], &v_13); // where v_13 is "MPATMLOGSCRS0" thru "MPATMLOGSCRS15"</code>
 +==== _0x8269816F6CFD40F8 ====
 +<code cpp>void MISC::_0x8269816F6CFD40F8(Any* p0, const char* name) // 0x8269816F6CFD40F8 0x74E8FAD9 b323</code>
 +
 +<code>Only found 2 times in decompiled scripts. Not a whole lot to go off of.
 +
 +MISC::_8269816F6CFD40F8(&a_0._f1F5A._f6[0/*8*/], "TEMPSTAT_LABEL"); // gets saved in a struct called "g_SaveData_STRING_ScriptSaves"
 +MISC::_8269816F6CFD40F8(&a_0._f4B4[v_1A/*8*/], &v_5); // where v_5 is "Name0" thru "Name9", gets saved in a struct called "OUTFIT_Name"</code>
 +==== _0xFAA457EF263E8763 ====
 +<code cpp>void MISC::_0xFAA457EF263E8763(Any* p0, const char* name) // 0xFAA457EF263E8763 0x6B4335DD b323</code>
 +
 +<code>Another unknown label type...
 +
 +MISC::_FAA457EF263E8763(a_0, "Thumb_label");
 +MISC::_FAA457EF263E8763(&a_0._f10, "Photo_label");
 +MISC::_FAA457EF263E8763(a_0, "GXTlabel");
 +MISC::_FAA457EF263E8763(&a_0._f21, "StringComp");
 +MISC::_FAA457EF263E8763(&a_0._f43, "SecondStringComp");
 +MISC::_FAA457EF263E8763(&a_0._f53, "ThirdStringComp");
 +MISC::_FAA457EF263E8763(&a_0._f32, "SenderStringComp");
 +MISC::_FAA457EF263E8763(&a_0._f726[v_1A/*16*/], &v_20); // where v_20 is "LastJobTL_0_1" thru "LastJobTL_2_1", gets saved in a struct called "LAST_JobGamer_TL"
 +MISC::_FAA457EF263E8763(&a_0._f4B, "PAID_PLAYER");
 +MISC::_FAA457EF263E8763(&a_0._f5B, "RADIO_STATION");</code>
 +==== START_SAVE_STRUCT_WITH_SIZE ====
 +<code cpp>void MISC::START_SAVE_STRUCT_WITH_SIZE(Any* p0, int size, const char* structName) // 0xBF737600CDDBEADD 0xFB45728E b323</code>
 +
 +==== STOP_SAVE_STRUCT ====
 +<code cpp>void MISC::STOP_SAVE_STRUCT() // 0xEB1774DF12BB9F12 0xC2624A28 b323</code>
 +
 +==== START_SAVE_ARRAY_WITH_SIZE ====
 +<code cpp>void MISC::START_SAVE_ARRAY_WITH_SIZE(Any* p0, int size, const char* arrayName) // 0x60FE567DF1B1AF9D 0x893A342C b323</code>
 +
 +==== STOP_SAVE_ARRAY ====
 +<code cpp>void MISC::STOP_SAVE_ARRAY() // 0x04456F95153C6BE4 0x0CAD8217 b323</code>
 +
 +==== _COPY_MEMORY ====
 +<code cpp>void MISC::_COPY_MEMORY(Any* dst, Any* src, int size) // 0x213AEB2B90CBA7AC  b877</code>
 +
 +==== ENABLE_DISPATCH_SERVICE ====
 +<code cpp>void MISC::ENABLE_DISPATCH_SERVICE(int dispatchService, BOOL toggle) // 0xDC0F817884CDD856 0x0B710A51 b323</code>
 +
 +<code>https://alloc8or.re/gta5/doc/enums/DispatchType.txt</code>
 +==== BLOCK_DISPATCH_SERVICE_RESOURCE_CREATION ====
 +<code cpp>void MISC::BLOCK_DISPATCH_SERVICE_RESOURCE_CREATION(int dispatchService, BOOL toggle) // 0x9B2BD3773123EA2F 0xE0F0684F b323</code>
 +
 +==== _GET_NUM_DISPATCHED_UNITS_FOR_PLAYER ====
 +<code cpp>int MISC::_GET_NUM_DISPATCHED_UNITS_FOR_PLAYER(int dispatchService) // 0xEB4A0C2D56441717 0x3CE5BF6B b323</code>
 +
 +==== CREATE_INCIDENT ====
 +<code cpp>BOOL MISC::CREATE_INCIDENT(int dispatchService, float x, float y, float z, int numUnits, float radius, int* outIncidentID, Any p7, Any p8) // 0x3F892CAF67444AE7 0xFC5FF7B3 b323</code>
 +
 +<code>As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f. 
 +
 +Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).
 +
 +Side Note 2: I say it breaks as if you call this proper,
 +if(CREATE_INCIDENT) etc it will return false if you do as I said above.
 +=====================================================</code>
 +==== CREATE_INCIDENT_WITH_ENTITY ====
 +<code cpp>BOOL MISC::CREATE_INCIDENT_WITH_ENTITY(int dispatchService, Ped ped, int numUnits, float radius, int* outIncidentID, Any p5, Any p6) // 0x05983472F0494E60 0xBBC35B03 b323</code>
 +
 +<code>As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f. 
 +
 +Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).
 +
 +Side Note 2: I say it breaks as if you call this proper,
 +if(CREATE_INCIDENT) etc it will return false if you do as I said above.
 +=====================================================</code>
 +==== DELETE_INCIDENT ====
 +<code cpp>void MISC::DELETE_INCIDENT(int incidentId) // 0x556C1AA270D5A207 0x212BD0DC b323</code>
 +
 +<code>Delete an incident with a given id.
 +
 +=======================================================
 +Correction, I have change this to int, instead of int*
 +as it doesn't use a pointer to the createdIncident.
 +If you try it you will crash (or) freeze.
 +=======================================================</code>
 +==== IS_INCIDENT_VALID ====
 +<code cpp>BOOL MISC::IS_INCIDENT_VALID(int incidentId) // 0xC8BC6461E629BEAA 0x31FD0BA4 b323</code>
 +
 +<code>=======================================================
 +Correction, I have change this to int, instead of int*
 +as it doesn't use a pointer to the createdIncident.
 +If you try it you will crash (or) freeze.
 +=======================================================</code>
 +==== SET_INCIDENT_REQUESTED_UNITS ====
 +<code cpp>void MISC::SET_INCIDENT_REQUESTED_UNITS(int incidentId, int dispatchService, int numUnits) // 0xB08B85D860E7BA3C 0x0242D88E b323</code>
 +
 +==== _SET_INCIDENT_UNK ====
 +<code cpp>void MISC::_SET_INCIDENT_UNK(int incidentId, float p1) // 0xD261BA3E7E998072 0x1F38102E b323</code>
 +
 +<code>SET_INCIDENT_*</code>
 +==== FIND_SPAWN_POINT_IN_DIRECTION ====
 +<code cpp>BOOL MISC::FIND_SPAWN_POINT_IN_DIRECTION(float x1, float y1, float z1, float x2, float y2, float z2, float distance, Vector3* spawnPoint) // 0x6874E2190B0C1972 0x71AEFD77 b323</code>
 +
 +<code>Finds a position ahead of the player by predicting the players next actions.
 +The positions match path finding node positions.
 +When roads diverge, the position may rapidly change between two or more positions. This is due to the engine not being certain of which path the player will take.
 +
 +=======================================================
 +I may sort this with alter research, but if someone
 +already knows please tell what the difference in 
 +X2, Y2, Z2 is. I doubt it's rotation. Is it like 
 +checkpoints where X1, Y1, Z1 is your/a position and
 +X2, Y2, Z2 is a given position ahead of that position?
 +=======================================================</code>
 +==== ADD_POP_MULTIPLIER_AREA ====
 +<code cpp>int MISC::ADD_POP_MULTIPLIER_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float p6, float p7, BOOL p8, BOOL p9) // 0x67F6413D3220E18D 0x42BF09B3 b323</code>
 +
 +==== DOES_POP_MULTIPLIER_AREA_EXIST ====
 +<code cpp>BOOL MISC::DOES_POP_MULTIPLIER_AREA_EXIST(int id) // 0x1327E2FE9746BAEE 0xE933B34A b323</code>
 +
 +==== REMOVE_POP_MULTIPLIER_AREA ====
 +<code cpp>void MISC::REMOVE_POP_MULTIPLIER_AREA(int id, BOOL p1) // 0xB129E447A2EDA4BF 0xFBDBE374 b323</code>
 +
 +==== _IS_POP_MULTIPLIER_AREA_UNK ====
 +<code cpp>BOOL MISC::_IS_POP_MULTIPLIER_AREA_UNK(int id) // 0x1312F4B242609CE3  b1290</code>
 +
 +==== ADD_POP_MULTIPLIER_SPHERE ====
 +<code cpp>int MISC::ADD_POP_MULTIPLIER_SPHERE(float x, float y, float z, float radius, float pedMultiplier, float vehicleMultiplier, BOOL p6, BOOL p7) // 0x32C7A7E8C43A1F80 0xCE4A3D20 b323</code>
 +
 +<code>This native is adding a zone, where you can change density settings. For example, you can add a zone on 0.0, 0.0, 0.0 with radius 900.0 and vehicleMultiplier 0.0, and you will not see any new population vehicle spawned in a radius of 900.0 from 0.0, 0.0, 0.0. Returns the id. You can have only 15 zones at the same time. You can remove zone using REMOVE_POP_MULTIPLIER_SPHERE</code>
 +==== DOES_POP_MULTIPLIER_SPHERE_EXIST ====
 +<code cpp>BOOL MISC::DOES_POP_MULTIPLIER_SPHERE_EXIST(int id) // 0x171BAFB3C60389F4 0xD2B7A5A0 b791</code>
 +
 +==== REMOVE_POP_MULTIPLIER_SPHERE ====
 +<code cpp>void MISC::REMOVE_POP_MULTIPLIER_SPHERE(int id, BOOL p1) // 0xE6869BECDD8F2403 0x92E7E4EB b323</code>
 +
 +<code>Removes population multiplier sphere</code>
 +==== ENABLE_TENNIS_MODE ====
 +<code cpp>void MISC::ENABLE_TENNIS_MODE(Ped ped, BOOL toggle, BOOL p2) // 0x28A04B411933F8A6 0x0BD3F9EC b323</code>
 +
 +<code>Makes the ped jump around like they're in a tennis match</code>
 +==== IS_TENNIS_MODE ====
 +<code cpp>BOOL MISC::IS_TENNIS_MODE(Ped ped) // 0x5D5479D115290C3F 0x04A947BA b323</code>
 +
 +==== PLAY_TENNIS_SWING_ANIM ====
 +<code cpp>void MISC::PLAY_TENNIS_SWING_ANIM(Ped ped, const char* animDict, const char* animName, float p3, float p4, BOOL p5) // 0xE266ED23311F24D4 0xC20A7D2B b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_TENNIS_SWING_ANIM_COMPLETE ====
 +<code cpp>BOOL MISC::GET_TENNIS_SWING_ANIM_COMPLETE(Ped ped) // 0x17DF68D720AA77F8 0x8501E727 b323</code>
 +
 +==== _0x19BFED045C647C49 ====
 +<code cpp>BOOL MISC::_0x19BFED045C647C49(Ped ped) // 0x19BFED045C647C49 0x1A332D2D b323</code>
 +
 +<code>Related to tennis mode.
 +
 +GET_TENNIS_*</code>
 +==== _0xE95B0C7D5BA3B96B ====
 +<code cpp>BOOL MISC::_0xE95B0C7D5BA3B96B(Ped ped) // 0xE95B0C7D5BA3B96B  b323</code>
 +
 +<code>Related to tennis mode.
 +
 +GET_TENNIS_*</code>
 +==== PLAY_TENNIS_DIVE_ANIM ====
 +<code cpp>void MISC::PLAY_TENNIS_DIVE_ANIM(Ped ped, int p1, float p2, float p3, float p4, BOOL p5) // 0x8FA9C42FC5D7C64B 0x0C8865DF b323</code>
 +
 +==== _0x54F157E0336A3822 ====
 +<code cpp>void MISC::_0x54F157E0336A3822(Ped ped, const char* p1, float p2) // 0x54F157E0336A3822 0x49F977A9 b323</code>
 +
 +<code>From the scripts:
 +
 +MISC::_54F157E0336A3822(sub_aa49(a_0), "ForcedStopDirection", v_E);
 +
 +Related to tennis mode.
 +
 +SET_*</code>
 +==== _RESET_DISPATCH_SPAWN_LOCATION ====
 +<code cpp>void MISC::_RESET_DISPATCH_SPAWN_LOCATION() // 0x5896F2BD5683A4E1  b1868</code>
 +
 +==== SET_DISPATCH_SPAWN_LOCATION ====
 +<code cpp>void MISC::SET_DISPATCH_SPAWN_LOCATION(float x, float y, float z) // 0xD10F442036302D50 0x6F009E33 b323</code>
 +
 +==== RESET_DISPATCH_IDEAL_SPAWN_DISTANCE ====
 +<code cpp>void MISC::RESET_DISPATCH_IDEAL_SPAWN_DISTANCE() // 0x77A84429DD9F0A15 0xDA65ECAA b323</code>
 +
 +==== SET_DISPATCH_IDEAL_SPAWN_DISTANCE ====
 +<code cpp>void MISC::SET_DISPATCH_IDEAL_SPAWN_DISTANCE(float p0) // 0x6FE601A64180D423 0x6283BE32 b323</code>
 +
 +==== RESET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS ====
 +<code cpp>void MISC::RESET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS(Any p0) // 0xEB2DB0CAD13154B3 0x1479E85A b323</code>
 +
 +==== SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS ====
 +<code cpp>void MISC::SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS(Any p0, float p1) // 0x44F7CBC1BEB3327D 0xABADB709 b323</code>
 +
 +==== SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER ====
 +<code cpp>void MISC::SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER(Any p0, float p1) // 0x48838ED9937A15D1 0x1C996BCD b323</code>
 +
 +==== _ADD_DISPATCH_SPAWN_BLOCKING_ANGLED_AREA ====
 +<code cpp>Any MISC::_ADD_DISPATCH_SPAWN_BLOCKING_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width) // 0x918C7B2D2FF3928B 0xF557BAF9 b323</code>
 +
 +<code>To remove, see: REMOVE_DISPATCH_SPAWN_BLOCKING_AREA
 +See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.</code>
 +==== _ADD_DISPATCH_SPAWN_BLOCKING_AREA ====
 +<code cpp>Any MISC::_ADD_DISPATCH_SPAWN_BLOCKING_AREA(float x1, float y1, float x2, float y2) // 0x2D4259F1FEB81DA9  b323</code>
 +
 +==== REMOVE_DISPATCH_SPAWN_BLOCKING_AREA ====
 +<code cpp>void MISC::REMOVE_DISPATCH_SPAWN_BLOCKING_AREA(Any p0) // 0x264AC28B01B353A5 0xA8D2FB92 b323</code>
 +
 +==== RESET_DISPATCH_SPAWN_BLOCKING_AREAS ====
 +<code cpp>void MISC::RESET_DISPATCH_SPAWN_BLOCKING_AREAS() // 0xAC7BFD5C1D83EA75 0x9A17F835 b323</code>
 +
 +==== _0xD9F692D349249528 ====
 +<code cpp>void MISC::_0xD9F692D349249528() // 0xD9F692D349249528 0xE0C9307E b323</code>
 +
 +<code>RESET_*</code>
 +==== _0xE532EC1A63231B4F ====
 +<code cpp>void MISC::_0xE532EC1A63231B4F(int p0, int p1) // 0xE532EC1A63231B4F 0xA0D8C749 b323</code>
 +
 +<code>SET_*</code>
 +==== _ADD_TACTICAL_ANALYSIS_POINT ====
 +<code cpp>void MISC::_ADD_TACTICAL_ANALYSIS_POINT(float x, float y, float z) // 0xB8721407EE9C3FF6 0x24A4E0B2 b323</code>
 +
 +<code>Adds a point related to CTacticalAnalysis</code>
 +==== _CLEAR_TACTICAL_ANALYSIS_POINTS ====
 +<code cpp>void MISC::_CLEAR_TACTICAL_ANALYSIS_POINTS() // 0xB3CD58CCA6CDA852 0x66C3C59C b323</code>
 +
 +==== SET_RIOT_MODE_ENABLED ====
 +<code cpp>void MISC::SET_RIOT_MODE_ENABLED(BOOL toggle) // 0x2587A48BC88DFADF 0xD9660339 b323</code>
 +
 +<code>Activates (usused?) riot mode. All NPCs are being hostile to each other (including player). Also the game will give weapons (pistols, smgs) to random NPCs.</code>
 +==== DISPLAY_ONSCREEN_KEYBOARD_WITH_LONGER_INITIAL_STRING ====
 +<code cpp>void MISC::DISPLAY_ONSCREEN_KEYBOARD_WITH_LONGER_INITIAL_STRING(int p0, const char* windowTitle, Any* p2, const char* defaultText, const char* defaultConcat1, const char* defaultConcat2, const char* defaultConcat3, const char* defaultConcat4, const char* defaultConcat5, const char* defaultConcat6, const char* defaultConcat7, int maxInputLength) // 0xCA78CFA0366592FE 0xD2688412 b323</code>
 +
 +==== DISPLAY_ONSCREEN_KEYBOARD ====
 +<code cpp>void MISC::DISPLAY_ONSCREEN_KEYBOARD(int p0, const char* windowTitle, const char* p2, const char* defaultText, const char* defaultConcat1, const char* defaultConcat2, const char* defaultConcat3, int maxInputLength) // 0x00DC833F2568DBF6 0xAD99F2CE b323</code>
 +
 +<code>sfink: note, p0 is set to 6 for PC platform in at least 1 script, or to `unk::_get_ui_language_id() == 0` otherwise.
 +
 +NOTE: windowTitle uses text labels, and an invalid value will display nothing.
 +
 +www.gtaforums.com/topic/788343-vrel-script-hook-v/?p=1067380474
 +
 +windowTitle's
 +-----------------
 +CELL_EMAIL_BOD  =   "Enter your Eyefind message"
 +CELL_EMAIL_BODE =   "Message too long. Try again"
 +CELL_EMAIL_BODF    =   "Forbidden message. Try again"
 +CELL_EMAIL_SOD    =   "Enter your Eyefind subject"
 +CELL_EMAIL_SODE =   "Subject too long. Try again"
 +CELL_EMAIL_SODF    =   "Forbidden text. Try again"
 +CELL_EMASH_BOD     "Enter your Eyefind message"
 +CELL_EMASH_BODE =   "Message too long. Try again"
 +CELL_EMASH_BODF    =   "Forbidden message. Try again"
 +CELL_EMASH_SOD    =   "Enter your Eyefind subject"
 +CELL_EMASH_SODE =   "Subject too long. Try again"
 +CELL_EMASH_SODF    =   "Forbidden Text. Try again"
 +FMMC_KEY_TIP10     "Enter Synopsis"
 +FMMC_KEY_TIP12  =   "Enter Custom Team Name"
 +FMMC_KEY_TIP12F =   "Forbidden Text. Try again"
 +FMMC_KEY_TIP12N  =   "Custom Team Name"
 +FMMC_KEY_TIP8 =   "Enter Message"
 +FMMC_KEY_TIP8F     "Forbidden Text. Try again"
 +FMMC_KEY_TIP8FS  =   "Invalid Message. Try again"
 +FMMC_KEY_TIP8S  =   "Enter Message"
 +FMMC_KEY_TIP9    =   "Enter Outfit Name"
 +FMMC_KEY_TIP9F     "Invalid Outfit Name. Try again"
 +FMMC_KEY_TIP9N  =   "Outfit Name"
 +PM_NAME_CHALL  =   "Enter Challenge Name"</code>
 +==== UPDATE_ONSCREEN_KEYBOARD ====
 +<code cpp>int MISC::UPDATE_ONSCREEN_KEYBOARD() // 0x0CF2B696BBF945AE 0x23D0A1CE b323</code>
 +
 +<code>Returns the current status of the onscreen keyboard, and updates the output.
 +
 +Status Codes:
 +
 +-1: Keyboard isn't active
 +0: User still editing
 +1: User has finished editing
 +2: User has canceled editing</code>
 +==== GET_ONSCREEN_KEYBOARD_RESULT ====
 +<code cpp>const char* MISC::GET_ONSCREEN_KEYBOARD_RESULT() // 0x8362B09B91893647 0x44828FB3 b323</code>
 +
 +<code>Returns NULL unless UPDATE_ONSCREEN_KEYBOARD() returns 1 in the same tick.</code>
 +==== _CANCEL_ONSCREEN_KEYBOARD ====
 +<code cpp>void MISC::_CANCEL_ONSCREEN_KEYBOARD() // 0x58A39BE597CE99CD 0x196444BB b757</code>
 +
 +<code>DO NOT use this as it doesn't clean up the text input box properly and your script will get stuck in the UPDATE_ONSCREEN_KEYBOARD() loop.
 +Use _FORCE_CLOSE_TEXT_INPUT_BOX instead.
 +
 +CANCEL_*</code>
 +==== NEXT_ONSCREEN_KEYBOARD_RESULT_WILL_DISPLAY_USING_THESE_FONTS ====
 +<code cpp>void MISC::NEXT_ONSCREEN_KEYBOARD_RESULT_WILL_DISPLAY_USING_THESE_FONTS(int p0) // 0x3ED1438C1F5C6612 0x3301EA47 b323</code>
 +
 +<code>p0 was always 2 in R* scripts.
 +Called before calling DISPLAY_ONSCREEN_KEYBOARD if the input needs to be saved.</code>
 +==== _REMOVE_STEALTH_KILL ====
 +<code cpp>void MISC::_REMOVE_STEALTH_KILL(Hash hash, BOOL p1) // 0xA6A12939F16D85BE 0x42B484ED b323</code>
 +
 +<code>Appears to remove stealth kill action from memory</code>
 +==== _0x1EAE0A6E978894A2 ====
 +<code cpp>void MISC::_0x1EAE0A6E978894A2(int p0, BOOL p1) // 0x1EAE0A6E978894A2 0x8F60366E b323</code>
 +
 +<code>Unsure about the use of this native but here's an example:
 +
 +void sub_8709() {
 +    MISC::_1EAE0A6E978894A2(0, 1);
 +    MISC::_1EAE0A6E978894A2(1, 1);
 +    MISC::_1EAE0A6E978894A2(2, 1);
 +    MISC::_1EAE0A6E978894A2(3, 1);
 +    MISC::_1EAE0A6E978894A2(4, 1);
 +    MISC::_1EAE0A6E978894A2(5, 1);
 +    MISC::_1EAE0A6E978894A2(6, 1);
 +    MISC::_1EAE0A6E978894A2(7, 1);
 +    MISC::_1EAE0A6E978894A2(8, 1);
 +}
 +
 +So it appears that p0 ranges from 0 to 8.
 +
 +ENABLE_DISPATCH_SERVICE, seems to have a similar layout.</code>
 +==== SET_EXPLOSIVE_AMMO_THIS_FRAME ====
 +<code cpp>void MISC::SET_EXPLOSIVE_AMMO_THIS_FRAME(Player player) // 0xA66C71C98D5F2CFB 0x2EAFA1D1 b323</code>
 +
 +==== SET_FIRE_AMMO_THIS_FRAME ====
 +<code cpp>void MISC::SET_FIRE_AMMO_THIS_FRAME(Player player) // 0x11879CDD803D30F4 0x7C18FC8A b323</code>
 +
 +==== SET_EXPLOSIVE_MELEE_THIS_FRAME ====
 +<code cpp>void MISC::SET_EXPLOSIVE_MELEE_THIS_FRAME(Player player) // 0xFF1BED81BFDC0FE0 0x96663D56 b323</code>
 +
 +==== SET_SUPER_JUMP_THIS_FRAME ====
 +<code cpp>void MISC::SET_SUPER_JUMP_THIS_FRAME(Player player) // 0x57FFF03E423A4C0B 0x86745EF3 b323</code>
 +
 +==== _SET_BEAST_MODE_ACTIVE ====
 +<code cpp>void MISC::_SET_BEAST_MODE_ACTIVE(Player player) // 0x438822C279B73B93  b573</code>
 +
 +==== _SET_FORCE_PLAYER_TO_JUMP ====
 +<code cpp>void MISC::_SET_FORCE_PLAYER_TO_JUMP(Player player) // 0xA1183BCFEE0F93D1  b1180</code>
 +
 +==== _0x6FDDF453C0C756EC ====
 +<code cpp>BOOL MISC::_0x6FDDF453C0C756EC() // 0x6FDDF453C0C756EC 0xC3C10FCC b323</code>
 +
 +<code>HAS_*
 +
 +Probably something like "has game been started for the first time".</code>
 +==== _0xFB00CA71DA386228 ====
 +<code cpp>void MISC::_0xFB00CA71DA386228() // 0xFB00CA71DA386228 0x054EC103 b323</code>
 +
 +==== ARE_PROFILE_SETTINGS_VALID ====
 +<code cpp>BOOL MISC::ARE_PROFILE_SETTINGS_VALID() // 0x5AA3BEFA29F03AD4 0x46B5A15C b323</code>
 +
 +==== _0xE3D969D2785FFB5E ====
 +<code cpp>void MISC::_0xE3D969D2785FFB5E() // 0xE3D969D2785FFB5E  b323</code>
 +
 +<code>sets something to 1</code>
 +==== FORCE_GAME_STATE_PLAYING ====
 +<code cpp>void MISC::FORCE_GAME_STATE_PLAYING() // 0xC0AA53F866B3134D 0x5D209F25 b323</code>
 +
 +<code>Sets the localplayer playerinfo state back to playing (State 0)
 +
 +States are:
 +-1: "Invalid"
 +0: "Playing"
 +1: "Died"
 +2: "Arrested"
 +3: "Failed Mission"
 +4: "Left Game"
 +5: "Respawn"
 +6: "In MP Cutscene"</code>
 +==== SCRIPT_RACE_INIT ====
 +<code cpp>void MISC::SCRIPT_RACE_INIT(Any p0, Any p1, Any p2, Any p3) // 0x0A60017F841A54F2 0x2D33F15A b323</code>
 +
 +==== SCRIPT_RACE_SHUTDOWN ====
 +<code cpp>void MISC::SCRIPT_RACE_SHUTDOWN() // 0x1FF6BF9A63E5757F 0xDF99925C b323</code>
 +
 +==== _0x1BB299305C3E8C13 ====
 +<code cpp>void MISC::_0x1BB299305C3E8C13(Any p0, Any p1, Any p2, Any p3) // 0x1BB299305C3E8C13 0xA27F4472 b323</code>
 +
 +<code>SCRIPT_RACE_*</code>
 +==== SCRIPT_RACE_GET_PLAYER_SPLIT_TIME ====
 +<code cpp>BOOL MISC::SCRIPT_RACE_GET_PLAYER_SPLIT_TIME(Player player, int* p1, int* p2) // 0x8EF5573A1F801A5C 0x07FF553F b323</code>
 +
 +==== _START_BENCHMARK_RECORDING ====
 +<code cpp>void MISC::_START_BENCHMARK_RECORDING() // 0x92790862E36C2ADA  b323</code>
 +
 +<code>Begins with START_*. Next character in the name is either D or E.</code>
 +==== _STOP_BENCHMARK_RECORDING ====
 +<code cpp>void MISC::_STOP_BENCHMARK_RECORDING() // 0xC7DB36C24634F52B  b323</code>
 +
 +<code>Begins with STOP_*. Next character in the name is either D or E.</code>
 +==== _RESET_BENCHMARK_RECORDING ====
 +<code cpp>void MISC::_RESET_BENCHMARK_RECORDING() // 0x437138B6A830166A  b323</code>
 +
 +<code>Begins with RESET_*. Next character in the name is either D or E.</code>
 +==== _SAVE_BENCHMARK_RECORDING ====
 +<code cpp>void MISC::_SAVE_BENCHMARK_RECORDING() // 0x37DEB0AA183FB6D8  b323</code>
 +
 +<code>Saves the benchmark recording to %USERPROFILE%\Documents\Rockstar Games\GTA V\Benchmarks and submits some metrics.</code>
 +==== _UI_IS_SINGLEPLAYER_PAUSE_MENU_ACTIVE ====
 +<code cpp>BOOL MISC::_UI_IS_SINGLEPLAYER_PAUSE_MENU_ACTIVE() // 0xEA2F2061875EED90  b323</code>
 +
 +<code>Returns true if the current frontend menu is FE_MENU_VERSION_SP_PAUSE
 +
 +U*</code>
 +==== _LANDING_MENU_IS_ACTIVE ====
 +<code cpp>BOOL MISC::_LANDING_MENU_IS_ACTIVE() // 0x3BBBD13E5041A79E  b323</code>
 +
 +<code>Returns true if the current frontend menu is FE_MENU_VERSION_LANDING_MENU</code>
 +==== _IS_COMMAND_LINE_BENCHMARK_VALUE_SET ====
 +<code cpp>BOOL MISC::_IS_COMMAND_LINE_BENCHMARK_VALUE_SET() // 0xA049A5BE0F04F2F8  b323</code>
 +
 +<code>Returns true if command line option '-benchmark' is set.</code>
 +==== _GET_BENCHMARK_ITERATIONS_FROM_COMMAND_LINE ====
 +<code cpp>int MISC::_GET_BENCHMARK_ITERATIONS_FROM_COMMAND_LINE() // 0x4750FC27570311EC  b323</code>
 +
 +<code>Returns value of the '-benchmarkIterations' command line option.</code>
 +==== _GET_BENCHMARK_PASS_FROM_COMMAND_LINE ====
 +<code cpp>int MISC::_GET_BENCHMARK_PASS_FROM_COMMAND_LINE() // 0x1B2366C3F2A5C8DF  b323</code>
 +
 +<code>Returns value of the '-benchmarkPass' command line option.</code>
 +==== _RESTART_GAME ====
 +<code cpp>void MISC::_RESTART_GAME() // 0xE574A662ACAEFBB1  b372</code>
 +
 +<code>In singleplayer it does exactly what the name implies. In FiveM / GTA:Online it shows `Disconnecting from GTA Online` HUD and then quits the game.</code>
 +==== _FORCE_SOCIAL_CLUB_UPDATE ====
 +<code cpp>void MISC::_FORCE_SOCIAL_CLUB_UPDATE() // 0xEB6891F03362FB12  b323</code>
 +
 +<code>Exits the game and downloads a fresh social club update on next restart.</code>
 +==== _HAS_ASYNC_INSTALL_FINISHED ====
 +<code cpp>BOOL MISC::_HAS_ASYNC_INSTALL_FINISHED() // 0x14832BF2ABA53FC5  b323</code>
 +
 +<code>Hardcoded to always return true.</code>
 +==== _CLEANUP_ASYNC_INSTALL ====
 +<code cpp>void MISC::_CLEANUP_ASYNC_INSTALL() // 0xC79AE21974B01FB2  b323</code>
 +
 +==== _IS_IN_POWER_SAVING_MODE ====
 +<code cpp>BOOL MISC::_IS_IN_POWER_SAVING_MODE() // 0x684A41975F077262  b323</code>
 +
 +<code>aka "constrained"</code>
 +==== _GET_POWER_SAVING_MODE_DURATION ====
 +<code cpp>int MISC::_GET_POWER_SAVING_MODE_DURATION() // 0xABB2FA71C83A1B72  b323</code>
 +
 +<code>Returns duration of how long the game has been in power-saving mode (aka "constrained") in milliseconds.</code>
 +==== _SET_PLAYER_IS_IN_ANIMAL_FORM ====
 +<code cpp>void MISC::_SET_PLAYER_IS_IN_ANIMAL_FORM(BOOL toggle) // 0x4EBB7E87AA0DBED4  b323</code>
 +
 +<code>If toggle is true, the ped's head is shown in the pause menu
 +If toggle is false, the ped's head is not shown in the pause menu</code>
 +==== GET_IS_PLAYER_IN_ANIMAL_FORM ====
 +<code cpp>BOOL MISC::GET_IS_PLAYER_IN_ANIMAL_FORM() // 0x9689123E3F213AA5  b323</code>
 +
 +<code>Although we don't have a jenkins hash for this one, the name is 100% confirmed.</code>
 +==== _SET_PLAYER_ROCKSTAR_EDITOR_DISABLED ====
 +<code cpp>void MISC::_SET_PLAYER_ROCKSTAR_EDITOR_DISABLED(BOOL toggle) // 0x9D8D44ADBBA61EF2  b323</code>
 +
 +<code>SET_PLAYER_*</code>
 +==== _0x23227DF0B2115469 ====
 +<code cpp>void MISC::_0x23227DF0B2115469() // 0x23227DF0B2115469  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0xD10282B6E3751BA0 ====
 +<code cpp>Any MISC::_0xD10282B6E3751BA0() // 0xD10282B6E3751BA0  b323</code>
 +
 +==== _0x693478ACBD7F18E7 ====
 +<code cpp>void MISC::_0x693478ACBD7F18E7() // 0x693478ACBD7F18E7  b1103</code>
 +
 +
 +===== MOBILE =====
 +==== CREATE_MOBILE_PHONE ====
 +<code cpp>void MOBILE::CREATE_MOBILE_PHONE(int phoneType) // 0xA4E8E696C532FBC7 0x5BBC5E23 b323</code>
 +
 +<code>Creates a mobile phone of the specified type.
 +
 +Possible phone types:
 +
 +0 - Default phone / Michael's phone
 +1 - Trevor's phone
 +2 - Franklin's phone
 +4 - Prologue phone
 +
 +These values represent bit flags, so a value of '3' would toggle Trevor and Franklin's phones together, causing unexpected behavior and most likely crash the game.</code>
 +==== DESTROY_MOBILE_PHONE ====
 +<code cpp>void MOBILE::DESTROY_MOBILE_PHONE() // 0x3BC861DF703E5097 0x1A65037B b323</code>
 +
 +<code>Destroys the currently active mobile phone.</code>
 +==== SET_MOBILE_PHONE_SCALE ====
 +<code cpp>void MOBILE::SET_MOBILE_PHONE_SCALE(float scale) // 0xCBDD322A73D6D932 0x09BCF1BE b323</code>
 +
 +<code>The minimum/default is 500.0f. If you plan to make it bigger set it's position as well. Also this seems to need to be called in a loop as when you close the phone the scale is reset. If not in a loop you'd need to call it everytime before you re-open the phone.</code>
 +==== SET_MOBILE_PHONE_ROTATION ====
 +<code cpp>void MOBILE::SET_MOBILE_PHONE_ROTATION(float rotX, float rotY, float rotZ, Any p3) // 0xBB779C0CA917E865 0x209C28CF b323</code>
 +
 +<code>Last parameter is unknown and always zero.</code>
 +==== GET_MOBILE_PHONE_ROTATION ====
 +<code cpp>void MOBILE::GET_MOBILE_PHONE_ROTATION(Vector3* rotation, Vehicle p1) // 0x1CEFB61F193070AE 0x17A29F23 b323</code>
 +
 +==== SET_MOBILE_PHONE_POSITION ====
 +<code cpp>void MOBILE::SET_MOBILE_PHONE_POSITION(float posX, float posY, float posZ) // 0x693A5C6D6734085B 0x841800B3 b323</code>
 +
 +==== GET_MOBILE_PHONE_POSITION ====
 +<code cpp>void MOBILE::GET_MOBILE_PHONE_POSITION(Vector3* position) // 0x584FDFDA48805B86 0xB2E1E1A0 b323</code>
 +
 +==== SCRIPT_IS_MOVING_MOBILE_PHONE_OFFSCREEN ====
 +<code cpp>void MOBILE::SCRIPT_IS_MOVING_MOBILE_PHONE_OFFSCREEN(BOOL toggle) // 0xF511F759238A5122 0x29828690 b323</code>
 +
 +<code>If bool Toggle = true so the mobile is hide to screen.
 +If bool Toggle = false so the mobile is show to screen.</code>
 +==== CAN_PHONE_BE_SEEN_ON_SCREEN ====
 +<code cpp>BOOL MOBILE::CAN_PHONE_BE_SEEN_ON_SCREEN() // 0xC4E2813898C97A4B 0x5F978584 b323</code>
 +
 +<code>This one is weird and seems to return a TRUE state regardless of whether the phone is visible on screen or tucked away.
 +
 +
 +I can confirm the above. This function is hard-coded to always return 1.</code>
 +==== _SET_MOBILE_PHONE_UNK ====
 +<code cpp>void MOBILE::_SET_MOBILE_PHONE_UNK(BOOL toggle) // 0x375A706A5C2FD084  b372</code>
 +
 +==== _CELL_CAM_MOVE_FINGER ====
 +<code cpp>void MOBILE::_CELL_CAM_MOVE_FINGER(int direction) // 0x95C9E72F3D7DEC9B  b323</code>
 +
 +<code>For move the finger of player, the value of int goes 1 at 5.</code>
 +==== _CELL_CAM_SET_LEAN ====
 +<code cpp>void MOBILE::_CELL_CAM_SET_LEAN(BOOL toggle) // 0x44E44169EF70138E  b323</code>
 +
 +<code>if the bool "Toggle" is "true" so the phone is lean.
 +if the bool "Toggle" is "false" so the phone is not lean.</code>
 +==== CELL_CAM_ACTIVATE ====
 +<code cpp>void MOBILE::CELL_CAM_ACTIVATE(BOOL p0, BOOL p1) // 0xFDE8F069C542D126 0x234C1AE9 b323</code>
 +
 +==== _CELL_CAM_DISABLE_THIS_FRAME ====
 +<code cpp>void MOBILE::_CELL_CAM_DISABLE_THIS_FRAME(BOOL toggle) // 0x015C49A93E3E086E 0x4479B304 b323</code>
 +
 +<code>Disables the phone up-button, oddly enough. 
 +i.e.: When the phone is out, and this method is called with false as it's parameter, the phone will not be able to scroll up. However, when you use the down arrow key, it's functionality still, works on the phone. 
 +
 +When the phone is not out, and this method is called with false as it's parameter, you will not be able to bring up the phone. Although the up arrow key still works for whatever functionality it's used for, just not for the phone.
 +
 +This can be used for creating menu's when trying to disable the phone from being used. 
 +
 +You do not have to call the function again with false as a parameter, as soon as the function stops being called, the phone will again be usable.</code>
 +==== _0xA2CCBE62CD4C91A4 ====
 +<code cpp>void MOBILE::_0xA2CCBE62CD4C91A4(int* toggle) // 0xA2CCBE62CD4C91A4 0xC273BB4D b323</code>
 +
 +<code>Needs more research. If the "phone_cam12" filter is applied, this function is called with "TRUE"; otherwise, "FALSE".
 +
 +Example (XBOX 360):
 +
 +// check current filter selection
 +if (MISC::ARE_STRINGS_EQUAL(getElem(g_2471024, &l_17, 4), "phone_cam12") != 0)
 +{
 +    MOBILE::_0xC273BB4D(0); // FALSE
 +}
 +else
 +{
 +    MOBILE::_0xC273BB4D(1); // TRUE
 +}</code>
 +==== _0x1B0B4AEED5B9B41C ====
 +<code cpp>void MOBILE::_0x1B0B4AEED5B9B41C(float p0) // 0x1B0B4AEED5B9B41C  b323</code>
 +
 +==== _0x53F4892D18EC90A4 ====
 +<code cpp>void MOBILE::_0x53F4892D18EC90A4(float p0) // 0x53F4892D18EC90A4  b323</code>
 +
 +==== _0x3117D84EFA60F77B ====
 +<code cpp>void MOBILE::_0x3117D84EFA60F77B(float p0) // 0x3117D84EFA60F77B  b323</code>
 +
 +==== _0x15E69E2802C24B8D ====
 +<code cpp>void MOBILE::_0x15E69E2802C24B8D(float p0) // 0x15E69E2802C24B8D  b323</code>
 +
 +==== _0xAC2890471901861C ====
 +<code cpp>void MOBILE::_0xAC2890471901861C(float p0) // 0xAC2890471901861C  b323</code>
 +
 +==== _0xD6ADE981781FCA09 ====
 +<code cpp>void MOBILE::_0xD6ADE981781FCA09(float p0) // 0xD6ADE981781FCA09  b323</code>
 +
 +==== _0xF1E22DC13F5EEBAD ====
 +<code cpp>void MOBILE::_0xF1E22DC13F5EEBAD(float p0) // 0xF1E22DC13F5EEBAD  b323</code>
 +
 +==== _0x466DA42C89865553 ====
 +<code cpp>void MOBILE::_0x466DA42C89865553(float p0) // 0x466DA42C89865553 0x66DCD9D2 b323</code>
 +
 +==== CELL_CAM_IS_CHAR_VISIBLE_NO_FACE_CHECK ====
 +<code cpp>BOOL MOBILE::CELL_CAM_IS_CHAR_VISIBLE_NO_FACE_CHECK(Entity entity) // 0x439E9BC95B7E7FBE 0xBEA88097 b323</code>
 +
 +==== GET_MOBILE_PHONE_RENDER_ID ====
 +<code cpp>void MOBILE::GET_MOBILE_PHONE_RENDER_ID(int* renderId) // 0xB4A53E05F68B6FA1 0x88E4FECE b323</code>
 +
 +
 +===== MONEY =====
 +==== NETWORK_INITIALIZE_CASH ====
 +<code cpp>void MONEY::NETWORK_INITIALIZE_CASH(int wallet, int bank) // 0x3DA5ECD1A56CBA6D 0x66DA9935 b323</code>
 +
 +==== NETWORK_DELETE_CHARACTER ====
 +<code cpp>void MONEY::NETWORK_DELETE_CHARACTER(int characterSlot, BOOL p1, BOOL p2) // 0x05A50AF38947EB8D 0xA9F7E9C3 b323</code>
 +
 +<code>Note the 2nd parameters are always 1, 0. I have a feeling it deals with your money, wallet, bank. So when you delete the character it of course wipes the wallet cash at that time. So if that was the case, it would be eg, NETWORK_DELETE_CHARACTER(characterIndex, deleteWalletCash, deleteBankCash);</code>
 +==== _NETWORK_MANUAL_DELETE_CHARACTER ====
 +<code cpp>void MONEY::_NETWORK_MANUAL_DELETE_CHARACTER(int characterSlot) // 0x821418C727FCACD7  b791</code>
 +
 +==== _NETWORK_GET_IS_HIGH_EARNER ====
 +<code cpp>BOOL MONEY::_NETWORK_GET_IS_HIGH_EARNER() // 0xFB2456B2040A6A67 0x63F093A6 b323</code>
 +
 +==== NETWORK_CLEAR_CHARACTER_WALLET ====
 +<code cpp>void MONEY::NETWORK_CLEAR_CHARACTER_WALLET(int characterSlot) // 0xA921DED15FDF28F5 0x19F0C471 b323</code>
 +
 +==== NETWORK_GIVE_PLAYER_JOBSHARE_CASH ====
 +<code cpp>void MONEY::NETWORK_GIVE_PLAYER_JOBSHARE_CASH(int amount, int* networkHandle) // 0xFB18DF9CB95E0105 0xC6047FDB b323</code>
 +
 +==== NETWORK_RECEIVE_PLAYER_JOBSHARE_CASH ====
 +<code cpp>void MONEY::NETWORK_RECEIVE_PLAYER_JOBSHARE_CASH(int value, int* networkHandle) // 0x56A3B51944C50598 0x4ED71C1A b323</code>
 +
 +==== NETWORK_CAN_SHARE_JOB_CASH ====
 +<code cpp>BOOL MONEY::NETWORK_CAN_SHARE_JOB_CASH() // 0x1C2473301B1C66BA 0xA27B9FE8 b323</code>
 +
 +==== NETWORK_REFUND_CASH ====
 +<code cpp>void MONEY::NETWORK_REFUND_CASH(int index, const char* context, const char* reason, BOOL unk) // 0xF9C812CD7C46E817 0x07C92F21 b323</code>
 +
 +<code>index
 +-------
 +See function sub_1005 in am_boat_taxi.ysc
 +
 +context
 +----------
 +"BACKUP_VAGOS"
 +"BACKUP_LOST"
 +"BACKUP_FAMILIES"
 +"HIRE_MUGGER"
 +"HIRE_MERCENARY"
 +"BUY_CARDROPOFF"
 +"HELI_PICKUP"
 +"BOAT_PICKUP"
 +"CLEAR_WANTED"
 +"HEAD_2_HEAD"
 +"CHALLENGE"
 +"SHARE_LAST_JOB"
 +"DEFAULT"
 +
 +reason
 +---------
 +"NOTREACHTARGET"
 +"TARGET_ESCAPE"
 +"DELIVERY_FAIL"
 +"NOT_USED"
 +"TEAM_QUIT"
 +"SERVER_ERROR"
 +"RECEIVE_LJ_L"
 +"CHALLENGE_PLAYER_LEFT"
 +"DEFAULT"
 +
 +unk
 +-----
 +Unknown bool value
 +
 +</code>
 +==== _NETWORK_DEDUCT_CASH ====
 +<code cpp>void MONEY::_NETWORK_DEDUCT_CASH(int amount, const char* p1, const char* p2, BOOL p3, BOOL p4, BOOL p5) // 0x18B7AE224B087E26  b323</code>
 +
 +==== NETWORK_MONEY_CAN_BET ====
 +<code cpp>BOOL MONEY::NETWORK_MONEY_CAN_BET(int amount, BOOL p1, BOOL p2) // 0x81404F3DC124FE5B 0x8474E6F0 b323</code>
 +
 +==== NETWORK_CAN_BET ====
 +<code cpp>BOOL MONEY::NETWORK_CAN_BET(int amount) // 0x3A54E33660DED67F 0xE3802533 b323</code>
 +
 +==== NETWORK_CAN_BUY_LOTTERY_TICKET ====
 +<code cpp>BOOL MONEY::NETWORK_CAN_BUY_LOTTERY_TICKET(int cost) // 0xC62DD18375C99130 0x334B9364 b323</code>
 +
 +==== _NETWORK_CASINO_CAN_USE_GAMBLING_TYPE ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_CAN_USE_GAMBLING_TYPE(Hash hash) // 0x158C16F5E4CF41F8  b1734</code>
 +
 +<code>GTAO_CASINO_HOUSE
 +GTAO_CASINO_INSIDETRACK
 +GTAO_CASINO_LUCKYWHEEL
 +GTAO_CASINO_BLACKJACK
 +GTAO_CASINO_ROULETTE
 +GTAO_CASINO_SLOTS
 +GTAO_CASINO_PURCHASE_CHIPS
 +
 +NETWORK_C*</code>
 +==== _NETWORK_CASINO_CAN_PURCHASE_CHIPS_WITH_PVC ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_CAN_PURCHASE_CHIPS_WITH_PVC() // 0x394DCDB9E836B7A9  b1734</code>
 +
 +<code>Same as 0x8968D4D8C6C40C11.
 +
 +NETWORK_C*</code>
 +==== _NETWORK_CASINO_CAN_GAMBLE ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_CAN_GAMBLE(Any p0) // 0xF62F6D9528358FE4  b1734</code>
 +
 +<code>NETWORK_C*</code>
 +==== _NETWORK_CASINO_CAN_PURCHASE_CHIPS_WITH_PVC_2 ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_CAN_PURCHASE_CHIPS_WITH_PVC_2() // 0x8968D4D8C6C40C11  b1734</code>
 +
 +<code>Same as 0x394DCDB9E836B7A9.
 +
 +NETWORK_C*</code>
 +==== _NETWORK_CASINO_PURCHASE_CHIPS ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_PURCHASE_CHIPS(int p0, int p1) // 0x3BD101471C7F9EEC  b1734</code>
 +
 +<code>NETWORK_C*</code>
 +==== _NETWORK_CASINO_SELL_CHIPS ====
 +<code cpp>BOOL MONEY::_NETWORK_CASINO_SELL_CHIPS(int p0, int p1) // 0xED44897CB336F480  b1734</code>
 +
 +<code>NETWORK_C*</code>
 +==== _0xCD0F5B5D932AE473 ====
 +<code cpp>void MONEY::_0xCD0F5B5D932AE473() // 0xCD0F5B5D932AE473 0xC4CD928D b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _CAN_PAY_GOON ====
 +<code cpp>BOOL MONEY::_CAN_PAY_GOON(int p0, int p1, int amount, int* p3) // 0x9777734DAD16992F  b573</code>
 +
 +<code>CAN_*</code>
 +==== _NETWORK_EARN_FROM_CASHING_OUT ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CASHING_OUT(int amount) // 0xEFE9C9A1651B81E6  b1290</code>
 +
 +==== NETWORK_EARN_FROM_PICKUP ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_PICKUP(int amount) // 0xED1517D3AF17C698 0x70A0ED62 b323</code>
 +
 +==== _NETWORK_EARN_FROM_GANG_PICKUP ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANG_PICKUP(int amount) // 0xA03D4ACE0A3284CE 0x33C20BC4 b323</code>
 +
 +==== _NETWORK_EARN_FROM_ASSASSINATE_TARGET_KILLED ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ASSASSINATE_TARGET_KILLED(int amount) // 0xFA700D8A9905F78A  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_ARMOUR_TRUCK ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ARMOUR_TRUCK(int amount) // 0xF514621E8EA463D0 0x30B3EC0A b323</code>
 +
 +<code>For the money bags that drop a max of $40,000. Often called 40k bags.
 +
 +Most likely NETWORK_EARN_FROM_ROB***</code>
 +==== NETWORK_EARN_FROM_CRATE_DROP ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_CRATE_DROP(int amount) // 0xB1CC1B9EC3007A2A 0xEAF04923 b323</code>
 +
 +==== NETWORK_EARN_FROM_BETTING ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_BETTING(int amount, const char* p1) // 0x827A5BA1A44ACA6D 0xA0F7F07C b323</code>
 +
 +==== NETWORK_EARN_FROM_JOB ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_JOB(int amount, const char* p1) // 0xB2CC4836834E8A98 0x0B6997FC b323</code>
 +
 +==== _NETWORK_EARN_FROM_JOB_X2 ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_JOB_X2(int amount, const char* p1) // 0xDEBBF584665411D0  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_PREMIUM_JOB ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_PREMIUM_JOB(int amount, const char* p1) // 0xC8407624CEF2354B  b791</code>
 +
 +==== NETWORK_EARN_FROM_BEND_JOB ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_BEND_JOB(int amount, const char* heistHash) // 0x61326EE6DF15B0CA 0xBB293400 b323</code>
 +
 +==== NETWORK_EARN_FROM_CHALLENGE_WIN ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_CHALLENGE_WIN(Any p0, Any* p1, BOOL p2) // 0x2B171E6B2F64D8DF 0x2BEFB6C4 b323</code>
 +
 +==== NETWORK_EARN_FROM_BOUNTY ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_BOUNTY(int amount, int* networkHandle, Any* p2, Any p3) // 0x131BB5DA15453ACF 0x127F2DAE b323</code>
 +
 +==== NETWORK_EARN_FROM_IMPORT_EXPORT ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_IMPORT_EXPORT(int amount, Hash modelHash) // 0xF92A014A634442D6 0xF11FC458 b323</code>
 +
 +==== NETWORK_EARN_FROM_HOLDUPS ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_HOLDUPS(int amount) // 0x45B8154E077D9E4D 0xE6B90E9C b323</code>
 +
 +==== NETWORK_EARN_FROM_PROPERTY ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_PROPERTY(int amount, Hash propertyName) // 0x849648349D77F5C5 0x9BE4F7E1 b323</code>
 +
 +==== NETWORK_EARN_FROM_AI_TARGET_KILL ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_AI_TARGET_KILL(Any p0, Any p1) // 0x515B4A22E4D3C6D7 0x866004A8 b323</code>
 +
 +<code>DSPORT</code>
 +==== NETWORK_EARN_FROM_NOT_BADSPORT ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_NOT_BADSPORT(int amount) // 0x4337511FA8221D36 0xCC068380 b323</code>
 +
 +==== NETWORK_EARN_FROM_ROCKSTAR ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_ROCKSTAR(int amount) // 0x02CE1D6AC0FC73EA 0x5A3733CC b323</code>
 +
 +==== NETWORK_EARN_FROM_VEHICLE ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_VEHICLE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7) // 0xB539BD8A4C1EECF8 0xF803589D b323</code>
 +
 +==== NETWORK_EARN_FROM_PERSONAL_VEHICLE ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_PERSONAL_VEHICLE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8) // 0x3F4D00167E41E0AD 0x96B8BEE8 b323</code>
 +
 +==== NETWORK_EARN_FROM_DAILY_OBJECTIVES ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_DAILY_OBJECTIVES(int p0, const char* p1, int p2) // 0x6EA318C91C1A8786 0xAB6BD72F b323</code>
 +
 +==== NETWORK_EARN_FROM_AMBIENT_JOB ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_AMBIENT_JOB(int p0, const char* p1, Any* p2) // 0xFB6DB092FBAE29E6 0xA14CC95D b323</code>
 +
 +<code>Example for p1: "AM_DISTRACT_COPS"</code>
 +==== NETWORK_EARN_FROM_JOB_BONUS ====
 +<code cpp>void MONEY::NETWORK_EARN_FROM_JOB_BONUS(Any p0, Any* p1, Any* p2) // 0x6816FB4416760775 0xBEE23713 b323</code>
 +
 +==== _NETWORK_EARN_FROM_CRIMINAL_MASTERMIND_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CRIMINAL_MASTERMIND_BONUS(Any p0, Any p1, Any p2) // 0xFA009A62990671D4  b1290</code>
 +
 +==== _NETWORK_EARN_JOB_BONUS_HEIST_AWARD ====
 +<code cpp>void MONEY::_NETWORK_EARN_JOB_BONUS_HEIST_AWARD(Any p0, Any p1, Any p2) // 0x9D4FDBB035229669  b1290</code>
 +
 +==== _NETWORK_EARN_JOB_BONUS_FIRST_TIME_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_JOB_BONUS_FIRST_TIME_BONUS(Any p0, Any p1, Any p2) // 0x11B0A20C493F7E36  b1290</code>
 +
 +==== _NETWORK_EARN_GOON ====
 +<code cpp>void MONEY::_NETWORK_EARN_GOON(Any p0, Any p1, Any p2) // 0xCDA1C62BE2777802  b573</code>
 +
 +==== _NETWORK_EARN_BOSS ====
 +<code cpp>void MONEY::_NETWORK_EARN_BOSS(Any p0, Any p1, Any p2) // 0x08B0CA7A6AB3AC32  b573</code>
 +
 +==== _NETWORK_EARN_BOSS_AGENCY ====
 +<code cpp>void MONEY::_NETWORK_EARN_BOSS_AGENCY(Any p0, Any p1, Any p2, Any p3) // 0x0CB1BE0633C024A8  b573</code>
 +
 +==== _NETWORK_EARN_FROM_WAREHOUSE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_WAREHOUSE(int amount, int id) // 0x3E4ADAFF1830F146  b757</code>
 +
 +==== _NETWORK_EARN_FROM_CONTRABAND ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CONTRABAND(int amount, Any p1) // 0xECA658CE2A4E5A72  b757</code>
 +
 +==== _NETWORK_EARN_FROM_DESTROYING_CONTRABAND ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_DESTROYING_CONTRABAND(Any p0) // 0x84C0116D012E8FC2  b757</code>
 +
 +==== _0x6B7E4FB50D5F3D65 ====
 +<code cpp>void MONEY::_0x6B7E4FB50D5F3D65(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x6B7E4FB50D5F3D65  b1180</code>
 +
 +==== _0x31BA138F6304FB9F ====
 +<code cpp>void MONEY::_0x31BA138F6304FB9F(Any p0, Any p1) // 0x31BA138F6304FB9F  b1180</code>
 +
 +==== _0x55A1E095DB052FA5 ====
 +<code cpp>void MONEY::_0x55A1E095DB052FA5(Any p0, Any p1) // 0x55A1E095DB052FA5  b877</code>
 +
 +==== _NETWORK_EARN_FROM_BUSINESS_PRODUCT ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_BUSINESS_PRODUCT(int amount, Any p1, Any p2, Any p3) // 0x8586789730B10CAF  b877</code>
 +
 +==== _NETWORK_EARN_FROM_VEHICLE_EXPORT ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_VEHICLE_EXPORT(int amount, Any p1, Any p2) // 0xEDEAD9A91EC768B3  b944</code>
 +
 +==== _NETWORK_EARN_FROM_SMUGGLING ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_SMUGGLING(int amount, Any p1, Any p2, Any p3) // 0xDEE612F2D71B0308  b1180</code>
 +
 +==== _NETWORK_EARN_BOUNTY_HUNTER_REWARD ====
 +<code cpp>void MONEY::_NETWORK_EARN_BOUNTY_HUNTER_REWARD(Any p0) // 0xF6B170F9A02E9E87  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_BUSINESS_BATTLE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_BUSINESS_BATTLE(Any p0) // 0x42FCE14F50F27291  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_CLUB_MANAGEMENT_PARTICIPATION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CLUB_MANAGEMENT_PARTICIPATION(Any p0) // 0xA75EAC69F59E96E7  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_FMBB_PHONECALL_MISSION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_FMBB_PHONECALL_MISSION(Any p0) // 0xC5156361F26E2212  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_BUSINESS_HUB_SELL ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_BUSINESS_HUB_SELL(Any p0, Any p1, Any p2) // 0x0B39CF0D53F1C883  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_FMBB_BOSS_WORK ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_FMBB_BOSS_WORK(Any p0) // 0x1FDA0AA679C9919B  b1493</code>
 +
 +==== _NETWORK_EARN_FMBB_WAGE_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FMBB_WAGE_BONUS(Any p0) // 0xFFFBA1B1F7C0B6F4  b1493</code>
 +
 +==== NETWORK_CAN_SPEND_MONEY ====
 +<code cpp>BOOL MONEY::NETWORK_CAN_SPEND_MONEY(Any p0, BOOL p1, BOOL p2, BOOL p3, Any p4, Any p5) // 0xAB3CAA6B422164DA 0x5AA379D9 b323</code>
 +
 +==== _NETWORK_CAN_SPEND_MONEY_2 ====
 +<code cpp>BOOL MONEY::_NETWORK_CAN_SPEND_MONEY_2(Any p0, BOOL p1, BOOL p2, BOOL p3, Any* p4, Any p5, Any p6) // 0x7303E27CC6532080  b323</code>
 +
 +<code>NETWORK_CAN_R??? or NETWORK_CAN_S???</code>
 +==== NETWORK_BUY_ITEM ====
 +<code cpp>void MONEY::NETWORK_BUY_ITEM(int amount, Hash item, Any p2, Any p3, BOOL p4, const char* item_name, Any p6, Any p7, Any p8, BOOL p9) // 0xF0077C797F66A355 0xA07B6368 b323</code>
 +
 +==== NETWORK_SPENT_TAXI ====
 +<code cpp>void MONEY::NETWORK_SPENT_TAXI(int amount, BOOL p1, BOOL p2) // 0x17C3A7D31EAE39F9 0x1F3DB3E3 b323</code>
 +
 +==== NETWORK_PAY_EMPLOYEE_WAGE ====
 +<code cpp>void MONEY::NETWORK_PAY_EMPLOYEE_WAGE(Any p0, BOOL p1, BOOL p2) // 0x5FD5ED82CBBE9989 0xBE70849B b323</code>
 +
 +==== NETWORK_PAY_UTILITY_BILL ====
 +<code cpp>void MONEY::NETWORK_PAY_UTILITY_BILL(int amount, BOOL p1, BOOL p2) // 0xAFE08B35EC0C9EAE 0x451A2644 b323</code>
 +
 +==== NETWORK_PAY_MATCH_ENTRY_FEE ====
 +<code cpp>void MONEY::NETWORK_PAY_MATCH_ENTRY_FEE(int amount, const char* matchId, BOOL p2, BOOL p3) // 0x9346E14F2AF74D46 0x224A3488 b323</code>
 +
 +==== NETWORK_SPENT_BETTING ====
 +<code cpp>void MONEY::NETWORK_SPENT_BETTING(int amount, int p1, const char* matchId, BOOL p3, BOOL p4) // 0x1C436FD11FFA692F 0xF8A07513 b323</code>
 +
 +==== _NETWORK_SPENT_WAGER ====
 +<code cpp>void MONEY::_NETWORK_SPENT_WAGER(Any p0, Any p1, int amount) // 0xD99DB210089617FE  b573</code>
 +
 +==== NETWORK_SPENT_IN_STRIPCLUB ====
 +<code cpp>void MONEY::NETWORK_SPENT_IN_STRIPCLUB(Any p0, BOOL p1, Any p2, BOOL p3) // 0xEE99784E4467689C 0x8957038E b323</code>
 +
 +==== NETWORK_BUY_HEALTHCARE ====
 +<code cpp>void MONEY::NETWORK_BUY_HEALTHCARE(int cost, BOOL p1, BOOL p2) // 0xD9B067E55253E3DD 0x832150E5 b323</code>
 +
 +==== NETWORK_BUY_AIRSTRIKE ====
 +<code cpp>void MONEY::NETWORK_BUY_AIRSTRIKE(int cost, BOOL p1, BOOL p2) // 0x763B4BD305338F19 0x40470683 b323</code>
 +
 +<code>p1 = 0 (always)
 +p2 = 1 (always)</code>
 +==== NETWORK_BUY_BACKUP_GANG ====
 +<code cpp>void MONEY::NETWORK_BUY_BACKUP_GANG(int p0, int p1, BOOL p2, BOOL p3) // 0xA3EDDAA42411D3B9 0x2AD2EC51 b323</code>
 +
 +==== NETWORK_BUY_HELI_STRIKE ====
 +<code cpp>void MONEY::NETWORK_BUY_HELI_STRIKE(int cost, BOOL p1, BOOL p2) // 0x81AA4610E3FD3A69 0x047547D4 b323</code>
 +
 +<code>p1 = 0 (always)
 +p2 = 1 (always)</code>
 +==== NETWORK_SPENT_AMMO_DROP ====
 +<code cpp>void MONEY::NETWORK_SPENT_AMMO_DROP(Any p0, BOOL p1, BOOL p2) // 0xB162DC95C0A3317B 0x4B643076 b323</code>
 +
 +==== NETWORK_BUY_BOUNTY ====
 +<code cpp>void MONEY::NETWORK_BUY_BOUNTY(int amount, Player victim, BOOL p2, BOOL p3) // 0x7B718E197453F2D9 0xCB89CBE0 b323</code>
 +
 +<code>p1 is just an assumption. p2 was false and p3 was true.</code>
 +==== NETWORK_BUY_PROPERTY ====
 +<code cpp>void MONEY::NETWORK_BUY_PROPERTY(int cost, Hash propertyName, BOOL p2, BOOL p3) // 0x650A08A280870AF6 0x7D479AAB b323</code>
 +
 +==== NETWORK_BUY_SMOKES ====
 +<code cpp>void MONEY::NETWORK_BUY_SMOKES(int p0, BOOL p1, BOOL p2) // 0x75AF80E61248EEBD 0xC0AB03EB b323</code>
 +
 +==== NETWORK_SPENT_HELI_PICKUP ====
 +<code cpp>void MONEY::NETWORK_SPENT_HELI_PICKUP(Any p0, BOOL p1, BOOL p2) // 0x7BF1D73DB2ECA492 0x27EEBCAB b323</code>
 +
 +==== NETWORK_SPENT_BOAT_PICKUP ====
 +<code cpp>void MONEY::NETWORK_SPENT_BOAT_PICKUP(Any p0, BOOL p1, BOOL p2) // 0x524EE43A37232C00 0xB241CABD b323</code>
 +
 +==== NETWORK_SPENT_BULL_SHARK ====
 +<code cpp>void MONEY::NETWORK_SPENT_BULL_SHARK(Any p0, BOOL p1, BOOL p2) // 0xA6DD8458CE24012C 0xDE7D398C b323</code>
 +
 +==== NETWORK_SPENT_CASH_DROP ====
 +<code cpp>void MONEY::NETWORK_SPENT_CASH_DROP(int amount, BOOL p1, BOOL p2) // 0x289016EC778D60E0 0x87BD1D11 b323</code>
 +
 +==== NETWORK_SPENT_HIRE_MUGGER ====
 +<code cpp>void MONEY::NETWORK_SPENT_HIRE_MUGGER(Any p0, BOOL p1, BOOL p2) // 0xE404BFB981665BF0 0xE792C4A5 b323</code>
 +
 +<code>Only used once in a script (am_contact_requests)
 +p1 = 0
 +p2 = 1</code>
 +==== NETWORK_SPENT_ROBBED_BY_MUGGER ====
 +<code cpp>void MONEY::NETWORK_SPENT_ROBBED_BY_MUGGER(int amount, BOOL p1, BOOL p2) // 0x995A65F15F581359 0xE6AAA0D5 b323</code>
 +
 +==== NETWORK_SPENT_HIRE_MERCENARY ====
 +<code cpp>void MONEY::NETWORK_SPENT_HIRE_MERCENARY(Any p0, BOOL p1, BOOL p2) // 0xE7B80E2BF9D80BD6 0x99CF02C4 b323</code>
 +
 +==== NETWORK_SPENT_BUY_WANTEDLEVEL ====
 +<code cpp>void MONEY::NETWORK_SPENT_BUY_WANTEDLEVEL(Any p0, Any* p1, BOOL p2, BOOL p3) // 0xE1B13771A843C4F6 0xE7CB4F95 b323</code>
 +
 +==== NETWORK_SPENT_BUY_OFFTHERADAR ====
 +<code cpp>void MONEY::NETWORK_SPENT_BUY_OFFTHERADAR(Any p0, BOOL p1, BOOL p2) // 0xA628A745E2275C5D 0x20DDCF2F b323</code>
 +
 +==== NETWORK_SPENT_BUY_REVEAL_PLAYERS ====
 +<code cpp>void MONEY::NETWORK_SPENT_BUY_REVEAL_PLAYERS(Any p0, BOOL p1, BOOL p2) // 0x6E176F1B18BC0637 0x2F7836E2 b323</code>
 +
 +==== NETWORK_SPENT_CARWASH ====
 +<code cpp>void MONEY::NETWORK_SPENT_CARWASH(Any p0, Any p1, Any p2, BOOL p3, BOOL p4) // 0xEC03C719DB2F4306 0x8283E028 b323</code>
 +
 +==== NETWORK_SPENT_CINEMA ====
 +<code cpp>void MONEY::NETWORK_SPENT_CINEMA(Any p0, Any p1, BOOL p2, BOOL p3) // 0x6B38ECB05A63A685 0x1100CAF5 b323</code>
 +
 +==== NETWORK_SPENT_TELESCOPE ====
 +<code cpp>void MONEY::NETWORK_SPENT_TELESCOPE(Any p0, BOOL p1, BOOL p2) // 0x7FE61782AD94CC09 0xAE7FF044 b323</code>
 +
 +==== NETWORK_SPENT_HOLDUPS ====
 +<code cpp>void MONEY::NETWORK_SPENT_HOLDUPS(Any p0, BOOL p1, BOOL p2) // 0xD9B86B9872039763 0x1B3803B1 b323</code>
 +
 +==== NETWORK_SPENT_BUY_PASSIVE_MODE ====
 +<code cpp>void MONEY::NETWORK_SPENT_BUY_PASSIVE_MODE(Any p0, BOOL p1, BOOL p2) // 0x6D3A430D1A809179 0x7E97C92C b323</code>
 +
 +==== NETWORK_SPENT_BANK_INTEREST ====
 +<code cpp>void MONEY::NETWORK_SPENT_BANK_INTEREST(int p0, BOOL p1, BOOL p2) // 0xCA230C9682556CF1 0xF02E92D7 b323</code>
 +
 +==== NETWORK_SPENT_PROSTITUTES ====
 +<code cpp>void MONEY::NETWORK_SPENT_PROSTITUTES(Any p0, BOOL p1, BOOL p2) // 0xB21B89501CFAC79E 0x78436D07 b323</code>
 +
 +==== NETWORK_SPENT_ARREST_BAIL ====
 +<code cpp>void MONEY::NETWORK_SPENT_ARREST_BAIL(Any p0, BOOL p1, BOOL p2) // 0x812F5488B1B2A299 0x5AEE2FC1 b323</code>
 +
 +==== NETWORK_SPENT_PAY_VEHICLE_INSURANCE_PREMIUM ====
 +<code cpp>void MONEY::NETWORK_SPENT_PAY_VEHICLE_INSURANCE_PREMIUM(int amount, Hash vehicleModel, int* networkHandle, BOOL notBankrupt, BOOL hasTheMoney) // 0x9FF28D88C766E3E8 0x4E665BB2 b323</code>
 +
 +<code>According to how I understood this in the freemode script alone,
 +The first parameter is determined by a function named, func_5749 within the freemode script which has a list of all the vehicles and a set price to return which some vehicles deals with globals as well. So the first parameter is basically the set in stone insurance cost it's gonna charge you for that specific vehicle model.
 +
 +The second parameter whoever put it was right, they call GET_ENTITY_MODEL with the vehicle as the paremeter.
 +
 +The third parameter is the network handle as they call their little struct<13> func or atleast how the script decompiled it to look which in lamens terms just returns the network handle of the previous owner based on DECOR_GET_INT(vehicle, "Previous_Owner").
 +
 +The fourth parameter is a bool that returns true/false depending on if your bank balance is greater then 0.
 +
 +The fifth and last parameter is a bool that returns true/false depending on if you have the money for the car based on the cost returned by func_5749. In the freemode script eg,
 +bool hasTheMoney = MONEY::_GET_BANK_BALANCE() < carCost.</code>
 +==== NETWORK_SPENT_CALL_PLAYER ====
 +<code cpp>void MONEY::NETWORK_SPENT_CALL_PLAYER(Any p0, Any* p1, BOOL p2, BOOL p3) // 0xACDE7185B374177C 0x1A89B5FC b323</code>
 +
 +==== NETWORK_SPENT_BOUNTY ====
 +<code cpp>void MONEY::NETWORK_SPENT_BOUNTY(Any p0, BOOL p1, BOOL p2) // 0x29B260B84947DFCC 0x3401FC96 b323</code>
 +
 +==== NETWORK_SPENT_FROM_ROCKSTAR ====
 +<code cpp>void MONEY::NETWORK_SPENT_FROM_ROCKSTAR(int p0, BOOL p1, BOOL p2) // 0x6A445B64ED7ABEB5 0x54198922 b323</code>
 +
 +==== _0x9B5016A6433A68C5 ====
 +<code cpp>Any MONEY::_0x9B5016A6433A68C5() // 0x9B5016A6433A68C5 0xBD64F1B7 b323</code>
 +
 +<code>Hardcoded to return 0.</code>
 +==== PROCESS_CASH_GIFT ====
 +<code cpp>const char* MONEY::PROCESS_CASH_GIFT(int* p0, int* p1, const char* p2) // 0x20194D48EAEC9A41 0xC5D8B1E9 b323</code>
 +
 +<code>This isn't a hash collision.</code>
 +==== _0xCD4D66B43B1DD28D ====
 +<code cpp>void MONEY::_0xCD4D66B43B1DD28D(Any p0, Any p1, Any p2) // 0xCD4D66B43B1DD28D  b2189</code>
 +
 +==== NETWORK_SPENT_PLAYER_HEALTHCARE ====
 +<code cpp>void MONEY::NETWORK_SPENT_PLAYER_HEALTHCARE(int p0, int p1, BOOL p2, BOOL p3) // 0x7C99101F7FCE2EE5 0x3D96A21C b323</code>
 +
 +==== NETWORK_SPENT_NO_COPS ====
 +<code cpp>void MONEY::NETWORK_SPENT_NO_COPS(Any p0, BOOL p1, BOOL p2) // 0xD5BB406F4E04019F 0x2E51C61C b323</code>
 +
 +==== NETWORK_SPENT_REQUEST_JOB ====
 +<code cpp>void MONEY::NETWORK_SPENT_REQUEST_JOB(Any p0, BOOL p1, BOOL p2) // 0x8204DA7934DF3155 0xD57A5125 b323</code>
 +
 +==== NETWORK_SPENT_REQUEST_HEIST ====
 +<code cpp>void MONEY::NETWORK_SPENT_REQUEST_HEIST(Any p0, BOOL p1, BOOL p2) // 0x9D26502BB97BFE62 0xF4287778 b323</code>
 +
 +==== NETWORK_BUY_LOTTERY_TICKET ====
 +<code cpp>void MONEY::NETWORK_BUY_LOTTERY_TICKET(int p0, int p1, BOOL p2, BOOL p3) // 0xD987F2489969668C 0xF64DF4CF b323</code>
 +
 +==== NETWORK_BUY_FAIRGROUND_RIDE ====
 +<code cpp>void MONEY::NETWORK_BUY_FAIRGROUND_RIDE(int amount, Any p1, BOOL p2, BOOL p3) // 0x8A7B3952DD64D2B5 0xD9622D64 b323</code>
 +
 +<code>The first parameter is the amount spent which is store in a global when this native is called. The global returns 10. Which is the price for both rides.
 +
 +The last 3 parameters are, 
 +2,0,1 in the am_ferriswheel.c
 +1,0,1 in the am_rollercoaster.c
 +</code>
 +==== _0x7C4FCCD2E4DEB394 ====
 +<code cpp>BOOL MONEY::_0x7C4FCCD2E4DEB394() // 0x7C4FCCD2E4DEB394 0x468CC978 b323</code>
 +
 +==== _NETWORK_SPENT_JOB_SKIP ====
 +<code cpp>void MONEY::_NETWORK_SPENT_JOB_SKIP(int amount, const char* matchId, BOOL p2, BOOL p3) // 0x28F174A67B8D0C2F  b323</code>
 +
 +==== _NETWORK_SPENT_BOSS ====
 +<code cpp>BOOL MONEY::_NETWORK_SPENT_BOSS(int amount, BOOL p1, BOOL p2) // 0xFFBE02CD385356BD  b573</code>
 +
 +==== _NETWORK_SPENT_PAY_GOON ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PAY_GOON(int p0, int p1, int amount) // 0x08A1B82B91900682  b573</code>
 +
 +==== _NETWORK_SPENT_PAY_BOSS ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PAY_BOSS(Any p0, Any p1, Any p2) // 0xDBC966A01C02BCA7  b573</code>
 +
 +==== _NETWORK_SPENT_MOVE_YACHT ====
 +<code cpp>void MONEY::_NETWORK_SPENT_MOVE_YACHT(int amount, BOOL p1, BOOL p2) // 0xE7DF4E0545DFB56E  b573</code>
 +
 +==== _NETWORK_SPENT_RENAME_ORGANIZATION ====
 +<code cpp>void MONEY::_NETWORK_SPENT_RENAME_ORGANIZATION(Any p0, Any p1, Any p2) // 0xFC4EE00A7B3BFB76  b573</code>
 +
 +==== _NETWORK_BUY_CONTRABAND ====
 +<code cpp>void MONEY::_NETWORK_BUY_CONTRABAND(int p0, int p1, Hash p2, BOOL p3, BOOL p4) // 0x30FD873ECE50E9F6  b757</code>
 +
 +==== _NETWORK_SPENT_VIP_UTILITY_CHARGES ====
 +<code cpp>void MONEY::_NETWORK_SPENT_VIP_UTILITY_CHARGES(Any p0, Any p1, Any p2) // 0x5182A339A3474510  b757</code>
 +
 +==== _0x112209CE0290C03A ====
 +<code cpp>void MONEY::_0x112209CE0290C03A(Any p0, Any p1, Any p2, Any p3) // 0x112209CE0290C03A  b757</code>
 +
 +==== _0xED5FD7AF10F5E262 ====
 +<code cpp>void MONEY::_0xED5FD7AF10F5E262(Any p0, Any p1, Any p2, Any p3) // 0xED5FD7AF10F5E262  b757</code>
 +
 +==== _0x0D30EB83668E63C5 ====
 +<code cpp>void MONEY::_0x0D30EB83668E63C5(Any p0, Any p1, Any p2, Any p3) // 0x0D30EB83668E63C5  b757</code>
 +
 +==== _NETWORK_SPENT_PA_SERVICE_DANCER ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PA_SERVICE_DANCER(Any p0, Any p1, Any p2, Any p3) // 0xB49ECA122467D05F  b757</code>
 +
 +==== _0xE23ADC6FCB1F29AE ====
 +<code cpp>void MONEY::_0xE23ADC6FCB1F29AE(Any p0, Any p1, Any p2) // 0xE23ADC6FCB1F29AE  b757</code>
 +
 +==== _NETWORK_SPENT_PA_SERVICE_HELI_PICKUP ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PA_SERVICE_HELI_PICKUP(Any p0, Any p1, Any p2, Any p3) // 0x0FE8E1FCD2B86B33  b757</code>
 +
 +==== _0x69EF772B192614C1 ====
 +<code cpp>void MONEY::_0x69EF772B192614C1(Any p0, Any p1, Any p2, Any p3) // 0x69EF772B192614C1  b757</code>
 +
 +==== _0x8E243837643D9583 ====
 +<code cpp>void MONEY::_0x8E243837643D9583(Any p0, Any p1, Any p2, Any p3) // 0x8E243837643D9583  b757</code>
 +
 +==== _0xBD0EFB25CCA8F97A ====
 +<code cpp>void MONEY::_0xBD0EFB25CCA8F97A(Any p0, Any p1, Any p2, Any p3) // 0xBD0EFB25CCA8F97A  b757</code>
 +
 +==== _0xA95F667A755725DA ====
 +<code cpp>void MONEY::_0xA95F667A755725DA(Any p0, Any p1, Any p2, Any p3) // 0xA95F667A755725DA  b757</code>
 +
 +==== _NETWORK_SPENT_PURCHASE_WAREHOUSE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PURCHASE_WAREHOUSE(int amount, Any* data, BOOL p2, BOOL p3) // 0x33981D6804E62F49  b944</code>
 +
 +==== _0x4128464231E3CA0B ====
 +<code cpp>void MONEY::_0x4128464231E3CA0B(Any p0, Any p1, Any p2, Any p3) // 0x4128464231E3CA0B  b944</code>
 +
 +==== _0x2FAB6614CE22E196 ====
 +<code cpp>void MONEY::_0x2FAB6614CE22E196(Any p0, Any p1, Any p2, Any p3) // 0x2FAB6614CE22E196  b944</code>
 +
 +==== _NETWORK_SPENT_ORDER_WAREHOUSE_VEHICLE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ORDER_WAREHOUSE_VEHICLE(Any p0, Any p1, Any p2, Any p3) // 0x05F04155A226FBBF  b757</code>
 +
 +==== _NETWORK_SPENT_ORDER_BODYGUARD_VEHICLE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ORDER_BODYGUARD_VEHICLE(Any p0, Any p1, Any p2, Any p3) // 0xE8B0B270B6E7C76E  b757</code>
 +
 +==== _NETWORK_SPENT_JUKEBOX ====
 +<code cpp>void MONEY::_NETWORK_SPENT_JUKEBOX(Any p0, Any p1, Any p2, Any p3) // 0x5BCDE0F640C773D2  b877</code>
 +
 +==== _0x998E18CEB44487FC ====
 +<code cpp>void MONEY::_0x998E18CEB44487FC(Any p0, Any p1, Any p2, Any p3) // 0x998E18CEB44487FC  b877</code>
 +
 +==== _0xFA07759E6FDDD7CF ====
 +<code cpp>void MONEY::_0xFA07759E6FDDD7CF(Any p0, Any p1, Any p2, Any p3) // 0xFA07759E6FDDD7CF  b877</code>
 +
 +==== _0x6FD97159FE3C971A ====
 +<code cpp>void MONEY::_0x6FD97159FE3C971A(Any p0, Any p1, Any p2, Any p3) // 0x6FD97159FE3C971A  b877</code>
 +
 +==== _0x675D19C6067CAE08 ====
 +<code cpp>void MONEY::_0x675D19C6067CAE08(Any p0, Any p1, Any p2, Any p3) // 0x675D19C6067CAE08  b877</code>
 +
 +==== _0xA51B086B0B2C0F7A ====
 +<code cpp>void MONEY::_0xA51B086B0B2C0F7A(Any p0, Any p1, Any p2, Any p3) // 0xA51B086B0B2C0F7A  b877</code>
 +
 +==== _NETWORK_SPENT_BA_SERVICE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BA_SERVICE(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xD7CCCBA28C4ECAF0  b877</code>
 +
 +==== _NETWORK_SPENT_BUSINESS ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUSINESS(Any p0, Any p1, Any p2, Any p3) // 0x0035BB914316F1E3  b877</code>
 +
 +==== _0x5F456788B05FAEAC ====
 +<code cpp>void MONEY::_0x5F456788B05FAEAC(Any p0, Any p1, Any p2) // 0x5F456788B05FAEAC  b944</code>
 +
 +==== _NETWORK_SPENT_VEHICLE_EXPORT_MODS ====
 +<code cpp>void MONEY::_NETWORK_SPENT_VEHICLE_EXPORT_MODS(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0xA75CCF58A60A5FD1  b944</code>
 +
 +==== _0xB4C2EC463672474E ====
 +<code cpp>void MONEY::_0xB4C2EC463672474E(Any p0, Any p1, Any p2, Any p3) // 0xB4C2EC463672474E  b944</code>
 +
 +==== _0x2AFC2D19B50797F2 ====
 +<code cpp>void MONEY::_0x2AFC2D19B50797F2(Any p0, Any p1, Any p2, Any p3) // 0x2AFC2D19B50797F2  b944</code>
 +
 +==== _NETWORK_SPENT_IMPORT_EXPORT_REPAIR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_IMPORT_EXPORT_REPAIR(Any p0, Any p1, Any p2) // 0xC1952F3773BA18FE  b944</code>
 +
 +==== _NETWORK_SPENT_PURCHASE_HANGAR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_PURCHASE_HANGAR(Any p0, Any p1, Any p2, Any p3) // 0xCCB339CC970452DA  b1180</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_HANGAR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_HANGAR(Any p0, Any p1, Any p2, Any p3) // 0x615EB504B0788DAF  b1180</code>
 +
 +==== _NETWORK_SPENT_HANGAR_UTILITY_CHARGES ====
 +<code cpp>void MONEY::_NETWORK_SPENT_HANGAR_UTILITY_CHARGES(int amount, BOOL p1, BOOL p2) // 0xB18AC2ECBB15CB6A  b1180</code>
 +
 +==== _NETWORK_SPENT_HANGAR_STAFF_CHARGES ====
 +<code cpp>void MONEY::_NETWORK_SPENT_HANGAR_STAFF_CHARGES(int amount, BOOL p1, BOOL p2) // 0xB1F1346FD57685D7  b1180</code>
 +
 +==== _NETWORK_SPENT_BUY_TRUCK ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_TRUCK(Any p0, Any p1, Any p2, Any p3) // 0xAC272C0AE01B4BD8  b1103</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_TRUCK ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_TRUCK(Any p0, Any p1, Any p2, Any p3) // 0x365E877C61D6988B  b1103</code>
 +
 +==== _NETWORK_SPENT_BUY_BUNKER ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_BUNKER(Any p0, Any p1, Any p2, Any p3) // 0x12D148D26538D0F9  b1103</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_BUNKER ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_BUNKER(Any p0, Any p1, Any p2, Any p3) // 0x0C82D21A77C22D49  b1103</code>
 +
 +==== _NETWORK_EARN_FROM_SELL_BUNKER ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_SELL_BUNKER(int amount, Hash bunkerHash) // 0x9251B6ABF2D0A5B4  b1103</code>
 +
 +==== _NETWORK_SPENT_BALLISTIC_EQUIPMENT ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BALLISTIC_EQUIPMENT(int amount, BOOL p1, BOOL p2) // 0x5D97630A8A0EF123  b1103</code>
 +
 +==== _NETWORK_EARN_FROM_RDR_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_RDR_BONUS(int amount, Any p1) // 0x7A5349B773584675  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_WAGE_PAYMENT ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_WAGE_PAYMENT(int amount) // 0x35F8DA0E8A31EF1B  b1180</code>
 +
 +==== _NETWORK_EARN_FROM_WAGE_PAYMENT_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_WAGE_PAYMENT_BONUS(int amount) // 0x005ACA7100BD101D  b1180</code>
 +
 +==== _NETWORK_SPENT_BUY_BASE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_BASE(Any p0, Any p1, Any p2, Any p3) // 0x4EA3F425C7744D21  b1290</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_BASE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_BASE(Any p0, Any p1, Any p2, Any p3) // 0x3DD3F33A5D55EA6F  b1290</code>
 +
 +==== _NETWORK_SPENT_BUY_TILTROTOR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_TILTROTOR(Any p0, Any p1, Any p2, Any p3) // 0x0CCE73BC7A11E885  b1290</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_TILTROTOR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_TILTROTOR(Any p0, Any p1, Any p2, Any p3) // 0x165E135D6DFA2907  b1290</code>
 +
 +==== _NETWORK_SPENT_EMPLOY_ASSASSINS ====
 +<code cpp>void MONEY::_NETWORK_SPENT_EMPLOY_ASSASSINS(Any p0, Any p1, Any p2, Any p3) // 0x5BBBD92186E1F1C5  b1290</code>
 +
 +==== _NETWORK_SPENT_GANGOPS_CANNON ====
 +<code cpp>void MONEY::_NETWORK_SPENT_GANGOPS_CANNON(Any p0, Any p1, Any p2, Any p3) // 0x771ADB0E7635B7BF  b1290</code>
 +
 +==== _NETWORK_SPENT_GANGOPS_START_MISSION ====
 +<code cpp>void MONEY::_NETWORK_SPENT_GANGOPS_START_MISSION(Any p0, Any p1, Any p2, Any p3) // 0xDA947AE8880D5C18  b1290</code>
 +
 +==== _NETWORK_SPENT_CASINO_HEIST_SKIP_MISSION ====
 +<code cpp>void MONEY::_NETWORK_SPENT_CASINO_HEIST_SKIP_MISSION(Any p0, Any p1, Any p2, Any p3) // 0x487009DD91D93429  b1868</code>
 +
 +==== _NETWORK_EARN_FROM_SELL_BASE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_SELL_BASE(int amount, Hash baseNameHash) // 0x0E1E2FF3F4EC11AA  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_TARGET_REFUND ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_TARGET_REFUND(int amount, int p1) // 0x5B669CF2299A271F  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_WAGES ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_WAGES(int amount, int p1) // 0x2DCB19ABAB0380A8  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_WAGES_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_WAGES_BONUS(int amount, int p1) // 0x15BB2A5C757EB91F  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_DAR_CHALLENGE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_DAR_CHALLENGE(int amount, Any p1) // 0xCAC672087B4A24AB  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_DOOMSDAY_FINALE_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_DOOMSDAY_FINALE_BONUS(int amount, Hash vehicleHash) // 0x128A747F4A230952  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_AWARDS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_AWARDS(int amount, const char* unk, Any p2) // 0xA9A31475F530DFDA  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_ELITE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_ELITE(int amount, const char* unk, int actIndex) // 0x2597A0D4A4FC2C77  b1290</code>
 +
 +==== _NETWORK_RIVAL_DELIVERY_COMPLETED ====
 +<code cpp>void MONEY::_NETWORK_RIVAL_DELIVERY_COMPLETED(int earnedMoney) // 0x1B882107C23A9022  b1290</code>
 +
 +==== _NETWORK_SPENT_GANGOPS_START_STRAND ====
 +<code cpp>void MONEY::_NETWORK_SPENT_GANGOPS_START_STRAND(int type, int amount, BOOL p2, BOOL p3) // 0xA19EC0786E326E06  b1290</code>
 +
 +==== _NETWORK_SPENT_GANGOPS_TRIP_SKIP ====
 +<code cpp>void MONEY::_NETWORK_SPENT_GANGOPS_TRIP_SKIP(int amount, BOOL p1, BOOL p2) // 0x5ECE6FD7B4EC8D6A  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_JOBS_PREP_PARTICIPATION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_JOBS_PREP_PARTICIPATION(int amount) // 0xED26584F6BDCBBFD  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_JOBS_SETUP ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_JOBS_SETUP(int amount, const char* unk) // 0xA9160796D47A2CF8  b1290</code>
 +
 +==== _NETWORK_EARN_FROM_GANGOPS_JOBS_FINALE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_GANGOPS_JOBS_FINALE(int amount, const char* unk) // 0x1C121FC9545E0D52  b1290</code>
 +
 +==== _0x2A7CEC72C3443BCC ====
 +<code cpp>void MONEY::_0x2A7CEC72C3443BCC(Any p0, Any p1, Any p2) // 0x2A7CEC72C3443BCC  b1290</code>
 +
 +==== _0xE0F82D68C7039158 ====
 +<code cpp>void MONEY::_0xE0F82D68C7039158(Any p0) // 0xE0F82D68C7039158  b1493</code>
 +
 +==== _0xB4DEAE67F35E2ACD ====
 +<code cpp>void MONEY::_0xB4DEAE67F35E2ACD(Any p0) // 0xB4DEAE67F35E2ACD  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_BB_EVENT_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_BB_EVENT_BONUS(int amount) // 0xFDD8D2440DAF1590  b1604</code>
 +
 +==== _0x2A93C46AAB1EACC9 ====
 +<code cpp>void MONEY::_0x2A93C46AAB1EACC9(Any p0, Any p1, Any p2, Any p3) // 0x2A93C46AAB1EACC9  b1493</code>
 +
 +==== _0x226C284C830D0CA8 ====
 +<code cpp>void MONEY::_0x226C284C830D0CA8(Any p0, Any p1, Any p2, Any p3) // 0x226C284C830D0CA8  b1493</code>
 +
 +==== _NETWORK_EARN_FROM_HACKER_TRUCK_MISSION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_HACKER_TRUCK_MISSION(Any p0, int amount, Any p2, Any p3) // 0xE8815FE993896AD3  b1493</code>
 +
 +==== _0xED76D195E6E3BF7F ====
 +<code cpp>void MONEY::_0xED76D195E6E3BF7F(Any p0, Any p1, Any p2, Any p3) // 0xED76D195E6E3BF7F  b1493</code>
 +
 +==== _0x1DC9B749E7AE282B ====
 +<code cpp>void MONEY::_0x1DC9B749E7AE282B(Any p0, Any p1, Any p2, Any p3) // 0x1DC9B749E7AE282B  b1493</code>
 +
 +==== _0xC6E74CF8C884C880 ====
 +<code cpp>void MONEY::_0xC6E74CF8C884C880(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xC6E74CF8C884C880  b1493</code>
 +
 +==== _0x65482BFD0923C8A1 ====
 +<code cpp>void MONEY::_0x65482BFD0923C8A1(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x65482BFD0923C8A1  b1493</code>
 +
 +==== _NETWORK_SPENT_RDRHATCHET_BONUS ====
 +<code cpp>void MONEY::_NETWORK_SPENT_RDRHATCHET_BONUS(int amount, BOOL p1, BOOL p2) // 0xE284D46FFDB82E36  b1493</code>
 +
 +==== _NETWORK_SPENT_NIGHTCLUB_ENTRY_FEE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_NIGHTCLUB_ENTRY_FEE(Player player, int amount, Any p1, BOOL p2, BOOL p3) // 0x876056684281655D  b1493</code>
 +
 +==== _NETWORK_SPENT_NIGHTCLUB_BAR_DRINK ====
 +<code cpp>void MONEY::_NETWORK_SPENT_NIGHTCLUB_BAR_DRINK(int amount, Any p1, BOOL p2, BOOL p3) // 0xDD21B016E4289465  b1493</code>
 +
 +==== _NETWORK_SPENT_BOUNTY_HUNTER_MISSION ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BOUNTY_HUNTER_MISSION(int amount, BOOL p1, BOOL p2) // 0x1BEA0CD93470BB1F  b1493</code>
 +
 +==== _NETWORK_SPENT_REHIRE_DJ ====
 +<code cpp>void MONEY::_NETWORK_SPENT_REHIRE_DJ(int amount, Any p1, BOOL p2, BOOL p3) // 0xF6C8A544E4CF14FC  b1493</code>
 +
 +==== _NETWORK_SPENT_ARENA_JOIN_SPECTATOR ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ARENA_JOIN_SPECTATOR(int amount, Any p1, BOOL p2, BOOL p3) // 0x14EAEA58F93B55AF  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_ARENA_SKILL_LEVEL_PROGRESSION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ARENA_SKILL_LEVEL_PROGRESSION(int amount, Any p1) // 0xE08256F972C7BB2C  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_ARENA_CAREER_PROGRESSION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ARENA_CAREER_PROGRESSION(int amount, Any p1) // 0x0F99F70C61F14619  b1604</code>
 +
 +==== _NETWORK_SPENT_MAKE_IT_RAIN ====
 +<code cpp>void MONEY::_NETWORK_SPENT_MAKE_IT_RAIN(int amount, BOOL p1, BOOL p2) // 0xE5F5A060439C2F5D  b1604</code>
 +
 +==== _NETWORK_SPENT_BUY_ARENA ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_ARENA(int amount, BOOL p1, BOOL p2, const char* p3) // 0x40D5DA9550B7CB46  b1604</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_ARENA ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_ARENA(int amount, BOOL p1, BOOL p2, const char* p3) // 0x037ABB06825D7AB1  b1604</code>
 +
 +==== _NETWORK_SPENT_ARENA_SPECTATOR_BOX ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ARENA_SPECTATOR_BOX(int amount, Any p1, BOOL p2, BOOL p3) // 0x7049BF858601DC0F  b1604</code>
 +
 +==== _NETWORK_SPENT_SPIN_THE_WHEEL_PAYMENT ====
 +<code cpp>void MONEY::_NETWORK_SPENT_SPIN_THE_WHEEL_PAYMENT(int amount, Any p1, BOOL p2) // 0x9A5BD1D0000B339C  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_SPIN_THE_WHEEL_CASH ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_SPIN_THE_WHEEL_CASH(int amount) // 0x676C48776CACBB5A  b1604</code>
 +
 +==== _NETWORK_SPENT_ARENA_PREMIUM ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ARENA_PREMIUM(int amount, BOOL p1, BOOL p2) // 0x619496D837EFD920  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_ARENA_WAR ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ARENA_WAR(int amount, Any p1, Any p2, Any p3) // 0x631F1CB8FB4130AA  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_ASSASSINATE_TARGET_KILLED_2 ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_ASSASSINATE_TARGET_KILLED_2(int amount) // 0x5E7AE8AABE8B7C0D  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_BB_EVENT_CARGO ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_BB_EVENT_CARGO(int amount) // 0xA82959062361B259  b1604</code>
 +
 +==== _NETWORK_EARN_FROM_RC_TIME_TRIAL ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_RC_TIME_TRIAL(int amount) // 0xDFF49EE984E7AAE8  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_DAILY_OBJECTIVE_EVENT ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_DAILY_OBJECTIVE_EVENT(int amount) // 0x5128DF14A5BB86FC  b1734</code>
 +
 +==== _NETWORK_SPENT_CASINO_MEMBERSHIP ====
 +<code cpp>void MONEY::_NETWORK_SPENT_CASINO_MEMBERSHIP(int amount, BOOL p1, BOOL p2, int p3) // 0xFBBE0570EDF39D46  b1734</code>
 +
 +==== _NETWORK_SPENT_BUY_CASINO ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BUY_CASINO(int amount, BOOL p1, BOOL p2, Any* data) // 0x34A6FC4D06C4DA0F  b1734</code>
 +
 +==== _NETWORK_SPENT_UPGRADE_CASINO ====
 +<code cpp>void MONEY::_NETWORK_SPENT_UPGRADE_CASINO(int amount, BOOL p1, BOOL p2, Any* data) // 0x4740D62BC1B4EBEA  b1734</code>
 +
 +==== _NETWORK_SPENT_CASINO_GENERIC ====
 +<code cpp>void MONEY::_NETWORK_SPENT_CASINO_GENERIC(int amount, Any p1, Any p2, Any p3, Any p4) // 0x88BF9B612B84D3C3  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_TIME_TRIAL_WIN ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_TIME_TRIAL_WIN(int amount) // 0x0819DB99FD2FBBD8  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_COLLECTABLES_ACTION_FIGURES ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_COLLECTABLES_ACTION_FIGURES(int amount) // 0x5517F90043466049  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_COMPLETE_COLLECTION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_COMPLETE_COLLECTION(int amount) // 0x83AD64F53F4E9483  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_SELLING_VEHICLE ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_SELLING_VEHICLE(int amount) // 0x8BCB27A057DF7B7F  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_CASINO_MISSION_REWARD ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CASINO_MISSION_REWARD(int amount) // 0x566FD402B25787DE  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_CASINO_STORY_MISSION_REWARD ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CASINO_STORY_MISSION_REWARD(int amount) // 0xAC95ED552157E092  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_CASINO_MISSION_PARTICIPATION ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CASINO_MISSION_PARTICIPATION(int amount) // 0x09E8F18641BE2575  b1734</code>
 +
 +==== _NETWORK_EARN_FROM_CASINO_AWARD ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_CASINO_AWARD(int amount, Hash hash) // 0x973A9781A34F8DEB  b1734</code>
 +
 +==== _0x870289A558348378 ====
 +<code cpp>void MONEY::_0x870289A558348378(Any p0, Any p1, Any p2, Any p3) // 0x870289A558348378  b1868</code>
 +
 +==== _0x5574637681911FDA ====
 +<code cpp>void MONEY::_0x5574637681911FDA(Any p0, Any p1, Any p2, Any p3) // 0x5574637681911FDA  b1868</code>
 +
 +==== _NETWORK_SPENT_CASINO_HEIST ====
 +<code cpp>void MONEY::_NETWORK_SPENT_CASINO_HEIST(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9, Any p10) // 0xD30E8392F407C328  b1868</code>
 +
 +==== _0xB5B58E24868CB09E ====
 +<code cpp>void MONEY::_0xB5B58E24868CB09E(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xB5B58E24868CB09E  b1868</code>
 +
 +==== _NETWORK_SPENT_ARCADE_GAME ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ARCADE_GAME(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xEAD3D81F2C3A1458  b1868</code>
 +
 +==== _NETWORK_SPENT_ARCADE_GENERIC ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ARCADE_GENERIC(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x43AA7FAC4E6D6687  b1868</code>
 +
 +==== _NETWORK_EARN_CASINO_HEIST ====
 +<code cpp>void MONEY::_NETWORK_EARN_CASINO_HEIST(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x72E7C7B9615FA3C3  b1868</code>
 +
 +==== _0x4C3B75694F7E0D9C ====
 +<code cpp>void MONEY::_0x4C3B75694F7E0D9C(Any p0, Any p1, Any p2) // 0x4C3B75694F7E0D9C  b1868</code>
 +
 +==== _0xD29334ED1A256DBF ====
 +<code cpp>void MONEY::_0xD29334ED1A256DBF(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xD29334ED1A256DBF  b1868</code>
 +
 +==== _0xA95CFB4E02390842 ====
 +<code cpp>void MONEY::_0xA95CFB4E02390842(Any p0, Any p1, Any p2) // 0xA95CFB4E02390842  b1868</code>
 +
 +==== _0x0DD362F14F18942A ====
 +<code cpp>void MONEY::_0x0DD362F14F18942A(int amount, Any p1, Any p2) // 0x0DD362F14F18942A  b1868</code>
 +
 +==== _NETWORK_EARN_CASINO_HEIST_BONUS ====
 +<code cpp>void MONEY::_NETWORK_EARN_CASINO_HEIST_BONUS(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x3EC7471E6909798A  b1868</code>
 +
 +==== _NETWORK_EARN_FROM_COLLECTION_ITEM ====
 +<code cpp>void MONEY::_NETWORK_EARN_FROM_COLLECTION_ITEM(int amount, Any p1) // 0x84FF63BD4966F33D  b1734</code>
 +
 +==== _NETWORK_EARN_COLLECTABLE_COMPLETED_COLLECTION ====
 +<code cpp>void MONEY::_NETWORK_EARN_COLLECTABLE_COMPLETED_COLLECTION(int amount, Any p1) // 0x5C9B198AF5A54FA6  b2060</code>
 +
 +==== _0xDE68E30D89F97132 ====
 +<code cpp>void MONEY::_0xDE68E30D89F97132(int amount, Any p1) // 0xDE68E30D89F97132  b2060</code>
 +
 +==== _0xE2E244AB823B4483 ====
 +<code cpp>void MONEY::_0xE2E244AB823B4483(int amount, Any p1) // 0xE2E244AB823B4483  b2060</code>
 +
 +==== _NETWORK_SPENT_BEACH_PARTY_GENERIC ====
 +<code cpp>void MONEY::_NETWORK_SPENT_BEACH_PARTY_GENERIC(Any p0) // 0x54ABA22FA6371249  b2189</code>
 +
 +==== _NETWORK_SPENT_SUBMARINE ====
 +<code cpp>void MONEY::_NETWORK_SPENT_SUBMARINE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x6C8BC1488527AAAB  b2189</code>
 +
 +==== _NETWORK_SPENT_CASINO_CLUB_GENERIC ====
 +<code cpp>void MONEY::_NETWORK_SPENT_CASINO_CLUB_GENERIC(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8) // 0xC991C255AA6D90B2  b2189</code>
 +
 +==== _0x90CD7C6871FBF1B4 ====
 +<code cpp>void MONEY::_0x90CD7C6871FBF1B4(Any p0, Any p1, Any p2, Any p3) // 0x90CD7C6871FBF1B4  b2189</code>
 +
 +==== _0x89049A84065CE68E ====
 +<code cpp>void MONEY::_0x89049A84065CE68E(Any p0, Any p1, Any p2, Any p3) // 0x89049A84065CE68E  b2189</code>
 +
 +==== _NETWORK_SPENT_ISLAND_HEIST ====
 +<code cpp>void MONEY::_NETWORK_SPENT_ISLAND_HEIST(Any p0, Any p1, Any p2, Any p3) // 0xE86689E5F82DE429  b2189</code>
 +
 +==== _NETWORK_EARN_ISLAND_HEIST ====
 +<code cpp>void MONEY::_NETWORK_EARN_ISLAND_HEIST(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0xD21D111C46BA9F15  b2189</code>
 +
 +==== _0xA51338E0DCCD4065 ====
 +<code cpp>void MONEY::_0xA51338E0DCCD4065(Any p0, Any p1, Any p2) // 0xA51338E0DCCD4065  b2189</code>
 +
 +==== _0xE2BB399D90942091 ====
 +<code cpp>void MONEY::_0xE2BB399D90942091(Any p0, Any p1) // 0xE2BB399D90942091  b2189</code>
 +
 +==== NETWORK_GET_VC_BANK_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_VC_BANK_BALANCE() // 0x76EF28DA05EA395A 0x16184FB5 b323</code>
 +
 +==== NETWORK_GET_VC_WALLET_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_VC_WALLET_BALANCE(int characterSlot) // 0xA40F9C2623F6A8B5 0x4F5B781C b323</code>
 +
 +==== NETWORK_GET_VC_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_VC_BALANCE() // 0x5CBAD97E059E1B94 0xADF8F882 b323</code>
 +
 +==== NETWORK_GET_EVC_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_EVC_BALANCE() // 0x5D1E75F91C07DEE5 0xF1EDB7F4 b323</code>
 +
 +==== NETWORK_GET_PVC_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_PVC_BALANCE() // 0x4F54F3B6C202FB4E 0x56485B56 b323</code>
 +
 +==== NETWORK_GET_STRING_WALLET_BALANCE ====
 +<code cpp>const char* MONEY::NETWORK_GET_STRING_WALLET_BALANCE(int characterSlot) // 0xF9B10B529DCFB33B 0xC1A11435 b323</code>
 +
 +==== NETWORK_GET_STRING_BANK_BALANCE ====
 +<code cpp>const char* MONEY::NETWORK_GET_STRING_BANK_BALANCE() // 0xA6FA3979BED01B81 0xAA7EA3BD b323</code>
 +
 +==== NETWORK_GET_STRING_BANK_WALLET_BALANCE ====
 +<code cpp>const char* MONEY::NETWORK_GET_STRING_BANK_WALLET_BALANCE() // 0x700AF71AE615E6DD 0x7D4FD28C b323</code>
 +
 +==== _NETWORK_GET_VC_WALLET_BALANCE_IS_NOT_LESS_THAN ====
 +<code cpp>BOOL MONEY::_NETWORK_GET_VC_WALLET_BALANCE_IS_NOT_LESS_THAN(int amount, int characterSlot) // 0xED5AB8860415BABA 0x0EA2188C b323</code>
 +
 +<code>Returns true if wallet balance >= amount.</code>
 +==== _NETWORK_GET_VC_BANK_BALANCE_IS_NOT_LESS_THAN ====
 +<code cpp>BOOL MONEY::_NETWORK_GET_VC_BANK_BALANCE_IS_NOT_LESS_THAN(int amount) // 0xA31FD6A0865B6D14 0xABED6020 b323</code>
 +
 +<code>Returns true if bank balance >= amount.</code>
 +==== _NETWORK_GET_VC_BANK_WALLET_BALANCE_IS_NOT_LESS_THAN ====
 +<code cpp>BOOL MONEY::_NETWORK_GET_VC_BANK_WALLET_BALANCE_IS_NOT_LESS_THAN(int amount, int characterSlot) // 0xDC18531D7019A535 0xCA23FD25 b323</code>
 +
 +<code>Returns true if bank balance + wallet balance >= amount.</code>
 +==== NETWORK_GET_PVC_TRANSFER_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_PVC_TRANSFER_BALANCE() // 0x13A8DE2FD77D04F3 0xC670C814 b323</code>
 +
 +<code>Retturns the same value as NETWORK_GET_REMAINING_TRANSFER_BALANCE.</code>
 +==== _0x08E8EEADFD0DC4A0 ====
 +<code cpp>BOOL MONEY::_0x08E8EEADFD0DC4A0(int amount) // 0x08E8EEADFD0DC4A0 0x03461981 b323</code>
 +
 +<code>Returns false if amount > wallet balance or daily transfer limit has been hit.</code>
 +==== NETWORK_CAN_RECEIVE_PLAYER_CASH ====
 +<code cpp>BOOL MONEY::NETWORK_CAN_RECEIVE_PLAYER_CASH(Any p0, Any p1, Any p2, Any p3) // 0x5D17BE59D2123284 0x41F5F10E b323</code>
 +
 +==== NETWORK_GET_REMAINING_TRANSFER_BALANCE ====
 +<code cpp>int MONEY::NETWORK_GET_REMAINING_TRANSFER_BALANCE() // 0xEA560AC9EEB1E19B 0xA9021211 b323</code>
 +
 +<code>Returns the same value as NETWORK_GET_PVC_TRANSFER_BALANCE.</code>
 +==== WITHDRAW_VC ====
 +<code cpp>int MONEY::WITHDRAW_VC(int amount) // 0xF70EFA14FE091429 0x8B755993 b323</code>
 +
 +<code>Does nothing and always returns 0.</code>
 +==== DEPOSIT_VC ====
 +<code cpp>BOOL MONEY::DEPOSIT_VC(int amount) // 0xE260E0BB9CD995AC 0x8F266745 b323</code>
 +
 +<code>Does nothing and always returns false.</code>
 +==== _0xE154B48B68EF72BC ====
 +<code cpp>BOOL MONEY::_0xE154B48B68EF72BC(Any p0) // 0xE154B48B68EF72BC 0x531E4892 b323</code>
 +
 +<code>This function is hard-coded to always return 1.</code>
 +==== _0x6FCF8DDEA146C45B ====
 +<code cpp>BOOL MONEY::_0x6FCF8DDEA146C45B(Any p0) // 0x6FCF8DDEA146C45B 0xB96C7ABE b323</code>
 +
 +<code>This function is hard-coded to always return 1.</code>
 +
 +===== NETSHOPPING =====
 +==== _NET_GAMESERVER_USE_SERVER_TRANSACTIONS ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_USE_SERVER_TRANSACTIONS() // 0x7D2708796355B20B  b1290</code>
 +
 +==== _NET_GAMESERVER_CATALOG_ITEM_EXISTS ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_CATALOG_ITEM_EXISTS(const char* name) // 0xBD4D7EAF8A30F637  b323</code>
 +
 +==== _NET_GAMESERVER_CATALOG_ITEM_EXISTS_HASH ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_CATALOG_ITEM_EXISTS_HASH(Hash hash) // 0x247F0F73A182EA0B  b323</code>
 +
 +==== NET_GAMESERVER_GET_PRICE ====
 +<code cpp>int NETSHOPPING::NET_GAMESERVER_GET_PRICE(Hash itemHash, Hash categoryHash, BOOL p2) // 0xC27009422FCCA88D  b323</code>
 +
 +<code>bool is always true in game scripts</code>
 +==== _NET_GAMESERVER_CATALOG_IS_READY ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_CATALOG_IS_READY() // 0x3C4487461E9B0DCB  b323</code>
 +
 +==== _NET_GAMESERVER_IS_CATALOG_VALID ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_IS_CATALOG_VALID() // 0x2B949A1E6AEC8F6A  b323</code>
 +
 +==== _0x85F6C9ABA1DE2BCF ====
 +<code cpp>Any NETSHOPPING::_0x85F6C9ABA1DE2BCF() // 0x85F6C9ABA1DE2BCF  b323</code>
 +
 +==== _0x357B152EF96C30B6 ====
 +<code cpp>Any NETSHOPPING::_0x357B152EF96C30B6() // 0x357B152EF96C30B6  b323</code>
 +
 +==== _NET_GAMESERVER_GET_CATALOG_STATE ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_GET_CATALOG_STATE(int* state) // 0xCF38DAFBB49EDE5E  b323</code>
 +
 +==== _0xE3E5A7C64CA2C6ED ====
 +<code cpp>Any NETSHOPPING::_0xE3E5A7C64CA2C6ED() // 0xE3E5A7C64CA2C6ED  b323</code>
 +
 +==== _0x0395CB47B022E62C ====
 +<code cpp>BOOL NETSHOPPING::_0x0395CB47B022E62C(int* p0) // 0x0395CB47B022E62C  b323</code>
 +
 +==== NET_GAMESERVER_START_SESSION ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_START_SESSION(int charSlot) // 0xA135AC892A58FC07  b323</code>
 +
 +==== _0x72EB7BA9B69BF6AB ====
 +<code cpp>BOOL NETSHOPPING::_0x72EB7BA9B69BF6AB() // 0x72EB7BA9B69BF6AB  b323</code>
 +
 +==== _0x170910093218C8B9 ====
 +<code cpp>BOOL NETSHOPPING::_0x170910093218C8B9(int* p0) // 0x170910093218C8B9  b323</code>
 +
 +==== _0xC13C38E47EA5DF31 ====
 +<code cpp>BOOL NETSHOPPING::_0xC13C38E47EA5DF31(int* p0) // 0xC13C38E47EA5DF31  b323</code>
 +
 +==== NET_GAMESERVER_IS_SESSION_VALID ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_IS_SESSION_VALID(int charSlot) // 0xB24F0944DA203D9E  b323</code>
 +
 +==== _0x74A0FD0688F1EE45 ====
 +<code cpp>int NETSHOPPING::_0x74A0FD0688F1EE45(int p0) // 0x74A0FD0688F1EE45  b323</code>
 +
 +<code>NET_GAMESERVER_*</code>
 +==== NET_GAMESERVER_SESSION_APPLY_RECEIVED_DATA ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_SESSION_APPLY_RECEIVED_DATA(int charSlot) // 0x2F41D51BA3BCD1F1  b323</code>
 +
 +==== NET_GAMESERVER_IS_SESSION_REFRESH_PENDING ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_IS_SESSION_REFRESH_PENDING() // 0x810E8431C0614BF9  b323</code>
 +
 +==== _NET_GAMESERVER_GET_BALANCE ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_GET_BALANCE(BOOL inventory, BOOL playerbalance) // 0x35A1B3E1D1315CFA  b323</code>
 +
 +<code>Note: only one of the arguments can be set to true at a time</code>
 +==== _0x613F125BA3BD2EB9 ====
 +<code cpp>BOOL NETSHOPPING::_0x613F125BA3BD2EB9() // 0x613F125BA3BD2EB9  b372</code>
 +
 +==== _NET_GAMESERVER_GET_TRANSACTION_MANAGER_DATA ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_GET_TRANSACTION_MANAGER_DATA(int* p0, BOOL* p1) // 0x897433D292B44130  b323</code>
 +
 +==== NET_GAMESERVER_BASKET_START ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BASKET_START(int* transactionId, Hash categoryHash, Hash actionHash, int flags) // 0x279F08B1A4B29B7E  b323</code>
 +
 +==== _NET_GAMESERVER_BASKET_DELETE ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_BASKET_DELETE() // 0xFA336E7F40C0A0D0  b372</code>
 +
 +==== NET_GAMESERVER_BASKET_END ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BASKET_END() // 0xA65568121DF2EA26  b323</code>
 +
 +==== NET_GAMESERVER_BASKET_ADD_ITEM ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BASKET_ADD_ITEM(Any* itemData, int quantity) // 0xF30980718C8ED876  b323</code>
 +
 +==== NET_GAMESERVER_BASKET_IS_FULL ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BASKET_IS_FULL() // 0x27F76CC6C55AD30E  b323</code>
 +
 +==== NET_GAMESERVER_BASKET_APPLY_SERVER_DATA ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BASKET_APPLY_SERVER_DATA(Any p0, Any* p1) // 0xE1A0450ED46A7812  b323</code>
 +
 +==== NET_GAMESERVER_CHECKOUT_START ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_CHECKOUT_START(int transactionId) // 0x39BE7CEA8D9CC8E6  b323</code>
 +
 +==== NET_GAMESERVER_BEGIN_SERVICE ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_BEGIN_SERVICE(int* transactionId, Hash categoryHash, Hash itemHash, Hash actionTypeHash, int value, int flags) // 0x3C5FD37B5499582E  b323</code>
 +
 +==== NET_GAMESERVER_END_SERVICE ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_END_SERVICE(int transactionId) // 0xE2A99A9B524BEFFF  b323</code>
 +
 +==== _NET_GAMESERVER_DELETE_CHARACTER_SLOT ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_DELETE_CHARACTER_SLOT(int slot, BOOL transfer, Hash reason) // 0x51F1A8E48C3D2F6D  b323</code>
 +
 +==== _NET_GAMESERVER_DELETE_CHARACTER_SLOT_GET_STATUS ====
 +<code cpp>int NETSHOPPING::_NET_GAMESERVER_DELETE_CHARACTER_SLOT_GET_STATUS() // 0x0A6D923DFFC9BD89  b323</code>
 +
 +==== NET_GAMESERVER_DELETE_SET_TELEMETRY_NONCE_SEED ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_DELETE_SET_TELEMETRY_NONCE_SEED() // 0x112CEF1615A1139F  b323</code>
 +
 +==== _NET_GAMESERVER_TRANSFER_BANK_TO_WALLET ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_TRANSFER_BANK_TO_WALLET(int charSlot, int amount) // 0xD47A2C1BA117471D  b323</code>
 +
 +==== _NET_GAMESERVER_TRANSFER_WALLET_TO_BANK ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_TRANSFER_WALLET_TO_BANK(int charSlot, int amount) // 0xC2F7FE5309181C7D  b323</code>
 +
 +==== _NET_GAMESERVER_TRANSFER_CASH_GET_STATUS ====
 +<code cpp>int NETSHOPPING::_NET_GAMESERVER_TRANSFER_CASH_GET_STATUS() // 0x23789E777D14CE44  b323</code>
 +
 +<code>Same as 0x350AA5EBC03D3BD2</code>
 +==== _NET_GAMESERVER_TRANSFER_CASH_GET_STATUS_2 ====
 +<code cpp>int NETSHOPPING::_NET_GAMESERVER_TRANSFER_CASH_GET_STATUS_2() // 0x350AA5EBC03D3BD2  b323</code>
 +
 +<code>Same as 0x23789E777D14CE44</code>
 +==== _NET_GAMESERVER_TRANSFER_CASH_SET_TELEMETRY_NONCE_SEED ====
 +<code cpp>BOOL NETSHOPPING::_NET_GAMESERVER_TRANSFER_CASH_SET_TELEMETRY_NONCE_SEED() // 0x498C1E05CE5F7877  b323</code>
 +
 +<code>Used to be NETWORK_SHOP_CASH_TRANSFER_SET_TELEMETRY_NONCE_SEED</code>
 +==== NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED ====
 +<code cpp>BOOL NETSHOPPING::NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(int p0) // 0x9507D4271988E1AE  b323</code>
 +
 +
 +===== NETWORK =====
 +==== _GET_ONLINE_VERSION ====
 +<code cpp>const char* NETWORK::_GET_ONLINE_VERSION() // 0xFCA9373EF340AC0A  b323</code>
 +
 +<code>Online version is defined here: update\update.rpf\common\data\version.txt
 +
 +Example:
 +
 +[ONLINE_VERSION_NUMBER]
 +1.33
 +
 +_GET_ONLINE_VERSION() will return "1.33"</code>
 +==== NETWORK_IS_SIGNED_IN ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SIGNED_IN() // 0x054354A99211EB96 0xADD0B40F b323</code>
 +
 +<code>Returns whether the player is signed into Social Club.</code>
 +==== NETWORK_IS_SIGNED_ONLINE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SIGNED_ONLINE() // 0x1077788E268557C2 0x6E5BDCE2 b323</code>
 +
 +<code>Returns whether the game is not in offline mode.
 +
 +seemed not to work for some ppl</code>
 +==== _0xBD545D44CCE70597 ====
 +<code cpp>BOOL NETWORK::_0xBD545D44CCE70597() // 0xBD545D44CCE70597  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 1.</code>
 +==== _0xEBCAB9E5048434F4 ====
 +<code cpp>Any NETWORK::_0xEBCAB9E5048434F4() // 0xEBCAB9E5048434F4  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 1.</code>
 +==== _0x74FB3E29E6D10FA9 ====
 +<code cpp>Any NETWORK::_0x74FB3E29E6D10FA9() // 0x74FB3E29E6D10FA9  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _0x7808619F31FF22DB ====
 +<code cpp>Any NETWORK::_0x7808619F31FF22DB() // 0x7808619F31FF22DB  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 1.</code>
 +==== _0xA0FA4EC6A05DA44E ====
 +<code cpp>Any NETWORK::_0xA0FA4EC6A05DA44E() // 0xA0FA4EC6A05DA44E  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== NETWORK_HAS_VALID_ROS_CREDENTIALS ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_VALID_ROS_CREDENTIALS() // 0x85443FF4C328F53B 0x3FB40673 b323</code>
 +
 +<code>Returns whether the signed-in user has valid Rockstar Online Services (ROS) credentials.</code>
 +==== _0x8D11E61A4ABF49CC ====
 +<code cpp>BOOL NETWORK::_0x8D11E61A4ABF49CC() // 0x8D11E61A4ABF49CC 0xBDC8F63E b323</code>
 +
 +<code>NETWORK_IS_*
 +
 +Seems to be related to PlayStation</code>
 +==== NETWORK_IS_CLOUD_AVAILABLE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_CLOUD_AVAILABLE() // 0x9A4CF4F48AD77302 0xC7FF5AFC b323</code>
 +
 +==== NETWORK_HAS_SOCIAL_CLUB_ACCOUNT ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_SOCIAL_CLUB_ACCOUNT() // 0x67A5589628E0CFF6 0x66EC713F b323</code>
 +
 +==== NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT ====
 +<code cpp>BOOL NETWORK::NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT() // 0xBA9775570DB788CF 0x358D1D77 b323</code>
 +
 +==== NETWORK_IS_HOST ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_HOST() // 0x8DB296B814EDDA07 0xE46AC10F b323</code>
 +
 +<code>If you are host, returns true else returns false.</code>
 +==== _0x4237E822315D8BA9 ====
 +<code cpp>BOOL NETWORK::_0x4237E822315D8BA9() // 0x4237E822315D8BA9  b323</code>
 +
 +==== NETWORK_HAVE_ONLINE_PRIVILEGES ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ONLINE_PRIVILEGES() // 0x25CB5A9F37BFD063 0xEF63BFDF b323</code>
 +
 +==== _NETWORK_HAS_AGE_RESTRICTED_PROFILE ====
 +<code cpp>BOOL NETWORK::_NETWORK_HAS_AGE_RESTRICTED_PROFILE() // 0x1353F87E89946207  b323</code>
 +
 +==== NETWORK_HAVE_USER_CONTENT_PRIVILEGES ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_USER_CONTENT_PRIVILEGES(int p0) // 0x72D918C99BCACC54 0x1F88819D b323</code>
 +
 +==== NETWORK_HAVE_COMMUNICATION_PRIVILEGES ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_COMMUNICATION_PRIVILEGES(int p0, Player player) // 0xAEEF48CDF5B6CE7C 0x2D817A5E b323</code>
 +
 +==== _0x78321BEA235FD8CD ====
 +<code cpp>BOOL NETWORK::_0x78321BEA235FD8CD(Any p0, BOOL p1) // 0x78321BEA235FD8CD  b323</code>
 +
 +==== NETWORK_CHECK_USER_CONTENT_PRIVILEGES ====
 +<code cpp>BOOL NETWORK::NETWORK_CHECK_USER_CONTENT_PRIVILEGES(int p0, int p1, BOOL p2) // 0x595F028698072DD9 0xBB54AA3D b323</code>
 +
 +==== NETWORK_CHECK_COMMUNICATION_PRIVILEGES ====
 +<code cpp>BOOL NETWORK::NETWORK_CHECK_COMMUNICATION_PRIVILEGES(int p0, int p1, BOOL p2) // 0x83F28CE49FBBFFBA 0xA79E5B05 b323</code>
 +
 +==== _0x07EAB372C8841D99 ====
 +<code cpp>Any NETWORK::_0x07EAB372C8841D99(Any p0, Any p1, Any p2) // 0x07EAB372C8841D99  b1011</code>
 +
 +==== _0x906CA41A4B74ECA4 ====
 +<code cpp>Any NETWORK::_0x906CA41A4B74ECA4() // 0x906CA41A4B74ECA4  b1493</code>
 +
 +==== _0x023ACAB2DC9DC4A4 ====
 +<code cpp>Any NETWORK::_0x023ACAB2DC9DC4A4() // 0x023ACAB2DC9DC4A4  b1493</code>
 +
 +==== NETWORK_HAS_SOCIAL_NETWORKING_SHARING_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_SOCIAL_NETWORKING_SHARING_PRIV() // 0x76BF03FADBF154F5 0xEB864288 b323</code>
 +
 +==== NETWORK_GET_AGE_GROUP ====
 +<code cpp>int NETWORK::NETWORK_GET_AGE_GROUP() // 0x9614B71F8ADB982B 0xAB07CBBE b323</code>
 +
 +==== _0x0CF6CC51AA18F0F8 ====
 +<code cpp>Any NETWORK::_0x0CF6CC51AA18F0F8(Any p0, Any p1, Any p2) // 0x0CF6CC51AA18F0F8  b1180</code>
 +
 +==== _0x64E5C4CC82847B73 ====
 +<code cpp>BOOL NETWORK::_0x64E5C4CC82847B73() // 0x64E5C4CC82847B73  b1734</code>
 +
 +<code>Hardcoded to return false.</code>
 +==== _0x1F7BC3539F9E0224 ====
 +<code cpp>void NETWORK::_0x1F7BC3539F9E0224() // 0x1F7BC3539F9E0224  b1180</code>
 +
 +==== _NETWORK_HAVE_ONLINE_PRIVILEGE_2 ====
 +<code cpp>BOOL NETWORK::_NETWORK_HAVE_ONLINE_PRIVILEGE_2() // 0x5EA784D197556507  b323</code>
 +
 +==== _0xA8ACB6459542A8C8 ====
 +<code cpp>Any NETWORK::_0xA8ACB6459542A8C8() // 0xA8ACB6459542A8C8  b323</code>
 +
 +==== _0x83FE8D7229593017 ====
 +<code cpp>void NETWORK::_0x83FE8D7229593017() // 0x83FE8D7229593017  b323</code>
 +
 +==== _0x53C10C8BD774F2C9 ====
 +<code cpp>Any NETWORK::_0x53C10C8BD774F2C9() // 0x53C10C8BD774F2C9  b1011</code>
 +
 +==== NETWORK_CAN_BAIL ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_BAIL() // 0x580CE4438479CC61 0x60E1FEDF b323</code>
 +
 +==== NETWORK_BAIL ====
 +<code cpp>void NETWORK::NETWORK_BAIL(int p0, int p1, int p2) // 0x95914459A87EBA28 0x87D79A04 b323</code>
 +
 +==== _0x283B6062A2C01E9B ====
 +<code cpp>void NETWORK::_0x283B6062A2C01E9B() // 0x283B6062A2C01E9B 0x96E28FE2 b323</code>
 +
 +==== _0x8B4FFC790CA131EF ====
 +<code cpp>Any NETWORK::_0x8B4FFC790CA131EF(Any p0, Any p1, Any p2, Any p3) // 0x8B4FFC790CA131EF  b617</code>
 +
 +==== _NETWORK_TRANSITION_TRACK ====
 +<code cpp>void NETWORK::_NETWORK_TRANSITION_TRACK(Hash hash, int p1, int p2, int state, int p4) // 0xC3BFED92026A2AAD  b617</code>
 +
 +==== _0x04918A41BC9B8157 ====
 +<code cpp>Any NETWORK::_0x04918A41BC9B8157(Any p0, Any p1, Any p2) // 0x04918A41BC9B8157  b617</code>
 +
 +==== NETWORK_CAN_ACCESS_MULTIPLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_ACCESS_MULTIPLAYER(int* loadingState) // 0xAF50DA1A3F8B1BA4 0xA520B982 b323</code>
 +
 +<code>11 - Need to download tunables.
 +12 - Need to download background script.
 +
 +Returns 1 if the multiplayer is loaded, otherwhise 0.</code>
 +==== NETWORK_IS_MULTIPLAYER_DISABLED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_MULTIPLAYER_DISABLED() // 0x9747292807126EDA 0x05518C0F b323</code>
 +
 +==== NETWORK_CAN_ENTER_MULTIPLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_ENTER_MULTIPLAYER() // 0x7E782A910C362C25 0x4A23B9C9 b323</code>
 +
 +==== NETWORK_SESSION_ENTER ====
 +<code cpp>Any NETWORK::NETWORK_SESSION_ENTER(Any p0, Any p1, Any p2, int maxPlayers, Any p4, Any p5) // 0x330ED4D05491934F 0x543CD2BE b323</code>
 +
 +<code>unknown params
 +
 +p0 = 0, 2, or 999 (The global is 999 by default.)
 +p1 = 0 (Always in every script it's found in atleast.)
 +p2 = 0, 3, or 4 (Based on a var that is determined by a function.)
 +p3 = maxPlayers (It's obvious in x360 scripts it's always 18)
 +p4 = 0 (Always in every script it's found in atleast.)
 +p5 = 0 or 1. (1 if network_can_enter_multiplayer, but set to 0 if other checks after that are passed.)
 +p5 is reset to 0 if,
 +Global_1315318 = 0 or Global_1315323 = 9 or 12 or (Global_1312629 = 0 && Global_1312631 = true/1) those are passed.</code>
 +==== NETWORK_SESSION_FRIEND_MATCHMAKING ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_FRIEND_MATCHMAKING(int p0, int p1, int maxPlayers, BOOL p3) // 0x2CFC76E0D087C994 0x4E53202A b323</code>
 +
 +==== NETWORK_SESSION_CREW_MATCHMAKING ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_CREW_MATCHMAKING(int p0, int p1, int p2, int maxPlayers, BOOL p4) // 0x94BC51E9449D917F 0xD7624E6B b323</code>
 +
 +==== NETWORK_SESSION_ACTIVITY_QUICKMATCH ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_ACTIVITY_QUICKMATCH(Any p0, Any p1, Any p2, Any p3) // 0xBE3E347A87ACEB82 0x3F75CC38 b323</code>
 +
 +==== NETWORK_SESSION_HOST ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_HOST(int p0, int maxPlayers, BOOL p2) // 0x6F3D4ED9BEE4E61D 0x6716460F b323</code>
 +
 +<code>Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.</code>
 +==== NETWORK_SESSION_HOST_CLOSED ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_HOST_CLOSED(int p0, int maxPlayers) // 0xED34C0C02C098BB7 0x8AC9EA19 b323</code>
 +
 +==== NETWORK_SESSION_HOST_FRIENDS_ONLY ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_HOST_FRIENDS_ONLY(int p0, int maxPlayers) // 0xB9CFD27A5D578D83 0x26864403 b323</code>
 +
 +<code>Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.</code>
 +==== NETWORK_SESSION_IS_CLOSED_FRIENDS ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_CLOSED_FRIENDS() // 0xFBCFA2EA2E206890 0x56E75FE4 b323</code>
 +
 +==== NETWORK_SESSION_IS_CLOSED_CREW ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_CLOSED_CREW() // 0x74732C6CA90DA2B4 0xA95299B9 b323</code>
 +
 +==== NETWORK_SESSION_IS_SOLO ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_SOLO() // 0xF3929C2379B60CCE 0x3D2C1916 b323</code>
 +
 +==== NETWORK_SESSION_IS_PRIVATE ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_PRIVATE() // 0xCEF70AA5B3F89BA1 0xDB67785D b323</code>
 +
 +==== NETWORK_SESSION_END ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_END(BOOL p0, BOOL p1) // 0xA02E59562D711006 0xBCACBEA2 b323</code>
 +
 +<code>p0 is always false and p1 varies.
 +NETWORK_SESSION_END(0, 1)
 +NETWORK_SESSION_END(0, 0)
 +Results in: "Connection to session lost due to an unknown network error. Please return to Grand Theft Auto V and try again later."</code>
 +==== _0xB9351A07A0D458B1 ====
 +<code cpp>Any NETWORK::_0xB9351A07A0D458B1(Any p0) // 0xB9351A07A0D458B1  b2060</code>
 +
 +==== NETWORK_SESSION_KICK_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_SESSION_KICK_PLAYER(Player player) // 0xFA8904DC5F304220 0x1E20138A b323</code>
 +
 +<code>Only works as host.</code>
 +==== NETWORK_SESSION_GET_KICK_VOTE ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_GET_KICK_VOTE(Player player) // 0xD6D09A6F32F49EF1 0x8A559D26 b323</code>
 +
 +==== _0x041C7F2A6C9894E6 ====
 +<code cpp>Any NETWORK::_0x041C7F2A6C9894E6(Any p0, Any p1, Any p2) // 0x041C7F2A6C9894E6  b463</code>
 +
 +==== NETWORK_JOIN_PREVIOUSLY_FAILED_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_JOIN_PREVIOUSLY_FAILED_SESSION() // 0x59DF79317F85A7E0 0x6CDAA7D2 b323</code>
 +
 +==== NETWORK_JOIN_PREVIOUSLY_FAILED_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_JOIN_PREVIOUSLY_FAILED_TRANSITION() // 0xFFE1E5B792D92B34 0xBF21818E b323</code>
 +
 +==== NETWORK_SESSION_SET_MATCHMAKING_GROUP ====
 +<code cpp>void NETWORK::NETWORK_SESSION_SET_MATCHMAKING_GROUP(int matchmakingGroup) // 0x49EC8030F5015F8B 0x3C3E2AB6 b323</code>
 +
 +==== NETWORK_SESSION_SET_MATCHMAKING_GROUP_MAX ====
 +<code cpp>void NETWORK::NETWORK_SESSION_SET_MATCHMAKING_GROUP_MAX(int playerType, int playerCount) // 0x8B6A4DD0AF9CE215 0x5F29A7E0 b323</code>
 +
 +<code>playerTypes:
 +0 = regular joiner
 +4 = spectator
 +8 = unknown</code>
 +==== NETWORK_SESSION_GET_MATCHMAKING_GROUP_FREE ====
 +<code cpp>int NETWORK::NETWORK_SESSION_GET_MATCHMAKING_GROUP_FREE(int p0) // 0x56CE820830EF040B 0x36EAD960 b323</code>
 +
 +==== _0xCAE55F48D3D7875C ====
 +<code cpp>void NETWORK::_0xCAE55F48D3D7875C(int p0) // 0xCAE55F48D3D7875C 0x5BE529F7 b323</code>
 +
 +<code>NETWORK_SESSION_*
 +
 +p0 must be <= 4</code>
 +==== _0xF49ABC20D8552257 ====
 +<code cpp>void NETWORK::_0xF49ABC20D8552257(Any p0) // 0xF49ABC20D8552257 0x454C7B67 b323</code>
 +
 +==== _0x4811BBAC21C5FCD5 ====
 +<code cpp>void NETWORK::_0x4811BBAC21C5FCD5(Any p0) // 0x4811BBAC21C5FCD5 0xE5961511 b323</code>
 +
 +==== _0x5539C3EBF104A53A ====
 +<code cpp>void NETWORK::_0x5539C3EBF104A53A(BOOL p0) // 0x5539C3EBF104A53A 0xAE396263 b323</code>
 +
 +==== _0x702BC4D605522539 ====
 +<code cpp>void NETWORK::_0x702BC4D605522539(Any p0) // 0x702BC4D605522539 0x913FD7D6 b323</code>
 +
 +==== NETWORK_SESSION_SET_MATCHMAKING_PROPERTY_ID ====
 +<code cpp>void NETWORK::NETWORK_SESSION_SET_MATCHMAKING_PROPERTY_ID(BOOL p0) // 0x3F52E880AAF6C8CA 0xB3D9A67F b323</code>
 +
 +==== NETWORK_SESSION_SET_MATCHMAKING_MENTAL_STATE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_SET_MATCHMAKING_MENTAL_STATE(Any p0) // 0xF1EEA2DDA9FFA69D 0x6CC062FC b323</code>
 +
 +==== _0x5ECD378EE64450AB ====
 +<code cpp>void NETWORK::_0x5ECD378EE64450AB(Any p0) // 0x5ECD378EE64450AB  b573</code>
 +
 +==== _0x59D421683D31835A ====
 +<code cpp>void NETWORK::_0x59D421683D31835A(Any p0) // 0x59D421683D31835A  b573</code>
 +
 +==== _0x1153FA02A659051C ====
 +<code cpp>void NETWORK::_0x1153FA02A659051C() // 0x1153FA02A659051C 0x57F9BC83 b323</code>
 +
 +==== NETWORK_SESSION_VALIDATE_JOIN ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VALIDATE_JOIN(BOOL p0) // 0xC19F6C8E7865A6FF 0xF3768F90 b323</code>
 +
 +==== NETWORK_ADD_FOLLOWERS ====
 +<code cpp>void NETWORK::NETWORK_ADD_FOLLOWERS(int* p0, int p1) // 0x236406F60CF216D6 0x0EC62629 b323</code>
 +
 +<code>..</code>
 +==== NETWORK_CLEAR_FOLLOWERS ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_FOLLOWERS() // 0x058F43EC59A8631A 0x5E557307 b323</code>
 +
 +==== NETWORK_GET_GLOBAL_MULTIPLAYER_CLOCK ====
 +<code cpp>void NETWORK::NETWORK_GET_GLOBAL_MULTIPLAYER_CLOCK(int* hours, int* minutes, int* seconds) // 0x6D03BFBD643B2A02 0x74E8C53E b323</code>
 +
 +==== _0x600F8CB31C7AAB6E ====
 +<code cpp>void NETWORK::_0x600F8CB31C7AAB6E(Any p0) // 0x600F8CB31C7AAB6E 0x959E43A3 b323</code>
 +
 +==== _NETWORK_GET_TARGETING_MODE ====
 +<code cpp>int NETWORK::_NETWORK_GET_TARGETING_MODE() // 0xDFFA5BE8381C3314  b463</code>
 +
 +==== NETWORK_FIND_GAMERS_IN_CREW ====
 +<code cpp>BOOL NETWORK::NETWORK_FIND_GAMERS_IN_CREW(Any p0) // 0xE532D6811B3A4D2A 0x7771AB83 b323</code>
 +
 +==== NETWORK_FIND_MATCHED_GAMERS ====
 +<code cpp>BOOL NETWORK::NETWORK_FIND_MATCHED_GAMERS(Any p0, float p1, float p2, float p3) // 0xF7B2CFDE5C9F700D 0xA13045D4 b323</code>
 +
 +==== NETWORK_IS_FINDING_GAMERS ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FINDING_GAMERS() // 0xDDDF64C91BFCF0AA 0xA6DAA79F b323</code>
 +
 +==== _0xF9B83B77929D8863 ====
 +<code cpp>Any NETWORK::_0xF9B83B77929D8863() // 0xF9B83B77929D8863 0xBEDC4503 b323</code>
 +
 +==== NETWORK_GET_NUM_FOUND_GAMERS ====
 +<code cpp>int NETWORK::NETWORK_GET_NUM_FOUND_GAMERS() // 0xA1B043EE79A916FB 0xF4B80C7E b323</code>
 +
 +==== NETWORK_GET_FOUND_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_FOUND_GAMER(Any* p0, Any p1) // 0x9DCFF2AFB68B3476 0xA08C9141 b323</code>
 +
 +==== NETWORK_CLEAR_FOUND_GAMERS ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_FOUND_GAMERS() // 0x6D14CCEE1B40381A 0x6AA9A154 b323</code>
 +
 +==== _NETWORK_GET_GAMER_STATUS ====
 +<code cpp>BOOL NETWORK::_NETWORK_GET_GAMER_STATUS(Any* p0) // 0x85A0EF54A500882C 0x42BD0780 b323</code>
 +
 +==== _0x2CC848A861D01493 ====
 +<code cpp>Any NETWORK::_0x2CC848A861D01493() // 0x2CC848A861D01493 0xBEB98840 b323</code>
 +
 +==== _0x94A8394D150B013A ====
 +<code cpp>Any NETWORK::_0x94A8394D150B013A() // 0x94A8394D150B013A 0x08029970 b323</code>
 +
 +<code>NETWORK_IS_*</code>
 +==== _0x5AE17C6B0134B7F1 ====
 +<code cpp>Any NETWORK::_0x5AE17C6B0134B7F1() // 0x5AE17C6B0134B7F1 0xC871E745 b323</code>
 +
 +==== NETWORK_GET_GAMER_STATUS_RESULT ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_GAMER_STATUS_RESULT(Any* p0, Any p1) // 0x02A8BEC6FD9AF660 0xB5ABC4B4 b323</code>
 +
 +==== NETWORK_CLEAR_GET_GAMER_STATUS ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_GET_GAMER_STATUS() // 0x86E0660E4F5C956D 0x3F7EDBBD b323</code>
 +
 +==== NETWORK_SESSION_JOIN_INVITE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_JOIN_INVITE() // 0xC6F8AB8A4189CF3A 0x3D6360B5 b323</code>
 +
 +==== NETWORK_SESSION_CANCEL_INVITE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_CANCEL_INVITE() // 0x2FBF47B1B36D36F9 0x20317535 b323</code>
 +
 +==== NETWORK_SESSION_FORCE_CANCEL_INVITE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_FORCE_CANCEL_INVITE() // 0xA29177F7703B5644 0x3FD49D3B b323</code>
 +
 +==== NETWORK_HAS_PENDING_INVITE ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_PENDING_INVITE() // 0xAC8C7B9B88C4A668 0x0C207D6E b323</code>
 +
 +==== _0xC42DD763159F3461 ====
 +<code cpp>BOOL NETWORK::_0xC42DD763159F3461() // 0xC42DD763159F3461 0xFBBAC350 b323</code>
 +
 +==== _NETWORK_ACCEPT_INVITE ====
 +<code cpp>BOOL NETWORK::_NETWORK_ACCEPT_INVITE() // 0x62A0296C1BB1CEB3 0x0907A6BF b323</code>
 +
 +<code>NETWORK_RE*
 +
 +Triggers a CEventNetworkInviteConfirmed event</code>
 +==== NETWORK_SESSION_WAS_INVITED ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_WAS_INVITED() // 0x23DFB504655D0CE4 0x6A0BEA60 b323</code>
 +
 +==== NETWORK_SESSION_GET_INVITER ====
 +<code cpp>void NETWORK::NETWORK_SESSION_GET_INVITER(int* networkHandle) // 0xE57397B4A3429DD0 0xE9C6B3FD b323</code>
 +
 +==== _0xD313DE83394AF134 ====
 +<code cpp>BOOL NETWORK::_0xD313DE83394AF134() // 0xD313DE83394AF134 0x3EA9D44C b323</code>
 +
 +<code>NETWORK_SESSION_IS_*</code>
 +==== _0xBDB6F89C729CF388 ====
 +<code cpp>BOOL NETWORK::_0xBDB6F89C729CF388() // 0xBDB6F89C729CF388 0x9374523F b323</code>
 +
 +<code>NETWORK_SESSION_IS_*</code>
 +==== NETWORK_SUPPRESS_INVITE ====
 +<code cpp>void NETWORK::NETWORK_SUPPRESS_INVITE(BOOL toggle) // 0xA0682D67EF1FBA3D 0x323DC78C b323</code>
 +
 +==== NETWORK_BLOCK_INVITES ====
 +<code cpp>void NETWORK::NETWORK_BLOCK_INVITES(BOOL toggle) // 0x34F9E9049454A7A0 0xD156FD1A b323</code>
 +
 +==== NETWORK_BLOCK_JOIN_QUEUE_INVITES ====
 +<code cpp>void NETWORK::NETWORK_BLOCK_JOIN_QUEUE_INVITES(BOOL toggle) // 0xCFEB8AF24FC1D0BB 0x8AB4890B b323</code>
 +
 +==== _0xF814FEC6A19FD6E0 ====
 +<code cpp>void NETWORK::_0xF814FEC6A19FD6E0() // 0xF814FEC6A19FD6E0 0x32B7A076 b323</code>
 +
 +==== _NETWORK_BLOCK_KICKED_PLAYERS ====
 +<code cpp>void NETWORK::_NETWORK_BLOCK_KICKED_PLAYERS(BOOL p0) // 0x6B07B9CE4D390375 0x0FCE995D b323</code>
 +
 +==== NETWORK_SET_SCRIPT_READY_FOR_EVENTS ====
 +<code cpp>void NETWORK::NETWORK_SET_SCRIPT_READY_FOR_EVENTS(BOOL toggle) // 0x7AC752103856FB20 0xA639DCA2 b323</code>
 +
 +==== NETWORK_IS_OFFLINE_INVITE_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_OFFLINE_INVITE_PENDING() // 0x74698374C45701D2 0x70ED476A b323</code>
 +
 +==== _0x140E6A44870A11CE ====
 +<code cpp>void NETWORK::_0x140E6A44870A11CE() // 0x140E6A44870A11CE 0x50507BED b323</code>
 +
 +==== NETWORK_SESSION_HOST_SINGLE_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_SESSION_HOST_SINGLE_PLAYER(int p0) // 0xC74C33FCA52856D5 0xF3B1CA85 b323</code>
 +
 +<code>Loads up the map that is loaded when beeing in mission creator
 +Player gets placed in a mix between online/offline mode
 +p0 is always 2 in R* scripts.
 +
 +Appears to be patched in gtav b757 (game gets terminated) alonside with most other network natives to prevent online modding ~ghost30812</code>
 +==== NETWORK_SESSION_LEAVE_SINGLE_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_SESSION_LEAVE_SINGLE_PLAYER() // 0x3442775428FD2DAA 0xC692F86A b323</code>
 +
 +==== NETWORK_IS_GAME_IN_PROGRESS ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_GAME_IN_PROGRESS() // 0x10FAB35428CCC9D7 0x09B88E3E b323</code>
 +
 +==== NETWORK_IS_SESSION_ACTIVE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SESSION_ACTIVE() // 0xD83C2B94E7508980 0x715CB8C4 b323</code>
 +
 +==== NETWORK_IS_IN_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_SESSION() // 0xCA97246103B63917 0x4BC4105E b323</code>
 +
 +==== NETWORK_IS_SESSION_STARTED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SESSION_STARTED() // 0x9DE624D2FC4B603F 0x9D854A37 b323</code>
 +
 +<code>This checks if player is playing on gta online or not.
 +Please add an if and block your mod if this is "true".</code>
 +==== NETWORK_IS_SESSION_BUSY ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SESSION_BUSY() // 0xF4435D66A8E2905E 0x8592152D b323</code>
 +
 +==== NETWORK_CAN_SESSION_END ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_SESSION_END() // 0x4EEBC3694E49C572 0xE1FCCDBA b323</code>
 +
 +==== _0x4C9034162368E206 ====
 +<code cpp>Any NETWORK::_0x4C9034162368E206() // 0x4C9034162368E206  b2060</code>
 +
 +==== NETWORK_SESSION_MARK_VISIBLE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_MARK_VISIBLE(BOOL toggle) // 0x271CC6AB59EBF9A5 0x7017257D b323</code>
 +
 +==== NETWORK_SESSION_IS_VISIBLE ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_VISIBLE() // 0xBA416D68C631496A 0x4977AC28 b323</code>
 +
 +==== NETWORK_SESSION_BLOCK_JOIN_REQUESTS ====
 +<code cpp>void NETWORK::NETWORK_SESSION_BLOCK_JOIN_REQUESTS(BOOL toggle) // 0xA73667484D7037C3 0xE6EEF8AF b323</code>
 +
 +==== NETWORK_SESSION_CHANGE_SLOTS ====
 +<code cpp>void NETWORK::NETWORK_SESSION_CHANGE_SLOTS(int p0, BOOL p1) // 0xB4AB419E0D86ACAE 0x6BB93227 b323</code>
 +
 +==== NETWORK_SESSION_GET_PRIVATE_SLOTS ====
 +<code cpp>int NETWORK::NETWORK_SESSION_GET_PRIVATE_SLOTS() // 0x53AFD64C6758F2F9 0xE642F2FD b323</code>
 +
 +==== NETWORK_SESSION_VOICE_HOST ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VOICE_HOST() // 0x9C1556705F864230 0x345C2980 b323</code>
 +
 +==== NETWORK_SESSION_VOICE_LEAVE ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VOICE_LEAVE() // 0x6793E42BE02B575D 0xE566C7DA b323</code>
 +
 +==== NETWORK_SESSION_VOICE_CONNECT_TO_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VOICE_CONNECT_TO_PLAYER(Any* p0) // 0xABD5E88B8A2D3DB2 0x9DFD89E6 b323</code>
 +
 +<code>Only one occurence in the scripts:
 +
 +auto sub_cb43(auto a_0, auto a_1) {
 +    if (g_2594CB._f1) {
 +        if (NETWORK::_855BC38818F6F684()) {
 +            NETWORK::_ABD5E88B8A2D3DB2(&a_0._fB93);
 +            g_2594CB._f14/*{13}*/ = a_0._fB93;
 +            g_2594CB._f4/*"64"*/ = a_1;
 +            return 1;
 +        }
 +    }
 +    return 0;
 +}
 +
 +other:
 +looks like it passes a player in the paramater
 +
 +Contains string "NETWORK_VOICE_CONNECT_TO_PLAYER" in ida</code>
 +==== NETWORK_SESSION_VOICE_RESPOND_TO_REQUEST ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VOICE_RESPOND_TO_REQUEST(BOOL p0, int p1) // 0x7F8413B7FC2AA6B9 0x075321B5 b323</code>
 +
 +==== NETWORK_SESSION_VOICE_SET_TIMEOUT ====
 +<code cpp>void NETWORK::NETWORK_SESSION_VOICE_SET_TIMEOUT(int timeout) // 0x5B8ED3DB018927B1 0x6EFC2FD0 b323</code>
 +
 +==== NETWORK_SESSION_IS_IN_VOICE_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_IN_VOICE_SESSION() // 0x855BC38818F6F684 0x60AA4AA1 b323</code>
 +
 +==== _0xB5D3453C98456528 ====
 +<code cpp>Any NETWORK::_0xB5D3453C98456528() // 0xB5D3453C98456528  b323</code>
 +
 +==== NETWORK_SESSION_IS_VOICE_SESSION_BUSY ====
 +<code cpp>BOOL NETWORK::NETWORK_SESSION_IS_VOICE_SESSION_BUSY() // 0xEF0912DDF7C4CB4B 0x132CA01E b323</code>
 +
 +==== NETWORK_SEND_TEXT_MESSAGE ====
 +<code cpp>BOOL NETWORK::NETWORK_SEND_TEXT_MESSAGE(const char* message, int* networkHandle) // 0x3A214F2EC889B100 0xAFFEA720 b323</code>
 +
 +<code>Message is limited to 64 characters.</code>
 +==== NETWORK_SET_ACTIVITY_SPECTATOR ====
 +<code cpp>void NETWORK::NETWORK_SET_ACTIVITY_SPECTATOR(BOOL toggle) // 0x75138790B4359A74 0xFC9AD060 b323</code>
 +
 +==== NETWORK_IS_ACTIVITY_SPECTATOR ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_ACTIVITY_SPECTATOR() // 0x12103B9E0C9F92FB 0xAF329720 b323</code>
 +
 +==== _0x0E4F77F7B9D74D84 ====
 +<code cpp>void NETWORK::_0x0E4F77F7B9D74D84(Any p0) // 0x0E4F77F7B9D74D84  b573</code>
 +
 +==== NETWORK_SET_ACTIVITY_SPECTATOR_MAX ====
 +<code cpp>void NETWORK::NETWORK_SET_ACTIVITY_SPECTATOR_MAX(int maxSpectators) // 0x9D277B76D1D12222 0x74E0BC0A b323</code>
 +
 +==== NETWORK_GET_ACTIVITY_PLAYER_NUM ====
 +<code cpp>int NETWORK::NETWORK_GET_ACTIVITY_PLAYER_NUM(BOOL p0) // 0x73E2B500410DA5A2 0x31F951FD b323</code>
 +
 +==== NETWORK_IS_ACTIVITY_SPECTATOR_FROM_HANDLE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_ACTIVITY_SPECTATOR_FROM_HANDLE(int* networkHandle) // 0x2763BBAA72A7BCB9 0x58F1DF7D b323</code>
 +
 +==== NETWORK_HOST_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_HOST_TRANSITION(int p0, int p1, int p2, int p3, Any p4, BOOL p5, BOOL p6, int p7, Any p8, int p9) // 0xA60BB5CE242BB254 0x146764FB b323</code>
 +
 +<code>p0: Unknown int
 +p1: Unknown int
 +p2: Unknown int
 +p3: Unknown int
 +p4: Unknown always 0 in decompiled scripts
 +p5: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.
 +p6: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.
 +p7: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.
 +p8: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.
 +p9: Unknown int, sometimes 0, but also 32768 or 16384 appear in decompiled scripst, maybe a flag of some sort?
 +
 +From what I can tell it looks like it does the following:
 +Creates/hosts a new transition to another online session, using this in FiveM will result in other players being disconencted from the server/preventing them from joining. This is most likely because I entered the wrong session parameters since they're pretty much all unknown right now.
 +You also need to use `NetworkJoinTransition(Player player)` and `NetworkLaunchTransition()`.</code>
 +==== NETWORK_DO_TRANSITION_QUICKMATCH ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_QUICKMATCH(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x71FB0EBCD4915D56 0x2FF65C0B b323</code>
 +
 +==== NETWORK_DO_TRANSITION_QUICKMATCH_ASYNC ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_QUICKMATCH_ASYNC(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0xA091A5E44F0072E5 0x47D61C99 b323</code>
 +
 +==== NETWORK_DO_TRANSITION_QUICKMATCH_WITH_GROUP ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_QUICKMATCH_WITH_GROUP(Any p0, Any p1, Any p2, Any p3, Any* p4, Any p5, Any p6, Any p7) // 0x9C4AB58491FDC98A 0x5CE60A11 b323</code>
 +
 +==== NETWORK_JOIN_GROUP_ACTIVITY ====
 +<code cpp>Any NETWORK::NETWORK_JOIN_GROUP_ACTIVITY() // 0xA06509A691D12BE4 0x0D7E5CF9 b323</code>
 +
 +==== _0x1888694923EF4591 ====
 +<code cpp>void NETWORK::_0x1888694923EF4591() // 0x1888694923EF4591  b393</code>
 +
 +==== _0xB13E88E655E5A3BC ====
 +<code cpp>void NETWORK::_0xB13E88E655E5A3BC() // 0xB13E88E655E5A3BC 0x36A5F2DA b323</code>
 +
 +==== NETWORK_IS_TRANSITION_CLOSED_FRIENDS ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_CLOSED_FRIENDS() // 0x6512765E3BE78C50 0x95FFACF8 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_CLOSED_CREW ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_CLOSED_CREW() // 0x0DBD5D7E3C5BEC3B 0xB97A966B b323</code>
 +
 +==== NETWORK_IS_TRANSITION_SOLO ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_SOLO() // 0x5DC577201723960A 0x063DC4A5 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_PRIVATE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_PRIVATE() // 0x5A6AA44FF8E931E6 0x104DDE8D b323</code>
 +
 +==== _0x617F49C2668E6155 ====
 +<code cpp>int NETWORK::_0x617F49C2668E6155() // 0x617F49C2668E6155  b757</code>
 +
 +<code>NETWORK_GET_NUM_*</code>
 +==== _0x261E97AD7BCF3D40 ====
 +<code cpp>void NETWORK::_0x261E97AD7BCF3D40(BOOL p0) // 0x261E97AD7BCF3D40 0x7EF353E1 b323</code>
 +
 +==== _0x39917E1B4CB0F911 ====
 +<code cpp>void NETWORK::_0x39917E1B4CB0F911(BOOL p0) // 0x39917E1B4CB0F911 0xF60986FC b323</code>
 +
 +==== _0x2CE9D95E4051AECD ====
 +<code cpp>void NETWORK::_0x2CE9D95E4051AECD(Any p0) // 0x2CE9D95E4051AECD  b678</code>
 +
 +==== NETWORK_SET_TRANSITION_CREATOR_HANDLE ====
 +<code cpp>void NETWORK::NETWORK_SET_TRANSITION_CREATOR_HANDLE(Any* p0) // 0xEF26739BCD9907D5 0x1DD01FE7 b323</code>
 +
 +==== NETWORK_CLEAR_TRANSITION_CREATOR_HANDLE ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_TRANSITION_CREATOR_HANDLE() // 0xFB3272229A82C759 0x8BB336F7 b323</code>
 +
 +==== NETWORK_INVITE_GAMERS_TO_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_INVITE_GAMERS_TO_TRANSITION(Any* p0, Any p1) // 0x4A595C32F77DFF76 0x5332E645 b323</code>
 +
 +==== NETWORK_SET_GAMER_INVITED_TO_TRANSITION ====
 +<code cpp>void NETWORK::NETWORK_SET_GAMER_INVITED_TO_TRANSITION(int* networkHandle) // 0xCA2C8073411ECDB6 0x17F1C69D b323</code>
 +
 +==== NETWORK_LEAVE_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_LEAVE_TRANSITION() // 0xD23A1A815D21DB19 0x3A3599B7 b323</code>
 +
 +==== NETWORK_LAUNCH_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_LAUNCH_TRANSITION() // 0x2DCF46CB1A4F0884 0xE3570BA2 b323</code>
 +
 +==== _0xA2E9C1AB8A92E8CD ====
 +<code cpp>void NETWORK::_0xA2E9C1AB8A92E8CD(BOOL toggle) // 0xA2E9C1AB8A92E8CD 0x8D014B23 b323</code>
 +
 +<code>Appears to set whether a transition should be started when the session is migrating.
 +
 +NETWORK_SET_*</code>
 +==== NETWORK_BAIL_TRANSITION ====
 +<code cpp>void NETWORK::NETWORK_BAIL_TRANSITION(int p0, int p1, int p2) // 0xEAA572036990CD1B 0xB59D74CA b323</code>
 +
 +==== NETWORK_DO_TRANSITION_TO_GAME ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_TO_GAME(BOOL p0, int maxPlayers) // 0x3E9BB38102A589B0 0x1B2114D2 b323</code>
 +
 +==== NETWORK_DO_TRANSITION_TO_NEW_GAME ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_TO_NEW_GAME(BOOL p0, int maxPlayers, BOOL p2) // 0x4665F51EFED00034 0x58AFBE63 b323</code>
 +
 +==== NETWORK_DO_TRANSITION_TO_FREEMODE ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_TO_FREEMODE(Any* p0, Any p1, BOOL p2, int players, BOOL p4) // 0x3AAD8B2FCA1E289F 0xC7CB8ADF b323</code>
 +
 +<code>p2 is true 3/4 of the occurrences I found.
 +'players' is the number of players for a session. On PS3/360 it's always 18. On PC it's 32.</code>
 +==== NETWORK_DO_TRANSITION_TO_NEW_FREEMODE ====
 +<code cpp>BOOL NETWORK::NETWORK_DO_TRANSITION_TO_NEW_FREEMODE(Any* p0, Any* p1, int players, BOOL p3, BOOL p4, BOOL p5) // 0x9E80A5BA8109F974 0xAD13375E b323</code>
 +
 +==== NETWORK_IS_TRANSITION_TO_GAME ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_TO_GAME() // 0x9D7696D8F4FA6CB7 0x17146B2B b323</code>
 +
 +==== NETWORK_GET_TRANSITION_MEMBERS ====
 +<code cpp>int NETWORK::NETWORK_GET_TRANSITION_MEMBERS(Any* data, int dataCount) // 0x73B000F7FBC55829 0x31F19263 b323</code>
 +
 +<code>Returns count.</code>
 +==== NETWORK_APPLY_TRANSITION_PARAMETER ====
 +<code cpp>void NETWORK::NETWORK_APPLY_TRANSITION_PARAMETER(int p0, int p1) // 0x521638ADA1BA0D18 0xCEE79711 b323</code>
 +
 +==== NETWORK_APPLY_TRANSITION_PARAMETER_STRING ====
 +<code cpp>void NETWORK::NETWORK_APPLY_TRANSITION_PARAMETER_STRING(int p0, const char* string, BOOL p2) // 0xEBEFC2E77084F599 0xE0C28DB5 b323</code>
 +
 +==== NETWORK_SEND_TRANSITION_GAMER_INSTRUCTION ====
 +<code cpp>BOOL NETWORK::NETWORK_SEND_TRANSITION_GAMER_INSTRUCTION(int* networkHandle, const char* p1, int p2, int p3, BOOL p4) // 0x31D1D2B858D25E6B 0x468B0884 b323</code>
 +
 +<code>the first arg seems to be the network player handle (&handle) and the second var is pretty much always "" and the third seems to be a number between 0 and ~10 and the 4th is is something like 0 to 5 and I guess the 5th is a bool cuz it is always 0 or 1
 +
 +does this send an invite to a player?</code>
 +==== NETWORK_MARK_TRANSITION_GAMER_AS_FULLY_JOINED ====
 +<code cpp>BOOL NETWORK::NETWORK_MARK_TRANSITION_GAMER_AS_FULLY_JOINED(Any* p0) // 0x5728BB6D63E3FF1D 0x03383F57 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_HOST ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_HOST() // 0x0B824797C9BF2159 0x0C0900BC b323</code>
 +
 +==== NETWORK_IS_TRANSITION_HOST_FROM_HANDLE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_HOST_FROM_HANDLE(int* networkHandle) // 0x6B5C83BA3EFE6A10 0x0E2854C4 b323</code>
 +
 +==== NETWORK_GET_TRANSITION_HOST ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_TRANSITION_HOST(int* networkHandle) // 0x65042B9774C4435E 0x73098D40 b323</code>
 +
 +==== NETWORK_IS_IN_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_TRANSITION() // 0x68049AEFF83D8F0A 0xC3CDB626 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_STARTED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_STARTED() // 0x53FA83401D9C07FE 0x7917E111 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_BUSY ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_BUSY() // 0x520F3282A53D26B7 0xA357A2C6 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_MATCHMAKING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_MATCHMAKING() // 0x292564C735375EDF 0x8262C70E b323</code>
 +
 +==== _0xC571D0E77D8BBC29 ====
 +<code cpp>BOOL NETWORK::_0xC571D0E77D8BBC29() // 0xC571D0E77D8BBC29 0x4F4BB300 b323</code>
 +
 +<code>NETWORK_IS_TRANSITION_*</code>
 +==== _0x1398582B7F72B3ED ====
 +<code cpp>void NETWORK::_0x1398582B7F72B3ED(Any p0) // 0x1398582B7F72B3ED  b505</code>
 +
 +==== _0x1F8E00FB18239600 ====
 +<code cpp>void NETWORK::_0x1F8E00FB18239600(Any p0) // 0x1F8E00FB18239600  b573</code>
 +
 +==== _0xF6F4383B7C92F11A ====
 +<code cpp>void NETWORK::_0xF6F4383B7C92F11A(Any p0) // 0xF6F4383B7C92F11A  b573</code>
 +
 +==== NETWORK_OPEN_TRANSITION_MATCHMAKING ====
 +<code cpp>void NETWORK::NETWORK_OPEN_TRANSITION_MATCHMAKING() // 0x2B3A8F7CA3A38FDE 0xC71E607B b323</code>
 +
 +==== NETWORK_CLOSE_TRANSITION_MATCHMAKING ====
 +<code cpp>void NETWORK::NETWORK_CLOSE_TRANSITION_MATCHMAKING() // 0x43F4DBA69710E01E 0x82D32D07 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_OPEN_TO_MATCHMAKING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_OPEN_TO_MATCHMAKING() // 0x37A4494483B9F5C9 0xC901AA9F b323</code>
 +
 +==== NETWORK_SET_TRANSITION_VISIBILITY_LOCK ====
 +<code cpp>void NETWORK::NETWORK_SET_TRANSITION_VISIBILITY_LOCK(BOOL p0, BOOL p1) // 0x0C978FDA19692C2C 0x4AF0ADF5 b323</code>
 +
 +==== NETWORK_IS_TRANSITION_VISIBILITY_LOCKED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TRANSITION_VISIBILITY_LOCKED() // 0xD0A484CB2F829FBE 0xF637166E b323</code>
 +
 +==== NETWORK_SET_TRANSITION_ACTIVITY_ID ====
 +<code cpp>void NETWORK::NETWORK_SET_TRANSITION_ACTIVITY_ID(Any p0) // 0x30DE938B516F0AD2 0xCCA9C022 b323</code>
 +
 +==== NETWORK_CHANGE_TRANSITION_SLOTS ====
 +<code cpp>void NETWORK::NETWORK_CHANGE_TRANSITION_SLOTS(Any p0, Any p1) // 0xEEEDA5E6D7080987 0x1E5F6AEF b323</code>
 +
 +==== _0x973D76AA760A6CB6 ====
 +<code cpp>void NETWORK::_0x973D76AA760A6CB6(BOOL p0) // 0x973D76AA760A6CB6 0x0532DDD2 b323</code>
 +
 +==== NETWORK_HAS_PLAYER_STARTED_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_PLAYER_STARTED_TRANSITION(Player player) // 0x9AC9CCBFA8C29795 0x4ABD1E59 b323</code>
 +
 +==== NETWORK_ARE_TRANSITION_DETAILS_VALID ====
 +<code cpp>BOOL NETWORK::NETWORK_ARE_TRANSITION_DETAILS_VALID(Any p0) // 0x2615AA2A695930C1 0xCDEBCCE7 b323</code>
 +
 +==== NETWORK_JOIN_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_JOIN_TRANSITION(Player player) // 0x9D060B08CD63321A 0xB054EC4B b323</code>
 +
 +<code>int handle[76];
 +          NETWORK_HANDLE_FROM_FRIEND(iSelectedPlayer, &handle[0], 13);
 +          Player uVar2 = NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(&handle[0]);
 +          NETWORK_JOIN_TRANSITION(uVar2);
 +nothing doin.</code>
 +==== NETWORK_HAS_INVITED_GAMER_TO_TRANSITION ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_INVITED_GAMER_TO_TRANSITION(Any* p0) // 0x7284A47B3540E6CF 0x4F41DF6B b323</code>
 +
 +==== _0x3F9990BF5F22759C ====
 +<code cpp>BOOL NETWORK::_0x3F9990BF5F22759C(Any* p0) // 0x3F9990BF5F22759C 0x00F26CDC b323</code>
 +
 +<code>NETWORK_HAS_*</code>
 +==== NETWORK_IS_ACTIVITY_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_ACTIVITY_SESSION() // 0x05095437424397FA 0x577DAA8A b323</code>
 +
 +==== _0x4A9FDE3A5A6D0437 ====
 +<code cpp>void NETWORK::_0x4A9FDE3A5A6D0437(BOOL toggle) // 0x4A9FDE3A5A6D0437 0x18F03AFD b323</code>
 +
 +<code>Does nothing. It's just a nullsub.</code>
 +==== NETWORK_SEND_INVITE_VIA_PRESENCE ====
 +<code cpp>BOOL NETWORK::NETWORK_SEND_INVITE_VIA_PRESENCE(int* networkHandle, Any* p1, Any p2, Any p3) // 0xC3C7A6AFDB244624 0x8B99B72B b323</code>
 +
 +==== _NETWORK_SEND_PRESENCE_TRANSITION_INVITE ====
 +<code cpp>BOOL NETWORK::_NETWORK_SEND_PRESENCE_TRANSITION_INVITE(Any* p0, Any* p1, Any p2, Any p3) // 0xC116FF9B4D488291 0x877C0E1C b323</code>
 +
 +<code>String "NETWORK_SEND_PRESENCE_TRANSITION_INVITE" is contained in the function in ida so this one is correct.</code>
 +==== _0x1171A97A3D3981B6 ====
 +<code cpp>BOOL NETWORK::_0x1171A97A3D3981B6(Any* p0, Any* p1, Any p2, Any p3) // 0x1171A97A3D3981B6  b323</code>
 +
 +==== _0x742B58F723233ED9 ====
 +<code cpp>Any NETWORK::_0x742B58F723233ED9(Any p0) // 0x742B58F723233ED9 0x5E832444 b323</code>
 +
 +==== NETWORK_GET_NUM_PRESENCE_INVITES ====
 +<code cpp>int NETWORK::NETWORK_GET_NUM_PRESENCE_INVITES() // 0xCEFA968912D0F78D 0x3FDA00F3 b323</code>
 +
 +==== NETWORK_ACCEPT_PRESENCE_INVITE ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCEPT_PRESENCE_INVITE(Any p0) // 0xFA91550DF9318B22 0xE5DA4CED b323</code>
 +
 +==== NETWORK_REMOVE_PRESENCE_INVITE ====
 +<code cpp>BOOL NETWORK::NETWORK_REMOVE_PRESENCE_INVITE(Any p0) // 0xF0210268DB0974B1 0x93C665FA b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_ID ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_ID(Any p0) // 0xDFF09646E12EC386 0xD50DF46C b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_INVITER ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_INVITER(Any p0) // 0x4962CC4AA2F345B7 0x19EC65D9 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_HANDLE ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PRESENCE_INVITE_HANDLE(Any p0, Any* p1) // 0x38D5B0FEBB086F75 0xB2451429 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_SESSION_ID ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_SESSION_ID(Any p0) // 0x26E1CD96B0903D60 0xC5E0C989 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_CONTENT_ID ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_CONTENT_ID(Any p0) // 0x24409FC4C55CB22D 0xA4302183 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_PLAYLIST_LENGTH ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_PLAYLIST_LENGTH(Any p0) // 0xD39B3FFF8FFDD5BF 0x51B2D848 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_PLAYLIST_CURRENT ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRESENCE_INVITE_PLAYLIST_CURRENT(Any p0) // 0x728C4CC7920CD102 0x4677C656 b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_FROM_ADMIN ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PRESENCE_INVITE_FROM_ADMIN(Any p0) // 0x3DBF2DF0AEB7D289 0xF5E3401C b323</code>
 +
 +==== NETWORK_GET_PRESENCE_INVITE_IS_TOURNAMENT ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PRESENCE_INVITE_IS_TOURNAMENT(Any p0) // 0x8806CEBFABD3CE05 0x7D593B4C b323</code>
 +
 +==== NETWORK_HAS_FOLLOW_INVITE ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_FOLLOW_INVITE() // 0x76D9B976C4C09FDE 0xE96CFE7D b323</code>
 +
 +==== NETWORK_ACTION_FOLLOW_INVITE ====
 +<code cpp>Any NETWORK::NETWORK_ACTION_FOLLOW_INVITE() // 0xC88156EBB786F8D5 0xAB969F00 b323</code>
 +
 +==== NETWORK_CLEAR_FOLLOW_INVITE ====
 +<code cpp>Any NETWORK::NETWORK_CLEAR_FOLLOW_INVITE() // 0x439BFDE3CD0610F6 0x3242F952 b323</code>
 +
 +==== _0xEBF8284D8CADEB53 ====
 +<code cpp>void NETWORK::_0xEBF8284D8CADEB53() // 0xEBF8284D8CADEB53 0x9773F36A b323</code>
 +
 +==== NETWORK_REMOVE_TRANSITION_INVITE ====
 +<code cpp>void NETWORK::NETWORK_REMOVE_TRANSITION_INVITE(Any* p0) // 0x7524B431B2E6F7EE 0xFDE84CB7 b323</code>
 +
 +==== NETWORK_REMOVE_ALL_TRANSITION_INVITE ====
 +<code cpp>void NETWORK::NETWORK_REMOVE_ALL_TRANSITION_INVITE() // 0x726E0375C7A26368 0xF7134E73 b323</code>
 +
 +==== _0xF083835B70BA9BFE ====
 +<code cpp>void NETWORK::_0xF083835B70BA9BFE() // 0xF083835B70BA9BFE 0xC47352E7 b323</code>
 +
 +<code>NETWORK_RE*</code>
 +==== NETWORK_INVITE_GAMERS ====
 +<code cpp>BOOL NETWORK::NETWORK_INVITE_GAMERS(Any* p0, Any p1, Any* p2, Any* p3) // 0x9D80CD1D0E6327DE 0x52FB8074 b323</code>
 +
 +==== NETWORK_HAS_INVITED_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_INVITED_GAMER(Any* p0) // 0x4D86CD31E8976ECE 0xEC651BC0 b323</code>
 +
 +==== _0x71DC455F5CD1C2B1 ====
 +<code cpp>BOOL NETWORK::_0x71DC455F5CD1C2B1(Any* networkHandle) // 0x71DC455F5CD1C2B1  b505</code>
 +
 +<code>NETWORK_HAS_*</code>
 +==== _0x3855FB5EB2C5E8B2 ====
 +<code cpp>Any NETWORK::_0x3855FB5EB2C5E8B2(Any p0) // 0x3855FB5EB2C5E8B2  b505</code>
 +
 +==== NETWORK_GET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU(Any* p0) // 0x74881E6BCAE2327C 0x72BA00CE b323</code>
 +
 +==== NETWORK_SET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU ====
 +<code cpp>BOOL NETWORK::NETWORK_SET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU(Any* p0) // 0x7206F674F2A3B1BB 0xFD95899E b323</code>
 +
 +==== NETWORK_SET_INVITE_ON_CALL_FOR_INVITE_MENU ====
 +<code cpp>void NETWORK::NETWORK_SET_INVITE_ON_CALL_FOR_INVITE_MENU(Any* p0) // 0x66F010A4B031A331  b323</code>
 +
 +==== NETWORK_CHECK_DATA_MANAGER_SUCCEEDED_FOR_HANDLE ====
 +<code cpp>BOOL NETWORK::NETWORK_CHECK_DATA_MANAGER_SUCCEEDED_FOR_HANDLE(Any p0, Any* p1) // 0x44B37CDCAE765AAE  b323</code>
 +
 +==== _0x4AD490AE1536933B ====
 +<code cpp>Any NETWORK::_0x4AD490AE1536933B(Any p0, Any p1) // 0x4AD490AE1536933B  b372</code>
 +
 +==== _0x0D77A82DC2D0DA59 ====
 +<code cpp>void NETWORK::_0x0D77A82DC2D0DA59(Any* p0, Any* p1) // 0x0D77A82DC2D0DA59 0x0808D4CC b323</code>
 +
 +<code>NETWORK_SET_*</code>
 +==== FILLOUT_PM_PLAYER_LIST ====
 +<code cpp>BOOL NETWORK::FILLOUT_PM_PLAYER_LIST(int* networkHandle, Any p1, Any p2) // 0xCBBD7C4991B64809 0xCE40F423 b323</code>
 +
 +==== FILLOUT_PM_PLAYER_LIST_WITH_NAMES ====
 +<code cpp>BOOL NETWORK::FILLOUT_PM_PLAYER_LIST_WITH_NAMES(Any* p0, Any* p1, Any p2, Any p3) // 0x716B6DB9D1886106 0xB8DF604E b323</code>
 +
 +==== REFRESH_PLAYER_LIST_STATS ====
 +<code cpp>BOOL NETWORK::REFRESH_PLAYER_LIST_STATS(int p0) // 0xE26CCFF8094D8C74 0xF49C1533 b323</code>
 +
 +==== NETWORK_SET_CURRENT_DATA_MANAGER_HANDLE ====
 +<code cpp>BOOL NETWORK::NETWORK_SET_CURRENT_DATA_MANAGER_HANDLE(Any* p0) // 0x796A87B3B68D1F3D  b323</code>
 +
 +==== NETWORK_IS_IN_PLATFORM_PARTY ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_PLATFORM_PARTY() // 0x2FC5650B0271CB57 0xA812B6CB b323</code>
 +
 +<code>Hardcoded to return false.</code>
 +==== _NETWORK_GET_PLATFORM_PARTY_UNK ====
 +<code cpp>int NETWORK::_NETWORK_GET_PLATFORM_PARTY_UNK() // 0x01ABCE5E7CBDA196  b323</code>
 +
 +==== NETWORK_GET_PLATFORM_PARTY_MEMBERS ====
 +<code cpp>int NETWORK::NETWORK_GET_PLATFORM_PARTY_MEMBERS(Any* data, int dataSize) // 0x120364DE2845DAF8 0xF30E5814 b323</code>
 +
 +==== NETWORK_IS_IN_PLATFORM_PARTY_CHAT ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_PLATFORM_PARTY_CHAT() // 0xFD8B834A8BA05048 0xC6609191 b323</code>
 +
 +<code>Hardcoded to return false.</code>
 +==== NETWORK_IS_CHATTING_IN_PLATFORM_PARTY ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_CHATTING_IN_PLATFORM_PARTY(int* networkHandle) // 0x8DE9945BCC9AEC52 0x51367B34 b323</code>
 +
 +<code>This would be nice to see if someone is in party chat, but 2 sad notes.
 +1) It only becomes true if said person is speaking in that party at the time.
 +2) It will never, become true unless you are in that party with said person.</code>
 +==== _0x2BF66D2E7414F686 ====
 +<code cpp>Any NETWORK::_0x2BF66D2E7414F686() // 0x2BF66D2E7414F686 0x9156EFC0 b323</code>
 +
 +==== _0x14922ED3E38761F0 ====
 +<code cpp>BOOL NETWORK::_0x14922ED3E38761F0() // 0x14922ED3E38761F0 0x8FA6EE0E b323</code>
 +
 +<code>NETWORK_IS_*</code>
 +==== _0x6CE50E47F5543D0C ====
 +<code cpp>void NETWORK::_0x6CE50E47F5543D0C() // 0x6CE50E47F5543D0C  b573</code>
 +
 +==== _0xFA2888E3833C8E96 ====
 +<code cpp>void NETWORK::_0xFA2888E3833C8E96() // 0xFA2888E3833C8E96 0x7F70C15A b323</code>
 +
 +==== _0x25D990F8E0E3F13C ====
 +<code cpp>void NETWORK::_0x25D990F8E0E3F13C() // 0x25D990F8E0E3F13C  b323</code>
 +
 +==== _0xF1B84178F8674195 ====
 +<code cpp>void NETWORK::_0xF1B84178F8674195(Any p0) // 0xF1B84178F8674195 0x41702C8A b323</code>
 +
 +==== NETWORK_GET_RANDOM_INT ====
 +<code cpp>int NETWORK::NETWORK_GET_RANDOM_INT() // 0x599E4FA1F87EB5FF 0x208DD848 b323</code>
 +
 +==== NETWORK_GET_RANDOM_INT_RANGED ====
 +<code cpp>int NETWORK::NETWORK_GET_RANDOM_INT_RANGED(int rangeStart, int rangeEnd) // 0xE30CF56F1EFA5F43 0xF9B6426D b323</code>
 +
 +<code>Same as GET_RANDOM_INT_IN_RANGE</code>
 +==== NETWORK_PLAYER_IS_CHEATER ====
 +<code cpp>BOOL NETWORK::NETWORK_PLAYER_IS_CHEATER() // 0x655B91F1495A9090 0xA51DC214 b323</code>
 +
 +==== NETWORK_PLAYER_GET_CHEATER_REASON ====
 +<code cpp>int NETWORK::NETWORK_PLAYER_GET_CHEATER_REASON() // 0x172F75B6EE2233BA 0x1720ABA6 b323</code>
 +
 +==== NETWORK_PLAYER_IS_BADSPORT ====
 +<code cpp>BOOL NETWORK::NETWORK_PLAYER_IS_BADSPORT() // 0x19D8DA0E5A68045A 0xA19708E3 b323</code>
 +
 +==== _TRIGGER_SCRIPT_CRC_CHECK_ON_PLAYER ====
 +<code cpp>BOOL NETWORK::_TRIGGER_SCRIPT_CRC_CHECK_ON_PLAYER(Player player, int p1, Hash scriptHash) // 0x46FB3ED415C7641C 0xF9A51B92 b323</code>
 +
 +<code>p1 = 6</code>
 +==== _0xA12D3A5A3753CC23 ====
 +<code cpp>Any NETWORK::_0xA12D3A5A3753CC23() // 0xA12D3A5A3753CC23  b1103</code>
 +
 +==== _0xF287F506767CC8A9 ====
 +<code cpp>Any NETWORK::_0xF287F506767CC8A9() // 0xF287F506767CC8A9  b1103</code>
 +
 +==== _REMOTE_CHEAT_DETECTED ====
 +<code cpp>BOOL NETWORK::_REMOTE_CHEAT_DETECTED(Player player, int a, int b) // 0x472841A026D26D8B  b1103</code>
 +
 +==== BAD_SPORT_PLAYER_LEFT_DETECTED ====
 +<code cpp>BOOL NETWORK::BAD_SPORT_PLAYER_LEFT_DETECTED(int* networkHandle, int event, int amountReceived) // 0xEC5E3AF5289DCA81 0x4C2C6B6A b323</code>
 +
 +==== NETWORK_APPLY_PED_SCAR_DATA ====
 +<code cpp>void NETWORK::NETWORK_APPLY_PED_SCAR_DATA(Ped ped, int p1) // 0xE66C690248F11150 0x4818ACD0 b323</code>
 +
 +==== NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT ====
 +<code cpp>void NETWORK::NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT(int lobbySize, BOOL p1, int playerId) // 0x1CA59E306ECB80A5 0x470810ED b323</code>
 +
 +<code>p1 is always 0</code>
 +==== _NETWORK_IS_THIS_SCRIPT_MARKED ====
 +<code cpp>BOOL NETWORK::_NETWORK_IS_THIS_SCRIPT_MARKED(Any p0, BOOL p1, Any p2) // 0xD1110739EEADB592  b323</code>
 +
 +==== NETWORK_GET_THIS_SCRIPT_IS_NETWORK_SCRIPT ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_THIS_SCRIPT_IS_NETWORK_SCRIPT() // 0x2910669969E9535E 0xD9BF6549 b323</code>
 +
 +==== NETWORK_GET_MAX_NUM_PARTICIPANTS ====
 +<code cpp>int NETWORK::NETWORK_GET_MAX_NUM_PARTICIPANTS() // 0xA6C90FBC38E395EE 0xCCD8C02D b323</code>
 +
 +<code>Seems to always return 0, but it's used in quite a few loops.
 +
 +for (num3 = 0; num3 < NETWORK::0xCCD8C02D(); num3++)
 +    {
 +        if (NETWORK::NETWORK_IS_PARTICIPANT_ACTIVE(PLAYER::0x98F3B274(num3)) != 0)
 +        {
 +            var num5 = NETWORK::NETWORK_GET_PLAYER_INDEX(PLAYER::0x98F3B274(num3));</code>
 +==== NETWORK_GET_NUM_PARTICIPANTS ====
 +<code cpp>int NETWORK::NETWORK_GET_NUM_PARTICIPANTS() // 0x18D0456E86604654 0x3E25A3C5 b323</code>
 +
 +==== NETWORK_GET_SCRIPT_STATUS ====
 +<code cpp>int NETWORK::NETWORK_GET_SCRIPT_STATUS() // 0x57D158647A6BFABF 0x2BE9235A b323</code>
 +
 +==== NETWORK_REGISTER_HOST_BROADCAST_VARIABLES ====
 +<code cpp>void NETWORK::NETWORK_REGISTER_HOST_BROADCAST_VARIABLES(int* vars, int numVars) // 0x3E9B2F01C50DF595 0xDAF3B0AE b323</code>
 +
 +==== NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES ====
 +<code cpp>void NETWORK::NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES(int* vars, int numVars) // 0x3364AA97340CA215 0xBE3D32B4 b323</code>
 +
 +==== _0xEA8C0DDB10E2822A ====
 +<code cpp>void NETWORK::_0xEA8C0DDB10E2822A(Any p0, Any p1) // 0xEA8C0DDB10E2822A  b1868</code>
 +
 +==== _0xD6D7478CA62B8D41 ====
 +<code cpp>void NETWORK::_0xD6D7478CA62B8D41(Any p0, Any p1) // 0xD6D7478CA62B8D41  b1868</code>
 +
 +==== NETWORK_FINISH_BROADCASTING_DATA ====
 +<code cpp>void NETWORK::NETWORK_FINISH_BROADCASTING_DATA() // 0x64F62AFB081E260D 0xA71A1D2A b323</code>
 +
 +==== NETWORK_HAS_RECEIVED_HOST_BROADCAST_DATA ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_RECEIVED_HOST_BROADCAST_DATA() // 0x5D10B3795F3FC886 0x0B739F53 b323</code>
 +
 +==== NETWORK_GET_PLAYER_INDEX ====
 +<code cpp>int NETWORK::NETWORK_GET_PLAYER_INDEX(Player player) // 0x24FB80D107371267 0xBE1C1506 b323</code>
 +
 +==== NETWORK_GET_PARTICIPANT_INDEX ====
 +<code cpp>int NETWORK::NETWORK_GET_PARTICIPANT_INDEX(int index) // 0x1B84DF6AF2A46938 0xC4D91094 b323</code>
 +
 +==== NETWORK_GET_PLAYER_INDEX_FROM_PED ====
 +<code cpp>Player NETWORK::NETWORK_GET_PLAYER_INDEX_FROM_PED(Ped ped) // 0x6C0E2E0125610278 0x40DBF464 b323</code>
 +
 +<code>Returns the Player associated to a given Ped when in an online session.</code>
 +==== NETWORK_GET_NUM_CONNECTED_PLAYERS ====
 +<code cpp>int NETWORK::NETWORK_GET_NUM_CONNECTED_PLAYERS() // 0xA4A79DD2D9600654 0xF7952E62 b323</code>
 +
 +<code>Returns the amount of players connected in the current session. Only works when connected to a session/server.</code>
 +==== NETWORK_IS_PLAYER_CONNECTED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_CONNECTED(Player player) // 0x93DC1BE4E1ABE9D1 0x168EE2C2 b323</code>
 +
 +==== NETWORK_GET_TOTAL_NUM_PLAYERS ====
 +<code cpp>int NETWORK::NETWORK_GET_TOTAL_NUM_PLAYERS() // 0xCF61D4B4702EE9EB 0xF4F13B06 b323</code>
 +
 +==== NETWORK_IS_PARTICIPANT_ACTIVE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PARTICIPANT_ACTIVE(int p0) // 0x6FF8FF40B6357D45 0x4E2C348B b323</code>
 +
 +==== NETWORK_IS_PLAYER_ACTIVE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_ACTIVE(Player player) // 0xB8DFD30D6973E135 0x43657B17 b323</code>
 +
 +==== NETWORK_IS_PLAYER_A_PARTICIPANT ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_A_PARTICIPANT(Player player) // 0x3CA58F6CB7CBD784 0xB08B6992 b323</code>
 +
 +==== NETWORK_IS_HOST_OF_THIS_SCRIPT ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_HOST_OF_THIS_SCRIPT() // 0x83CD99A1E6061AB5 0x6970BA94 b323</code>
 +
 +==== NETWORK_GET_HOST_OF_THIS_SCRIPT ====
 +<code cpp>Player NETWORK::NETWORK_GET_HOST_OF_THIS_SCRIPT() // 0xC7B4D79B01FA7A5C 0x89EA7B54 b323</code>
 +
 +==== NETWORK_GET_HOST_OF_SCRIPT ====
 +<code cpp>Player NETWORK::NETWORK_GET_HOST_OF_SCRIPT(const char* scriptName, int p1, int p2) // 0x1D6A14F1F9A736FC 0x9C95D0BB b323</code>
 +
 +<code>scriptName examples:
 +"freemode", "AM_CR_SecurityVan", ...
 +
 +Most of the time, these values are used:
 +p1 = -1
 +p2 = 0</code>
 +==== NETWORK_SET_MISSION_FINISHED ====
 +<code cpp>void NETWORK::NETWORK_SET_MISSION_FINISHED() // 0x3B3D11CD9FFCDFC9 0x3083FAD7 b323</code>
 +
 +==== NETWORK_IS_SCRIPT_ACTIVE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SCRIPT_ACTIVE(const char* scriptName, Player player, BOOL p2, Any p3) // 0x9D40DF90FAD26098 0x4A65250C b323</code>
 +
 +==== NETWORK_IS_SCRIPT_ACTIVE_BY_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_SCRIPT_ACTIVE_BY_HASH(Hash scriptHash, int p1, BOOL p2, int p3) // 0xDA7DE67F5FE5EE13  b2245</code>
 +
 +==== _0x560B423D73015E77 ====
 +<code cpp>Any NETWORK::_0x560B423D73015E77(Any p0) // 0x560B423D73015E77  b1604</code>
 +
 +==== NETWORK_GET_NUM_SCRIPT_PARTICIPANTS ====
 +<code cpp>int NETWORK::NETWORK_GET_NUM_SCRIPT_PARTICIPANTS(Any* p0, Any p1, Any p2) // 0x3658E8CD94FC121A 0x8F7D9F46 b323</code>
 +
 +==== _0x638A3A81733086DB ====
 +<code cpp>Any NETWORK::_0x638A3A81733086DB() // 0x638A3A81733086DB 0xDB8B5D71 b323</code>
 +
 +==== NETWORK_IS_PLAYER_A_PARTICIPANT_ON_SCRIPT ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_A_PARTICIPANT_ON_SCRIPT(Player player1, const char* script, Player player2) // 0x1AD5B71586B94820 0xCEA55F4C b323</code>
 +
 +==== _0x2302C0264EA58D31 ====
 +<code cpp>void NETWORK::_0x2302C0264EA58D31() // 0x2302C0264EA58D31 0x8DCFE77D b323</code>
 +
 +==== _0x741A3D8380319A81 ====
 +<code cpp>void NETWORK::_0x741A3D8380319A81() // 0x741A3D8380319A81 0x331D9A27 b323</code>
 +
 +<code>Has something to do with a host request.
 +
 +NETWORK_RE*</code>
 +==== PARTICIPANT_ID ====
 +<code cpp>Player NETWORK::PARTICIPANT_ID() // 0x90986E8876CE0A83 0x9C35A221 b323</code>
 +
 +<code>Return the local Participant ID</code>
 +==== PARTICIPANT_ID_TO_INT ====
 +<code cpp>int NETWORK::PARTICIPANT_ID_TO_INT() // 0x57A3BDDAD8E5AA0A 0x907498B0 b323</code>
 +
 +<code>Return the local Participant ID.
 +
 +This native is exactly the same as 'PARTICIPANT_ID' native.</code>
 +==== _0x2DA41ED6E1FCD7A5 ====
 +<code cpp>Any NETWORK::_0x2DA41ED6E1FCD7A5(Any p0, Any p1) // 0x2DA41ED6E1FCD7A5  b463</code>
 +
 +==== NETWORK_GET_DESTROYER_OF_NETWORK_ID ====
 +<code cpp>int NETWORK::NETWORK_GET_DESTROYER_OF_NETWORK_ID(int netId, Hash* weaponHash) // 0x7A1ADEEF01740A24 0x4FCA6436 b323</code>
 +
 +==== _0xC434133D9BA52777 ====
 +<code cpp>Any NETWORK::_0xC434133D9BA52777(Any p0, Any p1) // 0xC434133D9BA52777  b463</code>
 +
 +==== _0x83660B734994124D ====
 +<code cpp>Any NETWORK::_0x83660B734994124D(Any p0, Any p1, Any p2) // 0x83660B734994124D  b463</code>
 +
 +==== _NETWORK_GET_DESTROYER_OF_ENTITY ====
 +<code cpp>BOOL NETWORK::_NETWORK_GET_DESTROYER_OF_ENTITY(Any p0, Any p1, Hash* weaponHash) // 0x4CACA84440FA26F6 0x28A45454 b323</code>
 +
 +==== NETWORK_GET_ENTITY_KILLER_OF_PLAYER ====
 +<code cpp>Entity NETWORK::NETWORK_GET_ENTITY_KILLER_OF_PLAYER(Player player, Hash* weaponHash) // 0x42B2DAA6B596F5F8 0xA7E7E04F b323</code>
 +
 +==== NETWORK_RESURRECT_LOCAL_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_RESURRECT_LOCAL_PLAYER(float x, float y, float z, float heading, BOOL unk, BOOL changetime, Any p6) // 0xEA23C49EAA83ACFB 0xF1F9D4B4 b323</code>
 +
 +==== NETWORK_SET_LOCAL_PLAYER_INVINCIBLE_TIME ====
 +<code cpp>void NETWORK::NETWORK_SET_LOCAL_PLAYER_INVINCIBLE_TIME(int time) // 0x2D95C7E2D7E07307 0xFEA9B85C b323</code>
 +
 +==== NETWORK_IS_LOCAL_PLAYER_INVINCIBLE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_LOCAL_PLAYER_INVINCIBLE() // 0x8A8694B48715B000 0x8DE13B36 b323</code>
 +
 +==== NETWORK_DISABLE_INVINCIBLE_FLASHING ====
 +<code cpp>void NETWORK::NETWORK_DISABLE_INVINCIBLE_FLASHING(Player player, BOOL toggle) // 0x9DD368BF06983221 0x8D27280E b323</code>
 +
 +==== NETWORK_SET_LOCAL_PLAYER_SYNC_LOOK_AT ====
 +<code cpp>void NETWORK::NETWORK_SET_LOCAL_PLAYER_SYNC_LOOK_AT(BOOL toggle) // 0x524FF0AEFF9C3973 0xB72F086D b323</code>
 +
 +==== NETWORK_HAS_ENTITY_BEEN_REGISTERED_WITH_THIS_THREAD ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_ENTITY_BEEN_REGISTERED_WITH_THIS_THREAD(Entity entity) // 0xB07D3185E11657A5 0xEDA68956 b323</code>
 +
 +==== NETWORK_GET_NETWORK_ID_FROM_ENTITY ====
 +<code cpp>int NETWORK::NETWORK_GET_NETWORK_ID_FROM_ENTITY(Entity entity) // 0xA11700682F3AD45C 0x9E35DAB6 b323</code>
 +
 +==== NETWORK_GET_ENTITY_FROM_NETWORK_ID ====
 +<code cpp>Entity NETWORK::NETWORK_GET_ENTITY_FROM_NETWORK_ID(int netId) // 0xCE4E5D9B0A4FF560 0x5B912C3F b323</code>
 +
 +==== NETWORK_GET_ENTITY_IS_NETWORKED ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_ENTITY_IS_NETWORKED(Entity entity) // 0xC7827959479DCC78 0xD7F934F4 b323</code>
 +
 +==== NETWORK_GET_ENTITY_IS_LOCAL ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_ENTITY_IS_LOCAL(Entity entity) // 0x0991549DE4D64762 0x813353ED b323</code>
 +
 +==== NETWORK_REGISTER_ENTITY_AS_NETWORKED ====
 +<code cpp>void NETWORK::NETWORK_REGISTER_ENTITY_AS_NETWORKED(Entity entity) // 0x06FAACD625D80CAA 0x31A630A4 b323</code>
 +
 +==== NETWORK_UNREGISTER_NETWORKED_ENTITY ====
 +<code cpp>void NETWORK::NETWORK_UNREGISTER_NETWORKED_ENTITY(Entity entity) // 0x7368E683BB9038D6 0x5C645F64 b323</code>
 +
 +==== NETWORK_DOES_NETWORK_ID_EXIST ====
 +<code cpp>BOOL NETWORK::NETWORK_DOES_NETWORK_ID_EXIST(int netId) // 0x38CE16C96BD11344 0xB8D2C99E b323</code>
 +
 +==== NETWORK_DOES_ENTITY_EXIST_WITH_NETWORK_ID ====
 +<code cpp>BOOL NETWORK::NETWORK_DOES_ENTITY_EXIST_WITH_NETWORK_ID(int netId) // 0x18A47D074708FD68 0x1E2E3177 b323</code>
 +
 +==== NETWORK_REQUEST_CONTROL_OF_NETWORK_ID ====
 +<code cpp>BOOL NETWORK::NETWORK_REQUEST_CONTROL_OF_NETWORK_ID(int netId) // 0xA670B3662FAFFBD0 0x9262A60A b323</code>
 +
 +==== NETWORK_HAS_CONTROL_OF_NETWORK_ID ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_CONTROL_OF_NETWORK_ID(int netId) // 0x4D36070FE0215186 0x92E77D21 b323</code>
 +
 +==== _0x7242F8B741CE1086 ====
 +<code cpp>BOOL NETWORK::_0x7242F8B741CE1086(int netId) // 0x7242F8B741CE1086  b678</code>
 +
 +<code>NETWORK_IS_*
 +Probably a bool, returns true if the specified network id is controlled by someone else.
 +Ff you have control over the entity corresponding to the netId then this will return false (0);
 +Returns probably a bool, returns 1 if you don't have control over the netId entity.</code>
 +==== NETWORK_REQUEST_CONTROL_OF_ENTITY ====
 +<code cpp>BOOL NETWORK::NETWORK_REQUEST_CONTROL_OF_ENTITY(Entity entity) // 0xB69317BF5E782347 0xA05FEBD7 b323</code>
 +
 +==== NETWORK_REQUEST_CONTROL_OF_DOOR ====
 +<code cpp>BOOL NETWORK::NETWORK_REQUEST_CONTROL_OF_DOOR(int doorID) // 0x870DDFD5A4A796E4 0xF60DAAF6 b323</code>
 +
 +==== NETWORK_HAS_CONTROL_OF_ENTITY ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_CONTROL_OF_ENTITY(Entity entity) // 0x01BF60A500E28887 0x005FD797 b323</code>
 +
 +==== NETWORK_HAS_CONTROL_OF_PICKUP ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_CONTROL_OF_PICKUP(Pickup pickup) // 0x5BC9495F0B3B6FA6 0xF7784FC8 b323</code>
 +
 +==== NETWORK_HAS_CONTROL_OF_DOOR ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_CONTROL_OF_DOOR(Hash doorHash) // 0xCB3C68ADB06195DF 0x136326EC b323</code>
 +
 +==== NETWORK_IS_DOOR_NETWORKED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_DOOR_NETWORKED(Hash doorHash) // 0xC01E93FAC20C3346 0xD14D9C07 b323</code>
 +
 +==== VEH_TO_NET ====
 +<code cpp>int NETWORK::VEH_TO_NET(Vehicle vehicle) // 0xB4C94523F023419C 0xF17634EB b323</code>
 +
 +<code>calls from vehicle to net.
 +</code>
 +==== PED_TO_NET ====
 +<code cpp>int NETWORK::PED_TO_NET(Ped ped) // 0x0EDEC3C276198689 0x86A0B759 b323</code>
 +
 +<code>gets the network id of a ped</code>
 +==== OBJ_TO_NET ====
 +<code cpp>int NETWORK::OBJ_TO_NET(Object object) // 0x99BFDC94A603E541 0x1E05F29F b323</code>
 +
 +<code>Lets objects spawn online simply do it like this:
 +
 +int createdObject = OBJ_TO_NET(CREATE_OBJECT_NO_OFFSET(oball, pCoords.x, pCoords.y, pCoords.z, 1, 0, 0));</code>
 +==== NET_TO_VEH ====
 +<code cpp>Vehicle NETWORK::NET_TO_VEH(int netHandle) // 0x367B936610BA360C 0x7E02FAEA b323</code>
 +
 +==== NET_TO_PED ====
 +<code cpp>Ped NETWORK::NET_TO_PED(int netHandle) // 0xBDCD95FC216A8B3E 0x87717DD4 b323</code>
 +
 +<code>gets the ped id of a network id</code>
 +==== NET_TO_OBJ ====
 +<code cpp>Object NETWORK::NET_TO_OBJ(int netHandle) // 0xD8515F5FEA14CB3F 0x27AA14D8 b323</code>
 +
 +<code>gets the object id of a network id</code>
 +==== NET_TO_ENT ====
 +<code cpp>Entity NETWORK::NET_TO_ENT(int netHandle) // 0xBFFEAB45A9A9094A 0x5E149683 b323</code>
 +
 +<code>gets the entity id of a network id</code>
 +==== NETWORK_GET_LOCAL_HANDLE ====
 +<code cpp>void NETWORK::NETWORK_GET_LOCAL_HANDLE(int* networkHandle, int bufferSize) // 0xE86051786B66CD8E 0x08023B16 b323</code>
 +
 +<code>Retrieves the local player's NetworkHandle* and stores it in the given buffer.
 +
 +* Currently unknown struct</code>
 +==== NETWORK_HANDLE_FROM_USER_ID ====
 +<code cpp>void NETWORK::NETWORK_HANDLE_FROM_USER_ID(const char* userId, int* networkHandle, int bufferSize) // 0xDCD51DD8F87AEC5C 0x74C2C1B7 b323</code>
 +
 +<code>Returns a NetworkHandle* from the specified user ID and stores it in a given buffer.
 +
 +* Currently unknown struct</code>
 +==== NETWORK_HANDLE_FROM_MEMBER_ID ====
 +<code cpp>void NETWORK::NETWORK_HANDLE_FROM_MEMBER_ID(const char* memberId, int* networkHandle, int bufferSize) // 0xA0FD21BED61E5C4C 0x9BFC9FE2 b323</code>
 +
 +<code>Returns a NetworkHandle* from the specified member ID and stores it in a given buffer.
 +
 +* Currently unknown struct</code>
 +==== NETWORK_HANDLE_FROM_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_HANDLE_FROM_PLAYER(Player player, int* networkHandle, int bufferSize) // 0x388EB2B86C73B6B3 0xD3498917 b323</code>
 +
 +<code>Returns a handle to networkHandle* from the specified player handle and stores it in a given buffer.
 +
 +* Currently unknown struct
 +
 +Example:
 +std::vector<UINT64> GetPlayerNetworkHandle(Player player) {
 +    const int size = 13;
 +    uint64_t *buffer = std::make_unique<uint64_t[]>(size).get();
 +    NETWORK::NETWORK_HANDLE_FROM_PLAYER(player, reinterpret_cast<int *>(buffer), 13);
 +    for (int i = 0; i < size; i++) {
 +        Log::Msg("networkhandle[%i]: %llx", i, buffer[i]);
 +    }
 +    std::vector<UINT64> result(buffer, buffer + sizeof(buffer));
 +    return result;
 +}</code>
 +==== NETWORK_HASH_FROM_PLAYER_HANDLE ====
 +<code cpp>Hash NETWORK::NETWORK_HASH_FROM_PLAYER_HANDLE(Player player) // 0xBC1D768F2F5D6C05 0xF8D7AF3B b323</code>
 +
 +==== NETWORK_HASH_FROM_GAMER_HANDLE ====
 +<code cpp>Hash NETWORK::NETWORK_HASH_FROM_GAMER_HANDLE(int* networkHandle) // 0x58575AC3CF2CA8EC 0x5AC9F04D b323</code>
 +
 +==== NETWORK_HANDLE_FROM_FRIEND ====
 +<code cpp>void NETWORK::NETWORK_HANDLE_FROM_FRIEND(int friendIndex, int* networkHandle, int bufferSize) // 0xD45CB817D7E177D2 0x3B0BB3A3 b323</code>
 +
 +==== NETWORK_GAMERTAG_FROM_HANDLE_START ====
 +<code cpp>BOOL NETWORK::NETWORK_GAMERTAG_FROM_HANDLE_START(int* networkHandle) // 0x9F0C0A981D73FA56 0xEBA00C2A b323</code>
 +
 +==== NETWORK_GAMERTAG_FROM_HANDLE_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_GAMERTAG_FROM_HANDLE_PENDING() // 0xB071E27958EF4CF0 0xF000828E b323</code>
 +
 +==== NETWORK_GAMERTAG_FROM_HANDLE_SUCCEEDED ====
 +<code cpp>BOOL NETWORK::NETWORK_GAMERTAG_FROM_HANDLE_SUCCEEDED() // 0xFD00798DBA7523DD 0x89C2B5EA b323</code>
 +
 +==== NETWORK_GET_GAMERTAG_FROM_HANDLE ====
 +<code cpp>const char* NETWORK::NETWORK_GET_GAMERTAG_FROM_HANDLE(int* networkHandle) // 0x426141162EBE5CDB 0xA18A1B26 b323</code>
 +
 +==== _0xD66C9E72B3CC4982 ====
 +<code cpp>int NETWORK::_0xD66C9E72B3CC4982(Any* p0, Any p1) // 0xD66C9E72B3CC4982  b323</code>
 +
 +==== NETWORK_GET_DISPLAYNAMES_FROM_HANDLES ====
 +<code cpp>int NETWORK::NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(Any p0, Any p1, Any p2) // 0x58CC181719256197  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== NETWORK_ARE_HANDLES_THE_SAME ====
 +<code cpp>BOOL NETWORK::NETWORK_ARE_HANDLES_THE_SAME(int* netHandle1, int* netHandle2) // 0x57DBA049E110F217 0x45975AE3 b323</code>
 +
 +==== NETWORK_IS_HANDLE_VALID ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_HANDLE_VALID(int* networkHandle, int bufferSize) // 0x6F79B93B0A8E4133 0xF0996C6E b323</code>
 +
 +==== NETWORK_GET_PLAYER_FROM_GAMER_HANDLE ====
 +<code cpp>Player NETWORK::NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(int* networkHandle) // 0xCE5F689CF5A0A49D 0x2E96EF1E b323</code>
 +
 +==== NETWORK_MEMBER_ID_FROM_GAMER_HANDLE ====
 +<code cpp>const char* NETWORK::NETWORK_MEMBER_ID_FROM_GAMER_HANDLE(int* networkHandle) // 0xC82630132081BB6F 0x62EF0A63 b323</code>
 +
 +==== NETWORK_IS_GAMER_IN_MY_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_GAMER_IN_MY_SESSION(int* networkHandle) // 0x0F10B05DDF8D16E9 0x59127716 b323</code>
 +
 +==== NETWORK_SHOW_PROFILE_UI ====
 +<code cpp>void NETWORK::NETWORK_SHOW_PROFILE_UI(int* networkHandle) // 0x859ED1CEA343FCA8 0xF00A20B0 b323</code>
 +
 +<code>Example:
 +
 +int playerHandle; 
 +NETWORK_HANDLE_FROM_PLAYER(selectedPlayer, &playerHandle, 13);
 +NETWORK_SHOW_PROFILE_UI(&playerHandle);</code>
 +==== NETWORK_PLAYER_GET_NAME ====
 +<code cpp>const char* NETWORK::NETWORK_PLAYER_GET_NAME(Player player) // 0x7718D2E2060837D2 0xCE48F260 b323</code>
 +
 +<code>Returns the name of a given player. Returns "**Invalid**" if CPlayerInfo of the given player cannot be retrieved or the player doesn't exist.</code>
 +==== NETWORK_PLAYER_GET_USERID ====
 +<code cpp>const char* NETWORK::NETWORK_PLAYER_GET_USERID(Player player, int* userID) // 0x4927FC39CD0869A0 0x4EC0D983 b323</code>
 +
 +<code>Takes a 24 char buffer. Returns the buffer or "**Invalid**" if CPlayerInfo of the given player cannot be retrieved or the player doesn't exist.</code>
 +==== NETWORK_PLAYER_IS_ROCKSTAR_DEV ====
 +<code cpp>BOOL NETWORK::NETWORK_PLAYER_IS_ROCKSTAR_DEV(Player player) // 0x544ABDDA3B409B6D 0xF6659045 b323</code>
 +
 +<code>Checks if a specific value (BYTE) in CPlayerInfo is nonzero.
 +Returns always false in Singleplayer.
 +
 +No longer used for dev checks since first mods were released on PS3 & 360.
 +R* now checks with the is_dlc_present native for the dlc hash 2532323046,
 +if that is present it will unlock dev stuff.</code>
 +==== NETWORK_PLAYER_INDEX_IS_CHEATER ====
 +<code cpp>BOOL NETWORK::NETWORK_PLAYER_INDEX_IS_CHEATER(Player player) // 0x565E430DB3B05BEC 0xD265B049 b323</code>
 +
 +==== _NETWORK_GET_ENTITY_NET_SCRIPT_ID ====
 +<code cpp>int NETWORK::_NETWORK_GET_ENTITY_NET_SCRIPT_ID(Entity entity) // 0x815F18AD865F057F  b463</code>
 +
 +==== _0x37D5F739FD494675 ====
 +<code cpp>int NETWORK::_0x37D5F739FD494675(Any p0) // 0x37D5F739FD494675  b505</code>
 +
 +<code>I've had this return the player's ped handle sometimes, but also other random entities.
 +Whatever p0 is, it's at least not synced to other players.
 +At least not all the time, some p0 values actually output the same entity, (different handle of course, but same entity).
 +But another p0 value may return an entity for player x, but not for player y (it'll just return -1 even if the entity exists on both clients).
 +
 +Returns an entity handle or -1, value changes based on p0's value.</code>
 +==== NETWORK_IS_INACTIVE_PROFILE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_INACTIVE_PROFILE(Any* p0) // 0x7E58745504313A2E 0x95481343 b323</code>
 +
 +==== NETWORK_GET_MAX_FRIENDS ====
 +<code cpp>int NETWORK::NETWORK_GET_MAX_FRIENDS() // 0xAFEBB0D5D8F687D2 0x048171BC b323</code>
 +
 +==== NETWORK_GET_FRIEND_COUNT ====
 +<code cpp>int NETWORK::NETWORK_GET_FRIEND_COUNT() // 0x203F1CFD823B27A4 0xA396ACDE b323</code>
 +
 +==== NETWORK_GET_FRIEND_NAME ====
 +<code cpp>const char* NETWORK::NETWORK_GET_FRIEND_NAME(int friendIndex) // 0xE11EBBB2A783FE8B 0x97420B6D b323</code>
 +
 +==== _NETWORK_GET_FRIEND_NAME_FROM_INDEX ====
 +<code cpp>const char* NETWORK::_NETWORK_GET_FRIEND_NAME_FROM_INDEX(int friendIndex) // 0x4164F227D052E293  b323</code>
 +
 +==== NETWORK_IS_FRIEND_ONLINE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND_ONLINE(const char* name) // 0x425A44533437B64D 0xE0A42430 b323</code>
 +
 +==== NETWORK_IS_FRIEND_HANDLE_ONLINE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND_HANDLE_ONLINE(int* networkHandle) // 0x87EB7A3FFCB314DB  b323</code>
 +
 +==== NETWORK_IS_FRIEND_IN_SAME_TITLE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND_IN_SAME_TITLE(const char* friendName) // 0x2EA9A3BEDF3F17B8 0xC54365C2 b323</code>
 +
 +<code>In scripts R* calls 'NETWORK_GET_FRIEND_NAME' in this param.</code>
 +==== NETWORK_IS_FRIEND_IN_MULTIPLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND_IN_MULTIPLAYER(const char* friendName) // 0x57005C18827F3A28 0x400BDDD9 b323</code>
 +
 +==== NETWORK_IS_FRIEND ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND(int* networkHandle) // 0x1A24A179F9B31654 0x2DA4C282 b323</code>
 +
 +==== NETWORK_IS_PENDING_FRIEND ====
 +<code cpp>Any NETWORK::NETWORK_IS_PENDING_FRIEND(Any p0) // 0x0BE73DA6984A6E33 0x5C85FF81 b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== NETWORK_IS_ADDING_FRIEND ====
 +<code cpp>Any NETWORK::NETWORK_IS_ADDING_FRIEND() // 0x6EA101606F6E4D81 0xBB7EC8C4 b323</code>
 +
 +==== NETWORK_ADD_FRIEND ====
 +<code cpp>BOOL NETWORK::NETWORK_ADD_FRIEND(int* networkHandle, const char* message) // 0x8E02D73914064223 0x20E5B3EE b323</code>
 +
 +==== NETWORK_IS_FRIEND_INDEX_ONLINE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_FRIEND_INDEX_ONLINE(int friendIndex) // 0xBAD8F2A42B844821 0x94AE7172 b323</code>
 +
 +==== NETWORK_SET_PLAYER_IS_PASSIVE ====
 +<code cpp>void NETWORK::NETWORK_SET_PLAYER_IS_PASSIVE(BOOL toggle) // 0x1B857666604B1A74 0x76A9FEB6 b323</code>
 +
 +==== NETWORK_GET_PLAYER_OWNS_WAYPOINT ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PLAYER_OWNS_WAYPOINT(Player player) // 0x82377B65E943F72D 0xB802B671 b323</code>
 +
 +==== NETWORK_CAN_SET_WAYPOINT ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_SET_WAYPOINT() // 0xC927EC229934AF60 0x009E68F3 b323</code>
 +
 +==== _0x4C2A9FDC22377075 ====
 +<code cpp>void NETWORK::_0x4C2A9FDC22377075() // 0x4C2A9FDC22377075  b372</code>
 +
 +==== _0xB309EBEA797E001F ====
 +<code cpp>Any NETWORK::_0xB309EBEA797E001F(Any p0) // 0xB309EBEA797E001F 0x5C0AB2A9 b323</code>
 +
 +==== _0x26F07DD83A5F7F98 ====
 +<code cpp>Any NETWORK::_0x26F07DD83A5F7F98() // 0x26F07DD83A5F7F98 0x9A176B6E b323</code>
 +
 +==== NETWORK_HAS_HEADSET ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_HEADSET() // 0xE870F9F1F7B4F1FA 0xA7DC5657 b323</code>
 +
 +==== _0x7D395EA61622E116 ====
 +<code cpp>void NETWORK::_0x7D395EA61622E116(BOOL p0) // 0x7D395EA61622E116 0x5C05B7E1 b323</code>
 +
 +==== NETWORK_IS_LOCAL_TALKING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_LOCAL_TALKING() // 0xC0D2AF00BCC234CA 0xAC00A5BE b323</code>
 +
 +==== NETWORK_GAMER_HAS_HEADSET ====
 +<code cpp>BOOL NETWORK::NETWORK_GAMER_HAS_HEADSET(Any* networkHandle) // 0xF2FD55CB574BCC55 0xD036DA4A b323</code>
 +
 +==== NETWORK_IS_GAMER_TALKING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_GAMER_TALKING(Any* networkHandle) // 0x71C33B22606CD88A 0x99B58DBC b323</code>
 +
 +==== _NETWORK_CAN_COMMUNICATE_WITH_GAMER_2 ====
 +<code cpp>BOOL NETWORK::_NETWORK_CAN_COMMUNICATE_WITH_GAMER_2(Any* networkHandle) // 0x8F5D1AD832AEB06C  b944</code>
 +
 +<code>Same as NETWORK_CAN_COMMUNICATE_WITH_GAMER
 +
 +NETWORK_CAN_*</code>
 +==== NETWORK_CAN_COMMUNICATE_WITH_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_COMMUNICATE_WITH_GAMER(Any* networkHandle) // 0xA150A4F065806B1F 0xD05EB7F6 b323</code>
 +
 +==== NETWORK_IS_GAMER_MUTED_BY_ME ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_GAMER_MUTED_BY_ME(Any* networkHandle) // 0xCE60DE011B6C7978 0x001B4046 b323</code>
 +
 +==== NETWORK_AM_I_MUTED_BY_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_AM_I_MUTED_BY_GAMER(Any* networkHandle) // 0xDF02A2C93F1F26DA 0x7685B333 b323</code>
 +
 +==== NETWORK_IS_GAMER_BLOCKED_BY_ME ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_GAMER_BLOCKED_BY_ME(Any* networkHandle) // 0xE944C4F5AF1B5883 0x3FDCC8D7 b323</code>
 +
 +==== NETWORK_AM_I_BLOCKED_BY_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_AM_I_BLOCKED_BY_GAMER(Any* networkHandle) // 0x15337C7C268A27B2 0xD19B312C b323</code>
 +
 +==== NETWORK_CAN_VIEW_GAMER_USER_CONTENT ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_VIEW_GAMER_USER_CONTENT(Any* networkHandle) // 0xB57A49545BA53CE7  b323</code>
 +
 +==== NETWORK_HAS_VIEW_GAMER_USER_CONTENT_RESULT ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_VIEW_GAMER_USER_CONTENT_RESULT(Any* networkHandle) // 0xCCA4318E1AB03F1F  b323</code>
 +
 +==== NETWORK_CAN_PLAY_MULTIPLAYER_WITH_GAMER ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_PLAY_MULTIPLAYER_WITH_GAMER(Any* networkHandle) // 0x07DD29D5E22763F1  b323</code>
 +
 +==== NETWORK_CAN_GAMER_PLAY_MULTIPLAYER_WITH_ME ====
 +<code cpp>BOOL NETWORK::NETWORK_CAN_GAMER_PLAY_MULTIPLAYER_WITH_ME(Any* networkHandle) // 0x135F9B7B7ADD2185  b323</code>
 +
 +==== NETWORK_IS_PLAYER_TALKING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_TALKING(Player player) // 0x031E11F3D447647E 0xDA9FD9DB b323</code>
 +
 +<code>returns true if someone is screaming or talking in a microphone</code>
 +==== NETWORK_PLAYER_HAS_HEADSET ====
 +<code cpp>BOOL NETWORK::NETWORK_PLAYER_HAS_HEADSET(Player player) // 0x3FB99A8B08D18FD6 0x451FB6B6 b323</code>
 +
 +==== NETWORK_IS_PLAYER_MUTED_BY_ME ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_MUTED_BY_ME(Player player) // 0x8C71288AE68EDE39 0x7A21050E b323</code>
 +
 +==== NETWORK_AM_I_MUTED_BY_PLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_AM_I_MUTED_BY_PLAYER(Player player) // 0x9D6981DFC91A8604 0xE128F2B0 b323</code>
 +
 +==== NETWORK_IS_PLAYER_BLOCKED_BY_ME ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_BLOCKED_BY_ME(Player player) // 0x57AF1F8E27483721 0xAE4F4560 b323</code>
 +
 +==== NETWORK_AM_I_BLOCKED_BY_PLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_AM_I_BLOCKED_BY_PLAYER(Player player) // 0x87F395D957D4353D 0x953EF45E b323</code>
 +
 +==== NETWORK_GET_PLAYER_LOUDNESS ====
 +<code cpp>float NETWORK::NETWORK_GET_PLAYER_LOUDNESS(Player player) // 0x21A1684A25C2867F 0xF2F67014 b323</code>
 +
 +==== NETWORK_SET_TALKER_PROXIMITY ====
 +<code cpp>void NETWORK::NETWORK_SET_TALKER_PROXIMITY(float value) // 0xCBF12D65F95AD686 0x67555C66 b323</code>
 +
 +==== NETWORK_GET_TALKER_PROXIMITY ====
 +<code cpp>float NETWORK::NETWORK_GET_TALKER_PROXIMITY() // 0x84F0F13120B4E098 0x19991ADD b323</code>
 +
 +==== NETWORK_SET_VOICE_ACTIVE ====
 +<code cpp>void NETWORK::NETWORK_SET_VOICE_ACTIVE(BOOL toggle) // 0xBABEC9E69A91C57B 0x8011247F b323</code>
 +
 +==== _0xCFEB46DCD7D8D5EB ====
 +<code cpp>void NETWORK::_0xCFEB46DCD7D8D5EB(BOOL p0) // 0xCFEB46DCD7D8D5EB 0x1A3EA6CD b323</code>
 +
 +==== NETWORK_OVERRIDE_TRANSITION_CHAT ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_TRANSITION_CHAT(BOOL p0) // 0xAF66059A131AA269 0xCAB21090 b323</code>
 +
 +==== NETWORK_SET_TEAM_ONLY_CHAT ====
 +<code cpp>void NETWORK::NETWORK_SET_TEAM_ONLY_CHAT(BOOL toggle) // 0xD5B4883AC32F24C3 0x3813019A b323</code>
 +
 +==== _0x265559DA40B3F327 ====
 +<code cpp>void NETWORK::_0x265559DA40B3F327(Any p0) // 0x265559DA40B3F327  b573</code>
 +
 +==== _0x4348BFDA56023A2F ====
 +<code cpp>Any NETWORK::_0x4348BFDA56023A2F(Any p0, Any p1) // 0x4348BFDA56023A2F  b573</code>
 +
 +==== NETWORK_OVERRIDE_TEAM_RESTRICTIONS ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_TEAM_RESTRICTIONS(int team, BOOL toggle) // 0x6F697A66CE78674E 0xC8CC9E75 b323</code>
 +
 +==== NETWORK_SET_OVERRIDE_SPECTATOR_MODE ====
 +<code cpp>void NETWORK::NETWORK_SET_OVERRIDE_SPECTATOR_MODE(BOOL toggle) // 0x70DA3BF8DACD3210 0xA0FD42D3 b323</code>
 +
 +==== _0x3C5C1E2C2FF814B1 ====
 +<code cpp>void NETWORK::_0x3C5C1E2C2FF814B1(BOOL toggle) // 0x3C5C1E2C2FF814B1 0xC9DDA85B b323</code>
 +
 +<code>Sets some voice chat related value.
 +
 +NETWORK_SET_*</code>
 +==== _0x9D7AFCBF21C51712 ====
 +<code cpp>void NETWORK::_0x9D7AFCBF21C51712(BOOL toggle) // 0x9D7AFCBF21C51712 0xE5219410 b323</code>
 +
 +<code>Sets some voice chat related value.
 +
 +NETWORK_SET_*</code>
 +==== NETWORK_SET_NO_SPECTATOR_CHAT ====
 +<code cpp>void NETWORK::NETWORK_SET_NO_SPECTATOR_CHAT(BOOL toggle) // 0xF46A1E03E8755980 0xD33AFF79 b323</code>
 +
 +==== _0x6A5D89D7769A40D8 ====
 +<code cpp>void NETWORK::_0x6A5D89D7769A40D8(BOOL toggle) // 0x6A5D89D7769A40D8 0x4FFEFE43 b323</code>
 +
 +<code>Sets some voice chat related value.
 +
 +NETWORK_SET_*</code>
 +==== NETWORK_OVERRIDE_CHAT_RESTRICTIONS ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_CHAT_RESTRICTIONS(Player player, BOOL toggle) // 0x3039AE5AD2C9C0C4 0x74EE2D8B b323</code>
 +
 +<code>Could possibly bypass being muted or automatically muted</code>
 +==== NETWORK_OVERRIDE_SEND_RESTRICTIONS ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_SEND_RESTRICTIONS(Player player, BOOL toggle) // 0x97DD4C5944CC2E6A 0x6C344AE3 b323</code>
 +
 +<code>This is used alongside the native,
 +'NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS'. Read its description for more info.</code>
 +==== NETWORK_OVERRIDE_SEND_RESTRICTIONS_ALL ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_SEND_RESTRICTIONS_ALL(BOOL toggle) // 0x57B192B4D4AD23D5 0x2F98B405 b323</code>
 +
 +==== NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS(Player player, BOOL toggle) // 0xDDF73E2B1FEC5AB4 0x95F1C60D b323</code>
 +
 +<code>R* uses this to hear all player when spectating. 
 +It allows you to hear other online players when their chat is on none, crew and or friends</code>
 +==== NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS_ALL ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS_ALL(BOOL toggle) // 0x0FF2862B61A58AF9 0x1BCD3DDF b323</code>
 +
 +<code>p0 is always false in scripts.</code>
 +==== NETWORK_SET_VOICE_CHANNEL ====
 +<code cpp>void NETWORK::NETWORK_SET_VOICE_CHANNEL(int channel) // 0xEF6212C2EFEF1A23 0x3974879F b323</code>
 +
 +==== NETWORK_CLEAR_VOICE_CHANNEL ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_VOICE_CHANNEL() // 0xE036A705F989E049 0x9ECF722A b323</code>
 +
 +==== NETWORK_APPLY_VOICE_PROXIMITY_OVERRIDE ====
 +<code cpp>void NETWORK::NETWORK_APPLY_VOICE_PROXIMITY_OVERRIDE(float x, float y, float z) // 0xDBD2056652689917 0xF1E84832 b323</code>
 +
 +==== NETWORK_CLEAR_VOICE_PROXIMITY_OVERRIDE ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_VOICE_PROXIMITY_OVERRIDE() // 0xF03755696450470C 0x7F9B9052 b323</code>
 +
 +==== _0x5E3AA4CA2B6FB0EE ====
 +<code cpp>void NETWORK::_0x5E3AA4CA2B6FB0EE(Any p0) // 0x5E3AA4CA2B6FB0EE 0x7BBEA8CF b323</code>
 +
 +==== _0xCA575C391FEA25CC ====
 +<code cpp>void NETWORK::_0xCA575C391FEA25CC(Any p0) // 0xCA575C391FEA25CC 0xE797A4B6 b323</code>
 +
 +==== _0xADB57E5B663CCA8B ====
 +<code cpp>void NETWORK::_0xADB57E5B663CCA8B(Player p0, float* p1, float* p2) // 0xADB57E5B663CCA8B 0x92268BB5 b323</code>
 +
 +==== _0x8EF52ACAECC51D9C ====
 +<code cpp>void NETWORK::_0x8EF52ACAECC51D9C(BOOL toggle) // 0x8EF52ACAECC51D9C  b1734</code>
 +
 +<code>NETWORK_SET_*</code>
 +==== _NETWORK_IS_TEXT_CHAT_ACTIVE ====
 +<code cpp>BOOL NETWORK::_NETWORK_IS_TEXT_CHAT_ACTIVE() // 0x5FCF4D7069B09026  b323</code>
 +
 +<code>Same as _IS_TEXT_CHAT_ACTIVE, except it does not check if the text chat HUD component is initialized, and therefore may crash.</code>
 +==== SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME ====
 +<code cpp>void NETWORK::SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME() // 0x593850C16A36B692 0x92B7351C b323</code>
 +
 +<code>Starts a new singleplayer game (at the prologue).</code>
 +==== _SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE ====
 +<code cpp>BOOL NETWORK::_SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE() // 0x9ECA15ADFE141431  b505</code>
 +
 +<code>In singleplayer this will re-load your game.
 +
 +In FiveM / GTA:Online this disconnects you from the session, and starts loading single player, however you still remain connected to the server (only if you're the host, if you're not then you also (most likely) get disconnected from the server) and other players will not be able to join until you exit the game.
 +
 +You might need to DoScreenFadeIn and ShutdownLoadingScreen otherwise you probably won't end up loading into SP at all.
 +
 +Somewhat related note: opening the pause menu after loading into this 'singleplayer' mode crashes the game.</code>
 +==== NETWORK_SET_FRIENDLY_FIRE_OPTION ====
 +<code cpp>void NETWORK::NETWORK_SET_FRIENDLY_FIRE_OPTION(BOOL toggle) // 0xF808475FA571D823 0x6BAF95FA b323</code>
 +
 +==== NETWORK_SET_RICH_PRESENCE ====
 +<code cpp>void NETWORK::NETWORK_SET_RICH_PRESENCE(Any p0, Any p1, Any p2, Any p3) // 0x1DCCACDCFC569362 0x932A6CED b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== NETWORK_SET_RICH_PRESENCE_STRING ====
 +<code cpp>void NETWORK::NETWORK_SET_RICH_PRESENCE_STRING(int p0, const char* textLabel) // 0x3E200C2BCF4164EB 0x017E6777 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== NETWORK_GET_TIMEOUT_TIME ====
 +<code cpp>int NETWORK::NETWORK_GET_TIMEOUT_TIME() // 0x5ED0356A0CE3A34F 0xE1F86C6A b323</code>
 +
 +==== _NETWORK_RESPAWN_COORDS ====
 +<code cpp>void NETWORK::_NETWORK_RESPAWN_COORDS(Player player, float x, float y, float z, BOOL p4, BOOL p5) // 0x9769F811D1785B03 0xBE6A30C3 b323</code>
 +
 +<code>p4 and p5 are always 0 in scripts</code>
 +==== _0xBF22E0F32968E967 ====
 +<code cpp>void NETWORK::_0xBF22E0F32968E967(Player player, BOOL p1) // 0xBF22E0F32968E967 0x22E03AD0 b323</code>
 +
 +==== REMOVE_ALL_STICKY_BOMBS_FROM_ENTITY ====
 +<code cpp>void NETWORK::REMOVE_ALL_STICKY_BOMBS_FROM_ENTITY(Entity entity, Ped ped) // 0x715135F4B82AC90D 0xCEAE5AFC b323</code>
 +
 +<code>entity must be a valid entity; ped can be NULL</code>
 +==== _0x17C9E241111A674D ====
 +<code cpp>void NETWORK::_0x17C9E241111A674D(Any p0, Any p1) // 0x17C9E241111A674D  b2060</code>
 +
 +==== _0x2E4C123D1C8A710E ====
 +<code cpp>Any NETWORK::_0x2E4C123D1C8A710E(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x2E4C123D1C8A710E  b505</code>
 +
 +==== NETWORK_CLAN_SERVICE_IS_VALID ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_SERVICE_IS_VALID() // 0x579CCED0265D4896 0xF5F4BD95 b323</code>
 +
 +==== NETWORK_CLAN_PLAYER_IS_ACTIVE ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_PLAYER_IS_ACTIVE(int* networkHandle) // 0xB124B57F571D8F18 0xAB8319A3 b323</code>
 +
 +==== NETWORK_CLAN_PLAYER_GET_DESC ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_PLAYER_GET_DESC(int* clanDesc, int bufferSize, int* networkHandle) // 0xEEE6EACBE8874FBA 0x6EE4A282 b323</code>
 +
 +<code>bufferSize is 35 in the scripts.
 +
 +bufferSize is the elementCount of p0(desc), sizeof(p0) == 280 == p1*8 == 35 * 8, p2(netHandle) is obtained from NETWORK::NETWORK_HANDLE_FROM_PLAYER.  And no, I can't explain why 35 * sizeof(int) == 280 and not 140, but I'll get back to you on that.
 +
 +the answer is: because p0 an int64_t* / int64_t[35].  and FYI p2 is an int64_t[13]
 +
 +pastebin.com/cSZniHak</code>
 +==== NETWORK_CLAN_IS_ROCKSTAR_CLAN ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_IS_ROCKSTAR_CLAN(int* clanDesc, int bufferSize) // 0x7543BB439F63792B 0x54E79E9C b323</code>
 +
 +<code>bufferSize is 35 in the scripts.</code>
 +==== NETWORK_CLAN_GET_UI_FORMATTED_TAG ====
 +<code cpp>void NETWORK::NETWORK_CLAN_GET_UI_FORMATTED_TAG(int* clanDesc, int bufferSize, char* formattedTag) // 0xF45352426FF3A4F0 0xF633805A b323</code>
 +
 +<code>bufferSize is 35 in the scripts.</code>
 +==== NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT ====
 +<code cpp>int NETWORK::NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT() // 0x1F471B79ACC90BEF 0x807B3450 b323</code>
 +
 +==== NETWORK_CLAN_GET_MEMBERSHIP_DESC ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_GET_MEMBERSHIP_DESC(int* memberDesc, int p1) // 0x48DE78AF2C8885B8 0x3369DD1F b323</code>
 +
 +==== NETWORK_CLAN_DOWNLOAD_MEMBERSHIP ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_DOWNLOAD_MEMBERSHIP(int* networkHandle) // 0xA989044E70010ABE 0x8E8CB520 b323</code>
 +
 +==== NETWORK_CLAN_DOWNLOAD_MEMBERSHIP_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_DOWNLOAD_MEMBERSHIP_PENDING(Any* p0) // 0x5B9E023DC6EBEDC0 0x1FDB590F b323</code>
 +
 +==== _NETWORK_IS_CLAN_MEMBERSHIP_FINISHED_DOWNLOADING ====
 +<code cpp>BOOL NETWORK::_NETWORK_IS_CLAN_MEMBERSHIP_FINISHED_DOWNLOADING() // 0xB3F64A6A91432477 0x83ED8E08 b323</code>
 +
 +==== NETWORK_CLAN_REMOTE_MEMBERSHIPS_ARE_IN_CACHE ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_REMOTE_MEMBERSHIPS_ARE_IN_CACHE(int* p0) // 0xBB6E6FEE99D866B2 0x40202867 b323</code>
 +
 +==== NETWORK_CLAN_GET_MEMBERSHIP_COUNT ====
 +<code cpp>int NETWORK::NETWORK_CLAN_GET_MEMBERSHIP_COUNT(int* p0) // 0xAAB11F6C4ADBC2C1 0x25924010 b323</code>
 +
 +==== NETWORK_CLAN_GET_MEMBERSHIP_VALID ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_GET_MEMBERSHIP_VALID(int* p0, Any p1) // 0x48A59CF88D43DF0E 0x48914F6A b323</code>
 +
 +==== NETWORK_CLAN_GET_MEMBERSHIP ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_GET_MEMBERSHIP(int* p0, int* clanMembership, int p2) // 0xC8BC2011F67B3411 0xCDC4A590 b323</code>
 +
 +<code>BOOL DEBUG_MEMBRESHIP(int Param)
 +    {
 +     int membership;
 +       networkHandleMgr handle;
 +      NETWORK_HANDLE_FROM_PLAYER(iSelectedPlayer, &handle.netHandle, 13);
 +
 +     if (!_NETWORK_IS_CLAN_MEMBERSHIP_FINISHED_DOWNLOADING())
 +      {
 +         if (NETWORK_CLAN_REMOTE_MEMBERSHIPS_ARE_IN_CACHE(&Param))
 +         {
 +             if (NETWORK_CLAN_GET_MEMBERSHIP_COUNT(&Param) > 0)
 +             {
 +                 if (NETWORK_CLAN_GET_MEMBERSHIP_VALID(&Param, 0))
 +                 {
 +                     if (NETWORK_CLAN_GET_MEMBERSHIP(&Param, &membership, -1))
 +                     {
 +                         _0xF633805A(&membership, 35, &handle.netHandle);
 +                      }
 +                 }
 +             }
 +         }
 +     }
 +     else
 +      {
 +         NETWORK_CLAN_DOWNLOAD_MEMBERSHIP(&handle.netHandle);
 +      }
 + }</code>
 +==== NETWORK_CLAN_JOIN ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_JOIN(int clanDesc) // 0x9FAAA4F4FC71F87F 0x79C916C5 b323</code>
 +
 +==== _NETWORK_CLAN_ANIMATION ====
 +<code cpp>BOOL NETWORK::_NETWORK_CLAN_ANIMATION(const char* animDict, const char* animName) // 0x729E3401F0430686 0xBDA90BAC b323</code>
 +
 +<code>Only documented...
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== _0x2B51EDBEFC301339 ====
 +<code cpp>BOOL NETWORK::_0x2B51EDBEFC301339(int p0, const char* p1) // 0x2B51EDBEFC301339 0x8E952B12 b323</code>
 +
 +==== _0xC32EA7A2F6CA7557 ====
 +<code cpp>Any NETWORK::_0xC32EA7A2F6CA7557() // 0xC32EA7A2F6CA7557 0x966C90FD b323</code>
 +
 +==== NETWORK_CLAN_GET_EMBLEM_TXD_NAME ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_GET_EMBLEM_TXD_NAME(Any* netHandle, char* txdName) // 0x5835D9CD92E83184 0xBA672146 b323</code>
 +
 +==== NETWORK_CLAN_REQUEST_EMBLEM ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_REQUEST_EMBLEM(Any p0) // 0x13518FF1C6B28938 0x7963FA4D b323</code>
 +
 +==== NETWORK_CLAN_IS_EMBLEM_READY ====
 +<code cpp>BOOL NETWORK::NETWORK_CLAN_IS_EMBLEM_READY(Any p0, Any* p1) // 0xA134777FF7F33331 0x88B13CDC b323</code>
 +
 +==== NETWORK_CLAN_RELEASE_EMBLEM ====
 +<code cpp>void NETWORK::NETWORK_CLAN_RELEASE_EMBLEM(Any p0) // 0x113E6E3E50E286B0 0xD6E3D5EA b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR() // 0x9AA46BADAD0E27ED 0xE22445DA b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL ====
 +<code cpp>void NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL() // 0x042E4B70B93E6054 0x455DDF5C b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_START ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_START(Any* p0, Any p1) // 0xCE86D8191B762107 0x89DB0EC7 b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_PENDING ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_PENDING() // 0xB5074DB804E28CE7 0xA4EF02F3 b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_SUCCESS ====
 +<code cpp>Any NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_SUCCESS() // 0x5B4F04F19376A0BA 0x068A054E b323</code>
 +
 +==== NETWORK_GET_PRIMARY_CLAN_DATA_NEW ====
 +<code cpp>BOOL NETWORK::NETWORK_GET_PRIMARY_CLAN_DATA_NEW(Any* p0, Any* p1) // 0xC080FF658B2E41DA 0x9B8631EB b323</code>
 +
 +==== SET_NETWORK_ID_CAN_MIGRATE ====
 +<code cpp>void NETWORK::SET_NETWORK_ID_CAN_MIGRATE(int netId, BOOL toggle) // 0x299EEB23175895FC 0x47C8E5FF b323</code>
 +
 +<code>Whether or not another player is allowed to take control of the entity</code>
 +==== SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES ====
 +<code cpp>void NETWORK::SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES(int netId, BOOL toggle) // 0xE05E81A888FA63C8 0x68D486B2 b323</code>
 +
 +==== SET_NETWORK_ID_ALWAYS_EXISTS_FOR_PLAYER ====
 +<code cpp>void NETWORK::SET_NETWORK_ID_ALWAYS_EXISTS_FOR_PLAYER(int netId, Player player, BOOL toggle) // 0xA8A024587329F36A 0x4D15FDB1 b323</code>
 +
 +==== _0x9D724B400A7E8FFC ====
 +<code cpp>void NETWORK::_0x9D724B400A7E8FFC(Any p0, Any p1) // 0x9D724B400A7E8FFC  b2189</code>
 +
 +==== NETWORK_SET_ENTITY_CAN_BLEND ====
 +<code cpp>void NETWORK::NETWORK_SET_ENTITY_CAN_BLEND(Entity entity, BOOL toggle) // 0xD830567D88A1E873 0xDE8C0DB8 b323</code>
 +
 +==== _0x0379DAF89BA09AA5 ====
 +<code cpp>void NETWORK::_0x0379DAF89BA09AA5(Any p0, Any p1) // 0x0379DAF89BA09AA5  b944</code>
 +
 +==== _NETWORK_SET_ENTITY_INVISIBLE_TO_NETWORK ====
 +<code cpp>void NETWORK::_NETWORK_SET_ENTITY_INVISIBLE_TO_NETWORK(Entity entity, BOOL toggle) // 0xF1CA12B18AEF5298 0x09CBC4B0 b323</code>
 +
 +<code>if set to true other network players can't see it
 +if set to false other network player can see it
 +=========================================
 +^^ I attempted this by grabbing an object with GET_ENTITY_PLAYER_IS_FREE_AIMING_AT and setting this naive no matter the toggle he could still see it.
 +
 +pc or last gen?
 +
 +^^ last-gen</code>
 +==== SET_NETWORK_ID_VISIBLE_IN_CUTSCENE ====
 +<code cpp>void NETWORK::SET_NETWORK_ID_VISIBLE_IN_CUTSCENE(int netId, BOOL p1, BOOL p2) // 0xA6928482543022B4 0x199E75EF b323</code>
 +
 +==== _0x32EBD154CB6B8B99 ====
 +<code cpp>void NETWORK::_0x32EBD154CB6B8B99(Any p0, Any p1, Any p2) // 0x32EBD154CB6B8B99  b505</code>
 +
 +==== _0x76B3F29D3F967692 ====
 +<code cpp>void NETWORK::_0x76B3F29D3F967692(Any p0, Any p1) // 0x76B3F29D3F967692  b2189</code>
 +
 +==== SET_NETWORK_CUTSCENE_ENTITIES ====
 +<code cpp>void NETWORK::SET_NETWORK_CUTSCENE_ENTITIES(BOOL toggle) // 0xAAA553E7DD28A457 0xFD0F7EDD b323</code>
 +
 +==== _0x3FA36981311FA4FF ====
 +<code cpp>void NETWORK::_0x3FA36981311FA4FF(int netId, BOOL state) // 0x3FA36981311FA4FF 0x00AE4E17 b323</code>
 +
 +==== IS_NETWORK_ID_OWNED_BY_PARTICIPANT ====
 +<code cpp>BOOL NETWORK::IS_NETWORK_ID_OWNED_BY_PARTICIPANT(int netId) // 0xA1607996431332DF 0xEA5176C0 b323</code>
 +
 +==== SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE ====
 +<code cpp>void NETWORK::SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE(BOOL p0, BOOL p1) // 0xD1065D68947E7B6E 0x59F3479B b323</code>
 +
 +==== SET_LOCAL_PLAYER_INVISIBLE_LOCALLY ====
 +<code cpp>void NETWORK::SET_LOCAL_PLAYER_INVISIBLE_LOCALLY(BOOL p0) // 0xE5F773C1A1D9D168 0x764F6222 b323</code>
 +
 +==== SET_LOCAL_PLAYER_VISIBLE_LOCALLY ====
 +<code cpp>void NETWORK::SET_LOCAL_PLAYER_VISIBLE_LOCALLY(BOOL p0) // 0x7619364C82D3BF14 0x324B56DB b323</code>
 +
 +==== SET_PLAYER_INVISIBLE_LOCALLY ====
 +<code cpp>void NETWORK::SET_PLAYER_INVISIBLE_LOCALLY(Player player, BOOL toggle) // 0x12B37D54667DB0B8 0x18227209 b323</code>
 +
 +==== SET_PLAYER_VISIBLE_LOCALLY ====
 +<code cpp>void NETWORK::SET_PLAYER_VISIBLE_LOCALLY(Player player, BOOL toggle) // 0xFAA10F1FAFB11AF2 0xBA2BB4B4 b323</code>
 +
 +==== FADE_OUT_LOCAL_PLAYER ====
 +<code cpp>void NETWORK::FADE_OUT_LOCAL_PLAYER(BOOL p0) // 0x416DBD4CD6ED8DD2 0x8FA7CEBD b323</code>
 +
 +<code>Hardcoded to not work in SP.</code>
 +==== NETWORK_FADE_OUT_ENTITY ====
 +<code cpp>void NETWORK::NETWORK_FADE_OUT_ENTITY(Entity entity, BOOL normal, BOOL slow) // 0xDE564951F95E09ED 0x47EDEE56 b323</code>
 +
 +<code>normal - transition like when your coming out of LSC
 +slow - transition like when you walk into a mission
 + </code>
 +==== NETWORK_FADE_IN_ENTITY ====
 +<code cpp>void NETWORK::NETWORK_FADE_IN_ENTITY(Entity entity, BOOL state, Any p2) // 0x1F4ED342ACEFE62D 0x9B9FCD02 b323</code>
 +
 +<code>state - 0 does 5 fades
 +state - 1 does 6 fades
 +
 +p3: setting to 1 made vehicle fade in slower, probably "slow" as per NETWORK_FADE_OUT_ENTITY</code>
 +==== NETWORK_IS_PLAYER_FADING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_FADING(Player player) // 0x631DC5DFF4B110E3 0x065C597B b323</code>
 +
 +==== NETWORK_IS_ENTITY_FADING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_ENTITY_FADING(Entity entity) // 0x422F32CC7E56ABAD 0xB5087ACF b323</code>
 +
 +==== IS_PLAYER_IN_CUTSCENE ====
 +<code cpp>BOOL NETWORK::IS_PLAYER_IN_CUTSCENE(Player player) // 0xE73092F4157CD126 0xE0A619BD b323</code>
 +
 +==== SET_ENTITY_VISIBLE_IN_CUTSCENE ====
 +<code cpp>void NETWORK::SET_ENTITY_VISIBLE_IN_CUTSCENE(Any p0, BOOL p1, BOOL p2) // 0xE0031D3C8F36AB82 0xDBFB067B b323</code>
 +
 +==== SET_ENTITY_LOCALLY_INVISIBLE ====
 +<code cpp>void NETWORK::SET_ENTITY_LOCALLY_INVISIBLE(Entity entity) // 0xE135A9FF3F5D05D8 0x51ADCC5F b323</code>
 +
 +<code>Makes the provided entity visible for yourself for the current frame.</code>
 +==== SET_ENTITY_LOCALLY_VISIBLE ====
 +<code cpp>void NETWORK::SET_ENTITY_LOCALLY_VISIBLE(Entity entity) // 0x241E289B5C059EDC 0x235A57B3 b323</code>
 +
 +==== IS_DAMAGE_TRACKER_ACTIVE_ON_NETWORK_ID ====
 +<code cpp>BOOL NETWORK::IS_DAMAGE_TRACKER_ACTIVE_ON_NETWORK_ID(int netID) // 0x6E192E33AD436366 0x597063BA b323</code>
 +
 +==== ACTIVATE_DAMAGE_TRACKER_ON_NETWORK_ID ====
 +<code cpp>void NETWORK::ACTIVATE_DAMAGE_TRACKER_ON_NETWORK_ID(int netID, BOOL toggle) // 0xD45B1FFCCD52FF19 0x95D07BA5 b323</code>
 +
 +==== _IS_DAMAGE_TRACKER_ACTIVE_ON_PLAYER ====
 +<code cpp>BOOL NETWORK::_IS_DAMAGE_TRACKER_ACTIVE_ON_PLAYER(Player player) // 0xB2092A1EAA7FD45F  b757</code>
 +
 +==== _ACTIVATE_DAMAGE_TRACKER_ON_PLAYER ====
 +<code cpp>void NETWORK::_ACTIVATE_DAMAGE_TRACKER_ON_PLAYER(Player player, BOOL toggle) // 0xBEC0816FF5ACBCDA  b757</code>
 +
 +==== IS_SPHERE_VISIBLE_TO_ANOTHER_MACHINE ====
 +<code cpp>BOOL NETWORK::IS_SPHERE_VISIBLE_TO_ANOTHER_MACHINE(float p0, float p1, float p2, float p3) // 0xD82CF8E64C8729D8 0x23C5274E b323</code>
 +
 +==== IS_SPHERE_VISIBLE_TO_PLAYER ====
 +<code cpp>BOOL NETWORK::IS_SPHERE_VISIBLE_TO_PLAYER(Any p0, float p1, float p2, float p3, float p4) // 0xDC3A310219E5DA62 0xE9FCFB32 b323</code>
 +
 +==== RESERVE_NETWORK_MISSION_OBJECTS ====
 +<code cpp>void NETWORK::RESERVE_NETWORK_MISSION_OBJECTS(int amount) // 0x4E5C93BD0C32FBF8 0x391DF4F3 b323</code>
 +
 +==== RESERVE_NETWORK_MISSION_PEDS ====
 +<code cpp>void NETWORK::RESERVE_NETWORK_MISSION_PEDS(int amount) // 0xB60FEBA45333D36F 0x54998C37 b323</code>
 +
 +==== RESERVE_NETWORK_MISSION_VEHICLES ====
 +<code cpp>void NETWORK::RESERVE_NETWORK_MISSION_VEHICLES(int amount) // 0x76B02E21ED27A469 0x5062875E b323</code>
 +
 +==== _RESERVE_NETWORK_LOCAL_OBJECTS ====
 +<code cpp>void NETWORK::_RESERVE_NETWORK_LOCAL_OBJECTS(int amount) // 0x797F9C5E661D920E  b1290</code>
 +
 +==== _RESERVE_NETWORK_LOCAL_PEDS ====
 +<code cpp>void NETWORK::_RESERVE_NETWORK_LOCAL_PEDS(int amount) // 0x2C8DF5D129595281  b1493</code>
 +
 +==== _RESERVE_NETWORK_LOCAL_VEHICLES ====
 +<code cpp>void NETWORK::_RESERVE_NETWORK_LOCAL_VEHICLES(int amount) // 0x42613035157E4208  b1103</code>
 +
 +==== CAN_REGISTER_MISSION_OBJECTS ====
 +<code cpp>BOOL NETWORK::CAN_REGISTER_MISSION_OBJECTS(int amount) // 0x800DD4721A8B008B 0x7F85DFDE b323</code>
 +
 +==== CAN_REGISTER_MISSION_PEDS ====
 +<code cpp>BOOL NETWORK::CAN_REGISTER_MISSION_PEDS(int amount) // 0xBCBF4FEF9FA5D781 0xCCAA5CE9 b323</code>
 +
 +==== CAN_REGISTER_MISSION_VEHICLES ====
 +<code cpp>BOOL NETWORK::CAN_REGISTER_MISSION_VEHICLES(int amount) // 0x7277F1F2E085EE74 0x818B6830 b323</code>
 +
 +==== _CAN_REGISTER_MISSION_PICKUPS ====
 +<code cpp>BOOL NETWORK::_CAN_REGISTER_MISSION_PICKUPS(int amount) // 0x0A49D1CB6E34AF72  b757</code>
 +
 +==== _0xE16AA70CE9BEEDC3 ====
 +<code cpp>Any NETWORK::_0xE16AA70CE9BEEDC3(Any p0) // 0xE16AA70CE9BEEDC3  b877</code>
 +
 +==== CAN_REGISTER_MISSION_ENTITIES ====
 +<code cpp>BOOL NETWORK::CAN_REGISTER_MISSION_ENTITIES(int ped_amt, int vehicle_amt, int object_amt, int pickup_amt) // 0x69778E7564BADE6D 0x83794008 b323</code>
 +
 +==== GET_NUM_RESERVED_MISSION_OBJECTS ====
 +<code cpp>int NETWORK::GET_NUM_RESERVED_MISSION_OBJECTS(BOOL p0, Any p1) // 0xAA81B5F10BC43AC2 0x16A80CD6 b323</code>
 +
 +<code>p0 appears to be for MP</code>
 +==== GET_NUM_RESERVED_MISSION_PEDS ====
 +<code cpp>int NETWORK::GET_NUM_RESERVED_MISSION_PEDS(BOOL p0, Any p1) // 0x1F13D5AE5CB17E17 0x6C25975C b323</code>
 +
 +<code>p0 appears to be for MP</code>
 +==== GET_NUM_RESERVED_MISSION_VEHICLES ====
 +<code cpp>int NETWORK::GET_NUM_RESERVED_MISSION_VEHICLES(BOOL p0, Any p1) // 0xCF3A965906452031 0xA9A308F3 b323</code>
 +
 +<code>p0 appears to be for MP</code>
 +==== GET_NUM_CREATED_MISSION_OBJECTS ====
 +<code cpp>int NETWORK::GET_NUM_CREATED_MISSION_OBJECTS(BOOL p0) // 0x12B6281B6C6706C0 0x603FA104 b323</code>
 +
 +==== GET_NUM_CREATED_MISSION_PEDS ====
 +<code cpp>int NETWORK::GET_NUM_CREATED_MISSION_PEDS(BOOL p0) // 0xCB215C4B56A7FAE7 0xD8FEC4F8 b323</code>
 +
 +==== GET_NUM_CREATED_MISSION_VEHICLES ====
 +<code cpp>int NETWORK::GET_NUM_CREATED_MISSION_VEHICLES(BOOL p0) // 0x0CD9AB83489430EA 0x20527695 b323</code>
 +
 +==== _0xE42D626EEC94E5D9 ====
 +<code cpp>void NETWORK::_0xE42D626EEC94E5D9(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xE42D626EEC94E5D9  b1290</code>
 +
 +==== GET_MAX_NUM_NETWORK_OBJECTS ====
 +<code cpp>int NETWORK::GET_MAX_NUM_NETWORK_OBJECTS() // 0xC7BE335216B5EC7C 0x8687E285 b323</code>
 +
 +==== GET_MAX_NUM_NETWORK_PEDS ====
 +<code cpp>int NETWORK::GET_MAX_NUM_NETWORK_PEDS() // 0x0C1F7D49C39D2289 0x744AC008 b323</code>
 +
 +==== GET_MAX_NUM_NETWORK_VEHICLES ====
 +<code cpp>int NETWORK::GET_MAX_NUM_NETWORK_VEHICLES() // 0x0AFCE529F69B21FF 0xC3A12135 b323</code>
 +
 +==== GET_MAX_NUM_NETWORK_PICKUPS ====
 +<code cpp>int NETWORK::GET_MAX_NUM_NETWORK_PICKUPS() // 0xA72835064DD63E4C 0x6A036061 b323</code>
 +
 +==== _0xBA7F0B77D80A4EB7 ====
 +<code cpp>void NETWORK::_0xBA7F0B77D80A4EB7(Any p0, Any p1) // 0xBA7F0B77D80A4EB7  b372</code>
 +
 +==== _0x0F1A4B45B7693B95 ====
 +<code cpp>void NETWORK::_0x0F1A4B45B7693B95(Any p0, Any p1) // 0x0F1A4B45B7693B95  b2189</code>
 +
 +==== GET_NETWORK_TIME ====
 +<code cpp>int NETWORK::GET_NETWORK_TIME() // 0x7A5487FE9FAA6B48 0x998103C2 b323</code>
 +
 +==== GET_NETWORK_TIME_ACCURATE ====
 +<code cpp>int NETWORK::GET_NETWORK_TIME_ACCURATE() // 0x89023FBBF9200E9F 0x98AA48E5 b323</code>
 +
 +<code>Returns the same value as GET_NETWORK_TIME in freemode, but as opposed to `GET_NETWORK_TIME` it always gets the most recent time, instead of once per tick.
 +Could be used for benchmarking since it can return times in ticks.</code>
 +==== HAS_NETWORK_TIME_STARTED ====
 +<code cpp>BOOL NETWORK::HAS_NETWORK_TIME_STARTED() // 0x46718ACEEDEAFC84 0x4538C4A2 b323</code>
 +
 +==== GET_TIME_OFFSET ====
 +<code cpp>int NETWORK::GET_TIME_OFFSET(int timeA, int timeB) // 0x017008CCDAD48503 0x2E079AE6 b323</code>
 +
 +<code>Adds the first argument to the second.</code>
 +==== IS_TIME_LESS_THAN ====
 +<code cpp>BOOL NETWORK::IS_TIME_LESS_THAN(int timeA, int timeB) // 0xCB2CF5148012C8D0 0x50EF8FC6 b323</code>
 +
 +<code>Subtracts the second argument from the first, then returns whether the result is negative.</code>
 +==== IS_TIME_MORE_THAN ====
 +<code cpp>BOOL NETWORK::IS_TIME_MORE_THAN(int timeA, int timeB) // 0xDE350F8651E4346C 0xBBB6DF61 b323</code>
 +
 +<code>Subtracts the first argument from the second, then returns whether the result is negative.</code>
 +==== IS_TIME_EQUAL_TO ====
 +<code cpp>BOOL NETWORK::IS_TIME_EQUAL_TO(int timeA, int timeB) // 0xF5BC95857BD6D512 0x8B4D1C06 b323</code>
 +
 +<code>Returns true if the two times are equal; otherwise returns false.</code>
 +==== GET_TIME_DIFFERENCE ====
 +<code cpp>int NETWORK::GET_TIME_DIFFERENCE(int timeA, int timeB) // 0xA2C6FC031D46FFF0 0x5666A837 b323</code>
 +
 +<code>Subtracts the second argument from the first.</code>
 +==== GET_TIME_AS_STRING ====
 +<code cpp>const char* NETWORK::GET_TIME_AS_STRING(int time) // 0x9E23B1777A927DAD 0x8218944E b323</code>
 +
 +==== _GET_CLOUD_TIME_AS_STRING ====
 +<code cpp>const char* NETWORK::_GET_CLOUD_TIME_AS_STRING() // 0xF12E6CD06C73D69E  b1103</code>
 +
 +<code>Same as GET_CLOUD_TIME_AS_INT but returns the value as a hex string (%I64X).</code>
 +==== GET_CLOUD_TIME_AS_INT ====
 +<code cpp>int NETWORK::GET_CLOUD_TIME_AS_INT() // 0x9A73240B49945C76 0xF2FDF2E0 b323</code>
 +
 +<code>Returns POSIX timestamp, an int representing the cloud time.</code>
 +==== CONVERT_POSIX_TIME ====
 +<code cpp>void NETWORK::CONVERT_POSIX_TIME(int posixTime, Any* timeStructure) // 0xAC97AF97FA68E5D5 0xBB7CCE49 b323</code>
 +
 +<code>Takes the specified time and writes it to the structure specified in the second argument.
 +
 +struct date_time
 +{
 +    int year;
 +    int PADDING1;
 +    int month;
 +    int PADDING2;
 +    int day;
 +    int PADDING3;
 +    int hour;
 +    int PADDING4;
 +    int minute;
 +    int PADDING5;
 +    int second;
 +    int PADDING6;
 +};</code>
 +==== NETWORK_SET_IN_SPECTATOR_MODE ====
 +<code cpp>void NETWORK::NETWORK_SET_IN_SPECTATOR_MODE(BOOL toggle, Ped playerPed) // 0x423DE3854BB50894 0x5C4C8458 b323</code>
 +
 +==== NETWORK_SET_IN_SPECTATOR_MODE_EXTENDED ====
 +<code cpp>void NETWORK::NETWORK_SET_IN_SPECTATOR_MODE_EXTENDED(BOOL toggle, Ped playerPed, BOOL p2) // 0x419594E137637120 0x54058F5F b323</code>
 +
 +==== NETWORK_SET_IN_FREE_CAM_MODE ====
 +<code cpp>void NETWORK::NETWORK_SET_IN_FREE_CAM_MODE(BOOL toggle) // 0xFC18DB55AE19E046 0xA7E36020 b323</code>
 +
 +==== NETWORK_SET_CHOICE_MIGRATE_OPTIONS ====
 +<code cpp>void NETWORK::NETWORK_SET_CHOICE_MIGRATE_OPTIONS(BOOL toggle, Player player) // 0x5C707A667DF8B9FA 0x64235620 b323</code>
 +
 +==== NETWORK_IS_IN_SPECTATOR_MODE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_SPECTATOR_MODE() // 0x048746E388762E11 0x3EAD9DB8 b323</code>
 +
 +==== NETWORK_SET_IN_MP_CUTSCENE ====
 +<code cpp>void NETWORK::NETWORK_SET_IN_MP_CUTSCENE(BOOL p0, BOOL p1) // 0x9CA5DE655269FEC4 0x8434CB43 b323</code>
 +
 +==== NETWORK_IS_IN_MP_CUTSCENE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_MP_CUTSCENE() // 0x6CC27C9FA2040220 0x4BB33316 b323</code>
 +
 +==== NETWORK_IS_PLAYER_IN_MP_CUTSCENE ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_IN_MP_CUTSCENE(Player player) // 0x63F9EE203C3619F2 0x56F961E4 b323</code>
 +
 +==== _0xFAC18E7356BD3210 ====
 +<code cpp>void NETWORK::_0xFAC18E7356BD3210() // 0xFAC18E7356BD3210  b1180</code>
 +
 +==== SET_NETWORK_VEHICLE_RESPOT_TIMER ====
 +<code cpp>void NETWORK::SET_NETWORK_VEHICLE_RESPOT_TIMER(int netId, int time, Any p2, Any p3) // 0xEC51713AB6EC36E8 0x2C30912D b323</code>
 +
 +==== SET_NETWORK_VEHICLE_AS_GHOST ====
 +<code cpp>void NETWORK::SET_NETWORK_VEHICLE_AS_GHOST(Vehicle vehicle, BOOL toggle) // 0x6274C4712850841E 0xEA235081 b323</code>
 +
 +==== _0xA2A707979FE754DC ====
 +<code cpp>void NETWORK::_0xA2A707979FE754DC(Any p0, Any p1) // 0xA2A707979FE754DC  b877</code>
 +
 +==== _0x838DA0936A24ED4D ====
 +<code cpp>void NETWORK::_0x838DA0936A24ED4D(Any p0, Any p1) // 0x838DA0936A24ED4D  b944</code>
 +
 +==== _SET_LOCAL_PLAYER_AS_GHOST ====
 +<code cpp>void NETWORK::_SET_LOCAL_PLAYER_AS_GHOST(BOOL toggle, BOOL p1) // 0x5FFE9B4144F9712F  b323</code>
 +
 +==== _IS_ENTITY_GHOSTED_TO_LOCAL_PLAYER ====
 +<code cpp>BOOL NETWORK::_IS_ENTITY_GHOSTED_TO_LOCAL_PLAYER(Entity entity) // 0x21D04D7BC538C146  b323</code>
 +
 +==== _0x13F1FCB111B820B0 ====
 +<code cpp>void NETWORK::_0x13F1FCB111B820B0(BOOL p0) // 0x13F1FCB111B820B0  b877</code>
 +
 +<code>SET_NETWORK_*</code>
 +==== _SET_RELATIONSHIP_TO_PLAYER ====
 +<code cpp>void NETWORK::_SET_RELATIONSHIP_TO_PLAYER(Player player, BOOL p1) // 0xA7C511FA1C5BDA38  b463</code>
 +
 +<code>Enables ghosting between specific players</code>
 +==== _SET_GHOSTED_ENTITY_ALPHA ====
 +<code cpp>void NETWORK::_SET_GHOSTED_ENTITY_ALPHA(int alpha) // 0x658500AE6D723A7E  b791</code>
 +
 +<code>Must be a value between 1 and 254</code>
 +==== _RESET_GHOSTED_ENTITY_ALPHA ====
 +<code cpp>void NETWORK::_RESET_GHOSTED_ENTITY_ALPHA() // 0x17330EBF2F2124A8  b791</code>
 +
 +<code>Resets the entity ghost alpha to the default value (128)</code>
 +==== _NETWORK_SET_ENTITY_GHOSTED_WITH_OWNER ====
 +<code cpp>void NETWORK::_NETWORK_SET_ENTITY_GHOSTED_WITH_OWNER(Entity entity, BOOL p1) // 0x4BA166079D658ED4  b944</code>
 +
 +==== _0xD7B6C73CAD419BCF ====
 +<code cpp>void NETWORK::_0xD7B6C73CAD419BCF(BOOL p0) // 0xD7B6C73CAD419BCF  b944</code>
 +
 +==== _0x7EF7649B64D7FF10 ====
 +<code cpp>BOOL NETWORK::_0x7EF7649B64D7FF10(Entity entity) // 0x7EF7649B64D7FF10  b944</code>
 +
 +<code>IS_*</code>
 +==== USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR ====
 +<code cpp>void NETWORK::USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR(BOOL toggle) // 0x77758139EC9B66C7 0x4DD46DAE b323</code>
 +
 +==== NETWORK_CREATE_SYNCHRONISED_SCENE ====
 +<code cpp>int NETWORK::NETWORK_CREATE_SYNCHRONISED_SCENE(float x, float y, float z, float xRot, float yRot, float zRot, int rotationOrder, BOOL useOcclusionPortal, BOOL looped, float p9, float animTime, float p11) // 0x7CD6BC4C2BBDD526 0xB06FE3FE b323</code>
 +
 +==== NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE ====
 +<code cpp>void NETWORK::NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE(Ped ped, int netScene, const char* animDict, const char* animnName, float speed, float speedMultiplier, int duration, int flag, float playbackRate, Any p9) // 0x742A637471BCECD9 0xB386713E b323</code>
 +
 +==== _0xA5EAFE473E45C442 ====
 +<code cpp>void NETWORK::_0xA5EAFE473E45C442(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0xA5EAFE473E45C442  b1290</code>
 +
 +==== NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE ====
 +<code cpp>void NETWORK::NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE(Entity entity, int netScene, const char* animDict, const char* animName, float speed, float speedMulitiplier, int flag) // 0xF2404D68CBC855FA 0x10DD636C b323</code>
 +
 +==== _0x45F35C0EDC33B03B ====
 +<code cpp>void NETWORK::_0x45F35C0EDC33B03B(int netScene, Hash modelHash, float x, float y, float z, float p5, const char* p6, float p7, float p8, int flags) // 0x45F35C0EDC33B03B  b1734</code>
 +
 +<code>NETWORK_A*
 +Similar structure as NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE but it includes this time a hash.
 +In casino_slots it is used one time in a synced scene involving a ped and the slot machine?</code>
 +==== _NETWORK_FORCE_LOCAL_USE_OF_SYNCED_SCENE_CAMERA ====
 +<code cpp>void NETWORK::_NETWORK_FORCE_LOCAL_USE_OF_SYNCED_SCENE_CAMERA(int netScene, const char* animDict, const char* animName) // 0xCF8BD3B0BD6D42D7 0xBFFE8B5C b323</code>
 +
 +==== NETWORK_ATTACH_SYNCHRONISED_SCENE_TO_ENTITY ====
 +<code cpp>void NETWORK::NETWORK_ATTACH_SYNCHRONISED_SCENE_TO_ENTITY(int netScene, Entity entity, int bone) // 0x478DCBD2A98B705A 0x3FE5B222 b323</code>
 +
 +==== NETWORK_START_SYNCHRONISED_SCENE ====
 +<code cpp>void NETWORK::NETWORK_START_SYNCHRONISED_SCENE(int netScene) // 0x9A1B3FCDB36C8697 0xA9DFDC40 b323</code>
 +
 +==== NETWORK_STOP_SYNCHRONISED_SCENE ====
 +<code cpp>void NETWORK::NETWORK_STOP_SYNCHRONISED_SCENE(int netScene) // 0xC254481A4574CB2F 0x97B1CDF6 b323</code>
 +
 +==== _NETWORK_CONVERT_SYNCHRONISED_SCENE_TO_SYNCHRONIZED_SCENE ====
 +<code cpp>int NETWORK::_NETWORK_CONVERT_SYNCHRONISED_SCENE_TO_SYNCHRONIZED_SCENE(int netScene) // 0x02C40BF885C567B6 0x16AED87B b323</code>
 +
 +<code>netScene to scene</code>
 +==== _0xC9B43A33D09CADA7 ====
 +<code cpp>void NETWORK::_0xC9B43A33D09CADA7(Any p0) // 0xC9B43A33D09CADA7  b323</code>
 +
 +==== _0x144DA052257AE7D8 ====
 +<code cpp>void NETWORK::_0x144DA052257AE7D8(Any p0) // 0x144DA052257AE7D8  b1103</code>
 +
 +==== _0xFB1F9381E80FA13F ====
 +<code cpp>Any NETWORK::_0xFB1F9381E80FA13F(int p0, Any p1) // 0xFB1F9381E80FA13F 0x0679CE71 b323</code>
 +
 +<code>p0 is always 0. p1 is pointing to a global.</code>
 +==== NETWORK_START_RESPAWN_SEARCH_FOR_PLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_START_RESPAWN_SEARCH_FOR_PLAYER(Player player, float x, float y, float z, float radius, float p5, float p6, float p7, int flags) // 0x5A6FFA2433E2F14C 0xC62E77B3 b323</code>
 +
 +<code>One of the first things it does is get the players ped.
 +Then it calls a function that is used in some tasks and ped based functions.
 +p5, p6, p7 is another coordinate (or zero), often related to `GET_BLIP_COORDS, in the decompiled scripts.</code>
 +==== NETWORK_START_RESPAWN_SEARCH_IN_ANGLED_AREA_FOR_PLAYER ====
 +<code cpp>BOOL NETWORK::NETWORK_START_RESPAWN_SEARCH_IN_ANGLED_AREA_FOR_PLAYER(Player player, float x1, float y1, float z1, float x2, float y2, float z2, float width, float p8, float p9, float p10, int flags) // 0x4BA92A18502BCA61 0x74D6B13C b323</code>
 +
 +<code>p8, p9, p10 is another coordinate, or zero, often related to `GET_BLIP_COORDS in the decompiled scripts.</code>
 +==== NETWORK_QUERY_RESPAWN_RESULTS ====
 +<code cpp>Any NETWORK::NETWORK_QUERY_RESPAWN_RESULTS(Any* p0) // 0x3C891A251567DFCE 0x90700C7D b323</code>
 +
 +==== NETWORK_CANCEL_RESPAWN_SEARCH ====
 +<code cpp>void NETWORK::NETWORK_CANCEL_RESPAWN_SEARCH() // 0xFB8F2A6F3DF08CBE 0x44BFB619 b323</code>
 +
 +==== NETWORK_GET_RESPAWN_RESULT ====
 +<code cpp>void NETWORK::NETWORK_GET_RESPAWN_RESULT(int randomInt, Vector3* coordinates, float* heading) // 0x371EA43692861CF1 0xDDFE9FBC b323</code>
 +
 +<code>Based on scripts such as in freemode.c how they call their vars vVar and fVar the 2nd and 3rd param it a Vector3 and Float, but the first is based on get_random_int_in_range..</code>
 +==== NETWORK_GET_RESPAWN_RESULT_FLAGS ====
 +<code cpp>Any NETWORK::NETWORK_GET_RESPAWN_RESULT_FLAGS(Any p0) // 0x6C34F1208B8923FD 0x03287FD2 b323</code>
 +
 +==== NETWORK_START_SOLO_TUTORIAL_SESSION ====
 +<code cpp>void NETWORK::NETWORK_START_SOLO_TUTORIAL_SESSION() // 0x17E0198B3882C2CB 0x408A9436 b323</code>
 +
 +<code>*</code>
 +==== _0xFB680D403909DC70 ====
 +<code cpp>void NETWORK::_0xFB680D403909DC70(Any p0, Any p1) // 0xFB680D403909DC70 0xFFB2ADA1 b323</code>
 +
 +==== NETWORK_END_TUTORIAL_SESSION ====
 +<code cpp>void NETWORK::NETWORK_END_TUTORIAL_SESSION() // 0xD0AFAFF5A51D72F7 0xBA57E53E b323</code>
 +
 +==== NETWORK_IS_IN_TUTORIAL_SESSION ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_IN_TUTORIAL_SESSION() // 0xADA24309FE08DACF 0x34DD7B28 b323</code>
 +
 +==== _0xB37E4E6A2388CA7B ====
 +<code cpp>BOOL NETWORK::_0xB37E4E6A2388CA7B() // 0xB37E4E6A2388CA7B 0x755A2B3E b323</code>
 +
 +==== NETWORK_IS_TUTORIAL_SESSION_CHANGE_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TUTORIAL_SESSION_CHANGE_PENDING() // 0x35F0B98A8387274D 0xA003C40B b323</code>
 +
 +==== NETWORK_GET_PLAYER_TUTORIAL_SESSION_INSTANCE ====
 +<code cpp>int NETWORK::NETWORK_GET_PLAYER_TUTORIAL_SESSION_INSTANCE(Player player) // 0x3B39236746714134 0x5E1020CC b323</code>
 +
 +==== _NETWORK_IS_PLAYER_EQUAL_TO_INDEX ====
 +<code cpp>BOOL NETWORK::_NETWORK_IS_PLAYER_EQUAL_TO_INDEX(Player player, int index) // 0x9DE986FC9A87C474 0xE66A0B40 b323</code>
 +
 +<code>NETWORK_ARE_*</code>
 +==== NETWORK_CONCEAL_PLAYER ====
 +<code cpp>void NETWORK::NETWORK_CONCEAL_PLAYER(Player player, BOOL toggle, BOOL p2) // 0xBBDF066252829606 0x72052DB3 b323</code>
 +
 +==== NETWORK_IS_PLAYER_CONCEALED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_PLAYER_CONCEALED(Player player) // 0x919B3C98ED8292F9 0xB0313590 b323</code>
 +
 +==== _NETWORK_CONCEAL_ENTITY ====
 +<code cpp>void NETWORK::_NETWORK_CONCEAL_ENTITY(Entity entity, BOOL toggle) // 0x1632BE0AC1E62876  b877</code>
 +
 +==== _NETWORK_IS_ENTITY_CONCEALED ====
 +<code cpp>BOOL NETWORK::_NETWORK_IS_ENTITY_CONCEALED(Entity entity) // 0x71302EC70689052A  b877</code>
 +
 +<code>Note: This only works for vehicles, which appears to be a bug (since the setter _does_ work for every entity type and the name is 99% correct).</code>
 +==== NETWORK_OVERRIDE_CLOCK_TIME ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_CLOCK_TIME(int hours, int minutes, int seconds) // 0xE679E3E06E363892 0xC077BCD6 b323</code>
 +
 +<code>Works in Singleplayer too.
 +Passing wrong data (e.g. hours above 23) will cause the game to crash.</code>
 +==== _NETWORK_OVERRIDE_CLOCK_MILLISECONDS_PER_GAME_MINUTE ====
 +<code cpp>void NETWORK::_NETWORK_OVERRIDE_CLOCK_MILLISECONDS_PER_GAME_MINUTE(int ms) // 0x42BF1D2E723B6D7E  b2189</code>
 +
 +==== NETWORK_CLEAR_CLOCK_TIME_OVERRIDE ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_CLOCK_TIME_OVERRIDE() // 0xD972DF67326F966E 0xC4AEAF49 b323</code>
 +
 +==== NETWORK_IS_CLOCK_TIME_OVERRIDDEN ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_CLOCK_TIME_OVERRIDDEN() // 0xD7C95D322FF57522 0x2465296D b323</code>
 +
 +==== NETWORK_ADD_ENTITY_AREA ====
 +<code cpp>Any NETWORK::NETWORK_ADD_ENTITY_AREA(float p0, float p1, float p2, float p3, float p4, float p5) // 0x494C8FB299290269 0x51030E5B b323</code>
 +
 +==== NETWORK_ADD_ENTITY_ANGLED_AREA ====
 +<code cpp>Any NETWORK::NETWORK_ADD_ENTITY_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width) // 0x376C6375BA60293A 0xCD69BEA1 b323</code>
 +
 +<code>To remove, see: NETWORK_REMOVE_ENTITY_AREA
 +See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.</code>
 +==== NETWORK_ADD_ENTITY_DISPLAYED_BOUNDARIES ====
 +<code cpp>Any NETWORK::NETWORK_ADD_ENTITY_DISPLAYED_BOUNDARIES(float p0, float p1, float p2, float p3, float p4, float p5) // 0x25B99872D588A101 0x4C2C2B12 b323</code>
 +
 +==== _0x2B1C623823DB0D9D ====
 +<code cpp>Any NETWORK::_0x2B1C623823DB0D9D(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x2B1C623823DB0D9D  b1103</code>
 +
 +==== NETWORK_REMOVE_ENTITY_AREA ====
 +<code cpp>BOOL NETWORK::NETWORK_REMOVE_ENTITY_AREA(Any p0) // 0x93CF869BAA0C4874 0xEAB97F25 b323</code>
 +
 +==== NETWORK_ENTITY_AREA_DOES_EXIST ====
 +<code cpp>BOOL NETWORK::NETWORK_ENTITY_AREA_DOES_EXIST(int areaHandle) // 0xE64A3CA08DFA37A9 0x69956127 b323</code>
 +
 +==== _0x4DF7CFFF471A7FB1 ====
 +<code cpp>BOOL NETWORK::_0x4DF7CFFF471A7FB1(Any p0) // 0x4DF7CFFF471A7FB1 0xCB1CD6D3 b323</code>
 +
 +==== NETWORK_ENTITY_AREA_IS_OCCUPIED ====
 +<code cpp>BOOL NETWORK::NETWORK_ENTITY_AREA_IS_OCCUPIED(int areaHandle) // 0x4A2D4E8BF4265B0F 0xC6D53AA0 b323</code>
 +
 +==== _NETWORK_SET_NETWORK_ID_DYNAMIC ====
 +<code cpp>void NETWORK::_NETWORK_SET_NETWORK_ID_DYNAMIC(int netID, BOOL toggle) // 0x2B1813ABA29016C5 0x155465EE b323</code>
 +
 +==== _0xA6FCECCF4721D679 ====
 +<code cpp>void NETWORK::_0xA6FCECCF4721D679(Any p0) // 0xA6FCECCF4721D679  b1604</code>
 +
 +==== _0x95BAF97C82464629 ====
 +<code cpp>void NETWORK::_0x95BAF97C82464629(Any p0, Any p1) // 0x95BAF97C82464629  b1604</code>
 +
 +==== NETWORK_REQUEST_CLOUD_BACKGROUND_SCRIPTS ====
 +<code cpp>BOOL NETWORK::NETWORK_REQUEST_CLOUD_BACKGROUND_SCRIPTS() // 0x924426BFFD82E915 0x98EFB921 b323</code>
 +
 +==== NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() // 0x8132C0EB8B2B3293 0x20AB933A b323</code>
 +
 +==== NETWORK_REQUEST_CLOUD_TUNABLES ====
 +<code cpp>void NETWORK::NETWORK_REQUEST_CLOUD_TUNABLES() // 0x42FB3B532D526E6C 0xD760CAD5 b323</code>
 +
 +==== NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() // 0x0467C11ED88B7D28 0x47978D7F b323</code>
 +
 +==== NETWORK_GET_TUNABLE_CLOUD_CRC ====
 +<code cpp>int NETWORK::NETWORK_GET_TUNABLE_CLOUD_CRC() // 0x10BD227A753B0D84 0x231CFD12 b323</code>
 +
 +<code>Actually returns the version (TUNABLE_VERSION)</code>
 +==== NETWORK_DOES_TUNABLE_EXIST ====
 +<code cpp>BOOL NETWORK::NETWORK_DOES_TUNABLE_EXIST(const char* tunableContext, const char* tunableName) // 0x85E5F8B9B898B20A 0x9FCE9C9A b323</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_INT ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_INT(const char* tunableContext, const char* tunableName, int* value) // 0x8BE1146DFD5D4468 0xE4B3726A b323</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_FLOAT ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_FLOAT(const char* tunableContext, const char* tunableName, float* value) // 0xE5608CA7BC163A5F 0x41E8912A b323</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_BOOL ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_BOOL(const char* tunableContext, const char* tunableName) // 0xAA6A47A573ABB75A 0x8A04E1FE b323</code>
 +
 +==== NETWORK_DOES_TUNABLE_EXIST_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_DOES_TUNABLE_EXIST_HASH(Hash tunableContext, Hash tunableName) // 0xE4E53E1419D81127 0x25915CB9 b323</code>
 +
 +==== _NETWORK_ALLOCATE_TUNABLES_REGISTRATION_DATA_MAP ====
 +<code cpp>BOOL NETWORK::_NETWORK_ALLOCATE_TUNABLES_REGISTRATION_DATA_MAP() // 0xFAFC23AEE23868DB  b393</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_INT_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_INT_HASH(Hash tunableContext, Hash tunableName, int* value) // 0x40FCE03E50E8DBE8 0xB2E83B75 b323</code>
 +
 +==== _NETWORK_REGISTER_TUNABLE_INT_HASH ====
 +<code cpp>BOOL NETWORK::_NETWORK_REGISTER_TUNABLE_INT_HASH(Hash contextHash, Hash nameHash, int* value) // 0x3A8B55FDA4C8DDEF  b393</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_FLOAT_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_FLOAT_HASH(Hash tunableContext, Hash tunableName, float* value) // 0x972BC203BBC4C4D5 0x3972551F b323</code>
 +
 +==== _NETWORK_REGISTER_TUNABLE_FLOAT_HASH ====
 +<code cpp>BOOL NETWORK::_NETWORK_REGISTER_TUNABLE_FLOAT_HASH(Hash contextHash, Hash nameHash, float* value) // 0x1950DAE9848A4739  b393</code>
 +
 +==== NETWORK_ACCESS_TUNABLE_BOOL_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_ACCESS_TUNABLE_BOOL_HASH(Hash tunableContext, Hash tunableName) // 0xEA16B69D93D71A45 0x18867C61 b323</code>
 +
 +==== _NETWORK_REGISTER_TUNABLE_BOOL_HASH ====
 +<code cpp>BOOL NETWORK::_NETWORK_REGISTER_TUNABLE_BOOL_HASH(Hash contextHash, Hash nameHash, BOOL* value) // 0x697F508861875B42  b393</code>
 +
 +==== NETWORK_TRY_ACCESS_TUNABLE_BOOL_HASH ====
 +<code cpp>BOOL NETWORK::NETWORK_TRY_ACCESS_TUNABLE_BOOL_HASH(Hash tunableContext, Hash tunableName, BOOL defaultValue) // 0xC7420099936CE286 0x8AFE3D90 b323</code>
 +
 +<code>Returns defaultValue if the tunable doesn't exist.</code>
 +==== NETWORK_GET_CONTENT_MODIFIER_LIST_ID ====
 +<code cpp>int NETWORK::NETWORK_GET_CONTENT_MODIFIER_LIST_ID(Hash contentHash) // 0x187382F8A3E0A6C3 0xA78571CA b323</code>
 +
 +<code>Return the content modifier id (the tunables context if you want) of a specific content.
 +
 +It takes the content hash (which is the mission id hash), and return the content modifier id, used as the tunables context.
 +
 +The mission id can be found on the Social club, for example, 'socialclub.rockstargames.com/games/gtav/jobs/job/A8M6Bz8MLEC5xngvDCzGwA'
 +
 +'A8M6Bz8MLEC5xngvDCzGwA' is the mission id, so the game hash this and use it as the parameter for this native.
 +</code>
 +==== _0x7DB53B37A2F211A0 ====
 +<code cpp>int NETWORK::_0x7DB53B37A2F211A0() // 0x7DB53B37A2F211A0 0x053BB329 b323</code>
 +
 +==== NETWORK_RESET_BODY_TRACKER ====
 +<code cpp>void NETWORK::NETWORK_RESET_BODY_TRACKER() // 0x72433699B4E6DD64 0x3914463F b323</code>
 +
 +==== _NETWORK_GET_NUM_BODY_TRACKERS ====
 +<code cpp>int NETWORK::_NETWORK_GET_NUM_BODY_TRACKERS() // 0xD38C4A6D047C019D 0x17CBC608 b323</code>
 +
 +==== _0x2E0BF682CC778D49 ====
 +<code cpp>BOOL NETWORK::_0x2E0BF682CC778D49(Any p0) // 0x2E0BF682CC778D49 0xBFAA349B b323</code>
 +
 +==== _0x0EDE326D47CD0F3E ====
 +<code cpp>BOOL NETWORK::_0x0EDE326D47CD0F3E(Ped ped, Player player) // 0x0EDE326D47CD0F3E 0xBEB7281A b323</code>
 +
 +==== _NETWORK_SET_VEHICLE_WHEELS_DESTRUCTIBLE ====
 +<code cpp>void NETWORK::_NETWORK_SET_VEHICLE_WHEELS_DESTRUCTIBLE(Entity entity, BOOL toggle) // 0x890E2C5ABED7236D  b1365</code>
 +
 +<code>Allows vehicle wheels to be destructible even when the vehicle entity is invincible.</code>
 +==== _0x38B7C51AB1EDC7D8 ====
 +<code cpp>void NETWORK::_0x38B7C51AB1EDC7D8(Entity entity, BOOL toggle) // 0x38B7C51AB1EDC7D8  b1734</code>
 +
 +==== _0x3FC795691834481D ====
 +<code cpp>void NETWORK::_0x3FC795691834481D(Any p0, Any p1) // 0x3FC795691834481D  b1868</code>
 +
 +<code>nullsub, doesn't do anything</code>
 +==== NETWORK_EXPLODE_VEHICLE ====
 +<code cpp>void NETWORK::NETWORK_EXPLODE_VEHICLE(Vehicle vehicle, BOOL isAudible, BOOL isInvisible, BOOL p3) // 0x301A42153C9AD707 0x0E1B38AE b323</code>
 +
 +<code>In the console script dumps, this is only referenced once. 
 +NETWORK::NETWORK_EXPLODE_VEHICLE(vehicle, 1, 0, 0);
 +
 +^^^^^ That must be PC script dumps? In X360 Script Dumps it is reference a few times with 2 differences in the parameters.
 +Which as you see below is 1, 0, 0 + 1, 1, 0 + 1, 0, and a *param?
 +
 +am_plane_takedown.c 
 +network_explode_vehicle(net_to_veh(Local_40.imm_2), 1, 1, 0);
 +
 +armenian2.c 
 +network_explode_vehicle(Local_80[6 <2>], 1, 0, 0);
 +
 +fm_horde_controler.c
 +network_explode_vehicle(net_to_veh(*uParam0), 1, 0, *uParam0);
 +
 +fm_mission_controller.c, has 6 hits so not going to list them.
 +
 +Side note, setting the first parameter to 0 seems to mute sound or so?
 +
 +Seems it's like ADD_EXPLOSION, etc. the first 2 params. The 3rd atm no need to worry since it always seems to be 0.
 +</code>
 +==== _0x2A5E0621DD815A9A ====
 +<code cpp>void NETWORK::_0x2A5E0621DD815A9A(Any p0, Any p1, Any p2, Any p3) // 0x2A5E0621DD815A9A  b463</code>
 +
 +==== _0xCD71A4ECAB22709E ====
 +<code cpp>void NETWORK::_0xCD71A4ECAB22709E(Entity entity) // 0xCD71A4ECAB22709E 0xBC54371B b323</code>
 +
 +==== NETWORK_OVERRIDE_COORDS_AND_HEADING ====
 +<code cpp>void NETWORK::NETWORK_OVERRIDE_COORDS_AND_HEADING(Entity entity, float x, float y, float z, float heading) // 0xA7E30DE9272B6D49 0x644141C5 b323</code>
 +
 +==== _0xE6717E652B8C8D8A ====
 +<code cpp>void NETWORK::_0xE6717E652B8C8D8A(Any p0, Any p1) // 0xE6717E652B8C8D8A  b617</code>
 +
 +==== NETWORK_DISABLE_PROXIMITY_MIGRATION ====
 +<code cpp>void NETWORK::NETWORK_DISABLE_PROXIMITY_MIGRATION(int netID) // 0x407091CF6037118E 0x9F82917F b323</code>
 +
 +==== NETWORK_SET_PROPERTY_ID ====
 +<code cpp>void NETWORK::NETWORK_SET_PROPERTY_ID(int id) // 0x1775961C2FBBCB5C 0x5A74E873 b323</code>
 +
 +<code>value must be < 255</code>
 +==== NETWORK_CLEAR_PROPERTY_ID ====
 +<code cpp>void NETWORK::NETWORK_CLEAR_PROPERTY_ID() // 0xC2B82527CA77053E 0x38BC35C8 b323</code>
 +
 +==== _0x367EF5E2F439B4C6 ====
 +<code cpp>void NETWORK::_0x367EF5E2F439B4C6(int p0) // 0x367EF5E2F439B4C6 0x53C9563C b323</code>
 +
 +==== _0x94538037EE44F5CF ====
 +<code cpp>void NETWORK::_0x94538037EE44F5CF(BOOL p0) // 0x94538037EE44F5CF 0x6B97075B b323</code>
 +
 +==== NETWORK_CACHE_LOCAL_PLAYER_HEAD_BLEND_DATA ====
 +<code cpp>void NETWORK::NETWORK_CACHE_LOCAL_PLAYER_HEAD_BLEND_DATA() // 0xBD0BE0BFC927EAC1 0x94AB35A9 b323</code>
 +
 +==== NETWORK_HAS_CACHED_PLAYER_HEAD_BLEND_DATA ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_CACHED_PLAYER_HEAD_BLEND_DATA(Player player) // 0x237D5336A9A54108 0x7B2A0337 b323</code>
 +
 +==== NETWORK_APPLY_CACHED_PLAYER_HEAD_BLEND_DATA ====
 +<code cpp>BOOL NETWORK::NETWORK_APPLY_CACHED_PLAYER_HEAD_BLEND_DATA(Ped ped, Player player) // 0x99B72C7ABDE5C910 0x99F58A07 b323</code>
 +
 +==== GET_NUM_COMMERCE_ITEMS ====
 +<code cpp>int NETWORK::GET_NUM_COMMERCE_ITEMS() // 0xF2EAC213D5EA0623 0x965EA007 b323</code>
 +
 +==== IS_COMMERCE_DATA_VALID ====
 +<code cpp>BOOL NETWORK::IS_COMMERCE_DATA_VALID() // 0xEA14EEF5B7CD2C30 0xEEFC8A55 b323</code>
 +
 +==== _0xB606E6CC59664972 ====
 +<code cpp>void NETWORK::_0xB606E6CC59664972(Any p0) // 0xB606E6CC59664972 0x866D1B67 b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0x1D4DC17C38FEAFF0 ====
 +<code cpp>BOOL NETWORK::_0x1D4DC17C38FEAFF0() // 0x1D4DC17C38FEAFF0 0xED4A272F b323</code>
 +
 +<code>IS_COMMERCE_*</code>
 +==== GET_COMMERCE_ITEM_ID ====
 +<code cpp>const char* NETWORK::GET_COMMERCE_ITEM_ID(int index) // 0x662635855957C411 0x4ACF110C b323</code>
 +
 +==== GET_COMMERCE_ITEM_NAME ====
 +<code cpp>const char* NETWORK::GET_COMMERCE_ITEM_NAME(int index) // 0xB4271092CA7EDF48 0x1AA3A0D5 b323</code>
 +
 +==== GET_COMMERCE_PRODUCT_PRICE ====
 +<code cpp>const char* NETWORK::GET_COMMERCE_PRODUCT_PRICE(int index) // 0xCA94551B50B4932C 0x37877757 b323</code>
 +
 +==== GET_COMMERCE_ITEM_NUM_CATS ====
 +<code cpp>int NETWORK::GET_COMMERCE_ITEM_NUM_CATS(int index) // 0x2A7776C709904AB0 0x1CF89DA5 b323</code>
 +
 +==== GET_COMMERCE_ITEM_CAT ====
 +<code cpp>const char* NETWORK::GET_COMMERCE_ITEM_CAT(int index, int index2) // 0x6F44CBF56D79FAC0 0x16E53875 b323</code>
 +
 +<code>index2 is unused</code>
 +==== OPEN_COMMERCE_STORE ====
 +<code cpp>void NETWORK::OPEN_COMMERCE_STORE(const char* p0, const char* p1, int p2) // 0x58C21165F6545892 0x365C50EE b323</code>
 +
 +==== IS_COMMERCE_STORE_OPEN ====
 +<code cpp>BOOL NETWORK::IS_COMMERCE_STORE_OPEN() // 0x2EAC52B4019E2782 0x25E2DBA9 b323</code>
 +
 +==== SET_STORE_ENABLED ====
 +<code cpp>void NETWORK::SET_STORE_ENABLED(BOOL toggle) // 0x9641A9FF718E9C5E 0xC1F6443B b323</code>
 +
 +<code>Access to the store for shark cards etc...</code>
 +==== REQUEST_COMMERCE_ITEM_IMAGE ====
 +<code cpp>BOOL NETWORK::REQUEST_COMMERCE_ITEM_IMAGE(int index) // 0xA2F952104FC6DD4B 0x1FDC75DC b323</code>
 +
 +==== RELEASE_ALL_COMMERCE_ITEM_IMAGES ====
 +<code cpp>void NETWORK::RELEASE_ALL_COMMERCE_ITEM_IMAGES() // 0x72D0706CD6CCDB58 0xCA7A0A49 b323</code>
 +
 +==== GET_COMMERCE_ITEM_TEXTURENAME ====
 +<code cpp>const char* NETWORK::GET_COMMERCE_ITEM_TEXTURENAME(int index) // 0x722F5D28B61C5EA8 0x44A58B0A b323</code>
 +
 +==== IS_STORE_AVAILABLE_TO_USER ====
 +<code cpp>BOOL NETWORK::IS_STORE_AVAILABLE_TO_USER() // 0x883D79C4071E18B3 0xD32FA11F b323</code>
 +
 +==== _0x265635150FB0D82E ====
 +<code cpp>void NETWORK::_0x265635150FB0D82E() // 0x265635150FB0D82E 0xA7FA70AE b323</code>
 +
 +==== _0x444C4525ECE0A4B9 ====
 +<code cpp>void NETWORK::_0x444C4525ECE0A4B9() // 0x444C4525ECE0A4B9 0xCC7DCE24 b323</code>
 +
 +<code>RESET_*
 +
 +sfink: related to: NETWORK_BAIL
 +NETWORK_BAIL_TRANSITION
 +NETWORK_JOIN_GROUP_ACTIVITY
 +NETWORK_JOIN_TRANSITION
 +NETWORK_LAUNCH_TRANSITION
 +NETWORK_SESSION_HOST
 +NETWORK_SESSION_HOST_CLOSED
 +NETWORK_SESSION_HOST_FRIENDS_ONLY
 +NETWORK_SESSION_HOST_SINGLE_PLAYER
 +NETWORK_SESSION_VOICE_LEAVE</code>
 +==== _0x59328EB08C5CEB2B ====
 +<code cpp>BOOL NETWORK::_0x59328EB08C5CEB2B() // 0x59328EB08C5CEB2B 0x70F6D3AD b323</code>
 +
 +<code>IS_*</code>
 +==== _0xFAE628F1E9ADB239 ====
 +<code cpp>void NETWORK::_0xFAE628F1E9ADB239(Hash p0, int p1, Hash p2) // 0xFAE628F1E9ADB239 0xD59A822B b323</code>
 +
 +==== _0x754615490A029508 ====
 +<code cpp>int NETWORK::_0x754615490A029508() // 0x754615490A029508  b1290</code>
 +
 +<code>Checks some commerce stuff</code>
 +==== _0x155467ACA0F55705 ====
 +<code cpp>int NETWORK::_0x155467ACA0F55705() // 0x155467ACA0F55705  b1290</code>
 +
 +<code>Checks some commerce stuff</code>
 +==== CLOUD_DELETE_MEMBER_FILE ====
 +<code cpp>int NETWORK::CLOUD_DELETE_MEMBER_FILE(const char* p0) // 0xC64DED7EF0D2FE37 0x2B7B57B3 b323</code>
 +
 +==== CLOUD_HAS_REQUEST_COMPLETED ====
 +<code cpp>BOOL NETWORK::CLOUD_HAS_REQUEST_COMPLETED(int handle) // 0x4C61B39930D045DA 0xBAF52DD8 b323</code>
 +
 +==== CLOUD_DID_REQUEST_SUCCEED ====
 +<code cpp>BOOL NETWORK::CLOUD_DID_REQUEST_SUCCEED(int handle) // 0x3A3D5568AF297CD5 0x9B9AFFF1 b323</code>
 +
 +==== CLOUD_CHECK_AVAILABILITY ====
 +<code cpp>void NETWORK::CLOUD_CHECK_AVAILABILITY() // 0x4F18196C8D38768D 0xC38E9DB0 b323</code>
 +
 +<code>Downloads prod.cloud.rockstargames.com/titles/gta5/[platform]/check.json</code>
 +==== CLOUD_IS_CHECKING_AVAILABILITY ====
 +<code cpp>BOOL NETWORK::CLOUD_IS_CHECKING_AVAILABILITY() // 0xC7ABAC5DE675EE3B 0x32A4EB22 b323</code>
 +
 +==== CLOUD_GET_AVAILABILITY_CHECK_RESULT ====
 +<code cpp>BOOL NETWORK::CLOUD_GET_AVAILABILITY_CHECK_RESULT() // 0x0B0CC10720653F3B 0x9262744C b323</code>
 +
 +==== _0x8B0C2964BA471961 ====
 +<code cpp>Any NETWORK::_0x8B0C2964BA471961() // 0x8B0C2964BA471961  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _0x88B588B41FF7868E ====
 +<code cpp>Any NETWORK::_0x88B588B41FF7868E() // 0x88B588B41FF7868E  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _0x67FC09BC554A75E5 ====
 +<code cpp>Any NETWORK::_0x67FC09BC554A75E5() // 0x67FC09BC554A75E5  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _CLEAR_LAUNCH_PARAMS ====
 +<code cpp>void NETWORK::_CLEAR_LAUNCH_PARAMS() // 0x966DD84FB6A46017  b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== UGC_COPY_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_COPY_CONTENT(Any* p0, Any* p1) // 0x152D90E4C1B4738A 0x08243B79 b323</code>
 +
 +==== _0x9FEDF86898F100E9 ====
 +<code cpp>Any NETWORK::_0x9FEDF86898F100E9() // 0x9FEDF86898F100E9 0x798D6C27 b323</code>
 +
 +==== UGC_HAS_CREATE_FINISHED ====
 +<code cpp>BOOL NETWORK::UGC_HAS_CREATE_FINISHED() // 0x5E24341A7F92A74B 0xE69E8D0D b323</code>
 +
 +==== _0x24E4E51FC16305F9 ====
 +<code cpp>Any NETWORK::_0x24E4E51FC16305F9() // 0x24E4E51FC16305F9 0x742075FE b323</code>
 +
 +==== UGC_GET_CREATE_RESULT ====
 +<code cpp>Any NETWORK::UGC_GET_CREATE_RESULT() // 0xFBC5E768C7A77A6A 0xCE569932 b323</code>
 +
 +==== UGC_GET_CREATE_CONTENT_ID ====
 +<code cpp>Any NETWORK::UGC_GET_CREATE_CONTENT_ID() // 0xC55A0B40FFB1ED23 0x82146BE9 b323</code>
 +
 +==== UGC_CLEAR_CREATE_RESULT ====
 +<code cpp>void NETWORK::UGC_CLEAR_CREATE_RESULT() // 0x17440AA15D1D3739 0x133FF2D5 b323</code>
 +
 +==== UGC_QUERY_MY_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_QUERY_MY_CONTENT(Any p0, Any p1, Any* p2, Any p3, Any p4, Any p5) // 0x9BF438815F5D96EA 0xCBA7242F b323</code>
 +
 +==== _0x692D58DF40657E8C ====
 +<code cpp>BOOL NETWORK::_0x692D58DF40657E8C(Any p0, Any p1, Any p2, Any* p3, Any p4, BOOL p5) // 0x692D58DF40657E8C  b323</code>
 +
 +==== UGC_QUERY_BY_CONTENT_ID ====
 +<code cpp>BOOL NETWORK::UGC_QUERY_BY_CONTENT_ID(const char* contentId, BOOL latestVersion, const char* contentTypeName) // 0x158EC424F35EC469 0xDED82A6E b323</code>
 +
 +==== UGC_QUERY_BY_CONTENT_IDS ====
 +<code cpp>BOOL NETWORK::UGC_QUERY_BY_CONTENT_IDS(Any* data, int count, BOOL latestVersion, const char* contentTypeName) // 0xC7397A83F7A2A462 0x47B3C35E b323</code>
 +
 +==== _UGC_QUERY_RECENTLY_CREATED_CONTENT ====
 +<code cpp>BOOL NETWORK::_UGC_QUERY_RECENTLY_CREATED_CONTENT(int offset, int count, const char* contentTypeName, int p3) // 0x6D4CB481FAC835E8 0x40CF0783 b323</code>
 +
 +==== UGC_GET_BOOKMARKED_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_GET_BOOKMARKED_CONTENT(Any p0, Any p1, Any* p2, Any* p3) // 0xD5A4B59980401588 0x4609D596 b323</code>
 +
 +==== UGC_GET_MY_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_GET_MY_CONTENT(Any p0, Any p1, Any* p2, Any* p3) // 0x3195F8DD0D531052 0x4C2C0D1F b323</code>
 +
 +==== UGC_GET_FRIEND_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_GET_FRIEND_CONTENT(Any p0, Any p1, Any* p2, Any* p3) // 0xF9E1CCAE8BA4C281 0x9EFBD5D1 b323</code>
 +
 +==== UGC_GET_CREW_CONTENT ====
 +<code cpp>BOOL NETWORK::UGC_GET_CREW_CONTENT(Any p0, Any p1, Any p2, Any* p3, Any* p4) // 0x9F6E2821885CAEE2 0xA6D8B798 b323</code>
 +
 +==== UGC_GET_GET_BY_CATEGORY ====
 +<code cpp>BOOL NETWORK::UGC_GET_GET_BY_CATEGORY(Any p0, Any p1, Any p2, Any* p3, Any* p4) // 0x678BB03C1A3BD51E 0x67E74842 b323</code>
 +
 +==== SET_BALANCE_ADD_MACHINE ====
 +<code cpp>BOOL NETWORK::SET_BALANCE_ADD_MACHINE(const char* contentId, const char* contentTypeName) // 0x815E5E3073DA1D67 0xE123C7AC b323</code>
 +
 +==== SET_BALANCE_ADD_MACHINES ====
 +<code cpp>BOOL NETWORK::SET_BALANCE_ADD_MACHINES(Any* data, int dataCount, const char* contentTypeName) // 0xB8322EEB38BE7C26 0x22C33603 b323</code>
 +
 +==== _0xA7862BC5ED1DFD7E ====
 +<code cpp>BOOL NETWORK::_0xA7862BC5ED1DFD7E(Any p0, Any p1, Any* p2, Any* p3) // 0xA7862BC5ED1DFD7E 0x37F5BD93 b323</code>
 +
 +==== _0x97A770BEEF227E2B ====
 +<code cpp>BOOL NETWORK::_0x97A770BEEF227E2B(Any p0, Any p1, Any* p2, Any* p3) // 0x97A770BEEF227E2B 0x1CFB3F51 b323</code>
 +
 +==== _0x5324A0E3E4CE3570 ====
 +<code cpp>BOOL NETWORK::_0x5324A0E3E4CE3570(Any p0, Any p1, Any* p2, Any* p3) // 0x5324A0E3E4CE3570 0x87D1E6BD b323</code>
 +
 +==== UGC_CANCEL_QUERY ====
 +<code cpp>void NETWORK::UGC_CANCEL_QUERY() // 0xE9B99B6853181409 0x021D5A94 b323</code>
 +
 +==== UGC_IS_GETTING ====
 +<code cpp>BOOL NETWORK::UGC_IS_GETTING() // 0xD53ACDBEF24A46E8 0x4908A514 b323</code>
 +
 +==== UGC_HAS_GET_FINISHED ====
 +<code cpp>BOOL NETWORK::UGC_HAS_GET_FINISHED() // 0x02ADA21EA2F6918F 0x50296140 b323</code>
 +
 +==== UGC_DID_GET_SUCCEED ====
 +<code cpp>Any NETWORK::UGC_DID_GET_SUCCEED() // 0x941E5306BCD7C2C7 0x3970B0DA b323</code>
 +
 +==== _0xC87E740D9F3872CC ====
 +<code cpp>Any NETWORK::_0xC87E740D9F3872CC() // 0xC87E740D9F3872CC 0xC1487110 b323</code>
 +
 +==== UGC_GET_QUERY_RESULT ====
 +<code cpp>Any NETWORK::UGC_GET_QUERY_RESULT() // 0xEDF7F927136C224B 0xCC2356E3 b323</code>
 +
 +==== UGC_GET_CONTENT_NUM ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_NUM() // 0xE0A6138401BCB837 0x2DE69817 b323</code>
 +
 +==== UGC_GET_CONTENT_TOTAL ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_TOTAL() // 0x769951E2455E2EB5 0x81BD8D3B b323</code>
 +
 +==== UGC_GET_CONTENT_HASH ====
 +<code cpp>Hash NETWORK::UGC_GET_CONTENT_HASH() // 0x3A17A27D75C74887 0x8E1D8F78 b323</code>
 +
 +==== UGC_CLEAR_QUERY_RESULTS ====
 +<code cpp>void NETWORK::UGC_CLEAR_QUERY_RESULTS() // 0xBA96394A0EECFA65 0x0D35DD93 b323</code>
 +
 +==== UGC_GET_CONTENT_USER_ID ====
 +<code cpp>const char* NETWORK::UGC_GET_CONTENT_USER_ID(int p0) // 0xCD67AD041A394C9C 0x8F3137E6 b323</code>
 +
 +==== _0x584770794D758C18 ====
 +<code cpp>BOOL NETWORK::_0x584770794D758C18(Any p0, Any* p1) // 0x584770794D758C18  b323</code>
 +
 +==== _0x8C8D2739BA44AF0F ====
 +<code cpp>BOOL NETWORK::_0x8C8D2739BA44AF0F(Any p0) // 0x8C8D2739BA44AF0F  b323</code>
 +
 +==== UGC_GET_CONTENT_USER_NAME ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_USER_NAME(Any p0) // 0x703F12425ECA8BF5 0xB9137BA7 b323</code>
 +
 +==== _0xAEAB987727C5A8A4 ====
 +<code cpp>BOOL NETWORK::_0xAEAB987727C5A8A4(Any p0) // 0xAEAB987727C5A8A4 0x9FEEAA9C b323</code>
 +
 +==== UGC_GET_CONTENT_CATEGORY ====
 +<code cpp>int NETWORK::UGC_GET_CONTENT_CATEGORY(int p0) // 0xA7BAB11E7C9C6C5A 0x5E8A7559 b323</code>
 +
 +==== UGC_GET_CONTENT_ID ====
 +<code cpp>const char* NETWORK::UGC_GET_CONTENT_ID(int p0) // 0x55AA95F481D694D2 0x331AEABF b323</code>
 +
 +<code>Return the mission id of a job.</code>
 +==== UGC_GET_ROOT_CONTENT_ID ====
 +<code cpp>const char* NETWORK::UGC_GET_ROOT_CONTENT_ID(int p0) // 0xC0173D6BFF4E0348 0x0E5E8E5C b323</code>
 +
 +<code>Return the root content id of a job.</code>
 +==== UGC_GET_CONTENT_NAME ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_NAME(Any p0) // 0xBF09786A7FCAB582 0xA5A0C695 b323</code>
 +
 +==== UGC_GET_CONTENT_DESCRIPTION_HASH ====
 +<code cpp>int NETWORK::UGC_GET_CONTENT_DESCRIPTION_HASH(Any p0) // 0x7CF0448787B23758 0x91534C6E b323</code>
 +
 +==== UGC_GET_CONTENT_PATH ====
 +<code cpp>const char* NETWORK::UGC_GET_CONTENT_PATH(int p0, int p1) // 0xBAF6BABF9E7CCC13 0x744A9EA5 b323</code>
 +
 +==== UGC_GET_CONTENT_UPDATED_DATE ====
 +<code cpp>void NETWORK::UGC_GET_CONTENT_UPDATED_DATE(Any p0, Any* p1) // 0xCFD115B373C0DF63 0xA19A238D b323</code>
 +
 +==== UGC_GET_CONTENT_FILE_VERSION ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_FILE_VERSION(Any p0, Any p1) // 0x37025B27D9B658B1 0xFF7D44E6 b323</code>
 +
 +==== _0x1D610EB0FEA716D9 ====
 +<code cpp>BOOL NETWORK::_0x1D610EB0FEA716D9(int p0) // 0x1D610EB0FEA716D9  b323</code>
 +
 +==== _0x7FCC39C46C3C03BD ====
 +<code cpp>BOOL NETWORK::_0x7FCC39C46C3C03BD(int p0) // 0x7FCC39C46C3C03BD  b323</code>
 +
 +==== UGC_GET_CONTENT_LANGUAGE ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_LANGUAGE(Any p0) // 0x32DD916F3F7C9672 0xA2C5BD9D b323</code>
 +
 +==== UGC_GET_CONTENT_IS_PUBLISHED ====
 +<code cpp>BOOL NETWORK::UGC_GET_CONTENT_IS_PUBLISHED(Any p0) // 0x3054F114121C21EA 0xA850DDE1 b323</code>
 +
 +==== UGC_GET_CONTENT_IS_VERIFIED ====
 +<code cpp>BOOL NETWORK::UGC_GET_CONTENT_IS_VERIFIED(Any p0) // 0xA9240A96C74CCA13 0x8F6754AE b323</code>
 +
 +==== UGC_GET_CONTENT_RATING ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_RATING(Any p0, Any p1) // 0x1ACCFBA3D8DAB2EE 0x1E34953F b323</code>
 +
 +==== UGC_GET_CONTENT_RATING_COUNT ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_RATING_COUNT(Any p0, Any p1) // 0x759299C5BB31D2A9 0x771FE190 b323</code>
 +
 +==== UGC_GET_CONTENT_RATING_POSITIVE_COUNT ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_RATING_POSITIVE_COUNT(Any p0, Any p1) // 0x87E5C46C187FE0AE 0x3276D9D3 b323</code>
 +
 +==== UGC_GET_CONTENT_RATING_NEGATIVE_COUNT ====
 +<code cpp>Any NETWORK::UGC_GET_CONTENT_RATING_NEGATIVE_COUNT(Any p0, Any p1) // 0x4E548C0D7AE39FF9 0x41A0FB02 b323</code>
 +
 +==== UGC_GET_CONTENT_HAS_PLAYER_RECORD ====
 +<code cpp>BOOL NETWORK::UGC_GET_CONTENT_HAS_PLAYER_RECORD(Any p0) // 0x70EA8DA57840F9BE 0x11DC0F27 b323</code>
 +
 +==== UGC_GET_CONTENT_HAS_PLAYER_BOOKMARKED ====
 +<code cpp>BOOL NETWORK::UGC_GET_CONTENT_HAS_PLAYER_BOOKMARKED(Any p0) // 0x993CBE59D350D225 0x0DEB3F5A b323</code>
 +
 +==== UGC_REQUEST_CONTENT_DATA_FROM_INDEX ====
 +<code cpp>int NETWORK::UGC_REQUEST_CONTENT_DATA_FROM_INDEX(int p0, int p1) // 0x171DF6A0C07FB3DC 0x84315226 b323</code>
 +
 +==== UGC_REQUEST_CONTENT_DATA_FROM_PARAMS ====
 +<code cpp>int NETWORK::UGC_REQUEST_CONTENT_DATA_FROM_PARAMS(const char* contentTypeName, const char* contentId, int p2, int p3, int p4) // 0x7FD2990AF016795E 0x38FC2EEB b323</code>
 +
 +==== UGC_REQUEST_CACHED_DESCRIPTION ====
 +<code cpp>int NETWORK::UGC_REQUEST_CACHED_DESCRIPTION(int p0) // 0x5E0165278F6339EE 0x1C4F9FDB b323</code>
 +
 +==== _0x2D5DC831176D0114 ====
 +<code cpp>BOOL NETWORK::_0x2D5DC831176D0114(Any p0) // 0x2D5DC831176D0114 0xA69AE16C b323</code>
 +
 +==== _0xEBFA8D50ADDC54C4 ====
 +<code cpp>BOOL NETWORK::_0xEBFA8D50ADDC54C4(Any p0) // 0xEBFA8D50ADDC54C4 0xF50BC67A b323</code>
 +
 +==== _0x162C23CA83ED0A62 ====
 +<code cpp>BOOL NETWORK::_0x162C23CA83ED0A62(Any p0) // 0x162C23CA83ED0A62 0xB3BBD241 b323</code>
 +
 +==== UGC_GET_CACHED_DESCRIPTION ====
 +<code cpp>Any NETWORK::UGC_GET_CACHED_DESCRIPTION(Any p0, Any p1) // 0x40F7E66472DF3E5C 0x70A2845C b323</code>
 +
 +==== _0x5A34CD9C3C5BEC44 ====
 +<code cpp>BOOL NETWORK::_0x5A34CD9C3C5BEC44(Any p0) // 0x5A34CD9C3C5BEC44 0x346B506C b323</code>
 +
 +==== _0x68103E2247887242 ====
 +<code cpp>void NETWORK::_0x68103E2247887242() // 0x68103E2247887242 0x0095DB71 b323</code>
 +
 +==== UGC_PUBLISH ====
 +<code cpp>BOOL NETWORK::UGC_PUBLISH(const char* contentId, const char* baseContentId, const char* contentTypeName) // 0x1DE0F5F50D723CAA 0xAD334B40 b323</code>
 +
 +==== UGC_SET_BOOKMARKED ====
 +<code cpp>BOOL NETWORK::UGC_SET_BOOKMARKED(const char* contentId, BOOL bookmarked, const char* contentTypeName) // 0x274A1519DFC1094F 0x980D45D7 b323</code>
 +
 +==== UGC_SET_DELETED ====
 +<code cpp>BOOL NETWORK::UGC_SET_DELETED(Any* p0, BOOL p1, Any* p2) // 0xD05D1A6C74DA3498 0x48CCC328 b323</code>
 +
 +==== _0x45E816772E93A9DB ====
 +<code cpp>Any NETWORK::_0x45E816772E93A9DB() // 0x45E816772E93A9DB 0x8E664EFD b323</code>
 +
 +==== UGC_HAS_MODIFY_FINISHED ====
 +<code cpp>BOOL NETWORK::UGC_HAS_MODIFY_FINISHED() // 0x299EF3C576773506 0x611E0BE2 b323</code>
 +
 +==== _0x793FF272D5B365F4 ====
 +<code cpp>Any NETWORK::_0x793FF272D5B365F4() // 0x793FF272D5B365F4 0xF0211AC1 b323</code>
 +
 +==== UGC_GET_MODIFY_RESULT ====
 +<code cpp>Any NETWORK::UGC_GET_MODIFY_RESULT() // 0x5A0A3D1A186A5508 0x1F0DD8AF b323</code>
 +
 +==== UGC_CLEAR_MODIFY_RESULT ====
 +<code cpp>void NETWORK::UGC_CLEAR_MODIFY_RESULT() // 0xA1E5E0204A6FCC70 0x405ECA16 b323</code>
 +
 +==== _0xB746D20B17F2A229 ====
 +<code cpp>BOOL NETWORK::_0xB746D20B17F2A229(Any* p0, Any* p1) // 0xB746D20B17F2A229 0x9567392B b323</code>
 +
 +==== _0x63B406D7884BFA95 ====
 +<code cpp>Any NETWORK::_0x63B406D7884BFA95() // 0x63B406D7884BFA95 0xF79FFF3C b323</code>
 +
 +==== _0x4D02279C83BE69FE ====
 +<code cpp>Any NETWORK::_0x4D02279C83BE69FE() // 0x4D02279C83BE69FE 0xA7F3F82B b323</code>
 +
 +==== UGC_GET_CREATOR_NUM ====
 +<code cpp>Any NETWORK::UGC_GET_CREATOR_NUM() // 0x597F8DBA9B206FC7 0x410C61D1 b323</code>
 +
 +==== UGC_POLICIES_MAKE_PRIVATE ====
 +<code cpp>BOOL NETWORK::UGC_POLICIES_MAKE_PRIVATE(Any p0) // 0x5CAE833B0EE0C500 0x0D4F845D b323</code>
 +
 +==== UGC_CLEAR_OFFLINE_QUERY ====
 +<code cpp>void NETWORK::UGC_CLEAR_OFFLINE_QUERY() // 0x61A885D3F7CFEE9A 0xE13C1F7F b323</code>
 +
 +==== UGC_SET_QUERY_DATA_FROM_OFFLINE ====
 +<code cpp>void NETWORK::UGC_SET_QUERY_DATA_FROM_OFFLINE(BOOL p0) // 0xF98DDE0A8ED09323 0x213C6D36 b323</code>
 +
 +==== _0xFD75DABC0957BF33 ====
 +<code cpp>void NETWORK::_0xFD75DABC0957BF33(BOOL p0) // 0xFD75DABC0957BF33 0x511E6F50 b323</code>
 +
 +==== UGC_IS_LANGUAGE_SUPPORTED ====
 +<code cpp>BOOL NETWORK::UGC_IS_LANGUAGE_SUPPORTED(Any p0) // 0xF53E48461B71EECB 0xB4668B23 b323</code>
 +
 +==== _FACEBOOK_SET_HEIST_COMPLETE ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_SET_HEIST_COMPLETE(const char* heistName, int cashEarned, int xpEarned) // 0x098AB65B9ED9A9EC 0x30B51753 b323</code>
 +
 +==== _FACEBOOK_SET_CREATE_CHARACTER_COMPLETE ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_SET_CREATE_CHARACTER_COMPLETE() // 0xDC48473142545431 0x02DAD93F b323</code>
 +
 +==== _FACEBOOK_SET_MILESTONE_COMPLETE ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_SET_MILESTONE_COMPLETE(int milestoneId) // 0x0AE1F1653B554AB9 0x2D947814 b323</code>
 +
 +==== _FACEBOOK_IS_SENDING_DATA ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_IS_SENDING_DATA() // 0x62B9FEC9A11F10EF 0x37A28C26 b323</code>
 +
 +==== _FACEBOOK_DO_UNK_CHECK ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_DO_UNK_CHECK() // 0xA75E2B6733DA5142 0x11E8B5CD b323</code>
 +
 +==== _FACEBOOK_IS_AVAILABLE ====
 +<code cpp>BOOL NETWORK::_FACEBOOK_IS_AVAILABLE() // 0x43865688AE10F0D7 0x429AEAB3 b323</code>
 +
 +==== TEXTURE_DOWNLOAD_REQUEST ====
 +<code cpp>int NETWORK::TEXTURE_DOWNLOAD_REQUEST(int* PlayerHandle, const char* FilePath, const char* Name, BOOL p3) // 0x16160DA74A8E74A2 0xAD546CC3 b323</code>
 +
 +==== TITLE_TEXTURE_DOWNLOAD_REQUEST ====
 +<code cpp>int NETWORK::TITLE_TEXTURE_DOWNLOAD_REQUEST(const char* FilePath, const char* Name, BOOL p2) // 0x0B203B4AFDE53A4F 0x1856D008 b323</code>
 +
 +==== UGC_TEXTURE_DOWNLOAD_REQUEST ====
 +<code cpp>Any NETWORK::UGC_TEXTURE_DOWNLOAD_REQUEST(Any* p0, Any p1, Any p2, Any p3, Any* p4, BOOL p5) // 0x308F96458B7087CC 0x68C9AF69 b323</code>
 +
 +==== TEXTURE_DOWNLOAD_RELEASE ====
 +<code cpp>void NETWORK::TEXTURE_DOWNLOAD_RELEASE(int p0) // 0x487EB90B98E9FB19 0xEE8D9E70 b323</code>
 +
 +==== TEXTURE_DOWNLOAD_HAS_FAILED ====
 +<code cpp>BOOL NETWORK::TEXTURE_DOWNLOAD_HAS_FAILED(int p0) // 0x5776ED562C134687 0xE4547765 b323</code>
 +
 +==== TEXTURE_DOWNLOAD_GET_NAME ====
 +<code cpp>const char* NETWORK::TEXTURE_DOWNLOAD_GET_NAME(int p0) // 0x3448505B6E35262D 0xA40EF65A b323</code>
 +
 +==== GET_STATUS_OF_TEXTURE_DOWNLOAD ====
 +<code cpp>int NETWORK::GET_STATUS_OF_TEXTURE_DOWNLOAD(int p0) // 0x8BD6C6DEA20E82C6 0x03225BA3 b323</code>
 +
 +<code>0 = succeeded
 +1 = pending
 +2 = failed</code>
 +==== _0x60EDD13EB3AC1FF3 ====
 +<code cpp>BOOL NETWORK::_0x60EDD13EB3AC1FF3() // 0x60EDD13EB3AC1FF3 0x4DEBC227 b323</code>
 +
 +<code>Returns true if profile setting 901 is set to true and sets it to false.
 +
 +NETWORK_C*</code>
 +==== _NETWORK_SHOULD_SHOW_CONNECTIVITY_TROUBLESHOOTING ====
 +<code cpp>BOOL NETWORK::_NETWORK_SHOULD_SHOW_CONNECTIVITY_TROUBLESHOOTING() // 0x82A2B386716608F1  b393</code>
 +
 +<code>Returns true if the NAT type is Strict (3) and a certain number of connections have failed.</code>
 +==== NETWORK_IS_CABLE_CONNECTED ====
 +<code cpp>BOOL NETWORK::NETWORK_IS_CABLE_CONNECTED() // 0xEFFB25453D8600F9 0x5C065D55 b323</code>
 +
 +==== _NETWORK_GET_ROS_PRIVILEGE_9 ====
 +<code cpp>BOOL NETWORK::_NETWORK_GET_ROS_PRIVILEGE_9() // 0x66B59CFFD78467AF 0x0CA1167F b323</code>
 +
 +==== NETWORK_HAVE_ROS_SOCIAL_CLUB_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ROS_SOCIAL_CLUB_PRIV() // 0x606E4D3E3CCCF3EB 0x424C6E27 b323</code>
 +
 +==== NETWORK_HAVE_ROS_BANNED_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ROS_BANNED_PRIV() // 0x8020A73847E0CA7D 0xD3BBE42F b323</code>
 +
 +==== NETWORK_HAVE_ROS_CREATE_TICKET_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ROS_CREATE_TICKET_PRIV() // 0xA0AD7E2AF5349F61 0xBDBB5948 b323</code>
 +
 +==== NETWORK_HAVE_ROS_MULTIPLAYER_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ROS_MULTIPLAYER_PRIV() // 0x5F91D5D0B36AA310 0x97287D68 b323</code>
 +
 +==== NETWORK_HAVE_ROS_LEADERBOARD_WRITE_PRIV ====
 +<code cpp>BOOL NETWORK::NETWORK_HAVE_ROS_LEADERBOARD_WRITE_PRIV() // 0x422D396F80A96547 0xC6EA802E b323</code>
 +
 +==== NETWORK_HAS_ROS_PRIVILEGE ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_ROS_PRIVILEGE(int index) // 0xA699957E60D80214 0xFD261E30 b323</code>
 +
 +<code>index is always 18 in scripts</code>
 +==== NETWORK_HAS_ROS_PRIVILEGE_END_DATE ====
 +<code cpp>BOOL NETWORK::NETWORK_HAS_ROS_PRIVILEGE_END_DATE(int privilege, int* banType, Any* timeData) // 0xC22912B1D85F26B1 0x8570DD34 b323</code>
 +
 +==== _NETWORK_GET_ROS_PRIVILEGE_24 ====
 +<code cpp>BOOL NETWORK::_NETWORK_GET_ROS_PRIVILEGE_24() // 0x593570C289A77688  b323</code>
 +
 +==== _NETWORK_GET_ROS_PRIVILEGE_25 ====
 +<code cpp>BOOL NETWORK::_NETWORK_GET_ROS_PRIVILEGE_25() // 0x91B87C55093DE351  b323</code>
 +
 +==== _0x36391F397731595D ====
 +<code cpp>Any NETWORK::_0x36391F397731595D(Any p0) // 0x36391F397731595D  b323</code>
 +
 +==== NETWORK_START_USER_CONTENT_PERMISSIONS_CHECK ====
 +<code cpp>int NETWORK::NETWORK_START_USER_CONTENT_PERMISSIONS_CHECK(Any* netHandle) // 0xDEB2B99A1AF1A2A6  b323</code>
 +
 +<code>Always returns -1. Seems to be XB1 specific.</code>
 +==== _0x9465E683B12D3F6B ====
 +<code cpp>void NETWORK::_0x9465E683B12D3F6B() // 0x9465E683B12D3F6B 0x273C6180 b323</code>
 +
 +==== _0xCA59CCAE5D01E4CE ====
 +<code cpp>void NETWORK::_0xCA59CCAE5D01E4CE() // 0xCA59CCAE5D01E4CE  b1734</code>
 +
 +<code>NETWORK_S*</code>
 +==== _NETWORK_HAS_GAME_BEEN_ALTERED ====
 +<code cpp>BOOL NETWORK::_NETWORK_HAS_GAME_BEEN_ALTERED() // 0x659CF2EF7F550C4F  b1011</code>
 +
 +<code>Returns true if dinput8.dll is present in the game directory.
 +You will get following error message if that is true: "You are attempting to access GTA Online servers with an altered version of the game."</code>
 +==== _NETWORK_UPDATE_PLAYER_SCARS ====
 +<code cpp>void NETWORK::_NETWORK_UPDATE_PLAYER_SCARS() // 0xB7C7F6AD6424304B 0x371BBA08 b323</code>
 +
 +==== NETWORK_DISABLE_LEAVE_REMOTE_PED_BEHIND ====
 +<code cpp>void NETWORK::NETWORK_DISABLE_LEAVE_REMOTE_PED_BEHIND(BOOL toggle) // 0xC505036A35AFD01B 0xA100CC97 b323</code>
 +
 +==== _NETWORK_ALLOW_LOCAL_ENTITY_ATTACHMENT ====
 +<code cpp>void NETWORK::_NETWORK_ALLOW_LOCAL_ENTITY_ATTACHMENT(Entity entity, BOOL toggle) // 0x267C78C60E806B9A 0xBB2D33D3 b323</code>
 +
 +==== _0x6BFF5F84102DF80A ====
 +<code cpp>void NETWORK::_0x6BFF5F84102DF80A(Player player) // 0x6BFF5F84102DF80A  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0x5C497525F803486B ====
 +<code cpp>void NETWORK::_0x5C497525F803486B() // 0x5C497525F803486B  b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== _0x6FB7BB3607D27FA2 ====
 +<code cpp>Any NETWORK::_0x6FB7BB3607D27FA2() // 0x6FB7BB3607D27FA2  b323</code>
 +
 +<code>MulleDK19: This function is hard-coded to always return 0.</code>
 +==== _0x45A83257ED02D9BC ====
 +<code cpp>void NETWORK::_0x45A83257ED02D9BC() // 0x45A83257ED02D9BC  b323</code>
 +
 +==== _0x16D3D49902F697BB ====
 +<code cpp>BOOL NETWORK::_0x16D3D49902F697BB(Player player) // 0x16D3D49902F697BB  b323</code>
 +
 +<code>NETWORK_IS_*</code>
 +==== _0xD414BE129BB81B32 ====
 +<code cpp>float NETWORK::_0xD414BE129BB81B32(Player player) // 0xD414BE129BB81B32  b323</code>
 +
 +==== _0x0E3A041ED6AC2B45 ====
 +<code cpp>float NETWORK::_0x0E3A041ED6AC2B45(Player player) // 0x0E3A041ED6AC2B45  b323</code>
 +
 +<code>alias 0xD414BE129BB81B32</code>
 +==== _0x350C23949E43686C ====
 +<code cpp>float NETWORK::_0x350C23949E43686C(Player player) // 0x350C23949E43686C  b323</code>
 +
 +<code>NETWORK_GET_*</code>
 +==== _NETWORK_GET_NUM_UNACKED_FOR_PLAYER ====
 +<code cpp>int NETWORK::_NETWORK_GET_NUM_UNACKED_FOR_PLAYER(Player player) // 0xFF8FCF9FFC458A1C  b323</code>
 +
 +==== _NETWORK_GET_UNRELIABLE_RESEND_COUNT_FOR_PLAYER ====
 +<code cpp>int NETWORK::_NETWORK_GET_UNRELIABLE_RESEND_COUNT_FOR_PLAYER(Player player) // 0x3765C3A3E8192E10  b323</code>
 +
 +==== _NETWORK_GET_OLDEST_RESEND_COUNT_FOR_PLAYER ====
 +<code cpp>int NETWORK::_NETWORK_GET_OLDEST_RESEND_COUNT_FOR_PLAYER(Player player) // 0x52C1EADAF7B10302  b323</code>
 +
 +<code>NETWORK_GET_*</code>
 +==== _NETWORK_REPORT_MYSELF ====
 +<code cpp>void NETWORK::_NETWORK_REPORT_MYSELF() // 0x5626D9D6810730D5  b350</code>
 +
 +==== _0x64D779659BC37B19 ====
 +<code cpp>Vector3 NETWORK::_0x64D779659BC37B19(Entity entity) // 0x64D779659BC37B19  b393</code>
 +
 +<code>NETWORK_GET_*</code>
 +==== _NETWORK_GET_PLAYER_COORDS ====
 +<code cpp>Vector3 NETWORK::_NETWORK_GET_PLAYER_COORDS(Player player) // 0x125E6D638B8605D4  b393</code>
 +
 +<code>Returns the coordinates of another player.
 +Does not work if you enter your own player id as p0 (will return `(0.0, 0.0, 0.0)` in that case).</code>
 +==== _0x33DE49EDF4DDE77A ====
 +<code cpp>Vector3 NETWORK::_0x33DE49EDF4DDE77A(Entity entity) // 0x33DE49EDF4DDE77A  b1103</code>
 +
 +<code>NETWORK_GET_*</code>
 +==== _0xAA5FAFCD2C5F5E47 ====
 +<code cpp>Vector3 NETWORK::_0xAA5FAFCD2C5F5E47(Entity entity) // 0xAA5FAFCD2C5F5E47  b1103</code>
 +
 +<code>NETWORK_GET_P*</code>
 +==== _0xAEDF1BC1C133D6E3 ====
 +<code cpp>Any NETWORK::_0xAEDF1BC1C133D6E3() // 0xAEDF1BC1C133D6E3  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0x2555CF7DA5473794 ====
 +<code cpp>Any NETWORK::_0x2555CF7DA5473794() // 0x2555CF7DA5473794  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0x6FD992C4A1C1B986 ====
 +<code cpp>Any NETWORK::_0x6FD992C4A1C1B986() // 0x6FD992C4A1C1B986  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _0xDB663CC9FF3407A9 ====
 +<code cpp>int NETWORK::_0xDB663CC9FF3407A9(Player player) // 0xDB663CC9FF3407A9  b1734</code>
 +
 +
 +===== OBJECT =====
 +==== CREATE_OBJECT ====
 +<code cpp>Object OBJECT::CREATE_OBJECT(Hash modelHash, float x, float y, float z, BOOL isNetwork, BOOL bScriptHostObj, BOOL dynamic) // 0x509D5878EB39E842 0x2F7AA05C b323</code>
 +
 +==== CREATE_OBJECT_NO_OFFSET ====
 +<code cpp>Object OBJECT::CREATE_OBJECT_NO_OFFSET(Hash modelHash, float x, float y, float z, BOOL isNetwork, BOOL bScriptHostObj, BOOL dynamic) // 0x9A294B2138ABB884 0x58040420 b323</code>
 +
 +==== DELETE_OBJECT ====
 +<code cpp>void OBJECT::DELETE_OBJECT(Object* object) // 0x539E0AE3E6634B9F 0xD6EF9DA7 b323</code>
 +
 +<code>Deletes the specified object, then sets the handle pointed to by the pointer to NULL.</code>
 +==== PLACE_OBJECT_ON_GROUND_PROPERLY ====
 +<code cpp>BOOL OBJECT::PLACE_OBJECT_ON_GROUND_PROPERLY(Object object) // 0x58A850EAEE20FAA3 0x8F95A20B b323</code>
 +
 +==== _PLACE_OBJECT_ON_GROUND_PROPERLY_2 ====
 +<code cpp>BOOL OBJECT::_PLACE_OBJECT_ON_GROUND_PROPERLY_2(Object object) // 0xD76EEEF746057FD6  b505</code>
 +
 +==== _0xAFE24E4D29249E4A ====
 +<code cpp>BOOL OBJECT::_0xAFE24E4D29249E4A(Object object, float p1, float p2, BOOL p3) // 0xAFE24E4D29249E4A  b1734</code>
 +
 +==== SLIDE_OBJECT ====
 +<code cpp>BOOL OBJECT::SLIDE_OBJECT(Object object, float toX, float toY, float toZ, float speedX, float speedY, float speedZ, BOOL collision) // 0x2FDFF4107B8C1147 0x63BFA7A0 b323</code>
 +
 +<code>Returns true if the object has finished moving.
 +
 +If false, moves the object towards the specified X, Y and Z coordinates with the specified X, Y and Z speed.
 +
 +See also: https://gtagmodding.com/opcode-database/opcode/034E/
 +Has to be looped until it returns true.</code>
 +==== SET_OBJECT_TARGETTABLE ====
 +<code cpp>void OBJECT::SET_OBJECT_TARGETTABLE(Object object, BOOL targettable) // 0x8A7391690F5AFD81 0x3F88CD86 b323</code>
 +
 +==== _SET_OBJECT_SOMETHING ====
 +<code cpp>void OBJECT::_SET_OBJECT_SOMETHING(Object object, BOOL p1) // 0x77F33F2CCF64B3AA 0x483C5C88 b323</code>
 +
 +==== GET_CLOSEST_OBJECT_OF_TYPE ====
 +<code cpp>Object OBJECT::GET_CLOSEST_OBJECT_OF_TYPE(float x, float y, float z, float radius, Hash modelHash, BOOL isMission, BOOL p6, BOOL p7) // 0xE143FA2249364369 0x45619B33 b323</code>
 +
 +<code>Has 8 params in the latest patches.
 +
 +isMission - if true doesn't return mission objects</code>
 +==== HAS_OBJECT_BEEN_BROKEN ====
 +<code cpp>BOOL OBJECT::HAS_OBJECT_BEEN_BROKEN(Object object, Any p1) // 0x8ABFB70C49CC43E2 0xFE21F891 b323</code>
 +
 +==== HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_BROKEN ====
 +<code cpp>BOOL OBJECT::HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_BROKEN(float p0, float p1, float p2, float p3, Hash modelHash, Any p5) // 0x761B0E69AC4D007E 0x6FC0353D b323</code>
 +
 +==== HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_COMPLETELY_DESTROYED ====
 +<code cpp>BOOL OBJECT::HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_COMPLETELY_DESTROYED(float x, float y, float z, float radius, Hash modelHash, BOOL p5) // 0x46494A2475701343 0x7DB578DD b323</code>
 +
 +==== _0x2542269291C6AC84 ====
 +<code cpp>Any OBJECT::_0x2542269291C6AC84(Any p0) // 0x2542269291C6AC84  b1180</code>
 +
 +==== _GET_OBJECT_OFFSET_FROM_COORDS ====
 +<code cpp>Vector3 OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(float xPos, float yPos, float zPos, float heading, float xOffset, float yOffset, float zOffset) // 0x163E252DE035A133 0x87A42A12 b323</code>
 +
 +==== GET_COORDS_AND_ROTATION_OF_CLOSEST_OBJECT_OF_TYPE ====
 +<code cpp>Any OBJECT::GET_COORDS_AND_ROTATION_OF_CLOSEST_OBJECT_OF_TYPE(float x, float y, float z, float radius, Hash modelHash, Vector3* outPosition, Vector3* outRotation, int rotationOrder) // 0x163F8B586BC95F2A 0x65213FC3 b323</code>
 +
 +==== SET_STATE_OF_CLOSEST_DOOR_OF_TYPE ====
 +<code cpp>void OBJECT::SET_STATE_OF_CLOSEST_DOOR_OF_TYPE(Hash type, float x, float y, float z, BOOL locked, float heading, BOOL p6) // 0xF82D8F1926A02C3D 0x38C951A4 b323</code>
 +
 +<code>Hardcoded to not work in multiplayer.
 +
 +
 +Used to lock/unlock doors to interior areas of the game.
 +
 +(Possible) Door Types:
 +
 +pastebin.com/9S2m3qA4
 +
 +Heading is either 1, 0 or -1 in the scripts. Means default closed(0) or opened either into(1) or out(-1) of the interior.
 +Locked means that the heading is locked.  
 +p6 is always 0. 
 +
 +225 door types, model names and coords found in stripclub.c4:
 +pastebin.com/gywnbzsH
 +
 +get door info: pastebin.com/i14rbekD</code>
 +==== GET_STATE_OF_CLOSEST_DOOR_OF_TYPE ====
 +<code cpp>void OBJECT::GET_STATE_OF_CLOSEST_DOOR_OF_TYPE(Hash type, float x, float y, float z, BOOL* locked, float* heading) // 0xEDC1A5B84AEF33FF 0x4B44A83D b323</code>
 +
 +<code>locked is 0 if no door is found
 +locked is 0 if door is unlocked
 +locked is 1 if door is found and unlocked.
 +
 +-------------
 +the locked bool is either 0(unlocked)(false) or 1(locked)(true)</code>
 +==== _DOOR_CONTROL ====
 +<code cpp>void OBJECT::_DOOR_CONTROL(Hash modelHash, float x, float y, float z, BOOL locked, float xRotMult, float yRotMult, float zRotMult) // 0x9B12F9A24FABEDB0 0x4E0A260B b323</code>
 +
 +<code>Hardcoded not to work in multiplayer environments.
 +When you set locked to 0 the door open and to 1 the door close
 +OBJECT::_9B12F9A24FABEDB0(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 0, 0.0, 50.0, 0);  //door open
 +
 +OBJECT::_9B12F9A24FABEDB0(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 1, 0.0, 50.0, 0);  //door close</code>
 +==== _0x006E4B040ED37EC3 ====
 +<code cpp>void OBJECT::_0x006E4B040ED37EC3(Any p0) // 0x006E4B040ED37EC3  b1868</code>
 +
 +==== ADD_DOOR_TO_SYSTEM ====
 +<code cpp>void OBJECT::ADD_DOOR_TO_SYSTEM(Hash doorHash, Hash modelHash, float x, float y, float z, BOOL p5, BOOL scriptDoor, BOOL isLocal) // 0x6F8838D03D1DC226 0x9D2D778D b323</code>
 +
 +<code>doorHash has to be unique. scriptDoor false; relies upon getNetworkGameScriptHandler. isLocal On true disables the creation CRequestDoorEvent's in DOOR_SYSTEM_SET_DOOR_STATE.
 +p5 only set to true in single player native scripts.
 +If scriptDoor is true, register the door on the script handler host (note: there's a hardcap on the number of script IDs that can be added to the system at a given time). If scriptDoor and isLocal are both false, the door is considered to be in a "Persists w/o netobj" state.
 +
 +door hashes normally look like PROP_[int]_DOOR_[int] for interior doors and PROP_BUILDING_[int]_DOOR_[int] exterior doors but you can just make up your own hash if you want
 +All doors need to be registered with ADD_DOOR_TO_SYSTEM before they can be manipulated with the door natives and the easiest way to get door models is just find the door in codewalker.
 +
 +Example: AddDoorToSystem("PROP_43_DOOR_0", "hei_v_ilev_fh_heistdoor2", -1456.818, -520.5037, 69.67043, 0, 0, 0)</code>
 +==== REMOVE_DOOR_FROM_SYSTEM ====
 +<code cpp>void OBJECT::REMOVE_DOOR_FROM_SYSTEM(Hash doorHash) // 0x464D8E1427156FE4 0x00253286 b323</code>
 +
 +<code>CDoor and CDoorSystemData still internally allocated (and their associations between doorHash, modelHash, and coordinates).
 +Only its NetObj removed and flag ``*(v2 + 192) |= 8u`` (1604 retail) toggled.</code>
 +==== DOOR_SYSTEM_SET_DOOR_STATE ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_DOOR_STATE(Hash doorHash, int state, BOOL requestDoor, BOOL forceUpdate) // 0x6BAB9442830C7F53 0xDF83DB47 b323</code>
 +
 +<code>Lockstates not applied and CNetObjDoor's not created until DOOR_SYSTEM_GET_IS_PHYSICS_LOADED returns true.
 +`requestDoor` on true, and when door system is configured to, i.e., "persists w/o netobj", generate a CRequestDoorEvent.
 +`forceUpdate` on true, forces an update on the door system (same path as netObjDoor_applyDoorStuff)
 +Door lock states:
 +0: UNLOCKED
 +1: LOCKED
 +2: DOORSTATE_FORCE_LOCKED_UNTIL_OUT_OF_AREA
 +3: DOORSTATE_FORCE_UNLOCKED_THIS_FRAME
 +4: DOORSTATE_FORCE_LOCKED_THIS_FRAME
 +5: DOORSTATE_FORCE_OPEN_THIS_FRAME
 +6: DOORSTATE_FORCE_CLOSED_THIS_FRAME</code>
 +==== DOOR_SYSTEM_GET_DOOR_STATE ====
 +<code cpp>int OBJECT::DOOR_SYSTEM_GET_DOOR_STATE(Hash doorHash) // 0x160AA1B32F6139B8 0xD42A41C2 b323</code>
 +
 +==== DOOR_SYSTEM_GET_DOOR_PENDING_STATE ====
 +<code cpp>int OBJECT::DOOR_SYSTEM_GET_DOOR_PENDING_STATE(Hash doorHash) // 0x4BC2854478F3A749 0xD649B7E1 b323</code>
 +
 +==== DOOR_SYSTEM_SET_AUTOMATIC_RATE ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_AUTOMATIC_RATE(Hash doorHash, float rate, BOOL requestDoor, BOOL forceUpdate) // 0x03C27E13B42A0E82 0x4F44AF21 b323</code>
 +
 +<code>Includes networking check: ownership vs. or the door itself **isn't** networked.
 +`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.</code>
 +==== DOOR_SYSTEM_SET_AUTOMATIC_DISTANCE ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_AUTOMATIC_DISTANCE(Hash doorHash, float distance, BOOL requestDoor, BOOL forceUpdate) // 0x9BA001CB45CBF627 0x47531446 b323</code>
 +
 +<code>`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.</code>
 +==== DOOR_SYSTEM_SET_OPEN_RATIO ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_OPEN_RATIO(Hash doorHash, float ajar, BOOL requestDoor, BOOL forceUpdate) // 0xB6E6FBA95C7324AC 0x34883DE3 b323</code>
 +
 +<code>Sets the ajar angle of a door.
 +Ranges from -1.0 to 1.0, and 0.0 is closed / default.
 +`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.</code>
 +==== _0xE851471AEFC3374F ====
 +<code cpp>Any OBJECT::_0xE851471AEFC3374F(Any p0) // 0xE851471AEFC3374F  b1868</code>
 +
 +==== DOOR_SYSTEM_GET_OPEN_RATIO ====
 +<code cpp>float OBJECT::DOOR_SYSTEM_GET_OPEN_RATIO(Hash doorHash) // 0x65499865FCA6E5EC 0xB74C3BD7 b323</code>
 +
 +==== DOOR_SYSTEM_SET_SPRING_REMOVED ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_SPRING_REMOVED(Hash doorHash, BOOL removed, BOOL requestDoor, BOOL forceUpdate) // 0xC485E07E4F0B7958 0xB4A9A558 b323</code>
 +
 +<code>Includes networking check: ownership vs. or the door itself **isn't** networked.
 +`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.</code>
 +==== DOOR_SYSTEM_SET_HOLD_OPEN ====
 +<code cpp>void OBJECT::DOOR_SYSTEM_SET_HOLD_OPEN(Hash doorHash, BOOL toggle) // 0xD9B71952F78A2640 0xECE58AE0 b323</code>
 +
 +<code>Includes networking check: ownership vs. or the door itself **isn't** networked.</code>
 +==== _0xA85A21582451E951 ====
 +<code cpp>void OBJECT::_0xA85A21582451E951(Hash doorHash, BOOL p1) // 0xA85A21582451E951 0xF736227C b323</code>
 +
 +<code>Some property related to gates. Native name between ``DOOR_SYSTEM_SET_AUTOMATIC_RATE`` and ``DOOR_SYSTEM_SET_DOOR_STATE``.</code>
 +==== IS_DOOR_REGISTERED_WITH_SYSTEM ====
 +<code cpp>BOOL OBJECT::IS_DOOR_REGISTERED_WITH_SYSTEM(Hash doorHash) // 0xC153C43EA202C8C1 0x5AFCD8A1 b323</code>
 +
 +<code>if (OBJECT::IS_DOOR_REGISTERED_WITH_SYSTEM(doorHash)) 
 +{
 +    OBJECT::REMOVE_DOOR_FROM_SYSTEM(doorHash);
 +}</code>
 +==== IS_DOOR_CLOSED ====
 +<code cpp>BOOL OBJECT::IS_DOOR_CLOSED(Hash doorHash) // 0xC531EE8A1145A149 0x48659CD7 b323</code>
 +
 +==== _0xC7F29CA00F46350E ====
 +<code cpp>void OBJECT::_0xC7F29CA00F46350E(BOOL p0) // 0xC7F29CA00F46350E 0x9BF33E41 b323</code>
 +
 +==== _0x701FDA1E82076BA4 ====
 +<code cpp>void OBJECT::_0x701FDA1E82076BA4() // 0x701FDA1E82076BA4 0xF592AD10 b323</code>
 +
 +<code>Clears the fields sets by 0xC7F29CA00F46350E (1604 retail: 0x1424A7A10, 0x1424A7A11) and iterates over the global CDoor's bucket-list.
 +Related to its "Pre-networked state"?</code>
 +==== DOOR_SYSTEM_GET_IS_PHYSICS_LOADED ====
 +<code cpp>BOOL OBJECT::DOOR_SYSTEM_GET_IS_PHYSICS_LOADED(Any p0) // 0xDF97CDD4FC08FD34 0x17FF9393 b323</code>
 +
 +==== DOOR_SYSTEM_FIND_EXISTING_DOOR ====
 +<code cpp>BOOL OBJECT::DOOR_SYSTEM_FIND_EXISTING_DOOR(float x, float y, float z, Hash modelHash, Hash* outDoorHash) // 0x589F80B325CC82C5 0xE9AE494F b323</code>
 +
 +<code>Search radius: 0.5</code>
 +==== IS_GARAGE_EMPTY ====
 +<code cpp>BOOL OBJECT::IS_GARAGE_EMPTY(Hash garageHash, BOOL p1, int p2) // 0x90E47239EA1980B8 0xA8B37DEA b323</code>
 +
 +==== IS_PLAYER_ENTIRELY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::IS_PLAYER_ENTIRELY_INSIDE_GARAGE(Hash garageHash, Player player, float p2, int p3) // 0x024A60DEB0EA69F0 0xC33ED360 b323</code>
 +
 +==== IS_PLAYER_PARTIALLY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::IS_PLAYER_PARTIALLY_INSIDE_GARAGE(Hash garageHash, Player player, int p2) // 0x1761DC5D8471CBAA 0x41924877 b323</code>
 +
 +==== ARE_ENTITIES_ENTIRELY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::ARE_ENTITIES_ENTIRELY_INSIDE_GARAGE(Hash garageHash, BOOL p1, BOOL p2, BOOL p3, Any p4) // 0x85B6C850546FDDE2 0x4BD59750 b323</code>
 +
 +==== IS_ANY_ENTITY_ENTIRELY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::IS_ANY_ENTITY_ENTIRELY_INSIDE_GARAGE(Hash garageHash, BOOL p1, BOOL p2, BOOL p3, Any p4) // 0x673ED815D6E323B7 0x7B44D659 b323</code>
 +
 +==== IS_OBJECT_ENTIRELY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_ENTIRELY_INSIDE_GARAGE(Hash garageHash, Entity entity, float p2, int p3) // 0x372EF6699146A1E4 0x142C8F76 b323</code>
 +
 +<code>Despite the name, it does work for any entity type.</code>
 +==== IS_OBJECT_PARTIALLY_INSIDE_GARAGE ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_PARTIALLY_INSIDE_GARAGE(Hash garageHash, Entity entity, int p2) // 0xF0EED5A6BC7B237A 0x95A9AB2B b323</code>
 +
 +<code>Despite the name, it does work for any entity type.</code>
 +==== _CLEAR_GARAGE_AREA ====
 +<code cpp>void OBJECT::_CLEAR_GARAGE_AREA(Hash garageHash, BOOL isNetwork) // 0xDA05194260CDCDF9  b678</code>
 +
 +<code>CLEAR_*</code>
 +==== _0x190428512B240692 ====
 +<code cpp>void OBJECT::_0x190428512B240692(Hash garageHash, BOOL vehicles, BOOL peds, BOOL objects, BOOL isNetwork) // 0x190428512B240692 0xA565E27E b323</code>
 +
 +<code>CLEAR_*</code>
 +==== _0x659F9D71F52843F8 ====
 +<code cpp>void OBJECT::_0x659F9D71F52843F8(int id, BOOL toggle) // 0x659F9D71F52843F8  b1290</code>
 +
 +<code>Sets a flag. A valid id is 0x157DC10D
 +SET_FLAG_??</code>
 +==== ENABLE_SAVING_IN_GARAGE ====
 +<code cpp>void OBJECT::ENABLE_SAVING_IN_GARAGE(Hash garageHash, BOOL toggle) // 0xF2E1A7133DD356A6 0x43BB7E48 b323</code>
 +
 +==== _0x66A49D021870FE88 ====
 +<code cpp>void OBJECT::_0x66A49D021870FE88() // 0x66A49D021870FE88 0x6158959E b323</code>
 +
 +==== DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS ====
 +<code cpp>BOOL OBJECT::DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(float x, float y, float z, float radius, Hash hash, BOOL p5) // 0xBFA48E2FF417213F 0x23FF2BA4 b323</code>
 +
 +<code>p5 is usually 0.</code>
 +==== IS_POINT_IN_ANGLED_AREA ====
 +<code cpp>BOOL OBJECT::IS_POINT_IN_ANGLED_AREA(float xPos, float yPos, float zPos, float x1, float y1, float z1, float x2, float y2, float z2, float width, BOOL debug, BOOL includeZ) // 0x2A70BAE8883E4C81 0x73BCFFDC b323</code>
 +
 +<code>An angled area is an X-Z oriented rectangle with three parameters:
 +1. origin: the mid-point along a base edge of the rectangle;
 +2. extent: the mid-point of opposite base edge on the other Z;
 +3. width: the length of the base edge; (named derived from logging strings ``CNetworkRoadNodeWorldStateData``).
 +
 +The oriented rectangle can then be derived from the direction of the two points (``norm(origin - extent)``), its orthonormal, and the width, e.g:
 +1. golf_mp https://i.imgur.com/JhsQAK9.png
 +2. am_taxi https://i.imgur.com/TJWCZaT.jpg</code>
 +==== SET_OBJECT_ALLOW_LOW_LOD_BUOYANCY ====
 +<code cpp>void OBJECT::SET_OBJECT_ALLOW_LOW_LOD_BUOYANCY(Object object, BOOL toggle) // 0x4D89D607CB3DD1D2 0x19B17769 b323</code>
 +
 +<code>Overrides the climbing/blocking flags of the object, used in the native scripts mostly for "prop_dock_bouy_*"</code>
 +==== SET_OBJECT_PHYSICS_PARAMS ====
 +<code cpp>void OBJECT::SET_OBJECT_PHYSICS_PARAMS(Object object, float weight, float p2, float p3, float p4, float p5, float gravity, float p7, float p8, float p9, float p10, float buoyancy) // 0xF6DF6E90DE7DF90F 0xE8D11C58 b323</code>
 +
 +<code>Adjust the physics parameters of a prop, or otherwise known as "object". This is useful for simulated gravity.
 +
 +Other parameters seem to be unknown.
 +
 +p2: seems to be weight and gravity related. Higher value makes the obj fall faster. Very sensitive?
 +p3: seems similar to p2
 +p4: makes obj fall slower the higher the value
 +p5: similar to p4</code>
 +==== GET_OBJECT_FRAGMENT_DAMAGE_HEALTH ====
 +<code cpp>float OBJECT::GET_OBJECT_FRAGMENT_DAMAGE_HEALTH(Any p0, BOOL p1) // 0xB6FBFD079B8D0596 0xF0B330AD b323</code>
 +
 +==== SET_ACTIVATE_OBJECT_PHYSICS_AS_SOON_AS_IT_IS_UNFROZEN ====
 +<code cpp>void OBJECT::SET_ACTIVATE_OBJECT_PHYSICS_AS_SOON_AS_IT_IS_UNFROZEN(Object object, BOOL toggle) // 0x406137F8EF90EAF5 0x3E263AE1 b323</code>
 +
 +==== IS_ANY_OBJECT_NEAR_POINT ====
 +<code cpp>BOOL OBJECT::IS_ANY_OBJECT_NEAR_POINT(float x, float y, float z, float range, BOOL p4) // 0x397DC58FF00298D1 0xE9E46941 b323</code>
 +
 +==== IS_OBJECT_NEAR_POINT ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_NEAR_POINT(Hash objectHash, float x, float y, float z, float range) // 0x8C90FE4B381BA60A 0x50A62C43 b323</code>
 +
 +==== REMOVE_OBJECT_HIGH_DETAIL_MODEL ====
 +<code cpp>void OBJECT::REMOVE_OBJECT_HIGH_DETAIL_MODEL(Object object) // 0x4A39DB43E47CF3AA 0xE3261B35 b323</code>
 +
 +==== BREAK_OBJECT_FRAGMENT_CHILD ====
 +<code cpp>void OBJECT::BREAK_OBJECT_FRAGMENT_CHILD(Object p0, Any p1, BOOL p2) // 0xE7E4C198B0185900 0x1E82C2AE b323</code>
 +
 +==== _0xE05F6AEEFEB0BB02 ====
 +<code cpp>void OBJECT::_0xE05F6AEEFEB0BB02(Any p0, Any p1, Any p2) // 0xE05F6AEEFEB0BB02  b1180</code>
 +
 +==== _0xF9C1681347C8BD15 ====
 +<code cpp>void OBJECT::_0xF9C1681347C8BD15(Object object) // 0xF9C1681347C8BD15  b323</code>
 +
 +==== TRACK_OBJECT_VISIBILITY ====
 +<code cpp>void OBJECT::TRACK_OBJECT_VISIBILITY(Object object) // 0xB252BC036B525623 0x46D06B9A b323</code>
 +
 +==== IS_OBJECT_VISIBLE ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_VISIBLE(Object object) // 0x8B32ACE6326A7546 0xF4FD8AE4 b323</code>
 +
 +==== _0xC6033D32241F6FB5 ====
 +<code cpp>void OBJECT::_0xC6033D32241F6FB5(Object object, BOOL toggle) // 0xC6033D32241F6FB5 0xF4A1A14A b323</code>
 +
 +==== _0xEB6F1A9B5510A5D2 ====
 +<code cpp>void OBJECT::_0xEB6F1A9B5510A5D2(Any p0, BOOL p1) // 0xEB6F1A9B5510A5D2 0xAF016CC1 b323</code>
 +
 +==== _SET_UNK_GLOBAL_BOOL_RELATED_TO_DAMAGE ====
 +<code cpp>void OBJECT::_SET_UNK_GLOBAL_BOOL_RELATED_TO_DAMAGE(BOOL value) // 0xABDABF4E1EDECBFA  b1365</code>
 +
 +==== _SET_CREATE_WEAPON_OBJECT_LIGHT_SOURCE ====
 +<code cpp>void OBJECT::_SET_CREATE_WEAPON_OBJECT_LIGHT_SOURCE(Object object, BOOL toggle) // 0xBCE595371A5FBAAF 0x3A68AA46 b323</code>
 +
 +<code>Requires a component_at_*_flsh to be attached to the weapon object</code>
 +==== GET_RAYFIRE_MAP_OBJECT ====
 +<code cpp>Object OBJECT::GET_RAYFIRE_MAP_OBJECT(float x, float y, float z, float radius, const char* name) // 0xB48FCED898292E52 0xA286DE96 b323</code>
 +
 +<code>Example:
 +OBJECT::GET_RAYFIRE_MAP_OBJECT(-809.9619750976562, 170.919, 75.7406997680664, 3.0, "des_tvsmash");</code>
 +==== SET_STATE_OF_RAYFIRE_MAP_OBJECT ====
 +<code cpp>void OBJECT::SET_STATE_OF_RAYFIRE_MAP_OBJECT(Object object, int state) // 0x5C29F698D404C5E1 0x21F51560 b323</code>
 +
 +<code>Defines the state of a destructible object.
 +Use the GET_RAYFIRE_MAP_OBJECT native to find an object's handle with its name / coords.
 +State 2 == object just spawned
 +State 4 == Beginning of the animation
 +State 6 == Start animation
 +State 9 == End of the animation</code>
 +==== GET_STATE_OF_RAYFIRE_MAP_OBJECT ====
 +<code cpp>int OBJECT::GET_STATE_OF_RAYFIRE_MAP_OBJECT(Object object) // 0x899BA936634A322E 0xF1B8817A b323</code>
 +
 +<code>Get a destructible object's state.
 +Substract 1 to get the real state.
 +See SET_STATE_OF_RAYFIRE_MAP_OBJECT to see the different states
 +For example, if the object just spawned (state 2), the native will return 3.</code>
 +==== DOES_RAYFIRE_MAP_OBJECT_EXIST ====
 +<code cpp>BOOL OBJECT::DOES_RAYFIRE_MAP_OBJECT_EXIST(Object object) // 0x52AF537A0C5B8AAD 0xE08C834D b323</code>
 +
 +<code>Returns true if a destructible object with this handle exists, false otherwise.  </code>
 +==== GET_RAYFIRE_MAP_OBJECT_ANIM_PHASE ====
 +<code cpp>float OBJECT::GET_RAYFIRE_MAP_OBJECT_ANIM_PHASE(Object object) // 0x260EE4FDBDF4DB01 0x020497DE b323</code>
 +
 +<code>`object`: The des-object handle to get the animation progress from.
 +Return value is a float between 0.0 and 1.0, 0.0 is the beginning of the animation, 1.0 is the end. Value resets to 0.0 instantly after reaching 1.0.</code>
 +==== CREATE_PICKUP ====
 +<code cpp>Pickup OBJECT::CREATE_PICKUP(Hash pickupHash, float posX, float posY, float posZ, int p4, int value, BOOL p6, Hash modelHash) // 0xFBA08C503DD5FA58 0x5E14DF68 b323</code>
 +
 +<code>Pickup hashes: pastebin.com/8EuSv2r1
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== CREATE_PICKUP_ROTATE ====
 +<code cpp>Pickup OBJECT::CREATE_PICKUP_ROTATE(Hash pickupHash, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, int flag, int amount, Any p9, BOOL p10, Hash modelHash) // 0x891804727E0A98B7 0xF015BFE2 b323</code>
 +
 +<code>Pickup hashes: pastebin.com/8EuSv2r1
 +
 +flags:
 +8 (1 << 3): place on ground
 +512 (1 << 9): spin around
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== _0x394CD08E31313C28 ====
 +<code cpp>void OBJECT::_0x394CD08E31313C28() // 0x394CD08E31313C28  b944</code>
 +
 +==== _0x826D1EE4D1CAFC78 ====
 +<code cpp>void OBJECT::_0x826D1EE4D1CAFC78(Any p0, Any p1) // 0x826D1EE4D1CAFC78  b505</code>
 +
 +==== CREATE_AMBIENT_PICKUP ====
 +<code cpp>Pickup OBJECT::CREATE_AMBIENT_PICKUP(Hash pickupHash, float posX, float posY, float posZ, int flags, int value, Hash modelHash, BOOL p7, BOOL p8) // 0x673966A0C0FD7171 0x17B99CE7 b323</code>
 +
 +<code>Used for doing money drop
 +Pickup hashes: pastebin.com/8EuSv2r1
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== _0x1E3F1B1B891A2AAA ====
 +<code cpp>void OBJECT::_0x1E3F1B1B891A2AAA(Any p0, Any p1) // 0x1E3F1B1B891A2AAA  b573</code>
 +
 +==== CREATE_PORTABLE_PICKUP ====
 +<code cpp>Object OBJECT::CREATE_PORTABLE_PICKUP(Hash pickupHash, float x, float y, float z, BOOL placeOnGround, Hash modelHash) // 0x2EAF1FDB2FB55698 0x8C886BE5 b323</code>
 +
 +<code>Pickup hashes: pastebin.com/8EuSv2r1
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== _CREATE_PORTABLE_PICKUP_2 ====
 +<code cpp>Object OBJECT::_CREATE_PORTABLE_PICKUP_2(Hash pickupHash, float x, float y, float z, BOOL placeOnGround, Hash modelHash) // 0x125494B98A21AAF7 0x56A02502 b323</code>
 +
 +<code>CREATE_*
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== ATTACH_PORTABLE_PICKUP_TO_PED ====
 +<code cpp>void OBJECT::ATTACH_PORTABLE_PICKUP_TO_PED(Object pickupObject, Ped ped) // 0x8DC39368BDD57755 0x184F6AB3 b323</code>
 +
 +==== DETACH_PORTABLE_PICKUP_FROM_PED ====
 +<code cpp>void OBJECT::DETACH_PORTABLE_PICKUP_FROM_PED(Object pickupObject) // 0xCF463D1E9A0AECB1 0x1D094562 b323</code>
 +
 +==== _HIDE_PICKUP ====
 +<code cpp>void OBJECT::_HIDE_PICKUP(Object pickupObject, BOOL toggle) // 0x867458251D47CCB2  b463</code>
 +
 +==== SET_MAX_NUM_PORTABLE_PICKUPS_CARRIED_BY_PLAYER ====
 +<code cpp>void OBJECT::SET_MAX_NUM_PORTABLE_PICKUPS_CARRIED_BY_PLAYER(Hash modelHash, int p1) // 0x0BF3B3BD47D79C08 0x7EFBA039 b323</code>
 +
 +==== SET_LOCAL_PLAYER_CAN_COLLECT_PORTABLE_PICKUPS ====
 +<code cpp>void OBJECT::SET_LOCAL_PLAYER_CAN_COLLECT_PORTABLE_PICKUPS(BOOL p0) // 0x78857FC65CADB909 0xA3CDF152 b323</code>
 +
 +==== GET_SAFE_PICKUP_COORDS ====
 +<code cpp>Vector3 OBJECT::GET_SAFE_PICKUP_COORDS(float x, float y, float z, float p3, float p4) // 0x6E16BC2503FF1FF0 0x618B5F67 b323</code>
 +
 +==== _0xD4A7A435B3710D05 ====
 +<code cpp>void OBJECT::_0xD4A7A435B3710D05(float x, float y, float z, float radius) // 0xD4A7A435B3710D05  b1290</code>
 +
 +<code>Adds an area that seems to be related to pickup physics behavior.
 +Max amount of areas is 10. Only works in multiplayer.
 +
 +ADD_*</code>
 +==== _0xB7C6D80FB371659A ====
 +<code cpp>void OBJECT::_0xB7C6D80FB371659A() // 0xB7C6D80FB371659A  b1290</code>
 +
 +<code>Clears all areas created by 0xD4A7A435B3710D05
 +
 +CLEAR_*</code>
 +==== GET_PICKUP_COORDS ====
 +<code cpp>Vector3 OBJECT::GET_PICKUP_COORDS(Pickup pickup) // 0x225B8B35C88029B3 0xC2E1E2C5 b323</code>
 +
 +==== _0x8DCA505A5C196F05 ====
 +<code cpp>void OBJECT::_0x8DCA505A5C196F05(Any p0, Any p1) // 0x8DCA505A5C196F05  b1180</code>
 +
 +==== REMOVE_ALL_PICKUPS_OF_TYPE ====
 +<code cpp>void OBJECT::REMOVE_ALL_PICKUPS_OF_TYPE(Hash pickupHash) // 0x27F9D613092159CF 0x40062C53 b323</code>
 +
 +<code>Pickup hashes: pastebin.com/8EuSv2r1
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== HAS_PICKUP_BEEN_COLLECTED ====
 +<code cpp>BOOL OBJECT::HAS_PICKUP_BEEN_COLLECTED(Pickup pickup) // 0x80EC48E6679313F9 0x0BE5CCED b323</code>
 +
 +==== REMOVE_PICKUP ====
 +<code cpp>void OBJECT::REMOVE_PICKUP(Pickup pickup) // 0x3288D8ACAECD2AB2 0x64A7A0E0 b323</code>
 +
 +==== CREATE_MONEY_PICKUPS ====
 +<code cpp>void OBJECT::CREATE_MONEY_PICKUPS(float x, float y, float z, int value, int amount, Hash model) // 0x0589B5E791CE9B2B 0x36C9A5EA b323</code>
 +
 +<code>Spawns one or more money pickups.
 +
 +x: The X-component of the world position to spawn the money pickups at.
 +y: The Y-component of the world position to spawn the money pickups at.
 +z: The Z-component of the world position to spawn the money pickups at.
 +value: The combined value of the pickups (in dollars).
 +amount: The number of pickups to spawn.
 +model: The model to use, or 0 for default money model.
 +
 +Example:
 +CREATE_MONEY_PICKUPS(x, y, z, 1000, 3, 0x684a97ae);
 +
 +Spawns 3 spray cans that'll collectively give $1000 when picked up. (Three spray cans, each giving $334, $334, $332 = $1000).
 +
 +==============================================
 +
 +Max is 2000 in MP. So if you put the amount to 20, but the value to $400,000 eg. They will only be able to pickup 20 - $2,000 bags. So, $40,000</code>
 +==== DOES_PICKUP_EXIST ====
 +<code cpp>BOOL OBJECT::DOES_PICKUP_EXIST(Pickup pickup) // 0xAFC1CA75AD4074D1 0x9C6DA0B3 b323</code>
 +
 +==== DOES_PICKUP_OBJECT_EXIST ====
 +<code cpp>BOOL OBJECT::DOES_PICKUP_OBJECT_EXIST(Object pickupObject) // 0xD9EFB6DBF7DAAEA3 0xE0B32108 b323</code>
 +
 +==== GET_PICKUP_OBJECT ====
 +<code cpp>Object OBJECT::GET_PICKUP_OBJECT(Pickup pickup) // 0x5099BC55630B25AE 0x6052E62E b323</code>
 +
 +==== IS_OBJECT_A_PORTABLE_PICKUP ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_A_PORTABLE_PICKUP(Object object) // 0xFC481C641EBBD27D 0x0F0E94FF b1365</code>
 +
 +==== IS_OBJECT_A_PICKUP ====
 +<code cpp>BOOL OBJECT::IS_OBJECT_A_PICKUP(Object object) // 0x0378C08504160D0D 0x93D23399 b323</code>
 +
 +==== DOES_PICKUP_OF_TYPE_EXIST_IN_AREA ====
 +<code cpp>BOOL OBJECT::DOES_PICKUP_OF_TYPE_EXIST_IN_AREA(Hash pickupHash, float x, float y, float z, float radius) // 0xF9C36251F6E48E33 0xF139681B b323</code>
 +
 +<code>Pickup hashes: pastebin.com/8EuSv2r1
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== SET_PICKUP_REGENERATION_TIME ====
 +<code cpp>void OBJECT::SET_PICKUP_REGENERATION_TIME(Pickup pickup, int duration) // 0x78015C9B4B3ECC9D 0xAB11267D b323</code>
 +
 +==== FORCE_PICKUP_REGENERATE ====
 +<code cpp>void OBJECT::FORCE_PICKUP_REGENERATE(Any p0) // 0x758A5C1B3B1E1990  b1011</code>
 +
 +==== _TOGGLE_USE_PICKUPS_FOR_PLAYER ====
 +<code cpp>void OBJECT::_TOGGLE_USE_PICKUPS_FOR_PLAYER(Player player, Hash pickupHash, BOOL toggle) // 0x616093EC6B139DD9 0x7FADB4B9 b323</code>
 +
 +<code>Disabling/enabling a player from getting pickups. From the scripts:
 +
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 1);
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 0);
 +OBJECT::_616093EC6B139DD9(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 1);
 +
 +SET_PLAYER_*
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== _SET_LOCAL_PLAYER_CAN_USE_PICKUPS_WITH_THIS_MODEL ====
 +<code cpp>void OBJECT::_SET_LOCAL_PLAYER_CAN_USE_PICKUPS_WITH_THIS_MODEL(Hash modelHash, BOOL toggle) // 0x88EAEC617CD26926 0x3A8F1BF7 b323</code>
 +
 +<code>Maximum amount of pickup models that can be disallowed is 30.
 +
 +SET_LOCAL_PLAYER_*</code>
 +==== _0xFDC07C58E8AAB715 ====
 +<code cpp>void OBJECT::_0xFDC07C58E8AAB715(Hash pickupHash) // 0xFDC07C58E8AAB715  b1734</code>
 +
 +<code>A*
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== SET_TEAM_PICKUP_OBJECT ====
 +<code cpp>void OBJECT::SET_TEAM_PICKUP_OBJECT(Object object, Any p1, BOOL p2) // 0x53E0DF1A2A3CF0CA 0x77687DC5 b323</code>
 +
 +==== PREVENT_COLLECTION_OF_PORTABLE_PICKUP ====
 +<code cpp>void OBJECT::PREVENT_COLLECTION_OF_PORTABLE_PICKUP(Object object, BOOL p1, BOOL p2) // 0x92AEFB5F6E294023 0xCBB5F9B6 b323</code>
 +
 +==== _0x0596843B34B95CE5 ====
 +<code cpp>void OBJECT::_0x0596843B34B95CE5(Any p0, Any p1) // 0x0596843B34B95CE5  b505</code>
 +
 +==== _0xA08FE5E49BDC39DD ====
 +<code cpp>void OBJECT::_0xA08FE5E49BDC39DD(Any p0, float p1, BOOL p2) // 0xA08FE5E49BDC39DD 0x276A7807 b323</code>
 +
 +==== _0x62454A641B41F3C5 ====
 +<code cpp>void OBJECT::_0x62454A641B41F3C5(Any p0) // 0x62454A641B41F3C5  b678</code>
 +
 +==== _0x39A5FB7EAF150840 ====
 +<code cpp>void OBJECT::_0x39A5FB7EAF150840(Any p0, Any p1) // 0x39A5FB7EAF150840  b678</code>
 +
 +==== _0xDB41D07A45A6D4B7 ====
 +<code cpp>Any OBJECT::_0xDB41D07A45A6D4B7(Any p0) // 0xDB41D07A45A6D4B7 0x000E92DC b323</code>
 +
 +==== SET_PICKUP_GENERATION_RANGE_MULTIPLIER ====
 +<code cpp>void OBJECT::SET_PICKUP_GENERATION_RANGE_MULTIPLIER(float multiplier) // 0x318516E02DE3ECE2 0x9879AC51 b323</code>
 +
 +==== _GET_PICKUP_GENERATION_RANGE_MULTIPLIER ====
 +<code cpp>float OBJECT::_GET_PICKUP_GENERATION_RANGE_MULTIPLIER() // 0xB3ECA65C7317F174  b944</code>
 +
 +==== _0x31F924B53EADDF65 ====
 +<code cpp>void OBJECT::_0x31F924B53EADDF65(BOOL p0) // 0x31F924B53EADDF65 0xDB18FA01 b323</code>
 +
 +==== SET_PICKUP_UNCOLLECTABLE ====
 +<code cpp>void OBJECT::SET_PICKUP_UNCOLLECTABLE(Any p0, Any p1) // 0x1C1B69FAE509BA97  b757</code>
 +
 +==== _0x858EC9FD25DE04AA ====
 +<code cpp>void OBJECT::_0x858EC9FD25DE04AA(Any p0, Any p1) // 0x858EC9FD25DE04AA  b757</code>
 +
 +==== SET_PICKUP_HIDDEN_WHEN_UNCOLLECTABLE ====
 +<code cpp>void OBJECT::SET_PICKUP_HIDDEN_WHEN_UNCOLLECTABLE(Any p0, Any p1) // 0x3ED2B83AB2E82799  b757</code>
 +
 +==== _0x8881C98A31117998 ====
 +<code cpp>void OBJECT::_0x8881C98A31117998(Any p0, Any p1) // 0x8881C98A31117998  b678</code>
 +
 +==== _0x8CFF648FBD7330F1 ====
 +<code cpp>void OBJECT::_0x8CFF648FBD7330F1(Any p0) // 0x8CFF648FBD7330F1  b757</code>
 +
 +==== _0x46F3ADD1E2D5BAF2 ====
 +<code cpp>void OBJECT::_0x46F3ADD1E2D5BAF2(Any p0, Any p1) // 0x46F3ADD1E2D5BAF2  b877</code>
 +
 +==== _0x641F272B52E2F0F8 ====
 +<code cpp>void OBJECT::_0x641F272B52E2F0F8(Any p0, Any p1) // 0x641F272B52E2F0F8  b877</code>
 +
 +==== _0x4C134B4DF76025D0 ====
 +<code cpp>void OBJECT::_0x4C134B4DF76025D0(Pickup pickup, BOOL toggle) // 0x4C134B4DF76025D0  b1180</code>
 +
 +<code>Sets some bit of pickup
 +SET_PICKUP_*</code>
 +==== _0xAA059C615DE9DD03 ====
 +<code cpp>void OBJECT::_0xAA059C615DE9DD03(Pickup pickup, BOOL toggle) // 0xAA059C615DE9DD03  b1180</code>
 +
 +<code>Sets some value of pickup
 +SET_PICKUP_*</code>
 +==== _0xF92099527DB8E2A7 ====
 +<code cpp>void OBJECT::_0xF92099527DB8E2A7(Any p0, Any p1) // 0xF92099527DB8E2A7 0xA7E936FD b323</code>
 +
 +==== _0xA2C1F5E92AFE49ED ====
 +<code cpp>void OBJECT::_0xA2C1F5E92AFE49ED() // 0xA2C1F5E92AFE49ED 0xB241806C b323</code>
 +
 +<code>CLEAR_*</code>
 +==== _0x762DB2D380B48D04 ====
 +<code cpp>void OBJECT::_0x762DB2D380B48D04(Any p0) // 0x762DB2D380B48D04 0xD1BAAFB7 b323</code>
 +
 +==== RENDER_FAKE_PICKUP_GLOW ====
 +<code cpp>void OBJECT::RENDER_FAKE_PICKUP_GLOW(float x, float y, float z, int colorIndex) // 0x3430676B11CDF21D 0x63B02FAD b323</code>
 +
 +<code>draws circular marker at pos
 +-1 = none
 +0 = red
 +1 = green
 +2 = blue
 +3 = green larger
 +4 = nothing
 +5 = green small</code>
 +==== _0x7813E8B8C4AE4799 ====
 +<code cpp>void OBJECT::_0x7813E8B8C4AE4799(Pickup pickup) // 0x7813E8B8C4AE4799  b1734</code>
 +
 +<code>SET_PICKUP_*</code>
 +==== _0xBFFE53AE7E67FCDC ====
 +<code cpp>void OBJECT::_0xBFFE53AE7E67FCDC(Pickup pickup, BOOL toggle) // 0xBFFE53AE7E67FCDC  b1290</code>
 +
 +<code>Sets some pickup flag?
 +SET_PICKUP_*</code>
 +==== _0xD05A3241B9A86F19 ====
 +<code cpp>void OBJECT::_0xD05A3241B9A86F19(Entity entity, BOOL toggle) // 0xD05A3241B9A86F19  b1180</code>
 +
 +<code>Sets entity+38 to C (when false) or 0xFF3f (when true)
 +SET_ENTITY_??</code>
 +==== _0xB2D0BDE54F0E8E5A ====
 +<code cpp>void OBJECT::_0xB2D0BDE54F0E8E5A(Object object, BOOL toggle) // 0xB2D0BDE54F0E8E5A 0x132B6D92 b323</code>
 +
 +==== GET_WEAPON_TYPE_FROM_PICKUP_TYPE ====
 +<code cpp>Hash OBJECT::GET_WEAPON_TYPE_FROM_PICKUP_TYPE(Hash pickupHash) // 0x08F96CA6C551AD51 0xEDD01937 b323</code>
 +
 +<code>Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== _GET_PICKUP_HASH_FROM_WEAPON ====
 +<code cpp>Hash OBJECT::_GET_PICKUP_HASH_FROM_WEAPON(Hash weaponHash) // 0xD6429A016084F1A5  b1290</code>
 +
 +<code>Returns the pickup hash for the given weapon hash</code>
 +==== IS_PICKUP_WEAPON_OBJECT_VALID ====
 +<code cpp>BOOL OBJECT::IS_PICKUP_WEAPON_OBJECT_VALID(Object object) // 0x11D1E53A726891FE 0x883DAB2D b323</code>
 +
 +==== _GET_OBJECT_TEXTURE_VARIATION ====
 +<code cpp>int OBJECT::_GET_OBJECT_TEXTURE_VARIATION(Object object) // 0xE84EB93729C5F36A  b757</code>
 +
 +==== _SET_OBJECT_TEXTURE_VARIATION ====
 +<code cpp>void OBJECT::_SET_OBJECT_TEXTURE_VARIATION(Object object, int textureVariation) // 0x971DA0055324D033  b323</code>
 +
 +<code>enum ObjectPaintVariants
 +{
 + Pacific = 0,
 +  Azure = 1,
 +    Nautical = 2,
 + Continental = 3,
 +  Battleship = 4,
 +   Intrepid = 5,
 + Uniform = 6,
 +  Classico = 7,
 + Mediterranean = 8,
 +    Command = 9,
 +  Mariner = 10,
 + Ruby = 11,
 +    Vintage = 12,
 + Pristine = 13,
 +    Merchant = 14,
 +    Voyager = 15
 +};</code>
 +==== _SET_TEXTURE_VARIATION_OF_CLOSEST_OBJECT_OF_TYPE ====
 +<code cpp>BOOL OBJECT::_SET_TEXTURE_VARIATION_OF_CLOSEST_OBJECT_OF_TYPE(float x, float y, float z, float radius, Hash modelHash, int textureVariation) // 0xF12E33034D887F66  b1103</code>
 +
 +==== _0x31574B1B41268673 ====
 +<code cpp>void OBJECT::_0x31574B1B41268673(Any p0, Any p1) // 0x31574B1B41268673  b2189</code>
 +
 +==== _SET_OBJECT_LIGHT_COLOR ====
 +<code cpp>Any OBJECT::_SET_OBJECT_LIGHT_COLOR(Object object, BOOL p1, int r, int g, int b) // 0x5F048334B4A4E774  b1493</code>
 +
 +==== _0xADF084FB8F075D06 ====
 +<code cpp>BOOL OBJECT::_0xADF084FB8F075D06(Object object) // 0xADF084FB8F075D06  b1604</code>
 +
 +<code>GET_OBJECT_??</code>
 +==== _0x3B2FD68DB5F8331C ====
 +<code cpp>void OBJECT::_0x3B2FD68DB5F8331C(Object object, BOOL toggle) // 0x3B2FD68DB5F8331C  b757</code>
 +
 +<code>SET_OBJECT_*</code>
 +==== _SET_OBJECT_STUNT_PROP_SPEEDUP ====
 +<code cpp>void OBJECT::_SET_OBJECT_STUNT_PROP_SPEEDUP(Object object, Any p1) // 0x96EE0EBA0163DF80  b791</code>
 +
 +==== _SET_OBJECT_STUNT_PROP_DURATION ====
 +<code cpp>void OBJECT::_SET_OBJECT_STUNT_PROP_DURATION(Object object, float duration) // 0xDF6CA0330F2E737B  b791</code>
 +
 +==== _GET_PICKUP_HASH ====
 +<code cpp>Hash OBJECT::_GET_PICKUP_HASH(Hash pickupHash) // 0x5EAAD83F8CFB4575 0x6AE36192 b323</code>
 +
 +<code>returns pickup hash.
 +
 +Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json</code>
 +==== SET_FORCE_OBJECT_THIS_FRAME ====
 +<code cpp>void OBJECT::SET_FORCE_OBJECT_THIS_FRAME(float x, float y, float z, float p3) // 0xF538081986E49E9D 0x3DA41C1A b323</code>
 +
 +==== _MARK_OBJECT_FOR_DELETION ====
 +<code cpp>void OBJECT::_MARK_OBJECT_FOR_DELETION(Object object) // 0xADBE4809F19F927A 0x2048A7DD b323</code>
 +
 +<code>is this like setting is as no longer needed?</code>
 +==== _0x8CAAB2BD3EA58BD4 ====
 +<code cpp>void OBJECT::_0x8CAAB2BD3EA58BD4(Any p0) // 0x8CAAB2BD3EA58BD4  b1011</code>
 +
 +==== _0x63ECF581BC70E363 ====
 +<code cpp>void OBJECT::_0x63ECF581BC70E363(Any p0, Any p1) // 0x63ECF581BC70E363  b1365</code>
 +
 +==== _SET_ENABLE_ARENA_PROP_PHYSICS ====
 +<code cpp>void OBJECT::_SET_ENABLE_ARENA_PROP_PHYSICS(Object object, BOOL toggle, int p2) // 0x911024442F4898F0  b1604</code>
 +
 +<code>Activate the physics to: "xs_prop_arena_{flipper,wall,bollard,turntable,pit}"</code>
 +==== _SET_ENABLE_ARENA_PROP_PHYSICS_ON_PED ====
 +<code cpp>void OBJECT::_SET_ENABLE_ARENA_PROP_PHYSICS_ON_PED(Object object, BOOL toggle, int p2, Ped ped) // 0xB20834A7DD3D8896  b1604</code>
 +
 +==== _0x734E1714D077DA9A ====
 +<code cpp>void OBJECT::_0x734E1714D077DA9A(Object object, BOOL toggle) // 0x734E1714D077DA9A  b1604</code>
 +
 +<code>Sets some bit of object
 +SET_OBJECT_*</code>
 +==== _0x1A6CBB06E2D0D79D ====
 +<code cpp>void OBJECT::_0x1A6CBB06E2D0D79D(Object object, BOOL p1) // 0x1A6CBB06E2D0D79D  b1604</code>
 +
 +<code>Sets some bit of object
 +SET_OBJECT_*</code>
 +==== _GET_IS_ARENA_PROP_PHYSICS_DISABLED ====
 +<code cpp>BOOL OBJECT::_GET_IS_ARENA_PROP_PHYSICS_DISABLED(Object object, Any p1) // 0x43C677F1E1158005  b1604</code>
 +
 +==== _0x3BD770D281982DB5 ====
 +<code cpp>Any OBJECT::_0x3BD770D281982DB5(Any p0, Any p1) // 0x3BD770D281982DB5  b1604</code>
 +
 +==== _0x1C57C94A6446492A ====
 +<code cpp>void OBJECT::_0x1C57C94A6446492A(Object object, BOOL toggle) // 0x1C57C94A6446492A  b1604</code>
 +
 +<code>Sets some flag of object
 +SET_OBJECT_*</code>
 +==== _0xB5B7742424BD4445 ====
 +<code cpp>void OBJECT::_0xB5B7742424BD4445(Object object, BOOL toggle) // 0xB5B7742424BD4445  b1604</code>
 +
 +<code>Sets some bit of object
 +SET_OBJECT_*</code>
 +
 +===== PAD =====
 +==== IS_CONTROL_ENABLED ====
 +<code cpp>BOOL PAD::IS_CONTROL_ENABLED(int padIndex, int control) // 0x1CEA6BFDF248E5D9 0x9174AF84 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_CONTROL_PRESSED ====
 +<code cpp>BOOL PAD::IS_CONTROL_PRESSED(int padIndex, int control) // 0xF3A21BCD95725A4A 0x517A4384 b323</code>
 +
 +<code>Returns whether a control is currently pressed.
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_CONTROL_RELEASED ====
 +<code cpp>BOOL PAD::IS_CONTROL_RELEASED(int padIndex, int control) // 0x648EE3E7F38877DD 0x1F91A06E b323</code>
 +
 +<code>Returns whether a control is currently _not_ pressed.
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_CONTROL_JUST_PRESSED ====
 +<code cpp>BOOL PAD::IS_CONTROL_JUST_PRESSED(int padIndex, int control) // 0x580417101DDB492F 0x4487F579 b323</code>
 +
 +<code>Returns whether a control was newly pressed since the last check.
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_CONTROL_JUST_RELEASED ====
 +<code cpp>BOOL PAD::IS_CONTROL_JUST_RELEASED(int padIndex, int control) // 0x50F940259D3841E6 0x2314444B b323</code>
 +
 +<code>Returns whether a control was newly released since the last check.
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_CONTROL_VALUE ====
 +<code cpp>int PAD::GET_CONTROL_VALUE(int padIndex, int control) // 0xD95E79E8686D2C27 0xC526F3C6 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_CONTROL_NORMAL ====
 +<code cpp>float PAD::GET_CONTROL_NORMAL(int padIndex, int control) // 0xEC3C9B8D5327B563 0x5DE226A5 b323</code>
 +
 +<code>Returns the value of GET_CONTROL_VALUE normalized (i.e. a real number value between -1 and 1)
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== _0x5B73C77D9EB66E24 ====
 +<code cpp>void PAD::_0x5B73C77D9EB66E24(BOOL p0) // 0x5B73C77D9EB66E24  b323</code>
 +
 +==== GET_CONTROL_UNBOUND_NORMAL ====
 +<code cpp>float PAD::GET_CONTROL_UNBOUND_NORMAL(int padIndex, int control) // 0x5B84D09CEC5209C5 0xC49343BB b323</code>
 +
 +<code>Seems to return values between -1 and 1 for controls like gas and steering.
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== _SET_CONTROL_NORMAL ====
 +<code cpp>BOOL PAD::_SET_CONTROL_NORMAL(int padIndex, int control, float amount) // 0xE8A25867FBA3B05E  b323</code>
 +
 +<code>This is for simulating player input.
 +amount is a float value from 0 - 1
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_DISABLED_CONTROL_PRESSED ====
 +<code cpp>BOOL PAD::IS_DISABLED_CONTROL_PRESSED(int padIndex, int control) // 0xE2587F8CBBD87B1D 0x32A93544 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_DISABLED_CONTROL_RELEASED ====
 +<code cpp>BOOL PAD::IS_DISABLED_CONTROL_RELEASED(int padIndex, int control) // 0xFB6C4072E9A32E92  b757</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_DISABLED_CONTROL_JUST_PRESSED ====
 +<code cpp>BOOL PAD::IS_DISABLED_CONTROL_JUST_PRESSED(int padIndex, int control) // 0x91AEF906BCA88877 0xEE6ABD32 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== IS_DISABLED_CONTROL_JUST_RELEASED ====
 +<code cpp>BOOL PAD::IS_DISABLED_CONTROL_JUST_RELEASED(int padIndex, int control) // 0x305C8DCD79DA8B0F 0xD6A679E1 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_DISABLED_CONTROL_NORMAL ====
 +<code cpp>float PAD::GET_DISABLED_CONTROL_NORMAL(int padIndex, int control) // 0x11E65974A982637C 0x66FF4FAA b323</code>
 +
 +<code>control - c# works with (int)GTA.Control.CursorY / (int)GTA.Control.CursorX and returns the mouse movement (additive).
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_DISABLED_CONTROL_UNBOUND_NORMAL ====
 +<code cpp>float PAD::GET_DISABLED_CONTROL_UNBOUND_NORMAL(int padIndex, int control) // 0x4F8A26A890FD62FB 0xF2A65A4C b323</code>
 +
 +<code>The "disabled" variant of _0x5B84D09CEC5209C5.
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== _0xD7D22F5592AED8BA ====
 +<code cpp>int PAD::_0xD7D22F5592AED8BA(int p0) // 0xD7D22F5592AED8BA 0x0E8EF929 b323</code>
 +
 +==== _IS_USING_KEYBOARD ====
 +<code cpp>BOOL PAD::_IS_USING_KEYBOARD(int padIndex) // 0xA571D46727E2B718  b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +Used to be known as _GET_LAST_INPUT_METHOD & _IS_INPUT_DISABLED</code>
 +==== _IS_USING_KEYBOARD_2 ====
 +<code cpp>BOOL PAD::_IS_USING_KEYBOARD_2(int padIndex) // 0x13337B38DB572509  b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +Used to be known as _IS_INPUT_JUST_DISABLED</code>
 +==== _SET_CURSOR_LOCATION ====
 +<code cpp>BOOL PAD::_SET_CURSOR_LOCATION(float x, float y) // 0xFC695459D4D0E219  b323</code>
 +
 +==== _0x23F09EADC01449D6 ====
 +<code cpp>BOOL PAD::_0x23F09EADC01449D6(int padIndex) // 0x23F09EADC01449D6  b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +Hardcoded to return false.</code>
 +==== _0x6CD79468A1E595C6 ====
 +<code cpp>BOOL PAD::_0x6CD79468A1E595C6(int padIndex) // 0x6CD79468A1E595C6  b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_CONTROL_INSTRUCTIONAL_BUTTON ====
 +<code cpp>const char* PAD::GET_CONTROL_INSTRUCTIONAL_BUTTON(int padIndex, int control, BOOL p2) // 0x0499D7B09FC9B407 0x3551727A b323</code>
 +
 +<code>formerly called _GET_CONTROL_ACTION_NAME incorrectly
 +
 +p2 appears to always be true.
 +p2 is unused variable in function.
 +
 +EG:
 +GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 201, 1) /*INPUT_FRONTEND_ACCEPT (e.g. Enter button)*/
 +GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 202, 1) /*INPUT_FRONTEND_CANCEL (e.g. ESC button)*/
 +GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 51, 1) /*INPUT_CONTEXT (e.g. E button)*/
 +
 +gtaforums.com/topic/819070-c-draw-instructional-buttons-scaleform-movie/#entry1068197378
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTON ====
 +<code cpp>const char* PAD::GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTON(int padIndex, int controlGroup, BOOL p2) // 0x80C2FD58D720C801 0x3EE71F6A b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== SET_CONTROL_LIGHT_EFFECT_COLOR ====
 +<code cpp>void PAD::SET_CONTROL_LIGHT_EFFECT_COLOR(int padIndex, int red, int green, int blue) // 0x8290252FFF36ACB5  b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== _0xCB0360EFEFB2580D ====
 +<code cpp>void PAD::_0xCB0360EFEFB2580D(int padIndex) // 0xCB0360EFEFB2580D  b323</code>
 +
 +==== SET_PAD_SHAKE ====
 +<code cpp>void PAD::SET_PAD_SHAKE(int padIndex, int duration, int frequency) // 0x48B3886C1358D0D5 0x5D38BD2F b323</code>
 +
 +<code>padIndex always seems to be 0
 +duration in milliseconds 
 +frequency should range from about 10 (slow vibration) to 255 (very fast)
 +appears to be a hash collision, though it does do what it says
 +
 +example:
 +SET_PAD_SHAKE(0, 100, 200);</code>
 +==== _0x14D29BB12D47F68C ====
 +<code cpp>void PAD::_0x14D29BB12D47F68C(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x14D29BB12D47F68C  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== STOP_PAD_SHAKE ====
 +<code cpp>void PAD::STOP_PAD_SHAKE(int padIndex) // 0x38C16A305E8CDC8D 0x8F75657E b323</code>
 +
 +==== _0xF239400E16C23E08 ====
 +<code cpp>void PAD::_0xF239400E16C23E08(Any p0, Any p1) // 0xF239400E16C23E08 0x7D65EB6E b323</code>
 +
 +==== _0xA0CEFCEA390AAB9B ====
 +<code cpp>void PAD::_0xA0CEFCEA390AAB9B(Any p0) // 0xA0CEFCEA390AAB9B  b323</code>
 +
 +==== IS_LOOK_INVERTED ====
 +<code cpp>BOOL PAD::IS_LOOK_INVERTED() // 0x77B612531280010D 0x313434B2 b323</code>
 +
 +==== _0xE1615EC03B3BB4FD ====
 +<code cpp>BOOL PAD::_0xE1615EC03B3BB4FD() // 0xE1615EC03B3BB4FD  b323</code>
 +
 +<code>Used with IS_LOOK_INVERTED() and negates its affect.
 +
 +--
 +
 +Not sure how the person above got that description, but here's an actual example:
 +
 +if (PAD::_GET_LAST_INPUT_METHOD(2)) {
 +    if (a_5) {
 +        if (PAD::IS_LOOK_INVERTED()) {
 +            a_3 *= -1;
 +        }
 +        if (PAD::_E1615EC03B3BB4FD()) {
 +            a_3 *= -1;
 +        }
 +    }
 +}</code>
 +==== GET_LOCAL_PLAYER_AIM_STATE ====
 +<code cpp>int PAD::GET_LOCAL_PLAYER_AIM_STATE() // 0xBB41AFBBBC0A0287 0x81802053 b323</code>
 +
 +<code>Returns the local player's targeting mode. See PLAYER::SET_PLAYER_TARGETING_MODE.</code>
 +==== _GET_LOCAL_PLAYER_AIM_STATE_2 ====
 +<code cpp>int PAD::_GET_LOCAL_PLAYER_AIM_STATE_2() // 0x59B9A7AF4C95133C  b323</code>
 +
 +<code>Same behavior as GET_LOCAL_PLAYER_AIM_STATE but only used on the PC version.</code>
 +==== _0x25AAA32BDC98F2A3 ====
 +<code cpp>Any PAD::_0x25AAA32BDC98F2A3() // 0x25AAA32BDC98F2A3  b1365</code>
 +
 +==== GET_IS_USING_ALTERNATE_DRIVEBY ====
 +<code cpp>BOOL PAD::GET_IS_USING_ALTERNATE_DRIVEBY() // 0x0F70731BACCFBB96 0xC1AFABD5 b323</code>
 +
 +<code>Returns profile setting 225.</code>
 +==== GET_ALLOW_MOVEMENT_WHILE_ZOOMED ====
 +<code cpp>BOOL PAD::GET_ALLOW_MOVEMENT_WHILE_ZOOMED() // 0xFC859E2374407556 0xC0823820 b323</code>
 +
 +<code>Returns profile setting 17.</code>
 +==== SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED ====
 +<code cpp>void PAD::SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED(BOOL toggle) // 0x798FDEB5B1575088 0xA86BD91F b323</code>
 +
 +==== SET_INPUT_EXCLUSIVE ====
 +<code cpp>void PAD::SET_INPUT_EXCLUSIVE(int padIndex, int control) // 0xEDE476E5EE29EDB1 0x4E8E29E6 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== DISABLE_CONTROL_ACTION ====
 +<code cpp>void PAD::DISABLE_CONTROL_ACTION(int padIndex, int control, BOOL disable) // 0xFE99B66D079CF6BC 0x3800C0DC b323</code>
 +
 +<code>control values and meaning: github.com/crosire/scripthookvdotnet/blob/dev_v3/source/scripting/Controls.cs
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +Control values from the decompiled scripts: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,
 +28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,5
 +4,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,
 +79,80,81,82,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,101,102,103,105,
 +107,108,109,110,111,112,113,114,115,116,117,118,119,123,126,129,130,131,132,
 +133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
 +153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172
 +,177,187,188,189,190,195,196,199,200,201,202,203,205,207,208,209,211,212,213, 217,219,220,221,225,226,230,234,235,236,237,238,239,240,241,242,243,244,257,
 +261,262,263,264,265,270,271,272,273,274,278,279,280,281,282,283,284,285,286,
 +287,288,289,337.
 +
 +Example: PAD::DISABLE_CONTROL_ACTION(2, 19, true) disables the switching UI from appearing both when using a keyboard and Xbox 360 controller. Needs to be executed each frame. 
 + 
 +Control group 1 and 0 gives the same results as 2. Same results for all players. </code>
 +==== ENABLE_CONTROL_ACTION ====
 +<code cpp>void PAD::ENABLE_CONTROL_ACTION(int padIndex, int control, BOOL enable) // 0x351220255D64C155 0xD2753551 b323</code>
 +
 +<code>control values and meaning: github.com/crosire/scripthookvdotnet/blob/dev/source/scripting/Controls.hpp
 +
 +padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +Control values from the decompiled scripts: 
 +0,1,2,3,4,5,6,8,9,10,11,14,15,16,17,19,21,22,24,25,26,30,31,32,33,34,35,36,
 +37,44,46,47,59,60,65,68,69,70,71,72,73,74,75,76,79,80,81,82,86,95,98,99,100
 +,101,114,140,141,143,172,173,174,175,176,177,178,179,180,181,187,188,189,19
 +0,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,217,218,219,2
 +20,221,225,228,229,230,231,234,235,236,237,238,239,240,241,242,245,246,257,
 +261,262,263,264,286,287,288,289,337,338,339,340,341,342,343
 +
 +INPUTGROUP_MOVE
 +INPUTGROUP_LOOK
 +INPUTGROUP_WHEEL
 +INPUTGROUP_CELLPHONE_NAVIGATE
 +INPUTGROUP_CELLPHONE_NAVIGATE_UD
 +INPUTGROUP_CELLPHONE_NAVIGATE_LR
 +INPUTGROUP_FRONTEND_DPAD_ALL
 +INPUTGROUP_FRONTEND_DPAD_UD
 +INPUTGROUP_FRONTEND_DPAD_LR
 +INPUTGROUP_FRONTEND_LSTICK_ALL
 +INPUTGROUP_FRONTEND_RSTICK_ALL
 +INPUTGROUP_FRONTEND_GENERIC_UD
 +INPUTGROUP_FRONTEND_GENERIC_LR
 +INPUTGROUP_FRONTEND_GENERIC_ALL
 +INPUTGROUP_FRONTEND_BUMPERS
 +INPUTGROUP_FRONTEND_TRIGGERS
 +INPUTGROUP_FRONTEND_STICKS
 +INPUTGROUP_SCRIPT_DPAD_ALL
 +INPUTGROUP_SCRIPT_DPAD_UD
 +INPUTGROUP_SCRIPT_DPAD_LR
 +INPUTGROUP_SCRIPT_LSTICK_ALL
 +INPUTGROUP_SCRIPT_RSTICK_ALL
 +INPUTGROUP_SCRIPT_BUMPERS
 +INPUTGROUP_SCRIPT_TRIGGERS
 +INPUTGROUP_WEAPON_WHEEL_CYCLE
 +INPUTGROUP_FLY
 +INPUTGROUP_SUB
 +INPUTGROUP_VEH_MOVE_ALL
 +INPUTGROUP_CURSOR
 +INPUTGROUP_CURSOR_SCROLL
 +INPUTGROUP_SNIPER_ZOOM_SECONDARY
 +INPUTGROUP_VEH_HYDRAULICS_CONTROL
 +
 +
 +Took those in IDA Pro.Not sure in which order they go</code>
 +==== DISABLE_ALL_CONTROL_ACTIONS ====
 +<code cpp>void PAD::DISABLE_ALL_CONTROL_ACTIONS(int padIndex) // 0x5F4B6931816E599B 0x16753CF4 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== ENABLE_ALL_CONTROL_ACTIONS ====
 +<code cpp>void PAD::ENABLE_ALL_CONTROL_ACTIONS(int padIndex) // 0xA5FFE9B05F199DE7 0xFC2F119F b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.</code>
 +==== _SWITCH_TO_INPUT_MAPPING_SCHEME ====
 +<code cpp>BOOL PAD::_SWITCH_TO_INPUT_MAPPING_SCHEME(const char* name) // 0x3D42B92563939375 0xD2C80B2E b323</code>
 +
 +<code>Used in carsteal3 script with p0 = "Carsteal4_spycar".
 +
 +S*</code>
 +==== _SWITCH_TO_INPUT_MAPPING_SCHEME_2 ====
 +<code cpp>BOOL PAD::_SWITCH_TO_INPUT_MAPPING_SCHEME_2(const char* name) // 0x4683149ED1DDE7A1 0xBBFC9050 b323</code>
 +
 +<code>Same as 0x3D42B92563939375
 +
 +S*</code>
 +==== _RESET_INPUT_MAPPING_SCHEME ====
 +<code cpp>void PAD::_RESET_INPUT_MAPPING_SCHEME() // 0x643ED62D5EA3BEBD 0x42140FF9 b323</code>
 +
 +<code>S*</code>
 +==== _0x7F4724035FDCA1DD ====
 +<code cpp>void PAD::_0x7F4724035FDCA1DD(int padIndex) // 0x7F4724035FDCA1DD 0x2CEDE6C5 b323</code>
 +
 +<code>padIndex: 0 (PLAYER_CONTROL), 1 (unk) and 2 (unk) used in the scripts.
 +
 +A*</code>
 +
 +===== PATHFIND =====
 +==== SET_ROADS_IN_AREA ====
 +<code cpp>void PATHFIND::SET_ROADS_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL nodeEnabled, BOOL unknown2) // 0xBF1A602B5BA52FEE 0xEBC7B918 b323</code>
 +
 +<code>When nodeEnabled is set to false, all nodes in the area get disabled.
 +`GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns true afterwards.
 +If it's true, `GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns false.</code>
 +==== SET_ROADS_IN_ANGLED_AREA ====
 +<code cpp>void PATHFIND::SET_ROADS_IN_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width, BOOL unknown1, BOOL unknown2, BOOL unknown3) // 0x1A5AA1208AF5DB59 0xBD088F4B b323</code>
 +
 +<code>unknown3 is related to `SEND_SCRIPT_WORLD_STATE_EVENT > CNetworkRoadNodeWorldStateData` in networked environments.
 +See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.</code>
 +==== SET_PED_PATHS_IN_AREA ====
 +<code cpp>void PATHFIND::SET_PED_PATHS_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL unknown, Any p7) // 0x34F060F4BF92E018 0x2148EA84 b323</code>
 +
 +==== GET_SAFE_COORD_FOR_PED ====
 +<code cpp>BOOL PATHFIND::GET_SAFE_COORD_FOR_PED(float x, float y, float z, BOOL onGround, Vector3* outPosition, int flags) // 0xB61C8E878A4199CA 0xB370270A b323</code>
 +
 +<code>Flags are:
 +1 = 1 = B02_IsFootpath
 +2 = 4 = !B15_InteractionUnk
 +4 = 0x20 = !B14_IsInterior
 +8 = 0x40 = !B07_IsWater
 +16 = 0x200 = B17_IsFlatGround
 +When onGround == true outPosition is a position located on the nearest pavement.
 +
 +When a safe coord could not be found the result of a function is false and outPosition == Vector3.Zero.
 +
 +In the scripts these flags are used: 0, 14, 12, 16, 20, 21, 28. 0 is most commonly used, then 16. 
 +
 +16 works for me, 0 crashed the script.</code>
 +==== GET_CLOSEST_VEHICLE_NODE ====
 +<code cpp>BOOL PATHFIND::GET_CLOSEST_VEHICLE_NODE(float x, float y, float z, Vector3* outPosition, int nodeType, float p5, float p6) // 0x240A18690AE96513 0x6F5F1E6C b323</code>
 +
 +<code>FYI: When falling through the map (or however you got under it) you will respawn when your player ped's height is <= -200.0 meters (I think you all know this) and when in a vehicle you will actually respawn at the closest vehicle node.
 +
 +----------
 +
 +Vector3 nodePos;
 +GET_CLOSEST_VEHICLE_NODE(x,y,z,&nodePos,...)
 +
 +p4 is either 0, 1 or 8. 1 means any path/road. 0 means node in the middle of the closest main (asphalt) road.
 +p5, p6 are always the same:
 +0x40400000 (3.0), 0
 +p5 can also be 100.0 and p6 can be 2.5:
 +PATHFIND::GET_CLOSEST_VEHICLE_NODE(a_0, &v_5, v_9, 100.0, 2.5)
 +
 +Known node types: simple path/asphalt road, only asphalt road, water, under the map at always the same coords. 
 +
 +The node types follows a pattern. For example, every fourth node is of the type water i.e. 3, 7, 11, 15, 19, 23, 27, 31, 35, 39... 239. Could not see any difference between nodes within certain types. 
 +Starting at 2, every fourth node is under the map, always same coords.
 +Same with only asphalt road (0, 4, 8, etc) and simple path/asphalt road (1, 5, 9, etc). 
 +
 +gtaforums.com/topic/843561-pathfind-node-types</code>
 +==== GET_CLOSEST_MAJOR_VEHICLE_NODE ====
 +<code cpp>BOOL PATHFIND::GET_CLOSEST_MAJOR_VEHICLE_NODE(float x, float y, float z, Vector3* outPosition, float unknown1, int unknown2) // 0x2EABE3B06F58C1BE 0x04B5F15B b323</code>
 +
 +<code>Get the closest vehicle node to a given position, unknown1 = 3.0, unknown2 = 0</code>
 +==== GET_CLOSEST_VEHICLE_NODE_WITH_HEADING ====
 +<code cpp>BOOL PATHFIND::GET_CLOSEST_VEHICLE_NODE_WITH_HEADING(float x, float y, float z, Vector3* outPosition, float* outHeading, int nodeType, float p6, int p7) // 0xFF071FB798B803B0 0x8BD5759B b323</code>
 +
 +<code>p5, p6 and p7 seems to be about the same as p4, p5 and p6 for GET_CLOSEST_VEHICLE_NODE. p6 and/or p7 has something to do with finding a node on the same path/road and same direction(at least for this native, something to do with the heading maybe). Edit this when you find out more.
 +
 +p5 is either 1 or 12. 1 means any path/road. 12, 8, 0 means node in the middle of the closest main (asphalt) road.
 +p6 is always 3.0
 +p7 is always 0.
 +
 +Known node types: simple path/asphalt road, only asphalt road, water, under the map at always the same coords. 
 +
 +The node types follows a pattern. For example, every fourth node is of the type water i.e. 3, 7, 11, 15, 19, 23, 27, 31, 35, 39... 239. Could not see any difference between nodes within certain types. 
 +Starting at 2, every fourth node is under the map, always same coords.
 +Same with only asphalt road (0, 4, 8, etc) and simple path/asphalt road (1, 5, 9, etc).
 +
 +gtaforums.com/topic/843561-pathfind-node-types
 +
 +Example of usage, moving vehicle to closest path/road:
 +Vector3 coords = ENTITY::GET_ENTITY_COORDS(playerVeh, true);
 +Vector3 closestVehicleNodeCoords; 
 +float roadHeading; 
 +PATHFIND::GET_CLOSEST_VEHICLE_NODE_WITH_HEADING(coords.x, coords.y, coords.z, &closestVehicleNodeCoords, &roadHeading, 1, 3, 0); 
 +ENTITY::SET_ENTITY_HEADING(playerVeh, roadHeading);
 +ENTITY::SET_ENTITY_COORDS(playerVeh, closestVehicleNodeCoords.x, closestVehicleNodeCoords.y, closestVehicleNodeCoords.z, 1, 0, 0, 1);
 +VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(playerVeh);
 +
 +------------------------------------------------------------------
 +C# Example (ins1de) : pastebin.com/fxtMWAHD</code>
 +==== GET_NTH_CLOSEST_VEHICLE_NODE ====
 +<code cpp>BOOL PATHFIND::GET_NTH_CLOSEST_VEHICLE_NODE(float x, float y, float z, int nthClosest, Vector3* outPosition, Any unknown1, Any unknown2, Any unknown3) // 0xE50E52416CCF948B 0xF125BFCC b323</code>
 +
 +==== GET_NTH_CLOSEST_VEHICLE_NODE_ID ====
 +<code cpp>int PATHFIND::GET_NTH_CLOSEST_VEHICLE_NODE_ID(float x, float y, float z, int nth, int nodetype, float p5, float p6) // 0x22D7275A79FE8215 0x3F358BEA b323</code>
 +
 +<code>Returns the id.</code>
 +==== GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING ====
 +<code cpp>BOOL PATHFIND::GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING(float x, float y, float z, int nthClosest, Vector3* outPosition, float* outHeading, Any* unknown1, int unknown2, float unknown3, float unknown4) // 0x80CA6A8B6C094CC4 0x7349C856 b323</code>
 +
 +<code>Get the nth closest vehicle node and its heading. (unknown2 = 9, unknown3 = 3.0, unknown4 = 2.5)</code>
 +==== GET_NTH_CLOSEST_VEHICLE_NODE_ID_WITH_HEADING ====
 +<code cpp>int PATHFIND::GET_NTH_CLOSEST_VEHICLE_NODE_ID_WITH_HEADING(float x, float y, float z, int nthClosest, Vector3* outPosition, float* outHeading, Any p6, float p7, float p8) // 0x6448050E9C2A7207 0xC1AEB88D b323</code>
 +
 +==== GET_NTH_CLOSEST_VEHICLE_NODE_FAVOUR_DIRECTION ====
 +<code cpp>BOOL PATHFIND::GET_NTH_CLOSEST_VEHICLE_NODE_FAVOUR_DIRECTION(float x, float y, float z, float desiredX, float desiredY, float desiredZ, int nthClosest, Vector3* outPosition, float* outHeading, int nodetype, float p10, Any p11) // 0x45905BE8654AE067 0x928A4DEC b323</code>
 +
 +<code>See gtaforums.com/topic/843561-pathfind-node-types for node type info. 0 = paved road only, 1 = any road, 3 = water
 +
 +p10 always equals 3.0
 +p11 always equals 0</code>
 +==== GET_VEHICLE_NODE_PROPERTIES ====
 +<code cpp>BOOL PATHFIND::GET_VEHICLE_NODE_PROPERTIES(float x, float y, float z, int* density, int* flags) // 0x0568566ACBB5DEDC 0xCC90110B b323</code>
 +
 +<code>MulleDK19: Gets the density and flags of the closest node to the specified position.
 +Density is a value between 0 and 15, indicating how busy the road is.
 +Flags is a bit field.</code>
 +==== IS_VEHICLE_NODE_ID_VALID ====
 +<code cpp>BOOL PATHFIND::IS_VEHICLE_NODE_ID_VALID(int vehicleNodeId) // 0x1EAF30FCFBF5AF74 0x57DFB1EF b323</code>
 +
 +<code>Returns true if the id is non zero.</code>
 +==== GET_VEHICLE_NODE_POSITION ====
 +<code cpp>void PATHFIND::GET_VEHICLE_NODE_POSITION(int nodeId, Vector3* outPosition) // 0x703123E5E7D429C2 0xE38E252D b323</code>
 +
 +<code>Calling this with an invalid node id, will crash the game.
 +Note that IS_VEHICLE_NODE_ID_VALID simply checks if nodeId is not zero. It does not actually ensure that the id is valid.
 +Eg. IS_VEHICLE_NODE_ID_VALID(1) will return true, but will crash when calling GET_VEHICLE_NODE_POSITION().</code>
 +==== GET_VEHICLE_NODE_IS_GPS_ALLOWED ====
 +<code cpp>BOOL PATHFIND::GET_VEHICLE_NODE_IS_GPS_ALLOWED(int nodeID) // 0xA2AE5C478B96E3B6 0xEE4B1219 b323</code>
 +
 +<code>Returns false for nodes that aren't used for GPS routes.
 +Example:
 +Nodes in Fort Zancudo and LSIA are false</code>
 +==== GET_VEHICLE_NODE_IS_SWITCHED_OFF ====
 +<code cpp>BOOL PATHFIND::GET_VEHICLE_NODE_IS_SWITCHED_OFF(int nodeID) // 0x4F5070AA58F69279 0x56737A3C b323</code>
 +
 +<code>Returns true when the node is Offroad. Alleys, some dirt roads, and carparks return true.
 +Normal roads where plenty of Peds spawn will return false</code>
 +==== GET_CLOSEST_ROAD ====
 +<code cpp>Any PATHFIND::GET_CLOSEST_ROAD(float x, float y, float z, float p3, int p4, Vector3* p5, Vector3* p6, Any* p7, Any* p8, float* p9, BOOL p10) // 0x132F52BBA570FE92 0x567B0E11 b323</code>
 +
 +<code>p1 seems to be always 1.0f in the scripts</code>
 +==== _SET_ALL_PATHS_CACHE_BOUNDINGSTRUCT ====
 +<code cpp>void PATHFIND::_SET_ALL_PATHS_CACHE_BOUNDINGSTRUCT(BOOL toggle) // 0x228E5C6AD4D74BFD 0xD6A3B458 b323</code>
 +
 +<code>Toggles a global boolean, name is probably a hash collision but describes its functionality.</code>
 +==== _SET_AI_GLOBAL_PATH_NODES_TYPE ====
 +<code cpp>void PATHFIND::_SET_AI_GLOBAL_PATH_NODES_TYPE(int type) // 0xF74B1FFA4A15FBEA  b2189</code>
 +
 +<code>Activates Cayo Perico path nodes if passed `1`. GPS navigation will start working, maybe more stuff will change, not sure. It seems if you try to unload (pass `0`) when close to the island, your game might crash.</code>
 +==== ARE_NODES_LOADED_FOR_AREA ====
 +<code cpp>BOOL PATHFIND::ARE_NODES_LOADED_FOR_AREA(float x1, float y1, float x2, float y2) // 0xF7B79A50B905A30D 0x86E80A17 b323</code>
 +
 +<code>ARE_*</code>
 +==== _REQUEST_PATHS_PREFER_ACCURATE_BOUNDINGSTRUCT ====
 +<code cpp>BOOL PATHFIND::_REQUEST_PATHS_PREFER_ACCURATE_BOUNDINGSTRUCT(float x1, float y1, float x2, float y2) // 0x07FB139B592FA687 0x2CDA5012 b323</code>
 +
 +<code>Used internally for long range tasks</code>
 +==== SET_ROADS_BACK_TO_ORIGINAL ====
 +<code cpp>void PATHFIND::SET_ROADS_BACK_TO_ORIGINAL(float p0, float p1, float p2, float p3, float p4, float p5, Any p6) // 0x1EE7063B80FFC77C 0x86AC4A85 b323</code>
 +
 +<code>missing a last parameter int p6 </code>
 +==== SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA ====
 +<code cpp>void PATHFIND::SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(float x1, float y1, float z1, float x2, float y2, float z2, float width, Any p7) // 0x0027501B9F3B407E 0x9DB5D209 b323</code>
 +
 +<code>See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
 +bool p7 - always 1</code>
 +==== SET_AMBIENT_PED_RANGE_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void PATHFIND::SET_AMBIENT_PED_RANGE_MULTIPLIER_THIS_FRAME(float multiplier) // 0x0B919E1FB47CC4E0 0x3C5085E4 b323</code>
 +
 +==== _0xAA76052DDA9BFC3E ====
 +<code cpp>void PATHFIND::_0xAA76052DDA9BFC3E(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xAA76052DDA9BFC3E 0xD0F51299 b323</code>
 +
 +==== SET_PED_PATHS_BACK_TO_ORIGINAL ====
 +<code cpp>void PATHFIND::SET_PED_PATHS_BACK_TO_ORIGINAL(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xE04B48F2CC926253 0x3F1ABDA4 b323</code>
 +
 +==== GET_RANDOM_VEHICLE_NODE ====
 +<code cpp>BOOL PATHFIND::GET_RANDOM_VEHICLE_NODE(float x, float y, float z, float radius, BOOL p4, BOOL p5, BOOL p6, Vector3* outPosition, int* nodeId) // 0x93E0DB8440B73A7D 0xAD1476EA b323</code>
 +
 +==== GET_STREET_NAME_AT_COORD ====
 +<code cpp>void PATHFIND::GET_STREET_NAME_AT_COORD(float x, float y, float z, Hash* streetName, Hash* crossingRoad) // 0x2EB41072B4C1E4C0 0xDEBEEFCF b323</code>
 +
 +<code>Determines the name of the street which is the closest to the given coordinates.
 +
 +x,y,z - the coordinates of the street
 +streetName - returns a hash to the name of the street the coords are on
 +crossingRoad - if the coordinates are on an intersection, a hash to the name of the crossing road
 +
 +Note: the names are returned as hashes, the strings can be returned using the function HUD::GET_STREET_NAME_FROM_HASH_KEY.</code>
 +==== GENERATE_DIRECTIONS_TO_COORD ====
 +<code cpp>int PATHFIND::GENERATE_DIRECTIONS_TO_COORD(float x, float y, float z, BOOL p3, int* direction, float* p5, float* distToNxJunction) // 0xF90125F1F79ECDF8 0xED35C094 b323</code>
 +
 +<code>p3 is 0 in the only game script occurrence (trevor3) but 1 doesn't seem to make a difference
 +
 +distToNxJunction seems to be the distance in metres * 10.0f
 +
 +direction:
 +0 = This happens randomly during the drive for seemingly no reason but if you consider that this native is only used in trevor3, it seems to mean "Next frame, stop whatever's being said and tell the player the direction."
 +1 = Route is being calculated or the player is going in the wrong direction
 +2 = Please Proceed the Highlighted Route
 +3 = In (distToNxJunction) Turn Left
 +4 = In (distToNxJunction) Turn Right
 +5 = In (distToNxJunction) Keep Straight
 +6 = In (distToNxJunction) Turn Sharply To The Left
 +7 = In (distToNxJunction) Turn Sharply To The Right
 +8 = Route is being recalculated or the navmesh is confusing. This happens randomly during the drive but consistently at {2044.0358, 2996.6116, 44.9717} if you face towards the bar and the route needs you to turn right. In that particular case, it could be a bug with how the turn appears to be 270 deg. CCW instead of "right." Either way, this seems to be the engine saying "I don't know the route right now."
 +
 +return value set to 0 always</code>
 +==== SET_IGNORE_NO_GPS_FLAG ====
 +<code cpp>void PATHFIND::SET_IGNORE_NO_GPS_FLAG(BOOL toggle) // 0x72751156E7678833 0xB72CF194 b323</code>
 +
 +==== _SET_IGNORE_SECONDARY_ROUTE_NODES ====
 +<code cpp>void PATHFIND::_SET_IGNORE_SECONDARY_ROUTE_NODES(BOOL toggle) // 0x1FC289A0C3FF470F 0x90DF7A4C b323</code>
 +
 +<code>See: SET_BLIP_ROUTE</code>
 +==== SET_GPS_DISABLED_ZONE ====
 +<code cpp>void PATHFIND::SET_GPS_DISABLED_ZONE(float x1, float y1, float z1, float x2, float y2, float z3) // 0xDC20483CD3DD5201 0x720B8073 b323</code>
 +
 +==== GET_GPS_BLIP_ROUTE_LENGTH ====
 +<code cpp>int PATHFIND::GET_GPS_BLIP_ROUTE_LENGTH() // 0xBBB45C3CF5C8AA85 0x4B770634 b323</code>
 +
 +==== _0xF3162836C28F9DA5 ====
 +<code cpp>Any PATHFIND::_0xF3162836C28F9DA5(Any p0, Any p1, Any p2, Any p3) // 0xF3162836C28F9DA5  b505</code>
 +
 +==== GET_GPS_BLIP_ROUTE_FOUND ====
 +<code cpp>BOOL PATHFIND::GET_GPS_BLIP_ROUTE_FOUND() // 0x869DAACBBE9FA006 0x286F82CC b323</code>
 +
 +==== _GET_ROAD_SIDE_POINT_WITH_HEADING ====
 +<code cpp>BOOL PATHFIND::_GET_ROAD_SIDE_POINT_WITH_HEADING(float x, float y, float z, float heading, Vector3* outPosition) // 0xA0F8A7517A273C05  b463</code>
 +
 +==== _GET_POINT_ON_ROAD_SIDE ====
 +<code cpp>BOOL PATHFIND::_GET_POINT_ON_ROAD_SIDE(float x, float y, float z, int p3, Vector3* outPosition) // 0x16F46FB18C8009E4 0xF6422F9A b323</code>
 +
 +==== IS_POINT_ON_ROAD ====
 +<code cpp>BOOL PATHFIND::IS_POINT_ON_ROAD(float x, float y, float z, Vehicle vehicle) // 0x125BF4ABFC536B09 0xCF198055 b323</code>
 +
 +<code>Gets a value indicating whether the specified position is on a road.
 +The vehicle parameter is not implemented (ignored).
 +
 +-MulleDK19</code>
 +==== GET_NEXT_GPS_DISABLED_ZONE_INDEX ====
 +<code cpp>int PATHFIND::GET_NEXT_GPS_DISABLED_ZONE_INDEX() // 0xD3A6A0EF48823A8C 0xBE92551F b323</code>
 +
 +<code>Gets the next zone that has been disabled using SET_GPS_DISABLED_ZONE_AT_INDEX.</code>
 +==== SET_GPS_DISABLED_ZONE_AT_INDEX ====
 +<code cpp>void PATHFIND::SET_GPS_DISABLED_ZONE_AT_INDEX(float x1, float y1, float z1, float x2, float y2, float z2, int index) // 0xD0BC1C6FB18EE154 0x98BDB311 b323</code>
 +
 +<code>Disables the GPS route displayed on the minimap while within a certain zone (area). When in a disabled zone and creating a waypoint, the GPS route is not shown on the minimap until you are outside of the zone. When disabled, the direct distance is shown on minimap opposed to distance to travel. Seems to only work before setting a waypoint.
 +You can clear the disabled zone with CLEAR_GPS_DISABLED_ZONE_AT_INDEX.
 +
 +**Setting a waypoint at the same coordinate:**
 +Disabled Zone: https://i.imgur.com/P9VUuxM.png
 +Enabled Zone (normal): https://i.imgur.com/BPi24aw.png</code>
 +==== CLEAR_GPS_DISABLED_ZONE_AT_INDEX ====
 +<code cpp>void PATHFIND::CLEAR_GPS_DISABLED_ZONE_AT_INDEX(int index) // 0x2801D0012266DF07 0x59090745 b323</code>
 +
 +<code>Clears a disabled GPS route area from a certain index previously set using `SET_GPS_DISABLED_ZONE_AT_INDEX`.</code>
 +==== ADD_NAVMESH_REQUIRED_REGION ====
 +<code cpp>void PATHFIND::ADD_NAVMESH_REQUIRED_REGION(float x, float y, float radius) // 0x387EAD7EE42F6685 0x12B086EA b323</code>
 +
 +==== REMOVE_NAVMESH_REQUIRED_REGIONS ====
 +<code cpp>void PATHFIND::REMOVE_NAVMESH_REQUIRED_REGIONS() // 0x916F0A3CDEC3445E 0x637BB680 b323</code>
 +
 +==== _IS_NAVMESH_REQUIRED_REGION_OWNED_BY_ANY_THREAD ====
 +<code cpp>BOOL PATHFIND::_IS_NAVMESH_REQUIRED_REGION_OWNED_BY_ANY_THREAD() // 0x705A844002B39DC0  b944</code>
 +
 +<code>IS_*</code>
 +==== DISABLE_NAVMESH_IN_AREA ====
 +<code cpp>void PATHFIND::DISABLE_NAVMESH_IN_AREA(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x4C8872D8CDBE1B8B 0x6E37F132 b323</code>
 +
 +==== ARE_ALL_NAVMESH_REGIONS_LOADED ====
 +<code cpp>BOOL PATHFIND::ARE_ALL_NAVMESH_REGIONS_LOADED() // 0x8415D95B194A3AEA 0x34C4E789 b323</code>
 +
 +==== IS_NAVMESH_LOADED_IN_AREA ====
 +<code cpp>BOOL PATHFIND::IS_NAVMESH_LOADED_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2) // 0xF813C7E63F9062A5 0x4C2BA99E b323</code>
 +
 +<code>Returns whether navmesh for the region is loaded. The region is a rectangular prism defined by it's top left deepest corner to it's bottom right shallowest corner.
 +
 +If you can re-word this so it makes more sense, please do. I'm horrible with words sometimes...</code>
 +==== _0x01708E8DD3FF8C65 ====
 +<code cpp>Any PATHFIND::_0x01708E8DD3FF8C65(float p0, float p1, float p2, float p3, float p4, float p5) // 0x01708E8DD3FF8C65  b323</code>
 +
 +==== ADD_NAVMESH_BLOCKING_OBJECT ====
 +<code cpp>Any PATHFIND::ADD_NAVMESH_BLOCKING_OBJECT(float p0, float p1, float p2, float p3, float p4, float p5, float p6, BOOL p7, Any p8) // 0xFCD5C8E06E502F5A 0x2952BA56 b323</code>
 +
 +==== UPDATE_NAVMESH_BLOCKING_OBJECT ====
 +<code cpp>void PATHFIND::UPDATE_NAVMESH_BLOCKING_OBJECT(Any p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, Any p8) // 0x109E99373F290687 0x4E9776D0 b323</code>
 +
 +==== REMOVE_NAVMESH_BLOCKING_OBJECT ====
 +<code cpp>void PATHFIND::REMOVE_NAVMESH_BLOCKING_OBJECT(Any p0) // 0x46399A7895957C0E 0x098602B0 b323</code>
 +
 +==== DOES_NAVMESH_BLOCKING_OBJECT_EXIST ====
 +<code cpp>BOOL PATHFIND::DOES_NAVMESH_BLOCKING_OBJECT_EXIST(Any p0) // 0x0EAEB0DB4B132399 0x4B67D7EE b323</code>
 +
 +==== _GET_HEIGHTMAP_TOP_Z_FOR_POSITION ====
 +<code cpp>float PATHFIND::_GET_HEIGHTMAP_TOP_Z_FOR_POSITION(float x, float y) // 0x29C24BFBED8AB8FB 0x3FE8C5A0 b323</code>
 +
 +<code>Returns CGameWorldHeightMap's maximum Z value at specified point (grid node).</code>
 +==== _GET_HEIGHTMAP_TOP_Z_FOR_AREA ====
 +<code cpp>float PATHFIND::_GET_HEIGHTMAP_TOP_Z_FOR_AREA(float x1, float y1, float x2, float y2) // 0x8ABE8608576D9CE3 0x3ED21C90 b323</code>
 +
 +<code>Returns CGameWorldHeightMap's maximum Z among all grid nodes that intersect with the specified rectangle.</code>
 +==== _GET_HEIGHTMAP_BOTTOM_Z_FOR_POSITION ====
 +<code cpp>float PATHFIND::_GET_HEIGHTMAP_BOTTOM_Z_FOR_POSITION(float x, float y) // 0x336511A34F2E5185 0xA07C5B7D b323</code>
 +
 +<code>Returns CGameWorldHeightMap's minimum Z value at specified point (grid node).</code>
 +==== _GET_HEIGHTMAP_BOTTOM_Z_FOR_AREA ====
 +<code cpp>float PATHFIND::_GET_HEIGHTMAP_BOTTOM_Z_FOR_AREA(float x1, float y1, float x2, float y2) // 0x3599D741C9AC6310 0x76751DD4 b323</code>
 +
 +<code>Returns CGameWorldHeightMap's minimum Z among all grid nodes that intersect with the specified rectangle.</code>
 +==== CALCULATE_TRAVEL_DISTANCE_BETWEEN_POINTS ====
 +<code cpp>float PATHFIND::CALCULATE_TRAVEL_DISTANCE_BETWEEN_POINTS(float x1, float y1, float z1, float x2, float y2, float z2) // 0xADD95C7005C4A197 0xB114489B b323</code>
 +
 +<code>Calculates the travel distance between a set of points.
 +
 +Doesn't seem to correlate with distance on gps sometimes.
 +This function returns the value 100000.0 over long distances, seems to be a failure mode result, potentially occurring when not all path nodes are loaded into pathfind.</code>
 +
 +===== PED =====
 +==== CREATE_PED ====
 +<code cpp>Ped PED::CREATE_PED(int pedType, Hash modelHash, float x, float y, float z, float heading, BOOL isNetwork, BOOL bScriptHostPed) // 0xD49F9B0955C367DE 0x0389EF71 b323</code>
 +
 +<code>https://alloc8or.re/gta5/doc/enums/ePedType.txt
 +
 +Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json</code>
 +==== DELETE_PED ====
 +<code cpp>void PED::DELETE_PED(Ped* ped) // 0x9614299DCB53E54B 0x13EFB9A0 b323</code>
 +
 +<code>Deletes the specified ped, then sets the handle pointed to by the pointer to NULL.</code>
 +==== CLONE_PED ====
 +<code cpp>Ped PED::CLONE_PED(Ped ped, float heading, BOOL isNetwork, BOOL bScriptHostPed) // 0xEF29A16337FACADB 0x8C8A8D6E b323</code>
 +
 +<code>Example of Cloning Your Player:
 +CLONE_PED(PLAYER_PED_ID(), GET_ENTITY_HEADING(PLAYER_PED_ID()), 0, 1);</code>
 +==== _CLONE_PED_EX ====
 +<code cpp>Ped PED::_CLONE_PED_EX(Ped ped, float heading, BOOL isNetwork, BOOL bScriptHostPed, Any p4) // 0x668FD40BCBA5DE48  b463</code>
 +
 +<code>Used one time in fmmc_launcher.c instead of CLONE_PED because ?</code>
 +==== CLONE_PED_TO_TARGET ====
 +<code cpp>void PED::CLONE_PED_TO_TARGET(Ped ped, Ped targetPed) // 0xE952D6431689AD9A 0xFC70EEC7 b323</code>
 +
 +<code>Copies ped's components and props to targetPed.</code>
 +==== _CLONE_PED_TO_TARGET_EX ====
 +<code cpp>void PED::_CLONE_PED_TO_TARGET_EX(Ped ped, Ped targetPed, Any p2) // 0x148B08C2D2ACB884  b463</code>
 +
 +==== IS_PED_IN_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_IN_VEHICLE(Ped ped, Vehicle vehicle, BOOL atGetIn) // 0xA3EE4A07279BB9DB 0x7DA6BC83 b323</code>
 +
 +<code>Gets a value indicating whether the specified ped is in the specified vehicle.
 +
 +If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.</code>
 +==== IS_PED_IN_MODEL ====
 +<code cpp>BOOL PED::IS_PED_IN_MODEL(Ped ped, Hash modelHash) // 0x796D90EFB19AA332 0xA6438D4B b323</code>
 +
 +==== IS_PED_IN_ANY_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_VEHICLE(Ped ped, BOOL atGetIn) // 0x997ABD671D25CA0B 0x3B0171EE b323</code>
 +
 +<code>Gets a value indicating whether the specified ped is in any vehicle.
 +
 +If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.</code>
 +==== IS_COP_PED_IN_AREA_3D ====
 +<code cpp>BOOL PED::IS_COP_PED_IN_AREA_3D(float x1, float y1, float z1, float x2, float y2, float z2) // 0x16EC4839969F9F5E 0xB98DB96B b323</code>
 +
 +<code>xyz - relative to the world origin.</code>
 +==== IS_PED_INJURED ====
 +<code cpp>BOOL PED::IS_PED_INJURED(Ped ped) // 0x84A2DD9AC37C35C1 0x2530A087 b323</code>
 +
 +<code>Gets a value indicating whether this ped's health is below its injured threshold.
 +
 +The default threshold is 100.</code>
 +==== IS_PED_HURT ====
 +<code cpp>BOOL PED::IS_PED_HURT(Ped ped) // 0x5983BB449D7FDB12 0x69DFA0AF b323</code>
 +
 +<code>Returns whether the specified ped is hurt.</code>
 +==== IS_PED_FATALLY_INJURED ====
 +<code cpp>BOOL PED::IS_PED_FATALLY_INJURED(Ped ped) // 0xD839450756ED5A80 0xBADA0093 b323</code>
 +
 +<code>Gets a value indicating whether this ped's health is below its fatally injured threshold. The default threshold is 100.
 +If the handle is invalid, the function returns true.</code>
 +==== IS_PED_DEAD_OR_DYING ====
 +<code cpp>BOOL PED::IS_PED_DEAD_OR_DYING(Ped ped, BOOL p1) // 0x3317DEDB88C95038 0xCBDB7739 b323</code>
 +
 +<code>Seems to consistently return true if the ped is dead.
 +
 +p1 is always passed 1 in the scripts.
 +
 +I suggest to remove "OR_DYING" part, because it does not detect dying phase.
 +
 +That's what the devs call it, cry about it.
 +
 +lol</code>
 +==== IS_CONVERSATION_PED_DEAD ====
 +<code cpp>BOOL PED::IS_CONVERSATION_PED_DEAD(Ped ped) // 0xE0A0AEC214B1FABA 0x1FA39EFE b323</code>
 +
 +==== IS_PED_AIMING_FROM_COVER ====
 +<code cpp>BOOL PED::IS_PED_AIMING_FROM_COVER(Ped ped) // 0x3998B1276A3300E5 0xDEBAB2AF b323</code>
 +
 +==== IS_PED_RELOADING ====
 +<code cpp>BOOL PED::IS_PED_RELOADING(Ped ped) // 0x24B100C68C645951 0x961E1745 b323</code>
 +
 +<code>Returns whether the specified ped is reloading.</code>
 +==== IS_PED_A_PLAYER ====
 +<code cpp>BOOL PED::IS_PED_A_PLAYER(Ped ped) // 0x12534C348C6CB68B 0x404794CA b323</code>
 +
 +<code>Returns true if the given ped has a valid pointer to CPlayerInfo in its CPed class. That's all.</code>
 +==== CREATE_PED_INSIDE_VEHICLE ====
 +<code cpp>Ped PED::CREATE_PED_INSIDE_VEHICLE(Vehicle vehicle, int pedType, Hash modelHash, int seat, BOOL isNetwork, BOOL bScriptHostPed) // 0x7DD959874C1FD534 0x3000F092 b323</code>
 +
 +<code>pedType: see CREATE_PED
 +
 +Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json</code>
 +==== SET_PED_DESIRED_HEADING ====
 +<code cpp>void PED::SET_PED_DESIRED_HEADING(Ped ped, float heading) // 0xAA5A7ECE2AA8FE70 0x961458F9 b323</code>
 +
 +==== _FREEZE_PED_CAMERA_ROTATION ====
 +<code cpp>void PED::_FREEZE_PED_CAMERA_ROTATION(Ped ped) // 0xFF287323B0E2C69A 0x290421BE b323</code>
 +
 +==== IS_PED_FACING_PED ====
 +<code cpp>BOOL PED::IS_PED_FACING_PED(Ped ped, Ped otherPed, float angle) // 0xD71649DB0A545AA3 0x0B775838 b323</code>
 +
 +<code>angle is ped's view cone</code>
 +==== IS_PED_IN_MELEE_COMBAT ====
 +<code cpp>BOOL PED::IS_PED_IN_MELEE_COMBAT(Ped ped) // 0x4E209B2C1EAD5159 0xFD7814A5 b323</code>
 +
 +<code>Notes: The function only returns true while the ped is: 
 +A.) Swinging a random melee attack (including pistol-whipping)
 +
 +B.) Reacting to being hit by a melee attack (including pistol-whipping)
 +
 +C.) Is locked-on to an enemy (arms up, strafing/skipping in the default fighting-stance, ready to dodge+counter). 
 +
 +You don't have to be holding the melee-targetting button to be in this stance; you stay in it by default for a few seconds after swinging at someone. If you do a sprinting punch, it returns true for the duration of the punch animation and then returns false again, even if you've punched and made-angry many peds</code>
 +==== IS_PED_STOPPED ====
 +<code cpp>BOOL PED::IS_PED_STOPPED(Ped ped) // 0x530944F6F4B8A214 0xA0DC0B87 b323</code>
 +
 +<code>Returns true if the ped doesn't do any movement. If the ped is being pushed forwards by using APPLY_FORCE_TO_ENTITY for example, the function returns false.</code>
 +==== IS_PED_SHOOTING_IN_AREA ====
 +<code cpp>BOOL PED::IS_PED_SHOOTING_IN_AREA(Ped ped, float x1, float y1, float z1, float x2, float y2, float z2, BOOL p7, BOOL p8) // 0x7E9DFE24AC1E58EF 0x741BF04F b323</code>
 +
 +==== IS_ANY_PED_SHOOTING_IN_AREA ====
 +<code cpp>BOOL PED::IS_ANY_PED_SHOOTING_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL p6, BOOL p7) // 0xA0D3D71EA1086C55 0x91833867 b323</code>
 +
 +==== IS_PED_SHOOTING ====
 +<code cpp>BOOL PED::IS_PED_SHOOTING(Ped ped) // 0x34616828CD07F1A1 0xE7C3405E b323</code>
 +
 +<code>Returns whether the specified ped is shooting.</code>
 +==== SET_PED_ACCURACY ====
 +<code cpp>void PED::SET_PED_ACCURACY(Ped ped, int accuracy) // 0x7AEFB85C1D49DEB6 0x6C17122E b323</code>
 +
 +<code>accuracy = 0-100, 100 being perfectly accurate</code>
 +==== GET_PED_ACCURACY ====
 +<code cpp>int PED::GET_PED_ACCURACY(Ped ped) // 0x37F4AD56ECBC0CD6 0x0A2A0AA0 b323</code>
 +
 +==== _0x87DDEB611B329A9C ====
 +<code cpp>void PED::_0x87DDEB611B329A9C(float multiplier) // 0x87DDEB611B329A9C  b1103</code>
 +
 +<code>SET_A*</code>
 +==== IS_PED_MODEL ====
 +<code cpp>BOOL PED::IS_PED_MODEL(Ped ped, Hash modelHash) // 0xC9D55B1A358A5BF7 0x5F1DDFCB b323</code>
 +
 +==== EXPLODE_PED_HEAD ====
 +<code cpp>void PED::EXPLODE_PED_HEAD(Ped ped, Hash weaponHash) // 0x2D05CED3A38D0F3A 0x05CC1380 b323</code>
 +
 +<code>Forces the ped to fall back and kills it.
 +
 +It doesn't really explode the ped's head but it kills the ped</code>
 +==== REMOVE_PED_ELEGANTLY ====
 +<code cpp>void PED::REMOVE_PED_ELEGANTLY(Ped* ped) // 0xAC6D445B994DF95E 0x4FFB8C6C b323</code>
 +
 +<code>Judging purely from a quick disassembly, if the ped is in a vehicle, the ped will be deleted immediately. If not, it'll be marked as no longer needed. - very elegant..</code>
 +==== ADD_ARMOUR_TO_PED ====
 +<code cpp>void PED::ADD_ARMOUR_TO_PED(Ped ped, int amount) // 0x5BA652A0CD14DF2F 0xF686B26E b323</code>
 +
 +<code>Same as SET_PED_ARMOUR, but ADDS 'amount' to the armor the Ped already has.</code>
 +==== SET_PED_ARMOUR ====
 +<code cpp>void PED::SET_PED_ARMOUR(Ped ped, int amount) // 0xCEA04D83135264CC 0x4E3A0CC4 b323</code>
 +
 +<code>Sets the armor of the specified ped.
 +
 +ped: The Ped to set the armor of.
 +amount: A value between 0 and 100 indicating the value to set the Ped's armor to.</code>
 +==== SET_PED_INTO_VEHICLE ====
 +<code cpp>void PED::SET_PED_INTO_VEHICLE(Ped ped, Vehicle vehicle, int seatIndex) // 0xF75B0D629E1C063D 0x07500C79 b323</code>
 +
 +<code>Ped: The ped to warp.
 +vehicle: The vehicle to warp the ped into.
 +Seat_Index: [-1 is driver seat, -2 first free passenger seat]
 +
 +Moreinfo of Seat Index
 +DriverSeat = -1
 +Passenger = 0
 +Left Rear = 1
 +RightRear = 2</code>
 +==== SET_PED_ALLOW_VEHICLES_OVERRIDE ====
 +<code cpp>void PED::SET_PED_ALLOW_VEHICLES_OVERRIDE(Ped ped, BOOL toggle) // 0x3C028C636A414ED9 0x58A80BD5 b323</code>
 +
 +==== CAN_CREATE_RANDOM_PED ====
 +<code cpp>BOOL PED::CAN_CREATE_RANDOM_PED(BOOL unk) // 0x3E8349C08E4B82E4 0xF9ABE88F b323</code>
 +
 +==== CREATE_RANDOM_PED ====
 +<code cpp>Ped PED::CREATE_RANDOM_PED(float posX, float posY, float posZ) // 0xB4AC7D0CF06BFE8F 0x5A949543 b323</code>
 +
 +<code>vb.net
 +Dim ped_handle As Integer
 +                    With Game.Player.Character
 +                        Dim pos As Vector3 = .Position + .ForwardVector * 3
 +                        ped_handle = Native.Function.Call(Of Integer)(Hash.CREATE_RANDOM_PED, pos.X, pos.Y, pos.Z)
 +                    End With
 +
 +Creates a Ped at the specified location, returns the Ped Handle.  
 +Ped will not act until SET_PED_AS_NO_LONGER_NEEDED is called.</code>
 +==== CREATE_RANDOM_PED_AS_DRIVER ====
 +<code cpp>Ped PED::CREATE_RANDOM_PED_AS_DRIVER(Vehicle vehicle, BOOL returnHandle) // 0x9B62392B474F44A0 0xB927CE9A b323</code>
 +
 +==== CAN_CREATE_RANDOM_DRIVER ====
 +<code cpp>BOOL PED::CAN_CREATE_RANDOM_DRIVER() // 0xB8EB95E5B4E56978 0x99861609 b323</code>
 +
 +==== CAN_CREATE_RANDOM_BIKE_RIDER ====
 +<code cpp>BOOL PED::CAN_CREATE_RANDOM_BIKE_RIDER() // 0xEACEEDA81751915C 0x7018BE31 b323</code>
 +
 +==== SET_PED_MOVE_ANIMS_BLEND_OUT ====
 +<code cpp>void PED::SET_PED_MOVE_ANIMS_BLEND_OUT(Ped ped) // 0x9E8C908F41584ECD 0x20E01957 b323</code>
 +
 +==== SET_PED_CAN_BE_DRAGGED_OUT ====
 +<code cpp>void PED::SET_PED_CAN_BE_DRAGGED_OUT(Ped ped, BOOL toggle) // 0xC1670E958EEE24E5 0xAA7F1131 b323</code>
 +
 +==== _0xF2BEBCDFAFDAA19E ====
 +<code cpp>void PED::_0xF2BEBCDFAFDAA19E(BOOL toggle) // 0xF2BEBCDFAFDAA19E 0x6CD58238 b323</code>
 +
 +<code>SET_PED_ALLOW*
 +
 +toggle was always false except in one instance (b678).
 +
 +The one time this is set to true seems to do with when you fail the mission.</code>
 +==== IS_PED_MALE ====
 +<code cpp>BOOL PED::IS_PED_MALE(Ped ped) // 0x6D9F5FAA7488BA46 0x90950455 b323</code>
 +
 +<code>Returns true/false if the ped is/isn't male.</code>
 +==== IS_PED_HUMAN ====
 +<code cpp>BOOL PED::IS_PED_HUMAN(Ped ped) // 0xB980061DA992779D 0x194BB7B0 b323</code>
 +
 +<code>Returns true/false if the ped is/isn't humanoid.</code>
 +==== GET_VEHICLE_PED_IS_IN ====
 +<code cpp>Vehicle PED::GET_VEHICLE_PED_IS_IN(Ped ped, BOOL includeLastVehicle) // 0x9A9112A0FE9A4713 0xAFE92319 b323</code>
 +
 +<code>Gets the vehicle the specified Ped is in. Returns 0 if the ped is/was not in a vehicle.
 +If the Ped is not in a vehicle and includeLastVehicle is true, the vehicle they were last in is returned.</code>
 +==== RESET_PED_LAST_VEHICLE ====
 +<code cpp>void PED::RESET_PED_LAST_VEHICLE(Ped ped) // 0xBB8DE8CF6A8DD8BB 0x5E3B5942 b323</code>
 +
 +<code>Resets the value for the last vehicle driven by the Ped.</code>
 +==== SET_PED_DENSITY_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void PED::SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(float multiplier) // 0x95E3D6257B166CF2 0x039C82BB b323</code>
 +
 +==== SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void PED::SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(float p0, float p1) // 0x7A556143A1C03898 0x2909ABF0 b323</code>
 +
 +==== _0x5A7F62FDA59759BD ====
 +<code cpp>void PED::_0x5A7F62FDA59759BD() // 0x5A7F62FDA59759BD 0xB48C0C04 b323</code>
 +
 +==== SET_SCRIPTED_CONVERSION_COORD_THIS_FRAME ====
 +<code cpp>void PED::SET_SCRIPTED_CONVERSION_COORD_THIS_FRAME(float x, float y, float z) // 0x5086C7843552CF85 0x25EA2AA5 b323</code>
 +
 +==== SET_PED_NON_CREATION_AREA ====
 +<code cpp>void PED::SET_PED_NON_CREATION_AREA(float x1, float y1, float z1, float x2, float y2, float z2) // 0xEE01041D559983EA 0x7A97283F b323</code>
 +
 +<code>The distance between these points, is the diagonal of a box (remember it's 3D).</code>
 +==== CLEAR_PED_NON_CREATION_AREA ====
 +<code cpp>void PED::CLEAR_PED_NON_CREATION_AREA() // 0x2E05208086BA0651 0x6F7043A3 b323</code>
 +
 +==== INSTANTLY_FILL_PED_POPULATION ====
 +<code cpp>void PED::INSTANTLY_FILL_PED_POPULATION() // 0x4759CC730F947C81 0x8C555ADD b323</code>
 +
 +==== IS_PED_ON_MOUNT ====
 +<code cpp>BOOL PED::IS_PED_ON_MOUNT(Ped ped) // 0x460BC76A0E10655E 0x43103006 b323</code>
 +
 +<code>Same function call as PED::GET_MOUNT, aka just returns 0</code>
 +==== GET_MOUNT ====
 +<code cpp>Ped PED::GET_MOUNT(Ped ped) // 0xE7E11B8DCBED1058 0xDD31EC4E b323</code>
 +
 +<code>
 +Function just returns 0
 +void __fastcall ped__get_mount(NativeContext *a1)
 +{
 +  NativeContext *v1; // rbx@1
 +
 +  v1 = a1;
 +  GetAddressOfPedFromScriptHandle(a1->Args->Arg1);
 +  v1->Returns->Item1= 0;
 +}</code>
 +==== IS_PED_ON_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_ON_VEHICLE(Ped ped) // 0x67722AEB798E5FAB 0xA1AE7CC7 b323</code>
 +
 +<code>Gets a value indicating whether the specified ped is on top of any vehicle.
 +
 +Return 1 when ped is on vehicle.
 +Return 0 when ped is not on a vehicle.
 +</code>
 +==== IS_PED_ON_SPECIFIC_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_ON_SPECIFIC_VEHICLE(Ped ped, Vehicle vehicle) // 0xEC5F66E459AF3BB2 0x63CB4603 b323</code>
 +
 +==== SET_PED_MONEY ====
 +<code cpp>void PED::SET_PED_MONEY(Ped ped, int amount) // 0xA9C8960E8684C1B5 0x40D90BF2 b323</code>
 +
 +<code>Maximum possible amount of money on MP is 2000. ~JX
 +
 +-----------------------------------------------------------------------------
 +
 +Maximum amount that a ped can theoretically have is 65535 (0xFFFF) since the amount is stored as an unsigned short (uint16_t) value.</code>
 +==== GET_PED_MONEY ====
 +<code cpp>int PED::GET_PED_MONEY(Ped ped) // 0x3F69145BBA87BAE7 0xEB3C4C7E b323</code>
 +
 +==== _0xFF4803BC019852D9 ====
 +<code cpp>void PED::_0xFF4803BC019852D9(float p0, Any p1) // 0xFF4803BC019852D9 0xD41C9AED b323</code>
 +
 +<code>Related to Peds dropping pickup_health_snack; p0 is a value between [0.0, 1.0] that corresponds to drop rate</code>
 +==== SET_AMBIENT_PEDS_DROP_MONEY ====
 +<code cpp>void PED::SET_AMBIENT_PEDS_DROP_MONEY(BOOL p0) // 0x6B0E6172C9A4D902 0x30B98369 b323</code>
 +
 +==== _0x9911F4A24485F653 ====
 +<code cpp>void PED::_0x9911F4A24485F653(BOOL p0) // 0x9911F4A24485F653 0x02A080C8 b323</code>
 +
 +==== SET_PED_SUFFERS_CRITICAL_HITS ====
 +<code cpp>void PED::SET_PED_SUFFERS_CRITICAL_HITS(Ped ped, BOOL toggle) // 0xEBD76F2359F190AC 0x6F6FC7E6 b323</code>
 +
 +<code>Ped no longer takes critical damage modifiers if set to FALSE.
 +Example: Headshotting a player no longer one shots them. Instead they will take the same damage as a torso shot.</code>
 +==== _0xAFC976FD0580C7B3 ====
 +<code cpp>void PED::_0xAFC976FD0580C7B3(Ped ped, BOOL toggle) // 0xAFC976FD0580C7B3 0x1572022A b323</code>
 +
 +<code>SET_PED_*</code>
 +==== IS_PED_SITTING_IN_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_SITTING_IN_VEHICLE(Ped ped, Vehicle vehicle) // 0xA808AA1D79230FC2 0xDDDE26FA b323</code>
 +
 +<code>Detect if ped is sitting in the specified vehicle
 +[True/False]</code>
 +==== IS_PED_SITTING_IN_ANY_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_SITTING_IN_ANY_VEHICLE(Ped ped) // 0x826AA586EDB9FEF8 0x0EA9CA03 b323</code>
 +
 +<code>Detect if ped is in any vehicle
 +[True/False]</code>
 +==== IS_PED_ON_FOOT ====
 +<code cpp>BOOL PED::IS_PED_ON_FOOT(Ped ped) // 0x01FEE67DB37F59B2 0xC60D0785 b323</code>
 +
 +==== IS_PED_ON_ANY_BIKE ====
 +<code cpp>BOOL PED::IS_PED_ON_ANY_BIKE(Ped ped) // 0x94495889E22C6479 0x4D885B2E b323</code>
 +
 +==== IS_PED_PLANTING_BOMB ====
 +<code cpp>BOOL PED::IS_PED_PLANTING_BOMB(Ped ped) // 0xC70B5FAE151982D8 0x0EDAC574 b323</code>
 +
 +==== GET_DEAD_PED_PICKUP_COORDS ====
 +<code cpp>Vector3 PED::GET_DEAD_PED_PICKUP_COORDS(Ped ped, float p1, float p2) // 0xCD5003B097200F36 0x129F9DC1 b323</code>
 +
 +==== IS_PED_IN_ANY_BOAT ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_BOAT(Ped ped) // 0x2E0E1C2B4F6CB339 0x1118A947 b323</code>
 +
 +==== IS_PED_IN_ANY_SUB ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_SUB(Ped ped) // 0xFBFC01CCFB35D99E 0xE65F8059 b323</code>
 +
 +==== IS_PED_IN_ANY_HELI ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_HELI(Ped ped) // 0x298B91AE825E5705 0x7AB5523B b323</code>
 +
 +==== IS_PED_IN_ANY_PLANE ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_PLANE(Ped ped) // 0x5FFF4CFC74D8FB80 0x51BBCE7E b323</code>
 +
 +==== IS_PED_IN_FLYING_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_IN_FLYING_VEHICLE(Ped ped) // 0x9134873537FA419C 0xCA072485 b323</code>
 +
 +==== SET_PED_DIES_IN_WATER ====
 +<code cpp>void PED::SET_PED_DIES_IN_WATER(Ped ped, BOOL toggle) // 0x56CEF0AC79073BDE 0x604C872B b323</code>
 +
 +==== SET_PED_DIES_IN_SINKING_VEHICLE ====
 +<code cpp>void PED::SET_PED_DIES_IN_SINKING_VEHICLE(Ped ped, BOOL toggle) // 0xD718A22995E2B4BC 0x8D4D9ABB b323</code>
 +
 +==== GET_PED_ARMOUR ====
 +<code cpp>int PED::GET_PED_ARMOUR(Ped ped) // 0x9483AF821605B1D8 0x2CE311A7 b323</code>
 +
 +==== SET_PED_STAY_IN_VEHICLE_WHEN_JACKED ====
 +<code cpp>void PED::SET_PED_STAY_IN_VEHICLE_WHEN_JACKED(Ped ped, BOOL toggle) // 0xEDF4079F9D54C9A1 0xB014A09C b323</code>
 +
 +==== SET_PED_CAN_BE_SHOT_IN_VEHICLE ====
 +<code cpp>void PED::SET_PED_CAN_BE_SHOT_IN_VEHICLE(Ped ped, BOOL toggle) // 0xC7EF1BA83230BA07 0x5DB7B3A9 b323</code>
 +
 +==== GET_PED_LAST_DAMAGE_BONE ====
 +<code cpp>BOOL PED::GET_PED_LAST_DAMAGE_BONE(Ped ped, int* outBone) // 0xD75960F6BD9EA49C 0xAB933841 b323</code>
 +
 +==== CLEAR_PED_LAST_DAMAGE_BONE ====
 +<code cpp>void PED::CLEAR_PED_LAST_DAMAGE_BONE(Ped ped) // 0x8EF6B7AC68E2F01B 0x56CB715E b323</code>
 +
 +==== SET_AI_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PED::SET_AI_WEAPON_DAMAGE_MODIFIER(float value) // 0x1B1E2A40A65B8521 0x516E30EE b323</code>
 +
 +==== RESET_AI_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PED::RESET_AI_WEAPON_DAMAGE_MODIFIER() // 0xEA16670E7BA4743C 0x6E965420 b323</code>
 +
 +==== SET_AI_MELEE_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PED::SET_AI_MELEE_WEAPON_DAMAGE_MODIFIER(float modifier) // 0x66460DEDDD417254 0x0F9A401F b323</code>
 +
 +==== RESET_AI_MELEE_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PED::RESET_AI_MELEE_WEAPON_DAMAGE_MODIFIER() // 0x46E56A7CD1D63C3F 0x97886238 b323</code>
 +
 +==== _0x2F3C3D9F50681DE4 ====
 +<code cpp>void PED::_0x2F3C3D9F50681DE4(Any p0, BOOL p1) // 0x2F3C3D9F50681DE4 0xCC9D7F1A b323</code>
 +
 +==== SET_PED_CAN_BE_TARGETTED ====
 +<code cpp>void PED::SET_PED_CAN_BE_TARGETTED(Ped ped, BOOL toggle) // 0x63F58F7C80513AAD 0x75C49F74 b323</code>
 +
 +==== SET_PED_CAN_BE_TARGETTED_BY_TEAM ====
 +<code cpp>void PED::SET_PED_CAN_BE_TARGETTED_BY_TEAM(Ped ped, int team, BOOL toggle) // 0xBF1CA77833E58F2C 0xB103A8E1 b323</code>
 +
 +==== SET_PED_CAN_BE_TARGETTED_BY_PLAYER ====
 +<code cpp>void PED::SET_PED_CAN_BE_TARGETTED_BY_PLAYER(Ped ped, Player player, BOOL toggle) // 0x66B57B72E0836A76 0xD050F490 b323</code>
 +
 +==== _0x061CB768363D6424 ====
 +<code cpp>void PED::_0x061CB768363D6424(Ped ped, BOOL toggle) // 0x061CB768363D6424 0x7DA12905 b323</code>
 +
 +==== _0xFD325494792302D7 ====
 +<code cpp>void PED::_0xFD325494792302D7(Ped ped, BOOL toggle) // 0xFD325494792302D7 0x7F67671D b323</code>
 +
 +==== IS_PED_IN_ANY_POLICE_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_POLICE_VEHICLE(Ped ped) // 0x0BD04E29640C9C12 0x84FA790D b323</code>
 +
 +==== FORCE_PED_TO_OPEN_PARACHUTE ====
 +<code cpp>void PED::FORCE_PED_TO_OPEN_PARACHUTE(Ped ped) // 0x16E42E800B472221 0xA819680B b323</code>
 +
 +==== IS_PED_IN_PARACHUTE_FREE_FALL ====
 +<code cpp>BOOL PED::IS_PED_IN_PARACHUTE_FREE_FALL(Ped ped) // 0x7DCE8BDA0F1C1200 0xCD71F11B b323</code>
 +
 +==== IS_PED_FALLING ====
 +<code cpp>BOOL PED::IS_PED_FALLING(Ped ped) // 0xFB92A102F1C4DFA3 0xABF77334 b323</code>
 +
 +==== IS_PED_JUMPING ====
 +<code cpp>BOOL PED::IS_PED_JUMPING(Ped ped) // 0xCEDABC5900A0BF97 0x07E5BC0E b323</code>
 +
 +==== _0x412F1364FA066CFB ====
 +<code cpp>Any PED::_0x412F1364FA066CFB(Any p0) // 0x412F1364FA066CFB  b573</code>
 +
 +==== _0x451D05012CCEC234 ====
 +<code cpp>Any PED::_0x451D05012CCEC234(Any p0) // 0x451D05012CCEC234  b573</code>
 +
 +==== IS_PED_CLIMBING ====
 +<code cpp>BOOL PED::IS_PED_CLIMBING(Ped ped) // 0x53E8CB4F48BFE623 0xBCE03D35 b323</code>
 +
 +==== IS_PED_VAULTING ====
 +<code cpp>BOOL PED::IS_PED_VAULTING(Ped ped) // 0x117C70D1F5730B5E 0xC3169BDA b323</code>
 +
 +==== IS_PED_DIVING ====
 +<code cpp>BOOL PED::IS_PED_DIVING(Ped ped) // 0x5527B8246FEF9B11 0x7BC5BF3C b323</code>
 +
 +==== IS_PED_JUMPING_OUT_OF_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_JUMPING_OUT_OF_VEHICLE(Ped ped) // 0x433DDFFE2044B636 0xB19215F6 b323</code>
 +
 +==== _IS_PED_OPENING_A_DOOR ====
 +<code cpp>BOOL PED::_IS_PED_OPENING_A_DOOR(Ped ped) // 0x26AF0E8E30BD2A2C  b323</code>
 +
 +<code>IS_PED_*
 +
 +Returns true if the ped is currently opening a door (CTaskOpenDoor).</code>
 +==== GET_PED_PARACHUTE_STATE ====
 +<code cpp>int PED::GET_PED_PARACHUTE_STATE(Ped ped) // 0x79CFD9827CC979B6 0x7D4BC475 b323</code>
 +
 +<code>Returns:
 +
 +-1: Normal
 +0: Wearing parachute on back
 +1: Parachute opening
 +2: Parachute open
 +3: Falling to doom (e.g. after exiting parachute)
 +
 +Normal means no parachute?</code>
 +==== GET_PED_PARACHUTE_LANDING_TYPE ====
 +<code cpp>int PED::GET_PED_PARACHUTE_LANDING_TYPE(Ped ped) // 0x8B9F1FC6AE8166C0 0x01F3B035 b323</code>
 +
 +<code>-1: no landing
 +0: landing on both feet
 +1: stumbling
 +2: rolling
 +3: ragdoll</code>
 +==== SET_PED_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PED::SET_PED_PARACHUTE_TINT_INDEX(Ped ped, int tintIndex) // 0x333FC8DB079B7186 0x5AEFEC3A b323</code>
 +
 +==== GET_PED_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PED::GET_PED_PARACHUTE_TINT_INDEX(Ped ped, int* outTintIndex) // 0xEAF5F7E5AE7C6C9D 0xE9E7FAC5 b323</code>
 +
 +==== SET_PED_RESERVE_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PED::SET_PED_RESERVE_PARACHUTE_TINT_INDEX(Ped ped, Any p1) // 0xE88DA0751C22A2AD 0x177EFC79 b323</code>
 +
 +==== CREATE_PARACHUTE_BAG_OBJECT ====
 +<code cpp>Object PED::CREATE_PARACHUTE_BAG_OBJECT(Ped ped, BOOL p1, BOOL p2) // 0x8C4F3BF23B6237DB 0x19198A16 b323</code>
 +
 +==== SET_PED_DUCKING ====
 +<code cpp>void PED::SET_PED_DUCKING(Ped ped, BOOL toggle) // 0x030983CA930B692D 0xB90353D7 b323</code>
 +
 +<code>This is the SET_CHAR_DUCKING from GTA IV, that makes Peds duck. This function does nothing in GTA V. It cannot set the ped as ducking in vehicles, and IS_PED_DUCKING will always return false.</code>
 +==== IS_PED_DUCKING ====
 +<code cpp>BOOL PED::IS_PED_DUCKING(Ped ped) // 0xD125AE748725C6BC 0x9199C77D b323</code>
 +
 +==== IS_PED_IN_ANY_TAXI ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_TAXI(Ped ped) // 0x6E575D6A898AB852 0x16FD386C b323</code>
 +
 +==== SET_PED_ID_RANGE ====
 +<code cpp>void PED::SET_PED_ID_RANGE(Ped ped, float value) // 0xF107E836A70DCE05 0xEF3B4ED9 b323</code>
 +
 +==== SET_PED_HIGHLY_PERCEPTIVE ====
 +<code cpp>void PED::SET_PED_HIGHLY_PERCEPTIVE(Ped ped, BOOL toggle) // 0x52D59AB61DDC05DD 0x9A2180FF b323</code>
 +
 +==== _0x2F074C904D85129E ====
 +<code cpp>void PED::_0x2F074C904D85129E(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x2F074C904D85129E  b393</code>
 +
 +==== _0xEC4B4B3B9908052A ====
 +<code cpp>void PED::_0xEC4B4B3B9908052A(Ped ped, float unk) // 0xEC4B4B3B9908052A 0xF30658D2 b323</code>
 +
 +<code>SET_PED_*
 +
 +Has most likely to do with some shooting attributes as it sets the float which is in the same range as shootRate.</code>
 +==== _0x733C87D4CE22BEA2 ====
 +<code cpp>void PED::_0x733C87D4CE22BEA2(Any p0) // 0x733C87D4CE22BEA2 0x43709044 b323</code>
 +
 +==== SET_PED_SEEING_RANGE ====
 +<code cpp>void PED::SET_PED_SEEING_RANGE(Ped ped, float value) // 0xF29CF591C4BF6CEE 0x4BD72FE8 b323</code>
 +
 +==== SET_PED_HEARING_RANGE ====
 +<code cpp>void PED::SET_PED_HEARING_RANGE(Ped ped, float value) // 0x33A8F7F7D5F7F33C 0xB32087E0 b323</code>
 +
 +==== SET_PED_VISUAL_FIELD_MIN_ANGLE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_MIN_ANGLE(Ped ped, float value) // 0x2DB492222FB21E26 0x72E2E18B b323</code>
 +
 +==== SET_PED_VISUAL_FIELD_MAX_ANGLE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_MAX_ANGLE(Ped ped, float value) // 0x70793BDCA1E854D4 0x0CEA0F9A b323</code>
 +
 +==== SET_PED_VISUAL_FIELD_MIN_ELEVATION_ANGLE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_MIN_ELEVATION_ANGLE(Ped ped, float angle) // 0x7A276EB2C224D70F 0x5CC2F1B8 b323</code>
 +
 +<code>This native refers to the field of vision the ped has below them, starting at 0 degrees. The angle value should be negative.
 +-90f should let the ped see 90 degrees below them, for example.</code>
 +==== SET_PED_VISUAL_FIELD_MAX_ELEVATION_ANGLE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_MAX_ELEVATION_ANGLE(Ped ped, float angle) // 0x78D0B67629D75856 0x39D9102F b323</code>
 +
 +<code>This native refers to the field of vision the ped has above them, starting at 0 degrees. 90f would let the ped see enemies directly above of them.</code>
 +==== SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE(Ped ped, float range) // 0x9C74B0BC831B753A 0xFDF2F7C2 b323</code>
 +
 +==== SET_PED_VISUAL_FIELD_CENTER_ANGLE ====
 +<code cpp>void PED::SET_PED_VISUAL_FIELD_CENTER_ANGLE(Ped ped, float angle) // 0x3B6405E8AB34A907 0xE57202A1 b323</code>
 +
 +==== _GET_PED_VISUAL_FIELD_CENTER_ANGLE ====
 +<code cpp>float PED::_GET_PED_VISUAL_FIELD_CENTER_ANGLE(Ped ped) // 0xEF2C71A32CAD5FBD  b1493</code>
 +
 +==== SET_PED_STEALTH_MOVEMENT ====
 +<code cpp>void PED::SET_PED_STEALTH_MOVEMENT(Ped ped, BOOL p1, const char* action) // 0x88CBB5CEB96B7BD2 0x67E28E1D b323</code>
 +
 +<code>p1 is usually 0 in the scripts. action is either 0 or a pointer to "DEFAULT_ACTION".</code>
 +==== GET_PED_STEALTH_MOVEMENT ====
 +<code cpp>BOOL PED::GET_PED_STEALTH_MOVEMENT(Ped ped) // 0x7C2AC9CA66575FBF 0x40321B83 b323</code>
 +
 +<code>Returns whether the entity is in stealth mode</code>
 +==== CREATE_GROUP ====
 +<code cpp>int PED::CREATE_GROUP(int unused) // 0x90370EBE0FEE1A3D 0x8DC0368D b323</code>
 +
 +<code>Creates a new ped group.
 +Groups can contain up to 8 peds.
 +
 +The parameter is unused.
 +
 +Returns a handle to the created group, or 0 if a group couldn't be created.</code>
 +==== SET_PED_AS_GROUP_LEADER ====
 +<code cpp>void PED::SET_PED_AS_GROUP_LEADER(Ped ped, int groupId) // 0x2A7819605465FBCE 0x7265BEA2 b323</code>
 +
 +==== SET_PED_AS_GROUP_MEMBER ====
 +<code cpp>void PED::SET_PED_AS_GROUP_MEMBER(Ped ped, int groupId) // 0x9F3480FE65DB31B5 0x0EE13F92 b323</code>
 +
 +==== SET_PED_CAN_TELEPORT_TO_GROUP_LEADER ====
 +<code cpp>void PED::SET_PED_CAN_TELEPORT_TO_GROUP_LEADER(Ped pedHandle, int groupHandle, BOOL toggle) // 0x2E2F4240B3F24647 0xD0D8BDBC b323</code>
 +
 +<code>This only will teleport the ped to the group leader if the group leader teleports (sets coords).
 +
 +Only works in singleplayer</code>
 +==== REMOVE_GROUP ====
 +<code cpp>void PED::REMOVE_GROUP(int groupId) // 0x8EB2F69076AF7053 0x48D72B88 b323</code>
 +
 +==== REMOVE_PED_FROM_GROUP ====
 +<code cpp>void PED::REMOVE_PED_FROM_GROUP(Ped ped) // 0xED74007FFB146BC2 0x82697713 b323</code>
 +
 +==== IS_PED_GROUP_MEMBER ====
 +<code cpp>BOOL PED::IS_PED_GROUP_MEMBER(Ped ped, int groupId) // 0x9BB01E3834671191 0x876D5363 b323</code>
 +
 +==== IS_PED_HANGING_ON_TO_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_HANGING_ON_TO_VEHICLE(Ped ped) // 0x1C86D8AEF8254B78 0x9678D4FF b323</code>
 +
 +==== SET_GROUP_SEPARATION_RANGE ====
 +<code cpp>void PED::SET_GROUP_SEPARATION_RANGE(int groupHandle, float separationRange) // 0x4102C7858CFEE4E4 0x7B820CD5 b323</code>
 +
 +<code>Sets the range at which members will automatically leave the group.</code>
 +==== SET_PED_MIN_GROUND_TIME_FOR_STUNGUN ====
 +<code cpp>void PED::SET_PED_MIN_GROUND_TIME_FOR_STUNGUN(Ped ped, int ms) // 0xFA0675AB151073FA 0x2F0D0973 b323</code>
 +
 +<code>Ped will stay on the ground after being stunned for at lest ms time. (in milliseconds)</code>
 +==== IS_PED_PRONE ====
 +<code cpp>BOOL PED::IS_PED_PRONE(Ped ped) // 0xD6A86331A537A7B9 0x02C2A6C3 b323</code>
 +
 +==== IS_PED_IN_COMBAT ====
 +<code cpp>BOOL PED::IS_PED_IN_COMBAT(Ped ped, Ped target) // 0x4859F1FC66A6278E 0xFE027CB5 b323</code>
 +
 +<code>Checks to see if ped and target are in combat with eachother. Only goes one-way: if target is engaged in combat with ped but ped has not yet reacted, the function will return false until ped starts fighting back.
 +
 +p1 is usually 0 in the scripts because it gets the ped id during the task sequence. For instance: PED::IS_PED_IN_COMBAT(l_42E[4/*14*/], PLAYER::PLAYER_PED_ID()) // armenian2.ct4: 43794</code>
 +==== CAN_PED_IN_COMBAT_SEE_TARGET ====
 +<code cpp>BOOL PED::CAN_PED_IN_COMBAT_SEE_TARGET(Ped ped, Ped target) // 0xEAD42DE3610D0721 0xCCD525E1 b323</code>
 +
 +==== IS_PED_DOING_DRIVEBY ====
 +<code cpp>BOOL PED::IS_PED_DOING_DRIVEBY(Ped ped) // 0xB2C086CC1BF8F2BF 0xAC3CEB9C b323</code>
 +
 +==== IS_PED_JACKING ====
 +<code cpp>BOOL PED::IS_PED_JACKING(Ped ped) // 0x4AE4FF911DFB61DA 0x3B321816 b323</code>
 +
 +==== IS_PED_BEING_JACKED ====
 +<code cpp>BOOL PED::IS_PED_BEING_JACKED(Ped ped) // 0x9A497FE2DF198913 0xD45D605C b323</code>
 +
 +==== IS_PED_BEING_STUNNED ====
 +<code cpp>BOOL PED::IS_PED_BEING_STUNNED(Ped ped, int p1) // 0x4FBACCE3B4138EE8 0x0A66CE30 b323</code>
 +
 +<code>p1 is always 0</code>
 +==== GET_PEDS_JACKER ====
 +<code cpp>Ped PED::GET_PEDS_JACKER(Ped ped) // 0x9B128DC36C1E04CF 0xDE1DBB59 b323</code>
 +
 +==== GET_JACK_TARGET ====
 +<code cpp>Ped PED::GET_JACK_TARGET(Ped ped) // 0x5486A79D9FBD342D 0x1D196361 b323</code>
 +
 +==== IS_PED_FLEEING ====
 +<code cpp>BOOL PED::IS_PED_FLEEING(Ped ped) // 0xBBCCE00B381F8482 0x85D813C6 b323</code>
 +
 +==== IS_PED_IN_COVER ====
 +<code cpp>BOOL PED::IS_PED_IN_COVER(Ped ped, BOOL exceptUseWeapon) // 0x60DFD0691A170B88 0x972C5A8B b323</code>
 +
 +<code>p1 is nearly always 0 in the scripts. </code>
 +==== IS_PED_IN_COVER_FACING_LEFT ====
 +<code cpp>BOOL PED::IS_PED_IN_COVER_FACING_LEFT(Ped ped) // 0x845333B3150583AB 0xB89DBB80 b323</code>
 +
 +==== IS_PED_IN_HIGH_COVER ====
 +<code cpp>BOOL PED::IS_PED_IN_HIGH_COVER(Ped ped) // 0x6A03BF943D767C93 0xDD5D08A7 b323</code>
 +
 +==== IS_PED_GOING_INTO_COVER ====
 +<code cpp>BOOL PED::IS_PED_GOING_INTO_COVER(Ped ped) // 0x9F65DBC537E59AD5 0xA3589628 b323</code>
 +
 +==== SET_PED_PINNED_DOWN ====
 +<code cpp>Any PED::SET_PED_PINNED_DOWN(Ped ped, BOOL pinned, int i) // 0xAAD6D1ACF08F4612 0xCC78999D b323</code>
 +
 +<code>i could be time. Only example in the decompiled scripts uses it as -1.</code>
 +==== GET_SEAT_PED_IS_TRYING_TO_ENTER ====
 +<code cpp>int PED::GET_SEAT_PED_IS_TRYING_TO_ENTER(Ped ped) // 0x6F4C85ACD641BCD2 0xACF162E0 b323</code>
 +
 +==== GET_VEHICLE_PED_IS_TRYING_TO_ENTER ====
 +<code cpp>Vehicle PED::GET_VEHICLE_PED_IS_TRYING_TO_ENTER(Ped ped) // 0x814FA8BE5449445D 0x99968B37 b323</code>
 +
 +==== GET_PED_SOURCE_OF_DEATH ====
 +<code cpp>Entity PED::GET_PED_SOURCE_OF_DEATH(Ped ped) // 0x93C8B64DEB84728C 0x84ADF9EB b323</code>
 +
 +<code>Returns the Entity (Ped, Vehicle, or ?Object?) that killed the 'ped'
 +
 +Is best to check if the Ped is dead before asking for its killer.</code>
 +==== GET_PED_CAUSE_OF_DEATH ====
 +<code cpp>Hash PED::GET_PED_CAUSE_OF_DEATH(Ped ped) // 0x16FFE42AB2D2DC59 0x63458C27 b323</code>
 +
 +<code>Returns the hash of the weapon/model/object that killed the ped.</code>
 +==== GET_PED_TIME_OF_DEATH ====
 +<code cpp>int PED::GET_PED_TIME_OF_DEATH(Ped ped) // 0x1E98817B311AE98A 0xDF6D5D54 b323</code>
 +
 +==== _0x5407B7288D0478B7 ====
 +<code cpp>int PED::_0x5407B7288D0478B7(Any p0) // 0x5407B7288D0478B7 0xEF0B78E6 b323</code>
 +
 +==== _0x336B3D200AB007CB ====
 +<code cpp>Any PED::_0x336B3D200AB007CB(Any p0, float p1, float p2, float p3, float p4) // 0x336B3D200AB007CB 0xFB18CB19 b323</code>
 +
 +==== SET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH ====
 +<code cpp>void PED::SET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH(Ped ped, Hash hash) // 0xADB3F206518799E8 0x423B7BA2 b323</code>
 +
 +==== SET_PED_RELATIONSHIP_GROUP_HASH ====
 +<code cpp>void PED::SET_PED_RELATIONSHIP_GROUP_HASH(Ped ped, Hash hash) // 0xC80A74AC829DDD92 0x79F8C18C b323</code>
 +
 +==== SET_RELATIONSHIP_BETWEEN_GROUPS ====
 +<code cpp>void PED::SET_RELATIONSHIP_BETWEEN_GROUPS(int relationship, Hash group1, Hash group2) // 0xBF25EB89375A37AD 0xD4A215BA b323</code>
 +
 +<code>Sets the relationship between two groups. This should be called twice (once for each group).
 +
 +Relationship types:
 +0 = Companion
 +1 = Respect
 +2 = Like
 +3 = Neutral
 +4 = Dislike
 +5 = Hate
 +255 = Pedestrians
 +
 +Example:
 +PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);
 +PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);</code>
 +==== CLEAR_RELATIONSHIP_BETWEEN_GROUPS ====
 +<code cpp>void PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(int relationship, Hash group1, Hash group2) // 0x5E29243FB56FC6D4 0x994B8C2D b323</code>
 +
 +<code>Clears the relationship between two groups. This should be called twice (once for each group).
 +
 +Relationship types:
 +0 = Companion
 +1 = Respect
 +2 = Like
 +3 = Neutral
 +4 = Dislike
 +5 = Hate
 +255 = Pedestrians
 +(Credits: Inco)
 +
 +Example:
 +PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);
 +PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);</code>
 +==== ADD_RELATIONSHIP_GROUP ====
 +<code cpp>Any PED::ADD_RELATIONSHIP_GROUP(const char* name, Hash* groupHash) // 0xF372BC22FCB88606 0x8B635546 b323</code>
 +
 +<code>Can't select void. This function returns nothing. The hash of the created relationship group is output in the second parameter.</code>
 +==== REMOVE_RELATIONSHIP_GROUP ====
 +<code cpp>void PED::REMOVE_RELATIONSHIP_GROUP(Hash groupHash) // 0xB6BA2444AB393DA2 0x4A1DC59A b323</code>
 +
 +==== _DOES_RELATIONSHIP_GROUP_EXIST ====
 +<code cpp>BOOL PED::_DOES_RELATIONSHIP_GROUP_EXIST(Hash groupHash) // 0xCC6E3B6BB69501F1  b505</code>
 +
 +==== GET_RELATIONSHIP_BETWEEN_PEDS ====
 +<code cpp>int PED::GET_RELATIONSHIP_BETWEEN_PEDS(Ped ped1, Ped ped2) // 0xEBA5AD3A0EAF7121 0xE254C39C b323</code>
 +
 +<code>Gets the relationship between two peds. This should be called twice (once for each ped).
 +
 +Relationship types:
 +0 = Companion
 +1 = Respect
 +2 = Like
 +3 = Neutral
 +4 = Dislike
 +5 = Hate
 +255 = Pedestrians
 +(Credits: Inco)
 +
 +Example:
 +PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, l_1017, 0xA49E591C);
 +PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, 0xA49E591C, l_1017);</code>
 +==== GET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH ====
 +<code cpp>Hash PED::GET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH(Ped ped) // 0x42FDD0F017B1E38E 0x714BD6E4 b323</code>
 +
 +==== GET_PED_RELATIONSHIP_GROUP_HASH ====
 +<code cpp>Hash PED::GET_PED_RELATIONSHIP_GROUP_HASH(Ped ped) // 0x7DBDD04862D95F04 0x354F283C b323</code>
 +
 +==== GET_RELATIONSHIP_BETWEEN_GROUPS ====
 +<code cpp>int PED::GET_RELATIONSHIP_BETWEEN_GROUPS(Hash group1, Hash group2) // 0x9E6B70061662AE5C 0x4E372FE2 b323</code>
 +
 +<code>Gets the relationship between two groups. This should be called twice (once for each group).
 +
 +Relationship types:
 +0 = Companion
 +1 = Respect
 +2 = Like
 +3 = Neutral
 +4 = Dislike
 +5 = Hate
 +255 = Pedestrians
 +
 +Example:
 +PED::GET_RELATIONSHIP_BETWEEN_GROUPS(l_1017, 0xA49E591C);
 +PED::GET_RELATIONSHIP_BETWEEN_GROUPS(0xA49E591C, l_1017);</code>
 +==== _SET_RELATIONSHIP_GROUP_DONT_AFFECT_WANTED_LEVEL ====
 +<code cpp>void PED::_SET_RELATIONSHIP_GROUP_DONT_AFFECT_WANTED_LEVEL(Hash group, BOOL p1) // 0x5615E0C5EB2BC6E2  b877</code>
 +
 +==== _0xAD27D957598E49E9 ====
 +<code cpp>void PED::_0xAD27D957598E49E9(Ped ped, Any p1, float p2, Hash hash, Any p4, Any p5) // 0xAD27D957598E49E9  b1290</code>
 +
 +<code>Does something with ped relationships</code>
 +==== SET_PED_CAN_BE_TARGETED_WITHOUT_LOS ====
 +<code cpp>void PED::SET_PED_CAN_BE_TARGETED_WITHOUT_LOS(Ped ped, BOOL toggle) // 0x4328652AE5769C71 0x7FDDC0A6 b323</code>
 +
 +==== SET_PED_TO_INFORM_RESPECTED_FRIENDS ====
 +<code cpp>void PED::SET_PED_TO_INFORM_RESPECTED_FRIENDS(Ped ped, float radius, int maxFriends) // 0x112942C6E708F70B 0xD78AC46C b323</code>
 +
 +==== IS_PED_RESPONDING_TO_EVENT ====
 +<code cpp>BOOL PED::IS_PED_RESPONDING_TO_EVENT(Ped ped, Any event) // 0x625B774D75C87068 0x7A877554 b323</code>
 +
 +==== _GET_PED_EVENT_DATA ====
 +<code cpp>BOOL PED::_GET_PED_EVENT_DATA(Ped ped, int eventType, Any* outData) // 0xBA656A3BB01BDEA3  b2189</code>
 +
 +==== SET_PED_FIRING_PATTERN ====
 +<code cpp>void PED::SET_PED_FIRING_PATTERN(Ped ped, Hash patternHash) // 0x9AC577F5A12AD8A9 0xB4629D66 b323</code>
 +
 +<code>FIRING_PATTERN_BURST_FIRE = 0xD6FF6D61 ( 1073727030 )
 +FIRING_PATTERN_BURST_FIRE_IN_COVER = 0x026321F1 ( 40051185 )
 +FIRING_PATTERN_BURST_FIRE_DRIVEBY = 0xD31265F2 ( -753768974 )
 +FIRING_PATTERN_FROM_GROUND = 0x2264E5D6 ( 577037782 )
 +FIRING_PATTERN_DELAY_FIRE_BY_ONE_SEC = 0x7A845691 ( 2055493265 )
 +FIRING_PATTERN_FULL_AUTO = 0xC6EE6B4C ( -957453492 )
 +FIRING_PATTERN_SINGLE_SHOT = 0x5D60E4E0 ( 1566631136 )
 +FIRING_PATTERN_BURST_FIRE_PISTOL = 0xA018DB8A ( -1608983670 )
 +FIRING_PATTERN_BURST_FIRE_SMG = 0xD10DADEE ( 1863348768 )
 +FIRING_PATTERN_BURST_FIRE_RIFLE = 0x9C74B406 ( -1670073338 )
 +FIRING_PATTERN_BURST_FIRE_MG = 0xB573C5B4 ( -1250703948 )
 +FIRING_PATTERN_BURST_FIRE_PUMPSHOTGUN = 0x00BAC39B ( 12239771 )
 +FIRING_PATTERN_BURST_FIRE_HELI = 0x914E786F ( -1857128337 )
 +FIRING_PATTERN_BURST_FIRE_MICRO = 0x42EF03FD ( 1122960381 )
 +FIRING_PATTERN_SHORT_BURSTS = 0x1A92D7DF ( 445831135 )
 +FIRING_PATTERN_SLOW_FIRE_TANK = 0xE2CA3A71 ( -490063247 )
 +
 +if anyone is interested firing pattern info: pastebin.com/Px036isB</code>
 +==== SET_PED_SHOOT_RATE ====
 +<code cpp>void PED::SET_PED_SHOOT_RATE(Ped ped, int shootRate) // 0x614DA022990752DC 0xFB301746 b323</code>
 +
 +<code>shootRate 0-1000</code>
 +==== SET_COMBAT_FLOAT ====
 +<code cpp>void PED::SET_COMBAT_FLOAT(Ped ped, int combatType, float p2) // 0xFF41B4B141ED981C 0xD8B7637C b323</code>
 +
 +<code>combatType can be between 0-14. See GET_COMBAT_FLOAT below for a list of possible parameters.</code>
 +==== GET_COMBAT_FLOAT ====
 +<code cpp>float PED::GET_COMBAT_FLOAT(Ped ped, int p1) // 0x52DFF8A10508090A 0x511D7EF8 b323</code>
 +
 +<code>p0: Ped Handle
 +p1: int i | 0 <= i <= 27
 +
 +p1 probably refers to the attributes configured in combatbehavior.meta. There are 13. Example:
 +
 +<BlindFireChance value="0.1"/>
 +<WeaponShootRateModifier value="1.0"/>
 +<TimeBetweenBurstsInCover value="1.25"/>
 +<BurstDurationInCover value="2.0"/>
 +<TimeBetweenPeeks value="10.0"/>
 +<WeaponAccuracy value="0.18"/>
 +<FightProficiency value="0.8"/>
 +<StrafeWhenMovingChance value="1.0"/>
 +<WalkWhenStrafingChance value="0.0"/>
 +<AttackWindowDistanceForCover value="55.0"/>
 +<TimeToInvalidateInjuredTarget value="9.0"/>
 +<TriggerChargeTime_Near value="4.0"/>
 +<TriggerChargeTime_Far value="10.0"/>
 +
 +-------------Confirmed by editing combatbehavior.meta:
 +p1:
 +0=BlindFireChance
 +1=BurstDurationInCover
 +3=TimeBetweenBurstsInCover
 +4=TimeBetweenPeeks
 +5=StrafeWhenMovingChance
 +8=WalkWhenStrafingChance
 +11=AttackWindowDistanceForCover
 +12=TimeToInvalidateInjuredTarget
 +16=OptimalCoverDistance
 +</code>
 +==== GET_GROUP_SIZE ====
 +<code cpp>void PED::GET_GROUP_SIZE(int groupID, Any* unknown, int* sizeInMembers) // 0x8DE69FE35CA09A45 0xF7E1A691 b323</code>
 +
 +<code>p1 may be a BOOL representing whether or not the group even exists</code>
 +==== DOES_GROUP_EXIST ====
 +<code cpp>BOOL PED::DOES_GROUP_EXIST(int groupId) // 0x7C6B0C22F9F40BBE 0x935C978D b323</code>
 +
 +==== GET_PED_GROUP_INDEX ====
 +<code cpp>int PED::GET_PED_GROUP_INDEX(Ped ped) // 0xF162E133B4E7A675 0x134E0785 b323</code>
 +
 +<code>Returns the group id of which the specified ped is a member of.</code>
 +==== IS_PED_IN_GROUP ====
 +<code cpp>BOOL PED::IS_PED_IN_GROUP(Ped ped) // 0x5891CAC5D4ACFF74 0x836D9795 b323</code>
 +
 +==== GET_PLAYER_PED_IS_FOLLOWING ====
 +<code cpp>Player PED::GET_PLAYER_PED_IS_FOLLOWING(Ped ped) // 0x6A3975DEA89F9A17 0xDE7442EE b323</code>
 +
 +==== SET_GROUP_FORMATION ====
 +<code cpp>void PED::SET_GROUP_FORMATION(int groupId, int formationType) // 0xCE2F5FC3AF7E8C1E 0x08FAC739 b323</code>
 +
 +<code>0: Default
 +1: Circle Around Leader
 +2: Alternative Circle Around Leader
 +3: Line, with Leader at center</code>
 +==== SET_GROUP_FORMATION_SPACING ====
 +<code cpp>void PED::SET_GROUP_FORMATION_SPACING(int groupId, float p1, float p2, float p3) // 0x1D9D45004C28C916 0xB1E086FF b323</code>
 +
 +==== RESET_GROUP_FORMATION_DEFAULT_SPACING ====
 +<code cpp>void PED::RESET_GROUP_FORMATION_DEFAULT_SPACING(int groupHandle) // 0x63DAB4CCB3273205 0x267FCEAD b323</code>
 +
 +==== GET_VEHICLE_PED_IS_USING ====
 +<code cpp>Vehicle PED::GET_VEHICLE_PED_IS_USING(Ped ped) // 0x6094AD011A2EA87D 0x6DE3AADA b323</code>
 +
 +<code>Gets ID of vehicle player using. It means it can get ID at any interaction with vehicle. Enter\exit for example. And that means it is faster than GET_VEHICLE_PED_IS_IN but less safe.</code>
 +==== GET_VEHICLE_PED_IS_ENTERING ====
 +<code cpp>Vehicle PED::GET_VEHICLE_PED_IS_ENTERING(Ped ped) // 0xF92691AED837A5FC 0x56E0C163 b323</code>
 +
 +==== SET_PED_GRAVITY ====
 +<code cpp>void PED::SET_PED_GRAVITY(Ped ped, BOOL toggle) // 0x9FF447B6B6AD960A 0x3CA16652 b323</code>
 +
 +<code>enable or disable the gravity of a ped
 +
 +Examples:
 +PED::SET_PED_GRAVITY(PLAYER::PLAYER_PED_ID(), 0x00000001);
 +PED::SET_PED_GRAVITY(Local_289[iVar0 /*20*/], 0x00000001);</code>
 +==== APPLY_DAMAGE_TO_PED ====
 +<code cpp>void PED::APPLY_DAMAGE_TO_PED(Ped ped, int damageAmount, BOOL p2, Any p3) // 0x697157CED63F18D4 0x4DC27FCF b323</code>
 +
 +<code>damages a ped with the given amount</code>
 +==== _GET_TIME_OF_LAST_PED_WEAPON_DAMAGE ====
 +<code cpp>int PED::_GET_TIME_OF_LAST_PED_WEAPON_DAMAGE(Ped ped, Hash weaponHash) // 0x36B77BB84687C318 0x0170C6E1 b323</code>
 +
 +<code>GET_TIME_*</code>
 +==== SET_PED_ALLOWED_TO_DUCK ====
 +<code cpp>void PED::SET_PED_ALLOWED_TO_DUCK(Ped ped, BOOL toggle) // 0xDA1F1B7BE1A8766F 0xC4D122F8 b323</code>
 +
 +==== SET_PED_NEVER_LEAVES_GROUP ====
 +<code cpp>void PED::SET_PED_NEVER_LEAVES_GROUP(Ped ped, BOOL toggle) // 0x3DBFC55D5C9BB447 0x0E038813 b323</code>
 +
 +==== GET_PED_TYPE ====
 +<code cpp>int PED::GET_PED_TYPE(Ped ped) // 0xFF059E1E4C01E63C 0xB1460D43 b323</code>
 +
 +<code>https://alloc8or.re/gta5/doc/enums/ePedType.txt</code>
 +==== SET_PED_AS_COP ====
 +<code cpp>void PED::SET_PED_AS_COP(Ped ped, BOOL toggle) // 0xBB03C38DD3FB7FFD 0x84E7DE9F b323</code>
 +
 +<code>Turns the desired ped into a cop. If you use this on the player ped, you will become almost invisible to cops dispatched for you. You will also report your own crimes, get a generic cop voice, get a cop-vision-cone on the radar, and you will be unable to shoot at other cops. SWAT and Army will still shoot at you. Toggling ped as "false" has no effect; you must change p0's ped model to disable the effect.</code>
 +==== SET_PED_MAX_HEALTH ====
 +<code cpp>void PED::SET_PED_MAX_HEALTH(Ped ped, int value) // 0xF5F6378C4F3419D3 0x5533F60B b323</code>
 +
 +<code>sets the maximum health of a ped
 +
 +I think it's never been used in any script</code>
 +==== GET_PED_MAX_HEALTH ====
 +<code cpp>int PED::GET_PED_MAX_HEALTH(Ped ped) // 0x4700A416E8324EF3 0xA45B6C8D b323</code>
 +
 +==== SET_PED_MAX_TIME_IN_WATER ====
 +<code cpp>void PED::SET_PED_MAX_TIME_IN_WATER(Ped ped, float value) // 0x43C851690662113D 0xFE0A106B b323</code>
 +
 +==== SET_PED_MAX_TIME_UNDERWATER ====
 +<code cpp>void PED::SET_PED_MAX_TIME_UNDERWATER(Ped ped, float value) // 0x6BA428C528D9E522 0x082EF240 b323</code>
 +
 +==== _0x2735233A786B1BEF ====
 +<code cpp>void PED::_0x2735233A786B1BEF(Ped ped, float p1) // 0x2735233A786B1BEF 0x373CC405 b323</code>
 +
 +==== SET_PED_VEHICLE_FORCED_SEAT_USAGE ====
 +<code cpp>void PED::SET_PED_VEHICLE_FORCED_SEAT_USAGE(Ped ped, Vehicle vehicle, int seatIndex, int flags, Any p4) // 0x952F06BEECD775CC 0x79CA237B b323</code>
 +
 +<code>seatIndex must be <= 2</code>
 +==== CLEAR_ALL_PED_VEHICLE_FORCED_SEAT_USAGE ====
 +<code cpp>void PED::CLEAR_ALL_PED_VEHICLE_FORCED_SEAT_USAGE(Ped ped) // 0xE6CA85E7259CE16B 0xCC1D8F66 b323</code>
 +
 +==== _0xB282749D5E028163 ====
 +<code cpp>void PED::_0xB282749D5E028163(Any p0, Any p1) // 0xB282749D5E028163  b877</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE ====
 +<code cpp>void PED::SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE(Ped ped, int state) // 0x7A6535691B477C48 0x8A251612 b323</code>
 +
 +<code>state: https://alloc8or.re/gta5/doc/enums/eKnockOffVehicle.txt</code>
 +==== CAN_KNOCK_PED_OFF_VEHICLE ====
 +<code cpp>BOOL PED::CAN_KNOCK_PED_OFF_VEHICLE(Ped ped) // 0x51AC07A44D4F5B8A 0xC9D098B3 b323</code>
 +
 +==== KNOCK_PED_OFF_VEHICLE ====
 +<code cpp>void PED::KNOCK_PED_OFF_VEHICLE(Ped ped) // 0x45BBCBA77C29A841 0xACDD0674 b323</code>
 +
 +==== SET_PED_COORDS_NO_GANG ====
 +<code cpp>void PED::SET_PED_COORDS_NO_GANG(Ped ped, float posX, float posY, float posZ) // 0x87052FE446E07247 0x9561AD98 b323</code>
 +
 +==== GET_PED_AS_GROUP_MEMBER ====
 +<code cpp>Ped PED::GET_PED_AS_GROUP_MEMBER(int groupID, int memberNumber) // 0x51455483CF23ED97 0x9AA3CC8C b323</code>
 +
 +<code>from fm_mission_controller.c4 (variable names changed for clarity):
 +
 +int groupID = PLAYER::GET_PLAYER_GROUP(PLAYER::PLAYER_ID());
 +PED::GET_GROUP_SIZE(group, &unused, &groupSize);
 +if (groupSize >= 1) {
 +. . . . for (int memberNumber = 0; memberNumber < groupSize; memberNumber++) {
 +. . . . . . . . Ped ped1 = PED::GET_PED_AS_GROUP_MEMBER(groupID, memberNumber);
 +. . . . . . . . //and so on</code>
 +==== GET_PED_AS_GROUP_LEADER ====
 +<code cpp>Ped PED::GET_PED_AS_GROUP_LEADER(int groupID) // 0x5CCE68DBD5FE93EC 0x52873C6A b323</code>
 +
 +==== SET_PED_KEEP_TASK ====
 +<code cpp>void PED::SET_PED_KEEP_TASK(Ped ped, BOOL toggle) // 0x971D38760FBC02EF 0xA7EC79CE b323</code>
 +
 +==== _0x49E50BDB8BA4DAB2 ====
 +<code cpp>void PED::_0x49E50BDB8BA4DAB2(Ped ped, BOOL toggle) // 0x49E50BDB8BA4DAB2 0x397F06E3 b323</code>
 +
 +<code>SET_PED_ALLOW*</code>
 +==== IS_PED_SWIMMING ====
 +<code cpp>BOOL PED::IS_PED_SWIMMING(Ped ped) // 0x9DE327631295B4C2 0x7AB43DB8 b323</code>
 +
 +==== IS_PED_SWIMMING_UNDER_WATER ====
 +<code cpp>BOOL PED::IS_PED_SWIMMING_UNDER_WATER(Ped ped) // 0xC024869A53992F34 0x0E8D524F b323</code>
 +
 +==== SET_PED_COORDS_KEEP_VEHICLE ====
 +<code cpp>void PED::SET_PED_COORDS_KEEP_VEHICLE(Ped ped, float posX, float posY, float posZ) // 0x9AFEFF481A85AB2E 0xD66AE1D3 b323</code>
 +
 +<code>teleports ped to coords along with the vehicle ped is in</code>
 +==== SET_PED_DIES_IN_VEHICLE ====
 +<code cpp>void PED::SET_PED_DIES_IN_VEHICLE(Ped ped, BOOL toggle) // 0x2A30922C90C9B42C 0x6FE1E440 b323</code>
 +
 +==== SET_CREATE_RANDOM_COPS ====
 +<code cpp>void PED::SET_CREATE_RANDOM_COPS(BOOL toggle) // 0x102E68B2024D536D 0x23441648 b323</code>
 +
 +==== SET_CREATE_RANDOM_COPS_NOT_ON_SCENARIOS ====
 +<code cpp>void PED::SET_CREATE_RANDOM_COPS_NOT_ON_SCENARIOS(BOOL toggle) // 0x8A4986851C4EF6E7 0x82E548CC b323</code>
 +
 +==== SET_CREATE_RANDOM_COPS_ON_SCENARIOS ====
 +<code cpp>void PED::SET_CREATE_RANDOM_COPS_ON_SCENARIOS(BOOL toggle) // 0x444CB7D7DBE6973D 0xEDC31475 b323</code>
 +
 +==== CAN_CREATE_RANDOM_COPS ====
 +<code cpp>BOOL PED::CAN_CREATE_RANDOM_COPS() // 0x5EE2CAFF7F17770D 0xAA73DAD9 b323</code>
 +
 +==== SET_PED_AS_ENEMY ====
 +<code cpp>void PED::SET_PED_AS_ENEMY(Ped ped, BOOL toggle) // 0x02A0C9720B854BFA 0xAE620A1B b323</code>
 +
 +==== SET_PED_CAN_SMASH_GLASS ====
 +<code cpp>void PED::SET_PED_CAN_SMASH_GLASS(Ped ped, BOOL p1, BOOL p2) // 0x1CCE141467FF42A2 0x149C60A8 b323</code>
 +
 +==== IS_PED_IN_ANY_TRAIN ====
 +<code cpp>BOOL PED::IS_PED_IN_ANY_TRAIN(Ped ped) // 0x6F972C1AB75A1ED0 0x759EF63A b323</code>
 +
 +==== IS_PED_GETTING_INTO_A_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_GETTING_INTO_A_VEHICLE(Ped ped) // 0xBB062B2B5722478E 0x90E805AC b323</code>
 +
 +==== IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE ====
 +<code cpp>BOOL PED::IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE(Ped ped) // 0x44D28D5DDFE5F68C 0x46828B4E b323</code>
 +
 +==== SET_ENABLE_HANDCUFFS ====
 +<code cpp>void PED::SET_ENABLE_HANDCUFFS(Ped ped, BOOL toggle) // 0xDF1AF8B5D56542FA 0xAC9BBA23 b323</code>
 +
 +<code>ped can not pull out a weapon when true</code>
 +==== SET_ENABLE_BOUND_ANKLES ====
 +<code cpp>void PED::SET_ENABLE_BOUND_ANKLES(Ped ped, BOOL toggle) // 0xC52E0F855C58FC2E 0x9208D689 b323</code>
 +
 +<code>Used with SET_ENABLE_HANDCUFFS in decompiled scripts. From my observations, I have noticed that while being ragdolled you are not able to get up but you can still run. Your legs can also bend.</code>
 +==== SET_ENABLE_SCUBA ====
 +<code cpp>void PED::SET_ENABLE_SCUBA(Ped ped, BOOL toggle) // 0xF99F62004024D506 0x7BF61471 b323</code>
 +
 +<code>Enables diving motion when underwater.</code>
 +==== SET_CAN_ATTACK_FRIENDLY ====
 +<code cpp>void PED::SET_CAN_ATTACK_FRIENDLY(Ped ped, BOOL toggle, BOOL p2) // 0xB3B1CB349FF9C75D 0x47C60963 b323</code>
 +
 +<code>Setting ped to true allows the ped to shoot "friendlies".
 +
 +p2 set to true when toggle is also true seams to make peds permanently unable to aim at, even if you set p2 back to false.
 +
 +p1 = false & p2 = false for unable to aim at.
 +p1 = true & p2 = false for able to aim at. </code>
 +==== GET_PED_ALERTNESS ====
 +<code cpp>int PED::GET_PED_ALERTNESS(Ped ped) // 0xF6AA118530443FD2 0xF83E4DAF b323</code>
 +
 +<code>Returns the ped's alertness (0-3).
 +
 +Values : 
 +
 +0 : Neutral
 +1 : Heard something (gun shot, hit, etc)
 +2 : Knows (the origin of the event)
 +3 : Fully alerted (is facing the event?)
 +
 +If the Ped does not exist, returns -1.</code>
 +==== SET_PED_ALERTNESS ====
 +<code cpp>void PED::SET_PED_ALERTNESS(Ped ped, int value) // 0xDBA71115ED9941A6 0x2C32D9AE b323</code>
 +
 +<code>value ranges from 0 to 3.</code>
 +==== SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE ====
 +<code cpp>void PED::SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(Ped ped, BOOL toggle) // 0xBC0ED94165A48BC2 0x89AD49FF b323</code>
 +
 +==== SET_PED_MOVEMENT_CLIPSET ====
 +<code cpp>void PED::SET_PED_MOVEMENT_CLIPSET(Ped ped, const char* clipSet, float p2) // 0xAF8A94EDE7712BEF 0xA817CDEB b323</code>
 +
 +<code>p2 is usually 1.0f
 +
 +EDIT 12/24/16: 
 +p2 does absolutely nothing no matter what the value is. 
 +
 +List of movement clipsets:
 +Thanks to elsewhat for list.
 +
 + "ANIM_GROUP_MOVE_BALLISTIC"
 + "ANIM_GROUP_MOVE_LEMAR_ALLEY"
 + "clipset@move@trash_fast_turn"
 + "FEMALE_FAST_RUNNER"
 + "missfbi4prepp1_garbageman"
 + "move_characters@franklin@fire"
 + "move_characters@Jimmy@slow@"
 + "move_characters@michael@fire"
 + "move_f@flee@a"
 + "move_f@scared"
 + "move_f@sexy@a"
 + "move_heist_lester"
 + "move_injured_generic"
 + "move_lester_CaneUp"
 + "move_m@bag"
 + "MOVE_M@BAIL_BOND_NOT_TAZERED"
 + "MOVE_M@BAIL_BOND_TAZERED"
 + "move_m@brave"
 + "move_m@casual@d"
 + "move_m@drunk@moderatedrunk"
 + "MOVE_M@DRUNK@MODERATEDRUNK"
 + "MOVE_M@DRUNK@MODERATEDRUNK_HEAD_UP"
 + "MOVE_M@DRUNK@SLIGHTLYDRUNK"
 + "MOVE_M@DRUNK@VERYDRUNK"
 + "move_m@fire"
 + "move_m@gangster@var_e"
 + "move_m@gangster@var_f"
 + "move_m@gangster@var_i"
 + "move_m@JOG@"
 + "MOVE_M@PRISON_GAURD"
 + "MOVE_P_M_ONE"
 + "MOVE_P_M_ONE_BRIEFCASE"
 + "move_p_m_zero_janitor"
 + "move_p_m_zero_slow"
 + "move_ped_bucket"
 + "move_ped_crouched"
 + "move_ped_mop"
 + "MOVE_M@FEMME@"
 + "MOVE_F@FEMME@"
 + "MOVE_M@GANGSTER@NG"
 + "MOVE_F@GANGSTER@NG"
 + "MOVE_M@POSH@"
 + "MOVE_F@POSH@"
 + "MOVE_M@TOUGH_GUY@"
 + "MOVE_F@TOUGH_GUY@"
 +
 +~ NotCrunchyTaco
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== RESET_PED_MOVEMENT_CLIPSET ====
 +<code cpp>void PED::RESET_PED_MOVEMENT_CLIPSET(Ped ped, float p1) // 0xAA74EC0CB0AAEA2C 0xB83CEE93 b323</code>
 +
 +<code>If p1 is 0.0, I believe you are back to normal. 
 +If p1 is 1.0, it looks like you can only rotate the ped, not walk.
 +
 +Using the following code to reset back to normal
 +PED::RESET_PED_MOVEMENT_CLIPSET(PLAYER::PLAYER_PED_ID(), 0.0);</code>
 +==== SET_PED_STRAFE_CLIPSET ====
 +<code cpp>void PED::SET_PED_STRAFE_CLIPSET(Ped ped, const char* clipSet) // 0x29A28F3F8CF6D854 0x0BACF010 b323</code>
 +
 +<code>Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== RESET_PED_STRAFE_CLIPSET ====
 +<code cpp>void PED::RESET_PED_STRAFE_CLIPSET(Ped ped) // 0x20510814175EA477 0xF1967A12 b323</code>
 +
 +==== SET_PED_WEAPON_MOVEMENT_CLIPSET ====
 +<code cpp>void PED::SET_PED_WEAPON_MOVEMENT_CLIPSET(Ped ped, const char* clipSet) // 0x2622E35B77D3ACA2 0xF8BE54DC b323</code>
 +
 +==== RESET_PED_WEAPON_MOVEMENT_CLIPSET ====
 +<code cpp>void PED::RESET_PED_WEAPON_MOVEMENT_CLIPSET(Ped ped) // 0x97B0DB5B4AA74E77 0xC60C9ACD b323</code>
 +
 +==== SET_PED_DRIVE_BY_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::SET_PED_DRIVE_BY_CLIPSET_OVERRIDE(Ped ped, const char* clipset) // 0xED34AB6C5CB36520 0xD4C73595 b323</code>
 +
 +==== CLEAR_PED_DRIVE_BY_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::CLEAR_PED_DRIVE_BY_CLIPSET_OVERRIDE(Ped ped) // 0x4AFE3690D7E0B5AC 0xAEC9163B b323</code>
 +
 +==== _SET_PED_COVER_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::_SET_PED_COVER_CLIPSET_OVERRIDE(Ped ped, const char* p1) // 0x9DBA107B4937F809  b323</code>
 +
 +<code>Found in the b617d scripts:
 +PED::_9DBA107B4937F809(v_7, "trevor_heist_cover_2h");
 +
 +SET_PED_MO*</code>
 +==== _CLEAR_PED_COVER_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::_CLEAR_PED_COVER_CLIPSET_OVERRIDE(Ped ped) // 0xC79196DCB36F6121  b323</code>
 +
 +<code>CLEAR_PED_*</code>
 +==== _0x80054D7FCC70EEC6 ====
 +<code cpp>void PED::_0x80054D7FCC70EEC6(Ped ped) // 0x80054D7FCC70EEC6  b323</code>
 +
 +<code>CLEAR_PED_*</code>
 +==== SET_PED_IN_VEHICLE_CONTEXT ====
 +<code cpp>void PED::SET_PED_IN_VEHICLE_CONTEXT(Ped ped, Hash context) // 0x530071295899A8C6 0x27F25C0E b323</code>
 +
 +<code>PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_PASSENGER"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_RESTRICTED_PASSENGER"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT_REAR"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(l_95, MISC::GET_HASH_KEY("MISS_FAMILY2_JIMMY_BICYCLE"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(num3, MISC::GET_HASH_KEY("MISSFBI2_MICHAEL_DRIVEBY"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"));
 +PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISSFBI5_TREVOR_DRIVING"));</code>
 +==== RESET_PED_IN_VEHICLE_CONTEXT ====
 +<code cpp>void PED::RESET_PED_IN_VEHICLE_CONTEXT(Ped ped) // 0x22EF8FF8778030EB 0x3C94D88A b323</code>
 +
 +==== IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM ====
 +<code cpp>BOOL PED::IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(Ped ped, const char* animDict, const char* anim) // 0x6EC47A344923E1ED 0x3C30B447 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== SET_PED_ALTERNATE_WALK_ANIM ====
 +<code cpp>void PED::SET_PED_ALTERNATE_WALK_ANIM(Ped ped, const char* animDict, const char* animName, float p3, BOOL p4) // 0x6C60394CB4F75E9A 0x895E1D67 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== CLEAR_PED_ALTERNATE_WALK_ANIM ====
 +<code cpp>void PED::CLEAR_PED_ALTERNATE_WALK_ANIM(Ped ped, float p1) // 0x8844BBFCE30AA9E9 0x5736FB23 b323</code>
 +
 +==== SET_PED_ALTERNATE_MOVEMENT_ANIM ====
 +<code cpp>void PED::SET_PED_ALTERNATE_MOVEMENT_ANIM(Ped ped, int stance, const char* animDictionary, const char* animationName, float p4, BOOL p5) // 0x90A43CC281FFAB46 0xBA84FD8C b323</code>
 +
 +<code>stance:
 +0 = idle
 +1 = walk
 +2 = running
 +
 +p5 = usually set to true
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== CLEAR_PED_ALTERNATE_MOVEMENT_ANIM ====
 +<code cpp>void PED::CLEAR_PED_ALTERNATE_MOVEMENT_ANIM(Ped ped, int stance, float p2) // 0xD8D19675ED5FBDCE 0x7A7F5BC3 b323</code>
 +
 +==== SET_PED_GESTURE_GROUP ====
 +<code cpp>void PED::SET_PED_GESTURE_GROUP(Ped ped, const char* animGroupGesture) // 0xDDF803377F94AAA8 0x170DA109 b323</code>
 +
 +<code>From the scripts:
 +PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),
 +"ANIM_GROUP_GESTURE_MISS_FRA0");
 +PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),
 +"ANIM_GROUP_GESTURE_MISS_DocksSetup1");</code>
 +==== GET_ANIM_INITIAL_OFFSET_POSITION ====
 +<code cpp>Vector3 PED::GET_ANIM_INITIAL_OFFSET_POSITION(const char* animDict, const char* animName, float x, float y, float z, float xRot, float yRot, float zRot, float p8, int p9) // 0xBE22B26DD764C040 0xC59D4268 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_ANIM_INITIAL_OFFSET_ROTATION ====
 +<code cpp>Vector3 PED::GET_ANIM_INITIAL_OFFSET_ROTATION(const char* animDict, const char* animName, float x, float y, float z, float xRot, float yRot, float zRot, float p8, int p9) // 0x4B805E6046EE9E47 0x5F7789E6 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== GET_PED_DRAWABLE_VARIATION ====
 +<code cpp>int PED::GET_PED_DRAWABLE_VARIATION(Ped ped, int componentId) // 0x67F3780DD425D4FC 0x29850FE2 b323</code>
 +
 +<code>Ids
 +0 - Head
 +1 - Beard
 +2 - Hair
 +3 - Torso
 +4 - Legs
 +5 - Hands
 +6 - Foot
 +7 - ------
 +8 - Accessories 1
 +9 - Accessories 2
 +10- Decals
 +11 - Auxiliary parts for torso</code>
 +==== GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS ====
 +<code cpp>int PED::GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(Ped ped, int componentId) // 0x27561561732A7842 0x9754C27D b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== GET_PED_TEXTURE_VARIATION ====
 +<code cpp>int PED::GET_PED_TEXTURE_VARIATION(Ped ped, int componentId) // 0x04A355E041E004E6 0xC0A8590A b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== GET_NUMBER_OF_PED_TEXTURE_VARIATIONS ====
 +<code cpp>int PED::GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(Ped ped, int componentId, int drawableId) // 0x8F7156A3142A6BAD 0x83D9FBE7 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS ====
 +<code cpp>int PED::GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(Ped ped, int propId) // 0x5FAF9754E789FB47 0xC9780B95 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS ====
 +<code cpp>int PED::GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(Ped ped, int propId, int drawableId) // 0xA6E7F1CEB523E171 0x4892B882 b323</code>
 +
 +<code>Need to check behavior when drawableId = -1
 +
 +- Doofy.Ass
 +Why this function doesn't work and return nill value?
 +GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER.PLAYER_PED_ID(), 0, 5)
 +
 +tick: scripts/addins/menu_execute.lua:51: attempt to call field 'GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS' (a nil value)
 +
 +
 +List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== GET_PED_PALETTE_VARIATION ====
 +<code cpp>int PED::GET_PED_PALETTE_VARIATION(Ped ped, int componentId) // 0xE3DD5F2A84B42281 0xEF1BC082 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== _0x9E30E91FB03A2CAF ====
 +<code cpp>BOOL PED::_0x9E30E91FB03A2CAF(Any* p0, Any* p1) // 0x9E30E91FB03A2CAF 0x52559BB6 b323</code>
 +
 +==== _0x1E77FA7A62EE6C4C ====
 +<code cpp>Any PED::_0x1E77FA7A62EE6C4C(Any p0) // 0x1E77FA7A62EE6C4C 0x021F5B36 b323</code>
 +
 +<code>GET_*</code>
 +==== _0xF033419D1B81FAE8 ====
 +<code cpp>Any PED::_0xF033419D1B81FAE8(Any p0) // 0xF033419D1B81FAE8 0x8FDDB5DB b323</code>
 +
 +<code>GET_*</code>
 +==== IS_PED_COMPONENT_VARIATION_VALID ====
 +<code cpp>BOOL PED::IS_PED_COMPONENT_VARIATION_VALID(Ped ped, int componentId, int drawableId, int textureId) // 0xE825F6B6CEA7671D 0x952ABD9A b323</code>
 +
 +<code>Checks if the component variation is valid, this works great for randomizing components using loops.
 +
 +List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
 +
 +Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json</code>
 +==== SET_PED_COMPONENT_VARIATION ====
 +<code cpp>void PED::SET_PED_COMPONENT_VARIATION(Ped ped, int componentId, int drawableId, int textureId, int paletteId) // 0x262B14F48D29DE80 0xD4F7B05C b323</code>
 +
 +<code>paletteId/palletColor -  0 to 3. 
 +enum PedVariationData
 +{
 + PED_VARIATION_FACE = 0,
 +   PED_VARIATION_HEAD = 1,
 +   PED_VARIATION_HAIR = 2,
 +   PED_VARIATION_TORSO = 3,
 +  PED_VARIATION_LEGS = 4,
 +   PED_VARIATION_HANDS = 5,
 +  PED_VARIATION_FEET = 6,
 +   PED_VARIATION_EYES = 7,
 +   PED_VARIATION_ACCESSORIES = 8,
 +    PED_VARIATION_TASKS = 9,
 +  PED_VARIATION_TEXTURES = 10,
 +  PED_VARIATION_TORSO2 = 11
 +};
 +Usage: 
 +SET_PED_COMPONENT_VARIATION(playerPed, PED_VARIATION_FACE, GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(playerPed, PED_VARIATION_FACE), GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(playerPed, PED_VARIATION_FACE, 0), 2);
 +
 +List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
 +
 +Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json</code>
 +==== SET_PED_RANDOM_COMPONENT_VARIATION ====
 +<code cpp>void PED::SET_PED_RANDOM_COMPONENT_VARIATION(Ped ped, int p1) // 0xC8A9481A01E63C28 0x4111BA46 b323</code>
 +
 +<code>p1 is always 0 in R* scripts.
 +
 +List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== SET_PED_RANDOM_PROPS ====
 +<code cpp>void PED::SET_PED_RANDOM_PROPS(Ped ped) // 0xC44AA05345C992C6 0xE3318E0E b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== SET_PED_DEFAULT_COMPONENT_VARIATION ====
 +<code cpp>void PED::SET_PED_DEFAULT_COMPONENT_VARIATION(Ped ped) // 0x45EEE61580806D63 0xC866A984 b323</code>
 +
 +<code>Sets Ped Default Clothes</code>
 +==== SET_PED_BLEND_FROM_PARENTS ====
 +<code cpp>void PED::SET_PED_BLEND_FROM_PARENTS(Ped ped, Any p1, Any p2, float p3, float p4) // 0x137BBD05230DB22D 0x837BD370 b323</code>
 +
 +==== SET_PED_HEAD_BLEND_DATA ====
 +<code cpp>void PED::SET_PED_HEAD_BLEND_DATA(Ped ped, int shapeFirstID, int shapeSecondID, int shapeThirdID, int skinFirstID, int skinSecondID, int skinThirdID, float shapeMix, float skinMix, float thirdMix, BOOL isParent) // 0x9414E18B9434C2FE 0x60746B88 b323</code>
 +
 +<code>The "shape" parameters control the shape of the ped's face. The "skin" parameters control the skin tone. ShapeMix and skinMix control how much the first and second IDs contribute,(typically mother and father.) ThirdMix overrides the others in favor of the third IDs. IsParent is set for "children" of the player character's grandparents during old-gen character creation. It has unknown effect otherwise.
 +
 +The IDs start at zero and go Male Non-DLC, Female Non-DLC, Male DLC, and Female DLC.
 +
 +!!!Can someone add working example for this???
 +
 +try this:
 +       headBlendData headData;
 +       GET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), &headData);
 +
 +       SET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), headData.shapeFirst, headData.shapeSecond, headData.shapeThird, headData.skinFirst, headData.skinSecond
 +          , headData.skinThird, headData.shapeMix, headData.skinMix, headData.skinThird, 0);
 +
 +
 +For more info please refer to this topic. 
 +gtaforums.com/topic/858970-all-gtao-face-ids-pedset-ped-head-blend-data-explained</code>
 +==== GET_PED_HEAD_BLEND_DATA ====
 +<code cpp>BOOL PED::GET_PED_HEAD_BLEND_DATA(Ped ped, Any* headBlendData) // 0x2746BD9D88C5C5D0 0x44E1680C b323</code>
 +
 +<code>The pointer is to a padded struct that matches the arguments to SET_PED_HEAD_BLEND_DATA(...). There are 4 bytes of padding after each field.
 +pass this struct in the second parameter 
 +typedef struct
 +{
 +        int shapeFirst, shapeSecond, shapeThird; 
 +        int skinFirst, skinSecond, skinThird; 
 +   float shapeMix, skinMix, thirdMix;
 +} headBlendData;</code>
 +==== UPDATE_PED_HEAD_BLEND_DATA ====
 +<code cpp>void PED::UPDATE_PED_HEAD_BLEND_DATA(Ped ped, float shapeMix, float skinMix, float thirdMix) // 0x723538F61C647C5A 0x5CB76219 b323</code>
 +
 +<code>See SET_PED_HEAD_BLEND_DATA().</code>
 +==== _SET_PED_EYE_COLOR ====
 +<code cpp>void PED::_SET_PED_EYE_COLOR(Ped ped, int index) // 0x50B56988B170AFDF  b323</code>
 +
 +<code>Used for freemode (online) characters.
 +
 +For some reason, the scripts use a rounded float for the index.
 +Indexes:
 +1. black
 +2. very light blue/green
 +3. dark blue
 +4. brown
 +5. darker brown
 +6. light brown
 +7. blue
 +8. light blue
 +9. pink
 +10. yellow
 +11. purple
 +12. black
 +13. dark green
 +14. light brown
 +15. yellow/black pattern
 +16. light colored spiral pattern
 +17. shiny red
 +18. shiny half blue/half red
 +19. half black/half light blue
 +20. white/red perimter
 +21. green snake
 +22. red snake
 +23. dark blue snake
 +24. dark yellow
 +25. bright yellow
 +26. all black
 +28. red small pupil
 +29. devil blue/black
 +30. white small pupil
 +31. glossed over</code>
 +==== _GET_PED_EYE_COLOR ====
 +<code cpp>int PED::_GET_PED_EYE_COLOR(Ped ped) // 0x76BBA2CEE66D47E9  b1011</code>
 +
 +<code>A getter for _SET_PED_EYE_COLOR. Returns -1 if fails to get.</code>
 +==== SET_PED_HEAD_OVERLAY ====
 +<code cpp>void PED::SET_PED_HEAD_OVERLAY(Ped ped, int overlayID, int index, float opacity) // 0x48F44967FA05CC1E 0xD28DBA90 b323</code>
 +
 +<code>OverlayID ranges from 0 to 12, index from 0 to _GET_NUM_OVERLAY_VALUES(overlayID)-1, and opacity from 0.0 to 1.0. 
 +
 +overlayID       Part                  Index, to disable
 +0               Blemishes             0 - 23, 255
 +1               Facial Hair           0 - 28, 255
 +2               Eyebrows              0 - 33, 255
 +3               Ageing                0 - 14, 255
 +4               Makeup                0 - 74, 255
 +5               Blush                 0 - 6, 255
 +6               Complexion            0 - 11, 255
 +7               Sun Damage            0 - 10, 255
 +8               Lipstick              0 - 9, 255
 +9               Moles/Freckles        0 - 17, 255
 +10              Chest Hair            0 - 16, 255
 +11              Body Blemishes        0 - 11, 255
 +12              Add Body Blemishes    0 - 1, 255</code>
 +==== _GET_PED_HEAD_OVERLAY_VALUE ====
 +<code cpp>int PED::_GET_PED_HEAD_OVERLAY_VALUE(Ped ped, int overlayID) // 0xA60EF3B6461A4D43  b323</code>
 +
 +<code>Likely a char, if that overlay is not set, e.i. "None" option, returns 255;
 +
 +This might be the once removed native GET_PED_HEAD_OVERLAY.</code>
 +==== GET_PED_HEAD_OVERLAY_NUM ====
 +<code cpp>int PED::GET_PED_HEAD_OVERLAY_NUM(int overlayID) // 0xCF1CE768BB43480E 0xFF43C18D b323</code>
 +
 +<code>Used with freemode (online) characters.</code>
 +==== _SET_PED_HEAD_OVERLAY_COLOR ====
 +<code cpp>void PED::_SET_PED_HEAD_OVERLAY_COLOR(Ped ped, int overlayID, int colorType, int colorID, int secondColorID) // 0x497BF74A7B9CB952  b323</code>
 +
 +<code>Used for freemode (online) characters.
 +
 +ColorType is 1 for eyebrows, beards, and chest hair; 2 for blush and lipstick; and 0 otherwise, though not called in those cases.
 +
 +Called after SET_PED_HEAD_OVERLAY().</code>
 +==== _SET_PED_HAIR_COLOR ====
 +<code cpp>void PED::_SET_PED_HAIR_COLOR(Ped ped, int colorID, int highlightColorID) // 0x4CFFC65454C93A49  b323</code>
 +
 +<code>Used for freemode (online) characters.</code>
 +==== _GET_NUM_HAIR_COLORS ====
 +<code cpp>int PED::_GET_NUM_HAIR_COLORS() // 0xE5C0CF872C2AD150  b323</code>
 +
 +<code>Used for freemode (online) characters.</code>
 +==== _GET_NUM_MAKEUP_COLORS ====
 +<code cpp>int PED::_GET_NUM_MAKEUP_COLORS() // 0xD1F7CA1535D22818  b323</code>
 +
 +==== _GET_PED_HAIR_RGB_COLOR ====
 +<code cpp>void PED::_GET_PED_HAIR_RGB_COLOR(int hairColorIndex, int* outR, int* outG, int* outB) // 0x4852FC386E2E1BB5  b323</code>
 +
 +<code>Input: Haircolor index, value between 0 and 63 (inclusive).
 +Output: RGB values for the haircolor specified in the input.
 +
 +This is used with the hair color swatches scaleform.
 +Use `_0x013E5CFC38CD5387` to get the makeup colors.</code>
 +==== _GET_PED_MAKEUP_RGB_COLOR ====
 +<code cpp>void PED::_GET_PED_MAKEUP_RGB_COLOR(int makeupColorIndex, int* outR, int* outG, int* outB) // 0x013E5CFC38CD5387  b323</code>
 +
 +<code>Input: Makeup color index, value between 0 and 63 (inclusive).
 +Output: RGB values for the makeup color specified in the input.
 +
 +This is used with the makeup color swatches scaleform.
 +Use `_0x4852FC386E2E1BB5` to get the hair colors.</code>
 +==== _IS_PED_HAIR_COLOR_VALID_2 ====
 +<code cpp>BOOL PED::_IS_PED_HAIR_COLOR_VALID_2(int colorId) // 0xED6D8E27A43B8CDE  b323</code>
 +
 +==== _0xEA9960D07DADCF10 ====
 +<code cpp>int PED::_0xEA9960D07DADCF10(Any p0) // 0xEA9960D07DADCF10  b323</code>
 +
 +==== _IS_PED_LIPSTICK_COLOR_VALID_2 ====
 +<code cpp>BOOL PED::_IS_PED_LIPSTICK_COLOR_VALID_2(int colorId) // 0x3E802F11FBE27674  b323</code>
 +
 +==== _IS_PED_BLUSH_COLOR_VALID_2 ====
 +<code cpp>BOOL PED::_IS_PED_BLUSH_COLOR_VALID_2(int colorId) // 0xF41B5D290C99A3D6  b323</code>
 +
 +==== _IS_PED_HAIR_COLOR_VALID ====
 +<code cpp>BOOL PED::_IS_PED_HAIR_COLOR_VALID(int colorID) // 0xE0D36E5D9E99CC21  b323</code>
 +
 +==== _0xAAA6A3698A69E048 ====
 +<code cpp>Any PED::_0xAAA6A3698A69E048(Any p0) // 0xAAA6A3698A69E048  b323</code>
 +
 +==== _IS_PED_LIPSTICK_COLOR_VALID ====
 +<code cpp>BOOL PED::_IS_PED_LIPSTICK_COLOR_VALID(int colorID) // 0x0525A2C2562F3CD4  b323</code>
 +
 +==== _IS_PED_BLUSH_COLOR_VALID ====
 +<code cpp>BOOL PED::_IS_PED_BLUSH_COLOR_VALID(int colorID) // 0x604E810189EE3A59  b323</code>
 +
 +==== _IS_PED_BODY_BLEMISH_VALID ====
 +<code cpp>BOOL PED::_IS_PED_BODY_BLEMISH_VALID(int colorId) // 0x09E7ECA981D9B210  b1290</code>
 +
 +==== _0xC56FBF2F228E1DAC ====
 +<code cpp>Any PED::_0xC56FBF2F228E1DAC(Hash modelHash, Any p1, Any p2) // 0xC56FBF2F228E1DAC  b323</code>
 +
 +==== _SET_PED_FACE_FEATURE ====
 +<code cpp>void PED::_SET_PED_FACE_FEATURE(Ped ped, int index, float scale) // 0x71A5C1DBA060049E  b323</code>
 +
 +<code>Sets the various freemode face features, e.g. nose length, chin shape. Scale ranges from -1.0 to 1.0.
 +
 +Index can be 0 - 19
 +
 +SET_PED_M* 
 +
 +Here is the list of names. It starts at 0 and runs in sequence 
 +
 +Face_Feature 
 +
 +Nose_Width
 +
 +Nose_Peak_Hight
 +
 +Nose_Peak_Lenght
 +
 +Nose_Bone_High
 +
 +Nose_Peak_Lowering
 +
 +Nose_Bone_Twist
 +
 +EyeBrown_High
 +
 +EyeBrown_Forward
 +
 +Cheeks_Bone_High
 +
 +Cheeks_Bone_Width 
 +
 +Cheeks_Width
 +
 +Eyes_Openning 
 +
 +Lips_Thickness
 +
 +Jaw_Bone_Width: Bone size to sides 
 +
 +Jaw_Bone_Back_Lenght: Bone size to back 
 +
 +Chimp_Bone_Lowering: Go Down
 +
 +Chimp_Bone_Lenght: Go forward
 +
 +Chimp_Bone_Width
 +
 +Chimp_Hole
 +
 +Neck_Thikness</code>
 +==== HAS_PED_HEAD_BLEND_FINISHED ====
 +<code cpp>BOOL PED::HAS_PED_HEAD_BLEND_FINISHED(Ped ped) // 0x654CD0A825161131 0x2B1BD9C5 b323</code>
 +
 +==== FINALIZE_HEAD_BLEND ====
 +<code cpp>void PED::FINALIZE_HEAD_BLEND(Ped ped) // 0x4668D80430D6C299 0x894314A4 b323</code>
 +
 +==== SET_HEAD_BLEND_PALETTE_COLOR ====
 +<code cpp>void PED::SET_HEAD_BLEND_PALETTE_COLOR(Ped ped, int r, int g, int b, int id) // 0xCC9682B8951C5229 0x57E5B3F9 b323</code>
 +
 +<code>p4 seems to vary from 0 to 3.
 +Preview: https://gfycat.com/MaleRareAmazonparrot</code>
 +==== DISABLE_HEAD_BLEND_PALETTE_COLOR ====
 +<code cpp>void PED::DISABLE_HEAD_BLEND_PALETTE_COLOR(Ped ped) // 0xA21C118553BBDF02 0xC6F36292 b323</code>
 +
 +==== GET_PED_HEAD_BLEND_FIRST_INDEX ====
 +<code cpp>int PED::GET_PED_HEAD_BLEND_FIRST_INDEX(int type) // 0x68D353AB88B97E0C 0x211DEFEC b323</code>
 +
 +<code>Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.
 +
 +Used when calling SET_PED_HEAD_BLEND_DATA.</code>
 +==== _GET_NUM_PARENT_PEDS_OF_TYPE ====
 +<code cpp>int PED::_GET_NUM_PARENT_PEDS_OF_TYPE(int type) // 0x5EF37013A6539C9D 0x095D3BD8 b323</code>
 +
 +<code>Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.</code>
 +==== SET_PED_PRELOAD_VARIATION_DATA ====
 +<code cpp>Any PED::SET_PED_PRELOAD_VARIATION_DATA(Ped ped, int slot, int drawableId, int textureId) // 0x39D55A620FCB6A3A 0x45F3BDFB b323</code>
 +
 +<code>from extreme3.c4
 +PED::_39D55A620FCB6A3A(PLAYER::PLAYER_PED_ID(), 8, PED::GET_PED_DRAWABLE_VARIATION(PLAYER::PLAYER_PED_ID(), 8), PED::GET_PED_TEXTURE_VARIATION(PLAYER::PLAYER_PED_ID(), 8));
 +
 +p1 is probably componentId</code>
 +==== HAS_PED_PRELOAD_VARIATION_DATA_FINISHED ====
 +<code cpp>BOOL PED::HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(Ped ped) // 0x66680A92700F43DF 0xC6517D52 b323</code>
 +
 +==== RELEASE_PED_PRELOAD_VARIATION_DATA ====
 +<code cpp>void PED::RELEASE_PED_PRELOAD_VARIATION_DATA(Ped ped) // 0x5AAB586FFEC0FD96 0x6435F67F b323</code>
 +
 +==== SET_PED_PRELOAD_PROP_DATA ====
 +<code cpp>BOOL PED::SET_PED_PRELOAD_PROP_DATA(Ped ped, int componentId, int drawableId, int TextureId) // 0x2B16A3BFF1FBCE49 0xC0E23671 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== HAS_PED_PRELOAD_PROP_DATA_FINISHED ====
 +<code cpp>BOOL PED::HAS_PED_PRELOAD_PROP_DATA_FINISHED(Ped ped) // 0x784002A632822099 0x3B0CA391 b323</code>
 +
 +==== RELEASE_PED_PRELOAD_PROP_DATA ====
 +<code cpp>void PED::RELEASE_PED_PRELOAD_PROP_DATA(Ped ped) // 0xF79F9DEF0AADE61A 0xFD103BA7 b323</code>
 +
 +==== GET_PED_PROP_INDEX ====
 +<code cpp>int PED::GET_PED_PROP_INDEX(Ped ped, int componentId) // 0x898CC20EA75BACD8 0x746DDAC0 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== SET_PED_PROP_INDEX ====
 +<code cpp>void PED::SET_PED_PROP_INDEX(Ped ped, int componentId, int drawableId, int TextureId, BOOL attach) // 0x93376B65A266EB5F 0x0829F2E2 b323</code>
 +
 +<code>ComponentId can be set to various things based on what category you're wanting to set
 +enum PedPropsData
 +{
 +    PED_PROP_HATS = 0,
 +    PED_PROP_GLASSES = 1,
 + PED_PROP_EARS = 2,
 +    PED_PROP_WATCHES = 3,
 +};
 +Usage: SET_PED_PROP_INDEX(playerPed, PED_PROP_HATS, GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(playerPed, PED_PROP_HATS), GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(playerPed, PED_PROP_HATS, 0), TRUE);
 +
 +List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== KNOCK_OFF_PED_PROP ====
 +<code cpp>void PED::KNOCK_OFF_PED_PROP(Ped ped, BOOL p1, BOOL p2, BOOL p3, BOOL p4) // 0x6FD7816A36615F48 0x08D8B180 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== CLEAR_PED_PROP ====
 +<code cpp>void PED::CLEAR_PED_PROP(Ped ped, int propId) // 0x0943E5B8E078E76E 0x2D23D743 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== CLEAR_ALL_PED_PROPS ====
 +<code cpp>void PED::CLEAR_ALL_PED_PROPS(Ped ped) // 0xCD8A7537A9B52F06 0x81DF8B43 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== DROP_AMBIENT_PROP ====
 +<code cpp>void PED::DROP_AMBIENT_PROP(Ped ped) // 0xAFF4710E2A0A6C12 0x728D3D53 b323</code>
 +
 +==== GET_PED_PROP_TEXTURE_INDEX ====
 +<code cpp>int PED::GET_PED_PROP_TEXTURE_INDEX(Ped ped, int componentId) // 0xE131A28626F81AB2 0x922A6653 b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== CLEAR_PED_PARACHUTE_PACK_VARIATION ====
 +<code cpp>void PED::CLEAR_PED_PARACHUTE_PACK_VARIATION(Ped ped) // 0x1280804F7CFD2D6C 0x7BCD8991 b323</code>
 +
 +==== _SET_PED_SCUBA_GEAR_VARIATION ====
 +<code cpp>void PED::_SET_PED_SCUBA_GEAR_VARIATION(Ped ped) // 0x36C6984C3ED0C911  b323</code>
 +
 +<code>This native sets a scuba mask for freemode models and an oxygen bottle for player_* models. It works on freemode and player_* models.</code>
 +==== CLEAR_PED_SCUBA_GEAR_VARIATION ====
 +<code cpp>void PED::CLEAR_PED_SCUBA_GEAR_VARIATION(Ped ped) // 0xB50EB4CCB29704AC 0x080275EE b323</code>
 +
 +<code>Removes the scubagear (for mp male: component id: 8, drawableId: 123, textureId: any) from peds. Does not play the 'remove scuba gear' animation, but instantly removes it.</code>
 +==== _0xFEC9A3B1820F3331 ====
 +<code cpp>BOOL PED::_0xFEC9A3B1820F3331(Any p0) // 0xFEC9A3B1820F3331  b323</code>
 +
 +==== SET_BLOCKING_OF_NON_TEMPORARY_EVENTS ====
 +<code cpp>void PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(Ped ped, BOOL toggle) // 0x9F8AA94D6D97DBF4 0xDFE34E4A b323</code>
 +
 +<code>works with TASK::TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS to make a ped completely oblivious to all events going on around him</code>
 +==== SET_PED_BOUNDS_ORIENTATION ====
 +<code cpp>void PED::SET_PED_BOUNDS_ORIENTATION(Ped ped, float p1, float p2, float p3, float p4, float p5) // 0x4F5F651ACCC9C4CF 0xCFA20D68 b323</code>
 +
 +==== REGISTER_TARGET ====
 +<code cpp>void PED::REGISTER_TARGET(Ped ped, Ped target) // 0x2F25D9AEFA34FBA2 0x50A95442 b323</code>
 +
 +<code>PED::REGISTER_TARGET(l_216, PLAYER::PLAYER_PED_ID()); from re_prisonbreak.txt.
 +
 +l_216 = RECSBRobber1</code>
 +==== REGISTER_HATED_TARGETS_AROUND_PED ====
 +<code cpp>void PED::REGISTER_HATED_TARGETS_AROUND_PED(Ped ped, float radius) // 0x9222F300BF8354FE 0x7F87559E b323</code>
 +
 +<code>Based on TASK_COMBAT_HATED_TARGETS_AROUND_PED, the parameters are likely similar (PedHandle, and area to attack in).</code>
 +==== GET_RANDOM_PED_AT_COORD ====
 +<code cpp>Ped PED::GET_RANDOM_PED_AT_COORD(float x, float y, float z, float xRadius, float yRadius, float zRadius, int pedType) // 0x876046A8E3A4B71C 0xDC8239EB b323</code>
 +
 +<code>Gets a random ped in the x/y/zRadius near the x/y/z coordinates passed. 
 +
 +Ped Types:
 +Any = -1
 +Player = 1
 +Male = 4 
 +Female = 5 
 +Cop = 6
 +Human = 26
 +SWAT = 27 
 +Animal = 28
 +Army = 29</code>
 +==== GET_CLOSEST_PED ====
 +<code cpp>BOOL PED::GET_CLOSEST_PED(float x, float y, float z, float radius, BOOL p4, BOOL p5, Ped* outPed, BOOL p7, BOOL p8, int pedType) // 0xC33AB876A77F8164 0x8F6C1F55 b323</code>
 +
 +<code>Gets the closest ped in a radius.
 +
 +Ped Types:
 +Any ped = -1
 +Player = 1
 +Male = 4 
 +Female = 5 
 +Cop = 6
 +Human = 26
 +SWAT = 27 
 +Animal = 28
 +Army = 29
 +
 +------------------
 +P4 P5 P7 P8
 +1  0  x  x  = return nearest walking Ped
 +1  x  0  x  = return nearest walking Ped
 +x  1  1  x  = return Ped you are using
 +0  0  x  x  = no effect
 +0  x  0  x  = no effect
 +
 +x = can be 1 or 0. Does not have any obvious changes.
 +
 +This function does not return ped who is:
 +1. Standing still
 +2. Driving
 +3. Fleeing
 +4. Attacking
 +
 +This function only work if the ped is:
 +1. walking normally.
 +2. waiting to cross a road.
 +
 +Note: PED::GET_PED_NEARBY_PEDS works for more peds.</code>
 +==== SET_SCENARIO_PEDS_TO_BE_RETURNED_BY_NEXT_COMMAND ====
 +<code cpp>void PED::SET_SCENARIO_PEDS_TO_BE_RETURNED_BY_NEXT_COMMAND(BOOL value) // 0x14F19A8782C8071E 0x85615FD0 b323</code>
 +
 +<code>Sets a value indicating whether scenario peds should be returned by the next call to a command that returns peds. Eg. GET_CLOSEST_PED.</code>
 +==== _0x03EA03AF85A85CB7 ====
 +<code cpp>BOOL PED::_0x03EA03AF85A85CB7(Ped ped, BOOL p1, BOOL p2, BOOL p3, BOOL p4, BOOL p5, BOOL p6, BOOL p7, Any p8) // 0x03EA03AF85A85CB7 0x18DD76A1 b323</code>
 +
 +==== SET_DRIVER_RACING_MODIFIER ====
 +<code cpp>void PED::SET_DRIVER_RACING_MODIFIER(Ped driver, float modifier) // 0xDED5AF5A0EA4B297 0x6D55B3B3 b323</code>
 +
 +<code>Scripts use 0.2, 0.5 and 1.0. Value must be >= 0.0 && <= 1.0</code>
 +==== SET_DRIVER_ABILITY ====
 +<code cpp>void PED::SET_DRIVER_ABILITY(Ped driver, float ability) // 0xB195FFA8042FC5C3 0xAAD4012C b323</code>
 +
 +<code>The function specifically verifies the value is equal to, or less than 1.0f. If it is greater than 1.0f, the function does nothing at all.</code>
 +==== SET_DRIVER_AGGRESSIVENESS ====
 +<code cpp>void PED::SET_DRIVER_AGGRESSIVENESS(Ped driver, float aggressiveness) // 0xA731F608CA104E3C 0x8B02A8FB b323</code>
 +
 +<code>range 0.0f - 1.0f</code>
 +==== CAN_PED_RAGDOLL ====
 +<code cpp>BOOL PED::CAN_PED_RAGDOLL(Ped ped) // 0x128F79EDCECE4FD5 0xC0EFB7A3 b323</code>
 +
 +<code>Prevents the ped from going limp.
 +
 +[Example: Can prevent peds from falling when standing on moving vehicles.]</code>
 +==== SET_PED_TO_RAGDOLL ====
 +<code cpp>BOOL PED::SET_PED_TO_RAGDOLL(Ped ped, int time1, int time2, int ragdollType, BOOL p4, BOOL p5, BOOL p6) // 0xAE99FB955581844A 0x83CB5052 b323</code>
 +
 +<code>p4/p5: Unused in TU27
 +Ragdoll Types:
 +**0**: CTaskNMRelax
 +**1**: CTaskNMScriptControl: Hardcoded not to work in networked environments.
 +**Else**: CTaskNMBalance
 +time1- Time(ms) Ped is in ragdoll mode; only applies to ragdoll types 0 and not 1.
 +
 +time2- Unknown time, in milliseconds
 +
 +ragdollType-
 +0 : Normal ragdoll
 +1 : Falls with stiff legs/body
 +2 : Narrow leg stumble(may not fall)
 +3 : Wide leg stumble(may not fall)
 +
 +p4, p5, p6- No idea. In R*'s scripts they are usually either "true, true, false" or "false, false, false".
 +
 +
 +
 +
 +EDIT 3/11/16: unclear what 'mircoseconds' mean-- a microsecond is 1000x a ms, so time2 must be 1000x time1?  more testing needed.  -sob
 +
 +Edit Mar 21, 2017: removed part about time2 being the microseconds version of time1. this just isn't correct. time2 is in milliseconds, and time1 and time2 don't seem to be connected in any way.</code>
 +==== SET_PED_TO_RAGDOLL_WITH_FALL ====
 +<code cpp>BOOL PED::SET_PED_TO_RAGDOLL_WITH_FALL(Ped ped, int time, int p2, int ragdollType, float x, float y, float z, float p7, float p8, float p9, float p10, float p11, float p12, float p13) // 0xD76632D99E4966C8 0xFA12E286 b323</code>
 +
 +<code>Return variable is never used in R*'s scripts.
 +
 +Not sure what p2 does. It seems like it would be a time judging by it's usage in R*'s scripts, but didn't seem to affect anything in my testings.
 +
 +x, y, and z are coordinates, most likely to where the ped will fall.
 +
 +p7 is probably the force of the fall, but untested, so I left the variable name the same.
 +
 +p8 to p13 are always 0f in R*'s scripts.
 +
 +(Simplified) Example of the usage of the function from R*'s scripts:
 +ped::set_ped_to_ragdoll_with_fall(ped, 1500, 2000, 1, -entity::get_entity_forward_vector(ped), 1f, 0f, 0f, 0f, 0f, 0f, 0f);
 +</code>
 +==== SET_PED_RAGDOLL_ON_COLLISION ====
 +<code cpp>void PED::SET_PED_RAGDOLL_ON_COLLISION(Ped ped, BOOL toggle) // 0xF0A4F1BBF4FA7497 0x2654A0F4 b323</code>
 +
 +<code>Causes Ped to ragdoll on collision with any object (e.g Running into trashcan). If applied to player you will sometimes trip on the sidewalk.</code>
 +==== IS_PED_RAGDOLL ====
 +<code cpp>BOOL PED::IS_PED_RAGDOLL(Ped ped) // 0x47E4E977581C5B55 0xC833BBE1 b323</code>
 +
 +<code>If the ped handle passed through the parenthesis is in a ragdoll state this will return true.</code>
 +==== IS_PED_RUNNING_RAGDOLL_TASK ====
 +<code cpp>BOOL PED::IS_PED_RUNNING_RAGDOLL_TASK(Ped ped) // 0xE3B6097CC25AA69E 0x44A153F2 b323</code>
 +
 +==== SET_PED_RAGDOLL_FORCE_FALL ====
 +<code cpp>void PED::SET_PED_RAGDOLL_FORCE_FALL(Ped ped) // 0x01F6594B923B9251 0x20A5BDE0 b323</code>
 +
 +==== RESET_PED_RAGDOLL_TIMER ====
 +<code cpp>void PED::RESET_PED_RAGDOLL_TIMER(Ped ped) // 0x9FA4664CF62E47E8 0xF2865370 b323</code>
 +
 +==== SET_PED_CAN_RAGDOLL ====
 +<code cpp>void PED::SET_PED_CAN_RAGDOLL(Ped ped, BOOL toggle) // 0xB128377056A54E2A 0xCF1384C4 b323</code>
 +
 +==== IS_PED_RUNNING_MELEE_TASK ====
 +<code cpp>BOOL PED::IS_PED_RUNNING_MELEE_TASK(Ped ped) // 0xD1871251F3B5ACD7 0xBD4236F6 b323</code>
 +
 +==== IS_PED_RUNNING_MOBILE_PHONE_TASK ====
 +<code cpp>BOOL PED::IS_PED_RUNNING_MOBILE_PHONE_TASK(Ped ped) // 0x2AFE52F782F25775 0xFB2AFED1 b323</code>
 +
 +==== _0xA3F3564A5B3646C0 ====
 +<code cpp>BOOL PED::_0xA3F3564A5B3646C0(Ped ped) // 0xA3F3564A5B3646C0 0x97353375 b323</code>
 +
 +<code>Only called once in the scripts:
 +
 +if (sub_1abd() && (!PED::_A3F3564A5B3646C0(l_8C))) {
 +    if (sub_52e3("RESNA_CELLR", 0)) {
 +        PED::SET_PED_CAN_PLAY_GESTURE_ANIMS(l_8C, 1);
 +        PED::SET_PED_CAN_PLAY_AMBIENT_ANIMS(l_8C, 1);
 +        PED::SET_PED_CAN_PLAY_VISEME_ANIMS(l_8C, 1, 0);
 +        l_184 += 1;
 +    }
 +}
 +
 +Checks something related to the mobile phone task.
 +
 +IS_*</code>
 +==== SET_RAGDOLL_BLOCKING_FLAGS ====
 +<code cpp>void PED::SET_RAGDOLL_BLOCKING_FLAGS(Ped ped, int flags) // 0x26695EC767728D84 0x9C8F830D b323</code>
 +
 +<code>Works for both player and peds, but some flags don't seem to work for the player (1, for example)
 +
 +1 - Blocks ragdolling when shot.
 +2 - Blocks ragdolling when hit by a vehicle. The ped still might play a falling animation.
 +4 - Blocks ragdolling when set on fire.
 +
 +-----------------------------------------------------------------------
 +
 +There seem to be 26 flags</code>
 +==== CLEAR_RAGDOLL_BLOCKING_FLAGS ====
 +<code cpp>void PED::CLEAR_RAGDOLL_BLOCKING_FLAGS(Ped ped, int flags) // 0xD86D101FCFD00A4B 0x77CBA290 b323</code>
 +
 +<code>There seem to be 26 flags</code>
 +==== SET_PED_ANGLED_DEFENSIVE_AREA ====
 +<code cpp>void PED::SET_PED_ANGLED_DEFENSIVE_AREA(Ped ped, float p1, float p2, float p3, float p4, float p5, float p6, float p7, BOOL p8, BOOL p9) // 0xC7F76DF27A5045A1 0x3EFBDD9B b323</code>
 +
 +==== SET_PED_SPHERE_DEFENSIVE_AREA ====
 +<code cpp>void PED::SET_PED_SPHERE_DEFENSIVE_AREA(Ped ped, float x, float y, float z, float radius, BOOL p5, BOOL p6) // 0x9D3151A373974804 0xBD96D8E8 b323</code>
 +
 +==== SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_PED ====
 +<code cpp>void PED::SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_PED(Ped ped, Ped target, float xOffset, float yOffset, float zOffset, float radius, BOOL p6) // 0xF9B8F91AAD3B953E 0x40638BDC b323</code>
 +
 +==== SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_VEHICLE ====
 +<code cpp>void PED::SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_VEHICLE(Ped ped, Vehicle target, float xOffset, float yOffset, float zOffset, float radius, BOOL p6) // 0xE4723DB6E736CCFF 0x4763B2C6 b323</code>
 +
 +==== SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED ====
 +<code cpp>void PED::SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED(Ped ped, Ped attachPed, float p2, float p3, float p4, float p5, float p6, float p7, float p8, BOOL p9, BOOL p10) // 0x4EF47FE21698A8B6 0x74BDA7CE b323</code>
 +
 +==== SET_PED_DEFENSIVE_AREA_DIRECTION ====
 +<code cpp>void PED::SET_PED_DEFENSIVE_AREA_DIRECTION(Ped ped, float p1, float p2, float p3, BOOL p4) // 0x413C6C763A4AFFAD 0xB66B0C9A b323</code>
 +
 +==== REMOVE_PED_DEFENSIVE_AREA ====
 +<code cpp>void PED::REMOVE_PED_DEFENSIVE_AREA(Ped ped, BOOL toggle) // 0x74D4E028107450A9 0x34AAAFA5 b323</code>
 +
 +<code>Ped will no longer get angry when you stay near him.</code>
 +==== GET_PED_DEFENSIVE_AREA_POSITION ====
 +<code cpp>Vector3 PED::GET_PED_DEFENSIVE_AREA_POSITION(Ped ped, BOOL p1) // 0x3C06B8786DD94CD1 0xCB65198D b323</code>
 +
 +==== IS_PED_DEFENSIVE_AREA_ACTIVE ====
 +<code cpp>BOOL PED::IS_PED_DEFENSIVE_AREA_ACTIVE(Ped ped, BOOL p1) // 0xBA63D9FE45412247 0x6D88BCD3 b323</code>
 +
 +==== SET_PED_PREFERRED_COVER_SET ====
 +<code cpp>void PED::SET_PED_PREFERRED_COVER_SET(Ped ped, Any itemSet) // 0x8421EB4DA7E391B9 0xF3B7EFBF b323</code>
 +
 +==== REMOVE_PED_PREFERRED_COVER_SET ====
 +<code cpp>void PED::REMOVE_PED_PREFERRED_COVER_SET(Ped ped) // 0xFDDB234CF74073D9 0xA0134498 b323</code>
 +
 +==== REVIVE_INJURED_PED ====
 +<code cpp>void PED::REVIVE_INJURED_PED(Ped ped) // 0x8D8ACD8388CD99CE 0x14D3E6E3 b323</code>
 +
 +<code>It will revive/cure the injured ped. The condition is ped must not be dead.
 +
 +Upon setting and converting the health int, found, if health falls below 5, the ped will lay on the ground in pain(Maximum default health is 100).
 +
 +This function is well suited there.</code>
 +==== RESURRECT_PED ====
 +<code cpp>void PED::RESURRECT_PED(Ped ped) // 0x71BC8E838B9C6035 0xA4B82097 b323</code>
 +
 +<code>This function will simply bring the dead person back to life.
 +
 +Try not to use it alone, since using this function alone, will make peds fall through ground in hell(well for the most of the times).
 +
 +Instead, before calling this function, you may want to declare the position, where your Resurrected ped to be spawn at.(For instance, Around 2 floats of Player's current position.) 
 +
 +Also, disabling any assigned task immediately helped in the number of scenarios, where If you want peds to perform certain decided tasks.</code>
 +==== SET_PED_NAME_DEBUG ====
 +<code cpp>void PED::SET_PED_NAME_DEBUG(Ped ped, const char* name) // 0x98EFA132A4117BE1 0x20D6273E b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.
 +
 +*untested but char *name could also be a hash for a localized string</code>
 +==== GET_PED_EXTRACTED_DISPLACEMENT ====
 +<code cpp>Vector3 PED::GET_PED_EXTRACTED_DISPLACEMENT(Ped ped, BOOL worldSpace) // 0xE0AF41401ADF87E3 0x5231F901 b323</code>
 +
 +<code>Gets the offset the specified ped has moved since the previous tick.
 +
 +If worldSpace is false, the returned offset is relative to the ped. That is, if the ped has moved 1 meter right and 5 meters forward, it'll return 1,5,0.
 +
 +If worldSpace is true, the returned offset is relative to the world. That is, if the ped has moved 1 meter on the X axis and 5 meters on the Y axis, it'll return 1,5,0.</code>
 +==== SET_PED_DIES_WHEN_INJURED ====
 +<code cpp>void PED::SET_PED_DIES_WHEN_INJURED(Ped ped, BOOL toggle) // 0x5BA7919BED300023 0xE94E24D4 b323</code>
 +
 +==== SET_PED_ENABLE_WEAPON_BLOCKING ====
 +<code cpp>void PED::SET_PED_ENABLE_WEAPON_BLOCKING(Ped ped, BOOL toggle) // 0x97A790315D3831FD 0x4CAD1A4A b323</code>
 +
 +==== _0xF9ACF4A08098EA25 ====
 +<code cpp>void PED::_0xF9ACF4A08098EA25(Ped ped, BOOL p1) // 0xF9ACF4A08098EA25 0x141CC936 b323</code>
 +
 +<code>p1 was always 1 (true).
 +
 +Kicks the ped from the current vehicle and keeps the rendering-focus on this ped (also disables its collision). If doing this for your player ped, you'll still be able to drive the vehicle.
 +
 +Actual name begins with 'S'</code>
 +==== RESET_PED_VISIBLE_DAMAGE ====
 +<code cpp>void PED::RESET_PED_VISIBLE_DAMAGE(Ped ped) // 0x3AC1F7B898F30C05 0xC4BC4841 b323</code>
 +
 +==== APPLY_PED_BLOOD_DAMAGE_BY_ZONE ====
 +<code cpp>void PED::APPLY_PED_BLOOD_DAMAGE_BY_ZONE(Ped ped, Any p1, float p2, float p3, Any p4) // 0x816F6981C60BF53B 0x1E54DB12 b323</code>
 +
 +==== APPLY_PED_BLOOD ====
 +<code cpp>void PED::APPLY_PED_BLOOD(Ped ped, int boneIndex, float xRot, float yRot, float zRot, const char* woundType) // 0x83F7E01C7B769A26 0x376CE3C0 b323</code>
 +
 +<code>Found one occurence in re_crashrescue.c4
 +
 +PED::APPLY_PED_BLOOD(l_4B, 3, 0.0, 0.0, 0.0, "wound_sheet");
 +
 +- winject
 +
 +</code>
 +==== APPLY_PED_BLOOD_BY_ZONE ====
 +<code cpp>void PED::APPLY_PED_BLOOD_BY_ZONE(Ped ped, Any p1, float p2, float p3, Any* p4) // 0x3311E47B91EDCBBC 0x8F3F3A9C b323</code>
 +
 +==== APPLY_PED_BLOOD_SPECIFIC ====
 +<code cpp>void PED::APPLY_PED_BLOOD_SPECIFIC(Ped ped, Any p1, float p2, float p3, float p4, float p5, Any p6, float p7, Any* p8) // 0xEF0D582CBF2D9B0F 0xFC13CE80 b323</code>
 +
 +==== APPLY_PED_DAMAGE_DECAL ====
 +<code cpp>void PED::APPLY_PED_DAMAGE_DECAL(Ped ped, int damageZone, float xOffset, float yOffset, float heading, float scale, float alpha, int variation, BOOL fadeIn, const char* decalName) // 0x397C38AA7B4A5F83 0x8A13A41F b323</code>
 +
 +<code>enum eDamageZone
 +{
 + DZ_Torso = 0,
 + DZ_Head,
 + DZ_LeftArm,
 + DZ_RightArm,
 + DZ_LeftLeg,
 + DZ_RightLeg,
 +};
 +
 +Decal Names:
 +scar
 +blushing
 +cs_flush_anger
 +cs_flush_anger_face
 +bruise
 +bruise_large
 +herpes
 +ArmorBullet
 +basic_dirt_cloth
 +basic_dirt_skin
 +cs_trev1_dirt
 +
 +APPLY_PED_DAMAGE_DECAL(ped, 1, 0.5f, 0.513f, 0f, 1f, unk, 0, 0, "blushing");</code>
 +==== APPLY_PED_DAMAGE_PACK ====
 +<code cpp>void PED::APPLY_PED_DAMAGE_PACK(Ped ped, const char* damagePack, float damage, float mult) // 0x46DF918788CB093F 0x208D0CB8 b323</code>
 +
 +<code>Damage Packs:
 +
 +"SCR_TrevorTreeBang"
 +"HOSPITAL_0"
 +"HOSPITAL_1"
 +"HOSPITAL_2"
 +"HOSPITAL_3"
 +"HOSPITAL_4"
 +"HOSPITAL_5"
 +"HOSPITAL_6"
 +"HOSPITAL_7"
 +"HOSPITAL_8"
 +"HOSPITAL_9"
 +"SCR_Dumpster"
 +"BigHitByVehicle"
 +"SCR_Finale_Michael_Face"
 +"SCR_Franklin_finb"
 +"SCR_Finale_Michael"
 +"SCR_Franklin_finb2"
 +"Explosion_Med"
 +"SCR_Torture"
 +"SCR_TracySplash"
 +"Skin_Melee_0"
 +
 +Additional damage packs:
 +
 +gist.github.com/alexguirre/f3f47f75ddcf617f416f3c8a55ae2227</code>
 +==== CLEAR_PED_BLOOD_DAMAGE ====
 +<code cpp>void PED::CLEAR_PED_BLOOD_DAMAGE(Ped ped) // 0x8FE22675A5A45817 0xF7ADC960 b323</code>
 +
 +==== CLEAR_PED_BLOOD_DAMAGE_BY_ZONE ====
 +<code cpp>void PED::CLEAR_PED_BLOOD_DAMAGE_BY_ZONE(Ped ped, int p1) // 0x56E3B78C5408D9F4 0xF210BE69 b323</code>
 +
 +<code>Somehow related to changing ped's clothes.</code>
 +==== HIDE_PED_BLOOD_DAMAGE_BY_ZONE ====
 +<code cpp>void PED::HIDE_PED_BLOOD_DAMAGE_BY_ZONE(Ped ped, Any p1, BOOL p2) // 0x62AB793144DE75DC 0x0CB6C4ED b323</code>
 +
 +==== CLEAR_PED_DAMAGE_DECAL_BY_ZONE ====
 +<code cpp>void PED::CLEAR_PED_DAMAGE_DECAL_BY_ZONE(Ped ped, int p1, const char* p2) // 0x523C79AEEFCC4A2A 0x70AA5B7D b323</code>
 +
 +<code>p1: from 0 to 5 in the b617d scripts.
 +p2: "blushing" and "ALL" found in the b617d scripts.</code>
 +==== GET_PED_DECORATIONS_STATE ====
 +<code cpp>int PED::GET_PED_DECORATIONS_STATE(Ped ped) // 0x71EAB450D86954A1 0x47187F7F b323</code>
 +
 +==== _0x2B694AFCF64E6994 ====
 +<code cpp>void PED::_0x2B694AFCF64E6994(Ped ped, BOOL p1) // 0x2B694AFCF64E6994  b323</code>
 +
 +==== CLEAR_PED_WETNESS ====
 +<code cpp>void PED::CLEAR_PED_WETNESS(Ped ped) // 0x9C720776DAA43E7E 0x629F15BD b323</code>
 +
 +<code>It clears the wetness of the selected Ped/Player. Clothes have to be wet to notice the difference.</code>
 +==== SET_PED_WETNESS_HEIGHT ====
 +<code cpp>void PED::SET_PED_WETNESS_HEIGHT(Ped ped, float height) // 0x44CB6447D2571AA0 0x7B33289A b323</code>
 +
 +<code>It adds the wetness level to the player clothing/outfit. As if player just got out from water surface.
 +
 +</code>
 +==== SET_PED_WETNESS_ENABLED_THIS_FRAME ====
 +<code cpp>void PED::SET_PED_WETNESS_ENABLED_THIS_FRAME(Ped ped) // 0xB5485E4907B53019 0xBDE749F7 b323</code>
 +
 +<code>combined with PED::SET_PED_WETNESS_HEIGHT(), this native makes the ped drenched in water up to the height specified in the other function</code>
 +==== CLEAR_PED_ENV_DIRT ====
 +<code cpp>void PED::CLEAR_PED_ENV_DIRT(Ped ped) // 0x6585D955A68452A5 0xA993915F b323</code>
 +
 +==== SET_PED_SWEAT ====
 +<code cpp>void PED::SET_PED_SWEAT(Ped ped, float sweat) // 0x27B0405F59637D1F 0x76A1DB9F b323</code>
 +
 +<code>Sweat is set to 100.0 or 0.0 in the decompiled scripts.</code>
 +==== ADD_PED_DECORATION_FROM_HASHES ====
 +<code cpp>void PED::ADD_PED_DECORATION_FROM_HASHES(Ped ped, Hash collection, Hash overlay) // 0x5F5D1665E352A839 0x70559AC7 b323</code>
 +
 +<code>Applies an Item from a PedDecorationCollection to a ped. These include tattoos and shirt decals.
 +
 +collection - PedDecorationCollection filename hash
 +overlay - Item name hash
 +
 +Example:
 +Entry inside "mpbeach_overlays.xml" -
 +<Item>
 +  <uvPos x="0.500000" y="0.500000" />
 +  <scale x="0.600000" y="0.500000" />
 +  <rotation value="0.000000" />
 +  <nameHash>FM_Hair_Fuzz</nameHash>
 +  <txdHash>mp_hair_fuzz</txdHash>
 +  <txtHash>mp_hair_fuzz</txtHash>
 +  <zone>ZONE_HEAD</zone>
 +  <type>TYPE_TATTOO</type>
 +  <faction>FM</faction>
 +  <garment>All</garment>
 +  <gender>GENDER_DONTCARE</gender>
 +  <award />
 +  <awardLevel />
 +</Item>
 +
 +Code:
 +PED::_0x5F5D1665E352A839(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("mpbeach_overlays"), MISC::GET_HASH_KEY("fm_hair_fuzz"))
 +
 +Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json</code>
 +==== ADD_PED_DECORATION_FROM_HASHES_IN_CORONA ====
 +<code cpp>void PED::ADD_PED_DECORATION_FROM_HASHES_IN_CORONA(Ped ped, Hash collection, Hash overlay) // 0x5619BFA07CFD7833 0x8CD3E487 b323</code>
 +
 +<code>Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json</code>
 +==== GET_PED_DECORATION_ZONE_FROM_HASHES ====
 +<code cpp>int PED::GET_PED_DECORATION_ZONE_FROM_HASHES(Hash collection, Hash overlay) // 0x9FD452BFBE7A7A8B 0x3543019E b323</code>
 +
 +<code>Returns the zoneID for the overlay if it is a member of collection.
 +enum ePedDecorationZone
 +{
 + ZONE_TORSO = 0,
 + ZONE_HEAD = 1,
 + ZONE_LEFT_ARM = 2,
 + ZONE_RIGHT_ARM = 3,
 + ZONE_LEFT_LEG = 4,
 + ZONE_RIGHT_LEG = 5,
 + ZONE_UNKNOWN = 6,
 + ZONE_NONE = 7
 +};
 +
 +Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json</code>
 +==== CLEAR_PED_DECORATIONS ====
 +<code cpp>void PED::CLEAR_PED_DECORATIONS(Ped ped) // 0x0E5173C163976E38 0xD4496BF3 b323</code>
 +
 +==== CLEAR_PED_DECORATIONS_LEAVE_SCARS ====
 +<code cpp>void PED::CLEAR_PED_DECORATIONS_LEAVE_SCARS(Ped ped) // 0xE3B27E70CEAB9F0C 0xEFD58EB9 b323</code>
 +
 +==== WAS_PED_SKELETON_UPDATED ====
 +<code cpp>BOOL PED::WAS_PED_SKELETON_UPDATED(Ped ped) // 0x11B499C1E0FF8559 0xF7E2FBAD b323</code>
 +
 +<code>Despite this function's name, it simply returns whether the specified handle is a Ped.</code>
 +==== GET_PED_BONE_COORDS ====
 +<code cpp>Vector3 PED::GET_PED_BONE_COORDS(Ped ped, int boneId, float offsetX, float offsetY, float offsetZ) // 0x17C07FC640E86B4E 0x4579CAB1 b323</code>
 +
 +<code>Gets the position of the specified bone of the specified ped.
 +
 +ped: The ped to get the position of a bone from.
 +boneId: The ID of the bone to get the position from. This is NOT the index.
 +offsetX: The X-component of the offset to add to the position relative to the bone's rotation.
 +offsetY: The Y-component of the offset to add to the position relative to the bone's rotation.
 +offsetZ: The Z-component of the offset to add to the position relative to the bone's rotation.</code>
 +==== CREATE_NM_MESSAGE ====
 +<code cpp>void PED::CREATE_NM_MESSAGE(BOOL startImmediately, int messageId) // 0x418EF2A1BCE56685 0x1CFBFD4B b323</code>
 +
 +<code>Creates a new NaturalMotion message.
 +
 +startImmediately: If set to true, the character will perform the message the moment it receives it by GIVE_PED_NM_MESSAGE. If false, the Ped will get the message but won't perform it yet. While it's a boolean value, if negative, the message will not be initialized.
 +messageId: The ID of the NaturalMotion message.
 +
 +If a message already exists, this function does nothing. A message exists until the point it has been successfully dispatched by GIVE_PED_NM_MESSAGE.</code>
 +==== GIVE_PED_NM_MESSAGE ====
 +<code cpp>void PED::GIVE_PED_NM_MESSAGE(Ped ped) // 0xB158DFCCC56E5C5B 0x737C3689 b323</code>
 +
 +<code>Sends the message that was created by a call to CREATE_NM_MESSAGE to the specified Ped.
 +
 +If a message hasn't been created already, this function does nothing.
 +If the Ped is not ragdolled with Euphoria enabled, this function does nothing.
 +The following call can be used to ragdoll the Ped with Euphoria enabled: SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);
 +
 +Call order:
 +SET_PED_TO_RAGDOLL
 +CREATE_NM_MESSAGE
 +GIVE_PED_NM_MESSAGE
 +
 +Multiple messages can be chained. Eg. to make the ped stagger and swing his arms around, the following calls can be made:
 +SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);
 +CREATE_NM_MESSAGE(true, 0); // stopAllBehaviours - Stop all other behaviours, in case the Ped is already doing some Euphoria stuff.
 +GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.
 +CREATE_NM_MESSAGE(true, 1151); // staggerFall - Attempt to walk while falling.
 +GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.
 +CREATE_NM_MESSAGE(true, 372); // armsWindmill - Swing arms around.
 +GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.</code>
 +==== ADD_SCENARIO_BLOCKING_AREA ====
 +<code cpp>int PED::ADD_SCENARIO_BLOCKING_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL p6, BOOL p7, BOOL p8, BOOL p9) // 0x1B5C85C612E5256E 0xA38C0234 b323</code>
 +
 +==== REMOVE_SCENARIO_BLOCKING_AREAS ====
 +<code cpp>void PED::REMOVE_SCENARIO_BLOCKING_AREAS() // 0xD37401D78A929A49 0x4DDF845F b323</code>
 +
 +==== REMOVE_SCENARIO_BLOCKING_AREA ====
 +<code cpp>void PED::REMOVE_SCENARIO_BLOCKING_AREA(Any p0, BOOL p1) // 0x31D16B74C6E29D66 0x4483EF06 b323</code>
 +
 +==== SET_SCENARIO_PEDS_SPAWN_IN_SPHERE_AREA ====
 +<code cpp>void PED::SET_SCENARIO_PEDS_SPAWN_IN_SPHERE_AREA(float x, float y, float z, float range, int p4) // 0x28157D43CF600981 0x80EAD297 b323</code>
 +
 +==== _DOES_SCENARIO_BLOCKING_AREA_EXIST ====
 +<code cpp>BOOL PED::_DOES_SCENARIO_BLOCKING_AREA_EXIST(float x1, float y1, float z1, float x2, float y2, float z2) // 0x8A24B067D175A7BD  b678</code>
 +
 +==== IS_PED_USING_SCENARIO ====
 +<code cpp>BOOL PED::IS_PED_USING_SCENARIO(Ped ped, const char* scenario) // 0x1BF094736DD62C2E 0x0F65B0D4 b323</code>
 +
 +<code>Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json</code>
 +==== IS_PED_USING_ANY_SCENARIO ====
 +<code cpp>BOOL PED::IS_PED_USING_ANY_SCENARIO(Ped ped) // 0x57AB4A3080F85143 0x195EF5B7 b323</code>
 +
 +==== SET_PED_PANIC_EXIT_SCENARIO ====
 +<code cpp>Any PED::SET_PED_PANIC_EXIT_SCENARIO(Any p0, Any p1, Any p2, Any p3) // 0xFE07FF6495D52E2A 0x59DE73AC b323</code>
 +
 +==== _0x9A77DFD295E29B09 ====
 +<code cpp>void PED::_0x9A77DFD295E29B09(Any p0, BOOL p1) // 0x9A77DFD295E29B09 0xC08FE5F6 b323</code>
 +
 +==== _0x25361A96E0F7E419 ====
 +<code cpp>Any PED::_0x25361A96E0F7E419(Any p0, Any p1, Any p2, Any p3) // 0x25361A96E0F7E419 0x58C0F6CF b323</code>
 +
 +==== _0xEC6935EBE0847B90 ====
 +<code cpp>Any PED::_0xEC6935EBE0847B90(Any p0, Any p1, Any p2, Any p3) // 0xEC6935EBE0847B90 0x761F8F48 b323</code>
 +
 +==== SET_PED_SHOULD_PLAY_NORMAL_SCENARIO_EXIT ====
 +<code cpp>void PED::SET_PED_SHOULD_PLAY_NORMAL_SCENARIO_EXIT(Ped ped) // 0xA3A9299C4F2ADB98 0x033F43FA b323</code>
 +
 +==== SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT ====
 +<code cpp>void PED::SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT(Ped ped) // 0xF1C03A5352243A30 0x4C684C81 b323</code>
 +
 +==== SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT ====
 +<code cpp>Any PED::SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT(Ped ped, Any p1, Any p2, Any p3) // 0xEEED8FAFEC331A70 0x7B4C3E6F b323</code>
 +
 +==== _0x425AECF167663F48 ====
 +<code cpp>void PED::_0x425AECF167663F48(Ped ped, BOOL p1) // 0x425AECF167663F48 0x5BC276AE b323</code>
 +
 +==== _0x5B6010B3CBC29095 ====
 +<code cpp>void PED::_0x5B6010B3CBC29095(Any p0, BOOL p1) // 0x5B6010B3CBC29095  b323</code>
 +
 +==== _0xCEDA60A74219D064 ====
 +<code cpp>void PED::_0xCEDA60A74219D064(Any p0, BOOL p1) // 0xCEDA60A74219D064  b323</code>
 +
 +==== _0xC30BDAEE47256C13 ====
 +<code cpp>Any PED::_0xC30BDAEE47256C13(Any p0) // 0xC30BDAEE47256C13  b1868</code>
 +
 +==== PLAY_FACIAL_ANIM ====
 +<code cpp>void PED::PLAY_FACIAL_ANIM(Ped ped, const char* animName, const char* animDict) // 0xE1E65CA8AC9C00ED 0x1F6CCDDE b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== _SET_FACIAL_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::_SET_FACIAL_CLIPSET_OVERRIDE(Ped ped, const char* animDict) // 0x5687C7F05B39E401  b1493</code>
 +
 +<code>Clipsets:
 +facials@gen_female@base
 +facials@gen_male@base
 +facials@p_m_zero@base
 +
 +Typically followed with SET_FACIAL_IDLE_ANIM_OVERRIDE:
 +mood_drunk_1
 +mood_stressed_1
 +mood_happy_1
 +mood_talking_1
 +</code>
 +==== SET_FACIAL_IDLE_ANIM_OVERRIDE ====
 +<code cpp>void PED::SET_FACIAL_IDLE_ANIM_OVERRIDE(Ped ped, const char* animName, const char* animDict) // 0xFFC24B988B938B38 0x9BA19C13 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== CLEAR_FACIAL_IDLE_ANIM_OVERRIDE ====
 +<code cpp>void PED::CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(Ped ped) // 0x726256CC1EEB182F 0x5244F4E2 b323</code>
 +
 +==== SET_PED_CAN_PLAY_GESTURE_ANIMS ====
 +<code cpp>void PED::SET_PED_CAN_PLAY_GESTURE_ANIMS(Ped ped, BOOL toggle) // 0xBAF20C5432058024 0xE131E3B3 b323</code>
 +
 +==== SET_PED_CAN_PLAY_VISEME_ANIMS ====
 +<code cpp>void PED::SET_PED_CAN_PLAY_VISEME_ANIMS(Ped ped, BOOL toggle, BOOL p2) // 0xF833DDBA3B104D43 0xA2FDAF27 b323</code>
 +
 +<code>p2 usually 0</code>
 +==== _SET_PED_CAN_PLAY_INJURED_ANIMS ====
 +<code cpp>void PED::_SET_PED_CAN_PLAY_INJURED_ANIMS(Ped ped, BOOL p1) // 0x33A60D8BDD6E508C 0xADB2511A b323</code>
 +
 +==== SET_PED_CAN_PLAY_AMBIENT_ANIMS ====
 +<code cpp>void PED::SET_PED_CAN_PLAY_AMBIENT_ANIMS(Ped ped, BOOL toggle) // 0x6373D1349925A70E 0xF8053081 b323</code>
 +
 +==== SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS ====
 +<code cpp>void PED::SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(Ped ped, BOOL toggle) // 0x0EB0585D15254740 0x5720A5DD b323</code>
 +
 +==== _0xC2EE020F5FB4DB53 ====
 +<code cpp>void PED::_0xC2EE020F5FB4DB53(Ped ped) // 0xC2EE020F5FB4DB53 0xB7CD0A49 b323</code>
 +
 +==== SET_PED_CAN_ARM_IK ====
 +<code cpp>void PED::SET_PED_CAN_ARM_IK(Ped ped, BOOL toggle) // 0x6C3B4D6D13B4C841 0x343B4DE0 b323</code>
 +
 +==== SET_PED_CAN_HEAD_IK ====
 +<code cpp>void PED::SET_PED_CAN_HEAD_IK(Ped ped, BOOL toggle) // 0xC11C18092C5530DC 0xD3B04476 b323</code>
 +
 +==== SET_PED_CAN_LEG_IK ====
 +<code cpp>void PED::SET_PED_CAN_LEG_IK(Ped ped, BOOL toggle) // 0x73518ECE2485412B 0x9955BC6F b323</code>
 +
 +==== SET_PED_CAN_TORSO_IK ====
 +<code cpp>void PED::SET_PED_CAN_TORSO_IK(Ped ped, BOOL toggle) // 0xF2B7106D37947CE0 0x8E5D4EAB b323</code>
 +
 +==== SET_PED_CAN_TORSO_REACT_IK ====
 +<code cpp>void PED::SET_PED_CAN_TORSO_REACT_IK(Ped ped, BOOL p1) // 0xF5846EDB26A98A24 0x7B0040A8 b323</code>
 +
 +==== _0x6647C5F6F5792496 ====
 +<code cpp>void PED::_0x6647C5F6F5792496(Ped ped, BOOL p1) // 0x6647C5F6F5792496 0x0FDA62DE b323</code>
 +
 +==== SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT ====
 +<code cpp>void PED::SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(Ped ped, BOOL toggle) // 0xEC4686EC06434678 0x584C5178 b323</code>
 +
 +==== IS_PED_HEADTRACKING_PED ====
 +<code cpp>BOOL PED::IS_PED_HEADTRACKING_PED(Ped ped1, Ped ped2) // 0x5CD3CB88A7F8850D 0x2A5DF721 b323</code>
 +
 +==== IS_PED_HEADTRACKING_ENTITY ====
 +<code cpp>BOOL PED::IS_PED_HEADTRACKING_ENTITY(Ped ped, Entity entity) // 0x813A0A7C9D2E831F 0x233C9ACF b323</code>
 +
 +==== SET_PED_PRIMARY_LOOKAT ====
 +<code cpp>void PED::SET_PED_PRIMARY_LOOKAT(Ped ped, Ped lookAt) // 0xCD17B554996A8D9E 0x6DEF6F1C b323</code>
 +
 +<code>This is only called once in the scripts.
 +
 +sub_1CD9(&l_49, 0, getElem(3, &l_34, 4), "MICHAEL", 0, 1);
 +                    sub_1CA8("WORLD_HUMAN_SMOKING", 2);
 +                    PED::SET_PED_PRIMARY_LOOKAT(getElem(3, &l_34, 4), PLAYER::PLAYER_PED_ID());</code>
 +==== SET_PED_CLOTH_PACKAGE_INDEX ====
 +<code cpp>void PED::SET_PED_CLOTH_PACKAGE_INDEX(Any p0, Any p1) // 0x78C4E9961DB3EB5B 0xFC942D7C b323</code>
 +
 +==== SET_PED_CLOTH_PRONE ====
 +<code cpp>void PED::SET_PED_CLOTH_PRONE(Any p0, Any p1) // 0x82A3D6D9CC2CB8E3 0x89EEE07B b323</code>
 +
 +==== _0xA660FAF550EB37E5 ====
 +<code cpp>void PED::_0xA660FAF550EB37E5(Any p0, BOOL p1) // 0xA660FAF550EB37E5  b323</code>
 +
 +==== SET_PED_CONFIG_FLAG ====
 +<code cpp>void PED::SET_PED_CONFIG_FLAG(Ped ped, int flagId, BOOL value) // 0x1913FE4CBF41C463 0x9CFBE10D b323</code>
 +
 +<code>Research help : pastebin.com/fPL1cSwB
 +New items added with underscore as first char
 +-----------------------------------------------------------------------
 +
 +enum PedConfigFlags
 +{
 + PED_FLAG_CAN_FLY_THRU_WINDSCREEN = 32,
 + PED_FLAG_DIES_BY_RAGDOLL = 33,
 + PED_FLAG_NO_COLLISION = 52,
 + _PED_FLAG_IS_SHOOTING = 58,
 + _PED_FLAG_IS_ON_GROUND = 60,
 + PED_FLAG_NO_COLLIDE = 62,
 + PED_FLAG_DEAD = 71,
 + PED_FLAG_IS_SNIPER_SCOPE_ACTIVE = 72,
 + PED_FLAG_SUPER_DEAD = 73,
 + _PED_FLAG_IS_IN_AIR = 76,
 + PED_FLAG_IS_AIMING = 78,
 + PED_FLAG_DRUNK = 100,
 + _PED_FLAG_IS_NOT_RAGDOLL_AND_NOT_PLAYING_ANIM = 104,
 + PED_FLAG_NO_PLAYER_MELEE = 122,
 + PED_FLAG_NM_MESSAGE_466 = 125,
 + PED_FLAG_INJURED_LIMP = 166,
 + PED_FLAG_INJURED_LIMP_2 = 170,
 + PED_FLAG_INJURED_DOWN = 187,
 + PED_FLAG_SHRINK = 223,
 + PED_FLAG_MELEE_COMBAT = 224,
 + _PED_FLAG_IS_ON_STAIRS = 253,
 + _PED_FLAG_HAS_ONE_LEG_ON_GROUND = 276,
 + PED_FLAG_NO_WRITHE = 281,
 + PED_FLAG_FREEZE = 292,
 + PED_FLAG_IS_STILL = 301,
 + PED_FLAG_NO_PED_MELEE = 314,
 + _PED_SWITCHING_WEAPON = 331,
 + PED_FLAG_ALPHA = 410,
 +};
 +
 +(*) When flagId is set to 33 and the bool value to true, peds will die by starting ragdoll, so you should set this flag to false when you resurrect a ped.
 +When flagId is set to 62 and the boolvalue to false this happens: Ped is taken out of vehicle and can't get back in when jacking their empty vehicle. If in a plane it falls from the sky and crashes. Sometimes peds vehicle continue to drive the route without its driver who's running after. 
 +
 +(*)
 +JUMPING CHANGES  60,61,104 TO FALSE
 +BEING ON WATER CHANGES 60,61 TO FALSE AND 65,66,168 TO TRUE
 +FALLING CHANGES 60,61,104,276 TO FALSE AND TO 76 TRUE
 +DYING CHANGES 60,61,104,276* TO FALSE AND (NONE) TO TRUE
 +DYING MAKES 60,61,104 TO FALSE
 +BEING IN A CAR CHANGES 60,79,104 TO FALSE AND 62 TO TRUE
 +
 +(*)Maximum value for flagId is 0x1AA (426) in b944.
 +ID 0xF0 (240) appears to be a special flag which is handled different compared to the others IDs.
 +</code>
 +==== SET_PED_RESET_FLAG ====
 +<code cpp>void PED::SET_PED_RESET_FLAG(Ped ped, int flagId, BOOL doReset) // 0xC1E8A365BF3B29F2 0xCFF6FF66 b323</code>
 +
 +<code>PED::SET_PED_RESET_FLAG(PLAYER::PLAYER_PED_ID(), 240, 1);
 +Known values:
 +PRF_PreventGoingIntoStillInVehicleState = 236 *(fanatic2.c)*</code>
 +==== GET_PED_CONFIG_FLAG ====
 +<code cpp>BOOL PED::GET_PED_CONFIG_FLAG(Ped ped, int flagId, BOOL p2) // 0x7EE53118C892B513 0xABE98267 b323</code>
 +
 +<code>p2 is always 1 in the scripts.
 +
 +if (GET_PED_CONFIG_FLAG(ped, 78, 1))
 += returns true if ped is aiming/shooting a gun</code>
 +==== GET_PED_RESET_FLAG ====
 +<code cpp>BOOL PED::GET_PED_RESET_FLAG(Ped ped, int flagId) // 0xAF9E59B1B1FBF2A0 0x2FC10D11 b323</code>
 +
 +==== SET_PED_GROUP_MEMBER_PASSENGER_INDEX ====
 +<code cpp>void PED::SET_PED_GROUP_MEMBER_PASSENGER_INDEX(Ped ped, int index) // 0x0BDDB8D9EC6BCF3C 0x2AB3670B b323</code>
 +
 +==== SET_PED_CAN_EVASIVE_DIVE ====
 +<code cpp>void PED::SET_PED_CAN_EVASIVE_DIVE(Ped ped, BOOL toggle) // 0x6B7A646C242A7059 0x542FEB4D b323</code>
 +
 +==== IS_PED_EVASIVE_DIVING ====
 +<code cpp>BOOL PED::IS_PED_EVASIVE_DIVING(Ped ped, Entity* evadingEntity) // 0x414641C26E105898 0xD82829DC b323</code>
 +
 +<code>Presumably returns the Entity that the Ped is currently diving out of the way of.
 +
 +var num3;
 +    if (PED::IS_PED_EVASIVE_DIVING(A_0, &num3) != 0)
 +        if (ENTITY::IS_ENTITY_A_VEHICLE(num3) != 0)</code>
 +==== SET_PED_SHOOTS_AT_COORD ====
 +<code cpp>void PED::SET_PED_SHOOTS_AT_COORD(Ped ped, float x, float y, float z, BOOL toggle) // 0x96A05E4FB321B1BA 0xFD64EAE5 b323</code>
 +
 +==== SET_PED_MODEL_IS_SUPPRESSED ====
 +<code cpp>void PED::SET_PED_MODEL_IS_SUPPRESSED(Hash modelHash, BOOL toggle) // 0xE163A4BCE4DE6F11 0x7820CA43 b323</code>
 +
 +<code>Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json</code>
 +==== STOP_ANY_PED_MODEL_BEING_SUPPRESSED ====
 +<code cpp>void PED::STOP_ANY_PED_MODEL_BEING_SUPPRESSED() // 0xB47BD05FA66B40CF 0x5AD7DC55 b323</code>
 +
 +==== SET_PED_CAN_BE_TARGETED_WHEN_INJURED ====
 +<code cpp>void PED::SET_PED_CAN_BE_TARGETED_WHEN_INJURED(Ped ped, BOOL toggle) // 0x638C03B0F9878F57 0x6FD9A7CD b323</code>
 +
 +==== SET_PED_GENERATES_DEAD_BODY_EVENTS ====
 +<code cpp>void PED::SET_PED_GENERATES_DEAD_BODY_EVENTS(Ped ped, BOOL toggle) // 0x7FB17BA2E7DECA5B 0xE9B97A2B b323</code>
 +
 +==== _BLOCK_PED_DEAD_BODY_SHOCKING_EVENTS ====
 +<code cpp>void PED::_BLOCK_PED_DEAD_BODY_SHOCKING_EVENTS(Ped ped, BOOL toggle) // 0xE43A13C9E4CCCBCF 0xFF1F6AEB b323</code>
 +
 +==== _0x3E9679C1DFCF422C ====
 +<code cpp>void PED::_0x3E9679C1DFCF422C(Any p0, Any p1) // 0x3E9679C1DFCF422C  b877</code>
 +
 +==== SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT ====
 +<code cpp>void PED::SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(Ped ped, BOOL toggle) // 0xDF993EE5E90ABA25 0xE9BD733A b323</code>
 +
 +==== GIVE_PED_HELMET ====
 +<code cpp>void PED::GIVE_PED_HELMET(Ped ped, BOOL cannotRemove, int helmetFlag, int textureIndex) // 0x54C7C4A94367717E 0x1862A461 b323</code>
 +
 +<code>PoliceMotorcycleHelmet   1024    
 +RegularMotorcycleHelmet   4096    
 +FiremanHelmet 16384   
 +PilotHeadset  32768   
 +PilotHelmet   65536
 +--
 +p2 is generally 4096 or 16384 in the scripts. p1 varies between 1 and 0.</code>
 +==== REMOVE_PED_HELMET ====
 +<code cpp>void PED::REMOVE_PED_HELMET(Ped ped, BOOL instantly) // 0xA7B2458D0AD6DED8 0x2086B1F0 b323</code>
 +
 +==== IS_PED_TAKING_OFF_HELMET ====
 +<code cpp>BOOL PED::IS_PED_TAKING_OFF_HELMET(Ped ped) // 0x14590DDBEDB1EC85 0xA1008E0E b323</code>
 +
 +==== SET_PED_HELMET ====
 +<code cpp>void PED::SET_PED_HELMET(Ped ped, BOOL canWearHelmet) // 0x560A43136EB58105 0xED366E53 b323</code>
 +
 +==== SET_PED_HELMET_FLAG ====
 +<code cpp>void PED::SET_PED_HELMET_FLAG(Ped ped, int helmetFlag) // 0xC0E78D5C2CE3EB25 0x12677780 b323</code>
 +
 +==== SET_PED_HELMET_PROP_INDEX ====
 +<code cpp>void PED::SET_PED_HELMET_PROP_INDEX(Ped ped, int propIndex, BOOL p2) // 0x26D83693ED99291C 0xA316D13F b323</code>
 +
 +<code>List of component/props ID
 +gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html</code>
 +==== _SET_PED_HELMET_UNK ====
 +<code cpp>void PED::_SET_PED_HELMET_UNK(Ped ped, BOOL p1, int p2, int p3) // 0x3F7325574E41B44D  b791</code>
 +
 +==== _IS_PED_HELMET_UNK ====
 +<code cpp>BOOL PED::_IS_PED_HELMET_UNK(Ped ped) // 0xB9496CE47546DB2C  b791</code>
 +
 +==== SET_PED_HELMET_TEXTURE_INDEX ====
 +<code cpp>void PED::SET_PED_HELMET_TEXTURE_INDEX(Ped ped, int textureIndex) // 0xF1550C4BD22582E2 0x5F6C3328 b323</code>
 +
 +==== IS_PED_WEARING_HELMET ====
 +<code cpp>BOOL PED::IS_PED_WEARING_HELMET(Ped ped) // 0xF33BDFE19B309B19 0x0D680D49 b323</code>
 +
 +<code>Returns true if the ped passed through the parenthesis is wearing a helmet.</code>
 +==== CLEAR_PED_STORED_HAT_PROP ====
 +<code cpp>void PED::CLEAR_PED_STORED_HAT_PROP(Ped ped) // 0x687C0B594907D2E8 0x24A1284E b323</code>
 +
 +==== GET_PED_HELMET_STORED_HAT_PROP_INDEX ====
 +<code cpp>Any PED::GET_PED_HELMET_STORED_HAT_PROP_INDEX(Ped ped) // 0x451294E859ECC018 0x8A3A3116 b323</code>
 +
 +==== GET_PED_HELMET_STORED_HAT_TEX_INDEX ====
 +<code cpp>Any PED::GET_PED_HELMET_STORED_HAT_TEX_INDEX(Ped ped) // 0x9D728C1E12BF5518 0x74EB662D b323</code>
 +
 +==== _0xF2385935BFFD4D92 ====
 +<code cpp>BOOL PED::_0xF2385935BFFD4D92(Any p0) // 0xF2385935BFFD4D92 0xFFF149FE b323</code>
 +
 +==== SET_PED_TO_LOAD_COVER ====
 +<code cpp>void PED::SET_PED_TO_LOAD_COVER(Ped ped, BOOL toggle) // 0x332B562EEDA62399 0xCF94BA97 b323</code>
 +
 +==== SET_PED_CAN_COWER_IN_COVER ====
 +<code cpp>void PED::SET_PED_CAN_COWER_IN_COVER(Ped ped, BOOL toggle) // 0xCB7553CDCEF4A735 0x5194658B b323</code>
 +
 +<code>It simply makes the said ped to cower behind cover object(wall, desk, car)
 +
 +Peds flee attributes must be set to not to flee, first. Else, most of the peds, will just flee from gunshot sounds or any other panic situations.</code>
 +==== SET_PED_CAN_PEEK_IN_COVER ====
 +<code cpp>void PED::SET_PED_CAN_PEEK_IN_COVER(Ped ped, BOOL toggle) // 0xC514825C507E3736 0xC1DAE216 b323</code>
 +
 +==== SET_PED_PLAYS_HEAD_ON_HORN_ANIM_WHEN_DIES_IN_VEHICLE ====
 +<code cpp>void PED::SET_PED_PLAYS_HEAD_ON_HORN_ANIM_WHEN_DIES_IN_VEHICLE(Ped ped, BOOL toggle) // 0x94D94BF1A75AED3D 0x7C563CD2 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_PED_LEG_IK_MODE ====
 +<code cpp>void PED::SET_PED_LEG_IK_MODE(Ped ped, int mode) // 0xC396F5B86FF9FEBD 0xFDDB042E b323</code>
 +
 +<code>"IK" stands for "Inverse kinematics." I assume this has something to do with how the ped uses his legs to balance. In the scripts, the second parameter is always an int with a value of 2, 0, or sometimes 1</code>
 +==== SET_PED_MOTION_BLUR ====
 +<code cpp>void PED::SET_PED_MOTION_BLUR(Ped ped, BOOL toggle) // 0x0A986918B102B448 0xA211A128 b323</code>
 +
 +==== SET_PED_CAN_SWITCH_WEAPON ====
 +<code cpp>void PED::SET_PED_CAN_SWITCH_WEAPON(Ped ped, BOOL toggle) // 0xED7F7EFE9FABF340 0xB5F8BA28 b323</code>
 +
 +==== SET_PED_DIES_INSTANTLY_IN_WATER ====
 +<code cpp>void PED::SET_PED_DIES_INSTANTLY_IN_WATER(Ped ped, BOOL toggle) // 0xEEB64139BA29A7CF 0xFE2554FC b323</code>
 +
 +==== _0x1A330D297AAC6BC1 ====
 +<code cpp>void PED::_0x1A330D297AAC6BC1(Ped ped, int p1) // 0x1A330D297AAC6BC1 0x77BB7CB8 b323</code>
 +
 +<code>Only appears in lamar1 script.</code>
 +==== STOP_PED_WEAPON_FIRING_WHEN_DROPPED ====
 +<code cpp>void PED::STOP_PED_WEAPON_FIRING_WHEN_DROPPED(Ped ped) // 0xC158D28142A34608 0x4AC3421E b323</code>
 +
 +==== SET_SCRIPTED_ANIM_SEAT_OFFSET ====
 +<code cpp>void PED::SET_SCRIPTED_ANIM_SEAT_OFFSET(Ped ped, float p1) // 0x5917BBA32D06C230 0x7CEFFA45 b323</code>
 +
 +==== SET_PED_COMBAT_MOVEMENT ====
 +<code cpp>void PED::SET_PED_COMBAT_MOVEMENT(Ped ped, int combatMovement) // 0x4D9CA1009AFBD057 0x12E62F9E b323</code>
 +
 +<code>0 - Stationary (Will just stand in place)
 +1 - Defensive (Will try to find cover and very likely to blind fire)
 +2 - Offensive (Will attempt to charge at enemy but take cover as well)
 +3 - Suicidal Offensive (Will try to flank enemy in a suicidal attack)</code>
 +==== GET_PED_COMBAT_MOVEMENT ====
 +<code cpp>int PED::GET_PED_COMBAT_MOVEMENT(Ped ped) // 0xDEA92412FCAEB3F5 0xF3E7730E b323</code>
 +
 +==== SET_PED_COMBAT_ABILITY ====
 +<code cpp>void PED::SET_PED_COMBAT_ABILITY(Ped ped, int p1) // 0xC7622C0D36B2FDA8 0x6C23D329 b323</code>
 +
 +<code>100 would equal attack
 +less then 50ish would mean run away
 +
 +Only the values 0, 1 and 2 occur in the decompiled scripts. Most likely refers directly to the values also described in combatbehaviour.meta:
 +0: CA_Poor
 +1: CA_Average
 +2: CA_Professional
 +
 +Tested this and got the same results as the first explanation here. Could not find any difference between 0, 1 and 2. </code>
 +==== SET_PED_COMBAT_RANGE ====
 +<code cpp>void PED::SET_PED_COMBAT_RANGE(Ped ped, int p1) // 0x3C606747B23E497B 0x8818A959 b323</code>
 +
 +<code>Only the values 0, 1 and 2 occur in the decompiled scripts. Most likely refers directly to the values also described as AttackRange in combatbehaviour.meta:
 +0: CR_Near
 +1: CR_Medium
 +2: CR_Far</code>
 +==== GET_PED_COMBAT_RANGE ====
 +<code cpp>int PED::GET_PED_COMBAT_RANGE(Ped ped) // 0xF9D9F7F2DB8E2FA0 0x9B9B7163 b323</code>
 +
 +==== SET_PED_COMBAT_ATTRIBUTES ====
 +<code cpp>void PED::SET_PED_COMBAT_ATTRIBUTES(Ped ped, int attributeIndex, BOOL enabled) // 0x9F7794730795E019 0x81D64248 b323</code>
 +
 +<code>These combat attributes seem to be the same as the BehaviourFlags from combatbehaviour.meta.
 +So far, these are the equivalents found:
 +enum CombatAttributes
 +{
 + BF_CanUseCover = 0,
 +   BF_CanUseVehicles = 1,
 +    BF_CanDoDrivebys = 2,
 + BF_CanLeaveVehicle = 3,
 +   BF_CanFightArmedPedsWhenNotArmed = 5,
 + BF_CanTauntInVehicle = 20,
 +    BF_AlwaysFight = 46,
 +  BF_IgnoreTrafficWhenDriving = 52,
 +        BF_FreezeMovement = 292,
 +        BF_PlayerCanUseFiringWeapons = 1424
 +};
 +
 +8 = ?
 +9 = ?
 +13 = ?
 +14 ?
 +
 +Research thread: gtaforums.com/topic/833391-researchguide-combat-behaviour-flags/</code>
 +==== SET_PED_TARGET_LOSS_RESPONSE ====
 +<code cpp>void PED::SET_PED_TARGET_LOSS_RESPONSE(Ped ped, int responseType) // 0x0703B9079823DA4A 0xCFA613FF b323</code>
 +
 +<code>Only 1 and 2 appear in the scripts. combatbehaviour.meta seems to only have TLR_SearchForTarget for all peds, but we don't know if that's 1 or 2.</code>
 +==== IS_PED_PERFORMING_MELEE_ACTION ====
 +<code cpp>BOOL PED::IS_PED_PERFORMING_MELEE_ACTION(Ped ped) // 0xDCCA191DF9980FD7 0x139C0875 b323</code>
 +
 +==== IS_PED_PERFORMING_STEALTH_KILL ====
 +<code cpp>BOOL PED::IS_PED_PERFORMING_STEALTH_KILL(Ped ped) // 0xFD4CCDBCC59941B7 0x9ADD7B21 b323</code>
 +
 +==== IS_PED_PERFORMING_DEPENDENT_COMBO_LIMIT ====
 +<code cpp>BOOL PED::IS_PED_PERFORMING_DEPENDENT_COMBO_LIMIT(Ped ped) // 0xEBD0EDBA5BE957CF 0x9BE7C860 b323</code>
 +
 +==== IS_PED_BEING_STEALTH_KILLED ====
 +<code cpp>BOOL PED::IS_PED_BEING_STEALTH_KILLED(Ped ped) // 0x863B23EFDE9C5DF2 0xD044C8AF b323</code>
 +
 +==== GET_MELEE_TARGET_FOR_PED ====
 +<code cpp>Ped PED::GET_MELEE_TARGET_FOR_PED(Ped ped) // 0x18A3E9EE1297FD39 0xAFEC26A4 b323</code>
 +
 +==== WAS_PED_KILLED_BY_STEALTH ====
 +<code cpp>BOOL PED::WAS_PED_KILLED_BY_STEALTH(Ped ped) // 0xF9800AA1A771B000 0x2EA4B54E b323</code>
 +
 +==== WAS_PED_KILLED_BY_TAKEDOWN ====
 +<code cpp>BOOL PED::WAS_PED_KILLED_BY_TAKEDOWN(Ped ped) // 0x7F08E26039C7347C 0xBDD3CE69 b323</code>
 +
 +==== WAS_PED_KNOCKED_OUT ====
 +<code cpp>BOOL PED::WAS_PED_KNOCKED_OUT(Ped ped) // 0x61767F73EACEED21 0x3993092B b323</code>
 +
 +==== SET_PED_FLEE_ATTRIBUTES ====
 +<code cpp>void PED::SET_PED_FLEE_ATTRIBUTES(Ped ped, int attributeFlags, BOOL enable) // 0x70A2D1137C8ED7C9 0xA717A875 b323</code>
 +
 +<code>bit 15 (0x8000) = force cower</code>
 +==== SET_PED_COWER_HASH ====
 +<code cpp>void PED::SET_PED_COWER_HASH(Ped ped, const char* p1) // 0xA549131166868ED3 0x16F30DF4 b323</code>
 +
 +<code>p1: Only "CODE_HUMAN_STAND_COWER" found in the b617d scripts.</code>
 +==== _0x2016C603D6B8987C ====
 +<code cpp>void PED::_0x2016C603D6B8987C(Ped ped, BOOL toggle) // 0x2016C603D6B8987C 0xA6F2C057 b323</code>
 +
 +<code>SET_PED_STE*</code>
 +==== SET_PED_STEERS_AROUND_PEDS ====
 +<code cpp>void PED::SET_PED_STEERS_AROUND_PEDS(Ped ped, BOOL toggle) // 0x46F2193B3AD1D891 0x797CAE4F b323</code>
 +
 +==== SET_PED_STEERS_AROUND_OBJECTS ====
 +<code cpp>void PED::SET_PED_STEERS_AROUND_OBJECTS(Ped ped, BOOL toggle) // 0x1509C089ADC208BF 0x3BD9B0A6 b323</code>
 +
 +==== SET_PED_STEERS_AROUND_VEHICLES ====
 +<code cpp>void PED::SET_PED_STEERS_AROUND_VEHICLES(Ped ped, BOOL toggle) // 0xEB6FB9D48DDE23EC 0x533C0651 b323</code>
 +
 +==== _0xA9B61A329BFDCBEA ====
 +<code cpp>void PED::_0xA9B61A329BFDCBEA(Any p0, BOOL p1) // 0xA9B61A329BFDCBEA 0x2276DE0D b323</code>
 +
 +==== SET_PED_INCREASED_AVOIDANCE_RADIUS ====
 +<code cpp>void PED::SET_PED_INCREASED_AVOIDANCE_RADIUS(Ped ped) // 0x570389D1C3DE3C6B 0x59C52BE6 b323</code>
 +
 +==== SET_PED_BLOCKS_PATHING_WHEN_DEAD ====
 +<code cpp>void PED::SET_PED_BLOCKS_PATHING_WHEN_DEAD(Ped ped, BOOL toggle) // 0x576594E8D64375E2 0x1D87DDC1 b323</code>
 +
 +==== _0xA52D5247A4227E14 ====
 +<code cpp>void PED::_0xA52D5247A4227E14(Any p0) // 0xA52D5247A4227E14 0xB52BA5F5 b323</code>
 +
 +==== IS_ANY_PED_NEAR_POINT ====
 +<code cpp>BOOL PED::IS_ANY_PED_NEAR_POINT(float x, float y, float z, float radius) // 0x083961498679DC9F 0xFBD9B050 b323</code>
 +
 +==== FORCE_PED_AI_AND_ANIMATION_UPDATE ====
 +<code cpp>void PED::FORCE_PED_AI_AND_ANIMATION_UPDATE(Ped ped, BOOL p1, BOOL p2) // 0x2208438012482A1A 0x187B9070 b323</code>
 +
 +==== IS_PED_HEADING_TOWARDS_POSITION ====
 +<code cpp>BOOL PED::IS_PED_HEADING_TOWARDS_POSITION(Ped ped, float x, float y, float z, float p4) // 0xFCF37A457CB96DC0 0x45037B9B b323</code>
 +
 +==== REQUEST_PED_VISIBILITY_TRACKING ====
 +<code cpp>void PED::REQUEST_PED_VISIBILITY_TRACKING(Ped ped) // 0x7D7A2E43E74E2EB8 0x840D24D3 b323</code>
 +
 +==== REQUEST_PED_VEHICLE_VISIBILITY_TRACKING ====
 +<code cpp>void PED::REQUEST_PED_VEHICLE_VISIBILITY_TRACKING(Ped ped, BOOL p1) // 0x2BC338A7B21F4608 0x31C31DAA b323</code>
 +
 +==== _0xCD018C591F94CB43 ====
 +<code cpp>void PED::_0xCD018C591F94CB43(Ped ped, BOOL p1) // 0xCD018C591F94CB43  b323</code>
 +
 +<code>REQUEST_*</code>
 +==== _0x75BA1CB3B7D40CAF ====
 +<code cpp>void PED::_0x75BA1CB3B7D40CAF(Ped ped, BOOL p1) // 0x75BA1CB3B7D40CAF 0x9194DB71 b323</code>
 +
 +<code>REQUEST_*</code>
 +==== IS_TRACKED_PED_VISIBLE ====
 +<code cpp>BOOL PED::IS_TRACKED_PED_VISIBLE(Ped ped) // 0x91C8E617F64188AC 0x33248CC1 b323</code>
 +
 +<code>returns whether or not a ped is visible within your FOV, not this check auto's to false after a certain distance.
 +
 +
 +Target needs to be tracked.. won't work otherwise.</code>
 +==== _0x511F1A683387C7E2 ====
 +<code cpp>int PED::_0x511F1A683387C7E2(Ped ped) // 0x511F1A683387C7E2 0x5B1B70AA b323</code>
 +
 +<code>GET_*</code>
 +==== IS_PED_TRACKED ====
 +<code cpp>BOOL PED::IS_PED_TRACKED(Ped ped) // 0x4C5E1F087CD10BB7 0x7EB613D9 b323</code>
 +
 +==== HAS_PED_RECEIVED_EVENT ====
 +<code cpp>BOOL PED::HAS_PED_RECEIVED_EVENT(Ped ped, int eventId) // 0x8507BCB710FA6DC0 0xECD73DB0 b323</code>
 +
 +==== CAN_PED_SEE_HATED_PED ====
 +<code cpp>BOOL PED::CAN_PED_SEE_HATED_PED(Ped ped1, Ped ped2) // 0x6CD5A433374D4CFB 0x74A0F291 b323</code>
 +
 +==== _0x9C6A6C19B6C0C496 ====
 +<code cpp>BOOL PED::_0x9C6A6C19B6C0C496(Ped ped, int* p1) // 0x9C6A6C19B6C0C496  b323</code>
 +
 +==== _0x2DFC81C9B9608549 ====
 +<code cpp>BOOL PED::_0x2DFC81C9B9608549(Ped ped, int* p1) // 0x2DFC81C9B9608549  b944</code>
 +
 +==== GET_PED_BONE_INDEX ====
 +<code cpp>int PED::GET_PED_BONE_INDEX(Ped ped, int boneId) // 0x3F428D08BE5AAE31 0x259C6BA2 b323</code>
 +
 +<code>no bone= -1
 +
 +boneIds:
 +        SKEL_ROOT = 0x0,
 +   SKEL_Pelvis = 0x2e28,
 + SKEL_L_Thigh = 0xe39f,
 +    SKEL_L_Calf = 0xf9bb,
 + SKEL_L_Foot = 0x3779,
 + SKEL_L_Toe0 = 0x83c,
 +  IK_L_Foot = 0xfedd,
 +   PH_L_Foot = 0xe175,
 +   MH_L_Knee = 0xb3fe,
 +   SKEL_R_Thigh = 0xca72,
 +    SKEL_R_Calf = 0x9000,
 + SKEL_R_Foot = 0xcc4d,
 + SKEL_R_Toe0 = 0x512d,
 + IK_R_Foot = 0x8aae,
 +   PH_R_Foot = 0x60e6,
 +   MH_R_Knee = 0x3fcf,
 +   RB_L_ThighRoll = 0x5c57,
 +  RB_R_ThighRoll = 0x192a,
 +  SKEL_Spine_Root = 0xe0fd,
 + SKEL_Spine0 = 0x5c01,
 + SKEL_Spine1 = 0x60f0,
 + SKEL_Spine2 = 0x60f1,
 + SKEL_Spine3 = 0x60f2,
 + SKEL_L_Clavicle = 0xfcd9,
 + SKEL_L_UpperArm = 0xb1c5,
 + SKEL_L_Forearm = 0xeeeb,
 +  SKEL_L_Hand = 0x49d9,
 + SKEL_L_Finger00 = 0x67f2,
 + SKEL_L_Finger01 = 0xff9,
 +  SKEL_L_Finger02 = 0xffa,
 +  SKEL_L_Finger10 = 0x67f3,
 + SKEL_L_Finger11 = 0x1049,
 + SKEL_L_Finger12 = 0x104a,
 + SKEL_L_Finger20 = 0x67f4,
 + SKEL_L_Finger21 = 0x1059,
 + SKEL_L_Finger22 = 0x105a,
 + SKEL_L_Finger30 = 0x67f5,
 + SKEL_L_Finger31 = 0x1029,
 + SKEL_L_Finger32 = 0x102a,
 + SKEL_L_Finger40 = 0x67f6,
 + SKEL_L_Finger41 = 0x1039,
 + SKEL_L_Finger42 = 0x103a,
 + PH_L_Hand = 0xeb95,
 +   IK_L_Hand = 0x8cbd,
 +   RB_L_ForeArmRoll = 0xee4f,
 +    RB_L_ArmRoll = 0x1470,
 +    MH_L_Elbow = 0x58b7,
 +  SKEL_R_Clavicle = 0x29d2,
 + SKEL_R_UpperArm = 0x9d4d,
 + SKEL_R_Forearm = 0x6e5c,
 +  SKEL_R_Hand = 0xdead,
 + SKEL_R_Finger00 = 0xe5f2,
 + SKEL_R_Finger01 = 0xfa10,
 + SKEL_R_Finger02 = 0xfa11,
 + SKEL_R_Finger10 = 0xe5f3,
 + SKEL_R_Finger11 = 0xfa60,
 + SKEL_R_Finger12 = 0xfa61,
 + SKEL_R_Finger20 = 0xe5f4,
 + SKEL_R_Finger21 = 0xfa70,
 + SKEL_R_Finger22 = 0xfa71,
 + SKEL_R_Finger30 = 0xe5f5,
 + SKEL_R_Finger31 = 0xfa40,
 + SKEL_R_Finger32 = 0xfa41,
 + SKEL_R_Finger40 = 0xe5f6,
 + SKEL_R_Finger41 = 0xfa50,
 + SKEL_R_Finger42 = 0xfa51,
 + PH_R_Hand = 0x6f06,
 +   IK_R_Hand = 0x188e,
 +   RB_R_ForeArmRoll = 0xab22,
 +    RB_R_ArmRoll = 0x90ff,
 +    MH_R_Elbow = 0xbb0,
 +   SKEL_Neck_1 = 0x9995,
 + SKEL_Head = 0x796e,
 +   IK_Head = 0x322c,
 + FACIAL_facialRoot = 0xfe2c,
 +   FB_L_Brow_Out_000 = 0xe3db,
 +   FB_L_Lid_Upper_000 = 0xb2b6,
 +  FB_L_Eye_000 = 0x62ac,
 +    FB_L_CheekBone_000 = 0x542e,
 +  FB_L_Lip_Corner_000 = 0x74ac,
 + FB_R_Lid_Upper_000 = 0xaa10,
 +  FB_R_Eye_000 = 0x6b52,
 +    FB_R_CheekBone_000 = 0x4b88,
 +  FB_R_Brow_Out_000 = 0x54c,
 +    FB_R_Lip_Corner_000 = 0x2ba6,
 + FB_Brow_Centre_000 = 0x9149,
 +  FB_UpperLipRoot_000 = 0x4ed2,
 + FB_UpperLip_000 = 0xf18f,
 + FB_L_Lip_Top_000 = 0x4f37,
 +    FB_R_Lip_Top_000 = 0x4537,
 +    FB_Jaw_000 = 0xb4a0,
 +  FB_LowerLipRoot_000 = 0x4324,
 + FB_LowerLip_000 = 0x508f,
 + FB_L_Lip_Bot_000 = 0xb93b,
 +    FB_R_Lip_Bot_000 = 0xc33b,
 +    FB_Tongue_000 = 0xb987,
 +   RB_Neck_1 = 0x8b93,
 +   IK_Root = 0xdd1c</code>
 +==== GET_PED_RAGDOLL_BONE_INDEX ====
 +<code cpp>int PED::GET_PED_RAGDOLL_BONE_INDEX(Ped ped, int bone) // 0x2057EF813397A772 0x849F0716 b323</code>
 +
 +==== SET_PED_ENVEFF_SCALE ====
 +<code cpp>void PED::SET_PED_ENVEFF_SCALE(Ped ped, float value) // 0xBF29516833893561 0xFC1CFC27 b323</code>
 +
 +<code>Values look to be between 0.0 and 1.0
 +From decompiled scripts: 0.0, 0.6, 0.65, 0.8, 1.0
 +
 +You are correct, just looked in IDA it breaks from the function if it's less than 0.0f or greater than 1.0f.</code>
 +==== GET_PED_ENVEFF_SCALE ====
 +<code cpp>float PED::GET_PED_ENVEFF_SCALE(Ped ped) // 0x9C14D30395A51A3C 0xA3421E39 b323</code>
 +
 +==== SET_ENABLE_PED_ENVEFF_SCALE ====
 +<code cpp>void PED::SET_ENABLE_PED_ENVEFF_SCALE(Ped ped, BOOL toggle) // 0xD2C5AA0C0E8D0F1E 0xC70F4A84 b323</code>
 +
 +==== _0x110F526AB784111F ====
 +<code cpp>void PED::_0x110F526AB784111F(Ped ped, float p1) // 0x110F526AB784111F 0x3B882533 b323</code>
 +
 +<code>In agency_heist3b.c4, its like this 90% of the time:
 +
 +PED::_110F526AB784111F(ped, 0.099);
 +PED::SET_PED_ENVEFF_SCALE(ped, 1.0);
 +PED::_D69411AA0CEBF9E9(ped, 87, 81, 68);
 +PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);
 +
 +and its like this 10% of the time:
 +
 +PED::_110F526AB784111F(ped, 0.2);
 +PED::SET_PED_ENVEFF_SCALE(ped, 0.65);
 +PED::_D69411AA0CEBF9E9(ped, 74, 69, 60);
 +PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);</code>
 +==== SET_PED_ENVEFF_COLOR_MODULATOR ====
 +<code cpp>void PED::SET_PED_ENVEFF_COLOR_MODULATOR(Ped ped, int p1, int p2, int p3) // 0xD69411AA0CEBF9E9 0x87A0C174 b323</code>
 +
 +<code>Something related to the environmental effects natives.
 +In the "agency_heist3b" script, p1 - p3 are always under 100 - usually they are {87, 81, 68}. If SET_PED_ENVEFF_SCALE is set to 0.65 (instead of the usual 1.0), they use {74, 69, 60}</code>
 +==== _SET_PED_EMISSIVE_INTENSITY ====
 +<code cpp>void PED::_SET_PED_EMISSIVE_INTENSITY(Ped ped, float intensity) // 0x4E90D746056E273D  b944</code>
 +
 +<code>intensity: 0.0f - 1.0f
 +
 +This native sets the emissive intensity for the given ped. It is used for different 'glow' levels on illuminated clothing.
 +
 +Old name: _SET_PED_REFLECTION_INTENSITY</code>
 +==== _GET_PED_EMISSIVE_INTENSITY ====
 +<code cpp>float PED::_GET_PED_EMISSIVE_INTENSITY(Ped ped) // 0x1461B28A06717D68  b944</code>
 +
 +<code>Old name: _GET_PED_REFLECTION_INTENSITY
 +Use 0x4E90D746056E273D to set the illuminated clothing glow intensity for a specific ped.
 +Returns a float between 0.0 and 1.0 representing the current illuminated clothing glow intensity.</code>
 +==== _IS_PED_SHADER_EFFECT_VALID ====
 +<code cpp>BOOL PED::_IS_PED_SHADER_EFFECT_VALID(Ped ped) // 0x81AA517FBBA05D39  b944</code>
 +
 +==== _0xE906EC930F5FE7C8 ====
 +<code cpp>void PED::_0xE906EC930F5FE7C8(Any p0, Any p1) // 0xE906EC930F5FE7C8  b791</code>
 +
 +==== _0x1216E0BFA72CC703 ====
 +<code cpp>void PED::_0x1216E0BFA72CC703(Any p0, Any p1) // 0x1216E0BFA72CC703 0x7BD26837 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_PED_AO_BLOB_RENDERING ====
 +<code cpp>void PED::SET_PED_AO_BLOB_RENDERING(Ped ped, BOOL toggle) // 0x2B5AA717A181FB4C 0x98E29ED0 b323</code>
 +
 +<code>Enable/disable ped shadow (ambient occlusion). https://gfycat.com/thankfulesteemedgecko</code>
 +==== _0xB8B52E498014F5B0 ====
 +<code cpp>BOOL PED::_0xB8B52E498014F5B0(Ped ped) // 0xB8B52E498014F5B0  b323</code>
 +
 +==== CREATE_SYNCHRONIZED_SCENE ====
 +<code cpp>int PED::CREATE_SYNCHRONIZED_SCENE(float x, float y, float z, float roll, float pitch, float yaw, int p6) // 0x8C18E0F9080ADD73 0xFFDDF8FA b323</code>
 +
 +<code>p6 always 2 (but it doesnt seem to matter...)
 +
 +roll and pitch 0
 +yaw to Ped.rotation</code>
 +==== _CREATE_SYNCHRONIZED_SCENE_2 ====
 +<code cpp>int PED::_CREATE_SYNCHRONIZED_SCENE_2(float x, float y, float z, float radius, Hash object) // 0x62EC273D00187DCA 0xF3876894 b323</code>
 +
 +==== IS_SYNCHRONIZED_SCENE_RUNNING ====
 +<code cpp>BOOL PED::IS_SYNCHRONIZED_SCENE_RUNNING(int sceneId) // 0x25D39B935A038A26 0x57A282F1 b323</code>
 +
 +<code>Returns true if a synchronized scene is running</code>
 +==== SET_SYNCHRONIZED_SCENE_ORIGIN ====
 +<code cpp>void PED::SET_SYNCHRONIZED_SCENE_ORIGIN(int sceneID, float x, float y, float z, float roll, float pitch, float yaw, BOOL p7) // 0x6ACF6B7225801CD7 0x2EC2A0B2 b323</code>
 +
 +==== SET_SYNCHRONIZED_SCENE_PHASE ====
 +<code cpp>void PED::SET_SYNCHRONIZED_SCENE_PHASE(int sceneID, float phase) // 0x734292F4F0ABF6D0 0xF5AB0D98 b323</code>
 +
 +==== GET_SYNCHRONIZED_SCENE_PHASE ====
 +<code cpp>float PED::GET_SYNCHRONIZED_SCENE_PHASE(int sceneID) // 0xE4A310B1D7FA73CC 0xB0B2C852 b323</code>
 +
 +==== SET_SYNCHRONIZED_SCENE_RATE ====
 +<code cpp>void PED::SET_SYNCHRONIZED_SCENE_RATE(int sceneID, float rate) // 0xB6C49F8A5E295A5D 0xF10112FD b323</code>
 +
 +==== GET_SYNCHRONIZED_SCENE_RATE ====
 +<code cpp>float PED::GET_SYNCHRONIZED_SCENE_RATE(int sceneID) // 0xD80932D577274D40 0x89365F0D b323</code>
 +
 +==== SET_SYNCHRONIZED_SCENE_LOOPED ====
 +<code cpp>void PED::SET_SYNCHRONIZED_SCENE_LOOPED(int sceneID, BOOL toggle) // 0xD9A897A4C6C2974F 0x32ED9F82 b323</code>
 +
 +==== IS_SYNCHRONIZED_SCENE_LOOPED ====
 +<code cpp>BOOL PED::IS_SYNCHRONIZED_SCENE_LOOPED(int sceneID) // 0x62522002E0C391BA 0x47D87A84 b323</code>
 +
 +==== SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME ====
 +<code cpp>void PED::SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(int sceneID, BOOL toggle) // 0x394B9CD12435C981 0x2DE48DA1 b323</code>
 +
 +==== IS_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME ====
 +<code cpp>BOOL PED::IS_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(int sceneID) // 0x7F2F4F13AC5257EF 0x72CF2514 b323</code>
 +
 +==== ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY ====
 +<code cpp>void PED::ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(int sceneID, Entity entity, int boneIndex) // 0x272E4723B56A3B96 0xE9BA6189 b323</code>
 +
 +==== DETACH_SYNCHRONIZED_SCENE ====
 +<code cpp>void PED::DETACH_SYNCHRONIZED_SCENE(int sceneID) // 0x6D38F1F04CBB37EA 0x52A1CAB2 b323</code>
 +
 +==== _DISPOSE_SYNCHRONIZED_SCENE ====
 +<code cpp>void PED::_DISPOSE_SYNCHRONIZED_SCENE(int scene) // 0xCD9CC7E200A52A6F 0xBF7F9035 b323</code>
 +
 +==== FORCE_PED_MOTION_STATE ====
 +<code cpp>BOOL PED::FORCE_PED_MOTION_STATE(Ped ped, Hash motionStateHash, BOOL p2, int p3, BOOL p4) // 0xF28965D04F570DCA 0x164DDEFF b323</code>
 +
 +<code>Some motionstate hashes are
 +
 +0xec17e58 (standing idle), 0xbac0f10b (nothing?), 0x3f67c6af (aiming with pistol 2-h), 0x422d7a25 (stealth), 0xbd8817db, 0x916e828c
 +
 +and those for the strings
 +
 +"motionstate_idle", "motionstate_walk", "motionstate_run", "motionstate_actionmode_idle", and "motionstate_actionmode_walk".
 +
 +Regarding p2, p3 and p4: Most common is 0, 0, 0); followed by 0, 1, 0); and 1, 1, 0); in the scripts. p4 is very rarely something other than 0.
 +
 + [31/03/2017] ins1de :
 +
 +        enum MotionState
 +        {
 +            StopRunning = -530524,
 +            StopWalking = -668482597,
 +            Idle = 247561816, // 1, 1, 0
 +            Idl2 = -1871534317,
 +            SkyDive =-1161760501, // 0, 1, 0
 +            Stealth = 1110276645,
 +            Sprint = -1115154469,
 +            Swim = -1855028596,
 +            Unknown1 = 1063765679,
 +            Unknown2 = -633298724,
 +        }</code>
 +==== _GET_PED_CURRENT_MOVEMENT_SPEED ====
 +<code cpp>BOOL PED::_GET_PED_CURRENT_MOVEMENT_SPEED(Ped ped, float* speedX, float* speedY) // 0xF60165E1D2C5370B  b323</code>
 +
 +==== SET_PED_MAX_MOVE_BLEND_RATIO ====
 +<code cpp>void PED::SET_PED_MAX_MOVE_BLEND_RATIO(Ped ped, float value) // 0x433083750C5E064A 0xEAD0269A b323</code>
 +
 +==== SET_PED_MIN_MOVE_BLEND_RATIO ====
 +<code cpp>void PED::SET_PED_MIN_MOVE_BLEND_RATIO(Ped ped, float value) // 0x01A898D26E2333DD 0x383EC364 b323</code>
 +
 +==== SET_PED_MOVE_RATE_OVERRIDE ====
 +<code cpp>void PED::SET_PED_MOVE_RATE_OVERRIDE(Ped ped, float value) // 0x085BF80FA50A39D1 0x900008C6 b323</code>
 +
 +<code>Min: 0.00
 +Max: 10.00
 +
 +Can be used in combo with fast run cheat.
 +
 +When value is set to 10.00:
 +Sprinting without fast run cheat: 66 m/s
 +Sprinting with fast run cheat: 77 m/s
 +
 +Needs to be looped!
 +
 +Note: According to IDA for the Xbox360 xex, when they check bgt they seem to have the min to 0.0f, but the max set to 1.15f not 10.0f.</code>
 +==== _0x0B3E35AC043707D9 ====
 +<code cpp>void PED::_0x0B3E35AC043707D9(Any p0, Any p1) // 0x0B3E35AC043707D9  b573</code>
 +
 +==== _0x46B05BCAE43856B0 ====
 +<code cpp>BOOL PED::_0x46B05BCAE43856B0(Ped ped, int flag) // 0x46B05BCAE43856B0 0x79543043 b323</code>
 +
 +<code>Checks if the specified unknown flag is set in the ped's model.
 +The engine itself seems to exclusively check for flags 1 and 4 (Might be inlined code of the check that checks for other flags).
 +Game scripts exclusively check for flags 1 and 4.</code>
 +==== GET_PED_NEARBY_VEHICLES ====
 +<code cpp>int PED::GET_PED_NEARBY_VEHICLES(Ped ped, int* sizeAndVehs) // 0xCFF869CBFA210D82 0xCB716F68 b323</code>
 +
 +<code>Returns size of array, passed into the second variable.
 +
 +See below for usage information.
 +
 +This function actually requires a struct, where the first value is the maximum number of elements to return.  Here is a sample of how I was able to get it to work correctly, without yet knowing the struct format.
 +
 +//Setup the array
 + const int numElements = 10;
 +   const int arrSize = numElements * 2 + 2;
 +  Any veh[arrSize];
 + //0 index is the size of the array
 +    veh[0] = numElements;
 +
 +   int count = PED::GET_PED_NEARBY_VEHICLES(PLAYER::PLAYER_PED_ID(), veh);
 +
 + if (veh != NULL)
 +  {
 +     //Simple loop to go through results
 +       for (int i = 0; i < count; i++)
 +        {
 +         int offsettedID = i * 2 + 2;
 +          //Make sure it exists
 +         if (veh[offsettedID] != NULL && ENTITY::DOES_ENTITY_EXIST(veh[offsettedID]))
 +          {
 +             //Do something
 +            }
 +     }
 +  </code>
 +==== GET_PED_NEARBY_PEDS ====
 +<code cpp>int PED::GET_PED_NEARBY_PEDS(Ped ped, int* sizeAndPeds, int ignore) // 0x23F8F5FC7E8C4A6B 0x4D3325F4 b323</code>
 +
 +<code>sizeAndPeds - is a pointer to an array. The array is filled with peds found nearby the ped supplied to the first argument.
 +ignore - ped type to ignore
 +
 +Return value is the number of peds found and added to the array passed.
 +
 +-----------------------------------
 +
 +To make this work in most menu bases at least in C++ do it like so,
 +
 + Formatted Example: pastebin.com/D8an9wwp
 +
 +-----------------------------------
 +
 +Example: gtaforums.com/topic/789788-function-args-to-pedget-ped-nearby-peds/?p=1067386687</code>
 +==== HAVE_ALL_STREAMING_REQUESTS_COMPLETED ====
 +<code cpp>BOOL PED::HAVE_ALL_STREAMING_REQUESTS_COMPLETED(Ped ped) // 0x7350823473013C02 0xF9FB4B71 b323</code>
 +
 +==== IS_PED_USING_ACTION_MODE ====
 +<code cpp>BOOL PED::IS_PED_USING_ACTION_MODE(Ped ped) // 0x00E73468D085F745 0x5AE7EDA2 b323</code>
 +
 +==== SET_PED_USING_ACTION_MODE ====
 +<code cpp>void PED::SET_PED_USING_ACTION_MODE(Ped ped, BOOL p1, int p2, const char* action) // 0xD75ACCF5E0FB5367 0x8802F696 b323</code>
 +
 +<code>p2 is usually -1 in the scripts. action is either 0 or "DEFAULT_ACTION".</code>
 +==== SET_MOVEMENT_MODE_OVERRIDE ====
 +<code cpp>void PED::SET_MOVEMENT_MODE_OVERRIDE(Ped ped, const char* name) // 0x781DE8FA214E87D2 0x83BAE814 b323</code>
 +
 +<code>name: "MP_FEMALE_ACTION" found multiple times in the b617d scripts.</code>
 +==== SET_PED_CAPSULE ====
 +<code cpp>void PED::SET_PED_CAPSULE(Ped ped, float value) // 0x364DF566EC833DE2 0xB153E1B9 b323</code>
 +
 +<code>Overrides the ped's collision capsule radius for the current tick.
 +Must be called every tick to be effective.
 +
 +Setting this to 0.001 will allow warping through some objects.</code>
 +==== REGISTER_PEDHEADSHOT ====
 +<code cpp>int PED::REGISTER_PEDHEADSHOT(Ped ped) // 0x4462658788425076 0xFFE2667B b323</code>
 +
 +<code>gtaforums.com/topic/885580-ped-headshotmugshot-txd/</code>
 +==== _REGISTER_PEDHEADSHOT_3 ====
 +<code cpp>int PED::_REGISTER_PEDHEADSHOT_3(Ped ped) // 0xBA8805A1108A2515  b877</code>
 +
 +==== REGISTER_PEDHEADSHOT_TRANSPARENT ====
 +<code cpp>int PED::REGISTER_PEDHEADSHOT_TRANSPARENT(Ped ped) // 0x953563CE563143AF 0x4DD03628 b323</code>
 +
 +<code>Similar to REGISTER_PEDHEADSHOT but creates a transparent background instead of black. Example: https://i.imgur.com/iHz8ztn.png</code>
 +==== UNREGISTER_PEDHEADSHOT ====
 +<code cpp>void PED::UNREGISTER_PEDHEADSHOT(int id) // 0x96B1361D9B24C2FF 0x0879AE45 b323</code>
 +
 +<code>gtaforums.com/topic/885580-ped-headshotmugshot-txd/</code>
 +==== IS_PEDHEADSHOT_VALID ====
 +<code cpp>BOOL PED::IS_PEDHEADSHOT_VALID(int id) // 0xA0A9668F158129A2 0x0B1080C4 b323</code>
 +
 +<code>gtaforums.com/topic/885580-ped-headshotmugshot-txd/</code>
 +==== IS_PEDHEADSHOT_READY ====
 +<code cpp>BOOL PED::IS_PEDHEADSHOT_READY(int id) // 0x7085228842B13A67 0x761CD02E b323</code>
 +
 +<code>gtaforums.com/topic/885580-ped-headshotmugshot-txd/</code>
 +==== GET_PEDHEADSHOT_TXD_STRING ====
 +<code cpp>const char* PED::GET_PEDHEADSHOT_TXD_STRING(int id) // 0xDB4EACD4AD0A5D6B 0x76D28E96 b323</code>
 +
 +<code>gtaforums.com/topic/885580-ped-headshotmugshot-txd/</code>
 +==== REQUEST_PEDHEADSHOT_IMG_UPLOAD ====
 +<code cpp>BOOL PED::REQUEST_PEDHEADSHOT_IMG_UPLOAD(int id) // 0xF0DAEF2F545BEE25 0x10F2C023 b323</code>
 +
 +==== RELEASE_PEDHEADSHOT_IMG_UPLOAD ====
 +<code cpp>void PED::RELEASE_PEDHEADSHOT_IMG_UPLOAD(int id) // 0x5D517B27CF6ECD04 0x0DBB2FA7 b323</code>
 +
 +==== IS_PEDHEADSHOT_IMG_UPLOAD_AVAILABLE ====
 +<code cpp>BOOL PED::IS_PEDHEADSHOT_IMG_UPLOAD_AVAILABLE() // 0xEBB376779A760AA8 0x810158F8 b323</code>
 +
 +==== HAS_PEDHEADSHOT_IMG_UPLOAD_FAILED ====
 +<code cpp>BOOL PED::HAS_PEDHEADSHOT_IMG_UPLOAD_FAILED() // 0x876928DDDFCCC9CD 0x05023F8F b323</code>
 +
 +==== HAS_PEDHEADSHOT_IMG_UPLOAD_SUCCEEDED ====
 +<code cpp>BOOL PED::HAS_PEDHEADSHOT_IMG_UPLOAD_SUCCEEDED() // 0xE8A169E666CBC541 0xAA39FD6C b323</code>
 +
 +==== SET_PED_HEATSCALE_OVERRIDE ====
 +<code cpp>void PED::SET_PED_HEATSCALE_OVERRIDE(Ped ped, float heatScale) // 0xC1F6EBF9A3D55538 0xEF9142DB b323</code>
 +
 +==== DISABLE_PED_HEATSCALE_OVERRIDE ====
 +<code cpp>void PED::DISABLE_PED_HEATSCALE_OVERRIDE(Ped ped) // 0x600048C60D5C2C51 0x0688DE64 b323</code>
 +
 +==== SPAWNPOINTS_START_SEARCH ====
 +<code cpp>void PED::SPAWNPOINTS_START_SEARCH(float p0, float p1, float p2, float p3, float p4, int interiorFlags, float scale, int duration) // 0x2DF9038C90AD5264 0x909A1D76 b323</code>
 +
 +==== SPAWNPOINTS_START_SEARCH_IN_ANGLED_AREA ====
 +<code cpp>void PED::SPAWNPOINTS_START_SEARCH_IN_ANGLED_AREA(float x, float y, float z, float p3, float p4, float p5, float p6, int interiorFlags, float scale, int duration) // 0xB2AFF10216DEFA2F 0x4AAD0ECB b323</code>
 +
 +==== SPAWNPOINTS_CANCEL_SEARCH ====
 +<code cpp>void PED::SPAWNPOINTS_CANCEL_SEARCH() // 0xFEE4A5459472A9F8 0x492C9E46 b323</code>
 +
 +==== SPAWNPOINTS_IS_SEARCH_ACTIVE ====
 +<code cpp>BOOL PED::SPAWNPOINTS_IS_SEARCH_ACTIVE() // 0x3C67506996001F5E 0x814A28F4 b323</code>
 +
 +==== SPAWNPOINTS_IS_SEARCH_COMPLETE ====
 +<code cpp>BOOL PED::SPAWNPOINTS_IS_SEARCH_COMPLETE() // 0xA586FBEB32A53DBB 0x0B60D2BA b323</code>
 +
 +==== SPAWNPOINTS_IS_SEARCH_FAILED ====
 +<code cpp>BOOL PED::SPAWNPOINTS_IS_SEARCH_FAILED() // 0xF445DE8DA80A1792 0x6B83ABDF b323</code>
 +
 +==== SPAWNPOINTS_GET_NUM_SEARCH_RESULTS ====
 +<code cpp>int PED::SPAWNPOINTS_GET_NUM_SEARCH_RESULTS() // 0xA635C11B8C44AFC2 0xF46B4DC8 b323</code>
 +
 +==== SPAWNPOINTS_GET_SEARCH_RESULT ====
 +<code cpp>void PED::SPAWNPOINTS_GET_SEARCH_RESULT(int randomInt, float* x, float* y, float* z) // 0x280C7E3AC7F56E90 0x36A4AC65 b323</code>
 +
 +==== SPAWNPOINTS_GET_SEARCH_RESULT_FLAGS ====
 +<code cpp>void PED::SPAWNPOINTS_GET_SEARCH_RESULT_FLAGS(Any p0, Any* p1) // 0xB782F8238512BAD5 0xBA699DDF b323</code>
 +
 +==== SET_IK_TARGET ====
 +<code cpp>void PED::SET_IK_TARGET(Ped ped, int ikIndex, Entity entityLookAt, int boneLookAt, float offsetX, float offsetY, float offsetZ, Any p7, int blendInDuration, int blendOutDuration) // 0xC32779C16FCEECD9 0x6FE5218C b323</code>
 +
 +==== _0xED3C76ADFA6D07C4 ====
 +<code cpp>void PED::_0xED3C76ADFA6D07C4(Ped ped) // 0xED3C76ADFA6D07C4 0xFB4000DC b323</code>
 +
 +<code>FORCE_*</code>
 +==== REQUEST_ACTION_MODE_ASSET ====
 +<code cpp>void PED::REQUEST_ACTION_MODE_ASSET(const char* asset) // 0x290E2780BB7AA598 0x572BA553 b323</code>
 +
 +==== HAS_ACTION_MODE_ASSET_LOADED ====
 +<code cpp>BOOL PED::HAS_ACTION_MODE_ASSET_LOADED(const char* asset) // 0xE4B5F4BF2CB24E65 0xF7EB2BF1 b323</code>
 +
 +==== REMOVE_ACTION_MODE_ASSET ====
 +<code cpp>void PED::REMOVE_ACTION_MODE_ASSET(const char* asset) // 0x13E940F88470FA51 0x3F480F92 b323</code>
 +
 +==== REQUEST_STEALTH_MODE_ASSET ====
 +<code cpp>void PED::REQUEST_STEALTH_MODE_ASSET(const char* asset) // 0x2A0A62FCDEE16D4F 0x280A004A b323</code>
 +
 +==== HAS_STEALTH_MODE_ASSET_LOADED ====
 +<code cpp>BOOL PED::HAS_STEALTH_MODE_ASSET_LOADED(const char* asset) // 0xE977FC5B08AF3441 0x39245667 b323</code>
 +
 +==== REMOVE_STEALTH_MODE_ASSET ====
 +<code cpp>void PED::REMOVE_STEALTH_MODE_ASSET(const char* asset) // 0x9219857D21F0E842 0x8C0B243A b323</code>
 +
 +==== SET_PED_LOD_MULTIPLIER ====
 +<code cpp>void PED::SET_PED_LOD_MULTIPLIER(Ped ped, float multiplier) // 0xDC2C5C242AAC342B 0x1D2B5C70 b323</code>
 +
 +==== _0xE861D0B05C7662B8 ====
 +<code cpp>void PED::_0xE861D0B05C7662B8(Ped ped, BOOL p1, int p2) // 0xE861D0B05C7662B8 0x2F9550C2 b323</code>
 +
 +<code>SET_PED_CAN_*</code>
 +==== SET_FORCE_FOOTSTEP_UPDATE ====
 +<code cpp>void PED::SET_FORCE_FOOTSTEP_UPDATE(Ped ped, BOOL toggle) // 0x129466ED55140F8D 0x37DBC2AD b323</code>
 +
 +==== SET_FORCE_STEP_TYPE ====
 +<code cpp>void PED::SET_FORCE_STEP_TYPE(Ped ped, BOOL p1, int type, int p3) // 0xCB968B53FC7F916D 0xC0F1BC91 b323</code>
 +
 +==== IS_ANY_HOSTILE_PED_NEAR_POINT ====
 +<code cpp>BOOL PED::IS_ANY_HOSTILE_PED_NEAR_POINT(Ped ped, float x, float y, float z, float radius) // 0x68772DB2B2526F9F 0x1A464167 b323</code>
 +
 +==== _0x820E9892A77E97CD ====
 +<code cpp>void PED::_0x820E9892A77E97CD(Any p0, Any p1) // 0x820E9892A77E97CD  b877</code>
 +
 +==== _0x06087579E7AA85A9 ====
 +<code cpp>BOOL PED::_0x06087579E7AA85A9(Any p0, Any p1, float p2, float p3, float p4, float p5) // 0x06087579E7AA85A9 0xD0567D41 b323</code>
 +
 +==== SET_POP_CONTROL_SPHERE_THIS_FRAME ====
 +<code cpp>void PED::SET_POP_CONTROL_SPHERE_THIS_FRAME(float x, float y, float z, float min, float max) // 0xD8C3BE3EE94CAF2D 0x4BBE5E2C b323</code>
 +
 +<code>Min and max are usually 100.0 and 200.0</code>
 +==== _0xD33DAA36272177C4 ====
 +<code cpp>void PED::_0xD33DAA36272177C4(Ped ped) // 0xD33DAA36272177C4 0xA89A53F2 b323</code>
 +
 +==== _0x711794453CFD692B ====
 +<code cpp>void PED::_0x711794453CFD692B(Any p0, Any p1) // 0x711794453CFD692B  b463</code>
 +
 +==== _0x83A169EABCDB10A2 ====
 +<code cpp>void PED::_0x83A169EABCDB10A2(Any p0, Any p1) // 0x83A169EABCDB10A2  b323</code>
 +
 +==== _0x288DF530C92DAD6F ====
 +<code cpp>void PED::_0x288DF530C92DAD6F(Any p0, float p1) // 0x288DF530C92DAD6F  b323</code>
 +
 +==== _IS_PED_SWAPPING_WEAPON ====
 +<code cpp>BOOL PED::_IS_PED_SWAPPING_WEAPON(Ped Ped) // 0x3795688A307E1EB6  b505</code>
 +
 +==== _0x0F62619393661D6E ====
 +<code cpp>void PED::_0x0F62619393661D6E(Any p0, Any p1, Any p2) // 0x0F62619393661D6E  b877</code>
 +
 +==== _0xDFE68C4B787E1BFB ====
 +<code cpp>void PED::_0xDFE68C4B787E1BFB(Ped ped) // 0xDFE68C4B787E1BFB  b1180</code>
 +
 +==== _SET_ENABLE_SCUBA_GEAR_LIGHT ====
 +<code cpp>void PED::_SET_ENABLE_SCUBA_GEAR_LIGHT(Ped ped, BOOL toggle) // 0xEE2476B9EE4A094F  b1493</code>
 +
 +==== _IS_SCUBA_GEAR_LIGHT_ENABLED ====
 +<code cpp>BOOL PED::_IS_SCUBA_GEAR_LIGHT_ENABLED(Ped ped) // 0x88274C11CF0D866D  b1493</code>
 +
 +==== _CLEAR_FACIAL_CLIPSET_OVERRIDE ====
 +<code cpp>void PED::_CLEAR_FACIAL_CLIPSET_OVERRIDE(Ped ped) // 0x637822DC2AFEEBF8  b1493</code>
 +
 +==== _0xFAB944D4D481ACCB ====
 +<code cpp>void PED::_0xFAB944D4D481ACCB(Ped ped, BOOL toggle) // 0xFAB944D4D481ACCB  b1734</code>
 +
 +<code>SET_A*</code>
 +
 +===== PHYSICS =====
 +==== ADD_ROPE ====
 +<code cpp>int PHYSICS::ADD_ROPE(float x, float y, float z, float rotX, float rotY, float rotZ, float length, int ropeType, float maxLength, float minLength, float windingSpeed, BOOL p11, BOOL p12, BOOL rigid, float p14, BOOL breakWhenShot, Any* unkPtr) // 0xE832D760399EB220 0xA592EC74 b323</code>
 +
 +<code>Creates a rope at the specific position, that extends in the specified direction when not attached to any entities.
 +__
 +
 +Add_Rope(pos.x,pos.y,pos.z,0.0,0.0,0.0,20.0,4,20.0,1.0,0.0,false,false,false,5.0,false,NULL)
 +
 +When attached, Position<vector> does not matter
 +When attached, Angle<vector> does not matter
 +
 +Rope Type:
 +4 and bellow is a thick rope
 +5 and up are small metal wires
 +0 crashes the game
 +
 +Max_length - Rope is forced to this length, generally best to keep this the same as your rope length.
 +
 +windingSpeed - Speed the Rope is being winded, using native START_ROPE_WINDING. Set positive for winding and negative for unwinding.
 +
 +Rigid - If max length is zero, and this is set to false the rope will become rigid (it will force a specific distance, what ever length is, between the objects).
 +
 +breakable - Whether or not shooting the rope will break it.
 +
 +unkPtr - unknown ptr, always 0 in orig scripts
 +__
 +
 +Lengths can be calculated like so:
 +
 +float distance = abs(x1 - x2) + abs(y1 - y2) + abs(z1 - z2); // Rope length
 +
 +
 +NOTES:
 +
 +Rope does NOT interact with anything you attach it to, in some cases it make interact with the world AFTER it breaks (seems to occur if you set the type to -1).
 +
 +Rope will sometimes contract and fall to the ground like you'd expect it to, but since it doesn't interact with the world the effect is just jaring.</code>
 +==== DELETE_ROPE ====
 +<code cpp>void PHYSICS::DELETE_ROPE(int* ropeId) // 0x52B4829281364649 0x748D72AF b323</code>
 +
 +==== DELETE_CHILD_ROPE ====
 +<code cpp>void PHYSICS::DELETE_CHILD_ROPE(int ropeId) // 0xAA5D6B1888E4DB20 0xB19B4706 b323</code>
 +
 +==== DOES_ROPE_EXIST ====
 +<code cpp>BOOL PHYSICS::DOES_ROPE_EXIST(int* ropeId) // 0xFD5448BE3111ED96 0x66E4A3AC b323</code>
 +
 +==== _0xA1AE736541B0FCA3 ====
 +<code cpp>void PHYSICS::_0xA1AE736541B0FCA3(int* ropeId, BOOL p1) // 0xA1AE736541B0FCA3  b1868</code>
 +
 +<code>ROPE_*</code>
 +==== ROPE_DRAW_SHADOW_ENABLED ====
 +<code cpp>void PHYSICS::ROPE_DRAW_SHADOW_ENABLED(int* ropeId, BOOL toggle) // 0xF159A63806BB5BA8 0x51523B8C b323</code>
 +
 +==== LOAD_ROPE_DATA ====
 +<code cpp>void PHYSICS::LOAD_ROPE_DATA(int ropeId, const char* rope_preset) // 0xCBB203C04D1ABD27 0x9E8F1644 b323</code>
 +
 +<code>Rope presets can be found in the gamefiles. One example is "ropeFamily3", it is NOT a hash but rather a string.</code>
 +==== PIN_ROPE_VERTEX ====
 +<code cpp>void PHYSICS::PIN_ROPE_VERTEX(int ropeId, int vertex, float x, float y, float z) // 0x2B320CF14146B69A 0xAE1D101B b323</code>
 +
 +==== UNPIN_ROPE_VERTEX ====
 +<code cpp>void PHYSICS::UNPIN_ROPE_VERTEX(int ropeId, int vertex) // 0x4B5AE2EEE4A8F180 0xB30B552F b323</code>
 +
 +==== GET_ROPE_VERTEX_COUNT ====
 +<code cpp>int PHYSICS::GET_ROPE_VERTEX_COUNT(int ropeId) // 0x3655F544CD30F0B5 0x5131CD2C b323</code>
 +
 +==== ATTACH_ENTITIES_TO_ROPE ====
 +<code cpp>void PHYSICS::ATTACH_ENTITIES_TO_ROPE(int ropeId, Entity ent1, Entity ent2, float ent1_x, float ent1_y, float ent1_z, float ent2_x, float ent2_y, float ent2_z, float length, BOOL p10, BOOL p11, Any* p12, Any* p13) // 0x3D95EC8B6D940AC3 0x7508668F b323</code>
 +
 +<code>Attaches entity 1 to entity 2.</code>
 +==== ATTACH_ROPE_TO_ENTITY ====
 +<code cpp>void PHYSICS::ATTACH_ROPE_TO_ENTITY(int ropeId, Entity entity, float x, float y, float z, BOOL p5) // 0x4B490A6832559A65 0xB25D9536 b323</code>
 +
 +<code>The position supplied can be anywhere, and the entity should anchor relative to that point from it's origin.</code>
 +==== DETACH_ROPE_FROM_ENTITY ====
 +<code cpp>void PHYSICS::DETACH_ROPE_FROM_ENTITY(int ropeId, Entity entity) // 0xBCF3026912A8647D 0x3E720BEE b323</code>
 +
 +==== ROPE_SET_UPDATE_PINVERTS ====
 +<code cpp>void PHYSICS::ROPE_SET_UPDATE_PINVERTS(int ropeId) // 0xC8D667EE52114ABA 0xEAF291A0 b323</code>
 +
 +==== ROPE_SET_UPDATE_ORDER ====
 +<code cpp>void PHYSICS::ROPE_SET_UPDATE_ORDER(int ropeId, Any p1) // 0xDC57A637A20006ED 0x80DB77A7 b323</code>
 +
 +==== _0x36CCB9BE67B970FD ====
 +<code cpp>void PHYSICS::_0x36CCB9BE67B970FD(int ropeId, BOOL p1) // 0x36CCB9BE67B970FD 0xC67D5CF6 b323</code>
 +
 +<code>ROPE_*</code>
 +==== _0x84DE3B5FB3E666F0 ====
 +<code cpp>BOOL PHYSICS::_0x84DE3B5FB3E666F0(int* ropeId) // 0x84DE3B5FB3E666F0 0x7A18BB9C b323</code>
 +
 +<code>IS_*</code>
 +==== GET_ROPE_LAST_VERTEX_COORD ====
 +<code cpp>Vector3 PHYSICS::GET_ROPE_LAST_VERTEX_COORD(int ropeId) // 0x21BB0FBD3E217C2D 0x91F6848B b323</code>
 +
 +==== GET_ROPE_VERTEX_COORD ====
 +<code cpp>Vector3 PHYSICS::GET_ROPE_VERTEX_COORD(int ropeId, int vertex) // 0xEA61CA8E80F09E4D 0x84374452 b323</code>
 +
 +==== START_ROPE_WINDING ====
 +<code cpp>void PHYSICS::START_ROPE_WINDING(int ropeId) // 0x1461C72C889E343E 0x5187BED3 b323</code>
 +
 +==== STOP_ROPE_WINDING ====
 +<code cpp>void PHYSICS::STOP_ROPE_WINDING(int ropeId) // 0xCB2D4AB84A19AA7C 0x46826B53 b323</code>
 +
 +==== START_ROPE_UNWINDING_FRONT ====
 +<code cpp>void PHYSICS::START_ROPE_UNWINDING_FRONT(int ropeId) // 0x538D1179EC1AA9A9 0xFC0DB4C3 b323</code>
 +
 +==== STOP_ROPE_UNWINDING_FRONT ====
 +<code cpp>void PHYSICS::STOP_ROPE_UNWINDING_FRONT(int ropeId) // 0xFFF3A50779EFBBB3 0x2EEDB18F b323</code>
 +
 +==== ROPE_CONVERT_TO_SIMPLE ====
 +<code cpp>void PHYSICS::ROPE_CONVERT_TO_SIMPLE(int ropeId) // 0x5389D48EFA2F079A 0x43E92628 b323</code>
 +
 +==== ROPE_LOAD_TEXTURES ====
 +<code cpp>void PHYSICS::ROPE_LOAD_TEXTURES() // 0x9B9039DBF2D258C1 0xBA97CE91 b323</code>
 +
 +<code>Loads rope textures for all ropes in the current scene.</code>
 +==== ROPE_ARE_TEXTURES_LOADED ====
 +<code cpp>BOOL PHYSICS::ROPE_ARE_TEXTURES_LOADED() // 0xF2D0E6A75CC05597 0x5FDC1047 b323</code>
 +
 +==== ROPE_UNLOAD_TEXTURES ====
 +<code cpp>void PHYSICS::ROPE_UNLOAD_TEXTURES() // 0x6CE36C35C1AC8163 0x584463E0 b323</code>
 +
 +<code>Unloads rope textures for all ropes in the current scene.</code>
 +==== _DOES_ROPE_BELONG_TO_THIS_SCRIPT ====
 +<code cpp>BOOL PHYSICS::_DOES_ROPE_BELONG_TO_THIS_SCRIPT(int ropeId) // 0x271C9D3ACA5D6409  b323</code>
 +
 +==== _0xBC0CE682D4D05650 ====
 +<code cpp>void PHYSICS::_0xBC0CE682D4D05650(int ropeId, int p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9, float p10, float p11, float p12, float p13) // 0xBC0CE682D4D05650 0x106BA127 b323</code>
 +
 +<code>Most likely ROPE_ATTACH_*</code>
 +==== _0xB1B6216CA2E7B55E ====
 +<code cpp>void PHYSICS::_0xB1B6216CA2E7B55E(Any p0, BOOL p1, BOOL p2) // 0xB1B6216CA2E7B55E 0x7C6F7668 b323</code>
 +
 +==== _0xB743F735C03D7810 ====
 +<code cpp>void PHYSICS::_0xB743F735C03D7810(int ropeId, int p1) // 0xB743F735C03D7810 0x686672DD b323</code>
 +
 +<code>ROPE_*</code>
 +==== ROPE_GET_DISTANCE_BETWEEN_ENDS ====
 +<code cpp>float PHYSICS::ROPE_GET_DISTANCE_BETWEEN_ENDS(int ropeId) // 0x73040398DFF9A4A6 0xFD309DC8 b323</code>
 +
 +==== ROPE_FORCE_LENGTH ====
 +<code cpp>void PHYSICS::ROPE_FORCE_LENGTH(int ropeId, float length) // 0xD009F759A723DB1B 0xABF3130F b323</code>
 +
 +<code>Forces a rope to a certain length.</code>
 +==== ROPE_RESET_LENGTH ====
 +<code cpp>void PHYSICS::ROPE_RESET_LENGTH(int ropeId, float length) // 0xC16DE94D9BEA14A0 0xC8A423A3 b323</code>
 +
 +<code>Reset a rope to a certain length.</code>
 +==== APPLY_IMPULSE_TO_CLOTH ====
 +<code cpp>void PHYSICS::APPLY_IMPULSE_TO_CLOTH(float posX, float posY, float posZ, float vecX, float vecY, float vecZ, float impulse) // 0xE37F721824571784 0xA2A5C9FE b323</code>
 +
 +==== SET_DAMPING ====
 +<code cpp>void PHYSICS::SET_DAMPING(Entity entity, int vertex, float value) // 0xEEA3B200A6FEB65B 0xCFB37773 b323</code>
 +
 +==== ACTIVATE_PHYSICS ====
 +<code cpp>void PHYSICS::ACTIVATE_PHYSICS(Entity entity) // 0x710311ADF0E20730 0x031711B8 b323</code>
 +
 +==== SET_CGOFFSET ====
 +<code cpp>void PHYSICS::SET_CGOFFSET(Entity entity, float x, float y, float z) // 0xD8FA3908D7B86904 0x59910AB2 b323</code>
 +
 +==== GET_CGOFFSET ====
 +<code cpp>Vector3 PHYSICS::GET_CGOFFSET(Entity entity) // 0x8214A4B5A7A33612 0x49A11F0D b323</code>
 +
 +==== SET_CG_AT_BOUNDCENTER ====
 +<code cpp>void PHYSICS::SET_CG_AT_BOUNDCENTER(Entity entity) // 0xBE520D9761FF811F 0xA5B55421 b323</code>
 +
 +==== BREAK_ENTITY_GLASS ====
 +<code cpp>void PHYSICS::BREAK_ENTITY_GLASS(Entity entity, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, Any p9, BOOL p10) // 0x2E648D16F6E308F3 0xD0E0402F b323</code>
 +
 +==== _GET_HAS_OBJECT_FRAG_INST ====
 +<code cpp>BOOL PHYSICS::_GET_HAS_OBJECT_FRAG_INST(Object object) // 0x0C112765300C7E1E  b505</code>
 +
 +<code>GET_*</code>
 +==== SET_DISABLE_BREAKING ====
 +<code cpp>void PHYSICS::SET_DISABLE_BREAKING(Object object, BOOL toggle) // 0x5CEC1A84620E7D5B 0xEE77C326 b323</code>
 +
 +==== _0xCC6E963682533882 ====
 +<code cpp>void PHYSICS::_0xCC6E963682533882(Object object) // 0xCC6E963682533882  b323</code>
 +
 +<code>RESET_*</code>
 +==== SET_DISABLE_FRAG_DAMAGE ====
 +<code cpp>void PHYSICS::SET_DISABLE_FRAG_DAMAGE(Object object, BOOL toggle) // 0x01BA3AED21C16CFB 0x97269DC8 b323</code>
 +
 +==== _SET_ENTITY_PROOF_UNK ====
 +<code cpp>void PHYSICS::_SET_ENTITY_PROOF_UNK(Entity entity, BOOL toggle) // 0x15F944730C832252  b463</code>
 +
 +==== _0x9EBD751E5787BAF2 ====
 +<code cpp>void PHYSICS::_0x9EBD751E5787BAF2(BOOL p0) // 0x9EBD751E5787BAF2  b791</code>
 +
 +<code>SET_*</code>
 +==== _SET_LAUNCH_CONTROL_ENABLED ====
 +<code cpp>void PHYSICS::_SET_LAUNCH_CONTROL_ENABLED(BOOL toggle) // 0xAA6A6098851C396F  b1604</code>
 +
 +<code>Related to the lower-end of a vehicles fTractionCurve, e.g., from standing starts and acceleration from low/zero speeds.</code>
 +
 +===== PLAYER =====
 +==== GET_PLAYER_PED ====
 +<code cpp>Ped PLAYER::GET_PLAYER_PED(Player player) // 0x43A66C31C68491C0 0x6E31E993 b323</code>
 +
 +<code>Gets the ped for a specified player index.</code>
 +==== GET_PLAYER_PED_SCRIPT_INDEX ====
 +<code cpp>Ped PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(Player player) // 0x50FAC3A3E030A6E1 0x6AC64990 b323</code>
 +
 +<code>Does the same like PLAYER::GET_PLAYER_PED</code>
 +==== SET_PLAYER_MODEL ====
 +<code cpp>void PLAYER::SET_PLAYER_MODEL(Player player, Hash model) // 0x00A1CADD00108836 0x774A4C54 b323</code>
 +
 +<code>Set the model for a specific Player. Be aware that this will destroy the current Ped for the Player and create a new one, any reference to the old ped should be reset
 +Make sure to request the model first and wait until it has loaded.</code>
 +==== CHANGE_PLAYER_PED ====
 +<code cpp>void PLAYER::CHANGE_PLAYER_PED(Player player, Ped ped, BOOL p2, BOOL resetDamage) // 0x048189FAC643DEEE 0xBE515485 b323</code>
 +
 +==== GET_PLAYER_RGB_COLOUR ====
 +<code cpp>void PLAYER::GET_PLAYER_RGB_COLOUR(Player player, int* r, int* g, int* b) // 0xE902EF951DCE178F 0x6EF43BBB b323</code>
 +
 +==== GET_NUMBER_OF_PLAYERS ====
 +<code cpp>int PLAYER::GET_NUMBER_OF_PLAYERS() // 0x407C7F91DDB46C16 0x4C1B8867 b323</code>
 +
 +<code>Gets the number of players in the current session.
 +If not multiplayer, always returns 1.</code>
 +==== GET_PLAYER_TEAM ====
 +<code cpp>int PLAYER::GET_PLAYER_TEAM(Player player) // 0x37039302F4E0A008 0x9873E404 b323</code>
 +
 +<code>Gets the player's team.
 +Does nothing in singleplayer.</code>
 +==== SET_PLAYER_TEAM ====
 +<code cpp>void PLAYER::SET_PLAYER_TEAM(Player player, int team) // 0x0299FA38396A4940 0x725ADCF2 b323</code>
 +
 +<code>Set player team on deathmatch and last team standing..</code>
 +==== _GET_NUMBER_OF_PLAYERS_IN_TEAM ====
 +<code cpp>int PLAYER::_GET_NUMBER_OF_PLAYERS_IN_TEAM(int team) // 0x1FC200409F10E6F1  b1180</code>
 +
 +==== GET_PLAYER_NAME ====
 +<code cpp>const char* PLAYER::GET_PLAYER_NAME(Player player) // 0x6D0DE6A7B5DA71F8 0x406B4B20 b323</code>
 +
 +==== GET_WANTED_LEVEL_RADIUS ====
 +<code cpp>float PLAYER::GET_WANTED_LEVEL_RADIUS(Player player) // 0x085DEB493BE80812 0x1CF7D7DA b323</code>
 +
 +<code>Remnant from GTA IV. Does nothing in GTA V.</code>
 +==== GET_PLAYER_WANTED_CENTRE_POSITION ====
 +<code cpp>Vector3 PLAYER::GET_PLAYER_WANTED_CENTRE_POSITION(Player player) // 0x0C92BA89F1AF26F8 0x821F2D2C b323</code>
 +
 +==== SET_PLAYER_WANTED_CENTRE_POSITION ====
 +<code cpp>void PLAYER::SET_PLAYER_WANTED_CENTRE_POSITION(Player player, Vector3* position, BOOL p2, BOOL p3) // 0x520E541A97A13354 0xF261633A b323</code>
 +
 +<code># Predominant call signatures
 +PLAYER::SET_PLAYER_WANTED_CENTRE_POSITION(PLAYER::PLAYER_ID(), ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1));
 +
 +# Parameter value ranges
 +P0: PLAYER::PLAYER_ID()
 +P1: ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1)
 +P2: Not set by any call</code>
 +==== GET_WANTED_LEVEL_THRESHOLD ====
 +<code cpp>int PLAYER::GET_WANTED_LEVEL_THRESHOLD(int wantedLevel) // 0xFDD179EAF45B556C 0xD9783F6B b323</code>
 +
 +<code>Drft</code>
 +==== SET_PLAYER_WANTED_LEVEL ====
 +<code cpp>void PLAYER::SET_PLAYER_WANTED_LEVEL(Player player, int wantedLevel, BOOL disableNoMission) // 0x39FF19C64EF7DA5B 0xB7A0914B b323</code>
 +
 +<code>Call SET_PLAYER_WANTED_LEVEL_NOW for immediate effect
 +
 +wantedLevel is an integer value representing 0 to 5 stars even though the game supports the 6th wanted level but no police will appear since no definitions are present for it in the game files
 +
 +disableNoMission-  Disables When Off Mission- appears to always be false
 +</code>
 +==== SET_PLAYER_WANTED_LEVEL_NO_DROP ====
 +<code cpp>void PLAYER::SET_PLAYER_WANTED_LEVEL_NO_DROP(Player player, int wantedLevel, BOOL p2) // 0x340E61DE7F471565 0xED6F44F5 b323</code>
 +
 +<code>p2 is always false in R* scripts</code>
 +==== SET_PLAYER_WANTED_LEVEL_NOW ====
 +<code cpp>void PLAYER::SET_PLAYER_WANTED_LEVEL_NOW(Player player, BOOL p1) // 0xE0A7D1E497FFCD6F 0xAF3AFD83 b323</code>
 +
 +<code>Forces any pending wanted level to be applied to the specified player immediately.
 +
 +Call SET_PLAYER_WANTED_LEVEL with the desired wanted level, followed by SET_PLAYER_WANTED_LEVEL_NOW.
 +
 +Second parameter is unknown (always false).</code>
 +==== ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP ====
 +<code cpp>BOOL PLAYER::ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP(Player player) // 0xAFAF86043E5874E9 0xE13A71C7 b323</code>
 +
 +==== ARE_PLAYER_STARS_GREYED_OUT ====
 +<code cpp>BOOL PLAYER::ARE_PLAYER_STARS_GREYED_OUT(Player player) // 0x0A6EB355EE14A2DB 0x5E72AB72 b323</code>
 +
 +==== _0x7E07C78925D5FD96 ====
 +<code cpp>Any PLAYER::_0x7E07C78925D5FD96(Any p0) // 0x7E07C78925D5FD96  b372</code>
 +
 +==== SET_DISPATCH_COPS_FOR_PLAYER ====
 +<code cpp>void PLAYER::SET_DISPATCH_COPS_FOR_PLAYER(Player player, BOOL toggle) // 0xDB172424876553F4 0x48A18913 b323</code>
 +
 +==== IS_PLAYER_WANTED_LEVEL_GREATER ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_WANTED_LEVEL_GREATER(Player player, int wantedLevel) // 0x238DB2A2C23EE9EF 0x589A2661 b323</code>
 +
 +==== CLEAR_PLAYER_WANTED_LEVEL ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_WANTED_LEVEL(Player player) // 0xB302540597885499 0x54EA5BCC b323</code>
 +
 +<code>This executes at the same as speed as PLAYER::SET_PLAYER_WANTED_LEVEL(player, 0, false);
 +
 +PLAYER::GET_PLAYER_WANTED_LEVEL(player); executes in less than half the time. Which means that it's worth first checking if the wanted level needs to be cleared before clearing. However, this is mostly about good code practice and can important in other situations. The difference in time in this example is negligible. </code>
 +==== IS_PLAYER_DEAD ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_DEAD(Player player) // 0x424D4687FA1E5652 0x140CA5A8 b323</code>
 +
 +==== IS_PLAYER_PRESSING_HORN ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_PRESSING_HORN(Player player) // 0xFA1E2BF8B10598F9 0xED1D1662 b323</code>
 +
 +==== SET_PLAYER_CONTROL ====
 +<code cpp>void PLAYER::SET_PLAYER_CONTROL(Player player, BOOL bHasControl, int flags) // 0x8D32347D6D4C40A2 0xD17AFCD8 b323</code>
 +
 +<code>Flags:
 +SPC_AMBIENT_SCRIPT = (1 << 1),
 +SPC_CLEAR_TASKS = (1 << 2),
 +SPC_REMOVE_FIRES = (1 << 3),
 +SPC_REMOVE_EXPLOSIONS = (1 << 4),
 +SPC_REMOVE_PROJECTILES = (1 << 5),
 +SPC_DEACTIVATE_GADGETS = (1 << 6),
 +SPC_REENABLE_CONTROL_ON_DEATH = (1 << 7),
 +SPC_LEAVE_CAMERA_CONTROL_ON = (1 << 8),
 +SPC_ALLOW_PLAYER_DAMAGE = (1 << 9),
 +SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER = (1 << 10),
 +SPC_PREVENT_EVERYBODY_BACKOFF = (1 << 11),
 +SPC_ALLOW_PAD_SHAKE = (1 << 12)
 +
 +See: https://alloc8or.re/gta5/doc/enums/eSetPlayerControlFlag.txt</code>
 +==== GET_PLAYER_WANTED_LEVEL ====
 +<code cpp>int PLAYER::GET_PLAYER_WANTED_LEVEL(Player player) // 0xE28E54788CE8F12D 0xBDCDD163 b323</code>
 +
 +==== SET_MAX_WANTED_LEVEL ====
 +<code cpp>void PLAYER::SET_MAX_WANTED_LEVEL(int maxWantedLevel) // 0xAA5F02DB48D704B9 0x665A06F5 b323</code>
 +
 +==== SET_POLICE_RADAR_BLIPS ====
 +<code cpp>void PLAYER::SET_POLICE_RADAR_BLIPS(BOOL toggle) // 0x43286D561B72B8BF 0x8E114B10 b323</code>
 +
 +<code>If toggle is set to false:
 + The police won't be shown on the (mini)map
 +
 +If toggle is set to true:
 + The police will be shown on the (mini)map</code>
 +==== SET_POLICE_IGNORE_PLAYER ====
 +<code cpp>void PLAYER::SET_POLICE_IGNORE_PLAYER(Player player, BOOL toggle) // 0x32C62AA929C2DA6A 0xE6DE71B7 b323</code>
 +
 +<code>The player will be ignored by the police if toggle is set to true</code>
 +==== IS_PLAYER_PLAYING ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_PLAYING(Player player) // 0x5E9564D8246B909A 0xE15D777F b323</code>
 +
 +<code>Checks whether the specified player has a Ped, the Ped is not dead, is not injured and is not arrested.</code>
 +==== SET_EVERYONE_IGNORE_PLAYER ====
 +<code cpp>void PLAYER::SET_EVERYONE_IGNORE_PLAYER(Player player, BOOL toggle) // 0x8EEDA153AD141BA4 0xC915285E b323</code>
 +
 +==== SET_ALL_RANDOM_PEDS_FLEE ====
 +<code cpp>void PLAYER::SET_ALL_RANDOM_PEDS_FLEE(Player player, BOOL toggle) // 0x056E0FE8534C2949 0x49EAE968 b323</code>
 +
 +==== SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME ====
 +<code cpp>void PLAYER::SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(Player player) // 0x471D2FF42A94B4F2 0xBF974891 b323</code>
 +
 +==== _0xDE45D1A1EF45EE61 ====
 +<code cpp>void PLAYER::_0xDE45D1A1EF45EE61(Player player, BOOL toggle) // 0xDE45D1A1EF45EE61 0x274631FE b323</code>
 +
 +==== _0xC3376F42B1FACCC6 ====
 +<code cpp>void PLAYER::_0xC3376F42B1FACCC6(Player player) // 0xC3376F42B1FACCC6 0x02DF7AF4 b323</code>
 +
 +<code>- This is called after SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME
 +</code>
 +==== _0xFAC75988A7D078D3 ====
 +<code cpp>void PLAYER::_0xFAC75988A7D078D3(Player player) // 0xFAC75988A7D078D3  b463</code>
 +
 +==== SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS ====
 +<code cpp>void PLAYER::SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS(Player player, BOOL toggle) // 0x596976B02B6B5700 0xA3D675ED b323</code>
 +
 +==== SET_WANTED_LEVEL_MULTIPLIER ====
 +<code cpp>void PLAYER::SET_WANTED_LEVEL_MULTIPLIER(float multiplier) // 0x020E5F00CDA207BA 0x1359292F b323</code>
 +
 +==== SET_WANTED_LEVEL_DIFFICULTY ====
 +<code cpp>void PLAYER::SET_WANTED_LEVEL_DIFFICULTY(Player player, float difficulty) // 0x9B0BB33B04405E7A 0xB552626C b323</code>
 +
 +<code>Max value is 1.0</code>
 +==== RESET_WANTED_LEVEL_DIFFICULTY ====
 +<code cpp>void PLAYER::RESET_WANTED_LEVEL_DIFFICULTY(Player player) // 0xB9D0DD990DC141DD 0xA64C378D b323</code>
 +
 +==== _0x49B856B1360C47C7 ====
 +<code cpp>void PLAYER::_0x49B856B1360C47C7(Any p0, Any p1, Any p2) // 0x49B856B1360C47C7  b2060</code>
 +
 +==== _0x823EC8E82BA45986 ====
 +<code cpp>void PLAYER::_0x823EC8E82BA45986(Any p0) // 0x823EC8E82BA45986  b2060</code>
 +
 +==== START_FIRING_AMNESTY ====
 +<code cpp>void PLAYER::START_FIRING_AMNESTY(int duration) // 0xBF9BD71691857E48 0x5F8A22A6 b323</code>
 +
 +==== REPORT_CRIME ====
 +<code cpp>void PLAYER::REPORT_CRIME(Player player, int crimeType, int wantedLvlThresh) // 0xE9B09589827545E7 0xD8EB3A44 b323</code>
 +
 +<code>PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(), 37, PLAYER::GET_WANTED_LEVEL_THRESHOLD(1));
 +
 +From am_armybase.ysc.c4:
 +
 +PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(4), 36, PLAYER::GET_WANTED_LEVEL_THRESHOLD(4));
 +
 +-----
 +
 +This was taken from the GTAV.exe v1.334. The function is called sub_140592CE8. For a full decompilation of the function, see here: pastebin.com/09qSMsN7 
 +
 +-----
 +crimeType:
 +1: Firearms possession
 +2: Person running a red light ("5-0-5")
 +3: Reckless driver
 +4: Speeding vehicle (a "5-10")
 +5: Traffic violation (a "5-0-5")
 +6: Motorcycle rider without a helmet
 +7: Vehicle theft (a "5-0-3")
 +8: Grand Theft Auto
 +9: ???
 +10: ???
 +11: Assault on a civilian (a "2-40")
 +12: Assault on an officer
 +13: Assault with a deadly weapon (a "2-45")
 +14: Officer shot (a "2-45")
 +15: Pedestrian struck by a vehicle
 +16: Officer struck by a vehicle
 +17: Helicopter down (an "AC"?)
 +18: Civilian on fire (a "2-40")
 +19: Officer set on fire (a "10-99")
 +20: Car on fire
 +21: Air unit down (an "AC"?)
 +22: An explosion (a "9-96")
 +23: A stabbing (a "2-45") (also something else I couldn't understand)
 +24: Officer stabbed (also something else I couldn't understand)
 +25: Attack on a vehicle ("MDV"?)
 +26: Damage to property
 +27: Suspect threatening officer with a firearm
 +28: Shots fired
 +29: ???
 +30: ???
 +31: ???
 +32: ???
 +33: ???
 +34: A "2-45"
 +35: ???
 +36: A "9-25"
 +37: ???
 +38: ???
 +39: ???
 +40: ???
 +41: ???
 +42: ???
 +43: Possible disturbance
 +44: Civilian in need of assistance
 +45: ???
 +46: ???</code>
 +==== _SWITCH_CRIME_TYPE ====
 +<code cpp>void PLAYER::_SWITCH_CRIME_TYPE(Player player, int p1) // 0x9A987297ED8BD838 0x59B5C2A2 b323</code>
 +
 +<code>This was previously named as "RESERVE_ENTITY_EXPLODES_ON_HIGH_EXPLOSION_COMBO"
 +which is obviously incorrect.
 +
 +Seems to only appear in scripts used in Singleplayer. p1 ranges from 2 - 46.
 +
 +
 +I assume this switches the crime type</code>
 +==== _0xBC9490CA15AEA8FB ====
 +<code cpp>void PLAYER::_0xBC9490CA15AEA8FB(Player player) // 0xBC9490CA15AEA8FB 0x6B34A160 b323</code>
 +
 +<code>Seems to only appear in scripts used in Singleplayer.
 +
 +Always used like this in scripts
 +PLAYER::_BC9490CA15AEA8FB(PLAYER::PLAYER_ID());</code>
 +==== _0x4669B3ED80F24B4E ====
 +<code cpp>void PLAYER::_0x4669B3ED80F24B4E(Player player) // 0x4669B3ED80F24B4E 0xB9FB142F b323</code>
 +
 +<code>This has been found in use in the decompiled files.</code>
 +==== _0x2F41A3BAE005E5FA ====
 +<code cpp>void PLAYER::_0x2F41A3BAE005E5FA(Any p0, Any p1) // 0x2F41A3BAE005E5FA  b372</code>
 +
 +==== _0xAD73CE5A09E42D12 ====
 +<code cpp>void PLAYER::_0xAD73CE5A09E42D12(Player player) // 0xAD73CE5A09E42D12 0x85725848 b323</code>
 +
 +<code>This has been found in use in the decompiled files.</code>
 +==== _0x36F1B38855F2A8DF ====
 +<code cpp>void PLAYER::_0x36F1B38855F2A8DF(Player player) // 0x36F1B38855F2A8DF 0x3A7E5FB6 b323</code>
 +
 +==== REPORT_POLICE_SPOTTED_PLAYER ====
 +<code cpp>void PLAYER::REPORT_POLICE_SPOTTED_PLAYER(Player player) // 0xDC64D2C53493ED12 0xD15C4B1C b323</code>
 +
 +==== _0xB45EFF719D8427A6 ====
 +<code cpp>void PLAYER::_0xB45EFF719D8427A6(float p0) // 0xB45EFF719D8427A6 0xBF6993C7 b323</code>
 +
 +<code>PLAYER::0xBF6993C7(rPtr((&l_122) + 71)); // Found in decompilation
 +
 +***
 +
 +In "am_hold_up.ysc" used once:
 +
 +l_8d._f47 = MISC::GET_RANDOM_FLOAT_IN_RANGE(18.0, 28.0);
 +PLAYER::_B45EFF719D8427A6((l_8d._f47));</code>
 +==== _0x0032A6DBA562C518 ====
 +<code cpp>void PLAYER::_0x0032A6DBA562C518() // 0x0032A6DBA562C518 0x47CAB814 b323</code>
 +
 +<code>2 matches in 1 script - am_hold_up
 +
 +Used in multiplayer scripts?</code>
 +==== CAN_PLAYER_START_MISSION ====
 +<code cpp>BOOL PLAYER::CAN_PLAYER_START_MISSION(Player player) // 0xDE7465A27D403C06 0x39E3CB3F b323</code>
 +
 +==== IS_PLAYER_READY_FOR_CUTSCENE ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_READY_FOR_CUTSCENE(Player player) // 0x908CBECC2CAA3690 0xBB77E9CD b323</code>
 +
 +==== IS_PLAYER_TARGETTING_ENTITY ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_TARGETTING_ENTITY(Player player, Entity entity) // 0x7912F7FC4F6264B6 0xF3240B77 b323</code>
 +
 +==== GET_PLAYER_TARGET_ENTITY ====
 +<code cpp>BOOL PLAYER::GET_PLAYER_TARGET_ENTITY(Player player, Entity* entity) // 0x13EDE1A5DBF797C9 0xF6AAA2D7 b323</code>
 +
 +<code>Assigns the handle of locked-on melee target to *entity that you pass it.
 +Returns false if no entity found.</code>
 +==== IS_PLAYER_FREE_AIMING ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_FREE_AIMING(Player player) // 0x2E397FD2ECD37C87 0x1DEC67B7 b323</code>
 +
 +<code>Gets a value indicating whether the specified player is currently aiming freely.</code>
 +==== IS_PLAYER_FREE_AIMING_AT_ENTITY ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_FREE_AIMING_AT_ENTITY(Player player, Entity entity) // 0x3C06B5C839B38F7B 0x7D80EEAA b323</code>
 +
 +<code>Gets a value indicating whether the specified player is currently aiming freely at the specified entity.</code>
 +==== GET_ENTITY_PLAYER_IS_FREE_AIMING_AT ====
 +<code cpp>BOOL PLAYER::GET_ENTITY_PLAYER_IS_FREE_AIMING_AT(Player player, Entity* entity) // 0x2975C866E6713290 0x8866D9D0 b323</code>
 +
 +<code>Returns TRUE if it found an entity in your crosshair within range of your weapon. Assigns the handle of the target to the *entity that you pass it.
 +Returns false if no entity found.</code>
 +==== SET_PLAYER_LOCKON_RANGE_OVERRIDE ====
 +<code cpp>void PLAYER::SET_PLAYER_LOCKON_RANGE_OVERRIDE(Player player, float range) // 0x29961D490E5814FD 0x74D42C03 b323</code>
 +
 +<code>Affects the range of auto aim target.</code>
 +==== SET_PLAYER_CAN_DO_DRIVE_BY ====
 +<code cpp>void PLAYER::SET_PLAYER_CAN_DO_DRIVE_BY(Player player, BOOL toggle) // 0x6E8834B52EC20C77 0xF4D99685 b323</code>
 +
 +<code>Set whether this player should be able to do drive-bys.
 +
 +"A drive-by is when a ped is aiming/shooting from vehicle. This includes middle finger taunts. By setting this value to false I confirm the player is unable to do all that. Tested on tick."
 +</code>
 +==== SET_PLAYER_CAN_BE_HASSLED_BY_GANGS ====
 +<code cpp>void PLAYER::SET_PLAYER_CAN_BE_HASSLED_BY_GANGS(Player player, BOOL toggle) // 0xD5E460AD7020A246 0x71B305BB b323</code>
 +
 +<code>Sets whether this player can be hassled by gangs.</code>
 +==== SET_PLAYER_CAN_USE_COVER ====
 +<code cpp>void PLAYER::SET_PLAYER_CAN_USE_COVER(Player player, BOOL toggle) // 0xD465A8599DFF6814 0x13CAFAFA b323</code>
 +
 +<code>Sets whether this player can take cover.</code>
 +==== GET_MAX_WANTED_LEVEL ====
 +<code cpp>int PLAYER::GET_MAX_WANTED_LEVEL() // 0x462E0DB9B137DC5F 0x457F1E44 b323</code>
 +
 +<code>Gets the maximum wanted level the player can get.
 +Ranges from 0 to 5.</code>
 +==== IS_PLAYER_TARGETTING_ANYTHING ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_TARGETTING_ANYTHING(Player player) // 0x78CFE51896B6B8A4 0x456DB50D b323</code>
 +
 +==== SET_PLAYER_SPRINT ====
 +<code cpp>void PLAYER::SET_PLAYER_SPRINT(Player player, BOOL toggle) // 0xA01B8075D8B92DF4 0x7DD7900C b323</code>
 +
 +==== RESET_PLAYER_STAMINA ====
 +<code cpp>void PLAYER::RESET_PLAYER_STAMINA(Player player) // 0xA6F312FCCE9C1DFE 0xC0445A9C b323</code>
 +
 +==== RESTORE_PLAYER_STAMINA ====
 +<code cpp>void PLAYER::RESTORE_PLAYER_STAMINA(Player player, float p1) // 0xA352C1B864CAFD33 0x62A93608 b323</code>
 +
 +==== GET_PLAYER_SPRINT_STAMINA_REMAINING ====
 +<code cpp>float PLAYER::GET_PLAYER_SPRINT_STAMINA_REMAINING(Player player) // 0x3F9F16F8E65A7ED7 0x47017C90 b323</code>
 +
 +==== GET_PLAYER_SPRINT_TIME_REMAINING ====
 +<code cpp>float PLAYER::GET_PLAYER_SPRINT_TIME_REMAINING(Player player) // 0x1885BC9B108B4C99 0x40E80543 b323</code>
 +
 +==== GET_PLAYER_UNDERWATER_TIME_REMAINING ====
 +<code cpp>float PLAYER::GET_PLAYER_UNDERWATER_TIME_REMAINING(Player player) // 0xA1FCF8E6AF40B731 0x1317125A b323</code>
 +
 +==== _SET_PLAYER_UNDERWATER_TIME_REMAINING ====
 +<code cpp>Any PLAYER::_SET_PLAYER_UNDERWATER_TIME_REMAINING(Player player, float time) // 0xA0D3E4F7AAFB7E78  b757</code>
 +
 +==== GET_PLAYER_GROUP ====
 +<code cpp>int PLAYER::GET_PLAYER_GROUP(Player player) // 0x0D127585F77030AF 0xA5EDCDE8 b323</code>
 +
 +<code>Returns the group ID the player is member of.</code>
 +==== GET_PLAYER_MAX_ARMOUR ====
 +<code cpp>int PLAYER::GET_PLAYER_MAX_ARMOUR(Player player) // 0x92659B4CE1863CB3 0x02A50657 b323</code>
 +
 +==== IS_PLAYER_CONTROL_ON ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_CONTROL_ON(Player player) // 0x49C32D60007AFA47 0x618857F2 b323</code>
 +
 +<code>Can the player control himself, used to disable controls for player for things like a cutscene.
 +
 +---
 +
 +You can't disable controls with this, use SET_PLAYER_CONTROL(...) for this. </code>
 +==== _IS_PLAYER_CAM_CONTROL_DISABLED ====
 +<code cpp>BOOL PLAYER::_IS_PLAYER_CAM_CONTROL_DISABLED() // 0x7C814D2FB49F40C0  b323</code>
 +
 +<code>Returns true when the player is not able to control the cam i.e. when running a benchmark test, switching the player or viewing a cutscene.
 +
 +Note: I am not 100% sure if the native actually checks if the cam control is disabled but it seems promising.</code>
 +==== IS_PLAYER_SCRIPT_CONTROL_ON ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_SCRIPT_CONTROL_ON(Player player) // 0x8A876A65283DD7D7 0x61B00A84 b323</code>
 +
 +==== IS_PLAYER_CLIMBING ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_CLIMBING(Player player) // 0x95E8F73DC65EFB9C 0x4A9E9AE0 b323</code>
 +
 +<code>Returns TRUE if the player ('s ped) is climbing at the moment.</code>
 +==== IS_PLAYER_BEING_ARRESTED ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_BEING_ARRESTED(Player player, BOOL atArresting) // 0x388A47C51ABDAC8E 0x7F6A60D3 b323</code>
 +
 +<code>Return true while player is being arrested / busted.
 +
 +If atArresting is set to 1, this function will return 1 when player is being arrested (while player is putting his hand up, but still have control)
 +
 +If atArresting is set to 0, this function will return 1 only when the busted screen is shown.</code>
 +==== RESET_PLAYER_ARREST_STATE ====
 +<code cpp>void PLAYER::RESET_PLAYER_ARREST_STATE(Player player) // 0x2D03E13C460760D6 0x453C7CAB b323</code>
 +
 +==== GET_PLAYERS_LAST_VEHICLE ====
 +<code cpp>Vehicle PLAYER::GET_PLAYERS_LAST_VEHICLE() // 0xB6997A7EB3F5C8C0 0xE2757AC1 b323</code>
 +
 +<code>Alternative: GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 1);</code>
 +==== GET_PLAYER_INDEX ====
 +<code cpp>Player PLAYER::GET_PLAYER_INDEX() // 0xA5EDC40EF369B48D 0x309BBDC1 b323</code>
 +
 +<code>Returns the same as PLAYER_ID and NETWORK_PLAYER_ID_TO_INT</code>
 +==== INT_TO_PLAYERINDEX ====
 +<code cpp>Player PLAYER::INT_TO_PLAYERINDEX(int value) // 0x41BD2A6B006AF756 0x98DD98F1 b323</code>
 +
 +<code>Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).</code>
 +==== INT_TO_PARTICIPANTINDEX ====
 +<code cpp>int PLAYER::INT_TO_PARTICIPANTINDEX(int value) // 0x9EC6603812C24710 0x98F3B274 b323</code>
 +
 +<code>Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).
 +--------------------------------------------------------
 +if (NETWORK::NETWORK_IS_PARTICIPANT_ACTIVE(PLAYER::INT_TO_PARTICIPANTINDEX(i)))
 +</code>
 +==== GET_TIME_SINCE_PLAYER_HIT_VEHICLE ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_PLAYER_HIT_VEHICLE(Player player) // 0x5D35ECF3A81A0EE0 0x6E9B8B9E b323</code>
 +
 +==== GET_TIME_SINCE_PLAYER_HIT_PED ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_PLAYER_HIT_PED(Player player) // 0xE36A25322DC35F42 0xB6209195 b323</code>
 +
 +==== GET_TIME_SINCE_PLAYER_DROVE_ON_PAVEMENT ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_PLAYER_DROVE_ON_PAVEMENT(Player player) // 0xD559D2BE9E37853B 0x8836E732 b323</code>
 +
 +==== GET_TIME_SINCE_PLAYER_DROVE_AGAINST_TRAFFIC ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_PLAYER_DROVE_AGAINST_TRAFFIC(Player player) // 0xDB89591E290D9182 0x9F27D00E b323</code>
 +
 +==== IS_PLAYER_FREE_FOR_AMBIENT_TASK ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_FREE_FOR_AMBIENT_TASK(Player player) // 0xDCCFD3F106C36AB4 0x85C7E232 b323</code>
 +
 +==== PLAYER_ID ====
 +<code cpp>Player PLAYER::PLAYER_ID() // 0x4F8644AF03D0E0D6 0x8AEA886C b323</code>
 +
 +<code>This returns YOUR 'identity' as a Player type.
 +
 +Always returns 0 in story mode.</code>
 +==== PLAYER_PED_ID ====
 +<code cpp>Ped PLAYER::PLAYER_PED_ID() // 0xD80958FC74E988A6 0xFA92E226 b323</code>
 +
 +<code>Returns current player ped</code>
 +==== NETWORK_PLAYER_ID_TO_INT ====
 +<code cpp>int PLAYER::NETWORK_PLAYER_ID_TO_INT() // 0xEE68096F9F37341E 0x8DD5B838 b323</code>
 +
 +<code>Does exactly the same thing as PLAYER_ID()</code>
 +==== HAS_FORCE_CLEANUP_OCCURRED ====
 +<code cpp>BOOL PLAYER::HAS_FORCE_CLEANUP_OCCURRED(int cleanupFlags) // 0xC968670BFACE42D9 0x4B37333C b323</code>
 +
 +==== FORCE_CLEANUP ====
 +<code cpp>void PLAYER::FORCE_CLEANUP(int cleanupFlags) // 0xBC8983F38F78ED51 0xFDAAEA2B b323</code>
 +
 +<code>used with 1,2,8,64,128 in the scripts</code>
 +==== FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME ====
 +<code cpp>void PLAYER::FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME(const char* name, int cleanupFlags) // 0x4C68DDDDF0097317 0x04256C73 b323</code>
 +
 +<code>PLAYER::FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME("pb_prostitute", 1); // Found in decompilation</code>
 +==== FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID ====
 +<code cpp>void PLAYER::FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID(int id, int cleanupFlags) // 0xF745B37630DF176B 0x882D3EB3 b323</code>
 +
 +==== GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP ====
 +<code cpp>int PLAYER::GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP() // 0x9A41CF4674A12272 0x39AA9FC8 b323</code>
 +
 +==== SET_PLAYER_MAY_ONLY_ENTER_THIS_VEHICLE ====
 +<code cpp>void PLAYER::SET_PLAYER_MAY_ONLY_ENTER_THIS_VEHICLE(Player player, Vehicle vehicle) // 0x8026FF78F208978A 0xA454DD29 b323</code>
 +
 +==== SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE ====
 +<code cpp>void PLAYER::SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE(Player player) // 0x1DE37BBF9E9CC14A 0xAF7AFCC4 b323</code>
 +
 +==== GIVE_ACHIEVEMENT_TO_PLAYER ====
 +<code cpp>BOOL PLAYER::GIVE_ACHIEVEMENT_TO_PLAYER(int achievement) // 0xBEC7076D64130195 0x822BC992 b323</code>
 +
 +<code>Achievements from 0-57
 +
 +
 +more achievements came with update 1.29 (freemode events update), I'd say that they now go to 60, but I'll need to check.</code>
 +==== _SET_ACHIEVEMENT_PROGRESS ====
 +<code cpp>BOOL PLAYER::_SET_ACHIEVEMENT_PROGRESS(int achievement, int progress) // 0xC2AFFFDABBDC2C5C  b323</code>
 +
 +<code>For Steam.
 +Does nothing and always returns false in the retail version of the game.</code>
 +==== _GET_ACHIEVEMENT_PROGRESS ====
 +<code cpp>int PLAYER::_GET_ACHIEVEMENT_PROGRESS(int achievement) // 0x1C186837D0619335  b323</code>
 +
 +<code>For Steam.
 +Always returns 0 in retail version of the game.</code>
 +==== HAS_ACHIEVEMENT_BEEN_PASSED ====
 +<code cpp>BOOL PLAYER::HAS_ACHIEVEMENT_BEEN_PASSED(int achievement) // 0x867365E111A3B6EB 0x136A5BE9 b323</code>
 +
 +==== IS_PLAYER_ONLINE ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_ONLINE() // 0xF25D331DC2627BBC 0x9FAB6729 b323</code>
 +
 +<code>Returns TRUE if the game is in online mode and FALSE if in offline mode.
 +
 +This is an alias for NETWORK_IS_SIGNED_ONLINE.</code>
 +==== IS_PLAYER_LOGGING_IN_NP ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_LOGGING_IN_NP() // 0x74556E1420867ECA 0x8F72FAD0 b323</code>
 +
 +<code>this function is hard-coded to always return 0.</code>
 +==== DISPLAY_SYSTEM_SIGNIN_UI ====
 +<code cpp>void PLAYER::DISPLAY_SYSTEM_SIGNIN_UI(BOOL unk) // 0x94DD7888C10A979E 0x4264CED2 b323</code>
 +
 +<code>Purpose of the BOOL currently unknown.
 +Both, true and false, work</code>
 +==== IS_SYSTEM_UI_BEING_DISPLAYED ====
 +<code cpp>BOOL PLAYER::IS_SYSTEM_UI_BEING_DISPLAYED() // 0x5D511E3867C87139 0xE495B6DA b323</code>
 +
 +==== SET_PLAYER_INVINCIBLE ====
 +<code cpp>void PLAYER::SET_PLAYER_INVINCIBLE(Player player, BOOL toggle) // 0x239528EACDC3E7DE 0xDFB9A2A2 b323</code>
 +
 +<code>Simply sets you as invincible (Health will not deplete).
 +
 +Use 0x733A643B5B0C53C1 instead if you want Ragdoll enabled, which is equal to:
 +*(DWORD *)(playerPedAddress + 0x188) |= (1 << 9);</code>
 +==== GET_PLAYER_INVINCIBLE ====
 +<code cpp>BOOL PLAYER::GET_PLAYER_INVINCIBLE(Player player) // 0xB721981B2B939E07 0x680C90EE b323</code>
 +
 +<code>Returns the Player's Invincible status.
 +
 +This function will always return false if 0x733A643B5B0C53C1 is used to set the invincibility status. To always get the correct result, use this:
 +
 + bool IsPlayerInvincible(Player player)
 +    {
 +     auto addr = getScriptHandleBaseAddress(GET_PLAYER_PED(player)); 
 +
 +        if (addr)
 +     {
 +         DWORD flag = *(DWORD *)(addr + 0x188);
 +            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);
 +      }
 +
 +       return false;
 + }
 +
 +</code>
 +==== _0xDCC07526B8EC45AF ====
 +<code cpp>BOOL PLAYER::_0xDCC07526B8EC45AF(Player player) // 0xDCC07526B8EC45AF  b1868</code>
 +
 +<code>Always returns false.</code>
 +==== _SET_PLAYER_INVINCIBLE_KEEP_RAGDOLL_ENABLED ====
 +<code cpp>void PLAYER::_SET_PLAYER_INVINCIBLE_KEEP_RAGDOLL_ENABLED(Player player, BOOL toggle) // 0x6BC97F4F4BB3C04B  b463</code>
 +
 +==== _0xCAC57395B151135F ====
 +<code cpp>void PLAYER::_0xCAC57395B151135F(Player player, BOOL p1) // 0xCAC57395B151135F 0x00563E0D b323</code>
 +
 +<code>Found in "director_mode", "fm_bj_race_controler", "fm_deathmatch_controler", "fm_impromptu_dm_controler", "fm_race_controler", "gb_deathmatch".</code>
 +==== REMOVE_PLAYER_HELMET ====
 +<code cpp>void PLAYER::REMOVE_PLAYER_HELMET(Player player, BOOL p2) // 0xF3AC26D3CC576528 0x6255F3B4 b323</code>
 +
 +==== GIVE_PLAYER_RAGDOLL_CONTROL ====
 +<code cpp>void PLAYER::GIVE_PLAYER_RAGDOLL_CONTROL(Player player, BOOL toggle) // 0x3C49C870E66F0A28 0xC7B4D7AC b323</code>
 +
 +==== SET_PLAYER_LOCKON ====
 +<code cpp>void PLAYER::SET_PLAYER_LOCKON(Player player, BOOL toggle) // 0x5C8B2F450EE4328E 0x0B270E0F b323</code>
 +
 +<code>Example from fm_mission_controler.ysc.c4:
 +
 +PLAYER::SET_PLAYER_LOCKON(PLAYER::PLAYER_ID(), 1);
 +
 +All other decompiled scripts using this seem to be using the player id as the first parameter, so I feel the need to confirm it as so.
 +
 +No need to confirm it says PLAYER_ID() so it uses PLAYER_ID() lol.</code>
 +==== SET_PLAYER_TARGETING_MODE ====
 +<code cpp>void PLAYER::SET_PLAYER_TARGETING_MODE(int targetMode) // 0xB1906895227793F3 0x61CAE253 b323</code>
 +
 +<code>Sets your targeting mode.
 +0 = Assisted Aim - Full
 +1 = Assisted Aim - Partial
 +2 = Free Aim - Assisted
 +3 = Free Aim</code>
 +==== SET_PLAYER_TARGET_LEVEL ====
 +<code cpp>void PLAYER::SET_PLAYER_TARGET_LEVEL(int targetLevel) // 0x5702B917B99DB1CD 0x772DA539 b323</code>
 +
 +==== _0xB9CF1F793A9F1BF1 ====
 +<code cpp>BOOL PLAYER::_0xB9CF1F793A9F1BF1() // 0xB9CF1F793A9F1BF1  b323</code>
 +
 +<code>Returns profile setting 237.
 +
 +GET_*</code>
 +==== _0xCB645E85E97EA48B ====
 +<code cpp>BOOL PLAYER::_0xCB645E85E97EA48B() // 0xCB645E85E97EA48B  b372</code>
 +
 +<code>Returns profile setting 243.
 +
 +GET_*</code>
 +==== CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED(Player player) // 0xF0B67A4DE6AB5F98 0x1D31CBBD b323</code>
 +
 +==== HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED ====
 +<code cpp>BOOL PLAYER::HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED(Player player) // 0x20CE80B0C2BF4ACC 0x14F52453 b323</code>
 +
 +==== CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED(Player player) // 0x4AACB96203D11A31 0x7E3BFBC5 b323</code>
 +
 +==== HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED ====
 +<code cpp>BOOL PLAYER::HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED(Player player) // 0xE4B90F367BD81752 0xA3707DFC b323</code>
 +
 +==== SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE ====
 +<code cpp>void PLAYER::SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(Player player, float multiplier) // 0xCA7DC8329F0A1E9E 0xF20F72E5 b323</code>
 +
 +<code>This can be between 1.0f - 14.9f 
 +
 +You can change the max in IDA from 15.0. I say 15.0 as the function blrs if what you input is greater than or equal to 15.0 hence why it's 14.9 max default.
 +
 +</code>
 +==== SET_SWIM_MULTIPLIER_FOR_PLAYER ====
 +<code cpp>void PLAYER::SET_SWIM_MULTIPLIER_FOR_PLAYER(Player player, float multiplier) // 0xA91C6F0FF7D16A13 0xB986FF47 b323</code>
 +
 +<code>Swim speed multiplier.
 +Multiplier goes up to 1.49
 +
 +Just call it one time, it is not required to be called once every tick. - Note copied from below native.
 +
 +Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and RUN_SPRINT below. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.</code>
 +==== SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER ====
 +<code cpp>void PLAYER::SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER(Player player, float multiplier) // 0x6DB47AA77FD94E09 0x825423C2 b323</code>
 +
 +<code>Multiplier goes up to 1.49 any value above will be completely overruled by the game and the multiplier will not take effect, this can be edited in memory however.
 +
 +Just call it one time, it is not required to be called once every tick.
 +
 +Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and SWIM above. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.</code>
 +==== GET_TIME_SINCE_LAST_ARREST ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_LAST_ARREST() // 0x5063F92F07C2A316 0x62824EF4 b323</code>
 +
 +<code>Returns the time since the character was arrested in (ms) milliseconds.
 +
 +example
 +
 +var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_ARREST();
 +
 +UI.DrawSubtitle(time.ToString());
 +
 +if player has not been arrested, the int returned will be -1.</code>
 +==== GET_TIME_SINCE_LAST_DEATH ====
 +<code cpp>int PLAYER::GET_TIME_SINCE_LAST_DEATH() // 0xC7034807558DDFCA 0x24BC5AC0 b323</code>
 +
 +<code>Returns the time since the character died in (ms) milliseconds.
 +
 +example
 +
 +var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_DEATH();
 +
 +UI.DrawSubtitle(time.ToString());
 +
 +if player has not died, the int returned will be -1.</code>
 +==== ASSISTED_MOVEMENT_CLOSE_ROUTE ====
 +<code cpp>void PLAYER::ASSISTED_MOVEMENT_CLOSE_ROUTE() // 0xAEBF081FFC0A0E5E 0xF23277F3 b323</code>
 +
 +==== ASSISTED_MOVEMENT_FLUSH_ROUTE ====
 +<code cpp>void PLAYER::ASSISTED_MOVEMENT_FLUSH_ROUTE() // 0x8621390F0CDCFE1F 0xD04568B9 b323</code>
 +
 +==== SET_PLAYER_FORCED_AIM ====
 +<code cpp>void PLAYER::SET_PLAYER_FORCED_AIM(Player player, BOOL toggle) // 0x0FEE4F80AC44A726 0x94E42E2E b323</code>
 +
 +==== SET_PLAYER_FORCED_ZOOM ====
 +<code cpp>void PLAYER::SET_PLAYER_FORCED_ZOOM(Player player, BOOL toggle) // 0x75E7D505F2B15902 0xB0C576CB b323</code>
 +
 +==== SET_PLAYER_FORCE_SKIP_AIM_INTRO ====
 +<code cpp>void PLAYER::SET_PLAYER_FORCE_SKIP_AIM_INTRO(Player player, BOOL toggle) // 0x7651BC64AE59E128 0x374F42F0 b323</code>
 +
 +==== DISABLE_PLAYER_FIRING ====
 +<code cpp>void PLAYER::DISABLE_PLAYER_FIRING(Player player, BOOL toggle) // 0x5E6CC07646BBEAB8 0x30CB28CB b323</code>
 +
 +<code>Inhibits the player from using any method of combat including melee and firearms.
 +
 +NOTE: Only disables the firing for one frame</code>
 +==== _0xB885852C39CC265D ====
 +<code cpp>void PLAYER::_0xB885852C39CC265D() // 0xB885852C39CC265D 0x47D6004E b323</code>
 +
 +<code>Disables something. Used only once in R* scripts (freemode.ysc).
 +
 +DISABLE_PLAYER_*</code>
 +==== SET_DISABLE_AMBIENT_MELEE_MOVE ====
 +<code cpp>void PLAYER::SET_DISABLE_AMBIENT_MELEE_MOVE(Player player, BOOL toggle) // 0x2E8AABFA40A84F8C 0xCCD937E7 b323</code>
 +
 +==== SET_PLAYER_MAX_ARMOUR ====
 +<code cpp>void PLAYER::SET_PLAYER_MAX_ARMOUR(Player player, int value) // 0x77DFCCF5948B8C71 0xC6C3C53B b323</code>
 +
 +<code>Default is 100. Use player id and not ped id. For instance: PLAYER::SET_PLAYER_MAX_ARMOUR(PLAYER::PLAYER_ID(), 100); // main_persistent.ct4</code>
 +==== _SPECIAL_ABILITY_ACTIVATE ====
 +<code cpp>void PLAYER::_SPECIAL_ABILITY_ACTIVATE(Any p0, Any p1) // 0x821FDC827D6F4090  b678</code>
 +
 +==== _SET_SPECIAL_ABILITY ====
 +<code cpp>void PLAYER::_SET_SPECIAL_ABILITY(Player player, int p1, Any p2) // 0xB214D570EAD7F81A  b678</code>
 +
 +==== _SPECIAL_ABILITY_DEPLETE ====
 +<code cpp>void PLAYER::_SPECIAL_ABILITY_DEPLETE(Any p0, Any p1) // 0x17F7471EACA78290  b678</code>
 +
 +==== SPECIAL_ABILITY_DEACTIVATE ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_DEACTIVATE(Player player, Any p1) // 0xD6A953C6D1492057 0x80C2AB09 b323</code>
 +
 +==== SPECIAL_ABILITY_DEACTIVATE_FAST ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_DEACTIVATE_FAST(Player player, Any p1) // 0x9CB5CE07A3968D5A 0x0751908A b323</code>
 +
 +==== SPECIAL_ABILITY_RESET ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_RESET(Player player, Any p1) // 0x375F0E738F861A94 0xA7D8BCD3 b323</code>
 +
 +==== SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED(Player player, Any p1) // 0xC9A763D8FE87436A 0x4136829A b323</code>
 +
 +==== SPECIAL_ABILITY_CHARGE_SMALL ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_SMALL(Player player, BOOL p1, BOOL p2, Any p3) // 0x2E7B9B683481687D 0x6F463F56 b323</code>
 +
 +<code>Every occurrence of p1 & p2 were both true.</code>
 +==== SPECIAL_ABILITY_CHARGE_MEDIUM ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_MEDIUM(Player player, BOOL p1, BOOL p2, Any p3) // 0xF113E3AA9BC54613 0xAB55D8F3 b323</code>
 +
 +<code>Only 1 match. Both p1 & p2 were true.</code>
 +==== SPECIAL_ABILITY_CHARGE_LARGE ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_LARGE(Player player, BOOL p1, BOOL p2, Any p3) // 0xF733F45FA4497D93 0xF440C04D b323</code>
 +
 +<code>2 matches. p1 was always true.</code>
 +==== SPECIAL_ABILITY_CHARGE_CONTINUOUS ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_CONTINUOUS(Player player, Ped p1, Any p2) // 0xED481732DFF7E997 0x5FEE98A2 b323</code>
 +
 +<code>p1 appears to always be 1 (only comes up twice)</code>
 +==== SPECIAL_ABILITY_CHARGE_ABSOLUTE ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_ABSOLUTE(Player player, int p1, BOOL p2, Any p3) // 0xB7B0870EB531D08D 0x72429998 b323</code>
 +
 +<code>p1 appears as 5, 10, 15, 25, or 30. p2 is always true.</code>
 +==== SPECIAL_ABILITY_CHARGE_NORMALIZED ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_CHARGE_NORMALIZED(Player player, float normalizedValue, BOOL p2, Any p3) // 0xA0696A65F009EE18 0x8C7E68C1 b323</code>
 +
 +<code>
 +normalizedValue is from 0.0 - 1.0
 +p2 is always 1</code>
 +==== SPECIAL_ABILITY_FILL_METER ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_FILL_METER(Player player, BOOL p1, Any p2) // 0x3DACA8DDC6FD4980 0xB71589DA b323</code>
 +
 +<code>Also known as _RECHARGE_SPECIAL_ABILITY</code>
 +==== SPECIAL_ABILITY_DEPLETE_METER ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_DEPLETE_METER(Player player, BOOL p1, Any p2) // 0x1D506DBBBC51E64B 0x9F80F6DF b323</code>
 +
 +<code>p1 was always true.</code>
 +==== SPECIAL_ABILITY_LOCK ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_LOCK(Hash playerModel, Any p1) // 0x6A09D0D590A47D13 0x1B7BB388 b323</code>
 +
 +==== SPECIAL_ABILITY_UNLOCK ====
 +<code cpp>void PLAYER::SPECIAL_ABILITY_UNLOCK(Hash playerModel, Any p1) // 0xF145F3BE2EFA9A3B 0x1FDB2919 b323</code>
 +
 +==== IS_SPECIAL_ABILITY_UNLOCKED ====
 +<code cpp>BOOL PLAYER::IS_SPECIAL_ABILITY_UNLOCKED(Hash playerModel) // 0xC6017F6A6CDFA694 0xC9C75E82 b323</code>
 +
 +==== IS_SPECIAL_ABILITY_ACTIVE ====
 +<code cpp>BOOL PLAYER::IS_SPECIAL_ABILITY_ACTIVE(Player player, Any p1) // 0x3E5F7FC85D854E15 0x1B17E334 b323</code>
 +
 +==== IS_SPECIAL_ABILITY_METER_FULL ====
 +<code cpp>BOOL PLAYER::IS_SPECIAL_ABILITY_METER_FULL(Player player, Any p1) // 0x05A1FE504B7F2587 0x2E19D7F6 b323</code>
 +
 +==== ENABLE_SPECIAL_ABILITY ====
 +<code cpp>void PLAYER::ENABLE_SPECIAL_ABILITY(Player player, BOOL toggle, Any p2) // 0x181EC197DAEFE121 0xC86C1B4E b323</code>
 +
 +==== IS_SPECIAL_ABILITY_ENABLED ====
 +<code cpp>BOOL PLAYER::IS_SPECIAL_ABILITY_ENABLED(Player player, Any p1) // 0xB1D200FE26AEF3CB 0xC01238CC b323</code>
 +
 +==== SET_SPECIAL_ABILITY_MULTIPLIER ====
 +<code cpp>void PLAYER::SET_SPECIAL_ABILITY_MULTIPLIER(float multiplier) // 0xA49C426ED0CA4AB7 0xFF1BC556 b323</code>
 +
 +==== _0xFFEE8FA29AB9A18E ====
 +<code cpp>void PLAYER::_0xFFEE8FA29AB9A18E(Player player, Any p1) // 0xFFEE8FA29AB9A18E 0x5D0FE25B b323</code>
 +
 +==== _0x5FC472C501CCADB3 ====
 +<code cpp>BOOL PLAYER::_0x5FC472C501CCADB3(Player player) // 0x5FC472C501CCADB3 0x46E7E31D b323</code>
 +
 +<code>Appears once in "re_dealgonewrong"</code>
 +==== _0xF10B44FD479D69F3 ====
 +<code cpp>BOOL PLAYER::_0xF10B44FD479D69F3(Player player, int p1) // 0xF10B44FD479D69F3 0x1E359CC8 b323</code>
 +
 +<code>Only 1 occurrence. p1 was 2.</code>
 +==== _0xDD2620B7B9D16FF1 ====
 +<code cpp>BOOL PLAYER::_0xDD2620B7B9D16FF1(Player player, float p1) // 0xDD2620B7B9D16FF1 0x8CB53C9F b323</code>
 +
 +<code>2 occurrences in agency_heist3a. p1 was 0.7f then 0.4f.</code>
 +==== START_PLAYER_TELEPORT ====
 +<code cpp>void PLAYER::START_PLAYER_TELEPORT(Player player, float x, float y, float z, float heading, BOOL p5, BOOL findCollisionLand, BOOL p7) // 0xAD15F075A4DA0FDE 0xC552E06C b323</code>
 +
 +<code>`findCollisionLand`: This teleports the player to land when set to true and will not consider the Z coordinate parameter provided by you. It will automatically put the Z coordinate so that you don't fall from sky.</code>
 +==== UPDATE_PLAYER_TELEPORT ====
 +<code cpp>BOOL PLAYER::UPDATE_PLAYER_TELEPORT(Player player) // 0xE23D5873C2394C61  b323</code>
 +
 +==== STOP_PLAYER_TELEPORT ====
 +<code cpp>void PLAYER::STOP_PLAYER_TELEPORT() // 0xC449EDED9D73009C 0x86AB8DBB b323</code>
 +
 +<code>Disables the player's teleportation</code>
 +==== IS_PLAYER_TELEPORT_ACTIVE ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_TELEPORT_ACTIVE() // 0x02B15662D7F8886F 0x3A11D118 b323</code>
 +
 +==== GET_PLAYER_CURRENT_STEALTH_NOISE ====
 +<code cpp>float PLAYER::GET_PLAYER_CURRENT_STEALTH_NOISE(Player player) // 0x2F395D61F3A1F877 0xC3B02362 b323</code>
 +
 +==== SET_PLAYER_HEALTH_RECHARGE_MULTIPLIER ====
 +<code cpp>void PLAYER::SET_PLAYER_HEALTH_RECHARGE_MULTIPLIER(Player player, float regenRate) // 0x5DB660B38DD98A31 0x45514731 b323</code>
 +
 +<code>`regenRate`: The recharge multiplier, a value between 0.0 and 1.0.
 +Use 1.0 to reset it back to normal</code>
 +==== _GET_PLAYER_HEALTH_RECHARGE_LIMIT ====
 +<code cpp>float PLAYER::_GET_PLAYER_HEALTH_RECHARGE_LIMIT(Player player) // 0x8BC515BAE4AAF8FF  b617</code>
 +
 +==== _SET_PLAYER_HEALTH_RECHARGE_LIMIT ====
 +<code cpp>void PLAYER::_SET_PLAYER_HEALTH_RECHARGE_LIMIT(Player player, float limit) // 0xC388A0F065F5BC34  b573</code>
 +
 +==== _SET_PLAYER_FALL_DISTANCE ====
 +<code cpp>void PLAYER::_SET_PLAYER_FALL_DISTANCE(Any p0, Any p1) // 0xEFD79FA81DFBA9CB  b573</code>
 +
 +==== SET_PLAYER_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_WEAPON_DAMAGE_MODIFIER(Player player, float modifier) // 0xCE07B9F7817AADA3 0xB02C2F39 b323</code>
 +
 +<code>This modifies the damage value of your weapon. Whether it is a multiplier or base damage is unknown. 
 +
 +Based on tests, it is unlikely to be a multiplier.
 +
 +modifier's min value is 0.1</code>
 +==== SET_PLAYER_WEAPON_DEFENSE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_WEAPON_DEFENSE_MODIFIER(Player player, float modifier) // 0x2D83BC011CA14A3C 0xAE446344 b323</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== _SET_PLAYER_WEAPON_DEFENSE_MODIFIER_2 ====
 +<code cpp>void PLAYER::_SET_PLAYER_WEAPON_DEFENSE_MODIFIER_2(Player player, float modifier) // 0xBCFDE9EDE4CF27DC  b944</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER(Player player, float modifier, BOOL p2) // 0x4A3DC7ECCC321032 0x362E69AD b323</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== SET_PLAYER_MELEE_WEAPON_DEFENSE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_MELEE_WEAPON_DEFENSE_MODIFIER(Player player, float modifier) // 0xAE540335B4ABC4E2 0x9F3D577F b323</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== SET_PLAYER_VEHICLE_DAMAGE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_VEHICLE_DAMAGE_MODIFIER(Player player, float modifier) // 0xA50E117CDDF82F0C 0x823ECA63 b323</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== SET_PLAYER_VEHICLE_DEFENSE_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_VEHICLE_DEFENSE_MODIFIER(Player player, float modifier) // 0x4C60E6EFDAFF2462 0xA16626C7 b323</code>
 +
 +<code>modifier's min value is 0.1</code>
 +==== _0x8D768602ADEF2245 ====
 +<code cpp>void PLAYER::_0x8D768602ADEF2245(Player player, float p1) // 0x8D768602ADEF2245  b463</code>
 +
 +<code>SET_PLAYER_MAX_*</code>
 +==== _0xD821056B9ACF8052 ====
 +<code cpp>void PLAYER::_0xD821056B9ACF8052(Any p0, Any p1) // 0xD821056B9ACF8052  b1011</code>
 +
 +==== _0x31E90B8873A4CD3B ====
 +<code cpp>void PLAYER::_0x31E90B8873A4CD3B(Any p0, Any p1) // 0x31E90B8873A4CD3B  b617</code>
 +
 +==== SET_PLAYER_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_TINT_INDEX(Player player, int tintIndex) // 0xA3D0E54541D9A5E5 0x8EA12EDB b323</code>
 +
 +<code>Tints:
 +   None = -1,
 +    Rainbow = 0,
 +  Red = 1,
 +  SeasideStripes = 2,
 +   WidowMaker = 3,
 +   Patriot = 4,
 +  Blue = 5,
 + Black = 6,
 +    Hornet = 7,
 +   AirFocce = 8,
 + Desert = 9,
 +   Shadow = 10,
 +  HighAltitude = 11,
 +    Airbone = 12,
 + Sunrise = 13,
 +</code>
 +==== GET_PLAYER_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PLAYER::GET_PLAYER_PARACHUTE_TINT_INDEX(Player player, int* tintIndex) // 0x75D3F7A1B0D9B145 0x432B0509 b323</code>
 +
 +<code>Tints:
 +  None = -1,
 +    Rainbow = 0,
 +  Red = 1,
 +  SeasideStripes = 2,
 +   WidowMaker = 3,
 +   Patriot = 4,
 +  Blue = 5,
 + Black = 6,
 +    Hornet = 7,
 +   AirFocce = 8,
 + Desert = 9,
 +   Shadow = 10,
 +  HighAltitude = 11,
 +    Airbone = 12,
 + Sunrise = 13,</code>
 +==== SET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PLAYER::SET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX(Player player, int index) // 0xAF04C87F5DC1DF38 0x70689638 b323</code>
 +
 +<code>Tints:
 +   None = -1,
 +    Rainbow = 0,
 +  Red = 1,
 +  SeasideStripes = 2,
 +   WidowMaker = 3,
 +   Patriot = 4,
 +  Blue = 5,
 + Black = 6,
 +    Hornet = 7,
 +   AirFocce = 8,
 + Desert = 9,
 +   Shadow = 10,
 +  HighAltitude = 11,
 +    Airbone = 12,
 + Sunrise = 13,</code>
 +==== GET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX ====
 +<code cpp>void PLAYER::GET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX(Player player, int* index) // 0xD5A016BC3C09CF40 0x77B8EF01 b323</code>
 +
 +<code>Tints:
 +  None = -1,
 +    Rainbow = 0,
 +  Red = 1,
 +  SeasideStripes = 2,
 +   WidowMaker = 3,
 +   Patriot = 4,
 +  Blue = 5,
 + Black = 6,
 +    Hornet = 7,
 +   AirFocce = 8,
 + Desert = 9,
 +   Shadow = 10,
 +  HighAltitude = 11,
 +    Airbone = 12,
 + Sunrise = 13,</code>
 +==== SET_PLAYER_PARACHUTE_PACK_TINT_INDEX ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_PACK_TINT_INDEX(Player player, int tintIndex) // 0x93B0FB27C9A04060 0xD79D5D1B b323</code>
 +
 +<code>tints 0- 13
 +0 - unkown
 +1 - unkown
 +2 - unkown
 +3 - unkown
 +4 - unkown</code>
 +==== GET_PLAYER_PARACHUTE_PACK_TINT_INDEX ====
 +<code cpp>void PLAYER::GET_PLAYER_PARACHUTE_PACK_TINT_INDEX(Player player, int* tintIndex) // 0x6E9C742F340CE5A2 0x4E418E13 b323</code>
 +
 +==== SET_PLAYER_HAS_RESERVE_PARACHUTE ====
 +<code cpp>void PLAYER::SET_PLAYER_HAS_RESERVE_PARACHUTE(Player player) // 0x7DDAB28D31FAC363 0xA3E4798E b323</code>
 +
 +==== GET_PLAYER_HAS_RESERVE_PARACHUTE ====
 +<code cpp>BOOL PLAYER::GET_PLAYER_HAS_RESERVE_PARACHUTE(Player player) // 0x5DDFE2FF727F3CA3 0x30DA1DA1 b323</code>
 +
 +==== SET_PLAYER_CAN_LEAVE_PARACHUTE_SMOKE_TRAIL ====
 +<code cpp>void PLAYER::SET_PLAYER_CAN_LEAVE_PARACHUTE_SMOKE_TRAIL(Player player, BOOL enabled) // 0xF401B182DBA8AF53 0x832DEB7A b323</code>
 +
 +==== SET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR(Player player, int r, int g, int b) // 0x8217FD371A4625CF 0x14FE9264 b323</code>
 +
 +==== GET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR ====
 +<code cpp>void PLAYER::GET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR(Player player, int* r, int* g, int* b) // 0xEF56DBABD3CD4887 0xF66E5CDD b323</code>
 +
 +==== SET_PLAYER_RESET_FLAG_PREFER_REAR_SEATS ====
 +<code cpp>void PLAYER::SET_PLAYER_RESET_FLAG_PREFER_REAR_SEATS(Player player, int flags) // 0x11D5F725F0E780E0 0x725C6174 b323</code>
 +
 +<code>example:
 +
 +flags: 0-6
 +
 +PLAYER::SET_PLAYER_RESET_FLAG_PREFER_REAR_SEATS(PLAYER::PLAYER_ID(), 6);
 +
 +wouldnt the flag be the seatIndex?</code>
 +==== SET_PLAYER_NOISE_MULTIPLIER ====
 +<code cpp>void PLAYER::SET_PLAYER_NOISE_MULTIPLIER(Player player, float multiplier) // 0xDB89EF50FF25FCE9 0x15786DD1 b323</code>
 +
 +==== SET_PLAYER_SNEAKING_NOISE_MULTIPLIER ====
 +<code cpp>void PLAYER::SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(Player player, float multiplier) // 0xB2C1A29588A9F47C 0x8D2D89C4 b323</code>
 +
 +<code>Values around 1.0f to 2.0f used in game scripts.</code>
 +==== CAN_PED_HEAR_PLAYER ====
 +<code cpp>BOOL PLAYER::CAN_PED_HEAR_PLAYER(Player player, Ped ped) // 0xF297383AA91DCA29 0x1C70B2EB b323</code>
 +
 +==== SIMULATE_PLAYER_INPUT_GAIT ====
 +<code cpp>void PLAYER::SIMULATE_PLAYER_INPUT_GAIT(Player player, float amount, int gaitType, float speed, BOOL p4, BOOL p5) // 0x477D5D63E63ECA5D 0x0D77CC34 b323</code>
 +
 +<code>This is to make the player walk without accepting input from INPUT.
 +
 +gaitType is in increments of 100s. 2000, 500, 300, 200, etc.
 +
 +p4 is always 1 and p5 is always 0.
 +
 +C# Example :
 +
 +Function.Call(Hash.SIMULATE_PLAYER_INPUT_GAIT, Game.Player, 1.0f, 100, 1.0f, 1, 0); //Player will go forward for 100ms</code>
 +==== RESET_PLAYER_INPUT_GAIT ====
 +<code cpp>void PLAYER::RESET_PLAYER_INPUT_GAIT(Player player) // 0x19531C47A2ABD691 0x4A701EE1 b323</code>
 +
 +==== SET_AUTO_GIVE_PARACHUTE_WHEN_ENTER_PLANE ====
 +<code cpp>void PLAYER::SET_AUTO_GIVE_PARACHUTE_WHEN_ENTER_PLANE(Player player, BOOL toggle) // 0x9F343285A00B4BB6 0xA97C2059 b323</code>
 +
 +==== SET_AUTO_GIVE_SCUBA_GEAR_WHEN_EXIT_VEHICLE ====
 +<code cpp>void PLAYER::SET_AUTO_GIVE_SCUBA_GEAR_WHEN_EXIT_VEHICLE(Player player, BOOL toggle) // 0xD2B315B6689D537D 0xA25D767E b323</code>
 +
 +==== SET_PLAYER_STEALTH_PERCEPTION_MODIFIER ====
 +<code cpp>void PLAYER::SET_PLAYER_STEALTH_PERCEPTION_MODIFIER(Player player, float value) // 0x4E9021C1FCDD507A 0x3D26105F b323</code>
 +
 +==== _0x690A61A6D13583F6 ====
 +<code cpp>BOOL PLAYER::_0x690A61A6D13583F6(Player player) // 0x690A61A6D13583F6 0x1D371529 b323</code>
 +
 +<code>IS_*</code>
 +==== _0x9EDD76E87D5D51BA ====
 +<code cpp>void PLAYER::_0x9EDD76E87D5D51BA(Player player) // 0x9EDD76E87D5D51BA 0xE30A64DC b323</code>
 +
 +==== SET_PLAYER_SIMULATE_AIMING ====
 +<code cpp>void PLAYER::SET_PLAYER_SIMULATE_AIMING(Player player, BOOL toggle) // 0xC54C95DA968EC5B5 0xF1E0CAFC b323</code>
 +
 +==== SET_PLAYER_CLOTH_PIN_FRAMES ====
 +<code cpp>void PLAYER::SET_PLAYER_CLOTH_PIN_FRAMES(Player player, int p1) // 0x749FADDF97DFE930 0xF7A0F00F b323</code>
 +
 +==== SET_PLAYER_CLOTH_PACKAGE_INDEX ====
 +<code cpp>void PLAYER::SET_PLAYER_CLOTH_PACKAGE_INDEX(int index) // 0x9F7BBA2EA6372500 0xB8209F16 b323</code>
 +
 +<code>Every occurrence was either 0 or 2.</code>
 +==== SET_PLAYER_CLOTH_LOCK_COUNTER ====
 +<code cpp>void PLAYER::SET_PLAYER_CLOTH_LOCK_COUNTER(int value) // 0x14D913B777DFF5DA 0x8D9FD4D1 b323</code>
 +
 +<code>6 matches across 4 scripts. 5 occurrences were 240. The other was 255.</code>
 +==== PLAYER_ATTACH_VIRTUAL_BOUND ====
 +<code cpp>void PLAYER::PLAYER_ATTACH_VIRTUAL_BOUND(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7) // 0xED51733DC73AED51 0xECD12E60 b323</code>
 +
 +<code>Only 1 match. ob_sofa_michael.
 +
 +PLAYER::PLAYER_ATTACH_VIRTUAL_BOUND(-804.5928f, 173.1801f, 71.68436f, 0f, 0f, 0.590625f, 1f, 0.7f);1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;</code>
 +==== PLAYER_DETACH_VIRTUAL_BOUND ====
 +<code cpp>void PLAYER::PLAYER_DETACH_VIRTUAL_BOUND() // 0x1DD5897E2FA6E7C9 0x96100EA4 b323</code>
 +
 +<code>1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;</code>
 +==== HAS_PLAYER_BEEN_SPOTTED_IN_STOLEN_VEHICLE ====
 +<code cpp>BOOL PLAYER::HAS_PLAYER_BEEN_SPOTTED_IN_STOLEN_VEHICLE(Player player) // 0xD705740BB0A1CF4C 0x4A01B76A b323</code>
 +
 +==== IS_PLAYER_BATTLE_AWARE ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_BATTLE_AWARE(Player player) // 0x38D28DA81E4E9BF9 0x013B4F72 b323</code>
 +
 +<code>Returns true if an unk value is greater than 0.0f</code>
 +==== _0xBC0753C9CA14B506 ====
 +<code cpp>BOOL PLAYER::_0xBC0753C9CA14B506(Player player, int p1, BOOL p2) // 0xBC0753C9CA14B506 0x9DF75B2A b323</code>
 +
 +<code>var num3 = PLAYER::GET_PLAYER_PED(l_2171); // proof l_2171 is a player
 +
 +var num17 = PLAYER::0x9DF75B2A(l_2171, 100, 0); // l_2171
 +
 +.ysc:
 +    if (PLAYER::GET_PLAYER_WANTED_LEVEL(l_6EF) < v_4) { // l_6EF is a player
 +        PLAYER::SET_PLAYER_WANTED_LEVEL(l_6EF, v_4, 0); // l_6EF
 +        PLAYER::SET_PLAYER_WANTED_LEVEL_NOW(l_6EF, 0); // l_6EF
 +    } else { 
 +        PLAYER::_4669B3ED80F24B4E(l_6EF); // l_6EF
 +        HUD::_BA8D65C1C65702E5(1);
 +        a_0 = 1;
 +    }
 +
 +        if (l_4B24[l_6F2/*156*/]._f8C != PLAYER::_BC0753C9CA14B506(l_6EF, 100, 0)) { // l_6EF
 +            l_4B24[l_6F2/*156*/]._f8C = PLAYER::_BC0753C9CA14B506(l_6EF, 100, 0); // l_6EF
 +        }
 +
 +Both was taken from fm_mission_controller
 +
 +GET_PLAYER_*</code>
 +==== EXTEND_WORLD_BOUNDARY_FOR_PLAYER ====
 +<code cpp>void PLAYER::EXTEND_WORLD_BOUNDARY_FOR_PLAYER(float x, float y, float z) // 0x5006D96C995A5827 0x64DDB07D b323</code>
 +
 +<code>Appears only 3 times in the scripts, more specifically in michael1.ysc
 +
 +-
 +This can be used to prevent dying if you are "out of the world"</code>
 +==== RESET_WORLD_BOUNDARY_FOR_PLAYER ====
 +<code cpp>void PLAYER::RESET_WORLD_BOUNDARY_FOR_PLAYER() // 0xDA1DF03D5A315F4E 0xA97C2F6C b323</code>
 +
 +==== IS_PLAYER_RIDING_TRAIN ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_RIDING_TRAIN(Player player) // 0x4EC12697209F2196 0x9765E71D b323</code>
 +
 +<code>Returns true if the player is riding a train.</code>
 +==== HAS_PLAYER_LEFT_THE_WORLD ====
 +<code cpp>BOOL PLAYER::HAS_PLAYER_LEFT_THE_WORLD(Player player) // 0xD55DDFB47991A294 0xFEA40B6C b323</code>
 +
 +==== SET_PLAYER_LEAVE_PED_BEHIND ====
 +<code cpp>void PLAYER::SET_PLAYER_LEAVE_PED_BEHIND(Player player, BOOL toggle) // 0xFF300C7649724A0B 0xAD8383FA b323</code>
 +
 +==== SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE(Player player, int p1, Any p2, Any p3, BOOL p4) // 0xD9284A8C0D48352C 0x9254249D b323</code>
 +
 +<code>p1 was always 5.
 +p4 was always false.</code>
 +==== CLEAR_PLAYER_PARACHUTE_VARIATION_OVERRIDE ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_PARACHUTE_VARIATION_OVERRIDE(Player player) // 0x0F4CC924CF8C7B21 0xFD60F5AB b323</code>
 +
 +==== SET_PLAYER_PARACHUTE_MODEL_OVERRIDE ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_MODEL_OVERRIDE(Player player, Hash model) // 0x977DB4641F6FC3DB 0x5D382498 b323</code>
 +
 +<code>example:
 +
 +PLAYER::SET_PLAYER_PARACHUTE_MODEL_OVERRIDE(PLAYER::PLAYER_ID(), 0x73268708);</code>
 +==== CLEAR_PLAYER_PARACHUTE_MODEL_OVERRIDE ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_PARACHUTE_MODEL_OVERRIDE(Player player) // 0x8753997EB5F6EE3F 0x6FF034BB b323</code>
 +
 +==== SET_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE ====
 +<code cpp>void PLAYER::SET_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE(Player player, Hash model) // 0xDC80A4C2F18A2B64 0xA877FF5E b323</code>
 +
 +==== CLEAR_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE ====
 +<code cpp>void PLAYER::CLEAR_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE(Player player) // 0x10C54E4389C12B42 0xBB62AAC5 b323</code>
 +
 +==== DISABLE_PLAYER_VEHICLE_REWARDS ====
 +<code cpp>void PLAYER::DISABLE_PLAYER_VEHICLE_REWARDS(Player player) // 0xC142BE3BB9CE125F 0x8C6E611D b323</code>
 +
 +==== _0x2F7CEB6520288061 ====
 +<code cpp>void PLAYER::_0x2F7CEB6520288061(BOOL p0) // 0x2F7CEB6520288061 0x2849D4B2 b323</code>
 +
 +<code>Used with radios:
 +
 +void sub_cf383(auto _a0) {
 +    if ((a_0)==1) {
 +        if (MISC::IS_BIT_SET((g_240005._f1), 3)) {
 +            PLAYER::_2F7CEB6520288061(0);
 +            AUDIO::SET_AUDIO_FLAG("AllowRadioDuringSwitch", 0);
 +            AUDIO::SET_MOBILE_PHONE_RADIO_STATE(0);
 +            AUDIO::SET_AUDIO_FLAG("MobileRadioInGame", 0);
 +        }
 +        sub_cf3f6(1);
 +    } else { 
 +        if (MISC::IS_BIT_SET((g_240005._f1), 3)) {
 +            PLAYER::_2F7CEB6520288061(1);
 +            AUDIO::SET_AUDIO_FLAG("AllowRadioDuringSwitch", 1);
 +            AUDIO::SET_MOBILE_PHONE_RADIO_STATE(1);
 +            AUDIO::SET_AUDIO_FLAG("MobileRadioInGame", 1);
 +        }
 +        sub_cf3f6(0);
 +    }
 +}
 +
 +SET_PLAYER_S*</code>
 +==== SET_PLAYER_BLUETOOTH_STATE ====
 +<code cpp>void PLAYER::SET_PLAYER_BLUETOOTH_STATE(Player player, BOOL state) // 0x5DC40A8869C22141 0x7A6B0EF8 b323</code>
 +
 +==== IS_PLAYER_BLUETOOTH_ENABLE ====
 +<code cpp>BOOL PLAYER::IS_PLAYER_BLUETOOTH_ENABLE(Player player) // 0x65FAEE425DE637B0 0xEA01BD4A b323</code>
 +
 +==== _0x5501B7A5CDB79D37 ====
 +<code cpp>void PLAYER::_0x5501B7A5CDB79D37(Player player) // 0x5501B7A5CDB79D37  b323</code>
 +
 +<code>DISABLE_*</code>
 +==== GET_PLAYER_FAKE_WANTED_LEVEL ====
 +<code cpp>int PLAYER::GET_PLAYER_FAKE_WANTED_LEVEL(Player player) // 0x56105E599CAB0EFA 0x0098D244 b323</code>
 +
 +==== _0x55FCC0C390620314 ====
 +<code cpp>void PLAYER::_0x55FCC0C390620314(Any p0, Any p1, Any p2) // 0x55FCC0C390620314  b573</code>
 +
 +==== _0x2382AB11450AE7BA ====
 +<code cpp>void PLAYER::_0x2382AB11450AE7BA(Any p0, Any p1) // 0x2382AB11450AE7BA  b877</code>
 +
 +==== _0x6E4361FF3E8CD7CA ====
 +<code cpp>Any PLAYER::_0x6E4361FF3E8CD7CA(Any p0) // 0x6E4361FF3E8CD7CA  b1011</code>
 +
 +==== _0x237440E46D918649 ====
 +<code cpp>void PLAYER::_0x237440E46D918649(Any p0) // 0x237440E46D918649  b1290</code>
 +
 +<code>Unsets playerPed+330 if the current weapon has certain flags.</code>
 +==== _SET_PLAYER_HOMING_ROCKET_DISABLED ====
 +<code cpp>void PLAYER::_SET_PLAYER_HOMING_ROCKET_DISABLED(Any p0, Any p1) // 0xEE4EBDD2593BA844  b1180</code>
 +
 +==== _0x9097EB6D4BB9A12A ====
 +<code cpp>void PLAYER::_0x9097EB6D4BB9A12A(Player player, Entity entity) // 0x9097EB6D4BB9A12A  b1868</code>
 +
 +<code>ADD_*</code>
 +==== _0x9F260BFB59ADBCA3 ====
 +<code cpp>void PLAYER::_0x9F260BFB59ADBCA3(Player player, Entity entity) // 0x9F260BFB59ADBCA3  b1868</code>
 +
 +<code>REMOVE_*</code>
 +==== _0x7BAE68775557AE0B ====
 +<code cpp>void PLAYER::_0x7BAE68775557AE0B(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x7BAE68775557AE0B  b1290</code>
 +
 +==== _0x7148E0F43D11F0D9 ====
 +<code cpp>void PLAYER::_0x7148E0F43D11F0D9() // 0x7148E0F43D11F0D9  b1604</code>
 +
 +<code>Resets values set by 0x70A382ADEC069DD3
 +_RESET_VOIP_*</code>
 +==== _0x70A382ADEC069DD3 ====
 +<code cpp>void PLAYER::_0x70A382ADEC069DD3(float coordX, float coordY, float coordZ) // 0x70A382ADEC069DD3  b1604</code>
 +
 +<code>Might be voip related
 +_SET_VOIP_*</code>
 +
 +===== RECORDING =====
 +==== _0x48621C9FCA3EBD28 ====
 +<code cpp>void RECORDING::_0x48621C9FCA3EBD28(int p0) // 0x48621C9FCA3EBD28  b323</code>
 +
 +==== _0x81CBAE94390F9F89 ====
 +<code cpp>void RECORDING::_0x81CBAE94390F9F89() // 0x81CBAE94390F9F89  b323</code>
 +
 +==== _0x13B350B8AD0EEE10 ====
 +<code cpp>void RECORDING::_0x13B350B8AD0EEE10() // 0x13B350B8AD0EEE10  b323</code>
 +
 +==== _0x293220DA1B46CEBC ====
 +<code cpp>void RECORDING::_0x293220DA1B46CEBC(float p0, float p1, int p2) // 0x293220DA1B46CEBC  b323</code>
 +
 +==== _0x208784099002BC30 ====
 +<code cpp>void RECORDING::_0x208784099002BC30(const char* missionNameLabel, Any p1) // 0x208784099002BC30  b323</code>
 +
 +<code>-This function appears to be deprecated/ unused. Tracing the call internally leads to a _nullsub -
 +
 +first one seems to be a string of a mission name, second one seems to be a bool/toggle
 +
 +p1 was always 0.
 +</code>
 +==== _STOP_RECORDING_THIS_FRAME ====
 +<code cpp>void RECORDING::_STOP_RECORDING_THIS_FRAME() // 0xEB2D525B57F42B40  b323</code>
 +
 +<code>This disable the recording feature and has to be called every frame.</code>
 +==== _0xF854439EFBB3B583 ====
 +<code cpp>void RECORDING::_0xF854439EFBB3B583() // 0xF854439EFBB3B583  b323</code>
 +
 +==== _DISABLE_ROCKSTAR_EDITOR_CAMERA_CHANGES ====
 +<code cpp>void RECORDING::_DISABLE_ROCKSTAR_EDITOR_CAMERA_CHANGES() // 0xAF66DCEE6609B148  b323</code>
 +
 +<code>This will disable the ability to make camera changes in R* Editor.
 +
 +RE*</code>
 +==== _0x66972397E0757E7A ====
 +<code cpp>void RECORDING::_0x66972397E0757E7A(int p0, int p1, int p2) // 0x66972397E0757E7A  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _START_RECORDING ====
 +<code cpp>void RECORDING::_START_RECORDING(int mode) // 0xC3AC2FFF9612AC81  b323</code>
 +
 +<code>Starts recording a replay.
 +If mode is 0, turns on action replay.
 +If mode is 1, starts recording.
 +If already recording a replay, does nothing.</code>
 +==== _STOP_RECORDING_AND_SAVE_CLIP ====
 +<code cpp>void RECORDING::_STOP_RECORDING_AND_SAVE_CLIP() // 0x071A5197D6AFC8B3  b323</code>
 +
 +<code>Stops recording and saves the recorded clip.</code>
 +==== _STOP_RECORDING_AND_DISCARD_CLIP ====
 +<code cpp>void RECORDING::_STOP_RECORDING_AND_DISCARD_CLIP() // 0x88BB3507ED41A240  b323</code>
 +
 +<code>Stops recording and discards the recorded clip.</code>
 +==== _SAVE_RECORDING_CLIP ====
 +<code cpp>BOOL RECORDING::_SAVE_RECORDING_CLIP() // 0x644546EC5287471B  b323</code>
 +
 +==== _IS_RECORDING ====
 +<code cpp>BOOL RECORDING::_IS_RECORDING() // 0x1897CA71995A90B4  b323</code>
 +
 +<code>Checks if you're recording, returns TRUE when you start recording (F1) or turn on action replay (F2)
 +
 +mov al, cs:g_bIsRecordingGameplay // byte_141DD0CD0 in b944
 +retn</code>
 +==== _0xDF4B952F7D381B95 ====
 +<code cpp>Any RECORDING::_0xDF4B952F7D381B95() // 0xDF4B952F7D381B95  b323</code>
 +
 +==== _0x4282E08174868BE3 ====
 +<code cpp>Any RECORDING::_0x4282E08174868BE3() // 0x4282E08174868BE3  b323</code>
 +
 +==== _0x33D47E85B476ABCD ====
 +<code cpp>BOOL RECORDING::_0x33D47E85B476ABCD(BOOL p0) // 0x33D47E85B476ABCD  b323</code>
 +
 +
 +===== REPLAY =====
 +==== _0x7E2BD3EF6C205F09 ====
 +<code cpp>void REPLAY::_0x7E2BD3EF6C205F09(const char* p0, BOOL p1) // 0x7E2BD3EF6C205F09  b323</code>
 +
 +<code>Does nothing (it's a nullsub).</code>
 +==== _IS_INTERIOR_RENDERING_DISABLED ====
 +<code cpp>BOOL REPLAY::_IS_INTERIOR_RENDERING_DISABLED() // 0x95AB8B5C992C7B58  b323</code>
 +
 +<code>Returns a bool if interior rendering is disabled, if yes, all "normal" rendered interiors are invisible</code>
 +==== _0x5AD3932DAEB1E5D3 ====
 +<code cpp>void REPLAY::_0x5AD3932DAEB1E5D3() // 0x5AD3932DAEB1E5D3  b323</code>
 +
 +<code>Disables some other rendering (internal)</code>
 +==== _0xE058175F8EAFE79A ====
 +<code cpp>void REPLAY::_0xE058175F8EAFE79A(BOOL p0) // 0xE058175F8EAFE79A  b323</code>
 +
 +==== _RESET_EDITOR_VALUES ====
 +<code cpp>void REPLAY::_RESET_EDITOR_VALUES() // 0x3353D13F09307691  b323</code>
 +
 +<code>Sets (almost, not sure) all Rockstar Editor values (bIsRecording etc) to 0.</code>
 +==== _ACTIVATE_ROCKSTAR_EDITOR ====
 +<code cpp>void REPLAY::_ACTIVATE_ROCKSTAR_EDITOR() // 0x49DA8145672B2725  b323</code>
 +
 +<code>Please note that you will need to call DO_SCREEN_FADE_IN after exiting the Rockstar Editor when you call this.</code>
 +
 +===== SCRIPT =====
 +==== REQUEST_SCRIPT ====
 +<code cpp>void SCRIPT::REQUEST_SCRIPT(const char* scriptName) // 0x6EB5F71AA68F2E8E 0xE26B2666 b323</code>
 +
 +==== SET_SCRIPT_AS_NO_LONGER_NEEDED ====
 +<code cpp>void SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(const char* scriptName) // 0xC90D2DCACD56184C 0x6FCB7795 b323</code>
 +
 +==== HAS_SCRIPT_LOADED ====
 +<code cpp>BOOL SCRIPT::HAS_SCRIPT_LOADED(const char* scriptName) // 0xE6CC9F3BA0FB9EF1 0x5D67F751 b323</code>
 +
 +<code>Returns if a script has been loaded into the game. Used to see if a script was loaded after requesting.</code>
 +==== DOES_SCRIPT_EXIST ====
 +<code cpp>BOOL SCRIPT::DOES_SCRIPT_EXIST(const char* scriptName) // 0xFC04745FBE67C19A 0xDEAB87AB b323</code>
 +
 +==== REQUEST_SCRIPT_WITH_NAME_HASH ====
 +<code cpp>void SCRIPT::REQUEST_SCRIPT_WITH_NAME_HASH(Hash scriptHash) // 0xD62A67D26D9653E6 0x1C68D9DC b323</code>
 +
 +<code>formerly _REQUEST_STREAMED_SCRIPT</code>
 +==== SET_SCRIPT_WITH_NAME_HASH_AS_NO_LONGER_NEEDED ====
 +<code cpp>void SCRIPT::SET_SCRIPT_WITH_NAME_HASH_AS_NO_LONGER_NEEDED(Hash scriptHash) // 0xC5BC038960E9DB27 0x96C26F66 b323</code>
 +
 +==== HAS_SCRIPT_WITH_NAME_HASH_LOADED ====
 +<code cpp>BOOL SCRIPT::HAS_SCRIPT_WITH_NAME_HASH_LOADED(Hash scriptHash) // 0x5F0F0C783EB16C04 0x06674818 b323</code>
 +
 +==== DOES_SCRIPT_WITH_NAME_HASH_EXIST ====
 +<code cpp>BOOL SCRIPT::DOES_SCRIPT_WITH_NAME_HASH_EXIST(Hash scriptHash) // 0xF86AA3C56BA31381 0x19EAE282 b323</code>
 +
 +==== TERMINATE_THREAD ====
 +<code cpp>void SCRIPT::TERMINATE_THREAD(int threadId) // 0xC8B189ED9138BCD4 0x253FD520 b323</code>
 +
 +==== IS_THREAD_ACTIVE ====
 +<code cpp>BOOL SCRIPT::IS_THREAD_ACTIVE(int threadId) // 0x46E9AE36D8FA6417 0x78D7A5A0 b323</code>
 +
 +==== _GET_NAME_OF_THREAD ====
 +<code cpp>const char* SCRIPT::_GET_NAME_OF_THREAD(int threadId) // 0x05A42BA9FC8DA96B 0xBE7ACD89 b323</code>
 +
 +==== SCRIPT_THREAD_ITERATOR_RESET ====
 +<code cpp>void SCRIPT::SCRIPT_THREAD_ITERATOR_RESET() // 0xDADFADA5A20143A8 0xBB4E2F66 b323</code>
 +
 +<code>Starts a new iteration of the current threads.
 +Call this first, then SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID (0x30B4FA1C82DD4B9F)</code>
 +==== SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID ====
 +<code cpp>int SCRIPT::SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID() // 0x30B4FA1C82DD4B9F 0x1E28B28F b323</code>
 +
 +<code>If the function returns 0, the end of the iteration has been reached.</code>
 +==== GET_ID_OF_THIS_THREAD ====
 +<code cpp>int SCRIPT::GET_ID_OF_THIS_THREAD() // 0xC30338E8088E2E21 0xDE524830 b323</code>
 +
 +==== TERMINATE_THIS_THREAD ====
 +<code cpp>void SCRIPT::TERMINATE_THIS_THREAD() // 0x1090044AD1DA76FA 0x3CD9CBB7 b323</code>
 +
 +==== _GET_NUMBER_OF_REFERENCES_OF_SCRIPT_WITH_NAME_HASH ====
 +<code cpp>int SCRIPT::_GET_NUMBER_OF_REFERENCES_OF_SCRIPT_WITH_NAME_HASH(Hash scriptHash) // 0x2C83A9DA6BFFC4F9 0x029D3841 b323</code>
 +
 +<code>Gets the number of instances of the specified script is currently running.
 +
 +Actually returns numRefs - 1.
 +if (program)
 + v3 = rage::scrProgram::GetNumRefs(program) - 1;
 +return v3;</code>
 +==== GET_THIS_SCRIPT_NAME ====
 +<code cpp>const char* SCRIPT::GET_THIS_SCRIPT_NAME() // 0x442E0A7EDE4A738A 0xA40FD5D9 b323</code>
 +
 +==== GET_HASH_OF_THIS_SCRIPT_NAME ====
 +<code cpp>Hash SCRIPT::GET_HASH_OF_THIS_SCRIPT_NAME() // 0x8A1C8B1738FFE87E 0x2BEE1F45 b323</code>
 +
 +==== GET_NUMBER_OF_EVENTS ====
 +<code cpp>int SCRIPT::GET_NUMBER_OF_EVENTS(int eventGroup) // 0x5F92A689A06620AA 0xA3525D60 b323</code>
 +
 +<code>eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)</code>
 +==== GET_EVENT_EXISTS ====
 +<code cpp>BOOL SCRIPT::GET_EVENT_EXISTS(int eventGroup, int eventIndex) // 0x936E6168A9BCEDB5 0xA1B447B5 b323</code>
 +
 +<code>eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)</code>
 +==== GET_EVENT_AT_INDEX ====
 +<code cpp>int SCRIPT::GET_EVENT_AT_INDEX(int eventGroup, int eventIndex) // 0xD8F66A3A60C62153 0xB49C1442 b323</code>
 +
 +<code>eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)</code>
 +==== GET_EVENT_DATA ====
 +<code cpp>BOOL SCRIPT::GET_EVENT_DATA(int eventGroup, int eventIndex, Any* eventData, int eventDataSize) // 0x2902843FCD2B2D79 0x4280F92F b323</code>
 +
 +<code>eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)
 +
 +Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).</code>
 +==== TRIGGER_SCRIPT_EVENT ====
 +<code cpp>void SCRIPT::TRIGGER_SCRIPT_EVENT(int eventGroup, Any* eventData, int eventDataSize, int playerBits) // 0x5AE99C571D5BBE5D 0x54763B35 b323</code>
 +
 +<code>eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)
 +
 +Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).
 +
 +playerBits (also known as playersToBroadcastTo) is a bitset that indicates which players this event should be sent to. In order to send the event to specific players only, use (1 << playerIndex). Set all bits if it should be broadcast to all players.</code>
 +==== SHUTDOWN_LOADING_SCREEN ====
 +<code cpp>void SCRIPT::SHUTDOWN_LOADING_SCREEN() // 0x078EBE9809CCD637 0xA2826D17 b323</code>
 +
 +==== SET_NO_LOADING_SCREEN ====
 +<code cpp>void SCRIPT::SET_NO_LOADING_SCREEN(BOOL toggle) // 0x5262CC1995D07E09 0xC8055034 b323</code>
 +
 +==== GET_NO_LOADING_SCREEN ====
 +<code cpp>BOOL SCRIPT::GET_NO_LOADING_SCREEN() // 0x18C1270EA7F199BC 0x27512BA0 b323</code>
 +
 +==== _0xB1577667C3708F9B ====
 +<code cpp>void SCRIPT::_0xB1577667C3708F9B() // 0xB1577667C3708F9B 0xB03BCCDF b323</code>
 +
 +==== _0x836B62713E0534CA ====
 +<code cpp>BOOL SCRIPT::_0x836B62713E0534CA() // 0x836B62713E0534CA  b323</code>
 +
 +<code>Returns true if bit 0 in GtaThread+0x154 is set.
 +
 +BG_*</code>
 +==== _0x760910B49D2B98EA ====
 +<code cpp>void SCRIPT::_0x760910B49D2B98EA() // 0x760910B49D2B98EA  b323</code>
 +
 +<code>Sets bit 1 in GtaThread+0x154
 +
 +BG_*</code>
 +==== BG_START_CONTEXT_HASH ====
 +<code cpp>void SCRIPT::BG_START_CONTEXT_HASH(Hash contextHash) // 0x75B18E49607874C7 0x67B23E17 b323</code>
 +
 +<code>Hashed version of 0x9D5A25BADB742ACD.</code>
 +==== BG_END_CONTEXT_HASH ====
 +<code cpp>void SCRIPT::BG_END_CONTEXT_HASH(Hash contextHash) // 0x107E5CC7CA942BC1 0x3D981EBF b323</code>
 +
 +<code>Hashed version of 0xDC2BACD920D0A0DD.</code>
 +==== BG_START_CONTEXT ====
 +<code cpp>void SCRIPT::BG_START_CONTEXT(const char* contextName) // 0x9D5A25BADB742ACD 0xF3F1D953 b323</code>
 +
 +<code>Inserts the given context into the background scripts context map.</code>
 +==== BG_END_CONTEXT ====
 +<code cpp>void SCRIPT::BG_END_CONTEXT(const char* contextName) // 0xDC2BACD920D0A0DD 0x11F38FB3 b323</code>
 +
 +<code>Deletes the given context from the background scripts context map.</code>
 +==== _0x0F6F1EBBC4E1D5E6 ====
 +<code cpp>BOOL SCRIPT::_0x0F6F1EBBC4E1D5E6(int scriptIndex, const char* p1) // 0x0F6F1EBBC4E1D5E6 0xF8E5F73A b323</code>
 +
 +<code>BG_*</code>
 +==== _0x22E21FBCFC88C149 ====
 +<code cpp>int SCRIPT::_0x22E21FBCFC88C149(int scriptIndex, const char* p1) // 0x22E21FBCFC88C149 0x682CB7E1 b323</code>
 +
 +<code>BG_*</code>
 +==== _0x829CD22E043A2577 ====
 +<code cpp>int SCRIPT::_0x829CD22E043A2577(Hash p0) // 0x829CD22E043A2577 0xC515E735 b323</code>
 +
 +<code>BG_*</code>
 +==== _TRIGGER_SCRIPT_EVENT_2 ====
 +<code cpp>void SCRIPT::_TRIGGER_SCRIPT_EVENT_2(int eventGroup, Any* eventData, int eventDataSize, int playerBits) // 0xA40CC53DF8E50837  b1103</code>
 +
 +<code>See TRIGGER_SCRIPT_EVENT</code>
 +
 +===== SHAPETEST =====
 +==== START_SHAPE_TEST_LOS_PROBE ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_LOS_PROBE(float x1, float y1, float z1, float x2, float y2, float z2, int flags, Entity entity, int p8) // 0x7EE9F5D83DD4F90E 0xEFAF4BA6 b323</code>
 +
 +<code>Asynchronously starts a line-of-sight (raycast) world probe shape test.
 +
 +Use the handle with 0x3D87450E15D98694 or 0x65287525D951F6BE until it returns 0 or 2.
 +
 +p8 is a bit mask with bits 1, 2 and/or 4, relating to collider types; 4 should usually be used.</code>
 +==== START_EXPENSIVE_SYNCHRONOUS_SHAPE_TEST_LOS_PROBE ====
 +<code cpp>int SHAPETEST::START_EXPENSIVE_SYNCHRONOUS_SHAPE_TEST_LOS_PROBE(float x1, float y1, float z1, float x2, float y2, float z2, int flags, Entity entity, int p8) // 0x377906D8A31E5586 0x8251485D b323</code>
 +
 +<code>Does the same as 0x7EE9F5D83DD4F90E, except blocking until the shape test completes.</code>
 +==== START_SHAPE_TEST_BOUNDING_BOX ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_BOUNDING_BOX(Entity entity, int flags1, int flags2) // 0x052837721A854EC7 0xCEEAD94B b323</code>
 +
 +==== START_SHAPE_TEST_BOX ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_BOX(float x, float y, float z, float x1, float y2, float z2, float rotX, float rotY, float rotZ, Any p9, int flags, Entity entity, Any p12) // 0xFE466162C4401D18 0x249BC876 b323</code>
 +
 +==== START_SHAPE_TEST_BOUND ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_BOUND(Entity entity, int flags1, int flags2) // 0x37181417CE7C8900 0x13BC46C0 b323</code>
 +
 +==== START_SHAPE_TEST_CAPSULE ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_CAPSULE(float x1, float y1, float z1, float x2, float y2, float z2, float radius, int flags, Entity entity, int p9) // 0x28579D1B8F8AAC80 0x591EA833 b323</code>
 +
 +<code>Raycast from point to point, where the ray has a radius. 
 +
 +flags:
 +vehicles=10
 +peds =12
 +
 +Iterating through flags yields many ped / vehicle/ object combinations
 +
 +p9 = 7, but no idea what it does
 +
 +Entity is an entity to ignore</code>
 +==== START_SHAPE_TEST_SWEPT_SPHERE ====
 +<code cpp>int SHAPETEST::START_SHAPE_TEST_SWEPT_SPHERE(float x1, float y1, float z1, float x2, float y2, float z2, float radius, int flags, Entity entity, Any p9) // 0xE6AC6C45FBE83004 0x4559460A b323</code>
 +
 +==== _START_SHAPE_TEST_SURROUNDING_COORDS ====
 +<code cpp>int SHAPETEST::_START_SHAPE_TEST_SURROUNDING_COORDS(Vector3* pVec1, Vector3* pVec2, int flag, Entity entity, int flag2) // 0xFF6BE494C7987F34  b323</code>
 +
 +<code>Actual name starts with START_SHAPE_TEST_??? and it returns a ShapeTest handle that can be used with GET_SHAPE_TEST_RESULT.
 +
 +In its only usage in game scripts its called with flag set to 511, entity to player_ped_id and flag2 set to 7</code>
 +==== GET_SHAPE_TEST_RESULT ====
 +<code cpp>int SHAPETEST::GET_SHAPE_TEST_RESULT(int shapeTestHandle, BOOL* hit, Vector3* endCoords, Vector3* surfaceNormal, Entity* entityHit) // 0x3D87450E15D98694 0xF3C2875A b323</code>
 +
 +<code>Returns the result of a shape test: 0 if the handle is invalid, 1 if the shape test is still pending, or 2 if the shape test has completed, and the handle should be invalidated.
 +
 +When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.</code>
 +==== GET_SHAPE_TEST_RESULT_INCLUDING_MATERIAL ====
 +<code cpp>int SHAPETEST::GET_SHAPE_TEST_RESULT_INCLUDING_MATERIAL(int shapeTestHandle, BOOL* hit, Vector3* endCoords, Vector3* surfaceNormal, Hash* materialHash, Entity* entityHit) // 0x65287525D951F6BE 0x4301E10C b323</code>
 +
 +<code>Returns the result of a shape test, also returning the material of any touched surface.
 +
 +When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.
 +
 +Unless the return value is 2, the other return values are undefined.</code>
 +==== RELEASE_SCRIPT_GUID_FROM_ENTITY ====
 +<code cpp>void SHAPETEST::RELEASE_SCRIPT_GUID_FROM_ENTITY(Entity entityHit) // 0x2B3334BCA57CD799 0xEC2AAF06 b323</code>
 +
 +<code>Invalidates the entity handle passed by removing the fwScriptGuid from the entity. This should be used when receiving an ambient entity from shape testing natives, but can also be used for other natives returning an 'irrelevant' entity handle.</code>
 +
 +===== SOCIALCLUB =====
 +==== SC_INBOX_GET_TOTAL_NUM_MESSAGES ====
 +<code cpp>int SOCIALCLUB::SC_INBOX_GET_TOTAL_NUM_MESSAGES() // 0x03A93FF1A2CA0864 0x6BE5DF29 b323</code>
 +
 +==== _SC_INBOX_MESSAGE_INIT ====
 +<code cpp>Hash SOCIALCLUB::_SC_INBOX_MESSAGE_INIT(int p0) // 0xBB8EA16ECBC976C4 0x5ECF955D b323</code>
 +
 +==== _IS_SC_INBOX_VALID ====
 +<code cpp>BOOL SOCIALCLUB::_IS_SC_INBOX_VALID(int p0) // 0x93028F1DB42BFD08 0xD1ED1D48 b323</code>
 +
 +==== _SC_INBOX_MESSAGE_POP ====
 +<code cpp>BOOL SOCIALCLUB::_SC_INBOX_MESSAGE_POP(int p0) // 0x2C015348CF19CA1D 0x19EE0CCB b323</code>
 +
 +==== SC_INBOX_MESSAGE_GET_DATA_INT ====
 +<code cpp>BOOL SOCIALCLUB::SC_INBOX_MESSAGE_GET_DATA_INT(int p0, const char* context, int* out) // 0xA00EFE4082C4056E 0x88068C7C b323</code>
 +
 +==== _SC_INBOX_MESSAGE_GET_DATA_BOOL ====
 +<code cpp>BOOL SOCIALCLUB::_SC_INBOX_MESSAGE_GET_DATA_BOOL(int p0, const char* p1) // 0xFFE5C16F402D851D  b323</code>
 +
 +==== SC_INBOX_MESSAGE_GET_DATA_STRING ====
 +<code cpp>BOOL SOCIALCLUB::SC_INBOX_MESSAGE_GET_DATA_STRING(int p0, const char* context, char* out) // 0x7572EF42FC6A9B6D 0x15607620 b323</code>
 +
 +==== SC_INBOX_MESSAGE_DO_APPLY ====
 +<code cpp>BOOL SOCIALCLUB::SC_INBOX_MESSAGE_DO_APPLY(int p0) // 0x9A2C8064B6C1E41A 0xEBE420A4 b323</code>
 +
 +==== _SC_INBOX_MESSAGE_GET_STRING ====
 +<code cpp>const char* SOCIALCLUB::_SC_INBOX_MESSAGE_GET_STRING(int p0) // 0xF3E31D16CBDCB304 0x2C959AF9 b323</code>
 +
 +==== _SC_INBOX_MESSAGE_PUSH_GAMER_TO_EVENT_RECIP_LIST ====
 +<code cpp>void SOCIALCLUB::_SC_INBOX_MESSAGE_PUSH_GAMER_TO_EVENT_RECIP_LIST(int* networkHandle) // 0xDA024BDBD600F44A 0x0B9A3512 b323</code>
 +
 +==== _SC_INBOX_MESSAGE_SEND_UGC_STAT_UPDATE_EVENT ====
 +<code cpp>void SOCIALCLUB::_SC_INBOX_MESSAGE_SEND_UGC_STAT_UPDATE_EVENT(Any* data) // 0xA68D3D229F4F3B06 0x75324674 b323</code>
 +
 +==== SC_INBOX_MESSAGE_GET_UGCDATA ====
 +<code cpp>BOOL SOCIALCLUB::SC_INBOX_MESSAGE_GET_UGCDATA(Any p0, Any* p1) // 0x69D82604A1A5A254 0x88CA3BFC b323</code>
 +
 +==== _SC_INBOX_MESSAGE_SEND_BOUNTY_PRESENCE_EVENT ====
 +<code cpp>BOOL SOCIALCLUB::_SC_INBOX_MESSAGE_SEND_BOUNTY_PRESENCE_EVENT(Any* data) // 0x6AFD2CD753FEEF83 0x628F489B b323</code>
 +
 +==== _SC_INBOX_MESSAGE_GET_BOUNTY_DATA ====
 +<code cpp>BOOL SOCIALCLUB::_SC_INBOX_MESSAGE_GET_BOUNTY_DATA(int index, Any* outData) // 0x87E0052F08BD64E6 0xAB3346B5 b323</code>
 +
 +==== _SC_INBOX_GET_EMAILS ====
 +<code cpp>void SOCIALCLUB::_SC_INBOX_GET_EMAILS(int offset, int limit) // 0x040ADDCBAFA1018A  b323</code>
 +
 +==== _0x16DA8172459434AA ====
 +<code cpp>Any SOCIALCLUB::_0x16DA8172459434AA() // 0x16DA8172459434AA  b323</code>
 +
 +==== _0x7DB18CA8CAD5B098 ====
 +<code cpp>Any SOCIALCLUB::_0x7DB18CA8CAD5B098() // 0x7DB18CA8CAD5B098  b505</code>
 +
 +==== _0x4737980E8A283806 ====
 +<code cpp>BOOL SOCIALCLUB::_0x4737980E8A283806(int p0, Any* p1) // 0x4737980E8A283806  b323</code>
 +
 +==== _0x44ACA259D67651DB ====
 +<code cpp>void SOCIALCLUB::_0x44ACA259D67651DB(Any* p0, Any p1) // 0x44ACA259D67651DB  b323</code>
 +
 +==== SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST ====
 +<code cpp>void SOCIALCLUB::SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST(int* networkHandle) // 0x2330C12A7A605D16 0x9A703A2B b323</code>
 +
 +==== SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST ====
 +<code cpp>void SOCIALCLUB::SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST() // 0x55DF6DB45179236E 0xD094F11A b323</code>
 +
 +==== _0x116FB94DC4B79F17 ====
 +<code cpp>void SOCIALCLUB::_0x116FB94DC4B79F17(const char* p0) // 0x116FB94DC4B79F17 0xAF3C081B b323</code>
 +
 +==== _0x07DBD622D9533857 ====
 +<code cpp>Any SOCIALCLUB::_0x07DBD622D9533857(Any p0) // 0x07DBD622D9533857  b505</code>
 +
 +==== _SET_HANDLE_ROCKSTAR_MESSAGE_VIA_SCRIPT ====
 +<code cpp>void SOCIALCLUB::_SET_HANDLE_ROCKSTAR_MESSAGE_VIA_SCRIPT(BOOL toggle) // 0xBFA0A56A817C6C7D 0x2FB9F53C b323</code>
 +
 +==== _IS_ROCKSTAR_MESSAGE_READY_FOR_SCRIPT ====
 +<code cpp>BOOL SOCIALCLUB::_IS_ROCKSTAR_MESSAGE_READY_FOR_SCRIPT() // 0xBC1CC91205EC8D6E 0x6C5738AB b323</code>
 +
 +==== _ROCKSTAR_MESSAGE_GET_STRING ====
 +<code cpp>const char* SOCIALCLUB::_ROCKSTAR_MESSAGE_GET_STRING() // 0xDF649C4E9AFDD788 0x468668F0 b323</code>
 +
 +==== SC_PRESENCE_ATTR_SET_INT ====
 +<code cpp>BOOL SOCIALCLUB::SC_PRESENCE_ATTR_SET_INT(Hash attrHash, int value) // 0x1F1E9682483697C7 0x90C74343 b323</code>
 +
 +==== SC_PRESENCE_ATTR_SET_FLOAT ====
 +<code cpp>BOOL SOCIALCLUB::SC_PRESENCE_ATTR_SET_FLOAT(Hash attrHash, float value) // 0xC4C4575F62534A24 0x94BF0D35 b323</code>
 +
 +==== SC_PRESENCE_ATTR_SET_STRING ====
 +<code cpp>BOOL SOCIALCLUB::SC_PRESENCE_ATTR_SET_STRING(Hash attrHash, const char* value) // 0x287F1F75D2803595 0x3ACE6D6B b323</code>
 +
 +==== _0x487912FD248EFDDF ====
 +<code cpp>BOOL SOCIALCLUB::_0x487912FD248EFDDF(Any p0, float p1) // 0x487912FD248EFDDF 0x579B4510 b323</code>
 +
 +==== _0xC85A7127E7AD02AA ====
 +<code cpp>Any SOCIALCLUB::_0xC85A7127E7AD02AA() // 0xC85A7127E7AD02AA  b323</code>
 +
 +==== _0xA770C8EEC6FB2AC5 ====
 +<code cpp>Any SOCIALCLUB::_0xA770C8EEC6FB2AC5() // 0xA770C8EEC6FB2AC5  b323</code>
 +
 +==== _SC_GET_IS_PROFILE_ATTRIBUTE_SET ====
 +<code cpp>BOOL SOCIALCLUB::_SC_GET_IS_PROFILE_ATTRIBUTE_SET(const char* name) // 0x8416FE4E4629D7D7 0xDF45B2A7 b323</code>
 +
 +<code>sfink: from scripts:
 +func_720(socialclub::_0x8416FE4E4629D7D7("bIgnoreCheaterOverride"));
 +func_719(socialclub::_0x8416FE4E4629D7D7("bIgnoreBadSportOverride"));
 +</code>
 +==== _0x7FFCBFEE44ECFABF ====
 +<code cpp>Any SOCIALCLUB::_0x7FFCBFEE44ECFABF() // 0x7FFCBFEE44ECFABF  b323</code>
 +
 +==== _0x2D874D4AE612A65F ====
 +<code cpp>Any SOCIALCLUB::_0x2D874D4AE612A65F() // 0x2D874D4AE612A65F  b323</code>
 +
 +==== SC_PROFANITY_CHECK_STRING ====
 +<code cpp>BOOL SOCIALCLUB::SC_PROFANITY_CHECK_STRING(const char* string, int* token) // 0x75632C5ECD7ED843 0xDF084A6B b323</code>
 +
 +<code>Starts a task to check an entered string for profanity on the ROS/Social Club services.
 +
 +See also: 1753344C770358AE, 82E4A58BABC15AE7.</code>
 +==== _SC_PROFANITY_CHECK_UGC_STRING ====
 +<code cpp>BOOL SOCIALCLUB::_SC_PROFANITY_CHECK_UGC_STRING(const char* string, int* token) // 0xEB2BF817463DFA28  b678</code>
 +
 +==== SC_PROFANITY_GET_CHECK_IS_VALID ====
 +<code cpp>BOOL SOCIALCLUB::SC_PROFANITY_GET_CHECK_IS_VALID(int token) // 0x1753344C770358AE 0xFFED3676 b323</code>
 +
 +==== SC_PROFANITY_GET_CHECK_IS_PENDING ====
 +<code cpp>BOOL SOCIALCLUB::SC_PROFANITY_GET_CHECK_IS_PENDING(int token) // 0x82E4A58BABC15AE7 0xA796D7A7 b323</code>
 +
 +==== SC_PROFANITY_GET_STRING_PASSED ====
 +<code cpp>BOOL SOCIALCLUB::SC_PROFANITY_GET_STRING_PASSED(int token) // 0x85535ACF97FC0969 0x09497F31 b323</code>
 +
 +==== SC_PROFANITY_GET_STRING_STATUS ====
 +<code cpp>int SOCIALCLUB::SC_PROFANITY_GET_STRING_STATUS(int token) // 0x930DE22F07B1CCE3 0x4D8A6521 b323</code>
 +
 +==== _0xF6BAAAF762E1BF40 ====
 +<code cpp>BOOL SOCIALCLUB::_0xF6BAAAF762E1BF40(const char* p0, int* p1) // 0xF6BAAAF762E1BF40 0x7AA36406 b323</code>
 +
 +==== _0xF22CA0FD74B80E7A ====
 +<code cpp>BOOL SOCIALCLUB::_0xF22CA0FD74B80E7A(Any p0) // 0xF22CA0FD74B80E7A 0xF379DCE4 b323</code>
 +
 +==== _0x9237E334F6E43156 ====
 +<code cpp>Any SOCIALCLUB::_0x9237E334F6E43156(Any p0) // 0x9237E334F6E43156 0x65D84665 b323</code>
 +
 +==== _0x700569DBA175A77C ====
 +<code cpp>Any SOCIALCLUB::_0x700569DBA175A77C(Any p0) // 0x700569DBA175A77C  b323</code>
 +
 +==== _0x1D4446A62D35B0D0 ====
 +<code cpp>Any SOCIALCLUB::_0x1D4446A62D35B0D0(Any p0, Any p1) // 0x1D4446A62D35B0D0  b323</code>
 +
 +==== _0x2E89990DDFF670C3 ====
 +<code cpp>Any SOCIALCLUB::_0x2E89990DDFF670C3(Any p0, Any p1) // 0x2E89990DDFF670C3  b323</code>
 +
 +==== _0xD0EE05FE193646EA ====
 +<code cpp>BOOL SOCIALCLUB::_0xD0EE05FE193646EA(Any* p0, Any* p1, Any* p2) // 0xD0EE05FE193646EA  b323</code>
 +
 +==== _0x1989C6E6F67E76A8 ====
 +<code cpp>BOOL SOCIALCLUB::_0x1989C6E6F67E76A8(Any* p0, Any* p1, Any* p2) // 0x1989C6E6F67E76A8  b323</code>
 +
 +==== _0x07C61676E5BB52CD ====
 +<code cpp>Any SOCIALCLUB::_0x07C61676E5BB52CD(Any p0) // 0x07C61676E5BB52CD  b323</code>
 +
 +==== _0x8147FFF6A718E1AD ====
 +<code cpp>Any SOCIALCLUB::_0x8147FFF6A718E1AD(Any p0) // 0x8147FFF6A718E1AD  b323</code>
 +
 +==== _0x0F73393BAC7E6730 ====
 +<code cpp>BOOL SOCIALCLUB::_0x0F73393BAC7E6730(Any* p0, int* p1) // 0x0F73393BAC7E6730  b323</code>
 +
 +==== _0xD302E99EDF0449CF ====
 +<code cpp>Any SOCIALCLUB::_0xD302E99EDF0449CF(Any p0) // 0xD302E99EDF0449CF  b323</code>
 +
 +==== _0x5C4EBFFA98BDB41C ====
 +<code cpp>Any SOCIALCLUB::_0x5C4EBFFA98BDB41C(Any p0) // 0x5C4EBFFA98BDB41C  b323</code>
 +
 +==== _0xFF8F3A92B75ED67A ====
 +<code cpp>Any SOCIALCLUB::_0xFF8F3A92B75ED67A() // 0xFF8F3A92B75ED67A 0xC96456BA b323</code>
 +
 +==== _0x4ED9C8D6DA297639 ====
 +<code cpp>Any SOCIALCLUB::_0x4ED9C8D6DA297639() // 0x4ED9C8D6DA297639 0xC5E08B66 b323</code>
 +
 +==== _0x710BCDA8071EDED1 ====
 +<code cpp>Any SOCIALCLUB::_0x710BCDA8071EDED1() // 0x710BCDA8071EDED1 0x04EE74A3 b323</code>
 +
 +==== _0x50A8A36201DBF83E ====
 +<code cpp>Any SOCIALCLUB::_0x50A8A36201DBF83E() // 0x50A8A36201DBF83E 0x8DA93C3D b323</code>
 +
 +==== _0x9DE5D2F723575ED0 ====
 +<code cpp>Any SOCIALCLUB::_0x9DE5D2F723575ED0() // 0x9DE5D2F723575ED0 0x37DD48B5 b323</code>
 +
 +==== _0xC2C97EA97711D1AE ====
 +<code cpp>Any SOCIALCLUB::_0xC2C97EA97711D1AE() // 0xC2C97EA97711D1AE 0xF929F61D b323</code>
 +
 +==== _0x450819D8CF90C416 ====
 +<code cpp>Any SOCIALCLUB::_0x450819D8CF90C416() // 0x450819D8CF90C416 0x0572EB5E b323</code>
 +
 +==== _0x4A7D6E727F941747 ====
 +<code cpp>Any SOCIALCLUB::_0x4A7D6E727F941747(Any* p0) // 0x4A7D6E727F941747 0x8E7AEEB7 b323</code>
 +
 +==== _0xE75A4A2E5E316D86 ====
 +<code cpp>Any SOCIALCLUB::_0xE75A4A2E5E316D86() // 0xE75A4A2E5E316D86 0x28C57FA0 b323</code>
 +
 +==== _0x2570E26BE63964E3 ====
 +<code cpp>Any SOCIALCLUB::_0x2570E26BE63964E3() // 0x2570E26BE63964E3 0x59394583 b323</code>
 +
 +==== _0x1D12A56FC95BE92E ====
 +<code cpp>Any SOCIALCLUB::_0x1D12A56FC95BE92E() // 0x1D12A56FC95BE92E 0x92452C0E b323</code>
 +
 +==== _0x33DF47CC0642061B ====
 +<code cpp>Any SOCIALCLUB::_0x33DF47CC0642061B() // 0x33DF47CC0642061B 0xBBA8D34D b323</code>
 +
 +==== _0xA468E0BE12B12C70 ====
 +<code cpp>Any SOCIALCLUB::_0xA468E0BE12B12C70() // 0xA468E0BE12B12C70 0xB21288FA b323</code>
 +
 +==== _0x8CC469AB4D349B7C ====
 +<code cpp>BOOL SOCIALCLUB::_0x8CC469AB4D349B7C(int p0, const char* p1, Any* p2) // 0x8CC469AB4D349B7C 0xE778B2A7 b323</code>
 +
 +==== _0xC5A35C73B68F3C49 ====
 +<code cpp>Any SOCIALCLUB::_0xC5A35C73B68F3C49() // 0xC5A35C73B68F3C49 0x7E24BD6E b323</code>
 +
 +==== _0x699E4A5C8C893A18 ====
 +<code cpp>BOOL SOCIALCLUB::_0x699E4A5C8C893A18(int p0, const char* p1, Any* p2) // 0x699E4A5C8C893A18 0xCE7D50A8 b323</code>
 +
 +==== _0x19853B5B17D77BCA ====
 +<code cpp>BOOL SOCIALCLUB::_0x19853B5B17D77BCA(Any p0, Any* p1) // 0x19853B5B17D77BCA 0xD26CCA46 b323</code>
 +
 +==== _0x6BFB12CE158E3DD4 ====
 +<code cpp>BOOL SOCIALCLUB::_0x6BFB12CE158E3DD4(Any p0) // 0x6BFB12CE158E3DD4 0x24D84334 b323</code>
 +
 +==== _0xFE4C1D0D3B9CC17E ====
 +<code cpp>BOOL SOCIALCLUB::_0xFE4C1D0D3B9CC17E(Any p0, Any p1) // 0xFE4C1D0D3B9CC17E 0x8A023024 b323</code>
 +
 +==== _0xD8122C407663B995 ====
 +<code cpp>Any SOCIALCLUB::_0xD8122C407663B995() // 0xD8122C407663B995 0x1C65B038 b323</code>
 +
 +==== _0x3001BEF2FECA3680 ====
 +<code cpp>BOOL SOCIALCLUB::_0x3001BEF2FECA3680() // 0x3001BEF2FECA3680 0x4D4C37B3 b323</code>
 +
 +==== _0x92DA6E70EF249BD1 ====
 +<code cpp>BOOL SOCIALCLUB::_0x92DA6E70EF249BD1(const char* p0, int* p1) // 0x92DA6E70EF249BD1 0xAED95A6F b323</code>
 +
 +==== _0x675721C9F644D161 ====
 +<code cpp>void SOCIALCLUB::_0x675721C9F644D161() // 0x675721C9F644D161 0x486867E6 b323</code>
 +
 +==== _0xE4F6E8D07A2F0F51 ====
 +<code cpp>Any SOCIALCLUB::_0xE4F6E8D07A2F0F51(Any p0) // 0xE4F6E8D07A2F0F51  b1290</code>
 +
 +==== _0x8A4416C0DB05FA66 ====
 +<code cpp>BOOL SOCIALCLUB::_0x8A4416C0DB05FA66(Any p0) // 0x8A4416C0DB05FA66  b1290</code>
 +
 +<code>Fills some 0x30 sized struct</code>
 +==== _0xEA95C0853A27888E ====
 +<code cpp>void SOCIALCLUB::_0xEA95C0853A27888E() // 0xEA95C0853A27888E  b1290</code>
 +
 +==== _SC_GET_NICKNAME ====
 +<code cpp>const char* SOCIALCLUB::_SC_GET_NICKNAME() // 0x198D161F458ECC7F  b323</code>
 +
 +<code>Returns the nickname of the logged-in Rockstar Social Club account.</code>
 +==== _0x225798743970412B ====
 +<code cpp>BOOL SOCIALCLUB::_0x225798743970412B(int* p0) // 0x225798743970412B  b323</code>
 +
 +==== _SC_GET_HAS_ACHIEVEMENT_BEEN_PASSED ====
 +<code cpp>BOOL SOCIALCLUB::_SC_GET_HAS_ACHIEVEMENT_BEEN_PASSED(int achievement) // 0x418DC16FAE452C1C  b323</code>
 +
 +<code>Same as HAS_ACHIEVEMENT_BEEN_PASSED</code>
 +
 +===== STATS =====
 +==== STAT_CLEAR_SLOT_FOR_RELOAD ====
 +<code cpp>Any STATS::STAT_CLEAR_SLOT_FOR_RELOAD(int statSlot) // 0xEB0A72181D4AA4AD 0x84BDD475 b323</code>
 +
 +<code>Example:
 +
 +for (v_2 = 0; v_2 <= 4; v_2 += 1) {
 +    STATS::STAT_CLEAR_SLOT_FOR_RELOAD(v_2);
 +}</code>
 +==== STAT_LOAD ====
 +<code cpp>BOOL STATS::STAT_LOAD(int p0) // 0xA651443F437B1CE6 0x9E5629F4 b323</code>
 +
 +==== STAT_SAVE ====
 +<code cpp>BOOL STATS::STAT_SAVE(int p0, BOOL p1, int p2, Any p3) // 0xE07BCA305B82D2FD 0xE10A7CA4 b323</code>
 +
 +==== _0x5688585E6D563CD8 ====
 +<code cpp>void STATS::_0x5688585E6D563CD8(int p0) // 0x5688585E6D563CD8 0xC62406A6 b323</code>
 +
 +<code>STAT_SET_*</code>
 +==== STAT_LOAD_PENDING ====
 +<code cpp>BOOL STATS::STAT_LOAD_PENDING(Any p0) // 0xA1750FFAFA181661 0x4E9AC983 b323</code>
 +
 +==== STAT_SAVE_PENDING ====
 +<code cpp>BOOL STATS::STAT_SAVE_PENDING() // 0x7D3A583856F2C5AC 0xC3FD3822 b323</code>
 +
 +==== STAT_SAVE_PENDING_OR_REQUESTED ====
 +<code cpp>BOOL STATS::STAT_SAVE_PENDING_OR_REQUESTED() // 0xBBB6AD006F1BBEA3 0xA3407CA3 b323</code>
 +
 +==== STAT_DELETE_SLOT ====
 +<code cpp>Any STATS::STAT_DELETE_SLOT(Any p0) // 0x49A49BED12794D70 0x2F171B94 b323</code>
 +
 +==== STAT_SLOT_IS_LOADED ====
 +<code cpp>BOOL STATS::STAT_SLOT_IS_LOADED(Any p0) // 0x0D0A9F0E7BD91E3C 0x7A299C13 b323</code>
 +
 +==== _0x7F2C4CDF2E82DF4C ====
 +<code cpp>BOOL STATS::_0x7F2C4CDF2E82DF4C(Any p0) // 0x7F2C4CDF2E82DF4C 0x0BF0F4B2 b323</code>
 +
 +==== _0xE496A53BA5F50A56 ====
 +<code cpp>Any STATS::_0xE496A53BA5F50A56(Any p0) // 0xE496A53BA5F50A56 0xCE6B62B5 b323</code>
 +
 +==== STAT_SET_BLOCK_SAVES ====
 +<code cpp>void STATS::STAT_SET_BLOCK_SAVES(BOOL toggle) // 0xF434A10BA01C37D0 0xCE7A2411 b323</code>
 +
 +==== _0x6A7F19756F1A9016 ====
 +<code cpp>BOOL STATS::_0x6A7F19756F1A9016() // 0x6A7F19756F1A9016  b2060</code>
 +
 +==== _0x7E6946F68A38B74F ====
 +<code cpp>BOOL STATS::_0x7E6946F68A38B74F(Any p0) // 0x7E6946F68A38B74F 0x22804C20 b323</code>
 +
 +==== _0xA8733668D1047B51 ====
 +<code cpp>void STATS::_0xA8733668D1047B51(Any p0) // 0xA8733668D1047B51 0x395D18B1 b323</code>
 +
 +==== _0xECB41AC6AB754401 ====
 +<code cpp>BOOL STATS::_0xECB41AC6AB754401() // 0xECB41AC6AB754401 0xED7000C8 b323</code>
 +
 +<code>STAT_LOAD_*</code>
 +==== _0x9B4BD21D69B1E609 ====
 +<code cpp>void STATS::_0x9B4BD21D69B1E609() // 0x9B4BD21D69B1E609  b323</code>
 +
 +==== _0xC0E0D686DDFC6EAE ====
 +<code cpp>Any STATS::_0xC0E0D686DDFC6EAE() // 0xC0E0D686DDFC6EAE 0x099FCC86 b323</code>
 +
 +==== STAT_SET_INT ====
 +<code cpp>BOOL STATS::STAT_SET_INT(Hash statName, int value, BOOL save) // 0xB3271D7AB655B441 0xC9CC1C5C b323</code>
 +
 +<code>Example:
 + STATS::STAT_SET_INT(MISC::GET_HASH_KEY("MPPLY_KILLS_PLAYERS"), 1337, true);</code>
 +==== STAT_SET_FLOAT ====
 +<code cpp>BOOL STATS::STAT_SET_FLOAT(Hash statName, float value, BOOL save) // 0x4851997F37FE9B3C 0x6CEA96F2 b323</code>
 +
 +<code>Example:
 + STATS::STAT_SET_FLOAT(MISC::GET_HASH_KEY("MP0_WEAPON_ACCURACY"), 66.6f, true);</code>
 +==== STAT_SET_BOOL ====
 +<code cpp>BOOL STATS::STAT_SET_BOOL(Hash statName, BOOL value, BOOL save) // 0x4B33C4243DE0C432 0x55D79DFB b323</code>
 +
 +<code>Example:
 + STATS::STAT_SET_BOOL(MISC::GET_HASH_KEY("MPPLY_MELEECHLENGECOMPLETED"), trur, true);</code>
 +==== STAT_SET_GXT_LABEL ====
 +<code cpp>BOOL STATS::STAT_SET_GXT_LABEL(Hash statName, const char* value, BOOL save) // 0x17695002FD8B2AE0 0xC1224AA7 b323</code>
 +
 +<code>The following values have been found in the decompiled scripts:
 +"RC_ABI1"
 +"RC_ABI2"
 +"RC_BA1"
 +"RC_BA2"
 +"RC_BA3"
 +"RC_BA3A"
 +"RC_BA3C"
 +"RC_BA4"
 +"RC_DRE1"
 +"RC_EPS1"
 +"RC_EPS2"
 +"RC_EPS3"
 +"RC_EPS4"
 +"RC_EPS5"
 +"RC_EPS6"
 +"RC_EPS7"
 +"RC_EPS8"
 +"RC_EXT1"
 +"RC_EXT2"
 +"RC_EXT3"
 +"RC_EXT4"
 +"RC_FAN1"
 +"RC_FAN2"
 +"RC_FAN3"
 +"RC_HAO1"
 +"RC_HUN1"
 +"RC_HUN2"
 +"RC_JOS1"
 +"RC_JOS2"
 +"RC_JOS3"
 +"RC_JOS4"
 +"RC_MAU1"
 +"RC_MIN1"
 +"RC_MIN2"
 +"RC_MIN3"
 +"RC_MRS1"
 +"RC_MRS2"
 +"RC_NI1"
 +"RC_NI1A"
 +"RC_NI1B"
 +"RC_NI1C"
 +"RC_NI1D"
 +"RC_NI2"
 +"RC_NI3"
 +"RC_OME1"
 +"RC_OME2"
 +"RC_PA1"
 +"RC_PA2"
 +"RC_PA3"
 +"RC_PA3A"
 +"RC_PA3B"
 +"RC_PA4"
 +"RC_RAM1"
 +"RC_RAM2"
 +"RC_RAM3"
 +"RC_RAM4"
 +"RC_RAM5"
 +"RC_SAS1"
 +"RC_TON1"
 +"RC_TON2"
 +"RC_TON3"
 +"RC_TON4"
 +"RC_TON5"</code>
 +==== STAT_SET_DATE ====
 +<code cpp>BOOL STATS::STAT_SET_DATE(Hash statName, Any* value, int numFields, BOOL save) // 0x2C29BFB64F4FCBE4 0x36BE807B b323</code>
 +
 +<code>'value' is a structure to a structure, 'numFields' is how many fields there are in said structure (usually 7).
 +
 +The structure looks like this:
 +
 +int year
 +int month
 +int day
 +int hour
 +int minute
 +int second
 +int millisecond
 +
 +The decompiled scripts use TIME::GET_POSIX_TIME to fill this structure.</code>
 +==== STAT_SET_STRING ====
 +<code cpp>BOOL STATS::STAT_SET_STRING(Hash statName, const char* value, BOOL save) // 0xA87B2335D12531D7 0xB1EF2E21 b323</code>
 +
 +==== STAT_SET_POS ====
 +<code cpp>BOOL STATS::STAT_SET_POS(Hash statName, float x, float y, float z, BOOL save) // 0xDB283FDE680FE72E 0x1192C9A3 b323</code>
 +
 +==== STAT_SET_MASKED_INT ====
 +<code cpp>BOOL STATS::STAT_SET_MASKED_INT(Hash statName, Any p1, Any p2, int p3, BOOL save) // 0x7BBB1B54583ED410 0x2CBAA739 b323</code>
 +
 +==== STAT_SET_USER_ID ====
 +<code cpp>BOOL STATS::STAT_SET_USER_ID(Hash statName, const char* value, BOOL save) // 0x8CDDF1E452BABE11 0xDBE78ED7 b323</code>
 +
 +==== STAT_SET_CURRENT_POSIX_TIME ====
 +<code cpp>BOOL STATS::STAT_SET_CURRENT_POSIX_TIME(Hash statName, BOOL p1) // 0xC2F84B7F9C4D0C61 0xA286F015 b323</code>
 +
 +<code>p1 always true.</code>
 +==== STAT_GET_INT ====
 +<code cpp>BOOL STATS::STAT_GET_INT(Hash statHash, int* outValue, int p2) // 0x767FBC2AC802EF3D 0x1C6FE43E b323</code>
 +
 +<code>p2 appears to always be -1
 +</code>
 +==== STAT_GET_FLOAT ====
 +<code cpp>BOOL STATS::STAT_GET_FLOAT(Hash statHash, float* outValue, Any p2) // 0xD7AE6C9C9C6AC54C 0xFCBDA612 b323</code>
 +
 +==== STAT_GET_BOOL ====
 +<code cpp>BOOL STATS::STAT_GET_BOOL(Hash statHash, BOOL* outValue, Any p2) // 0x11B5E6D2AE73F48E 0x28A3DD2B b323</code>
 +
 +==== STAT_GET_DATE ====
 +<code cpp>BOOL STATS::STAT_GET_DATE(Hash statHash, Any* p1, Any p2, Any p3) // 0x8B0FACEFC36C824B 0xD762D16C b323</code>
 +
 +==== STAT_GET_STRING ====
 +<code cpp>const char* STATS::STAT_GET_STRING(Hash statHash, int p1) // 0xE50384ACC2C3DB74 0x10CE4BDE b323</code>
 +
 +<code>p1 is always -1 in the script files</code>
 +==== STAT_GET_POS ====
 +<code cpp>BOOL STATS::STAT_GET_POS(Any p0, Any* p1, Any* p2, Any* p3, Any p4) // 0x350F82CCB186AA1B 0xC846ECCE b323</code>
 +
 +==== STAT_GET_MASKED_INT ====
 +<code cpp>BOOL STATS::STAT_GET_MASKED_INT(Any p0, Any* p1, Any p2, Any p3, Any p4) // 0x655185A06D9EEAAB 0xE9D9B70F b323</code>
 +
 +==== STAT_GET_USER_ID ====
 +<code cpp>const char* STATS::STAT_GET_USER_ID(Any p0) // 0x2365C388E393BBE2 0xE2E8B6BA b323</code>
 +
 +<code>Needs more research. Seems to return "STAT_UNKNOWN" if no such user id exists.</code>
 +==== STAT_GET_LICENSE_PLATE ====
 +<code cpp>const char* STATS::STAT_GET_LICENSE_PLATE(Hash statName) // 0x5473D4195058B2E4 0x1544B29F b323</code>
 +
 +==== STAT_SET_LICENSE_PLATE ====
 +<code cpp>BOOL STATS::STAT_SET_LICENSE_PLATE(Hash statName, const char* str) // 0x69FF13266D7296DA 0x3507D253 b323</code>
 +
 +==== STAT_INCREMENT ====
 +<code cpp>void STATS::STAT_INCREMENT(Hash statName, float value) // 0x9B5A68C6489E9909 0xDFC5F71E b323</code>
 +
 +==== _0x5A556B229A169402 ====
 +<code cpp>BOOL STATS::_0x5A556B229A169402() // 0x5A556B229A169402 0x46F21343 b323</code>
 +
 +==== _0xB1D2BB1E1631F5B1 ====
 +<code cpp>BOOL STATS::_0xB1D2BB1E1631F5B1() // 0xB1D2BB1E1631F5B1 0x02F283CE b323</code>
 +
 +==== _0xBED9F5693F34ED17 ====
 +<code cpp>BOOL STATS::_0xBED9F5693F34ED17(Hash statName, int p1, float* outValue) // 0xBED9F5693F34ED17 0xC4110917 b323</code>
 +
 +==== _0x26D7399B9587FE89 ====
 +<code cpp>void STATS::_0x26D7399B9587FE89(int p0) // 0x26D7399B9587FE89 0x343B27E2 b323</code>
 +
 +<code>STATS::0x343B27E2(0);
 +STATS::0x343B27E2(1);
 +STATS::0x343B27E2(2);
 +STATS::0x343B27E2(3);
 +STATS::0x343B27E2(4);
 +STATS::0x343B27E2(5);
 +STATS::0x343B27E2(6);
 +STATS::0x343B27E2(7);
 +
 +Identical in ingamehud & maintransition.</code>
 +==== _0xA78B8FA58200DA56 ====
 +<code cpp>void STATS::_0xA78B8FA58200DA56(int p0) // 0xA78B8FA58200DA56 0xE3247582 b323</code>
 +
 +<code>STATS::0xE3247582(0);
 +STATS::0xE3247582(1);
 +STATS::0xE3247582(2);
 +STATS::0xE3247582(3);
 +STATS::0xE3247582(4);
 +STATS::0xE3247582(5);
 +STATS::0xE3247582(6);</code>
 +==== STAT_GET_NUMBER_OF_DAYS ====
 +<code cpp>int STATS::STAT_GET_NUMBER_OF_DAYS(Hash statName) // 0xE0E854F5280FB769 0xFD66A429 b323</code>
 +
 +==== STAT_GET_NUMBER_OF_HOURS ====
 +<code cpp>int STATS::STAT_GET_NUMBER_OF_HOURS(Hash statName) // 0xF2D4B2FE415AAFC3 0x9B431236 b323</code>
 +
 +==== STAT_GET_NUMBER_OF_MINUTES ====
 +<code cpp>int STATS::STAT_GET_NUMBER_OF_MINUTES(Hash statName) // 0x7583B4BE4C5A41B5 0x347B4436 b323</code>
 +
 +==== STAT_GET_NUMBER_OF_SECONDS ====
 +<code cpp>int STATS::STAT_GET_NUMBER_OF_SECONDS(Hash statName) // 0x2CE056FF3723F00B 0x2C1D6C31 b323</code>
 +
 +==== STAT_SET_PROFILE_SETTING_VALUE ====
 +<code cpp>void STATS::STAT_SET_PROFILE_SETTING_VALUE(int profileSetting, int value) // 0x68F01422BE1D838F 0x24DD4929 b323</code>
 +
 +<code>Does not take effect immediately, unfortunately.
 +
 +profileSetting seems to only be 936, 937 and 938 in scripts</code>
 +==== _STAT_GET_PACKED_BOOL_MASK ====
 +<code cpp>int STATS::_STAT_GET_PACKED_BOOL_MASK(int p0) // 0xF4D8E7AC2A27758C 0xDFC25D66 b323</code>
 +
 +<code>Needs more research. Possibly used to calculate the "mask" when calling "STAT_SET_BOOL_MASKED"?</code>
 +==== _STAT_GET_PACKED_INT_MASK ====
 +<code cpp>int STATS::_STAT_GET_PACKED_INT_MASK(int p0) // 0x94F12ABF9C79E339 0xCA160BCC b323</code>
 +
 +<code>Needs more research. Possibly used to calculate the "mask" when calling "STAT_SET_MASKED_INT"?</code>
 +==== GET_PACKED_BOOL_STAT_KEY ====
 +<code cpp>Hash STATS::GET_PACKED_BOOL_STAT_KEY(int index, BOOL spStat, BOOL charStat, int character) // 0x80C75307B1C42837 0xB5BF87B2 b323</code>
 +
 +==== GET_PACKED_INT_STAT_KEY ====
 +<code cpp>Hash STATS::GET_PACKED_INT_STAT_KEY(int index, BOOL spStat, BOOL charStat, int character) // 0x61E111E323419E07 0x1F938864 b323</code>
 +
 +==== GET_PACKED_TU_BOOL_STAT_KEY ====
 +<code cpp>Hash STATS::GET_PACKED_TU_BOOL_STAT_KEY(int index, BOOL spStat, BOOL charStat, int character) // 0xC4BB08EE7907471E 0x3F8E893B b323</code>
 +
 +==== GET_PACKED_TU_INT_STAT_KEY ====
 +<code cpp>Hash STATS::GET_PACKED_TU_INT_STAT_KEY(int index, BOOL spStat, BOOL charStat, int character) // 0xD16C2AD6B8E32854 0xFB93C5A2 b323</code>
 +
 +==== _GET_NGSTAT_BOOL_HASH ====
 +<code cpp>Hash STATS::_GET_NGSTAT_BOOL_HASH(int index, BOOL spStat, BOOL charStat, int character, const char* section) // 0xBA52FF538ED2BC71  b323</code>
 +
 +<code>Needs more research. Gets the stat name of a masked bool?
 +
 +section - values used in the decompiled scripts:
 +"_NGPSTAT_BOOL"
 +"_NGTATPSTAT_BOOL"
 +"_NGDLCPSTAT_BOOL"
 +"_DLCBIKEPSTAT_BOOL"
 +"_DLCGUNPSTAT_BOOL"
 +"_GUNTATPSTAT_BOOL"
 +"_DLCSMUGCHARPSTAT_BOOL"
 +"_GANGOPSPSTAT_BOOL"
 +"_BUSINESSBATPSTAT_BOOL"
 +"_ARENAWARSPSTAT_BOOL"
 +"_CASINOPSTAT_BOOL"
 +"_CASINOHSTPSTAT_BOOL"
 +"_HEIST3TATTOOSTAT_BOOL"</code>
 +==== _GET_NGSTAT_INT_HASH ====
 +<code cpp>Hash STATS::_GET_NGSTAT_INT_HASH(int index, BOOL spStat, BOOL charStat, int character, const char* section) // 0x2B4CDCA6F07FF3DA  b323</code>
 +
 +<code>Needs more research. Gets the stat name of a masked int?
 +
 +section - values used in the decompiled scripts:
 +"_NGPSTAT_INT"
 +"_MP_NGPSTAT_INT"
 +"_MP_LRPSTAT_INT"
 +"_MP_APAPSTAT_INT"
 +"_MP_LR2PSTAT_INT"
 +"_MP_BIKEPSTAT_INT"
 +"_MP_IMPEXPPSTAT_INT"
 +"_MP_GUNRPSTAT_INT"
 +"_NGDLCPSTAT_INT"
 +"_MP_NGDLCPSTAT_INT"
 +"_DLCSMUGCHARPSTAT_INT"
 +"_GANGOPSPSTAT_INT"
 +"_BUSINESSBATPSTAT_INT"
 +"_ARENAWARSPSTAT_INT"
 +"_CASINOPSTAT_INT"
 +"_CASINOHSTPSTAT_INT"</code>
 +==== STAT_GET_BOOL_MASKED ====
 +<code cpp>BOOL STATS::STAT_GET_BOOL_MASKED(Hash statName, int mask, int p2) // 0x10FE3F1B79F9B071 0x6ACE1B7D b323</code>
 +
 +<code>p2 - Default value? Seems to be -1 most of the time.</code>
 +==== STAT_SET_BOOL_MASKED ====
 +<code cpp>BOOL STATS::STAT_SET_BOOL_MASKED(Hash statName, BOOL value, int mask, BOOL save) // 0x5BC62EC1937B9E5B 0x7842C4D6 b323</code>
 +
 +==== PLAYSTATS_BACKGROUND_SCRIPT_ACTION ====
 +<code cpp>void STATS::PLAYSTATS_BACKGROUND_SCRIPT_ACTION(const char* action, int value) // 0x5009DFD741329729 0x61ECC465 b323</code>
 +
 +==== PLAYSTATS_NPC_INVITE ====
 +<code cpp>void STATS::PLAYSTATS_NPC_INVITE(Any* p0) // 0x93054C88E6AA7C44 0x598C06F3 b323</code>
 +
 +==== PLAYSTATS_AWARD_XP ====
 +<code cpp>void STATS::PLAYSTATS_AWARD_XP(int amount, Hash type, Hash category) // 0x46F917F6B4128FE4 0x8770017B b323</code>
 +
 +==== PLAYSTATS_RANK_UP ====
 +<code cpp>void STATS::PLAYSTATS_RANK_UP(int rank) // 0xC7F2DE41D102BFB4 0x56AFB9F5 b323</code>
 +
 +==== _PLAYSTATS_START_OFFLINE_MODE ====
 +<code cpp>void STATS::_PLAYSTATS_START_OFFLINE_MODE() // 0x098760C7461724CD 0x896CDF8D b323</code>
 +
 +<code>PLAYSTATS_START_INVITE_DESPAWNING?</code>
 +==== PLAYSTATS_ACTIVITY_DONE ====
 +<code cpp>void STATS::PLAYSTATS_ACTIVITY_DONE(Any p0, Any p1) // 0xA071E0ED98F91286 0x1A66945F b323</code>
 +
 +==== PLAYSTATS_LEAVE_JOB_CHAIN ====
 +<code cpp>void STATS::PLAYSTATS_LEAVE_JOB_CHAIN(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xC5BE134EC7BA96A0 0xC960E161 b323</code>
 +
 +==== PLAYSTATS_MISSION_STARTED ====
 +<code cpp>void STATS::PLAYSTATS_MISSION_STARTED(Any* p0, Any p1, Any p2, BOOL p3) // 0xC19A2925C34D2231 0x3AAB699C b323</code>
 +
 +==== PLAYSTATS_MISSION_OVER ====
 +<code cpp>void STATS::PLAYSTATS_MISSION_OVER(Any* p0, Any p1, Any p2, BOOL p3, BOOL p4, BOOL p5) // 0x7C4BB33A8CED7324 0x5B90B5FF b323</code>
 +
 +==== PLAYSTATS_MISSION_CHECKPOINT ====
 +<code cpp>void STATS::PLAYSTATS_MISSION_CHECKPOINT(Any* p0, Any p1, Any p2, Any p3) // 0xC900596A63978C1D 0xCDC52280 b323</code>
 +
 +==== PLAYSTATS_RANDOM_MISSION_DONE ====
 +<code cpp>void STATS::PLAYSTATS_RANDOM_MISSION_DONE(const char* name, Any p1, Any p2, Any p3) // 0x71862B1D855F32E1 0xAC2C7C63 b323</code>
 +
 +==== PLAYSTATS_ROS_BET ====
 +<code cpp>void STATS::PLAYSTATS_ROS_BET(int amount, int act, Player player, float cm) // 0x121FB4DDDC2D5291 0x413539BC b323</code>
 +
 +==== PLAYSTATS_RACE_CHECKPOINT ====
 +<code cpp>void STATS::PLAYSTATS_RACE_CHECKPOINT(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x9C375C315099DDE4 0x580D5508 b323</code>
 +
 +==== _0x6DEE77AFF8C21BD1 ====
 +<code cpp>BOOL STATS::_0x6DEE77AFF8C21BD1(int* playerAccountId, int* posixTime) // 0x6DEE77AFF8C21BD1 0x489E27E7 b323</code>
 +
 +<code>PLAYSTATS_*</code>
 +==== PLAYSTATS_MATCH_STARTED ====
 +<code cpp>void STATS::PLAYSTATS_MATCH_STARTED(Any p0, Any p1, Any p2) // 0xBC80E22DED931E3D 0x2BDE85C1 b323</code>
 +
 +==== PLAYSTATS_SHOP_ITEM ====
 +<code cpp>void STATS::PLAYSTATS_SHOP_ITEM(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x176852ACAAC173D1 0xA4746384 b323</code>
 +
 +==== PLAYSTATS_CRATE_DROP_MISSION_DONE ====
 +<code cpp>void STATS::PLAYSTATS_CRATE_DROP_MISSION_DONE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7) // 0x1CAE5D2E3F9A07F0 0x6602CED6 b323</code>
 +
 +==== _PLAYSTATS_CRATE_CREATED_MISSION_DONE ====
 +<code cpp>void STATS::_PLAYSTATS_CRATE_CREATED_MISSION_DONE(float p0, float p1, float p2) // 0xAFC7E5E075A96F46  b323</code>
 +
 +==== PLAYSTATS_HOLD_UP_MISSION_DONE ====
 +<code cpp>void STATS::PLAYSTATS_HOLD_UP_MISSION_DONE(Any p0, Any p1, Any p2, Any p3) // 0xCB00196B31C39EB1 0x759E0EC9 b323</code>
 +
 +==== PLAYSTATS_IMPORT_EXPORT_MISSION_DONE ====
 +<code cpp>void STATS::PLAYSTATS_IMPORT_EXPORT_MISSION_DONE(Any p0, Any p1, Any p2, Any p3) // 0x2B69F5074C894811 0x62073DF7 b323</code>
 +
 +==== PLAYSTATS_RACE_TO_POINT_MISSION_DONE ====
 +<code cpp>void STATS::PLAYSTATS_RACE_TO_POINT_MISSION_DONE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0xADDD1C754E2E2914 0x06CE3692 b323</code>
 +
 +==== PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE ====
 +<code cpp>void STATS::PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE(Any p0) // 0x79AB33F0FBFAC40C 0x8D5C7B37 b323</code>
 +
 +==== PLAYSTATS_WEBSITE_VISITED ====
 +<code cpp>void STATS::PLAYSTATS_WEBSITE_VISITED(Hash scaleformHash, int p1) // 0xDDF24D535060F811 0x37D152BB b323</code>
 +
 +==== PLAYSTATS_FRIEND_ACTIVITY ====
 +<code cpp>void STATS::PLAYSTATS_FRIEND_ACTIVITY(Any p0, Any p1) // 0x0F71DE29AB2258F1 0xD1FA1BDB b323</code>
 +
 +==== PLAYSTATS_ODDJOB_DONE ====
 +<code cpp>void STATS::PLAYSTATS_ODDJOB_DONE(Any p0, Any p1, Any p2) // 0x69DEA3E9DB727B4C 0xFE14A8EA b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== PLAYSTATS_PROP_CHANGE ====
 +<code cpp>void STATS::PLAYSTATS_PROP_CHANGE(Any p0, Any p1, Any p2, Any p3) // 0xBA739D6D5A05D6E7 0x25740A1D b323</code>
 +
 +==== PLAYSTATS_CLOTH_CHANGE ====
 +<code cpp>void STATS::PLAYSTATS_CLOTH_CHANGE(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x34B973047A2268B9 0x3AFF9E58 b323</code>
 +
 +==== PLAYSTATS_WEAPON_MODE_CHANGE ====
 +<code cpp>void STATS::PLAYSTATS_WEAPON_MODE_CHANGE(Hash weaponHash, Hash componentHashTo, Hash componentHashFrom) // 0xE95C8A1875A02CA4 0x79716890 b323</code>
 +
 +<code>This is a typo made by R*. It's supposed to be called PLAYSTATS_WEAPON_MOD_CHANGE.</code>
 +==== PLAYSTATS_CHEAT_APPLIED ====
 +<code cpp>void STATS::PLAYSTATS_CHEAT_APPLIED(const char* cheat) // 0x6058665D72302D3F 0x345166F3 b323</code>
 +
 +==== _0xF8C54A461C3E11DC ====
 +<code cpp>void STATS::_0xF8C54A461C3E11DC(Any* p0, Any* p1, Any* p2, Any* p3) // 0xF8C54A461C3E11DC 0x04181752 b323</code>
 +
 +==== _0xF5BB8DAC426A52C0 ====
 +<code cpp>void STATS::_0xF5BB8DAC426A52C0(Any* p0, Any* p1, Any* p2, Any* p3) // 0xF5BB8DAC426A52C0  b323</code>
 +
 +==== _0xA736CF7FB7C5BFF4 ====
 +<code cpp>void STATS::_0xA736CF7FB7C5BFF4(Any* p0, Any* p1, Any* p2, Any* p3) // 0xA736CF7FB7C5BFF4 0x31002201 b323</code>
 +
 +==== _0x14E0B2D1AD1044E0 ====
 +<code cpp>void STATS::_0x14E0B2D1AD1044E0(Any* p0, Any* p1, Any* p2, Any* p3) // 0x14E0B2D1AD1044E0 0xDDD1F1F3 b323</code>
 +
 +==== PLAYSTATS_QUICKFIX_TOOL ====
 +<code cpp>void STATS::PLAYSTATS_QUICKFIX_TOOL(int element, const char* item) // 0x90D0622866E80445 0x66FEB701 b323</code>
 +
 +==== PLAYSTATS_IDLE_KICK ====
 +<code cpp>void STATS::PLAYSTATS_IDLE_KICK(int time) // 0x5DA3A8DE8CB6226F 0x9E2B9522 b323</code>
 +
 +<code>longest time being ilde?</code>
 +==== _0xD1032E482629049E ====
 +<code cpp>void STATS::_0xD1032E482629049E(int p0) // 0xD1032E482629049E  b323</code>
 +
 +<code>PLAYSTATS_S*</code>
 +==== _PLAYSTATS_HEIST_SAVE_CHEAT ====
 +<code cpp>void STATS::_PLAYSTATS_HEIST_SAVE_CHEAT(Hash hash, int p1) // 0xF4FF020A08BC8863  b323</code>
 +
 +==== _PLAYSTATS_DIRECTOR_MODE ====
 +<code cpp>void STATS::_PLAYSTATS_DIRECTOR_MODE(Any* p0) // 0x46326E13DA4E0546  b323</code>
 +
 +==== _PLAYSTATS_AWARD_BADSPORT ====
 +<code cpp>void STATS::_PLAYSTATS_AWARD_BADSPORT(int id) // 0x47B32F5611E6E483  b463</code>
 +
 +==== _PLAYSTATS_PEGASAIRCRAFT ====
 +<code cpp>void STATS::_PLAYSTATS_PEGASAIRCRAFT(Hash modelHash) // 0x9572BD4DD6B72122  b1180</code>
 +
 +==== _0x6A60E43998228229 ====
 +<code cpp>void STATS::_0x6A60E43998228229(Any p0) // 0x6A60E43998228229  b463</code>
 +
 +==== _0xBFAFDB5FAAA5C5AB ====
 +<code cpp>void STATS::_0xBFAFDB5FAAA5C5AB(Any p0) // 0xBFAFDB5FAAA5C5AB  b463</code>
 +
 +==== _0x8C9D11605E59D955 ====
 +<code cpp>void STATS::_0x8C9D11605E59D955(Any p0) // 0x8C9D11605E59D955  b463</code>
 +
 +==== _0x3DE3AA516FB126A4 ====
 +<code cpp>void STATS::_0x3DE3AA516FB126A4(Any p0) // 0x3DE3AA516FB126A4  b463</code>
 +
 +==== _0xBAA2F0490E146BE8 ====
 +<code cpp>void STATS::_0xBAA2F0490E146BE8(Any p0) // 0xBAA2F0490E146BE8  b463</code>
 +
 +==== _0x1A7CE7CD3E653485 ====
 +<code cpp>void STATS::_0x1A7CE7CD3E653485(Any p0) // 0x1A7CE7CD3E653485  b463</code>
 +
 +==== _0x419615486BBF1956 ====
 +<code cpp>void STATS::_0x419615486BBF1956(Any p0) // 0x419615486BBF1956  b463</code>
 +
 +==== _0x84DFC579C2FC214C ====
 +<code cpp>void STATS::_0x84DFC579C2FC214C(Any p0) // 0x84DFC579C2FC214C  b463</code>
 +
 +==== _0x0A9C7F36E5D7B683 ====
 +<code cpp>void STATS::_0x0A9C7F36E5D7B683(Any p0) // 0x0A9C7F36E5D7B683  b463</code>
 +
 +==== _0x164C5FF663790845 ====
 +<code cpp>void STATS::_0x164C5FF663790845(Any p0) // 0x164C5FF663790845  b463</code>
 +
 +==== _0xEDBF6C9B0D2C65C8 ====
 +<code cpp>void STATS::_0xEDBF6C9B0D2C65C8(Any p0) // 0xEDBF6C9B0D2C65C8  b463</code>
 +
 +==== _0x6551B1F7F6CD46EA ====
 +<code cpp>void STATS::_0x6551B1F7F6CD46EA(Any p0) // 0x6551B1F7F6CD46EA  b463</code>
 +
 +==== _0x2CD90358F67D0AA8 ====
 +<code cpp>void STATS::_0x2CD90358F67D0AA8(Any p0) // 0x2CD90358F67D0AA8  b463</code>
 +
 +==== _PLAYSTATS_PI_MENU_HIDE_SETTINGS ====
 +<code cpp>void STATS::_PLAYSTATS_PI_MENU_HIDE_SETTINGS(Any* data) // 0x203B381133817079  b393</code>
 +
 +==== LEADERBOARDS_GET_NUMBER_OF_COLUMNS ====
 +<code cpp>Any STATS::LEADERBOARDS_GET_NUMBER_OF_COLUMNS(Any p0, Any p1) // 0x117B45156D7EFF2E 0x0A56EE34 b323</code>
 +
 +==== LEADERBOARDS_GET_COLUMN_ID ====
 +<code cpp>Any STATS::LEADERBOARDS_GET_COLUMN_ID(Any p0, Any p1, Any p2) // 0xC4B5467A1886EA7E 0x3821A334 b323</code>
 +
 +==== LEADERBOARDS_GET_COLUMN_TYPE ====
 +<code cpp>Any STATS::LEADERBOARDS_GET_COLUMN_TYPE(Any p0, Any p1, Any p2) // 0xBF4FEF46DB7894D3 0x6F2820F4 b323</code>
 +
 +==== LEADERBOARDS_READ_CLEAR_ALL ====
 +<code cpp>Any STATS::LEADERBOARDS_READ_CLEAR_ALL() // 0xA34CB6E6F0DF4A0B 0x233E058A b323</code>
 +
 +==== LEADERBOARDS_READ_CLEAR ====
 +<code cpp>Any STATS::LEADERBOARDS_READ_CLEAR(Any p0, Any p1, Any p2) // 0x7CCE5C737A665701 0x7090012F b323</code>
 +
 +==== LEADERBOARDS_READ_PENDING ====
 +<code cpp>BOOL STATS::LEADERBOARDS_READ_PENDING(Any p0, Any p1, Any p2) // 0xAC392C8483342AC2 0xEEB8BF5C b323</code>
 +
 +==== LEADERBOARDS_READ_ANY_PENDING ====
 +<code cpp>BOOL STATS::LEADERBOARDS_READ_ANY_PENDING() // 0xA31FD15197B192BD 0x1789437B b323</code>
 +
 +==== LEADERBOARDS_READ_SUCCESSFUL ====
 +<code cpp>BOOL STATS::LEADERBOARDS_READ_SUCCESSFUL(Any p0, Any p1, Any p2) // 0x2FB19228983E832C 0x3AC5B2F1 b323</code>
 +
 +==== LEADERBOARDS2_READ_FRIENDS_BY_ROW ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_FRIENDS_BY_ROW(Any* p0, Any* p1, Any p2, BOOL p3, Any p4, Any p5) // 0x918B101666F9CB83 0xBD91B136 b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_HANDLE ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_HANDLE(Any* p0, Any* p1) // 0xC30713A383BFBF0E 0x6B553408 b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_ROW ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_ROW(Any* p0, Any* p1, Any p2, Any* p3, Any p4, Any* p5, Any p6) // 0xA9CDB1E3F0A49883 0xCA931F34 b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_RANK ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_RANK(Any* p0, Any p1, Any p2) // 0xBA2C7DB0C129449A 0x1B03F59F b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_RADIUS ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_RADIUS(Any* p0, Any p1, Any* p2) // 0x5CE587FB5A42C8C4 0xC5B7E685 b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_SCORE_INT ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_SCORE_INT(Any* p0, Any p1, Any p2) // 0x7EEC7E4F6984A16A 0xAC020C18 b323</code>
 +
 +==== LEADERBOARDS2_READ_BY_SCORE_FLOAT ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_BY_SCORE_FLOAT(Any* p0, float p1, Any p2) // 0xE662C8B759D08F3C 0xC678B29F b323</code>
 +
 +==== LEADERBOARDS2_READ_RANK_PREDICTION ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_READ_RANK_PREDICTION(Any* p0, Any* p1, Any* p2) // 0xC38DC1E90D22547C 0x9BEC3401 b323</code>
 +
 +==== _LEADERBOARDS2_READ_BY_PLATFORM ====
 +<code cpp>BOOL STATS::_LEADERBOARDS2_READ_BY_PLATFORM(Any* p0, const char* gamerHandleCsv, const char* platformName) // 0xF1AE5DCDBFCA2721  b323</code>
 +
 +==== _0xA0F93D5465B3094D ====
 +<code cpp>BOOL STATS::_0xA0F93D5465B3094D(Any* p0) // 0xA0F93D5465B3094D 0xC977D6E2 b323</code>
 +
 +==== _0x71B008056E5692D6 ====
 +<code cpp>void STATS::_0x71B008056E5692D6() // 0x71B008056E5692D6 0xF2DB6A82 b323</code>
 +
 +==== _0x34770B9CE0E03B91 ====
 +<code cpp>BOOL STATS::_0x34770B9CE0E03B91(Any p0, Any* p1) // 0x34770B9CE0E03B91 0x766A74FE b323</code>
 +
 +==== _0x88578F6EC36B4A3A ====
 +<code cpp>Any STATS::_0x88578F6EC36B4A3A(Any p0, Any p1) // 0x88578F6EC36B4A3A 0x6B90E730 b323</code>
 +
 +==== _0x38491439B6BA7F7D ====
 +<code cpp>float STATS::_0x38491439B6BA7F7D(Any p0, Any p1) // 0x38491439B6BA7F7D 0x509A286F b323</code>
 +
 +==== LEADERBOARDS2_WRITE_DATA ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_WRITE_DATA(Any* p0) // 0xAE2206545888AE49 0x5F9DF634 b323</code>
 +
 +==== LEADERBOARDS_WRITE_ADD_COLUMN ====
 +<code cpp>void STATS::LEADERBOARDS_WRITE_ADD_COLUMN(Any p0, Any p1, float p2) // 0x0BCA1D2C47B0D269 0x7524E27B b323</code>
 +
 +==== LEADERBOARDS_WRITE_ADD_COLUMN_LONG ====
 +<code cpp>void STATS::LEADERBOARDS_WRITE_ADD_COLUMN_LONG(Any p0, Any p1, Any p2) // 0x2E65248609523599 0x1C5CCC3A b323</code>
 +
 +==== LEADERBOARDS_CACHE_DATA_ROW ====
 +<code cpp>BOOL STATS::LEADERBOARDS_CACHE_DATA_ROW(Any* p0) // 0xB9BB18E2C40142ED 0x44F7D82B b323</code>
 +
 +==== LEADERBOARDS_CLEAR_CACHE_DATA ====
 +<code cpp>void STATS::LEADERBOARDS_CLEAR_CACHE_DATA() // 0xD4B02A6B476E1FDC 0x87F498C1 b323</code>
 +
 +==== _0x8EC74CEB042E7CFF ====
 +<code cpp>void STATS::_0x8EC74CEB042E7CFF(Any p0) // 0x8EC74CEB042E7CFF 0x88AE9667 b323</code>
 +
 +==== LEADERBOARDS_GET_CACHE_EXISTS ====
 +<code cpp>BOOL STATS::LEADERBOARDS_GET_CACHE_EXISTS(Any p0) // 0x9C51349BE6CDFE2C 0xFC8A71F3 b323</code>
 +
 +==== LEADERBOARDS_GET_CACHE_TIME ====
 +<code cpp>Any STATS::LEADERBOARDS_GET_CACHE_TIME(Any p0) // 0xF04C1C27DA35F6C8 0xEDF02302 b323</code>
 +
 +==== LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS ====
 +<code cpp>int STATS::LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS(Any p0) // 0x58A651CD201D89AD 0xCE7CB520 b323</code>
 +
 +==== LEADERBOARDS_GET_CACHE_DATA_ROW ====
 +<code cpp>BOOL STATS::LEADERBOARDS_GET_CACHE_DATA_ROW(Any p0, Any p1, Any* p2) // 0x9120E8DBA3D69273 0xA11289EC b323</code>
 +
 +==== _UPDATE_STAT_INT ====
 +<code cpp>void STATS::_UPDATE_STAT_INT(Hash statHash, int value, int p2) // 0x11FF1C80276097ED 0x4AC39C6C b323</code>
 +
 +==== _UPDATE_STAT_FLOAT ====
 +<code cpp>void STATS::_UPDATE_STAT_FLOAT(Hash statHash, float value, int p2) // 0x30A6614C1F7799B8 0x3E69E7C3 b323</code>
 +
 +==== _0x6483C25849031C4F ====
 +<code cpp>void STATS::_0x6483C25849031C4F(Any p0, Any p1, Any p2, Any* p3) // 0x6483C25849031C4F 0x2FFD2FA5 b323</code>
 +
 +==== _0x5EAD2BF6484852E4 ====
 +<code cpp>BOOL STATS::_0x5EAD2BF6484852E4() // 0x5EAD2BF6484852E4 0x23D70C39 b323</code>
 +
 +<code>example from completionpercentage_controller.ysc.c4
 +
 +if (STATS::_5EAD2BF6484852E4()) {
 +            MISC::SET_BIT(g_17b95._f20df._ff10, 15);
 +            STATS::_11FF1C80276097ED(0xe9ec4dd1, 200, 0);
 +        }</code>
 +==== _0xC141B8917E0017EC ====
 +<code cpp>void STATS::_0xC141B8917E0017EC() // 0xC141B8917E0017EC 0x0AD43306 b323</code>
 +
 +==== SET_PROFILE_SETTING_PROLOGUE_COMPLETE ====
 +<code cpp>void STATS::SET_PROFILE_SETTING_PROLOGUE_COMPLETE() // 0xB475F27C6A994D65 0xC7DE5C30 b323</code>
 +
 +==== _0xC67E2DA1CBE759E2 ====
 +<code cpp>void STATS::_0xC67E2DA1CBE759E2() // 0xC67E2DA1CBE759E2  b1734</code>
 +
 +<code>Sets profile setting 939</code>
 +==== _0xF1A1803D3476F215 ====
 +<code cpp>void STATS::_0xF1A1803D3476F215(int value) // 0xF1A1803D3476F215 0xA3DAC790 b323</code>
 +
 +<code>Sets profile setting 933</code>
 +==== _0x38BAAA5DD4C9D19F ====
 +<code cpp>void STATS::_0x38BAAA5DD4C9D19F(int value) // 0x38BAAA5DD4C9D19F 0x726FAE66 b323</code>
 +
 +<code>Sets profile setting 934</code>
 +==== _0x55384438FC55AD8E ====
 +<code cpp>void STATS::_0x55384438FC55AD8E(int value) // 0x55384438FC55AD8E 0xF03895A4 b323</code>
 +
 +<code>Sets profile setting 935</code>
 +==== _0x723C1CE13FBFDB67 ====
 +<code cpp>void STATS::_0x723C1CE13FBFDB67(Any p0, Any p1) // 0x723C1CE13FBFDB67 0x4C39CF10 b323</code>
 +
 +==== _0x0D01D20616FC73FB ====
 +<code cpp>void STATS::_0x0D01D20616FC73FB(Any p0, Any p1) // 0x0D01D20616FC73FB 0x2180AE13 b323</code>
 +
 +==== _0x428EAF89E24F6C36 ====
 +<code cpp>void STATS::_0x428EAF89E24F6C36(Any p0, float p1) // 0x428EAF89E24F6C36 0xEE292B91 b323</code>
 +
 +==== STAT_SET_CHEAT_IS_ACTIVE ====
 +<code cpp>void STATS::STAT_SET_CHEAT_IS_ACTIVE() // 0x047CBED6F6F8B63C 0xA063CABD b323</code>
 +
 +==== LEADERBOARDS2_WRITE_DATA_FOR_EVENT_TYPE ====
 +<code cpp>BOOL STATS::LEADERBOARDS2_WRITE_DATA_FOR_EVENT_TYPE(Any* p0, Any* p1) // 0xC980E62E33DF1D5C 0x62C19A3D b323</code>
 +
 +==== _0x6F361B8889A792A3 ====
 +<code cpp>void STATS::_0x6F361B8889A792A3() // 0x6F361B8889A792A3 0x3B4EF322 b323</code>
 +
 +==== _0xC847B43F369AC0B5 ====
 +<code cpp>void STATS::_0xC847B43F369AC0B5() // 0xC847B43F369AC0B5  b323</code>
 +
 +==== _STAT_MIGRATE_SAVE ====
 +<code cpp>BOOL STATS::_STAT_MIGRATE_SAVE(const char* platformName) // 0xA5C80D8E768A9E66  b323</code>
 +
 +<code>platformName must be one of the following: ps3, xbox360, ps4, xboxone</code>
 +==== _0x9A62EC95AE10E011 ====
 +<code cpp>int STATS::_0x9A62EC95AE10E011() // 0x9A62EC95AE10E011  b323</code>
 +
 +==== _0x4C89FE2BDEB3F169 ====
 +<code cpp>Any STATS::_0x4C89FE2BDEB3F169() // 0x4C89FE2BDEB3F169  b323</code>
 +
 +==== _0xC6E0E2616A7576BB ====
 +<code cpp>Any STATS::_0xC6E0E2616A7576BB() // 0xC6E0E2616A7576BB  b323</code>
 +
 +==== _0x5BD5F255321C4AAF ====
 +<code cpp>Any STATS::_0x5BD5F255321C4AAF(Any p0) // 0x5BD5F255321C4AAF  b323</code>
 +
 +==== _0xDEAAF77EB3687E97 ====
 +<code cpp>Any STATS::_0xDEAAF77EB3687E97(Any p0, Any* p1) // 0xDEAAF77EB3687E97  b323</code>
 +
 +==== STAT_SAVE_MIGRATION_STATUS_START ====
 +<code cpp>BOOL STATS::STAT_SAVE_MIGRATION_STATUS_START() // 0xC70DDCE56D0D3A99 0x54E775E0 b323</code>
 +
 +==== STAT_GET_SAVE_MIGRATION_STATUS ====
 +<code cpp>int STATS::STAT_GET_SAVE_MIGRATION_STATUS(Any* data) // 0x886913BBEACA68C1 0xE3F0D62D b323</code>
 +
 +==== _STAT_SAVE_MIGRATION_CANCEL ====
 +<code cpp>BOOL STATS::_STAT_SAVE_MIGRATION_CANCEL() // 0x4FEF53183C3C6414  b323</code>
 +
 +==== _STAT_GET_CANCEL_SAVE_MIGRATION_STATUS ====
 +<code cpp>int STATS::_STAT_GET_CANCEL_SAVE_MIGRATION_STATUS() // 0x567384DFA67029E6  b323</code>
 +
 +==== _STAT_SAVE_MIGRATION_CONSUME_CONTENT_UNLOCK ====
 +<code cpp>BOOL STATS::_STAT_SAVE_MIGRATION_CONSUME_CONTENT_UNLOCK(Hash contentId, const char* srcPlatform, const char* srcGamerHandle) // 0x3270F67EED31FBC1  b323</code>
 +
 +==== _STAT_GET_SAVE_MIGRATION_CONSUME_CONTENT_UNLOCK_STATUS ====
 +<code cpp>int STATS::_STAT_GET_SAVE_MIGRATION_CONSUME_CONTENT_UNLOCK_STATUS(int* p0) // 0xCE5AA445ABA8DEE0  b323</code>
 +
 +==== _0x98E2BC1CA26287C3 ====
 +<code cpp>void STATS::_0x98E2BC1CA26287C3() // 0x98E2BC1CA26287C3  b323</code>
 +
 +==== _0x629526ABA383BCAA ====
 +<code cpp>void STATS::_0x629526ABA383BCAA() // 0x629526ABA383BCAA  b323</code>
 +
 +==== _0xBE3DB208333D9844 ====
 +<code cpp>Any STATS::_0xBE3DB208333D9844() // 0xBE3DB208333D9844  b463</code>
 +
 +==== _0x33D72899E24C3365 ====
 +<code cpp>Any STATS::_0x33D72899E24C3365(Any p0, Any p1) // 0x33D72899E24C3365  b463</code>
 +
 +==== _0xA761D4AC6115623D ====
 +<code cpp>Any STATS::_0xA761D4AC6115623D() // 0xA761D4AC6115623D  b463</code>
 +
 +==== _0xF11F01D98113536A ====
 +<code cpp>Any STATS::_0xF11F01D98113536A(Any p0) // 0xF11F01D98113536A  b463</code>
 +
 +==== _0x8B9CDBD6C566C38C ====
 +<code cpp>Any STATS::_0x8B9CDBD6C566C38C() // 0x8B9CDBD6C566C38C  b944</code>
 +
 +==== _0xE8853FBCE7D8D0D6 ====
 +<code cpp>Any STATS::_0xE8853FBCE7D8D0D6() // 0xE8853FBCE7D8D0D6  b463</code>
 +
 +==== _0xA943FD1722E11EFD ====
 +<code cpp>Any STATS::_0xA943FD1722E11EFD() // 0xA943FD1722E11EFD  b463</code>
 +
 +==== _0x84A810B375E69C0E ====
 +<code cpp>Any STATS::_0x84A810B375E69C0E() // 0x84A810B375E69C0E  b463</code>
 +
 +==== _0x9EC8858184CD253A ====
 +<code cpp>Any STATS::_0x9EC8858184CD253A() // 0x9EC8858184CD253A  b463</code>
 +
 +==== _0xBA9749CC94C1FD85 ====
 +<code cpp>Any STATS::_0xBA9749CC94C1FD85() // 0xBA9749CC94C1FD85  b463</code>
 +
 +==== _0x55A8BECAF28A4EB7 ====
 +<code cpp>Any STATS::_0x55A8BECAF28A4EB7() // 0x55A8BECAF28A4EB7  b463</code>
 +
 +==== _0x32CAC93C9DE73D32 ====
 +<code cpp>Any STATS::_0x32CAC93C9DE73D32() // 0x32CAC93C9DE73D32  b463</code>
 +
 +==== _0xAFF47709F1D5DCCE ====
 +<code cpp>Any STATS::_0xAFF47709F1D5DCCE() // 0xAFF47709F1D5DCCE  b463</code>
 +
 +==== _0x6E0A5253375C4584 ====
 +<code cpp>Any STATS::_0x6E0A5253375C4584() // 0x6E0A5253375C4584  b463</code>
 +
 +==== _0x1A8EA222F9C67DBB ====
 +<code cpp>Any STATS::_0x1A8EA222F9C67DBB(Any p0) // 0x1A8EA222F9C67DBB  b463</code>
 +
 +==== _0xF9F2922717B819EC ====
 +<code cpp>Any STATS::_0xF9F2922717B819EC() // 0xF9F2922717B819EC  b505</code>
 +
 +==== _0x0B8B7F74BF061C6D ====
 +<code cpp>Any STATS::_0x0B8B7F74BF061C6D() // 0x0B8B7F74BF061C6D  b463</code>
 +
 +==== _0xB3DA2606774A8E2D ====
 +<code cpp>BOOL STATS::_0xB3DA2606774A8E2D() // 0xB3DA2606774A8E2D  b323</code>
 +
 +<code>This function is hard-coded to always return 1.
 +
 +NETWORK_IS_*</code>
 +==== _SET_HAS_CONTENT_UNLOCKS_FLAGS ====
 +<code cpp>void STATS::_SET_HAS_CONTENT_UNLOCKS_FLAGS(int value) // 0xDAC073C7901F9E15  b323</code>
 +
 +<code>Sets profile setting 866
 +
 +SET_*</code>
 +==== _SET_SAVE_MIGRATION_TRANSACTION_ID ====
 +<code cpp>void STATS::_SET_SAVE_MIGRATION_TRANSACTION_ID(int transactionId) // 0xF6792800AC95350D  b323</code>
 +
 +<code>Sets profile setting 501</code>
 +==== _0x6BC0ACD0673ACEBE ====
 +<code cpp>void STATS::_0x6BC0ACD0673ACEBE(Any p0, Any p1, Any p2) // 0x6BC0ACD0673ACEBE  b573</code>
 +
 +==== _0x8D8ADB562F09A245 ====
 +<code cpp>void STATS::_0x8D8ADB562F09A245(Any p0) // 0x8D8ADB562F09A245  b573</code>
 +
 +==== _0xD1A1EE3B4FA8E760 ====
 +<code cpp>void STATS::_0xD1A1EE3B4FA8E760(Any p0) // 0xD1A1EE3B4FA8E760  b573</code>
 +
 +==== _0x88087EE1F28024AE ====
 +<code cpp>void STATS::_0x88087EE1F28024AE(Any p0) // 0x88087EE1F28024AE  b573</code>
 +
 +==== _0xFCC228E07217FCAC ====
 +<code cpp>void STATS::_0xFCC228E07217FCAC(Any p0) // 0xFCC228E07217FCAC  b573</code>
 +
 +==== _0x678F86D8FC040BDB ====
 +<code cpp>void STATS::_0x678F86D8FC040BDB(Any p0) // 0x678F86D8FC040BDB  b573</code>
 +
 +==== _0xA6F54BB2FFCA35EA ====
 +<code cpp>void STATS::_0xA6F54BB2FFCA35EA(Any p0) // 0xA6F54BB2FFCA35EA  b573</code>
 +
 +==== _0x5FF2C33B13A02A11 ====
 +<code cpp>void STATS::_0x5FF2C33B13A02A11(Any p0) // 0x5FF2C33B13A02A11  b757</code>
 +
 +==== _0x282B6739644F4347 ====
 +<code cpp>void STATS::_0x282B6739644F4347(Any p0) // 0x282B6739644F4347  b757</code>
 +
 +==== _0xF06A6F41CB445443 ====
 +<code cpp>void STATS::_0xF06A6F41CB445443(Any p0) // 0xF06A6F41CB445443  b757</code>
 +
 +==== _0x7B18DA61F6BAE9D5 ====
 +<code cpp>void STATS::_0x7B18DA61F6BAE9D5(Any p0) // 0x7B18DA61F6BAE9D5  b573</code>
 +
 +==== _0x06EAF70AE066441E ====
 +<code cpp>void STATS::_0x06EAF70AE066441E(Any p0) // 0x06EAF70AE066441E  b573</code>
 +
 +==== _0x14EDA9EE27BD1626 ====
 +<code cpp>void STATS::_0x14EDA9EE27BD1626(Any p0) // 0x14EDA9EE27BD1626  b573</code>
 +
 +==== _0x930F504203F561C9 ====
 +<code cpp>void STATS::_0x930F504203F561C9(Any p0) // 0x930F504203F561C9  b573</code>
 +
 +==== _0xE3261D791EB44ACB ====
 +<code cpp>void STATS::_0xE3261D791EB44ACB(Any p0) // 0xE3261D791EB44ACB  b573</code>
 +
 +==== _0x73001E34F85137F8 ====
 +<code cpp>void STATS::_0x73001E34F85137F8(Any p0) // 0x73001E34F85137F8  b573</code>
 +
 +==== _0x53CAE13E9B426993 ====
 +<code cpp>void STATS::_0x53CAE13E9B426993(Any p0) // 0x53CAE13E9B426993  b757</code>
 +
 +==== _0x7D36291161859389 ====
 +<code cpp>void STATS::_0x7D36291161859389(Any p0) // 0x7D36291161859389  b757</code>
 +
 +==== _PLAYSTATS_SPENT_PI_CUSTOM_LOADOUT ====
 +<code cpp>void STATS::_PLAYSTATS_SPENT_PI_CUSTOM_LOADOUT(int amount) // 0xBE509B0A3693DE8B  b757</code>
 +
 +==== _PLAYSTATS_BUY_CONTRABAND ====
 +<code cpp>void STATS::_PLAYSTATS_BUY_CONTRABAND(Any* data) // 0xD6781E42755531F7  b757</code>
 +
 +==== _PLAYSTATS_SELL_CONTRABAND ====
 +<code cpp>void STATS::_PLAYSTATS_SELL_CONTRABAND(Any* data) // 0xC729991A9065376E  b757</code>
 +
 +==== _PLAYSTATS_DEFEND_CONTRABAND ====
 +<code cpp>void STATS::_PLAYSTATS_DEFEND_CONTRABAND(Any* data) // 0x2605663BD4F23B5D  b757</code>
 +
 +==== _PLAYSTATS_RECOVER_CONTRABAND ====
 +<code cpp>void STATS::_PLAYSTATS_RECOVER_CONTRABAND(Any* data) // 0x04D90BA8207ADA2D  b757</code>
 +
 +==== _0x60EEDC12AF66E846 ====
 +<code cpp>void STATS::_0x60EEDC12AF66E846(Any p0) // 0x60EEDC12AF66E846  b757</code>
 +
 +==== _0x3EBEAC6C3F81F6BD ====
 +<code cpp>void STATS::_0x3EBEAC6C3F81F6BD(Any p0) // 0x3EBEAC6C3F81F6BD  b573</code>
 +
 +==== _0x96E6D5150DBF1C09 ====
 +<code cpp>void STATS::_0x96E6D5150DBF1C09(Any p0, Any p1, Any p2) // 0x96E6D5150DBF1C09  b573</code>
 +
 +==== _0xA3C53804BDB68ED2 ====
 +<code cpp>void STATS::_0xA3C53804BDB68ED2(Any p0, Any p1) // 0xA3C53804BDB68ED2  b573</code>
 +
 +==== _0x6BCCF9948492FD85 ====
 +<code cpp>void STATS::_0x6BCCF9948492FD85(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x6BCCF9948492FD85  b573</code>
 +
 +==== _HIRED_LIMO ====
 +<code cpp>void STATS::_HIRED_LIMO(Any p0, Any p1) // 0x792271AB35C356A4  b573</code>
 +
 +==== _ORDERED_BOSS_VEHICLE ====
 +<code cpp>void STATS::_ORDERED_BOSS_VEHICLE(Any p0, Any p1, Hash vehicleHash) // 0xCEA553E35C2246E1  b573</code>
 +
 +==== _0xD1C9B92BDD3F151D ====
 +<code cpp>void STATS::_0xD1C9B92BDD3F151D(Any p0, Any p1, Any p2) // 0xD1C9B92BDD3F151D  b573</code>
 +
 +==== _0x44919CC079BB60BF ====
 +<code cpp>void STATS::_0x44919CC079BB60BF(Any p0) // 0x44919CC079BB60BF  b573</code>
 +
 +==== _0x7033EEFD9B28088E ====
 +<code cpp>void STATS::_0x7033EEFD9B28088E(Any p0) // 0x7033EEFD9B28088E  b678</code>
 +
 +==== _0xAA525DFF66BB82F5 ====
 +<code cpp>void STATS::_0xAA525DFF66BB82F5(Any p0, Any p1, Any p2) // 0xAA525DFF66BB82F5  b757</code>
 +
 +==== _0x015B03EE1C43E6EC ====
 +<code cpp>void STATS::_0x015B03EE1C43E6EC(Any p0) // 0x015B03EE1C43E6EC  b757</code>
 +
 +==== _PLAYSTATS_STUNT_PERFORMED_EVENT_ALLOW_TRIGGER ====
 +<code cpp>void STATS::_PLAYSTATS_STUNT_PERFORMED_EVENT_ALLOW_TRIGGER() // 0x928DBFB892638EF3  b791</code>
 +
 +<code>Allows CEventNetworkStuntPerformed to be triggered.</code>
 +==== _PLAYSTATS_STUNT_PERFORMED_EVENT_DISALLOW_TRIGGER ====
 +<code cpp>void STATS::_PLAYSTATS_STUNT_PERFORMED_EVENT_DISALLOW_TRIGGER() // 0x8A800DACCC0DA55D  b791</code>
 +
 +<code>Disallows CEventNetworkStuntPerformed to be triggered.</code>
 +==== _0xBF371CD2B64212FD ====
 +<code cpp>void STATS::_0xBF371CD2B64212FD(Any p0) // 0xBF371CD2B64212FD  b877</code>
 +
 +==== _0x7D8BA05688AD64C7 ====
 +<code cpp>void STATS::_0x7D8BA05688AD64C7(Any p0) // 0x7D8BA05688AD64C7  b944</code>
 +
 +==== _0x0B565B0AAE56A0E8 ====
 +<code cpp>void STATS::_0x0B565B0AAE56A0E8(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x0B565B0AAE56A0E8  b877</code>
 +
 +==== _0x28ECB8AC2F607DB2 ====
 +<code cpp>void STATS::_0x28ECB8AC2F607DB2(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x28ECB8AC2F607DB2  b877</code>
 +
 +==== _PLAYSTATS_CHANGE_MC_EMBLEM ====
 +<code cpp>void STATS::_PLAYSTATS_CHANGE_MC_EMBLEM(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x0A50D2604E05CB94  b877</code>
 +
 +==== _0xCC25A4553DFBF9EA ====
 +<code cpp>void STATS::_0xCC25A4553DFBF9EA(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xCC25A4553DFBF9EA  b877</code>
 +
 +==== _0xF534D94DFA2EAD26 ====
 +<code cpp>void STATS::_0xF534D94DFA2EAD26(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xF534D94DFA2EAD26  b877</code>
 +
 +==== _0xD558BEC0BBA7E8D2 ====
 +<code cpp>void STATS::_0xD558BEC0BBA7E8D2(Any p0, Any p1, Any p2, Any p3, Any p4) // 0xD558BEC0BBA7E8D2  b877</code>
 +
 +==== _PLAYSTATS_EARNED_MC_POINTS ====
 +<code cpp>void STATS::_PLAYSTATS_EARNED_MC_POINTS(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x501478855A6074CE  b877</code>
 +
 +==== _0x03C2EEBB04B3FB72 ====
 +<code cpp>void STATS::_0x03C2EEBB04B3FB72(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x03C2EEBB04B3FB72  b877</code>
 +
 +==== _0x8989CBD7B4E82534 ====
 +<code cpp>void STATS::_0x8989CBD7B4E82534(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x8989CBD7B4E82534  b877</code>
 +
 +==== _0x27AA1C973CACFE63 ====
 +<code cpp>void STATS::_0x27AA1C973CACFE63(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0x27AA1C973CACFE63  b944</code>
 +
 +==== _PLAYSTATS_COPY_RANK_INTO_NEW_SLOT ====
 +<code cpp>void STATS::_PLAYSTATS_COPY_RANK_INTO_NEW_SLOT(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xB7257BA2550EA10A  b877</code>
 +
 +==== _PLAYSTATS_DUPE_DETECTION ====
 +<code cpp>void STATS::_PLAYSTATS_DUPE_DETECTION(Any* data) // 0x848B66100EE33B05  b1011</code>
 +
 +==== _PLAYSTATS_BAN_ALERT ====
 +<code cpp>void STATS::_PLAYSTATS_BAN_ALERT(int p0) // 0x516FC96EB88EEFE5  b1011</code>
 +
 +==== _PLAYSTATS_GUNRUN_MISSION_ENDED ====
 +<code cpp>void STATS::_PLAYSTATS_GUNRUN_MISSION_ENDED(Any* data) // 0x0EACDF8487D5155A  b1103</code>
 +
 +==== _0xDAF80797FC534BEC ====
 +<code cpp>void STATS::_0xDAF80797FC534BEC(Any p0) // 0xDAF80797FC534BEC  b1103</code>
 +
 +==== _0x316DB59CD14C1774 ====
 +<code cpp>void STATS::_0x316DB59CD14C1774(Any p0) // 0x316DB59CD14C1774  b1493</code>
 +
 +==== _0x2D7A9B577E72385E ====
 +<code cpp>void STATS::_0x2D7A9B577E72385E(Any p0) // 0x2D7A9B577E72385E  b1493</code>
 +
 +==== _0x830C3A44EB3F2CF9 ====
 +<code cpp>void STATS::_0x830C3A44EB3F2CF9(Any p0) // 0x830C3A44EB3F2CF9  b1493</code>
 +
 +==== _0xB26F670685631727 ====
 +<code cpp>void STATS::_0xB26F670685631727(Any p0, Any p1) // 0xB26F670685631727  b1493</code>
 +
 +==== _0xC14BD9F5337219B2 ====
 +<code cpp>void STATS::_0xC14BD9F5337219B2(Any p0, Any p1) // 0xC14BD9F5337219B2  b1493</code>
 +
 +==== _PLAYSTATS_STONE_HATCHET_END ====
 +<code cpp>void STATS::_PLAYSTATS_STONE_HATCHET_END(Any* data) // 0x35E39E5570358630  b1493</code>
 +
 +==== _PLAYSTATS_SMUG_MISSION_ENDED ====
 +<code cpp>void STATS::_PLAYSTATS_SMUG_MISSION_ENDED(Any* data) // 0x320C35147D5B5DDD  b1180</code>
 +
 +==== _PLAYSTATS_H2_FMPREP_END ====
 +<code cpp>void STATS::_PLAYSTATS_H2_FMPREP_END(Any* data) // 0xD8AFB345A9C5CCBB  b1290</code>
 +
 +==== _PLAYSTATS_H2_INSTANCE_END ====
 +<code cpp>void STATS::_PLAYSTATS_H2_INSTANCE_END(Any* data, Any p1, Any p2, Any p3) // 0x1E1497D0D2108115  b1290</code>
 +
 +==== _PLAYSTATS_DAR_MISSION_END ====
 +<code cpp>void STATS::_PLAYSTATS_DAR_MISSION_END(Any* data) // 0x0BC254FF3A911501  b1290</code>
 +
 +==== _PLAYSTATS_ENTER_SESSION_PACK ====
 +<code cpp>void STATS::_PLAYSTATS_ENTER_SESSION_PACK(Any* data) // 0x878FF156D36E9956  b1290</code>
 +
 +==== _PLAYSTATS_DRONE_USAGE ====
 +<code cpp>void STATS::_PLAYSTATS_DRONE_USAGE(int p0, int p1, int p2) // 0x66C7BB2416ED3FCE  b1493</code>
 +
 +==== _PLAYSTATS_SPECTATOR_WHEEL_SPIN ====
 +<code cpp>void STATS::_PLAYSTATS_SPECTATOR_WHEEL_SPIN(int p0, int p1, int p2, int p3) // 0x6731DE84A38BFAD0  b1604</code>
 +
 +==== _PLAYSTATS_ARENA_WAR_SPECTATOR ====
 +<code cpp>void STATS::_PLAYSTATS_ARENA_WAR_SPECTATOR(int p0, int p1, int p2, int p3, int p4) // 0x6F4F599753F8200A  b1604</code>
 +
 +==== _PLAYSTATS_ARENA_WARS_ENDED ====
 +<code cpp>void STATS::_PLAYSTATS_ARENA_WARS_ENDED(Any* data) // 0xB479D9F0D48A1BC5  b1604</code>
 +
 +==== _PLAYSTATS_PASSIVE_MODE ====
 +<code cpp>void STATS::_PLAYSTATS_PASSIVE_MODE(BOOL p0, int p1, int p2, int p3) // 0x35EEC6C2BC821A71  b1734</code>
 +
 +==== _PLAYSTATS_COLLECTIBLE ====
 +<code cpp>void STATS::_PLAYSTATS_COLLECTIBLE(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0xCD0A8A9338681CF2  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_STORY_MISSION_ENDED ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_STORY_MISSION_ENDED(Any p0, Any p1) // 0xFCCCAC2BD3C1F180  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_CHIP ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_CHIP(Any p0) // 0x0999F3F090EC5012  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_ROULETTE ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_ROULETTE(Any p0) // 0x95101C443A84E7F1  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_BLACKJACK ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_BLACKJACK(Any p0) // 0x3EAE97309727E7AD  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_THREECARDPOKER ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_THREECARDPOKER(Any p0) // 0xF740FB339D471C35  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_SLOTMACHINE ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_SLOTMACHINE(Any p0) // 0xEF5EC67D392B830A  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_INSIDETRACK ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_INSIDETRACK(Any p0) // 0x049F059625058A86  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_LUCKYSEVEN ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_LUCKYSEVEN(Any p0) // 0x0C432C1435F5E4FA  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_ROULETTE_LIGHT ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_ROULETTE_LIGHT(Any p0) // 0x6572ABA3DE1197FC  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_BLACKJACK_LIGHT ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_BLACKJACK_LIGHT(Any p0) // 0xD5451C7BF151EB6F  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_THREECARDPOKER_LIGHT ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_THREECARDPOKER_LIGHT(Any p0) // 0xC9001364B4388F22  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_SLOTMACHINE_LIGHT ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_SLOTMACHINE_LIGHT(Any p0) // 0xE60054A0FAE8227F  b1734</code>
 +
 +==== _PLAYSTATS_CASINO_INSIDETRACK_LIGHT ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_INSIDETRACK_LIGHT(Any p0) // 0x23A3CBCD50D54E47  b1734</code>
 +
 +==== _PLAYSTATS_ARCADEGAME ====
 +<code cpp>void STATS::_PLAYSTATS_ARCADEGAME(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x533A7D1EA58DF958  b1734</code>
 +
 +==== _0x4FCDBD3F0A813C25 ====
 +<code cpp>void STATS::_0x4FCDBD3F0A813C25(Any p0, Any p1) // 0x4FCDBD3F0A813C25  b1868</code>
 +
 +==== _PLAYSTATS_CASINO_MISSION_ENDED ====
 +<code cpp>void STATS::_PLAYSTATS_CASINO_MISSION_ENDED(Any* data) // 0x1A0D4A6C336B7BC5  b1734</code>
 +
 +==== _0xDFBD93BF2943E29B ====
 +<code cpp>void STATS::_0xDFBD93BF2943E29B(Any p0) // 0xDFBD93BF2943E29B  b1868</code>
 +
 +==== _0x92FC0EEDFAC04A14 ====
 +<code cpp>void STATS::_0x92FC0EEDFAC04A14(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x92FC0EEDFAC04A14  b1868</code>
 +
 +==== _0x0077F15613D36993 ====
 +<code cpp>void STATS::_0x0077F15613D36993(Any p0, Any p1, Any p2, Any p3) // 0x0077F15613D36993  b1868</code>
 +
 +==== _0xF9096193DF1F99D4 ====
 +<code cpp>void STATS::_0xF9096193DF1F99D4(Any p0) // 0xF9096193DF1F99D4  b1868</code>
 +
 +==== _0x2E0259BABC27A327 ====
 +<code cpp>void STATS::_0x2E0259BABC27A327(Any p0) // 0x2E0259BABC27A327  b1868</code>
 +
 +==== _0x53C31853EC9531FF ====
 +<code cpp>void STATS::_0x53C31853EC9531FF(Any p0) // 0x53C31853EC9531FF  b1868</code>
 +
 +==== _0x810B5FCC52EC7FF0 ====
 +<code cpp>void STATS::_0x810B5FCC52EC7FF0(Any p0, Any p1, Any p2, Any p3) // 0x810B5FCC52EC7FF0  b1868</code>
 +
 +==== _0x5BF29846C6527C54 ====
 +<code cpp>void STATS::_0x5BF29846C6527C54(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x5BF29846C6527C54  b1868</code>
 +
 +==== _0xC03FAB2C2F92289B ====
 +<code cpp>void STATS::_0xC03FAB2C2F92289B(Any p0) // 0xC03FAB2C2F92289B  b1868</code>
 +
 +==== _0x5CDAED54B34B0ED0 ====
 +<code cpp>void STATS::_0x5CDAED54B34B0ED0(Any p0) // 0x5CDAED54B34B0ED0  b1868</code>
 +
 +==== _0x4AFF7E02E485E92B ====
 +<code cpp>void STATS::_0x4AFF7E02E485E92B() // 0x4AFF7E02E485E92B  b1868</code>
 +
 +==== _0xDFCDB14317A9B361 ====
 +<code cpp>void STATS::_0xDFCDB14317A9B361(Any p0) // 0xDFCDB14317A9B361  b2189</code>
 +
 +==== _0xC1E963C58664B556 ====
 +<code cpp>void STATS::_0xC1E963C58664B556(Any p0) // 0xC1E963C58664B556  b2189</code>
 +
 +==== _0x2FA3173480008493 ====
 +<code cpp>void STATS::_0x2FA3173480008493(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x2FA3173480008493  b2189</code>
 +
 +==== _0xD4367D310F079DB0 ====
 +<code cpp>void STATS::_0xD4367D310F079DB0(Any p0, Any p1, Any p2, Any p3) // 0xD4367D310F079DB0  b2189</code>
 +
 +==== _0x4DC416F246A41FC8 ====
 +<code cpp>void STATS::_0x4DC416F246A41FC8(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x4DC416F246A41FC8  b2189</code>
 +
 +==== _0x2818FF6638CB09DE ====
 +<code cpp>void STATS::_0x2818FF6638CB09DE(Any p0) // 0x2818FF6638CB09DE  b2189</code>
 +
 +==== _0xD6CA58B3B53A0F22 ====
 +<code cpp>void STATS::_0xD6CA58B3B53A0F22(Any p0) // 0xD6CA58B3B53A0F22  b2189</code>
 +
 +
 +===== STREAMING =====
 +==== LOAD_ALL_OBJECTS_NOW ====
 +<code cpp>void STREAMING::LOAD_ALL_OBJECTS_NOW() // 0xBD6E84632DD4CB3F 0xC9DBDA90 b323</code>
 +
 +==== LOAD_SCENE ====
 +<code cpp>void STREAMING::LOAD_SCENE(float x, float y, float z) // 0x4448EB75B4904BDB 0xB72403F5 b323</code>
 +
 +==== NETWORK_UPDATE_LOAD_SCENE ====
 +<code cpp>BOOL STREAMING::NETWORK_UPDATE_LOAD_SCENE() // 0xC4582015556D1C46 0xC76E023C b323</code>
 +
 +==== IS_NETWORK_LOADING_SCENE ====
 +<code cpp>BOOL STREAMING::IS_NETWORK_LOADING_SCENE() // 0x41CA5A33160EA4AB 0x6DCFC021 b323</code>
 +
 +==== SET_INTERIOR_ACTIVE ====
 +<code cpp>void STREAMING::SET_INTERIOR_ACTIVE(int interiorID, BOOL toggle) // 0xE37B76C387BE28ED 0xE1013910 b323</code>
 +
 +==== REQUEST_MODEL ====
 +<code cpp>void STREAMING::REQUEST_MODEL(Hash model) // 0x963D27A58DF860AC 0xFFF1B500 b323</code>
 +
 +<code>Request a model to be loaded into memory.
 +</code>
 +==== REQUEST_MENU_PED_MODEL ====
 +<code cpp>void STREAMING::REQUEST_MENU_PED_MODEL(Hash model) // 0xA0261AEF7ACFC51E 0x48CEB6B4 b323</code>
 +
 +==== HAS_MODEL_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_MODEL_LOADED(Hash model) // 0x98A4EB5D89A0C952 0x62BFDB37 b323</code>
 +
 +<code>Checks if the specified model has loaded into memory.</code>
 +==== REQUEST_MODELS_IN_ROOM ====
 +<code cpp>void STREAMING::REQUEST_MODELS_IN_ROOM(Interior interior, const char* roomName) // 0x8A7A40100EDFEC58 0x939243FB b323</code>
 +
 +<code>STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "V_FIB01_cur_elev");
 +STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");
 +STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "V_Office_gnd_lifts");
 +STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "limbo");
 +STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "v_fib01_jan_elev");
 +STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");</code>
 +==== SET_MODEL_AS_NO_LONGER_NEEDED ====
 +<code cpp>void STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(Hash model) // 0xE532F5D78798DAAB 0xAE0F069E b323</code>
 +
 +<code>Unloads model from memory</code>
 +==== IS_MODEL_IN_CDIMAGE ====
 +<code cpp>BOOL STREAMING::IS_MODEL_IN_CDIMAGE(Hash model) // 0x35B9E0803292B641 0x1094782F b323</code>
 +
 +<code>Check if model is in cdimage(rpf)</code>
 +==== IS_MODEL_VALID ====
 +<code cpp>BOOL STREAMING::IS_MODEL_VALID(Hash model) // 0xC0296A2EDF545E92 0xAF8F8E9D b323</code>
 +
 +<code>Returns whether the specified model exists in the game.</code>
 +==== IS_MODEL_A_PED ====
 +<code cpp>BOOL STREAMING::IS_MODEL_A_PED(Hash model) // 0x75816577FEA6DAD5  b1103</code>
 +
 +==== IS_MODEL_A_VEHICLE ====
 +<code cpp>BOOL STREAMING::IS_MODEL_A_VEHICLE(Hash model) // 0x19AAC8F07BFEC53E 0xFFFC85D4 b323</code>
 +
 +<code>Returns whether the specified model represents a vehicle.</code>
 +==== REQUEST_COLLISION_AT_COORD ====
 +<code cpp>void STREAMING::REQUEST_COLLISION_AT_COORD(float x, float y, float z) // 0x07503F7948F491A7 0xCD9805E7 b323</code>
 +
 +==== REQUEST_COLLISION_FOR_MODEL ====
 +<code cpp>void STREAMING::REQUEST_COLLISION_FOR_MODEL(Hash model) // 0x923CB32A3B874FCB 0x3930C042 b323</code>
 +
 +==== HAS_COLLISION_FOR_MODEL_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_COLLISION_FOR_MODEL_LOADED(Hash model) // 0x22CCA434E368F03A 0x41A094F8 b323</code>
 +
 +==== REQUEST_ADDITIONAL_COLLISION_AT_COORD ====
 +<code cpp>void STREAMING::REQUEST_ADDITIONAL_COLLISION_AT_COORD(float x, float y, float z) // 0xC9156DC11411A9EA 0xC2CC1DF2 b323</code>
 +
 +<code>MulleDK19: Alias of REQUEST_COLLISION_AT_COORD.</code>
 +==== DOES_ANIM_DICT_EXIST ====
 +<code cpp>BOOL STREAMING::DOES_ANIM_DICT_EXIST(const char* animDict) // 0x2DA49C3B79856961 0xCD31C872 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== REQUEST_ANIM_DICT ====
 +<code cpp>void STREAMING::REQUEST_ANIM_DICT(const char* animDict) // 0xD3BD40951412FEF6 0xDCA96950 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== HAS_ANIM_DICT_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_ANIM_DICT_LOADED(const char* animDict) // 0xD031A9162D01088C 0x05E6763C b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== REMOVE_ANIM_DICT ====
 +<code cpp>void STREAMING::REMOVE_ANIM_DICT(const char* animDict) // 0xF66A602F829E2A06 0x0AE050B5 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== REQUEST_ANIM_SET ====
 +<code cpp>void STREAMING::REQUEST_ANIM_SET(const char* animSet) // 0x6EA47DAE7FAD0EED 0x2988B3FC b323</code>
 +
 +<code>Starts loading the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== HAS_ANIM_SET_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_ANIM_SET_LOADED(const char* animSet) // 0xC4EA073D86FB29B0 0x4FFF397D b323</code>
 +
 +<code>Gets whether the specified animation set has finished loading. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.
 +
 +Animation set and clip set are synonymous.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== REMOVE_ANIM_SET ====
 +<code cpp>void STREAMING::REMOVE_ANIM_SET(const char* animSet) // 0x16350528F93024B3 0xD04A817A b323</code>
 +
 +<code>Unloads the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.
 +
 +Animation set and clip set are synonymous.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== REQUEST_CLIP_SET ====
 +<code cpp>void STREAMING::REQUEST_CLIP_SET(const char* clipSet) // 0xD2A71E1A77418A49 0x546C627A b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== HAS_CLIP_SET_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_CLIP_SET_LOADED(const char* clipSet) // 0x318234F4F3738AF3 0x230D5455 b323</code>
 +
 +<code>Alias for HAS_ANIM_SET_LOADED.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== REMOVE_CLIP_SET ====
 +<code cpp>void STREAMING::REMOVE_CLIP_SET(const char* clipSet) // 0x01F73A131C18CD94 0x1E21F7AA b323</code>
 +
 +<code>Alias for REMOVE_ANIM_SET.
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json</code>
 +==== REQUEST_IPL ====
 +<code cpp>void STREAMING::REQUEST_IPL(const char* iplName) // 0x41B4893843BBDB74 0x3B70D1DB b323</code>
 +
 +<code>Exemple: REQUEST_IPL("TrevorsTrailerTrash");
 +
 +Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== REMOVE_IPL ====
 +<code cpp>void STREAMING::REMOVE_IPL(const char* iplName) // 0xEE6C5AD3ECE0A82D 0xDF7CBD36 b323</code>
 +
 +<code>Removes an IPL from the map.
 +
 +Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
 +
 +Example:
 +C#:
 +Function.Call(Hash.REMOVE_IPL, "trevorstrailertidy");
 +
 +C++:
 +STREAMING::REMOVE_IPL("trevorstrailertidy");
 +
 +iplName = Name of IPL you want to remove.</code>
 +==== IS_IPL_ACTIVE ====
 +<code cpp>BOOL STREAMING::IS_IPL_ACTIVE(const char* iplName) // 0x88A741E44A2B3495 0xB2C33714 b323</code>
 +
 +<code>Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json</code>
 +==== SET_STREAMING ====
 +<code cpp>void STREAMING::SET_STREAMING(BOOL toggle) // 0x6E0C692677008888 0x27EF6CB2 b323</code>
 +
 +==== _LOAD_GLOBAL_WATER_TYPE ====
 +<code cpp>void STREAMING::_LOAD_GLOBAL_WATER_TYPE(int waterType) // 0x7E3F55ED251B76D3  b2189</code>
 +
 +<code>0 - default
 +1 - HeistIsland</code>
 +==== _GET_GLOBAL_WATER_TYPE ====
 +<code cpp>int STREAMING::_GET_GLOBAL_WATER_TYPE() // 0xF741BD853611592D  b2189</code>
 +
 +==== SET_GAME_PAUSES_FOR_STREAMING ====
 +<code cpp>void STREAMING::SET_GAME_PAUSES_FOR_STREAMING(BOOL toggle) // 0x717CD6E6FAEBBEDC 0x9211A28A b323</code>
 +
 +==== SET_REDUCE_PED_MODEL_BUDGET ====
 +<code cpp>void STREAMING::SET_REDUCE_PED_MODEL_BUDGET(BOOL toggle) // 0x77B5F9A36BF96710 0xAFCB2B86 b323</code>
 +
 +==== SET_REDUCE_VEHICLE_MODEL_BUDGET ====
 +<code cpp>void STREAMING::SET_REDUCE_VEHICLE_MODEL_BUDGET(BOOL toggle) // 0x80C527893080CCF3 0xCDB4FB7E b323</code>
 +
 +==== SET_DITCH_POLICE_MODELS ====
 +<code cpp>void STREAMING::SET_DITCH_POLICE_MODELS(BOOL toggle) // 0x42CBE54462D92634 0x3EA7FCE4 b323</code>
 +
 +<code>This is a NOP function. It does nothing at all.</code>
 +==== GET_NUMBER_OF_STREAMING_REQUESTS ====
 +<code cpp>int STREAMING::GET_NUMBER_OF_STREAMING_REQUESTS() // 0x4060057271CEBC89 0xC2EE9A02 b323</code>
 +
 +==== REQUEST_PTFX_ASSET ====
 +<code cpp>void STREAMING::REQUEST_PTFX_ASSET() // 0x944955FB2A3935C8 0x2C649263 b323</code>
 +
 +<code>maps script name (thread + 0xD0) by lookup via scriptfx.dat - does nothing when script name is empty</code>
 +==== HAS_PTFX_ASSET_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_PTFX_ASSET_LOADED() // 0xCA7D9B86ECA7481B 0x3EFF96BE b323</code>
 +
 +==== REMOVE_PTFX_ASSET ====
 +<code cpp>void STREAMING::REMOVE_PTFX_ASSET() // 0x88C6814073DD4A73 0xC10F178C b323</code>
 +
 +==== REQUEST_NAMED_PTFX_ASSET ====
 +<code cpp>void STREAMING::REQUEST_NAMED_PTFX_ASSET(const char* fxName) // 0xB80D8756B4668AB6 0xCFEA19A9 b323</code>
 +
 +<code> From the b678d decompiled scripts:
 +
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("core_snow");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("fm_mission_controler");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("proj_xmas_firework");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_apartment_mp");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_biolab_heist");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_fireworks");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_parachute");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_wheelsmoke");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_cig_plane");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_creator");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_tankbattle");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_ornate_heist");
 + STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_prison_break_heist_station");</code>
 +==== HAS_NAMED_PTFX_ASSET_LOADED ====
 +<code cpp>BOOL STREAMING::HAS_NAMED_PTFX_ASSET_LOADED(const char* fxName) // 0x8702416E512EC454 0x9ACC6446 b323</code>
 +
 +==== REMOVE_NAMED_PTFX_ASSET ====
 +<code cpp>void STREAMING::REMOVE_NAMED_PTFX_ASSET(const char* fxName) // 0x5F61EBBE1A00F96D 0xC44762A1 b323</code>
 +
 +==== SET_VEHICLE_POPULATION_BUDGET ====
 +<code cpp>void STREAMING::SET_VEHICLE_POPULATION_BUDGET(int p0) // 0xCB9E1EB3BE2AF4E9 0x1D56993C b323</code>
 +
 +==== SET_PED_POPULATION_BUDGET ====
 +<code cpp>void STREAMING::SET_PED_POPULATION_BUDGET(int p0) // 0x8C95333CFC3340F3 0xD2D026CD b323</code>
 +
 +<code>Control how many new (ambient?) peds will spawn in the game world.
 +Range for p0 seems to be 0-3, where 0 is none and 3 is the normal level.</code>
 +==== CLEAR_FOCUS ====
 +<code cpp>void STREAMING::CLEAR_FOCUS() // 0x31B73D1EA9F01DA2 0x34D91E7A b323</code>
 +
 +==== SET_FOCUS_POS_AND_VEL ====
 +<code cpp>void STREAMING::SET_FOCUS_POS_AND_VEL(float x, float y, float z, float offsetX, float offsetY, float offsetZ) // 0xBB7454BAFF08FE25 0x14680A60 b323</code>
 +
 +<code>Override the area where the camera will render the terrain.
 +p3, p4 and p5 are usually set to 0.0
 +</code>
 +==== SET_FOCUS_ENTITY ====
 +<code cpp>void STREAMING::SET_FOCUS_ENTITY(Entity entity) // 0x198F77705FA0931D 0x18DB04AC b323</code>
 +
 +<code>It seems to make the entity's coords mark the point from which LOD-distances are measured. In my testing, setting a vehicle as the focus entity and moving that vehicle more than 300 distance units away from the player will make the level of detail around the player go down drastically (shadows disappear, textures go extremely low res, etc). The player seems to be the default focus entity.</code>
 +==== IS_ENTITY_FOCUS ====
 +<code cpp>BOOL STREAMING::IS_ENTITY_FOCUS(Entity entity) // 0x2DDFF3FB9075D747 0xB456D707 b323</code>
 +
 +==== _0x0811381EF5062FEC ====
 +<code cpp>void STREAMING::_0x0811381EF5062FEC(Entity p0) // 0x0811381EF5062FEC  b323</code>
 +
 +==== SET_MAPDATACULLBOX_ENABLED ====
 +<code cpp>void STREAMING::SET_MAPDATACULLBOX_ENABLED(const char* name, BOOL toggle) // 0xAF12610C644A35C9 0x403CD434 b323</code>
 +
 +<code>Possible p0 values:
 +
 +"prologue"
 +"Prologue_Main"</code>
 +==== _0x4E52E752C76E7E7A ====
 +<code cpp>void STREAMING::_0x4E52E752C76E7E7A(Any p0) // 0x4E52E752C76E7E7A 0xA07BAEB9 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== FORMAT_FOCUS_HEADING ====
 +<code cpp>Any STREAMING::FORMAT_FOCUS_HEADING(float x, float y, float z, float rad, Any p4, Any p5) // 0x219C7B8D53E429FD 0x10B6AB36 b323</code>
 +
 +==== _0x1F3F018BC3AFA77C ====
 +<code cpp>Any STREAMING::_0x1F3F018BC3AFA77C(float p0, float p1, float p2, float p3, float p4, float p5, float p6, Any p7, Any p8) // 0x1F3F018BC3AFA77C 0x72344191 b323</code>
 +
 +==== _0x0AD9710CEE2F590F ====
 +<code cpp>Any STREAMING::_0x0AD9710CEE2F590F(float p0, float p1, float p2, float p3, float p4, float p5, Any p6) // 0x0AD9710CEE2F590F 0xC0157255 b323</code>
 +
 +==== _0x1EE7D8DF4425F053 ====
 +<code cpp>void STREAMING::_0x1EE7D8DF4425F053(Any p0) // 0x1EE7D8DF4425F053 0xE80F8ABE b323</code>
 +
 +==== _0x7D41E9D2D17C5B2D ====
 +<code cpp>Any STREAMING::_0x7D41E9D2D17C5B2D(Any p0) // 0x7D41E9D2D17C5B2D 0x1B3521F4 b323</code>
 +
 +==== _0x07C313F94746702C ====
 +<code cpp>Any STREAMING::_0x07C313F94746702C(Any p0) // 0x07C313F94746702C 0x42CFE9C0 b323</code>
 +
 +==== _0xBC9823AB80A3DCAC ====
 +<code cpp>Any STREAMING::_0xBC9823AB80A3DCAC() // 0xBC9823AB80A3DCAC 0x56253356 b323</code>
 +
 +==== NEW_LOAD_SCENE_START ====
 +<code cpp>BOOL STREAMING::NEW_LOAD_SCENE_START(float posX, float posY, float posZ, float offsetX, float offsetY, float offsetZ, float radius, int p7) // 0x212A8D0D2BABFAC2 0xDF9C38B6 b323</code>
 +
 +<code>`radius` value is usually between `3f` and `7000f` in original 1868 scripts.
 +`p7` is 0, 1, 2, 3 or 4 used in decompiled scripts, 0 is by far the most common.
 +Returns True if success, used only 7 times in decompiled scripts of 1868</code>
 +==== NEW_LOAD_SCENE_START_SPHERE ====
 +<code cpp>BOOL STREAMING::NEW_LOAD_SCENE_START_SPHERE(float x, float y, float z, float radius, Any p4) // 0xACCFB4ACF53551B0 0xFA037FEB b323</code>
 +
 +<code>if (!sub_8f12("START LOAD SCENE SAFE")) {
 +    if (CUTSCENE::GET_CUTSCENE_TIME() > 4178) {
 +        STREAMING::_ACCFB4ACF53551B0(1973.845458984375, 3818.447265625, 32.43629837036133, 15.0, 2);
 +        sub_8e9e("START LOAD SCENE SAFE", 1);
 +    }
 +}
 +
 +(Previously known as STREAMING::_NEW_LOAD_SCENE_START_SAFE)</code>
 +==== NEW_LOAD_SCENE_STOP ====
 +<code cpp>void STREAMING::NEW_LOAD_SCENE_STOP() // 0xC197616D221FF4A4 0x7C05B1F6 b323</code>
 +
 +==== IS_NEW_LOAD_SCENE_ACTIVE ====
 +<code cpp>BOOL STREAMING::IS_NEW_LOAD_SCENE_ACTIVE() // 0xA41A05B6CB741B85 0xAD234B7F b323</code>
 +
 +==== IS_NEW_LOAD_SCENE_LOADED ====
 +<code cpp>BOOL STREAMING::IS_NEW_LOAD_SCENE_LOADED() // 0x01B8247A7A8B9AD1 0x3ECD839F b323</code>
 +
 +==== _0x71E7B2E657449AAD ====
 +<code cpp>Any STREAMING::_0x71E7B2E657449AAD() // 0x71E7B2E657449AAD 0xEAA51103 b323</code>
 +
 +==== START_PLAYER_SWITCH ====
 +<code cpp>void STREAMING::START_PLAYER_SWITCH(Ped from, Ped to, int flags, int switchType) // 0xFAA23F2CBA159D67 0x0829E975 b323</code>
 +
 +<code>// this enum comes directly from R* so don't edit this
 +enum ePlayerSwitchTypes
 +{
 +  SWITCH_TYPE_AUTO,
 + SWITCH_TYPE_LONG,
 + SWITCH_TYPE_MEDIUM,
 +   SWITCH_TYPE_SHORT
 +};
 +
 +Use GET_IDEAL_PLAYER_SWITCH_TYPE for the best switch type.
 +
 +----------------------------------------------------
 +
 +Examples from the decompiled scripts:
 +
 +STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 0, 3);
 +STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 2050, 3);
 +STREAMING::START_PLAYER_SWITCH(PLAYER::PLAYER_PED_ID(), l_832._f3, 1024, 3);
 +STREAMING::START_PLAYER_SWITCH(g_141F27, PLAYER::PLAYER_PED_ID(), 513, v_14);
 +
 +Note: DO NOT, use SWITCH_TYPE_LONG with flag 513. It leaves you stuck in the clouds. You'll have to call STOP_PLAYER_SWITCH() to return to your ped.
 +
 +Flag 8 w/ SWITCH_TYPE_LONG will zoom out 3 steps, then zoom in 2/3 steps and stop on the 3rd and just hang there.
 +Flag 8 w/ SWITCH_TYPE_MEDIUM will zoom out 1 step, and just hang there.</code>
 +==== STOP_PLAYER_SWITCH ====
 +<code cpp>void STREAMING::STOP_PLAYER_SWITCH() // 0x95C0A5BBDC189AA1 0x2832C010 b323</code>
 +
 +==== IS_PLAYER_SWITCH_IN_PROGRESS ====
 +<code cpp>BOOL STREAMING::IS_PLAYER_SWITCH_IN_PROGRESS() // 0xD9D2CFFF49FAB35F 0x56135ACC b323</code>
 +
 +<code>Returns true if the player is currently switching, false otherwise.
 +(When the camera is in the sky moving from Trevor to Franklin for example)</code>
 +==== GET_PLAYER_SWITCH_TYPE ====
 +<code cpp>int STREAMING::GET_PLAYER_SWITCH_TYPE() // 0xB3C94A90D9FC9E62 0x280DC015 b323</code>
 +
 +==== GET_IDEAL_PLAYER_SWITCH_TYPE ====
 +<code cpp>int STREAMING::GET_IDEAL_PLAYER_SWITCH_TYPE(float x1, float y1, float z1, float x2, float y2, float z2) // 0xB5D7B26B45720E05 0xD5A450F1 b323</code>
 +
 +<code>x1, y1, z1 -- Coords of your ped model
 +x2, y2, z2 -- Coords of the ped you want to switch to</code>
 +==== GET_PLAYER_SWITCH_STATE ====
 +<code cpp>int STREAMING::GET_PLAYER_SWITCH_STATE() // 0x470555300D10B2A5 0x39A0E1F2 b323</code>
 +
 +==== GET_PLAYER_SHORT_SWITCH_STATE ====
 +<code cpp>int STREAMING::GET_PLAYER_SHORT_SWITCH_STATE() // 0x20F898A5D9782800 0x9B7BA38F b323</code>
 +
 +==== _0x5F2013F8BC24EE69 ====
 +<code cpp>void STREAMING::_0x5F2013F8BC24EE69(int p0) // 0x5F2013F8BC24EE69 0xF0BD420D b323</code>
 +
 +<code>SET_PLAYER_*</code>
 +==== GET_PLAYER_SWITCH_JUMP_CUT_INDEX ====
 +<code cpp>int STREAMING::GET_PLAYER_SWITCH_JUMP_CUT_INDEX() // 0x78C0D93253149435 0x02BA7AC2 b323</code>
 +
 +==== SET_PLAYER_SWITCH_OUTRO ====
 +<code cpp>void STREAMING::SET_PLAYER_SWITCH_OUTRO(float cameraCoordX, float cameraCoordY, float cameraCoordZ, float camRotationX, float camRotationY, float camRotationZ, float camFov, float camFarClip, int rotationOrder) // 0xC208B673CE446B61 0x47352E14 b323</code>
 +
 +==== SET_PLAYER_SWITCH_ESTABLISHING_SHOT ====
 +<code cpp>void STREAMING::SET_PLAYER_SWITCH_ESTABLISHING_SHOT(const char* name) // 0x0FDE9DBFC0A6BC65 0x279077B0 b323</code>
 +
 +<code>All names can be found in playerswitchestablishingshots.meta</code>
 +==== ALLOW_PLAYER_SWITCH_PAN ====
 +<code cpp>void STREAMING::ALLOW_PLAYER_SWITCH_PAN() // 0x43D1680C6D19A8E9 0x55CB21F9 b323</code>
 +
 +==== ALLOW_PLAYER_SWITCH_OUTRO ====
 +<code cpp>void STREAMING::ALLOW_PLAYER_SWITCH_OUTRO() // 0x74DE2E8739086740 0x1084F2F4 b323</code>
 +
 +==== ALLOW_PLAYER_SWITCH_ASCENT ====
 +<code cpp>void STREAMING::ALLOW_PLAYER_SWITCH_ASCENT() // 0x8E2A065ABDAE6994 0x5B1E995D b323</code>
 +
 +==== ALLOW_PLAYER_SWITCH_DESCENT ====
 +<code cpp>void STREAMING::ALLOW_PLAYER_SWITCH_DESCENT() // 0xAD5FDF34B81BFE79 0x4B4B9A13 b323</code>
 +
 +==== IS_SWITCH_READY_FOR_DESCENT ====
 +<code cpp>BOOL STREAMING::IS_SWITCH_READY_FOR_DESCENT() // 0xDFA80CB25D0A19B3 0x408F7148 b323</code>
 +
 +==== ENABLE_SWITCH_PAUSE_BEFORE_DESCENT ====
 +<code cpp>void STREAMING::ENABLE_SWITCH_PAUSE_BEFORE_DESCENT() // 0xD4793DFF3AF2ABCD 0x4062FF73 b323</code>
 +
 +==== DISABLE_SWITCH_OUTRO_FX ====
 +<code cpp>void STREAMING::DISABLE_SWITCH_OUTRO_FX() // 0xBD605B8E0E18B3BB 0x59CC312D b323</code>
 +
 +==== _SWITCH_OUT_PLAYER ====
 +<code cpp>void STREAMING::_SWITCH_OUT_PLAYER(Ped ped, int flags, int switchType) // 0xAAB3200ED59016BC 0xFB4D062D b323</code>
 +
 +<code>doesn't act normally when used on mount chilliad
 +Flags is a bitflag:
 +2^n - Enabled Functionality:
 +0 - Skip camera rotate up
 +3 - Wait for SET_PLAYER_SWITCH_ESTABLISHING_SHOT / hang at last step. You will still need to run 0x74DE2E8739086740 to exit "properly" and then STOP_PLAYER_SWITCH
 +6 - Invert Switch Direction (false = out, true = in)
 +8 - Hang above ped
 +
 +switchType: 0 - 3
 +0: 1 step towards ped
 +1: 3 steps out from ped
 +2: 1 step out from ped
 +3: 1 step towards ped</code>
 +==== _SWITCH_IN_PLAYER ====
 +<code cpp>void STREAMING::_SWITCH_IN_PLAYER(Ped ped) // 0xD8295AF639FD9CB8 0x2349373B b323</code>
 +
 +==== _0x933BBEEB8C61B5F4 ====
 +<code cpp>BOOL STREAMING::_0x933BBEEB8C61B5F4() // 0x933BBEEB8C61B5F4 0x74C16879 b323</code>
 +
 +<code>Probably IS_SWITCH_*</code>
 +==== GET_PLAYER_SWITCH_INTERP_OUT_DURATION ====
 +<code cpp>int STREAMING::GET_PLAYER_SWITCH_INTERP_OUT_DURATION() // 0x08C2D6C52A3104BB 0x569847E3 b323</code>
 +
 +==== _0x5B48A06DD0E792A5 ====
 +<code cpp>Any STREAMING::_0x5B48A06DD0E792A5() // 0x5B48A06DD0E792A5 0xC7A3D279 b323</code>
 +
 +==== IS_SWITCH_SKIPPING_DESCENT ====
 +<code cpp>BOOL STREAMING::IS_SWITCH_SKIPPING_DESCENT() // 0x5B74EA8CFD5E3E7E 0x90F64284 b323</code>
 +
 +==== _0x1E9057A74FD73E23 ====
 +<code cpp>void STREAMING::_0x1E9057A74FD73E23() // 0x1E9057A74FD73E23  b323</code>
 +
 +==== GET_LODSCALE ====
 +<code cpp>float STREAMING::GET_LODSCALE() // 0x0C15B0E443B2349D 0x7154B6FD b323</code>
 +
 +==== OVERRIDE_LODSCALE_THIS_FRAME ====
 +<code cpp>void STREAMING::OVERRIDE_LODSCALE_THIS_FRAME(float scaling) // 0xA76359FC80B2438E 0xE5612C1A b323</code>
 +
 +<code>This allows you to override "extended distance scaling" setting. Needs to be called each frame.
 +Max scaling seems to be 200.0, normal is 1.0
 +See https://gfycat.com/DetailedHauntingIncatern</code>
 +==== _0xBED8CA5FF5E04113 ====
 +<code cpp>void STREAMING::_0xBED8CA5FF5E04113(float p0, float p1, float p2, float p3) // 0xBED8CA5FF5E04113 0x9CD6A451 b323</code>
 +
 +==== _0x472397322E92A856 ====
 +<code cpp>void STREAMING::_0x472397322E92A856() // 0x472397322E92A856 0x4267DA87 b323</code>
 +
 +==== _0x40AEFD1A244741F2 ====
 +<code cpp>void STREAMING::_0x40AEFD1A244741F2(BOOL p0) // 0x40AEFD1A244741F2 0x9FA4AF99 b323</code>
 +
 +==== _0x03F1A106BDA7DD3E ====
 +<code cpp>void STREAMING::_0x03F1A106BDA7DD3E() // 0x03F1A106BDA7DD3E  b323</code>
 +
 +==== _0x95A7DABDDBB78AE7 ====
 +<code cpp>void STREAMING::_0x95A7DABDDBB78AE7(const char* iplName1, const char* iplName2) // 0x95A7DABDDBB78AE7 0x9EF0A9CF b323</code>
 +
 +==== _0x63EB2B972A218CAC ====
 +<code cpp>void STREAMING::_0x63EB2B972A218CAC() // 0x63EB2B972A218CAC 0xF2CDD6A8 b323</code>
 +
 +==== _0xFB199266061F820A ====
 +<code cpp>BOOL STREAMING::_0xFB199266061F820A() // 0xFB199266061F820A 0x17B0A1CD b323</code>
 +
 +==== _0xF4A0DADB70F57FA6 ====
 +<code cpp>void STREAMING::_0xF4A0DADB70F57FA6() // 0xF4A0DADB70F57FA6 0x3DA7AA5D b323</code>
 +
 +==== _0x5068F488DDB54DD8 ====
 +<code cpp>Any STREAMING::_0x5068F488DDB54DD8() // 0x5068F488DDB54DD8 0xDAB4BAC0 b323</code>
 +
 +==== PREFETCH_SRL ====
 +<code cpp>void STREAMING::PREFETCH_SRL(const char* srl) // 0x3D245789CE12982C 0x37BE2FBB b323</code>
 +
 +<code>This native is used to attribute the SRL that BEGIN_SRL is going to load. This is usually used for 'in-game' cinematics (not cutscenes but camera stuff) instead of SET_FOCUS_POS_AND_VEL because it loads a specific area of the map which is pretty useful when the camera moves from distant areas.
 +For instance, GTA:O opening cutscene.
 +https://pastebin.com/2EeKVeLA : a list of SRL found in srllist.meta
 +https://pastebin.com/zd9XYUWY here is the content of a SRL file opened with codewalker.</code>
 +==== IS_SRL_LOADED ====
 +<code cpp>BOOL STREAMING::IS_SRL_LOADED() // 0xD0263801A4C5B0BB 0x670FA2A6 b323</code>
 +
 +<code>Returns true when the srl from BEGIN_SRL is loaded.</code>
 +==== BEGIN_SRL ====
 +<code cpp>void STREAMING::BEGIN_SRL() // 0x9BADDC94EF83B823 0x24F49427 b323</code>
 +
 +==== END_SRL ====
 +<code cpp>void STREAMING::END_SRL() // 0x0A41540E63C9EE17 0x1977C56A b323</code>
 +
 +<code>Clear the current srl and stop rendering the area selected by PREFETCH_SRL and started with BEGIN_SRL.</code>
 +==== SET_SRL_TIME ====
 +<code cpp>void STREAMING::SET_SRL_TIME(float p0) // 0xA74A541C6884E7B8 0x30F8A487 b323</code>
 +
 +==== _0xEF39EE20C537E98C ====
 +<code cpp>void STREAMING::_0xEF39EE20C537E98C(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0xEF39EE20C537E98C 0x814D0752 b323</code>
 +
 +==== _0xBEB2D9A1D9A8F55A ====
 +<code cpp>void STREAMING::_0xBEB2D9A1D9A8F55A(Any p0, Any p1, Any p2, Any p3) // 0xBEB2D9A1D9A8F55A 0x62F02485 b323</code>
 +
 +==== _0x20C6C7E4EB082A7F ====
 +<code cpp>void STREAMING::_0x20C6C7E4EB082A7F(BOOL p0) // 0x20C6C7E4EB082A7F 0xA6459CAA b323</code>
 +
 +==== _0xF8155A7F03DDFC8E ====
 +<code cpp>void STREAMING::_0xF8155A7F03DDFC8E(Any p0) // 0xF8155A7F03DDFC8E 0xF8F515E4 b323</code>
 +
 +==== SET_HD_AREA ====
 +<code cpp>void STREAMING::SET_HD_AREA(float x, float y, float z, float radius) // 0xB85F26619073E775 0x80BAA035 b323</code>
 +
 +==== CLEAR_HD_AREA ====
 +<code cpp>void STREAMING::CLEAR_HD_AREA() // 0xCE58B1CFB9290813 0x7CAC6FA0 b323</code>
 +
 +==== INIT_CREATOR_BUDGET ====
 +<code cpp>void STREAMING::INIT_CREATOR_BUDGET() // 0xB5A4DB34FE89B88A 0xE243B2AF b323</code>
 +
 +==== SHUTDOWN_CREATOR_BUDGET ====
 +<code cpp>void STREAMING::SHUTDOWN_CREATOR_BUDGET() // 0xCCE26000E9A6FAD7 0x897A510F b323</code>
 +
 +==== ADD_MODEL_TO_CREATOR_BUDGET ====
 +<code cpp>BOOL STREAMING::ADD_MODEL_TO_CREATOR_BUDGET(Hash modelHash) // 0x0BC3144DEB678666 0xC0E83320 b323</code>
 +
 +==== REMOVE_MODEL_FROM_CREATOR_BUDGET ====
 +<code cpp>void STREAMING::REMOVE_MODEL_FROM_CREATOR_BUDGET(Hash modelHash) // 0xF086AD9354FAC3A3 0x1C576388 b323</code>
 +
 +==== _GET_USED_CREATOR_MODEL_MEMORY_PERCENTAGE ====
 +<code cpp>float STREAMING::_GET_USED_CREATOR_MODEL_MEMORY_PERCENTAGE() // 0x3D3D8B3BE5A83D35 0x3E9C4CBE b323</code>
 +
 +<code>0.0 = no memory used
 +1.0 = all memory used
 +
 +Maximum model memory (as defined in common\data\missioncreatordata.meta) is 100 MiB
 +
 +GET_*</code>
 +==== _SET_ISLAND_HOPPER_ENABLED ====
 +<code cpp>void STREAMING::_SET_ISLAND_HOPPER_ENABLED(const char* name, BOOL toggle) // 0x9A9D1BA639675CF1  b2189</code>
 +
 +<code>Enables the specified island. For more information, see islandhopper.meta</code>
 +
 +===== TASK =====
 +==== TASK_PAUSE ====
 +<code cpp>void TASK::TASK_PAUSE(Ped ped, int ms) // 0xE73A266DB0CA9042 0x17A64668 b323</code>
 +
 +<code>Stand still (?)</code>
 +==== TASK_STAND_STILL ====
 +<code cpp>void TASK::TASK_STAND_STILL(Ped ped, int time) // 0x919BE13EED931959 0x6F80965D b323</code>
 +
 +<code>Makes the specified ped stand still for (time) milliseconds.</code>
 +==== TASK_JUMP ====
 +<code cpp>void TASK::TASK_JUMP(Ped ped, BOOL unused, Any p2, Any p3) // 0x0AE4086104E067B1 0x0356E3CE b323</code>
 +
 +<code>Definition is wrong. This has 4 parameters (Not sure when they were added. v350 has 2, v678 has 4).
 +
 +v350: Ped ped, bool unused
 +v678: Ped ped, bool unused, bool flag1, bool flag2
 +
 +flag1 = super jump, flag2 = do nothing if flag1 is false and doubles super jump height if flag1 is true.</code>
 +==== TASK_COWER ====
 +<code cpp>void TASK::TASK_COWER(Ped ped, int duration) // 0x3EB1FE9E8E908E15 0x9CF1C19B b323</code>
 +
 +==== TASK_HANDS_UP ====
 +<code cpp>void TASK::TASK_HANDS_UP(Ped ped, int duration, Ped facingPed, int p3, BOOL p4) // 0xF2EAB31979A7F910 0x8DCC19C5 b323</code>
 +
 +<code>In the scripts, p3 was always -1.
 +
 +p3 seems to be duration or timeout of turn animation.
 +Also facingPed can be 0 or -1 so ped will just raise hands up.</code>
 +==== UPDATE_TASK_HANDS_UP_DURATION ====
 +<code cpp>void TASK::UPDATE_TASK_HANDS_UP_DURATION(Ped ped, int duration) // 0xA98FCAFD7893C834 0x3AA39BE9 b323</code>
 +
 +==== TASK_OPEN_VEHICLE_DOOR ====
 +<code cpp>void TASK::TASK_OPEN_VEHICLE_DOOR(Ped ped, Vehicle vehicle, int timeOut, int seat, float speed) // 0x965791A9A488A062 0x8EE06BF4 b323</code>
 +
 +<code>The given ped will try to open the nearest door to 'seat'.
 +Example: telling the ped to open the door for the driver seat does not necessarily mean it will open the driver door, it may choose to open the passenger door instead if that one is closer.</code>
 +==== TASK_ENTER_VEHICLE ====
 +<code cpp>void TASK::TASK_ENTER_VEHICLE(Ped ped, Vehicle vehicle, int timeout, int seat, float speed, int flag, Any p6) // 0xC20E50AA46D09CA8 0xB8689B4E b323</code>
 +
 +<code>speed 1.0 = walk, 2.0 = run
 +p5 1 = normal, 3 = teleport to vehicle, 16 = teleport directly into vehicle
 +p6 is always 0
 +
 +Usage of seat 
 +-1 = driver
 +0 = passenger
 +1 = left back seat
 +2 = right back seat
 +3 = outside left
 +4 = outside right</code>
 +==== TASK_LEAVE_VEHICLE ====
 +<code cpp>void TASK::TASK_LEAVE_VEHICLE(Ped ped, Vehicle vehicle, int flags) // 0xD3DBCE61A490BE02 0x7B1141C6 b323</code>
 +
 +<code>Flags from decompiled scripts:
 +0 = normal exit and closes door.
 +1 = normal exit and closes door.
 +16 = teleports outside, door kept closed.
 +64 = normal exit and closes door, maybe a bit slower animation than 0.
 +256 = normal exit but does not close the door.
 +4160 = ped is throwing himself out, even when the vehicle is still.
 +262144 = ped moves to passenger seat first, then exits normally
 +
 +Others to be tried out: 320, 512, 131072.</code>
 +==== TASK_GET_OFF_BOAT ====
 +<code cpp>void TASK::TASK_GET_OFF_BOAT(Ped ped, Vehicle boat) // 0x9C00E77AF14B2DFF 0x4293601F b323</code>
 +
 +==== TASK_SKY_DIVE ====
 +<code cpp>void TASK::TASK_SKY_DIVE(Ped ped, BOOL p1) // 0x601736CFE536B0A0 0xD3874AFA b323</code>
 +
 +==== TASK_PARACHUTE ====
 +<code cpp>void TASK::TASK_PARACHUTE(Ped ped, BOOL p1, BOOL p2) // 0xD2F1C53C97EE81AB 0xEC3060A2 b323</code>
 +
 +<code>Second parameter is unused.
 +
 +second parameter was for jetpack in the early stages of gta and the hard coded code is now removed</code>
 +==== TASK_PARACHUTE_TO_TARGET ====
 +<code cpp>void TASK::TASK_PARACHUTE_TO_TARGET(Ped ped, float x, float y, float z) // 0xB33E291AFA6BD03A 0xE0104D6C b323</code>
 +
 +<code>makes ped parachute to coords x y z. Works well with PATHFIND::GET_SAFE_COORD_FOR_PED</code>
 +==== SET_PARACHUTE_TASK_TARGET ====
 +<code cpp>void TASK::SET_PARACHUTE_TASK_TARGET(Ped ped, float x, float y, float z) // 0xC313379AF0FCEDA7 0x6ED3AD81 b323</code>
 +
 +==== SET_PARACHUTE_TASK_THRUST ====
 +<code cpp>void TASK::SET_PARACHUTE_TASK_THRUST(Ped ped, float thrust) // 0x0729BAC1B8C64317 0xD07C8AAA b323</code>
 +
 +==== TASK_RAPPEL_FROM_HELI ====
 +<code cpp>void TASK::TASK_RAPPEL_FROM_HELI(Ped ped, float p1) // 0x09693B0312F91649 0x2C7ADB93 b323</code>
 +
 +<code>Only appears twice in the scripts.
 +
 +TASK::TASK_RAPPEL_FROM_HELI(PLAYER::PLAYER_PED_ID(), 0x41200000);
 +TASK::TASK_RAPPEL_FROM_HELI(a_0, 0x41200000);</code>
 +==== TASK_VEHICLE_DRIVE_TO_COORD ====
 +<code cpp>void TASK::TASK_VEHICLE_DRIVE_TO_COORD(Ped ped, Vehicle vehicle, float x, float y, float z, float speed, Any p6, Hash vehicleModel, int drivingMode, float stopRange, float p10) // 0xE2A2AA2F659D77A7 0xE4AC0387 b323</code>
 +
 +<code>info about driving modes: HTTP://gtaforums.com/topic/822314-guide-driving-styles/
 +---------------------------------------------------------------
 +Passing P6 value as floating value didn't throw any errors, though unsure what is it exactly, looks like radius or something.
 +
 +P10 though, it is mentioned as float, however, I used bool and set it to true, that too worked.
 +Here the e.g. code I used
 +Function.Call(Hash.TASK_VEHICLE_DRIVE_TO_COORD, Ped, Vehicle, Cor X, Cor Y, Cor Z, 30f, 1f, Vehicle.GetHashCode(), 16777216, 1f, true);</code>
 +==== TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE ====
 +<code cpp>void TASK::TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(Ped ped, Vehicle vehicle, float x, float y, float z, float speed, int driveMode, float stopRange) // 0x158BB33F920D360C 0x1490182A b323</code>
 +
 +==== TASK_VEHICLE_DRIVE_WANDER ====
 +<code cpp>void TASK::TASK_VEHICLE_DRIVE_WANDER(Ped ped, Vehicle vehicle, float speed, int drivingStyle) // 0x480142959D337D00 0x36EC0EB0 b323</code>
 +
 +==== TASK_FOLLOW_TO_OFFSET_OF_ENTITY ====
 +<code cpp>void TASK::TASK_FOLLOW_TO_OFFSET_OF_ENTITY(Ped ped, Entity entity, float offsetX, float offsetY, float offsetZ, float movementSpeed, int timeout, float stoppingRange, BOOL persistFollowing) // 0x304AE42E357B8C7E 0x2DF5A6AC b323</code>
 +
 +<code>p6 always -1
 +p7 always 10.0
 +p8 always 1</code>
 +==== TASK_GO_STRAIGHT_TO_COORD ====
 +<code cpp>void TASK::TASK_GO_STRAIGHT_TO_COORD(Ped ped, float x, float y, float z, float speed, int timeout, float targetHeading, float distanceToSlide) // 0xD76B57B44F1E6F8B 0x80A9E7A7 b323</code>
 +
 +==== TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY ====
 +<code cpp>void TASK::TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY(Entity entity1, Entity entity2, float p2, float p3, float p4, float p5, Any p6) // 0x61E360B7E040D12E 0xD26CAC68 b323</code>
 +
 +==== TASK_ACHIEVE_HEADING ====
 +<code cpp>void TASK::TASK_ACHIEVE_HEADING(Ped ped, float heading, int timeout) // 0x93B93A37987F1F3D 0x0A0E9B42 b323</code>
 +
 +<code>Makes the specified ped achieve the specified heading.
 +
 +pedHandle: The handle of the ped to assign the task to.
 +heading: The desired heading.
 +timeout: The time, in milliseconds, to allow the task to complete. If the task times out, it is cancelled, and the ped will stay at the heading it managed to reach in the time.</code>
 +==== TASK_FLUSH_ROUTE ====
 +<code cpp>void TASK::TASK_FLUSH_ROUTE() // 0x841142A1376E9006 0x34219154 b323</code>
 +
 +<code>MulleKD19: Clears the current point route. Call this before TASK_EXTEND_ROUTE and TASK_FOLLOW_POINT_ROUTE.</code>
 +==== TASK_EXTEND_ROUTE ====
 +<code cpp>void TASK::TASK_EXTEND_ROUTE(float x, float y, float z) // 0x1E7889778264843A 0x43271F69 b323</code>
 +
 +<code>MulleKD19: Adds a new point to the current point route. Call TASK_FLUSH_ROUTE before the first call to this. Call TASK_FOLLOW_POINT_ROUTE to make the Ped go the route.
 +
 +A maximum of 8 points can be added.</code>
 +==== TASK_FOLLOW_POINT_ROUTE ====
 +<code cpp>void TASK::TASK_FOLLOW_POINT_ROUTE(Ped ped, float speed, int unknown) // 0x595583281858626E 0xB837C816 b323</code>
 +
 +<code>MulleKD19: Makes the ped go on the created point route.
 +
 +ped: The ped to give the task to.
 +speed: The speed to move at in m/s.
 +int: Unknown. Can be 0, 1, 2 or 3.
 +
 +Example:
 +TASK_FLUSH_ROUTE();
 +TASK_EXTEND_ROUTE(0f, 0f, 70f);
 +TASK_EXTEND_ROUTE(10f, 0f, 70f);
 +TASK_EXTEND_ROUTE(10f, 10f, 70f);
 +TASK_FOLLOW_POINT_ROUTE(GET_PLAYER_PED(), 1f, 0);</code>
 +==== TASK_GO_TO_ENTITY ====
 +<code cpp>void TASK::TASK_GO_TO_ENTITY(Entity entity, Entity target, int duration, float distance, float speed, float p5, int p6) // 0x6A071245EB0D1882 0x374827C2 b323</code>
 +
 +<code>The entity will move towards the target until time is over (duration) or get in target's range (distance). p5 and p6 are unknown, but you could leave p5 = 1073741824 or 100 or even 0 (didn't see any difference but on the decompiled scripts, they use 1073741824 mostly) and p6 = 0
 +
 +Note: I've only tested it on entity -> ped and target -> vehicle. It could work differently on other entities, didn't try it yet.
 +
 +Example: TASK::TASK_GO_TO_ENTITY(pedHandle, vehicleHandle, 5000, 4.0, 100, 1073741824, 0)
 +
 +Ped will run towards the vehicle for 5 seconds and stop when time is over or when he gets 4 meters(?) around the vehicle (with duration = -1, the task duration will be ignored).</code>
 +==== TASK_SMART_FLEE_COORD ====
 +<code cpp>void TASK::TASK_SMART_FLEE_COORD(Ped ped, float x, float y, float z, float distance, int time, BOOL p6, BOOL p7) // 0x94587F17E9C365D5 0xB2E686FC b323</code>
 +
 +<code>Makes the specified ped flee the specified distance from the specified position.</code>
 +==== TASK_SMART_FLEE_PED ====
 +<code cpp>void TASK::TASK_SMART_FLEE_PED(Ped ped, Ped fleeTarget, float distance, Any fleeTime, BOOL p4, BOOL p5) // 0x22B0D0E37CCB840D 0xE52EB560 b323</code>
 +
 +<code>Makes a ped run away from another ped (fleeTarget).
 +
 +distance = ped will flee this distance.
 +fleeTime = ped will flee for this amount of time, set to "-1" to flee forever</code>
 +==== TASK_REACT_AND_FLEE_PED ====
 +<code cpp>void TASK::TASK_REACT_AND_FLEE_PED(Ped ped, Ped fleeTarget) // 0x72C896464915D1B1 0x8A632BD8 b323</code>
 +
 +==== TASK_SHOCKING_EVENT_REACT ====
 +<code cpp>void TASK::TASK_SHOCKING_EVENT_REACT(Ped ped, int eventHandle) // 0x452419CBD838065B 0x9BD00ACF b323</code>
 +
 +==== TASK_WANDER_IN_AREA ====
 +<code cpp>void TASK::TASK_WANDER_IN_AREA(Ped ped, float x, float y, float z, float radius, float minimalLength, float timeBetweenWalks) // 0xE054346CA3A0F315 0xC6981FB9 b323</code>
 +
 +==== TASK_WANDER_STANDARD ====
 +<code cpp>void TASK::TASK_WANDER_STANDARD(Ped ped, float p1, int p2) // 0xBB9CE077274F6A1B 0xAF59151A b323</code>
 +
 +<code>Makes ped walk around the area.
 +
 +set p1 to 10.0f and p2 to 10 if you want the ped to walk anywhere without a duration.</code>
 +==== TASK_WANDER_SPECIFIC ====
 +<code cpp>void TASK::TASK_WANDER_SPECIFIC(Any p0, Any p1, Any p2, Any p3) // 0x6919A2F136426098  b1868</code>
 +
 +==== TASK_VEHICLE_PARK ====
 +<code cpp>void TASK::TASK_VEHICLE_PARK(Ped ped, Vehicle vehicle, float x, float y, float z, float heading, int mode, float radius, BOOL keepEngineOn) // 0x0F3E34E968EA374E 0x5C85FF90 b323</code>
 +
 +<code>Modes:
 +0 - ignore heading
 +1 - park forward
 +2 - park backwards
 +
 +Depending on the angle of approach, the vehicle can park at the specified heading or at its exact opposite (-180) angle.
 +
 +Radius seems to define how close the vehicle has to be -after parking- to the position for this task considered completed. If the value is too small, the vehicle will try to park again until it's exactly where it should be. 20.0 Works well but lower values don't, like the radius is measured in centimeters or something.</code>
 +==== TASK_STEALTH_KILL ====
 +<code cpp>void TASK::TASK_STEALTH_KILL(Ped killer, Ped target, Hash actionType, float p3, Any p4) // 0xAA5DC05579D60BD9 0x0D64C2FA b323</code>
 +
 +<code>known "killTypes" are: "AR_stealth_kill_knife" and "AR_stealth_kill_a".</code>
 +==== TASK_PLANT_BOMB ====
 +<code cpp>void TASK::TASK_PLANT_BOMB(Ped ped, float x, float y, float z, float heading) // 0x965FEC691D55E9BF 0x33457535 b323</code>
 +
 +==== TASK_FOLLOW_NAV_MESH_TO_COORD ====
 +<code cpp>void TASK::TASK_FOLLOW_NAV_MESH_TO_COORD(Ped ped, float x, float y, float z, float speed, int timeout, float stoppingRange, BOOL persistFollowing, float unk) // 0x15D3A79D4E44B913 0xFE4A10D9 b323</code>
 +
 +<code>If no timeout, set timeout to -1.</code>
 +==== TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED ====
 +<code cpp>void TASK::TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED(Ped ped, float x, float y, float z, float speed, int timeout, float unkFloat, int unkInt, float unkX, float unkY, float unkZ, float unk_40000f) // 0x17F58B88D085DBAC 0x6BF6E296 b323</code>
 +
 +==== SET_PED_PATH_CAN_USE_CLIMBOVERS ====
 +<code cpp>void TASK::SET_PED_PATH_CAN_USE_CLIMBOVERS(Ped ped, BOOL Toggle) // 0x8E06A6FE76C9EFF4 0xB7B7D442 b323</code>
 +
 +==== SET_PED_PATH_CAN_USE_LADDERS ====
 +<code cpp>void TASK::SET_PED_PATH_CAN_USE_LADDERS(Ped ped, BOOL Toggle) // 0x77A5B103C87F476E 0x53A879EE b323</code>
 +
 +==== SET_PED_PATH_CAN_DROP_FROM_HEIGHT ====
 +<code cpp>void TASK::SET_PED_PATH_CAN_DROP_FROM_HEIGHT(Ped ped, BOOL Toggle) // 0xE361C5C71C431A4F 0x394B7AC9 b323</code>
 +
 +==== SET_PED_PATH_CLIMB_COST_MODIFIER ====
 +<code cpp>void TASK::SET_PED_PATH_CLIMB_COST_MODIFIER(Ped ped, float modifier) // 0x88E32DB8C1A4AA4B 0x55E06443 b323</code>
 +
 +<code>Default modifier is 1.0, minimum is 0.0 and maximum is 10.0.</code>
 +==== SET_PED_PATH_MAY_ENTER_WATER ====
 +<code cpp>void TASK::SET_PED_PATH_MAY_ENTER_WATER(Ped ped, BOOL mayEnterWater) // 0xF35425A4204367EC 0x9C606EE3 b323</code>
 +
 +==== SET_PED_PATH_PREFER_TO_AVOID_WATER ====
 +<code cpp>void TASK::SET_PED_PATH_PREFER_TO_AVOID_WATER(Ped ped, BOOL avoidWater) // 0x38FE1EC73743793C 0x0EA39A29 b323</code>
 +
 +==== SET_PED_PATH_AVOID_FIRE ====
 +<code cpp>void TASK::SET_PED_PATH_AVOID_FIRE(Ped ped, BOOL avoidFire) // 0x4455517B28441E60 0xDCC5B934 b323</code>
 +
 +==== SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT ====
 +<code cpp>void TASK::SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT(float height) // 0x6C6B148586F934F7 0x2AFB14B8 b323</code>
 +
 +<code>Needs to be looped! And yes, it does work and is not a hash collision.
 +Birds will try to reach the given height.</code>
 +==== GET_NAVMESH_ROUTE_DISTANCE_REMAINING ====
 +<code cpp>int TASK::GET_NAVMESH_ROUTE_DISTANCE_REMAINING(Ped ped, float* distanceRemaining, BOOL* isPathReady) // 0xC6F5C0BCDC74D62D 0xD9281778 b323</code>
 +
 +<code>Looks like the last parameter returns true if the path has been calculated, while the first returns the remaining distance to the end of the path.
 +Return value of native is the same as GET_NAVMESH_ROUTE_RESULT
 +Looks like the native returns an int for the path's state:
 +1 - ???
 +2 - ???
 +3 - Finished Generating </code>
 +==== GET_NAVMESH_ROUTE_RESULT ====
 +<code cpp>int TASK::GET_NAVMESH_ROUTE_RESULT(Ped ped) // 0x632E831F382A0FA8 0x96491602 b323</code>
 +
 +<code>See GET_NAVMESH_ROUTE_DISTANCE_REMAINING for more details.</code>
 +==== _0x3E38E28A1D80DDF6 ====
 +<code cpp>BOOL TASK::_0x3E38E28A1D80DDF6(Ped ped) // 0x3E38E28A1D80DDF6 0x54856309 b323</code>
 +
 +<code>IS_*</code>
 +==== TASK_GO_TO_COORD_ANY_MEANS ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_ANY_MEANS(Ped ped, float x, float y, float z, float speed, Any p5, BOOL p6, int walkingStyle, float p8) // 0x5BC448CB78FA3E88 0xF91DF93B b323</code>
 +
 +<code>example from fm_mission_controller
 +
 +TASK::TASK_GO_TO_COORD_ANY_MEANS(l_649, sub_f7e86(-1, 0), 1.0, 0, 0, 786603, 0xbf800000);
 + </code>
 +==== TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS(Ped ped, float x, float y, float z, float speed, Any p5, BOOL p6, int walkingStyle, float p8, Any p9, Any p10, Any p11, Any p12) // 0x1DD45F9ECFDB1BC9 0x094B75EF b323</code>
 +
 +==== TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS_WITH_CRUISE_SPEED ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS_WITH_CRUISE_SPEED(Ped ped, float x, float y, float z, float speed, Any p5, BOOL p6, int walkingStyle, float p8, Any p9, Any p10, Any p11, Any p12, Any p13) // 0xB8ECD61F531A7B02 0x86DC03F9 b323</code>
 +
 +==== TASK_PLAY_ANIM ====
 +<code cpp>void TASK::TASK_PLAY_ANIM(Ped ped, const char* animDictionary, const char* animationName, float blendInSpeed, float blendOutSpeed, int duration, int flag, float playbackRate, BOOL lockX, BOOL lockY, BOOL lockZ) // 0xEA47FE3719165B94 0x5AB552C6 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
 +
 +float speed > normal speed is 8.0f
 +----------------------
 +
 +float speedMultiplier > multiply the playback speed
 +----------------------
 +
 +int duration: time in millisecond
 +----------------------
 +-1 _ _ _ _ _ _ _> Default (see flag)
 +0 _ _ _ _ _ _ _ > Not play at all
 +Small value _ _ > Slow down animation speed
 +Other _ _ _ _ _ > freeze player control until specific time (ms) has 
 +_ _ _ _ _ _ _ _ _ passed. (No effect if flag is set to be 
 +_ _ _ _ _ _ _ _ _ controllable.)
 +
 +int flag:
 +----------------------
 +enum eAnimationFlags
 +{
 + ANIM_FLAG_NORMAL = 0,
 +   ANIM_FLAG_REPEAT = 1,
 +   ANIM_FLAG_STOP_LAST_FRAME = 2,
 +   ANIM_FLAG_UPPERBODY = 16,
 +   ANIM_FLAG_ENABLE_PLAYER_CONTROL = 32,
 +   ANIM_FLAG_CANCELABLE = 120,
 +};
 +Odd number : loop infinitely
 +Even number : Freeze at last frame
 +Multiple of 4: Freeze at last frame but controllable
 +
 +01 to 15 > Full body
 +10 to 31 > Upper body
 +32 to 47 > Full body > Controllable
 +48 to 63 > Upper body > Controllable
 +...
 +001 to 255 > Normal
 +256 to 511 > Garbled
 +...
 +
 +playbackRate:
 +
 +values are between 0.0 and 1.0
 +
 +
 +lockX:  
 +
 +0 in most cases 1 for rcmepsilonism8 and rcmpaparazzo_3
 +> 1 for mini@sprunk
 + 
 +
 +lockY:
 +
 +0 in most cases 
 +1 for missfam5_yoga, missfra1mcs_2_crew_react
 +
 +
 +lockZ: 
 +
 +    0 for single player 
 +    Can be 1 but only for MP </code>
 +==== TASK_PLAY_ANIM_ADVANCED ====
 +<code cpp>void TASK::TASK_PLAY_ANIM_ADVANCED(Ped ped, const char* animDict, const char* animName, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float animEnterSpeed, float animExitSpeed, int duration, Any flag, float animTime, Any p14, Any p15) // 0x83CDB10EA29B370B 0x3DDEB0E6 b323</code>
 +
 +<code>It's similar to TASK_PLAY_ANIM, except the first 6 floats let you specify the initial position and rotation of the task. (Ped gets teleported to the position).
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== STOP_ANIM_TASK ====
 +<code cpp>void TASK::STOP_ANIM_TASK(Ped ped, const char* animDictionary, const char* animationName, float p3) // 0x97FF36A1D40EA00A 0x2B520A57 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== TASK_SCRIPTED_ANIMATION ====
 +<code cpp>void TASK::TASK_SCRIPTED_ANIMATION(Ped ped, Any* p1, Any* p2, Any* p3, float p4, float p5) // 0x126EF75F1E17ABE5 0xFC2DCF47 b323</code>
 +
 +<code>From fm_mission_controller.c:
 +reserve_network_mission_objects(get_num_reserved_mission_objects(0) + 1);
 +           vVar28 = {0.094f, 0.02f, -0.005f};
 +            vVar29 = {-92.24f, 63.64f, 150.24f};
 +          func_253(&uVar30, joaat("prop_ld_case_01"), Global_1592429.imm_34757[iParam1 <268>], 1, 1, 0, 1);
 +         set_entity_lod_dist(net_to_ent(uVar30), 500);
 +         attach_entity_to_entity(net_to_ent(uVar30), iParam0, get_ped_bone_index(iParam0, 28422), vVar28, vVar29, 1, 0, 0, 0, 2, 1);
 +           Var31.imm_4 = 1065353216;
 +         Var31.imm_5 = 1065353216;
 +         Var31.imm_9 = 1065353216;
 +         Var31.imm_10 = 1065353216;
 +            Var31.imm_14 = 1065353216;
 +            Var31.imm_15 = 1065353216;
 +            Var31.imm_17 = 1040187392;
 +            Var31.imm_18 = 1040187392;
 +            Var31.imm_19 = -1;
 +            Var32.imm_4 = 1065353216;
 +         Var32.imm_5 = 1065353216;
 +         Var32.imm_9 = 1065353216;
 +         Var32.imm_10 = 1065353216;
 +            Var32.imm_14 = 1065353216;
 +            Var32.imm_15 = 1065353216;
 +            Var32.imm_17 = 1040187392;
 +            Var32.imm_18 = 1040187392;
 +            Var32.imm_19 = -1;
 +            Var31 = 1;
 +            Var31.imm_1 = "weapons@misc@jerrycan@mp_male";
 +          Var31.imm_2 = "idle";
 +           Var31.imm_20 = 1048633;
 +           Var31.imm_4 = 0.5f;
 +           Var31.imm_16 = get_hash_key("BONEMASK_ARMONLY_R");
 +          task_scripted_animation(iParam0, &Var31, &Var32, &Var32, 0f, 0.25f);
 +          set_model_as_no_longer_needed(joaat("prop_ld_case_01"));
 +            remove_anim_dict("anim@heists@biolab@");</code>
 +==== PLAY_ENTITY_SCRIPTED_ANIM ====
 +<code cpp>void TASK::PLAY_ENTITY_SCRIPTED_ANIM(Any p0, Any* p1, Any* p2, Any* p3, float p4, float p5) // 0x77A1EEC547E7FCF1 0x02F72AE5 b323</code>
 +
 +==== STOP_ANIM_PLAYBACK ====
 +<code cpp>void TASK::STOP_ANIM_PLAYBACK(Ped ped, int p1, BOOL p2) // 0xEE08C992D238C5D1 0xE5F16398 b323</code>
 +
 +<code>Looks like p1 may be a flag, still need to do some research, though.</code>
 +==== SET_ANIM_WEIGHT ====
 +<code cpp>void TASK::SET_ANIM_WEIGHT(Any p0, float p1, Any p2, Any p3, BOOL p4) // 0x207F1A47C0342F48 0x17229D98 b323</code>
 +
 +==== SET_ANIM_RATE ====
 +<code cpp>void TASK::SET_ANIM_RATE(Any p0, float p1, Any p2, BOOL p3) // 0x032D49C5E359C847 0x6DB46584 b323</code>
 +
 +==== SET_ANIM_LOOPED ====
 +<code cpp>void TASK::SET_ANIM_LOOPED(Any p0, BOOL p1, Any p2, BOOL p3) // 0x70033C3CC29A1FF4 0x095D61A4 b323</code>
 +
 +==== TASK_PLAY_PHONE_GESTURE_ANIMATION ====
 +<code cpp>void TASK::TASK_PLAY_PHONE_GESTURE_ANIMATION(Ped ped, const char* animDict, const char* animation, const char* boneMaskType, float p4, float p5, BOOL p6, BOOL p7) // 0x8FBB6758B3B3E9EC 0x1582162C b323</code>
 +
 +<code>Example from the scripts:
 +TASK::TASK_PLAY_PHONE_GESTURE_ANIMATION(PLAYER::PLAYER_PED_ID(), v_3, v_2, v_4, 0.25, 0.25, 0, 0);
 +
 +=========================================================
 +^^ No offense, but Idk how that would really help anyone.
 +
 +As for the animDict & animation, they're both store in a global in all 5 scripts. So if anyone would be so kind as to read that global and comment what strings they use. Thanks.
 +
 +Known boneMaskTypes'
 +"BONEMASK_HEADONLY"
 +"BONEMASK_HEAD_NECK_AND_ARMS"
 +"BONEMASK_HEAD_NECK_AND_L_ARM"
 +"BONEMASK_HEAD_NECK_AND_R_ARM"
 +
 +p4 known args - 0.0f, 0.5f, 0.25f
 +p5 known args - 0.0f, 0.25f
 +p6 known args - 1 if a global if check is passed.
 +p7 known args - 1 if a global if check is passed.
 +
 +The values found above, I found within the 5 scripts this is ever called in. (fmmc_launcher, fm_deathmatch_controller, fm_impromptu_dm_controller, fm_mission_controller, and freemode).
 +=========================================================
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== TASK_STOP_PHONE_GESTURE_ANIMATION ====
 +<code cpp>void TASK::TASK_STOP_PHONE_GESTURE_ANIMATION(Ped ped, Any p1) // 0x3FA00D4F4641BFAE 0x5A32D4B4 b323</code>
 +
 +==== IS_PLAYING_PHONE_GESTURE_ANIM ====
 +<code cpp>BOOL TASK::IS_PLAYING_PHONE_GESTURE_ANIM(Ped ped) // 0xB8EBB1E9D3588C10 0x500B6805 b323</code>
 +
 +==== GET_PHONE_GESTURE_ANIM_CURRENT_TIME ====
 +<code cpp>float TASK::GET_PHONE_GESTURE_ANIM_CURRENT_TIME(Ped ped) // 0x47619ABE8B268C60 0x7B72AFD1 b323</code>
 +
 +==== GET_PHONE_GESTURE_ANIM_TOTAL_TIME ====
 +<code cpp>float TASK::GET_PHONE_GESTURE_ANIM_TOTAL_TIME(Ped ped) // 0x1EE0F68A7C25DEC6 0xEF8C3959 b323</code>
 +
 +==== TASK_VEHICLE_PLAY_ANIM ====
 +<code cpp>void TASK::TASK_VEHICLE_PLAY_ANIM(Vehicle vehicle, const char* animationSet, const char* animationName) // 0x69F5C3BD0F3EBD89 0x2B28F598 b323</code>
 +
 +<code>Most probably plays a specific animation on vehicle. For example getting chop out of van etc...
 +
 +Here's how its used - 
 +
 +TASK::TASK_VEHICLE_PLAY_ANIM(l_325, "rcmnigel1b", "idle_speedo");
 +
 +TASK::TASK_VEHICLE_PLAY_ANIM(l_556[0/*1*/], "missfra0_chop_drhome", "InCar_GetOutofBack_Speedo");
 +
 +FYI : Speedo is the name of van in which chop was put in the mission.</code>
 +==== TASK_LOOK_AT_COORD ====
 +<code cpp>void TASK::TASK_LOOK_AT_COORD(Entity entity, float x, float y, float z, int duration, Any p5, Any p6) // 0x6FA46612594F7973 0x7B784DD8 b323</code>
 +
 +<code>p5 = 0, p6 = 2</code>
 +==== TASK_LOOK_AT_ENTITY ====
 +<code cpp>void TASK::TASK_LOOK_AT_ENTITY(Ped ped, Entity lookAt, int duration, int unknown1, int unknown2) // 0x69F4BE8C8CC4796C 0x991D6619 b323</code>
 +
 +<code>param3: duration in ms, use -1 to look forever
 +param4: using 2048 is fine
 +param5: using 3 is fine</code>
 +==== TASK_CLEAR_LOOK_AT ====
 +<code cpp>void TASK::TASK_CLEAR_LOOK_AT(Ped ped) // 0x0F804F1DB19B9689 0x60EB4054 b323</code>
 +
 +<code>Not clear what it actually does, but here's how script uses it - 
 +
 +if (OBJECT::HAS_PICKUP_BEEN_COLLECTED(...) 
 +{
 + if(ENTITY::DOES_ENTITY_EXIST(PLAYER::PLAYER_PED_ID()))
 +    {
 +     TASK::TASK_CLEAR_LOOK_AT(PLAYER::PLAYER_PED_ID());
 +  }
 + ...
 +}
 +
 +Another one where it doesn't "look" at current player - 
 +
 +TASK::TASK_PLAY_ANIM(l_3ED, "missheist_agency2aig_2", "look_at_phone_a", 1000.0, -2.0, -1, 48, v_2, 0, 0, 0);
 +PED::_2208438012482A1A(l_3ED, 0, 0);
 +TASK::TASK_CLEAR_LOOK_AT(l_3ED);</code>
 +==== OPEN_SEQUENCE_TASK ====
 +<code cpp>void TASK::OPEN_SEQUENCE_TASK(int* taskSequenceId) // 0xE8854A4326B9E12B 0xABA6923E b323</code>
 +
 +==== CLOSE_SEQUENCE_TASK ====
 +<code cpp>void TASK::CLOSE_SEQUENCE_TASK(int taskSequenceId) // 0x39E72BC99E6360CB 0x1A7CEBD0 b323</code>
 +
 +==== TASK_PERFORM_SEQUENCE ====
 +<code cpp>void TASK::TASK_PERFORM_SEQUENCE(Ped ped, int taskSequenceId) // 0x5ABA3986D90D8A3B 0x4D9FBD11 b323</code>
 +
 +==== TASK_PERFORM_SEQUENCE_LOCALLY ====
 +<code cpp>void TASK::TASK_PERFORM_SEQUENCE_LOCALLY(Ped ped, int taskSequenceId) // 0x8C33220C8D78CA0D  b944</code>
 +
 +==== CLEAR_SEQUENCE_TASK ====
 +<code cpp>void TASK::CLEAR_SEQUENCE_TASK(int* taskSequenceId) // 0x3841422E9C488D8C 0x47ED03CE b323</code>
 +
 +==== SET_SEQUENCE_TO_REPEAT ====
 +<code cpp>void TASK::SET_SEQUENCE_TO_REPEAT(int taskSequenceId, BOOL repeat) // 0x58C70CF3A41E4AE7 0xCDDF1508 b323</code>
 +
 +==== GET_SEQUENCE_PROGRESS ====
 +<code cpp>int TASK::GET_SEQUENCE_PROGRESS(Ped ped) // 0x00A9010CFE1E3533 0xA3419909 b323</code>
 +
 +<code>returned values:
 +0 to 7 = task that's currently in progress, 0 meaning the first one.
 +-1 no task sequence in progress.</code>
 +==== GET_IS_TASK_ACTIVE ====
 +<code cpp>BOOL TASK::GET_IS_TASK_ACTIVE(Ped ped, int taskIndex) // 0xB0760331C7AA4155 0x86FDDF55 b323</code>
 +
 +<code>Task index enum: https://alloc8or.re/gta5/doc/enums/eTaskTypeIndex.txt</code>
 +==== GET_SCRIPT_TASK_STATUS ====
 +<code cpp>int TASK::GET_SCRIPT_TASK_STATUS(Ped ped, Hash taskHash) // 0x77F1BEB8863288D5 0xB2477B23 b323</code>
 +
 +<code>Gets the status of a script-assigned task.
 +taskHash: https://alloc8or.re/gta5/doc/enums/eScriptTaskHash.txt</code>
 +==== GET_ACTIVE_VEHICLE_MISSION_TYPE ====
 +<code cpp>int TASK::GET_ACTIVE_VEHICLE_MISSION_TYPE(Vehicle vehicle) // 0x534AEBA6E5ED4CAB 0xAFA914EF b323</code>
 +
 +<code>https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt</code>
 +==== TASK_LEAVE_ANY_VEHICLE ====
 +<code cpp>void TASK::TASK_LEAVE_ANY_VEHICLE(Ped ped, int p1, int flags) // 0x504D54DF3F6F2247 0xDBDD79FA b323</code>
 +
 +<code>Flags are the same flags used in TASK_LEAVE_VEHICLE</code>
 +==== TASK_AIM_GUN_SCRIPTED ====
 +<code cpp>void TASK::TASK_AIM_GUN_SCRIPTED(Ped ped, Hash scriptTask, BOOL p2, BOOL p3) // 0x7A192BE16D373D00 0x9D296BCD b323</code>
 +
 +==== TASK_AIM_GUN_SCRIPTED_WITH_TARGET ====
 +<code cpp>void TASK::TASK_AIM_GUN_SCRIPTED_WITH_TARGET(Any p0, Any p1, float p2, float p3, float p4, Any p5, BOOL p6, BOOL p7) // 0x8605AF0DE8B3A5AC 0xFD517CE3 b323</code>
 +
 +==== UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET ====
 +<code cpp>void TASK::UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET(Ped p0, Ped p1, float p2, float p3, float p4, BOOL p5) // 0x9724FB59A3E72AD0 0x67E73525 b323</code>
 +
 +==== GET_CLIP_SET_FOR_SCRIPTED_GUN_TASK ====
 +<code cpp>const char* TASK::GET_CLIP_SET_FOR_SCRIPTED_GUN_TASK(int p0) // 0x3A8CADC7D37AACC5 0x249EB4EB b323</code>
 +
 +==== TASK_AIM_GUN_AT_ENTITY ====
 +<code cpp>void TASK::TASK_AIM_GUN_AT_ENTITY(Ped ped, Entity entity, int duration, BOOL p3) // 0x9B53BB6E8943AF53 0xBE32B3B6 b323</code>
 +
 +<code>duration: the amount of time in milliseconds to do the task.  -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped</code>
 +==== TASK_TURN_PED_TO_FACE_ENTITY ====
 +<code cpp>void TASK::TASK_TURN_PED_TO_FACE_ENTITY(Ped ped, Entity entity, int duration) // 0x5AD23D40115353AC 0x3C37C767 b323</code>
 +
 +<code>duration: the amount of time in milliseconds to do the task. -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped</code>
 +==== TASK_AIM_GUN_AT_COORD ====
 +<code cpp>void TASK::TASK_AIM_GUN_AT_COORD(Ped ped, float x, float y, float z, int time, BOOL p5, BOOL p6) // 0x6671F3EEC681BDA1 0xFBF44AD3 b323</code>
 +
 +<code>
 +</code>
 +==== TASK_SHOOT_AT_COORD ====
 +<code cpp>void TASK::TASK_SHOOT_AT_COORD(Ped ped, float x, float y, float z, int duration, Hash firingPattern) // 0x46A6CC01E0826106 0x601C22E3 b323</code>
 +
 +<code>Firing Pattern Hash Information: https://pastebin.com/Px036isB</code>
 +==== TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT ====
 +<code cpp>void TASK::TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(Ped ped, Vehicle vehicle, Any p2) // 0x7AA80209BDA643EB 0xBEAF8F67 b323</code>
 +
 +<code>Makes the specified ped shuffle to the next vehicle seat.
 +The ped MUST be in a vehicle and the vehicle parameter MUST be the ped's current vehicle.</code>
 +==== CLEAR_PED_TASKS ====
 +<code cpp>void TASK::CLEAR_PED_TASKS(Ped ped) // 0xE1EF3C1216AFF2CD 0xDE3316AB b323</code>
 +
 +==== CLEAR_PED_SECONDARY_TASK ====
 +<code cpp>void TASK::CLEAR_PED_SECONDARY_TASK(Ped ped) // 0x176CECF6F920D707 0xA635F451 b323</code>
 +
 +==== TASK_EVERYONE_LEAVE_VEHICLE ====
 +<code cpp>void TASK::TASK_EVERYONE_LEAVE_VEHICLE(Vehicle vehicle) // 0x7F93691AB4B92272 0xC1971F30 b323</code>
 +
 +==== TASK_GOTO_ENTITY_OFFSET ====
 +<code cpp>void TASK::TASK_GOTO_ENTITY_OFFSET(Ped ped, Any p1, Any p2, float x, float y, float z, int duration) // 0xE39B4FF4FDEBDE27 0x1A17A85E b323</code>
 +
 +==== TASK_GOTO_ENTITY_OFFSET_XY ====
 +<code cpp>void TASK::TASK_GOTO_ENTITY_OFFSET_XY(int p0, Ped oed, int duration, float p3, float p4, float p5, float p6, BOOL p7) // 0x338E7EF52B6095A9 0xBC1E3D0A b323</code>
 +
 +==== TASK_TURN_PED_TO_FACE_COORD ====
 +<code cpp>void TASK::TASK_TURN_PED_TO_FACE_COORD(Ped ped, float x, float y, float z, int duration) // 0x1DDA930A0AC38571 0x30463D73 b323</code>
 +
 +<code>duration in milliseconds</code>
 +==== TASK_VEHICLE_TEMP_ACTION ====
 +<code cpp>void TASK::TASK_VEHICLE_TEMP_ACTION(Ped driver, Vehicle vehicle, int action, int time) // 0xC429DCEEB339E129 0x0679DFB8 b323</code>
 +
 +<code>'1 - brake
 +'3 - brake + reverse
 +'4 - turn left 90 + braking
 +'5 - turn right 90 + braking
 +'6 - brake strong (handbrake?) until time ends
 +'7 - turn left + accelerate
 +'7 - turn right + accelerate
 +'9 - weak acceleration
 +'10 - turn left + restore wheel pos to center in the end
 +'11 - turn right + restore wheel pos to center in the end
 +'13 - turn left + go reverse
 +'14 - turn left + go reverse
 +'16 - crash the game after like 2 seconds :)
 +'17 - keep actual state, game crashed after few tries
 +'18 - game crash
 +'19 - strong brake + turn left/right
 +'20 - weak brake + turn left then turn right
 +'21 - weak brake + turn right then turn left
 +'22 - brake + reverse
 +'23 - accelerate fast
 +'24 - brake
 +'25 - brake turning left then when almost stopping it turns left more
 +'26 - brake turning right then when almost stopping it turns right more
 +'27 - brake until car stop or until time ends
 +'28 - brake + strong reverse acceleration
 +'30 - performs a burnout (brake until stop + brake and accelerate)
 +'31 - accelerate + handbrake
 +'32 - accelerate very strong
 +
 +Seems to be this:
 +Works on NPCs, but overrides their current task. If inside a task sequence (and not being the last task), "time" will work, otherwise the task will be performed forever until tasked with something else</code>
 +==== TASK_VEHICLE_MISSION ====
 +<code cpp>void TASK::TASK_VEHICLE_MISSION(Ped driver, Vehicle vehicle, Vehicle vehicleTarget, int missionType, float p4, Any p5, float p6, float p7, BOOL DriveAgainstTraffic) // 0x659427E0EF36BCDE 0x20609E56 b323</code>
 +
 +<code>missionType: https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt</code>
 +==== TASK_VEHICLE_MISSION_PED_TARGET ====
 +<code cpp>void TASK::TASK_VEHICLE_MISSION_PED_TARGET(Ped ped, Vehicle vehicle, Ped pedTarget, int missionType, float maxSpeed, int drivingStyle, float minDistance, float p7, BOOL DriveAgainstTraffic) // 0x9454528DF15D657A 0xC81C4677 b323</code>
 +
 +<code>See TASK_VEHICLE_MISSION</code>
 +==== TASK_VEHICLE_MISSION_COORS_TARGET ====
 +<code cpp>void TASK::TASK_VEHICLE_MISSION_COORS_TARGET(Ped ped, Vehicle vehicle, float x, float y, float z, int p5, int p6, int p7, float p8, float p9, BOOL DriveAgainstTraffic) // 0xF0AF20AA7731F8C3 0x6719C109 b323</code>
 +
 +<code>See TASK_VEHICLE_MISSION</code>
 +==== TASK_VEHICLE_ESCORT ====
 +<code cpp>void TASK::TASK_VEHICLE_ESCORT(Ped ped, Vehicle vehicle, Vehicle targetVehicle, int mode, float speed, int drivingStyle, float minDistance, int p7, float noRoadsDistance) // 0x0FA6E4B75F302400 0x9FDCB250 b323</code>
 +
 +<code>Makes a ped follow the targetVehicle with <minDistance> in between.
 +
 +note: minDistance is ignored if drivingstyle is avoiding traffic, but Rushed is fine.
 +
 +Mode: The mode defines the relative position to the targetVehicle. The ped will try to position its vehicle there.
 +-1 = behind
 +0 = ahead
 +1 = left
 +2 = right
 +3 = back left
 +4 = back right
 +
 +if the target is closer than noRoadsDistance, the driver will ignore pathing/roads and follow you directly.
 +
 +Driving Styles guide: gtaforums.com/topic/822314-guide-driving-styles/</code>
 +==== TASK_VEHICLE_FOLLOW ====
 +<code cpp>void TASK::TASK_VEHICLE_FOLLOW(Ped driver, Vehicle vehicle, Entity targetEntity, float speed, int drivingStyle, int minDistance) // 0xFC545A9F0626E3B6 0xA8B917D7 b323</code>
 +
 +<code>Makes a ped in a vehicle follow an entity (ped, vehicle, etc.)
 +
 +drivingStyle: http://gtaforums.com/topic/822314-guide-driving-styles/</code>
 +==== TASK_VEHICLE_CHASE ====
 +<code cpp>void TASK::TASK_VEHICLE_CHASE(Ped driver, Entity targetEnt) // 0x3C08A8E30363B353 0x55634798 b323</code>
 +
 +<code>chases targetEnt fast and aggressively
 +--
 +Makes ped (needs to be in vehicle) chase targetEnt.</code>
 +==== TASK_VEHICLE_HELI_PROTECT ====
 +<code cpp>void TASK::TASK_VEHICLE_HELI_PROTECT(Ped pilot, Vehicle vehicle, Entity entityToFollow, float targetSpeed, int p4, float radius, int altitude, int p7) // 0x1E09C32048FEFD1C 0x0CB415EE b323</code>
 +
 +<code>pilot, vehicle and altitude are rather self-explanatory.
 +
 +p4: is unused variable in the function.
 +
 +entityToFollow: you can provide a Vehicle entity or a Ped entity, the heli will protect them.
 +
 +'targetSpeed':  The pilot will dip the nose AS MUCH AS POSSIBLE so as to reach this value AS FAST AS POSSIBLE.  As such, you'll want to modulate it as opposed to calling it via a hard-wired, constant #.
 +
 +'radius' isn't just "stop within radius of X of target" like with ground vehicles.  In this case, the pilot will fly an entire circle around 'radius' and continue to do so.
 +
 +NOT CONFIRMED:  p7 appears to be a FlyingStyle enum.  Still investigating it as of this writing, but playing around with values here appears to result in different -behavior- as opposed to offsetting coordinates, altitude, target speed, etc.
 +
 +NOTE: If the pilot finds enemies, it will engage them until it kills them, but will return to protect the ped/vehicle given shortly thereafter.</code>
 +==== SET_TASK_VEHICLE_CHASE_BEHAVIOR_FLAG ====
 +<code cpp>void TASK::SET_TASK_VEHICLE_CHASE_BEHAVIOR_FLAG(Ped ped, int flag, BOOL set) // 0xCC665AAC360D31E7 0x2A83083F b323</code>
 +
 +<code>Flag 8: Medium-aggressive boxing tactic with a bit of PIT
 +Flag 1: Aggressive ramming of suspect
 +Flag 2: Ram attempts
 +Flag 32: Stay back from suspect, no tactical contact. Convoy-like.
 +Flag 16: Ramming, seems to be slightly less aggressive than 1-2.</code>
 +==== SET_TASK_VEHICLE_CHASE_IDEAL_PURSUIT_DISTANCE ====
 +<code cpp>void TASK::SET_TASK_VEHICLE_CHASE_IDEAL_PURSUIT_DISTANCE(Ped ped, float distance) // 0x639B642FACBE4EDD 0x04FD3EE7 b323</code>
 +
 +==== TASK_HELI_CHASE ====
 +<code cpp>void TASK::TASK_HELI_CHASE(Ped pilot, Entity entityToFollow, float x, float y, float z) // 0xAC83B1DB38D0ADA0 0xAC290A21 b323</code>
 +
 +<code>Ped pilot should be in a heli.
 +EntityToFollow can be a vehicle or Ped.
 +
 +x,y,z appear to be how close to the EntityToFollow the heli should be. Scripts use 0.0, 0.0, 80.0. Then the heli tries to position itself 80 units above the EntityToFollow. If you reduce it to -5.0, it tries to go below (if the EntityToFollow is a heli or plane)
 +
 +
 +NOTE: If the pilot finds enemies, it will engage them, then remain there idle, not continuing to chase the Entity given.</code>
 +==== TASK_PLANE_CHASE ====
 +<code cpp>void TASK::TASK_PLANE_CHASE(Ped pilot, Entity entityToFollow, float x, float y, float z) // 0x2D2386F273FF7A25 0x12FA1C28 b323</code>
 +
 +==== TASK_PLANE_LAND ====
 +<code cpp>void TASK::TASK_PLANE_LAND(Ped pilot, Vehicle plane, float runwayStartX, float runwayStartY, float runwayStartZ, float runwayEndX, float runwayEndY, float runwayEndZ) // 0xBF19721FA34D32C0 0x5F7E23EA b323</code>
 +
 +==== _0x6100B3CEFD43452E ====
 +<code cpp>void TASK::_0x6100B3CEFD43452E(Any p0) // 0x6100B3CEFD43452E  b2189</code>
 +
 +==== _CLEAR_VEHICLE_TASKS ====
 +<code cpp>void TASK::_CLEAR_VEHICLE_TASKS(Vehicle vehicle) // 0xDBBC7A2432524127  b1290</code>
 +
 +<code>Seems to stop the engine</code>
 +==== _0x53DDC75BC3AC0A90 ====
 +<code cpp>void TASK::_0x53DDC75BC3AC0A90(Vehicle vehicle) // 0x53DDC75BC3AC0A90  b1290</code>
 +
 +<code>CLEAR_*</code>
 +==== TASK_PLANE_GOTO_PRECISE_VTOL ====
 +<code cpp>void TASK::TASK_PLANE_GOTO_PRECISE_VTOL(Ped ped, Vehicle vehicle, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0xF7F9DCCA89E7505B  b1290</code>
 +
 +==== TASK_SUBMARINE_GOTO_AND_STOP ====
 +<code cpp>void TASK::TASK_SUBMARINE_GOTO_AND_STOP(Any p0, Vehicle submarine, float x, float y, float z, Any p5) // 0xC22B40579A498CA4  b2189</code>
 +
 +<code>Used in am_vehicle_spawn.ysc and am_mp_submarine.ysc.
 +
 +p0 is always 0, p5 is always 1
 +
 +p1 is the vehicle handle of the submarine. Submarine must have a driver, but the ped handle is not passed to the native.
 +
 +Speed can be set by calling SET_DRIVE_TASK_CRUISE_SPEED after</code>
 +==== TASK_HELI_MISSION ====
 +<code cpp>void TASK::TASK_HELI_MISSION(Ped pilot, Vehicle aircraft, Vehicle targetVehicle, Ped targetPed, float destinationX, float destinationY, float destinationZ, int missionFlag, float maxSpeed, float landingRadius, float targetHeading, int unk1, int unk2, Hash unk3, int landingFlags) // 0xDAD029E187A2BEB4 0x0C143E97 b323</code>
 +
 +<code>Needs more research.
 +
 +Default value of p13 is -1.0 or 0xBF800000.
 +Default value of p14 is 0.
 +
 +Modified examples from "fm_mission_controller.ysc", line ~203551:
 +TASK::TASK_HELI_MISSION(ped, vehicle, 0, 0, posX, posY, posZ, 4, 1.0, -1.0, -1.0, 10, 10, 5.0, 0);
 +TASK::TASK_HELI_MISSION(ped, vehicle, 0, 0, posX, posY, posZ, 4, 1.0, -1.0, -1.0, 0, ?, 5.0, 4096);
 +
 +int mode seams to set mission type 4 = coords target, 23 = ped target.
 +int 14 set to 32 = ped will land at destination.
 +
 +My findings:
 +mode 4 or 7 forces heli to snap to the heading set
 +8 makes the heli flee from the ped.
 +9 circles around ped with angle set
 +10, 11 normal + imitate ped heading
 +20 makes the heli land when he's near the ped. It won't resume chasing.
 +21 emulates an helicopter crash
 +23 makes the heli circle erratically around ped
 +
 +I change p2 to 'vehicleToFollow' as it seems to work like the task natives to set targets. In the heli_taxi script where as the merryweather heli takes you to your waypoint it has no need to follow a vehicle or a ped, so of course both have 0 set.</code>
 +==== TASK_HELI_ESCORT_HELI ====
 +<code cpp>void TASK::TASK_HELI_ESCORT_HELI(Ped pilot, Vehicle heli1, Vehicle heli2, float p3, float p4, float p5) // 0xB385523325077210  b1290</code>
 +
 +==== TASK_PLANE_MISSION ====
 +<code cpp>void TASK::TASK_PLANE_MISSION(Ped pilot, Vehicle aircraft, Vehicle targetVehicle, Ped targetPed, float destinationX, float destinationY, float destinationZ, int missionFlag, float angularDrag, float unk, float targetHeading, float maxZ, float minZ, Any p13) // 0x23703CD154E83B88 0x1D007E65 b323</code>
 +
 +<code>EXAMPLE USAGE:
 +
 +Fly around target (Precautiously, keeps high altitude):
 +Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, 200f);
 +
 +Fly around target (Dangerously, keeps VERY low altitude):
 +Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -500f);
 +
 +Fly directly into target:
 +Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -5000f);
 +
 +EXPANDED INFORMATION FOR ADVANCED USAGE (custom pilot)
 +
 +'physicsSpeed': (THIS IS NOT YOUR ORDINARY SPEED PARAMETER: READ!!)
 +Think of this -first- as a radius value, not a true speed value.  The ACTUAL effective speed of the plane will be that of the maximum speed permissible to successfully fly in a -circle- with a radius of 'physicsSpeed' This also means that the plane must complete a circle before it can begin its "bombing run", its straight line pass towards the target.  p9 appears to influence the angle at which a "bombing run" begins, although I can't confirm yet.
 +
 +VERY IMPORTANT: A "bombing run" will only occur if a plane can successfully determine a possible navigable route (the slower the value of 'physicsSpeed', the more precise the pilot can be due to less influence of physics on flightpath).  Otherwise, the pilot will continue to patrol around Destination (be it a dynamic Entity position vector or a fixed world coordinate vector.)
 +
 +0 = Plane's physics are almost entirely frozen, plane appears to "orbit" around precise destination point
 +1-299 = Blend of "frozen, small radius" vs. normal vs. "accelerated, hyperfast, large radius"
 +300+ =  Vehicle behaves entirely like a normal gameplay plane.
 +
 +'patrolBlend' (The lower the value, the more the Destination is treated as a "fly AT" rather than a "fly AROUND point".)
 +
 +Scenario: Destination is an Entity on ground level, wide open field
 +-5000 = Pilot kamikazes directly into Entity
 +-1000 = Pilot flies extremely low -around- Entity, very prone to crashing
 +-200 = Pilot flies lower than average around Entity.
 +0 = Pilot flies around Entity, normal altitude
 +200 = Pilot flies an extra eighty units or so higher than 0 while flying around Destination (this doesn't seem to correlate directly into distance units.)
 +
 +-- Valid mission types found in the exe: --
 +
 +0 = None
 +1 = Unk
 +2 = CTaskVehicleRam
 +3 = CTaskVehicleBlock
 +4 = CTaskVehicleGoToPlane
 +5 = CTaskVehicleStop
 +6 = CTaskVehicleAttack
 +7 = CTaskVehicleFollow
 +8 = CTaskVehicleFleeAirborne
 +9= CTaskVehicleCircle
 +10 = CTaskVehicleEscort
 +15 = CTaskVehicleFollowRecording
 +16 = CTaskVehiclePoliceBehaviour
 +17 = CTaskVehicleCrash</code>
 +==== TASK_PLANE_TAXI ====
 +<code cpp>void TASK::TASK_PLANE_TAXI(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0x92C360B5F15D2302  b1103</code>
 +
 +==== TASK_BOAT_MISSION ====
 +<code cpp>void TASK::TASK_BOAT_MISSION(Ped pedDriver, Vehicle boat, Any p2, Any p3, float x, float y, float z, Any p7, float maxSpeed, int drivingStyle, float p10, Any p11) // 0x15C86013127CE63F 0x5865B031 b323</code>
 +
 +<code>You need to call PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS after TASK_BOAT_MISSION in order for the task to execute.
 +
 +Working example
 +float vehicleMaxSpeed = VEHICLE::_GET_VEHICLE_MAX_SPEED(ENTITY::GET_ENTITY_MODEL(pedVehicle));
 +TASK::TASK_BOAT_MISSION(pedDriver, pedVehicle, 0, 0, waypointCoord.x, waypointCoord.y, waypointCoord.z, 4, vehicleMaxSpeed, 786469, -1.0, 7);
 +PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDriver, 1);
 +
 +P8 appears to be driving style flag - see gtaforums.com/topic/822314-guide-driving-styles/ for documentation</code>
 +==== TASK_DRIVE_BY ====
 +<code cpp>void TASK::TASK_DRIVE_BY(Ped driverPed, Ped targetPed, Vehicle targetVehicle, float targetX, float targetY, float targetZ, float distanceToShoot, int pedAccuracy, BOOL p8, Hash firingPattern) // 0x2F8AF0E82773A171 0x2B84D1C4 b323</code>
 +
 +<code>Example:
 +
 +TASK::TASK_DRIVE_BY(l_467[1/*22*/], PLAYER::PLAYER_PED_ID(), 0, 0.0, 0.0, 2.0, 300.0, 100, 0, ${firing_pattern_burst_fire_driveby});
 +
 +
 +
 +
 +Needs working example. Doesn't seem to do anything.
 +
 +I marked p2 as targetVehicle as all these shooting related tasks seem to have that in common.
 +I marked p6 as distanceToShoot as if you think of GTA's Logic with the native SET_VEHICLE_SHOOT natives, it won't shoot till it gets within a certain distance of the target.
 +I marked p7 as pedAccuracy as it seems it's mostly 100 (Completely Accurate), 75, 90, etc. Although this could be the ammo count within the gun, but I highly doubt it. I will change this comment once I find out if it's ammo count or not.</code>
 +==== SET_DRIVEBY_TASK_TARGET ====
 +<code cpp>void TASK::SET_DRIVEBY_TASK_TARGET(Ped shootingPed, Ped targetPed, Vehicle targetVehicle, float x, float y, float z) // 0xE5B302114D8162EE 0xDA6A6FC1 b323</code>
 +
 +<code>For p1 & p2 (Ped, Vehicle). I could be wrong, as the only time this native is called in scripts is once and both are 0, but I assume this native will work like SET_MOUNTED_WEAPON_TARGET in which has the same exact amount of parameters and the 1st and last 3 parameters are right and the same for both natives.</code>
 +==== CLEAR_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK ====
 +<code cpp>void TASK::CLEAR_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK(Ped ped) // 0xC35B5CDB2824CF69 0x9B76F7E6 b323</code>
 +
 +==== IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK ====
 +<code cpp>BOOL TASK::IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK(Ped ped) // 0x8785E6E40C7A8818 0xB23F46E6 b323</code>
 +
 +==== CONTROL_MOUNTED_WEAPON ====
 +<code cpp>BOOL TASK::CONTROL_MOUNTED_WEAPON(Ped ped) // 0xDCFE42068FE0135A 0x500D9244 b323</code>
 +
 +<code>Forces the ped to use the mounted weapon.
 +Returns false if task is not possible.</code>
 +==== SET_MOUNTED_WEAPON_TARGET ====
 +<code cpp>void TASK::SET_MOUNTED_WEAPON_TARGET(Ped shootingPed, Ped targetPed, Vehicle targetVehicle, float x, float y, float z, Any p6, Any p7) // 0xCCD892192C6D2BB9 0x98713C68 b323</code>
 +
 +<code>Note: Look in decompiled scripts and the times that p1 and p2 aren't 0. They are filled with vars. If you look through out that script what other natives those vars are used in, you can tell p1 is a ped and p2 is a vehicle. Which most likely means if you want the mounted weapon to target a ped set targetVehicle to 0 or vice-versa.</code>
 +==== IS_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK ====
 +<code cpp>BOOL TASK::IS_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK(Ped ped) // 0xA320EF046186FA3B 0x291E938C b323</code>
 +
 +==== TASK_USE_MOBILE_PHONE ====
 +<code cpp>void TASK::TASK_USE_MOBILE_PHONE(Ped ped, int p1, Any p2) // 0xBD2A8EC3AF4DE7DB 0x225A38C8 b323</code>
 +
 +<code>Actually has 3 params, not 2.
 +
 +p0: Ped
 +p1: int (or bool?)
 +p2: int</code>
 +==== TASK_USE_MOBILE_PHONE_TIMED ====
 +<code cpp>void TASK::TASK_USE_MOBILE_PHONE_TIMED(Ped ped, int duration) // 0x5EE02954A14C69DB 0xC99C19F5 b323</code>
 +
 +==== TASK_CHAT_TO_PED ====
 +<code cpp>void TASK::TASK_CHAT_TO_PED(Ped ped, Ped target, Any p2, float p3, float p4, float p5, float p6, float p7) // 0x8C338E0263E4FD19 0xA2BE1821 b323</code>
 +
 +<code>p2 tend to be 16, 17 or 1
 +p3 to p7 tend to be 0.0</code>
 +==== TASK_WARP_PED_INTO_VEHICLE ====
 +<code cpp>void TASK::TASK_WARP_PED_INTO_VEHICLE(Ped ped, Vehicle vehicle, int seat) // 0x9A7D091411C5F684 0x65D4A35D b323</code>
 +
 +<code>Seat Numbers
 +-------------------------------
 +Driver = -1
 +Any = -2
 +Left-Rear = 1
 +Right-Front = 0
 +Right-Rear = 2
 +Extra seats = 3-14(This may differ from vehicle type e.g. Firetruck Rear Stand, Ambulance Rear)</code>
 +==== TASK_SHOOT_AT_ENTITY ====
 +<code cpp>void TASK::TASK_SHOOT_AT_ENTITY(Entity entity, Entity target, int duration, Hash firingPattern) // 0x08DA95E8298AE772 0xAC0631C9 b323</code>
 +
 +<code>//this part of the code is to determine at which entity the player is aiming, for example if you want to create a mod where you give orders to peds
 +Entity aimedentity;
 +Player player = PLAYER::PLAYER_ID();
 +PLAYER::_GET_AIMED_ENTITY(player, &aimedentity);
 +
 +//bg is an array of peds
 +TASK::TASK_SHOOT_AT_ENTITY(bg[i], aimedentity, 5000, MISC::GET_HASH_KEY("FIRING_PATTERN_FULL_AUTO"));
 +
 +in practical usage, getting the entity the player is aiming at and then task the peds to shoot at the entity, at a button press event would be better.
 +
 +Firing Pattern Hash Information: https://pastebin.com/Px036isB</code>
 +==== TASK_CLIMB ====
 +<code cpp>void TASK::TASK_CLIMB(Ped ped, BOOL unused) // 0x89D9FCC2435112F1 0x90847790 b323</code>
 +
 +<code>Climbs or vaults the nearest thing.</code>
 +==== TASK_CLIMB_LADDER ====
 +<code cpp>void TASK::TASK_CLIMB_LADDER(Ped ped, int p1) // 0xB6C987F9285A3814 0x35BB4EE0 b323</code>
 +
 +==== TASK_RAPPEL_DOWN_WALL ====
 +<code cpp>void TASK::TASK_RAPPEL_DOWN_WALL(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9, Any p10) // 0xEAF66ACDDC794793  b1868</code>
 +
 +==== _0x9D252648778160DF ====
 +<code cpp>Any TASK::_0x9D252648778160DF(Any p0) // 0x9D252648778160DF  b1868</code>
 +
 +==== CLEAR_PED_TASKS_IMMEDIATELY ====
 +<code cpp>void TASK::CLEAR_PED_TASKS_IMMEDIATELY(Ped ped) // 0xAAA34F8A7CB32098 0xBC045625 b323</code>
 +
 +<code>Immediately stops the pedestrian from whatever it's doing. They stop fighting, animations, etc. they forget what they were doing.</code>
 +==== TASK_PERFORM_SEQUENCE_FROM_PROGRESS ====
 +<code cpp>void TASK::TASK_PERFORM_SEQUENCE_FROM_PROGRESS(Any p0, Any p1, Any p2, Any p3) // 0x89221B16730234F0 0xFA60601B b323</code>
 +
 +==== SET_NEXT_DESIRED_MOVE_STATE ====
 +<code cpp>void TASK::SET_NEXT_DESIRED_MOVE_STATE(float p0) // 0xF1B9F16E89E2C93A 0x4E937D57 b323</code>
 +
 +<code>This native does absolutely nothing, just a nullsub</code>
 +==== SET_PED_DESIRED_MOVE_BLEND_RATIO ====
 +<code cpp>void TASK::SET_PED_DESIRED_MOVE_BLEND_RATIO(Ped ped, float p1) // 0x1E982AC8716912C5 0xC65FC712 b323</code>
 +
 +==== GET_PED_DESIRED_MOVE_BLEND_RATIO ====
 +<code cpp>float TASK::GET_PED_DESIRED_MOVE_BLEND_RATIO(Ped ped) // 0x8517D4A6CA8513ED 0x5FEFAB72 b323</code>
 +
 +==== TASK_GOTO_ENTITY_AIMING ====
 +<code cpp>void TASK::TASK_GOTO_ENTITY_AIMING(Ped ped, Entity target, float distanceToStopAt, float StartAimingDist) // 0xA9DA48FAB8A76C12 0xF1C493CF b323</code>
 +
 +<code>eg
 +
 + TASK::TASK_GOTO_ENTITY_AIMING(v_2, PLAYER::PLAYER_PED_ID(), 5.0, 25.0);
 +
 +ped = Ped you want to perform this task.
 +target = the Entity they should aim at.
 +distanceToStopAt = distance from the target, where the ped should stop to aim.
 +StartAimingDist = distance where the ped should start to aim.</code>
 +==== TASK_SET_DECISION_MAKER ====
 +<code cpp>void TASK::TASK_SET_DECISION_MAKER(Ped ped, Hash p1) // 0xEB8517DDA73720DA 0x830AD50C b323</code>
 +
 +<code>p1 is always GET_HASH_KEY("empty") in scripts, for the rare times this is used</code>
 +==== TASK_SET_SPHERE_DEFENSIVE_AREA ====
 +<code cpp>void TASK::TASK_SET_SPHERE_DEFENSIVE_AREA(Any p0, float p1, float p2, float p3, float p4) // 0x933C06518B52A9A4 0x9F3C5D6A b323</code>
 +
 +==== TASK_CLEAR_DEFENSIVE_AREA ====
 +<code cpp>void TASK::TASK_CLEAR_DEFENSIVE_AREA(Any p0) // 0x95A6C46A31D1917D 0x7A05BF0D b323</code>
 +
 +==== TASK_PED_SLIDE_TO_COORD ====
 +<code cpp>void TASK::TASK_PED_SLIDE_TO_COORD(Ped ped, float x, float y, float z, float heading, float p5) // 0xD04FE6765D990A06 0x225380EF b323</code>
 +
 +==== TASK_PED_SLIDE_TO_COORD_HDG_RATE ====
 +<code cpp>void TASK::TASK_PED_SLIDE_TO_COORD_HDG_RATE(Ped ped, float x, float y, float z, float heading, float p5, float p6) // 0x5A4A6A6D3DC64F52 0x38A995C1 b323</code>
 +
 +==== ADD_COVER_POINT ====
 +<code cpp>ScrHandle TASK::ADD_COVER_POINT(float p0, float p1, float p2, float p3, Any p4, Any p5, Any p6, BOOL p7) // 0xD5C12A75C7B9497F 0xA0AF0B98 b323</code>
 +
 +==== REMOVE_COVER_POINT ====
 +<code cpp>void TASK::REMOVE_COVER_POINT(ScrHandle coverpoint) // 0xAE287C923D891715 0x0776888B b323</code>
 +
 +==== DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS ====
 +<code cpp>BOOL TASK::DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(float x, float y, float z) // 0xA98B8E3C088E5A31 0x29F97A71 b323</code>
 +
 +<code>Checks if there is a cover point at position</code>
 +==== GET_SCRIPTED_COVER_POINT_COORDS ====
 +<code cpp>Vector3 TASK::GET_SCRIPTED_COVER_POINT_COORDS(ScrHandle coverpoint) // 0x594A1028FC2A3E85 0xC6B6CCC1 b323</code>
 +
 +==== TASK_COMBAT_PED ====
 +<code cpp>void TASK::TASK_COMBAT_PED(Ped ped, Ped targetPed, int p2, int p3) // 0xF166E48407BAC484 0xCB0D8932 b323</code>
 +
 +<code>Makes the specified ped attack the target ped.
 +p2 should be 0
 +p3 should be 16</code>
 +==== TASK_COMBAT_PED_TIMED ====
 +<code cpp>void TASK::TASK_COMBAT_PED_TIMED(Any p0, Ped ped, int p2, Any p3) // 0x944F30DCB7096BDE 0xF5CA2A45 b323</code>
 +
 +==== TASK_SEEK_COVER_FROM_POS ====
 +<code cpp>void TASK::TASK_SEEK_COVER_FROM_POS(Ped ped, float x, float y, float z, int duration, BOOL p5) // 0x75AC2B60386D89F2 0x83F18EE9 b323</code>
 +
 +==== TASK_SEEK_COVER_FROM_PED ====
 +<code cpp>void TASK::TASK_SEEK_COVER_FROM_PED(Ped ped, Ped target, int duration, BOOL p3) // 0x84D32B3BEC531324 0xC1EC907E b323</code>
 +
 +==== TASK_SEEK_COVER_TO_COVER_POINT ====
 +<code cpp>void TASK::TASK_SEEK_COVER_TO_COVER_POINT(Any p0, Any p1, float p2, float p3, float p4, Any p5, BOOL p6) // 0xD43D95C7A869447F 0x3D026B29 b323</code>
 +
 +==== TASK_SEEK_COVER_TO_COORDS ====
 +<code cpp>void TASK::TASK_SEEK_COVER_TO_COORDS(Ped ped, float x1, float y1, float z1, float x2, float y2, float z2, Any p7, BOOL p8) // 0x39246A6958EF072C 0xFFFE754E b323</code>
 +
 +<code>from michael2:
 +TASK::TASK_SEEK_COVER_TO_COORDS(ped, 967.5164794921875, -2121.603515625, 30.479299545288086, 978.94677734375, -2125.84130859375, 29.4752, -1, 1);
 +
 +
 +appears to be shorter variation
 +from michael3:
 +TASK::TASK_SEEK_COVER_TO_COORDS(ped, -2231.011474609375, 263.6326599121094, 173.60195922851562, -1, 0);</code>
 +==== TASK_PUT_PED_DIRECTLY_INTO_COVER ====
 +<code cpp>void TASK::TASK_PUT_PED_DIRECTLY_INTO_COVER(Ped ped, float x, float y, float z, Any timeout, BOOL p5, float p6, BOOL p7, BOOL p8, Any p9, BOOL p10) // 0x4172393E6BE1FECE 0xC9F00E68 b323</code>
 +
 +==== TASK_EXIT_COVER ====
 +<code cpp>void TASK::TASK_EXIT_COVER(Any p0, Any p1, float p2, float p3, float p4) // 0x79B258E397854D29 0xC829FAC9 b323</code>
 +
 +==== TASK_PUT_PED_DIRECTLY_INTO_MELEE ====
 +<code cpp>void TASK::TASK_PUT_PED_DIRECTLY_INTO_MELEE(Ped ped, Ped meleeTarget, float p2, float p3, float p4, BOOL p5) // 0x1C6CD14A876FFE39 0x79E1D27D b323</code>
 +
 +<code>from armenian3.c4
 +
 +TASK::TASK_PUT_PED_DIRECTLY_INTO_MELEE(PlayerPed, armenianPed, 0.0, -1.0, 0.0, 0);
 +</code>
 +==== TASK_TOGGLE_DUCK ====
 +<code cpp>void TASK::TASK_TOGGLE_DUCK(BOOL p0, BOOL p1) // 0xAC96609B9995EDF8 0x61CFBCBF b323</code>
 +
 +<code>used in sequence task
 +
 +both parameters seems to be always 0</code>
 +==== TASK_GUARD_CURRENT_POSITION ====
 +<code cpp>void TASK::TASK_GUARD_CURRENT_POSITION(Ped p0, float p1, float p2, BOOL p3) // 0x4A58A47A72E3FCB4 0x2FB099E9 b323</code>
 +
 +<code>From re_prisonvanbreak:
 +
 +TASK::TASK_GUARD_CURRENT_POSITION(l_DD, 35.0, 35.0, 1);</code>
 +==== TASK_GUARD_ASSIGNED_DEFENSIVE_AREA ====
 +<code cpp>void TASK::TASK_GUARD_ASSIGNED_DEFENSIVE_AREA(Any p0, float p1, float p2, float p3, float p4, float p5, Any p6) // 0xD2A207EEBDF9889B 0x7AF0133D b323</code>
 +
 +==== TASK_GUARD_SPHERE_DEFENSIVE_AREA ====
 +<code cpp>void TASK::TASK_GUARD_SPHERE_DEFENSIVE_AREA(Ped p0, float p1, float p2, float p3, float p4, float p5, Any p6, float p7, float p8, float p9, float p10) // 0xC946FE14BE0EB5E2 0x86B76CB7 b323</code>
 +
 +<code>p0 - Guessing PedID
 +p1, p2, p3 - XYZ?
 +p4 - ???
 +p5 - Maybe the size of sphere from XYZ?
 +p6 - ???
 +p7, p8, p9 - XYZ again?
 +p10 - Maybe the size of sphere from second XYZ?</code>
 +==== TASK_STAND_GUARD ====
 +<code cpp>void TASK::TASK_STAND_GUARD(Ped ped, float x, float y, float z, float heading, const char* scenarioName) // 0xAE032F8BBA959E90 0xD130F636 b323</code>
 +
 +<code>scenarioName example: "WORLD_HUMAN_GUARD_STAND"</code>
 +==== SET_DRIVE_TASK_CRUISE_SPEED ====
 +<code cpp>void TASK::SET_DRIVE_TASK_CRUISE_SPEED(Ped driver, float cruiseSpeed) // 0x5C9B84BD7D31D908 0x3CEC07B1 b323</code>
 +
 +==== SET_DRIVE_TASK_MAX_CRUISE_SPEED ====
 +<code cpp>void TASK::SET_DRIVE_TASK_MAX_CRUISE_SPEED(Any p0, float p1) // 0x404A5AA9B9F0B746 0x7FDF6131 b323</code>
 +
 +==== SET_DRIVE_TASK_DRIVING_STYLE ====
 +<code cpp>void TASK::SET_DRIVE_TASK_DRIVING_STYLE(Ped ped, int drivingStyle) // 0xDACE1BE37D88AF67 0x59C5FAD7 b323</code>
 +
 +<code>This native is used to set the driving style for specific ped.
 +
 +Driving styles id seems to be:
 +786468
 +262144
 +786469
 +
 +http://gtaforums.com/topic/822314-guide-driving-styles/</code>
 +==== ADD_COVER_BLOCKING_AREA ====
 +<code cpp>void TASK::ADD_COVER_BLOCKING_AREA(float playerX, float playerY, float playerZ, float radiusX, float radiusY, float radiusZ, BOOL p6, BOOL p7, BOOL p8, BOOL p9) // 0x45C597097DD7CB81 0x3536946F b323</code>
 +
 +==== REMOVE_ALL_COVER_BLOCKING_AREAS ====
 +<code cpp>void TASK::REMOVE_ALL_COVER_BLOCKING_AREAS() // 0xDB6708C0B46F56D8 0xCF9221A7 b323</code>
 +
 +==== _0xFA83CA6776038F64 ====
 +<code cpp>void TASK::_0xFA83CA6776038F64(float x, float y, float z) // 0xFA83CA6776038F64  b1493</code>
 +
 +<code>REMOVE_*</code>
 +==== _0x1F351CF1C6475734 ====
 +<code cpp>void TASK::_0x1F351CF1C6475734(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9) // 0x1F351CF1C6475734  b505</code>
 +
 +==== TASK_START_SCENARIO_IN_PLACE ====
 +<code cpp>void TASK::TASK_START_SCENARIO_IN_PLACE(Ped ped, const char* scenarioName, int unkDelay, BOOL playEnterAnim) // 0x142A02425FF02BD9 0xE50D6DDE b323</code>
 +
 +<code>Plays a scenario on a Ped at their current location.
 +
 +unkDelay - Usually 0 or -1, doesn't seem to have any effect. Might be a delay between sequences.
 +playEnterAnim - Plays the "Enter" anim if true, otherwise plays the "Exit" anim. Scenarios that don't have any "Enter" anims won't play if this is set to true.
 +
 +----
 +
 +From "am_hold_up.ysc.c4" at line 339:
 +
 +TASK::TASK_START_SCENARIO_IN_PLACE(NETWORK::NET_TO_PED(l_8D._f4), sub_adf(), 0, 1);
 +
 +I'm unsure of what the last two parameters are, however sub_adf() randomly returns 1 of 3 scenarios, those being:
 +WORLD_HUMAN_SMOKING
 +WORLD_HUMAN_HANG_OUT_STREET
 +WORLD_HUMAN_STAND_MOBILE
 +
 +This makes sense, as these are what I commonly see when going by a liquor store.
 +-------------------------
 +List of scenarioNames: pastebin.com/6mrYTdQv
 +(^ Thank you so fucking much for this)
 +
 +Also these:
 +WORLD_FISH_FLEE
 +DRIVE
 +WORLD_HUMAN_HIKER
 +WORLD_VEHICLE_ATTRACTOR
 +WORLD_VEHICLE_BICYCLE_MOUNTAIN
 +WORLD_VEHICLE_BIKE_OFF_ROAD_RACE
 +WORLD_VEHICLE_BIKER
 +WORLD_VEHICLE_CONSTRUCTION_PASSENGERS
 +WORLD_VEHICLE_CONSTRUCTION_SOLO
 +WORLD_VEHICLE_DRIVE_PASSENGERS
 +WORLD_VEHICLE_DRIVE_SOLO
 +WORLD_VEHICLE_EMPTY
 +WORLD_VEHICLE_PARK_PARALLEL
 +WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN
 +WORLD_VEHICLE_POLICE_BIKE
 +WORLD_VEHICLE_POLICE_CAR
 +WORLD_VEHICLE_POLICE_NEXT_TO_CAR
 +WORLD_VEHICLE_SALTON_DIRT_BIKE
 +WORLD_VEHICLE_TRUCK_LOGS
 +
 +Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json</code>
 +==== TASK_START_SCENARIO_AT_POSITION ====
 +<code cpp>void TASK::TASK_START_SCENARIO_AT_POSITION(Ped ped, const char* scenarioName, float x, float y, float z, float heading, int duration, BOOL sittingScenario, BOOL teleport) // 0xFA4EFC79F69D4F07 0xAA2C4AC2 b323</code>
 +
 +<code>Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json
 +
 +Also a few more listed at TASK::TASK_START_SCENARIO_IN_PLACE just above.
 +---------------
 +The first parameter in every scenario has always been a Ped of some sort. The second like TASK_START_SCENARIO_IN_PLACE is the name of the scenario. 
 +
 +The next 4 parameters were harder to decipher. After viewing "hairdo_shop_mp.ysc.c4", and being confused from seeing the case in other scripts, they passed the first three of the arguments as one array from a function, and it looked like it was obviously x, y, and z.
 +
 +I haven't seen the sixth parameter go to or over 360, making me believe that it is rotation, but I really can't confirm anything.
 +
 +I have no idea what the last 3 parameters are, but I'll try to find out.
 +
 +-going on the last 3 parameters, they appear to always be "0, 0, 1"
 +
 +p6 -1 also used in scrips
 +
 +p7 used for sitting scenarios
 +
 +p8 teleports ped to position</code>
 +==== TASK_USE_NEAREST_SCENARIO_TO_COORD ====
 +<code cpp>void TASK::TASK_USE_NEAREST_SCENARIO_TO_COORD(Ped ped, float x, float y, float z, float distance, int duration) // 0x277F471BA9DB000B 0x9C50FBF0 b323</code>
 +
 +<code>Updated variables
 +
 +An alternative to TASK::TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP. Makes the ped walk to the scenario instead.</code>
 +==== TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP ====
 +<code cpp>void TASK::TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(Ped ped, float x, float y, float z, float radius, Any p5) // 0x58E2E0F23F6B76C3 0x1BE9D65C b323</code>
 +
 +==== TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD ====
 +<code cpp>void TASK::TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD(Any p0, float p1, float p2, float p3, float p4, Any p5) // 0x9FDA1B3D7E7028B3 0xE32FFB22 b323</code>
 +
 +==== TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD_WARP ====
 +<code cpp>void TASK::TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD_WARP(Any p0, float p1, float p2, float p3, float p4, Any p5) // 0x97A28E63F0BA5631 0xBAB4C0AE b323</code>
 +
 +==== DOES_SCENARIO_EXIST_IN_AREA ====
 +<code cpp>BOOL TASK::DOES_SCENARIO_EXIST_IN_AREA(float x, float y, float z, float radius, BOOL b) // 0x5A59271FFADD33C1 0xFA7F5047 b323</code>
 +
 +==== DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA ====
 +<code cpp>BOOL TASK::DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA(float p0, float p1, float p2, Any* p3, float p4, BOOL p5) // 0x0A9D0C2A3BBC86C1 0x0FB138A5 b323</code>
 +
 +==== IS_SCENARIO_OCCUPIED ====
 +<code cpp>BOOL TASK::IS_SCENARIO_OCCUPIED(float p0, float p1, float p2, float p3, BOOL p4) // 0x788756D73AC2E07C 0x697FC008 b323</code>
 +
 +==== PED_HAS_USE_SCENARIO_TASK ====
 +<code cpp>BOOL TASK::PED_HAS_USE_SCENARIO_TASK(Ped ped) // 0x295E3CCEC879CCD7 0x9BE9C691 b323</code>
 +
 +==== PLAY_ANIM_ON_RUNNING_SCENARIO ====
 +<code cpp>void TASK::PLAY_ANIM_ON_RUNNING_SCENARIO(Ped ped, const char* animDict, const char* animName) // 0x748040460F8DF5DC 0x1984A5D1 b323</code>
 +
 +<code>Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== DOES_SCENARIO_GROUP_EXIST ====
 +<code cpp>BOOL TASK::DOES_SCENARIO_GROUP_EXIST(const char* scenarioGroup) // 0xF9034C136C9E00D3 0x5F072EB9 b323</code>
 +
 +<code>Occurrences in the b617d scripts:
 +
 +"ARMY_GUARD",
 +"ARMY_HELI",
 +"Cinema_Downtown",
 +"Cinema_Morningwood",
 +"Cinema_Textile",
 +"City_Banks",
 +"Countryside_Banks",
 +"DEALERSHIP",
 +"GRAPESEED_PLANES",
 +"KORTZ_SECURITY",
 +"LOST_BIKERS",
 +"LSA_Planes",
 +"LSA_Planes",
 +"MP_POLICE",
 +"Observatory_Bikers", 
 +"POLICE_POUND1",
 +"POLICE_POUND2",
 +"POLICE_POUND3",
 +"POLICE_POUND4",
 +"POLICE_POUND5"
 +"QUARRY",
 +"SANDY_PLANES",
 +"SCRAP_SECURITY",
 +"SEW_MACHINE",
 +"SOLOMON_GATE",
 +"Triathlon_1_Start", 
 +"Triathlon_2_Start", 
 +"Triathlon_3_Start"
 +
 +Sometimes used with IS_SCENARIO_GROUP_ENABLED:
 +if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") && (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {
 +else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {
 +</code>
 +==== IS_SCENARIO_GROUP_ENABLED ====
 +<code cpp>BOOL TASK::IS_SCENARIO_GROUP_ENABLED(const char* scenarioGroup) // 0x367A09DED4E05B99 0x90991122 b323</code>
 +
 +<code> Occurrences in the b617d scripts: 
 +
 + "ARMY_GUARD",
 + "ARMY_HELI",
 + "BLIMP",
 + "Cinema_Downtown",
 + "Cinema_Morningwood",
 + "Cinema_Textile",
 + "City_Banks",
 + "Countryside_Banks",
 + "DEALERSHIP",
 + "KORTZ_SECURITY",
 + "LSA_Planes",
 + "MP_POLICE",
 + "Observatory_Bikers",
 + "POLICE_POUND1",
 + "POLICE_POUND2",
 + "POLICE_POUND3",
 + "POLICE_POUND4",
 + "POLICE_POUND5",
 + "Rampage1",
 + "SANDY_PLANES",
 + "SCRAP_SECURITY",
 + "SEW_MACHINE",
 + "SOLOMON_GATE"
 +
 +Sometimes used with DOES_SCENARIO_GROUP_EXIST:
 +if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") &&   (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {
 +else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {</code>
 +==== SET_SCENARIO_GROUP_ENABLED ====
 +<code cpp>void TASK::SET_SCENARIO_GROUP_ENABLED(const char* scenarioGroup, BOOL p1) // 0x02C8E5B49848664E 0x116997B1 b323</code>
 +
 +<code>Occurrences in the b617d scripts: pastebin.com/Tvg2PRHU</code>
 +==== RESET_SCENARIO_GROUPS_ENABLED ====
 +<code cpp>void TASK::RESET_SCENARIO_GROUPS_ENABLED() // 0xDD902D0349AFAD3A 0xBF55025D b323</code>
 +
 +==== SET_EXCLUSIVE_SCENARIO_GROUP ====
 +<code cpp>void TASK::SET_EXCLUSIVE_SCENARIO_GROUP(const char* scenarioGroup) // 0x535E97E1F7FC0C6A 0x59DB8F26 b323</code>
 +
 +<code>Groups found in the scripts used with this native:
 +
 +"AMMUNATION",
 +"QUARRY",
 +"Triathlon_1",
 +"Triathlon_2",
 +"Triathlon_3"</code>
 +==== RESET_EXCLUSIVE_SCENARIO_GROUP ====
 +<code cpp>void TASK::RESET_EXCLUSIVE_SCENARIO_GROUP() // 0x4202BBCB8684563D 0x17F9DFE8 b323</code>
 +
 +==== IS_SCENARIO_TYPE_ENABLED ====
 +<code cpp>BOOL TASK::IS_SCENARIO_TYPE_ENABLED(const char* scenarioType) // 0x3A815DB3EA088722 0xAE37E969 b323</code>
 +
 +<code>Occurrences in the b617d scripts:
 +"PROP_HUMAN_SEAT_CHAIR",
 +"WORLD_HUMAN_DRINKING",
 +"WORLD_HUMAN_HANG_OUT_STREET",
 +"WORLD_HUMAN_SMOKING",
 +"WORLD_MOUNTAIN_LION_WANDER",
 +"WORLD_HUMAN_DRINKING"
 +
 +Sometimes used together with MISC::IS_STRING_NULL_OR_EMPTY in the scripts.
 +
 +scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.
 +</code>
 +==== SET_SCENARIO_TYPE_ENABLED ====
 +<code cpp>void TASK::SET_SCENARIO_TYPE_ENABLED(const char* scenarioType, BOOL toggle) // 0xEB47EC4E34FB7EE1 0xDB18E5DE b323</code>
 +
 +<code>seems to enable/disable specific scenario-types from happening in the game world.
 +
 +Here are some scenario types from the scripts:
 +"WORLD_MOUNTAIN_LION_REST"                                             
 +"WORLD_MOUNTAIN_LION_WANDER"                                            
 +"DRIVE"                                                                  
 +"WORLD_VEHICLE_POLICE_BIKE"                                             
 +"WORLD_VEHICLE_POLICE_CAR"                                             
 +"WORLD_VEHICLE_POLICE_NEXT_TO_CAR"                                        
 +"WORLD_VEHICLE_DRIVE_SOLO"                                                 
 +"WORLD_VEHICLE_BIKER"                                                      
 +"WORLD_VEHICLE_DRIVE_PASSENGERS"                                           
 +"WORLD_VEHICLE_SALTON_DIRT_BIKE"                                           
 +"WORLD_VEHICLE_BICYCLE_MOUNTAIN"                                           
 +"PROP_HUMAN_SEAT_CHAIR"                                             
 +"WORLD_VEHICLE_ATTRACTOR"                                             
 +"WORLD_HUMAN_LEANING"                                                 
 +"WORLD_HUMAN_HANG_OUT_STREET"                                        
 +"WORLD_HUMAN_DRINKING"                                                
 +"WORLD_HUMAN_SMOKING"                                                
 +"WORLD_HUMAN_GUARD_STAND"                                            
 +"WORLD_HUMAN_CLIPBOARD"                                              
 +"WORLD_HUMAN_HIKER"                                                  
 +"WORLD_VEHICLE_EMPTY"                                                      
 +"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE"                                      
 +"WORLD_HUMAN_PAPARAZZI"                                               
 +"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN"                            
 +"WORLD_VEHICLE_PARK_PARALLEL"                                              
 +"WORLD_VEHICLE_CONSTRUCTION_SOLO"                               
 +"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS"                                                                    
 +"WORLD_VEHICLE_TRUCK_LOGS" 
 +-alphazolam
 +
 +scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.</code>
 +==== RESET_SCENARIO_TYPES_ENABLED ====
 +<code cpp>void TASK::RESET_SCENARIO_TYPES_ENABLED() // 0x0D40EE2A7F2B2D6D 0xF58FDEB4 b323</code>
 +
 +==== IS_PED_ACTIVE_IN_SCENARIO ====
 +<code cpp>BOOL TASK::IS_PED_ACTIVE_IN_SCENARIO(Ped ped) // 0xAA135F9482C82CC3 0x05038F1A b323</code>
 +
 +==== IS_PED_PLAYING_BASE_CLIP_IN_SCENARIO ====
 +<code cpp>BOOL TASK::IS_PED_PLAYING_BASE_CLIP_IN_SCENARIO(Ped ped) // 0x621C6E4729388E41 0xA0DA6B1D b323</code>
 +
 +<code>Used only once (am_mp_property_int)
 +
 +ped was PLAYER_PED_ID()
 +
 +Related to CTaskAmbientClips.</code>
 +==== SET_PED_CAN_PLAY_AMBIENT_IDLES ====
 +<code cpp>void TASK::SET_PED_CAN_PLAY_AMBIENT_IDLES(Ped ped, BOOL p1, BOOL p2) // 0x8FD89A6240813FD0 0xB5AD044E b323</code>
 +
 +<code>Appears only in fm_mission_controller and used only 3 times.
 +
 +ped was always PLAYER_PED_ID()
 +p1 was always true
 +p2 was always true</code>
 +==== TASK_COMBAT_HATED_TARGETS_IN_AREA ====
 +<code cpp>void TASK::TASK_COMBAT_HATED_TARGETS_IN_AREA(Ped ped, float x, float y, float z, float radius, Any p5) // 0x4CF5F55DAC3280A0 0xDF099E18 b323</code>
 +
 +<code>Despite its name, it only attacks ONE hated target. The one closest to the specified position.</code>
 +==== TASK_COMBAT_HATED_TARGETS_AROUND_PED ====
 +<code cpp>void TASK::TASK_COMBAT_HATED_TARGETS_AROUND_PED(Ped ped, float radius, int p2) // 0x7BF835BB9E2698C8 0x2E7064E4 b323</code>
 +
 +<code>Despite its name, it only attacks ONE hated target. The one closest hated target.
 +
 +p2 seems to be always 0</code>
 +==== TASK_COMBAT_HATED_TARGETS_AROUND_PED_TIMED ====
 +<code cpp>void TASK::TASK_COMBAT_HATED_TARGETS_AROUND_PED_TIMED(Any p0, float p1, Any p2, Any p3) // 0x2BBA30B854534A0C 0xF127AD6A b323</code>
 +
 +==== TASK_THROW_PROJECTILE ====
 +<code cpp>void TASK::TASK_THROW_PROJECTILE(Ped ped, float x, float y, float z, Any p4, Any p5) // 0x7285951DBF6B5A51 0xF65C20A7 b323</code>
 +
 +<code>In every case of this native, I've only seen the first parameter passed as 0, although I believe it's a Ped after seeing tasks around it using 0. That's because it's used in a Sequence Task.
 +
 +The last 3 parameters are definitely coordinates after seeing them passed in other scripts, and even being used straight from the player's coordinates.
 +---
 +It seems that - in the decompiled scripts - this native was used on a ped who was in a vehicle to throw a projectile out the window at the player. This is something any ped will naturally do if they have a throwable and they are doing driveby-combat (although not very accurately).
 +It is possible, however, that this is how SWAT throws smoke grenades at the player when in cover.
 +----------------------------------------------------
 +The first comment is right it definately is the ped as if you look in script finale_heist2b.c line 59628 in Xbox Scripts atleast you will see task_throw_projectile and the first param is Local_559[2 <14>] if you look above it a little bit line 59622 give_weapon_to_ped uses the same exact param Local_559[2 <14>] and we all know the first param of that native is ped. So it guaranteed has to be ped. 0 just may mean to use your ped by default for some reason.</code>
 +==== TASK_SWAP_WEAPON ====
 +<code cpp>void TASK::TASK_SWAP_WEAPON(Ped ped, BOOL p1) // 0xA21C51255B205245 0xDAF4F8FC b323</code>
 +
 +==== TASK_RELOAD_WEAPON ====
 +<code cpp>void TASK::TASK_RELOAD_WEAPON(Ped ped, BOOL unused) // 0x62D2916F56B9CD2D 0xCA6E91FD b323</code>
 +
 +<code>The 2nd param (unused) is not implemented.
 +
 +-----------------------------------------------------------------------
 +
 +The only occurrence I found in a R* script ("assassin_construction.ysc.c4"):
 +
 +            if (((v_3 < v_4) && (TASK::GET_SCRIPT_TASK_STATUS(PLAYER::PLAYER_PED_ID(), 0x6a67a5cc) != 1)) && (v_5 > v_3)) {
 +                TASK::TASK_RELOAD_WEAPON(PLAYER::PLAYER_PED_ID(), 1);
 +            }</code>
 +==== IS_PED_GETTING_UP ====
 +<code cpp>BOOL TASK::IS_PED_GETTING_UP(Ped ped) // 0x2A74E1D5F2F00EEC 0x320813E6 b323</code>
 +
 +==== TASK_WRITHE ====
 +<code cpp>void TASK::TASK_WRITHE(Ped ped, Ped target, int time, int p3, Any p4, Any p5) // 0xCDDC2B77CE54AC6E 0x0FDC54FC b323</code>
 +
 +<code>EX: Function.Call(Ped1, Ped2, Time, 0);
 +
 +The last parameter is always 0 for some reason I do not know. The first parameter is the pedestrian who will writhe to the pedestrian in the other parameter. The third paremeter is how long until the Writhe task ends. When the task ends, the ped will die. If set to -1, he will not die automatically, and the task will continue until something causes it to end. This can be being touched by an entity, being shot, explosion, going into ragdoll, having task cleared. Anything that ends the current task will kill the ped at this point.
 +
 +
 +
 +MulleDK19: Third parameter does not appear to be time. The last parameter is not implemented (It's not used, regardless of value).</code>
 +==== IS_PED_IN_WRITHE ====
 +<code cpp>BOOL TASK::IS_PED_IN_WRITHE(Ped ped) // 0xDEB6D52126E7D640 0x09E61921 b323</code>
 +
 +<code>This native checks if a ped is on the ground, in pain from a (gunshot) wound.
 +Returns `true` if the ped is in writhe, `false` otherwise.</code>
 +==== OPEN_PATROL_ROUTE ====
 +<code cpp>void TASK::OPEN_PATROL_ROUTE(const char* patrolRoute) // 0xA36BFB5EE89F3D82 0xF33F83CA b323</code>
 +
 +<code> patrolRoutes found in the b617d scripts:
 + "miss_Ass0",
 + "miss_Ass1",
 + "miss_Ass2",
 + "miss_Ass3",
 + "miss_Ass4",
 + "miss_Ass5",
 + "miss_Ass6",
 + "MISS_PATROL_6",
 + "MISS_PATROL_7",
 + "MISS_PATROL_8",
 + "MISS_PATROL_9",
 + "miss_Tower_01",
 + "miss_Tower_02",
 + "miss_Tower_03",
 + "miss_Tower_04",
 + "miss_Tower_05",
 + "miss_Tower_06",
 + "miss_Tower_07",
 + "miss_Tower_08",
 + "miss_Tower_10"</code>
 +==== CLOSE_PATROL_ROUTE ====
 +<code cpp>void TASK::CLOSE_PATROL_ROUTE() // 0xB043ECA801B8CBC1 0x67305E59 b323</code>
 +
 +==== ADD_PATROL_ROUTE_NODE ====
 +<code cpp>void TASK::ADD_PATROL_ROUTE_NODE(int p0, const char* p1, float x1, float y1, float z1, float x2, float y2, float z2, int p8) // 0x8EDF950167586B7C 0x21B48F10 b323</code>
 +
 +<code>Example: 
 +TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", -193.4915, -2378.864990234375, 10.9719, -193.4915, -2378.864990234375, 10.9719, 3000);
 +
 +p0 is between 0 and 4 in the scripts.
 +
 +p1 is "WORLD_HUMAN_GUARD_STAND" or "StandGuard".
 +
 +p2, p3 and p4 is only one parameter sometimes in the scripts. Most likely a Vector3 hence p2, p3 and p4 are coordinates. 
 +Examples: 
 +TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_739[7/*3*/], 0.0, 0.0, 0.0, 0);
 +
 +TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_B0[17/*44*/]._f3, l_B0[17/*44*/]._f3, 2000);
 +
 +p5, p6 and p7 are for example set to: 1599.0406494140625, 2713.392578125, 44.4309.
 +
 +p8 is an int, often random set to for example: MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000).</code>
 +==== ADD_PATROL_ROUTE_LINK ====
 +<code cpp>void TASK::ADD_PATROL_ROUTE_LINK(Any p0, Any p1) // 0x23083260DEC3A551 0xD8761BB3 b323</code>
 +
 +==== CREATE_PATROL_ROUTE ====
 +<code cpp>void TASK::CREATE_PATROL_ROUTE() // 0xAF8A443CCC8018DC 0x0A6C7864 b323</code>
 +
 +==== DELETE_PATROL_ROUTE ====
 +<code cpp>void TASK::DELETE_PATROL_ROUTE(const char* patrolRoute) // 0x7767DD9D65E91319 0x2A4E6706 b323</code>
 +
 +<code>From the b617d scripts:
 +
 +TASK::DELETE_PATROL_ROUTE("miss_merc0");
 +TASK::DELETE_PATROL_ROUTE("miss_merc1");
 +TASK::DELETE_PATROL_ROUTE("miss_merc2");
 +TASK::DELETE_PATROL_ROUTE("miss_dock");</code>
 +==== TASK_PATROL ====
 +<code cpp>void TASK::TASK_PATROL(Ped ped, const char* p1, Any p2, BOOL p3, BOOL p4) // 0xBDA5DF49D080FE4E 0xB92E5AF6 b323</code>
 +
 +<code>After looking at some scripts the second parameter seems to be an id of some kind. Here are some I found from some R* scripts:
 +
 +"miss_Tower_01" (this went from 01 - 10)
 +"miss_Ass0" (0, 4, 6, 3)
 +"MISS_PATROL_8"
 +
 +I think they're patrol routes, but I'm not sure. And I believe the 3rd parameter is a BOOL, but I can't confirm other than only seeing 0 and 1 being passed.
 +
 +
 +As far as I can see the patrol routes names such as "miss_Ass0" have been defined earlier in the scripts. This leads me to believe we can defined our own new patrol routes by following the same approach. 
 +From the scripts
 +
 +    TASK::OPEN_PATROL_ROUTE("miss_Ass0");
 +    TASK::ADD_PATROL_ROUTE_NODE(0, "WORLD_HUMAN_GUARD_STAND", l_738[0/*3*/], -139.4076690673828, -993.4732055664062, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));
 +    TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_738[1/*3*/], -116.1391830444336, -987.4984130859375, 26.38541030883789, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));
 +    TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", l_738[2/*3*/], -128.46847534179688, -979.0340576171875, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));
 +    TASK::ADD_PATROL_ROUTE_LINK(0, 1);
 +    TASK::ADD_PATROL_ROUTE_LINK(1, 2);
 +    TASK::ADD_PATROL_ROUTE_LINK(2, 0);
 +    TASK::CLOSE_PATROL_ROUTE();
 +    TASK::CREATE_PATROL_ROUTE();
 +
 +</code>
 +==== TASK_STAY_IN_COVER ====
 +<code cpp>void TASK::TASK_STAY_IN_COVER(Ped ped) // 0xE5DA8615A6180789 0xA27A9413 b323</code>
 +
 +<code>Makes the ped run to take cover</code>
 +==== ADD_VEHICLE_SUBTASK_ATTACK_COORD ====
 +<code cpp>void TASK::ADD_VEHICLE_SUBTASK_ATTACK_COORD(Ped ped, float x, float y, float z) // 0x5CF0D8F9BBA0DD75 0x50779A2C b323</code>
 +
 +<code>x, y, z: offset in world coords from some entity.</code>
 +==== ADD_VEHICLE_SUBTASK_ATTACK_PED ====
 +<code cpp>void TASK::ADD_VEHICLE_SUBTASK_ATTACK_PED(Ped ped, Ped ped2) // 0x85F462BADC7DA47F 0x80461113 b323</code>
 +
 +==== TASK_VEHICLE_SHOOT_AT_PED ====
 +<code cpp>void TASK::TASK_VEHICLE_SHOOT_AT_PED(Ped ped, Ped target, float p2) // 0x10AB107B887214D8 0x59677BA0 b323</code>
 +
 +==== TASK_VEHICLE_AIM_AT_PED ====
 +<code cpp>void TASK::TASK_VEHICLE_AIM_AT_PED(Ped ped, Ped target) // 0xE41885592B08B097 0x920AE6DB b323</code>
 +
 +==== TASK_VEHICLE_SHOOT_AT_COORD ====
 +<code cpp>void TASK::TASK_VEHICLE_SHOOT_AT_COORD(Ped ped, float x, float y, float z, float p4) // 0x5190796ED39C9B6D 0xA7AAA4D6 b323</code>
 +
 +==== TASK_VEHICLE_AIM_AT_COORD ====
 +<code cpp>void TASK::TASK_VEHICLE_AIM_AT_COORD(Ped ped, float x, float y, float z) // 0x447C1E9EF844BC0F 0x010F47CE b323</code>
 +
 +==== TASK_VEHICLE_GOTO_NAVMESH ====
 +<code cpp>void TASK::TASK_VEHICLE_GOTO_NAVMESH(Ped ped, Vehicle vehicle, float x, float y, float z, float speed, int behaviorFlag, float stoppingRange) // 0x195AEEB13CEFE2EE 0x55CF3BCD b323</code>
 +
 +<code>Differs from TASK_VEHICLE_DRIVE_TO_COORDS in that it will pick the shortest possible road route without taking one-way streets and other "road laws" into consideration.
 +
 +WARNING:
 +A behaviorFlag value of 0 will result in a clunky, stupid driver!
 +
 +Recommended settings:
 +speed = 30.0f,
 +behaviorFlag = 156, 
 +stoppingRange = 5.0f;
 +
 +If you simply want to have your driver move to a fixed location, call it only once, or, when necessary in the event of interruption. 
 +
 +If using this to continually follow a Ped who is on foot:  You will need to run this in a tick loop.  Call it in with the Ped's updated coordinates every 20 ticks or so and you will have one hell of a smart, fast-reacting NPC driver -- provided he doesn't get stuck.  If your update frequency is too fast, the Ped may not have enough time to figure his way out of being stuck, and thus, remain stuck.  One way around this would be to implement an "anti-stuck" mechanism, which allows the driver to realize he's stuck, temporarily pause the tick, unstuck, then resume the tick.
 +
 +EDIT:  This is being discussed in more detail at http://gtaforums.com/topic/818504-any-idea-on-how-to-make-peds-clever-and-insanely-fast-c/  </code>
 +==== TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(Ped ped, float x, float y, float z, float aimAtX, float aimAtY, float aimAtZ, float moveSpeed, BOOL p8, float p9, float p10, BOOL p11, Any flags, BOOL p13, Hash firingPattern) // 0x11315AB3385B8AC0 0x1552DC91 b323</code>
 +
 +<code>movement_speed: mostly 2f, but also 1/1.2f, etc.
 +p8: always false
 +p9: 2f
 +p10: 0.5f
 +p11: true
 +p12: 0 / 512 / 513, etc.
 +p13: 0
 +firing_pattern: ${firing_pattern_full_auto}, 0xC6EE6B4C</code>
 +==== TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(Any p0, float p1, float p2, float p3, Any p4, float p5, BOOL p6, float p7, float p8, BOOL p9, Any p10, BOOL p11, Any p12, Any p13) // 0xB2A16444EAD9AE47 0x9BD52ABD b323</code>
 +
 +==== TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD ====
 +<code cpp>void TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(Ped pedHandle, float goToLocationX, float goToLocationY, float goToLocationZ, float focusLocationX, float focusLocationY, float focusLocationZ, float speed, BOOL shootAtEnemies, float distanceToStopAt, float noRoadsDistance, BOOL unkTrue, int unkFlag, int aimingFlag, Hash firingPattern) // 0xA55547801EB331FC 0x3F91358E b323</code>
 +
 +<code>The ped will walk or run towards goToLocation, aiming towards goToLocation or focusLocation (depending on the aimingFlag) and shooting if shootAtEnemies = true to any enemy in his path.
 +
 +If the ped is closer than noRoadsDistance, the ped will ignore pathing/navmesh and go towards goToLocation directly. This could cause the ped to get stuck behind tall walls if the goToLocation is on the other side. To avoid this, use 0.0f and the ped will always use pathing/navmesh to reach his destination.
 +
 +If the speed is set to 0.0f, the ped will just stand there while aiming, if set to 1.0f he will walk while aiming, 2.0f will run while aiming.
 +
 +The ped will stop aiming when he is closer than distanceToStopAt to goToLocation.
 +
 +I still can't figure out what unkTrue is used for. I don't notice any difference if I set it to false but in the decompiled scripts is always true.
 +
 +I think that unkFlag, like the driving styles, could be a flag that "work as a list of 32 bits converted to a decimal integer. Each bit acts as a flag, and enables or disables a function". What leads me to this conclusion is the fact that in the decompiled scripts, unkFlag takes values like: 0, 1, 5 (101 in binary) and 4097 (4096 + 1 or 1000000000001 in binary). For now, I don't know what behavior enable or disable this possible flag so I leave it at 0.
 +
 +Note: After some testing, using unkFlag = 16 (0x10) enables the use of sidewalks while moving towards goToLocation.
 +
 +The aimingFlag takes 2 values: 0 to aim at the focusLocation, 1 to aim at where the ped is heading (goToLocation).
 +
 +Example:
 +
 +enum AimFlag
 +{
 +   AimAtFocusLocation,
 +   AimAtGoToLocation
 +};
 +
 +Vector3 goToLocation1 = { 996.2867f, 0, -2143.044f, 0, 28.4763f, 0 }; // remember the padding.
 +
 +Vector3 goToLocation2 = { 990.2867f, 0, -2140.044f, 0, 28.4763f, 0 }; // remember the padding.
 +
 +Vector3 focusLocation = { 994.3478f, 0, -2136.118f, 0, 29.2463f, 0 }; // the coord z should be a little higher, around +1.0f to avoid aiming at the ground
 +
 +// 1st example
 +TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation1.x, goToLocation1.y, goToLocation1.z, focusLocation.x, focusLocation.y, focusLocation.z, 2.0f /*run*/, true /*shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtGoToLocation, -957453492 /*FullAuto pattern*/);
 +
 +// 2nd example
 +TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation2.x, goToLocation2.y, goToLocation2.z, focusLocation.x, focusLocation.y, focusLocation.z, 1.0f /*walk*/, false /*don't shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtFocusLocation, -957453492 /*FullAuto pattern*/);
 +
 +
 +1st example: The ped (pedhandle) will run towards goToLocation1. While running and aiming towards goToLocation1, the ped will shoot on sight to any enemy in his path, using "FullAuto" firing pattern. The ped will stop once he is closer than distanceToStopAt to goToLocation1.
 +
 +2nd example: The ped will walk towards goToLocation2. This time, while walking towards goToLocation2 and aiming at focusLocation, the ped will point his weapon on sight to any enemy in his path without shooting. The ped will stop once he is closer than distanceToStopAt to goToLocation2.</code>
 +==== TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD ====
 +<code cpp>void TASK::TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD(Any p0, Any p1, float p2, float p3, float p4, float p5, BOOL p6, float p7, float p8, BOOL p9, BOOL p10, Any p11) // 0x04701832B739DCE5 0xD896CD82 b323</code>
 +
 +==== TASK_GO_TO_ENTITY_WHILE_AIMING_AT_ENTITY ====
 +<code cpp>void TASK::TASK_GO_TO_ENTITY_WHILE_AIMING_AT_ENTITY(Ped ped, Entity entityToWalkTo, Entity entityToAimAt, float speed, BOOL shootatEntity, float p5, float p6, BOOL p7, BOOL p8, Hash firingPattern) // 0x97465886D35210E9 0x68E36B7A b323</code>
 +
 +<code>shootatEntity:
 +If true, peds will shoot at Entity till it is dead.
 +If false, peds will just walk till they reach the entity and will cease shooting.</code>
 +==== SET_HIGH_FALL_TASK ====
 +<code cpp>void TASK::SET_HIGH_FALL_TASK(Ped ped, Any p1, Any p2, Any p3) // 0x8C825BDC7741D37C 0xBBB26172 b323</code>
 +
 +<code>Makes the ped ragdoll like when falling from a great height</code>
 +==== REQUEST_WAYPOINT_RECORDING ====
 +<code cpp>void TASK::REQUEST_WAYPOINT_RECORDING(const char* name) // 0x9EEFB62EB27B5792 0xAFABFB5D b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
 +For a full list of the points, see here: goo.gl/wIH0vn
 +
 +Max number of loaded recordings is 32.</code>
 +==== GET_IS_WAYPOINT_RECORDING_LOADED ====
 +<code cpp>BOOL TASK::GET_IS_WAYPOINT_RECORDING_LOADED(const char* name) // 0xCB4E8BE8A0063C5D 0x87125F5D b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json</code>
 +==== REMOVE_WAYPOINT_RECORDING ====
 +<code cpp>void TASK::REMOVE_WAYPOINT_RECORDING(const char* name) // 0xFF1B8B4AA1C25DC8 0x624530B0 b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json</code>
 +==== WAYPOINT_RECORDING_GET_NUM_POINTS ====
 +<code cpp>BOOL TASK::WAYPOINT_RECORDING_GET_NUM_POINTS(const char* name, int* points) // 0x5343532C01A07234 0xF5F9B71E b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
 +For a full list of the points, see here: goo.gl/wIH0vn</code>
 +==== WAYPOINT_RECORDING_GET_COORD ====
 +<code cpp>BOOL TASK::WAYPOINT_RECORDING_GET_COORD(const char* name, int point, Vector3* coord) // 0x2FB897405C90B361 0x19266913 b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
 +For a full list of the points, see here: goo.gl/wIH0vn</code>
 +==== WAYPOINT_RECORDING_GET_SPEED_AT_POINT ====
 +<code cpp>float TASK::WAYPOINT_RECORDING_GET_SPEED_AT_POINT(const char* name, int point) // 0x005622AEBC33ACA9 0xC765633A b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json</code>
 +==== WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT ====
 +<code cpp>BOOL TASK::WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT(const char* name, float x, float y, float z, int* point) // 0xB629A298081F876F 0xC4CD35AF b323</code>
 +
 +<code>Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
 +For a full list of the points, see here: goo.gl/wIH0vn</code>
 +==== TASK_FOLLOW_WAYPOINT_RECORDING ====
 +<code cpp>void TASK::TASK_FOLLOW_WAYPOINT_RECORDING(Any p0, Any p1, Any p2, Any p3, Any p4) // 0x0759591819534F7B 0xADF9904D b323</code>
 +
 +==== IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED ====
 +<code cpp>BOOL TASK::IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(Any p0) // 0xE03B3F2D3DC59B64 0x85B7725F b323</code>
 +
 +==== GET_PED_WAYPOINT_PROGRESS ====
 +<code cpp>int TASK::GET_PED_WAYPOINT_PROGRESS(Ped ped) // 0x2720AAA75001E094 0x3595B104 b323</code>
 +
 +==== GET_PED_WAYPOINT_DISTANCE ====
 +<code cpp>float TASK::GET_PED_WAYPOINT_DISTANCE(Any p0) // 0xE6A877C64CAF1BC5 0x084B35B0 b323</code>
 +
 +==== SET_PED_WAYPOINT_ROUTE_OFFSET ====
 +<code cpp>Any TASK::SET_PED_WAYPOINT_ROUTE_OFFSET(Any p0, Any p1, Any p2, Any p3) // 0xED98E10B0AFCE4B4 0xF867F747 b323</code>
 +
 +==== GET_WAYPOINT_DISTANCE_ALONG_ROUTE ====
 +<code cpp>float TASK::GET_WAYPOINT_DISTANCE_ALONG_ROUTE(const char* p0, int p1) // 0xA5B769058763E497 0xE8422AC4 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_GET_IS_PAUSED ====
 +<code cpp>BOOL TASK::WAYPOINT_PLAYBACK_GET_IS_PAUSED(Any p0) // 0x701375A7D43F01CB 0xA6BB5717 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_PAUSE ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_PAUSE(Any p0, BOOL p1, BOOL p2) // 0x0F342546AA06FED5 0xFE39ECF8 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_RESUME ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_RESUME(Any p0, BOOL p1, Any p2, Any p3) // 0x244F70C84C547D2D 0x50F392EF b323</code>
 +
 +==== WAYPOINT_PLAYBACK_OVERRIDE_SPEED ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_OVERRIDE_SPEED(Any p0, float p1, BOOL p2) // 0x7D7D2B47FA788E85 0x23E6BA96 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED(Any p0) // 0x6599D834B12D0800 0x1BBB2CAC b323</code>
 +
 +==== USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE ====
 +<code cpp>void TASK::USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE(const char* name, BOOL p1, float p2, float p3) // 0x5A353B8E6B1095B5 0x4DFD5FEC b323</code>
 +
 +==== WAYPOINT_PLAYBACK_START_AIMING_AT_PED ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_START_AIMING_AT_PED(Any p0, Any p1, BOOL p2) // 0x20E330937C399D29 0x75E60CF6 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_START_AIMING_AT_COORD ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_START_AIMING_AT_COORD(Any p0, float p1, float p2, float p3, BOOL p4) // 0x8968400D900ED8B3 0xF120A34E b323</code>
 +
 +==== WAYPOINT_PLAYBACK_START_SHOOTING_AT_PED ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_START_SHOOTING_AT_PED(Any p0, Any p1, BOOL p2, Any p3) // 0xE70BA7B90F8390DC 0xBD5F0EB8 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_START_SHOOTING_AT_COORD ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_START_SHOOTING_AT_COORD(Any p0, float p1, float p2, float p3, BOOL p4, Any p5) // 0x057A25CFCC9DB671 0xCDDB44D5 b323</code>
 +
 +==== WAYPOINT_PLAYBACK_STOP_AIMING_OR_SHOOTING ====
 +<code cpp>void TASK::WAYPOINT_PLAYBACK_STOP_AIMING_OR_SHOOTING(Any p0) // 0x47EFA040EBB8E2EA 0x6D7CF40C b323</code>
 +
 +==== ASSISTED_MOVEMENT_REQUEST_ROUTE ====
 +<code cpp>void TASK::ASSISTED_MOVEMENT_REQUEST_ROUTE(const char* route) // 0x817268968605947A 0x48262EDA b323</code>
 +
 +<code>Routes: "1_FIBStairs", "2_FIBStairs", "3_FIBStairs", "4_FIBStairs", "5_FIBStairs", "5_TowardsFire", "6a_FIBStairs", "7_FIBStairs", "8_FIBStairs", "Aprtmnt_1", "AssAfterLift", "ATM_1", "coroner2", "coroner_stairs", "f5_jimmy1", "fame1", "family5b", "family5c", "Family5d", "family5d", "FIB_Glass1", "FIB_Glass2", "FIB_Glass3", "finaBroute1A", "finalb1st", "finalB1sta", "finalbround", "finalbroute2", "Hairdresser1", "jan_foyet_ft_door", "Jo_3", "Lemar1", "Lemar2", "mansion_1", "Mansion_1", "pols_1", "pols_2", "pols_3", "pols_4", "pols_5", "pols_6", "pols_7", "pols_8", "Pro_S1", "Pro_S1a", "Pro_S2", "Towards_case", "trev_steps", "tunrs1", "tunrs2", "tunrs3", "Wave01457s"</code>
 +==== ASSISTED_MOVEMENT_REMOVE_ROUTE ====
 +<code cpp>void TASK::ASSISTED_MOVEMENT_REMOVE_ROUTE(const char* route) // 0x3548536485DD792B 0xB3CEC06F b323</code>
 +
 +==== ASSISTED_MOVEMENT_IS_ROUTE_LOADED ====
 +<code cpp>BOOL TASK::ASSISTED_MOVEMENT_IS_ROUTE_LOADED(const char* route) // 0x60F9A4393A21F741 0x79B067AF b323</code>
 +
 +==== ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES ====
 +<code cpp>void TASK::ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES(const char* route, int props) // 0xD5002D78B7162E1B 0x01CAAFCC b323</code>
 +
 +==== ASSISTED_MOVEMENT_OVERRIDE_LOAD_DISTANCE_THIS_FRAME ====
 +<code cpp>void TASK::ASSISTED_MOVEMENT_OVERRIDE_LOAD_DISTANCE_THIS_FRAME(float dist) // 0x13945951E16EF912 0x8FB923EC b323</code>
 +
 +==== TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING ====
 +<code cpp>void TASK::TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING(Ped ped, Vehicle vehicle, const char* WPRecording, int p3, int p4, int p5, int p6, float p7, BOOL p8, float p9) // 0x3123FAA6DB1CF7ED 0x959818B6 b323</code>
 +
 +<code>task_vehicle_follow_waypoint_recording(Ped p0, Vehicle p1, string p2, int p3, int p4, int p5, int p6, float.x p7, float.Y p8, float.Z p9, bool p10, int p11)
 +
 +p2 = Waypoint recording string (found in update\update.rpf\x64\levels\gta5\waypointrec.rpf
 +p3 = 786468
 +p4 = 0
 +p5 = 16
 +p6 = -1 (angle?)
 +p7/8/9 = usually v3.zero
 +p10 = bool (repeat?)
 +p11 = 1073741824
 +
 +-khorio
 +
 +Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json</code>
 +==== IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_VEHICLE ====
 +<code cpp>BOOL TASK::IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_VEHICLE(Vehicle vehicle) // 0xF5134943EA29868C 0x80DD15DB b323</code>
 +
 +==== GET_VEHICLE_WAYPOINT_PROGRESS ====
 +<code cpp>int TASK::GET_VEHICLE_WAYPOINT_PROGRESS(Vehicle vehicle) // 0x9824CFF8FC66E159 0xD3CCF64E b323</code>
 +
 +==== GET_VEHICLE_WAYPOINT_TARGET_POINT ====
 +<code cpp>int TASK::GET_VEHICLE_WAYPOINT_TARGET_POINT(Vehicle vehicle) // 0x416B62AC8B9E5BBD 0x81049608 b323</code>
 +
 +==== VEHICLE_WAYPOINT_PLAYBACK_PAUSE ====
 +<code cpp>void TASK::VEHICLE_WAYPOINT_PLAYBACK_PAUSE(Vehicle vehicle) // 0x8A4E6AC373666BC5 0x7C00B415 b323</code>
 +
 +==== VEHICLE_WAYPOINT_PLAYBACK_RESUME ====
 +<code cpp>void TASK::VEHICLE_WAYPOINT_PLAYBACK_RESUME(Vehicle vehicle) // 0xDC04FCAA7839D492 0xBEB14C82 b323</code>
 +
 +==== VEHICLE_WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED ====
 +<code cpp>void TASK::VEHICLE_WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED(Vehicle vehicle) // 0x5CEB25A7D2848963 0x923C3AA4 b323</code>
 +
 +==== VEHICLE_WAYPOINT_PLAYBACK_OVERRIDE_SPEED ====
 +<code cpp>void TASK::VEHICLE_WAYPOINT_PLAYBACK_OVERRIDE_SPEED(Vehicle vehicle, float speed) // 0x121F0593E0A431D7 0xBE1E7BB4 b323</code>
 +
 +==== TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS ====
 +<code cpp>void TASK::TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(Ped ped, BOOL toggle) // 0x90D2156198831D69 0x1B54FB6B b323</code>
 +
 +<code>I cant believe I have to define this, this is one of the best natives.
 +
 +It makes the ped ignore basically all shocking events around it. Occasionally the ped may comment or gesture, but other than that they just continue their daily activities. This includes shooting and wounding the ped. And - most importantly - they do not flee.
 +
 +Since it is a task, every time the native is called the ped will stop for a moment. </code>
 +==== TASK_FORCE_MOTION_STATE ====
 +<code cpp>void TASK::TASK_FORCE_MOTION_STATE(Ped ped, Hash state, BOOL p2) // 0x4F056E1AFFEF17AB 0xCAD2EF77 b323</code>
 +
 +<code>p2 always false
 +
 +[30/03/2017] ins1de :
 +
 +See FORCE_PED_MOTION_STATE</code>
 +==== TASK_MOVE_NETWORK_BY_NAME ====
 +<code cpp>void TASK::TASK_MOVE_NETWORK_BY_NAME(Ped ped, const char* task, float multiplier, BOOL p3, const char* animDict, int flags) // 0x2D537BA194896636 0x6F5D215F b323</code>
 +
 +<code>Example:
 +TASK::TASK_MOVE_NETWORK_BY_NAME(PLAYER::PLAYER_PED_ID(), "arm_wrestling_sweep_paired_a_rev3", 0.0f, true, "mini@arm_wrestling", 0);</code>
 +==== TASK_MOVE_NETWORK_ADVANCED_BY_NAME ====
 +<code cpp>void TASK::TASK_MOVE_NETWORK_ADVANCED_BY_NAME(Ped ped, const char* p1, float p2, float p3, float p4, float p5, float p6, float p7, Any p8, float p9, BOOL p10, const char* animDict, int flags) // 0xD5B35BEA41919ACB 0x71A5C5DB b323</code>
 +
 +<code>Example:
 +TASK::TASK_MOVE_NETWORK_ADVANCED_BY_NAME(PLAYER::PLAYER_PED_ID(), "minigame_tattoo_michael_parts", 324.13f, 181.29f, 102.6f, 0.0f, 0.0f, 22.32f, 2, 0, false, 0, 0);</code>
 +==== _TASK_MOVE_NETWORK_BY_NAME_WITH_INIT_PARAMS ====
 +<code cpp>void TASK::_TASK_MOVE_NETWORK_BY_NAME_WITH_INIT_PARAMS(Ped ped, const char* p1, Any* data, float p3, BOOL p4, const char* animDict, int flags) // 0x3D45B0B355C5E0C9  b1493</code>
 +
 +<code>Used only once in the scripts (am_mp_nightclub)</code>
 +==== _0x29682E2CCF21E9B5 ====
 +<code cpp>void TASK::_0x29682E2CCF21E9B5(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8, Any p9, Any p10, Any p11, Any p12, Any p13) // 0x29682E2CCF21E9B5  b1868</code>
 +
 +==== IS_TASK_MOVE_NETWORK_ACTIVE ====
 +<code cpp>BOOL TASK::IS_TASK_MOVE_NETWORK_ACTIVE(Ped ped) // 0x921CE12C489C4C41 0x902656EB b323</code>
 +
 +==== IS_TASK_MOVE_NETWORK_READY_FOR_TRANSITION ====
 +<code cpp>BOOL TASK::IS_TASK_MOVE_NETWORK_READY_FOR_TRANSITION(Ped ped) // 0x30ED88D5E0C56A37 0x92FDBAE6 b323</code>
 +
 +==== REQUEST_TASK_MOVE_NETWORK_STATE_TRANSITION ====
 +<code cpp>BOOL TASK::REQUEST_TASK_MOVE_NETWORK_STATE_TRANSITION(Ped ped, const char* name) // 0xD01015C7316AE176 0x885724DE b323</code>
 +
 +==== _0xAB13A5565480B6D9 ====
 +<code cpp>Any TASK::_0xAB13A5565480B6D9(Ped ped, const char* p1) // 0xAB13A5565480B6D9 0x1E58A7AD b323</code>
 +
 +<code>Used only once in the scripts (fm_mission_controller) like so:
 +
 +TASK::_0xAB13A5565480B6D9(iLocal_3160, "Cutting");
 +
 +SET_*</code>
 +==== GET_TASK_MOVE_NETWORK_STATE ====
 +<code cpp>const char* TASK::GET_TASK_MOVE_NETWORK_STATE(Ped ped) // 0x717E4D1F2048376D 0x96C0277B b323</code>
 +
 +==== _0x8423541E8B3A1589 ====
 +<code cpp>void TASK::_0x8423541E8B3A1589(Any p0, Any p1, Any p2) // 0x8423541E8B3A1589  b1493</code>
 +
 +==== SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT ====
 +<code cpp>void TASK::SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT(Ped ped, const char* signalName, float value) // 0xD5BB4025AE449A4E 0xA79BE783 b323</code>
 +
 +<code>p0 - PLAYER::PLAYER_PED_ID();
 +p1 - "Phase", "Wobble", "x_axis","y_axis","introphase","speed".
 +p2 - From what i can see it goes up to 1f (maybe).
 +
 +-LcGamingHD
 +
 +Example: TASK::_D5BB4025AE449A4E(PLAYER::PLAYER_PED_ID(), "Phase", 0.5);</code>
 +==== _SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT_2 ====
 +<code cpp>void TASK::_SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT_2(Ped ped, const char* signalName, float value) // 0x373EF409B82697A3  b1493</code>
 +
 +==== _0x8634CEF2522D987B ====
 +<code cpp>void TASK::_0x8634CEF2522D987B(Ped ped, const char* p1, float value) // 0x8634CEF2522D987B  b1493</code>
 +
 +==== SET_TASK_MOVE_NETWORK_SIGNAL_BOOL ====
 +<code cpp>void TASK::SET_TASK_MOVE_NETWORK_SIGNAL_BOOL(Ped ped, const char* signalName, BOOL value) // 0xB0A6CFD2C69C1088 0xF3538041 b323</code>
 +
 +==== _GET_TASK_MOVE_NETWORK_SIGNAL_FLOAT ====
 +<code cpp>float TASK::_GET_TASK_MOVE_NETWORK_SIGNAL_FLOAT(Ped ped, const char* signalName) // 0x44AB0B3AFECCE242  b1493</code>
 +
 +==== GET_TASK_MOVE_NETWORK_SIGNAL_BOOL ====
 +<code cpp>BOOL TASK::GET_TASK_MOVE_NETWORK_SIGNAL_BOOL(Ped ped, const char* signalName) // 0xA7FFBA498E4AAF67 0x1EBB6F3D b323</code>
 +
 +==== GET_TASK_MOVE_NETWORK_EVENT ====
 +<code cpp>BOOL TASK::GET_TASK_MOVE_NETWORK_EVENT(Ped ped, const char* eventName) // 0xB4F47213DF45A64C 0x72FA5EF2 b323</code>
 +
 +==== _0x0FFB3C758E8C07B9 ====
 +<code cpp>Any TASK::_0x0FFB3C758E8C07B9(Ped ped, BOOL p1) // 0x0FFB3C758E8C07B9  b2060</code>
 +
 +<code>Doesn't actually return anything.</code>
 +==== IS_MOVE_BLEND_RATIO_STILL ====
 +<code cpp>BOOL TASK::IS_MOVE_BLEND_RATIO_STILL(Ped ped) // 0x349CE7B56DAFD95C 0xE9DAF877 b323</code>
 +
 +==== IS_MOVE_BLEND_RATIO_WALKING ====
 +<code cpp>BOOL TASK::IS_MOVE_BLEND_RATIO_WALKING(Ped ped) // 0xF133BBBE91E1691F 0xD21639A8 b323</code>
 +
 +==== IS_MOVE_BLEND_RATIO_RUNNING ====
 +<code cpp>BOOL TASK::IS_MOVE_BLEND_RATIO_RUNNING(Ped ped) // 0xD4D8636C0199A939 0xE76A2353 b323</code>
 +
 +==== IS_MOVE_BLEND_RATIO_SPRINTING ====
 +<code cpp>BOOL TASK::IS_MOVE_BLEND_RATIO_SPRINTING(Ped ped) // 0x24A2AD74FA9814E2 0xDD616893 b323</code>
 +
 +==== IS_PED_STILL ====
 +<code cpp>BOOL TASK::IS_PED_STILL(Ped ped) // 0xAC29253EEF8F0180 0x09E3418D b323</code>
 +
 +==== IS_PED_WALKING ====
 +<code cpp>BOOL TASK::IS_PED_WALKING(Ped ped) // 0xDE4C184B2B9B071A 0x4B865C4A b323</code>
 +
 +==== IS_PED_RUNNING ====
 +<code cpp>BOOL TASK::IS_PED_RUNNING(Ped ped) // 0xC5286FFC176F28A2 0xE9A5578F b323</code>
 +
 +==== IS_PED_SPRINTING ====
 +<code cpp>BOOL TASK::IS_PED_SPRINTING(Ped ped) // 0x57E457CD2C0FC168 0x4F3E0633 b323</code>
 +
 +==== IS_PED_STRAFING ====
 +<code cpp>BOOL TASK::IS_PED_STRAFING(Ped ped) // 0xE45B7F222DE47E09 0xEFEED13C b323</code>
 +
 +<code>What's strafing?</code>
 +==== TASK_SYNCHRONIZED_SCENE ====
 +<code cpp>void TASK::TASK_SYNCHRONIZED_SCENE(Ped ped, int scene, const char* animDictionary, const char* animationName, float speed, float speedMultiplier, int duration, int flag, float playbackRate, Any p9) // 0xEEA929141F699854 0x4F217E7B b323</code>
 +
 +<code> TASK::TASK_SYNCHRONIZED_SCENE(ped, scene, "creatures@rottweiler@in_vehicle@std_car", "get_in", 1000.0, -8.0, 4, 0, 0x447a0000, 0);
 +
 +Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json</code>
 +==== TASK_AGITATED_ACTION ====
 +<code cpp>void TASK::TASK_AGITATED_ACTION(Ped ped, Ped ped2) // 0x19D1B791CB3670FE  b877</code>
 +
 +==== TASK_SWEEP_AIM_ENTITY ====
 +<code cpp>void TASK::TASK_SWEEP_AIM_ENTITY(Ped ped, const char* anim, const char* p2, const char* p3, const char* p4, int p5, Vehicle vehicle, float p7, float p8) // 0x2047C02158D6405A 0x4D210467 b323</code>
 +
 +<code>This function is called on peds in vehicles.
 +
 +anim: animation name
 +p2, p3, p4: "sweep_low", "sweep_med" or "sweep_high"
 +p5: no idea what it does but is usually -1</code>
 +==== UPDATE_TASK_SWEEP_AIM_ENTITY ====
 +<code cpp>void TASK::UPDATE_TASK_SWEEP_AIM_ENTITY(Ped ped, Entity entity) // 0xE4973DBDBE6E44B3 0xF65F0F4F b323</code>
 +
 +==== TASK_SWEEP_AIM_POSITION ====
 +<code cpp>void TASK::TASK_SWEEP_AIM_POSITION(Any p0, Any* p1, Any* p2, Any* p3, Any* p4, Any p5, float p6, float p7, float p8, float p9, float p10) // 0x7AFE8FDC10BC07D2 0x1683FE66 b323</code>
 +
 +==== UPDATE_TASK_SWEEP_AIM_POSITION ====
 +<code cpp>void TASK::UPDATE_TASK_SWEEP_AIM_POSITION(Any p0, float p1, float p2, float p3) // 0xBB106883F5201FC4 0x6345EC80 b323</code>
 +
 +==== TASK_ARREST_PED ====
 +<code cpp>void TASK::TASK_ARREST_PED(Ped ped, Ped target) // 0xF3B9A78A178572B1 0xBC0F153D b323</code>
 +
 +<code>Example from "me_amanda1.ysc.c4":
 +TASK::TASK_ARREST_PED(l_19F /* This is a Ped */ , PLAYER::PLAYER_PED_ID());
 +
 +Example from "armenian1.ysc.c4":
 +if (!PED::IS_PED_INJURED(l_B18[0/*1*/])) {
 +    TASK::TASK_ARREST_PED(l_B18[0/*1*/], PLAYER::PLAYER_PED_ID());
 +}
 +
 +I would love to have time to experiment to see if a player Ped can arrest another Ped. Might make for a good cop mod.
 +
 +
 +Looks like only the player can be arrested this way. Peds react and try to arrest you if you task them, but the player charater doesn't do anything if tasked to arrest another ped.</code>
 +==== IS_PED_RUNNING_ARREST_TASK ====
 +<code cpp>BOOL TASK::IS_PED_RUNNING_ARREST_TASK(Ped ped) // 0x3DC52677769B4AE0 0x6942DB7A b323</code>
 +
 +==== IS_PED_BEING_ARRESTED ====
 +<code cpp>BOOL TASK::IS_PED_BEING_ARRESTED(Ped ped) // 0x90A09F3A45FED688 0x5FF6C2ED b323</code>
 +
 +<code>This function is hard-coded to always return 0.</code>
 +==== UNCUFF_PED ====
 +<code cpp>void TASK::UNCUFF_PED(Ped ped) // 0x67406F2C8F87FC4F 0xA23A1D61 b323</code>
 +
 +==== IS_PED_CUFFED ====
 +<code cpp>BOOL TASK::IS_PED_CUFFED(Ped ped) // 0x74E559B3BC910685 0x511CE741 b323</code>
 +
 +
 +===== VEHICLE =====
 +==== CREATE_VEHICLE ====
 +<code cpp>Vehicle VEHICLE::CREATE_VEHICLE(Hash modelHash, float x, float y, float z, float heading, BOOL isNetwork, BOOL bScriptHostVeh, BOOL p7) // 0xAF35D0D2583051B0 0xDD75460A b323</code>
 +
 +<code>p7 when set to true allows you to spawn vehicles under -100 z.
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== DELETE_VEHICLE ====
 +<code cpp>void VEHICLE::DELETE_VEHICLE(Vehicle* vehicle) // 0xEA386986E786A54F 0x9803AF60 b323</code>
 +
 +<code>Deletes a vehicle.
 +The vehicle must be a mission entity to delete, so call this before deleting: SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);
 +
 +eg how to use:
 +SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);
 +DELETE_VEHICLE(&vehicle);
 +
 +Deletes the specified vehicle, then sets the handle pointed to by the pointer to NULL.</code>
 +==== _0x7D6F9A3EF26136A0 ====
 +<code cpp>void VEHICLE::_0x7D6F9A3EF26136A0(Vehicle vehicle, BOOL toggle, BOOL p2) // 0x7D6F9A3EF26136A0 0xBB54ECCA b323</code>
 +
 +<code>SET_VEHICLE_AL*</code>
 +==== _SET_VEHICLE_CAN_BE_LOCKED_ON ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_CAN_BE_LOCKED_ON(Vehicle vehicle, BOOL canBeLockedOn, BOOL unk) // 0x1DDA078D12879EEE  b463</code>
 +
 +<code>SET_VEHICLE_AL*</code>
 +==== SET_VEHICLE_ALLOW_NO_PASSENGERS_LOCKON ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ALLOW_NO_PASSENGERS_LOCKON(Vehicle veh, BOOL toggle) // 0x5D14D4154BFE7B2C 0x8BAAC437 b323</code>
 +
 +<code>Makes the vehicle accept no passengers.</code>
 +==== GET_VEHICLE_HOMING_LOCKON_STATE ====
 +<code cpp>int VEHICLE::GET_VEHICLE_HOMING_LOCKON_STATE(Vehicle vehicle) // 0xE6B0E8CFC3633BF0 0xFBDE9FD8 b323</code>
 +
 +<code>Returns a value depending on the lock-on state of vehicle weapons.
 +0: not locked on
 +1: locking on
 +2: locked on</code>
 +==== _0x6EAAEFC76ACC311F ====
 +<code cpp>Any VEHICLE::_0x6EAAEFC76ACC311F(Any p0) // 0x6EAAEFC76ACC311F  b757</code>
 +
 +==== _0x407DC5E97DB1A4D3 ====
 +<code cpp>void VEHICLE::_0x407DC5E97DB1A4D3(Any p0, Any p1) // 0x407DC5E97DB1A4D3  b1493</code>
 +
 +==== IS_VEHICLE_MODEL ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_MODEL(Vehicle vehicle, Hash model) // 0x423E8DE37D934D89 0x013B10B6 b323</code>
 +
 +==== DOES_SCRIPT_VEHICLE_GENERATOR_EXIST ====
 +<code cpp>BOOL VEHICLE::DOES_SCRIPT_VEHICLE_GENERATOR_EXIST(int vehicleGenerator) // 0xF6086BC836400876 0xF6BDDA30 b323</code>
 +
 +==== CREATE_SCRIPT_VEHICLE_GENERATOR ====
 +<code cpp>int VEHICLE::CREATE_SCRIPT_VEHICLE_GENERATOR(float x, float y, float z, float heading, float p4, float p5, Hash modelHash, int p7, int p8, int p9, int p10, BOOL p11, BOOL p12, BOOL p13, BOOL p14, BOOL p15, int p16) // 0x9DEF883114668116 0x25A9A261 b323</code>
 +
 +<code>Creates a script vehicle generator at the given coordinates. Most parameters after the model hash are unknown.
 +
 +Parameters:
 +x/y/z - Generator position
 +heading - Generator heading
 +p4 - Unknown (always 5.0)
 +p5 - Unknown (always 3.0)
 +modelHash - Vehicle model hash
 +p7/8/9/10 - Unknown (always -1)
 +p11 - Unknown (usually TRUE, only one instance of FALSE)
 +p12/13 - Unknown (always FALSE)
 +p14 - Unknown (usally FALSE, only two instances of TRUE)
 +p15 - Unknown (always TRUE)
 +p16 - Unknown (always -1)
 +
 +Vector3 coords = GET_ENTITY_COORDS(PLAYER_PED_ID(), 0);    CREATE_SCRIPT_VEHICLE_GENERATOR(coords.x, coords.y, coords.z, 1.0f, 5.0f, 3.0f, GET_HASH_KEY("adder"), -1. -1, -1, -1, -1, true, false, false, false, true, -1);</code>
 +==== DELETE_SCRIPT_VEHICLE_GENERATOR ====
 +<code cpp>void VEHICLE::DELETE_SCRIPT_VEHICLE_GENERATOR(int vehicleGenerator) // 0x22102C9ABFCF125D 0xE4328E3F b323</code>
 +
 +==== SET_SCRIPT_VEHICLE_GENERATOR ====
 +<code cpp>void VEHICLE::SET_SCRIPT_VEHICLE_GENERATOR(int vehicleGenerator, BOOL enabled) // 0xD9D620E0AC6DC4B0 0x40D73747 b323</code>
 +
 +<code>Only called once in the decompiled scripts. Presumably activates the specified generator.</code>
 +==== SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA ====
 +<code cpp>void VEHICLE::SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, BOOL p6, BOOL p7) // 0xC12321827687FE4D 0xB4E0E69A b323</code>
 +
 +==== SET_ALL_VEHICLE_GENERATORS_ACTIVE ====
 +<code cpp>void VEHICLE::SET_ALL_VEHICLE_GENERATORS_ACTIVE() // 0x34AD89078831A4BC 0xAB1FDD76 b323</code>
 +
 +==== SET_ALL_LOW_PRIORITY_VEHICLE_GENERATORS_ACTIVE ====
 +<code cpp>void VEHICLE::SET_ALL_LOW_PRIORITY_VEHICLE_GENERATORS_ACTIVE(BOOL active) // 0x608207E7A8FB787C 0x87F767F2 b323</code>
 +
 +==== _0x9A75585FB2E54FAD ====
 +<code cpp>void VEHICLE::_0x9A75585FB2E54FAD(float x, float y, float z, float radius) // 0x9A75585FB2E54FAD 0x935A95DA b323</code>
 +
 +<code>Related to car generators & CPlayerSwitchMgrLong
 +
 +SET_VEHICLE_*
 +
 +SET_VEHICLE_GENERATORS_EXPECTED_GAMEPLAY_PT ?</code>
 +==== _0x0A436B8643716D14 ====
 +<code cpp>void VEHICLE::_0x0A436B8643716D14() // 0x0A436B8643716D14 0x6C73E45A b323</code>
 +
 +<code>CLEAR_VEHICLE_*</code>
 +==== SET_VEHICLE_ON_GROUND_PROPERLY ====
 +<code cpp>BOOL VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(Vehicle vehicle, float p1) // 0x49733E92263139D1 0xE14FDBA6 b323</code>
 +
 +<code>Sets a vehicle on the ground on all wheels.  Returns whether or not the operation was successful.
 +
 +sfink: This has an additional param(Vehicle vehicle, float p1) which is always set to 5.0f in the b944 scripts.</code>
 +==== SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION ====
 +<code cpp>Any VEHICLE::SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(Vehicle p0, BOOL p1, BOOL p2, BOOL p3) // 0xE023E8AC4EF7C117 0xA0909ADB b323</code>
 +
 +==== IS_VEHICLE_STUCK_ON_ROOF ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_STUCK_ON_ROOF(Vehicle vehicle) // 0xB497F06B288DCFDF 0x18D07C6C b323</code>
 +
 +==== ADD_VEHICLE_UPSIDEDOWN_CHECK ====
 +<code cpp>void VEHICLE::ADD_VEHICLE_UPSIDEDOWN_CHECK(Vehicle vehicle) // 0xB72E26D81006005B 0x3A13D384 b323</code>
 +
 +==== REMOVE_VEHICLE_UPSIDEDOWN_CHECK ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_UPSIDEDOWN_CHECK(Vehicle vehicle) // 0xC53EB42A499A7E90 0xF390BA1B b323</code>
 +
 +==== IS_VEHICLE_STOPPED ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_STOPPED(Vehicle vehicle) // 0x5721B434AD84D57A 0x655F072C b323</code>
 +
 +<code>Returns true if the vehicle's current speed is less than, or equal to 0.0025f.
 +
 +For some vehicles it returns true if the current speed is <= 0.00039999999.</code>
 +==== GET_VEHICLE_NUMBER_OF_PASSENGERS ====
 +<code cpp>int VEHICLE::GET_VEHICLE_NUMBER_OF_PASSENGERS(Vehicle vehicle) // 0x24CB2137731FFE89 0x1EF20849 b323</code>
 +
 +<code>Gets the number of passengers, NOT including the driver. Use IS_VEHICLE_SEAT_FREE(Vehicle, -1) to also check for the driver</code>
 +==== GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS ====
 +<code cpp>int VEHICLE::GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(Vehicle vehicle) // 0xA7C4F2C6E744A550 0x0A2FC08C b323</code>
 +
 +==== GET_VEHICLE_MODEL_NUMBER_OF_SEATS ====
 +<code cpp>int VEHICLE::GET_VEHICLE_MODEL_NUMBER_OF_SEATS(Hash modelHash) // 0x2AD93716F184EDA4 0x838F7BF7 b323</code>
 +
 +<code>Returns max number of passengers (including the driver) for the specified vehicle model.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== IS_SEAT_WARP_ONLY ====
 +<code cpp>BOOL VEHICLE::IS_SEAT_WARP_ONLY(Vehicle vehicle, int seatIndex) // 0xF7F203E31F96F6A1 0x769E5CF2 b323</code>
 +
 +==== IS_TURRET_SEAT ====
 +<code cpp>BOOL VEHICLE::IS_TURRET_SEAT(Vehicle vehicle, int seatIndex) // 0xE33FFA906CE74880 0x7C43D32A b323</code>
 +
 +==== _DOES_VEHICLE_ALLOW_RAPPEL ====
 +<code cpp>BOOL VEHICLE::_DOES_VEHICLE_ALLOW_RAPPEL(Vehicle vehicle) // 0x4E417C547182C84D  b757</code>
 +
 +<code>Returns true if the vehicle has the FLAG_ALLOWS_RAPPEL flag set.</code>
 +==== SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(float multiplier) // 0x245A6883D966D537 0xF4187E51 b323</code>
 +
 +<code>Use this native inside a looped function.
 +Values:
 +- `0.0` = no vehicles on streets
 +- `1.0` = normal vehicles on streets</code>
 +==== SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(float multiplier) // 0xB3B3359379FE77D3 0x543F712B b323</code>
 +
 +==== SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(float multiplier) // 0xEAE6DCC7EEE3DB1D 0xDD46CEBE b323</code>
 +
 +==== SET_DISABLE_RANDOM_TRAINS_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_DISABLE_RANDOM_TRAINS_THIS_FRAME(BOOL toggle) // 0xD4B8E3D1917BC86B 0x09462665 b323</code>
 +
 +==== SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(float value) // 0x90B6DA738A9A25DA 0xDAE2A2BE b323</code>
 +
 +==== SET_FAR_DRAW_VEHICLES ====
 +<code cpp>void VEHICLE::SET_FAR_DRAW_VEHICLES(BOOL toggle) // 0x26324F33423F3CC3 0x9F019C49 b323</code>
 +
 +==== SET_NUMBER_OF_PARKED_VEHICLES ====
 +<code cpp>void VEHICLE::SET_NUMBER_OF_PARKED_VEHICLES(int value) // 0xCAA15F13EBD417FF 0x206A58E8 b323</code>
 +
 +==== SET_VEHICLE_DOORS_LOCKED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_LOCKED(Vehicle vehicle, int doorLockStatus) // 0xB664292EAECF7FA6 0x4CDD35D0 b323</code>
 +
 +<code>0 - CARLOCK_NONE
 +1 - CARLOCK_UNLOCKED
 +2 - CARLOCK_LOCKED (locked)
 +3 - CARLOCK_LOCKOUT_PLAYER_ONLY
 +4 - CARLOCK_LOCKED_PLAYER_INSIDE (can get in, can't leave)
 +
 +(maybe, these are leftovers from GTA:VC)
 +5 - CARLOCK_LOCKED_INITIALLY
 +6 - CARLOCK_FORCE_SHUT_DOORS
 +7 - CARLOCK_LOCKED_BUT_CAN_BE_DAMAGED
 +
 +(source: GTA VC miss2 leak, matching constants for 0/2/4, testing)
 +
 +They use 10 in am_mp_property_int, don't know what it does atm.</code>
 +==== SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED(Vehicle vehicle, int doorIndex, int destroyType) // 0xBE70724027F85BCD 0xD61D182D b323</code>
 +
 +<code>destroyType is 1 for opens on damage, 2 for breaks on damage.</code>
 +==== SET_VEHICLE_HAS_MUTED_SIRENS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HAS_MUTED_SIRENS(Vehicle vehicle, BOOL toggle) // 0xD8050E0EB60CF274 0xC54156A9 b323</code>
 +
 +<code>if set to true, prevents vehicle sirens from having sound, leaving only the lights.</code>
 +==== SET_VEHICLE_DOORS_LOCKED_FOR_PLAYER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_PLAYER(Vehicle vehicle, Player player, BOOL toggle) // 0x517AAF684BB50CD1 0x49829236 b323</code>
 +
 +==== GET_VEHICLE_DOORS_LOCKED_FOR_PLAYER ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_DOORS_LOCKED_FOR_PLAYER(Vehicle vehicle, Player player) // 0xF6AF6CB341349015 0x1DC50247 b323</code>
 +
 +==== SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(Vehicle vehicle, BOOL toggle) // 0xA2F80B8D040727CC 0x891BA8A4 b323</code>
 +
 +<code>After some analysis, I've decided that these are what the parameters are.
 +
 +We can see this being used in R* scripts such as "am_mp_property_int.ysc.c4":
 +l_11A1 = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), 1);
 +...
 +VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(l_11A1, 1);</code>
 +==== SET_VEHICLE_DOORS_LOCKED_FOR_NON_SCRIPT_PLAYERS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_NON_SCRIPT_PLAYERS(Vehicle vehicle, BOOL toggle) // 0x9737A37136F07E75 0xE4EF6514 b323</code>
 +
 +==== SET_VEHICLE_DOORS_LOCKED_FOR_TEAM ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_TEAM(Vehicle vehicle, int team, BOOL toggle) // 0xB81F6D4A8F5EEBA8 0x4F85E783 b323</code>
 +
 +==== _SET_VEHICLE_DOORS_LOCKED_FOR_UNK ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_DOORS_LOCKED_FOR_UNK(Vehicle vehicle, BOOL toggle) // 0x203B527D1B77904C  b1365</code>
 +
 +==== _0x76D26A22750E849E ====
 +<code cpp>void VEHICLE::_0x76D26A22750E849E(Vehicle vehicle) // 0x76D26A22750E849E  b1103</code>
 +
 +<code>SET_VEHICLE_*</code>
 +==== EXPLODE_VEHICLE ====
 +<code cpp>void VEHICLE::EXPLODE_VEHICLE(Vehicle vehicle, BOOL isAudible, BOOL isInvisible) // 0xBA71116ADF5B514C 0xBEDEACEB b323</code>
 +
 +<code>Explodes a selected vehicle.
 +
 +Vehicle vehicle = Vehicle you want to explode.
 +BOOL isAudible = If explosion makes a sound.
 +BOOL isInvisible = If the explosion is invisible or not.
 +
 +First BOOL does not give any visual explosion, the vehicle just falls apart completely but slowly and starts to burn.</code>
 +==== SET_VEHICLE_OUT_OF_CONTROL ====
 +<code cpp>void VEHICLE::SET_VEHICLE_OUT_OF_CONTROL(Vehicle vehicle, BOOL killDriver, BOOL explodeOnImpact) // 0xF19D095E42D430CC 0x3764D734 b323</code>
 +
 +<code>Tested on the player's current vehicle. Unless you kill the driver, the vehicle doesn't loose control, however, if enabled, explodeOnImpact is still active. The moment you crash, boom.</code>
 +==== SET_VEHICLE_TIMED_EXPLOSION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TIMED_EXPLOSION(Vehicle vehicle, Ped ped, BOOL toggle) // 0x2E0A74E1002380B1 0xDB8CB8E2 b323</code>
 +
 +==== ADD_VEHICLE_PHONE_EXPLOSIVE_DEVICE ====
 +<code cpp>void VEHICLE::ADD_VEHICLE_PHONE_EXPLOSIVE_DEVICE(Vehicle vehicle) // 0x99AD4CCCB128CBC9 0x811373DE b323</code>
 +
 +==== _CLEAR_VEHICLE_PHONE_EXPLOSIVE_DEVICE ====
 +<code cpp>void VEHICLE::_CLEAR_VEHICLE_PHONE_EXPLOSIVE_DEVICE() // 0xAA3F739ABDDCF21F  b463</code>
 +
 +==== HAS_VEHICLE_PHONE_EXPLOSIVE_DEVICE ====
 +<code cpp>BOOL VEHICLE::HAS_VEHICLE_PHONE_EXPLOSIVE_DEVICE() // 0x6ADAABD3068C5235 0xA4E69134 b323</code>
 +
 +==== DETONATE_VEHICLE_PHONE_EXPLOSIVE_DEVICE ====
 +<code cpp>void VEHICLE::DETONATE_VEHICLE_PHONE_EXPLOSIVE_DEVICE() // 0xEF49CF0270307CBE 0x65255524 b323</code>
 +
 +==== SET_TAXI_LIGHTS ====
 +<code cpp>void VEHICLE::SET_TAXI_LIGHTS(Vehicle vehicle, BOOL state) // 0x598803E85E8448D9 0x68639D85 b323</code>
 +
 +<code>This is not tested - it's just an assumption.
 +- Nac
 +
 +Doesn't seem to work.  I'll try with an int instead. --JT
 +
 +Read the scripts, im dumpass. 
 +
 +                            if (!VEHICLE::IS_TAXI_LIGHT_ON(l_115)) {
 +                                VEHICLE::SET_TAXI_LIGHTS(l_115, 1);
 +                            }</code>
 +==== IS_TAXI_LIGHT_ON ====
 +<code cpp>BOOL VEHICLE::IS_TAXI_LIGHT_ON(Vehicle vehicle) // 0x7504C0F113AB50FC 0x6FC4924A b323</code>
 +
 +==== IS_VEHICLE_IN_GARAGE_AREA ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_IN_GARAGE_AREA(const char* garageName, Vehicle vehicle) // 0xCEE4490CD57BB3C2 0xA90EC257 b323</code>
 +
 +<code>garageName example "Michael - Beverly Hills"
 +
 +Full list of garages by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/garages.json</code>
 +==== SET_VEHICLE_COLOURS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_COLOURS(Vehicle vehicle, int colorPrimary, int colorSecondary) // 0x4F1D4BE3A7F24601 0x57F24253 b323</code>
 +
 +<code>colorPrimary & colorSecondary are the paint index for the vehicle.
 +For a list of valid paint indexes, view: pastebin.com/pwHci0xK
 +-------------------------------------------------------------------------
 +Use this to get the number of color indices: pastebin.com/RQEeqTSM
 +Note: minimum color index is 0, maximum color index is (numColorIndices - 1)
 +
 +Full list of vehicle colors by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json</code>
 +==== SET_VEHICLE_FULLBEAM ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FULLBEAM(Vehicle vehicle, BOOL toggle) // 0x8B7FD87F0DDB421E 0x9C49CC15 b323</code>
 +
 +<code>It switch to highbeam when p1 is set to true.</code>
 +==== SET_VEHICLE_IS_RACING ====
 +<code cpp>void VEHICLE::SET_VEHICLE_IS_RACING(Vehicle vehicle, BOOL toggle) // 0x07116E24E9D1929D 0xA59E3DCD b323</code>
 +
 +<code>p1 (toggle) was always 1 (true) except in one case in the b678 scripts.</code>
 +==== SET_VEHICLE_CUSTOM_PRIMARY_COLOUR ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CUSTOM_PRIMARY_COLOUR(Vehicle vehicle, int r, int g, int b) // 0x7141766F91D15BEA 0x8DF9F9BC b323</code>
 +
 +<code>p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)</code>
 +==== GET_VEHICLE_CUSTOM_PRIMARY_COLOUR ====
 +<code cpp>void VEHICLE::GET_VEHICLE_CUSTOM_PRIMARY_COLOUR(Vehicle vehicle, int* r, int* g, int* b) // 0xB64CF2CCA9D95F52 0x1C2B9FEF b323</code>
 +
 +==== CLEAR_VEHICLE_CUSTOM_PRIMARY_COLOUR ====
 +<code cpp>void VEHICLE::CLEAR_VEHICLE_CUSTOM_PRIMARY_COLOUR(Vehicle vehicle) // 0x55E1D2758F34E437 0x51E1E33D b323</code>
 +
 +==== GET_IS_VEHICLE_PRIMARY_COLOUR_CUSTOM ====
 +<code cpp>BOOL VEHICLE::GET_IS_VEHICLE_PRIMARY_COLOUR_CUSTOM(Vehicle vehicle) // 0xF095C0405307B21B 0xD7EC8760 b323</code>
 +
 +==== SET_VEHICLE_CUSTOM_SECONDARY_COLOUR ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CUSTOM_SECONDARY_COLOUR(Vehicle vehicle, int r, int g, int b) // 0x36CED73BFED89754 0x9D77259E b323</code>
 +
 +<code>p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)</code>
 +==== GET_VEHICLE_CUSTOM_SECONDARY_COLOUR ====
 +<code cpp>void VEHICLE::GET_VEHICLE_CUSTOM_SECONDARY_COLOUR(Vehicle vehicle, int* r, int* g, int* b) // 0x8389CD56CA8072DC 0x3FF247A2 b323</code>
 +
 +==== CLEAR_VEHICLE_CUSTOM_SECONDARY_COLOUR ====
 +<code cpp>void VEHICLE::CLEAR_VEHICLE_CUSTOM_SECONDARY_COLOUR(Vehicle vehicle) // 0x5FFBDEEC3E8E2009 0x7CE00B29 b323</code>
 +
 +==== GET_IS_VEHICLE_SECONDARY_COLOUR_CUSTOM ====
 +<code cpp>BOOL VEHICLE::GET_IS_VEHICLE_SECONDARY_COLOUR_CUSTOM(Vehicle vehicle) // 0x910A32E7AAD2656C 0x288AD228 b323</code>
 +
 +<code>Check if Vehicle Secondary is avaliable for customize</code>
 +==== SET_VEHICLE_ENVEFF_SCALE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ENVEFF_SCALE(Vehicle vehicle, float fade) // 0x3AFDC536C3D01674 0x8332730C b323</code>
 +
 +<code>formerly known as _SET_VEHICLE_PAINT_FADE
 +
 +The parameter fade is a value from 0-1, where 0 is fresh paint.</code>
 +==== GET_VEHICLE_ENVEFF_SCALE ====
 +<code cpp>float VEHICLE::GET_VEHICLE_ENVEFF_SCALE(Vehicle vehicle) // 0xA82819CAC9C4C403 0xD5F1EEE1 b323</code>
 +
 +<code>formerly known as _GET_VEHICLE_PAINT_FADE
 +
 +The result is a value from 0-1, where 0 is fresh paint.</code>
 +==== SET_CAN_RESPRAY_VEHICLE ====
 +<code cpp>void VEHICLE::SET_CAN_RESPRAY_VEHICLE(Vehicle vehicle, BOOL state) // 0x52BBA29D5EC69356 0x37677590 b323</code>
 +
 +<code>Hardcoded to not work in multiplayer.</code>
 +==== _0xAB31EF4DE6800CE9 ====
 +<code cpp>void VEHICLE::_0xAB31EF4DE6800CE9(Any p0, Any p1) // 0xAB31EF4DE6800CE9  b573</code>
 +
 +==== _0x1B212B26DD3C04DF ====
 +<code cpp>void VEHICLE::_0x1B212B26DD3C04DF(Vehicle vehicle, BOOL toggle) // 0x1B212B26DD3C04DF  b757</code>
 +
 +<code>Sets a value that appears to affect door opening behavior when damaged.
 +
 +SET_*</code>
 +==== FORCE_SUBMARINE_SURFACE_MODE ====
 +<code cpp>void VEHICLE::FORCE_SUBMARINE_SURFACE_MODE(Vehicle vehicle, BOOL toggle) // 0x33506883545AC0DF 0x54E9EE75 b323</code>
 +
 +==== _0xC67DB108A9ADE3BE ====
 +<code cpp>void VEHICLE::_0xC67DB108A9ADE3BE(Any p0, Any p1) // 0xC67DB108A9ADE3BE  b2189</code>
 +
 +==== SET_SUBMARINE_CRUSH_DEPTHS ====
 +<code cpp>void VEHICLE::SET_SUBMARINE_CRUSH_DEPTHS(Vehicle vehicle, BOOL p1, float depth1, float depth2, float depth3) // 0xC59872A5134879C7 0x4A46E814 b323</code>
 +
 +==== _GET_SUBMARINE_IS_BELOW_FIRST_CRUSH_DEPTH ====
 +<code cpp>BOOL VEHICLE::_GET_SUBMARINE_IS_BELOW_FIRST_CRUSH_DEPTH(Vehicle submarine) // 0x3E71D0B300B7AA79  b2189</code>
 +
 +==== _GET_SUBMARINE_CRUSH_DEPTH_WARNING_STATE ====
 +<code cpp>int VEHICLE::_GET_SUBMARINE_CRUSH_DEPTH_WARNING_STATE(Vehicle submarine) // 0x093D6DDCA5B8FBAE  b2189</code>
 +
 +==== _0xED5EDE9E676643C9 ====
 +<code cpp>void VEHICLE::_0xED5EDE9E676643C9(Any p0, Any p1) // 0xED5EDE9E676643C9  b944</code>
 +
 +==== SET_BOAT_ANCHOR ====
 +<code cpp>void VEHICLE::SET_BOAT_ANCHOR(Vehicle vehicle, BOOL toggle) // 0x75DBEC174AEEAD10 0xA3906284 b323</code>
 +
 +==== CAN_ANCHOR_BOAT_HERE ====
 +<code cpp>BOOL VEHICLE::CAN_ANCHOR_BOAT_HERE(Vehicle vehicle) // 0x26C10ECBDA5D043B 0xE97A4F5E b323</code>
 +
 +==== _CAN_ANCHOR_BOAT_HERE_2 ====
 +<code cpp>BOOL VEHICLE::_CAN_ANCHOR_BOAT_HERE_2(Vehicle vehicle) // 0x24F4121D07579880  b678</code>
 +
 +==== _SET_BOAT_FROZEN_WHEN_ANCHORED ====
 +<code cpp>void VEHICLE::_SET_BOAT_FROZEN_WHEN_ANCHORED(Vehicle vehicle, BOOL toggle) // 0xE3EBAAE484798530 0x0ED84792 b323</code>
 +
 +==== _0xB28B1FE5BFADD7F5 ====
 +<code cpp>void VEHICLE::_0xB28B1FE5BFADD7F5(Vehicle vehicle, BOOL p1) // 0xB28B1FE5BFADD7F5 0xA739012A b323</code>
 +
 +<code>No observed effect.</code>
 +==== _SET_BOAT_MOVEMENT_RESISTANCE ====
 +<code cpp>void VEHICLE::_SET_BOAT_MOVEMENT_RESISTANCE(Vehicle vehicle, float value) // 0xE842A9398079BD82 0x66FA450C b323</code>
 +
 +==== _IS_BOAT_ANCHORED_AND_FROZEN ====
 +<code cpp>BOOL VEHICLE::_IS_BOAT_ANCHORED_AND_FROZEN(Vehicle vehicle) // 0xB0AD1238A709B1A2  b573</code>
 +
 +<code>IS_*</code>
 +==== SET_BOAT_SINKS_WHEN_WRECKED ====
 +<code cpp>void VEHICLE::SET_BOAT_SINKS_WHEN_WRECKED(Vehicle vehicle, BOOL toggle) // 0x8F719973E1445BA2 0x35614622 b323</code>
 +
 +==== _SET_BOAT_IS_SINKING ====
 +<code cpp>void VEHICLE::_SET_BOAT_IS_SINKING(Any p0) // 0xBD32E46AA95C1DD2  b757</code>
 +
 +==== SET_VEHICLE_SIREN ====
 +<code cpp>void VEHICLE::SET_VEHICLE_SIREN(Vehicle vehicle, BOOL toggle) // 0xF4924635A19EB37D 0x4AC1EFC7 b323</code>
 +
 +<code>Activate siren on vehicle (Only works if the vehicle has a siren).</code>
 +==== IS_VEHICLE_SIREN_ON ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_SIREN_ON(Vehicle vehicle) // 0x4C9BF537BE2634B2 0x25EB5873 b323</code>
 +
 +==== IS_VEHICLE_SIREN_AUDIO_ON ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_SIREN_AUDIO_ON(Vehicle vehicle) // 0xB5CC40FBCB586380 0xC9458688 b323</code>
 +
 +==== SET_VEHICLE_STRONG ====
 +<code cpp>void VEHICLE::SET_VEHICLE_STRONG(Vehicle vehicle, BOOL toggle) // 0x3E8C8727991A8A0B 0xC758D19F b323</code>
 +
 +<code>If set to true, vehicle will not take crash damage, but is still susceptible to damage from bullets and explosives</code>
 +==== REMOVE_VEHICLE_STUCK_CHECK ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_STUCK_CHECK(Vehicle vehicle) // 0x8386BFB614D06749 0x81594917 b323</code>
 +
 +==== GET_VEHICLE_COLOURS ====
 +<code cpp>void VEHICLE::GET_VEHICLE_COLOURS(Vehicle vehicle, int* colorPrimary, int* colorSecondary) // 0xA19435F193E081AC 0x40D82D88 b323</code>
 +
 +==== IS_VEHICLE_SEAT_FREE ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_SEAT_FREE(Vehicle vehicle, int seatIndex, BOOL isTaskRunning) // 0x22AC59A870E6A669 0xDAF42B02 b323</code>
 +
 +<code>Check if a vehicle seat is free.
 +
 +seatIndex  = -1 being the driver seat.
 +Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.
 +isTaskRunning = on true the function returns already false while a task on the target seat is running (TASK_ENTER_VEHICLE/TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) - on false only when a ped is finally sitting in the seat.</code>
 +==== GET_PED_IN_VEHICLE_SEAT ====
 +<code cpp>Ped VEHICLE::GET_PED_IN_VEHICLE_SEAT(Vehicle vehicle, int seatIndex, BOOL p2) // 0xBB40DD2270B65366 0x388FDE9A b323</code>
 +
 +<code>If there is no ped in the seat, and the game considers the vehicle as ambient population, this will create a random occupant ped in the seat, which may be cleaned up by the game fairly soon if not marked as script-owned mission entity.
 +
 +Seat indexes:
 +-1 = Driver
 +0 = Front Right Passenger
 +1 = Back Left Passenger
 +2 = Back Right Passenger
 +3 = Further Back Left Passenger (vehicles > 4 seats)
 +4 = Further Back Right Passenger (vehicles > 4 seats)
 +etc.
 +
 +If p2 is true it uses a different GetOccupant function.</code>
 +==== GET_LAST_PED_IN_VEHICLE_SEAT ====
 +<code cpp>Ped VEHICLE::GET_LAST_PED_IN_VEHICLE_SEAT(Vehicle vehicle, int seatIndex) // 0x83F969AA1EE2A664 0xF7C6792D b323</code>
 +
 +==== GET_VEHICLE_LIGHTS_STATE ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_LIGHTS_STATE(Vehicle vehicle, BOOL* lightsOn, BOOL* highbeamsOn) // 0xB91B4C20085BD12F 0x7C278621 b323</code>
 +
 +==== IS_VEHICLE_TYRE_BURST ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_TYRE_BURST(Vehicle vehicle, int wheelID, BOOL completely) // 0xBA291848A0815CA9 0x48C80210 b323</code>
 +
 +<code>wheelID used for 4 wheelers seem to be (0, 1, 4, 5)
 +completely - is to check if tire completely gone from rim.
 +
 +'0 = wheel_lf / bike, plane or jet front
 +'1 = wheel_rf
 +'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left
 +'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right
 +'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left
 +'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right
 +'45 = 6 wheels trailer mid wheel left
 +'47 = 6 wheels trailer mid wheel right</code>
 +==== SET_VEHICLE_FORWARD_SPEED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FORWARD_SPEED(Vehicle vehicle, float speed) // 0xAB54A438726D25D5 0x69880D14 b323</code>
 +
 +<code>SCALE: Setting the speed to 30 would result in a speed of roughly 60mph, according to speedometer.
 +
 +Speed is in meters per second
 +You can convert meters/s to mph here:
 +http://www.calculateme.com/Speed/MetersperSecond/ToMilesperHour.htm</code>
 +==== _0x6501129C9E0FFA05 ====
 +<code cpp>void VEHICLE::_0x6501129C9E0FFA05(Any p0, Any p1) // 0x6501129C9E0FFA05  b877</code>
 +
 +==== BRING_VEHICLE_TO_HALT ====
 +<code cpp>void VEHICLE::BRING_VEHICLE_TO_HALT(Vehicle vehicle, float distance, int duration, BOOL unknown) // 0x260BE8F09E326A20 0xCBC7D3C8 b323</code>
 +
 +<code>This native makes the vehicle stop immediately, as happens when we enter a MP garage.
 +
 +. distance defines how far it will travel until stopping. Garage doors use 3.0.
 +
 +. If killEngine is set to 1, you cannot resume driving the vehicle once it stops. This looks like is a bitmapped integer.</code>
 +==== _0xDCE97BDF8A0EABC8 ====
 +<code cpp>void VEHICLE::_0xDCE97BDF8A0EABC8(Vehicle vehicle, Any p1) // 0xDCE97BDF8A0EABC8  b1103</code>
 +
 +==== _0x9849DE24FCF23CCC ====
 +<code cpp>void VEHICLE::_0x9849DE24FCF23CCC(Vehicle vehicle, BOOL toggle) // 0x9849DE24FCF23CCC  b1604</code>
 +
 +<code>Sets some bit of vehicle.
 +_SET_VEHICLE_*</code>
 +==== _0x8664170EF165C4A6 ====
 +<code cpp>void VEHICLE::_0x8664170EF165C4A6(Any p0, Any p1) // 0x8664170EF165C4A6  b2189</code>
 +
 +==== _STOP_BRING_VEHICLE_TO_HALT ====
 +<code cpp>void VEHICLE::_STOP_BRING_VEHICLE_TO_HALT(Vehicle vehicle) // 0x7C06330BFDDA182E  b1103</code>
 +
 +<code>Stops CTaskBringVehicleToHalt</code>
 +==== _IS_VEHICLE_BEING_HALTED ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_BEING_HALTED(Vehicle vehicle) // 0xC69BB1D832A710EF  b1493</code>
 +
 +<code>Returns true if vehicle is halted by BRING_VEHICLE_TO_HALT
 +_IS_VEHICLE_*</code>
 +==== SET_FORKLIFT_FORK_HEIGHT ====
 +<code cpp>void VEHICLE::SET_FORKLIFT_FORK_HEIGHT(Vehicle vehicle, float height) // 0x37EBBF3117BD6A25 0x943A6CFC b323</code>
 +
 +<code>0.0 = Lowest 1.0 = Highest. This is best to be used if you wanna pick-up a car since un-realistically on GTA V forklifts can't pick up much of anything due to vehicle mass. If you put this under a car then set it above 0.0 to a 'lifted-value' it will raise the car with no issue lol</code>
 +==== IS_ENTITY_ATTACHED_TO_HANDLER_FRAME ====
 +<code cpp>BOOL VEHICLE::IS_ENTITY_ATTACHED_TO_HANDLER_FRAME(Vehicle vehicle, Entity entity) // 0x57715966069157AD 0x7FB25568 b323</code>
 +
 +==== IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME ====
 +<code cpp>BOOL VEHICLE::IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(Vehicle vehicle) // 0x62CA17B74C435651 0x593143B9 b323</code>
 +
 +==== _FIND_VEHICLE_CARRYING_THIS_ENTITY ====
 +<code cpp>Vehicle VEHICLE::_FIND_VEHICLE_CARRYING_THIS_ENTITY(Entity entity) // 0x375E7FC44F21C8AB 0x70DD5E25 b323</code>
 +
 +<code>Finds the vehicle that is carrying this entity with a handler frame.
 +The model of the entity must be prop_contr_03b_ld or the function will return 0.</code>
 +==== _IS_HANDLER_FRAME_ABOVE_CONTAINER ====
 +<code cpp>BOOL VEHICLE::_IS_HANDLER_FRAME_ABOVE_CONTAINER(Vehicle vehicle, Entity entity) // 0x89D630CF5EA96D23 0xFBF5536A b323</code>
 +
 +==== _0x6A98C2ECF57FA5D4 ====
 +<code cpp>void VEHICLE::_0x6A98C2ECF57FA5D4(Vehicle vehicle, Entity entity) // 0x6A98C2ECF57FA5D4 0x20AB5783 b323</code>
 +
 +==== DETACH_CONTAINER_FROM_HANDLER_FRAME ====
 +<code cpp>void VEHICLE::DETACH_CONTAINER_FROM_HANDLER_FRAME(Vehicle vehicle) // 0x7C0043FDFF6436BC 0x0F11D01F b323</code>
 +
 +==== _0x8AA9180DE2FEDD45 ====
 +<code cpp>void VEHICLE::_0x8AA9180DE2FEDD45(Vehicle vehicle, BOOL p1) // 0x8AA9180DE2FEDD45 0xAE040377 b323</code>
 +
 +==== SET_BOAT_DISABLE_AVOIDANCE ====
 +<code cpp>void VEHICLE::SET_BOAT_DISABLE_AVOIDANCE(Vehicle vehicle, BOOL p1) // 0x0A6A279F3AA4FD70 0x4C0E4031 b323</code>
 +
 +==== IS_HELI_LANDING_AREA_BLOCKED ====
 +<code cpp>BOOL VEHICLE::IS_HELI_LANDING_AREA_BLOCKED(Vehicle vehicle) // 0x634148744F385576 0x6346B7CC b323</code>
 +
 +==== _0x107A473D7A6647A9 ====
 +<code cpp>void VEHICLE::_0x107A473D7A6647A9(Vehicle vehicle) // 0x107A473D7A6647A9  b1290</code>
 +
 +<code>Used on helicopters and blimps during the CTaskVehicleLand task. Sets a value on the task to 10f</code>
 +==== SET_HELI_TURBULENCE_SCALAR ====
 +<code cpp>void VEHICLE::SET_HELI_TURBULENCE_SCALAR(Vehicle vehicle, float p1) // 0xE6F13851780394DA 0xCCB41A55 b323</code>
 +
 +==== SET_CAR_BOOT_OPEN ====
 +<code cpp>void VEHICLE::SET_CAR_BOOT_OPEN(Vehicle vehicle) // 0xFC40CBF7B90CA77C  b877</code>
 +
 +<code>Initially used in Max Payne 3, that's why we know the name.</code>
 +==== SET_VEHICLE_TYRE_BURST ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TYRE_BURST(Vehicle vehicle, int index, BOOL onRim, float p3) // 0xEC6A202EE4960385 0x89D28068 b323</code>
 +
 +<code>"To burst tyres VEHICLE::SET_VEHICLE_TYRE_BURST(vehicle, 0, true, 1000.0)
 +to burst all tyres type it 8 times where p1 = 0 to 7.
 +
 +p3 seems to be how much damage it has taken. 0 doesn't deflate them, 1000 completely deflates them.
 +
 +'0 = wheel_lf / bike, plane or jet front
 +'1 = wheel_rf
 +'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left
 +'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right
 +'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left
 +'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right
 +'45 = 6 wheels trailer mid wheel left
 +'47 = 6 wheels trailer mid wheel right</code>
 +==== SET_VEHICLE_DOORS_SHUT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOORS_SHUT(Vehicle vehicle, BOOL closeInstantly) // 0x781B3D62BB013EF5 0xBB1FF6E7 b323</code>
 +
 +<code>Closes all doors of a vehicle:</code>
 +==== SET_VEHICLE_TYRES_CAN_BURST ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TYRES_CAN_BURST(Vehicle vehicle, BOOL toggle) // 0xEB9DC3C7D8596C46 0xA198DB54 b323</code>
 +
 +<code>Allows you to toggle bulletproof tires.</code>
 +==== GET_VEHICLE_TYRES_CAN_BURST ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_TYRES_CAN_BURST(Vehicle vehicle) // 0x678B9BB8C3F58FEB 0x4D76CD2F b323</code>
 +
 +==== SET_VEHICLE_WHEELS_CAN_BREAK ====
 +<code cpp>void VEHICLE::SET_VEHICLE_WHEELS_CAN_BREAK(Vehicle vehicle, BOOL enabled) // 0x29B18B4FD460CA8F 0x829ED654 b323</code>
 +
 +==== SET_VEHICLE_DOOR_OPEN ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOOR_OPEN(Vehicle vehicle, int doorIndex, BOOL loose, BOOL openInstantly) // 0x7C65DAC73C35C862 0xBB75D38B b323</code>
 +
 +<code>doorIndex:
 +0 = Front Left Door
 +1 = Front Right Door
 +2 = Back Left Door
 +3 = Back Right Door
 +4 = Hood
 +5 = Trunk
 +6 = Back
 +7 = Back2</code>
 +==== _0x3B458DDB57038F08 ====
 +<code cpp>void VEHICLE::_0x3B458DDB57038F08(Vehicle vehicle, int doorIndex, BOOL toggle) // 0x3B458DDB57038F08  b877</code>
 +
 +<code>Usually used alongside other vehicle door natives.</code>
 +==== _0xA247F9EF01D8082E ====
 +<code cpp>void VEHICLE::_0xA247F9EF01D8082E(Any p0) // 0xA247F9EF01D8082E  b1103</code>
 +
 +==== REMOVE_VEHICLE_WINDOW ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_WINDOW(Vehicle vehicle, int windowIndex) // 0xA711568EEDB43069 0xBB8104A3 b323</code>
 +
 +<code>windowIndex:
 +0 = Front Right Window
 +1 = Front Left Window
 +2 = Back Right Window
 +3 = Back Left Window
 +4 = Unknown
 +5 = Unknown
 +6 = Windscreen
 +7 = Rear Windscreen</code>
 +==== ROLL_DOWN_WINDOWS ====
 +<code cpp>void VEHICLE::ROLL_DOWN_WINDOWS(Vehicle vehicle) // 0x85796B0549DDE156 0x51A16DC6 b323</code>
 +
 +<code>Roll down all the windows of the vehicle passed through the first parameter.</code>
 +==== ROLL_DOWN_WINDOW ====
 +<code cpp>void VEHICLE::ROLL_DOWN_WINDOW(Vehicle vehicle, int windowIndex) // 0x7AD9E6CE657D69E3 0xF840134C b323</code>
 +
 +<code>windowIndex:
 +0 = Front Right Window
 +1 = Front Left Window
 +2 = Back Right Window
 +3 = Back Left Window</code>
 +==== ROLL_UP_WINDOW ====
 +<code cpp>void VEHICLE::ROLL_UP_WINDOW(Vehicle vehicle, int windowIndex) // 0x602E548F46E24D59 0x83B7E06A b323</code>
 +
 +<code>Window indexes:
 +0 = Front Left Window
 +1 = Front Right Window
 +2 = Back Left Window
 +3 = Back Right Window</code>
 +==== SMASH_VEHICLE_WINDOW ====
 +<code cpp>void VEHICLE::SMASH_VEHICLE_WINDOW(Vehicle vehicle, int index) // 0x9E5B5E4D2CCD2259 0xDDD9A8C2 b323</code>
 +
 +<code>`index` = 0 to 13
 +0 = front right window
 +1 = front left window
 +2 = rear right window
 +3 = rear left window
 +4 = unsure
 +5 = unsure
 +6 = windowscreen
 +7 = rear windowscreen
 +8 = unsure
 +9 = unsure
 +10 = unsure
 +11 = unsure
 +12 = unsure
 +13 = unsure</code>
 +==== FIX_VEHICLE_WINDOW ====
 +<code cpp>void VEHICLE::FIX_VEHICLE_WINDOW(Vehicle vehicle, int index) // 0x772282EBEB95E682 0x6B8E990D b323</code>
 +
 +<code>`index` = 0 to 13
 +0 = front right window
 +1 = front left window
 +2 = rear right window
 +3 = rear left window
 +4 = unsure
 +5 = unsure
 +6 = windowscreen
 +7 = rear windowscreen
 +8 = unsure
 +9 = unsure
 +10 = unsure
 +11 = unsure
 +12 = unsure
 +13 = unsure
 +
 +Additional information: FIX_VEHICLE_WINDOW (0x140D0BB88) references an array of bone vehicle indices (0x141D4B3E0) { 2Ah, 2Bh, 2Ch, 2Dh, 2Eh, 2Fh, 28h, 29h } that correspond to: window_lf, window_rf, window_lr, window_rr, window_lm, window_rm, windscreen, windscreen_r. This array is used by most vehwindow natives.
 +
 +Also, this function is coded to not work on vehicles of type: CBike, Bmx, CBoat, CTrain, and CSubmarine.</code>
 +==== POP_OUT_VEHICLE_WINDSCREEN ====
 +<code cpp>void VEHICLE::POP_OUT_VEHICLE_WINDSCREEN(Vehicle vehicle) // 0x6D645D59FB5F5AD3 0xCC95C96B b323</code>
 +
 +<code>Detaches the vehicle's windscreen.
 +For further information, see : gtaforums.com/topic/859570-glass/#entry1068894566
 +
 +Old name: _DETACH_VEHICLE_WINDSCREEN</code>
 +==== _EJECT_JB700_ROOF ====
 +<code cpp>void VEHICLE::_EJECT_JB700_ROOF(Vehicle vehicle, float x, float y, float z) // 0xE38CB9D7D39FDBCC 0xFDA7B6CA b323</code>
 +
 +==== SET_VEHICLE_LIGHTS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_LIGHTS(Vehicle vehicle, int state) // 0x34E710FF01247C5A 0xE8930226 b323</code>
 +
 +<code>set's if the vehicle has lights or not.
 +not an on off toggle.
 +p1 = 0 ;vehicle normal lights, off then lowbeams, then highbeams
 +p1 = 1 ;vehicle doesn't have lights, always off
 +p1 = 2 ;vehicle has always on lights
 +p1 = 3 ;or even larger like 4,5,... normal lights like =1
 +note1: when using =2 on day it's lowbeam,highbeam
 +but at night it's lowbeam,lowbeam,highbeam
 +note2: when using =0 it's affected by day or night for highbeams don't exist in daytime.</code>
 +==== SET_VEHICLE_USE_PLAYER_LIGHT_SETTINGS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_USE_PLAYER_LIGHT_SETTINGS(Vehicle vehicle, BOOL toggle) // 0xC45C27EF50F36ADC 0x4221E435 b323</code>
 +
 +==== _SET_VEHICLE_LIGHTS_MODE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_LIGHTS_MODE(Vehicle vehicle, int p1) // 0x1FD09E7390A74D54  b323</code>
 +
 +<code>p1 can be either 0, 1 or 2.
 +
 +Determines how vehicle lights behave when toggled.
 +
 +0 = Default (Lights can be toggled between off, normal and high beams)
 +1 = Lights Disabled (Lights are fully disabled, cannot be toggled)
 +2 = Always On (Lights can be toggled between normal and high beams)</code>
 +==== SET_VEHICLE_ALARM ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ALARM(Vehicle vehicle, BOOL state) // 0xCDE5E70C1DDB954C 0x24877D84 b323</code>
 +
 +==== START_VEHICLE_ALARM ====
 +<code cpp>void VEHICLE::START_VEHICLE_ALARM(Vehicle vehicle) // 0xB8FF7AB45305C345 0x5B451FF7 b323</code>
 +
 +==== IS_VEHICLE_ALARM_ACTIVATED ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_ALARM_ACTIVATED(Vehicle vehicle) // 0x4319E335B71FFF34 0xF2630A4C b323</code>
 +
 +==== SET_VEHICLE_INTERIORLIGHT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_INTERIORLIGHT(Vehicle vehicle, BOOL toggle) // 0xBC2042F090AF6AD3 0x9AD1FE1E b323</code>
 +
 +==== _0x8821196D91FA2DE5 ====
 +<code cpp>void VEHICLE::_0x8821196D91FA2DE5(Vehicle vehicle, BOOL toggle) // 0x8821196D91FA2DE5  b1290</code>
 +
 +<code>Sets some bit of vehicle
 +_SET_VEHICLE_*</code>
 +==== SET_VEHICLE_LIGHT_MULTIPLIER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_LIGHT_MULTIPLIER(Vehicle vehicle, float multiplier) // 0xB385454F8791F57C 0x48039D6A b323</code>
 +
 +<code>multiplier = brightness of head lights.
 +this value isn't capped afaik.
 +
 +multiplier = 0.0 no lights
 +multiplier = 1.0 default game value
 +</code>
 +==== ATTACH_VEHICLE_TO_TRAILER ====
 +<code cpp>void VEHICLE::ATTACH_VEHICLE_TO_TRAILER(Vehicle vehicle, Vehicle trailer, float radius) // 0x3C7D42D58F770B54 0x2133977F b323</code>
 +
 +==== ATTACH_VEHICLE_ON_TO_TRAILER ====
 +<code cpp>void VEHICLE::ATTACH_VEHICLE_ON_TO_TRAILER(Vehicle vehicle, Vehicle trailer, float offsetX, float offsetY, float offsetZ, float coordsX, float coordsY, float coordsZ, float rotationX, float rotationY, float rotationZ, float disableCollisions) // 0x16B5E274BDE402F8 0x12AC1A16 b323</code>
 +
 +<code>This is the proper way of attaching vehicles to the car carrier, it's what Rockstar uses. Video Demo: https://www.youtube.com/watch?v=2lVEIzf7bgo</code>
 +==== STABILISE_ENTITY_ATTACHED_TO_HELI ====
 +<code cpp>void VEHICLE::STABILISE_ENTITY_ATTACHED_TO_HELI(Vehicle vehicle, Entity entity, float p2) // 0x374706271354CB18 0x40C4763F b323</code>
 +
 +==== DETACH_VEHICLE_FROM_TRAILER ====
 +<code cpp>void VEHICLE::DETACH_VEHICLE_FROM_TRAILER(Vehicle vehicle) // 0x90532EDF0D2BDD86 0xB5DBF91D b323</code>
 +
 +==== IS_VEHICLE_ATTACHED_TO_TRAILER ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_ATTACHED_TO_TRAILER(Vehicle vehicle) // 0xE7CF3C4F9F489F0C 0xE142BBCC b323</code>
 +
 +==== SET_TRAILER_INVERSE_MASS_SCALE ====
 +<code cpp>void VEHICLE::SET_TRAILER_INVERSE_MASS_SCALE(Vehicle vehicle, float p1) // 0x2A8F319B392E7B3F 0xE74E85CE b323</code>
 +
 +==== SET_TRAILER_LEGS_RAISED ====
 +<code cpp>void VEHICLE::SET_TRAILER_LEGS_RAISED(Vehicle vehicle) // 0x95CF53B3D687F9FA 0x06C47A6F b323</code>
 +
 +<code>in the decompiled scripts, seems to be always called on the vehicle right after being attached to a trailer.</code>
 +==== _SET_TRAILER_LEGS_LOWERED ====
 +<code cpp>void VEHICLE::_SET_TRAILER_LEGS_LOWERED(Any p0) // 0x878C75C09FBDB942  b1103</code>
 +
 +==== SET_VEHICLE_TYRE_FIXED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TYRE_FIXED(Vehicle vehicle, int tyreIndex) // 0x6E13FC662B882D1D 0xA42EFA6B b323</code>
 +
 +<code>tyreIndex = 0 to 4 on normal vehicles
 +
 +'0 = wheel_lf / bike, plane or jet front
 +'1 = wheel_rf
 +'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left
 +'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right
 +'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left
 +'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right
 +'45 = 6 wheels trailer mid wheel left
 +'47 = 6 wheels trailer mid wheel right</code>
 +==== SET_VEHICLE_NUMBER_PLATE_TEXT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_NUMBER_PLATE_TEXT(Vehicle vehicle, const char* plateText) // 0x95A88F0B409CDA47 0x400F9556 b323</code>
 +
 +<code>Sets a vehicle's license plate text.  8 chars maximum.
 +
 +Example:
 +Ped playerPed = PLAYER::PLAYER_PED_ID();
 +Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);
 +char *plateText = "KING";
 +VEHICLE::SET_VEHICLE_NUMBER_PLATE_TEXT(veh, plateText);</code>
 +==== GET_VEHICLE_NUMBER_PLATE_TEXT ====
 +<code cpp>const char* VEHICLE::GET_VEHICLE_NUMBER_PLATE_TEXT(Vehicle vehicle) // 0x7CE1CCB9B293020E 0xE8522D58 b323</code>
 +
 +<code>Returns the license plate text from a vehicle.  8 chars maximum.</code>
 +==== GET_NUMBER_OF_VEHICLE_NUMBER_PLATES ====
 +<code cpp>int VEHICLE::GET_NUMBER_OF_VEHICLE_NUMBER_PLATES() // 0x4C4D6B2644F458CB 0xD24BC1AE b323</code>
 +
 +<code>Returns the number of *types* of licence plates, enumerated below in SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX.</code>
 +==== SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX ====
 +<code cpp>void VEHICLE::SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX(Vehicle vehicle, int plateIndex) // 0x9088EB5A43FFB0A1 0xA1A1890E b323</code>
 +
 +<code>Plates:
 +Blue/White - 0
 +Yellow/black - 1
 +Yellow/Blue - 2
 +Blue/White2 - 3
 +Blue/White3 - 4
 +Yankton - 5</code>
 +==== GET_VEHICLE_NUMBER_PLATE_TEXT_INDEX ====
 +<code cpp>int VEHICLE::GET_VEHICLE_NUMBER_PLATE_TEXT_INDEX(Vehicle vehicle) // 0xF11BC2DD9A3E7195 0x499747B6 b323</code>
 +
 +<code>Returns the PlateType of a vehicle
 +      Blue_on_White_1 = 3,
 +      Blue_on_White_2 = 0,
 +      Blue_on_White_3 = 4,
 +      Yellow_on_Blue = 2,
 +       Yellow_on_Black = 1,
 +      North_Yankton = 5,</code>
 +==== SET_RANDOM_TRAINS ====
 +<code cpp>void VEHICLE::SET_RANDOM_TRAINS(BOOL toggle) // 0x80D9F74197EA47D9 0xD461CA7F b323</code>
 +
 +==== CREATE_MISSION_TRAIN ====
 +<code cpp>Vehicle VEHICLE::CREATE_MISSION_TRAIN(int variation, float x, float y, float z, BOOL direction) // 0x63C6CCA8E68AE8C8 0xD4C2EAFD b323</code>
 +
 +<code>Train models HAVE TO be loaded (requested) before you use this.
 +For variation 15 - request:
 +
 +freight
 +freightcar
 +freightgrain
 +freightcont1
 +freightcont2
 +freighttrailer
 +
 +</code>
 +==== SWITCH_TRAIN_TRACK ====
 +<code cpp>void VEHICLE::SWITCH_TRAIN_TRACK(int trackId, BOOL state) // 0xFD813BB7DB977F20 0x68BFDD61 b323</code>
 +
 +<code>Toggles whether ambient trains can spawn on the specified track or not
 +
 +`trackId` is the internal id of the train track to switch.
 +`state` is whether ambient trains can spawn or not
 +
 +trackIds
 +0 (`trains1.dat`) Main track around SA
 +1 (`trains2.dat`) Davis Quartz Quarry branch
 +2 (`trains3.dat`) Second track alongside live track along Roy Lewenstein Blv.
 +3 (`trains4.dat`) Metro track circuit
 +4 (`trains5.dat`) Branch in Mirror Park Railyard
 +5 (`trains6.dat`) Branch in Mirror Park Railyard
 +6 (`trains7.dat`) LS branch to Mirror Park Railyard
 +7 (`trains8.dat`) Overground part of metro track along Forum Dr.
 +8 (`trains9.dat`) Branch to Mirror Park Railyard
 +9 (`trains10.dat`) Yankton train
 +10 (`trains11.dat`) Part of metro track near mission row
 +11 (`trains12.dat`) Yankton prologue mission train</code>
 +==== SET_TRAIN_TRACK_SPAWN_FREQUENCY ====
 +<code cpp>void VEHICLE::SET_TRAIN_TRACK_SPAWN_FREQUENCY(int trackIndex, int frequency) // 0x21973BBF8D17EDFA 0xD5774FB7 b323</code>
 +
 +<code>Only called once inside main_persitant with the parameters p0 = 0, p1 = 120000
 +
 +trackIndex: 0 - 26</code>
 +==== DELETE_ALL_TRAINS ====
 +<code cpp>void VEHICLE::DELETE_ALL_TRAINS() // 0x736A718577F39C7D 0x83DE7ABF b323</code>
 +
 +==== SET_TRAIN_SPEED ====
 +<code cpp>void VEHICLE::SET_TRAIN_SPEED(Vehicle train, float speed) // 0xAA0BC91BE0B796E3 0xDFC35E4D b323</code>
 +
 +==== SET_TRAIN_CRUISE_SPEED ====
 +<code cpp>void VEHICLE::SET_TRAIN_CRUISE_SPEED(Vehicle train, float speed) // 0x16469284DB8C62B5 0xB507F51D b323</code>
 +
 +==== SET_RANDOM_BOATS ====
 +<code cpp>void VEHICLE::SET_RANDOM_BOATS(BOOL toggle) // 0x84436EC293B1415F 0xB505BD89 b323</code>
 +
 +==== SET_GARBAGE_TRUCKS ====
 +<code cpp>void VEHICLE::SET_GARBAGE_TRUCKS(BOOL toggle) // 0x2AFD795EEAC8D30D 0xD9ABB0FF b323</code>
 +
 +==== DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK ====
 +<code cpp>BOOL VEHICLE::DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK(Vehicle vehicle) // 0x57E4C39DE5EE8470 0x5D91D9AC b323</code>
 +
 +<code>Maximum amount of vehicles with vehicle stuck check appears to be 16.</code>
 +==== GET_VEHICLE_RECORDING_ID ====
 +<code cpp>int VEHICLE::GET_VEHICLE_RECORDING_ID(int recording, const char* script) // 0x21543C612379DB3C 0x328D601D b323</code>
 +
 +<code>See REQUEST_VEHICLE_RECORDING</code>
 +==== REQUEST_VEHICLE_RECORDING ====
 +<code cpp>void VEHICLE::REQUEST_VEHICLE_RECORDING(int recording, const char* script) // 0xAF514CABE74CBF15 0x91AFEFD9 b323</code>
 +
 +<code>Request the vehicle recording defined by the lowercase format string "%s%03d.yvr". For example, REQUEST_VEHICLE_RECORDING(1, "FBIs1UBER") corresponds to fbis1uber001.yvr.
 +For all vehicle recording/playback natives, "script" is a common prefix that usually corresponds to the script/mission the recording is used in, "recording" is its int suffix, and "id" (e.g., in native GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID) corresponds to a unique identifier within the recording streaming module.
 +Note that only 24 recordings (hardcoded in multiple places) can ever active at a given time before clobbering begins.</code>
 +==== HAS_VEHICLE_RECORDING_BEEN_LOADED ====
 +<code cpp>BOOL VEHICLE::HAS_VEHICLE_RECORDING_BEEN_LOADED(int recording, const char* script) // 0x300D614A4C785FC4 0xF52CD7F5 b323</code>
 +
 +<code>See REQUEST_VEHICLE_RECORDING</code>
 +==== REMOVE_VEHICLE_RECORDING ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_RECORDING(int recording, const char* script) // 0xF1160ACCF98A3FC8 0xD3C05B00 b323</code>
 +
 +<code>See REQUEST_VEHICLE_RECORDING</code>
 +==== GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME ====
 +<code cpp>Vector3 VEHICLE::GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME(int id, float time) // 0x92523B76657A517D 0xF31973BB b323</code>
 +
 +==== GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME ====
 +<code cpp>Vector3 VEHICLE::GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(int recording, float time, const char* script) // 0xD242728AA6F0FBA2 0x7178558D b323</code>
 +
 +<code>This native does no interpolation between pathpoints. The same position will be returned for all times up to the next pathpoint in the recording.
 +
 +See REQUEST_VEHICLE_RECORDING</code>
 +==== GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME ====
 +<code cpp>Vector3 VEHICLE::GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME(int id, float time) // 0xF0F2103EFAF8CBA7 0x4D1C15C2 b323</code>
 +
 +==== GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME ====
 +<code cpp>Vector3 VEHICLE::GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(int recording, float time, const char* script) // 0x2058206FBE79A8AD 0xD96DEC68 b323</code>
 +
 +<code>This native does no interpolation between pathpoints. The same rotation will be returned for all times up to the next pathpoint in the recording.
 +
 +See REQUEST_VEHICLE_RECORDING</code>
 +==== GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID ====
 +<code cpp>float VEHICLE::GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID(int id) // 0x102D125411A7B6E6 0x7116785E b323</code>
 +
 +==== GET_TOTAL_DURATION_OF_VEHICLE_RECORDING ====
 +<code cpp>float VEHICLE::GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(int recording, const char* script) // 0x0E48D1C262390950 0x5B35EEB7 b323</code>
 +
 +<code>See REQUEST_VEHICLE_RECORDING</code>
 +==== GET_POSITION_IN_RECORDING ====
 +<code cpp>float VEHICLE::GET_POSITION_IN_RECORDING(Vehicle vehicle) // 0x2DACD605FC681475 0x7DCD644C b323</code>
 +
 +<code>Distance traveled in the vehicles current recording.</code>
 +==== GET_TIME_POSITION_IN_RECORDING ====
 +<code cpp>float VEHICLE::GET_TIME_POSITION_IN_RECORDING(Vehicle vehicle) // 0x5746F3A7AB7FE544 0xF8C3E4A2 b323</code>
 +
 +<code>Can be used with GET_TOTAL_DURATION_OF_VEHICLE_RECORDING{_ID} to compute a percentage.</code>
 +==== START_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::START_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle, int recording, const char* script, BOOL p3) // 0x3F878F92B3A7A071 0xCF614CA8 b323</code>
 +
 +<code>p3 is some flag related to 'trailers' (invokes CVehicle::GetTrailer).
 +
 +See REQUEST_VEHICLE_RECORDING</code>
 +==== START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS ====
 +<code cpp>void VEHICLE::START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(Vehicle vehicle, int recording, const char* script, int flags, int time, int drivingStyle) // 0x7D80FD645D4DA346 0x4E721AD2 b323</code>
 +
 +<code>flags requires further research, e.g., 0x4/0x8 are related to the AI driving task and 0x20 is internally set and interacts with dynamic entity components.
 +
 +time, often zero and capped at 500, is related to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER</code>
 +==== FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE ====
 +<code cpp>void VEHICLE::FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(Vehicle vehicle, BOOL p1) // 0x1F2E4E06DEA8992B 0x01B91CD0 b323</code>
 +
 +<code>Often called after START_PLAYBACK_RECORDED_VEHICLE and SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE; similar in use to FORCE_ENTITY_AI_AND_ANIMATION_UPDATE.</code>
 +==== STOP_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::STOP_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle) // 0x54833611C17ABDEA 0xAE99C57C b323</code>
 +
 +==== PAUSE_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::PAUSE_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle) // 0x632A689BF42301B1 0xCCF54912 b323</code>
 +
 +==== UNPAUSE_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::UNPAUSE_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle) // 0x8879EE09268305D5 0x59060F75 b323</code>
 +
 +==== IS_PLAYBACK_GOING_ON_FOR_VEHICLE ====
 +<code cpp>BOOL VEHICLE::IS_PLAYBACK_GOING_ON_FOR_VEHICLE(Vehicle vehicle) // 0x1C8A4C2C19E68EEC 0x61F7650D b323</code>
 +
 +==== IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE ====
 +<code cpp>BOOL VEHICLE::IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE(Vehicle vehicle) // 0xAEA8FD591FAD4106 0x63022C58 b323</code>
 +
 +==== GET_CURRENT_PLAYBACK_FOR_VEHICLE ====
 +<code cpp>int VEHICLE::GET_CURRENT_PLAYBACK_FOR_VEHICLE(Vehicle vehicle) // 0x42BC05C27A946054 0xA3F44390 b323</code>
 +
 +==== SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle) // 0xAB8E2EDA0C0A5883 0x8DEA18C8 b323</code>
 +
 +==== SET_PLAYBACK_SPEED ====
 +<code cpp>void VEHICLE::SET_PLAYBACK_SPEED(Vehicle vehicle, float speed) // 0x6683AB880E427778 0x684E26E4 b323</code>
 +
 +==== START_PLAYBACK_RECORDED_VEHICLE_USING_AI ====
 +<code cpp>void VEHICLE::START_PLAYBACK_RECORDED_VEHICLE_USING_AI(Vehicle vehicle, int recording, const char* script, float speed, int drivingStyle) // 0x29DE5FA52D00428C 0x8DE8E24E b323</code>
 +
 +<code>AI abides by the provided driving style (e.g., stopping at red lights or waiting behind traffic) while executing the specificed vehicle recording.
 +
 +0x1F2E4E06DEA8992B is a related native that deals with the AI physics for such recordings.</code>
 +==== SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE ====
 +<code cpp>void VEHICLE::SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(Vehicle vehicle, float time) // 0x9438F7AD68771A20 0xCF3EFA4B b323</code>
 +
 +<code>SET_TIME_POSITION_IN_RECORDING can be emulated by: desired_time - GET_TIME_POSITION_IN_RECORDING(vehicle)</code>
 +==== SET_PLAYBACK_TO_USE_AI ====
 +<code cpp>void VEHICLE::SET_PLAYBACK_TO_USE_AI(Vehicle vehicle, int drivingStyle) // 0xA549C3B37EA28131 0xB536CCD7 b323</code>
 +
 +<code>Identical to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER with 0 as arguments for p1 and p3.</code>
 +==== SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER ====
 +<code cpp>void VEHICLE::SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER(Vehicle vehicle, int time, int drivingStyle, BOOL p3) // 0x6E63860BBB190730 0x0C8ABAA4 b323</code>
 +
 +<code>Time is number of milliseconds before reverting, zero for indefinitely.</code>
 +==== _0x5845066D8A1EA7F7 ====
 +<code cpp>void VEHICLE::_0x5845066D8A1EA7F7(Vehicle vehicle, float x, float y, float z, Any p4) // 0x5845066D8A1EA7F7 0x943A58EB b323</code>
 +
 +==== _0x796A877E459B99EA ====
 +<code cpp>void VEHICLE::_0x796A877E459B99EA(Any p0, float p1, float p2, float p3) // 0x796A877E459B99EA 0x5C9F477C b323</code>
 +
 +==== _0xFAF2A78061FD9EF4 ====
 +<code cpp>void VEHICLE::_0xFAF2A78061FD9EF4(Any p0, float p1, float p2, float p3) // 0xFAF2A78061FD9EF4 0xCD83C393 b323</code>
 +
 +==== _0x063AE2B2CC273588 ====
 +<code cpp>void VEHICLE::_0x063AE2B2CC273588(Vehicle vehicle, BOOL p1) // 0x063AE2B2CC273588 0x2EF8435C b323</code>
 +
 +<code>A vehicle recording playback flag only used in jewelry_heist</code>
 +==== EXPLODE_VEHICLE_IN_CUTSCENE ====
 +<code cpp>void VEHICLE::EXPLODE_VEHICLE_IN_CUTSCENE(Vehicle vehicle, BOOL p1) // 0x786A4EB67B01BF0B 0xA85207B5 b323</code>
 +
 +==== ADD_VEHICLE_STUCK_CHECK_WITH_WARP ====
 +<code cpp>void VEHICLE::ADD_VEHICLE_STUCK_CHECK_WITH_WARP(Any p0, float p1, Any p2, BOOL p3, BOOL p4, BOOL p5, Any p6) // 0x2FA9923062DD396C 0xC8B789AD b323</code>
 +
 +==== SET_VEHICLE_MODEL_IS_SUPPRESSED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_MODEL_IS_SUPPRESSED(Hash model, BOOL suppressed) // 0x0FC2D89AC25A5814 0x42A08C9B b323</code>
 +
 +<code>seems to make the vehicle stop spawning naturally in traffic. Here's an essential example:
 +
 +VEHICLE::SET_VEHICLE_MODEL_IS_SUPPRESSED(MISC::GET_HASH_KEY("taco"), true);
 +
 +god I hate taco vans
 +
 +Confirmed to work? Needs to be looped? Can not get it to work.</code>
 +==== GET_RANDOM_VEHICLE_IN_SPHERE ====
 +<code cpp>Vehicle VEHICLE::GET_RANDOM_VEHICLE_IN_SPHERE(float x, float y, float z, float radius, Hash modelHash, int flags) // 0x386F6CE5BAF6091C 0x57216D03 b323</code>
 +
 +<code>Gets a random vehicle in a sphere at the specified position, of the specified radius.
 +
 +x: The X-component of the position of the sphere.
 +y: The Y-component of the position of the sphere.
 +z: The Z-component of the position of the sphere.
 +radius: The radius of the sphere. Max is 9999.9004.
 +modelHash: The vehicle model to limit the selection to. Pass 0 for any model.
 +flags: The bitwise flags that modifies the behaviour of this function.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_RANDOM_VEHICLE_FRONT_BUMPER_IN_SPHERE ====
 +<code cpp>Vehicle VEHICLE::GET_RANDOM_VEHICLE_FRONT_BUMPER_IN_SPHERE(float p0, float p1, float p2, float p3, int p4, int p5, int p6) // 0xC5574E0AEB86BA68 0xDCADEB66 b323</code>
 +
 +==== GET_RANDOM_VEHICLE_BACK_BUMPER_IN_SPHERE ====
 +<code cpp>Vehicle VEHICLE::GET_RANDOM_VEHICLE_BACK_BUMPER_IN_SPHERE(float p0, float p1, float p2, float p3, int p4, int p5, int p6) // 0xB50807EABE20A8DC 0xD6343F6B b323</code>
 +
 +==== GET_CLOSEST_VEHICLE ====
 +<code cpp>Vehicle VEHICLE::GET_CLOSEST_VEHICLE(float x, float y, float z, float radius, Hash modelHash, int flags) // 0xF73EB622C4F1689B 0xD7E26B2C b323</code>
 +
 +<code>Example usage
 +VEHICLE::GET_CLOSEST_VEHICLE(x, y, z, radius, hash, unknown leave at 70) 
 +
 +x, y, z: Position to get closest vehicle to.
 +radius: Max radius to get a vehicle.
 +modelHash: Limit to vehicles with this model. 0 for any.
 +flags: The bitwise flags altering the function's behaviour.
 +
 +Does not return police cars or helicopters.
 +
 +It seems to return police cars for me, does not seem to return helicopters, planes or boats for some reason
 +
 +Only returns non police cars and motorbikes with the flag set to 70 and modelHash to 0. ModelHash seems to always be 0 when not a modelHash in the scripts, as stated above. 
 +
 +These flags were found in the b617d scripts: 0,2,4,6,7,23,127,260,2146,2175,12294,16384,16386,20503,32768,67590,67711,98309,100359.
 +Converted to binary, each bit probably represents a flag as explained regarding another native here: gtaforums.com/topic/822314-guide-driving-styles
 +
 +Conversion of found flags to binary: pastebin.com/kghNFkRi
 +
 +At exactly 16384 which is 0100000000000000 in binary and 4000 in hexadecimal only planes are returned. 
 +
 +It's probably more convenient to use worldGetAllVehicles(int *arr, int arrSize) and check the shortest distance yourself and sort if you want by checking the vehicle type with for example VEHICLE::IS_THIS_MODEL_A_BOAT
 +
 +-------------------------------------------------------------------------
 +
 +Conclusion: This native is not worth trying to use. Use something like this instead: pastebin.com/xiFdXa7h
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_TRAIN_CARRIAGE ====
 +<code cpp>Entity VEHICLE::GET_TRAIN_CARRIAGE(Vehicle train, int trailerNumber) // 0x08AAFD0814722BC3 0x2544E7A6 b323</code>
 +
 +<code>Corrected p1. it's basically the 'carriage/trailer number'. So if the train has 3 trailers you'd call the native once with a var or 3 times with 1, 2, 3.</code>
 +==== DELETE_MISSION_TRAIN ====
 +<code cpp>void VEHICLE::DELETE_MISSION_TRAIN(Vehicle* train) // 0x5B76B14AE875C795 0x86C9497D b323</code>
 +
 +==== SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED ====
 +<code cpp>void VEHICLE::SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED(Vehicle* train, BOOL p1) // 0xBBE7648349B49BE8 0x19808560 b323</code>
 +
 +<code>p1 is always 0</code>
 +==== SET_MISSION_TRAIN_COORDS ====
 +<code cpp>void VEHICLE::SET_MISSION_TRAIN_COORDS(Vehicle train, float x, float y, float z) // 0x591CA673AA6AB736 0xD6D70803 b323</code>
 +
 +==== IS_THIS_MODEL_A_BOAT ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_BOAT(Hash model) // 0x45A9187928F4B9E3 0x10F6085C b323</code>
 +
 +==== IS_THIS_MODEL_A_JETSKI ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_JETSKI(Hash model) // 0x9537097412CF75FE  b323</code>
 +
 +<code>Checks if model is a boat, then checks for FLAG_IS_JETSKI.</code>
 +==== IS_THIS_MODEL_A_PLANE ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_PLANE(Hash model) // 0xA0948AB42D7BA0DE 0x3B3907BB b323</code>
 +
 +==== IS_THIS_MODEL_A_HELI ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_HELI(Hash model) // 0xDCE4334788AF94EA 0x8AF7F568 b323</code>
 +
 +==== IS_THIS_MODEL_A_CAR ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_CAR(Hash model) // 0x7F6DB52EEFC96DF8 0x60E4C22F b323</code>
 +
 +<code>To check if the model is an amphibious car, see gtaforums.com/topic/717612-v-scriptnative-documentation-and-research/page-33#entry1069317363 (for build 944 and above only!)</code>
 +==== IS_THIS_MODEL_A_TRAIN ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_TRAIN(Hash model) // 0xAB935175B22E822B 0xF87DCFFD b323</code>
 +
 +==== IS_THIS_MODEL_A_BIKE ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_BIKE(Hash model) // 0xB50C0B0CEDC6CE84 0x7E702CDD b323</code>
 +
 +==== IS_THIS_MODEL_A_BICYCLE ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_BICYCLE(Hash model) // 0xBF94DD42F63BDED2 0x328E6FF5 b323</code>
 +
 +==== IS_THIS_MODEL_A_QUADBIKE ====
 +<code cpp>BOOL VEHICLE::IS_THIS_MODEL_A_QUADBIKE(Hash model) // 0x39DAC362EE65FA28 0xC1625277 b323</code>
 +
 +==== _IS_THIS_MODEL_AN_AMPHIBIOUS_CAR ====
 +<code cpp>BOOL VEHICLE::_IS_THIS_MODEL_AN_AMPHIBIOUS_CAR(Hash model) // 0x633F6F44A537EBB6  b944</code>
 +
 +==== _IS_THIS_MODEL_AN_AMPHIBIOUS_QUADBIKE ====
 +<code cpp>BOOL VEHICLE::_IS_THIS_MODEL_AN_AMPHIBIOUS_QUADBIKE(Hash model) // 0xA1A9FC1C76A6730D  b1103</code>
 +
 +==== SET_HELI_BLADES_FULL_SPEED ====
 +<code cpp>void VEHICLE::SET_HELI_BLADES_FULL_SPEED(Vehicle vehicle) // 0xA178472EBB8AE60D 0x033A9408 b323</code>
 +
 +<code>Equivalent of SET_HELI_BLADES_SPEED(vehicleHandle, 1.0f);
 +
 +this native works on planes to?</code>
 +==== SET_HELI_BLADES_SPEED ====
 +<code cpp>void VEHICLE::SET_HELI_BLADES_SPEED(Vehicle vehicle, float speed) // 0xFD280B4D7F3ABC4D 0x5C7D4EA9 b323</code>
 +
 +<code>Sets the speed of the helicopter blades in percentage of the full speed.
 +
 +vehicleHandle: The helicopter.
 +speed: The speed in percentage, 0.0f being 0% and 1.0f being 100%.</code>
 +==== _0x99CAD8E7AFDB60FA ====
 +<code cpp>void VEHICLE::_0x99CAD8E7AFDB60FA(Vehicle vehicle, float p1, float p2) // 0x99CAD8E7AFDB60FA 0x1128A45B b323</code>
 +
 +==== SET_VEHICLE_CAN_BE_TARGETTED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_BE_TARGETTED(Vehicle vehicle, BOOL state) // 0x3750146A28097A82 0x64B70B1D b323</code>
 +
 +<code>This has not yet been tested - it's just an assumption of what the types could be.</code>
 +==== _0xDBC631F109350B8C ====
 +<code cpp>void VEHICLE::_0xDBC631F109350B8C(Vehicle vehicle, BOOL p1) // 0xDBC631F109350B8C 0x486C1280 b323</code>
 +
 +<code>Related to locking the vehicle or something similar.
 +
 +In the decompiled scripts, its always called after
 +VEHICLE::_SET_EXCLUSIVE_DRIVER(a_0, 0, 0);
 +VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(a_0, 1);
 +VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_PLAYER(a_0, PLAYER::PLAYER_ID(), 0);
 +-->VEHICLE::_DBC631F109350B8C(a_0, 1);</code>
 +==== SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(Vehicle vehicle, BOOL state) // 0x4C7028F78FFD3681 0xC5D94017 b323</code>
 +
 +==== SET_VEHICLE_HAS_UNBREAKABLE_LIGHTS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HAS_UNBREAKABLE_LIGHTS(Vehicle vehicle, BOOL p1) // 0x1AA8A837D2169D94 0x009AB49E b323</code>
 +
 +==== _0x2311DD7159F00582 ====
 +<code cpp>void VEHICLE::_0x2311DD7159F00582(Vehicle vehicle, BOOL p1) // 0x2311DD7159F00582 0x758C5E2E b323</code>
 +
 +==== _0x065D03A9D6B2C6B5 ====
 +<code cpp>void VEHICLE::_0x065D03A9D6B2C6B5(Any p0, Any p1) // 0x065D03A9D6B2C6B5  b463</code>
 +
 +==== GET_VEHICLE_DIRT_LEVEL ====
 +<code cpp>float VEHICLE::GET_VEHICLE_DIRT_LEVEL(Vehicle vehicle) // 0x8F17BC8BA08DA62B 0xFD15C065 b323</code>
 +
 +<code>Dirt level 0..15</code>
 +==== SET_VEHICLE_DIRT_LEVEL ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DIRT_LEVEL(Vehicle vehicle, float dirtLevel) // 0x79D3B596FE44EE8B 0x2B39128B b323</code>
 +
 +<code>You can't use values greater than 15.0
 +You can see why here: pastebin.com/Wbn34fGD
 +
 +Also, R* does (float)(rand() % 15) to get a random dirt level when generating a vehicle.</code>
 +==== _IS_VEHICLE_DAMAGED ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_DAMAGED(Vehicle vehicle) // 0xBCDC5017D3CE1E9E 0xDAC523BC b323</code>
 +
 +<code>Appears to return true if the vehicle has any damage, including cosmetically.
 +
 +GET_*</code>
 +==== IS_VEHICLE_DOOR_FULLY_OPEN ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_DOOR_FULLY_OPEN(Vehicle vehicle, int doorIndex) // 0x3E933CFF7B111C22 0xC2385B6F b323</code>
 +
 +<code>doorIndex:
 +0 = Front Left Door
 +1 = Front Right Door
 +2 = Back Left Door
 +3 = Back Right Door
 +4 = Hood
 +5 = Trunk
 +6 = Trunk2</code>
 +==== SET_VEHICLE_ENGINE_ON ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ENGINE_ON(Vehicle vehicle, BOOL value, BOOL instantly, BOOL disableAutoStart) // 0x2497C4717C8B881E 0x7FBC86F1 b323</code>
 +
 +<code>Starts or stops the engine on the specified vehicle.
 +
 +vehicle: The vehicle to start or stop the engine on.
 +value: true to turn the vehicle on; false to turn it off.
 +instantly: if true, the vehicle will be set to the state immediately; otherwise, the current driver will physically turn on or off the engine.
 +disableAutoStart: If true, the system will prevent the engine from starting when the player got into it.
 +
 +from what I've tested when I do this to a helicopter the propellers turn off after the engine has started. so is there any way to keep the heli propellers on?</code>
 +==== SET_VEHICLE_UNDRIVEABLE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_UNDRIVEABLE(Vehicle vehicle, BOOL toggle) // 0x8ABA6AF54B942B95 0x48D02A4E b323</code>
 +
 +==== SET_VEHICLE_PROVIDES_COVER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_PROVIDES_COVER(Vehicle vehicle, BOOL toggle) // 0x5AFEEDD9BB2899D7 0xEFC01CA9 b323</code>
 +
 +==== SET_VEHICLE_DOOR_CONTROL ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOOR_CONTROL(Vehicle vehicle, int doorIndex, int speed, float angle) // 0xF2BFA0430F0A0FCB 0x572DD360 b323</code>
 +
 +<code>doorIndex:
 +0 = Front Left Door (driver door)
 +1 = Front Right Door
 +2 = Back Left Door
 +3 = Back Right Door
 +4 = Hood
 +5 = Trunk
 +6 = Trunk2
 +
 +p2:
 +mostly use 0 and 1, very rare using 3 and 5
 +
 +p3:
 +It seems it is an angle
 +
 +Example in VB: 
 +    Public Shared Sub Set_Vehicle_Door_Angle(Vehicle As Vehicle, Door As VehicleDoor, Angle As Single)
 +        Native.Function.Call(Hash.SET_VEHICLE_DOOR_CONTROL, Vehicle.Handle, Door, 1, Angle)
 +    End Sub
 +
 +I'm Not MentaL
 +
 +sfink: p2 is speed, 5 is fast, 1 is slow 3 is medium</code>
 +==== SET_VEHICLE_DOOR_LATCHED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOOR_LATCHED(Vehicle vehicle, int doorIndex, BOOL p2, BOOL p3, BOOL p4) // 0xA5A9653A8D2CAF48 0x4EB7BBFC b323</code>
 +
 +==== GET_VEHICLE_DOOR_ANGLE_RATIO ====
 +<code cpp>float VEHICLE::GET_VEHICLE_DOOR_ANGLE_RATIO(Vehicle vehicle, int door) // 0xFE3F9C29F7B32BD5 0x0E399C26 b323</code>
 +
 +<code>example in vb:
 +    Public Shared Function Get_Vehicle_Door_Angle(Vehicle As Vehicle, Door As VehicleDoor) As Single
 +        Return Native.Function.Call(Of Single)(Hash.GET_VEHICLE_DOOR_ANGLE_RATIO, Vehicle.Handle, Door)
 +    End Function
 +
 +I'm Not MentaL</code>
 +==== GET_PED_USING_VEHICLE_DOOR ====
 +<code cpp>Ped VEHICLE::GET_PED_USING_VEHICLE_DOOR(Vehicle vehicle, int doorIndex) // 0x218297BF0CFD853B 0x0630101F b323</code>
 +
 +==== SET_VEHICLE_DOOR_SHUT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOOR_SHUT(Vehicle vehicle, int doorIndex, BOOL closeInstantly) // 0x93D9BD300D7789E5 0x142606BD b323</code>
 +
 +<code>doorIndex:
 +0 = Front Left Door
 +1 = Front Right Door
 +2 = Back Left Door
 +3 = Back Right Door
 +4 = Hood
 +5 = Trunk
 +6 = Trunk2</code>
 +==== SET_VEHICLE_DOOR_BROKEN ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DOOR_BROKEN(Vehicle vehicle, int doorIndex, BOOL deleteDoor) // 0xD4D4F6A4AB575A33 0x8147FEA7 b323</code>
 +
 +<code>doorIndex:
 +0 = Front Right Door
 +1 = Front Left Door
 +2 = Back Right Door
 +3 = Back Left Door
 +4 = Hood
 +5 = Trunk
 +
 +Changed last paramater from CreateDoorObject To NoDoorOnTheFloor because when on false, the door object is created,and not created when on true...the former parameter name was counter intuitive...(by Calderon)
 +
 +Calderon is a moron.</code>
 +==== SET_VEHICLE_CAN_BREAK ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_BREAK(Vehicle vehicle, BOOL toggle) // 0x59BF8C3D52C92F66 0x90A810D1 b323</code>
 +
 +==== DOES_VEHICLE_HAVE_ROOF ====
 +<code cpp>BOOL VEHICLE::DOES_VEHICLE_HAVE_ROOF(Vehicle vehicle) // 0x8AC862B0B32C5B80 0xDB817403 b323</code>
 +
 +==== _0xC4B3347BD68BD609 ====
 +<code cpp>void VEHICLE::_0xC4B3347BD68BD609(Any p0) // 0xC4B3347BD68BD609  b573</code>
 +
 +==== _0xD3301660A57C9272 ====
 +<code cpp>void VEHICLE::_0xD3301660A57C9272(Any p0) // 0xD3301660A57C9272  b757</code>
 +
 +==== _0xB9562064627FF9DB ====
 +<code cpp>void VEHICLE::_0xB9562064627FF9DB(Any p0, Any p1) // 0xB9562064627FF9DB  b573</code>
 +
 +==== IS_BIG_VEHICLE ====
 +<code cpp>BOOL VEHICLE::IS_BIG_VEHICLE(Vehicle vehicle) // 0x9F243D3919F442FE 0x9CDBA8DE b323</code>
 +
 +==== GET_NUMBER_OF_VEHICLE_COLOURS ====
 +<code cpp>int VEHICLE::GET_NUMBER_OF_VEHICLE_COLOURS(Vehicle vehicle) // 0x3B963160CD65D41E 0xF2442EE2 b323</code>
 +
 +<code>Actually number of color combinations</code>
 +==== SET_VEHICLE_COLOUR_COMBINATION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_COLOUR_COMBINATION(Vehicle vehicle, int colorCombination) // 0x33E8CD3322E2FE31 0xA557AEAD b323</code>
 +
 +<code>Sets the selected vehicle's colors to their default value (specific variant specified using the colorCombination parameter).
 +Range of possible values for colorCombination is currently unknown, I couldn't find where these values are stored either (Disquse's guess was vehicles.meta but I haven't seen it in there.)</code>
 +==== GET_VEHICLE_COLOUR_COMBINATION ====
 +<code cpp>int VEHICLE::GET_VEHICLE_COLOUR_COMBINATION(Vehicle vehicle) // 0x6A842D197F845D56 0x77AC1B4C b323</code>
 +
 +==== _SET_VEHICLE_XENON_LIGHTS_COLOR ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_XENON_LIGHTS_COLOR(Vehicle vehicle, int colorIndex) // 0xE41033B25D003A07  b1604</code>
 +
 +<code>`color`: is the paint index for the vehicle.
 +Paint index goes from 0 to 12.
 +Be aware that it only works on xenon lights. Example: https://i.imgur.com/yV3cpG9.png</code>
 +==== _GET_VEHICLE_XENON_LIGHTS_COLOR ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_XENON_LIGHTS_COLOR(Vehicle vehicle) // 0x3DFF319A831E0CDB  b1604</code>
 +
 +<code>Returns the headlight color index from the vehicle. Value between 0, 12.
 +Use _SET_VEHICLE_HEADLIGHTS_COLOUR to set the headlights color for the vehicle.
 +Must enable xenon headlights before it'll take affect.
 +
 +Returns an int, value between 0-12 or 255 if no color is set.</code>
 +==== SET_VEHICLE_IS_CONSIDERED_BY_PLAYER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(Vehicle vehicle, BOOL toggle) // 0x31B927BBC44156CD 0x14413319 b323</code>
 +
 +<code>Setting this to false, makes the specified vehicle to where if you press Y your character doesn't even attempt the animation to enter the vehicle. Hence it's not considered aka ignored.</code>
 +==== _0xBE5C1255A1830FF5 ====
 +<code cpp>void VEHICLE::_0xBE5C1255A1830FF5(Vehicle vehicle, BOOL toggle) // 0xBE5C1255A1830FF5 0xA6D8D7A5 b323</code>
 +
 +==== _0x9BECD4B9FEF3F8A6 ====
 +<code cpp>void VEHICLE::_0x9BECD4B9FEF3F8A6(Vehicle vehicle, BOOL p1) // 0x9BECD4B9FEF3F8A6 0xACAB8FF3 b323</code>
 +
 +==== _0x88BC673CA9E0AE99 ====
 +<code cpp>void VEHICLE::_0x88BC673CA9E0AE99(Vehicle vehicle, BOOL p1) // 0x88BC673CA9E0AE99 0xF0E5C41D b323</code>
 +
 +==== _0xE851E480B814D4BA ====
 +<code cpp>void VEHICLE::_0xE851E480B814D4BA(Vehicle vehicle, BOOL p1) // 0xE851E480B814D4BA 0x2F98B4B7 b323</code>
 +
 +==== GET_RANDOM_VEHICLE_MODEL_IN_MEMORY ====
 +<code cpp>void VEHICLE::GET_RANDOM_VEHICLE_MODEL_IN_MEMORY(BOOL p0, Hash* modelHash, int* successIndicator) // 0x055BF0AC0C34F4FD 0xE2C45631 b323</code>
 +
 +<code>Not present in the retail version! It's just a nullsub.
 +
 +p0 always true (except in one case)
 +successIndicator: 0 if success, -1 if failed</code>
 +==== GET_VEHICLE_DOOR_LOCK_STATUS ====
 +<code cpp>int VEHICLE::GET_VEHICLE_DOOR_LOCK_STATUS(Vehicle vehicle) // 0x25BC98A59C2EA962 0x0D72CEF2 b323</code>
 +
 +<code>enum VehicleLockStatus = {
 +    None = 0,
 +    Unlocked = 1,
 +    Locked = 2,
 +    LockedForPlayer = 3,
 +    StickPlayerInside = 4, -- Doesn't allow players to exit the vehicle with the exit vehicle key.
 +    CanBeBrokenInto = 7, -- Can be broken into the car. If the glass is broken, the value will be set to 1
 +    CanBeBrokenIntoPersist = 8, -- Can be broken into persist
 +    CannotBeTriedToEnter = 10, -- Cannot be tried to enter (Nothing happens when you press the vehicle enter key).
 +}</code>
 +==== _GET_VEHICLE_DOOR_DESTROY_TYPE ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_DOOR_DESTROY_TYPE(Vehicle vehicle, int doorIndex) // 0xCA4AC3EAAE46EC7B  b1103</code>
 +
 +<code>Returns vehicle door destroy type previously set with _SET_VEHICLE_DOOR_DESTROY_TYPE</code>
 +==== IS_VEHICLE_DOOR_DAMAGED ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_DOOR_DAMAGED(Vehicle veh, int doorID) // 0xB8E181E559464527 0x4999E3C3 b323</code>
 +
 +<code>doorID starts at 0, not seeming to skip any numbers. Four door vehicles intuitively range from 0 to 3.</code>
 +==== _SET_VEHICLE_DOOR_CAN_BREAK ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_DOOR_CAN_BREAK(Vehicle vehicle, int doorIndex, BOOL isBreakable) // 0x2FA133A4A9D37ED8 0x065B92B3 b323</code>
 +
 +<code>Keeps Vehicle Doors/Hood/Trunk from breaking off</code>
 +==== IS_VEHICLE_BUMPER_BOUNCING ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_BUMPER_BOUNCING(Vehicle vehicle, BOOL frontBumper) // 0x27B926779DEB502D 0xB3A2CC4F b323</code>
 +
 +==== IS_VEHICLE_BUMPER_BROKEN_OFF ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_BUMPER_BROKEN_OFF(Vehicle vehicle, BOOL front) // 0x468056A6BB6F3846 0xAF25C027 b323</code>
 +
 +==== IS_COP_VEHICLE_IN_AREA_3D ====
 +<code cpp>BOOL VEHICLE::IS_COP_VEHICLE_IN_AREA_3D(float x1, float x2, float y1, float y2, float z1, float z2) // 0x7EEF65D5F153E26A 0xFB16C6D1 b323</code>
 +
 +<code>Usage:
 +
 +public bool isCopInRange(Vector3 Location, float Range)
 +        {
 +            return Function.Call<bool>(Hash.IS_COP_PED_IN_AREA_3D, Location.X - Range, Location.Y - Range, Location.Z - Range, Location.X + Range, Location.Y + Range, Location.Z + Range);
 +        }</code>
 +==== IS_VEHICLE_ON_ALL_WHEELS ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_ON_ALL_WHEELS(Vehicle vehicle) // 0xB104CD1BABF302E2 0x10089F8E b323</code>
 +
 +<code> Public Function isVehicleOnAllWheels(vh As Vehicle) As Boolean
 +        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_ON_ALL_WHEELS, vh)
 +    End Function
 +</code>
 +==== _GET_VEHICLE_MODEL_MONETARY_VALUE ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_MODEL_MONETARY_VALUE(Hash vehicleModel) // 0x5873C14A52D74236  b463</code>
 +
 +<code>Returns `nMonetaryValue` from handling.meta for specific model.</code>
 +==== GET_VEHICLE_LAYOUT_HASH ====
 +<code cpp>Hash VEHICLE::GET_VEHICLE_LAYOUT_HASH(Vehicle vehicle) // 0x28D37D4F71AC5C58 0xE0B35187 b323</code>
 +
 +==== _0xA01BC64DD4BFBBAC ====
 +<code cpp>Any VEHICLE::_0xA01BC64DD4BFBBAC(Vehicle vehicle, int p1) // 0xA01BC64DD4BFBBAC  b323</code>
 +
 +==== SET_RENDER_TRAIN_AS_DERAILED ====
 +<code cpp>void VEHICLE::SET_RENDER_TRAIN_AS_DERAILED(Vehicle train, BOOL toggle) // 0x317B11A312DF5534 0x899D9092 b323</code>
 +
 +<code>makes the train all jumbled up and derailed as it moves on the tracks (though that wont stop it from its normal operations)</code>
 +==== SET_VEHICLE_EXTRA_COLOURS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_EXTRA_COLOURS(Vehicle vehicle, int pearlescentColor, int wheelColor) // 0x2036F561ADD12E33 0x515DB2A0 b323</code>
 +
 +<code>They use the same color indexs as SET_VEHICLE_COLOURS.</code>
 +==== GET_VEHICLE_EXTRA_COLOURS ====
 +<code cpp>void VEHICLE::GET_VEHICLE_EXTRA_COLOURS(Vehicle vehicle, int* pearlescentColor, int* wheelColor) // 0x3BC4245933A166F7 0x80E4659B b323</code>
 +
 +==== _SET_VEHICLE_INTERIOR_COLOR ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_INTERIOR_COLOR(Vehicle vehicle, int color) // 0xF40DD601A65F7F19  b505</code>
 +
 +==== _GET_VEHICLE_INTERIOR_COLOR ====
 +<code cpp>void VEHICLE::_GET_VEHICLE_INTERIOR_COLOR(Vehicle vehicle, int* color) // 0x7D1464D472D32136  b505</code>
 +
 +==== _SET_VEHICLE_DASHBOARD_COLOR ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_DASHBOARD_COLOR(Vehicle vehicle, int color) // 0x6089CDF6A57F326C  b505</code>
 +
 +==== _GET_VEHICLE_DASHBOARD_COLOR ====
 +<code cpp>void VEHICLE::_GET_VEHICLE_DASHBOARD_COLOR(Vehicle vehicle, int* color) // 0xB7635E80A5C31BFF  b505</code>
 +
 +==== STOP_ALL_GARAGE_ACTIVITY ====
 +<code cpp>void VEHICLE::STOP_ALL_GARAGE_ACTIVITY() // 0x0F87E938BDF29D66 0x17A0BCE5 b323</code>
 +
 +==== SET_VEHICLE_FIXED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FIXED(Vehicle vehicle) // 0x115722B1B9C14C1C 0x17469AA1 b323</code>
 +
 +<code>This fixes a vehicle.
 +If the vehicle's engine's broken then you cannot fix it with this native.</code>
 +==== SET_VEHICLE_DEFORMATION_FIXED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DEFORMATION_FIXED(Vehicle vehicle) // 0x953DA1E1B12C0491 0xDD2920C8 b323</code>
 +
 +<code>This fixes the deformation of a vehicle but the vehicle health doesn't improve</code>
 +==== _SET_VEHICLE_CAN_ENGINE_OPERATE_ON_FIRE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_CAN_ENGINE_OPERATE_ON_FIRE(Vehicle vehicle, BOOL toggle) // 0x206BC5DC9D1AC70A 0x8EACBD13 b323</code>
 +
 +==== SET_VEHICLE_CAN_LEAK_OIL ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_LEAK_OIL(Vehicle vehicle, BOOL toggle) // 0x51BB2D88D31A914B 0x88F0F7E7 b323</code>
 +
 +==== SET_VEHICLE_CAN_LEAK_PETROL ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_LEAK_PETROL(Vehicle vehicle, BOOL toggle) // 0x192547247864DFDD 0x90D6EE57 b323</code>
 +
 +==== SET_DISABLE_VEHICLE_PETROL_TANK_FIRES ====
 +<code cpp>void VEHICLE::SET_DISABLE_VEHICLE_PETROL_TANK_FIRES(Vehicle vehicle, BOOL toggle) // 0x465BF26AB9684352 0xC40192B5 b323</code>
 +
 +==== SET_DISABLE_VEHICLE_PETROL_TANK_DAMAGE ====
 +<code cpp>void VEHICLE::SET_DISABLE_VEHICLE_PETROL_TANK_DAMAGE(Vehicle vehicle, BOOL toggle) // 0x37C8252A7C92D017 0xAD3E05F2 b323</code>
 +
 +==== SET_DISABLE_VEHICLE_ENGINE_FIRES ====
 +<code cpp>void VEHICLE::SET_DISABLE_VEHICLE_ENGINE_FIRES(Vehicle vehicle, BOOL toggle) // 0x91A0BD635321F145 0x1784BA1A b323</code>
 +
 +==== _0xC50CE861B55EAB8B ====
 +<code cpp>void VEHICLE::_0xC50CE861B55EAB8B(Vehicle vehicle, BOOL p1) // 0xC50CE861B55EAB8B 0x40C323AE b323</code>
 +
 +<code>SET_VEHICLE_LI*</code>
 +==== _0x6EBFB22D646FFC18 ====
 +<code cpp>void VEHICLE::_0x6EBFB22D646FFC18(Vehicle vehicle, BOOL p1) // 0x6EBFB22D646FFC18 0x847F1304 b323</code>
 +
 +<code>sfink: sets bit in vehicle's structure, used by maintransition, fm_mission_controller, mission_race and a couple of other scripts. see dissassembly: 
 +CVehicle *__fastcall sub_140CDAA10(signed int a1, char a2)
 +{
 +    CVehicle *result; // rax@1
 +
 +    result = EntityAsCVehicle(a1);
 +    if ( result )
 +    {
 +        result->field_886 &= 0xEFu;
 +        result->field_886 |= 16 * (a2 & 1);
 +    }
 +    return result;
 +}</code>
 +==== SET_DISABLE_PRETEND_OCCUPANTS ====
 +<code cpp>void VEHICLE::SET_DISABLE_PRETEND_OCCUPANTS(Vehicle vehicle, BOOL toggle) // 0x25367DE49D64CF16 0xCBD98BA1 b323</code>
 +
 +==== REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA(float x1, float y1, float z1, float x2, float y2, float z2, Any unk) // 0x46A1E1A299EC4BBA 0x42CC15E0 b323</code>
 +
 +==== SET_VEHICLE_STEER_BIAS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_STEER_BIAS(Vehicle vehicle, float value) // 0x42A8EC77D5150CBE 0x7357C1EB b323</code>
 +
 +<code>Locks the vehicle's steering to the desired angle, explained below.
 +
 +Requires to be called onTick. Steering is unlocked the moment the function stops being called on the vehicle.
 +
 +Steer bias:
 +-1.0 = full right
 +0.0 = centered steering
 +1.0 = full left</code>
 +==== IS_VEHICLE_EXTRA_TURNED_ON ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_EXTRA_TURNED_ON(Vehicle vehicle, int extraId) // 0xD2E6822DBFD6C8BD 0x042098B5 b323</code>
 +
 +==== SET_VEHICLE_EXTRA ====
 +<code cpp>void VEHICLE::SET_VEHICLE_EXTRA(Vehicle vehicle, int extraId, BOOL disable) // 0x7EE3A3C5E4A40CC9 0x642D065C b323</code>
 +
 +<code>Note: only some vehicle have extras
 +extra ids are from 1 - 9 depending on the vehicle
 +
 +-------------------------------------------------
 +
 +^ not sure if outdated or simply wrong. Max extra ID for b944 is 14
 +
 +-------------------------------------------------
 +p2 is not a on/off toggle. mostly 0 means on and 1 means off.
 +not sure if it really should be a BOOL.</code>
 +==== DOES_EXTRA_EXIST ====
 +<code cpp>BOOL VEHICLE::DOES_EXTRA_EXIST(Vehicle vehicle, int extraId) // 0x1262D55792428154 0x409411CC b323</code>
 +
 +<code>Checks via CVehicleModelInfo</code>
 +==== _DOES_VEHICLE_TYRE_EXIST ====
 +<code cpp>BOOL VEHICLE::_DOES_VEHICLE_TYRE_EXIST(Vehicle vehicle, int tyreIndex) // 0x534E36D4DB9ECC5D  b1493</code>
 +
 +<code>Checks if vehicle tyre at index exists. Also returns false if tyre was removed.</code>
 +==== SET_CONVERTIBLE_ROOF ====
 +<code cpp>void VEHICLE::SET_CONVERTIBLE_ROOF(Vehicle vehicle, BOOL p1) // 0xF39C4F538B5124C2 0xC87B6A51 b323</code>
 +
 +==== LOWER_CONVERTIBLE_ROOF ====
 +<code cpp>void VEHICLE::LOWER_CONVERTIBLE_ROOF(Vehicle vehicle, BOOL instantlyLower) // 0xDED51F703D0FA83D 0xC5F72EAE b323</code>
 +
 +==== RAISE_CONVERTIBLE_ROOF ====
 +<code cpp>void VEHICLE::RAISE_CONVERTIBLE_ROOF(Vehicle vehicle, BOOL instantlyRaise) // 0x8F5FB35D7E88FC70 0xA4E4CBA3 b323</code>
 +
 +==== GET_CONVERTIBLE_ROOF_STATE ====
 +<code cpp>int VEHICLE::GET_CONVERTIBLE_ROOF_STATE(Vehicle vehicle) // 0xF8C397922FC03F41 0x1B09714D b323</code>
 +
 +<code>0 -> up
 +1 -> lowering down
 +2 -> down
 +3 -> raising up</code>
 +==== IS_VEHICLE_A_CONVERTIBLE ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_A_CONVERTIBLE(Vehicle vehicle, BOOL p1) // 0x52F357A30698BCCE 0x6EF54490 b323</code>
 +
 +<code>p1 is false almost always.
 +
 +However, in launcher_carwash/carwash1/carwash2 scripts, p1 is true and is accompanied by DOES_VEHICLE_HAVE_ROOF </code>
 +==== _TRANSFORM_VEHICLE_TO_SUBMARINE ====
 +<code cpp>void VEHICLE::_TRANSFORM_VEHICLE_TO_SUBMARINE(Vehicle vehicle, BOOL noAnimation) // 0xBE4C854FFDB6EEBE  b1365</code>
 +
 +<code>Transforms the `stormberg` to its "water vehicle" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.</code>
 +==== _TRANSFORM_SUBMARINE_TO_VEHICLE ====
 +<code cpp>void VEHICLE::_TRANSFORM_SUBMARINE_TO_VEHICLE(Vehicle vehicle, BOOL noAnimation) // 0x2A69FFD1B42BFF9E  b1290</code>
 +
 +<code>Transforms the `stormberg` to its "road vehicle" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.</code>
 +==== _GET_IS_SUBMARINE_VEHICLE_TRANSFORMED ====
 +<code cpp>BOOL VEHICLE::_GET_IS_SUBMARINE_VEHICLE_TRANSFORMED(Vehicle vehicle) // 0xA77DC70BD689A1E5  b1290</code>
 +
 +==== IS_VEHICLE_STOPPED_AT_TRAFFIC_LIGHTS ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_STOPPED_AT_TRAFFIC_LIGHTS(Vehicle vehicle) // 0x2959F696AE390A99 0x69200FA4 b323</code>
 +
 +<code>Is this for red lights only?  more testing required.</code>
 +==== SET_VEHICLE_DAMAGE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DAMAGE(Vehicle vehicle, float xOffset, float yOffset, float zOffset, float damage, float radius, BOOL focusOnModel) // 0xA1DD317EA8FD4F29 0x21B458B2 b323</code>
 +
 +<code>Apply damage to vehicle at a location. Location is relative to vehicle model (not world).
 +
 +Radius of effect damage applied in a sphere at impact location
 +When `focusOnModel` set to `true`, the damage sphere will travel towards the vehicle from the given point, thus guaranteeing an impact</code>
 +==== _0x35BB21DE06784373 ====
 +<code cpp>void VEHICLE::_0x35BB21DE06784373(Any p0, Any p1) // 0x35BB21DE06784373  b463</code>
 +
 +==== GET_VEHICLE_ENGINE_HEALTH ====
 +<code cpp>float VEHICLE::GET_VEHICLE_ENGINE_HEALTH(Vehicle vehicle) // 0xC45D23BAF168AAB8 0x8880038A b323</code>
 +
 +<code>Returns 1000.0 if the function is unable to get the address of the specified vehicle or if it's not a vehicle.
 +
 +Minimum: -4000
 +Maximum: 1000
 +
 +-4000: Engine is destroyed
 +0 and below: Engine catches fire and health rapidly declines
 +300: Engine is smoking and losing functionality
 +1000: Engine is perfect</code>
 +==== SET_VEHICLE_ENGINE_HEALTH ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ENGINE_HEALTH(Vehicle vehicle, float health) // 0x45F6D8EEF34ABEF1 0x1B760FB5 b323</code>
 +
 +<code>1000 is max health
 +Begins leaking gas at around 650 health
 +-999.90002441406 appears to be minimum health, although nothing special occurs <- false statement
 +
 +-------------------------
 +Minimum: -4000
 +Maximum: 1000
 +
 +-4000: Engine is destroyed
 +0 and below: Engine catches fire and health rapidly declines
 +300: Engine is smoking and losing functionality
 +1000: Engine is perfect</code>
 +==== _SET_PLANE_ENGINE_HEALTH ====
 +<code cpp>void VEHICLE::_SET_PLANE_ENGINE_HEALTH(Vehicle vehicle, float health) // 0x2A86A0475B6A1434  b1103</code>
 +
 +<code>Works just like SET_VEHICLE_ENGINE_HEALTH, didn't saw any difference. But this native works only for planes.</code>
 +==== GET_VEHICLE_PETROL_TANK_HEALTH ====
 +<code cpp>float VEHICLE::GET_VEHICLE_PETROL_TANK_HEALTH(Vehicle vehicle) // 0x7D5DABE888D2D074 0xE41595CE b323</code>
 +
 +<code>1000 is max health
 +Begins leaking gas at around 650 health
 +-999.90002441406 appears to be minimum health, although nothing special occurs</code>
 +==== SET_VEHICLE_PETROL_TANK_HEALTH ====
 +<code cpp>void VEHICLE::SET_VEHICLE_PETROL_TANK_HEALTH(Vehicle vehicle, float health) // 0x70DB57649FA8D0D8 0x660A3692 b323</code>
 +
 +<code>1000 is max health
 +Begins leaking gas at around 650 health
 +-999.90002441406 appears to be minimum health, although nothing special occurs</code>
 +==== IS_VEHICLE_STUCK_TIMER_UP ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_STUCK_TIMER_UP(Vehicle vehicle, int p1, int p2) // 0x679BE1DAF71DA874 0x2FCF58C1 b323</code>
 +
 +<code>p1 can be anywhere from 0 to 3 in the scripts. p2 is generally somewhere in the 1000 to 10000 range.</code>
 +==== RESET_VEHICLE_STUCK_TIMER ====
 +<code cpp>void VEHICLE::RESET_VEHICLE_STUCK_TIMER(Vehicle vehicle, int nullAttributes) // 0xD7591B0065AFAA7A 0xEF2A6016 b323</code>
 +
 +<code>The inner function has a switch on the second parameter. It's the stuck timer index.
 +
 +Here's some pseudo code I wrote for the inner function:
 +void __fastcall NATIVE_RESET_VEHICLE_STUCK_TIMER_INNER(CUnknown* unknownClassInVehicle, int timerIndex)
 +{
 + switch (timerIndex)
 +   {
 + case 0:
 +       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;
 + case 1:
 +       unknownClassInVehicle->SecondStuckTimer = (WORD)0u;
 +    case 2:
 +       unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;
 + case 3:
 +       unknownClassInVehicle->FourthStuckTimer = (WORD)0u;
 +    case 4:
 +       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;
 +     unknownClassInVehicle->SecondStuckTimer = (WORD)0u;
 +        unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;
 +     unknownClassInVehicle->FourthStuckTimer = (WORD)0u;
 +        break;
 +    };
 +}</code>
 +==== IS_VEHICLE_DRIVEABLE ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_DRIVEABLE(Vehicle vehicle, BOOL isOnFireCheck) // 0x4C241E39B23DF959 0x41A7267A b323</code>
 +
 +<code>p1 is always 0 in the scripts.
 +
 +p1 = check if vehicle is on fire</code>
 +==== SET_VEHICLE_HAS_BEEN_OWNED_BY_PLAYER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HAS_BEEN_OWNED_BY_PLAYER(Vehicle vehicle, BOOL owned) // 0x2B5F9D2AF1F1722D 0xB4D3DBFB b323</code>
 +
 +==== SET_VEHICLE_NEEDS_TO_BE_HOTWIRED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_NEEDS_TO_BE_HOTWIRED(Vehicle vehicle, BOOL toggle) // 0xFBA550EA44404EE6 0xD8260751 b323</code>
 +
 +==== _0x9F3F689B814F2599 ====
 +<code cpp>void VEHICLE::_0x9F3F689B814F2599(Vehicle vehicle, BOOL p1) // 0x9F3F689B814F2599  b323</code>
 +
 +==== _0x4E74E62E0A97E901 ====
 +<code cpp>void VEHICLE::_0x4E74E62E0A97E901(Vehicle vehicle, BOOL p1) // 0x4E74E62E0A97E901  b323</code>
 +
 +==== START_VEHICLE_HORN ====
 +<code cpp>void VEHICLE::START_VEHICLE_HORN(Vehicle vehicle, int duration, Hash mode, BOOL forever) // 0x9C8C6504B5B63D2C 0x0DF5ADB3 b323</code>
 +
 +<code>Sounds the horn for the specified vehicle.
 +
 +vehicle: The vehicle to activate the horn for.
 +mode: The hash of "NORMAL" or "HELDDOWN". Can be 0.
 +duration: The duration to sound the horn, in milliseconds.
 +
 +Note: If a player is in the vehicle, it will only sound briefly.</code>
 +==== _SET_VEHICLE_SILENT ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_SILENT(Vehicle vehicle, BOOL toggle) // 0x9D44FCCE98450843 0x968E5770 b323</code>
 +
 +<code>If set to TRUE, it seems to suppress door noises and doesn't allow the horn to be continuous.
 +
 +-Doesn't seem to suppress door noises for me, at least with the vehicle add-on I tried</code>
 +==== SET_VEHICLE_HAS_STRONG_AXLES ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HAS_STRONG_AXLES(Vehicle vehicle, BOOL toggle) // 0x92F0CF722BC4202F 0x0D1CBC65 b323</code>
 +
 +<code>if true, axles won't bend.</code>
 +==== GET_DISPLAY_NAME_FROM_VEHICLE_MODEL ====
 +<code cpp>const char* VEHICLE::GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(Hash modelHash) // 0xB215AAC32D25D019 0xEC86DF39 b323</code>
 +
 +<code>Returns model name of vehicle in all caps. Needs to be displayed through localizing text natives to get proper display name.
 +-----------------------------------------------------------------------------------------------------------------------------------------
 +While often the case, this does not simply return the model name of the vehicle (which could be hashed to return the model hash). Variations of the same vehicle may also use the same display name.
 +-----------------------------------------------------------------------------------------------------------------------------------------
 +
 +Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.
 +
 +Using HUD::_GET_LABEL_TEXT, you can get the localized name.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== _GET_MAKE_NAME_FROM_VEHICLE_MODEL ====
 +<code cpp>const char* VEHICLE::_GET_MAKE_NAME_FROM_VEHICLE_MODEL(Hash modelHash) // 0xF7AF4F159FF99F97  b1868</code>
 +
 +<code>Will return a vehicle's manufacturer display label.
 +Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_DEFORMATION_AT_POS ====
 +<code cpp>Vector3 VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(Vehicle vehicle, float offsetX, float offsetY, float offsetZ) // 0x4EC6CFBC7B2E9536 0xABF02075 b323</code>
 +
 +<code>The only example I can find of this function in the scripts, is this:
 +
 +struct _s = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(rPtr((A_0) + 4), 1.21f, 6.15f, 0.3f);
 +
 +-----------------------------------------------------------------------------------------------------------------------------------------
 +PC scripts:
 +
 +v_5/*{3}*/ = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(a_0._f1, 1.21, 6.15, 0.3);</code>
 +==== SET_VEHICLE_LIVERY ====
 +<code cpp>void VEHICLE::SET_VEHICLE_LIVERY(Vehicle vehicle, int livery) // 0x60BF608F1B8CD1B6 0x7AD87059 b323</code>
 +
 +==== GET_VEHICLE_LIVERY ====
 +<code cpp>int VEHICLE::GET_VEHICLE_LIVERY(Vehicle vehicle) // 0x2BB9230590DA5E8A 0xEC82A51D b323</code>
 +
 +<code>-1 = no livery</code>
 +==== GET_VEHICLE_LIVERY_COUNT ====
 +<code cpp>int VEHICLE::GET_VEHICLE_LIVERY_COUNT(Vehicle vehicle) // 0x87B63E25A529D526 0xFB0CA947 b323</code>
 +
 +<code>Returns -1 if the vehicle has no livery</code>
 +==== _SET_VEHICLE_ROOF_LIVERY ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_ROOF_LIVERY(Vehicle vehicle, int livery) // 0xA6D3A8750DC73270  b505</code>
 +
 +<code>Used to set the tornado custom (convertible) rooftop livery.
 +
 +Livery value that works for tornado custom is between 0 and 9 from what i can tell. Maybe 0-8 even.
 +
 +Might work on other custom vehicles but im not sure what those might be, only confirmed it working with the tornado custom.</code>
 +==== _GET_VEHICLE_ROOF_LIVERY ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_ROOF_LIVERY(Vehicle vehicle) // 0x60190048C0764A26  b505</code>
 +
 +<code>Returns index of the current vehicle's rooftop livery. A getter for _SET_VEHICLE_ROOF_LIVERY.</code>
 +==== _GET_VEHICLE_ROOF_LIVERY_COUNT ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_ROOF_LIVERY_COUNT(Vehicle vehicle) // 0x5ECB40269053C0D4  b505</code>
 +
 +<code>Returns a number of available rooftop liveries, or -1 if vehicle has no rooftop liveries available.</code>
 +==== IS_VEHICLE_WINDOW_INTACT ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_WINDOW_INTACT(Vehicle vehicle, int windowIndex) // 0x46E571A0E20D01F1 0xAC4EF23D b323</code>
 +
 +<code>This will return false if the window is broken, or rolled down.
 +Window indexes:
 +0 = Front Right Window
 +1 = Front Left Window
 +2 = Back Right Window
 +3 = Back Left Window
 +
 +
 +Those numbers go on for vehicles that have more than 4 doors with windows.</code>
 +==== ARE_ALL_VEHICLE_WINDOWS_INTACT ====
 +<code cpp>BOOL VEHICLE::ARE_ALL_VEHICLE_WINDOWS_INTACT(Vehicle vehicle) // 0x11D862A3E977A9EF 0xBB619744 b323</code>
 +
 +<code>Appears to return false if any window is broken.</code>
 +==== ARE_ANY_VEHICLE_SEATS_FREE ====
 +<code cpp>BOOL VEHICLE::ARE_ANY_VEHICLE_SEATS_FREE(Vehicle vehicle) // 0x2D34FC3BC4ADB780 0x648E685A b323</code>
 +
 +<code>Returns false if every seat is occupied.</code>
 +==== RESET_VEHICLE_WHEELS ====
 +<code cpp>void VEHICLE::RESET_VEHICLE_WHEELS(Vehicle vehicle, BOOL toggle) // 0x21D2E5662C1F6FED 0xD5FFE779 b323</code>
 +
 +==== IS_HELI_PART_BROKEN ====
 +<code cpp>BOOL VEHICLE::IS_HELI_PART_BROKEN(Vehicle vehicle, BOOL p1, BOOL p2, BOOL p3) // 0xBC74B4BE25EB6C8A 0xF4E4C439 b323</code>
 +
 +==== GET_HELI_MAIN_ROTOR_HEALTH ====
 +<code cpp>float VEHICLE::GET_HELI_MAIN_ROTOR_HEALTH(Vehicle vehicle) // 0xE4CB7541F413D2C5 0xF01E2AAB b323</code>
 +
 +<code>Max 1000.
 +At 0 the main rotor will stall.</code>
 +==== GET_HELI_TAIL_ROTOR_HEALTH ====
 +<code cpp>float VEHICLE::GET_HELI_TAIL_ROTOR_HEALTH(Vehicle vehicle) // 0xAE8CE82A4219AC8C 0xA41BC13D b323</code>
 +
 +<code>Max 1000.
 +At 0 the tail rotor will stall.</code>
 +==== GET_HELI_TAIL_BOOM_HEALTH ====
 +<code cpp>float VEHICLE::GET_HELI_TAIL_BOOM_HEALTH(Vehicle vehicle) // 0xAC51915D27E4A5F7 0x8A68388F b323</code>
 +
 +<code>Max 1000.
 +At -100 both helicopter rotors will stall.</code>
 +==== _0x4056EA1105F5ABD7 ====
 +<code cpp>void VEHICLE::_0x4056EA1105F5ABD7(Any p0, Any p1) // 0x4056EA1105F5ABD7  b463</code>
 +
 +==== _SET_HELI_TAIL_ROTOR_HEALTH ====
 +<code cpp>void VEHICLE::_SET_HELI_TAIL_ROTOR_HEALTH(Vehicle vehicle, float health) // 0xFE205F38AAA58E5B  b463</code>
 +
 +==== SET_HELI_TAIL_EXPLODE_THROW_DASHBOARD ====
 +<code cpp>void VEHICLE::SET_HELI_TAIL_EXPLODE_THROW_DASHBOARD(Vehicle vehicle, BOOL p1) // 0x3EC8BF18AA453FE9 0x2916D69B b323</code>
 +
 +==== SET_VEHICLE_NAME_DEBUG ====
 +<code cpp>void VEHICLE::SET_VEHICLE_NAME_DEBUG(Vehicle vehicle, const char* name) // 0xBFDF984E2C22B94F 0xA712FF5C b323</code>
 +
 +<code>NOTE: Debugging functions are not present in the retail version of the game.</code>
 +==== SET_VEHICLE_EXPLODES_ON_HIGH_EXPLOSION_DAMAGE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_EXPLODES_ON_HIGH_EXPLOSION_DAMAGE(Vehicle vehicle, BOOL toggle) // 0x71B0892EC081D60A 0x38CC692B b323</code>
 +
 +<code>Sets a vehicle to be strongly resistant to explosions. p0 is the vehicle; set p1 to false to toggle the effect on/off.</code>
 +==== _0xD565F438137F0E10 ====
 +<code cpp>void VEHICLE::_0xD565F438137F0E10(Any p0, Any p1) // 0xD565F438137F0E10  b1103</code>
 +
 +==== _0x3441CAD2F2231923 ====
 +<code cpp>void VEHICLE::_0x3441CAD2F2231923(Vehicle vehicle, BOOL p1) // 0x3441CAD2F2231923 0xC306A9A3 b323</code>
 +
 +==== SET_VEHICLE_DISABLE_TOWING ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DISABLE_TOWING(Vehicle vehicle, BOOL toggle) // 0x2B6747FAA9DB9D6B 0x95A9ACCB b323</code>
 +
 +==== _DOES_VEHICLE_HAVE_LANDING_GEAR ====
 +<code cpp>BOOL VEHICLE::_DOES_VEHICLE_HAVE_LANDING_GEAR(Vehicle vehicle) // 0xE43701C36CAFF1A4  b1180</code>
 +
 +==== CONTROL_LANDING_GEAR ====
 +<code cpp>void VEHICLE::CONTROL_LANDING_GEAR(Vehicle vehicle, int state) // 0xCFC8BE9A5E1FE575 0x24F873FB b323</code>
 +
 +<code>Works for vehicles with a retractable landing gear
 +
 +landing gear states:
 +
 +0: Deployed
 +1: Closing
 +2: Opening
 +3: Retracted
 +
 +what can I use to make the hydra thing forward?</code>
 +==== GET_LANDING_GEAR_STATE ====
 +<code cpp>int VEHICLE::GET_LANDING_GEAR_STATE(Vehicle vehicle) // 0x9B0F3DCA3DB0F4CD 0xA6F02670 b323</code>
 +
 +<code>Landing gear states:
 +
 +0: Deployed
 +1: Closing (Retracting)
 +2:(Landing gear state 2 is never used.)
 +3: Opening (Deploying)
 +4: Retracted
 +
 +Returns the current state of the vehicles landing gear.</code>
 +==== IS_ANY_VEHICLE_NEAR_POINT ====
 +<code cpp>BOOL VEHICLE::IS_ANY_VEHICLE_NEAR_POINT(float x, float y, float z, float radius) // 0x61E1DD6125A3EEE6 0x2867A834 b323</code>
 +
 +==== REQUEST_VEHICLE_HIGH_DETAIL_MODEL ====
 +<code cpp>void VEHICLE::REQUEST_VEHICLE_HIGH_DETAIL_MODEL(Vehicle vehicle) // 0xA6E9FDCB2C76785E 0x9DA21956 b323</code>
 +
 +==== REMOVE_VEHICLE_HIGH_DETAIL_MODEL ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_HIGH_DETAIL_MODEL(Vehicle vehicle) // 0x00689CDE5F7C6787 0x382BE070 b323</code>
 +
 +==== IS_VEHICLE_HIGH_DETAIL ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_HIGH_DETAIL(Vehicle vehicle) // 0x1F25887F3C104278 0x55D41928 b323</code>
 +
 +==== REQUEST_VEHICLE_ASSET ====
 +<code cpp>void VEHICLE::REQUEST_VEHICLE_ASSET(Hash vehicleHash, int vehicleAsset) // 0x81A15811460FAB3A 0x902B4F06 b323</code>
 +
 +<code>REQUEST_VEHICLE_ASSET(GET_HASH_KEY(cargobob3), 3);
 +
 +vehicle found that have asset's:
 +cargobob3
 +submersible
 +blazer</code>
 +==== HAS_VEHICLE_ASSET_LOADED ====
 +<code cpp>BOOL VEHICLE::HAS_VEHICLE_ASSET_LOADED(int vehicleAsset) // 0x1BBE0523B8DB9A21 0x8DAAC3CB b323</code>
 +
 +==== REMOVE_VEHICLE_ASSET ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_ASSET(int vehicleAsset) // 0xACE699C71AB9DEB5 0x9620E9C6 b323</code>
 +
 +==== SET_VEHICLE_TOW_TRUCK_ARM_POSITION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TOW_TRUCK_ARM_POSITION(Vehicle vehicle, float position) // 0xFE54B92A344583CA 0x88236E22 b323</code>
 +
 +<code>Sets how much the crane on the tow truck is raised, where 0.0 is fully lowered and 1.0 is fully raised.</code>
 +==== ATTACH_VEHICLE_TO_TOW_TRUCK ====
 +<code cpp>void VEHICLE::ATTACH_VEHICLE_TO_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle, BOOL rear, float hookOffsetX, float hookOffsetY, float hookOffsetZ) // 0x29A16F8D621C4508 0x8151571A b323</code>
 +
 +<code>HookOffset defines where the hook is attached. leave at 0 for default attachment.</code>
 +==== DETACH_VEHICLE_FROM_TOW_TRUCK ====
 +<code cpp>void VEHICLE::DETACH_VEHICLE_FROM_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle) // 0xC2DB6B6708350ED8 0xC666CF33 b323</code>
 +
 +<code>First two parameters swapped. Scripts verify that towTruck is the first parameter, not the second.</code>
 +==== DETACH_VEHICLE_FROM_ANY_TOW_TRUCK ====
 +<code cpp>BOOL VEHICLE::DETACH_VEHICLE_FROM_ANY_TOW_TRUCK(Vehicle vehicle) // 0xD0E9CE05A1E68CD8 0x3BF93651 b323</code>
 +
 +==== IS_VEHICLE_ATTACHED_TO_TOW_TRUCK ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_ATTACHED_TO_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle) // 0x146DF9EC4C4B9FD4 0x9699CFDC b323</code>
 +
 +<code>Scripts verify that towTruck is the first parameter, not the second.</code>
 +==== GET_ENTITY_ATTACHED_TO_TOW_TRUCK ====
 +<code cpp>Entity VEHICLE::GET_ENTITY_ATTACHED_TO_TOW_TRUCK(Vehicle towTruck) // 0xEFEA18DCF10F8F75 0x11EC7844 b323</code>
 +
 +==== SET_VEHICLE_AUTOMATICALLY_ATTACHES ====
 +<code cpp>Any VEHICLE::SET_VEHICLE_AUTOMATICALLY_ATTACHES(Vehicle vehicle, BOOL p1, Any p2) // 0x8BA6F76BC53A1493 0x4273A8D3 b323</code>
 +
 +==== SET_VEHICLE_BULLDOZER_ARM_POSITION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_BULLDOZER_ARM_POSITION(Vehicle vehicle, float position, BOOL p2) // 0xF8EBCCC96ADB9FB7 0xED23C8A3 b323</code>
 +
 +<code>Sets the arm position of a bulldozer. Position must be a value between 0.0 and 1.0. Ignored when `p2` is set to false, instead incrementing arm position by 0.1 (or 10%).</code>
 +==== SET_VEHICLE_TANK_TURRET_POSITION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TANK_TURRET_POSITION(Vehicle vehicle, float position, BOOL p2) // 0x56B94C6D7127DFBA 0xB1A52EF7 b323</code>
 +
 +==== _0x0581730AB9380412 ====
 +<code cpp>void VEHICLE::_0x0581730AB9380412(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0x0581730AB9380412  b1103</code>
 +
 +==== _0x737E398138550FFF ====
 +<code cpp>void VEHICLE::_0x737E398138550FFF(Any p0, Any p1) // 0x737E398138550FFF  b944</code>
 +
 +==== SET_VEHICLE_TURRET_SPEED_THIS_FRAME ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TURRET_SPEED_THIS_FRAME(Vehicle vehicle, float speed) // 0x1093408B4B9D1146 0xF30C566F b323</code>
 +
 +==== _DISABLE_VEHICLE_TURRET_MOVEMENT_THIS_FRAME ====
 +<code cpp>void VEHICLE::_DISABLE_VEHICLE_TURRET_MOVEMENT_THIS_FRAME(Vehicle vehicle) // 0x32CAEDF24A583345  b463</code>
 +
 +==== SET_VEHICLE_FLIGHT_NOZZLE_POSITION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FLIGHT_NOZZLE_POSITION(Vehicle vehicle, float angleRatio) // 0x30D779DE7C4F6DD3 0xA7DF64D7 b323</code>
 +
 +==== SET_VEHICLE_FLIGHT_NOZZLE_POSITION_IMMEDIATE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FLIGHT_NOZZLE_POSITION_IMMEDIATE(Vehicle vehicle, float angle) // 0x9AA47FFF660CB932 0xDD7936F5 b323</code>
 +
 +==== _GET_VEHICLE_FLIGHT_NOZZLE_POSITION ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_FLIGHT_NOZZLE_POSITION(Vehicle plane) // 0xDA62027C8BDB326E  b1180</code>
 +
 +==== _SET_DISABLE_VEHICLE_FLIGHT_NOZZLE_POSITION ====
 +<code cpp>void VEHICLE::_SET_DISABLE_VEHICLE_FLIGHT_NOZZLE_POSITION(Vehicle vehicle, BOOL toggle) // 0xCE2B43770B655F8F  b1290</code>
 +
 +<code>True stops vtols from switching modes. Doesn't stop the sound though.</code>
 +==== _0xA4822F1CF23F4810 ====
 +<code cpp>BOOL VEHICLE::_0xA4822F1CF23F4810(Vector3* outVec, Any p1, Vector3* outVec1, Any p3, Any p4, Any p5, Any p6, Any p7, Any p8) // 0xA4822F1CF23F4810 0x34E02FCD b323</code>
 +
 +==== SET_VEHICLE_BURNOUT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_BURNOUT(Vehicle vehicle, BOOL toggle) // 0xFB8794444A7D60FB 0x9B6EF0EA b323</code>
 +
 +<code>On accelerating, spins the driven wheels with the others braked, so you don't go anywhere.</code>
 +==== IS_VEHICLE_IN_BURNOUT ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_IN_BURNOUT(Vehicle vehicle) // 0x1297A88E081430EB 0x6632BC12 b323</code>
 +
 +<code>Returns whether the specified vehicle is currently in a burnout.
 +
 +
 +vb.net
 +Public Function isVehicleInBurnout(vh As Vehicle) As Boolean
 +        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_IN_BURNOUT, vh)
 +    End Function</code>
 +==== SET_VEHICLE_REDUCE_GRIP ====
 +<code cpp>void VEHICLE::SET_VEHICLE_REDUCE_GRIP(Vehicle vehicle, BOOL toggle) // 0x222FF6A823D122E2 0x90D3A0D9 b323</code>
 +
 +<code>Reduces grip significantly so it's hard to go anywhere.</code>
 +==== _SET_VEHICLE_REDUCE_TRACTION ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_REDUCE_TRACTION(Vehicle vehicle, int val) // 0x6DEE944E1EE90CFB  b1604</code>
 +
 +<code>val is 0-3
 +Often used in conjunction with: SET_VEHICLE_REDUCE_GRIP</code>
 +==== SET_VEHICLE_INDICATOR_LIGHTS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_INDICATOR_LIGHTS(Vehicle vehicle, int turnSignal, BOOL toggle) // 0xB5D45264751B7DF0 0xA6073B5D b323</code>
 +
 +<code>Sets the turn signal enabled for a vehicle.
 +Set turnSignal to 1 for left light, 0 for right light.</code>
 +==== SET_VEHICLE_BRAKE_LIGHTS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_BRAKE_LIGHTS(Vehicle vehicle, BOOL toggle) // 0x92B35082E0B42F66 0x6D9BA11E b323</code>
 +
 +==== SET_VEHICLE_HANDBRAKE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HANDBRAKE(Vehicle vehicle, BOOL toggle) // 0x684785568EF26A22 0xBA729A25 b323</code>
 +
 +==== SET_VEHICLE_BRAKE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_BRAKE(Vehicle vehicle, BOOL toggle) // 0xE4E2FD323574965C 0x5A36BC37 b757</code>
 +
 +==== INSTANTLY_FILL_VEHICLE_POPULATION ====
 +<code cpp>void VEHICLE::INSTANTLY_FILL_VEHICLE_POPULATION() // 0x48ADC8A773564670 0x37BC6ACB b323</code>
 +
 +==== _HAS_FILLED_VEHICLE_POPULATION ====
 +<code cpp>BOOL VEHICLE::_HAS_FILLED_VEHICLE_POPULATION() // 0x91D6DD290888CBAB 0x71D898EF b323</code>
 +
 +<code>HAS_*</code>
 +==== _0x51DB102F4A3BA5E0 ====
 +<code cpp>void VEHICLE::_0x51DB102F4A3BA5E0(BOOL toggle) // 0x51DB102F4A3BA5E0 0x0B0523B0 b323</code>
 +
 +==== _0xA4A9A4C40E615885 ====
 +<code cpp>void VEHICLE::_0xA4A9A4C40E615885(int p0) // 0xA4A9A4C40E615885  b1604</code>
 +
 +<code>Default:1000||This sets a value which is used when _0x51db102f4a3ba5e0(true) is called each frame.</code>
 +==== GET_VEHICLE_TRAILER_VEHICLE ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_TRAILER_VEHICLE(Vehicle vehicle, Vehicle* trailer) // 0x1CDD6BADC297830D 0xAE84D758 b323</code>
 +
 +<code>Gets the trailer of a vehicle and puts it into the trailer parameter.</code>
 +==== SET_VEHICLE_USES_LARGE_REAR_RAMP ====
 +<code cpp>void VEHICLE::SET_VEHICLE_USES_LARGE_REAR_RAMP(Vehicle vehicle, BOOL toggle) // 0xCAC66558B944DA67 0x0B200CE2 b323</code>
 +
 +<code>vehicle must be a plane</code>
 +==== SET_VEHICLE_RUDDER_BROKEN ====
 +<code cpp>void VEHICLE::SET_VEHICLE_RUDDER_BROKEN(Vehicle vehicle, BOOL toggle) // 0x09606148B6C71DEF 0x3FAC3CD4 b323</code>
 +
 +==== SET_CONVERTIBLE_ROOF_LATCH_STATE ====
 +<code cpp>void VEHICLE::SET_CONVERTIBLE_ROOF_LATCH_STATE(Vehicle vehicle, BOOL state) // 0x1A78AD3D8240536F 0x0858678C b323</code>
 +
 +==== GET_VEHICLE_ESTIMATED_MAX_SPEED ====
 +<code cpp>float VEHICLE::GET_VEHICLE_ESTIMATED_MAX_SPEED(Vehicle vehicle) // 0x53AF99BAA671CA47 0x7D1A0616 b323</code>
 +
 +==== GET_VEHICLE_MAX_BRAKING ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MAX_BRAKING(Vehicle vehicle) // 0xAD7E85FC227197C4 0x03B926F6 b323</code>
 +
 +==== GET_VEHICLE_MAX_TRACTION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MAX_TRACTION(Vehicle vehicle) // 0xA132FB5370554DB0 0x7E5A1587 b323</code>
 +
 +==== GET_VEHICLE_ACCELERATION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_ACCELERATION(Vehicle vehicle) // 0x5DD35C8D074E57AE 0x00478321 b323</code>
 +
 +<code>static - max acceleration</code>
 +==== GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED(Hash modelHash) // 0xF417C2502FFFED43 0x8F291C4A b323</code>
 +
 +<code>Returns max speed (without mods) of the specified vehicle model in m/s.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_MODEL_MAX_BRAKING ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MODEL_MAX_BRAKING(Hash modelHash) // 0xDC53FD41B4ED944C 0x7EF02883 b323</code>
 +
 +<code>Returns max braking of the specified vehicle model.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_MODEL_MAX_BRAKING_MAX_MODS ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MODEL_MAX_BRAKING_MAX_MODS(Hash modelHash) // 0xBFBA3BA79CFF7EBF 0xF3A7293F b323</code>
 +
 +<code>Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_MODEL_MAX_TRACTION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MODEL_MAX_TRACTION(Hash modelHash) // 0x539DE94D44FDFD0D 0x7F985597 b323</code>
 +
 +<code>Returns max traction of the specified vehicle model.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_MODEL_ACCELERATION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MODEL_ACCELERATION(Hash modelHash) // 0x8C044C5C84505B6A 0x29CB3537 b323</code>
 +
 +<code>Returns the acceleration of the specified model.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== _GET_VEHICLE_MODEL_ESTIMATED_AGILITY ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_MODEL_ESTIMATED_AGILITY(Hash modelHash) // 0x53409B5163D5B846 0x37FBA7BC b323</code>
 +
 +<code>GET_VEHICLE_MODEL_*
 +
 +9.8 * thrust if air vehicle, else 0.38 + drive force?
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== _GET_VEHICLE_MODEL_MAX_KNOTS ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_MODEL_MAX_KNOTS(Hash modelHash) // 0xC6AD107DDC9054CC 0x95BB67EB b323</code>
 +
 +<code>GET_VEHICLE_MODEL_*
 +
 +Function pertains only to aviation vehicles.
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== _GET_VEHICLE_MODEL_MOVE_RESISTANCE ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_MODEL_MOVE_RESISTANCE(Hash modelHash) // 0x5AA3F878A178C4FC 0x87C5D271 b323</code>
 +
 +<code>GET_VEHICLE_MODEL_*
 +
 +called if the vehicle is a boat -- returns vecMoveResistanceX?
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== GET_VEHICLE_CLASS_ESTIMATED_MAX_SPEED ====
 +<code cpp>float VEHICLE::GET_VEHICLE_CLASS_ESTIMATED_MAX_SPEED(int vehicleClass) // 0x00C09F246ABEDD82 0xCE67162C b323</code>
 +
 +==== GET_VEHICLE_CLASS_MAX_TRACTION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_CLASS_MAX_TRACTION(int vehicleClass) // 0xDBC86D85C5059461 0x5B4FDC16 b323</code>
 +
 +==== GET_VEHICLE_CLASS_MAX_AGILITY ====
 +<code cpp>float VEHICLE::GET_VEHICLE_CLASS_MAX_AGILITY(int vehicleClass) // 0x4F930AD022D6DE3B 0x45F2BD83 b323</code>
 +
 +==== GET_VEHICLE_CLASS_MAX_ACCELERATION ====
 +<code cpp>float VEHICLE::GET_VEHICLE_CLASS_MAX_ACCELERATION(int vehicleClass) // 0x2F83E7E45D9EA7AE 0x3E220A9B b323</code>
 +
 +==== GET_VEHICLE_CLASS_MAX_BRAKING ====
 +<code cpp>float VEHICLE::GET_VEHICLE_CLASS_MAX_BRAKING(int vehicleClass) // 0x4BF54C16EC8FEC03 0xD08CC1A5 b323</code>
 +
 +==== ADD_ROAD_NODE_SPEED_ZONE ====
 +<code cpp>int VEHICLE::ADD_ROAD_NODE_SPEED_ZONE(float x, float y, float z, float radius, float speed, BOOL p5) // 0x2CE544C68FB812A0 0xD6685803 b323</code>
 +
 +==== REMOVE_ROAD_NODE_SPEED_ZONE ====
 +<code cpp>BOOL VEHICLE::REMOVE_ROAD_NODE_SPEED_ZONE(int speedzone) // 0x1033371FC8E842A7 0x0C0332A6 b323</code>
 +
 +==== OPEN_BOMB_BAY_DOORS ====
 +<code cpp>void VEHICLE::OPEN_BOMB_BAY_DOORS(Vehicle vehicle) // 0x87E7F24270732CB1 0x6574041D b323</code>
 +
 +==== CLOSE_BOMB_BAY_DOORS ====
 +<code cpp>void VEHICLE::CLOSE_BOMB_BAY_DOORS(Vehicle vehicle) // 0x3556041742A0DC74 0xF8EC5751 b323</code>
 +
 +==== _ARE_BOMB_BAY_DOORS_OPEN ====
 +<code cpp>BOOL VEHICLE::_ARE_BOMB_BAY_DOORS_OPEN(Vehicle aircraft) // 0xD0917A423314BBA8  b1180</code>
 +
 +<code>Returns true when the bomb bay doors of this plane are open. False if they're closed.</code>
 +==== IS_VEHICLE_SEARCHLIGHT_ON ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_SEARCHLIGHT_ON(Vehicle vehicle) // 0xC0F97FCE55094987 0xADAF3513 b323</code>
 +
 +<code>Possibly: Returns whether the searchlight (found on police vehicles) is toggled on.
 +
 +@Author Nac</code>
 +==== SET_VEHICLE_SEARCHLIGHT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_SEARCHLIGHT(Vehicle heli, BOOL toggle, BOOL canBeUsedByAI) // 0x14E85C5EE7A4D542 0xE2C0DD8A b323</code>
 +
 +<code>Only works during nighttime.</code>
 +==== _DOES_VEHICLE_HAVE_SEARCHLIGHT ====
 +<code cpp>BOOL VEHICLE::_DOES_VEHICLE_HAVE_SEARCHLIGHT(Vehicle vehicle) // 0x99015ED7DBEA5113  b2189</code>
 +
 +==== _IS_VEHICLE_SEAT_ACCESSIBLE ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_SEAT_ACCESSIBLE(Ped ped, Vehicle vehicle, int seatIndex, BOOL side, BOOL onEnter) // 0x639431E895B9AA57 0xAB0E79EB b323</code>
 +
 +<code>Check if a vehicle seat is accessible. If you park your vehicle near a wall and the ped cannot enter/exit this side, the return value toggles from true (not blocked) to false (blocked).
 +
 +seatIndex  = -1 being the driver seat.
 +Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.
 +side = only relevant for bikes/motorcycles to check if the left (false)/right (true) side is blocked.
 +onEnter = check if you can enter (true) or exit (false) a vehicle.</code>
 +==== _GET_ENTRY_POSITION_OF_DOOR ====
 +<code cpp>Vector3 VEHICLE::_GET_ENTRY_POSITION_OF_DOOR(Vehicle vehicle, int doorIndex) // 0xC0572928C0ABFDA3  b944</code>
 +
 +==== CAN_SHUFFLE_SEAT ====
 +<code cpp>BOOL VEHICLE::CAN_SHUFFLE_SEAT(Vehicle vehicle, int seatIndex) // 0x30785D90C956BF35 0xB3EB01ED b323</code>
 +
 +==== GET_NUM_MOD_KITS ====
 +<code cpp>int VEHICLE::GET_NUM_MOD_KITS(Vehicle vehicle) // 0x33F2E3FE70EAAE1D 0xE4903AA0 b323</code>
 +
 +==== SET_VEHICLE_MOD_KIT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_MOD_KIT(Vehicle vehicle, int modKit) // 0x1F2AA07F00B3217A 0xB8132158 b323</code>
 +
 +<code>Set modKit to 0 if you plan to call SET_VEHICLE_MOD. That's what the game does. Most body modifications through SET_VEHICLE_MOD will not take effect until this is set to 0.
 +
 +Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json</code>
 +==== GET_VEHICLE_MOD_KIT ====
 +<code cpp>int VEHICLE::GET_VEHICLE_MOD_KIT(Vehicle vehicle) // 0x6325D1A044AE510D 0x9FE60927 b323</code>
 +
 +==== GET_VEHICLE_MOD_KIT_TYPE ====
 +<code cpp>int VEHICLE::GET_VEHICLE_MOD_KIT_TYPE(Vehicle vehicle) // 0xFC058F5121E54C32 0xE5F76765 b323</code>
 +
 +==== GET_VEHICLE_WHEEL_TYPE ====
 +<code cpp>int VEHICLE::GET_VEHICLE_WHEEL_TYPE(Vehicle vehicle) // 0xB3ED1BFB4BE636DC 0xDA58D7AE b323</code>
 +
 +<code>Returns an int
 +
 +Wheel Types:
 +0: Sport
 +1: Muscle
 +2: Lowrider
 +3: SUV
 +4: Offroad
 +5: Tuner
 +6: Bike Wheels
 +7: High End
 +
 +Tested in Los Santos Customs</code>
 +==== SET_VEHICLE_WHEEL_TYPE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_WHEEL_TYPE(Vehicle vehicle, int WheelType) // 0x487EB21CC7295BA1 0x64BDAAAD b323</code>
 +
 +<code>0: Sport
 +1: Muscle
 +2: Lowrider
 +3: SUV
 +4: Offroad
 +5: Tuner
 +6: Bike Wheels
 +7: High End</code>
 +==== GET_NUM_MOD_COLORS ====
 +<code cpp>int VEHICLE::GET_NUM_MOD_COLORS(int paintType, BOOL p1) // 0xA551BE18C11A476D 0x73722CD9 b323</code>
 +
 +<code>paintType:
 +0: Normal
 +1: Metallic
 +2: Pearl
 +3: Matte
 +4: Metal
 +5: Chrome</code>
 +==== SET_VEHICLE_MOD_COLOR_1 ====
 +<code cpp>void VEHICLE::SET_VEHICLE_MOD_COLOR_1(Vehicle vehicle, int paintType, int color, int pearlescentColor) // 0x43FEB945EE7F85B8 0xCBE9A54D b323</code>
 +
 +<code>paintType:
 +0: Normal
 +1: Metallic
 +2: Pearl
 +3: Matte
 +4: Metal
 +5: Chrome
 +
 +color: number of the color.
 +
 +p3 seems to always be 0.
 +
 +Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json</code>
 +==== SET_VEHICLE_MOD_COLOR_2 ====
 +<code cpp>void VEHICLE::SET_VEHICLE_MOD_COLOR_2(Vehicle vehicle, int paintType, int color) // 0x816562BADFDEC83E 0xC32613C2 b323</code>
 +
 +<code>Changes the secondary paint type and color
 +paintType:
 +0: Normal
 +1: Metallic
 +2: Pearl
 +3: Matte
 +4: Metal
 +5: Chrome
 +
 +color: number of the color
 +
 +Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json</code>
 +==== GET_VEHICLE_MOD_COLOR_1 ====
 +<code cpp>void VEHICLE::GET_VEHICLE_MOD_COLOR_1(Vehicle vehicle, int* paintType, int* color, int* pearlescentColor) // 0xE8D65CA700C9A693 0xE625510A b323</code>
 +
 +==== GET_VEHICLE_MOD_COLOR_2 ====
 +<code cpp>void VEHICLE::GET_VEHICLE_MOD_COLOR_2(Vehicle vehicle, int* paintType, int* color) // 0x81592BE4E3878728 0x9B76BB8E b323</code>
 +
 +==== GET_VEHICLE_MOD_COLOR_1_NAME ====
 +<code cpp>const char* VEHICLE::GET_VEHICLE_MOD_COLOR_1_NAME(Vehicle vehicle, BOOL p1) // 0xB45085B721EFD38C 0x9A0840FD b323</code>
 +
 +<code>returns a string which is the codename of the vehicle's currently selected primary color
 +
 +p1 is always 0</code>
 +==== GET_VEHICLE_MOD_COLOR_2_NAME ====
 +<code cpp>const char* VEHICLE::GET_VEHICLE_MOD_COLOR_2_NAME(Vehicle vehicle) // 0x4967A516ED23A5A1 0x9BDC0B49 b323</code>
 +
 +<code>returns a string which is the codename of the vehicle's currently selected secondary color</code>
 +==== HAVE_VEHICLE_MODS_STREAMED_IN ====
 +<code cpp>BOOL VEHICLE::HAVE_VEHICLE_MODS_STREAMED_IN(Vehicle vehicle) // 0x9A83F5F9963775EF 0x112D637A b323</code>
 +
 +==== SET_VEHICLE_MOD ====
 +<code cpp>void VEHICLE::SET_VEHICLE_MOD(Vehicle vehicle, int modType, int modIndex, BOOL customTires) // 0x6AF0636DDEDCB6DD 0xB52E5ED5 b323</code>
 +
 +<code>In b944, there are 50 (0 - 49) mod types.
 +
 +Sets the vehicle mod.
 +The vehicle must have a mod kit first.
 +
 +Any out of range ModIndex is stock.
 +
 +#Mod Type
 +Spoilers - 0
 +Front Bumper - 1
 +Rear Bumper - 2
 +Side Skirt - 3
 +Exhaust - 4
 +Frame - 5
 +Grille - 6
 +Hood - 7
 +Fender - 8
 +Right Fender - 9
 +Roof - 10
 +Engine - 11
 +Brakes - 12
 +Transmission - 13
 +Horns - 14 (modIndex from 0 to 51)
 +Suspension - 15
 +Armor - 16
 +Front Wheels - 23
 +Back Wheels - 24 //only for motocycles
 +Plate holders - 25
 +Trim Design - 27
 +Ornaments - 28
 +Dial Design - 30
 +Steering Wheel - 33
 +Shifter Leavers - 34
 +Plaques - 35
 +Hydraulics - 38
 +Livery - 48
 +
 +ENUMS: pastebin.com/QzEAn02v</code>
 +==== GET_VEHICLE_MOD ====
 +<code cpp>int VEHICLE::GET_VEHICLE_MOD(Vehicle vehicle, int modType) // 0x772960298DA26FDB 0xDC520069 b323</code>
 +
 +<code>In b944, there are 50 (0 - 49) mod types.
 +
 +Returns -1 if the vehicle mod is stock</code>
 +==== GET_VEHICLE_MOD_VARIATION ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_MOD_VARIATION(Vehicle vehicle, int modType) // 0xB3924ECD70E095DC 0xC1B92003 b323</code>
 +
 +<code>Only used for wheels(ModType = 23/24) Returns true if the wheels are custom wheels</code>
 +==== GET_NUM_VEHICLE_MODS ====
 +<code cpp>int VEHICLE::GET_NUM_VEHICLE_MODS(Vehicle vehicle, int modType) // 0xE38E9162A2500646 0x8A814FF9 b323</code>
 +
 +<code>Returns how many possible mods a vehicle has for a given mod type</code>
 +==== REMOVE_VEHICLE_MOD ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_MOD(Vehicle vehicle, int modType) // 0x92D619E420858204 0x9CC80A43 b323</code>
 +
 +==== TOGGLE_VEHICLE_MOD ====
 +<code cpp>void VEHICLE::TOGGLE_VEHICLE_MOD(Vehicle vehicle, int modType, BOOL toggle) // 0x2A1F4F37F95BAD08 0xD095F811 b323</code>
 +
 +<code>Toggles:
 +UNK17 - 17
 +Turbo - 18
 +UNK19 - 19
 +Tire Smoke - 20
 +UNK21 - 21
 +Xenon Headlights - 22</code>
 +==== IS_TOGGLE_MOD_ON ====
 +<code cpp>BOOL VEHICLE::IS_TOGGLE_MOD_ON(Vehicle vehicle, int modType) // 0x84B233A8C8FC8AE7 0xF0E1689F b323</code>
 +
 +==== GET_MOD_TEXT_LABEL ====
 +<code cpp>const char* VEHICLE::GET_MOD_TEXT_LABEL(Vehicle vehicle, int modType, int modValue) // 0x8935624F8C5592CC 0x0BA39CA7 b323</code>
 +
 +<code>Returns the text label of a mod type for a given vehicle
 +
 +Use _GET_LABEL_TEXT to get the part name in the game's language</code>
 +==== GET_MOD_SLOT_NAME ====
 +<code cpp>const char* VEHICLE::GET_MOD_SLOT_NAME(Vehicle vehicle, int modType) // 0x51F0FEB9F6AE98C0 0x5E113483 b323</code>
 +
 +<code>Returns the name for the type of vehicle mod(Armour, engine etc)
 +</code>
 +==== GET_LIVERY_NAME ====
 +<code cpp>const char* VEHICLE::GET_LIVERY_NAME(Vehicle vehicle, int liveryIndex) // 0xB4C7A93837C91A1F 0xED80B5BE b323</code>
 +
 +<code>Second Param = LiveryIndex
 +
 +example 
 +
 +int count = VEHICLE::GET_VEHICLE_LIVERY_COUNT(veh);
 +for (int i = 0; i < count; i++)  
 +  {
 +     const char* LiveryName = VEHICLE::GET_LIVERY_NAME(veh, i);
 +  }
 +
 +
 +this example will work fine to fetch all names 
 +for example for Sanchez we get 
 +
 +SANC_LV1
 +SANC_LV2
 +SANC_LV3
 +SANC_LV4
 +SANC_LV5
 +
 +
 +Use _GET_LABEL_TEXT, to get the localized livery name.
 +
 +Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json</code>
 +==== GET_VEHICLE_MOD_MODIFIER_VALUE ====
 +<code cpp>float VEHICLE::GET_VEHICLE_MOD_MODIFIER_VALUE(Vehicle vehicle, int modType, int modIndex) // 0x90A38E9838E0A8C1 0x73AE5505 b323</code>
 +
 +==== GET_VEHICLE_MOD_IDENTIFIER_HASH ====
 +<code cpp>Hash VEHICLE::GET_VEHICLE_MOD_IDENTIFIER_HASH(Vehicle vehicle, int modType, int modIndex) // 0x4593CF82AA179706 0x94850968 b323</code>
 +
 +<code>Can be used for IS_DLC_VEHICLE_MOD and _0xC098810437312FFF</code>
 +==== PRELOAD_VEHICLE_MOD ====
 +<code cpp>void VEHICLE::PRELOAD_VEHICLE_MOD(Any p0, int modType, Any p2) // 0x758F49C24925568A 0x6EA5F4A8 b323</code>
 +
 +==== HAS_PRELOAD_MODS_FINISHED ====
 +<code cpp>BOOL VEHICLE::HAS_PRELOAD_MODS_FINISHED(Any p0) // 0x06F43E5175EB6D96 0xA8A0D246 b323</code>
 +
 +==== RELEASE_PRELOAD_MODS ====
 +<code cpp>void VEHICLE::RELEASE_PRELOAD_MODS(Vehicle vehicle) // 0x445D79F995508307 0xD442521F b323</code>
 +
 +==== SET_VEHICLE_TYRE_SMOKE_COLOR ====
 +<code cpp>void VEHICLE::SET_VEHICLE_TYRE_SMOKE_COLOR(Vehicle vehicle, int r, int g, int b) // 0xB5BA80F839791C0F 0x3EDEC0DB b323</code>
 +
 +<code>Sets the tire smoke's color of this vehicle.
 +
 +vehicle: The vehicle that is the target of this method.
 +r: The red level in the RGB color code.
 +g: The green level in the RGB color code.
 +b: The blue level in the RGB color code.
 +
 +Note:
 +setting r,g,b to 0 will give the car independance day tyre smoke</code>
 +==== GET_VEHICLE_TYRE_SMOKE_COLOR ====
 +<code cpp>void VEHICLE::GET_VEHICLE_TYRE_SMOKE_COLOR(Vehicle vehicle, int* r, int* g, int* b) // 0xB635392A4938B3C3 0x75280015 b323</code>
 +
 +==== SET_VEHICLE_WINDOW_TINT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_WINDOW_TINT(Vehicle vehicle, int tint) // 0x57C51E6BAD752696 0x497C8787 b323</code>
 +
 +<code>enum WindowTints
 +{
 + WINDOWTINT_NONE,
 +  WINDOWTINT_PURE_BLACK,
 +    WINDOWTINT_DARKSMOKE,
 + WINDOWTINT_LIGHTSMOKE,
 +    WINDOWTINT_STOCK,
 + WINDOWTINT_LIMO,
 +  WINDOWTINT_GREEN
 +};</code>
 +==== GET_VEHICLE_WINDOW_TINT ====
 +<code cpp>int VEHICLE::GET_VEHICLE_WINDOW_TINT(Vehicle vehicle) // 0x0EE21293DAD47C95 0x13D53892 b323</code>
 +
 +==== GET_NUM_VEHICLE_WINDOW_TINTS ====
 +<code cpp>int VEHICLE::GET_NUM_VEHICLE_WINDOW_TINTS() // 0x9D1224004B3A6707 0x625C7B66 b323</code>
 +
 +==== GET_VEHICLE_COLOR ====
 +<code cpp>void VEHICLE::GET_VEHICLE_COLOR(Vehicle vehicle, int* r, int* g, int* b) // 0xF3CC740D36221548 0x03BC8F1B b323</code>
 +
 +<code>What's this for? Primary and Secondary RGB have their own natives and this one doesn't seem specific.</code>
 +==== _0xEEBFC7A7EFDC35B4 ====
 +<code cpp>int VEHICLE::_0xEEBFC7A7EFDC35B4(Vehicle vehicle) // 0xEEBFC7A7EFDC35B4 0x749DEEA2 b323</code>
 +
 +<code>Some kind of flags.</code>
 +==== GET_VEHICLE_CAUSE_OF_DESTRUCTION ====
 +<code cpp>Hash VEHICLE::GET_VEHICLE_CAUSE_OF_DESTRUCTION(Vehicle vehicle) // 0xE495D1EF4C91FD20 0x7F8C20DD b323</code>
 +
 +<code>iVar3 = get_vehicle_cause_of_destruction(uLocal_248[iVar2]);
 +if (iVar3 == joaat("weapon_stickybomb"))
 +{
 + func_171(726);
 + iLocal_260 = 1;
 +}</code>
 +==== _0x5EE5632F47AE9695 ====
 +<code cpp>void VEHICLE::_0x5EE5632F47AE9695(Vehicle vehicle, float health) // 0x5EE5632F47AE9695  b463</code>
 +
 +<code>Sets some health value. Looks like it's used for helis.</code>
 +==== GET_IS_LEFT_VEHICLE_HEADLIGHT_DAMAGED ====
 +<code cpp>BOOL VEHICLE::GET_IS_LEFT_VEHICLE_HEADLIGHT_DAMAGED(Vehicle vehicle) // 0x5EF77C9ADD3B11A3 0xA0777943 b323</code>
 +
 +<code>From the driver's perspective, is the left headlight broken.</code>
 +==== GET_IS_RIGHT_VEHICLE_HEADLIGHT_DAMAGED ====
 +<code cpp>BOOL VEHICLE::GET_IS_RIGHT_VEHICLE_HEADLIGHT_DAMAGED(Vehicle vehicle) // 0xA7ECB73355EB2F20 0xF178390B b323</code>
 +
 +<code>From the driver's perspective, is the right headlight broken.</code>
 +==== _IS_VEHICLE_ENGINE_ON_FIRE ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_ENGINE_ON_FIRE(Vehicle vehicle) // 0xEC69ADF931AAE0C3  b505</code>
 +
 +<code>Only ever used once in decompiled scripts: **am_pi_menu**:
 +Returns true if the engine is on fire, or if the vehicle engine health is < 0 and it **has been** on fire.
 +
 +It sometimes doesn't return true when the vehicle engine has been on fire, and has since been fixed. I'm not really sure what the exact conditions are.
 +
 +This usually returns true even if there are no visible flames yet (engine health > 0). However if you monitor engine health you'll see that it starts decreasing as soon as this returns true.</code>
 +==== MODIFY_VEHICLE_TOP_SPEED ====
 +<code cpp>void VEHICLE::MODIFY_VEHICLE_TOP_SPEED(Vehicle vehicle, float value) // 0x93A3996368C94158 0xE943B09C b323</code>
 +
 +==== _SET_VEHICLE_MAX_SPEED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_MAX_SPEED(Vehicle vehicle, float speed) // 0xBAA045B4E42F3C06  b1103</code>
 +
 +<code>To reset the max speed, set the `speed` value to `0.0` or lower.</code>
 +==== _0x1CF38D529D7441D9 ====
 +<code cpp>void VEHICLE::_0x1CF38D529D7441D9(Vehicle vehicle, BOOL toggle) // 0x1CF38D529D7441D9 0xDF594D8D b323</code>
 +
 +<code>Has something to do with trains. Always precedes SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED.
 +May be true that it can be used with trains not sure, but not specifically for trains. Go find Xbox360 decompiled scripts and search for 'func_1333' in freemode.c it isn't used just for trains. Thanks for the info tho.</code>
 +==== _0x1F9FB66F3A3842D2 ====
 +<code cpp>void VEHICLE::_0x1F9FB66F3A3842D2(Vehicle vehicle, BOOL p1) // 0x1F9FB66F3A3842D2 0x4D840FC4 b323</code>
 +
 +==== _0x59C3757B3B7408E8 ====
 +<code cpp>void VEHICLE::_0x59C3757B3B7408E8(Vehicle vehicle, BOOL toggle, float p2) // 0x59C3757B3B7408E8  b1493</code>
 +
 +<code>Sets some bit and float of vehicle. float is >= 0
 +SET_VEHICLE_*</code>
 +==== ADD_VEHICLE_COMBAT_ANGLED_AVOIDANCE_AREA ====
 +<code cpp>Any VEHICLE::ADD_VEHICLE_COMBAT_ANGLED_AVOIDANCE_AREA(float p0, float p1, float p2, float p3, float p4, float p5, float p6) // 0x54B0F614960F4A5F 0x5AB26C2B b323</code>
 +
 +==== REMOVE_VEHICLE_COMBAT_AVOIDANCE_AREA ====
 +<code cpp>void VEHICLE::REMOVE_VEHICLE_COMBAT_AVOIDANCE_AREA(Any p0) // 0xE30524E1871F481D 0xEF05F807 b323</code>
 +
 +==== IS_ANY_PED_RAPPELLING_FROM_HELI ====
 +<code cpp>BOOL VEHICLE::IS_ANY_PED_RAPPELLING_FROM_HELI(Vehicle vehicle) // 0x291E373D483E7EE7 0xD656E7E5 b323</code>
 +
 +==== SET_VEHICLE_CHEAT_POWER_INCREASE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CHEAT_POWER_INCREASE(Vehicle vehicle, float value) // 0xB59E4BD37AE292DB 0x642DA5AA b323</code>
 +
 +<code><1.0 - Decreased torque
 +=1.0 - Default torque
 +>1.0 - Increased torque
 +
 +Negative values will cause the vehicle to go backwards instead of forwards while accelerating.
 +
 +value - is between 0.2 and 1.8 in the decompiled scripts. 
 +
 +This needs to be called every frame to take effect.</code>
 +==== _0x0AD9E8F87FF7C16F ====
 +<code cpp>void VEHICLE::_0x0AD9E8F87FF7C16F(Any p0, BOOL p1) // 0x0AD9E8F87FF7C16F 0x04F5546C b323</code>
 +
 +==== SET_VEHICLE_IS_WANTED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_IS_WANTED(Vehicle vehicle, BOOL state) // 0xF7EC25A3EBEEC726 0xDAA388E8 b323</code>
 +
 +<code>Sets the wanted state of this vehicle.
 +</code>
 +==== _SET_BOAT_BOOM_POSITION_RATIO ====
 +<code cpp>void VEHICLE::_SET_BOAT_BOOM_POSITION_RATIO(Vehicle vehicle, float ratio) // 0xF488C566413B4232 0xA25CCB8C b323</code>
 +
 +<code>Sets the boat boom position for the `TR3` trailer.
 +Ratio value is between `0.0` and `1.0`, where `0.0` is 90 degrees to the left of the boat, and `1.0` is just slightly to the right/back of the boat.
 +To get the current boom position ratio, use GET_BOAT_BOOM_POSITION_RATIO</code>
 +==== _GET_BOAT_BOOM_POSITION_RATIO_2 ====
 +<code cpp>void VEHICLE::_GET_BOAT_BOOM_POSITION_RATIO_2(Vehicle vehicle, BOOL p1) // 0xC1F981A6F74F0C23 0x00966934 b323</code>
 +
 +<code>Same call as VEHICLE::_0x0F3B4D4E43177236</code>
 +==== _GET_BOAT_BOOM_POSITION_RATIO_3 ====
 +<code cpp>void VEHICLE::_GET_BOAT_BOOM_POSITION_RATIO_3(Vehicle vehicle, BOOL p1) // 0x0F3B4D4E43177236 0x113DF5FD b323</code>
 +
 +==== GET_BOAT_BOOM_POSITION_RATIO ====
 +<code cpp>float VEHICLE::GET_BOAT_BOOM_POSITION_RATIO(Vehicle vehicle) // 0x6636C535F6CC2725 0x7C8D6464 b323</code>
 +
 +==== DISABLE_PLANE_AILERON ====
 +<code cpp>void VEHICLE::DISABLE_PLANE_AILERON(Vehicle vehicle, BOOL p1, BOOL p2) // 0x23428FC53C60919C 0x7E84C45C b323</code>
 +
 +==== GET_IS_VEHICLE_ENGINE_RUNNING ====
 +<code cpp>BOOL VEHICLE::GET_IS_VEHICLE_ENGINE_RUNNING(Vehicle vehicle) // 0xAE31E7DF9B5B132E 0x7DC6D022 b323</code>
 +
 +<code>Returns true when in a vehicle, false whilst entering/exiting.</code>
 +==== SET_VEHICLE_USE_ALTERNATE_HANDLING ====
 +<code cpp>void VEHICLE::SET_VEHICLE_USE_ALTERNATE_HANDLING(Vehicle vehicle, BOOL toggle) // 0x1D97D1E3A70A649F 0xA03E42DF b323</code>
 +
 +==== SET_BIKE_ON_STAND ====
 +<code cpp>void VEHICLE::SET_BIKE_ON_STAND(Vehicle vehicle, float x, float y) // 0x9CFA4896C3A53CBB 0x15D40761 b323</code>
 +
 +<code>Only works on bikes, both X and Y work in the -1 - 1 range.
 +
 +X forces the bike to turn left or right (-1, 1)
 +Y forces the bike to lean to the left or to the right (-1, 1)
 +
 +Example with X -1/Y 1
 +http://i.imgur.com/TgIuAPJ.jpg</code>
 +==== _0xAB04325045427AAE ====
 +<code cpp>void VEHICLE::_0xAB04325045427AAE(Vehicle vehicle, BOOL p1) // 0xAB04325045427AAE 0x1984F88D b323</code>
 +
 +==== _0xCFD778E7904C255E ====
 +<code cpp>void VEHICLE::_0xCFD778E7904C255E(Vehicle vehicle) // 0xCFD778E7904C255E 0x3FBE904F b323</code>
 +
 +<code>what does this do?</code>
 +==== SET_LAST_DRIVEN_VEHICLE ====
 +<code cpp>void VEHICLE::SET_LAST_DRIVEN_VEHICLE(Vehicle vehicle) // 0xACFB2463CC22BED2 0xD1B71A25 b323</code>
 +
 +==== GET_LAST_DRIVEN_VEHICLE ====
 +<code cpp>Vehicle VEHICLE::GET_LAST_DRIVEN_VEHICLE() // 0xB2D06FAEDE65B577 0xFEB0C0C8 b323</code>
 +
 +==== CLEAR_LAST_DRIVEN_VEHICLE ====
 +<code cpp>void VEHICLE::CLEAR_LAST_DRIVEN_VEHICLE() // 0xE01903C47C7AC89E 0x07186AD9 b323</code>
 +
 +==== SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG ====
 +<code cpp>void VEHICLE::SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG(Vehicle vehicle, BOOL toggle) // 0x02398B627547189C 0x08CD58F9 b323</code>
 +
 +==== SET_TASK_VEHICLE_GOTO_PLANE_MIN_HEIGHT_ABOVE_TERRAIN ====
 +<code cpp>void VEHICLE::SET_TASK_VEHICLE_GOTO_PLANE_MIN_HEIGHT_ABOVE_TERRAIN(Vehicle plane, int height) // 0xB893215D8D4C015B 0x8C4B63E2 b323</code>
 +
 +==== SET_VEHICLE_LOD_MULTIPLIER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_LOD_MULTIPLIER(Vehicle vehicle, float multiplier) // 0x93AE6A61BE015BF1 0x569E5AE3 b323</code>
 +
 +==== SET_VEHICLE_CAN_SAVE_IN_GARAGE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_SAVE_IN_GARAGE(Vehicle vehicle, BOOL toggle) // 0x428BACCDF5E26EAD 0x1604C2F5 b323</code>
 +
 +==== _GET_VEHICLE_NUMBER_OF_BROKEN_OFF_BONES ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_NUMBER_OF_BROKEN_OFF_BONES(Vehicle vehicle) // 0x42A4BEB35D372407 0x8CDB0C09 b323</code>
 +
 +<code>Also includes some "turnOffBones" when vehicle mods are installed.</code>
 +==== _GET_VEHICLE_NUMBER_OF_BROKEN_BONES ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_NUMBER_OF_BROKEN_BONES(Vehicle vehicle) // 0x2C8CBFE1EA5FC631 0xABC99E21 b323</code>
 +
 +==== _0x4D9D109F63FEE1D4 ====
 +<code cpp>void VEHICLE::_0x4D9D109F63FEE1D4(Any p0, BOOL p1) // 0x4D9D109F63FEE1D4 0x900C878C b323</code>
 +
 +==== _0x279D50DE5652D935 ====
 +<code cpp>void VEHICLE::_0x279D50DE5652D935(Vehicle vehicle, BOOL toggle) // 0x279D50DE5652D935 0xB3200F72 b323</code>
 +
 +<code>SET_VEHICLE_*</code>
 +==== COPY_VEHICLE_DAMAGES ====
 +<code cpp>void VEHICLE::COPY_VEHICLE_DAMAGES(Vehicle sourceVehicle, Vehicle targetVehicle) // 0xE44A982368A4AF23 0xBAE491C7 b323</code>
 +
 +<code>Copies sourceVehicle's damage (broken bumpers, broken lights, etc.) to targetVehicle.</code>
 +==== _0xF25E02CB9C5818F8 ====
 +<code cpp>void VEHICLE::_0xF25E02CB9C5818F8() // 0xF25E02CB9C5818F8 0xF0E59BC1 b323</code>
 +
 +==== SET_LIGHTS_CUTOFF_DISTANCE_TWEAK ====
 +<code cpp>void VEHICLE::SET_LIGHTS_CUTOFF_DISTANCE_TWEAK(float distance) // 0xBC3CCA5844452B06 0x929801C6 b323</code>
 +
 +==== SET_VEHICLE_SHOOT_AT_TARGET ====
 +<code cpp>void VEHICLE::SET_VEHICLE_SHOOT_AT_TARGET(Ped driver, Entity entity, float xTarget, float yTarget, float zTarget) // 0x74CD9A9327A282EA 0x2343FFDF b323</code>
 +
 +<code>Commands the driver of an armed vehicle (p0) to shoot its weapon at a target (p1). p3, p4 and p5 are the coordinates of the target. Example:
 +
 +WEAPON::SET_CURRENT_PED_VEHICLE_WEAPON(pilot,MISC::GET_HASH_KEY("VEHICLE_WEAPON_PLANE_ROCKET"));                        VEHICLE::SET_VEHICLE_SHOOT_AT_TARGET(pilot, target, targPos.x, targPos.y, targPos.z);</code>
 +==== GET_VEHICLE_LOCK_ON_TARGET ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_LOCK_ON_TARGET(Vehicle vehicle, Entity* entity) // 0x8F5EBAB1F260CFCE 0x4A557117 b323</code>
 +
 +==== SET_FORCE_HD_VEHICLE ====
 +<code cpp>void VEHICLE::SET_FORCE_HD_VEHICLE(Vehicle vehicle, BOOL toggle) // 0x97CE68CB032583F0 0xE0FC6A32 b323</code>
 +
 +==== _0x182F266C2D9E2BEB ====
 +<code cpp>void VEHICLE::_0x182F266C2D9E2BEB(Vehicle vehicle, float p1) // 0x182F266C2D9E2BEB 0x7D0DE7EA b323</code>
 +
 +==== GET_VEHICLE_PLATE_TYPE ====
 +<code cpp>int VEHICLE::GET_VEHICLE_PLATE_TYPE(Vehicle vehicle) // 0x9CCC9525BF2408E0 0x65CA9286 b323</code>
 +
 +==== TRACK_VEHICLE_VISIBILITY ====
 +<code cpp>void VEHICLE::TRACK_VEHICLE_VISIBILITY(Vehicle vehicle) // 0x64473AEFDCF47DCA 0x78122DC1 b323</code>
 +
 +<code>in script hook .net 
 +
 +Vehicle v = ...;
 +Function.Call(Hash.TRACK_VEHICLE_VISIBILITY, v.Handle);</code>
 +==== IS_VEHICLE_VISIBLE ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_VISIBLE(Vehicle vehicle) // 0xAA0A52D24FB98293 0x7E0D6056 b323</code>
 +
 +<code>must be called after TRACK_VEHICLE_VISIBILITY 
 +
 +it's not instant so probabilly must pass an 'update' to see correct result.</code>
 +==== SET_VEHICLE_GRAVITY ====
 +<code cpp>void VEHICLE::SET_VEHICLE_GRAVITY(Vehicle vehicle, BOOL toggle) // 0x89F149B6131E57DA 0x07B2A6DC b323</code>
 +
 +==== SET_ENABLE_VEHICLE_SLIPSTREAMING ====
 +<code cpp>void VEHICLE::SET_ENABLE_VEHICLE_SLIPSTREAMING(BOOL toggle) // 0xE6C0C80B8C867537 0xD2B8ACBD b323</code>
 +
 +<code>Enable/Disables global slipstream physics</code>
 +==== _0xF051D9BFB6BA39C0 ====
 +<code cpp>void VEHICLE::_0xF051D9BFB6BA39C0(Any p0) // 0xF051D9BFB6BA39C0  b877</code>
 +
 +==== _GET_VEHICLE_CURRENT_SLIPSTREAM_DRAFT ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_CURRENT_SLIPSTREAM_DRAFT(Vehicle vehicle) // 0x36492C2F0D134C56 0xA4A75FCF b323</code>
 +
 +<code>Returns a float value between 0.0 and 3.0 related to its slipstream draft (boost/speedup).
 +
 +GET_VEHICLE_*</code>
 +==== _IS_VEHICLE_SLIPSTREAM_LEADER ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_SLIPSTREAM_LEADER(Vehicle vehicle) // 0x48C633E94A8142A7  b877</code>
 +
 +<code>Returns true if the vehicle is being slipstreamed by another vehicle</code>
 +==== SET_VEHICLE_INACTIVE_DURING_PLAYBACK ====
 +<code cpp>void VEHICLE::SET_VEHICLE_INACTIVE_DURING_PLAYBACK(Vehicle vehicle, BOOL toggle) // 0x06582AFF74894C75 0x50F89338 b323</code>
 +
 +==== SET_VEHICLE_ACTIVE_DURING_PLAYBACK ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ACTIVE_DURING_PLAYBACK(Any p0, BOOL p1) // 0xDFFCEF48E511DB48 0xEB7D7C27 b323</code>
 +
 +==== IS_VEHICLE_SPRAYABLE ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_SPRAYABLE(Vehicle vehicle) // 0x8D474C8FAEFF6CDE 0x5EB00A6A b323</code>
 +
 +<code>Returns false if the vehicle has the FLAG_NO_RESPRAY flag set.</code>
 +==== SET_VEHICLE_ENGINE_CAN_DEGRADE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ENGINE_CAN_DEGRADE(Vehicle vehicle, BOOL toggle) // 0x983765856F2564F9 0x081DAC12 b323</code>
 +
 +==== _SET_VEHICLE_SHADOW_EFFECT ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_SHADOW_EFFECT(Vehicle vehicle, int p1, int p2) // 0xF0E4BA16D1DB546C 0x5BD8D82D b323</code>
 +
 +<code>Adds some kind of shadow to the vehicle.
 +
 +-1 disables the effect.
 +DISABLE_*</code>
 +==== _REMOVE_VEHICLE_SHADOW_EFFECT ====
 +<code cpp>void VEHICLE::_REMOVE_VEHICLE_SHADOW_EFFECT(Vehicle vehicle) // 0xF87D9F2301F7D206 0x450AD03A b323</code>
 +
 +<code>Remove the weird shadow applied by _SET_VEHICLE_SHADOW_EFFECT.
 +ENABLE_*</code>
 +==== IS_PLANE_LANDING_GEAR_INTACT ====
 +<code cpp>BOOL VEHICLE::IS_PLANE_LANDING_GEAR_INTACT(Vehicle plane) // 0x4198AB0022B15F87 0xBD085DCA b323</code>
 +
 +==== ARE_PLANE_PROPELLERS_INTACT ====
 +<code cpp>BOOL VEHICLE::ARE_PLANE_PROPELLERS_INTACT(Vehicle plane) // 0x755D6D5267CBBD7E 0xABBDD5C6 b323</code>
 +
 +==== _0x4C815EB175086F84 ====
 +<code cpp>Any VEHICLE::_0x4C815EB175086F84(Any p0, Any p1) // 0x4C815EB175086F84  b1103</code>
 +
 +==== SET_VEHICLE_CAN_DEFORM_WHEELS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_DEFORM_WHEELS(Vehicle vehicle, BOOL toggle) // 0x0CDDA42F9E360CA6 0x9B581DE7 b323</code>
 +
 +==== IS_VEHICLE_STOLEN ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_STOLEN(Vehicle vehicle) // 0x4AF9BD80EEBEB453 0x20B61DDE b323</code>
 +
 +==== SET_VEHICLE_IS_STOLEN ====
 +<code cpp>void VEHICLE::SET_VEHICLE_IS_STOLEN(Vehicle vehicle, BOOL isStolen) // 0x67B2C79AA7FF5738 0x70912E42 b323</code>
 +
 +==== SET_PLANE_TURBULENCE_MULTIPLIER ====
 +<code cpp>void VEHICLE::SET_PLANE_TURBULENCE_MULTIPLIER(Vehicle vehicle, float multiplier) // 0xAD2D28A1AFDFF131 0xED159AE6 b323</code>
 +
 +<code>This native sets the turbulence multiplier. It only works for planes.
 +0.0 = no turbulence at all.
 +1.0 = heavy turbulence.
 +Works by just calling it once, does not need to be called every tick.</code>
 +==== _ARE_PLANE_WINGS_INTACT ====
 +<code cpp>BOOL VEHICLE::_ARE_PLANE_WINGS_INTACT(Vehicle plane) // 0x5991A01434CE9677 0xAF8CB3DF b323</code>
 +
 +<code>ADD_A_MARKER_OVER_VEHICLE was a hash collision!!!
 +
 +Can be used for planes only!</code>
 +==== _0xB264C4D2F2B0A78B ====
 +<code cpp>void VEHICLE::_0xB264C4D2F2B0A78B(Vehicle vehicle) // 0xB264C4D2F2B0A78B 0x45F72495 b323</code>
 +
 +<code>This native doesn't seem to do anything, might be a debug-only native.
 +
 +Confirmed, it is a debug native.</code>
 +==== DETACH_VEHICLE_FROM_CARGOBOB ====
 +<code cpp>void VEHICLE::DETACH_VEHICLE_FROM_CARGOBOB(Vehicle vehicle, Vehicle cargobob) // 0x0E21D3DF1051399D 0x83D3D331 b323</code>
 +
 +==== DETACH_VEHICLE_FROM_ANY_CARGOBOB ====
 +<code cpp>BOOL VEHICLE::DETACH_VEHICLE_FROM_ANY_CARGOBOB(Vehicle vehicle) // 0xADF7BE450512C12F 0x50E0EABE b323</code>
 +
 +==== _DETACH_ENTITY_FROM_CARGOBOB ====
 +<code cpp>Any VEHICLE::_DETACH_ENTITY_FROM_CARGOBOB(Vehicle cargobob, Entity entity) // 0xAF03011701811146  b678</code>
 +
 +==== IS_VEHICLE_ATTACHED_TO_CARGOBOB ====
 +<code cpp>BOOL VEHICLE::IS_VEHICLE_ATTACHED_TO_CARGOBOB(Vehicle cargobob, Vehicle vehicleAttached) // 0xD40148F22E81A1D9 0x5DEEC76C b323</code>
 +
 +==== GET_VEHICLE_ATTACHED_TO_CARGOBOB ====
 +<code cpp>Vehicle VEHICLE::GET_VEHICLE_ATTACHED_TO_CARGOBOB(Vehicle cargobob) // 0x873B82D42AC2B9E5 0x301A1D24 b323</code>
 +
 +<code>Returns attached vehicle (Vehicle in parameter must be cargobob)</code>
 +==== _GET_ENTITY_ATTACHED_TO_CARGOBOB ====
 +<code cpp>Any VEHICLE::_GET_ENTITY_ATTACHED_TO_CARGOBOB(Any p0) // 0x99093F60746708CA  b1103</code>
 +
 +==== ATTACH_VEHICLE_TO_CARGOBOB ====
 +<code cpp>void VEHICLE::ATTACH_VEHICLE_TO_CARGOBOB(Vehicle vehicle, Vehicle cargobob, int p2, float x, float y, float z) // 0x4127F1D84E347769 0x607DC9D5 b323</code>
 +
 +==== _ATTACH_ENTITY_TO_CARGOBOB ====
 +<code cpp>void VEHICLE::_ATTACH_ENTITY_TO_CARGOBOB(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5) // 0xA1DD82F3CCF9A01E  b944</code>
 +
 +==== _SET_CARGOBOB_HOOK_CAN_DETACH ====
 +<code cpp>void VEHICLE::_SET_CARGOBOB_HOOK_CAN_DETACH(Vehicle cargobob, BOOL toggle) // 0x571FEB383F629926 0xAEB29F98 b323</code>
 +
 +<code>Stops cargobob from beeing able to detach the attached vehicle.</code>
 +==== _0x1F34B0626C594380 ====
 +<code cpp>void VEHICLE::_0x1F34B0626C594380(Any p0, Any p1) // 0x1F34B0626C594380  b757</code>
 +
 +==== _0x2C1D8B3B19E517CC ====
 +<code cpp>Any VEHICLE::_0x2C1D8B3B19E517CC(Any p0, Any p1) // 0x2C1D8B3B19E517CC  b757</code>
 +
 +==== _GET_CARGOBOB_HOOK_POSITION ====
 +<code cpp>Vector3 VEHICLE::_GET_CARGOBOB_HOOK_POSITION(Vehicle cargobob) // 0xCBDB9B923CACC92D  b323</code>
 +
 +<code>Gets the position of the cargobob hook, in world coords.</code>
 +==== DOES_CARGOBOB_HAVE_PICK_UP_ROPE ====
 +<code cpp>BOOL VEHICLE::DOES_CARGOBOB_HAVE_PICK_UP_ROPE(Vehicle cargobob) // 0x1821D91AD4B56108 0xAF769B81 b323</code>
 +
 +<code>Returns true only when the hook is active, will return false if the magnet is active</code>
 +==== CREATE_PICK_UP_ROPE_FOR_CARGOBOB ====
 +<code cpp>void VEHICLE::CREATE_PICK_UP_ROPE_FOR_CARGOBOB(Vehicle cargobob, int state) // 0x7BEB0C7A235F6F3B 0x4D3C9A99 b323</code>
 +
 +<code>Drops the Hook/Magnet on a cargobob
 +
 +state
 +enum eCargobobHook
 +{
 +  CARGOBOB_HOOK = 0,
 +    CARGOBOB_MAGNET = 1,
 +};</code>
 +==== REMOVE_PICK_UP_ROPE_FOR_CARGOBOB ====
 +<code cpp>void VEHICLE::REMOVE_PICK_UP_ROPE_FOR_CARGOBOB(Vehicle cargobob) // 0x9768CF648F54C804 0xA8211EE9 b323</code>
 +
 +<code>Retracts the hook on the cargobob.
 +
 +Note: after you retract it the natives for dropping the hook no longer work</code>
 +==== SET_PICKUP_ROPE_LENGTH_FOR_CARGOBOB ====
 +<code cpp>void VEHICLE::SET_PICKUP_ROPE_LENGTH_FOR_CARGOBOB(Vehicle cargobob, float length1, float length2, BOOL p3) // 0x877C1EAEAC531023 0x3A8AB081 b323</code>
 +
 +<code>min: 1.9f, max: 100.0f</code>
 +==== _0xC0ED6438E6D39BA8 ====
 +<code cpp>void VEHICLE::_0xC0ED6438E6D39BA8(Any p0, Any p1, Any p2) // 0xC0ED6438E6D39BA8  b944</code>
 +
 +==== SET_CARGOBOB_PICKUP_ROPE_DAMPING_MULTIPLIER ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_ROPE_DAMPING_MULTIPLIER(Any p0, Any p1) // 0xCF1182F682F65307 0x7D927E1B b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_ROPE_TYPE ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_ROPE_TYPE(Any p0, Any p1) // 0x0D5F65A8F4EBDAB5 0xF258ADA1 b1103</code>
 +
 +==== DOES_CARGOBOB_HAVE_PICKUP_MAGNET ====
 +<code cpp>BOOL VEHICLE::DOES_CARGOBOB_HAVE_PICKUP_MAGNET(Vehicle cargobob) // 0x6E08BF5B3722BAC9 0x4778CA0A b323</code>
 +
 +<code>Returns true only when the magnet is active, will return false if the hook is active</code>
 +==== SET_CARGOBOB_PICKUP_MAGNET_ACTIVE ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_ACTIVE(Vehicle cargobob, BOOL isActive) // 0x9A665550F8DA349B 0xF57066DA b323</code>
 +
 +<code>Won't attract or magnetize to any helicopters or planes of course, but that's common sense.</code>
 +==== SET_CARGOBOB_PICKUP_MAGNET_STRENGTH ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_STRENGTH(Vehicle cargobob, float strength) // 0xBCBFCD9D1DAC19E2 0xCC3CF97D b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_EFFECT_RADIUS ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_EFFECT_RADIUS(Vehicle cargobob, float p1) // 0xA17BAD153B51547E 0xE5DCD62F b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_REDUCED_FALLOFF ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_REDUCED_FALLOFF(Vehicle cargobob, float p1) // 0x66979ACF5102FD2F 0x1CF139C6 b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_PULL_ROPE_LENGTH ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_PULL_ROPE_LENGTH(Vehicle cargobob, float p1) // 0x6D8EAC07506291FB 0x60E29B78 b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_PULL_STRENGTH ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_PULL_STRENGTH(Vehicle cargobob, float p1) // 0xED8286F71A819BAA 0x8191BC1A b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_FALLOFF ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_FALLOFF(Vehicle vehicle, float p1) // 0x685D5561680D088B 0x91C80401 b323</code>
 +
 +==== SET_CARGOBOB_PICKUP_MAGNET_REDUCED_STRENGTH ====
 +<code cpp>void VEHICLE::SET_CARGOBOB_PICKUP_MAGNET_REDUCED_STRENGTH(Vehicle vehicle, Vehicle cargobob) // 0xE301BD63E9E13CF0 0x47D98A2E b323</code>
 +
 +==== _0x9BDDC73CC6A115D4 ====
 +<code cpp>void VEHICLE::_0x9BDDC73CC6A115D4(Vehicle vehicle, BOOL p1, BOOL p2) // 0x9BDDC73CC6A115D4 0x50CDB295 b323</code>
 +
 +==== _0x56EB5E94318D3FB6 ====
 +<code cpp>void VEHICLE::_0x56EB5E94318D3FB6(Vehicle vehicle, BOOL p1) // 0x56EB5E94318D3FB6 0x30F43FE3 b323</code>
 +
 +==== DOES_VEHICLE_HAVE_WEAPONS ====
 +<code cpp>BOOL VEHICLE::DOES_VEHICLE_HAVE_WEAPONS(Vehicle vehicle) // 0x25ECB9F8017D98E0 0xB2E1E1FB b323</code>
 +
 +==== _0x2C4A1590ABF43E8B ====
 +<code cpp>void VEHICLE::_0x2C4A1590ABF43E8B(Vehicle vehicle, BOOL p1) // 0x2C4A1590ABF43E8B 0x2EC19A8B b323</code>
 +
 +<code>SET_VEHICLE_W* (next character is either H or I)</code>
 +==== DISABLE_VEHICLE_WEAPON ====
 +<code cpp>void VEHICLE::DISABLE_VEHICLE_WEAPON(BOOL disabled, Hash weaponHash, Vehicle vehicle, Ped owner) // 0xF4FC6A6F67D8D856 0xA688B7D1 b323</code>
 +
 +<code>how does this work?</code>
 +==== _IS_VEHICLE_WEAPON_DISABLED ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_WEAPON_DISABLED(Hash weaponHash, Vehicle vehicle, Ped owner) // 0x563B65A643ED072E  b1011</code>
 +
 +==== _0xE05DD0E9707003A3 ====
 +<code cpp>void VEHICLE::_0xE05DD0E9707003A3(Any p0, BOOL p1) // 0xE05DD0E9707003A3 0x123E5B90 b323</code>
 +
 +==== SET_VEHICLE_ACTIVE_FOR_PED_NAVIGATION ====
 +<code cpp>void VEHICLE::SET_VEHICLE_ACTIVE_FOR_PED_NAVIGATION(Vehicle vehicle, BOOL toggle) // 0x21115BCD6E44656A 0xEBC225C1 b323</code>
 +
 +==== GET_VEHICLE_CLASS ====
 +<code cpp>int VEHICLE::GET_VEHICLE_CLASS(Vehicle vehicle) // 0x29439776AAA00A62 0xC025338E b323</code>
 +
 +<code>Returns an int
 +
 +Vehicle Classes:
 +0: Compacts
 +1: Sedans
 +2: SUVs
 +3: Coupes
 +4: Muscle
 +5: Sports Classics
 +6: Sports
 +7: Super
 +8: Motorcycles
 +9: Off-road
 +10: Industrial
 +11: Utility
 +12: Vans
 +13: Cycles
 +14: Boats
 +15: Helicopters
 +16: Planes
 +17: Service
 +18: Emergency
 +19: Military
 +20: Commercial
 +21: Trains
 +
 +char buffer[128];
 +std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS(vehicle));
 +
 +const char* className = HUD::_GET_LABEL_TEXT(buffer);</code>
 +==== GET_VEHICLE_CLASS_FROM_NAME ====
 +<code cpp>int VEHICLE::GET_VEHICLE_CLASS_FROM_NAME(Hash modelHash) // 0xDEDF1C8BD47C2200 0xEA469980 b323</code>
 +
 +<code>For a full enum, see here : pastebin.com/i2GGAjY0
 +
 +char buffer[128];
 +std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS_FROM_NAME (hash));
 +
 +const char* className = HUD::_GET_LABEL_TEXT(buffer);
 +
 +Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json</code>
 +==== SET_PLAYERS_LAST_VEHICLE ====
 +<code cpp>void VEHICLE::SET_PLAYERS_LAST_VEHICLE(Vehicle vehicle) // 0xBCDF8BAF56C87B6A 0xDE86447D b323</code>
 +
 +==== SET_VEHICLE_CAN_BE_USED_BY_FLEEING_PEDS ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CAN_BE_USED_BY_FLEEING_PEDS(Vehicle vehicle, BOOL toggle) // 0x300504B23BD3B711 0x5130DB1E b323</code>
 +
 +==== _0xE5810AC70602F2F5 ====
 +<code cpp>void VEHICLE::_0xE5810AC70602F2F5(Vehicle vehicle, float p1) // 0xE5810AC70602F2F5 0xB6BE07E0 b323</code>
 +
 +==== SET_VEHICLE_DROPS_MONEY_WHEN_BLOWN_UP ====
 +<code cpp>void VEHICLE::SET_VEHICLE_DROPS_MONEY_WHEN_BLOWN_UP(Vehicle vehicle, BOOL toggle) // 0x068F64F2470F9656 0x4BB5605D b323</code>
 +
 +<code>Money pickups are created around cars when they explode. Only works when the vehicle model is a car. A single pickup is between 1 and 18 dollars in size. All car models seem to give the same amount of money.
 +
 +youtu.be/3arlUxzHl5Y 
 +i.imgur.com/WrNpYFs.jpg</code>
 +==== _SET_VEHICLE_JET_ENGINE_ON ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_JET_ENGINE_ON(Vehicle vehicle, BOOL toggle) // 0xB8FBC8B1330CA9B4 0x51E0064F b323</code>
 +
 +<code>VEHICLE::SET_VEHICLE_ENGINE_ON is not enough to start jet engines when not inside the vehicle. But with this native set to true it works: youtu.be/OK0ps2fDpxs 
 +i.imgur.com/7XA14pX.png
 +Certain planes got jet engines.</code>
 +==== _0x6A973569BA094650 ====
 +<code cpp>void VEHICLE::_0x6A973569BA094650(Vehicle vehicle, Any p1) // 0x6A973569BA094650  b1604</code>
 +
 +<code>Seems to copy some values in vehicle</code>
 +==== _SET_VEHICLE_HANDLING_HASH_FOR_AI ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_HANDLING_HASH_FOR_AI(Vehicle vehicle, Hash hash) // 0x10655FAB9915623D  b323</code>
 +
 +<code>Use the "AIHandling" string found in handling.meta</code>
 +==== SET_VEHICLE_EXTENDED_REMOVAL_RANGE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_EXTENDED_REMOVAL_RANGE(Vehicle vehicle, int range) // 0x79DF7E806202CE01 0xAEF9611C b323</code>
 +
 +<code>Max value is 32767</code>
 +==== SET_VEHICLE_STEERING_BIAS_SCALAR ====
 +<code cpp>void VEHICLE::SET_VEHICLE_STEERING_BIAS_SCALAR(Any p0, float p1) // 0x9007A2F21DC108D4 0x585E49B6 b323</code>
 +
 +==== _SET_HELICOPTER_ROLL_PITCH_YAW_MULT ====
 +<code cpp>void VEHICLE::_SET_HELICOPTER_ROLL_PITCH_YAW_MULT(Vehicle helicopter, float multiplier) // 0x6E0859B530A365CC 0x6E67FD35 b323</code>
 +
 +<code>value between 0.0 and 1.0</code>
 +==== SET_VEHICLE_FRICTION_OVERRIDE ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FRICTION_OVERRIDE(Vehicle vehicle, float friction) // 0x1837AF7C627009BA 0x32AFD42E b323</code>
 +
 +<code>Seems to be related to the metal parts, not tyres (like i was expecting lol)</code>
 +==== SET_VEHICLE_WHEELS_CAN_BREAK_OFF_WHEN_BLOW_UP ====
 +<code cpp>void VEHICLE::SET_VEHICLE_WHEELS_CAN_BREAK_OFF_WHEN_BLOW_UP(Vehicle vehicle, BOOL toggle) // 0xA37B9A517B133349 0x670913A4 b323</code>
 +
 +==== _0xF78F94D60248C737 ====
 +<code cpp>BOOL VEHICLE::_0xF78F94D60248C737(Vehicle vehicle, BOOL p1) // 0xF78F94D60248C737 0x3B51B348 b323</code>
 +
 +==== SET_VEHICLE_CEILING_HEIGHT ====
 +<code cpp>void VEHICLE::SET_VEHICLE_CEILING_HEIGHT(Vehicle vehicle, float height) // 0xA46413066687A328 0x98A10A86 b323</code>
 +
 +<code>Previously named GET_VEHICLE_DEFORMATION_GET_TREE (hash collision)
 +
 +from Decrypted Scripts I found
 +VEHICLE::SET_VEHICLE_CEILING_HEIGHT(l_BD9[2/*2*/], 420.0);</code>
 +==== _0x5E569EC46EC21CAE ====
 +<code cpp>void VEHICLE::_0x5E569EC46EC21CAE(Vehicle vehicle, BOOL toggle) // 0x5E569EC46EC21CAE 0xBC649C49 b323</code>
 +
 +==== CLEAR_VEHICLE_ROUTE_HISTORY ====
 +<code cpp>void VEHICLE::CLEAR_VEHICLE_ROUTE_HISTORY(Vehicle vehicle) // 0x6D6AF961B72728AE 0x8DD9AA0C b323</code>
 +
 +==== DOES_VEHICLE_EXIST_WITH_DECORATOR ====
 +<code cpp>BOOL VEHICLE::DOES_VEHICLE_EXIST_WITH_DECORATOR(const char* decorator) // 0x956B409B984D9BF7 0x39E68EDD b323</code>
 +
 +==== _0x41062318F23ED854 ====
 +<code cpp>void VEHICLE::_0x41062318F23ED854(Vehicle vehicle, BOOL toggle) // 0x41062318F23ED854 0xFF62D324 b323</code>
 +
 +<code>Used to be incorrectly named SET_VEHICLE_EXCLUSIVE_DRIVER
 +
 +Likely SET_VEHICLE_ALLOW_*
 +
 +Jenkins hash may be wrong, unsure at this time.
 +Toggles a flag related to SET_VEHICLE_EXCLUSIVE_DRIVER, however, doesn't enable that feature (or trigger script events related to it).</code>
 +==== SET_VEHICLE_EXCLUSIVE_DRIVER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_EXCLUSIVE_DRIVER(Vehicle vehicle, Ped ped, int index) // 0xB5C51B5502E85E83 0xAA8BD440 b323</code>
 +
 +<code>index: 0 - 1
 +
 +Used to be incorrectly named _SET_VEHICLE_EXCLUSIVE_DRIVER_2</code>
 +==== _IS_PED_EXCLUSIVE_DRIVER_OF_VEHICLE ====
 +<code cpp>BOOL VEHICLE::_IS_PED_EXCLUSIVE_DRIVER_OF_VEHICLE(Ped ped, Vehicle vehicle, int* outIndex) // 0xB09D25E77C33EB3F  b463</code>
 +
 +==== _DISABLE_PLANE_PROPELLER ====
 +<code cpp>void VEHICLE::_DISABLE_PLANE_PROPELLER(Vehicle vehicle, Any p1) // 0x500873A45724C863 0x004926A3 b323</code>
 +
 +==== SET_VEHICLE_FORCE_AFTERBURNER ====
 +<code cpp>void VEHICLE::SET_VEHICLE_FORCE_AFTERBURNER(Vehicle vehicle, BOOL toggle) // 0xB055A34527CB8FD7 0xC195803B b323</code>
 +
 +==== _SET_DISABLE_VEHICLE_WINDOW_COLLISIONS ====
 +<code cpp>void VEHICLE::_SET_DISABLE_VEHICLE_WINDOW_COLLISIONS(Vehicle vehicle, BOOL toggle) // 0x1087BC8EC540DAEB  b1103</code>
 +
 +<code>R* used it to "remove" vehicle windows when "nightshark" had some mod, which adding some kind of armored windows. When enabled, you can't break vehicles glass. All your bullets wiil shoot through glass. You also will not able to break the glass with any other way (hitting and etc)</code>
 +==== _0x4AD280EB48B2D8E6 ====
 +<code cpp>void VEHICLE::_0x4AD280EB48B2D8E6(Vehicle vehicle, BOOL togle) // 0x4AD280EB48B2D8E6  b1868</code>
 +
 +==== _0xB68CFAF83A02768D ====
 +<code cpp>void VEHICLE::_0xB68CFAF83A02768D(Vehicle vehicle, BOOL toggle) // 0xB68CFAF83A02768D  b1290</code>
 +
 +<code>Sets value for vehicle. Vehicle is a helicopter?
 +_SET_HELICOPTER_*</code>
 +==== _0x0205F5365292D2EB ====
 +<code cpp>void VEHICLE::_0x0205F5365292D2EB(Vehicle vehicle, float p1) // 0x0205F5365292D2EB  b1290</code>
 +
 +<code>Sets some float for vehicle (def -1f)
 +SET_VEHICLE_*</code>
 +==== _0xCF9159024555488C ====
 +<code cpp>void VEHICLE::_0xCF9159024555488C(Any p0) // 0xCF9159024555488C  b944</code>
 +
 +==== SET_DISTANT_CARS_ENABLED ====
 +<code cpp>void VEHICLE::SET_DISTANT_CARS_ENABLED(BOOL toggle) // 0xF796359A959DF65D 0xB5CC548B b323</code>
 +
 +<code>Toggles to render distant vehicles. They may not be vehicles but images to look like vehicles.</code>
 +==== _SET_VEHICLE_NEON_LIGHTS_COLOUR ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_NEON_LIGHTS_COLOUR(Vehicle vehicle, int r, int g, int b) // 0x8E0A582209A62695  b323</code>
 +
 +<code>Sets the color of the neon lights of the specified vehicle.
 +
 +More info: pastebin.com/G49gqy8b</code>
 +==== _0xB93B2867F7B479D1 ====
 +<code cpp>void VEHICLE::_0xB93B2867F7B479D1(Vehicle vehicle, int index) // 0xB93B2867F7B479D1  b1493</code>
 +
 +<code>Sets some value for vehicle from array based on index
 +_SET_VEHICLE_*</code>
 +==== _GET_VEHICLE_NEON_LIGHTS_COLOUR ====
 +<code cpp>void VEHICLE::_GET_VEHICLE_NEON_LIGHTS_COLOUR(Vehicle vehicle, int* r, int* g, int* b) // 0x7619EEE8C886757F  b323</code>
 +
 +<code>Gets the color of the neon lights of the specified vehicle.
 +
 +See _SET_VEHICLE_NEON_LIGHTS_COLOUR (0x8E0A582209A62695) for more information</code>
 +==== _SET_VEHICLE_NEON_LIGHT_ENABLED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_NEON_LIGHT_ENABLED(Vehicle vehicle, int index, BOOL toggle) // 0x2AA720E4287BF269  b323</code>
 +
 +<code>Sets the neon lights of the specified vehicle on/off.
 +
 +Indices:
 +0 = Left
 +1 = Right
 +2 = Front
 +3 = Back</code>
 +==== _IS_VEHICLE_NEON_LIGHT_ENABLED ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_NEON_LIGHT_ENABLED(Vehicle vehicle, int index) // 0x8C4B92553E4766A5  b323</code>
 +
 +<code>indices:
 +0 = Left
 +1 = Right
 +2 = Front
 +3 = Back</code>
 +==== _0x35E0654F4BAD7971 ====
 +<code cpp>void VEHICLE::_0x35E0654F4BAD7971(BOOL p0) // 0x35E0654F4BAD7971  b323</code>
 +
 +==== _DISABLE_VEHICLE_NEON_LIGHTS ====
 +<code cpp>void VEHICLE::_DISABLE_VEHICLE_NEON_LIGHTS(Vehicle vehicle, BOOL toggle) // 0x83F813570FF519DE  b573</code>
 +
 +==== _SET_DISABLE_SUPERDUMMY_MODE ====
 +<code cpp>void VEHICLE::_SET_DISABLE_SUPERDUMMY_MODE(Vehicle vehicle, BOOL p1) // 0xB088E9A47AE6EDD5  b323</code>
 +
 +==== _REQUEST_VEHICLE_DASHBOARD_SCALEFORM_MOVIE ====
 +<code cpp>void VEHICLE::_REQUEST_VEHICLE_DASHBOARD_SCALEFORM_MOVIE(Vehicle vehicle) // 0xDBA3C090E3D74690  b323</code>
 +
 +<code>REQUEST_VEHICLE_*</code>
 +==== GET_VEHICLE_BODY_HEALTH ====
 +<code cpp>float VEHICLE::GET_VEHICLE_BODY_HEALTH(Vehicle vehicle) // 0xF271147EB7B40F12 0x2B2FCC28 b323</code>
 +
 +<code>Seems related to vehicle health, like the one in IV.
 +Max 1000, min 0.
 +Vehicle does not necessarily explode or become undrivable at 0.</code>
 +==== SET_VEHICLE_BODY_HEALTH ====
 +<code cpp>void VEHICLE::SET_VEHICLE_BODY_HEALTH(Vehicle vehicle, float value) // 0xB77D05AC8C78AADB 0x920C2517 b323</code>
 +
 +<code>p2 often set to 1000.0 in the decompiled scripts.</code>
 +==== _GET_VEHICLE_SUSPENSION_BOUNDS ====
 +<code cpp>void VEHICLE::_GET_VEHICLE_SUSPENSION_BOUNDS(Vehicle vehicle, Vector3* out1, Vector3* out2) // 0xDF7E3EEB29642C38  b323</code>
 +
 +<code>Outputs 2 Vector3's.
 +Scripts check if out2.x - out1.x > someshit.x
 +Could be suspension related, as in max suspension height and min suspension height, considering the natives location.</code>
 +==== _GET_VEHICLE_SUSPENSION_HEIGHT ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_SUSPENSION_HEIGHT(Vehicle vehicle) // 0x53952FD2BAA19F17 0xB73A1486 b323</code>
 +
 +<code>Gets the height of the vehicle's suspension.
 +The higher the value the lower the suspension. Each 0.002 corresponds with one more level lowered.
 +0.000 is the stock suspension.
 +0.008 is Ultra Suspension.</code>
 +==== _SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER ====
 +<code cpp>void VEHICLE::_SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER(float multiplier) // 0x84FD40F56075E816  b323</code>
 +
 +<code>Something to do with "high speed bump severity"?
 +
 +if (!sub_87a46("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER")) {
 +    VEHICLE::_84FD40F56075E816(0.0);
 +    sub_8795b("SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER", 1);
 +}</code>
 +==== _GET_NUMBER_OF_VEHICLE_DOORS ====
 +<code cpp>int VEHICLE::_GET_NUMBER_OF_VEHICLE_DOORS(Vehicle vehicle) // 0x92922A607497B14D  b463</code>
 +
 +==== _SET_HYDRAULIC_RAISED ====
 +<code cpp>void VEHICLE::_SET_HYDRAULIC_RAISED(Any p0, Any p1) // 0x28B18377EB6E25F6  b505</code>
 +
 +==== _0xA7DCDF4DED40A8F4 ====
 +<code cpp>void VEHICLE::_0xA7DCDF4DED40A8F4(Vehicle vehicle, BOOL p1) // 0xA7DCDF4DED40A8F4  b323</code>
 +
 +==== _GET_VEHICLE_BODY_HEALTH_2 ====
 +<code cpp>float VEHICLE::_GET_VEHICLE_BODY_HEALTH_2(Vehicle vehicle, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6) // 0xB8EF61207C2393A9  b323</code>
 +
 +<code>0 min 100 max
 +starts at 100
 +Seams to have health zones
 +Front of vehicle when damaged goes from 100-50 and stops at 50.
 +Rear can be damaged from 100-0
 +Only tested with two cars.
 +
 +any idea how this differs from the first one?
 +
 +--
 +May return the vehicle health on a scale of 0.0 - 100.0 (needs to be confirmed)
 +
 +example:
 +
 +v_F = ENTITY::GET_ENTITY_MODEL(v_3);
 +if (((v_F == ${tanker}) || (v_F == ${armytanker})) || (v_F == ${tanker2})) {
 +    if (VEHICLE::_GET_VEHICLE_BODY_HEALTH_2(v_3) <= 1.0) {
 +        NETWORK::NETWORK_EXPLODE_VEHICLE(v_3, 1, 1, -1);
 +    }
 +}</code>
 +==== _0xD4C4642CB7F50B5D ====
 +<code cpp>BOOL VEHICLE::_0xD4C4642CB7F50B5D(Vehicle vehicle) // 0xD4C4642CB7F50B5D  b323</code>
 +
 +<code>Only used like this:
 +
 +if (VEHICLE::_D4C4642CB7F50B5D(ENTITY::GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(v_3))) {
 + sub_157e9c(g_40001._f1868, 0);
 +}</code>
 +==== _0xC361AA040D6637A8 ====
 +<code cpp>void VEHICLE::_0xC361AA040D6637A8(Vehicle vehicle, BOOL p1) // 0xC361AA040D6637A8  b323</code>
 +
 +==== SET_VEHICLE_KERS_ALLOWED ====
 +<code cpp>void VEHICLE::SET_VEHICLE_KERS_ALLOWED(Vehicle vehicle, BOOL toggle) // 0x99C82F8A139F3E4E 0x71CDD52F b323</code>
 +
 +==== GET_VEHICLE_HAS_KERS ====
 +<code cpp>BOOL VEHICLE::GET_VEHICLE_HAS_KERS(Vehicle vehicle) // 0x50634E348C8D44EF 0x0761E635 b372</code>
 +
 +<code>Returns true if the vehicle has a kers boost (for instance the lectro or the vindicator)</code>
 +==== _0xE16142B94664DEFD ====
 +<code cpp>void VEHICLE::_0xE16142B94664DEFD(Vehicle vehicle, BOOL p1) // 0xE16142B94664DEFD  b323</code>
 +
 +==== _0x26D99D5A82FD18E8 ====
 +<code cpp>void VEHICLE::_0x26D99D5A82FD18E8(Any p0) // 0x26D99D5A82FD18E8  b463</code>
 +
 +==== _SET_HYDRAULIC_WHEEL_VALUE ====
 +<code cpp>void VEHICLE::_SET_HYDRAULIC_WHEEL_VALUE(Vehicle vehicle, int wheelId, float value) // 0x84EA99C62CB3EF0C  b505</code>
 +
 +<code>Works only on vehicles that support hydraulic.</code>
 +==== _SET_CAMBERED_WHEELS_DISABLED ====
 +<code cpp>void VEHICLE::_SET_CAMBERED_WHEELS_DISABLED(Any p0, Any p1) // 0x1201E8A3290A3B98  b505</code>
 +
 +==== _SET_HYDRAULIC_WHEEL_STATE ====
 +<code cpp>void VEHICLE::_SET_HYDRAULIC_WHEEL_STATE(Any p0, Any p1) // 0x8EA86DF356801C7D  b505</code>
 +
 +==== _SET_HYDRAULIC_WHEEL_STATE_TRANSITION ====
 +<code cpp>void VEHICLE::_SET_HYDRAULIC_WHEEL_STATE_TRANSITION(Vehicle vehicle, int wheelId, int state, float value, Any p4) // 0xC24075310A8B9CD1  b505</code>
 +
 +<code>Sets vehicle wheel hydraulic states transition. Known states:
 +0 - reset
 +1 - raise wheel (uses value arg, works just like _SET_VEHICLE_HYDRAULIC_WHEEL_VALUE)
 +2 - jump using wheel</code>
 +==== _0x5BA68A0840D546AC ====
 +<code cpp>Any VEHICLE::_0x5BA68A0840D546AC(Any p0, Any p1) // 0x5BA68A0840D546AC  b463</code>
 +
 +==== _0x4419966C9936071A ====
 +<code cpp>void VEHICLE::_0x4419966C9936071A(Vehicle vehicle) // 0x4419966C9936071A  b463</code>
 +
 +<code>CLEAR_VEHICLE_*</code>
 +==== _0x870B8B7A766615C8 ====
 +<code cpp>void VEHICLE::_0x870B8B7A766615C8(Any p0, Any p1, Any p2) // 0x870B8B7A766615C8  b505</code>
 +
 +==== _0x8533CAFDE1F0F336 ====
 +<code cpp>Any VEHICLE::_0x8533CAFDE1F0F336(Any p0) // 0x8533CAFDE1F0F336  b505</code>
 +
 +==== _SET_VEHICLE_DAMAGE_MODIFIER ====
 +<code cpp>Any VEHICLE::_SET_VEHICLE_DAMAGE_MODIFIER(Vehicle vehicle, float p1) // 0x4E20D2A627011E8E  b757</code>
 +
 +<code>SET_VEHICLE_D*</code>
 +==== _SET_VEHICLE_UNK_DAMAGE_MULTIPLIER ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_UNK_DAMAGE_MULTIPLIER(Vehicle vehicle, float multiplier) // 0x45A561A9421AB6AD  b944</code>
 +
 +==== _0xD4196117AF7BB974 ====
 +<code cpp>Any VEHICLE::_0xD4196117AF7BB974(Any p0, Any p1) // 0xD4196117AF7BB974  b757</code>
 +
 +==== _0xBB2333BB87DDD87F ====
 +<code cpp>void VEHICLE::_0xBB2333BB87DDD87F(Any p0, Any p1) // 0xBB2333BB87DDD87F  b757</code>
 +
 +==== _0x73561D4425A021A2 ====
 +<code cpp>void VEHICLE::_0x73561D4425A021A2(Any p0, Any p1) // 0x73561D4425A021A2  b791</code>
 +
 +==== _SET_VEHICLE_CONTROLS_INVERTED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_CONTROLS_INVERTED(Vehicle vehicle, BOOL state) // 0x5B91B229243351A8  b791</code>
 +
 +<code>Inverts vehicle's controls. So INPUT_VEH_ACCELERATE will be INPUT_VEH_BRAKE and vise versa (same for A/D controls)
 +Doesn't work for planes/helis.</code>
 +==== _0x7BBE7FF626A591FE ====
 +<code cpp>void VEHICLE::_0x7BBE7FF626A591FE(Any p0) // 0x7BBE7FF626A591FE  b877</code>
 +
 +==== _0x65B080555EA48149 ====
 +<code cpp>void VEHICLE::_0x65B080555EA48149(Any p0) // 0x65B080555EA48149  b1011</code>
 +
 +==== _0x428AD3E26C8D9EB0 ====
 +<code cpp>void VEHICLE::_0x428AD3E26C8D9EB0(Vehicle vehicle, float x, float y, float z, float p4) // 0x428AD3E26C8D9EB0  b877</code>
 +
 +<code>SET_*</code>
 +==== _0xE2F53F172B45EDE1 ====
 +<code cpp>void VEHICLE::_0xE2F53F172B45EDE1() // 0xE2F53F172B45EDE1  b877</code>
 +
 +<code>RESET_*
 +
 +Resets the effect of 0x428AD3E26C8D9EB0</code>
 +==== _0xBA91D045575699AD ====
 +<code cpp>BOOL VEHICLE::_0xBA91D045575699AD(Vehicle vehicle) // 0xBA91D045575699AD  b877</code>
 +
 +==== _0x80E3357FDEF45C21 ====
 +<code cpp>void VEHICLE::_0x80E3357FDEF45C21(Any p0, Any p1) // 0x80E3357FDEF45C21  b944</code>
 +
 +==== _SET_VEHICLE_RAMP_LAUNCH_MODIFIER ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_RAMP_LAUNCH_MODIFIER(Any p0, Any p1) // 0xEFC13B1CE30D755D  b944</code>
 +
 +==== _GET_IS_DOOR_VALID ====
 +<code cpp>BOOL VEHICLE::_GET_IS_DOOR_VALID(Vehicle vehicle, int doorIndex) // 0x645F4B6E8499F632  b944</code>
 +
 +==== _SET_VEHICLE_ROCKET_BOOST_REFILL_TIME ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_ROCKET_BOOST_REFILL_TIME(Vehicle vehicle, float seconds) // 0xE00F2AB100B76E89  b944</code>
 +
 +==== _GET_HAS_ROCKET_BOOST ====
 +<code cpp>BOOL VEHICLE::_GET_HAS_ROCKET_BOOST(Vehicle vehicle) // 0x36D782F68B309BDA  b944</code>
 +
 +==== _IS_VEHICLE_ROCKET_BOOST_ACTIVE ====
 +<code cpp>BOOL VEHICLE::_IS_VEHICLE_ROCKET_BOOST_ACTIVE(Vehicle vehicle) // 0x3D34E80EED4AE3BE  b944</code>
 +
 +==== _SET_VEHICLE_ROCKET_BOOST_ACTIVE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_ROCKET_BOOST_ACTIVE(Vehicle vehicle, BOOL active) // 0x81E1552E35DC3839  b944</code>
 +
 +==== _GET_HAS_RETRACTABLE_WHEELS ====
 +<code cpp>BOOL VEHICLE::_GET_HAS_RETRACTABLE_WHEELS(Vehicle vehicle) // 0xDCA174A42133F08C  b944</code>
 +
 +==== _GET_IS_WHEELS_LOWERED_STATE_ACTIVE ====
 +<code cpp>BOOL VEHICLE::_GET_IS_WHEELS_LOWERED_STATE_ACTIVE(Vehicle vehicle) // 0x1DA0DA9CB3F0C8BF  b944</code>
 +
 +==== _RAISE_RETRACTABLE_WHEELS ====
 +<code cpp>void VEHICLE::_RAISE_RETRACTABLE_WHEELS(Vehicle vehicle) // 0xF660602546D27BA8  b944</code>
 +
 +==== _LOWER_RETRACTABLE_WHEELS ====
 +<code cpp>void VEHICLE::_LOWER_RETRACTABLE_WHEELS(Vehicle vehicle) // 0x5335BE58C083E74E  b1011</code>
 +
 +==== _GET_CAN_VEHICLE_JUMP ====
 +<code cpp>BOOL VEHICLE::_GET_CAN_VEHICLE_JUMP(Vehicle vehicle) // 0x9078C0C5EF8C19E9  b944</code>
 +
 +<code>Returns true if the vehicle has the FLAG_JUMPING_CAR flag set.</code>
 +==== _SET_USE_HIGHER_VEHICLE_JUMP_FORCE ====
 +<code cpp>void VEHICLE::_SET_USE_HIGHER_VEHICLE_JUMP_FORCE(Vehicle vehicle, BOOL toggle) // 0xF06A16CA55D138D8  b944</code>
 +
 +<code>Allows vehicles with the FLAG_JUMPING_CAR flag to jump higher (i.e. Ruiner 2000).</code>
 +==== _0xB2E0C0D6922D31F2 ====
 +<code cpp>void VEHICLE::_0xB2E0C0D6922D31F2(Vehicle vehicle, BOOL toggle) // 0xB2E0C0D6922D31F2  b944</code>
 +
 +<code>SET_C*</code>
 +==== _SET_VEHICLE_WEAPON_CAPACITY ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_WEAPON_CAPACITY(Vehicle vehicle, int weaponIndex, int capacity) // 0x44CD1F493DB2A0A6  b944</code>
 +
 +<code>Set vehicle's primary mounted weapon 2 ammo. For example, use it on APC.
 +For example, you can "remove" any vehicle weapon from any vehicle.
 +ammoAmount -1 = infinite ammo (default value for any spawned vehicle tho)</code>
 +==== _GET_VEHICLE_WEAPON_CAPACITY ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_WEAPON_CAPACITY(Vehicle vehicle, int weaponIndex) // 0x8181CE2F25CB9BB7  b1011</code>
 +
 +==== _GET_VEHICLE_HAS_PARACHUTE ====
 +<code cpp>BOOL VEHICLE::_GET_VEHICLE_HAS_PARACHUTE(Vehicle vehicle) // 0xBC9CFF381338CB4F  b944</code>
 +
 +==== _GET_VEHICLE_CAN_ACTIVATE_PARACHUTE ====
 +<code cpp>BOOL VEHICLE::_GET_VEHICLE_CAN_ACTIVATE_PARACHUTE(Vehicle vehicle) // 0xA916396DF4154EE3  b944</code>
 +
 +==== _SET_VEHICLE_PARACHUTE_ACTIVE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_PARACHUTE_ACTIVE(Vehicle vehicle, BOOL active) // 0x0BFFB028B3DD0A97  b944</code>
 +
 +==== _0x3DE51E9C80B116CF ====
 +<code cpp>Any VEHICLE::_0x3DE51E9C80B116CF(Any p0) // 0x3DE51E9C80B116CF  b1011</code>
 +
 +==== _SET_VEHICLE_RECEIVES_RAMP_DAMAGE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_RECEIVES_RAMP_DAMAGE(Vehicle vehicle, BOOL toggle) // 0x28D034A93FE31BF5  b944</code>
 +
 +==== _SET_VEHICLE_RAMP_SIDEWAYS_LAUNCH_MOTION ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_RAMP_SIDEWAYS_LAUNCH_MOTION(Any p0, Any p1) // 0x1BBAC99C0BC53656  b944</code>
 +
 +==== _SET_VEHICLE_RAMP_UPWARDS_LAUNCH_MOTION ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_RAMP_UPWARDS_LAUNCH_MOTION(Any p0, Any p1) // 0x756AE6E962168A04  b944</code>
 +
 +==== _0x9D30687C57BAA0BB ====
 +<code cpp>void VEHICLE::_0x9D30687C57BAA0BB(Any p0) // 0x9D30687C57BAA0BB  b1011</code>
 +
 +==== _SET_VEHICLE_WEAPONS_DISABLED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_WEAPONS_DISABLED(Any p0, Any p1) // 0x86B4B6212CB8B627  b1011</code>
 +
 +==== _0x41290B40FA63E6DA ====
 +<code cpp>void VEHICLE::_0x41290B40FA63E6DA(Any p0) // 0x41290B40FA63E6DA  b1011</code>
 +
 +==== _SET_VEHICLE_PARACHUTE_MODEL ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_PARACHUTE_MODEL(Vehicle vehicle, Hash modelHash) // 0x4D610C6B56031351  b1011</code>
 +
 +<code>parachuteModel = 230075693</code>
 +==== _SET_VEHICLE_PARACHUTE_TEXTURE_VARIATIION ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_PARACHUTE_TEXTURE_VARIATIION(Vehicle vehicle, int textureVariation) // 0xA74AD2439468C883  b1011</code>
 +
 +<code>colorIndex = 0 - 7</code>
 +==== _0x0419B167EE128F33 ====
 +<code cpp>Any VEHICLE::_0x0419B167EE128F33(Any p0, Any p1) // 0x0419B167EE128F33  b1103</code>
 +
 +==== _0xF3B0E0AED097A3F5 ====
 +<code cpp>Any VEHICLE::_0xF3B0E0AED097A3F5(Any p0, Any p1) // 0xF3B0E0AED097A3F5  b1103</code>
 +
 +==== _0xD3E51C0AB8C26EEE ====
 +<code cpp>Any VEHICLE::_0xD3E51C0AB8C26EEE(Any p0, Any p1) // 0xD3E51C0AB8C26EEE  b1103</code>
 +
 +==== _GET_ALL_VEHICLES ====
 +<code cpp>int VEHICLE::_GET_ALL_VEHICLES(int* vehsStruct) // 0x9B8E1BF04B51F2E8  b1103</code>
 +
 +==== _0x72BECCF4B829522E ====
 +<code cpp>void VEHICLE::_0x72BECCF4B829522E(Any p0, Any p1) // 0x72BECCF4B829522E  b1103</code>
 +
 +==== _0x66E3AAFACE2D1EB8 ====
 +<code cpp>void VEHICLE::_0x66E3AAFACE2D1EB8(Any p0, Any p1, Any p2) // 0x66E3AAFACE2D1EB8  b1103</code>
 +
 +==== _0x1312DDD8385AEE4E ====
 +<code cpp>void VEHICLE::_0x1312DDD8385AEE4E(Any p0, Any p1) // 0x1312DDD8385AEE4E  b1103</code>
 +
 +==== _0xEDBC8405B3895CC9 ====
 +<code cpp>void VEHICLE::_0xEDBC8405B3895CC9(Any p0, Any p1) // 0xEDBC8405B3895CC9  b1103</code>
 +
 +==== _0x26E13D440E7F6064 ====
 +<code cpp>void VEHICLE::_0x26E13D440E7F6064(Vehicle vehicle, float value) // 0x26E13D440E7F6064  b1290</code>
 +
 +==== _0x2FA2494B47FDD009 ====
 +<code cpp>void VEHICLE::_0x2FA2494B47FDD009(Any p0, Any p1) // 0x2FA2494B47FDD009  b1103</code>
 +
 +==== _SET_VEHICLE_ROCKET_BOOST_PERCENTAGE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_ROCKET_BOOST_PERCENTAGE(Vehicle vehicle, float percentage) // 0xFEB2DDED3509562E  b1103</code>
 +
 +==== _SET_OPPRESSOR_TRANSFORM_STATE ====
 +<code cpp>void VEHICLE::_SET_OPPRESSOR_TRANSFORM_STATE(Vehicle vehicle, BOOL state) // 0x544996C0081ABDEB  b1103</code>
 +
 +<code>Set state to true to extend the wings, false to retract them.</code>
 +==== _0x78CEEE41F49F421F ====
 +<code cpp>void VEHICLE::_0x78CEEE41F49F421F(Any p0, Any p1) // 0x78CEEE41F49F421F  b1103</code>
 +
 +==== _0xAF60E6A2936F982A ====
 +<code cpp>void VEHICLE::_0xAF60E6A2936F982A(Any p0, Any p1) // 0xAF60E6A2936F982A  b1103</code>
 +
 +==== _0x430A7631A84C9BE7 ====
 +<code cpp>void VEHICLE::_0x430A7631A84C9BE7(Any p0) // 0x430A7631A84C9BE7  b1180</code>
 +
 +==== _DISABLE_VEHICLE_WORLD_COLLISION ====
 +<code cpp>void VEHICLE::_DISABLE_VEHICLE_WORLD_COLLISION(Vehicle vehicle) // 0x75627043C6AA90AD  b1180</code>
 +
 +<code>Disables collision for this vehicle (maybe it also supports other entities, not sure).
 +Only world/building/fixed world objects will have their collisions disabled, props, peds, or any other entity still collides with the vehicle.
 +Example: https://streamable.com/6n45d5
 +Not sure if there is a native (and if so, which one) that resets the collisions.</code>
 +==== _0x8235F1BEAD557629 ====
 +<code cpp>void VEHICLE::_0x8235F1BEAD557629(Vehicle vehicle, BOOL toggle) // 0x8235F1BEAD557629  b1180</code>
 +
 +<code>Sets some value for vehicle
 +SET_VEHICLE_*</code>
 +==== _0x9640E30A7F395E4B ====
 +<code cpp>void VEHICLE::_0x9640E30A7F395E4B(Vehicle vehicle, Any p1, Any p2, Any p3, Any p4) // 0x9640E30A7F395E4B  b1290</code>
 +
 +==== _0x0BBB9A7A8FFE931B ====
 +<code cpp>void VEHICLE::_0x0BBB9A7A8FFE931B(Any p0, Any p1, Any p2) // 0x0BBB9A7A8FFE931B  b1290</code>
 +
 +==== _SET_CARGOBOB_HOOK_CAN_ATTACH ====
 +<code cpp>void VEHICLE::_SET_CARGOBOB_HOOK_CAN_ATTACH(Vehicle vehicle, BOOL toggle) // 0x94A68DA412C4007D  b1180</code>
 +
 +<code>Stops the cargobob from being able to attach any vehicle</code>
 +==== _SET_VEHICLE_BOMB_COUNT ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_BOMB_COUNT(Vehicle vehicle, int bombCount) // 0xF4B2ED59DEB5D774  b1180</code>
 +
 +<code>Sets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane. </code>
 +==== _GET_VEHICLE_BOMB_COUNT ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_BOMB_COUNT(Vehicle vehicle) // 0xEA12BD130D7569A1  b1180</code>
 +
 +<code>Gets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane. </code>
 +==== _SET_VEHICLE_COUNTERMEASURE_COUNT ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_COUNTERMEASURE_COUNT(Vehicle vehicle, int counterMeasureCount) // 0x9BDA23BF666F0855  b1180</code>
 +
 +<code>Similar to 0xF4B2ED59DEB5D774, this sets the amount of countermeasures that are present on this vehicle.
 +Use 0xF846AA63DF56B804 to get the current amount.</code>
 +==== _GET_VEHICLE_COUNTERMEASURE_COUNT ====
 +<code cpp>int VEHICLE::_GET_VEHICLE_COUNTERMEASURE_COUNT(Vehicle vehicle) // 0xF846AA63DF56B804  b1180</code>
 +
 +<code>Similar to `0xEA12BD130D7569A1`, this gets the amount of countermeasures that are present on this vehicle.
 +Use 0x9BDA23BF666F0855 to set the current amount.</code>
 +==== _0x0A3F820A9A9A9AC5 ====
 +<code cpp>void VEHICLE::_0x0A3F820A9A9A9AC5(Vehicle vehicle, float x, float y, float z) // 0x0A3F820A9A9A9AC5  b1180</code>
 +
 +<code>Used on helicopters
 +SET_HELICOPTER_??</code>
 +==== _0x51F30DB60626A20E ====
 +<code cpp>BOOL VEHICLE::_0x51F30DB60626A20E(Vehicle vehicle, float x, float y, float z, float rotX, float rotY, float rotZ, int p7, Any p8) // 0x51F30DB60626A20E  b1180</code>
 +
 +<code>Used in decompiled scripts in combination with _GET_VEHICLE_SUSPENSION_BOUNDS
 +p7 is usually 2
 +p8 is usually 1</code>
 +==== _0x97841634EF7DF1D6 ====
 +<code cpp>void VEHICLE::_0x97841634EF7DF1D6(Vehicle vehicle, BOOL toggle) // 0x97841634EF7DF1D6  b1180</code>
 +
 +<code>Sets a flag on heli and another vehicle type.
 +_SET_VEHICLE_??</code>
 +==== _SET_VEHICLE_HOVER_TRANSFORM_RATIO ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_HOVER_TRANSFORM_RATIO(Vehicle vehicle, float ratio) // 0xD138FA15C9776837  b1290</code>
 +
 +==== _SET_VEHICLE_HOVER_TRANSFORM_PERCENTAGE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_HOVER_TRANSFORM_PERCENTAGE(Vehicle vehicle, float percentage) // 0x438B3D7CA026FE91  b1290</code>
 +
 +<code>According to decompiled scripts this should work with the `deluxo` and `oppressor2` vehicles.
 +I've only seen this work for `deluxo` though, can't figure out what it's supposed to do on `oppressor2`.
 +
 +For the deluxo:
 +- Set `state` to `0.0`: Fully transform to a 'road' vehicle (non-hover mode).
 +- Set `state` to `1.0`: Fully transform to a 'flying' vehicle (hover mode).
 +
 +If you set it to something like 0.5, then something [weird happens](https://streamable.com/p6wmr), you end up in some 50% hover mode, 50% not hover mode.
 +
 +This doesn't need to be called every tick, just once and the vehicle will transform to that state at the usual transform speed. It'll just stop transforming when it reaches the state you provided.
 +
 +Once this native is used then players will just be able to hit the vehicle transform key to toggle the transformation cycle; it won't block users from using the key.</code>
 +==== _SET_VEHICLE_HOVER_TRANSFORM_ENABLED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_HOVER_TRANSFORM_ENABLED(Vehicle vehicle, BOOL toggle) // 0xF1211889DF15A763  b1290</code>
 +
 +<code>It will override the ability to transform deluxo. For oppressor it will work just like 0x2D55FE374D5FDB91</code>
 +==== _SET_VEHICLE_HOVER_TRANSFORM_ACTIVE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_HOVER_TRANSFORM_ACTIVE(Vehicle vehicle, BOOL toggle) // 0x2D55FE374D5FDB91  b1290</code>
 +
 +<code>Disables "wings" for some flying vehicles. Works only for oppressor _2_ and deluxo.
 +For deluxo it just immediately removes vehicle's "wings" and you will be not able to fly up.
 +For oppressor 2 it will remove wings right after you land. And you will not able to fly up anymore too.
 +But for opressor 2 you still can fly if you somehow get back in the air.</code>
 +==== _0x3A9128352EAC9E85 ====
 +<code cpp>Any VEHICLE::_0x3A9128352EAC9E85(Any p0) // 0x3A9128352EAC9E85  b1290</code>
 +
 +==== _FIND_RANDOM_POINT_IN_SPACE ====
 +<code cpp>Vector3 VEHICLE::_FIND_RANDOM_POINT_IN_SPACE(Ped ped) // 0x8DC9675797123522  b1290</code>
 +
 +<code>Native is significantly more complicated than simply generating a random vector & length.
 +The 'point' is either 400.0 or 250.0 units away from the Ped's current coordinates; and paths into functions like rage::grcViewport___IsSphereVisible</code>
 +==== _SET_DEPLOY_HELI_STUB_WINGS ====
 +<code cpp>void VEHICLE::_SET_DEPLOY_HELI_STUB_WINGS(Vehicle vehicle, BOOL deploy, BOOL p2) // 0xB251E0B33E58B424  b1290</code>
 +
 +<code>Only used with the "akula" and "annihilator2" in the decompiled native scripts.</code>
 +==== _ARE_HELI_STUB_WINGS_DEPLOYED ====
 +<code cpp>BOOL VEHICLE::_ARE_HELI_STUB_WINGS_DEPLOYED(Vehicle vehicle) // 0xAEF12960FA943792  b1290</code>
 +
 +<code>Only used with the "akula" and "annihilator2" in the decompiled native scripts.</code>
 +==== _0xAA653AE61924B0A0 ====
 +<code cpp>void VEHICLE::_0xAA653AE61924B0A0(Vehicle vehicle, BOOL toggle) // 0xAA653AE61924B0A0  b1290</code>
 +
 +<code>Sets some vehicle value
 +_SET_VEHICLE_?</code>
 +==== _SET_VEHICLE_TURRET_UNK ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_TURRET_UNK(Vehicle vehicle, int index, BOOL toggle) // 0xC60060EB0D8AC7B1  b1290</code>
 +
 +<code>Toggles specific flag on turret</code>
 +==== _SET_SPECIALFLIGHT_WING_RATIO ====
 +<code cpp>void VEHICLE::_SET_SPECIALFLIGHT_WING_RATIO(Vehicle vehicle, float ratio) // 0x70A252F60A3E036B  b1365</code>
 +
 +==== _SET_DISABLE_TURRET_MOVEMENT_THIS_FRAME ====
 +<code cpp>void VEHICLE::_SET_DISABLE_TURRET_MOVEMENT_THIS_FRAME(Vehicle vehicle, int turretId) // 0xE615BB7A7752C76A  b1365</code>
 +
 +<code>Disables turret movement when called in a loop. You can still fire and aim. You cannot shoot backwards though.</code>
 +==== _0x887FA38787DE8C72 ====
 +<code cpp>void VEHICLE::_0x887FA38787DE8C72(Vehicle vehicle) // 0x887FA38787DE8C72  b1365</code>
 +
 +<code>Sets some vehicle value to 1
 +SET_VEHICLE_??</code>
 +==== _SET_UNK_FLOAT_0x104_FOR_SUBMARINE_VEHICLE_TASK ====
 +<code cpp>void VEHICLE::_SET_UNK_FLOAT_0x104_FOR_SUBMARINE_VEHICLE_TASK(Vehicle vehicle, float value) // 0x498218259FB7C72D  b1365</code>
 +
 +==== _SET_UNK_BOOL_0x102_FOR_SUBMARINE_VEHICLE_TASK ====
 +<code cpp>void VEHICLE::_SET_UNK_BOOL_0x102_FOR_SUBMARINE_VEHICLE_TASK(Vehicle vehicle, BOOL value) // 0x41B9FB92EDED32A6  b1365</code>
 +
 +==== _0x36DE109527A2C0C4 ====
 +<code cpp>void VEHICLE::_0x36DE109527A2C0C4(BOOL toggle) // 0x36DE109527A2C0C4  b1604</code>
 +
 +<code>Does nothing. It's a nullsub.</code>
 +==== _0x82E0AC411E41A5B4 ====
 +<code cpp>void VEHICLE::_0x82E0AC411E41A5B4(BOOL toggle) // 0x82E0AC411E41A5B4  b1604</code>
 +
 +<code>Does nothing. It's a nullsub.</code>
 +==== _0x99A05839C46CE316 ====
 +<code cpp>void VEHICLE::_0x99A05839C46CE316(BOOL toggle) // 0x99A05839C46CE316  b1604</code>
 +
 +<code>Does nothing. It's a nullsub.</code>
 +==== _GET_IS_VEHICLE_SHUNT_BOOST_ACTIVE ====
 +<code cpp>BOOL VEHICLE::_GET_IS_VEHICLE_SHUNT_BOOST_ACTIVE(Vehicle vehicle) // 0xA2459F72C14E2E8D  b1604</code>
 +
 +==== _0xE8718FAF591FD224 ====
 +<code cpp>BOOL VEHICLE::_0xE8718FAF591FD224(Vehicle vehicle) // 0xE8718FAF591FD224  b1604</code>
 +
 +<code>GET_H*</code>
 +==== _GET_LAST_RAMMED_VEHICLE ====
 +<code cpp>Vehicle VEHICLE::_GET_LAST_RAMMED_VEHICLE(Vehicle vehicle) // 0x04F2FA6E234162F7  b1604</code>
 +
 +<code>Returns last vehicle that was rammed by the given vehicle using the shunt boost.</code>
 +==== _SET_DISABLE_VEHICLE_UNK ====
 +<code cpp>void VEHICLE::_SET_DISABLE_VEHICLE_UNK(BOOL toggle) // 0x143921E45EC44D62  b1604</code>
 +
 +==== _SET_VEHICLE_NITRO_ENABLED ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_NITRO_ENABLED(Vehicle vehicle, BOOL toggle, float level, float power, float rechargeTime, BOOL disableSound) // 0xC8E9B6B71B8E660D  b1604</code>
 +
 +==== _SET_VEHICLE_WHEELS_DEAL_DAMAGE ====
 +<code cpp>void VEHICLE::_SET_VEHICLE_WHEELS_DEAL_DAMAGE(Vehicle vehicle, BOOL toggle) // 0x2970EAA18FD5E42F  b1604</code>
 +
 +==== _SET_DISABLE_VEHICLE_UNK_2 ====
 +<code cpp>void VEHICLE::_SET_DISABLE_VEHICLE_UNK_2(BOOL toggle) // 0x211E95CE9903940C  b1604</code>
 +
 +<code>Sets some global vehicle related bool</code>
 +==== _0x5BBCF35BF6E456F7 ====
 +<code cpp>void VEHICLE::_0x5BBCF35BF6E456F7(BOOL toggle) // 0x5BBCF35BF6E456F7  b1604</code>
 +
 +==== _GET_DOES_VEHICLE_HAVE_TOMBSTONE ====
 +<code cpp>BOOL VEHICLE::_GET_DOES_VEHICLE_HAVE_TOMBSTONE(Vehicle vehicle) // 0x71AFB258CCED3A27  b1604</code>
 +
 +==== _HIDE_VEHICLE_TOMBSTONE ====
 +<code cpp>void VEHICLE::_HIDE_VEHICLE_TOMBSTONE(Vehicle vehicle, BOOL toggle) // 0xAE71FB656C600587  b1604</code>
 +
 +<code>Disables detachable bumber from domnator4, dominator5, dominator6, see https://gfycat.com/SecondUnluckyGosling</code>
 +==== _GET_IS_VEHICLE_EMP_DISABLED ====
 +<code cpp>BOOL VEHICLE::_GET_IS_VEHICLE_EMP_DISABLED(Vehicle vehicle) // 0x0506ED94363AD905  b1604</code>
 +
 +<code>Returns whether this vehicle is currently disabled by an EMP mine.</code>
 +==== _0x8F0D5BA1C2CC91D7 ====
 +<code cpp>void VEHICLE::_0x8F0D5BA1C2CC91D7(BOOL toggle) // 0x8F0D5BA1C2CC91D7  b1604</code>
 +
 +==== _GET_TYRE_HEALTH ====
 +<code cpp>float VEHICLE::_GET_TYRE_HEALTH(Vehicle vehicle, int wheelIndex) // 0x55EAB010FAEE9380  b1868</code>
 +
 +<code>Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _SET_TYRE_HEALTH ====
 +<code cpp>void VEHICLE::_SET_TYRE_HEALTH(Vehicle vehicle, int wheelIndex, float health) // 0x74C68EF97645E79D  b1868</code>
 +
 +<code>_SET_TYRE_WEAR_MULTIPLIER must be active, otherwise values set to <1000.0f will default to 350.0f
 +
 +Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _GET_TYRE_WEAR_MULTIPLIER ====
 +<code cpp>float VEHICLE::_GET_TYRE_WEAR_MULTIPLIER(Vehicle vehicle, int wheelIndex) // 0x6E387895952F4F71  b2060</code>
 +
 +<code>Returns the multiplier value from _SET_TYRE_WEAR_MULTIPLIER
 +
 +Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _SET_TYRE_WEAR_MULTIPLIER ====
 +<code cpp>void VEHICLE::_SET_TYRE_WEAR_MULTIPLIER(Vehicle vehicle, int wheelIndex, float multiplier) // 0x01894E2EDE923CA2  b1868</code>
 +
 +<code>Needs to be run for tire wear to work. Multiplier affects the downforce and how fast the tires will wear out, higher values essentially make the vehicle slower on straights and its tires will wear down quicker when cornering. Value must be >0f.
 +Default value in Rockstar's Open Wheel Race JSON's ("owrtws", "owrtwm", "owrtwh") is 1.0
 +
 +Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _SET_TYRE_SOFTNESS_MULTIPLIER ====
 +<code cpp>void VEHICLE::_SET_TYRE_SOFTNESS_MULTIPLIER(Vehicle vehicle, int wheelIndex, float multiplier) // 0x392183BB9EA57697  b2060</code>
 +
 +<code>Controls how fast the tires wear out.
 +
 +Default values from Rockstar's Open Wheel Race JSON's:
 +"owrtss" (Soft): 2.2
 +"owrtsm" (Medium): 1.7
 +"owrtsh" (Hard): 1.2
 +
 +Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _SET_TYRE_TRACTION_LOSS_MULTIPLIER ====
 +<code cpp>void VEHICLE::_SET_TYRE_TRACTION_LOSS_MULTIPLIER(Vehicle vehicle, int wheelIndex, float multiplier) // 0xC970D0E0FC31D768  b2060</code>
 +
 +<code>Controls how much traction the wheel loses.
 +
 +Default values from Rockstar's Open Wheel Race JSON's:
 +"owrtds" (Soft): 0.05
 +"owrtdm" (Medium): 0.45
 +"owrtdh" (Hard): 0.8
 +
 +Usable wheels:
 +0: wheel_lf
 +1: wheel_rf
 +2: wheel_lm1
 +3: wheel_rm1
 +4: wheel_lr
 +5: wheel_rr</code>
 +==== _0xF8B49F5BA7F850E7 ====
 +<code cpp>void VEHICLE::_0xF8B49F5BA7F850E7(Vehicle vehicle, int p1) // 0xF8B49F5BA7F850E7  b2060</code>
 +
 +
 +===== WATER =====
 +==== GET_WATER_HEIGHT ====
 +<code cpp>BOOL WATER::GET_WATER_HEIGHT(float x, float y, float z, float* height) // 0xF6829842C06AE524 0xD864E17C b323</code>
 +
 +<code>This function set height to the value of z-axis of the water surface.
 +
 +This function works with sea and lake. However it does not work with shallow rivers (e.g. raton canyon will return -100000.0f)
 +
 +note: seems to return true when you are in water</code>
 +==== GET_WATER_HEIGHT_NO_WAVES ====
 +<code cpp>BOOL WATER::GET_WATER_HEIGHT_NO_WAVES(float x, float y, float z, float* height) // 0x8EE6B53CE13A9794 0x262017F8 b323</code>
 +
 +==== TEST_PROBE_AGAINST_WATER ====
 +<code cpp>BOOL WATER::TEST_PROBE_AGAINST_WATER(float x1, float y1, float z1, float x2, float y2, float z2, Vector3* result) // 0xFFA5D878809819DB 0xAA4AE00C b323</code>
 +
 +==== TEST_PROBE_AGAINST_ALL_WATER ====
 +<code cpp>BOOL WATER::TEST_PROBE_AGAINST_ALL_WATER(Any p0, Any p1, Any p2, Any p3, Any p4, Any p5, Any p6, Any p7) // 0x8974647ED222EA5F 0x4A962D55 b323</code>
 +
 +==== TEST_VERTICAL_PROBE_AGAINST_ALL_WATER ====
 +<code cpp>BOOL WATER::TEST_VERTICAL_PROBE_AGAINST_ALL_WATER(float x, float y, float z, Any p3, float* height) // 0x2B3451FA1E3142E2 0x4C71D143 b323</code>
 +
 +==== MODIFY_WATER ====
 +<code cpp>void WATER::MODIFY_WATER(float x, float y, float radius, float height) // 0xC443FD757C3BA637 0xC49E005A b323</code>
 +
 +<code>Sets the water height for a given position and radius.
 +</code>
 +==== _ADD_CURRENT_RISE ====
 +<code cpp>int WATER::_ADD_CURRENT_RISE(float x, float y, float z, float radius, float unk) // 0xFDBF4CDBC07E1706 0x45268B6F b323</code>
 +
 +<code>Most likely ADD_CURRENT_*</code>
 +==== _REMOVE_CURRENT_RISE ====
 +<code cpp>void WATER::_REMOVE_CURRENT_RISE(int p0) // 0xB1252E3E59A82AAF 0x7DBCEF6F b323</code>
 +
 +<code>p0 is the handle returned from _0xFDBF4CDBC07E1706
 +
 +Most likely REMOVE_CURRENT_*</code>
 +==== SET_DEEP_OCEAN_SCALER ====
 +<code cpp>void WATER::SET_DEEP_OCEAN_SCALER(float intensity) // 0xB96B00E976BE977F 0x53B694B1 b323</code>
 +
 +<code>Sets a value that determines how aggressive the ocean waves will be. Values of 2.0 or more make for very aggressive waves like you see during a thunderstorm.
 +
 +Works only ~200 meters around the player.</code>
 +==== GET_DEEP_OCEAN_SCALER ====
 +<code cpp>float WATER::GET_DEEP_OCEAN_SCALER() // 0x2B2A2CC86778B619 0xBD0A67FB b323</code>
 +
 +<code>Gets the aggressiveness factor of the ocean waves.</code>
 +==== _0x547237AA71AB44DE ====
 +<code cpp>void WATER::_0x547237AA71AB44DE(float p0) // 0x547237AA71AB44DE  b573</code>
 +
 +==== RESET_DEEP_OCEAN_SCALER ====
 +<code cpp>void WATER::RESET_DEEP_OCEAN_SCALER() // 0x5E5E99285AE812DB 0x4AD23212 b323</code>
 +
 +<code>Sets the waves intensity back to original (1.0 in most cases).</code>
 +
 +===== WEAPON =====
 +==== ENABLE_LASER_SIGHT_RENDERING ====
 +<code cpp>void WEAPON::ENABLE_LASER_SIGHT_RENDERING(BOOL toggle) // 0xC8B46D7727D864AA 0xE3438955 b323</code>
 +
 +<code>Enables laser sight on any weapon.
 +
 +It doesn't work. Neither on tick nor OnKeyDown</code>
 +==== GET_WEAPON_COMPONENT_TYPE_MODEL ====
 +<code cpp>Hash WEAPON::GET_WEAPON_COMPONENT_TYPE_MODEL(Hash componentHash) // 0x0DB57B41EC1DB083 0x324FA47A b323</code>
 +
 +==== GET_WEAPONTYPE_MODEL ====
 +<code cpp>Hash WEAPON::GET_WEAPONTYPE_MODEL(Hash weaponHash) // 0xF46CDC33180FDA94 0x44E1C269 b323</code>
 +
 +<code>Returns the model of any weapon.
 +
 +Can also take an ammo hash?
 +sub_6663a(&l_115B, WEAPON::GET_WEAPONTYPE_MODEL(${ammo_rpg}));</code>
 +==== GET_WEAPONTYPE_SLOT ====
 +<code cpp>Hash WEAPON::GET_WEAPONTYPE_SLOT(Hash weaponHash) // 0x4215460B9B8B7FA0 0x2E3759AF b323</code>
 +
 +==== GET_WEAPONTYPE_GROUP ====
 +<code cpp>Hash WEAPON::GET_WEAPONTYPE_GROUP(Hash weaponHash) // 0xC3287EE3050FB74C 0x5F2DE833 b323</code>
 +
 +==== _GET_WEAPON_COMPONENT_VARIANT_EXTRA_COMPONENT_COUNT ====
 +<code cpp>int WEAPON::_GET_WEAPON_COMPONENT_VARIANT_EXTRA_COMPONENT_COUNT(Hash componentHash) // 0x6558AC7C17BFEF58  b372</code>
 +
 +<code>Returns the amount of extra components the specified component has.
 +Returns -1 if the component isn't of type CWeaponComponentVariantModel.</code>
 +==== _GET_WEAPON_COMPONENT_VARIANT_EXTRA_COMPONENT_MODEL ====
 +<code cpp>Hash WEAPON::_GET_WEAPON_COMPONENT_VARIANT_EXTRA_COMPONENT_MODEL(Hash componentHash, int extraComponentIndex) // 0x4D1CB8DC40208A17  b372</code>
 +
 +<code>Returns the model hash of the extra component at specified index.</code>
 +==== SET_CURRENT_PED_WEAPON ====
 +<code cpp>void WEAPON::SET_CURRENT_PED_WEAPON(Ped ped, Hash weaponHash, BOOL bForceInHand) // 0xADF692B254977C0C 0xB8278882 b323</code>
 +
 +==== GET_CURRENT_PED_WEAPON ====
 +<code cpp>BOOL WEAPON::GET_CURRENT_PED_WEAPON(Ped ped, Hash* weaponHash, BOOL p2) // 0x3A87E44BB9A01D54 0xB0237302 b323</code>
 +
 +<code>The return value seems to indicate returns true if the hash of the weapon object weapon equals the weapon hash.
 +p2 seems to be 1 most of the time.
 +
 +
 +
 +
 +
 +p2 is not implemented
 +
 +disassembly said that?
 +</code>
 +==== GET_CURRENT_PED_WEAPON_ENTITY_INDEX ====
 +<code cpp>Entity WEAPON::GET_CURRENT_PED_WEAPON_ENTITY_INDEX(Ped ped, Any p1) // 0x3B390A939AF0B5FC 0x5D73CD20 b323</code>
 +
 +==== GET_BEST_PED_WEAPON ====
 +<code cpp>Hash WEAPON::GET_BEST_PED_WEAPON(Ped ped, BOOL p1) // 0x8483E98E8B888AE2 0xB998D444 b323</code>
 +
 +<code>p1 is always 0 in the scripts.</code>
 +==== SET_CURRENT_PED_VEHICLE_WEAPON ====
 +<code cpp>BOOL WEAPON::SET_CURRENT_PED_VEHICLE_WEAPON(Ped ped, Hash weaponHash) // 0x75C55983C2C39DAA 0x8E6F2AF1 b323</code>
 +
 +==== GET_CURRENT_PED_VEHICLE_WEAPON ====
 +<code cpp>BOOL WEAPON::GET_CURRENT_PED_VEHICLE_WEAPON(Ped ped, Hash* weaponHash) // 0x1017582BCD3832DC 0xF26C5D65 b323</code>
 +
 +<code>Example in VB
 +
 +    Public Shared Function GetVehicleCurrentWeapon(Ped As Ped) As Integer
 +        Dim arg As New OutputArgument()
 +        Native.Function.Call(Hash.GET_CURRENT_PED_VEHICLE_WEAPON, Ped, arg)
 +        Return arg.GetResult(Of Integer)()
 +    End Function
 +
 +Usage:
 +If GetVehicleCurrentWeapon(Game.Player.Character) = -821520672 Then ...Do something
 +Note: -821520672 = VEHICLE_WEAPON_PLANE_ROCKET</code>
 +==== _0x50276EF8172F5F12 ====
 +<code cpp>void WEAPON::_0x50276EF8172F5F12(Ped ped) // 0x50276EF8172F5F12  b1734</code>
 +
 +<code>SET_PED_*</code>
 +==== IS_PED_ARMED ====
 +<code cpp>BOOL WEAPON::IS_PED_ARMED(Ped ped, int typeFlags) // 0x475768A975D5AD17 0x0BFC892C b323</code>
 +
 +<code>Checks if the ped is currently equipped with a weapon matching a bit specified using a bitwise-or in typeFlags.
 +
 +Type flag bit values:
 +1 = Melee weapons
 +2 = Explosive weapons
 +4 = Any other weapons
 +
 +Not specifying any bit will lead to the native *always* returning 'false', and for example specifying '4 | 2' will check for any weapon except fists and melee weapons.
 +7 returns true if you are equipped with any weapon except your fists.
 +6 returns true if you are equipped with any weapon except melee weapons.
 +5 returns true if you are equipped with any weapon except the Explosives weapon group.
 +4 returns true if you are equipped with any weapon except Explosives weapon group AND melee weapons.
 +3 returns true if you are equipped with either Explosives or Melee weapons (the exact opposite of 4).
 +2 returns true only if you are equipped with any weapon from the Explosives weapon group.
 +1 returns true only if you are equipped with any Melee weapon.
 +0 never returns true.
 +
 +Note: When I say "Explosives weapon group", it does not include the Jerry can and Fire Extinguisher.</code>
 +==== IS_WEAPON_VALID ====
 +<code cpp>BOOL WEAPON::IS_WEAPON_VALID(Hash weaponHash) // 0x937C71165CF334B3 0x38CA2954 b323</code>
 +
 +==== HAS_PED_GOT_WEAPON ====
 +<code cpp>BOOL WEAPON::HAS_PED_GOT_WEAPON(Ped ped, Hash weaponHash, BOOL p2) // 0x8DECB02F88F428BC 0x43D2FA82 b323</code>
 +
 +<code>p2 should be FALSE, otherwise it seems to always return FALSE
 +
 +Bool does not check if the weapon is current equipped, unfortunately.</code>
 +==== IS_PED_WEAPON_READY_TO_SHOOT ====
 +<code cpp>BOOL WEAPON::IS_PED_WEAPON_READY_TO_SHOOT(Ped ped) // 0xB80CA294F2F26749 0x02A32CB0 b323</code>
 +
 +==== GET_PED_WEAPONTYPE_IN_SLOT ====
 +<code cpp>Hash WEAPON::GET_PED_WEAPONTYPE_IN_SLOT(Ped ped, Hash weaponSlot) // 0xEFFED78E9011134D 0x9BC64E16 b323</code>
 +
 +==== GET_AMMO_IN_PED_WEAPON ====
 +<code cpp>int WEAPON::GET_AMMO_IN_PED_WEAPON(Ped ped, Hash weaponhash) // 0x015A522136D7F951 0x0C755733 b323</code>
 +
 +<code>WEAPON::GET_AMMO_IN_PED_WEAPON(PLAYER::PLAYER_PED_ID(), a_0)
 +
 +From decompiled scripts
 +Returns total ammo in weapon
 +
 +GTALua Example :
 +natives.WEAPON.GET_AMMO_IN_PED_WEAPON(plyPed, WeaponHash)</code>
 +==== ADD_AMMO_TO_PED ====
 +<code cpp>void WEAPON::ADD_AMMO_TO_PED(Ped ped, Hash weaponHash, int ammo) // 0x78F0424C34306220 0x7F0580C7 b323</code>
 +
 +==== SET_PED_AMMO ====
 +<code cpp>void WEAPON::SET_PED_AMMO(Ped ped, Hash weaponHash, int ammo, BOOL p3) // 0x14E56BC5B5DB6A19 0xBF90DF1A b323</code>
 +
 +==== SET_PED_INFINITE_AMMO ====
 +<code cpp>void WEAPON::SET_PED_INFINITE_AMMO(Ped ped, BOOL toggle, Hash weaponHash) // 0x3EDCB0505123623B 0x9CB8D278 b323</code>
 +
 +==== SET_PED_INFINITE_AMMO_CLIP ====
 +<code cpp>void WEAPON::SET_PED_INFINITE_AMMO_CLIP(Ped ped, BOOL toggle) // 0x183DADC6AA953186 0x5A5E3B67 b323</code>
 +
 +==== _0x24C024BA8379A70A ====
 +<code cpp>void WEAPON::_0x24C024BA8379A70A(Any p0, Any p1) // 0x24C024BA8379A70A  b1868</code>
 +
 +==== GIVE_WEAPON_TO_PED ====
 +<code cpp>void WEAPON::GIVE_WEAPON_TO_PED(Ped ped, Hash weaponHash, int ammoCount, BOOL isHidden, BOOL bForceInHand) // 0xBF0FD6E56C964FCB 0xC4D88A85 b323</code>
 +
 +==== GIVE_DELAYED_WEAPON_TO_PED ====
 +<code cpp>void WEAPON::GIVE_DELAYED_WEAPON_TO_PED(Ped ped, Hash weaponHash, int ammoCount, BOOL bForceInHand) // 0xB282DC6EBD803C75 0x5868D20D b323</code>
 +
 +<code>Gives a weapon to PED with a delay, example:
 +
 +WEAPON::GIVE_DELAYED_WEAPON_TO_PED(PED::PLAYER_PED_ID(), MISC::GET_HASH_KEY("WEAPON_PISTOL"), 1000, false)</code>
 +==== REMOVE_ALL_PED_WEAPONS ====
 +<code cpp>void WEAPON::REMOVE_ALL_PED_WEAPONS(Ped ped, BOOL p1) // 0xF25DF915FA38C5F3 0xA44CE817 b323</code>
 +
 +<code>setting the last params to false it does that same so I would suggest its not a toggle</code>
 +==== REMOVE_WEAPON_FROM_PED ====
 +<code cpp>void WEAPON::REMOVE_WEAPON_FROM_PED(Ped ped, Hash weaponHash) // 0x4899CB088EDF59B8 0x9C37F220 b323</code>
 +
 +<code>This native removes a specified weapon from your selected ped.
 +Weapon Hashes: pastebin.com/0wwDZgkF
 +
 +Example:
 +C#:
 +Function.Call(Hash.REMOVE_WEAPON_FROM_PED, Game.Player.Character, 0x99B507EA);
 +
 +C++:
 +WEAPON::REMOVE_WEAPON_FROM_PED(PLAYER::PLAYER_PED_ID(), 0x99B507EA);
 +
 +The code above removes the knife from the player.</code>
 +==== HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE ====
 +<code cpp>void WEAPON::HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE(Ped ped, BOOL toggle) // 0x6F6981D2253C208F 0x00CFD6E9 b323</code>
 +
 +<code>Hides the players weapon during a cutscene.</code>
 +==== SET_PED_CURRENT_WEAPON_VISIBLE ====
 +<code cpp>void WEAPON::SET_PED_CURRENT_WEAPON_VISIBLE(Ped ped, BOOL visible, BOOL deselectWeapon, BOOL p3, BOOL p4) // 0x0725A4CCFDED9A70 0x00BECD77 b323</code>
 +
 +<code>Has 5 parameters since latest patches.</code>
 +==== SET_PED_DROPS_WEAPONS_WHEN_DEAD ====
 +<code cpp>void WEAPON::SET_PED_DROPS_WEAPONS_WHEN_DEAD(Ped ped, BOOL toggle) // 0x476AE72C1D19D1A8 0x8A444056 b323</code>
 +
 +==== HAS_PED_BEEN_DAMAGED_BY_WEAPON ====
 +<code cpp>BOOL WEAPON::HAS_PED_BEEN_DAMAGED_BY_WEAPON(Ped ped, Hash weaponHash, int weaponType) // 0x2D343D2219CD027A 0xCDFBBCC6 b323</code>
 +
 +<code>It determines what weapons caused damage:
 +
 +If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0
 +If you want to define any melee weapon, second parameter=0, third parameter=1.
 +If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.</code>
 +==== CLEAR_PED_LAST_WEAPON_DAMAGE ====
 +<code cpp>void WEAPON::CLEAR_PED_LAST_WEAPON_DAMAGE(Ped ped) // 0x0E98F88A24C5F4B8 0x52C68832 b323</code>
 +
 +<code>Does NOT seem to work with HAS_PED_BEEN_DAMAGED_BY_WEAPON. Use CLEAR_ENTITY_LAST_WEAPON_DAMAGE and HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON instead.</code>
 +==== HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON ====
 +<code cpp>BOOL WEAPON::HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(Entity entity, Hash weaponHash, int weaponType) // 0x131D401334815E94 0x6DAABB39 b323</code>
 +
 +<code>It determines what weapons caused damage:
 +
 +If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0
 +If you want to define any melee weapon, second parameter=0, third parameter=1.
 +If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.</code>
 +==== CLEAR_ENTITY_LAST_WEAPON_DAMAGE ====
 +<code cpp>void WEAPON::CLEAR_ENTITY_LAST_WEAPON_DAMAGE(Entity entity) // 0xAC678E40BE7C74D2 0xCEC2732B b323</code>
 +
 +==== SET_PED_DROPS_WEAPON ====
 +<code cpp>void WEAPON::SET_PED_DROPS_WEAPON(Ped ped) // 0x6B7513D9966FBEC0 0x3D3329FA b323</code>
 +
 +==== SET_PED_DROPS_INVENTORY_WEAPON ====
 +<code cpp>void WEAPON::SET_PED_DROPS_INVENTORY_WEAPON(Ped ped, Hash weaponHash, float xOffset, float yOffset, float zOffset, int ammoCount) // 0x208A1888007FC0E6 0x81FFB874 b323</code>
 +
 +==== GET_MAX_AMMO_IN_CLIP ====
 +<code cpp>int WEAPON::GET_MAX_AMMO_IN_CLIP(Ped ped, Hash weaponHash, BOOL p2) // 0xA38DCFFCEA8962FA 0x6961E2A4 b323</code>
 +
 +<code>p2 is mostly 1 in the scripts.</code>
 +==== GET_AMMO_IN_CLIP ====
 +<code cpp>BOOL WEAPON::GET_AMMO_IN_CLIP(Ped ped, Hash weaponHash, int* ammo) // 0x2E1202248937775C 0x73C100C3 b323</code>
 +
 +==== SET_AMMO_IN_CLIP ====
 +<code cpp>BOOL WEAPON::SET_AMMO_IN_CLIP(Ped ped, Hash weaponHash, int ammo) // 0xDCD2A934D65CB497 0xA54B0B10 b323</code>
 +
 +==== GET_MAX_AMMO ====
 +<code cpp>BOOL WEAPON::GET_MAX_AMMO(Ped ped, Hash weaponHash, int* ammo) // 0xDC16122C7A20C933 0x0B294796 b323</code>
 +
 +==== _GET_MAX_AMMO_BY_TYPE ====
 +<code cpp>BOOL WEAPON::_GET_MAX_AMMO_BY_TYPE(Ped ped, Hash ammoTypeHash, int* ammo) // 0x585847C5E4E11709  b1103</code>
 +
 +<code>Returns the max ammo for an ammo type. Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1</code>
 +==== _ADD_AMMO_TO_PED_BY_TYPE ====
 +<code cpp>void WEAPON::_ADD_AMMO_TO_PED_BY_TYPE(Ped ped, Hash ammoTypeHash, int ammo) // 0x2472622CE1F2D45F  b1103</code>
 +
 +<code>Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1</code>
 +==== SET_PED_AMMO_BY_TYPE ====
 +<code cpp>void WEAPON::SET_PED_AMMO_BY_TYPE(Ped ped, Hash ammoTypeHash, int ammo) // 0x5FD1E1F011E76D7E 0x311C52BB b323</code>
 +
 +<code>Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1</code>
 +==== GET_PED_AMMO_BY_TYPE ====
 +<code cpp>int WEAPON::GET_PED_AMMO_BY_TYPE(Ped ped, Hash ammoTypeHash) // 0x39D22031557946C1 0x54077C4D b323</code>
 +
 +==== SET_PED_AMMO_TO_DROP ====
 +<code cpp>void WEAPON::SET_PED_AMMO_TO_DROP(Ped ped, int p1) // 0xA4EFEF9440A5B0EF 0x2386A307 b323</code>
 +
 +==== SET_PICKUP_AMMO_AMOUNT_SCALER ====
 +<code cpp>void WEAPON::SET_PICKUP_AMMO_AMOUNT_SCALER(float p0) // 0xE620FD3512A04F18 0xD6460EA2 b323</code>
 +
 +==== GET_PED_AMMO_TYPE_FROM_WEAPON ====
 +<code cpp>Hash WEAPON::GET_PED_AMMO_TYPE_FROM_WEAPON(Ped ped, Hash weaponHash) // 0x7FEAD38B326B9F74 0x09337863 b323</code>
 +
 +<code>Returns the current ammo type of the specified ped's specified weapon.
 +MkII magazines will change the return value, like Pistol MkII returning AMMO_PISTOL without any components and returning AMMO_PISTOL_TRACER after Tracer Rounds component is attached.
 +Use 0xF489B44DD5AF4BD9 if you always want AMMO_PISTOL.</code>
 +==== _GET_PED_AMMO_TYPE_FROM_WEAPON_2 ====
 +<code cpp>Hash WEAPON::_GET_PED_AMMO_TYPE_FROM_WEAPON_2(Ped ped, Hash weaponHash) // 0xF489B44DD5AF4BD9  b1103</code>
 +
 +<code>Returns the base/default ammo type of the specified ped's specified weapon.
 +Use GET_PED_AMMO_TYPE_FROM_WEAPON if you want current ammo type (like AMMO_MG_INCENDIARY/AMMO_MG_TRACER while using MkII magazines) and use this if you want base ammo type. (AMMO_MG)</code>
 +==== GET_PED_LAST_WEAPON_IMPACT_COORD ====
 +<code cpp>BOOL WEAPON::GET_PED_LAST_WEAPON_IMPACT_COORD(Ped ped, Vector3* coords) // 0x6C4D0409BA1A2BC2 0x9B266079 b323</code>
 +
 +<code>Pass ped. Pass address of Vector3.
 +The coord will be put into the Vector3.
 +The return will determine whether there was a coord found or not.</code>
 +==== SET_PED_GADGET ====
 +<code cpp>void WEAPON::SET_PED_GADGET(Ped ped, Hash gadgetHash, BOOL p2) // 0xD0D7B1E680ED4A1A 0x8A256D0A b323</code>
 +
 +<code>p1/gadgetHash was always 0xFBAB5776 ("GADGET_PARACHUTE").
 +p2 is always true.</code>
 +==== GET_IS_PED_GADGET_EQUIPPED ====
 +<code cpp>BOOL WEAPON::GET_IS_PED_GADGET_EQUIPPED(Ped ped, Hash gadgetHash) // 0xF731332072F5156C 0x8DDD0B5B b323</code>
 +
 +<code>gadgetHash - was always 0xFBAB5776 ("GADGET_PARACHUTE").</code>
 +==== GET_SELECTED_PED_WEAPON ====
 +<code cpp>Hash WEAPON::GET_SELECTED_PED_WEAPON(Ped ped) // 0x0A6DB4965674D243 0xD240123E b323</code>
 +
 +<code>Returns the hash of the weapon. 
 +
 +            var num7 = WEAPON::GET_SELECTED_PED_WEAPON(num4);
 +            sub_27D3(num7);
 +            switch (num7)
 +            {
 +                case 0x24B17070:
 +
 +Also see WEAPON::GET_CURRENT_PED_WEAPON. Difference?
 +
 +-------------------------------------------------------------------------
 +
 +The difference is that GET_SELECTED_PED_WEAPON simply returns the ped's current weapon hash but GET_CURRENT_PED_WEAPON also checks the weapon object and returns true if the hash of the weapon object equals the weapon hash</code>
 +==== EXPLODE_PROJECTILES ====
 +<code cpp>void WEAPON::EXPLODE_PROJECTILES(Ped ped, Hash weaponHash, BOOL p2) // 0xFC4BD125DE7611E4 0x35A0B955 b323</code>
 +
 +<code>             WEAPON::EXPLODE_PROJECTILES(PLAYER::PLAYER_PED_ID(), func_221(0x00000003), 0x00000001);</code>
 +==== REMOVE_ALL_PROJECTILES_OF_TYPE ====
 +<code cpp>void WEAPON::REMOVE_ALL_PROJECTILES_OF_TYPE(Hash weaponHash, BOOL explode) // 0xFC52E0F37E446528 0xA5F89919 b323</code>
 +
 +<code>If `explode` true, then removal is done through exploding the projectile. Basically the same as EXPLODE_PROJECTILES but without defining the owner ped.</code>
 +==== GET_LOCKON_DISTANCE_OF_CURRENT_PED_WEAPON ====
 +<code cpp>float WEAPON::GET_LOCKON_DISTANCE_OF_CURRENT_PED_WEAPON(Ped ped) // 0x840F03E9041E2C9C 0x3612110D b323</code>
 +
 +==== GET_MAX_RANGE_OF_CURRENT_PED_WEAPON ====
 +<code cpp>float WEAPON::GET_MAX_RANGE_OF_CURRENT_PED_WEAPON(Ped ped) // 0x814C9D19DFD69679 0xB2B2BBAA b323</code>
 +
 +==== HAS_VEHICLE_GOT_PROJECTILE_ATTACHED ====
 +<code cpp>BOOL WEAPON::HAS_VEHICLE_GOT_PROJECTILE_ATTACHED(Ped driver, Vehicle vehicle, Hash weaponHash, Any p3) // 0x717C8481234E3B88 0xA57E2E80 b323</code>
 +
 +<code>Third Parameter = unsure, but pretty sure it is weapon hash
 +--> get_hash_key("weapon_stickybomb")
 +
 +Fourth Parameter = unsure, almost always -1</code>
 +==== GIVE_WEAPON_COMPONENT_TO_PED ====
 +<code cpp>void WEAPON::GIVE_WEAPON_COMPONENT_TO_PED(Ped ped, Hash weaponHash, Hash componentHash) // 0xD966D51AA5B28BB9 0x3E1E286D b323</code>
 +
 +==== REMOVE_WEAPON_COMPONENT_FROM_PED ====
 +<code cpp>void WEAPON::REMOVE_WEAPON_COMPONENT_FROM_PED(Ped ped, Hash weaponHash, Hash componentHash) // 0x1E8BE90C74FB4C09 0x412AA00D b323</code>
 +
 +==== HAS_PED_GOT_WEAPON_COMPONENT ====
 +<code cpp>BOOL WEAPON::HAS_PED_GOT_WEAPON_COMPONENT(Ped ped, Hash weaponHash, Hash componentHash) // 0xC593212475FAE340 0xDC0FC145 b323</code>
 +
 +==== IS_PED_WEAPON_COMPONENT_ACTIVE ====
 +<code cpp>BOOL WEAPON::IS_PED_WEAPON_COMPONENT_ACTIVE(Ped ped, Hash weaponHash, Hash componentHash) // 0x0D78DE0572D3969E 0x7565FB19 b323</code>
 +
 +==== REFILL_AMMO_INSTANTLY ====
 +<code cpp>BOOL WEAPON::REFILL_AMMO_INSTANTLY(Ped ped) // 0x8C0D57EA686FAD87 0x82EEAF0F b323</code>
 +
 +<code>Old name: _PED_SKIP_NEXT_RELOADING</code>
 +==== MAKE_PED_RELOAD ====
 +<code cpp>BOOL WEAPON::MAKE_PED_RELOAD(Ped ped) // 0x20AE33F3AC9C0033 0x515292C2 b323</code>
 +
 +<code>Forces a ped to reload only if they are able to; if they have a full magazine, they will not reload.</code>
 +==== REQUEST_WEAPON_ASSET ====
 +<code cpp>void WEAPON::REQUEST_WEAPON_ASSET(Hash weaponHash, int p1, int p2) // 0x5443438F033E29C3 0x65D139A5 b323</code>
 +
 +<code>Nearly every instance of p1 I found was 31. Nearly every instance of p2 I found was 0.
 +
 +REQUEST_WEAPON_ASSET(iLocal_1888, 31, 26);</code>
 +==== HAS_WEAPON_ASSET_LOADED ====
 +<code cpp>BOOL WEAPON::HAS_WEAPON_ASSET_LOADED(Hash weaponHash) // 0x36E353271F0E90EE 0x1891D5BB b323</code>
 +
 +==== REMOVE_WEAPON_ASSET ====
 +<code cpp>void WEAPON::REMOVE_WEAPON_ASSET(Hash weaponHash) // 0xAA08EF13F341C8FC 0x2C0DFE3C b323</code>
 +
 +==== CREATE_WEAPON_OBJECT ====
 +<code cpp>Object WEAPON::CREATE_WEAPON_OBJECT(Hash weaponHash, int ammoCount, float x, float y, float z, BOOL showWorldModel, float scale, Any p7, Any p8, Any p9) // 0x9541D3CF0D398F36 0x62F5987F b323</code>
 +
 +<code>Now has 8 params.</code>
 +==== GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT ====
 +<code cpp>void WEAPON::GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT(Object weaponObject, Hash addonHash) // 0x33E179436C0B31DB 0xF7612A37 b323</code>
 +
 +<code>addonHash:
 +(use WEAPON::GET_WEAPON_COMPONENT_TYPE_MODEL() to get hash value)
 +${component_at_ar_flsh}, ${component_at_ar_supp}, ${component_at_pi_flsh}, ${component_at_scope_large}, ${component_at_ar_supp_02}</code>
 +==== REMOVE_WEAPON_COMPONENT_FROM_WEAPON_OBJECT ====
 +<code cpp>void WEAPON::REMOVE_WEAPON_COMPONENT_FROM_WEAPON_OBJECT(Any p0, Any p1) // 0xF7D82B0D66777611 0xA6E7ED3C b323</code>
 +
 +==== HAS_WEAPON_GOT_WEAPON_COMPONENT ====
 +<code cpp>BOOL WEAPON::HAS_WEAPON_GOT_WEAPON_COMPONENT(Object weapon, Hash addonHash) // 0x76A18844E743BF91 0x1D368510 b323</code>
 +
 +==== GIVE_WEAPON_OBJECT_TO_PED ====
 +<code cpp>void WEAPON::GIVE_WEAPON_OBJECT_TO_PED(Object weaponObject, Ped ped) // 0xB1FA61371AF7C4B7 0x639AF3EF b323</code>
 +
 +==== DOES_WEAPON_TAKE_WEAPON_COMPONENT ====
 +<code cpp>BOOL WEAPON::DOES_WEAPON_TAKE_WEAPON_COMPONENT(Hash weaponHash, Hash componentHash) // 0x5CEE3DF569CECAB0 0xB1817BAA b323</code>
 +
 +==== GET_WEAPON_OBJECT_FROM_PED ====
 +<code cpp>Object WEAPON::GET_WEAPON_OBJECT_FROM_PED(Ped ped, BOOL p1) // 0xCAE1DC9A0E22A16D 0xDF939A38 b323</code>
 +
 +<code>Drops the current weapon and returns the object
 +
 +Unknown behavior when unarmed.</code>
 +==== _GIVE_LOADOUT_TO_PED ====
 +<code cpp>void WEAPON::_GIVE_LOADOUT_TO_PED(Ped ped, Hash loadoutHash) // 0x68F8BE6AF5CDF8A6  b505</code>
 +
 +<code>GIVE_*</code>
 +==== SET_PED_WEAPON_TINT_INDEX ====
 +<code cpp>void WEAPON::SET_PED_WEAPON_TINT_INDEX(Ped ped, Hash weaponHash, int tintIndex) // 0x50969B9B89ED5738 0xEB2A7B23 b323</code>
 +
 +<code>tintIndex can be the following:
 +
 +0 - Normal
 +1 - Green
 +2 - Gold
 +3 - Pink
 +4 - Army
 +5 - LSPD
 +6 - Orange
 +7 - Platinum</code>
 +==== GET_PED_WEAPON_TINT_INDEX ====
 +<code cpp>int WEAPON::GET_PED_WEAPON_TINT_INDEX(Ped ped, Hash weaponHash) // 0x2B9EEDC07BD06B9F 0x3F9C90A7 b323</code>
 +
 +==== SET_WEAPON_OBJECT_TINT_INDEX ====
 +<code cpp>void WEAPON::SET_WEAPON_OBJECT_TINT_INDEX(Object weapon, int tintIndex) // 0xF827589017D4E4A9 0x44ACC1DA b323</code>
 +
 +==== GET_WEAPON_OBJECT_TINT_INDEX ====
 +<code cpp>int WEAPON::GET_WEAPON_OBJECT_TINT_INDEX(Object weapon) // 0xCD183314F7CD2E57 0xD91D9576 b323</code>
 +
 +==== GET_WEAPON_TINT_COUNT ====
 +<code cpp>int WEAPON::GET_WEAPON_TINT_COUNT(Hash weaponHash) // 0x5DCF6C5CAB2E9BF7 0x99E4EAAB b323</code>
 +
 +==== _SET_PED_WEAPON_LIVERY_COLOR ====
 +<code cpp>void WEAPON::_SET_PED_WEAPON_LIVERY_COLOR(Ped ped, Hash weaponHash, Hash camoComponentHash, int colorIndex) // 0x9FE5633880ECD8ED  b1103</code>
 +
 +<code>Colors:
 +0 = Gray
 +1 = Dark Gray
 +2 = Black
 +3 = White
 +4 = Blue
 +5 = Cyan
 +6 = Aqua
 +7 = Cool Blue
 +8 = Dark Blue
 +9 = Royal Blue
 +10 = Plum
 +11 = Dark Purple
 +12 = Purple
 +13 = Red
 +14 = Wine Red
 +15 = Magenta
 +16 = Pink
 +17 = Salmon
 +18 = Hot Pink
 +19 = Rust Orange
 +20 = Brown
 +21 = Earth
 +22 = Orange
 +23 = Light Orange
 +24 = Dark Yellow
 +25 = Yellow
 +26 = Light Brown
 +27 = Lime Green
 +28 = Olive
 +29 = Moss
 +30 = Turquoise
 +31 = Dark Green</code>
 +==== _GET_PED_WEAPON_LIVERY_COLOR ====
 +<code cpp>int WEAPON::_GET_PED_WEAPON_LIVERY_COLOR(Ped ped, Hash weaponHash, Hash camoComponentHash) // 0xF0A60040BE558F2D  b1103</code>
 +
 +<code>Returns -1 if camoComponentHash is invalid/not attached to the weapon.</code>
 +==== _SET_WEAPON_OBJECT_LIVERY_COLOR ====
 +<code cpp>void WEAPON::_SET_WEAPON_OBJECT_LIVERY_COLOR(Object weaponObject, Hash camoComponentHash, int colorIndex) // 0x5DA825A85D0EA6E6  b1103</code>
 +
 +<code>Colors:
 +0 = Gray
 +1 = Dark Gray
 +2 = Black
 +3 = White
 +4 = Blue
 +5 = Cyan
 +6 = Aqua
 +7 = Cool Blue
 +8 = Dark Blue
 +9 = Royal Blue
 +10 = Plum
 +11 = Dark Purple
 +12 = Purple
 +13 = Red
 +14 = Wine Red
 +15 = Magenta
 +16 = Pink
 +17 = Salmon
 +18 = Hot Pink
 +19 = Rust Orange
 +20 = Brown
 +21 = Earth
 +22 = Orange
 +23 = Light Orange
 +24 = Dark Yellow
 +25 = Yellow
 +26 = Light Brown
 +27 = Lime Green
 +28 = Olive
 +29 = Moss
 +30 = Turquoise
 +31 = Dark Green</code>
 +==== _GET_WEAPON_OBJECT_LIVERY_COLOR ====
 +<code cpp>int WEAPON::_GET_WEAPON_OBJECT_LIVERY_COLOR(Object weaponObject, Hash camoComponentHash) // 0xB3EA4FEABF41464B  b1103</code>
 +
 +<code>Returns -1 if camoComponentHash is invalid/not attached to the weapon object.</code>
 +==== _0xA2C9AC24B4061285 ====
 +<code cpp>int WEAPON::_0xA2C9AC24B4061285(Ped ped, Hash weaponHash) // 0xA2C9AC24B4061285  b1103</code>
 +
 +<code>GET_PED_WEAPON_*</code>
 +==== _0x977CA98939E82E4B ====
 +<code cpp>void WEAPON::_0x977CA98939E82E4B(Object weaponObject, int p1) // 0x977CA98939E82E4B  b1103</code>
 +
 +<code>SET_WEAPON_OBJECT_*</code>
 +==== GET_WEAPON_HUD_STATS ====
 +<code cpp>BOOL WEAPON::GET_WEAPON_HUD_STATS(Hash weaponHash, Any* outData) // 0xD92C739EE34C9EBA 0xA9AD3D98 b323</code>
 +
 +<code>struct WeaponHudStatsData
 +{
 +    BYTE hudDamage; // 0x0000
 +    char _0x0001[0x7]; // 0x0001
 +    BYTE hudSpeed; // 0x0008
 +    char _0x0009[0x7]; // 0x0009
 +    BYTE hudCapacity; // 0x0010
 +    char _0x0011[0x7]; // 0x0011
 +    BYTE hudAccuracy; // 0x0018
 +    char _0x0019[0x7]; // 0x0019
 +    BYTE hudRange; // 0x0020
 +};
 +
 +Usage:
 +
 +WeaponHudStatsData data;
 +if (GET_WEAPON_HUD_STATS(weaponHash, (int *)&data))
 +{
 +    // BYTE damagePercentage = data.hudDamage and so on
 +}</code>
 +==== GET_WEAPON_COMPONENT_HUD_STATS ====
 +<code cpp>BOOL WEAPON::GET_WEAPON_COMPONENT_HUD_STATS(Hash componentHash, int* outData) // 0xB3CAF387AE12E9F8 0xBB5498F4 b323</code>
 +
 +==== GET_WEAPON_DAMAGE ====
 +<code cpp>float WEAPON::GET_WEAPON_DAMAGE(Hash weaponHash, Hash componentHash) // 0x3133B907D8B32053 0xE81649C0 b323</code>
 +
 +<code>This native does not return damages of weapons from the melee and explosive group.</code>
 +==== GET_WEAPON_CLIP_SIZE ====
 +<code cpp>int WEAPON::GET_WEAPON_CLIP_SIZE(Hash weaponHash) // 0x583BE370B1EC6EB4 0x8D515E66 b323</code>
 +
 +<code>// Returns the size of the default weapon component clip.
 +
 +Use it like this:
 +
 +char cClipSize[32];
 +Hash cur;
 +if (WEAPON::GET_CURRENT_PED_WEAPON(playerPed, &cur, 1))
 +{
 +    if (WEAPON::IS_WEAPON_VALID(cur))
 +    {
 +        int iClipSize = WEAPON::GET_WEAPON_CLIP_SIZE(cur);
 +        sprintf_s(cClipSize, "ClipSize: %.d", iClipSize);
 +        vDrawString(cClipSize, 0.5f, 0.5f);
 +    }
 +}
 +</code>
 +==== _GET_WEAPON_TIME_BETWEEN_SHOTS ====
 +<code cpp>float WEAPON::_GET_WEAPON_TIME_BETWEEN_SHOTS(Hash weaponHash) // 0x065D2AACAD8CF7A4  b1290</code>
 +
 +==== SET_PED_CHANCE_OF_FIRING_BLANKS ====
 +<code cpp>void WEAPON::SET_PED_CHANCE_OF_FIRING_BLANKS(Ped ped, float xBias, float yBias) // 0x8378627201D5497D 0xB4F44C6E b323</code>
 +
 +==== SET_PED_SHOOT_ORDNANCE_WEAPON ====
 +<code cpp>Object WEAPON::SET_PED_SHOOT_ORDNANCE_WEAPON(Ped ped, float p1) // 0xB4C8D77C80C0421E 0xEC2E5304 b323</code>
 +
 +<code>Returns handle of the projectile.</code>
 +==== REQUEST_WEAPON_HIGH_DETAIL_MODEL ====
 +<code cpp>void WEAPON::REQUEST_WEAPON_HIGH_DETAIL_MODEL(Entity weaponObject) // 0x48164DBB970AC3F0 0xE3BD00F9 b323</code>
 +
 +==== _SET_WEAPON_DAMAGE_MODIFIER_THIS_FRAME ====
 +<code cpp>void WEAPON::_SET_WEAPON_DAMAGE_MODIFIER_THIS_FRAME(Hash weaponHash, float damageMultiplier) // 0x4757F00BC6323CFE  b505</code>
 +
 +<code>Changes the weapon damage output by the given multiplier value. Must be run every frame.</code>
 +==== IS_PED_CURRENT_WEAPON_SILENCED ====
 +<code cpp>BOOL WEAPON::IS_PED_CURRENT_WEAPON_SILENCED(Ped ped) // 0x65F0C5AE05943EC7 0xBAF7BFBE b323</code>
 +
 +<code>This native returns a true or false value.
 +
 +Ped ped = The ped whose weapon you want to check.</code>
 +==== IS_FLASH_LIGHT_ON ====
 +<code cpp>BOOL WEAPON::IS_FLASH_LIGHT_ON(Ped ped) // 0x4B7620C47217126C 0x76876154 b323</code>
 +
 +==== SET_FLASH_LIGHT_FADE_DISTANCE ====
 +<code cpp>Any WEAPON::SET_FLASH_LIGHT_FADE_DISTANCE(float distance) // 0xCEA66DAD478CD39B 0xB0127EA7 b323</code>
 +
 +==== _SET_FLASH_LIGHT_ENABLED ====
 +<code cpp>void WEAPON::_SET_FLASH_LIGHT_ENABLED(Ped ped, BOOL toggle) // 0x988DB6FE9B3AC000  b2060</code>
 +
 +<code>Enables/disables flashlight on ped's weapon.</code>
 +==== SET_WEAPON_ANIMATION_OVERRIDE ====
 +<code cpp>void WEAPON::SET_WEAPON_ANIMATION_OVERRIDE(Ped ped, Hash animStyle) // 0x1055AC3A667F09D9 0xA5DF7484 b323</code>
 +
 +<code>Changes the selected ped aiming animation style. 
 +Note : You must use GET_HASH_KEY!
 +
 +Strings to use with GET_HASH_KEY :
 +
 +    "Ballistic",
 +    "Default",
 +  "Fat",
 +  "Female",
 +   "FirstPerson",
 +  "FirstPersonAiming",
 +    "FirstPersonFranklin",
 +  "FirstPersonFranklinAiming",
 +    "FirstPersonFranklinRNG",
 +   "FirstPersonFranklinScope",
 + "FirstPersonMPFemale",
 +  "FirstPersonMichael",
 +   "FirstPersonMichaelAiming",
 + "FirstPersonMichaelRNG",
 +    "FirstPersonMichaelScope",
 +  "FirstPersonRNG",
 +   "FirstPersonScope",
 + "FirstPersonTrevor",
 +    "FirstPersonTrevorAiming",
 +  "FirstPersonTrevorRNG",
 + "FirstPersonTrevorScope",
 +   "Franklin",
 + "Gang",
 + "Gang1H",
 +   "GangFemale",
 +   "Hillbilly",
 +    "MP_F_Freemode",
 +    "Michael",
 +  "SuperFat",
 + "Trevor"</code>
 +==== GET_WEAPON_DAMAGE_TYPE ====
 +<code cpp>int WEAPON::GET_WEAPON_DAMAGE_TYPE(Hash weaponHash) // 0x3BE0BB12D25FB305 0x013AFC13 b323</code>
 +
 +<code>0=unknown (or incorrect weaponHash)
 +1= no damage (flare,snowball, petrolcan)
 +2=melee
 +3=bullet
 +4=force ragdoll fall
 +5=explosive (RPG, Railgun, grenade)
 +6=fire(molotov)
 +8=fall(WEAPON_HELI_CRASH)
 +10=electric
 +11=barbed wire
 +12=extinguisher
 +13=gas
 +14=water cannon(WEAPON_HIT_BY_WATER_CANNON)</code>
 +==== _0xE4DCEC7FD5B739A5 ====
 +<code cpp>void WEAPON::_0xE4DCEC7FD5B739A5(Ped ped) // 0xE4DCEC7FD5B739A5 0x64646F1D b323</code>
 +
 +==== CAN_USE_WEAPON_ON_PARACHUTE ====
 +<code cpp>BOOL WEAPON::CAN_USE_WEAPON_ON_PARACHUTE(Hash weaponHash) // 0xBC7BE5ABC0879F74 0x135E7AD4 b323</code>
 +
 +<code>this returns if you can use the weapon while using a parachute</code>
 +==== _CREATE_AIR_DEFENSE_SPHERE ====
 +<code cpp>int WEAPON::_CREATE_AIR_DEFENSE_SPHERE(float x, float y, float z, float radius, float p4, float p5, float p6, Hash weaponHash) // 0x91EF34584710BE99  b573</code>
 +
 +<code>Both coordinates are from objects in the decompiled scripts. Native related to 0xECDC202B25E5CF48 p1 value. The only weapon hash used in the decompiled scripts is weapon_air_defence_gun. These two natives are used by the yacht script, decompiled scripts suggest it and the weapon hash used (valkyrie's rockets) are also used by yachts.</code>
 +==== _CREATE_AIR_DEFENSE_AREA ====
 +<code cpp>int WEAPON::_CREATE_AIR_DEFENSE_AREA(float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9, Hash weaponHash) // 0x9DA58CDBF6BDBC08  b1011</code>
 +
 +==== _REMOVE_AIR_DEFENSE_ZONE ====
 +<code cpp>BOOL WEAPON::_REMOVE_AIR_DEFENSE_ZONE(int zoneId) // 0x0ABF535877897560  b573</code>
 +
 +==== _REMOVE_ALL_AIR_DEFENSE_ZONES ====
 +<code cpp>void WEAPON::_REMOVE_ALL_AIR_DEFENSE_ZONES() // 0x1E45B34ADEBEE48E  b573</code>
 +
 +==== _SET_PLAYER_AIR_DEFENSE_ZONE_FLAG ====
 +<code cpp>void WEAPON::_SET_PLAYER_AIR_DEFENSE_ZONE_FLAG(Player player, int zoneId, BOOL enable) // 0xECDC202B25E5CF48  b573</code>
 +
 +==== _IS_ANY_AIR_DEFENSE_ZONE_INSIDE_SPHERE ====
 +<code cpp>BOOL WEAPON::_IS_ANY_AIR_DEFENSE_ZONE_INSIDE_SPHERE(float x, float y, float z, float radius, int* outZoneId) // 0xDAB963831DBFD3F4  b1103</code>
 +
 +==== _FIRE_AIR_DEFENSE_WEAPON ====
 +<code cpp>void WEAPON::_FIRE_AIR_DEFENSE_WEAPON(int zoneId, float x, float y, float z) // 0x44F1012B69313374  b573</code>
 +
 +==== _DOES_AIR_DEFENSE_ZONE_EXIST ====
 +<code cpp>BOOL WEAPON::_DOES_AIR_DEFENSE_ZONE_EXIST(int zoneId) // 0xCD79A550999D7D4F  b678</code>
 +
 +==== _SET_CAN_PED_EQUIP_WEAPON ====
 +<code cpp>void WEAPON::_SET_CAN_PED_EQUIP_WEAPON(Ped ped, Hash weaponHash, BOOL toggle) // 0xB4771B9AAF4E68E4  b1103</code>
 +
 +<code>Disables selecting the given weapon. Ped isn't forced to put the gun away. However you can't reselect the weapon if you holster then unholster. Weapon is also grayed out on the weapon wheel.</code>
 +==== _SET_CAN_PED_EQUIP_ALL_WEAPONS ====
 +<code cpp>void WEAPON::_SET_CAN_PED_EQUIP_ALL_WEAPONS(Ped ped, BOOL toggle) // 0xEFF296097FF1E509  b1103</code>
 +
 +<code>Disable all weapons. Does the same as 0xB4771B9AAF4E68E4 except for all weapons.</code>
 +
 +===== ZONE =====
 +==== GET_ZONE_AT_COORDS ====
 +<code cpp>int ZONE::GET_ZONE_AT_COORDS(float x, float y, float z) // 0x27040C25DE6CB2F4 0xC9018181 b323</code>
 +
 +==== GET_ZONE_FROM_NAME_ID ====
 +<code cpp>int ZONE::GET_ZONE_FROM_NAME_ID(const char* zoneName) // 0x98CD1D2934B76CC1 0x8EC68304 b323</code>
 +
 +<code>'zoneName' corresponds to an entry in 'popzone.ipl'.
 +
 +AIRP = Los Santos International Airport
 +ALAMO = Alamo Sea
 +ALTA = Alta
 +ARMYB = Fort Zancudo
 +BANHAMC = Banham Canyon Dr
 +BANNING = Banning
 +BEACH = Vespucci Beach
 +BHAMCA = Banham Canyon
 +BRADP = Braddock Pass
 +BRADT = Braddock Tunnel
 +BURTON = Burton
 +CALAFB = Calafia Bridge
 +CANNY = Raton Canyon
 +CCREAK = Cassidy Creek
 +CHAMH = Chamberlain Hills
 +CHIL = Vinewood Hills
 +CHU = Chumash
 +CMSW = Chiliad Mountain State Wilderness
 +CYPRE = Cypress Flats
 +DAVIS = Davis
 +DELBE = Del Perro Beach
 +DELPE = Del Perro
 +DELSOL = La Puerta
 +DESRT = Grand Senora Desert
 +DOWNT = Downtown
 +DTVINE = Downtown Vinewood
 +EAST_V = East Vinewood
 +EBURO = El Burro Heights
 +ELGORL = El Gordo Lighthouse
 +ELYSIAN = Elysian Island
 +GALFISH = Galilee
 +GOLF = GWC and Golfing Society
 +GRAPES = Grapeseed
 +GREATC = Great Chaparral
 +HARMO = Harmony
 +HAWICK = Hawick
 +HORS = Vinewood Racetrack
 +HUMLAB = Humane Labs and Research
 +JAIL = Bolingbroke Penitentiary
 +KOREAT = Little Seoul
 +LACT = Land Act Reservoir
 +LAGO = Lago Zancudo
 +LDAM = Land Act Dam
 +LEGSQU = Legion Square
 +LMESA = La Mesa
 +LOSPUER = La Puerta
 +MIRR = Mirror Park
 +MORN = Morningwood
 +MOVIE = Richards Majestic
 +MTCHIL = Mount Chiliad
 +MTGORDO = Mount Gordo
 +MTJOSE = Mount Josiah
 +MURRI = Murrieta Heights
 +NCHU = North Chumash
 +NOOSE = N.O.O.S.E
 +OCEANA = Pacific Ocean
 +PALCOV = Paleto Cove
 +PALETO = Paleto Bay
 +PALFOR = Paleto Forest
 +PALHIGH = Palomino Highlands
 +PALMPOW = Palmer-Taylor Power Station
 +PBLUFF = Pacific Bluffs
 +PBOX = Pillbox Hill
 +PROCOB = Procopio Beach
 +RANCHO = Rancho
 +RGLEN = Richman Glen
 +RICHM = Richman
 +ROCKF = Rockford Hills
 +RTRAK = Redwood Lights Track
 +SANAND = San Andreas
 +SANCHIA = San Chianski Mountain Range
 +SANDY = Sandy Shores
 +SKID = Mission Row
 +SLAB = Stab City
 +STAD = Maze Bank Arena
 +STRAW = Strawberry
 +TATAMO = Tataviam Mountains
 +TERMINA = Terminal
 +TEXTI = Textile City
 +TONGVAH = Tongva Hills
 +TONGVAV = Tongva Valley
 +VCANA = Vespucci Canals
 +VESP = Vespucci
 +VINE = Vinewood
 +WINDF = Ron Alternates Wind Farm
 +WVINE = West Vinewood
 +ZANCUDO = Zancudo River
 +ZP_ORT = Port of South Los Santos
 +ZQ_UAR = Davis Quartz
 +
 +Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json</code>
 +==== GET_ZONE_POPSCHEDULE ====
 +<code cpp>int ZONE::GET_ZONE_POPSCHEDULE(int zoneId) // 0x4334BC40AA0CB4BB 0x20AB2FC9 b323</code>
 +
 +==== GET_NAME_OF_ZONE ====
 +<code cpp>const char* ZONE::GET_NAME_OF_ZONE(float x, float y, float z) // 0xCD90657D4C30E1CA 0x7875CE91 b323</code>
 +
 +<code>AIRP = Los Santos International Airport
 +ALAMO = Alamo Sea
 +ALTA = Alta
 +ARMYB = Fort Zancudo
 +BANHAMC = Banham Canyon Dr
 +BANNING = Banning
 +BEACH = Vespucci Beach
 +BHAMCA = Banham Canyon
 +BRADP = Braddock Pass
 +BRADT = Braddock Tunnel
 +BURTON = Burton
 +CALAFB = Calafia Bridge
 +CANNY = Raton Canyon
 +CCREAK = Cassidy Creek
 +CHAMH = Chamberlain Hills
 +CHIL = Vinewood Hills
 +CHU = Chumash
 +CMSW = Chiliad Mountain State Wilderness
 +CYPRE = Cypress Flats
 +DAVIS = Davis
 +DELBE = Del Perro Beach
 +DELPE = Del Perro
 +DELSOL = La Puerta
 +DESRT = Grand Senora Desert
 +DOWNT = Downtown
 +DTVINE = Downtown Vinewood
 +EAST_V = East Vinewood
 +EBURO = El Burro Heights
 +ELGORL = El Gordo Lighthouse
 +ELYSIAN = Elysian Island
 +GALFISH = Galilee
 +GOLF = GWC and Golfing Society
 +GRAPES = Grapeseed
 +GREATC = Great Chaparral
 +HARMO = Harmony
 +HAWICK = Hawick
 +HORS = Vinewood Racetrack
 +HUMLAB = Humane Labs and Research
 +JAIL = Bolingbroke Penitentiary
 +KOREAT = Little Seoul
 +LACT = Land Act Reservoir
 +LAGO = Lago Zancudo
 +LDAM = Land Act Dam
 +LEGSQU = Legion Square
 +LMESA = La Mesa
 +LOSPUER = La Puerta
 +MIRR = Mirror Park
 +MORN = Morningwood
 +MOVIE = Richards Majestic
 +MTCHIL = Mount Chiliad
 +MTGORDO = Mount Gordo
 +MTJOSE = Mount Josiah
 +MURRI = Murrieta Heights
 +NCHU = North Chumash
 +NOOSE = N.O.O.S.E
 +OCEANA = Pacific Ocean
 +PALCOV = Paleto Cove
 +PALETO = Paleto Bay
 +PALFOR = Paleto Forest
 +PALHIGH = Palomino Highlands
 +PALMPOW = Palmer-Taylor Power Station
 +PBLUFF = Pacific Bluffs
 +PBOX = Pillbox Hill
 +PROCOB = Procopio Beach
 +RANCHO = Rancho
 +RGLEN = Richman Glen
 +RICHM = Richman
 +ROCKF = Rockford Hills
 +RTRAK = Redwood Lights Track
 +SANAND = San Andreas
 +SANCHIA = San Chianski Mountain Range
 +SANDY = Sandy Shores
 +SKID = Mission Row
 +SLAB = Stab City
 +STAD = Maze Bank Arena
 +STRAW = Strawberry
 +TATAMO = Tataviam Mountains
 +TERMINA = Terminal
 +TEXTI = Textile City
 +TONGVAH = Tongva Hills
 +TONGVAV = Tongva Valley
 +VCANA = Vespucci Canals
 +VESP = Vespucci
 +VINE = Vinewood
 +WINDF = Ron Alternates Wind Farm
 +WVINE = West Vinewood
 +ZANCUDO = Zancudo River
 +ZP_ORT = Port of South Los Santos
 +ZQ_UAR = Davis Quartz
 +
 +Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json</code>
 +==== SET_ZONE_ENABLED ====
 +<code cpp>void ZONE::SET_ZONE_ENABLED(int zoneId, BOOL toggle) // 0xBA5ECEEA120E5611 0x04E21B03 b323</code>
 +
 +==== GET_ZONE_SCUMMINESS ====
 +<code cpp>int ZONE::GET_ZONE_SCUMMINESS(int zoneId) // 0x5F7B268D15BA0739 0xB2FB5C4C b323</code>
 +
 +<code>cellphone range 1- 5 used for signal bar in iFruit phone</code>
 +==== OVERRIDE_POPSCHEDULE_VEHICLE_MODEL ====
 +<code cpp>void ZONE::OVERRIDE_POPSCHEDULE_VEHICLE_MODEL(int scheduleId, Hash vehicleHash) // 0x5F7D596BAC2E7777 0x3F0A3680 b323</code>
 +
 +<code>Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.
 +
 +Modified example from "am_imp_exp.c4", line 6406:
 +/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));
 +etc.
 +*/
 +ZONE::OVERRIDE_POPSCHEDULE_VEHICLE_MODEL(popSchedules[index], vehicleHash);
 +STREAMING::REQUEST_MODEL(vehicleHash);</code>
 +==== CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL ====
 +<code cpp>void ZONE::CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL(int scheduleId) // 0x5C0DE367AA0D911C 0x7A72A24E b323</code>
 +
 +<code>Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.
 +
 +Modified example from "am_imp_exp.c4", line 6418:
 +/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));
 +etc.
 +*/
 +STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(vehicleHash);
 +ZONE::CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL(popSchedules[index]);</code>
 +==== GET_HASH_OF_MAP_AREA_AT_COORDS ====
 +<code cpp>Hash ZONE::GET_HASH_OF_MAP_AREA_AT_COORDS(float x, float y, float z) // 0x7EE64D51E8498728 0xB5C5C99B b323</code>
 +
 +<code>Returns a hash representing which part of the map the given coords are located.
 +
 +Possible return values:
 +(Hash of) city -> -289320599
 +(Hash of) countryside -> 2072609373
 +
 +C# Example :
 +
 +Ped player = Game.Player.Character;
 +Hash h = Function.Call<Hash>(Hash.GET_HASH_OF_MAP_AREA_AT_COORDS, player.Position.X, player.Position.Y, player.Position.Z);</code>
 +
 +----
 +
 +----
 +
 +=== This page is public domain ===
 +
 +This page was generated from [[https://github.com/alloc8or/gta5-nativedb-data|alloc8or's NativeDB]]. alloc8or's NativeDB is a "fork" of [[http://dev-c.com/nativedb/|Alexander Blade's Native DB]]. Much of the documentation of the functions was done by people in the community.