Files
GTASource/game/script_headers/commands_stats.sch
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

4398 lines
196 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

USING "types.sch"
USING "commands_player.sch"
USING "commands_network.sch"
USING "commands_misc.sch"
USING "stats_enums.sch"
USING "leaderboards_enum.sch"
ENUM STATS_DISPLAY_TYPE
// Invalid/not set type
STAT_TYPE_NONE = 0,
// Base types
STAT_TYPE_INT = 1,
STAT_TYPE_FLOAT = 2,
STAT_TYPE_STRING = 3,
STAT_TYPE_BOOLEAN = 4,
STAT_TYPE_DOUBLE = 5,
STAT_TYPE_UINT8 = 6,
STAT_TYPE_UINT16 = 7,
STAT_TYPE_UINT32 = 8,
STAT_TYPE_UINT64 = 9,
// Variations of base types...
// ... These variations are use when the stat is rendered to apply certain format to then ... or just use to what u want
STAT_TYPE_TIME = 10,
STAT_TYPE_CASH = 11,
STAT_TYPE_PERCENT = 12,
STAT_TYPE_DEGREES = 13,
STAT_TYPE_WEIGHT = 14,
STAT_TYPE_MILES = 15,
STAT_TYPE_METERS = 16,
STAT_TYPE_FEET = 17,
STAT_TYPE_SECONDS = 18,
STAT_TYPE_CHART = 19,
STAT_TYPE_VELOCITY = 20,
STAT_TYPE_DATE = 21,
STAT_TYPE_POS = 22,
STAT_TYPE_TEXTLABEL = 23,
STAT_TYPE_PACKED = 24,
STAT_TYPE_USER_ID = 25,
MAX_STAT_TYPE
ENDENUM
///PURPOSE
/// Possible Title User Storage write conditions.
ENUM TUS_WRITE_COND
TUS_OPETYPE_NOT_EQUAL = 0, // Write if variable is not equal to the current value
TUS_OPETYPE_GREATER_THAN = 1, // Write if variable is greater than the current value
TUS_OPETYPE_GREATER_OR_EQUAL = 2, // Write if variable is greater than or equal to the current value
TUS_OPETYPE_LESS_THAN = 3, // Write if variable is less than the current value
TUS_OPETYPE_LESS_OR_EQUAL = 4 // Write if variable is equal to or less than the current value
ENDENUM
//PURPOSE: This structure can be used to retrieve a INT.
//STRUCT STRUCT_STAT_INT
// INT value
//ENDSTRUCT
//PURPOSE: This structure can be used to retrieve a FLOAT.
//STRUCT STRUCT_STAT_FLOAT
// FLOAT value
//ENDSTRUCT
//PURPOSE: This structure can be used to retrieve a BOOL.
//STRUCT STRUCT_STAT_BOOL
// BOOL value
//ENDSTRUCT
//PURPOSE: This structure can be used to retrieve a STRING.
//STRUCT STRUCT_STAT_STRING
// INT HashValueOfTextLabel
//ENDSTRUCT
//PURPOSE: This structure can be used to retrieve 7*INTEGER.
STRUCT STRUCT_STAT_DATE
INT Year
INT Month
INT Day
INT Hour
INT Minute
INT Seconds
INT Milliseconds
ENDSTRUCT
//PURPOSE: This structure contains the possible visibility flags for the stats in the frontend.
ENUM FRONTEND_SHOW_FLAG
// Always show the stat.
STAT_FLAG_ALWAYS_SHOW = 1
// Show only incremented stats.
,STAT_FLAG_INC_SHOW = 2
// Never show the stat.
,STAT_FLAG_NEVER_SHOW = 4
ENDENUM
//PURPOSE: Groups that should be used to write to certain leaderboard.
ENUM LB_GROUPS_
LB_GROUP_BANK_ID = 6083,
LB_GROUP_TERRITORY_ID = 6084
ENDENUM
/// PURPOSE: Reset multiplayer stats (start with string "MP") that are prefixed by a certain number (MP0 to MP4)
// Reset Perfixes are:
// - MP0_ -> perfix is 0
// - MP1_ -> perfix is 1
// - MP2_ -> perfix is 2
// - MP3_ -> perfix is 3
// - MPPLY_ -> perfix is 5
// - MPGEN_ -> perfix is 6
// - All the other stats have a perfix 7 which is the default perfix value.
NATIVE PROC STAT_RESET_ALL_ONLINE_CHARACTER_STATS(INT prefix) = "0xad7126cac02de4f6"
NATIVE PROC STAT_LOCAL_RESET_ALL_ONLINE_CHARACTER_STATS(INT prefix) = "0x9ab4f7cabff7feb1"
/// PURPOSE: Reset multiplayer stats (start with string "MPPLY")
NATIVE PROC STAT_RESET_ALL_ONLINE_MPPLAYER_STATS() = "0xe0bf6479150c33ea"
/// PURPOSE: Reset multiplayer stats (start with string "MPGEN")
NATIVE PROC STAT_RESET_ALL_ONLINE_MPGENERAL_STATS() = "0xb876906b15886dee"
//PURPOSE: This structure contains the possible FAILURE codes for the cloud load.
ENUM CLOUD_LOAD_FAILURE_CODES
//This is not a failure
LOAD_FAILED_REASON_NONE,
//Failure codes
LOAD_FAILED_REASON_FAILED_TO_LOAD,
LOAD_FAILED_REASON_FILE_CORRUPT,
LOAD_FAILED_REASON_SERVER_TIMEOUT,
LOAD_FAILED_REASON_SERVER_ERROR,
LOAD_FAILED_REASON_FILE_NOT_FOUND,
LOAD_FAILED_REASON_DIRTY_CLOUD_READ,
LOAD_FAILED_REASON_DIRTY_PROFILE_STAT_READ,
LOAD_FAILED_REASON_REFRESH_SAVEMIGRATION_STATUS,
LOAD_FAILED_REASON_MAX
ENDENUM
//PURPOSE: This structure contains the possible FAILURE codes for the cloud save.
ENUM CLOUD_SAVE_FAILURE_CODES
//client errors 4xx
HTTP_CODE_CLIENTCLOSEDREQUEST = 499 //Client Closed Request
,HTTP_CODE_FILENOTFOUND = 404 //File Not Found
,HTTP_CODE_REQUESTTIMEOUT = 408 //Request Timeout
,HTTP_CODE_TOOMANYREQUESTS = 429 //Too Many Requests
//Server errors 5xx
,HTTP_CODE_ANYSERVERERROR = 500 //Any HTTP server error
,HTTP_CODE_GATEWAYTIMEOUT = 504 //Gateway Timeout
,HTTP_CODE_NETCONNECTTIMEOUT = 599 //Network connect timeout error
ENDENUM
/// PURPOSE: Returns TRUE if a savegame LOAD operation is in progress.
NATIVE FUNC BOOL STAT_LOAD_PENDING(INT slot = -1) = "0x0144e4060b91ec2e"
/// PURPOSE: Returns TRUE if a savegame SAVE operation is in progress.
NATIVE FUNC BOOL STAT_SAVE_PENDING() = "0x6fde94f8c5742d96"
/// PURPOSE: Returns TRUE if a savegame SAVE operation is in progress or if a save requested operation is pending.
NATIVE FUNC BOOL STAT_SAVE_PENDING_OR_REQUESTED() = "0xbbf12d94ba938483"
/// PURPOSE: Request load.
NATIVE FUNC BOOL STAT_LOAD(INT slot) = "0xd7996852361ad7db"
/// PURPOSE: Returns TRUE if the savegame file was loaded.
NATIVE FUNC BOOL STAT_SLOT_IS_LOADED(INT slot) = "0x587b7bf26e4105bf"
/// PURPOSE: Returns TRUE if the load operation FAILED. failurecode is set with the failure type.
NATIVE FUNC BOOL STAT_CLOUD_SLOT_LOAD_FAILED(INT slot) = "0x7d9207534c16b2aa"
/// PURPOSE: Returns LOAD failure code. Only returns a error if STAT_CLOUD_SLOT_LOAD_FAILED() return also TRUE.
NATIVE FUNC CLOUD_LOAD_FAILURE_CODES STAT_CLOUD_SLOT_LOAD_FAILED_CODE(INT slot) = "0x27c2b98ca118874b"
/// PURPOSE: Returns TRUE if the save operation FAILED. If -1 it will return TRUE if any save failed.
NATIVE FUNC BOOL STAT_CLOUD_SLOT_SAVE_FAILED(INT slot) = "0x51f83a77b94083cb"
/// PURPOSE: Returns SAVE failure code. Only returns a error if STAT_CLOUD_SLOT_SAVE_FAILED() return also TRUE.
NATIVE FUNC INT STAT_CLOUD_SLOT_SAVE_FAILED_CODE(INT slot) = "0x55af46fe4a2116a7"
/// PURPOSE: Clear pending SAVES. If -1 it will clear all.
NATIVE PROC STAT_CLEAR_PENDING_SAVES(INT slot) = "0x0bf47acb994fc692"
/// PURPOSE: Returns TRUE if dirty reads have been detected when we load the Profile Stats.
NATIVE FUNC BOOL STAT_LOAD_DIRTY_READ_DETECTED( ) = "0xa1094269c42a1b05"
NATIVE PROC STAT_CLEAR_DIRTY_READ_DETECTED( ) = "0xf9816d1fa9b68e2f"
NATIVE PROC STAT_GET_LOCAL_SAVE_TIME(INT& year, INT& month, INT& day, INT& hour, INT& min, INT& sec) = "0x0808051294c4c2a9"
NATIVE PROC STAT_GET_PROFILE_STATS_SERVER_SAVE_TIME(INT& year, INT& month, INT& day, INT& hour, INT& min, INT& sec) = "0xd9d2e8de35ce5cca"
/// PURPOSE: Call this to block any saves requests. This is needed when the user chooses to go into mp game without saving.
NATIVE PROC STAT_SET_BLOCK_SAVES(BOOL blocksaves) = "0xc669ac81a9ecd6cf"
NATIVE FUNC BOOL STAT_GET_BLOCK_SAVES( ) = "0x08a029193b31ef73"
/// PURPOSE: Triggers an MP profile stats download, and overwrites all local stats with whatever was downloaded, even if they are not server authoritative
NATIVE PROC FORCE_CLOUD_MP_STATS_DOWNLOAD_AND_OVERWRITE_LOCAL_SAVE() = "0x0de669ef2856bfc5"
/// PURPOSE: Should be called when we are done loading the game in SP to make sure its is really safe to progress to Multiplayer.
NATIVE FUNC BOOL STAT_GET_LOAD_SAFE_TO_PROGRESS_TO_MP_FROM_SP( ) = "0xc0dce8359a3476d3"
//
// INFO:
// Delete savegame slots are 0 to 5:
// 0 - Default save category of 0, see SaveCategory="0" value in mpStatsSetup.xml
// 1 - Characters stats in slot 0, see SaveCategory="1" value in mpStatsSetup.xml, with the exception of any stat that we want
// 2 - Characters stats in slot 1, see SaveCategory="1" value in mpStatsSetup.xml, with the exception of any stat that we want
// 3 - Characters stats in slot 2, see SaveCategory="1" value in mpStatsSetup.xml, with the exception of any stat that we want
// 4 - Characters stats in slot 3, see SaveCategory="1" value in mpStatsSetup.xml, with the exception of any stat that we want
// 5 - Characters stats in slot 4, see SaveCategory="1" value in mpStatsSetup.xml, with the exception of any stat that we want
NATIVE FUNC BOOL STAT_DELETE_SLOT(INT slot) = "0x312a27f00878aaae"
//PURPOSE
// Identifies the online service section of Cloud from
// which to operate.
// Example:
// members/sc/2737264672/my/files/are/here
// members/xbl/63745723743/my/files/are/here
ENUM CLOUD_ONLINE_SERVICE
RL_CLOUD_ONLINE_SERVICE_NATIVE = 0, //"xbl" on xbox, "np" on ps3
RL_CLOUD_ONLINE_SERVICE_SC //"sc" (Social Club)
ENDENUM
NATIVE FUNC BOOL STAT_SET_CLOUD_SAVE_SERVICE(CLOUD_ONLINE_SERVICE service) = "0xd4a6dfe772ebb5e1"
//PURPOSE: DEBUG ONLY COMMAND - SET/UNSET FAILED CLOUD LOAD.
// Slot - 0 (general) to 1 to 5 (each one of the character slots)
NATIVE FUNC BOOL STAT_SET_CLOUD_SLOT_LOAD_FAILED(INT slot, BOOL failed) = "0x455bb75024bdd2bd"
//PURPOSE: Call this on slot that has failed load and needs to be reloaded.
NATIVE FUNC BOOL STAT_CLEAR_SLOT_FOR_RELOAD(INT slot) = "0xbeaed5d2d3ba3da8"
/*
Legend for ENUM SAVE_TYPE:
- Disabled
o Save is ignored.
- Deferred Profile Flush
o Performs a profile stats flush when 5 minutes have passed from last flush.
- Cloud Only
o Makes a cloud save Only. Can happen a deferred flush.
- Profile Flush Only
o Makes a Profile Flush Only.
- Profile Flush, Cloud Save
o Makes a cloud save and profile stats Flush.
- Cloud Only, Deferred Profile Flush
o Makes a cloud save and a deferred profile stats Flush.
*/
/// PURPOSE:
/// These represent commom save types so that we can choose the importance of the save.
ENUM SAVE_TYPE
//Default save where the event is not identifiable.
STAT_SAVETYPE_DEFAULT /* Disabled */
//Code Saves
,STAT_SAVETYPE_STUNTJUMP /* Deferred Profile Flush */
,STAT_SAVETYPE_CHEATER_CHANGE /* Deferred Profile Flush */
,STAT_SAVETYPE_IMMEDIATE_FLUSH /* Cloud save, Profile Stats Flush */
,STAT_SAVETYPE_COMMERCE_DEPOSIT /* Disabled */
,STAT_SAVETYPE_EXPLOITS /* Deferred Profile Flush */
,STAT_SAVETYPE_STORE /* Disabled */
,STAT_SAVETYPE_END_CODE
//Script Saves
,STAT_SAVETYPE_AMBIENT = STAT_SAVETYPE_END_CODE /* Cloud Only, Deferred Profile Flush */
,STAT_SAVETYPE_CASH /* Disabled */
,STAT_SAVETYPE_END_GAMER_SETUP /* Profile Flush Only */
,STAT_SAVETYPE_END_SHOPPING /* Profile Flush Only */
,STAT_SAVETYPE_END_GARAGE /* Cloud Only, Same as STAT_SAVETYPE_SCRIPT_MP_GLOBALS */
,STAT_SAVETYPE_END_MISSION /* Cloud Only, Deferred Profile Flush */
,STAT_SAVETYPE_END_ATM /* Disabled */
,STAT_SAVETYPE_PRE_STARTSTORE /* Profile Flush, Cloud Save */
,STAT_SAVETYPE_SCRIPT_MP_GLOBALS /* Cloud Only */
,STAT_SAVETYPE_PROLOGUE /* Cloud Only */
,STAT_SAVETYPE_CONTACTS /* Disabled */
,STAT_SAVETYPE_START_MATCH /* Disabled */
,STAT_SAVETYPE_START_SESSION /* Cloud Only */
,STAT_SAVETYPE_INTERACTION_MENU /* Cloud Only, Deferred Profile Flush */
,STAT_SAVETYPE_JOIN_SC /* Disabled */
,STAT_SAVETYPE_AMB_PROFILE_AWARD_TRACKER /* Cloud Only, Deferred Flush */
,STAT_SAVETYPE_PHOTOS /* Deferred Profile Flush */
,STAT_SAVETYPE_WEAPON_DROP /* Disabled */
,STAT_SAVETYPE_RANKUP /* Cloud Only, Deferred Profile Flush */
,STAT_SAVETYPE_END_MISSION_CREATOR /* Cloud Only, Deferred Profile Flush */
//Critical save types.
,STAT_SAVETYPE_CRITICAL
,STAT_SAVETYPE_END_CREATE_NEWCHAR = STAT_SAVETYPE_CRITICAL /* Profile Flush, Cloud Save */
,STAT_SAVETYPE_END_MATCH /* Profile Flush, Cloud Save */
,STAT_SAVETYPE_END_SESSION /* Profile Flush, Cloud Save */
,STAT_SAVETYPE_DELETE_CHAR /* Profile Flush, Cloud Save */
,STAT_SAVETYPE_MAX_NUMBER
ENDENUM
/// PURPOSE:
/// Default behaviour is to save the defaul slot (0) and the current slot that the player
/// is using, ie, the value set in stat MPPLY_LAST_MP_CHAR. If you want a diferent slot saved you can pass
/// in a value - 1 to max number os player slots.
///
NATIVE FUNC BOOL STAT_SAVE(INT slot = 0, BOOL doAssert = TRUE, SAVE_TYPE saveType = 0, INT saveReason = 0) = "0x6fea96827e2a3e4f"
/// PURPOSE:
/// Default behaviour is to never save during a job/activity. We can use this comamnd to open certain saves.
NATIVE PROC STAT_SET_OPEN_SAVETYPE_IN_JOB(SAVE_TYPE save) = "0x16b95be96a229823"
/// PURPOSE:
/// Returns TRUE if a certain save is open during a job/activity (default behaviour can be overriden by STAT_SET_OPEN_SAVETYPE_IN_JOB).
NATIVE FUNC BOOL STAT_GET_OPEN_SAVETYPE_IN_JOB(SAVE_TYPE save) = "0x5742bbdc30a3db33"
/// PURPOSE: Returns TRUE if the game is running with the -nompsavegame command line parameter
NATIVE FUNC BOOL STAT_IS_GAME_RUNNING_WITH_NOMPSAVEGAME_PARAM() = "0x8e7220fca12bdd90"
/// PURPOSE: returns true if the stat is a CODER stat.
NATIVE FUNC BOOL STAT_GET_CODER_STAT(STATSENUM keyHash) = "0x66eb2b1dfefb88f9"
/// PURPOSE:
/// Returns the hash value of the stat ID.
/// PARAMS:
/// str - stat id.
NATIVE FUNC STATSENUM STAT_HASH_ID(STRING str) = "0x7125cd61d5aeddec"
/// PURPOSE:
/// Returns TRUE is the stat key is valid.
NATIVE FUNC BOOL STAT_IS_KEY_VALID(STATSENUM keyHash) = "0x8c40bf5bd821e5c6"
/// PURPOSE: Access a stat name - DEBUG ONLY command.
NATIVE FUNC STRING STAT_GET_NAME(STATSENUM keyHash) = "0x6112c354da434263"
/// PURPOSE: Access a stat gxt label id.
NATIVE FUNC INT STAT_GET_LABEL_ID(STATSENUM keyHash) = "0x1427950c22782a0c"
/// PURPOSE: Access a stat gxt label.
NATIVE FUNC STRING STAT_GET_LABEL(STATSENUM keyHash) = "0x4f34a23778ecf4dd"
/// PURPOSE: Access a stat gxt description.
NATIVE FUNC STRING STAT_GET_DESCRIPTION(STATSENUM keyHash) = "0x0ebe6b3d14ce019b"
/// PURPOSE: Access a stat denominator label.
NATIVE FUNC INT STAT_GET_DENOMINATOR(STATSENUM keyHash) = "0x27c28df3d6afc785"
/// PURPOSE: Set the value of an Int, UInt8, UInt16, UInt32 and UInt64 stat.
NATIVE FUNC BOOL STAT_SET_INT(STATSENUM keyHash, INT data, BOOL coderAssert = true) = "0x076a5661ef5abee4"
/// PURPOSE: Set the value of an Float stat.
NATIVE FUNC BOOL STAT_SET_FLOAT(STATSENUM keyHash, FLOAT data, BOOL coderAssert = true) = "0xd9b28f1445ffcee7"
/// PURPOSE: Set the value of an boolean stat.
NATIVE FUNC BOOL STAT_SET_BOOL(STATSENUM keyHash, BOOL data, BOOL coderAssert = true) = "0x41483427efbc0047"
/// PURPOSE: Set the value of an String stat.
NATIVE FUNC BOOL STAT_SET_GXT_LABEL(STATSENUM keyHash, STRING data, BOOL coderAssert = true) = "0xa83328d394deaa9f"
/// PURPOSE: Set the value of an Date stat.
NATIVE FUNC BOOL STAT_SET_DATE(STATSENUM keyHash, STRUCT& data, int sizeOfData, BOOL coderAssert = true) = "0x8147c3d3000a3094"
/// PURPOSE: Set the value of an Date stat.
NATIVE FUNC BOOL STAT_SET_STRING(STATSENUM keyHash, STRING data, BOOL coderAssert = true) = "0x6e74a171535f0808"
/// PURPOSE: Set the value of an Date stat.
NATIVE FUNC BOOL STAT_SET_POS(STATSENUM keyHash, FLOAT X, FLOAT Y, FLOAT Z, BOOL coderAssert = true) = "0x14acf0cbd3e0dfb8"
//PURPOSE:
// Set masked element of a stat.
//PARAMS:
// offSet - number of bits counting from right were the value is going to be set.
// numberOfBits - number Of bits that should be changed.
//
// STAT_SET_MASKED_INT(statHash, statValue, 8, 8) would set the second byte in a stat
//
NATIVE FUNC BOOL STAT_SET_MASKED_INT(STATSENUM keyHash, INT data, INT offSet, INT numberOfBits, BOOL coderAssert = true) = "0xe2ea061e6f7b236f"
/// PURPOSE: Set the value of an user id stat.
NATIVE FUNC BOOL STAT_SET_USER_ID(STATSENUM keyHash, STRING data, BOOL coderAssert = true) = "0xed186f54433a4358"
/// PURPOSE: Set the current posix time in a stat.
NATIVE FUNC BOOL STAT_SET_CURRENT_POSIX_TIME(STATSENUM keyHash, BOOL coderAssert = true) = "0x39ba1f3b9759059d"
/// PURPOSE: Get the value of an Int, UInt8, UInt16, UInt32 and UInt64 stat.
NATIVE FUNC BOOL STAT_GET_INT(STATSENUM keyHash, INT& data, INT playerIndex = -1) = "0x61481f9fbb1c7edd"
/// PURPOSE: Get the value of an Float stat.
NATIVE FUNC BOOL STAT_GET_FLOAT(STATSENUM keyHash, FLOAT& data, INT playerIndex = -1) = "0x9a69a54179cea8e5"
/// PURPOSE: Get the value of an boolean stat.
NATIVE FUNC BOOL STAT_GET_BOOL(STATSENUM keyHash, BOOL& data, INT playerIndex = -1) = "0x1bb27397611554ce"
/// PURPOSE: Get the value of an String stat.
NATIVE FUNC BOOL STAT_GET_GXT_LABEL(STATSENUM keyHash, INT& data, INT playerIndex = -1) = "0x7354a4c703aaeb34"
/// PURPOSE: Get the value of an Date stat.
NATIVE FUNC BOOL STAT_GET_DATE(STATSENUM keyHash, STRUCT& data, int sizeOfData, INT playerIndex = -1) = "0x585e6867d0d71962"
/// PURPOSE: Get the value of an String stat.
NATIVE FUNC STRING STAT_GET_STRING(STATSENUM keyHash, INT playerIndex = -1) = "0xafca9e302ef8c3e0"
/// PURPOSE: Get the value of an String stat.
NATIVE FUNC BOOL STAT_GET_POS(STATSENUM keyHash, FLOAT& X, FLOAT& Y, FLOAT& Z, INT playerIndex = -1) = "0x335be6bc12888abe"
//PURPOSE:
// Get masked element of a stat.
//PARAMS:
// offSet - number of bits counting from right were the value is going to be set.
// numberOfBits - number Of bits that should be changed.
//
// eg STAT_GET_MASKED_INT(statHash, statValue, 8, 8) would get the second byte in a stat
//
NATIVE FUNC BOOL STAT_GET_MASKED_INT(STATSENUM keyHash, INT& data, INT offSet, INT numberOfBits, INT playerIndex = -1) = "0xf881d9ecfc43b6ea"
/// PURPOSE: Get the value of an User Id stat.
NATIVE FUNC STRING STAT_GET_USER_ID( STATSENUM keyHash ) = "0x45a1e17ec0480db4"
/// PURPOSE: Get the Posix time difference from the posix time stored in the stat value.
NATIVE FUNC INT STAT_GET_POSIX_TIME_DIFFERENCE( STATSENUM keyHash ) = "0x485eee9aae9f082b"
/// PURPOSE:
/// Increments the stat with the new value and display's a message.
/// PARAMS:
/// keyHash - stat id.
/// value -
NATIVE PROC STAT_INCREMENT(STATSENUM keyHash, FLOAT value) = "0xfa38cf6ffd2bf050"
/// PURPOSE:
/// Decrements the stat with the new value and display's a message.
/// PARAMS:
/// keyHash - stat id.
/// value -
NATIVE PROC STAT_DECREMENT(STATSENUM keyHash, FLOAT value) = "0x155e99bf32775ddc"
/// PURPOSE:
/// Only update the stat if the new value is greater than the current value.
/// PARAMS:
/// keyHash - stat id.
/// value -
NATIVE PROC STAT_SET_GREATER(STATSENUM keyHash, FLOAT value) = "0x53b0eb1ed6aea380"
/// PURPOSE:
/// Only update the stat if the new value is lesser than the current value.
/// PARAMS:
/// keyHash - stat id.
/// value -
NATIVE PROC STAT_SET_LESSER(STATSENUM keyHash, FLOAT value) = "0x537b9584db71d36c"
/// PURPOSE:
/// Sets the stat visibility flag in the frontend.
/// PARAMS:
/// keyHash - stat id.
/// flag -
NATIVE PROC STAT_SET_FRONTEND_VISIBILITY_FLAG(STATSENUM keyHash, FRONTEND_SHOW_FLAG flag) = "0xffce250441ce7e62"
/// PURPOSE:
/// Return the stat visibility flag in the frontend. :Command will assert if the stat is not present in any of the frontend list.
/// PARAMS:
/// keyHash - stat id.
NATIVE FUNC INT STAT_GET_FRONTEND_VISIBILITY_FLAG(STATSENUM keyHash) = "0xb9bd912d7964eefa"
/// PURPOSE:
/// Returns TRUE is the stat type supports STRINGS.
/// PARAMS:
/// keyHash - stat id.
NATIVE FUNC BOOL STAT_GET_SUPPORTS_STRINGS(STATSENUM keyHash) = "0x591ea0765690adce"
/// PURPOSE:
/// Returns TRUE is the stat type supports LABELS.
/// PARAMS:
/// keyHash - stat id.
NATIVE FUNC BOOL STAT_GET_SUPPORTS_LABELS(STATSENUM keyHash) = "0x6cb367057d418b9e"
/// PURPOSE: This command can be used on stats that store timer values in milliseconds (like TOTAL_PLAYING_TIME) but their types are
/// are too big to be converted to hours in script.
NATIVE FUNC INT STAT_GET_NUMBER_OF_DAYS(STATSENUM keyHash) = "0xdb9dd213ed802a90"
NATIVE FUNC INT STAT_GET_NUMBER_OF_HOURS(STATSENUM keyHash) = "0x0896ca1f4f0d8af1"
NATIVE FUNC INT STAT_GET_NUMBER_OF_MINUTES(STATSENUM keyHash) = "0xbb9770585f7d56a2"
NATIVE FUNC INT STAT_GET_NUMBER_OF_SECONDS(STATSENUM keyHash) = "0x687230a23f87a4cb"
/// PURPOSE: These commands convert a value in milliseconds into days, hours, minutes, seconds and milliseconds.
NATIVE FUNC INT STAT_CONVERT_MILLISECONDS_TO_DAYS(INT milliseconds) = "0x5d186411e9fa592e"
NATIVE FUNC INT STAT_CONVERT_MILLISECONDS_TO_HOURS(INT milliseconds) = "0x126361977a4e3c28"
NATIVE FUNC INT STAT_CONVERT_MILLISECONDS_TO_MINUTES(INT milliseconds) = "0x4641d1c177c9b3c6"
NATIVE FUNC INT STAT_CONVERT_MILLISECONDS_TO_SECONDS(INT milliseconds) = "0x5579164d8ffbdcf8"
NATIVE FUNC INT STAT_GET_MILLISECONDS_TO_NEAREST_SECOND(INT milliseconds) = "0x9faa30d4498b3a47"
/// PURPOSE: converts value in milliseconds to a STRUCT_STAT_DATE.
NATIVE PROC STAT_GET_TIME_AS_DATE(INT milliseconds, STRUCT_STAT_DATE& data) = "0xb9287757fd89a7e2"
/// PURPOSE: converts value in TIME_DATATYPE to a STRUCT_STAT_DATE.
NATIVE PROC GET_NET_TIMER_AS_DATE(TIME_DATATYPE time, STRUCT_STAT_DATE& data) = "0x2d265cd5dc21337b"
// PURPOSE: make sure the packed stats offsets are matching between script and code.
NATIVE PROC STATS_CHECK_PACKED_STATS_END_VALUE(INT value) = "0x06b559d06f5714fc"
// --- MetaStats ---------------------------------------------------------------------------------------------------------------
/// PURPOSE:
/// Get the percentage of times that a player entered cover and fired a shot (or shots) - versus not firing a shot
/// PARAMS:
/// szStatPrefix - Player / Mode prefix (i.e. SP0, SP1, MP0, MP4, etc.). Pass in empty string for current player.
NATIVE FUNC FLOAT STAT_GET_PERCENT_SHOTS_IN_COVER(STRING szStatPrefix) = "0x91194ad83a654cef"
/// PURPOSE:
/// Get the percentage of times that a player crouched and fired a shot (or shots) - versus not firing a shot
/// PARAMS:
/// szStatPrefix - Player / Mode prefix (i.e. SP0, SP1, MP0, MP4, etc.). Pass in empty string for current player.
NATIVE FUNC FLOAT STAT_GET_PERCENT_SHOTS_IN_CROUCH(STRING szStatPrefix) = "0x6f21ca40b1b4bebf"
// --- PlayStats ---------------------------------------------------------------------------------------------------------------
/// PURPOSE:
/// Tells the PlayStats that the player has received an invite from a NPC.
/// PARAMS:
/// npcNameIdentifier - NPC name identifier.
NATIVE PROC PLAYSTATS_NPC_INVITE(TEXT_LABEL_31& npcNameIdentifier) = "0x3a74fc046fc85ede"
/// PURPOSE:
/// Tells the PlayStats that the player won XP
/// PARAMS:
/// amount - amount of xp
/// type - string hash of the xp type < actual XP reason >
/// category - string hash of the xp category < the bucket it goes into (e.g. if its an award, even though there are many individual award sources) >
NATIVE PROC PLAYSTATS_AWARD_XP(INT amount, INT type, INT category) = "0x5842ea5d6a4620e2"
/// PURPOSE:
/// Way for the analytics team to detect actions taken by background scripts.
/// PARAMS:
/// type - string with the type of action.
/// data - any relevant data related to this action.
NATIVE PROC PLAYSTATS_BACKGROUND_SCRIPT_ACTION(STRING type, INT data) = "0x8f21ac03c0a56f7b"
/// PURPOSE:
/// Tells the PlayStats that the player has just ranked UP.
NATIVE PROC PLAYSTATS_RANK_UP(INT rank) = "0xc22e65256a3e9882"
/// PURPOSE:
/// Tells the PlayStats that the player has started a session in OFFLINE MODE.
NATIVE PROC PLAYSTATS_STARTED_SESSION_IN_OFFLINEMODE( ) = "0xda10adb0fc8885a3"
/// PURPOSE:
/// Tells the PlayStats that the player has done and is going back to freemode - call when we are done with a chain.
NATIVE PROC PLAYSTATS_LEAVE_JOB_CHAIN( INT macaddresshash, INT posixtime, INT curr_macaddresshash, INT curr_posixtime, INT leavereason ) = "0xd2384f6e9d32e19e"
/// PURPOSE:
/// Tells the PlayStats that the player hasfinished an activity.
NATIVE PROC PLAYSTATS_ACTIVITY_DONE( INT location, INT activity ) = "0xde6c5252c20a2df4"
/// PURPOSE:
/// Tells the PlayStats that a mission was started.
/// PARAM NOTES:
/// The string should be the entry in a .txt file.
/// The stat will be recorded and later analyzed.
/// Make sure the mission also does a PLAYSTATS_MISSION_PASSED or PLAYSTATS_MISSION_FAILED.
/// PARAMS:
/// pMissionName -
NATIVE PROC PLAYSTATS_MISSION_STARTED(STRING pMissionName, INT variant = 0, INT checkpoint = 0, BOOL replaying = FALSE) = "0xb85c479d5c3ea069"
/// PURPOSE:
/// Tells the PlayStats that a mission is over.
/// PARAM NOTES:
/// The string should be the entry in a .txt file.
/// The stat will be recorded and later analyzed.
/// Make sure the mission also does a PLAYSTATS_MISSION_STARTED first.
/// PARAMS:
/// pMissionName -
NATIVE PROC PLAYSTATS_MISSION_OVER(STRING pMissionName, INT variant = 0, INT checkpoint = 0, BOOL failed = FALSE, BOOL canceled = FALSE, BOOL skipped = FALSE) = "0xa77f683fa0e7b1f5"
/// PURPOSE:
/// Tells the PlayStats that a mission is over.
/// PARAM NOTES:
/// The string should be the entry in a .txt file.
/// The stat will be recorded and later analyzed.
/// Make sure the mission also does a PLAYSTATS_MISSION_STARTED first.
/// PARAMS:
/// pMissionName -
NATIVE PROC PLAYSTATS_MISSION_CHECKPOINT(STRING pMissionName, INT variant = 0, INT previousCheckpoint = 0, INT checkpoint = 0) = "0x0b33380e33b61778"
/// PURPOSE:
/// Tells the PlayStats that a random mission is over.
/// PARAMS:
/// pMissionName - Mission name.
/// outcome - Value MUST be > 0.
/// pMissionName - Time spent in the random event
NATIVE PROC PLAYSTATS_RANDOM_MISSION_DONE(STRING pMissionName, INT outcome, INT timespent, INT attempts = 0) = "0x151e30e68b218815"
/// PURPOSE:
/// Tells the PlayStats that a bet has been done by the local player.
NATIVE PROC PLAYSTATS_ROS_BET(INT amount, INT activity, INT playerIndex, FLOAT commission = 0.0) = "0x35b04e6527be3f22"
/// PURPOSE:
/// Tells the PlayStats that a match has ended. Must be called before PLAYSTATS_MATCH_ENDED is called.
/// PARAMS:
/// xpEarned - Total XP earned in the match.
/// cashEarned - Total cash earned in the match.
/// highestKillStreak - Highest kill streak achieved in the match.
/// numberOfKills - Total enemy kills in the match (should not include suicides or teamkills).
/// numberOfDeaths - Total player deaths in the match.
/// numberOfSuicides - Total player suicides in the match.
/// scoreboardRanking - The scoreboard ranking of the player at the end of the match (1st to Nth).
/// teamId - Team the player was on at the end of the match.
/// crewId - Active crew the player had selected during the match, if applicable.
/// vehicleId - Current vehicle ID (Model Key Hash) at the end of the match (probably only applicable for race modes).
/// numberOfHeadshots - Total number of Headshots in the match.
NATIVE PROC PLAYSTATS_POST_MATCH_BLOB(INT xpEarned
,INT cashEarned
,INT highestKillStreak
,INT numberOfKills
,INT numberOfDeaths
,INT numberOfSuicides
,INT scoreboardRanking
,INT teamId
,INT crewId
,INT vehicleId
,INT numberOfHeadshots
,INT cashEarnedFromBets
,INT cashAtStart
,INT cashAtEnd
,INT betWon = -1
,INT survivedWave = -1) = "0x99bfa8c541ded993"
/// PURPOSE:
/// Tells the PlayStats that a race checkpoint has been reached.
NATIVE PROC PLAYSTATS_RACE_CHECKPOINT(INT vehicleId,INT checkpointId,INT racePos,INT raceTime,INT checkpointTime) = "0x610807472a433d37"
/// PURPOSE:
/// Call this to create a match history ID to be shared among all machines participating in
/// the match. The host should call this and share both int's in the broadcast data.
NATIVE FUNC INT PLAYSTATS_CREATE_MATCH_HISTORY_ID( ) = "0x61e9186ebd083d85"
NATIVE FUNC BOOL PLAYSTATS_CREATE_MATCH_HISTORY_ID_2(INT& hashedMac, INT& posixTime) = "0x034e89ed97681ac2"
//Struct to send the match start info.
STRUCT MatchStartInfo
INT m_matchType
INT m_hashedMac
INT m_posixTime
INT m_oncalljointime
INT m_oncalljoinstate
INT m_missionDifficulty
INT m_MissionLaunch
INT m_RootContentId
ENDSTRUCT
/// PURPOSE:
/// Tells the PlayStats that a match has started.
/// The host needs to call PLAYSTATS_CREATE_MATCH_HISTORY_ID and share the values
/// of matchHistoryIdA & matchHistoryIdB among all match participants.
NATIVE PROC PLAYSTATS_MATCH_STARTED(STRING matchCreator, STRING uniqueMatchId, MatchStartInfo& info) = "0x47236238b4e9bc2d"
/// PURPOSE:
/// Tells the PlayStats that a match has ended.
NATIVE PROC PLAYSTATS_MATCH_ENDED(INT matchType, STRING matchCreator, STRING uniqueMatchId, BOOL isTeamDeathmatch = FALSE, INT raceType = -1, BOOL leftInProgress = FALSE) = "0x72dbf875c8c4dd8a"
/// PURPOSE:
/// Metric that gets sent when a piece of clothing is bought.
/// PARAMS:
/// itemHash - Unique Id of the item of clothing.
/// cashSpent - Amount which the player paid for the item.
/// shopNameHash - Hash of the shop name.
/// extraItemHash - additional item type for weapon/vehicle/other hashes.
/// colorHash - Parameter for the type of colour being applied when purchasing vehicle colours (i.e. classic/metallic/matte).
NATIVE PROC PLAYSTATS_SHOP_ITEM(INT itemHash, INT cashSpent, INT shopNameHash, INT extraItemHash = 0, INT colorHash = 0) = "0xb18779ac440ad5c8"
// --- Playstats for multiplayer ambient missions
CONST_INT MAX_CRATE_ITEM_HASHS 8
STRUCT ItemHashArray
INT m_Hashs[MAX_CRATE_ITEM_HASHS]
ENDSTRUCT
NATIVE PROC PLAYSTATS_CRATE_DROP_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned, INT weaponHash, INT otherItemsHash, INT enemiesKilled, ItemHashArray& specialItemHashs, BOOL collectedBodyArmour) = "0x35dae173a02be828"
NATIVE PROC PLAYSTATS_CRATE_CREATED(FLOAT X, FLOAT Y, FLOAT Z) = "0x25d1e85627077680"
NATIVE PROC PLAYSTATS_HOLD_UP_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned, INT shopkeepersKilled) = "0x18d3ffc58bbbdfdc"
NATIVE PROC PLAYSTATS_IMPORT_EXPORT_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned, VEHICLE_INDEX vehicleNetworkID) = "0xb69482ecd5b39c5d"
NATIVE PROC PLAYSTATS_SECURITY_VAN_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned) = "0xb9e49b8648e5c6a0"
//Struct to send the RToP info.
STRUCT RaceToPointInfo
INT m_LocationHash
INT m_MatchId
INT m_NumPlayers
BOOL m_RaceWon
VECTOR m_RaceStartPos
VECTOR m_RaceEndPos
ENDSTRUCT
NATIVE PROC PLAYSTATS_RACE_TO_POINT_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned, RaceToPointInfo& rtopInfo) = "0x6eaeb9d07327cb9f"
NATIVE PROC PLAYSTATS_PROSTITUTE_MISSION_DONE(INT ambientMissionId, INT xpEarned, INT cashEarned, INT cashSpent, INT numberOfServices, BOOL playerWasTheProstitute) = "0xdb7ed300b8bf62bd"
/// PURPOSE:
/// Metric that gets sent when a hidden package is acquired by the player.
/// PARAMS:
/// id - Unique package id.
/// position - package position, NOT player position.
NATIVE PROC PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE(INT id) = "0x599a5bfb6e56ddfc"
/// PURPOSE:
/// Metric set when a website is visited
NATIVE PROC PLAYSTATS_WEBSITE_VISITED(INT siteId, INT timeSpent = 0) = "0x615e4a419d932af4"
/// PURPOSE:
/// Metric set when an oddjob is completed.
/// PARAMS:
/// timeSpent - Time spent in odd job.
/// oddJobId - odd job identifier - can be the mini-game enum value.
/// extraOddJobId - default value is 0. Set only to distinguish different Locations of the mini-game.
NATIVE PROC PLAYSTATS_ODDJOB_DONE(INT timeSpent, INT oddJobId, INT extraOddJobId = 0) = "0xa5c246361b61ed23"
/// PURPOSE:
/// Metric set when you end a friend Activity!
/// PARAMS:
/// char - Characters that went in the friend activity.
/// outcome - and a int that represents:
/// ---- 1 -> Activity finished successfully.
/// ---- 0 -> Activity Failed
/// ---- 2 -> Activity aborted
NATIVE PROC PLAYSTATS_FRIEND_ACTIVITY(INT char, INT outcome) = "0x1a2781cd7cd742e6"
/// PURPOSE:
/// Metric set when the player prop changes.
NATIVE PROC PLAYSTATS_PROP_CHANGE(INT pedIndex, INT position, INT newPropIndex, INT newTextIndex) = "0x182f52ff6d37bd4a"
/// PURPOSE:
/// Metric set when the player cloths changes.
NATIVE PROC PLAYSTATS_CLOTH_CHANGE(INT pedIndex, INT componentID, INT drawableID, INT textureID, INT paletteID) = "0xb3a9c248df46950d"
/// PURPOSE:
/// Metric set when the weapon mode changes. If the wepon is not changing a mod and just adding then set modeIdFrom to 0.
/// PARAMS:
/// modIdFrom - Default value is 0. Set a valid mod id only if we are substituting a mod.
/// modIdTo - Must always have a valid mod id since this command is called when we set a mod.
NATIVE PROC PLAYSTATS_WEAPON_MODE_CHANGE(WEAPON_TYPE weaponHash, WEAPONCOMPONENT_TYPE modIdTo, WEAPONCOMPONENT_TYPE modIdFrom) = "0x79aed75673bc26f9"
/// PURPOSE:
/// Metric set when the player sets a cheat.
/// PARAMS:
/// cheatString - String that uniquelly identifies the cheat.
NATIVE PROC PLAYSTATS_CHEAT_APPLIED(STRING cheatString) = "0x0a5ebd0f656b440c"
/// PURPOSE:
/// Metric set when the player is idle for a periode of time.
/// PARAMS:
/// idleTime - time idfle, must be > 0.
NATIVE PROC PLAYSTATS_IDLE_KICK(INT idleTime) = "0xa5741f10697506f4"
/// PURPOSE:
/// Convenient way of passing loads of params into the metric PLAYSTATS_JOB_ACTIVITY_ENDED.
STRUCT JobActivityInfo
//Integer Values
INT m_Cash
INT m_BetCash
INT m_CashStart
INT m_CashEnd
INT m_MissionLaunch
INT m_OriginalHashMac // First Macaddress Hash passed in PLAYSTATS_MATCH_STARTED. created using PLAYSTATS_CREATE_MATCH_HISTORY_ID_2
INT m_OriginalPosixTime // First Posix Time Hash passed in PLAYSTATS_MATCH_STARTED. created using PLAYSTATS_CREATE_MATCH_HISTORY_ID_2
//Boolean Values
BOOL m_isTeamDeathmatch
BOOL m_leftInProgress
BOOl m_dnf
BOOl m_aggregateScore
//Unsigned Values (must be >= 0)
INT m_XP
INT m_HighestKillStreak
INT m_Kills
INT m_Deaths
INT m_Suicides
INT m_Rank
INT m_CrewId
INT m_VehicleId
INT m_betWon
INT m_survivedWave
INT m_TeamId
INT m_MatchType
INT m_raceType
INT m_raceSubtype
INT m_matchResult
INT m_jpEarned
INT m_numLaps
INT m_playlistID
INT m_celebrationanim
INT m_quickplayanim
INT m_StuntLaunchCorona
//Boolean Values
BOOL m_ishead2head
BOOL m_isPlaylistChallenge
BOOL m_jobVisibilitySetInCorona //Setup Job Visibility - Was it set to open/closed in corona?
BOOL m_weaponsfixed //Include whether the DM had weapons set to 'fixed'
BOOL m_sessionVisible
INT m_jobDifficulty
INT m_outfitStyle
INT m_outfitChoiceType //Outfits: Owned or pre-sets and Outfits: Presets - which preset for which role
INT m_playlistHashMac
INT m_playlistPosixTime
INT m_totalPoints
INT m_largeTargetsHit
INT m_mediumTargetsHit
INT m_smallTargetsHit
INT m_tinyTargetsHit
ENDSTRUCT
/// PURPOSE:
/// Metric set when a job activity has ended
NATIVE PROC PLAYSTATS_JOB_ACTIVITY_END(STRING creator, STRING matchId, JobActivityInfo& info, STRING playlistid) = "0x7c2f437d5dcee019"
STRUCT JobBInfo
//Bool indicating whether the player is the host
BOOL m_ishost
//Role the player took on
INT m_role
INT m_cashcutpercentage
INT m_kills
INT m_deaths
INT m_clothes
INT m_Cash
INT m_CashStart
INT m_CashEnd
INT m_MissionLaunch
INT m_XP
INT m_Suicides
INT m_Rank
INT m_CrewId
INT m_TeamId
INT m_matchResult
INT m_jpEarned
INT m_celebrationanim
INT m_quickplayanim
BOOL m_sessionVisible
BOOL m_leftInProgress
INT m_leaderscashcutpercentage
INT m_lesterCalled //Received Lester Phone Call?
INT m_heistRootConstentId //Heist root content ID
INT m_TimePlanningBoard //Time Spent on Planning Board
INT m_outfitChoiceBy //Outfits: Leader choice or crew choice?
INT m_outfitChoiceType //Outfits: Owned or pre-sets and Outfits: Presets - which preset for which role
INT m_outfitStyle //Overall clothing setup chosen by the leader
INT m_difficulty //Difficulty set in corona
INT m_1stperson //NG: 1st person set in corona - forced or allowed choice?
INT m_medal //Which Role got Which Medal
INT m_teamLivesUsed //Number of Team Lives used?
INT m_failureReason //Reason for failure
INT m_failureRole //Which role caused failure
INT m_usedQuickRestart //0 = no restart used, 1 = Full restart, 2 = Checkpoint
INT m_usedTripSkip //Used skip trip?
//SPECIFIC MISSIONS
INT m_spookedCops //Prison - Station - spooked cops?
INT m_cashLost //Pacific - Finale - amount of Cash lost from being shot
INT m_cashPickedUp //Pacific - Finale - Cash picked up in cash pick up minigame
//ON MISSION 'MINIGAMES'
INT m_minigameTimeTaken0
INT m_minigameNumberOfTimes0
INT m_minigameTimeTaken1
INT m_minigameNumberOfTimes1
INT m_heistSessionHashMac
INT m_heistSessionIdPosixTime
INT m_maskChoice
ENDSTRUCT
/// PURPOSE:
/// Metric set when a job B has ended.
NATIVE PROC PLAYSTATS_JOB_BEND(STRING creator, STRING matchId, JobBInfo& info, STRING playlistid) = "0x354e2254fc9758f6"
/// PLAYSTATS function which covers anything being given to the player using the quick fix tool
ENUM QUICKFIX_ELEMENT
QF_NONE = 0
,QF_WEAPON_GIVE
,QF_WEAPON_REMOVE
,QF_VEHICLE_GIVE
,QF_VEHICLE_REMOVE
,QF_APARTMENT_GIVE
,QF_APARTMENT_REMOVE
,QF_CLOTHES_GIVE
,QF_CLOTHES_REMOVE
,QF_PROGRESS_GIVE
ENDENUM
STRUCT JobLtsInfo
//Number of rounds set
INT m_roundsset
//number of rounds played
INT m_roundsplayed
INT m_Cash
INT m_BetCash
INT m_CashStart
INT m_CashEnd
INT m_MissionLaunch
INT m_1stHashMac
INT m_1stPosixTime
INT m_XP
INT m_HighestKillStreak
INT m_Kills
INT m_Deaths
INT m_Suicides
INT m_Rank
INT m_CrewId
INT m_betWon
INT m_TeamId
INT m_matchResult
INT m_jpEarned
INT m_playlistID
INT m_celebrationanim
INT m_quickplayanim
BOOL m_ishead2head
BOOL m_isPlaylistChallenge
BOOL m_jobVisibilitySetInCorona
BOOL m_weaponsfixed
BOOL m_sessionVisible
BOOL m_leftInProgress
INT m_playlistHashMac
INT m_playlistPosixTime
INT m_outfitStyle
INT m_outfitChoiceType //Outfits: Owned or pre-sets and Outfits: Presets - which preset for which role
ENDSTRUCT
/// PURPOSE:
/// Metric set when a job LTS has ended.
NATIVE PROC PLAYSTATS_JOB_LTS_END(STRING creator, STRING matchId, JobLtsInfo& info, STRING playlistid) = "0xf392afc86853f9a8"
STRUCT JobLtsRoundInfo
//Number of round ended number
INT m_roundNumber
//number of rounds played so far
INT m_roundsplayed
INT m_Cash
INT m_BetCash
INT m_CashStart
INT m_CashEnd
INT m_MissionLaunch
INT m_1stHashMac
INT m_1stPosixTime
INT m_XP
INT m_Kills
INT m_Deaths
INT m_Suicides
INT m_Rank
INT m_CrewId
INT m_betWon
INT m_TeamId
INT m_matchResult
INT m_jpEarned
INT m_playlistID
BOOL m_leftInProgress
INT m_playlistHashMac
INT m_playlistPosixTime
INT m_outfitStyle
INT m_outfitChoiceType //Outfits: Owned or pre-sets and Outfits: Presets - which preset for which role
ENDSTRUCT
/// PURPOSE:
/// Metric set when a job LTS has ended.
NATIVE PROC PLAYSTATS_JOB_LTS_ROUND_END(STRING creator, STRING matchId, JobLtsRoundInfo& info, STRING playlistid) = "0xee86a0e0fa49d8ce"
/// PURPOSE:
/// Metric set to cover the quick fix tool.
NATIVE PROC PLAYSTATS_QUICKFIX_TOOL(QUICKFIX_ELEMENT anElement, STRING ItemName) = "0x31d208859887778e"
/// PURPOSE:
/// Metric set the multiplayer game join type.
NATIVE PROC PLAYSTATS_SET_JOIN_TYPE(INT type) = "0xcdb137fb56218d0b"
/// PURPOSE:
/// Metric used to track the freemode creator usage
NATIVE PROC PLAYSTATS_CREATOR_USAGE(INT timeSpent, INT numberOfTries, INT numberOfEarlyQuits, BOOL isCreating, INT missionId) = "0xd18ba756f08547a6"
/// PURPOSE:
/// Metric used to track the cheaters pulling the cable in heists
NATIVE PROC PLAYSTATS_HEIST_SAVE_CHEAT(INT value, INT secondValue=0) = "0xf3e9ac7d5adcefff"
/// PURPOSE:
/// Metric used to track the cheaters pulling the cable in heists
NATIVE PROC PLAYSTATS_APPEND_STARTER_PACK_APPLIED(INT item, INT amount) = "0x377457ac40fbc473"
STRUCT VideoClipMetric
INT m_characterHash
INT m_timeOfDay
INT m_weather
BOOL m_wantedLevel
INT m_pedDensity
INT m_vehicleDensity
BOOL m_restrictedArea
BOOL m_invulnerability
ENDSTRUCT
/// PURPOSE:
/// Metric used to track the cheaters pulling the cable in heists
NATIVE PROC PLAYSTATS_APPEND_DIRECTOR_METRIC(VideoClipMetric& value) = "0x8f37c5ad44e3e390"
STRUCT scrFmEventAmbientMission
INT m_uid0 //Unique Mission ID - for that instance, shared between participating players.
INT m_uid1 //Unique Mission ID - for that instance, shared between participating players.
INT m_playersNotified //Players Notified.
INT m_playersParticipating //Number of Players Participating, who collected a crate in any given drop.
INT m_playersLeftInProgress //Players who left in progress.
INT m_endReason //Reason why script ended.
INT m_cashEarned //Cash Earned.
INT m_rpEarned //RP Earned.
INT m_notifiedTime //Notification PosixTime.
INT m_startTime //Start PosixTime.
INT m_timeTakenToComplete //Time Taken to complete.
INT m_timeTakenForObjective //Time between notifications being sent and someone actually completing of the objectives.
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_PENNEDIN(scrFmEventAmbientMission& data) = "0x5c348c9363cd3372"
STRUCT scrFmEventAmbMission_Challenges
scrFmEventAmbientMission m_data
//Challenge type (12 in total)
INT m_challengeType
FLOAT m_challengeScore
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_CHALLENGES(scrFmEventAmbMission_Challenges& data) = "0xb6aa2ab935f596ea"
STRUCT scrFmEventAmbMission_VehicleTarget
scrFmEventAmbientMission m_data
INT m_vehicleType
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_VEHICLETARGET(scrFmEventAmbMission_VehicleTarget& data) = "0xd36a8190bfc150eb"
STRUCT scrFmEventAmbMission_UrbanWarfare
scrFmEventAmbientMission m_data
INT m_vehicleType
INT m_waveReached
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_URBANWARFARE(scrFmEventAmbMission_UrbanWarfare& data) = "0x0f8b888069fabc4b"
STRUCT scrFmEventAmbMission_CheckpointCollection
scrFmEventAmbientMission m_data
INT m_quarterMapChosen //Quarter of the map chosen
INT m_numCheckpointsCollected //Number of checkpoints collected
//Location of any Checkpoints NOT collected
INT m_notCollectedCheckpoints_0
INT m_notCollectedCheckpoints_1
INT m_notCollectedCheckpoints_2
INT m_notCollectedCheckpoints_3
INT m_notCollectedCheckpoints_4
INT m_notCollectedCheckpoints_5
INT m_notCollectedCheckpoints_6
INT m_notCollectedCheckpoints_7
INT m_notCollectedCheckpoints_8
INT m_notCollectedCheckpoints_9
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_CHECKPOINTCOLLECTION(scrFmEventAmbMission_CheckpointCollection& data) = "0xa0462f398aa286df"
STRUCT scrFmEventAmbMission_PlaneDrop
scrFmEventAmbientMission m_data
INT m_routeTaken //Route taken
INT m_numCratesCollected //Number of crates collected
INT m_numCratesDropped //Number of crates dropped
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_PLANEDROP(scrFmEventAmbMission_PlaneDrop& data) = "0xc09e4a7895c35881"
STRUCT scrFmEventAmbMission_ATOB
scrFmEventAmbientMission m_data
INT m_vehicleType
INT m_parTimeBeaten
INT m_type
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_ATOB(scrFmEventAmbMission_ATOB& data) = "0xf8da4028cd22e160"
STRUCT scrFmEventAmbMission_TargetAssassination
scrFmEventAmbientMission m_data
INT m_targetsKilled //Targets killed
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_TARGETASSASSINATION(scrFmEventAmbMission_TargetAssassination& data) = "0xf6b5d6c7108b01a9"
STRUCT scrFmEventAmbMission_PassTheParcel
scrFmEventAmbientMission m_data
INT m_numTimesVehicleExchangeHands //Number of times vehicle exchanged hands
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_PASSTHEPARCEL(scrFmEventAmbMission_PassTheParcel& data) = "0x7236b5a5338da076"
STRUCT scrFmEventAmbMission_HotProperty
scrFmEventAmbientMission m_data
INT m_numTimesBriefcaseExchangeHands //Number of times briefcase exchanged hands
INT m_timeBriefecaseHeld //Time briefcase was held for
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_HOTPROPERTY(scrFmEventAmbMission_HotProperty& data) = "0x036357a803423cff"
STRUCT scrFmEventAmbMission_DeadDrop
scrFmEventAmbientMission m_data
INT m_numTimesBagExchangeHands //Number of times bag exchanged hands
INT m_timeBagHeld //Time bag was held for
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_DEADDROP(scrFmEventAmbMission_DeadDrop& data) = "0xbaf4c2bad0b0ea1a"
STRUCT scrFmEventAmbMission_KingoftheCastle
scrFmEventAmbientMission m_data
INT m_numOfKings //Number of times briefcase exchanged hands
INT m_killsAsKing //Kills as King
INT m_deathsAsKing //Deaths as King
INT m_areaControlPoints //Area Control Points
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_KINGOFTHECASTLE(scrFmEventAmbMission_KingoftheCastle& data) = "0xbfc873f8c77d376a"
STRUCT scrFmEventAmbMission_CriminalDamage
scrFmEventAmbientMission m_data
INT m_propertyDamageValue //Total Property Damage value per player ($)
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_CRIMINALDAMAGE(scrFmEventAmbMission_CriminalDamage& data) = "0xa4acc498bf04bbd2"
//STRUCT scrFmEventAmbMission_Infection
// scrFmEventAmbientMission m_data
// INT m_numPlayersInfected //Number of players infection is spread to
// INT m_numInfectedPlayerKills //Number of infected player kills
// INT m_numOfUninfectedPlayerkills //Number of uninfected player kills
////ENDSTRUCT
////NATIVE PROC PLAYSTATS_FM_EVENT_INFECTION(scrFmEventAmbMission_Infection& data)
STRUCT scrFmEventAmbMission_CompetitiveUrbanWarfare
scrFmEventAmbientMission m_data
INT m_waveReached //Wave reached
INT m_killsPerPlayer //Kills per player
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_COMPETITIVEURBANWARFARE(scrFmEventAmbMission_CompetitiveUrbanWarfare& data) = "0xa68ba8226372eb99"
STRUCT scrFmEventAmbMission_HuntBeast
scrFmEventAmbientMission m_data
INT m_landmarksCollected
ENDSTRUCT
NATIVE PROC PLAYSTATS_FM_EVENT_HUNTBEAST(scrFmEventAmbMission_HuntBeast& data) = "0x1a6091d59d217dd9"
STRUCT scrPIMenuHideSettings
INT m_bitsetopt1
INT m_bitsetopt2
INT m_bitsetopt3
INT m_bitsetopt4
ENDSTRUCT
NATIVE PROC PLAYSTATS_PIMENU_HIDE_OPTIONS(scrPIMenuHideSettings& data) = "0xd55d9d8a7aa7d37c"
/// PURPOSE:
/// Metric used to register what event awards bad sport.
NATIVE PROC PLAYSTATS_AWARD_BAD_SPORT(INT evenID) = "0xc7e3e54072256976"
/// PURPOSE:
/// Boss work and challenges metrics
STRUCT scrBwBossWork
INT m_boss1 // bossId1
INT m_boss2 // bossId2
INT m_match1 // matchId1
INT m_match2 // matchId2
INT m_playerParticipated //Whether or not player participated
INT m_timeStart //Time work started
INT m_timeEnd //Time work ended
INT m_won //won/lost
INT m_endingReason //Reason for script ending - timer ran out, left session, etc
INT m_cashEarned //Cash Earned.
INT m_rpEarned //RP Earned.
INT m_bossKilled //Boss's killed
INT m_goonsKilled //Goons killed
INT m_deaths //Deaths
ENDSTRUCT
STRUCT scrBwBossOnBossDeathMatch
scrBwBossWork m_data
INT m_launchedByBoss
INT m_invitesSent
INT m_invitesAccepted
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_BOSSONBOSSDEATHMATCH(scrBwBossOnBossDeathMatch& data) = "0xa2bf4ac9acf0021a"
STRUCT scrBwYatchAttack
scrBwBossWork m_data
INT m_launchedByBoss
INT m_totalCapturingScore
INT m_totalUnderAttackScore
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_YATCHATTACK(scrBwYatchAttack& data) = "0x2f1582c801d17816"
STRUCT scrBwHuntTheBoss
scrBwBossWork m_data
INT m_launchedByBoss
INT m_variationPlayed
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_HUNT_THE_BOSS(scrBwHuntTheBoss& data) = "0xa3694635b2da5e02"
STRUCT scrBwPutOutAHit
scrBwBossWork m_data
INT m_hitMethodSelected
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_PUT_OUT_A_HIT(scrBwPutOutAHit& data) = "0xd0eaa9f9db082fac"
STRUCT scrBwSightseer
scrBwBossWork m_data
INT m_launchedByBoss
INT m_numberLocationToWin
INT m_totalLocation
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_SIGHTSEER(scrBwSightseer& data) = "0x7fc250a0d1c39223"
STRUCT scrBwAssault
scrBwBossWork m_data
INT m_launchedByBoss
INT m_locationSelected
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_ASSAULT(scrBwAssault& data) = "0x4cbb7d97ae1390e4"
STRUCT scrBwBellyOfTheBeast
scrBwBossWork m_data
INT m_launchedByBoss
INT m_vehicleType
INT m_pickupLocation
INT m_deliveryLocation
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_BELLY_OF_THE_BEAST(scrBwBellyOfTheBeast& data) = "0x73b0858131673542"
STRUCT scrBwHeadhunter
scrBwBossWork m_data
INT m_enemiesKilled
INT m_targetLocation
INT m_numberOfTargetsKilled
INT m_launchedByBoss
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_HEAD_HUNTER(scrBwHeadhunter& data) = "0x03d59b76663576e2"
STRUCT scrBwFragileGoods
scrBwBossWork m_data
FLOAT m_destroyDisconnectedRatio // Trailer destroyed/ total trailer disconnects
INT m_targetLocation
INT m_startLocation
INT m_rivalGangDestination
INT m_launchedByBoss
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_FRAGILE_GOODS(scrBwFragileGoods& data) = "0x4612c1ed6611a9fc"
STRUCT scrBwAirfreight
scrBwBossWork m_data
INT m_containerDisconnected
INT m_targetLocation
INT m_containerLocation
INT m_launchedByBoss
ENDSTRUCT
NATIVE PROC PLAYSTATS_BW_AIR_FREIGHT(scrBwAirfreight& data) = "0x7eb13bd67b2c8aa0"
STRUCT scrBcBossChallenge
INT m_boss1 // bossId1
INT m_boss2 // bossId2
INT m_match1 // matchId1
INT m_match2 // matchId2
INT m_playerParticipated //Whether or not player participated
INT m_timeStart //Time work started
INT m_timeEnd //Time work ended
INT m_won //won/lost
INT m_endingReason //Reason for script ending - timer ran out, left session, etc
INT m_cashEarned //Cash Earned.
INT m_rpEarned //RP Earned.
INT m_bossKilled //Boss's killed
INT m_goonsKilled //Goons killed
INT m_wagerSet //Wager Set
ENDSTRUCT
STRUCT scrBcCarJacking
scrBcBossChallenge m_data
INT m_totalScore //Total score
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_CAR_JACKING(scrBcCarJacking& data) = "0x1f7b9822fbcbc8b8"
STRUCT scrBcSmashAndGrab
scrBcBossChallenge m_data
INT m_deaths //Deaths
INT m_storesHeldUp //number of stores held up
INT m_deliveriesMade //number of deliveries made
INT m_cashLost //cash lost (through deaths) ($)
INT m_cashDelivered //cash delivered ($)
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_SMASH_AND_GRAB(scrBcSmashAndGrab& data) = "0x187d3bfc3d998a39"
STRUCT scrBcProtectionRacket
scrBcBossChallenge m_data
INT m_deaths //Deaths
INT m_cashBagsCollected //cash bags collected
INT m_cashBagsDelivered //cash bags delivered
INT m_pickupQuadrant //Pickup Quadrant
INT m_deliveryQuadrant //Delivery Quadrant
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_PROTECTION_RACKET(scrBcProtectionRacket& data) = "0x37234f685a03b73f"
STRUCT scrBcMostWanted
scrBcBossChallenge m_data
INT m_deaths //Deaths
INT m_timeLasted //Time lasted with wanted level
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_MOST_WANTED(scrBcMostWanted& data) = "0x95bb1bc7bdff19c2"
STRUCT scrBcFindersKeepers
scrBcBossChallenge m_data
INT m_deaths //Deaths
INT m_packagesCollected //number of packages collected
INT m_quadrantSelected // Quandrant selected
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_FINDERS_KEEPERS(scrBcFindersKeepers& data) = "0x65eb7510f961294b"
STRUCT scrBcRunningRiot
scrBcBossChallenge m_data
INT m_deaths //Deaths
INT m_numberOfKills //number of kills
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_RUNNING_RIOT(scrBcRunningRiot& data) = "0x64b82f7a437e51e6"
STRUCT scrBcPointToPoint
scrBcBossChallenge m_data
INT m_deaths //Deaths
ENDSTRUCT
NATIVE PROC PLAYSTATS_BC_POINT_TO_POINT(scrBcPointToPoint& data) = "0x219041062b6224d5"
STRUCT scrBcCashing
scrBcBossChallenge m_data
INT m_machinesHacked
FLOAT m_failedMinigamesRatio
INT m_wantedLevelReached
ENDSTRUCT
// Send metric for Boss challenge Cashing
NATIVE PROC PLAYSTATS_BC_CASHING(scrBcCashing& data) = "0xa39339c7305adb9c"
STRUCT scrBcSalvage
scrBcBossChallenge m_data
INT m_checkpointsCollected
INT m_rebreathersCollected
INT m_deaths //Deaths
ENDSTRUCT
// Send metric for Boss challenge Salvage
NATIVE PROC PLAYSTATS_BC_SALVAGE(scrBcSalvage& data) = "0x1e7c34e08a322056"
// PURPOSE: When the player uses the custom loadout
NATIVE PROC PLAYSTATS_SPENT_PI_CUSTOM_LOADOUT(INT value) = "0x1ca7d9ffee780abd"
STRUCT scrContrabandMission
INT m_bossId1 //BossId
INT m_bossId2 //BossId
INT m_matchId1 //MatchId
INT m_matchId2 //MatchId
INT m_playerParticipated //Whether or not player participated
INT m_timeStart //Time work started
INT m_timeEnd //Time work ended
INT m_won //won/lost
INT m_endingReason //Reason for script ending - timer ran out, left session, etc
INT m_cashEarned //Cash Earned.
INT m_rpEarned //RP Earned.
INT m_location //Location selected
INT m_type //Type of Mission Launched (small medium, large)
INT m_subtype //Subtype of Mission Launched
INT m_warehouseOwned //What Warehouses the Boss owns (bit set)
INT m_warehouseOwnedCount //number of Warehouses the Boss owns
INT m_failureReason //Failure reason
INT m_missionId = 0 //MissionId
ENDSTRUCT
STRUCT scrBuyContrabandMission
scrContrabandMission m_data
INT m_startVolume //Contraband volume at start of mission
INT m_endVolume //Contraband volume at end of mission
INT m_startWarehouseCapacity //Warehouse capacity % at start of mission
INT m_endWarehouseCapacity //Warehouse capacity % at end of mission
INT m_contrabandDestroyed //Amount of contraband destroyed
INT m_contrabandDelivered //Amount of contraband delivered
INT m_FromHackerTruck //whether the mission was launched from the Hacker Truck
INT m_properties = 0
INT m_properties2 = 0
ENDSTRUCT
STRUCT scrSellContrabandMission
scrBuyContrabandMission m_data
INT m_dropOffLocation //Drop off location
ENDSTRUCT
STRUCT scrDefendContrabandMission
scrBuyContrabandMission m_data
INT m_enemiesKilled //Enemies killed
ENDSTRUCT
STRUCT scrRecoverContrabandMission
scrDefendContrabandMission m_data
INT m_lostDestroyedOrRecovered //Whether contraband was lost, destroyed or recovered
ENDSTRUCT
// Send the telemetry information when finishing a Buy Contraband mission
NATIVE PROC PLAYSTATS_BUY_CONTRABAND_MISSION(scrBuyContrabandMission& data) = "0x3896bbdea3bcafad"
// Send the telemetry information when finishing a Sell Contraband mission
NATIVE PROC PLAYSTATS_SELL_CONTRABAND_MISSION(scrSellContrabandMission& data) = "0x97bb06ae7f3419c6"
// Send the telemetry information when finishing a Defend Contraband mission
NATIVE PROC PLAYSTATS_DEFEND_CONTRABAND_MISSION(scrDefendContrabandMission& data) = "0xb17bfb605ef6b707"
// Send the telemetry information when finishing a Recover Contraband mission
NATIVE PROC PLAYSTATS_RECOVER_CONTRABAND_MISSION(scrRecoverContrabandMission& data) = "0xd212223613e42328"
// Call this everytime a player hits the limit for destroying contraband
NATIVE PROC PLAYSTATS_HIT_CONTRABAND_DESTROY_LIMIT(INT amount) = "0x7bc2b65f979b471a"
// --- Presence Events -----------------------------------------------------------------------------------------------------------
//INFO:
//PARAM NOTES:
//PURPOSE: Send a presence event regarding a significant update of a stat. Will result in a
// EVENT_NETWORK_PRESENCE_STAT_UPDATE being received by all your friends
NATIVE PROC PRESENCE_EVENT_UPDATESTAT_INT(STATSENUM statId, INT value, INT value2 = 0) = "0x423a6008ceed5d6c"
NATIVE PROC PRESENCE_EVENT_UPDATESTAT_FLOAT(STATSENUM statId, FLOAT value, INT value2 = 0) = "0x4115628326810a31"
NATIVE PROC PRESENCE_EVENT_UPDATESTAT_INT_WITH_STRING(STATSENUM statId, INT value, INT value2, STRING stringData) = "0xcc0d9986102e9b4f"
NATIVE PROC PRESENCE_EVENT_UPDATESTAT_FLOAT_WITH_STRING(STATSENUM statId, FLOAT value, INT value2, STRING stringData) = "0x5c17293d8f69a65d"
// --- Leaderboards --------------------------------------------------------------------------------------------------------------
/// PURPOSE: Maximun number of columns that can be read/updated
CONST_INT MAX_LEADERBOARD_COLUMNS 64
/// PURPOSE: Leaderboard column types
CONST_INT RL_STAT_TYPE_CONTEXT 0
CONST_INT RL_STAT_TYPE_INT32 1
CONST_INT RL_STAT_TYPE_INT64 2
CONST_INT RL_STAT_TYPE_DOUBLE 3
CONST_INT RL_STAT_TYPE_UNICODE 4
CONST_INT RL_STAT_TYPE_FLOAT 5
CONST_INT RL_STAT_TYPE_BINARY 6
CONST_INT RL_STAT_TYPE_DATETIME 7
CONST_INT RL_STAT_TYPE_NULL 255
//PURPOSE
// Enum with all leaderboard types.
ENUM LEADERBOARDS2_TYPES_ENUM
LEADERBOARD2_TYPE_INVALID = 0,
LEADERBOARD2_TYPE_PLAYER, //Ranks players
LEADERBOARD2_TYPE_CLAN, //Ranks clans
LEADERBOARD2_TYPE_CLAN_MEMBER, //Ranks members within a clan
LEADERBOARD2_TYPE_GROUP, //Ranks groups
LEADERBOARD2_TYPE_GROUP_MEMBER //Ranks members within a group
ENDENUM
//PURPOSE:
STRUCT LEADERBOARD_GAMER
GAMER_HANDLE m_GamerHandle
ENDSTRUCT
/// PURPOSE:
/// Identifies a group within a leaderboard
STRUCT Leaderboard2Group
//Name of the category (examples are: "Mission", "Challenge", "CoDriver", "Territory")
TEXT_LABEL_31 m_Category
//ID of the group within the category
TEXT_LABEL_31 m_Id
ENDSTRUCT
/// PURPOSE: Maximun number of groups that can be updated.
CONST_INT LEADERBOARD_MAX_GROUPS 4
/// PURPOSE:
// A list of category/group ID pairs that uniquely identifies
// a group within a leaderboard.
STRUCT Leaderboard2GroupHandle
INT m_NumGroups
Leaderboard2Group m_Group[LEADERBOARD_MAX_GROUPS]
ENDSTRUCT
/// PURPOSE:
STRUCT LeaderboardClanIds
INT m_ClanId
ENDSTRUCT
//PURPOSE
// Used to write an update to a leaderboard.
STRUCT LeaderboardUpdateData
//Id of the leaderboard being Update.
INT m_LeaderboardId
//When writing clan and clan member LBs m_ClanId identifies the
//clan owning the row.
INT m_ClanId
//When updating group leaderboards m_GroupSelector identifies
//the group owning the row. When reading player, clan, and
//clan member leaderboards, m_GroupSelector identifies the
//the group containing the players/members/clans.
Leaderboard2GroupHandle m_GroupSelector
ENDSTRUCT
//PURPOSE
// Used to read a leaderboard.
STRUCT Leaderboard2ReadData
//Id of the leaderboard being read.
INT m_LeaderboardId
//Type of read
LEADERBOARDS2_TYPES_ENUM m_Type
//When reading clan and clan member LBs m_ClanId identifies the
//clan owning the row.
INT m_ClanId
//When reading group leaderboards m_GroupSelector identifies
//the group owning the row. When reading player, clan, and
//clan member leaderboards, m_GroupSelector identifies the
//the group containing the players/members/clans.
Leaderboard2GroupHandle m_GroupSelector
ENDSTRUCT
//PURPOSE
// Used to read row information from a leaderboard.
STRUCT LeaderboardRowData
//When reading player or clan member leaderboards the gamer
//handle identifies the gamer owning the row.
GAMER_HANDLE m_GamerHandle
//Name of the gamer owning the row.
TEXT_LABEL_23 m_GamerName
//When reading group leaderboards m_GroupSelector identifies
//the group owning the row. When reading player, clan, and
//clan member leaderboards, m_GroupSelector identifies the
//the group containing the players/members/clans.
Leaderboard2GroupHandle m_GroupSelector
//When reading clan and clan member LBs m_ClanId identifies the
//clan owning the row.
INT m_ClanId
TEXT_LABEL_31 m_ClanName //Name of the clan.
TEXT_LABEL_7 m_ClanTag //Clan tag
//Rank of the row within the leaderboard.
INT m_Rank
//Number of Column values of the row.
INT m_NumColumnValues
ENDSTRUCT
//PURPOSE
STRUCT LeaderboardReadInfo
//Set the Leaderboard Id.
INT m_LeaderboardId
//Set the Leaderboard Read Type done for that leaderboard.
INT m_LeaderboardType
//Set the Leaderboard read index in case there was more than one read for the
// same leaderboard ID - Default should be set to 0
INT m_LeaderboardIndex
//Returns the Number of Rows returned in the read.
INT m_ReturnedRows
//Returns the Number of Total Rows in the leaderboard.
INT m_TotalRows
//Returns the local gamer row number, -1 if the local gamer is not present.
INT m_LocalGamerRowNumber
//Set with local gamer rank score if it is of type INT
INT m_LocalGamerRankInt
//Set with local gamer rank score if it is of type FLOAT
FLOAT m_LocalGamerRankFloat
ENDSTRUCT
//PURPOSE
// Used for caching leaderboard display data. This needs to match code values and classes.
CONST_INT MAX_COLUMNS 32
STRUCT LeaderboardCachedDisplayData
INT m_Id // This ID is set in script and needs to be unique so that identifies this cache data.
TEXT_LABEL_63 m_GamerName
TEXT_LABEL_63 m_CoDriverName
GAMER_HANDLE m_GamerHandle
GAMER_HANDLE m_CoDriverHandle
BOOL m_CustomVehicle
INT m_Rank
INT m_RowFlags // Script row flags
INT m_NumColumns // Total number of columns used.
INT m_ColumnsBitSets // 1 if it is INT 0 if FLOAT.
FLOAT m_fColumnData[MAX_COLUMNS]
INT m_iColumnData[MAX_COLUMNS]
ENDSTRUCT
STRUCT LeaderboardPredictionRow
INT m_Id // This ID is set in script and needs to be unique so that identifies this cache data.
INT m_NumColumns // Total number of columns used.
INT m_ColumnsBitSets // 1 if it is INT 0 if FLOAT.
FLOAT m_fColumnData[MAX_COLUMNS]
INT m_iColumnData[MAX_COLUMNS]
ENDSTRUCT
// PURPOSE
// Returns the number of columns of a leaderboard.
NATIVE FUNC INT LEADERBOARDS_GET_NUMBER_OF_COLUMNS(INT leaderboardId, ENUM_TO_INT type) = "0x00c49126c192c957"
// PURPOSE
// Returns the column id of the leaderboard.
NATIVE FUNC INT LEADERBOARDS_GET_COLUMN_ID(INT leaderboardId, ENUM_TO_INT type, INT columnIndex) = "0x07a9b621946d6d59"
// PURPOSE
// Returns the column type of the leaderboard.
NATIVE FUNC INT LEADERBOARDS_GET_COLUMN_TYPE(INT leaderboardId, ENUM_TO_INT type, INT columnIndex) = "0x8cee6633e5a509ad"
// PURPOSE
// Returns true if we can read a leaderboard for player x.
// NOTES
// Games are permitted one read and one write to the leaderboards,
// during a single interactive game session for each player.
// If a game session exceeds five minutes in duration, the game is permitted
// an additional read and/or write at each subsequent five-minute interval to the leaderboards.
NATIVE FUNC BOOL LEADERBOARDS_CAN_READ(INT playerIndex) = "0x6d57674f672c9076"
// PURPOSE
// Clear all leaderboard read's done.
NATIVE FUNC INT LEADERBOARDS_READ_CLEAR_ALL() = "0x8a3025b5ff237b8e"
// PURPOSE
// Clear leaderboard read data. -1 clear all leaderboards with that id and type.
NATIVE FUNC INT LEADERBOARDS_READ_CLEAR(INT leaderboardId, ENUM_TO_INT leaderboardType, INT lbIndex = -1) = "0x25cfa7d8d16b29d0"
// PURPOSE
// Returns true if leaderboard read is pending. -1 return pending if any leaderboard with that id and type is pending.
NATIVE FUNC BOOL LEADERBOARDS_READ_PENDING(INT leaderboardId, ENUM_TO_INT leaderboardType, INT lbIndex = -1) = "0x589034697689cc35"
NATIVE FUNC BOOL LEADERBOARDS_READ_ANY_PENDING() = "0xc15645989af376b8"
// PURPOSE
// Returns true if leaderboard read exists, ie, if script started a read of that leaderboard and has not cleared the READ yet.
// -1 return exists if any leaderboard with that id and type is pending.
NATIVE FUNC BOOL LEADERBOARDS_READ_EXISTS(INT leaderboardId, ENUM_TO_INT leaderboardType, INT lbIndex = -1) = "0x8e70e98efae1c9aa"
// PURPOSE
// Returns true if leaderboard read was successful.
NATIVE FUNC BOOL LEADERBOARDS_READ_SUCCESSFUL(INT leaderboardId, ENUM_TO_INT leaderboardType, INT lbIndex = 0) = "0x4a37499e7c2832d2"
NATIVE FUNC BOOL LEADERBOARDS_READ_SUCCESSFUL_BY_HANDLE(INT leaderboardId, ENUM_TO_INT leaderboardType, GAMER_HANDLE& gamer, INT lbIndex = 0) = "0xc62769774d2f3a98"
/// PURPOSE:
/// Starts a leaderboard READ Operation for all players in the session.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// pArray_LBGroups - List of Groups being read and ranked (Supply this when reading RL_LEADERBOARD2_TYPE_GROUP)
/// numGroups - Number of Group ids.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW(Leaderboard2ReadData& in_lbData, Leaderboard2GroupHandle& pArray_LBGroups[], INT numGroups) = "0xf55d542cdcb05fc4"
/// PURPOSE:
/// Starts a leaderboard READ Operation for all friends.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// pArray_LBGroups - List of Groups being read and ranked (Supply this when reading RL_LEADERBOARD2_TYPE_GROUP)
/// numGroups - Number of Group ids.
/// includeLocalPlayer - TRUE to also include the local player in the operation.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_FRIENDS_BY_ROW(Leaderboard2ReadData& in_lbData
,Leaderboard2GroupHandle& pArray_LBGroups[]
,INT numGroups
,BOOL includeLocalPlayer
,INT friendStartIndex = 0
,INT maxNumFriends = 50) = "0x918b101666f9cb83"
/// PURPOSE:
/// Starts a leaderboard read by row.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// lbGamerHandleData - Gamer Handles to be read.
/// nGamerHandles - Number of Gamer Handles
/// pArray_LBClanIds - List of Clan ID's being read and ranked (Supply this when reading LEADERBOARD2_TYPE_CLAN)
/// nClanIds - Number of clan ids.
/// pArray_LBGroups - List of Groups being read and ranked (Supply this when reading RL_LEADERBOARD2_TYPE_GROUP)
/// numGroups - Number of Group ids.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_ROW(Leaderboard2ReadData& in_lbData
,GAMER_HANDLE& lbGamerHandleData[], INT nGamerHandles
,LeaderboardClanIds& pArray_LBClanIds[], INT nClanIds
,Leaderboard2GroupHandle& pArray_LBGroups[], INT numGroups) = "0xa9cdb1e3f0a49883"
/// PURPOSE:
/// Read a leaderboard from a Gamer.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// handleData - Gamer handle.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_HANDLE(Leaderboard2ReadData& in_lbData, GAMER_HANDLE& handleData) = "0xb3fde7b4cab1c054"
/// PURPOSE:
/// Start a read Operation by Rank.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// rankStart - must be >= 1
/// numRows - Total number of rows.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_RANK(Leaderboard2ReadData& in_lbData, INT rankStart, INT numRows) = "0xda3444de6c78d480"
/// PURPOSE:
/// Start a read Operation by Radius.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// radius - must be >= 1
/// pivotGamerHandle - Gamer Handle of the player being used as pivot.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_RADIUS(Leaderboard2ReadData& in_lbData, INT radius, GAMER_HANDLE& pivotGamerHandle) = "0x0afcb24deebbd31a"
/// PURPOSE:
/// Reads leaderboard rows around a "pivot" score. The score is
/// compared against the ranking column of the leaderboard.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// pivotScore - score that is used as pivot to read MAX numRows.
/// numRows - Total number of rows.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_SCORE_INT(Leaderboard2ReadData& in_lbData, INT pivotScore, INT numRows) = "0xace795925470090f"
/// PURPOSE:
/// Reads leaderboard rows around a "pivot" score. The score is
/// compared against the ranking column of the leaderboard.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// pivotScore - score that is used as pivot to read MAX numRows.
/// numRows - Total number of rows.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_SCORE_FLOAT(Leaderboard2ReadData& in_lbData, FLOAT pivotScore, INT numRows) = "0x493e419f7eeb0a5a"
/// PURPOSE:
/// Can be used for Local player rank prediction and conjugate 2 rows in_original & in_from_match into out_predicted
/// PARAMS:
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_RANK_PREDICTION(LeaderboardPredictionRow& in_original, LeaderboardPredictionRow& in_from_match, LeaderboardPredictionRow& out_predicted) = "0x45b097c5e2959673"
/// PURPOSE:
/// Starts a leaderboard READ Operation for a certain platform.
/// PARAMS:
/// in_lbData - Leaderboard info for the read.
/// gamerHandler - specifies the gamer handler.
/// platform - specifies the platform.
/// RETURNS:
/// TRUE is the operation is started sucessfully.
NATIVE FUNC BOOL LEADERBOARDS2_READ_BY_PLAFORM(Leaderboard2ReadData& in_lbData, STRING gamerHandler, STRING platform) = "0x94df71b0047c472b"
/// PURPOSE:
/// Get the data for the rows for the previously requested leaderboard.
NATIVE FUNC BOOL LEADERBOARDS2_READ_GET_ROW_DATA_START(LeaderboardReadInfo& info) = "0x581496cff543462f"
NATIVE PROC LEADERBOARDS2_READ_GET_ROW_DATA_END( ) = "0x6ccde78d9c553a24"
NATIVE FUNC BOOL LEADERBOARDS2_READ_GET_ROW_DATA_INFO(INT rowIndex, LeaderboardRowData& lbReadData) = "0x1ea20d6fd50c44e7"
NATIVE FUNC INT LEADERBOARDS2_READ_GET_ROW_DATA_INT(INT rowIndex, INT columnIndex) = "0x76c271030ac81113"
NATIVE FUNC FLOAT LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(INT rowIndex, INT columnIndex) = "0x015a67958e8477f3"
/// PURPOSE:
/// Update a leaderboard
/// PARAMS:
/// in_lbData - Leaderboard information after calling this command you should use the commands
/// to setup the column values - LEADERBOARDS_WRITE_ADD_COLUMN.
/// RETURNS:
///
NATIVE FUNC BOOL LEADERBOARDS2_WRITE_DATA(LeaderboardUpdateData& in_lbData) = "0x4a42a2e45a8d2c8b"
/// PURPOSE:
/// Update a leaderboard for a given scevent type
/// PARAMS:
/// in_lbData - Leaderboard information after calling this command you should use the commands
/// to setup the column values - LEADERBOARDS_WRITE_ADD_COLUMN.
// eventType - The event type to check against.
/// RETURNS:
///
NATIVE FUNC BOOL LEADERBOARDS2_WRITE_DATA_FOR_EVENT_TYPE(LeaderboardUpdateData& in_lbData, STRING eventType) = "0x40ceb23e136d8ea3"
/// PURPOSE:
/// Set a integer/float value in a column. Must be used after calling LEADERBOARDS2_WRITE_DATA.
/// PARAMS:
/// fieldId - Field ID of the column being set.
NATIVE PROC LEADERBOARDS_WRITE_ADD_COLUMN(LEADERBOARD_INPUTS fieldId, INT ivalue, FLOAT fvalue) = "0x6d1a116f1b08fa08"
/// value_a - First 32 bits
/// value_b - Second 32 bits
NATIVE PROC LEADERBOARDS_WRITE_ADD_COLUMN_LONG(LEADERBOARD_INPUTS fieldId, INT value_a, INT value_b) = "0x05ccdfa8c7547aed"
/// PURPOSE:
/// Cache leaderboard display data.
/// PARAMS:
/// info - Row display data that should be cached.
/// id - Leaderboard display data id created by script when the data was cached.
NATIVE FUNC BOOL LEADERBOARDS_CACHE_DATA_ROW(LeaderboardCachedDisplayData& info) = "0x513637d173b51a91"
NATIVE PROC LEADERBOARDS_CLEAR_CACHE_DATA() = "0x9231b11e90084508"
NATIVE PROC LEADERBOARDS_CLEAR_CACHE_DATA_ID(INT id) = "0x0c2cc1b63aa0b36c"
NATIVE FUNC BOOL LEADERBOARDS_GET_CACHE_EXISTS(INT id) = "0x8b36c5e1084b91ec"
NATIVE FUNC INT LEADERBOARDS_GET_CACHE_TIME(INT id) = "0xcd72499771f7a0da"
NATIVE FUNC INT LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS(INT id) = "0xe02ee9af4474e243"
NATIVE FUNC BOOL LEADERBOARDS_GET_CACHE_DATA_ROW(INT id, INT rowIndex, LeaderboardCachedDisplayData& info) = "0x8de5cbdb548619a2"
/// PURPOSE: Community stats - start synch operation, check if the operation is pending and if the operation has succeeded.
NATIVE FUNC BOOL STAT_COMMUNITY_START_SYNCH() = "0xd17ba652ddceb594"
NATIVE FUNC BOOL STAT_COMMUNITY_SYNCH_IS_PENDING() = "0x20e53dd70de083d7"
NATIVE FUNC BOOL STAT_COMMUNITY_SYNCH_FAILED() = "0x03647b08aef903b4"
/// PURPOSE: Retrieve the Community (Stock Market) stat history value with id keyHash and history depth equal to depth.
/// Maximum depth is 5.
NATIVE FUNC BOOL STAT_COMMUNITY_GET_HISTORY(STATSENUM keyHash, INT depth, float& returnData) = "0xb4455b84f602b40d"
/// PURPOSE: NATIVE HELPER FUNCTIONS TO MANIPULATE PACKED STATS.
NATIVE FUNC INT PACKED_STAT_GET_BOOL_STAT_INDEX(ENUM_TO_INT stat) = "0x31f134b0b91d099c"
NATIVE FUNC INT PACKED_STAT_GET_INT_STAT_INDEX(ENUM_TO_INT stat) = "0x4dd6546b33af95be"
NATIVE FUNC STATSENUM GET_PACKED_BOOL_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char) = "0x27df3e7d400669bb"
NATIVE FUNC STATSENUM GET_PACKED_INT_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char) = "0xf66585648257e5b9"
NATIVE FUNC STATSENUM GET_PACKED_TU_BOOL_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char) = "0xe03cb2510772a1a6"
NATIVE FUNC STATSENUM GET_PACKED_TU_INT_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char) = "0xc3fad245f85182fa"
NATIVE FUNC STATSENUM GET_PACKED_NG_BOOL_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char, STRING baseKey) = "0x2da085b3addad1ac"
NATIVE FUNC STATSENUM GET_PACKED_NG_INT_STAT_KEY(ENUM_TO_INT stat, BOOL singlePlayer, BOOL isCharacater, INT char, STRING baseKey) = "0x246883873095b181"
/// PURPOSE: NEW NATIVE HELPER FUNCTIONS TO MANIPULATE PACKED STATS.
/// Only use 'overrideCharSlot' if you want to override using the current selected character. Make sure
/// its a correct character index. 0 to 2 on SP and 0 to 1 on MP.
NATIVE FUNC BOOL GET_PACKED_STAT_BOOL_CODE(ENUM_TO_INT stat, INT overrideCharSlot = -1) = "0xda7ebfc49ae3f1b0"
NATIVE FUNC INT GET_PACKED_STAT_INT_CODE(ENUM_TO_INT stat, INT overrideCharSlot = -1) = "0x0bc900a6fe73770c"
NATIVE PROC SET_PACKED_STAT_BOOL_CODE(ENUM_TO_INT stat, BOOL value, INT overrideCharSlot = -1) = "0xdb8a58aeaa67cd07"
NATIVE PROC SET_PACKED_STAT_INT_CODE(ENUM_TO_INT stat, INT value, INT overrideCharSlot = -1) = "0x1581503ae529cd2e"
/// PURPOSE: Retrieve a bool value from a packed stat.
NATIVE FUNC BOOL STAT_GET_BOOL_MASKED(STATSENUM keyHash, INT bitField, INT playerIndex = -1) = "0xb0546d69db2298a1"
/// PURPOSE: Set a bool value from a packed stat.
NATIVE FUNC BOOL STAT_SET_BOOL_MASKED(STATSENUM keyHash, BOOL Value, INT bitField, BOOL CoderReset = TRUE) = "0x77af9853b955948e"
#IF IS_DEBUG_BUILD
//INFO: Reset all single player stats.
NATIVE PROC STAT_RESET_ALL_SINGLE_PLAYER_STATS( ) = "0x7f5124fd1e387744"
#ENDIF // IS_DEBUG_BUILD
///
/// PURPOSE: Returns TRUE if the player has driven all vehicles.
NATIVE FUNC BOOL GET_PLAYER_HAS_DRIVEN_ALL_VEHICLES( ) = "0x820fa4066d63f3b3"
///
/// PURPOSE: Set a profile setting so that we know we already have done the post of all vehicles driven.
/// - Profile Setting is FACEBOOK_POSTED_ALL_VEHICLES_DRIVEN.
/// Retrieve current value by using GET_PROFILE_SETTING( FACEBOOK_POSTED_ALL_VEHICLES_DRIVEN )
/// If value is == 1 then we already have set the post.
NATIVE PROC SET_HAS_POSTED_ALL_VEHICLES_DRIVEN( ) = "0x0786f84b30fe6f63"
/// PURPOSE: Call this when the player completes the Prologue so that they can't get into multiplayer until they've completed the Prologue once.
/// Once this flag has been set in the player's profile, they will be able to get into multiplayer from the Prologue. They could start a new game
/// and enter MP from the Prologue. Or they could delete all their savegames and enter MP when the game starts up.
NATIVE PROC SET_PROFILE_SETTING_PROLOGUE_COMPLETE() = "0x01d104274a911a48"
/// PURPOSE: Call this when the player completes the "Franklin 0 - Chop" mission in Single Player
/// This will be checked in Multiplayer (using GET_PROFILE_SETTING(SP_CHOP_MISSION_COMPLETE) ) to decide whether the player can transform into Chop when they eat the peyote plant in Franklin's yard.
NATIVE PROC SET_PROFILE_SETTING_SP_CHOP_MISSION_COMPLETE() = "0x909f07ee95db559d"
/// PURPOSE: Call this when the player is publishing a RACE in the creator.
/// NOTES: Make sure the profile setting value is set on the real stat when we enter the
/// mp game. And because the player can change console make sure we always use the highest value.
/// Make sure you use the command - GET_PROFILE_SETTING( MP_AWD_CREATOR_RACES_DONE ) - to get the
/// current value before setting to set 'current+1'.
NATIVE PROC SET_PROFILE_SETTING_CREATOR_RACES_DONE(INT newValue) = "0x81c6ca52ca44a933"
/// PURPOSE: Call this when the player is publishing a DM in the creator.
/// NOTES: Make sure the profile setting value is set on the real stat when we enter the
/// mp game. And because the player can change console make sure we always use the highest value.
/// Make sure you use the command - GET_PROFILE_SETTING( MP_AWD_CREATOR_DM_DONE ) - to get the
/// current value before setting to set 'current+1'.
NATIVE PROC SET_PROFILE_SETTING_CREATOR_DM_DONE(INT newValue) = "0x350624f9e8ab4d03"
/// PURPOSE: Call this when the player is publishing a CTF in the creator.
/// NOTES: Make sure the profile setting value is set on the real stat when we enter the
/// mp game. And because the player can change console make sure we always use the highest value.
/// Make sure you use the command - GET_PROFILE_SETTING( MP_AWD_CREATOR_CTF_DONE ) - to get the
/// current value before setting to set 'current+1'.
NATIVE PROC SET_PROFILE_SETTING_CREATOR_CTF_DONE(INT newValue) = "0xaeb1481d52e85af9"
/// PURPOSE: Call this when the player needs to set a profile setting.
/// NOTES: Possible settings are - MP_CREATOR_RACES_SAVED, MP_CREATOR_DM_SAVED and MP_CREATOR_CTF_SAVED.
NATIVE PROC STAT_SET_PROFILE_SETTING_VALUE(PROFILE_SETTING setting, INT newValue) = "0x0141515577c9beb6"
/// PURPOSE: Call this when the character creator selects an outfit
NATIVE PROC STATS_CHARACTER_CREATION_OUTFIT_SELECTED(INT outfit) = "0xd18294dc119f435b"
/// PURPOSE: Call this when the player completes the character creation.
NATIVE PROC STATS_COMPLETED_CHARACTER_CREATION(INT char) = "0x129022c7ce97a9c6"
/// PURPOSE: Call to setup the current job activity started in Freemode. Set 0 to clear the value.
/// Use the command GET_PROFILE_SETTING( JOB_ACTIVITY_ID_CHAR0 ) to find out the current value.
NATIVE PROC SET_JOB_ACTIVITY_ID_STARTED( INT value, INT CHARACTER ) = "0x3b6c41b60543c47e"
/// PURPOSE: Call to setup that the freemode prologue has been done. Set 0 to clear the value and 1 to set as done.
/// Use the command GET_PROFILE_SETTING( FREEMODE_PROLOGUE_COMPLETE_CHAR0 ) to find out the current value.
NATIVE PROC SET_FREEMODE_PROLOGUE_DONE( INT value, INT CHARACTER ) = "0xb625f19076319e9c"
/// PURPOSE: Call this command to set the FREEMODE_STRAND_PROGRESSION_STATUS for one of the characters.
/// This command can only be called with the first parameter set to either FREEMODE_STRAND_PROGRESSION_STATUS_CHAR0 or FREEMODE_STRAND_PROGRESSION_STATUS_CHAR1
/// To get the current value, call the command GET_PROFILE_SETTING with FREEMODE_STRAND_PROGRESSION_STATUS_CHAR0 or _CHAR1
NATIVE PROC SET_FREEMODE_STRAND_PROGRESSION_STATUS(PROFILE_SETTING setting, INT newValue) = "0x79d310a861697cc9"
/// PURPOSE:
/// Increments the stat with the new value when the player commits suicide in the network game.
/// PARAMS:
/// keyHash - stat id.
/// value -
NATIVE PROC STAT_NETWORK_INCREMENT_ON_SUICIDE(STATSENUM keyHash, FLOAT value) = "0x4ec5e38b70b5ac89"
/// PURPOSE:
/// Set TRUE that a cheat is active - must be called every frame for certain cheats. Rest periode is 2s after that value is reset back to FALSE.
NATIVE PROC STAT_SET_CHEAT_IS_ACTIVE( ) = "0xada020ed8ed3a5cd"
/// PURPOSE: Set the value of a License Plate. Max number of characters is 8.
NATIVE FUNC BOOL STAT_SET_LICENSE_PLATE( STATSENUM keyHash, STRING licensePlate ) = "0xce9b2b59b53a67c6"
/// PURPOSE: Get the value of a License Plate.
NATIVE FUNC STRING STAT_GET_LICENSE_PLATE( STATSENUM keyHash ) = "0x378cf7462fea8a28"
/// PURPOSE: Clear status from check migrate and migration. please make sure there are no pending operations.
NATIVE PROC STAT_MIGRATE_CLEAR_FOR_RESTART( ) = "0x9f6c9aeb9171f802"
//Status for the migrate save operations.
ENUM MIGRATE_SAVE
MIGRATE_SAVE_NONE = 0
//The source account is currently in-use, must log out in order to transfer it.
,MIGRATE_SAVE_FAILED_SOURCE_IN_USE = 1
//The source account has already been transferred elsewhere.
,MIGRATE_SAVE_FAILED_ALREADY_DONE = 2
//The source account is in the process of being transferred elsewhere.
,MIGRATE_SAVE_FAILED_IN_PROGRESS = 3
//(ConsumeContentUnlock) The source account has already been used to unlock this content for another account.
,MIGRATE_SAVE_FAILED_UNLOCK_ALREADY_USED = 4
//The account does not have sufficient privileges to migrate.
,MIGRATE_SAVE_FAILED_INSUFFICIENT_PRIVILEGES = 5
//Can not transfer due to being flagged as a cheater.
,MIGRATE_SAVE_FAILED_CHEATER = 6
//Can not transfer due to the account being banned.
,MIGRATE_SAVE_FAILED_BANNED = 7
//Transfers are currently disabled for maintenance.
,MIGRATE_SAVE_FAILED_MAINTENANCE = 8
//Transfer not allowed due to account being created after a certain date.
,MIGRATE_SAVE_FAILED_ACCT_CREATION_DATE = 9
//Transfer not allowed due to account not being old enough.
,MIGRATE_SAVE_FAILED_ACCT_AGE = 10
//Dest account has already been transferred to
,MIGRATE_SAVE_ERROR_DEST_ALREADY_DONE = 11
//Source account isn't eligible for transfer because cash balances are too high
,MIGRATE_SAVE_ERROR_TOO_RICH = 12
//End of errors
,MIGRATE_SAVE_PENDING
,MIGRATE_SAVE_FINISHED
//Catch all error
,MIGRATE_SAVE_FAILED
ENDENUM
/// PURPOSE: Migrate savegames from previous generation console.
/// PARAMS:
/// sourcePlatform - Must be "ps3" or "xbox360".
NATIVE FUNC BOOL STAT_MIGRATE_SAVEGAME_START( STRING sourcePlatform ) = "0x23bf533940118020"
NATIVE FUNC MIGRATE_SAVE STAT_MIGRATE_SAVEGAME_GET_STATUS( ) = "0x0460a834bafd552a"
//Save migration available platforms.
ENUM MIGRATION_PLATFORM
PLATFORM_XBOX360,
PLATFORM_XBOXONE,
PLATFORM_PS3,
PLATFORM_PS4,
PLATFORM_PC,
PLATFORM_MAX
ENDENUM
//Save migration error codes.
ENUM MIGRATION_STATUS
MIGRATION_STATUS_NONE,
MIGRATION_STATUS_AVAILABLE,
MIGRATION_STATUS_RUNNING,
MIGRATION_STATUS_FAILED,
MIGRATION_STATUS_ERROR_ALREADY_DONE,
MIGRATION_STATUS_ERROR_NOT_AVAILABLE
ENDENUM
//Task status codes
ENUM TASK_NET_STATUS
NET_STATUS_NONE,
NET_STATUS_PENDING,
NET_STATUS_FAILED,
NET_STATUS_SUCCEEDED,
NET_STATUS_CANCELED
ENDENUM
//Save migration error codes.
ENUM MIGRATION_RESULT_CODES
MIGRATION_NONE, //This means its available
MIGRATION_ALREADY_DONE,
MIGRATION_NOT_AVAILABLE
ENDENUM
//PURPOSE: Structure to retrieve available saves for migration.
STRUCT STRUCT_AVAILABLE_SAVE_DATA
FLOAT m_totalProgressMadeInSp
INT m_numberOfChars
INT m_lastchar
TEXT_LABEL_63 m_gamerName
TEXT_LABEL_63 m_gamerHandle
TEXT_LABEL_63 m_pvc
TEXT_LABEL_63 m_evc
TEXT_LABEL_63 m_bank
TEXT_LABEL_63 m_wallet[2]
INT m_xp[2]
INT m_isactive[2]
ENDSTRUCT
NATIVE FUNC BOOL STAT_MIGRATE_CHECK_ALREADY_DONE( ) = "0x07c58cf1382442d7"
NATIVE FUNC BOOL STAT_MIGRATE_CHECK_START( ) = "0xa1088d3ed018d225"
NATIVE FUNC MIGRATION_RESULT_CODES STAT_MIGRATE_CHECK_GET_IS_PLATFORM_AVAILABLE( MIGRATION_PLATFORM platform ) = "0xe448cc16212f2c77"
NATIVE FUNC MIGRATION_STATUS STAT_MIGRATE_CHECK_GET_PLATFORM_STATUS( MIGRATION_PLATFORM platform, STRUCT_AVAILABLE_SAVE_DATA& data ) = "0xf2c5a32ea175f6f2"
/// PURPOSE: Returns TRUE if the player has played GTAV Single Player.
///
NATIVE FUNC BOOL STAT_GET_PLAYER_HAS_PLAYED_SP_LAST_GEN( ) = "0x7a21ae6231f791ce"
//PURPOSE
// Used to determine if the user should be allowed to enter into MP or start save migration
//
// Save migration status flow:
// 1. Call GetSaveMigrationStatus
// a. If a migration is still pending, this will return it, otherwise it returns the most recently completed/failed migration
// 2. If transaction status is pending, block entry to MP/save migration
// 3. If transaction status is failed:
// a. Check if this transaction has not already been stored locally
// i. If not, show some kind of error message, and then store the transaction locally to prevent showing it again
// b. Regardless allow the user to continue into MP/save migration
// 4. If transaction status is succeeded:
// a. Check if this transaction has not already been stored locally
// i. If not, do whatever handling we do when the user completes a save migration (e.g. reset local timestamps)
// 5. If there<72>s no transaction status:
// a. I.e. they<65>ve never migrated a save
// b. Allow the user to continue into MP/save migration flow
// 6. If there<72>s an error, block entry to MP/save migration
//
//RETURNS
// Returns true if the migration status has been started sucessfully.
//NOTES
// You must have this before using this command - ARE_PROFILE_SETTINGS_VALID( ) and NETWORK_IS_SIGNED_ONLINE()
//
NATIVE FUNC BOOL STAT_SAVE_MIGRATION_STATUS_START( ) = "0x748942af1e12a63c"
//Save migration error codes.
ENUM SAVE_MIGRATION_STATUS
//This means we can start a check.
SMS_NONE,
SMS_FAILED,
SMS_CANCELED,
SMS_SUCCEDDED,
//This means it is currently in progress.
SMS_PENDING,
//This means this account already has been used in a
// save migration and we saved that info in the profile settings. Account is locked from further migrations
// so no need to check it anymore.
SMS_SKIP_ACCOUNT_ALREADY_USED,
//This means there is an issue and the game is asserting (either not online of profile settings are not valid)
SMS_SKIP_INVALID_STATUS
ENDENUM
//PURPOSE: Structure to retrieve available saves for migration.
STRUCT STRUCT_SAVE_MIGRATION_STATUS
BOOL m_InProgress
TEXT_LABEL_63 m_State
INT m_TransactionId
ENDSTRUCT
//PURPOSE
// Check the status of STAT_SAVE_MIGRATION_STATUS_START(). We need to call this 1st to make sure the game is not returning
// SMS_SKIP_ACCOUNT_ALREADY_USED which means we dont need to call STAT_SAVE_MIGRATION_STATUS_START( ). Also the tunable
// check to skip STAT_SAVE_MIGRATION_STATUS_START( ) must be added at this point.
//
//NOTES
// You must have this before using this command - ARE_PROFILE_SETTINGS_VALID( ) and NETWORK_IS_SIGNED_ONLINE()
//
NATIVE FUNC SAVE_MIGRATION_STATUS STAT_GET_SAVE_MIGRATION_STATUS( STRUCT_SAVE_MIGRATION_STATUS& data ) = "0x08eae21f06c7a7b5"
//PURPOSE
// Cancel a save migration that has pending for too long. This can only be done after STAT_GET_SAVE_MIGRATION_STATUS is SMS_SUCCEDDED
// because I will be checking that data.
//
//NOTES
// - Call STAT_SAVE_MIGRATION_STATUS_START and make sure is succedds.
// - Check the pending Migration in progress.
//
NATIVE FUNC BOOL STAT_SAVE_MIGRATION_CANCEL_PENDING_OPERATION( ) = "0xb9565218052f429f"
//Cancel Save migration error codes.
ENUM CANCEL_SAVE_MIGRATION_STATUS
CSMS_NONE,
CSMS_PENDING,
CSMS_FAILED,
CSMS_SUCCEDDED,
CSMS_CANCELED
ENDENUM
//PURPOSE
// Get status for STAT_SAVE_MIGRATION_CANCEL_PENDING_OPERATION.
//
NATIVE FUNC CANCEL_SAVE_MIGRATION_STATUS STAT_GET_CANCEL_SAVE_MIGRATION_STATUS( ) = "0xf8f7ccdaadfec4a1"
//PURPOSE
// Call this to make sure that this account is entitled to consume a certain content id.
// JobLTSRoundInfo
// Again, this does nothing to check if the user should have access to the content, it is
// only to enforce uniqueness that only one given player can unlock a specific piece of content
// from a given cg account. So we should still be using the cross-platform leaderboard/profile
// stats reads to determine if a player should have CGtoNG content unlocked.
//
// For the player having played last Gen if the command is returning TRUE please use this to make sure
// he is entitled to that.
//
//NOTES
//
// - contentId: You can use whatever contentId you want, as long as we're consistent.
// The server doesn't care what the contentId is it just uses it to track the status separately
// per piece of content if there is more than one.
// - Special Edition content please use the string hash of the content.
// - For having played last gen just use the hash of "played_last_gen".
//
NATIVE FUNC BOOL STAT_SAVE_MIGRATION_CONSUME_CONTENT(INT contentId, STRING sourcePlatform, STRING srcGamerHandle) = "0xc8f2a29ebfc11d15"
//Status for the migrate save operations.
ENUM COMSUME_CONTENT_ERROR_CODE
ERROR_UNKNOWN = -1,
ERROR_NONE = 0,
//(ConsumeContentUnlock) The source account has already been used to unlock this content for another account
ERROR_UNLOCK_ALREADY_USED = 4
ENDENUM
//PURPOSE
// Get status for STAT_SAVE_MIGRATION_CONSUME_CONTENT.
//
NATIVE FUNC TASK_NET_STATUS STAT_GET_SAVE_MIGRATION_CONSUME_CONTENT_STATUS( COMSUME_CONTENT_ERROR_CODE& errorCode ) = "0x0b20b5d4d87c4382"
//PURPOSE
// Enable the tracking of the stats after it has been disabled
//
//NOTES
// Does nothing if already enabled
//
NATIVE PROC STAT_ENABLE_STATS_TRACKING( ) = "0x59574790c15de236"
//PURPOSE
// Disable the tracking of the stats.
// This is useful when in some mission we have a particular situation that could mess with the stats, ex : B*1955817
//
//NOTES
// Does nothing if already disabled
//
NATIVE PROC STAT_DISABLE_STATS_TRACKING( ) = "0xbe6819d99223c1f8"
//PURPOSE
// Whether or not the tracking of the stats is enabled
//
//NOTES
// -
//
NATIVE FUNC BOOL STAT_IS_STATS_TRACKING_ENABLED( ) = "0x2cef7a2968af81aa"
// Policy for the recording of the stats using the commands below.
ENUM RECORD_STAT_POLICY
RSP_SUM = 1,
RSP_GREATEST = 2,
RSP_LOWEST = 3
ENDENUM
// Policy for the recording of the stats using the commands below.
ENUM RECORD_STAT
REC_STAT_NONE,
REC_STAT_LONGEST_WHEELIE_DIST,
REC_STAT_LONGEST_STOPPIE_DIST,
REC_STAT_LONGEST_DRIVE_NOCRASH,
REC_STAT_TOP_SPEED_CAR,
REC_STAT_MOST_FLIPS_IN_ONE_JUMP,
REC_STAT_MOST_SPINS_IN_ONE_JUMP,
REC_STAT_HIGHEST_JUMP_REACHED,
REC_STAT_FARTHEST_JUMP_DIST,
REC_STAT_NUMBER_NEAR_MISS_NOCRASH,
REC_STAT_LONGEST_SURVIVED_FREEFALL,
REC_STAT_LOWEST_PARACHUTE_OPEN,
REC_STAT_DIST_DRIVING_CAR_REVERSE,
REC_STAT_LONGEST_SURVIVED_SKYDIVE,
REC_STAT_NUMBER_STOLEN_VEHICLE,
REC_STAT_PLAYERS_SET_ON_FIRE,
REC_STAT_ON_FOOT_ALTITUDE,
REC_STAT_FLIGHT_TIME_BELOW_20,
REC_STAT_FLIGHT_DIST_BELOW_20,
REC_STAT_FLIGHT_TIME_BELOW_100,
REC_STAT_FLIGHT_DIST_BELOW_100,
REC_STAT_PLANE_BARREL_ROLLS,
REC_STAT_MELEE_KILLED_PLAYERS,
REC_STAT_SNIPER_KILL_DISTANCE,
REC_STAT_SNIPER_KILL,
REC_STAT_DB_NON_TURRET_PLAYER_KILLS,
REC_STAT_PLAYER_HEADSHOTS,
REC_STAT_DIST_BAILING_FROM_VEHICLE,
REC_STAT_PLAYER_VEHICLE_DAMAGES,
REC_STAT_NEAR_MISS_PRECISE,
REC_STAT_DIST_BEACHING_BOAT,
REC_STAT_DIST_WALLRIDE
ENDENUM
//PURPOSE
// Start recording a stat until stop is called.
//
//NOTES
// See enum above for the stats that are supported
//
NATIVE FUNC BOOL STAT_START_RECORD_STAT(RECORD_STAT stat, RECORD_STAT_POLICY policy) = "0x1ccfe7df655ac498"
//PURPOSE
// Stop recording a stat started with the above command.
//
//NOTES
// -
//
NATIVE FUNC BOOL STAT_STOP_RECORD_STAT() = "0x2ac5dd7077138d6d"
//PURPOSE
// Get the recorded stat value
//
//NOTES
// This can be called at anytime. Will retrieve the last recorded value after a stop, or the current value while recording.
// If no value has been recorded, returns false and the value is unchanged.
//
NATIVE FUNC BOOL STAT_GET_RECORDED_VALUE(FLOAT& value) = "0xd1b34bb9f529fc07"
//PURPOSE
// Check if we're already recording a stat
//
NATIVE FUNC BOOL STAT_IS_RECORDING_STAT() = "0xca66ea7984aab667"
//PURPOSE
// Get the current value of the near miss without crash counter
//
//NOTES
// Warning, this is used for challenges and the value can be forced to restart at 0 by calling the reset command below.
//
NATIVE FUNC INT STAT_GET_CURRENT_NEAR_MISS_NOCRASH() = "0x29640d345d607667"
//PURPOSE
// Get the current value of the near miss without crash counter more precisely
//
//NOTES
// Warning, this is used for challenges
//
NATIVE FUNC INT STAT_GET_CURRENT_NEAR_MISS_NOCRASH_PRECISE() = "0xa6b44a0401bc7bdc"
//PURPOSE
// Reset the current value of the near miss without crash counter
//
//NOTES
// This is used when a challenge starts to get rid of the previous value
//
NATIVE PROC STAT_RESET_CURRENT_NEAR_MISS_NOCRASH() = "0xed41ff02b5bb53b9"
//PURPOSE
// Get the current value of the rear wheel distance
NATIVE FUNC FLOAT STAT_GET_CURRENT_REAR_WHEEL_DISTANCE() = "0xe073c52bda52fad1"
//PURPOSE
// Get the current value of the front wheel distance
NATIVE FUNC FLOAT STAT_GET_CURRENT_FRONT_WHEEL_DISTANCE() = "0x23ccd14221a67576"
//PURPOSE
// Get the current value of the jump distance
NATIVE FUNC FLOAT STAT_GET_CURRENT_JUMP_DISTANCE() = "0x99172e9326fb9464"
//PURPOSE
// Get the current value of the jump height
NATIVE FUNC FLOAT STAT_GET_LAST_JUMP_HEIGHT() = "0x0f5d7211074d2254"
//PURPOSE
// Get the current speed
NATIVE FUNC FLOAT STAT_GET_CURRENT_SPEED() = "0xd6a1e19478669f13"
//PURPOSE
// Get the current value of flips
NATIVE FUNC INT STAT_GET_CURRENT_FLIPS() = "0xb121f715c649d300"
//PURPOSE
// Get the current value of spins
NATIVE FUNC INT STAT_GET_CURRENT_SPINS() = "0xf41d98f7f772007d"
//PURPOSE
// Get the current distance driven in reverse
NATIVE FUNC FLOAT STAT_GET_CURRENT_DRIVING_REVERSE_DISTANCE() = "0xed08fd0b61f59a38"
//PURPOSE
// Get the current skydiving distance
NATIVE FUNC FLOAT STAT_GET_CURRENT_SKYDIVING_DISTANCE() = "0x6a91ed71437a1f2c"
//PURPOSE
// Get the current altitude reached by foot
NATIVE FUNC FLOAT STAT_GET_CURRENT_FOOT_ALTITUDE() = "0xbc861984fe512128"
//PURPOSE
// Get the current value of the drive without crashing distance
NATIVE FUNC FLOAT STAT_GET_CURRENT_DRIVE_NOCRASH_DISTANCE() = "0xe15f1878b9b5545d"
//PURPOSE
// Get the current time spent flying under 20m or 100m on the back depending on the active challenge
NATIVE FUNC FLOAT STAT_GET_CHALLENGE_FLYING_TIME() = "0x9b1a199d1cc1db47"
//PURPOSE
// Get the current distance spent flying under 20m or 100m on the back depending on the active challenge
NATIVE FUNC FLOAT STAT_GET_CHALLENGE_FLYING_DIST() = "0xb099946873170472"
//PURPOSE
// Get the current flying altitude
NATIVE FUNC BOOL STAT_GET_FLYING_ALTITUDE(FLOAT& value) = "0x9c6a175f9509b94d"
//PURPOSE
// Get the current flying altitude
NATIVE FUNC BOOL STAT_IS_PLAYER_VEHICLE_ABOVE_OCEAN() = "0x79a47b0799590d3d"
//PURPOSE
// Get the current spin count in plane
NATIVE FUNC FLOAT STAT_GET_PLANE_BARREL_ROLL_COUNT() = "0x1b44c51cab97394d"
//PURPOSE
// Get the last bail out of vehicle distance
NATIVE FUNC FLOAT STAT_GET_VEHICLE_BAIL_DISTANCE() = "0x1c976e6e8b56d553"
//PURPOSE
// Get the current freefall altitude
NATIVE FUNC FLOAT STAT_GET_CURRENT_FREEFALL_ALTITUDE() = "0xe8cca30684d34472"
//PURPOSE
// Get the current freefall altitude
NATIVE FUNC FLOAT STAT_GET_LAST_PLAYERS_VEHICLES_DAMAGES() = "0x283eb1893abba49d"
//PURPOSE
// Get the current freefall altitude
NATIVE FUNC FLOAT STAT_GET_CURRENT_DISTANCE_BEACHING_BOAT() = "0xfc4e94a9e1cd22db"
//PURPOSE
// Returns the current distance wallriding
NATIVE FUNC FLOAT STAT_GET_CURRENT_WALLRIDE_DISTANCE() = "0xa340eed499d7a1a5"
//PURPOSE
// Must be called when the game needs to be rollback from a successfull migration.
//
//NOTES
// - Make sure the transaction id matches the SAVE_MIGRATION_TRANSACTION_ID otherwise it means the
// current state "RolledBack" was already dealt with. Local player must be online and the profile
// settings must be valid as well.
//
NATIVE FUNC BOOL STAT_ROLLBACK_SAVE_MIGRATION( ) = "0x13f9b097d05090e4"
//PURPOSE
// Set/Unset value for profile setting GAMER_HAS_SPECIALEDITION_CONTENT.
NATIVE PROC SET_HAS_SPECIALEDITION_CONTENT( INT value ) = "0x212eddd868f364b5"
//PURPOSE
// Set/Unset value for profile setting SAVE_MIGRATION_TRANSACTION_ID_WARNING.
NATIVE PROC SET_SAVE_MIGRATION_TRANSACTION_ID_WARNING( INT value ) = "0x38c0996ec9115333"
//PURPOSE
// Retrieve the local boss goon UUID.
NATIVE PROC GET_BOSS_GOON_UUID( INT characterSlot, INT& valueA, INT& valueB ) = "0x77ba8a25e71029a6"
//PURPOSE
// DEPRECATED ! Clear the local boss goon UUID.
NATIVE PROC CLEAR_BOSS_GOON_UUID( ) = "0x2d6c553aff8bdf96"
//PURPOSE
// Start being a boss
NATIVE PROC START_BEING_BOSS(INT version = 1) = "0xcc2c5d5d493f83c6"
///PURPOSE
/// Type of invite when started being a Goon
ENUM GOON_INVITE_TYPE
GIT_DEBUG,
GIT_NEARBY,
GIT_FRIENDS,
GIT_CREW,
GIT_INDIVIDUAL,
GIT_LOOKING_FOR_WORK
ENDENUM
//PURPOSE
// Start being a goon
NATIVE PROC START_BEING_GOON(INT bossId1, INT bossId2, GOON_INVITE_TYPE inviteMode) = "0xbdcc3d18a955cf5e"
//PURPOSE
// Ends being a boss
NATIVE PROC END_BEING_BOSS(INT m_endingReason, INT time) = "0xb9ec19c8ab4c6a90"
//PURPOSE
// Ends being a goon
NATIVE PROC END_BEING_GOON(INT bossId1, INT bossId2, INT m_endingReason, INT rpBonus, INT time = 0) = "0x53c6816dab686bad"
//PURPOSE
// When hired a Limo as Boss or Goon
NATIVE PROC HIRED_LIMO(INT bossId1, INT bossId2) = "0xa3fef02369d04d74"
//PURPOSE
// When a Goon, players can order in any of thier Boss's personal vehicles for free at any time.
NATIVE PROC ORDER_BOSS_VEHICLE(INT bossId1, INT bossId2, INT vehicleId) = "0xfc0f1f89410e78ca"
//PURPOSE
// When Changing Uniform
NATIVE PROC CHANGE_UNIFORM(INT bossId1, INT bossId2, INT uniform) = "0x920f8e60c962fbfd"
//PURPOSE
// When switching "Looking for work" in the Boss and Goons settings
NATIVE PROC CHANGE_GOON_LOOKING_FOR_WORK(BOOL value) = "0x2e47f7ca5ba96254"
//PURPOSE
// Metric sent when "ghosting to player" is activated
NATIVE PROC SEND_METRIC_GHOSTING_TO_PLAYER(GAMER_HANDLE& hGamer) = "0x8717e4a42c91b477"
//PURPOSE
// Returns the id of the last successful stunt jump for this session even if it has been completed already.
NATIVE FUNC INT GET_LAST_STUNTJUMP_ID() = "0x8e16a719fdd45bd5"
//PURPOSE
// Metric sent when poaching a vip/bodyguard. BossId is the poached player bossId. isVip is whether or not the poached player is a Vip (if not, he's a bodyguard)
NATIVE PROC SEND_METRIC_VIP_POACH(INT bossId1, INT bossId2, BOOL isVip) = "0x129634c27b11e46a"
// PURPOSE
// After a Contraband mission, call this command for each goon. 1 means punished, 0 means not punished
NATIVE PROC SEND_METRIC_PUNISH_BODYGUARD(INT value) = "0xb749f9c25cc70c69"
ENUM TrackedStuntType
ST_FRONTFLIP,
ST_BACKFLIP,
ST_SPIN,
ST_WHEELIE,
ST_STOPPIE,
ST_BOWLING_PIN,
ST_FOOTBALL,
ST_ROLL
ENDENUM
// PURPOSE
// Enables stunt events to be sent
NATIVE PROC PLAYSTATS_START_TRACKING_STUNTS() = "0x18345c8b764a8920"
// PURPOSE
// Disable stunt events
NATIVE PROC PLAYSTATS_STOP_TRACKING_STUNTS() = "0xa3662e8735ccb6bf"
// PURPOSE
// Track average time per session in seconds
NATIVE PROC STAT_TRACK_AVERAGE_TIME_PER_SESSION() = "0x13d60a1dcdcc4a23"
// PURPOSE
// Struct for ending missions:
// 1. Club work
// 2. Club challenges
// 3. Member challenges
// 4. Clubhouse missions
// 5. Business missions
//
// m_missionTypeId - Make sure you set the values 1 to 5, see above.
// m_bossId1 and m_bossId2 - this is like in contraband missions.
/// isBoss - this is set code side.
// Set -1 for BLANK values.
//
STRUCT STRUCT_MISSION_END
////////////////////////////////////////
//
// These values must be set on all missions.
//
////////////////////////////////////////
INT m_missionId
INT m_missionTypeId
INT m_matchId1
INT m_matchId2
INT m_bossId1
INT m_bossId2
INT m_starterBossId1
INT m_starterBossId2
////////////////////////////////////////
//
// Check the mission you are doing and make sure you set the correct values - make sure you
// leave at -1 values that will be excluded from the metric submission.
//
////////////////////////////////////////
INT m_PlayerParticipated = -1 // Serialized in the metric name'MISSION_ENDED' as "a"
INT m_TimeStart = -1 // Serialized in the metric name'MISSION_ENDED' as "b"
INT m_TimeEnd = -1 // Serialized in the metric name'MISSION_ENDED' as "c"
INT m_Won = -1 // Serialized in the metric name'MISSION_ENDED' as "d"
INT m_EndingReason = -1 // Serialized in the metric name'MISSION_ENDED' as "e"
INT m_CashEarned = 0 // Serialized in the metric name'MISSION_ENDED' as "f"
INT m_RpEarned = 0 // Serialized in the metric name'MISSION_ENDED' as "g"
INT m_TargetsKilled = -1 // Serialized in the metric name'MISSION_ENDED' as "h"
INT m_InnocentsKilled = -1 // Serialized in the metric name'MISSION_ENDED' as "i"
INT m_Deaths = -1 // Serialized in the metric name'MISSION_ENDED' as "j"
INT m_LauncherRank = -1 // Serialized in the metric name'MISSION_ENDED' as "k"
INT m_MCPointsEarnedFromWinning = -1 // Serialized in the metric name'MISSION_ENDED' as "l"
INT m_TimeTakenToComplete = -1 // Serialized in the metric name'MISSION_ENDED' as "m"
INT m_TimeTakenForObjective = -1 // Serialized in the metric name'MISSION_ENDED' as "n"
INT m_PropertyDamageValue = -1 // Serialized in the metric name'MISSION_ENDED' as "o"
INT m_LongestWheelieTime = -1 // Serialized in the metric name'MISSION_ENDED' as "p"
INT m_NumberOfCarsKicked = -1 // Serialized in the metric name'MISSION_ENDED' as "q"
INT m_PlayersLeftInProgress = -1 // Serialized in the metric name'MISSION_ENDED' as "r"
INT m_Location = -1 // Serialized in the metric name'MISSION_ENDED' as "s"
INT m_InvitesSent = -1 // Serialized in the metric name'MISSION_ENDED' as "t"
INT m_InvitesAccepted = -1 // Serialized in the metric name'MISSION_ENDED' as "u"
INT m_BossKilled = -1 // Serialized in the metric name'MISSION_ENDED' as "v"
INT m_GoonsKilled = -1 // Serialized in the metric name'MISSION_ENDED' as "w"
INT m_PackagesGathered = -1 // Serialized in the metric name'MISSION_ENDED' as "x"
INT m_FriendlyAiDeaths = -1 // Serialized in the metric name'MISSION_ENDED' as "y"
INT m_RaceToLocationLaunched = -1 // Serialized in the metric name'MISSION_ENDED' as "z"
INT m_CratesDestroyed = -1 // Serialized in the metric name'MISSION_ENDED' as "ab"
INT m_AIKilled = -1 // Serialized in the metric name'MISSION_ENDED' as "bb"
INT m_AlliesSpawned = -1 // Serialized in the metric name'MISSION_ENDED' as "cb"
INT m_AlliesDroppedOff = -1 // Serialized in the metric name'MISSION_ENDED' as "db"
INT m_VansSpawned = -1 // Serialized in the metric name'MISSION_ENDED' as "eb"
INT m_VansDestroyed = -1 // Serialized in the metric name'MISSION_ENDED' as "fb"
INT m_TypeOfBusinesS = -1 // Serialized in the metric name'MISSION_ENDED' as "gb"
INT m_OtherBusinessOwned = -1 // Serialized in the metric name'MISSION_ENDED' as "hb"
INT m_StartVolume = -1 // Serialized in the metric name'MISSION_ENDED' as "ib"
INT m_EndVolume = -1 // Serialized in the metric name'MISSION_ENDED' as "jb"
INT m_StartSupplyCapacity = -1 // Serialized in the metric name'MISSION_ENDED' as "kb"
INT m_EndSupplyCapacity = -1 // Serialized in the metric name'MISSION_ENDED' as "lb"
INT m_SuppliesDestroyed = -1 // Serialized in the metric name'MISSION_ENDED' as "mb"
INT m_SuppliesDelivered = -1 // Serialized in the metric name'MISSION_ENDED' as "nb"
INT m_IsMissionAfterFailedDefend = -1 // Serialized in the metric name'MISSION_ENDED' as "ob"
INT m_CashSpentOnResupplies = -1 // Serialized in the metric name'MISSION_ENDED' as "pb"
INT m_ProductDestroyed = -1 // Serialized in the metric name'MISSION_ENDED' as "qb"
INT m_ProductDelivered = -1 // Serialized in the metric name'MISSION_ENDED' as "rb"
INT m_UpgradesOwned = -1 // Serialized in the metric name'MISSION_ENDED' as "sb"
INT m_FromHackerTruck = -1 // Serialized in the metric name'MISSION_ENDED' as "tb"
INT m_properties = 0 // Serialized in the metric name'MISSION_ENDED' as "ub"
INT m_properties2 = 0 // Serialized in the metric name'MISSION_ENDED' as "vb"
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_MISSION_ENDED(STRUCT_MISSION_END& data) = "0x13832e7d597ddad5"
// PURPOSE
// Struct for ending missions for import export
//
STRUCT STRUCT_IMPEXP_MISSION_END
////////////////////////////////////////
//
// These values must be set on all missions.
//
////////////////////////////////////////
INT m_missionId // bid boss_id
INT m_missionTypeId // mid match_id
INT m_matchId1 // isboss  player_role
INT m_matchId2
INT m_bossId1
INT m_bossId2
INT m_starterBossId1
INT m_starterBossId2
////////////////////////////////////////
//
// Check the mission you are doing and make sure you set the correct values - make sure you
// leave at -1 values that will be excluded from the metric submission.
//
////////////////////////////////////////
INT m_PlayerParticipated = -1 // a player_participated
INT m_TimeStart = -1 // b time_start
INT m_TimeEnd = -1 // c time_end
INT m_Won = -1 // d won
INT m_EndingReason = -1 // e ending_reason
INT m_CashEarned = 0 // f cash_earned
INT m_RpEarned = 0 // g rp_earned
INT m_TargetsKilled = -1 // h targets_killed
INT m_InnocentsKilled = -1 // i Checkpoints Gathered
INT m_Deaths = -1 // j deaths
INT m_LauncherRank = -1 // k  launcher_rank
INT m_TimeTakenToComplete = -1 // l time_taken_to_complete
INT m_PlayersLeftInProgress = -1 // m   players_left_in_progress
INT m_Location = -1 // n   Location
INT m_InvitesSent = -1 // o   invites_sent
INT m_InvitesAccepted = -1 // p   invites_accepted
INT m_BossKilled = -1 // q boss_killed
INT m_GoonsKilled = -1 // r goons_killed
INT m_CrateAreasDestroyed = -1 // s - objects destroyed
INT m_Vehicle = -1 // u vehicle
INT m_VehicleStyle = -1 // v vehicle_style
INT m_VehicleHealth = -1 // w vehicle_health
INT m_VehiclePoached = -1 // x - vehicle poached? And method
INT m_VehiclePoachedMethod = -1
INT m_Vehicle2 = -1 // y - vehicle2
INT m_Vehicle2Style = -1 // z vehicle2_style
INT m_Vehicle2Health = -1 // ab vehicle2_health
INT m_Vehicle2Poached = -1 // bb - vehicle poached? And method
INT m_Vehicle2PoachedMethod = -1
INT m_Vehicle3 = -1 // cb vehicle3
INT m_Vehicle3Style = -1 // db vehicle3_style
INT m_Vehicle3Health = -1 // eb vehicle3_health
INT m_Vehicle3Poached = -1 // fb - vehicle poached? And method
INT m_Vehicle3PoachedMethod = -1
INT m_Vehicle4 = -1 // gb vehicle4
INT m_Vehicle4Style = -1 // hb vehicle4_style
INT m_Vehicle4Health = -1 // ib vehicle4_health
INT m_Vehicle4Poached = -1
INT m_Vehicle4PoachedMethod = -1
INT m_BuyerChosen = -1 // jb buyer_chosen
INT m_WasMissionCollection = -1 // kb - Was mission "Collection"? And type
INT m_Collection1 = -1 // lb - Collection 1: Vehicles owned
INT m_Collection2 = -1 // mb - Collection 2: Vehicles owned
INT m_Collection3 = -1 // nb - Collection 3: Vehicles owned
INT m_Collection4 = -1 // ob - Collection 4: Vehicles owned
INT m_Collection5 = -1 // pb - Collection 5: Vehicles owned
INT m_Collection6 = -1 // qb - Collection 6: Vehicles owned
INT m_Collection7 = -1 // rb - Collection 7: Vehicles owned
INT m_Collection8 = -1 // sb - Collection 8: Vehicles owned
INT m_Collection9 = -1 // tb - Collection 9: Vehicles owned
INT m_Collection10 = -1 // ub - Collection 10: Vehicles owned
INT m_StartVolume = -1 // vb start_volume (cars in wareouse)
INT m_EndVolume = -1 // wb end_volume (cars in wareouse)
INT m_MissionType = -1
INT m_FromHackerTruck = -1
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_IMPEXP_MISSION_ENDED(STRUCT_IMPEXP_MISSION_END& data) = "0x58e508b2cce30269"
//////////////////////////////////////////////////////////////////////////
// BIKERS TELEMETRY
// PURPOSE: Telemetry for a MC role change
NATIVE PROC PLAYSTATS_CHANGE_MC_ROLE(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT previousRole, INT newRole, INT mcPoint) = "0x61778c42b38c1c54"
// PURPOSE: Telemetry for changing MC outfit
NATIVE PROC PLAYSTATS_CHANGE_MC_OUTFIT(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT outfit) = "0x29e604852f212ac6"
// PURPOSE: Telemetry for switching MC emblem on/off
NATIVE PROC PLAYSTATS_SWITCH_MC_EMBLEM(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT emblem) = "0xd3e8a783e68f3e22"
// PURPOSE: Telemetry for requesting a MC vehicle
NATIVE PROC PLAYSTATS_MC_REQUEST_BIKE(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT vehicleHash) = "0x5828a425c266fc6f"
// PURPOSE: Telemetry for MC Members Abilities - RP from killing separated rival MC member
NATIVE PROC PLAYSTATS_MC_KILLED_RIVAL_MC_MEMBER(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT rpEarned) = "0x8695ebbd3140c524"
// PURPOSE: Telemetry for MC Members Abilities - Abandoning MC - 'Marked for Death'
NATIVE PROC PLAYSTATS_ABANDONED_MC(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT abandonedMc) = "0x82cba4a4eba2bc27"
// PURPOSE: Telemetry sent whenever players earns MC Points from a variety of methods
NATIVE PROC PLAYSTATS_EARNED_MC_POINTS(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT method, INT amount) = "0x32f2a84df86ecd0c"
// PURPOSE: Telemetry sent when formation ENDS
// formationStyle - formation Style
// duration - how long formation lasted on the road
// membersAmount - Max number of MC members involved
NATIVE PROC PLAYSTATS_MC_FORMATION_ENDS(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT formationStyle, INT duration, INT membersAmount) = "0x80360c1d11b06af0"
// PURPOSE: Telemetry sent whenever any of the actvity events finishes (Darts, Arm Wrestling, Drinking, Smoking, Jukebox)
// If not a jukebox activity, jukeboxStation should be set to -1
NATIVE PROC PLAYSTATS_MC_CLUBHOUSE_ACTIVITY(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT minigameType, INT jukeboxStation, INT mcPointsEarned) = "0xb3f4e4027712226f"
// PURPOSE: Telemetry sent whenever whenever a RIVAL player:
// 1. Steals another CEO's Import Export car and delivers it to thier CEO's warehouse
// 2. Steals another CEO's Import Export car and delivers it to the cops
// 3. Steals another CEO's Import Export car and delivers it to the scrapyard
NATIVE PROC PLAYSTATS_RIVAL_BEHAVIOR(INT bossId1, INT bossId2, INT matchId1, INT matchId2, INT deliveryDestination, INT cashEarned, INT rpEarned, INT vehicle, INT vehicleStyle, BOOL importMission) = "0x05e10ef660f1eaa5"
// PURPOSE: Telemetry sent whenever a new character enters GTAO for first time
// slotUsed - Character slot used (INT)
// copyOption - Did player reject the 'copy rank option (INT - "0" = YES, "1" = NO, "2” = Player did not have option).
// propertyAwarded - Property Awarded (INT - "0" to "4", one for each of the 5 options)
// characterInSlot - does player have existing character in the other slot? Y/N (BOOL)
// rank - rank of existing character in other slot (INT - send '8001' if player doesn't have an existing character)
// previousRank - if player deleted a character in order to start a new character in the same slot, what rank was that previous character (INT - send '8001' if player did not have to delete a previous character)
// totalTime - total playing time on deleted character slot (INT - send "0" if player did not have an existing character slot).
NATIVE PROC PLAYSTATS_COPY_RANK_INTO_NEW_SLOT(INT slotUsed, INT copyOption, INT propertyAwarded, INT characterInSlot, INT rank, INT previousRank, INT totalTime) = "0x87f64e95e7d20e35"
// PURPOSE: Telemetry sent whenever we detect a dupe and block player from entering a vehicle
STRUCT STRUCT_DUPE_DETECTION
INT m_locationBlocked // Where they were blocked (vehicle entry, mod shop entry, selling option)
INT m_reasonBlocked // Why they were blocked (which of the 3 lists. previous 5 veh sold, last 5 plates to be changed, plates of last 10 known dupes)
INT m_vehicleModel // Vehicle model
INT m_dupesSold // If a limited number of allowed dupes had been sold, and if so, how many.
INT m_blockedVehicles // Number of vehicles owned by player which match blocked vehicles license plate
INT m_ownedVehicles // Total number of owned vehicles
INT m_garageSpace // Total number of personal garage spaces
INT m_exploitLevel // Exploit Level of player
INT m_levelIncrease // Did we apply an exploit level increase? If so, how much
BOOL m_iFruit // Does the player have the iFruit app?
INT m_spareSlot1 // spare slot
INT m_spareSlot2 // spare slot
ENDSTRUCT
NATIVE PROC PLAYSTATS_DUPE_DETECTED(STRUCT_DUPE_DETECTION& data) = "0xb1f7a9523f08ff13"
// PURPOSE: Telemetry sent whenever we display the ScriptHook Ban Alert message and the user selected an option
NATIVE PROC PLAYSTATS_BAN_ALERT(INT optionSelected) = "0x00409823e90f7907"
// PURPOSE
// Struct for ending missions for gunrunning
//
STRUCT STRUCT_GUNRUNNING_MISSION_END
////////////////////////////////////////
//
// These values must be set on all missions.
//
////////////////////////////////////////
INT m_missionId
INT m_missionTypeId
INT m_matchId1
INT m_matchId2
INT m_bossId1
INT m_bossId2
////////////////////////////////////////
//
// Check the mission you are doing and make sure you set the correct values - make sure you
// leave at -1 values that will be excluded from the metric submission.
//
////////////////////////////////////////
INT m_PlayerParticipated
INT m_PlayerRole
INT m_TimeStart
INT m_TimeEnd
INT m_Won
INT m_EndingReason
INT m_CashEarned
INT m_RpEarned
INT m_TargetsKilled
INT m_InnocentsKilled
INT m_Deaths
INT m_LauncherRank
INT m_TimeTakenToComplete
INT m_PlayersLeftInProgress
INT m_Location
INT m_InvitesSent
INT m_InvitesAccepted
INT m_BossKilled
INT m_GoonsKilled
INT m_SuppliesStolen
INT m_SuppliesOwned
INT m_ProductsOwned
INT m_OwnBunker
INT m_OwnFiringRange
INT m_OwnGunLocker
INT m_OwnCaddy
INT m_OwnTrailer
INT m_OwnLivingArea
INT m_OwnPersonalQuarter
INT m_OwnCommandCenter
INT m_OwnArmory
INT m_OwnVehModArmory
INT m_OwnVehStorage
INT m_OwnEquipmentUpgrade
INT m_OwnSecurityUpgrade
INT m_OwnStaffUpgrade
INT m_ResuppliesPassed
INT m_FromHackerTruck
INT m_properties
INT m_properties2
INT m_missionCategory
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_GUNRUNNING_MISSION_ENDED(STRUCT_GUNRUNNING_MISSION_END& data) = "0x806fe7b7db6b4483"
// PURPOSE
// Struct for metric sent whenever a player starts or ends R&D OR Production.
//
STRUCT STRUCT_GUNRUNNING_RND
INT m_bossId1
INT m_bossId2
INT m_StartorEnd
INT m_UpgradeType
INT m_staffPercentage
INT m_supplyAmount
INT m_productionAmount
ENDSTRUCT
// PURPOSE: Telemetry sent whenever a player starts or ends R&D OR Production.
NATIVE PROC PLAYSTATS_GUNRUNNING_RND(STRUCT_GUNRUNNING_RND& data) = "0x898d135426febf95"
// Sends an array of int in the generic Security metric.
// Right now the maximum of fields sent is 7.
// IntArray[0] - identifier
// IntArray[1] - Cash/RP
// IntArray[2] - Amount
NATIVE PROC APPEND_LAST_VEH_METRIC(INT &data[], GAMER_HANDLE& fromgamer, GAMER_HANDLE& togamer) = "0x9b5d2e1b89f58544"
//////////////////////////////////////////////////////////////////////////
// SMUGGLERS TELEMETRY
// PURPOSE: Telemetry sent whenever a player converts certain pegasus vehicles into personal vehicles by driving them into the player owned hanger.
NATIVE PROC PLAYSTATS_PEGASUS_AS_PERSONAL_AIRCRAFT(INT vehicleId) = "0xa1574858139a3894"
// PURPOSE
// Struct for ending missions for gunrunning
//
STRUCT STRUCT_SMUGGLER_MISSION_END
////////////////////////////////////////
//
// These values must be set on all missions.
//
////////////////////////////////////////
INT m_missionId
INT m_missionTypeId
INT m_matchId1
INT m_matchId2
INT m_bossId1
INT m_bossId2
////////////////////////////////////////
//
// Check the mission you are doing and make sure you set the correct values - make sure you
// leave at -1 values that will be excluded from the metric submission.
//
////////////////////////////////////////
INT m_PlayerParticipated = -1
INT m_PlayerRole = -1
INT m_TimeStart = -1
INT m_TimeEnd = -1
INT m_Won = -1
INT m_EndingReason = -1
INT m_CashEarned = -1
INT m_RpEarned = -1
INT m_TargetsKilled = -1
INT m_InnocentsKilled = -1
INT m_Deaths = -1
INT m_LauncherRank = -1
INT m_TimeTakenToComplete = -1
INT m_PlayersLeftInProgress = -1
INT m_Location = -1
INT m_InvitesSent = -1
INT m_InvitesAccepted = -1
INT m_BossKilled = -1
INT m_GoonsKilled = -1
INT m_SuppliesStolen = -1
INT m_SuppliesOwned = -1
INT m_ResuppliesPassed = -1
INT m_OwnHangar = -1
INT m_OwnFurniture = -1
INT m_OwnFlooring = -1
INT m_OwnStyle = -1
INT m_OwnLivingArea = -1
INT m_OwnLighting = -1
INT m_OwnWorkshop = -1
INT m_AttackType = -1
INT m_BossType = -1
INT m_MembersParticipated = -1
INT m_HangarSlot1 = -1
INT m_HangarSlot2 = -1
INT m_HangarSlot3 = -1
INT m_HangarSlot4 = -1
INT m_HangarSlot5 = -1
INT m_HangarSlot6 = -1
INT m_HangarSlot7 = -1
INT m_HangarSlot8 = -1
INT m_HangarSlot9 = -1
INT m_HangarSlot10 = -1
INT m_Vehicle1Health = -1
INT m_Vehicle2Health = -1
INT m_Vehicle3Health = -1
INT m_SourceAnyType = -1
INT m_ContrabandType = -1
INT m_FromHackerTruck = -1
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_SMUGGLER_MISSION_ENDED(STRUCT_SMUGGLER_MISSION_END& data) = "0xe054822c491e697a"
// PURPOSE
// Struct for ending freemode heist preparation
//
STRUCT STRUCT_FM_HEIST_PREP_ENDED
////////////////////////////////////////
//
// These values must be set on all missions.
//
////////////////////////////////////////
INT m_missionId
INT m_missionTypeId
INT m_matchId1
INT m_matchId2
INT m_bossId1
INT m_bossId2
////////////////////////////////////////
//
// Check the mission you are doing and make sure you set the correct values - make sure you
// leave at -1 values that will be excluded from the metric submission.
//
////////////////////////////////////////
INT m_PlayerParticipated = -1
INT m_PlayerRole = -1
INT m_TimeStart = -1
INT m_TimeEnd = -1
INT m_Won = -1
INT m_EndingReason = -1
INT m_CashEarned = -1
INT m_RpEarned = -1
INT m_TargetsKilled = -1
INT m_InnocentsKilled = -1
INT m_Deaths = -1
INT m_LauncherRank = -1
INT m_TimeTakenToComplete = -1
INT m_PlayersLeftInProgress = -1
INT m_Location = -1
INT m_InvitesSent = -1
INT m_InvitesAccepted = -1
INT m_HeistSessionID = -1
INT m_OwnBase = -1
INT m_OwnCannon = -1
INT m_OwnSecurityRoom = -1
INT m_OwnLounge = -1
INT m_OwnLivingQuarters = -1
INT m_OwnTiltRotor = -1
INT m_OrbitalCannonShots = -1
INT m_OrbitalCannonKills = -1
INT m_AssasinationLevel1Calls = -1
INT m_AssasinationLevel2Calls = -1
INT m_AssasinationLevel3Calls = -1
INT m_PrepCompletionType = -1
INT m_TimeSpentHacking = -1
INT m_FailedStealth = -1
INT m_QuickRestart = -1
INT m_StarterBossId1 = -1
INT m_StarterBossId2 = -1
INT m_SessionID = -1
INT m_BossType = -1
INT m_AttackType = -1
INT m_TimeTakenForObjective = -1
INT m_EntitiesStolen = -1
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_FM_HEIST_PREP_ENDED(STRUCT_FM_HEIST_PREP_ENDED& data) = "0x394a4ac6fa3905c0"
// PURPOSE
// Struct for ending instanced heist missions
//
STRUCT STRUCT_INSTANCED_HEIST_ENDED
JobBInfo m_infos
INT m_bossId1 = -1
INT m_bossId2 = -1
INT m_BossType = -1
INT m_AttackType = -1
INT m_OwnBase = -1
INT m_OwnCannon = -1
INT m_OwnSecurityRoom = -1
INT m_OwnLounge = -1
INT m_OwnLivingQuarters = -1
INT m_OwnTiltRotor = -1
INT m_OrbitalCannonShots = -1
INT m_OrbitalCannonKills = -1
INT m_AssasinationLevel1Calls = -1
INT m_AssasinationLevel2Calls = -1
INT m_AssasinationLevel3Calls = -1
INT m_ObserveTargetCalls = -1
INT m_PrepCompletionType = -1
INT m_FailedStealth = -1
INT m_QuickRestart = -1
ENDSTRUCT
// PURPOSE: Telemetry for missions - called at the end.
NATIVE PROC PLAYSTATS_INSTANCED_HEIST_ENDED(STRING creator, STRING matchId, STRING playlistid, STRUCT_INSTANCED_HEIST_ENDED& data) = "0xb48ebffa2167e483"
// PURPOSE
// Struct for DAR missions checkpoints
//
STRUCT STRUCT_DAR_CHECKPOINT
INT m_StartLocation = -1
INT m_Checkpoint1Complete = -1
INT m_TimeTakenToCompleteCheckpoint1 = -1
INT m_Checkpoint2Complete = -1
INT m_TimeTakenToCompleteCheckpoint2 = -1
INT m_Checkpoint3Complete = -1
INT m_TimeTakenToCompleteCheckpoint3 = -1
INT m_Checkpoint4Complete = -1
INT m_TimeTakenToCompleteCheckpoint4 = -1
INT m_EndLocation = -1
INT m_DarAcquired = -1
INT m_TotalTimeSpent = -1
INT m_CashEarned = -1
INT m_RPEarned = -1
INT m_Replay = -1
INT m_FailedReason = -1
INT m_RockstarAccountIndicator = -1
ENDSTRUCT
// PURPOSE: Telemetry for Dual Action Revolver head shot challenge - called after reching a checkpoint
NATIVE PROC PLAYSTATS_DAR_CHECKPOINT(STRUCT_DAR_CHECKPOINT& data) = "0x17da863603f94ac8"
/////////////////////////////////////////////////////////////////////////////// MEGA BUSINESS
STRUCT STRUCT_BUSINESS_BATTLE_ENDED
INT m_missionId = -1
INT m_missionTypeId = -1
INT m_bossId1 = -1 //BossId
INT m_bossId2 = -1 //BossId
INT m_matchId1 = -1 //MatchId
INT m_matchId2 = -1 //MatchId
INT m_playerParticipated = -1 //Whether or not player participated
INT m_timeStart = -1 //Time work started
INT m_timeEnd = -1 //Time work ended
INT m_won = -1 //won/lost
INT m_endingReason = -1 //Reason for script ending - timer ran out, left session, etc
INT m_cashEarned = -1 //Cash Earned.
INT m_rpEarned = -1 //RP Earned.
INT m_bossKilled = -1 //Boss's killed
INT m_goonsKilled = -1 //Goons killed
INT m_targetLocation = -1
INT m_launchedByBoss = -1 //Whether or not work was launched by this Boss
INT m_starterBossId1 = -1
INT m_starterBossId2 = -1
INT m_playerrole = -1
INT m_targetskilled = -1
INT m_timetakentocomplete = -1
INT m_playersleftinprogress = -1
INT m_bosstype = -1
INT m_attacktype = -1
INT m_packagesstolen = -1
INT m_participationLevel = -1
INT m_entitiesstolentype = -1
BOOL m_ownnightclub = FALSE
INT m_objectivelocation = -1
INT m_deliverylocation = -1
INT m_collectiontype = -1
INT m_enemytype = -1
INT m_enemyvehicle = -1
INT m_eventitem = -1
BOOL m_iscop = FALSE
ENDSTRUCT
// PURPOSE: Telemetry for Business battle ended
NATIVE PROC PLAYSTATS_BUSINESS_BATTLE_ENDED(STRUCT_BUSINESS_BATTLE_ENDED& data) = "0x408363ec3f842fc2"
STRUCT STRUCT_WAREHOUSE_MISSION_ENDED
INT m_missionId = -1
INT m_missionTypeId = -1
INT m_matchId1 = -1
INT m_matchId2 = -1
INT m_bossId1 = -1
INT m_bossId2 = -1
INT m_PlayerParticipated = -1
INT m_PlayerRole = -1
INT m_TimeStart = -1
INT m_TimeEnd = -1
INT m_Won = -1
INT m_EndingReason = -1
INT m_CashEarned = -1
INT m_RpEarned = -1
INT m_TargetsKilled = -1
INT m_InnocentsKilled = -1
INT m_Deaths = -1
INT m_LauncherRank = -1
INT m_TimeTakenToComplete = -1
INT m_PlayersLeftInProgress = -1
INT m_Location = -1
INT m_InvitesSent = -1
INT m_InvitesAccepted = -1
INT m_BossKilled = -1
INT m_GoonsKilled = -1
INT m_SuppliesStolen = -1
INT m_SuppliesOwned = -1
INT m_ProductsOwned = -1
BOOL m_ownnightclub = FALSE
INT m_numberoftechnicians = -1
BOOL m_ownequipmentupgrade = FALSE
BOOL m_ownhackertruck = FALSE
INT m_ownwarehouseb2 = -1
INT m_ownwarehouseb3 = -1
INT m_ownwarehouseb4 = -1
INT m_ownwarehouseb5 = -1
BOOL m_ownmissilelauncher = FALSE
BOOL m_owndronestation = FALSE
BOOL m_ownhackerbike = FALSE
BOOL m_ownvehicleworkshop = FALSE
INT m_quickrestart = -1
INT m_bosstype = -1
INT m_attacktype = -1
INT m_deliveryproduct = -1
INT m_enemygroup = -1
INT m_ambushvehicle = -1
INT m_deliveryvehicle = -1
INT m_productssellchoice = -1
INT m_shipmentsize = -1
INT m_totalunitssold = -1
INT m_timeusingdrone = -1
INT m_dronedestroyed = -1
INT m_totaldronetases = -1
BOOL m_iscop = FALSE
ENDSTRUCT
// PURPOSE: Telemetry for Warehouse mission ended
NATIVE PROC PLAYSTATS_WAREHOUSE_MISSION_ENDED(STRUCT_WAREHOUSE_MISSION_ENDED& data) = "0x088366fa1148eb2f"
STRUCT STRUCT_NIGHTCLUB_MISSION_ENDED
INT m_missionId = -1
INT m_missionTypeId = -1
INT m_matchId1 = -1
INT m_matchId2 = -1
INT m_bossId1 = -1
INT m_bossId2 = -1
INT m_PlayerParticipated = -1
INT m_PlayerRole = -1
INT m_TimeStart = -1
INT m_TimeEnd = -1
INT m_Won = -1
INT m_EndingReason = -1
INT m_CashEarned = -1
INT m_RpEarned = -1
INT m_TargetsKilled = -1
INT m_InnocentsKilled = -1
INT m_Deaths = -1
INT m_LauncherRank = -1
INT m_TimeTakenToComplete = -1
INT m_PlayersLeftInProgress = -1
INT m_Location = -1
INT m_InvitesSent = -1
INT m_InvitesAccepted = -1
INT m_BossKilled = -1
INT m_GoonsKilled = -1
INT m_SuppliesStolen = -1
INT m_SuppliesOwned = -1
INT m_ProductsOwned = -1
BOOL m_ownnightclub = FALSE
INT m_ownadditionalstaff = -1
INT m_ownadditionalsecurity = -1
BOOL m_ownhackertruck = FALSE
INT m_quickrestart = -1
INT m_bosstype = -1
INT m_attacktype = -1
INT m_collectiontype = -1
INT m_enemygroup = -1
INT m_ambushvehicle = -1
INT m_deliverylocation = -1
INT m_properties = 0
INT m_properties2 = 0
INT m_launchMethod = 0
ENDSTRUCT
// PURPOSE: Telemetry for Nightclub mission ended
NATIVE PROC PLAYSTATS_NIGHTCLUB_MISSION_ENDED(STRUCT_NIGHTCLUB_MISSION_ENDED& data) = "0xd64d32d200423b06"
// PURPOSE: Telemetry for Dj usage
NATIVE PROC PLAYSTATS_DJ_USAGE(INT djUsage, INT location = 0) = "0x695c81d0332d9916"
// PURPOSE: Telemetry for minigames usage
NATIVE PROC PLAYSTATS_MINIGAME_USAGE(INT usage, INT location = 0, INT duration = 0) = "0x6993f138c829b26a"
STRUCT STRUCT_STONE_HATCHET_END
INT m_timespent
INT m_result
INT m_cashearned
INT m_rpearned
INT m_Location
INT m_Target
FLOAT m_TargetX
FLOAT m_TargetY
INT m_TargetEvasionChoice
FLOAT m_damagedealt
FLOAT m_damagerecieved
BOOL m_capturedorkilled
BOOL m_chestfound
ENDSTRUCT
// PURPOSE: Telemetry for Stone hatchet ended
NATIVE PROC PLAYSTATS_STONE_HATCHET_ENDED(STRUCT_STONE_HATCHET_END& data) = "0xbeb7291ef6b778e3"
///////////////////////////////////////////////////////////////////////////////
// PURPOSE
// Struct for DAR missions checkpoints
//
STRUCT STRUCT_ENTER_SESSION_PACK
INT m_Enterp_Prop = -1
INT m_Enterp_Veh = -1
INT m_Enterp_Weapon = -1
INT m_Enterp_Tattoo1 = -1
INT m_Enterp_Tattoo2 = -1
INT m_Enterp_Clothing1 = -1
INT m_Enterp_Clothing2 = -1
ENDSTRUCT
// PURPOSE: Telemetry every time a player enters a session, and will allow PIA to discern whether or not a player is a Starter Pack player, or a Premium Edition player.
// It will also detail what Starter Pack and Premium Edition items a player owned before purchasing the Starter Pack.
NATIVE PROC PLAYSTATS_ENTER_SESSION_PACK(STRUCT_ENTER_SESSION_PACK& data) = "0xeb0ddef618b05dc8"
// PURPOSE: Telemetry for drone usage
NATIVE PROC PLAYSTATS_DRONE_USAGE(INT time, INT endReason, INT totalDroneTases) = "0x12cd528ec74914fe"
// PURPOSE: Metric fires at the end of the wheel spin (when the player choses to play only - do not send a metric if the player never pushes x to stop the wheel after being knocked out)
NATIVE PROC PLAYSTATS_SPIN_WHEEL(INT contentId, INT spintType, INT rewardType, INT rewardItem) = "0x0cc7ae3d2fd7dcf2"
// PURPOSE: Metric to be sent when the player opts out of the specific spectator mode or the match ends.
NATIVE PROC PLAYSTATS_ARENA_WARS_SPECTATOR(INT contentId, INT spectatorMode, INT weaponizedMode, INT duration, INT kills) = "0xaed646ac791f774a"
STRUCT STRUCT_ARENA_WARS_ENDED
INT m_sessionid = -1
INT m_publiccontentid = -1
INT m_cashearned = -1
INT m_launchmethod = -1
INT m_leftinprogress = -1
INT m_xp = -1
INT m_kills = -1
INT m_deaths = -1
INT m_suicides = -1
INT m_rank = -1
INT m_vehicleid = -1
INT m_matchduration = -1
INT m_playingtime = -1
INT m_result = -1
INT m_premiumEvent = 0
INT m_skillLevel = -1
INT m_endreason = -1
INT m_killer = -1
INT m_killervehicle = -1
INT m_matchtype = -1
INT m_matchname = -1
INT m_checkpointsCollected = -1
INT m_bonusTime = -1
INT m_finishPosition = -1
INT m_teamType = -1
INT m_teamId = -1
INT m_personalVehicle = 0
INT m_flagsStolen = -1
INT m_flagsDelivered = -1
INT m_totalPoints = -1
INT m_goalsScored = -1
INT m_suddenDeath = 0
INT m_winConditions = -1
INT m_damageDealt = -1
INT m_damageReceived = -1
INT m_gladiatorKills = -1
INT m_bombTime = -1
INT m_spectatorTime = -1
INT m_totalTagIns = -1
INT m_timeEliminated = -1
INT m_lobbyModLivery = -1
INT m_lobbyModArmor = -1
INT m_lobbyModWeapon = -1
INT m_lobbyModMine = -1
INT m_controlTurret = 0
ENDSTRUCT
// PURPOSE: Metric to fire when match ends.
NATIVE PROC PLAYSTATS_ARENA_WARS_ENDED(STRUCT_ARENA_WARS_ENDED& data) = "0xfad8de13daf839cc"
// PURPOSE: Metric to be sent when the player switches the passive mode on or off
NATIVE PROC PLAYSTATS_SWITCH_PASSIVE_MODE(BOOL value, INT source, INT ghostedTo, INT endReason) = "0x5106caaf87c49a90"
// PURPOSE: Metric to be sent every time a collectible is picked up
NATIVE PROC PLAYSTATS_COLLECTIBLE_PICKED_UP(INT collectionType, INT pickedUp, INT pickedSoFar, INT total, INT awardCash, INT awardRP, INT awardChips, INT awardItems, INT location, INT animal, INT awardMedal = 0) = "0x105d0aa48fb961ae"
/// CASINO
STRUCT STRUCT_CASINO_STORY_MISSION_ENDED
INT m_MatchCreator
INT m_SessionType
INT m_PlaylistId
INT m_Kills
INT m_Deaths
INT m_Cash
INT m_CashStart
INT m_CashEnd
INT m_MissionLaunch
INT m_Difficulty
INT m_FirstPerson
INT m_Medal
INT m_TeamLivesUsed
INT m_FailureReason
INT m_UsedQuickRestart
BOOL m_IsHost
BOOL m_IsSessionVisible
BOOL m_LeftInProgress
BOOL m_SpookedCops
INT m_PlayingTime
INT m_XP
INT m_Suicides
INT m_Rank
INT m_CrewId
INT m_Result
INT m_JobPoints
BOOL m_UsedVoiceChat
INT m_HeistSessionId
BOOL m_ClosedJob
BOOL m_PrivateJob
BOOL m_FromClosedFreemode
BOOL m_FromPrivateFreemode
INT m_BossUUID
INT m_BossUUID2
INT m_BossType
INT m_FailedStealth
INT m_MissionID
INT m_MissionVariation
BOOL m_OwnPenthouse
BOOL m_OwnGarage
BOOL m_OwnOffice
INT m_HouseChipsEarned
INT m_RestartPoint
BOOL m_LaunchedByPlayer
ENDSTRUCT
STRUCT STRUCT_CASINOMETRIC
INT m_gameType
INT m_matchType
INT m_tableID
INT m_handID
INT m_endReason
BOOL m_allIn
INT m_chipsDelta
INT m_finalChipBalance
INT m_totalPot
INT m_playersAtTable
BOOL m_viewedLegalScreen
BOOL m_ownPenthouse
INT m_betAmount1
INT m_betAmount2
INT m_winAmount
BOOL m_win
BOOL m_cheat
INT m_timePlayed
BOOL m_isHost
INT m_hostID
INT m_membership
ENDSTRUCT
STRUCT STRUCT_CASINOCHIPMETRIC
INT m_action
INT m_transactionID
INT m_cashAmount
INT m_chipsAmount
INT m_reason
INT m_cashBalance
INT m_chipBalance
INT m_item
ENDSTRUCT
STRUCT STRUCT_ROULETTEMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
BOOL m_iBetStraight
BOOL m_iBetSplit
BOOL m_iBetStreet
BOOL m_iBetCorner
BOOL m_iBetFiveNumber
BOOL m_iBetSixLine
BOOL m_oBetRed
BOOL m_oBetBlack
BOOL m_oBetOddNumber
BOOL m_oBetEvenNumber
BOOL m_oBetLowBracket
BOOL m_oBetHighBracket
BOOL m_oBetDozen
BOOL m_oBetColumn
INT m_winningNumber
INT m_winningColour
ENDSTRUCT
STRUCT STRUCT_BLACKJACKMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
BOOL m_stand
BOOL m_hit
BOOL m_double
BOOL m_split
INT m_outcome
ENDSTRUCT
STRUCT STRUCT_THREECARDPOKERMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
BOOL m_pairPlus
INT m_outcome
ENDSTRUCT
STRUCT STRUCT_SLOTMACHINEMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
INT m_machineStyle
ENDSTRUCT
STRUCT STRUCT_INSIDETRACKMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
INT m_gameChoice
INT m_horseChoice
ENDSTRUCT
STRUCT STRUCT_LUCKYSEVENMETRIC
STRUCT_CASINOMETRIC m_casinoMetric
INT m_rewardType
INT m_rewardItem
INT m_rewardAmount
ENDSTRUCT
NATIVE PROC PLAYSTATS_CASINO_STORY_MISSION_ENDED(STRUCT_CASINO_STORY_MISSION_ENDED& data, STRING matchId) = "0x4c517c8e9091cf2f"
NATIVE PROC PLAYSTATS_CASINO_CHIP(STRUCT_CASINOCHIPMETRIC& data) = "0x40b7bafae68b3b4b"
NATIVE PROC PLAYSTATS_CASINO_ROULETTE(STRUCT_ROULETTEMETRIC& data) = "0xce2b99bd74235922"
NATIVE PROC PLAYSTATS_CASINO_BLACKJACK(STRUCT_BLACKJACKMETRIC& data) = "0xcf03dfe4022cd1aa"
NATIVE PROC PLAYSTATS_CASINO_THREE_CARD_POKER(STRUCT_THREECARDPOKERMETRIC& data) = "0x7f6e93cfee0575cc"
NATIVE PROC PLAYSTATS_CASINO_SLOT_MACHINE(STRUCT_SLOTMACHINEMETRIC& data) = "0xc4f42fb6ef3d3ad8"
NATIVE PROC PLAYSTATS_CASINO_INSIDE_TRACK(STRUCT_INSIDETRACKMETRIC& data) = "0x0d72f741f82c7fdb"
NATIVE PROC PLAYSTATS_CASINO_LUCKY_SEVEN(STRUCT_LUCKYSEVENMETRIC& data) = "0x1957acef6a2a721c"
STRUCT STRUCT_CASINOMETRICLIGHT
INT m_matchType
INT m_tableID
INT m_endReason
INT m_chipsDelta
INT m_finalChipBalance
INT m_duration
BOOL m_viewedLegalScreen
INT m_betAmount1
INT m_betAmount2
INT m_cheatCount
BOOL m_isHost
INT m_hostID
INT m_handsPlayed
INT m_winCount
INT m_loseCount
INT m_membership
ENDSTRUCT
STRUCT STRUCT_BLACKJACKMETRICLIGHT
STRUCT_CASINOMETRICLIGHT m_casinoMetric
INT m_dealerBlackjackCount
INT m_playerBlackjackCount
INT m_surrenderCount
INT m_bustCount
INT m_7CardCharlieCount
ENDSTRUCT
STRUCT STRUCT_SLOTMACHINEMETRICLIGHT
STRUCT_CASINOMETRICLIGHT m_casinoMetric
INT m_machineStyle
ENDSTRUCT
STRUCT STRUCT_INSIDETRACKMETRICLIGHT
STRUCT_CASINOMETRICLIGHT m_casinoMetric
INT m_individualGameCount
INT m_mainEventCount
ENDSTRUCT
NATIVE PROC PLAYSTATS_CASINO_ROULETTE_LIGHT(STRUCT_CASINOMETRICLIGHT& data) = "0xb2b72c2a5c575c31"
NATIVE PROC PLAYSTATS_CASINO_BLACKJACK_LIGHT(STRUCT_BLACKJACKMETRICLIGHT& data) = "0xbde5abc4347750ff"
NATIVE PROC PLAYSTATS_CASINO_THREE_CARD_POKER_LIGHT(STRUCT_CASINOMETRICLIGHT& data) = "0x2f56bfe7cf953d90"
NATIVE PROC PLAYSTATS_CASINO_SLOT_MACHINE_LIGHT(STRUCT_SLOTMACHINEMETRICLIGHT& data) = "0x1e63d77aa576606a"
NATIVE PROC PLAYSTATS_CASINO_INSIDE_TRACK_LIGHT(STRUCT_INSIDETRACKMETRICLIGHT& data) = "0xddef35d1614e2f2c"
NATIVE PROC PLAYSTATS_ARCADE_GAME(INT gameType, INT numPlayers, INT powerUps, INT kills, INT timePlayed, INT score, INT location) = "0xc9e0752c5af51dc0"
STRUCT STRUCT_ARCADE_LOVE_MATCH
INT matchId1
INT matchId2
INT score
INT flying
INT stamina
INT shooting
INT driving
INT stealth
INT maxHealth
INT trueLove
INT nemesis2
ENDSTRUCT
NATIVE PROC PLAYSTATS_ARCADE_LOVE_MATCH(GAMER_HANDLE& hGamer, STRUCT_ARCADE_LOVE_MATCH& data) = "0x508b99f137224f1d"
STRUCT STRUCT_FREEMODE_CASINO_MISSION_ENDED
INT m_missionId
INT m_missionTypeId
INT m_matchId1
INT m_matchId2
INT m_bossId1
INT m_bossId2
INT m_PlayerParticipated
INT m_PlayerRole
INT m_TimeStart
INT m_TimeEnd
INT m_Won
INT m_EndingReason
INT m_CashEarned
INT m_RpEarned
INT m_TargetsKilled
INT m_InnocentsKilled
INT m_Deaths
INT m_LauncherRank
INT m_TimeTakenToComplete
INT m_PlayersLeftInProgress
INT m_Location
INT m_InvitesSent
INT m_InvitesAccepted
INT m_BossKilled
INT m_GoonsKilled
INT m_missionVariation
INT m_launchMethod
INT m_ownPenthouse
INT m_ownGarage
INT m_ownOffice
INT m_houseChipsEarned
ENDSTRUCT
// PURPOSE: Telemetry for Freemode Casino mission ended
NATIVE PROC PLAYSTATS_FREEMODE_CASINO_MISSION_ENDED(STRUCT_FREEMODE_CASINO_MISSION_ENDED& data) = "0xf736e9ffb158c31e"
/////////////////////////////////////////////////////////////////////////////// HEIST 3
STRUCT STRUCT_HEIST3_DRONE
INT missionName //Checkpoint Collection, Assassination, Finale, null if not applicable
INT playthroughId //if used during the finale, null if not applicable; playthrough ID, this should appear in all related content, like scopes, preps and finales, and would enable us to track an entire heist playthrough
INT endReason //reason for stopping
INT time //length of time drone was used
INT totalDroneTases //number of cameras and enemies tased
INT totalDroneTranq //number of enemies tranquilised
BOOL nano //whether this is the nano drone
INT cpCollected //checkpoints collected before exiting, in Checkpoint Collection; null if not applicable
INT targetsKilled //targets killed in Assassination; null if not applicable
ENDSTRUCT
// PURPOSE: triggers after using the Casino Heist drone
NATIVE PROC PLAYSTATS_HEIST3_DRONE(STRUCT_HEIST3_DRONE& data) = "0x3410b63b8434966b"
// PURPOSE: triggers at the end of the hacking minigames added in Casino Heist
NATIVE PROC PLAYSTATS_HEIST3_HACK(INT type, INT playthroughId, INT minigame, BOOL won, INT iStep, INT iTime) = "0x74f42e3fabc4f024"
// PURPOSE: triggers after being contacted by an NPC on the phone
NATIVE PROC PLAYSTATS_NPC_PHONE(INT caller, INT type, INT subject, INT playerAction, BOOL request, INT rank) = "0xd6cb1a1c9d35d3ef"
STRUCT STRUCT_ARCADE_CABINET
INT gameType //which arcade game: Badlands Revenge 2, Race & Chase, Axe of Fury, Madame Nazar etc.
INT matchId //ID to connect the arcade match between players, where applicable
INT numPlayers //number of players
INT level //which level the player stopped on
INT powerUps //number of power ups collected
INT kills //number of entities destroyed/killed
INT timePlayed //time played
INT score //score at the end of the game
INT reward //fortune from Madam Nazar, prize from claw crane, trophy, null if not applicable
INT challenges //which challenges were completed
INT location //property hash this arcade game is in
ENDSTRUCT
// PURPOSE: triggers at the end of the Arcade minigames added in Casino Heist with the exception of Love Match, tracked separately
NATIVE PROC PLAYSTATS_ARCADE_CABINET(STRUCT_ARCADE_CABINET& data) = "0xe302e901503a46d8"
STRUCT STRUCT_HEIST3_FINALE
INT playthroughId //playthrough ID, this should appear in all related content, like scopes, preps and finales, and would enable us to track an entire heist playthrough
INT missionId //mission name
TEXT_LABEL_31 publicContentId //public content ID
INT playthroughHashMac //mac hash
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
INT replay //counts how many times this mission was failed, then continued from checkpoint/restarted; resets after the player exits the mission, null if not applicable
INT rpEarned //RP earned
BOOL difficult //whether the mission has increased difficulty
INT timeTakenToComplete //time taken to complete
INT checkpoint //what checkpoint was the heist failed at; null if not applicable
INT playCount //how many times has the player completed this mission before; first time is 1, then increments of 1 after completing finale, only success matters
INT approachBoard //stealth, subterfuge, direct
BOOL approachDirect //was the original approach failed, and default to direct; null if the original approach is Direct
INT wCrew //weapon crew member
INT wLoadout //loadout 1 or 2
INT dCrew //driver crew member
INT vehicleGetaway //getaway vehicle
INT vehicleSwap //vehicle picked for swapping
INT hCrew //hacker crew member
INT outfitIn //outfit the player used when entering the casino
INT outfitOut //outfit the player used when leaving the casino, if applicable and different to outfitIn
INT mask //mask used, null if not applicable
INT vehicleSwapped //whether the player used the chosen swap vehicle
INT useEMP //whether the the EMP was used
INT useDrone //whether the player used the Drone
INT useThermite //whether the player used thermite to pass the security keypads
INT useKeycard //whether the player used the keycard to pass the security keypads
INT hack //whether the player completed the hacking minigame to pass the security keypads
INT cameras //does the player have the security cameras information
INT accessPoints //which access points were used
INT vaultTarget //diamonds, gold, cash, art
INT vaultAmt //amount stolen from vault
INT dailyCashRoomAmt //amount stolen from daily cash room
INT depositBoxAmt //amount stolen from safety deposit boxes
INT percentage //heist percentage of payout
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT buyerLocation //buyer's location
ENDSTRUCT
// PURPOSE: triggers at the end of finale missions
NATIVE PROC PLAYSTATS_HEIST3_FINALE(STRUCT_HEIST3_FINALE& data) = "0xa05816757b8077e8"
STRUCT STRUCT_HEIST3_PREP
INT playthroughId //playthrough ID, this should appear in all related content, like scopes, preps and finales, and would enable us to track an entire heist playthrough
INT missionName //mission name
INT playthroughHashMac //mac hash
INT playCount //how many times has the player completed this mission before, can be null for Arcade property setup, since it can only be played once; first time is 1, then increments of 1 after completing finale, only success matters
INT approach //stealth, subterfuge, direct, null if not applicable
INT type //arcade setup, scope, weapon prep, vehicle prep, equipment prep
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
BOOL playerParticipated //whether the player participated
BOOL difficult //whether the mission has increased difficulty
INT timeTakenToComplete //time taken to complete
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
BOOL isRivalParty //is the party completing the mission the same as the party that launched it, null if not applicable
INT cashEarned //money earned
INT rpEarned //RP earned
INT location //mission subvariation or Arcade property location
INT invitesSent //invites sent
INT invitesAccepted //invites accepted
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT prepCrewMember //elected crew member for this type of prep, null if not applicable
INT unlockYohan //has this player completed the Nighclub setup, unlocking hacker Yohan?
INT unlockCharlie //has this player completed the Smuggler business setup, unlocking gunman Charlie?
INT unlockChester1 //has this player completed the Gunrunning business setup, unlocking driver/gunman Chester McCoy?
INT unlockChester2 //does this player own the Weapons Expert Arena Workshop upgrade, unlocking driver/gunman Chester McCoy?
INT unlockZach //does this player have a Biker Business set up, unlocking driver Zach?
INT unlockPatrick //has this player completed the secret Random Event in Freemode, unlocking gunman Packie McReary?
INT unlockAvi //has the player destroyed all 50 hidden signal jammers, unlocking hacker Avi Schwartzman?
INT unlockPaige //has the player completed a Client Job in their Terrorbyte, unlocking hacker Paige Harris?
INT accessPoints //which entry points were captured, for Scope Out Casino; null is not applicable
INT shipmentsDestroyed //number of shipments destroyed, for Disrupt Shipments, null if not applicable
INT vaultTarget //diamonds, gold, cash, art, for Vault Contents
ENDSTRUCT
// PURPOSE: triggers at the end of arcade setup missions, casino scoping, general prep missions
NATIVE PROC PLAYSTATS_HEIST3_PREP(STRUCT_HEIST3_PREP& data) = "0x71e002586231cecc"
// PURPOSE: triggers when the player exits the MCT, tracking the actions taken
NATIVE PROC PLAYSTATS_MASTER_CONTROL(INT accessed, INT iExit, INT missionType, INT missionName) = "0xf4325aa893d9a6c1"
// PURPOSE: triggers if you quit a job/mission before the end; should also cover scenario where the player quits to singleplayer
NATIVE PROC PLAYSTATS_QUIT_MODE(INT missionType, STRING sMid, INT players, INT duration, BOOL voteDiff) = "0x5c1faee011fb9409"
STRUCT STRUCT_MISSION_VOTE
TEXT_LABEL_31 sMid //Public content ID of mission the player is in
INT numPlayers //Number of current players in the vote screen
INT voteChoice //Restart, continue from checkpoint, quit, abstain; null if equal to field result
INT result //Outcome of the vote
INT timeOnline //Total time the player has been online
BOOL voteDiff //Did the winning vote on the fail alert screen differ from this player's vote
BOOL endBoard //whether this is the leaderboard displayed at the end of the mode or not
ENDSTRUCT
// PURPOSE: triggers after voting on the mission fail alert screen
NATIVE PROC PLAYSTATS_MISSION_VOTE(STRUCT_MISSION_VOTE& data) = "0x73fc05558dd31e81"
STRUCT STRUCT_NJVS_VOTE
TEXT_LABEL_31 sMid //Public content ID of mission the player is in
INT numPlayers //Number of current players in the vote screen
TEXT_LABEL_31 voteChoice //Which mode the player voted for while on the NJVS; presumably will be the public content ID, null if abstain or equal to field result
TEXT_LABEL_31 result //Mode that won the vote; presumably public content ID
INT timeOnline //Total time the player has been online
BOOL voteDiff //Did the winning vote on the NJVS differ from this player's vote; null if N/A
ENDSTRUCT
// PURPOSE: triggers after voting is concluded on the NJVS
NATIVE PROC PLAYSTATS_NJVS_VOTE(STRUCT_NJVS_VOTE& data) = "0xf9b99a9cf272cad8"
// PURPOSE: triggers when the player kills himself via the pause menu.
NATIVE PROC PLAYSTATS_KILL_YOURSELF() = "0x4e6031b668a3f214"
STRUCT STRUCT_DISPATCH_ENDED
INT m_MatchCreator
INT m_SessionType
INT m_PlaylistId
INT m_launchMethod // how this mission was launched; accepted/requested dispatch call
INT m_endingReason // reason this mission ended; arrest, kill, die, leave
INT m_timeTakenToComplete // time taken to complete
INT m_targetsKilled // how many hostile mission peds were killed
INT m_cashEarned // amount of cash earned
INT m_rpEarned // amount of RP earned
ENDSTRUCT
// PURPOSE: Tracks the new Dispatch Call freemode missions.
NATIVE PROC PLAYSTATS_DISPATCH_ENDED(STRUCT_DISPATCH_ENDED& data, STRING matchId) = "0xb1a79ef7f74902ac"
STRUCT STRUCT_YACHT_ENDED
INT m_bossId1 = -1
INT m_bossId2 = -1
INT m_matchId1 = -1
INT m_matchId2 = -1
INT m_missionId = -1
INT m_missionTypeId = -1
INT m_isboss = -1
INT m_bosstype = -1
INT m_playerrole = -1
INT m_playerParticipated = -1
INT m_won = -1
INT m_launchMethod = -1 // where this mission was launched from (from blip, phoning captain, pause menu)
INT m_endingReason = -1
INT m_cashEarned = -1
INT m_rpEarned = -1
INT m_bossKilled = -1
INT m_goonsKilled = -1
INT m_yachtLocation = -1
INT m_targetskilled = -1
INT m_timetakentocomplete = -1
INT m_playersleftinprogress = -1
INT m_waterBombs = -1 // number of water bombs dropped(mission Bluffs on Fire)
INT m_lockOn = -1 // number of times the player got locked - on(mission Kraken Skulls)
ENDSTRUCT
// PURPOSE: Telemetry for Business battle ended
NATIVE PROC PLAYSTATS_YACHT_ENDED(STRUCT_YACHT_ENDED& data) = "0x114b6941bf75808d"
STRUCT STRUCT_CNC_ROUND
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2
INT roundNumber //round number
INT team //cops/crooks
INT role //hash, player's role
INT gameRank //player's current rank in GTAO classic
INT progRank //player's current CnC progression rank
BOOL roleChange //whether the player has changed role during this match
INT spawnLoc //hash, spawn location; potentially not necessary
INT escapeLoc //hash, escape variant
INT roundStartTime //timestamp, start of the round from when the player joined
INT endReasonStgOne //stage 1 end reason: ended due to time, enough cop points, player quit etc.
INT endReasonStgTwo //stage 2 end reason: player died, player arrested, banked money, quit, time out etc.
INT escapeResult //how the escape ended: Success (Escaped), CopKill (The Crook was killed by a Cop), Dead (the player died for any other reason), Arrested (The crook was arrested), TimeUp (Stage timer ran out) etc.
INT durationStgOne //stage 1 duration, in milliseconds; round specific, might be shorter if the player quits before the end
INT durationStgTwo //stage 2 duration, in milliseconds; round specific, might be shorter if the player quits before the end
INT launchMethod //how the player launched this, via pause menu, corona, join with friends, on boot etc.
BOOL jip //whether the player joined in progress
BOOL win //at the end of round 2, whether this player's team has won
INT xpEarned //amount of XP earned
INT streetCrimeCount //on crook's round, number of street crimes the player has completed at the end of the round
INT jobCount //on crook's round, number of jobs the player completed at the end of the round
INT jobsRemaining //jobs remaining unattempted in the round
INT copPoints //number of cop points at the end of the round
INT arrests //depending on team, number of times crook was arrested/ number of times cop made arrests
INT moneyEarned //on crook's round, money earned from street crimes and jobs; null if not applicable
INT moneyStashed //on crook's round, money stashed; null if not applicable
INT moneyBanked //on crook's round, money banked; null if not applicable
INT crooksKilled //crooks killed during this round
INT copsKilled //cops killed during this round
INT deaths //number of times the player died
BOOL VOffender //whether the player was marked as a V Offender during the round
INT incapacitations //depending on team, number of times crook was incapacitated/ number of times cop incapacitated a crook
INT moneyMaxHeld //on crook's round, max amount of money held during round that has not been stashed; null if not applicable
INT endurance //depending on team, amount of endurance damage received by crook or damage drained by cop
INT spawnGroup //group number for the group of 4 players the player spawns with
INT escapeTime //escape duration, in milliseconds; individual to the player
INT spectateTime //spectate mode duration, in milliseconds; individual to the player
INT durationVehicleStgOne //stage 1 time spent in any vehicle, in milliseconds
INT durationVehicleStgTwo //stage 2 time spent in any vehicle, in milliseconds
ENDSTRUCT
// PURPOSE: triggers at the end of a round
NATIVE PROC PLAYSTATS_CNC_ROUND(STRUCT_CNC_ROUND& data) = "0x4f7fd2564eaed5a2"
STRUCT STRUCT_CNC_LOBBY
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT team //what team does the player fall in round one, cops/crooks
INT gameRank //player's current rank in GTAO classic
INT progRank //player's current CnC progression rank
INT copRole //hash, cop's role
INT copWeapons //hash array, cop weapons: primary lethal weapon, secondary lethal weapon, throwable, melee, non lethal; will also need to take into account modkits
INT copClothing //hash array, cop clothing: outfit, mask
INT copTattoos //hash array, cop tattoos: Head, Left Arm, Right Arm, Torso - Chest, Torso - Stomach, Torso - Back, Right Leg, Left Leg, Torso - Side
INT copEmote //hash, cop emote
INT copVehicle //hash array: cop vehicle, livery, modkit
INT copAbilities //hash array, cop abilities: special ability 1, passive ability 1, vehicle ability 1
INT crookRole //hash, crook's role
INT crookWeapons //hash array, crook weapons: primary lethal weapon, secondary lethal weapon, throwable, melee, non lethal; will also need to take into account modkits
INT crookClothing //hash array, crook clothing: outfit, mask
INT crookTattoos //hash array, crook tattoos: Head, Left Arm, Right Arm, Torso - Chest, Torso - Stomach, Torso - Back, Right Leg, Left Leg, Torso - Side
INT crookEmote //hash, crook emote
INT crookVehicle //hash array: crook vehicle, livery, modkit
INT crookAbilities //hash array, crook abilities: special ability 1, passive ability 1, vehicle ability 1
INT endReason //why did the lobby end for the player (match start, exit, disconnect, lobby disbanded, lobby merge, etc.)
INT joinFrom //where did they join this lobby from? (match end, lobby merge, lobby switch, main menu, join with friends, on boot etc.)
INT copSlot //which slot was used for the cop loadout: either preset/custom, or slot number, depending on how this is set up
INT crookSlot //which slot was used for the crook loadout: either preset/custom, or slot number, depending on how this is set up
ENDSTRUCT
// PURPOSE: triggers at the end of the lobby; the main purpose is to track the initial loadouts for both cop and crook default role
NATIVE PROC PLAYSTATS_CNC_LOBBY(STRUCT_CNC_LOBBY& data) = "0xc5f96cbd06e73bbe"
// PURPOSE: triggers after crook stashed money at a safehouse
NATIVE PROC PLAYSTATS_CNC_STASH(INT matchId1, INT matchId2, INT roundNumber, INT stashedFrom, INT safeLoc, INT amount, INT wantedLvl) = "0x1bb84b52fb2d718b"
// PURPOSE: triggers at the beginning of each round
NATIVE PROC PLAYSTATS_CNC_SAFE(INT matchId1, INT matchId2, INT roundNumber, INT &safehouse[]) = "0xa0f24832987635fb"
STRUCT STRUCT_CNC_UNLOCK
INT item //hash, item bought/unlocked in the CnC shop
INT itemType //hash, item type: outfit, mask, tattoo, weapon mod kit etc.
INT itemRank //progression rank this item belongs to
INT itemRole //hash, role this item is relevant for
INT progRank //player's current CnC progression rank
INT tknSpend //amount of tokens spent to buy the item
INT tknBalance //token balance after the transaction is completed
INT moneySpend //money spent to buy this item
INT moneyBalance //money balance after the transaction is completed
ENDSTRUCT
// PURPOSE: triggers after purchasing an item in the progression shop
NATIVE PROC PLAYSTATS_CNC_UNLOCK(STRUCT_CNC_UNLOCK& data) = "0xa6f2e439090f5d6a"
STRUCT STRUCT_CNC_ABILITY
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT team //cops/crooks
INT role //hash, player's role
INT roundNumber //round number
INT stage //potentially hash; "Stash the Cash" or "the Escape"
INT ability //hash, name of the ability used
INT vehicle //hash, vehicle the player is in; null if not applicable
INT wantedLvl //crook's wanted level
ENDSTRUCT
// PURPOSE: triggers after using an active ability
NATIVE PROC PLAYSTATS_CNC_ABILITY(STRUCT_CNC_ABILITY& data) = "0xbc247efa1bd9dbdb"
STRUCT STRUCT_CNC_INCAPACITATE
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT incType //hash, type of incapacitation: damage from non-lethal weapons, melee weapons, vehicle ejection, vehicle collision, falling etc.
INT crookRole //hash, crook's role
INT crookProgRank //CnC progression rank for crook
INT crookVehicle //hash, the vehicle the crook was in at the time; null if not applicable
INT copId //cop account ID, from SCAdmin; this is the last cop that damaged the player's endurance prior to becoming incapacitated
INT copRole //hash, cop's role
INT copProgRank //CnC progression rank for cop
INT copWeapon //hash, weapon the cop player used to drain the last of the endurance, causing the incapacitation
INT copVehicle //hash, the vehicle the cop was in at the time; null if not applicable
BOOL VOffender //whether the crook was branded a V Offender at the time of the incapacitation
INT wantedLvl //crook's wanted level
ENDSTRUCT
// PURPOSE: triggers for a crook after their endurance has been completely drained and they became incapacitated
NATIVE PROC PLAYSTATS_CNC_INCAPACITATE(STRUCT_CNC_INCAPACITATE& data) = "0x6aeba036b8703fda"
STRUCT STRUCT_CNC_JUSTICE
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT roundNumber //round number
INT stage //potentially hash; "Stash the Cash" or "the Escape"
INT crookId //crook account ID, from SCAdmin
INT crookRole //hash, crook's role
INT crookProgRank //CnC progression rank for crook
INT copRole //hash, cop's role
INT copProgRank //CnC progression rank for cop
INT crookEndurance //crook's remaining endurance, at the time of the arrest or kill
BOOL VOffender //whether the crook was branded a V Offender at the time of the arrest
INT cashLost //amount of cash the crook lost
INT wantedLvl //crook's wanted level
INT cashPenalty //amount of cash the cop was penalized
INT type //potentially hash; "Arrest" or "Kill"
ENDSTRUCT
// PURPOSE: triggers after a cop makes an arrest or kills a crook
NATIVE PROC PLAYSTATS_CNC_JUSTICE(STRUCT_CNC_JUSTICE& data) = "0xe06b603b521a57b5"
STRUCT STRUCT_CNC_WORK
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT jobId //ID to match more than one player completing the same job; null if not applicable
INT roundNumber //round number
INT role //hash, player's role
INT workType //hash, street crime or job
INT workName //hash, name of the street crime or job
INT endReason //end reason: complete, died, arrested, time ran out
INT dropOff //drop off location
INT amount //money earned
BOOL bonus //true if this was the last package dropped of a set, resulting in a cash bonus
ENDSTRUCT
// PURPOSE: triggers after a criminal activity is completed; should also trigger on jobs after a package is dropped, since presumably you could stop after one package and walk away
NATIVE PROC PLAYSTATS_CNC_WORK(STRUCT_CNC_WORK& data) = "0x4897a470c8c80f4e"
STRUCT STRUCT_CNC_SWITCH
INT matchId1 //unique ID for the match, used to connect the two rounds and other metrics
INT matchId2 //unique ID for the match, used to connect the two rounds and other metrics
INT roundNumber //round number
INT prevRole //hash, previous role
INT newRole //hash, new role
INT newEmote //hash, emote
INT slot //hash, which slot was the new loadout stored in: either preset/custom, or slot number, depending on how this is set up
INT cashLost //cash lost when switching
ENDSTRUCT
// PURPOSE: triggers after switching roles or loadout, in the Stash the Cash stage
NATIVE PROC PLAYSTATS_CNC_SWITCH(STRUCT_CNC_SWITCH& data, INT &newWeapons[], INT &newClothing[], INT &newTattoos[], INT &newVehicle[]) = "0x891feb9d8b1a8fb8"
// PURPOSE: triggers at the end of a Stash the Cash stage
NATIVE PROC PLAYSTATS_CNC_JOBS(INT roundNumber, INT matchId1, INT matchId2, INT &jobs[]) = "0x747378dcd7ccf09f"
STRUCT STRUCT_HEIST4_PREP
INT playthroughId //playthrough ID, this should appear in all related content, like scopes, preps, finales and minigames, and would enable us to track an entire heist playthrough
INT missionName //mission name
INT sessionId //session ID
INT hashmac //hash mac
INT playCount //number of preps completed
INT type //setup/scope, vehicle prep, equipment prep, weapon prep, disruption prep
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
BOOL playerParticipated //whether the player participated
BOOL difficult //whether the mission has increased difficulty
INT timeTakenToComplete //time taken to complete, in seconds (for consistency)
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
BOOL isRivalParty //is the party completing the mission the same as the party that launched it, null if not applicable
INT cashEarned //money earned
INT rpEarned //RP earned
INT location //mission subvariation
INT invitesSent //invites sent
INT invitesAccepted //invites accepted
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
BOOL mandatory //true if this is a mandatory mission, false if it's optional
INT primTar //what is the primary target: files, bearer bonds, diamonds etc.; null if not applicable to this mission
INT properties //bitset of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT entrances //bitset of entrances scoped: main gate, side gate left, side gate right etc.; null if not applicable to this mission
INT approaches //bitset of approaches unlocked: Stealth Chopper ? North Drop Zone, Gun Boat ? Main Docks etc.; null if not applicable to this mission
INT grappleLoc //bitset of grapple equipment locations scoped; null if not applicable to this mission
INT uniLoc //bitset of uniform locations scoped; null if not applicable to this mission
INT cutterLoc //bitset of bolt cutter locations scoped; null if not applicable to this mission
INT secLootLoc //bitset of secondary loot locations scoped: cash, weed, cocaine, gold, paintings; null if not applicable to this mission
INT miscActions //bitset to account for miscellaneous actions: poison water supply, enemies armour disruption, enemies helicopter disruption, power station scoped, trojan vehicle scoped, control tower scoped, golden gun drawer key, double key cards, acetylene torch; null if not applicable to this mission
INT properties2 //bitset of type of properties owned
ENDSTRUCT
// PURPOSE: triggers after scope/setup and prep missions end for the Island Heist
NATIVE PROC PLAYSTATS_HEIST4_PREP(STRUCT_HEIST4_PREP& data) = "0x95663ae09f86ee73"
STRUCT STRUCT_HEIST4_FINALE
INT playthroughId //playthrough ID, this should appear in all related content, like scopes, preps, finales and minigames, and would enable us to track an entire heist playthrough
INT missionId //mission name
INT sessionId //session ID
TEXT_LABEL_31 publicContentId //public content ID
INT hashmac //hash mac
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
INT replay //counts how many times this mission was failed, then continued from checkpoint/restarted; resets after the player exits the mission, null if not applicable
INT rpEarned //RP earned
BOOL difficult //whether the mission has increased difficulty
INT timeTakenToComplete //time taken to complete, in seconds (for consistency)
INT checkpoint //what checkpoint was the heist failed at; null if not applicable
INT playCount //how many times has the player completed this mission before; first time is 1, then increments of 1 after completing finale, only success matters
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT properties //bitset of type of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT properties2 //bitset of type of properties owned; future proofing
INT percentage //heist percentage of payout
INT tod //time of day chosen (day, night)
INT wLoadout //weapon loadout the player has picked on the board
INT outfits //outfits chosen on the board
BOOL suppressors //whether suppressors were selected on the board
INT supCrewBoard //bitset of support crews selected on the planning board: airstrike, heavy weapon drop, sniper, air support, spy drone, weapon stash
INT islApproach //which approach the players took to infiltrate the island: Stealth Chopper ? North Drop Zone, Gun Boat ? Main Docks etc.
INT islEscBoard //which approach the players chose on the board to escape the island: airstrip, main docks etc.
INT primTar //what is the primary target: files, bearer bonds, diamonds etc.
INT weather //type of weather during the heist
INT weapDisrup //level of enemy weapon disruption: none, low, medium, high
INT supCrewActual //bitset of support crews used during the mission: airstrike, heavy weapon drop, sniper, air support, spy drone, weapon stash
INT miscActions //bitset for miscellaneous actions in the finale: whether the player picked up the golden gun, whether the player picked up the SPAS 12, whether the player looted El Rubio's safe, whether the radar tower has been disabled
INT compEntrance //which compound entrance the players used: main gate explosion, side gate left, side gate right, rappel left etc.
INT primTarEntrance //which entrance the players chose to get to the primary target: elevator, underground entrance 1, underground entrance 1
INT compExit //which exit from the compound the players used: main gate, side gate left etc.
INT interestItemUsed //bitset of equipment used during the finale, on the island: explosives, bolt cutters, side gate codes, trojan horse vehicle, uniform, rappel equipment, jailor keys, glass cutter, double keycard
INT islEscActual //which approach the players actually used to escape the island: airstrip, main docks etc.
BOOL failedStealth //whether the player failed stealth and alerted the enemies
BOOL specCam //was this player in spectator cam when the mission ended
INT moneyEarned //total amount of money earned from the heist
INT secLoot //bitset of secondary loot locations that were hit, minimum of one block stolen: cash, weed, cocaine, gold, paintings
INT secTarCash //array for secondary target cash: number of blocks stolen, money value at the end of the mission, number of blocks at the end of the mission, set block value in the bag
INT secTarCocaine //array for secondary target cocaine: number of blocks stolen, money value at the end of the mission, number of blocks at the end of the mission, set block value in the bag
INT secTarWeed //array for secondary target weed: number of blocks stolen, money value at the end of the mission, number of blocks at the end of the mission, set block value in the bag
INT secTarGold //array for secondary target gold: number of blocks stolen, money value at the end of the mission, number of blocks at the end of the mission, set block value in the bag
INT secTarPaint //array for secondary target paintings: number of blocks stolen, money value at the end of the mission, number of blocks at the end of the mission, set block value in the bag
INT bagCapacity //player's total bag capacity
INT CashBlocksStolen //number of blocks of cash stolen
INT CashValueFinal //money value of cash stolen at the end of the mission
INT CashBlocksFinal //number of blocks of cash held at the end of the mission
INT CashBlocksSpace //set block value in the bag for cash
INT CocaBlocksStolen //number of blocks of cocaine stolen
INT CocaValueFinal //money value of cocaine stolen at the end of the mission
INT CocaBlocksFinal //number of blocks of cocaine held at the end of the mission
INT CocaBlocksSpace //set block value in the bag for cocaine
INT WeedBlocksStolen //number of blocks of weed stolen
INT WeedValueFinal //money value of weed stolen at the end of the mission
INT WeedBlocksFinal //number of blocks of weed held at the end of the mission
INT WeedBlocksSpace //set block value in the bag for weed
INT GoldBlocksStolen //number of blocks of gold stolen
INT GoldValueFinal //money value of gold stolen at the end of the mission
INT GoldBlocksFinal //number of blocks of gold held at the end of the mission
INT GoldBlocksSpace //set block value in the bag for gold
INT PaintBlocksStolen //number of blocks of paintings stolen
INT PaintValueFinal //money value of paintings stolen at the end of the mission
INT PaintBlocksFinal //number of blocks of paintings held at the end of the mission
INT PaintBlocksSpace //set block value in the bag for paintings
ENDSTRUCT
// PURPOSE: triggers after the end of Island Heist finale missions
NATIVE PROC PLAYSTATS_HEIST4_FINALE(STRUCT_HEIST4_FINALE& data) = "0xa2f2a0d01db6acaf"
// PURPOSE: triggers at the end of the hacking minigames in the Island Heist
NATIVE PROC PLAYSTATS_HEIST4_HACK(INT playthroughId, INT minigame, BOOL won, INT istep, INT time) = "0x4f4c481abe5088bc"
// PURPOSE: triggers after the player has left the console for controlling the anti-aircraft missiles, remote-guided missiles and torpedoes
NATIVE PROC PLAYSTATS_SUB_WEAP(INT weapon, BOOL ownSub, INT projectileCount, INT kills) = "0x1000df2eb45e521c"
// PURPOSE: triggers after the player uses the submarine menu to fast travel
NATIVE PROC PLAYSTATS_FAST_TRVL(INT startLoc, FLOAT startX, FLOAT startY, FLOAT startZ, INT endLoc, FLOAT endX, FLOAT endY, FLOAT endZ, INT type) = "0xbe608f8c2140bdfd"
STRUCT STRUCT_HUB_ENTRY
INT type //which social hub is the player in: casino nightclub, beach party
INT properties //bitset of the properties owned
INT access //which access route did the player use: main door, elevator etc.
INT cost //price of entrance, should be 0 if free
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
BOOL bpulled //whether this player was pulled into the social hub (via IM, for example)
BOOL binvited //whether this player joined by accepting an invite
INT properties2 //bitset of type of properties owned
INT vehicle // hash of the player-driven vehicle
INT crewId // ID of the social club crew the player belongs to
BOOL private // instance of social hub is private
INT vehicleType // hash of whether the vehicle driven is a personal vehicle, another player's personal vehicle, generic test drive vehicle or Hao's premium vehicle
INT hubId // ID that applies to this instance of the social hub; would be the same for those players inside the social hub
ENDSTRUCT
// PURPOSE: triggers after the player enters a social hub, meaning the Casino Nightclub and the beach party; does not include the After Hours Nightclub (we can look at adding this at a later date if needed)
NATIVE PROC PLAYSTATS_HUB_ENTRY(STRUCT_HUB_ENTRY& data) = "0x61bb55e2dd91d18b"
STRUCT STRUCT_DJ_MISSION_ENDED
INT missionTypeId //mission name
INT missionId //mission ID
INT matchId //match ID
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT launcherRank //rank of the player launching
INT location //subvariation
INT playerParticipated //whether the player participated
BOOL won //whether the mission was completed successfully
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
INT timeTakenToComplete //time taken to complete, in seconds (for consistency)
INT cashEarned //money earned
INT rpEarned //RP earned
INT chipsEarned //amount of chips earned
INT itemEarned //hash of item earned (t-shirt, vehicle etc.)
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT deaths //how many times the player died
INT bottlesDelivered //amount of tequila/champagne delivered
ENDSTRUCT
// PURPOSE: triggers after an Island Heist DJ mission has ended
NATIVE PROC PLAYSTATS_DJ_MISSION_ENDED(STRUCT_DJ_MISSION_ENDED& data) = "0xa0ee58df5f161a36"
/////////////////////////////////////////////////////////////////////////////// TUNER PACK
STRUCT STRUCT_ROBBERY_PREP
INT playthroughID //playthrough ID, this should appear in all related content for a strand, like preps and finale, and would enable us to track an entire strand playthrough
INT missionName //mission name
INT sessionID //session ID
INT strandID //active strand
INT type //setup, prep
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
BOOL playerParticipated //whether the player participated
INT timeTakenToComplete //time taken to complete, in seconds (for consistency)
INT timeLimit //time limit, in seconds (for consistency); null if not applicable
INT endingReason //similar to previous metrics: won, lost, boss_left etc.
BOOL isRivalParty //is the party completing the mission the same as the party that launched it; null if not applicable
INT cashEarned //money earned
INT rpEarned //RP earned
INT location //mission subvariation
INT invitesSent //invites sent
INT invitesAccepted //invites accepted
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT properties //existing bitset of type of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT properties2 //bitset of type of properties owned; future proofing
BOOL failedStealth //whether the player failed stealth and alerted the enemies
INT deliveryLocation //delivery location
INT hashmac //hash mac
INT vehicleStolen //hash, stolen vehicle in Sewer Schematics, Meth Tanker
INT vehicleCount //count of vehicles delivered in Warehouse Defenses
INT outfits //outfits used, if any, relevant for Scope Transporter, Container Manifest; null otherwise
INT entrance //entrance, relevant for Locate Bunker; null otherwise
INT missionCategory // which set of missions these are (tuner robberies, fixer story missions etc.)
BOOL won // whether the mission was completed successfully
ENDSTRUCT
// PURPOSE: triggers after a Tuner Robbery setup/prep mission has ended
NATIVE PROC PLAYSTATS_ROBBERY_PREP(STRUCT_ROBBERY_PREP& data) = "0xdd14b13c611c2a72"
STRUCT STRUCT_ROBBERY_FINALE
INT playthroughID //playthrough ID, this should appear in all related content for a strand, like preps and finale, and would enable us to track an entire strand playthrough
INT missionID //mission name
INT sessionID //session ID
INT strandID //active strand
TEXT_LABEL_31 publicContentID //public content ID
INT bossId1 //unique ID of the Boss instance
INT bossId2 //unique ID of the Boss instance
INT bosstype //type of org: Securoserv, MC, unaffiliated
INT launcherRank //rank of the player launching
INT playerRole //similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT endingReason //ending reason
INT replay //counts how many times this mission was failed, then continued from checkpoint/restarted; resets after the player exits the mission, null if not applicable
INT rpEarned //RP earned
INT timeTakenToComplete //time taken to complete, in seconds (for consistency)
INT checkpoint //what checkpoint was the mission failed at; null if not applicable
INT deaths //how many times the player died
INT targetsKilled //number of mission critical/aggressive peds killed
INT innocentsKilled //number of innocent peds killed
INT properties //existing bitset of type of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT properties2 //bitset of type of properties owned; future proofing
BOOL failedStealth //whether the player failed stealth and alerted the enemies
INT wLoadout //weapon loadout the player has picked on the board
INT outfits //outfits chosen on the board
INT moneyEarned //total amount of money earned from the heist
INT vehicleBoard //hash, car chosen on the planning board
INT hashmac //hash mac
INT missionCategory // which set of missions these are (tuner robberies, fixer story missions etc.)
BOOL won // whether the mission was completed successfully
ENDSTRUCT
// PURPOSE: triggers after a Tuner Robbery finale mission has ended
NATIVE PROC PLAYSTATS_ROBBERY_FINALE(STRUCT_ROBBERY_FINALE& data) = "0xe0ee314a99919d15"
STRUCT STRUCT_EXTRA_EVENT
INT missionName //mission name
INT pursuer //type of pursuer: phantom car, psycho, clown etc.
INT sessionID //session ID
INT endingReason //reason for the event ending: player went inside interior, died, time ran out etc.
BOOL onFoot //whether the player was on foot
INT time //time until the event ended, in milliseconds
INT timeLimit //max time the event can last, in milliseconds
FLOAT pursuerHealth //or int, amount of health left for the pursuer
ENDSTRUCT
// PURPOSE: triggers at the end of special events, in this case Halloween events phantom car and slashers, when the pursuer despawns
NATIVE PROC PLAYSTATS_EXTRA_EVENT(STRUCT_EXTRA_EVENT& data) = "0xbf65cdc22b435e64"
STRUCT STRUCT_CARCLUB_POINTS
INT boss_id1 //unique ID of the Boss/organization
INT boss_id2 //unique ID of the Boss/organization
INT match_id //match ID
INT method //hash, reason for earning points: item bought, first time bonus, complete mission etc.
INT amount //number of points earned
INT itemBought //hash, item bought that awarded Car Club reputation
INT streak //streak count for visiting the the Car Club
INT memberLevel //membership level
BOOL levelUp //whether the player has just leveled up their membership
ENDSTRUCT
// PURPOSE: triggers after the player earns Car Club reputation to level up their membership
NATIVE PROC PLAYSTATS_CARCLUB_POINTS(STRUCT_CARCLUB_POINTS& data) = "0x533e3fa298cc9b99"
// PURPOSE: triggers after a step of the weekly vehicle challenge has been completed
NATIVE PROC PLAYSTATS_CARCLUB_CHALLENGE(INT missionName, INT numGoalsCompleted, INT numGoalsRequired, INT memberLevel) = "0x3ad2a952db41e956"
// PURPOSE: triggers after the player claims the prize car earned for completing the weekly challenge
NATIVE PROC PLAYSTATS_CARCLUB_PRIZE(INT missionName, INT vehicle) = "0x2fc88162813e5509"
// PURPOSE: triggers after closing the Pause Menu, if the player viewed any of the membership pages for two seconds minimum.
NATIVE PROC PLAYSTATS_PM_NAV(INT pageView, INT leftBy, INT duration) = "0xe7cbbe6c2462c51c"
// PURPOSE: triggers after closing Pause Menu>Stats, currently only for Fixer awards.
NATIVE PROC PLAYSTATS_AWARD_NAV(INT fixerView1, INT fixerDone1) = "0x70f52471e758ebae"
STRUCT STRUCT_FM_MISSION_END
INT m_groupID // group ID; this would enable us to track those players who play this mission together
INT m_missionCategory // which set of missions these are (security contracts, payphone hits etc.)
INT m_missionName // mission name
INT m_sessionID // session ID
INT m_type // type of mission, for example, normal or VIP security contracts
INT m_location // mission variation
INT m_launchMethod // launch method
INT bossId1 // unique ID of the Boss instance
INT bossId2 // unique ID of the Boss instance
INT m_bosstype // type of org: Securoserv, MC, unaffiliated
INT m_launcherRank // rank of the player launching
INT m_playerRole // similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
BOOL m_playerParticipated // whether the player participated
INT m_timeTakenToComplete // time taken to complete, in seconds, for consistency
INT m_timeLimit // time limit, in seconds (for consistency); null if not applicable
BOOL m_won // whether the mission was completed successfully
INT m_endingReason // similar to previous metrics: won, lost, boss_left etc.
BOOL m_isRivalParty // is the party completing the mission the same as the party that launched it; null if not applicable
INT m_cashEarned // money earned
INT m_rpEarned // RP earned
INT m_deaths // how many times the player died
INT m_targetsKilled // number of mission critical/aggressive peds killed
INT m_innocentsKilled // number of innocent peds killed
INT m_properties // existing bitset of type of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT m_properties2 // bitset of type of properties owned; future proofing
BOOL m_failedStealth // whether the player failed stealth and alerted the enemies
INT m_difficulty // mission difficulty: easy, normal, hard, hardest
INT m_bonusKillMethod // bonus kill method needed on this mission (payphone hits): taxi, golf outfit etc.; null if not applicable
INT m_bonusKillComplete // whether the player completed the bonus kill for this mission; null if not applicable
ENDSTRUCT
// PURPOSE: triggers after the player has finished a freemode missions, instanced missions and not heist missions
NATIVE PROC PLAYSTATS_FM_MISSION_END(STRUCT_FM_MISSION_END& data, INT &availMis[], INT &availMisDif[]) = "0x46a70777be6ceab9"
STRUCT STRUCT_INST_MISSION_END
INT groupID // group ID; this would enable us to track those players who play this mission together
INT missionCategory // which set of missions these are; for now, Franklin and Lamar short trips
INT missionName // mission name
INT sessionID // session ID
INT type // type of mission
INT location // mission variation
INT launchMethod // launch method
TEXT_LABEL_31 publicContentID // public content ID
INT bossId1 // unique ID of the Boss instance
INT bossId2 // unique ID of the Boss instance
INT bosstype // type of org: Securoserv, MC, unaffiliated
INT launcherRank // rank of the player launching
INT playerRole // similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT timeTakenToComplete // time taken to complete, in seconds (for consistency)
INT timeLimit // time limit, in seconds (for consistency); null if not applicable
BOOL won // whether the mission was completed successfully
INT endingReason // ending reason
INT cashEarned // money earned
INT rpEarned // RP earned
INT deaths // how many times the player died
INT targetsKilled // number of mission critical/aggressive peds killed
INT innocentsKilled // number of innocent peds killed
INT properties // existing bitset of type of properties owned: casino penthouse, gunrunning bunker, smuggler hangar, terrorbyte, submarine etc.
INT properties2 // bitset of type of properties owned; future proofing
BOOL failedStealth // whether the player failed stealth and alerted the enemies
INT difficulty // mission difficulty
INT playerCount // number of players currently on this mission
ENDSTRUCT
// PURPOSE: triggers after instanced missions end, starting with the Fixer pack; this is not meant for competitive modes
NATIVE PROC PLAYSTATS_INST_MISSION_END(STRUCT_INST_MISSION_END& data) = "0xfea3f7e83c0610fa"
STRUCT STRUCT_HUB_EXIT
INT hubID // ID that applies to this instance of the social hub; would be the same for those players inside the social hub
INT type // which social hub the player left: music studio, smoking room etc.
INT bossId1 // unique ID of the Boss instance
INT bossId2 // unique ID of the Boss instance
INT playerRole // similar to previous metrics, the player's role: CEO, bodyguard, biker prospect etc.
INT pulled // whether this player was pulled out of the social hub (by a mission starting, for example)
INT crewId // ID of the Social Club Crew the player belongs to
INT duration // time spent in the social hub
BOOL dre // whether Dr Dre was present in the social hub
INT playerCount // number of players in the social hub when exiting
ENDSTRUCT
// PURPOSE: triggers after the player exits a social hub (music studio and smoking room to begin with, can expand for rest of hubs covered by HUB_ENTRY later, if needed)
NATIVE PROC PLAYSTATS_HUB_EXIT(STRUCT_HUB_EXIT& data) = "0x5a46ace5c4661132"
STRUCT STRUCT_LP_NAV
INT tab //hash, what tab the player left (online, story, create, heists, series modes etc.)
INT hoverTile //bitset, location of tiles the player hovered over
INT leftBy //hash, means by which the player left the current tab: tabbing away, going back, clicking a tile, going to the store, going to settings, loading into MP/SP etc.
INT clickedTile //hash, tile that was clicked to leave the tab; ideally it would have similar values to LP_ONLINE/LP_STORY/LP_CREATE/LP_PERSIST, either location or content, to connect the two
BOOL exitLp //true when leaving the landing page area
ENDSTRUCT
// PURPOSE: triggers after the player leaves a tab, with a record of what they viewed on that tab, provided they spent X milliseconds on it, set by tunable, to prevent spamming (I'd say start with 5 seconds); triggers regardless of time spent when leaving the landing page altogether. Additional tunable for percentage of players sending the metric.
NATIVE PROC PLAYSTATS_LP_NAV(STRUCT_LP_NAV& data) = "0x88e31379119430b6"
// PURPOSE: triggers after a UGC tool is launched
NATIVE PROC PLAYSTATS_UGC_NAV(INT feature, INT location) = "0x9a387654cd8f86fc"
// Summer 2022
// PURPOSE: triggers after a vehicle is removed from the player's inventory
NATIVE PROC PLAYSTATS_VEH_DEL(INT bossId1, INT bossId2, INT bossType, INT vehicleID, INT reason) = "0xee1db1f96b06dda7"
STRUCT STRUCT_INVENTORY
INT action //was the item added to or removed from the inventory
INT reason //hash, reason for adding/removing: purchase, pick-up, use, drop etc.
INT crewId //ID of the Social Club Crew the player belongs to
INT location //hash, exact location where the item was purchased (which office, which arcade etc.); null if not applicable
INT shopType //hash, "shop" type the item was acquired from: vending machine, office desk, convenience store etc.; null if not applicable
INT itemCategory //hash, the item category: snack, armor
INT itemHash //hash, the item added/removed
INT itemDelta //number of items of this type added/removed
INT purchaseID //ID to link the purchases made in the same transaction
BOOL takeAll //whether the player used the option to take all of the items of that type
ENDSTRUCT
// PURPOSE: Triggers after a snack or armor item type are added to the inventory, removed from the inventory, or consumed outwith the inventory (vending machines, bars etc.). Would trigger each time the item type changes, or after X seconds from the change (set by tunable) that allows for the case where the player hits "buy", "drop" or "use" repeatedly.
NATIVE PROC PLAYSTATS_INVENTORY(STRUCT_INVENTORY& data) = "0x887dad63cf5b7908"
STRUCT STRUCT_MAP_NAV
INT TUBlips // bitset of TU blips rolled over
INT cloudMissBlips // bitset of cloud missions blips rolled over
INT seriesBlips // bitset of series blips rolled over
INT collectBlips // bitset of collectible blips rolled over
INT rank // current rank
INT leftBy // hash, means by which the player left the pause menu map: going back, selecting to join a lobby
INT waypoint // hash, blip that the player selected as a waypoint
ENDSTRUCT
// PURPOSE: triggers when the pause menu map is closed, provided the player spent X milliseconds on it (set by tunable).
NATIVE PROC PLAYSTATS_MAP_NAV(STRUCT_MAP_NAV& data) = "0x3dba6d27e8822127"
// Eof