Files
2025-09-29 00:52:08 +02:00

34902 lines
1.6 MiB
Plaintext
Executable File

CONST_INT USE_TU_CHANGES 1
// Includes
USING "rage_builtins.sch"
USING "globals.sch"
USING "cellphone_public.sch"
USING "commands_script.sch"
USING "commands_misc.sch"
USING "commands_graphics.sch"
USING "commands_pad.sch"
USING "commands_network.sch"
USING "website_private.sch"
USING "net_ambience.sch"
USING "net_saved_vehicles.sch"
USING "net_realty_new.sch"
USING "net_comms_public.sch"
USING "achievement_public.sch"
USING "commands_recording.sch"
USING "FMMC_Keyboard.sch" //required for onscreen keyboard handling.
USING "net_cash_transactions.sch"
USING "charsheet_public.sch"
USING "net_heartbeat.sch"
USING "net_gang_boss.sch"
USING "net_office.sch"
USING "svm_mission_flow.sch"
USING "net_arena_wars_career.sch"
USING "net_casino_menu.sch"
// Constants
CONST_INT SCALEFORM_KEYBOARD_FLAG_INDEX 0
CONST_INT SCALEFORM_BACKBUTTON_FLAG_INDEX 1
CONST_INT SCALEFORM_HISTORY_FLAG_INDEX 2
CONST_INT SCALEFORM_FAVES_COUNT_FLAG_INDEX 3
CONST_INT SCALEFORM_BROWSER_CLOSE 5
CONST_INT SCALEFORM_YACHT_DATA 11
CONST_INT SCALEFORM_OFFICE_DATA 12
CONST_INT SCALEFORM_CLUBHOUSE_DATA 13
CONST_INT SCALEFORM_OFFICE_GARAGE_A_DATA 14
CONST_INT SCALEFORM_OFFICE_GARAGE_B_DATA 15
CONST_INT SCALEFORM_TRUCK_DATA 17
CONST_INT SCALEFORM_PLANE_DATA 18
CONST_INT SCALEFORM_ARENA_WARS_DATA 19
CONST_INT SCALEFORM_CASINO_DATA 11 //url:bugstar:5654253
// Variables
BOOL bPanicShutdownStart
BOOL bRefreshButtons = FALSE
BOOL bShowingBackButton = FALSE
BOOL bKeyboardHelp = FALSE
BOOL bControlsEnabled = FALSE
BOOL bIHidRadar = FALSE
BOOL bIDisabledCarRadio = FALSE, bIDisabledAptRadio = FALSE
BOOL bUpdatedEyeFindNewsThisFrame = TRUE // used to prevent double update on news when set for child content not being loaded
BOOL bActivatedMultiheadBlinders = FALSE // Used to make sure the multihead blinders are cleaned up only if created locally
//browser handle
SCALEFORM_INDEX mov = NULL
SCALEFORM_INDEX buttons = NULL
SCALEFORM_INDEX nagScreen = NULL
INT iLastClickedPropertyIndex = -1
INT iCustomAptVariant = 1
BOOL bCustomInteriorSelected = FALSE
INT iBoughtPropertyIndex = -1
FACTORY_ID eBoughtFactoryIndex = FACTORY_ID_INVALID
HANGAR_ID eBoughtHangarIndex = HANGAR_ID_INVALID
DEFUNCT_BASE_ID eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
NIGHTCLUB_ID eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
ARENA_GARAGE_ID eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
ARCADE_PROPERTY_ID eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
AUTO_SHOP_PROPERTY_ID eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
CASINO_APT_ID eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
#IF FEATURE_FIXER
FIXER_HQ_ID eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
INT iBoughtCasinoPreset = -1
BOOL bPreviousPegasus = FALSE
INT ChildInitStage = 0
INT iCurrentSiteTimer = 0
BOOL bTVOn = FALSE
INT iTVOnTimeoutFrameCount = -1
BOOL bVideoDisabled = FALSE
WEBSITE_INDEX_ENUM eStaticLastSite = INVALID_WEBSITE_INDEX
WEBSITE_INDEX_ENUM eStaticCurrentSite = INVALID_WEBSITE_INDEX
INT iStaticLastPage = -1
INT iStaticCurrentPage = -1
INT iStaticHistory = -1
BOOL bPopulatePropertySitePinMap = FALSE
TEXT_LABEL_63 tl63sPopulatePropertySitePinMap = ""
TEXT_LABEL_63 tl63sPropertyResultsWebpage = ""
BOOL bLeftShoulder = FALSE
BOOL bLeftShoulder2 = FALSE
BOOL bRightShoulder = FALSE
BOOL bRightShoulder2 = FALSE
BOOL bDPadUp = FALSE
BOOL bDPadDown = FALSE
BOOL bDPadLeft = FALSE
BOOL bDPadRight = FALSE
BOOL bPadSelect = FALSE
BOOL bPadTriangle = FALSE
BOOL bPadCross = FALSE
BOOL bPadCircle = FALSE
BOOL bMouseAccept = FALSE
INT iPadLeftX = 0
INT iPadLeftY = 0
INT iPadRightX = 0
INT iPadRightY = 0
INT iPadLeftXLast = 0
INT iPadLeftYLast = 0
INT iPadRightXLast = 0
INT iPadRightYLast = 0
FLOAT iCursorX = 0.0
FLOAT iCursorY = 0.0
FLOAT iCursorXLast = 0.0
FLOAT iCursorYLast = 0.0
INT iBroadcast_Disable_Recording_Timer
TEXT_LABEL_63 lastSiteURL
BOOL bBrowserShoppingSavePending = FALSE
//BOOL bBoughtProperty = FALSE
FLOAT fMouseWheelScrollSpeed = 0.0
INT iTutTimer
INT iTutstage = 0
BOOL bTradeHelpPrinted = FALSE
SCALEFORM_RETURN_INDEX currentRolloverReturnIndex
SITE_BUYABLE_VEHICLE eCursorInputProcessed = UNSET_BUYABLE_VEHICLE
BOOL bWaitingForSelectionReturn = FALSE
#IF IS_DEBUG_BUILD
BOOL bDrawDebugStuff = FALSE, bSetDebugLinesAndSpheresDrawingActive = FALSE
#ENDIF
structPedsForConversation spfc
BOOL bProcessingBasket = FALSE
INT iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
eMOUSE_POINTER_STYLE eSet_mouse_pointer_style = INT_TO_ENUM(eMOUSE_POINTER_STYLE, -1)
BOOL bBypassFakeCash = FALSE
BOOL bSetPlayerProofsWhileProcessingBasket = FALSE
CONST_INT ciAUTO_CLOSE_DELAY_TIME_DEFAULT 3000 // 3 seconds
SCRIPT_TIMER timerAutoCloseDelay
INT iAutoCloseDelayTime = ciAUTO_CLOSE_DELAY_TIME_DEFAULT
BOOL bDoLoadStream = FALSE, bStreamLoaded = FALSE
INT epsTutorialLast = -1
BOOL bDoLoadAWStream = FALSE, bAWStreamLoaded = FALSE
ENUM MP_PROPERTY_SITE_FAIL_REASON
MPSFR_UNSET
,MPSFR_NOT_UNLOCKED
,MPSFR_INSUFFICIENT_CASH
,MPSFR_INSUFFCIENT_RANK
,MPSFR_INSUFFCIENT_RANK_PENDING
,MPSFR_CANCELED
,MPSFR_NOT_SAFE
,MPSFR_ON_MISSION
,MPSFR_PAID_RESUPPLY
,MPSFR_HAS_STOCK
ENDENUM
MP_PROPERTY_SITE_FAIL_REASON mpPropertySiteFailReason = MPSFR_UNSET
ENUM VEHICLE_SITE_FAIL_REASON
VSFR_UNSET,
VSFR_NO_STORAGE,
VSFR_NO_MONEY,
VSFR_INVALID_CATEGORY,
VSFR_ALREADY_OWNED,
VSFR_NO_INV_SPACE,
VSFR_BIGASS_NOT_UNLOCKED,
VSFR_INSUFFCIENT_RANK,
VSFR_INSUFFCIENT_RANK_PENDING,
VSFR_CANCELED,
VSFR_NOT_SAFE
ENDENUM
VEHICLE_SITE_FAIL_REASON lastVehicleFailReason = VSFR_UNSET
SITE_BUYABLE_VEHICLE lastVehicleFailVehicle = UNSET_BUYABLE_VEHICLE
//Player_to_Player_Email vars and consts.
/*
STRUCT struct_email_ReceivedData
INT RecID
INT RecPosixTime
TEXT_LABEL_31 RecSenderName
GAMER_HANDLE RecSenderHandle
TEXT_LABEL_63 RecSubject[2]
TEXT_LABEL_63 RecContents[12]
ENDSTRUCT
*/
//Struct used to receive email data from a single ID
scrEmail_Data single_email_Received_Data
scrEmail_Data single_email_Sending_Data
BOOL b_MessageBodyFilledThisCycle = FALSE //Added for #1890436
/* Here's the core struct from commands_socialclub.sch for easy reference
STRUCT scrEmail_Data
INT Id
INT CreatePosixTime
TEXT_LABEL_31 SenderName
GAMER_HANDLE SenderHandle
TEXT_LABEL_63 Subject[2]
TEXT_LABEL_63 Contents[16]
ENDSTRUCT
*/
//Sony / MS system onscreen keyboard handling routines from FMMC_Keyboard.sch
STRUCT KEYBOARD_DATA
OSK_STATUS eStatus
INT iProfanityToken
INT iCurrentStatus
ENDSTRUCT
KEYBOARD_DATA KeyBoardData
BOOL b_Creating_Email_Message_Body_from_OSK = FALSE
BOOL b_Creating_Email_Message_Subject_from_OSK = FALSE
INT iStringLengthInCharacters
CONST_INT c_MAX_SEGMENTS 10
TEXT_LABEL_63 EmailMessageSegments_to_Send[c_MAX_SEGMENTS]
TEXT_LABEL_63 EmailSubjectSegments_to_Send[2]
BOOL b_DummyUnrefHacks = FALSE
ENUM e_EmailBrowsingState
eDORMANT,
eINITIAL,
eRETRIEVAL,
eSF_FILLING,
eNEUTRAL_BROWSING,
eCOMPOSING,
eSTATUS_UPDATE
ENDENUM
e_EmailBrowsingState EmailState
eEMAIL_RETRIEVAL_STATUS CurrentRetrievalStatus
UGC_DATE SingleEmailTimeStamp
//Friend Slot handling vars.
//Original working regime
//CONST_INT c_MAX_EMAIL_CONTACTS 50 //(10 contacts is roughly 200 increase in stack size)
//New trial
//BOOL b_StatReaderNeedsToBail = FALSE
GAMER_HANDLE gh_ProfileViewHandle
BOOL b_DisplayProfileViewHelp = FALSE
SCALEFORM_INDEX SF_EyefindInstButtonsIndex
INT i_Number_Of_Contacts_In_List = 0
INT FriendSlot_OriginIndex = 0
//INT FriendSlot_StartingIndex = 0 //We might need this in the near future.
BOOL b_EmailClickDetected = FALSE
//Email Batch tracking.
INT i_InboxDepth = 0
INT i_CurrentlySelectedEmail = 0
BOOL b_MovedToComposeFromReplyButton = FALSE
INT LastDeletedEmailPosix //Keep a record of the last deleted email so we can make sure not to include it again in the inbox. The deletion can take a minute or so at the cloud end.
BOOL b_ReachedOldestEmail = FALSE
INT NumberOfEmailsOnThisPage = 0
//INT iPreviousPosixTime = 0
TEXT_LABEL_63 PlayerHandleGamerNameStringForScaleform //Was a string, but changed for #2280703. Was being overwritten in memory.
BOOL b_WaitingToRetrieveGamerTag = FALSE
BOOL b_GamertagGrabSignalledForceClose = FALSE
TEXT_LABEL_63 DisplayNameReturnName[1]
#IF IS_DEBUG_BUILD
BOOL b_debug_CatalogueMissingEntries
#ENDIF
GB_KEYBOARD_DATA GBKeyBoardData
BOOL bRunningOrgNameKeyboard = FALSE
INT iSVM_Unlock_Feed_Message = 0
INT iWVM_Unlock_Feed_Message = 0
INT iFDS_Unlock_Feed_Message = 0
INT iBBS_Unlock_Feed_Message = 0
INT iPurchaseHelpBS
CONST_INT PURCHASE_HELP_BS_SPVE0A 0
CONST_INT PURCHASE_HELP_BS_SPVE0B 1
CONST_INT PURCHASE_HELP_BS_BAEQ2A 2
CONST_INT PURCHASE_HELP_BS_FDSE0DB 3
CONST_INT PURCHASE_HELP_BS_FDSE0HA 4
CONST_INT PURCHASE_HELP_BS_HACKT2 5
CONST_INT PURCHASE_HELP_BS_BBSE0NC 6
CONST_INT PURCHASE_HELP_BS_BBSE0HT 7
CONST_INT PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME 8
//#IF FEATURE_HEIST_ISLAND
//CONST_INT PURCHASE_HELP_BS_SUBMARINE 9
//#ENDIF
PROC PS3_360_ButtonSetup()
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "SET_CLEAR_SPACE", 200)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT_EMPTY", 3)
//Will need to use something like this in next_gen to support PC build
//EYEFIND_INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT", 0,
//GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_CELLPHONE_CANCEL),//GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL),
//"CELL_281") //Exit
IF IS_PS3_VERSION()
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT", 0,
TO_FLOAT(ENUM_TO_INT(GET_CONTROL_INSTRUCTIONAL_BUTTON(FRONTEND_CONTROL, INPUT_CELLPHONE_EXTRA_OPTION))),//TO_FLOAT(ENUM_TO_INT(ICON_BUTTON_B)),
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_EMAIL_PROF") //View Profile of Recipient.
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Setting Profile button for PS3.")
cdPrintnl()
#ENDIF
ENDIF
IF IS_XBOX360_VERSION()
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT", 0,
TO_FLOAT(ENUM_TO_INT(GET_CONTROL_INSTRUCTIONAL_BUTTON(FRONTEND_CONTROL, INPUT_CELLPHONE_EXTRA_OPTION))),//TO_FLOAT(ENUM_TO_INT(ICON_BUTTON_B)),
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_EMAIL_CAR3") //View Gamer Card of Recipient.
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Setting Profile button for 360.")
cdPrintnl()
#ENDIF
ENDIF
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "DRAW_INSTRUCTIONAL_BUTTONS", 0) // Set to 1 for stacked.
ENDPROC
PROC NG_ViewProfile_ButtonSetup() //Needs to use slightly different regime from PS3 / 360 to support PC custom controls.
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "SET_CLEAR_SPACE", 200)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT_EMPTY", 3)
//Will need to use something like this in next_gen to support PC build
IF IS_PLAYSTATION_PLATFORM()
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT", 0,
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_CELLPHONE_EXTRA_OPTION),
"CELL_EMAIL_PROF") //View Profile of Recipient.
ENDIF
IF IS_XBOX_PLATFORM()
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_EyefindInstButtonsIndex, "SET_DATA_SLOT", 0,
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_CELLPHONE_EXTRA_OPTION),
"CELL_EMAIL_CARO") //View Gamercard of Recipient.
ENDIF
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_EyefindInstButtonsIndex, "DRAW_INSTRUCTIONAL_BUTTONS", 0) // Set to 1 for stacked.
ENDPROC
//Added for 3499109.
FUNC BOOL NETWORK_IS_VALID_EYEFIND_FRIEND( GAMER_HANDLE passedHandle)
IF IS_GAMER_HANDLE_VALID (passedHandle)
IF NETWORK_IS_FRIEND (passedHandle)
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - NETWORK_IS_VALID_EYEFIND_FRIEND reports gamer handle was invalid.")
cdPrintnl()
#ENDIF
RETURN FALSE
ENDIF
ENDFUNC
//Pinched from other MP keyboard work but may need specific modification so using a standalone copy in here.
FUNC BOOL Is_Email_String_Blank_Spaces(STRING stPassed, INT iLength)
//stPassed = " "
INT iLoop
FOR iLoop = 0 TO (iLength - 2)
//is the Nth character is NOT equal to a space then it's not a blank string.
IF NOT ARE_STRINGS_EQUAL(GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(stPassed, iLoop, iLoop + 1, 1), " ")
RETURN FALSE
ENDIF
ENDFOR
RETURN TRUE
ENDFUNC
PROC ClearOutEmailBodyContents()
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - ClearOutEmailBodyContents has been called.")
cdPrintnl()
#ENDIF
//Deliberately not done in a loop. Using this to test various segment combinations here individually...
EmailMessageSegments_to_Send[0] = ""
EmailMessageSegments_to_Send[1] = ""
EmailMessageSegments_to_Send[2] = ""
EmailMessageSegments_to_Send[3] = ""
EmailMessageSegments_to_Send[4] = ""
EmailMessageSegments_to_Send[5] = ""
EmailMessageSegments_to_Send[6] = ""
EmailMessageSegments_to_Send[7] = ""
EmailMessageSegments_to_Send[8] = ""
EmailMessageSegments_to_Send[9] = ""
ENDPROC
/*
Experimented with putting these back temporarily to see if they had any impact on how Eyefind Email was working with SF in dev_net. - Steve T.
Only Email related script will refer to them. Update... Wrapped functions seemingly redundant in NG I think. Leaving commented block as a reminder of change."
INT funcPagIdLast = 0
FUNC INT GET_CURRENT_WEBPAGE_ID_WRAPPED() // END_SCALEFORM_MOVIE_METHOD_INT()
INT raw = GET_CURRENT_WEBPAGE_ID()
IF raw = 0
IF funcPagIdLast != 0
RETURN funcPagIdLast
ENDIF
ENDIF
funcPagIdLast = raw
RETURN funcPagIdLast
ENDFUNC
INT funcSitIdLast = 0
FUNC INT GET_CURRENT_WEBSITE_ID_WRAPPED() // fudret
INT raw = GET_CURRENT_WEBSITE_ID()
IF raw = 0
IF funcSitIdLast != 0
RETURN funcSitIdLast
ENDIF
ENDIF
funcSitIdLast = raw
RETURN funcSitIdLast
ENDFUNC
*/
PROC Add_MP_Friend_to_Scaleform_Slot(STRING playerName)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "Populating friend slot ")
PRINTINT(FriendSlot_OriginIndex)
PRINTNL()
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FriendSlot_OriginIndex + 10) //From Eddie : The contacts list starts from slot 10. You can pass as many as you want.
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_2000") //~a~ //This pane auto-condenses the font.
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(playerName)
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
FriendSlot_OriginIndex ++
//Critical! Conor, this is needed for a navigation back up, so when something is added to the slot it needs incremented.
i_Number_Of_Contacts_In_List ++
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "NumContacts in list after friend additions is ")
PRINTINT(i_Number_Of_Contacts_In_List)
PRINTNL()
#ENDIF
ENDPROC
BOOL cVis = TRUE
PROC BROWSER_CURSOR_LOADING(BOOL Show)
IF cVis = Show
EXIT
ENDIF
CPRINTLN(DEBUG_INTERNET, "BROWSER_CURSOR_LOADING: ", PICK_STRING(Show, "Show", "Hide"))
IF Show
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_CURSOR")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "HIDE_CURSOR")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
cVis = Show
ENDPROC
/*
PROC BROWSER_SHOW_CURSOR(BOOL Show)
IF cVis = Show
EXIT
ENDIF
cVis = Show
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_CURSOR")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(Show)
END_SCALEFORM_MOVIE_METHOD()
ENDPROC */
INT iCursorState = HASH("ARROW") //"ARROW" "HAND" "TEXT" "BUSY"
PROC BROWSER_SET_CURSOR_STATE(STRING Show)
INT iShow = GET_HASH_KEY(Show)
IF iCursorState = iShow
CDEBUG1LN(DEBUG_INTERNET, "(ignore) BROWSER_SET_CURSOR_STATE: \"", Show, "\"")
EXIT
ENDIF
CPRINTLN(DEBUG_INTERNET, "BROWSER_SET_CURSOR_STATE: \"", Show, "\"")
iCursorState = iShow
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_CURSOR_STATE")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(Show)
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
FUNC INT GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL(INT iLoopIndex)
/*
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL ")
cdPrintnl()
#ENDIF
*/
INT iIndex = iLoopIndex - g_sPlayers.plNumPlayers
IF iIndex >= c_MAX_EMAIL_CONTACTS
iIndex = c_MAX_EMAIL_CONTACTS-1
ENDIF
RETURN iIndex
ENDFUNC
FUNC INT GET_FRIEND_INDEX_FROM_GAMER_HANDLE(GAMER_HANDLE& PassedHandle)
INT iMaxFriends = NETWORK_GET_FRIEND_COUNT()
IF iMaxFriends > 100
iMaxFriends = 100
ENDIF
GAMER_HANDLE friendHandle
INT iLoop = 0
REPEAT iMaxFriends iLoop
friendHandle = GET_GAMER_HANDLE_FRIEND(iLoop)
IF NETWORK_ARE_HANDLES_THE_SAME(friendHandle, PassedHandle)
RETURN iLoop
ENDIF
ENDREPEAT
RETURN -1
ENDFUNC
FUNC STRING EyefindGetGamerTagFromHandle(GAMER_HANDLE& PassedHandle)
INT b_WaitingToRetrieveDurangoDisplayName = 0 //Neutral. Normally ignored, but if the Xbox One displayname retrieval fails, we can signal the PC / 360 routine to kick in via this flag.
//Xbox One TRC requires the display name of a gamer to be displayed if available.
IF IS_XBOX_PLATFORM()
OR IS_PLAYSTATION_PLATFORM()
//TEXT_LABEL_63 DisplayNameReturnName[1]
DisplayNameReturnName[0] = "Durango_Empty"
b_WaitingToRetrieveDurangoDisplayName = 1 //Ongoing
STRING ReturnName
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //Disable cancel button
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(5)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
BROWSER_SET_CURSOR_STATE("ARROW")
//Vars for NETWORK_DISPLAYNAMES... native processing.
GAMER_HANDLE gamerHandleArray_To_Process[1]
gamerHandleArray_To_Process[0] = PassedHandle
INT i_DisplayNameRequestID = -99 //Dummy value for safety.
INT i_RequestResult = -99 //Dummy value for safety.
INT i_GrabStage = 0
i_DisplayNameRequestID = NETWORK_DISPLAYNAMES_FROM_HANDLES_START (gamerHandleArray_To_Process, 1)
IF i_DisplayNameRequestID > - 1 //Return value less than zero signals an error.
i_GrabStage = 1 //Okay to continue..
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - NETWORK_DISPLAYNAMES_FROM_HANDLES_START failed!")
cdPrintnl()
#ENDIF
//Failed displayname retrieval for Xbox One, set the flag to try and get the standard gamertag instead as a failsafe further down in the 360 / PC routine
b_WaitingToRetrieveDurangoDisplayName = -1
ENDIF
SETTIMERA(0)
WHILE b_WaitingToRetrieveDurangoDisplayName = 1 //Ongoing. NETWORK_DISPLAYNAMES_FROM_HANDLES_START must have been okay.
AND TIMERA() < 7000
//Make sure we draw the browser movie this frame.
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
IF i_GrabStage = 1
i_RequestResult = NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(i_DisplayNameRequestID, DisplayNameReturnName, 1)
IF i_RequestResult = 0
//Succeeded! Return name now.
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - NETWORK_GET_DISPLAYNAMES_FROM_HANDLES succeeded. Returning ")
cdPrintstring(TEXT_LABEL_TO_STRING(DisplayNameReturnName[0]))
cdPrintnl()
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //Re-enable cancel button before any return...
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(5)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
//Proper!
ReturnName = TEXT_LABEL_TO_STRING(DisplayNameReturnName[0])
/*
DisplayName23Test = DisplayNameReturnName[0]
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Test 23 Returning ")
cdPrintstring(TEXT_LABEL_TO_STRING(DisplayName23Test))
cdPrintnl()
#ENDIF
ReturnName = TEXT_LABEL_TO_STRING(DisplayName23Test)
*/
RETURN ReturnName
ELSE
IF i_RequestResult = -1 //Failed!
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - WARNING! NETWORK_GET_DISPLAYNAMES_FROM_HANDLES failed whilst processing after successful start. Will attempt to get gamertag.")
cdPrintnl()
#ENDIF
b_WaitingToRetrieveDurangoDisplayName = -1 //Failed displayname retrieval for Xbox One, set the flag to try and get the gamertag instead as a failsafe further down.
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - NETWORK_GET_DISPLAYNAMES_FROM_HANDLES currently processing!")
cdPrintnl()
#ENDIF
ENDIF
ENDIF
ENDIF
ENDWHILE
IF TIMERA() > 6999
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Timed out whilst trying to retrieve Xbox One Display Name...")
cdPrintnl()
#ENDIF
ENDIF
ENDIF //End of IS_XBOX_PLATFORM condition check.
IF IS_XBOX360_VERSION()
OR IS_PC_VERSION()
OR b_WaitingToRetrieveDurangoDisplayName = -1 //Failed displayname retrieval for Xbox One, let's try and get the gamertag instead as a failsafe.
//STRING ReturnName = "Unknown"
STRING ReturnName = GET_FILENAME_FOR_AUDIO_CONVERSATION ("CELL_1091") //Extract the "Unknown" value from an existing token for localisation purposes. #2280703
b_WaitingToRetrieveGamerTag = TRUE
#IF IS_DEBUG_BUILD
IF b_WaitingToRetrieveDurangoDisplayName = -1
cdPrintstring("AppInternet - Trying to get failsafe gamertag for Xbox One!")
cdPrintnl()
ENDIF
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //Disable cancel button
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(5)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
BROWSER_SET_CURSOR_STATE("ARROW")
INT i_GrabStage = 0
IF NETWORK_GAMERTAG_FROM_HANDLE_START(PassedHandle)
i_GrabStage = 1
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Failed gamertag grab process at HANDLE START, aborting grab and returning Unknown from token as a precaution")
cdPrintnl()
#ENDIF
//For bug 2215497, I'm just going to return "Unknown" for the gamertag if there's a problem with HANDLE_START so we can identify any net issues more easily.
//b_GamertagGrabSignalledForceClose = TRUE // Didn't even start Gamertag process, close browseer
b_WaitingToRetrieveGamerTag = FALSE
ENDIF
SETTIMERA(0)
WHILE b_WaitingToRetrieveGamerTag = TRUE
AND TIMERA() < 7000
//Make sure we draw the browser movie this frame.
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
//PASS_INPUTS_TO_BROWSER(mov) //Nope, called too far down and a bit dangerous it seems.
IF i_GrabStage = 1
IF NETWORK_GAMERTAG_FROM_HANDLE_PENDING()
//Deliberately spam this whilst grabbing...
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Retrieval of Xbox GamerTag pending...")
cdPrintnl()
#ENDIF
ELSE
IF NETWORK_GAMERTAG_FROM_HANDLE_SUCCEEDED()
i_GrabStage = 2
ReturnName = NETWORK_GET_GAMERTAG_FROM_HANDLE(PassedHandle)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Retrieval of Xbox GamerTag succeeded!")
cdPrintnl()
#ENDIF
b_WaitingToRetrieveGamerTag = FALSE
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Gamertag grab process no longer pending but did not succeed.")
cdPrintnl()
#ENDIF
b_GamertagGrabSignalledForceClose = TRUE // Didn't even start Gamertag process, close browseer
b_WaitingToRetrieveGamerTag = FALSE
ENDIF
ENDIF
ENDIF
ENDWHILE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //Re-enable cancel button before any return...
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(5)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
IF b_WaitingToRetrieveGamerTag = TRUE //Must have timed out if the timer and bool are both true on exit of the while loop
AND TIMERA() > 6999
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Timed out whilst trying to retrieve Xbox GamerTag.")
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Timed out whilst trying to retrieve Xbox GamerTag...")
cdPrintnl()
#ENDIF
b_GamertagGrabSignalledForceClose = TRUE // Didn't retrieve Gamertag, close browseer
b_WaitingToRetrieveGamerTag = FALSE
ENDIF
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Retrieval process of Xbox GamerTag concluded. Returned string is ")
cdPrintstring(ReturnName)
cdPrintnl()
#ENDIF
b_WaitingToRetrieveGamerTag = FALSE //FAILSAFE
RETURN ReturnName
// ELIF IS_PLAYSTATION_PLATFORM()
// INT iFriend = GET_FRIEND_INDEX_FROM_GAMER_HANDLE(PassedHandle)
// #IF IS_DEBUG_BUILD
// CDEBUG1LN (DEBUG_CELL_DIALOG, "AppInternet ST_Jan15 PS4 - EyefindGetGamerTagFromHandle() - strGamerTag: ", NETWORK_GET_GAMERTAG_FROM_HANDLE(PassedHandle))
// CDEBUG1LN (DEBUG_CELL_DIALOG, "AppInternet ST_Jan15 PS4 - EyefindGetGamerTagFromHandle() - iFriend: ", iFriend)
// #ENDIF
// RETURN NETWORK_GET_FRIEND_NAME(iFriend)
ELSE //PS3 or PS4
/* 2170824 - Nick Snell fixed it so we could get the gamertag from gamer_handle. It uses the same pipeline as 360 or Xbone now.
IF IS_PC_VERSION()
#IF IS_DEBUG_BUILD
cdPrintstring ("Getting PC displayname ")
cdPrintnl()
#ENDIF
//RETURN NETWORK_MEMBER_ID_FROM_GAMER_HANDLE(PassedHandle)//("TestPCHandle")
RETURN ("Contact name")//NETWORK_PLAYER_GET_NAME(NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(PassedHandle))
ELSE
*/
#IF IS_DEBUG_BUILD
cdPrintstring ("AppInternet ST_Jan15 PS4 - EyefindGetGamerTagFromHandle() grabbed ")
cdPrintstring (NETWORK_GET_GAMERTAG_FROM_HANDLE(PassedHandle))
cdPrintnl()
#ENDIF
RETURN (NETWORK_GET_GAMERTAG_FROM_HANDLE(PassedHandle))
//ENDIF
ENDIF
ENDFUNC
// PURPOSE: Clear the PlayerList array
PROC Clear_PlayerList_Details_For_Email()//(m_structPlayerListEmail& g_sPlayers)
INT tempLoop = 0
GAMER_INFO emptyGamer
GAMER_HANDLE emptyHandle
REPEAT NUM_NETWORK_PLAYERS tempLoop
g_sPlayers.plPlayers[tempLoop] = INVALID_PLAYER_INDEX()
ENDREPEAT
tempLoop = 0
REPEAT c_MAX_EMAIL_CONTACTS tempLoop
//Old working
//g_sPlayers.plFriends[tempLoop] = emptyGamer
//New trial
g_sPlayers.plFriendsHandle[tempLoop] = emptyHandle
ENDREPEAT
g_sPlayers.m_selectedPlayerSlot = 0
g_sPlayers.plNumPlayers = 0
g_sPlayers.plTotalNumContacts = 0
//g_sPlayers.M_selectedPlayerClanName = ""
g_sPlayers.selectedPlayerHandle = emptyGamer.Handle
g_sPlayers.selectedPlayerName = ""
#IF IS_DEBUG_BUILD
NET_PRINT("AppInternet - Clearing Player list") NET_NL()
#ENDIF
ENDPROC
PROC Update_Compose_Recipient_Subject_Body()
IF b_MovedToComposeFromReplyButton = TRUE
//Clear the recipient list...
SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST()
b_DisplayProfileViewHelp = FALSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Update_Compose_Recipient_Subject_Body called from REPLY button. Clearing old recipient list.")
cdPrintnl()
#ENDIF
b_MovedToComposeFromReplyButton = FALSE
//Need to mimic this data ( which is usually set up by the player clicking a recipient and entering a subject, so the reply can be sent.
g_sPlayers.selectedPlayerHandle = single_email_Received_Data.SenderHandle
//Get and store display name here!
PlayerHandleGamerNameStringForScaleform = EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle))
EmailSubjectSegments_to_Send[0] = single_email_Received_Data.Subject[0]
EmailSubjectSegments_to_Send[1] = single_email_Received_Data.Subject[1]
//"single_email_Received_Data" contains the data from the last selected email before reply was selected in Player_to_Player_Email_Main()
/* Here's the core struct from commands_socialclub.sch for easy reference
STRUCT scrEmail_Data
INT Id
INT CreatePosixTime
TEXT_LABEL_31 SenderName
GAMER_HANDLE SenderHandle
TEXT_LABEL_63 Subject[2]
TEXT_LABEL_63 Contents[16]
ENDSTRUCT
*/
//We need to add the "reply to" player handle to recipient list after a check for comms privileges
BOOL b_CommunicationAllowed = TRUE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, gamertag from selected Reply to handle was ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring(EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
IF NOT IS_GAMER_HANDLE_VALID(single_email_Received_Data.SenderHandle)
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Preventing communication as Gamer Handle not valid for this replied to player... ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Gamer handle valid for replied to player. ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
ENDIF
//Part 1. Expanded this for 3291196 - Will block any reply attempt to any user who cannot be contacted through TEXT_CHAT or is no longer a friend.
IF (NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES() = FALSE)
OR (NETWORK_IS_VALID_EYEFIND_FRIEND(single_email_Received_Data.SenderHandle) = FALSE) //Add this check for offline problem. At least we'll know the two users are still friends.
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Sender has no text communication privileges or is not a friend. Communication prevented for this replied to user..")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
ENDIF
IF NETWORK_IS_GAMER_MUTED_BY_ME(single_email_Received_Data.SenderHandle)
OR NETWORK_IS_GAMER_BLOCKED_BY_ME((single_email_Received_Data.SenderHandle))
OR NETWORK_AM_I_MUTED_BY_GAMER((single_email_Received_Data.SenderHandle))
OR NETWORK_AM_I_BLOCKED_BY_GAMER((single_email_Received_Data.SenderHandle))
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Communication prevented for this replied to player... ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
ENDIF
//Put in test block for Social Club to prevent players attempting to reply to Eyefind messages from Social Club.
/*
IF ARE_STRINGS_EQUAL ("stevet2RSN", single_email_Received_Data.Sendername) //Needs Social Club sendername here, rather than SteveT secondary test.
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Communication prevented for this reply. Social Club account originated message.")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle)))
cdPrintnl()
#ENDIF
ENDIF
*/
IF b_CommunicationAllowed = FALSE //Should be FALSE!
//Jump to Page 9 to display a message indicating communication is blocked for the selected gamerhandle
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE("WWW_EYEFIND_INFO_S_EMAILSTATUS")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(10)
IF ARE_STRINGS_EQUAL (PlayerHandleGamerNameStringForScaleform, "") //Potential fix for 2131480
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_EMAIL_ERR")
END_TEXT_COMMAND_SCALEFORM_STRING()
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Communication not allowed but gamerstring was empty - 1. Displaying generic message.")
cdPrintnl()
#ENDIF
ELSE
//BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_BLK") //~a~ cannot be contacted at this time.
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_CBLK") //<C>~a~</C> cannot be contacted at this time. Condensed version.
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (PlayerHandleGamerNameStringForScaleform)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
ENDIF
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintstring ("App Internet - Update_Compose_Recipient_Subject_Body() communication block warning for ")
cdPrintstring (PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
EmailState = eSTATUS_UPDATE //Critical!
ENDIF
IF b_CommunicationAllowed = TRUE
AND (IS_GAMER_HANDLE_VALID(single_email_Received_Data.SenderHandle) OR bg_bBypassValidGamerCheck)
SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST((single_email_Received_Data.SenderHandle))
gh_ProfileViewHandle = single_email_Received_Data.SenderHandle
//PS3_360_ButtonSetup()
IF NOT IS_PC_VERSION()
b_DisplayProfileViewHelp = TRUE
NG_ViewProfile_ButtonSetup()
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(9)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFNH") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(PlayerHandleGamerNameStringForScaleform)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(single_email_Received_Data.SenderHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_SUBJ") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Subject[0])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Subject[1])
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_BCON") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME ("")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Update_Compose_Recipient_Subject_Body called from keyboard entry routines.")
cdPrintnl()
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(9)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFNH") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (PlayerHandleGamerNameStringForScaleform)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_SUBJ") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailSubjectSegments_to_Send[0])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailSubjectSegments_to_Send[1])
END_TEXT_COMMAND_SCALEFORM_STRING()
//STRING s_CombinedContents //Ask Graeme about this!
//s_CombinedContents = CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[0])
//s_CombinedContents += "s_CombinedContents"
/*
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[1])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[2])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[3])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[4])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[5])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[6])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[7])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[8])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[9])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[10])
s_CombinedContents += CONVERT_TEXT_LABEL_TO_STRING(single_email_Received_Data.Contents[11])
*/
//#IF IS_DEBUG_BUILD
//cdPrintstring(s_CombinedContents)
//#ENDIF
IF b_MessageBodyFilledThisCycle = FALSE
//Makes sure that any old message body contents don't appear in here. If it has been filled prior to the update then go ahead and fill with the data.
ClearOutEmailBodyContents()
ENDIF
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_BCON") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[0])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[1])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[2])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[3])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[4])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[5])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[6])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[7])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[8])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (EmailMessageSegments_to_Send[9])
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC Place_MP_Friends_in_EmailContactSlots()
// Gather the details for all other players (ignoring current player)
// KGM 3/8/11: For now, just create a list of players in the network game - unsorted, etc
PLAYER_INDEX thisPlayer = NULL
INT thisSlot = 0
INT tempLoop = 0
GAMER_HANDLE friendHandle
i_Number_Of_Contacts_In_List = 0 // Critical! Defaulting this to zero consistently as no story characters are included at present.
//Critical.
FriendSlot_OriginIndex = i_Number_Of_Contacts_In_List //Marks the scaleform slot where the story contacts finished and the friends should start.
//Critical, Conor, we need to keep this so we know where the friends slots start from when a slot is selected.
//FriendSlot_StartingIndex = FriendSlot_OriginIndex
Clear_PlayerList_Details_For_Email()
BOOL Human_Contacts_Barred_During_MP_Tutorial = FALSE
IF g_bInMultiplayer
IF ARE_ALL_INSTANCED_TUTORIALS_COMPLETE() = FALSE //#1545235 - function from #1601899
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintString("ST - Place_MP_Friends_in_ContactSlots() reporting that the player is in MP but has not completed the tutorial, not placing friends or session players in list")
cdPrintnl()
#ENDIF
Human_Contacts_Barred_During_MP_Tutorial = TRUE
ENDIF
ENDIF
REPEAT NUM_NETWORK_PLAYERS tempLoop
thisPlayer = INT_TO_PLAYERINDEX(tempLoop)
IF IS_NET_PLAYER_OK(thisPlayer,FALSE)
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
/*Stat Reader test harness...
IF thisPlayer = PLAYER_ID()
friendHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
NETWORK_PROFILE_STATS_READER_ADD_GAMER (friendHandle)
NETWORK_PROFILE_STATS_READER_ADD_STATID (MP0_CHAR_ISACTIVE)
b_StatReaderNeedsToBail = FALSE
//Put local timer in...
NETWORK_PROFILE_STATS_READER_START()
WHILE NETWORK_PROFILE_STATS_READER_GET_STATUS() <> NET_PS_SUCCESS
AND b_StatReaderNeedsToBail = FALSE
WAIT (0)
IF NETWORK_PROFILE_STATS_READER_GET_STATUS() = NET_PS_PENDING
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Waiting on pending stat reader retrieval...")
cdPrintnl()
#ENDIF
ENDIF
IF NETWORK_PROFILE_STATS_READER_GET_STATUS() = NET_PS_FAILED
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Stat Reader Failed!")
cdPrintnl()
#ENDIF
b_StatReaderNeedsToBail = TRUE
ENDIF
IF NETWORK_PROFILE_STATS_READER_GET_STATUS() = NET_PS_SUCCESS
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Stat Reader Succeeded!")
cdPrintnl()
#ENDIF
//b_StatReaderNeedsToBail = TRUE
ENDIF
ENDWHILE
IF b_StatReaderNeedsToBail = FALSE //Must have reached success, as the above loop did not fail or timeout. Read stat values...
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Stat reader retrieval succeeded...")
cdPrintnl()
#ENDIF
ENDIF
NETWORK_PROFILE_STATS_READER_END()
ENDIF
*/
//Part 2. Expanded this for 3291196 - Only list users in session who have text communication privileges.
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(thisPlayer)
bool bOkayToAddInSessionGamer = false
IF (NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES() = TRUE)
AND (NETWORK_IS_VALID_EYEFIND_FRIEND(gamerHandle) = TRUE) //Important! This will prevent any non friends in session from appearing in the list. This is a change to 2016's behaviour.
bOkayToAddInSessionGamer = true
ENDIF
/*
IF (thisPlayer = PLAYER_ID()) //Allow the player himself to be included in the list of contacts for debug.
bOkayToAddInSessionGamer = true
ENDIF
*/
IF bOkayToAddInSessionGamer
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - bOkayToAddInSessionGamer was true. Adding gamer. Repeat loop count is ")
cdPrintInt(thisSlot)
cdPrintstring(GET_PLAYER_NAME(thisPlayer))
cdPrintnl()
#ENDIF
g_sPlayers.plPlayers[thisSlot] = thisPlayer
Add_MP_Friend_to_Scaleform_Slot(GET_PLAYER_NAME(thisPlayer))
thisSlot++
bOkayToAddInSessionGamer = false //Local var is reinitialised in REPEAT, this just here for absolute clarity.
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Not adding this gamer to Eyefind contact list. Cannot text chat with them or gamer is not a friend.")
cdPrintInt(thisSlot)
cdPrintstring(GET_PLAYER_NAME(thisPlayer))
cdPrintnl()
#ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
g_sPlayers.plNumPlayers = thisSlot
thisSlot = 0
IF IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID())
FOR tempLoop = 0 TO NETWORK_GET_FRIEND_COUNT()-1
//IF NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(tempLoop))
//IF NETWORK_IS_FRIEND_IN_SAME_TITLE(NETWORK_GET_FRIEND_NAME(tempLoop))
friendHandle = GET_GAMER_HANDLE_FRIEND(tempLoop)
IF (NOT NETWORK_IS_GAMER_IN_MY_SESSION(friendHandle))
//Part 3.Potentially expand this for 3291196 - Will only list any friend user who can be contacted through TEXT_CHAT but it looks as if this will only return true if the friend is online, so this makes this feature unusable here.
AND (NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES() = TRUE)
AND (NETWORK_IS_VALID_EYEFIND_FRIEND(friendHandle)) = TRUE //Overkill as we're moving through the friends list but putting this here for clarity of changes.
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
//Old working regime
/*
IF thisSlot < c_MAX_EMAIL_CONTACTS
g_sPlayers.plFriends[thisSlot].Handle = friendHandle
g_sPlayers.plFriends[thisSlot].Name = NETWORK_GET_FRIEND_NAME(tempLoop)
Add_MP_Friend_to_Scaleform_Slot(g_sPlayers.plFriends[thisSlot].Name)
thisSlot++
ENDIF
*/
//New optimised trial
IF thisSlot < c_MAX_EMAIL_CONTACTS
g_sPlayers.plFriendsHandle[thisSlot] = friendHandle
//This g_sPlayers.selectedPlayerName assignment below might need to be conditioned with a Durango variant which returns NETWORK_GET_FRIEND_DISPLAY_NAME for DURANGO
// IF IS_PLAYSTATION_PLATFORM()
//
// //g_sPlayers.selectedPlayerName = NETWORK_GET_FRIEND_DISPLAY_NAME(tempLoop)
// PlayerHandleGamerNameStringForScaleform = NETWORK_GET_GAMERTAG_FROM_HANDLE(friendHandle)
//
//
// #IF IS_DEBUG_BUILD
// cdPrintstring("AppInternet - Adding PS4 Friend Player with Display Name - loop count ")
// cdPrintInt(thisSlot)
// cdPrintstring(PlayerHandleGamerNameStringForScaleform)
// cdPrintnl()
// #ENDIF
//
//
//
IF IS_XBOX_PLATFORM() //2222604
OR IS_PLAYSTATION_PLATFORM()
//g_sPlayers.selectedPlayerName = NETWORK_GET_FRIEND_DISPLAY_NAME(tempLoop)
PlayerHandleGamerNameStringForScaleform = NETWORK_GET_FRIEND_DISPLAY_NAME(tempLoop)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Adding XBox One Friend Player with Display Name - loop count ")
cdPrintInt(thisSlot)
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
cdPrintnl()
#ENDIF
ELSE
//g_sPlayers.selectedPlayerName = NETWORK_GET_FRIEND_NAME(tempLoop)
PlayerHandleGamerNameStringForScaleform = NETWORK_GET_FRIEND_NAME(tempLoop)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Adding PC / PS4 Friend Player - loop count ")
cdPrintInt(thisSlot)
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
cdPrintnl()
#ENDIF
ENDIF
Add_MP_Friend_to_Scaleform_Slot(PlayerHandleGamerNameStringForScaleform)
thisSlot++
ENDIF
ENDIF
ENDIF
//ENDIF
//ENDIF
ENDFOR
ENDIF
g_sPlayers.plTotalNumContacts = g_sPlayers.plNumPlayers + thisSlot
IF b_MovedToComposeFromReplyButton = TRUE
Update_Compose_Recipient_Subject_Body() //Update the recipient and subject field if we have reached this page from the reply button.
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC Update_Compose_Recipient_Field_Only()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(9) //From Eddie. This should be slot 9
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFNH") //~a~
//BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFON")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (PlayerHandleGamerNameStringForScaleform)
//Test.
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(DisplayNameReturnName[0])
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("")
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Condensed Font test")
cdPrintnl()
#ENDIF
ENDPROC
//Handle OSK keyboard input, the parse result into EmailMessageSegments_to_Send, an array of TL63s
PROC Maintain_Email_Message_Body_Creation_from_OSK()
#if IS_DEBUG_BUILD
IF g_b_InstructEyefindtoSendAutoLongMessage = TRUE //If this widget is checked, autofill the message body contents. These strings can be modified to test long and profane messages.
//This can be handy for checking Rockstar Social Club marketing content as they should not be going through any virtual keyboard checks.
EmailMessageSegments_to_Send[0] = "a_Testing 1 fuck shit profanity 1 test "
EmailMessageSegments_to_Send[1] = "b_Testing 2 "
EmailMessageSegments_to_Send[2] = "c_Testing 3 "
EmailMessageSegments_to_Send[3] = "d_Testing 4 "
EmailMessageSegments_to_Send[4] = "e_Testing 5 "
EmailMessageSegments_to_Send[5] = "f_Testing 6 "
EmailMessageSegments_to_Send[6] = "g_Testing 7 "
EmailMessageSegments_to_Send[7] = "h_Testing 8 fuck shit profanity 2 test"
EmailMessageSegments_to_Send[8] = "i_Testing 9 "
EmailMessageSegments_to_Send[9] = "j_Testing 10 "
b_Creating_Email_Message_Body_from_OSK = FALSE
b_MessageBodyFilledThisCycle = TRUE
Update_Compose_Recipient_Subject_Body()
EXIT
ENDIF
#endif
//IF b_Creating_Email_Message_Body_from_OSK = TRUE
//IF RUN_ON_SCREEN_KEYBOARD(KeyBoardData.eStatus, KeyBoardData.iProfanityToken, KeyBoardData.iCurrentStatus, FALSE, FALSE, tlEmailMessage, FALSE, 0, TRUE)
IF RUN_ON_SCREEN_KEYBOARD( KeyBoardData.eStatus,
KeyBoardData.iProfanityToken,
KeyBoardData.iCurrentStatus,
FALSE,
FALSE,
EmailMessageSegments_to_Send[0],
FALSE,
0,
FALSE,
FALSE,
EmailMessageSegments_to_Send[1],
TRUE )
//IF RUN_ON_SCREEN_KEYBOARD(sFMMCendStage.oskStatus, sFMMCendStage.iProfanityToken, sFMMCendStage.iKeyBoardStatus, FALSE, bMissionName, "", FALSE,0, FALSE, bMissionTags)
//tlEmailMessage = GET_ONSCREEN_KEYBOARD_RESULT()
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD RESULT = ") NET_PRINT(tlSendMessage) NET_NL()
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
b_Creating_Email_Message_Body_from_OSK = FALSE
//cdPrintnl()
//cdPrintstring(tlEmailMessage)
//cdPrintnl()
IF NOT IS_STRING_NULL_OR_EMPTY(GET_ONSCREEN_KEYBOARD_RESULT())
EmailMessageSegments_to_Send[0] = ""
EmailMessageSegments_to_Send[1] = ""
EmailMessageSegments_to_Send[2] = ""
EmailMessageSegments_to_Send[3] = ""
EmailMessageSegments_to_Send[4] = ""
EmailMessageSegments_to_Send[5] = ""
EmailMessageSegments_to_Send[6] = ""
EmailMessageSegments_to_Send[7] = ""
EmailMessageSegments_to_Send[8] = ""
EmailMessageSegments_to_Send[9] = ""
//EmailMessageSegments_to_Send[10] = ""
//EmailMessageSegments_to_Send[11] = ""
iStringLengthInCharacters = GET_LENGTH_OF_LITERAL_STRING(GET_ONSCREEN_KEYBOARD_RESULT())
//If the description is blank then bail
/*
IF IS_EMAIL_STRING_BLANK_SPACES(GET_ONSCREEN_KEYBOARD_RESULT(), iStringLengthInCharacters)
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iProfanityToken = 1
RETURN FALSE
ENDIF
*/
INT iStartCharacterIndex = 0
INT iArrayIndex = 0
BOOL bFinishedCopying = FALSE
WHILE NOT bFinishedCopying
IF iStartCharacterIndex >= iStringLengthInCharacters
bFinishedCopying = TRUE
ELSE
IF iArrayIndex >= c_MAX_SEGMENTS
bFinishedCopying = TRUE
ELSE
EmailMessageSegments_to_Send[iArrayIndex] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(GET_ONSCREEN_KEYBOARD_RESULT(), iStartCharacterIndex, iStringLengthInCharacters, 63)
CPRINTLN(DEBUG_INTERNET, " EmailMessageSegments_to_Send[", iArrayIndex, "] = ", EmailMessageSegments_to_Send[iArrayIndex])
iStartCharacterIndex += GET_LENGTH_OF_LITERAL_STRING( EmailMessageSegments_to_Send[iArrayIndex])
CPRINTLN(DEBUG_INTERNET, "iStartCharacterIndex is now ", iStartCharacterIndex)
//cdprintnl()
//cdPrintstring(EmailMessageSegments_to_Send[iArrayIndex])
//cdPrintnl()
iArrayIndex++
ENDIF
ENDIF
ENDWHILE
b_MessageBodyFilledThisCycle = TRUE
Update_Compose_Recipient_Subject_Body()
ENDIF
//GAMER_HANDLE thisHandle
//thisHandle = GET_GAMER_HANDLE_PLAYER(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])
//Send the Message to the Player
//REINIT_NET_TIMER(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])])
//NETWORK_SEND_TEXT_MESSAGE(tlSendMessage, thisHandle) //BROADCAST_TEXT_MESSAGE_USING_LITERAL(tlSendMessage, SPECIFIC_PLAYER(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot]))
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE SENT TO ") NET_PRINT(GET_PLAYER_NAME(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])) NET_NL()
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE = ") NET_PRINT(tlSendMessage) NET_NL()
//PRINT_TICKER_WITH_PLAYER_NAME("CP_TM_SENT", g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot]) //Your message has been sent to ~a~
//g_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
//CPRINTLN(DEBUG_INTERNET, " ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
ELSE
IF KeyBoardData.eStatus = OSK_CANCELLED
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD CLOSED - oskStatus = ") NET_PRINT_INT(ENUM_TO_INT(KeyBoardData.eStatus)) NET_NL()
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
b_Creating_Email_Message_Body_from_OSK = FALSE
//g_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
//CPRINTLN(DEBUG_INTERNET, " ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
ENDIF
ENDIF
//ENDIF
ENDPROC
PROC Maintain_Email_Message_Subject_Creation_from_OSK()
//IF b_Creating_Email_Message_Body_from_OSK = TRUE
IF RUN_ON_SCREEN_KEYBOARD(KeyBoardData.eStatus, KeyBoardData.iProfanityToken, KeyBoardData.iCurrentStatus, FALSE, FALSE, EmailSubjectSegments_to_Send[0], FALSE, 0, TRUE, FALSE, "", TRUE)
/*
FUNC BOOL RUN_ON_SCREEN_KEYBOARD(OSK_STATUS &oskStatus,
INT &iProfanityToken,
INT &iCurrentstatus,
BOOL bIsObjectiveText = FALSE,
BOOL bMissionName = TRUE,
STRING stToChange = NULL,
BOOL bSMSMessage = FALSE,
INT iMissObjectiveType = 0,
BOOL bSMSMessageShort = FALSE, //Critical! This controls whether the subject or the message body prompt are displayed.
BOOL bMissionTags = FALSE,
STRING stToChange2 = NULL,
BOOL bUsingLaptopEmail = FALSE)
*/
//IF RUN_ON_SCREEN_KEYBOARD(sFMMCendStage.oskStatus, sFMMCendStage.iProfanityToken, sFMMCendStage.iKeyBoardStatus, FALSE, bMissionName, "", FALSE,0, FALSE, bMissionTags)
//tlEmailMessage = GET_ONSCREEN_KEYBOARD_RESULT()
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD RESULT = ") NET_PRINT(tlSendMessage) NET_NL()
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
b_Creating_Email_Message_Subject_from_OSK = FALSE
//cdPrintnl()
//cdPrintstring(tlEmailMessage)
//cdPrintnl()
IF NOT IS_STRING_NULL_OR_EMPTY(GET_ONSCREEN_KEYBOARD_RESULT())
//EmailSubjectSegments_to_Send[0] = GET_ONSCREEN_KEYBOARD_RESULT() //Removed for 2257287, March 2015
EmailSubjectSegments_to_Send[0] = ""
EmailSubjectSegments_to_Send[1] = ""
iStringLengthInCharacters = GET_LENGTH_OF_LITERAL_STRING(GET_ONSCREEN_KEYBOARD_RESULT())
//If the description is blank then bail
/*
IF IS_EMAIL_STRING_BLANK_SPACES(GET_ONSCREEN_KEYBOARD_RESULT(), iStringLengthInCharacters)
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iProfanityToken = 1
RETURN FALSE
ENDIF
*/
//Adding in this WHILE section for 2257287, March 2015
INT iStartCharacterIndex = 0
INT iArrayIndex = 0
BOOL bFinishedCopying = FALSE
WHILE NOT bFinishedCopying
IF iStartCharacterIndex >= iStringLengthInCharacters
bFinishedCopying = TRUE
ELSE
IF iArrayIndex >= 1
#IF IS_DEBUG_BUILD
cdprintnl()
cdPrintstring("AppInternet - Finished copying EmailSubjectSegments_to_Send[0]")
cdPrintnl()
#ENDIF
bFinishedCopying = TRUE
ELSE
EmailSubjectSegments_to_Send[iArrayIndex] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(GET_ONSCREEN_KEYBOARD_RESULT(), iStartCharacterIndex, iStringLengthInCharacters, 63)
CPRINTLN(DEBUG_INTERNET, " EmailSubjectSegments_to_Send[", iArrayIndex, "] = ", EmailSubjectSegments_to_Send[iArrayIndex])
iStartCharacterIndex += GET_LENGTH_OF_LITERAL_STRING( EmailSubjectSegments_to_Send[iArrayIndex])
CPRINTLN(DEBUG_INTERNET, "iStartCharacterIndex is now ", iStartCharacterIndex)
//cdprintnl()
//cdPrintstring(EmailSubjectSegments_to_Send[iArrayIndex])
//cdPrintnl()
iArrayIndex++
ENDIF
ENDIF
ENDWHILE
//End of new March 2015 2257287 section
//This is problematic as the message body can be entered before the subject. See bug #1890436
//ClearOutEmailBodyContents()
Update_Compose_Recipient_Subject_Body()
ENDIF
//GAMER_HANDLE thisHandle
//thisHandle = GET_GAMER_HANDLE_PLAYER(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])
//Send the Message to the Player
//REINIT_NET_TIMER(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])])
//NETWORK_SEND_TEXT_MESSAGE(tlSendMessage, thisHandle) //BROADCAST_TEXT_MESSAGE_USING_LITERAL(tlSendMessage, SPECIFIC_PLAYER(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot]))
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE SENT TO ") NET_PRINT(GET_PLAYER_NAME(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])) NET_NL()
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE = ") NET_PRINT(tlSendMessage) NET_NL()
//PRINT_TICKER_WITH_PLAYER_NAME("CP_TM_SENT", g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot]) //Your message has been sent to ~a~
//g_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
//CPRINTLN(DEBUG_INTERNET, " ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
ELSE
IF KeyBoardData.eStatus = OSK_CANCELLED
//NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD CLOSED - oskStatus = ") NET_PRINT_INT(ENUM_TO_INT(KeyBoardData.eStatus)) NET_NL()
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
b_Creating_Email_Message_Subject_from_OSK = FALSE
//g_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
//CPRINTLN(DEBUG_INTERNET, " ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
ENDIF
ENDIF
//ENDIF
ENDPROC
PROC Status_Update_Screen_Handling()
IF b_EmailClickDetected
b_EmailClickDetected = FALSE //reset this...
EmailState = eINITIAL
#IF IS_DEBUG_BUILD
cdPrintstring ("AppInternet - Moving from Status Update Screen to Inbox")
cdPrintnl()
#ENDIF
ENDIF
ENDPROC
PROC Player_to_Player_Composing_Main()
IF b_DisplayProfileViewHelp = TRUE
//Draw movie whilst the onscreen keyboard is NOT present on screen.
IF NOT (UPDATE_ONSCREEN_KEYBOARD() = OSK_PENDING) //2207263
IF NOT HAS_SCALEFORM_MOVIE_LOADED (SF_EyefindInstButtonsIndex)
SF_EyefindInstButtonsIndex = REQUEST_SCALEFORM_MOVIE ("instructional_buttons")
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Player_to_Player_Composing_Main() - SF_EyefindInstButtonsIndex not loaded.")
cdPrintnl()
#ENDIF
ELSE
DRAW_SCALEFORM_MOVIE_FULLSCREEN (SF_EyefindInstButtonsIndex, 255, 255, 255,0)
ENDIF
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_EXTRA_OPTION)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_EXTRA_OPTION)
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Player_to_Player_Composing_Main() - User pressed joypad to view PROFILE_UI.")
cdPrintnl()
#ENDIF
NETWORK_SHOW_PROFILE_UI(gh_ProfileViewHandle)
ENDIF
ENDIF
IF GET_CURRENT_WEBPAGE_ID() = 7 //Have moved to inbox from history. Handles 19087854
EmailState = eINITIAL
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Player_to_Player_Composing_Main() - detected move to inbox. Setting email state to eINITIAL to repopulate.")
cdPrintnl()
#ENDIF
ENDIF
IF b_Creating_Email_Message_Body_from_OSK
Maintain_Email_Message_Body_Creation_from_OSK()
ENDIF
IF b_Creating_Email_Message_Subject_from_OSK
Maintain_Email_Message_Subject_Creation_from_OSK()
ENDIF
IF b_Creating_Email_Message_Body_from_OSK = FALSE
AND b_Creating_Email_Message_Subject_from_OSK = FALSE
IF b_EmailClickDetected
b_EmailClickDetected = FALSE //reset this...
IF g_iLastSelectedWebIndex = 7 //Create message body.
//ClearOutEmailBodyContents()
b_Creating_Email_Message_Body_from_OSK = TRUE
ENDIF
IF g_iLastSelectedWebIndex = 6 //Create subject.
b_Creating_Email_Message_Subject_from_OSK = TRUE
ENDIF
IF g_iLastSelectedWebIndex = 5 //Cancel button pressed.
//May need wrapped in a timer to give the inbox contents time to load in.
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind Cancel button pressed.")
cdPrintnl()
#ENDIF
b_DisplayProfileViewHelp = FALSE
//Critical. Email has been cancelled, blank out first two message segments for bug 2181546
EmailMessageSegments_to_Send[0] = ""
EmailMessageSegments_to_Send[1] = ""
EmailState = eINITIAL
ENDIF
IF g_iLastSelectedWebIndex = 8 //Send Email button.
INT tempSegmentIndex = 0
WHILE tempSegmentIndex < c_MAX_SEGMENTS
single_email_Sending_Data.Contents[tempSegmentIndex] = EmailMessageSegments_to_Send[tempSegmentIndex]
#IF IS_DEBUG_BUILD
cdPrintstring ("Copying email message body segment ")
cdPrintint (tempSegmentIndex)
cdPrintstring(" ")
cdPrintstring(single_email_Sending_Data.Contents[tempSegmentIndex])
cdPrintnl()
#ENDIF
tempSegmentIndex ++
ENDWHILE
//Send the email!
single_email_Sending_Data.Subject[0] = EmailSubjectSegments_to_Send[0]
single_email_Sending_Data.Subject[1] = EmailSubjectSegments_to_Send[1] //Having problems with this one!
#IF IS_DEBUG_BUILD
cdPrintstring("Sending email to SC_EMAIL_SEND_EMAIL")
cdPrintstring("Subject Segment 1")
cdPrintstring(single_email_Sending_Data.Subject[0])
cdPrintstring("Subject Segment 2")
cdPrintstring(single_email_Sending_Data.Subject[1])
cdPrintnl()
cdPrintstring("MessageSegments were ")
cdPrintstring(single_email_Sending_Data.Contents[0])
cdPrintstring(single_email_Sending_Data.Contents[1])
cdPrintstring(single_email_Sending_Data.Contents[2])
cdPrintstring(single_email_Sending_Data.Contents[3])
cdPrintstring(single_email_Sending_Data.Contents[4])
cdPrintstring(single_email_Sending_Data.Contents[5])
cdPrintstring(single_email_Sending_Data.Contents[6])
cdPrintstring(single_email_Sending_Data.Contents[7])
cdPrintstring(single_email_Sending_Data.Contents[8])
cdPrintstring(single_email_Sending_Data.Contents[9])
cdPrintstring(single_email_Sending_Data.Contents[10])
cdPrintstring(single_email_Sending_Data.Contents[11])
cdPrintnl()
cdPrintstring("Calling NATIVE SC_EMAIL_SEND_EMAIL")
cdPrintnl()
#ENDIF
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5email") //Critical! Need to ensure we send these Eyefind messages with the correct tag.
#if IS_DEBUG_BUILD
IF g_DisplayTestPhotoSprite //Re-using this old debug only bool in a widget to test send a marketing email from the Eyefind infrastructure.
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5marketing")
cdPrintstring("Sending Eyefind message with test marketing tag from widget!")
cdPrintnl()
ELSE
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5email")
cdPrintstring("Sending Eyefind message with normal marketing tag!")
cdPrintnl()
ENDIF
#endif
SC_EMAIL_SEND_EMAIL (single_email_Sending_Data)
b_MessageBodyFilledThisCycle = FALSE
//Jump to Page 9 to display a message indicating the send has taken place and the recipient(s)
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE("WWW_EYEFIND_INFO_S_EMAILSTATUS")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(10)
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_EMAIL_SUC")
//BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_SUC") //Message has been sent to ~a~
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_CSUC") //Condensed font version. Your message has been sent to <C>~a~</C>
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (PlayerHandleGamerNameStringForScaleform)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintstring ("AppInternet - Sent email to ")
cdPrintstring (PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
//Critical. Email has been sent, blank out first two message segments for bug 2181546
EmailMessageSegments_to_Send[0] = ""
EmailMessageSegments_to_Send[1] = ""
EmailState = eSTATUS_UPDATE //Critical!
ENDIF
IF g_iLastSelectedWebIndex > 9 //Selecting a contact from the recipient list...
//Clear out recipient list before adding any new contacts...
SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST()
b_DisplayProfileViewHelp = FALSE
CPRINTLN(DEBUG_INTERNET, "Clearing old recipient list. Email Contacts list click [g_iLastSelectedWebIndex = ", g_iLastSelectedWebIndex, "]")
g_sPlayers.m_selectedPlayerSlot = g_iLastSelectedWebIndex - 10
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Player clicked contact list - Adjusted selected player slot is ")
cdPrintint (g_sPlayers.m_selectedPlayerSlot)
cdPrintnl()
#ENDIF
IF g_sPlayers.m_selectedPlayerSlot < g_sPlayers.plNumPlayers
g_sPlayers.selectedPlayerHandle = GET_GAMER_HANDLE_PLAYER(g_sPlayers.plPlayers[g_sPlayers.m_selectedPlayerSlot])
PlayerHandleGamerNameStringForScaleform = EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, player list gamertag from selected handle was ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
ELSE
//Old working regime
//g_sPlayers.selectedPlayerHandle = g_sPlayers.plFriends[GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL(g_sPlayers.m_selectedPlayerSlot)].Handle
//New trial
g_sPlayers.selectedPlayerHandle = g_sPlayers.plFriendsHandle[GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL(g_sPlayers.m_selectedPlayerSlot)]
// Test. This works.
#IF IS_DEBUG_BUILD
cdPrintstring("Friend display name test returns...")
cdPrintstring(NETWORK_GET_FRIEND_NAME(GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL(g_sPlayers.m_selectedPlayerSlot)))
cdPrintnl()
#ENDIF
//This part below might need to be conditioned with a Durango variant which returns NETWORK_GET_FRIEND_DISPLAY_NAME for DURANGO
//IF IS_DURANGO_VERSION
// PlayerHandleGamerNameStringForScaleform = NETWORK_GET_FRIEND_DISPLAY_NAME(GET_INDEX_OF_FRIEND_ARRAY_FOR_EMAIL(g_sPlayers.m_selectedPlayerSlot)))
//ELSE
PlayerHandleGamerNameStringForScaleform = EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle)
//ENDIF
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, friend list displayname or gamertag from selected handle was ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
ENDIF
//Get and store display name here!
BOOL b_CommunicationAllowed = TRUE
IF NOT IS_GAMER_HANDLE_VALID(g_sPlayers.selectedPlayerHandle)
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Preventing communication as Gamer Handle not valid for this selected player... ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Gamer handle valid for selected player. ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
ENDIF
//Part 5. Expanded this for 3291196 - Will block any reply attempt to any user who cannot be contacted through TEXT_CHAT but it seems as if this check will prevent any reply if the sender is offline!
IF (NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES() = FALSE)
OR (NETWORK_IS_VALID_EYEFIND_FRIEND(g_sPlayers.selectedPlayerHandle) = FALSE) //Add this check for offline problem. At least we'll know the two users are still friends.
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Sender has no text communication privileges or is not a friend. Communication prevented for new message to this player...")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle((g_sPlayers.selectedPlayerHandle)))
cdPrintnl()
#ENDIF
ENDIF
IF NETWORK_IS_GAMER_MUTED_BY_ME(g_sPlayers.selectedPlayerHandle)
OR NETWORK_IS_GAMER_BLOCKED_BY_ME(g_sPlayers.selectedPlayerHandle)
OR NETWORK_AM_I_MUTED_BY_GAMER(g_sPlayers.selectedPlayerHandle)
OR NETWORK_AM_I_BLOCKED_BY_GAMER(g_sPlayers.selectedPlayerHandle)
b_CommunicationAllowed = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Eyefind email, Communication prevented for this player... ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
ENDIF
IF b_CommunicationAllowed = FALSE //Should be FALSE!
//Jump to Page 9 to display a message indicating communication is blocked for the selected gamerhandle
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE("WWW_EYEFIND_INFO_S_EMAILSTATUS")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(10)
IF ARE_STRINGS_EQUAL (PlayerHandleGamerNameStringForScaleform, "") //Potential fix for 2131480
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_EMAIL_ERR")
END_TEXT_COMMAND_SCALEFORM_STRING()
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Communication not allowed but gamerstring was empty - 2. Displaying generic message.")
cdPrintnl()
#ENDIF
ELSE
//BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_BLK") //~a~ cannot be contacted at this time.
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_CBLK") //<C>~a~</C> cannot be contacted at this time.
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(PlayerHandleGamerNameStringForScaleform)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
END_TEXT_COMMAND_SCALEFORM_STRING()
ENDIF
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintstring ("App Internet - Player_to_Player_Composing_Main() communication block warning for ")
cdPrintstring(PlayerHandleGamerNameStringForScaleform)
//cdPrintstring (EyefindGetGamerTagFromHandle(g_sPlayers.selectedPlayerHandle))
cdPrintnl()
#ENDIF
EmailState = eSTATUS_UPDATE //Critical!
ENDIF
IF b_CommunicationAllowed = TRUE
AND (IS_GAMER_HANDLE_VALID(g_sPlayers.selectedPlayerHandle) OR bg_bBypassValidGamerCheck)
SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST(g_sPlayers.selectedPlayerHandle)
gh_ProfileViewHandle = g_sPlayers.selectedPlayerHandle
//PS3_360_ButtonSetup()
IF NOT IS_PC_VERSION()
b_DisplayProfileViewHelp = TRUE
NG_ViewProfile_ButtonSetup()
ENDIF
//NETWORK_GAMERTAG_FROM_HANDLE_START might need to be used for 360 only!
Update_Compose_Recipient_Field_Only()
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC CheckForEmailAwakeningFromDormantState() //This is repeatedly ran when EmailState = eDORMANT.
/*
#IF IS_DEBUG_BUILD
IF NETWORK_IS_GAME_IN_PROGRESS()
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_0) //Temp! This would be replaced by a scaleform check on the button being clicked on the Eyefind website. Should have MP check here too.
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintnl()
cdPrintstring("appInternet - User requested Eyefind Inbox. Initialising Email retrieval process...")
cdPrintnl()
#ENDIF
EmailState = eINITIAL
ENDIF
ENDIF
#ENDIF
*/
IF NETWORK_IS_GAME_IN_PROGRESS()
IF GET_CURRENT_WEBSITE_ID() = 2 //Eyefind
IF GET_CURRENT_WEBPAGE_ID() = 7 //Eyefind Inbox has been launched.
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintnl()
cdPrintstring("appInternet - User requested Eyefind Inbox. Initialising Email retrieval process...")
cdPrintnl()
#ENDIF
SF_EyefindInstButtonsIndex = REQUEST_SCALEFORM_MOVIE ("instructional_buttons")
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_EyefindInstButtonsIndex)
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
WAIT(0)
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - Waiting on intruction buttons movie to load for Eyefind initial state.")
cdPrintnl()
#ENDIF
ENDWHILE
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
IF NETWORK_IS_GAME_IN_PROGRESS()
EmailState = eINITIAL
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - CheckForEmailAwakeningFromDormantState() about to set EmailState = eINITIAL but network game is no longer in progress.")
cdPrintnl()
#ENDIF
ENDIF
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - CheckForEmailAwakeningFromDormantState() fired but network game is not in progress.")
cdPrintnl()
#ENDIF
ENDIF
ENDPROC
PROC CheckForComposeAwakening() //This is repeatedly ran when EmailState = eDORMANT.
IF NETWORK_IS_GAME_IN_PROGRESS()
IF GET_CURRENT_WEBSITE_ID() = 2 //Eyefind
IF GET_CURRENT_WEBPAGE_ID() = 8 //Eyefind compose has been launched.
b_MessageBodyFilledThisCycle = FALSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintnl()
cdPrintstring("appInternet - User requested Eyefind Compose. Initialising Player slot filling process...")
cdPrintnl()
#ENDIF
Place_MP_Friends_in_EmailContactSlots()
SF_EyefindInstButtonsIndex = REQUEST_SCALEFORM_MOVIE ("instructional_buttons")
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_EyefindInstButtonsIndex)
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
WAIT(0)
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - Waiting on intruction buttons movie to load for Eyefind composing state.")
cdPrintnl()
#ENDIF
ENDWHILE
IF NETWORK_IS_GAME_IN_PROGRESS()
EmailState = eCOMPOSING
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - CheckForComposeAwakening() about to set EmailState = eCOMPOSING but network game is no longer in progress.")
cdPrintnl()
#ENDIF
ENDIF
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - CheckForComposeAwakening() fired but network game is not in progress.")
cdPrintnl()
#ENDIF
ENDIF
ENDPROC
PROC InitialiseEmailRetrieval(INT iBatchStart, INT iBatchEnd)
/*
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_CURSOR")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
*/
//IF i_InboxDepth = 0
//Disable the newer button as it is not functional if we are on the newest page, 0.
//BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON")
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(7)
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
//END_SCALEFORM_MOVIE_METHOD()
//ENDIF
b_ReachedOldestEmail = FALSE //Critical!
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - Initialised New March 15 Retrieval Process for this batch. Starting at ")
cdPrintint(iBatchStart)
cdPrintstring(" Number of emails to grab in this batch is ")
cdPrintint(iBatchEnd)
cdPrintnl()
#ENDIF
//John Gurney Notes:
//To retrieve emails, use SC_EMAIL_RETRIEVE_EMAILS(INT startIndex, INT numEmails). Emails are ordered from 0 being the most recent.
//When you retrieve them, they will be returned in order youngest-oldest from the given index. The maximum you can retrieve is 10.
//Test with most recent ten. Eventually this should use scaleform stuff to let us know which batches to access.
//SC_EMAIL_RETRIEVE_EMAILS (iBatchStart, iBatchEnd + (5 * i_InboxDepth)) //Old regime which I think was necessary once upon a time...
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5email") //Critical! We only want to retrieve Eyefind messages, not marketing emails sent from Rockstar.
SC_EMAIL_RETRIEVE_EMAILS (iBatchStart, iBatchEnd)//2267872 - this seems to be fine now.
//SC_EMAIL_RETRIEVE_EMAILS(10, 20)
EmailState = eRETRIEVAL
ENDPROC
PROC MaintainRetrievalProcess()
CurrentRetrievalStatus = SC_EMAIL_GET_RETRIEVAL_STATUS()
SWITCH CurrentRetrievalStatus
//Retrieval Processed Finished, set EmailState to next section. THIS IS NOT GETTING HIT FROM CODE.
CASE EMAIL_RETRIEVAL_SUCCEEDED
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - Finished retrieving email batch.")
cdPrintnl()
#ENDIF
EmailState = eSF_FILLING
BREAK
CASE EMAIL_RETRIEVAL_NONE
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - EMAIL RETRIEVAL NONE - Should not see this spam repeatedly! Report to Steve T! Retrieved ")
cdPrintnl()
cdPrintint(SC_EMAIL_GET_NUM_RETRIEVED_EMAILS())
#ENDIF
EmailState = eSF_FILLING
BREAK
CASE EMAIL_RETRIEVAL_PENDING
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - EMAIL RETRIEVAL PENDING...")
cdPrintnl()
#ENDIF
BREAK
CASE EMAIL_RETRIEVAL_CANCELLED
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - EMAIL RETRIEVAL CANCELLED!")
cdPrintnl()
#ENDIF
EmailState = eDORMANT
//FORCE_CLOSE_BROWSER()
BREAK
//Failed! Bail out!
CASE EMAIL_RETRIEVAL_FAILED
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - EMAIL RETRIEVAL FAILED!")
cdPrintnl()
#ENDIF
EmailState = eDORMANT
//FORCE_CLOSE_BROWSER()
BREAK
ENDSWITCH
ENDPROC
FUNC STRING GET_MONTH_TL_FROM_MONTH_INT(INT iMonth)
STRING MonthString
SWITCH iMonth
CASE 1
MonthString = "CELL_JAN"
BREAK
CASE 2
MonthString = "CELL_FEB"
BREAK
CASE 3
MonthString = "CELL_MAR"
BREAK
CASE 4
MonthString = "CELL_APR"
BREAK
CASE 5
MonthString = "CELL_MAY"
BREAK
CASE 6
MonthString = "CELL_JUN"
BREAK
CASE 7
MonthString = "CELL_JUL"
BREAK
CASE 8
MonthString = "CELL_AUG"
BREAK
CASE 9
MonthString = "CELL_SEP"
BREAK
CASE 10
MonthString = "CELL_OCT"
BREAK
CASE 11
MonthString = "CELL_NOV"
BREAK
CASE 12
MonthString = "CELL_DEC"
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
cdPrintstring("AppINTERNET - EYEFIND Email. Weird date passed. Month is not within range 1-12!")
cdPrintnl()
#ENDIF
MonthString = "CELL_JAN"
BREAK
ENDSWITCH
RETURN MonthString
ENDFUNC
PROC FilloutSingleScaleformSlot(INT iPassedCurrentBatch)
//Fix for PC 2195352. Looks like the server copy of "senderName" was wrong.
//However, this is probably a safer way to make sure the display name is correct; regrabbing from the handle rather than assuming the name is correct server side.
#IF IS_DEBUG_BUILD
cdPrintString("AppInternet - FilloutSingleScaleformSlot about to grab name string from SenderHandle.")
cdPrintnl()
#ENDIF
PlayerHandleGamerNameStringForScaleform = EyefindGetGamerTagFromHandle((single_email_Received_Data.SenderHandle))
#IF IS_DEBUG_BUILD
cdPrintString("AppInternet - FilloutSingleScaleformSlot success. Retrieved gamertag or displayname:")
cdPrintString(PlayerHandleGamerNameStringForScaleform)
cdPrintnl()
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iPassedCurrentBatch + 10) //From Eddie : The emails start from slot 10. You can pass as many as you want.
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFNH") //~a~
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.SenderName)
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (PlayerHandleGamerNameStringForScaleform)
END_TEXT_COMMAND_SCALEFORM_STRING()
LANGUAGE_TYPE lang = GET_CURRENT_LANGUAGE()
IF (lang = LANGUAGE_CHINESE_SIMPLIFIED)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_EMAIL_DATE")
ADD_TEXT_COMPONENT_INTEGER(SingleEmailTimeStamp.nDay)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(GET_MONTH_TL_FROM_MONTH_INT(SingleEmailTimeStamp.nMonth))
END_TEXT_COMMAND_SCALEFORM_STRING()
ELSE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_EMAIL_DATE")
ADD_TEXT_COMPONENT_INTEGER(SingleEmailTimeStamp.nDay)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(GET_MONTH_TL_FROM_MONTH_INT(SingleEmailTimeStamp.nMonth))
END_TEXT_COMMAND_SCALEFORM_STRING()
ENDIF
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_SUBJ") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Subject[0])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Subject[1])
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_EMAIL_BCON") //~a~
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[0])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[1])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[2])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[3])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[4])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[5])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[6])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[7])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[8])
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (single_email_Received_Data.Contents[9])
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintString("AppInternet - Filled scaleform slot. Passed Batch ID was ")
cdPrintint(iPassedCurrentBatch)
cdPrintnl()
#ENDIF
ENDPROC
PROC FillScaleformWithRetrievedEmails(INT iThisBatchStart, INT iThisBatchEnd)
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT_EMPTY")
END_SCALEFORM_MOVIE_METHOD()
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("appInternet - About to fill Scaleform slots with retrieved individual email details. websiteId:")
cdPrintint(GET_CURRENT_WEBSITE_ID())
cdPrintstring(", webpageId:")
cdPrintint(GET_CURRENT_WEBPAGE_ID())
cdPrintnl()
cdPrintnl()
#ENDIF
INT iCurrentBatchID = iThisBatchStart
INT iPreviousPosixTime = 0
INT iSFSlotId = 0
NumberOfEmailsOnThisPage = 0
WHILE iCurrentBatchID < (iThisBatchEnd + 1) //Five slots per page but we need to check the next email after the batch end in order to know if we should display the "older" button.
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("______________________________________________________________________________")
cdPrintnl()
cdPrintnl()
cdPrintstring("appInternet - Grabbing single email for scaleform slot from this email ID which is ")
cdPrintint(iCurrentBatchID)
cdPrintnl()
cdPrintnl()
#ENDIF
//TEST: This should grab the most recent email. This will all go into a big scaleform filling loop...
//Use ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME
SC_EMAIL_GET_EMAIL_AT_INDEX (iCurrentBatchID, single_email_Received_Data)
INT iArrayIndex = 0
CONVERT_POSIX_TIME (single_email_Received_Data.CreatePosixTime, SingleEmailTimeStamp)
WHILE iArrayIndex < c_MAX_SEGMENTS
#IF IS_DEBUG_BUILD
IF iArrayIndex < 1
cdPrintstring("Subject is ")
cdPrintstring(single_email_Received_Data.Subject[1])
cdPrintnl()
cdPrintstring(" - Sender was ")
cdPrintstring(single_email_Received_Data.SenderName)
cdPrintstring(" at posix ")
cdPrintint(single_email_Received_Data.CreatePosixTime)
cdPrintstring(" which is ")
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nYear)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMonth)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nDay)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nHour)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMinute)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nSecond)
cdPrintnl()
cdPrintnl()
ENDIF
#ENDIF
IF iArrayIndex < 2
CPRINTLN(DEBUG_INTERNET, "AppInternet single_email_Received_Data Subject Segment[", iArrayIndex, "] = ", single_email_Received_Data.Subject[iArrayIndex])
ENDIF
CPRINTLN(DEBUG_INTERNET, "AppInternet single_email_Received_Data Body Segment[", iArrayIndex, "] = ", single_email_Received_Data.Contents[iArrayIndex])
iArrayIndex ++
ENDWHILE
//Use posix times to make sure last deleted posix doesn't get included.
BOOL ThisEmailWasRecentlyDeleted = FALSE
//Compare the newly grabbed email with the posix time of the last deleted email. If it's exactly the same we won't include it in the inbox listing.
//This may be expanded to keep track of the last few deleted emails if the cloud goes a bit slow.
//Part 4. Expanded this for 3291196 - Will not include any message from any gamerhandle that can no longer text chat with this end user. It looks like this check prevents text chat if the sender handles is offline.
IF (NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES() = FALSE)
//Combine with a friend check so the user can always see friends messages regardless of online / offline status.
OR (NETWORK_IS_VALID_EYEFIND_FRIEND(single_email_Received_Data.SenderHandle) = FALSE)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Not listing eyefind email as player can no longer text chat with senderhandle. No longer a friend. ")
#ENDIF
ThisEmailWasRecentlyDeleted = TRUE
ENDIF
//End of expansion for 3291196
IF single_email_Received_Data.CreatePosixTime = LastDeletedEmailPosix
ThisEmailWasRecentlyDeleted = TRUE
ENDIF
IF single_email_Received_Data.CreatePosixTime <> 0 //Avoid populating SF slots with any blank emails.
AND (iPreviousPosixTime <> single_email_Received_Data.CreatePosixTime) //Handle issue with email from cloud potentially returning the previous email if the index should be empty.
IF ThisEmailWasRecentlyDeleted = FALSE
IF iCurrentBatchID < (iThisBatchEnd) //Make sure we don't include the item used to check if the "older" button should be displayed.
FilloutSingleScaleformSlot(iSFSlotId)
iSFSlotId ++
NumberOfEmailsOnThisPage ++
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintString("AppInternet - Warning! This email was recently deleted. Not including in list. Batch ID is ")
cdPrintint(iCurrentBatchID)
cdPrintnl()
#ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintString("AppInternet - Warning! Should not see any more fresh emails after this one as this ID is empty. Batch ID is ")
cdPrintint(iCurrentBatchID)
cdPrintnl()
#ENDIF
b_ReachedOldestEmail = TRUE //Critical! The "older" button selection check interrogates this bool. The app will not move any pages deeper into the inbox if this is true.
//Disable the older button as it is no longer functional in this context. We have reached the last page.
//BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON")
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(6)
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
//END_SCALEFORM_MOVIE_METHOD()
ENDIF
iCurrentBatchID ++
//iSFSlotId ++
iPreviousPosixTime = single_email_Received_Data.CreatePosixTime
ENDWHILE
/*
//This should grab the second most recent email.
SC_EMAIL_GET_EMAIL_AT_INDEX (1, single_email_Received_Data)
iArrayIndex = 0
CONVERT_POSIX_TIME (single_email_Received_Data.CreatePosixTime, SingleEmailTimeStamp)
WHILE iArrayIndex < c_MAX_SEGMENTS
#IF IS_DEBUG_BUILD
IF iArrayIndex < 1
cdPrintnl()
cdPrintnl()
cdPrintstring("Email position 1")
cdPrintstring(" - Sender was ")
cdPrintstring(single_email_Received_Data.SenderName)
cdPrintstring(" at posix ")
cdPrintint(single_email_Received_Data.CreatePosixTime)
cdPrintstring(" which is ")
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nYear)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMonth)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nDay)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nHour)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMinute)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nSecond)
cdPrintnl()
cdPrintnl()
ENDIF
#ENDIF
CPRINTLN(DEBUG_INTERNET, "AppInternet single_email_Received_Data Body Segment[", iArrayIndex, "] = ", single_email_Received_Data.Contents[iArrayIndex])
IF iArrayIndex < 2
CPRINTLN(DEBUG_INTERNET, "AppInternet single_email_Received_Data Subject Segment[", iArrayIndex, "] = ", single_email_Received_Data.Subject[iArrayIndex])
ENDIF
iArrayIndex ++
ENDWHILE
FilloutSingleScaleformSlot()
//This should grab the third most recent email.
SC_EMAIL_GET_EMAIL_AT_INDEX (2, single_email_Received_Data)
iArrayIndex = 0
CONVERT_POSIX_TIME (single_email_Received_Data.CreatePosixTime, SingleEmailTimeStamp)
WHILE iArrayIndex < c_MAX_SEGMENTS
#IF IS_DEBUG_BUILD
IF iArrayIndex < 1
cdPrintnl()
cdPrintnl()
cdPrintstring("Email position 2")
cdPrintstring(" - Sender was ")
cdPrintstring(single_email_Received_Data.SenderName)
cdPrintstring(" at posix ")
cdPrintint(single_email_Received_Data.CreatePosixTime)
cdPrintstring(" which is ")
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nYear)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMonth)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nDay)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nHour)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nMinute)
cdPrintnl()
cdPrintint(SingleEmailTimeStamp.nSecond)
cdPrintnl()
cdPrintnl()
ENDIF
#ENDIF
CPRINTLN(DEBUG_INTERNET, "AppInternet single_email_Received_Data Body Segment[", iArrayIndex, "] = ", single_email_Received_Data.Contents[iArrayIndex])
iArrayIndex ++
ENDWHILE
FilloutSingleScaleformSlot()
*/
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT") //Critical! Need to update view
END_SCALEFORM_MOVIE_METHOD()
IF GET_CURRENT_WEBSITE_ID() = 2
AND GET_CURRENT_WEBPAGE_ID() = 7
IF i_InboxDepth = 0
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //"Newer" button needs d if we are on the newest page of emails.
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(7)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //"Newer" button should be enabled. Scaleform should do this automatically after an update_text.
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(7)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
IF b_ReachedOldestEmail = TRUE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //"Older" button needs disabled if we have already reached the oldest page of emails.
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(6)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON") //"Older" button should be enabled. Scaleform should do this automatically after an update_text. SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(6)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDIF
//If reached oldest email and no slots on that page were filled... repopulate with previous page?
EmailState = eNEUTRAL_BROWSING
ENDPROC
//Steve T - Run main email handling routines, checking for composing buttons, passing recipient, attempts at accessing more emails.
PROC Player_to_Player_Email_Main()
IF GET_CURRENT_WEBSITE_ID() = 2
AND GET_CURRENT_WEBPAGE_ID() = 7
IF b_Creating_Email_Message_Body_from_OSK = FALSE
AND b_Creating_Email_Message_Subject_from_OSK = FALSE
IF b_EmailClickDetected
b_EmailClickDetected = FALSE //reset this...
IF g_iLastSelectedWebIndex > 9
i_CurrentlySelectedEmail = (g_iLastSelectedWebIndex - 10) //Most recent email, 0, returns 10 when click selected.
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Email Selected. Adjusted position is ")
cdPrintint(i_CurrentlySelectedEmail)
cdPrintnl()
SC_EMAIL_GET_EMAIL_AT_INDEX (i_CurrentlySelectedEmail, single_email_Received_Data)
cdPrintstring(single_email_Received_Data.Contents[0])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[1])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[2])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[3])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[4])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[5])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[6])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[7])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[8])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Contents[9])
cdPrintnl()
cdPrintstring(single_email_Received_Data.Subject[0])
cdPrintnl()
#ENDIF
SC_EMAIL_GET_EMAIL_AT_INDEX (i_CurrentlySelectedEmail, single_email_Received_Data)
ENDIF
IF g_iLastSelectedWebIndex = 8 //"Reply"
b_MovedToComposeFromReplyButton = TRUE
b_MessageBodyFilledThisCycle = FALSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Reply to Email Selected. last adjusted position is ")
cdPrintint(i_CurrentlySelectedEmail)
cdPrintnl()
#ENDIF
SC_EMAIL_GET_EMAIL_AT_INDEX (i_CurrentlySelectedEmail, single_email_Received_Data)
//SC_EMAIL_GET_EMAIL_AT_INDEX ((i_CurrentlySelectedEmail + (5 * i_InboxDepth)), single_email_Received_Data)
#IF IS_DEBUG_BUILD
cdPrintstring(single_email_Received_Data.Contents[0])
cdPrintnl()
#ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE("WWW_EYEFIND_INFO_S_COMPOSE")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
//Update_Compose_Recipient_Subject_Body() - If b_MovedToComposeFromReplyButton = TRUE, this now is done after we fill up the player list on moving to the COMPOSE page.
ENDIF
//Has problem with deleting two emails in succession url:bugstar:1829642
IF g_iLastSelectedWebIndex = 9 //"Delete"
INT ArrayOfEmailsMarkedForDeletion[1]
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Delete Selected. last adjusted inbox position was ")
cdPrintint(i_CurrentlySelectedEmail)
cdPrintnl()
#ENDIF
SC_EMAIL_GET_EMAIL_AT_INDEX (i_CurrentlySelectedEmail, single_email_Received_Data)
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Grabbed email server data from inbox position. Single_email_Received_Data.id was ")
cdPrintint(single_email_Received_Data.id)
cdPrintnl()
#ENDIF
ArrayOfEmailsMarkedForDeletion[0] = (single_email_Received_Data.id)
//ArrayOfEmailsMarkedForDeletion[0] = (i_CurrentlySelectedEmail + 1)// + (5 * i_InboxDepth) )
IF NumberOfEmailsOnThisPage > 0
NumberOfEmailsOnThisPage --
//If there are no more emails on this page, then we need to check if we are on a "older" page. If so, move up to a newer page.
IF NumberOfEmailsOnThisPage = 0
IF i_InboxDepth > 0 //0 is the most recent batch of emails
i_InboxDepth --
ENDIF
ENDIF
ENDIF
LastDeletedEmailPosix = single_email_Received_Data.CreatePosixTime
SC_EMAIL_DELETE_EMAILS (ArrayOfEmailsMarkedForDeletion, 1)
//Comment in for testing cloud speed of deletion.
//WAIT (10000)
EmailState = eINITIAL
ENDIF
//* Commented out just now because of retrieval issue.
IF g_iLastSelectedWebIndex = 7 //"Newer"
IF i_InboxDepth > 0 //0 is the most recent batch of emails, so only do a regrab is we are deeper into the inbox.
i_InboxDepth --
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Newer button Selected. Resetting b_ReachedOldestEmail to FALSE. New i_InboxDepth is ")
cdPrintint(i_InboxDepth)
cdPrintnl()
#ENDIF
b_ReachedOldestEmail = FALSE //As we've moved up one page of depth to a newer page, this can no longer be TRUE.
//Re-enable the older button...
//BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON")
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(6)
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
//END_SCALEFORM_MOVIE_METHOD()
Play_Select_Beep()
//Do a regrab of new batch
EmailState = eINITIAL
ELSE
Play_Back_Beep()
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Newer button Selected but i_InboxDepth is already at ")
cdPrintint(i_InboxDepth)
cdPrintnl()
#ENDIF
ENDIF
ENDIF
IF g_iLastSelectedWebIndex = 6 //"Older"
IF i_InboxDepth > -1 //1 is the most recent batch of emails, so only do a regrab is we go deeper into the inbox.
AND b_ReachedOldestEmail = FALSE
i_InboxDepth ++
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Older button Selected. New i_InboxDepth is ")
cdPrintint(i_InboxDepth)
cdPrintnl()
#ENDIF
//Re-enable the newer button as the page depth must be greater than zero now.
//BEGIN_SCALEFORM_MOVIE_METHOD(mov,"DISABLE_BUTTON")
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(7)
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
//END_SCALEFORM_MOVIE_METHOD()
Play_Select_Beep()
//Do a regrab of older batch
EmailState = eINITIAL
ELSE
Play_Back_Beep()
IF b_ReachedOldestEmail = TRUE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Older button selected but cannot function as b_ReachedOldestEmail is TRUE.")
cdPrintnl()
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - Older button selected but i_InboxDepth was weird at ")
cdPrintint(i_InboxDepth)
cdPrintnl()
#ENDIF
ENDIF
ENDIF
ENDIF
//Email Batch tracking.
//INT i_InboxDepth = 0
//INT i_CurrentlySelectedEmail = 0
ENDIF
ENDIF
ENDIF
//Temp Unreferenced Hacks - REMOVE EVENTUALLY!
IF b_DummyUnrefHacks = TRUE
single_email_Received_Data.Contents[0] = EmailMessageSegments_to_Send[0]
IF single_email_Received_Data.Id = single_email_Received_Data.Id
ENDIF
single_email_Sending_Data.Subject[0] = "Test Subject 1"
single_email_Sending_Data.Subject[1] = "Test Subject 2"
IF single_email_Sending_Data.Id = single_email_Sending_Data.Id
ENDIF
IF i_InboxDepth = i_InboxDepth
ENDIF
IF i_CurrentlySelectedEmail = i_CurrentlySelectedEmail
ENDIF
ENDIF
IF b_Creating_Email_Message_Body_from_OSK
Maintain_Email_Message_Body_Creation_from_OSK()
ENDIF
ENDPROC
TEXT_LABEL_23 tl23RequestedInternetTextBlock = ""
PROC PURCHASE_COMPLETE_AUDIO_LINE()
IF g_bInMultiplayer
EXIT
ENDIF
IF IS_PLAYER_DEAD(GET_PLAYER_INDEX())
EXIT
ENDIF
IF IS_ENTITY_DEAD(GET_PLAYER_PED(GET_PLAYER_INDEX()))
EXIT
ENDIF
PLAY_PED_AMBIENT_SPEECH_NATIVE(GET_PLAYER_PED(GET_PLAYER_INDEX()), "PURCHASE_ONLINE", "SPEECH_PARAMS_FORCE")
ENDPROC
PROC SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT(STRING sTag, BROWSER_HELP_MESSAGE_TYPE_ENUM eTextType = BHMT_STRING, BOOL bForever = FALSE, INT iNumToDisplay1 = 0, INT iNumToDisplay2 = 0, STRING sStringToDisplay = NULL)
g_sBrowserHelpMessage.bShow = TRUE
g_sBrowserHelpMessage.tl15Tag = sTag
g_sBrowserHelpMessage.eTextType = eTextType
g_sBrowserHelpMessage.bForever = bForever
g_sBrowserHelpMessage.iNumToDisplay1 = iNumToDisplay1
g_sBrowserHelpMessage.iNumToDisplay2 = iNumToDisplay2
g_sBrowserHelpMessage.tl15StringToDisplay = sStringToDisplay
ENDPROC
PROC CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT(BOOL bShow = FALSE)
g_sBrowserHelpMessage.bShow = bShow
g_sBrowserHelpMessage.tl15Tag = ""
g_sBrowserHelpMessage.eTextType = BHMT_NONE
g_sBrowserHelpMessage.bForever = FALSE
g_sBrowserHelpMessage.iNumToDisplay1 = -1
g_sBrowserHelpMessage.iNumToDisplay2 = -1
g_sBrowserHelpMessage.tl15StringToDisplay = ""
ENDPROC
FUNC BOOL IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(BROWSER_HELP_MESSAGE_STRUCT &structBrowserHelpMessage)
SWITCH structBrowserHelpMessage.eTextType
CASE BHMT_STRING
RETURN IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(structBrowserHelpMessage.tl15Tag)
BREAK
CASE BHMT_STRING_WITH_NUMBER
RETURN IS_THIS_HELP_MESSAGE_WITH_NUMBER_BEING_DISPLAYED(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1)
BREAK
CASE BHMT_STRING_WITH_TWO_NUMBERS
RETURN IS_THIS_HELP_MESSAGE_WITH_TWO_NUMBERS_BEING_DISPLAYED(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.iNumToDisplay2)
BREAK
CASE BHMT_STRING_WITH_NUMBER_AND_STRING
RETURN IS_THIS_HELP_MESSAGE_WITH_NUMBER_AND_STRING_BEING_DISPLAYED(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.tl15StringToDisplay)
BREAK
CASE BHMT_NONE
RETURN FALSE
BREAK
ENDSWITCH
CASSERTLN(DEBUG_INTERNET, "IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(\"", structBrowserHelpMessage.tl15Tag, "\"), eTextType:", structBrowserHelpMessage.eTextType)
RETURN FALSE
ENDFUNC
PROC PRINT_BROWSER_HELP(BROWSER_HELP_MESSAGE_STRUCT &structBrowserHelpMessage)
SWITCH structBrowserHelpMessage.eTextType
CASE BHMT_STRING
IF NOT structBrowserHelpMessage.bForever
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP(\"", structBrowserHelpMessage.tl15Tag, "\")")
PRINT_HELP(structBrowserHelpMessage.tl15Tag)
ELSE
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_FOREVER(\"", structBrowserHelpMessage.tl15Tag, "\")")
PRINT_HELP_FOREVER(structBrowserHelpMessage.tl15Tag)
ENDIF
BREAK
CASE BHMT_STRING_WITH_NUMBER
IF NOT structBrowserHelpMessage.bForever
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_WITH_NUMBER(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ")")
PRINT_HELP_WITH_NUMBER(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1)
ELSE
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_FOREVER_WITH_NUMBER(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ")")
PRINT_HELP_FOREVER_WITH_NUMBER(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1)
ENDIF
BREAK
CASE BHMT_STRING_WITH_TWO_NUMBERS
IF NOT structBrowserHelpMessage.bForever
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_WITH_TWO_NUMBERS(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ", ", structBrowserHelpMessage.iNumToDisplay2, ")")
PRINT_HELP_WITH_TWO_NUMBERS(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.iNumToDisplay2)
ELSE
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_FOREVER_WITH_TWO_NUMBERS(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ", ", structBrowserHelpMessage.iNumToDisplay2, ")")
PRINT_HELP_FOREVER_WITH_TWO_NUMBERS(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.iNumToDisplay2)
ENDIF
BREAK
CASE BHMT_STRING_WITH_NUMBER_AND_STRING
IF NOT structBrowserHelpMessage.bForever
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_WITH_NUMBER_AND_STRING(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ", \"", structBrowserHelpMessage.tl15StringToDisplay, "\")")
PRINT_HELP_WITH_NUMBER_AND_STRING(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.tl15StringToDisplay)
ELSE
CDEBUG3LN(DEBUG_INTERNET, "PRINT_BROWSER_HELP_FOREVER_WITH_NUMBER_AND_STRING(\"", structBrowserHelpMessage.tl15Tag, "\", ", structBrowserHelpMessage.iNumToDisplay1, ", \"", structBrowserHelpMessage.tl15StringToDisplay, "\")")
PRINT_HELP_FOREVER_WITH_NUMBER_AND_STRING(structBrowserHelpMessage.tl15Tag, structBrowserHelpMessage.iNumToDisplay1, structBrowserHelpMessage.tl15StringToDisplay)
ENDIF
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "PRINT_BROWSER_HELP(\"", structBrowserHelpMessage.tl15Tag, "\"), eTextType:", structBrowserHelpMessage.eTextType)
BREAK
ENDSWITCH
ENDPROC
PROC TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(BOOL bToggleOn)
IF g_bDisable_toggle_player_proofs_when_processing_internet_shopping_basket
CPRINTLN(DEBUG_INTERNET, "disabled TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET - ", GET_STRING_FROM_BOOL(bToggleOn))
EXIT
ENDIF
IF IS_ENTITY_ALIVE(PLAYER_PED_ID())
AND bSetPlayerProofsWhileProcessingBasket != bToggleOn
CPRINTLN(DEBUG_INTERNET, "TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET - ", GET_STRING_FROM_BOOL(bToggleOn))
DEBUG_PRINTCALLSTACK()
IF bToggleOn
SET_ENTITY_PROOFS(PLAYER_PED_ID(), TRUE, TRUE, TRUE, TRUE, TRUE)
ELSE
SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
ENDIF
bSetPlayerProofsWhileProcessingBasket = bToggleOn
ENDIF
ENDPROC
PROC FORCE_CLOSE_BROWSER()
DEBUG_PRINTCALLSTACK()
g_bBSWebsiteTerminated = TRUE
g_bBSWebsiteNoSpaceTrigger = FALSE
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CLEAR_HELP(TRUE)
bTradeHelpPrinted = FALSE
ENDIF
g_sBrowserHelpMessage.bShow = FALSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_HACKT0")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_MOC0")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_AOC0")
#IF FEATURE_HEIST_ISLAND
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_KOSA0")
#ENDIF
CLEAR_HELP(TRUE)
bTradeHelpPrinted = FALSE
ENDIF
IF bTradeHelpPrinted
AND IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP(TRUE)
bTradeHelpPrinted = FALSE
ENDIF
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
IF g_iEpsilonTutorialStage <> -1
KILL_ANY_CONVERSATION()
g_iEpsilonTutorialStage = -1
ENDIF
IF HAS_ADDITIONAL_TEXT_LOADED(SHOP_TEXT_SLOT)
CLEAR_ADDITIONAL_TEXT(SHOP_TEXT_SLOT, FALSE)
ENDIF
IF bProcessingBasket
IF GET_CASH_TRANSACTION_STATUS(GET_BASKET_TRANSACTION_SCRIPT_INDEX()) = CASH_TRANSACTION_STATUS_PENDING
CPRINTLN(DEBUG_INTERNET, "FORCE_CLOSE_BROWSER: force close while a basket transaction is still pending processing - update reply to AUTO_PROCESS")
UPDATE_CASH_TRANSACTION_FLAGS(GET_BASKET_TRANSACTION_SCRIPT_INDEX(), CTPF_AUTO_PROCESS_REPLY)
ELSE
CPRINTLN(DEBUG_INTERNET, "FORCE_CLOSE_BROWSER: force close while a basket transaction has finished processing - delete")
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
bProcessingBasket = FALSE
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
USE_FAKE_MP_CASH(FALSE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
ENDIF
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
IF g_bInMultiplayer
AND bRunningOrgNameKeyboard
BUSYSPINNER_OFF()
KeyBoardData.iProfanityToken = 0
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0A)
PRINT_HELP("HELP_SPVE2a") //Go to dynasty8realestate.com and purchase an executive Office to unlock exclusive CEO content.")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0A)
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0B)
PRINT_HELP("HELP_SPVE2b") //Go to your Office ~BLIP_OFFICE~ and access the Vehicle Cargo update to purchase a Vehicle Warehouse.")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0B)
ENDIF
IF iSVM_Unlock_Feed_Message != 0
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(DUNE5))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_RMP") //Ramped Up
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(WASTELANDER))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "FRT_TRNS") //Transporter
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(BLAZER5))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_STK") //Stockpiling
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(PHANTOM2))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_PLW") //Plowed
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(VOLTIC2))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_VEL") //Velocity
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(TECHNICAL2))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_AA") //Amphibious Assault
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(BOXVILLE5))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "FRT_MODE") //Fortified
ENDIF
IF IS_BIT_SET(iSVM_Unlock_Feed_Message, SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(RUINER2))
PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_FUL") //Fully Loaded
ENDIF
iSVM_Unlock_Feed_Message = 0
ENDIF
IF iWVM_Unlock_Feed_Message != 0
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(APC))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_RMP") //
ENDIF
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(DUNE3))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "FRT_TRNS") //
ENDIF
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(HALFTRACK))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_STK") //
ENDIF
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(OPPRESSOR))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_PLW") //
ENDIF
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(TAMPA3))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_VEL") //
ENDIF
IF IS_BIT_SET(iWVM_Unlock_Feed_Message, WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(TRAILERSMALL2))
// PRINT_TICKER_WITH_STRING("WEB_SBV_UNLOCK", "MODE_FUL") //
PRINT_HELP("HELP_WEVE3f") //You can now request the Vom Feuer Anti-Aircraft Trailer via the Vehicles section of the Interaction Menu.
ENDIF
iWVM_Unlock_Feed_Message = 0
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BAEQ2A)
PRINT_HELP("HELP_BAEQ2a") //You can now request a Ballistic Equipment drop via the Inventory section of the Interaction Menu.
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BAEQ2A)
ENDIF
IF iFDS_Unlock_Feed_Message != 0
IF IS_BIT_SET(iFDS_Unlock_Feed_Message, GET_FDS_VEHICLE_SLOT(KHANJALI))
PRINT_HELP("HELP_FDS3a")
ENDIF
IF IS_BIT_SET(iFDS_Unlock_Feed_Message, GET_FDS_VEHICLE_SLOT(CHERNOBOG))
PRINT_HELP("HELP_FDS3b")
ENDIF
IF IS_BIT_SET(iFDS_Unlock_Feed_Message, GET_FDS_VEHICLE_SLOT(RIOT2))
PRINT_HELP("HELP_FDS3c")
ENDIF
IF IS_BIT_SET(iFDS_Unlock_Feed_Message, GET_FDS_VEHICLE_SLOT(THRUSTER))
PRINT_HELP("HELP_FDS3d")
Send_MP_Txtmsg_From_CharSheetID(CHAR_LESTER, "TXT_CAR_THRUST")
ENDIF
iFDS_Unlock_Feed_Message = 0
ENDIF
IF iBBS_Unlock_Feed_Message != 0
iBBS_Unlock_Feed_Message = 0
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_HACKT2)
PRINT_HELP("HELP_HACKT2") //Go to the lowest garage level of your Nightclub ~BLIP_BAT_CLUB_PROPERTY~ to modify your Hacker Truck. You can also request it nearby via the Hacker Truck Services section of the Interaction Menu.
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_HACKT2)
ENDIF
// #IF FEATURE_HEIST_ISLAND
// IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_SUBMARINE)
// PRINT_HELP("HELP_SUBMA_P") //Go to the planning table on-board your new Submarine ~RADAR_TRACE_SUB2~ to begin The Island Heist as a VIP, CEO or MC President. You can also request the Submarine nearby via the Services section of the Interactions Menu.
// CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SUBMARINE)
// ENDIF
// //moved this help to after phone call.
// //url:bugstar:6731525 - Can we please tweak the spawning and messaging after purchasing the submarine as follows?
// #ENDIF
bPanicShutdownStart = TRUE
g_BrowserStartState = SBSS_Default
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
MP_FORCE_TERMINATE_INTERNET_CLEAR()
SP_FORCE_TERMINATE_INTERNET_CLEAR()
#IF IS_DEBUG_BUILD //Steve T addition for 2133870
cdPrintnl()
cdPrintstring("AppInternet - Marking Eyefind email instructional buttons as no longer needed from FORCE_CLOSE_BROWSER and removing text entry box.")
cdPrintnl()
#ENDIF
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED (SF_EyefindInstButtonsIndex) //#2133870
FORCE_CLOSE_TEXT_INPUT_BOX() //Fix for 2232389 - Prevent the text entry box on PC in the first instance from persisting when the browser has closed.
//Deativate multihead blinders on PC
IF SET_MULTIHEAD_SAFE(FALSE,FALSE,bActivatedMultiheadBlinders, TRUE)
bActivatedMultiheadBlinders = FALSE
ENDIF
ENDPROC
FUNC BOOL DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
IF g_bInMultiplayer
AND MP_FORCE_TERMINATE_INTERNET_ACTIVE()
CPRINTLN(DEBUG_INTERNET, "DO_CHECK_TO_TERMINATE_WHILE_LOOPS - MP force terminate internet active")
RETURN FALSE
ENDIF
IF NOT g_bInMultiplayer
AND SP_FORCE_TERMINATE_INTERNET_ACTIVE()
CPRINTLN(DEBUG_INTERNET, "DO_CHECK_TO_TERMINATE_WHILE_LOOPS - SP force terminate internet active")
RETURN FALSE
ENDIF
IF IS_PLAYER_SWITCH_IN_PROGRESS()
CPRINTLN(DEBUG_INTERNET, "DO_CHECK_TO_TERMINATE_WHILE_LOOPS - player switch is in progress")
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL DO_CHECK_FOR_RAGDOLL_OR_DEAD()
IF g_bInMultiplayer
IF SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bInMultiplayer and SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE")
FORCE_CLOSE_BROWSER()
RETURN FALSE
ENDIF
IF IS_PAUSE_MENU_ACTIVE()
IF NOT bProcessingBasket
IF GET_PAUSE_MENU_STATE() != PM_SHUTTING_DOWN
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bInMultiplayer and IS_PAUSE_MENU_ACTIVE, and GET_PAUSE_MENU_STATE() = ", GET_PAUSE_MENU_STATE())
FORCE_CLOSE_BROWSER()
RETURN FALSE
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<WEB_BROWSER> force_close_browser: g_bInMultiplayer and IS_PAUSE_MENU_ACTIVE, but GET_PAUSE_MENU_STATE() = ", GET_PAUSE_MENU_STATE())
ENDIF
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<WEB_BROWSER> force_close_browser: g_bInMultiplayer and IS_PAUSE_MENU_ACTIVE, but bProcessingBasket...")
ENDIF
ENDIF
IF IS_PLAYER_IN_CORONA()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bInMultiplayer and player in corona in MP")
RETURN FALSE
ENDIF
IF g_b_OnLeaderboard
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bInMultiplayer and g_b_OnLeaderboard")
FORCE_CLOSE_BROWSER()
RETURN FALSE
ENDIF
ENDIF
IF g_bResultScreenDisplaying
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bResultScreenDisplaying()")
FORCE_CLOSE_BROWSER()
RETURN FALSE
ENDIF
IF IS_PLAYER_SWITCH_IN_PROGRESS()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_PLAYER_SWITCH_IN_PROGRESS()")
FORCE_CLOSE_BROWSER()
RETURN TRUE
ENDIF
IF g_bPlayerLockedInToTrigger
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_bPlayerLockedInToTrigger")
FORCE_CLOSE_BROWSER()
RETURN FALSE
ENDIF
IF IS_PLAYER_BEING_ARRESTED(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_PLAYER_BEING_ARRESTED()")
FORCE_CLOSE_BROWSER()
RETURN FALSE
ENDIF
IF GET_ENTITY_HEALTH(GET_PLAYER_PED(GET_PLAYER_INDEX())) != g_iBrowserHealthDelta
IF GET_ENTITY_HEALTH(GET_PLAYER_PED(GET_PLAYER_INDEX())) < g_iBrowserHealthDelta // Losing health only
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: GET_ENTITY_HEALTH()")
FORCE_CLOSE_BROWSER()
RETURN TRUE
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF IS_PED_RAGDOLL(GET_PLAYER_PED(GET_PLAYER_INDEX()))
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_PED_RAGDOLL()")
FORCE_CLOSE_BROWSER()
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_ENTITY_DEAD()")
FORCE_CLOSE_BROWSER()
RETURN TRUE
ENDIF
IF IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP()")
FORCE_CLOSE_BROWSER()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC DISABLE_CONTROL_ACTIONS_GENERAL()
DO_CHECK_FOR_RAGDOLL_OR_DEAD()
DISABLE_ALL_CONTROL_ACTIONS(PLAYER_CONTROL)
DISABLE_ALL_CONTROL_ACTIONS(FRONTEND_CONTROL)
IF !bControlsEnabled
EXIT
ENDIF
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_X)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_X)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_Y)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
IF NOT (GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LR)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UD)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UP_ONLY)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_DOWN_ONLY)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LEFT_ONLY)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_RIGHT_ONLY)
ENDIF
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_CINEMATIC_UD)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_CINEMATIC_LR)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_FRONTEND_LS)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_FRONTEND_RS)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_LT)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_RT)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_LS)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_RS)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_LEFT_AXIS_X)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_X)
ENABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_Y)
// Make sure cursor inputs are exclusive so we don't get any gameplay conflicts in MP.
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP) // Reenabling this control, as setting INPUT_CURSOR_SCROLL_DOWN as exclusive then disables the Up input! B*1985333
// Allow pause input, unless typing into a text field (otherwise typing P could pause the game)
IF NOT (IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) AND ( GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_KEYBOARD_FLAG_INDEX) != 0 AND NOT bTVOn ))
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
ENDIF
REPLAY_PREVENT_RECORDING_THIS_FRAME()
ENDPROC
PROC PREP_BROWSER_BUTTONS(BOOL bNullCheck, BOOL bAcceptCancel = FALSE, BOOL bShowBrowser = FALSE)
CPRINTLN(DEBUG_INTERNET, "Refreshing browser buttons (bNullCheck:", GET_STRING_FROM_BOOL(bNullCheck), ", bAcceptCancel:", GET_STRING_FROM_BOOL(bAcceptCancel), ", bShowBrowser:", GET_STRING_FROM_BOOL(bShowBrowser), ")")
IF mov = NULL
mov = REQUEST_SCALEFORM_MOVIE("web_browser")
ENDIF
IF buttons = NULL OR !bNullCheck OR NOT HAS_SCALEFORM_MOVIE_FILENAME_LOADED("INSTRUCTIONAL_BUTTONS")
buttons = REQUEST_SCALEFORM_MOVIE_INSTANCE("INSTRUCTIONAL_BUTTONS")
ENDIF
CPRINTLN(DEBUG_INTERNET, "PREP_BROWSER_BUTTONS : waiting for load...")
SETTIMERA(0)
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(buttons))
AND TIMERA() < 1500
IF bShowBrowser
//RENDER_BROWSER()
DISABLE_CONTROL_ACTIONS_GENERAL()
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
IF NOT HAS_SCALEFORM_MOVIE_LOADED(mov)
CASSERTLN(DEBUG_INTERNET, "PREP_BROWSER_BUTTONS: scaleform movie mov has not loaded")
ELSE
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
ENDIF
ENDIF
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, "...buttons loaded [", TIMERA(), "ms]")
IF buttons != NULL
AND buttons != INT_TO_NATIVE(SCALEFORM_INDEX, -1)
AND HAS_SCALEFORM_MOVIE_LOADED(buttons)
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "CLEAR_ALL")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
INT iSlot = 0
IF g_bBrowserGoToStoreTrigger OR bAcceptCancel
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_270")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_271")
END_SCALEFORM_MOVIE_METHOD()
ELSE
IF bKeyboardHelp
AND bTVOn = FALSE // This is needed because we're faking the keyboard on screen when playing video to stop the back button qutting the site instead of quitting the video. SR
//SELECT X (button_30)
//CLOSE O (button_31)
//MOVE dpad (button_9)
//CASSERTLN(DEBUG_INTERNET, "Keyboard instructional mode triggered, pass this bug to Default Levels.")
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_CURSOR))
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_FRONTEND_DPAD_ALL))
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("IB_NAVIGATE")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT))
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT))
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLSEL")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL))
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLDEL")
END_SCALEFORM_MOVIE_METHOD()
ELSE
// Regular browser help
/*
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
IF g_BrowserStartState != SBSS_CashMachineFinance
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLP")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLPATM")
ENDIF
END_SCALEFORM_MOVIE_METHOD()
// If back button available
IF g_BrowserStartState != SBSS_CashMachineFinance AND bShowingBackButton
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLPATM")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
++iSlot
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("APINTRHLPSTK")
END_SCALEFORM_MOVIE_METHOD()
*/
ENDIF
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(buttons, "DRAW_INSTRUCTIONAL_BUTTONS")
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC RENDER_NAG_SCREEN()
CPRINTLN(DEBUG_INTERNET, "RENDER_NAG_SCREEN(",
PICK_STRING(g_eBrosNagReason = NSR_CASH, ", NSR_CASH",
PICK_STRING(g_eBrosNagReason = NSR_DLC, ", NSR_DLC",
PICK_STRING(g_eBrosNagReason = NSR_VOUCHER, ", NSR_VOUCHER", ""))),
")")
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
STRING pHeaderTextLabel
STRING pBodyTextLabel
FE_WARNING_FLAGS iButtonFlagBitfield = FE_WARNING_OKCANCEL
STRING pBodySubTextLabel = NULL
IF (g_eBrosNagReason != NSR_VOUCHER)
IF !g_bBrowserNagScreenState
g_bBrowserNagScreenState = FALSE
g_sTransitionSessionData.sEndReserve.stMPBrowserFromShopSite = lastSiteURL
PREP_BROWSER_BUTTONS(TRUE)
g_bBrowserNagScreenState = TRUE
ENDIF
pHeaderTextLabel = ("BRSCRWTEX") //Alert
IF NOT HAS_ENTERED_OFFLINE_SAVE_FM()
SWITCH g_eBrosNagReason
CASE NSR_CASH pBodyTextLabel = ("BRDISTEX") BREAK //You have insufficient funds. You can add GTA Dollars to your in-game account.
CASE NSR_DLC pBodyTextLabel = ("BRDISDLC") BREAK //You do not own this downloadable content.
ENDSWITCH
pBodySubTextLabel = ("BRSHETEX") //Would you like to visit the Store?
ELSE
SWITCH g_eBrosNagReason
CASE NSR_CASH pBodyTextLabel = ("BRDISTES") BREAK //You have insufficient funds. You will be able to add GTA Dollars when signed into your in-game account.
CASE NSR_DLC pBodyTextLabel = ("BRDISDLC") BREAK //You do not own this downloadable content.
ENDSWITCH
pBodySubTextLabel = ("BRSHETES") //You do not own this downloadable content.
ENDIF
ELSE
IF !g_bBrowserVoucherNagScreenState
g_bBrowserVoucherNagScreenState = FALSE
// g_sTransitionSessionData.sEndReserve.stMPBrowserFromShopSite = lastSiteURL
PREP_BROWSER_BUTTONS(TRUE)
g_bBrowserVoucherNagScreenState = TRUE
ENDIF
pHeaderTextLabel = ("DVSCRWTEX") //Discount Vouchers
SWITCH INT_TO_ENUM(COUPON_TYPE, g_iBrowserGoToStoreItemHash)
CASE COUPON_CASINO_PLANE_SITE pBodyTextLabel = ("DVDISTEX1") BREAK //This purchase will use your discount for Elitas Travel.
CASE COUPON_CASINO_BOAT_SITE pBodyTextLabel = ("DVDISTEX2") BREAK //This purchase will use your discount for Dock Tease.
CASE COUPON_CASINO_CAR_SITE pBodyTextLabel = ("DVDISTEX3") BREAK //This purchase will use your discount for Legendary Motorsport.
CASE COUPON_CASINO_CAR_SITE2 pBodyTextLabel = ("DVDISTEX6") BREAK //This purchase will use your discount for Southern San Andreas Super Autos.
CASE COUPON_CASINO_MIL_SITE pBodyTextLabel = ("DVDISTEX4") BREAK //This purchase will use your discount for Warstock Cache & Carry.
CASE COUPON_CASINO_BIKE_SITE pBodyTextLabel = ("DVDISTEX5") BREAK //This purchase will use your discount for Pedal and Metal.
ENDSWITCH
pBodySubTextLabel = ("DVSHETEX") //Using yout voucher will apply the discount
ENDIF
SET_WARNING_MESSAGE_WITH_HEADER(pHeaderTextLabel, pBodyTextLabel, iButtonFlagBitfield, pBodySubTextLabel)
ENDPROC
SCALEFORM_INDEX siAlert
INT iPropTimer = -1
/// PURPOSE:
/// Holds the screen visible for a second for 1582056
PROC POST_BLOCKING_IS_PROPERTY_OVERWRITE_OK()
IF iPropTimer > 0
iPropTimer -= CEIL(0.0 +@ 1000)
IF NOT HAS_SCALEFORM_MOVIE_LOADED(siAlert)
CASSERTLN(DEBUG_INTERNET, "POST_BLOCKING_IS_PROPERTY_OVERWRITE_OK: scaleform movie siAlert has not loaded")
ELSE
DRAW_SCALEFORM_MOVIE_FULLSCREEN(siAlert,255,255,255,0)
ENDIF
ELSE
IF siAlert != NULL
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(siAlert)
siAlert = NULL
ENDIF
ENDIF
ENDPROC
/// PURPOSE: Get's the last selected office from SCALEFORM_OFFICE_DATA
FUNC INT GET_LAST_CLICKED_OFFICE()
INT iOffice = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 0, 6))
iOffice += PROPERTY_OFFICE_1
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE: ", iOffice)
IF iOffice < PROPERTY_OFFICE_1
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE: iOffice < PROPERTY_OFFICE_1: ")
iOffice = PROPERTY_OFFICE_1
ELIF iOffice > PROPERTY_OFFICE_4
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE: iOffice > PROPERTY_OFFICE_4: ")
iOffice = PROPERTY_OFFICE_4
ENDIF
RETURN iOffice
ENDFUNC
/// PURPOSE: Get's the last selected office from button clicks
INT iLastClickedOffice = 0
FUNC INT GET_CACHED_LAST_CLICKED_OFFICE()
CDEBUG1LN(DEBUG_INTERNET, "GET_CACHED_LAST_CLICKED_OFFICE: ", iLastClickedOffice)
RETURN iLastClickedOffice
ENDFUNC
/// PURPOSE: Get's the last selected Clubhouse from SCALEFORM_CLUBHOUSE_DATA
FUNC INT GET_LAST_CLICKED_CLUBHOUSE()
INT iClubhouse = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iClubhouse += PROPERTY_CLUBHOUSE_1_BASE_A
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_CLUBHOUSE: ", iClubhouse)
IF iClubhouse < PROPERTY_CLUBHOUSE_1_BASE_A
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_CLUBHOUSE: iClubhouse < PROPERTY_CLUBHOUSE_1_BASE_A: ")
iClubhouse = PROPERTY_CLUBHOUSE_1_BASE_A
ELIF iClubhouse > PROPERTY_CLUBHOUSE_12_BASE_B
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_CLUBHOUSE: iClubhouse > PROPERTY_CLUBHOUSE_12_BASE_B: ")
iClubhouse = PROPERTY_CLUBHOUSE_12_BASE_B
ENDIF
RETURN iClubhouse
ENDFUNC
/// PURPOSE: Get's the last selected garage from SCALEFORM_OFFICE_GARAGE_DATA
FUNC INT GET_LAST_CLICKED_OFFICE_GARAGE()
INT iGarage = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 0, 7))
iGarage += PROPERTY_OFFICE_1_GARAGE_LVL1
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE_GARAGE: ", iGarage)
IF iGarage < PROPERTY_OFFICE_1_GARAGE_LVL1
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE_GARAGE: iGarage < PROPERTY_OFFICE_1_GARAGE_LVL1: ")
iGarage = PROPERTY_OFFICE_1_GARAGE_LVL1
ELIF iGarage > PROPERTY_OFFICE_4_GARAGE_LVL3
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_OFFICE_GARAGE: iGarage > PROPERTY_OFFICE_4_GARAGE_LVL3: ")
iGarage = PROPERTY_OFFICE_4_GARAGE_LVL3
ENDIF
RETURN iGarage
ENDFUNC
/// PURPOSE: Get's the last selected BUNKER from SCALEFORM_BUNKER_DATA
FUNC INT GET_LAST_CLICKED_BUNKER()
INT iBunker = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iBunker += ENUM_TO_INT(FACTORY_ID_BUNKER_1)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_BUNKER: ", iBunker)
IF iBunker < ENUM_TO_INT(FACTORY_ID_BUNKER_1)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_BUNKER: iBunker ", iBunker, " < FACTORY_ID_BUNKER_1: ")
iBunker = ENUM_TO_INT(FACTORY_ID_BUNKER_1)
ELIF iBunker > ENUM_TO_INT(FACTORY_ID_BUNKER_12)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_BUNKER: iBunker ", iBunker, " > FACTORY_ID_BUNKER_12: ")
iBunker = ENUM_TO_INT(FACTORY_ID_BUNKER_12)
ENDIF
RETURN iBunker
ENDFUNC
/// PURPOSE: Get's the last selected hangar from SCALEFORM_BUNKER_DATA
FUNC INT GET_LAST_CLICKED_HANGAR()
INT iHangar = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iHangar += ENUM_TO_INT(LSIA_HANGAR_1)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_HANGAR: ", iHangar)
IF iHangar < ENUM_TO_INT(LSIA_HANGAR_1)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_HANGAR: iHangar ", iHangar, " < LSIA_HANGAR_1: ")
iHangar = ENUM_TO_INT(LSIA_HANGAR_1)
ELIF iHangar > ENUM_TO_INT(ZANCUDO_HANGAR_3499)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_HANGAR: iHangar ", iHangar, " > ZANCUDO_HANGAR_3499: ")
iHangar = ENUM_TO_INT(ZANCUDO_HANGAR_3499)
ENDIF
RETURN iHangar
ENDFUNC
/// PURPOSE: Get's the last selected defunct base from SCALEFORM_BUNKER_DATA
FUNC INT GET_LAST_CLICKED_DEFUNCT_BASE()
INT iBase = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iBase += ENUM_TO_INT(DEFUNCT_BASE_1)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_DEFUNCT_BASE: ", iBase)
IF iBase < ENUM_TO_INT(DEFUNCT_BASE_1)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_DEFUNCT_BASE: iBase ", iBase, " < DEFUNCT_BASE_1: ")
iBase = ENUM_TO_INT(DEFUNCT_BASE_1)
ELIF iBase >= ENUM_TO_INT(DEFUNCT_BASE_ID_COUNT)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_DEFUNCT_BASE: iBase ", iBase, " >= DEFUNCT_BASE_ID_COUNT: ")
iBase = ENUM_TO_INT(DEFUNCT_BASE_ID_COUNT)-1
ENDIF
RETURN iBase
ENDFUNC
/// PURPOSE: Get's the last selected nightclub from SCALEFORM_BUNKER_DATA
FUNC INT GET_LAST_CLICKED_NIGHTCLUB()
INT iNightclub = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iNightclub += ENUM_TO_INT(NIGHTCLUB_LA_MESA)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_NIGHTCLUB: ", iNightclub)
IF iNightclub < ENUM_TO_INT(NIGHTCLUB_LA_MESA)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_NIGHTCLUB: iNightclub ", iNightclub, " < NIGHTCLUB_LA_MESA: ")
iNightclub = ENUM_TO_INT(NIGHTCLUB_LA_MESA)
ELIF iNightclub >= ENUM_TO_INT(NIGHTCLUB_ID_COUNT)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_NIGHTCLUB: iBase ", iNightclub, " >= NIGHTCLUB_ID_COUNT: ")
iNightclub = ENUM_TO_INT(NIGHTCLUB_ID_COUNT)-1
ENDIF
RETURN iNightclub
ENDFUNC
//#IF FEATURE_ARENA_WARS
///// PURPOSE: Get's the last selected ARENA_GARAGE from SCALEFORM_BUNKER_DATA
//FUNC INT GET_LAST_CLICKED_ARENA_GARAGE()
// INT iArenaGarage = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 0, 6))
//
// iArenaGarage += ENUM_TO_INT(ARENA_GARAGE_1)
// CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARENA_GARAGE: ", iArenaGarage)
//
// IF iArenaGarage < ENUM_TO_INT(ARENA_GARAGE_1)
// CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARENA_GARAGE: iArenaGarage ", iArenaGarage, " < ARENA_GARAGE_1: ")
// iArenaGarage = ENUM_TO_INT(ARENA_GARAGE_1)
// ELIF iArenaGarage >= ENUM_TO_INT(ARENA_GARAGE_ID_COUNT)
// CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARENA_GARAGE: iArenaGarage ", iArenaGarage, " >= ARENA_GARAGE_ID_COUNT: ")
// iArenaGarage = ENUM_TO_INT(ARENA_GARAGE_ID_COUNT)-1
// ENDIF
//
// RETURN iArenaGarage
//ENDFUNC
//#ENDIF
/// PURPOSE: Get's the last selected Arcade
FUNC INT GET_LAST_CLICKED_ARCADE()
INT iArcade = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6))
iArcade += ENUM_TO_INT(ARCADE_PROPERTY_PALETO_BAY)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARCADE: ", iArcade)
IF iArcade < ENUM_TO_INT(ARCADE_PROPERTY_PALETO_BAY)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARCADE: iArcade ", iArcade, " < ARCADE_PROPERTY_PALETO_BAY: ")
iArcade = ENUM_TO_INT(ARCADE_PROPERTY_PALETO_BAY)
ELIF iArcade >= ENUM_TO_INT(ARCADE_PROPERTY_ID_COUNT)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_ARCADE: iArcade ", iArcade, " >= ARCADE_PROPERTY_ID_COUNT: ")
iArcade = ENUM_TO_INT(ARCADE_PROPERTY_ID_COUNT) - 1
ENDIF
RETURN iArcade
ENDFUNC
/// PURPOSE: Get's the last selected auto shop.
FUNC INT GET_LAST_CLICKED_AUTO_SHOP()
INT iAutoShop = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 3))
iAutoShop += ENUM_TO_INT(AUTO_SHOP_PROPERTY_LA_MESA)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_AUTO_SHOP: ", iAutoShop)
IF iAutoShop < ENUM_TO_INT(AUTO_SHOP_PROPERTY_LA_MESA)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_AUTO_SHOP: iAutoShop ", iAutoShop, " < AUTO_SHOP_PROPERTY_LA_MESA: ")
iAutoShop = ENUM_TO_INT(AUTO_SHOP_PROPERTY_LA_MESA)
ELIF iAutoShop >= ENUM_TO_INT(AUTO_SHOP_PROPERTY_ID_COUNT)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_AUTO_SHOP: iAutoShop ", iAutoShop, " >= AUTO_SHOP_PROPERTY_ID_COUNT: ")
iAutoShop = ENUM_TO_INT(AUTO_SHOP_PROPERTY_ID_COUNT) - 1
ENDIF
RETURN iAutoShop
ENDFUNC
#IF FEATURE_TUNER
/// PURPOSE: Get's the last selected fixer HQ from SCALEFORM_OFFICE_DATA
FUNC INT GET_LAST_CLICKED_FIXER_HQ()
INT iFixerHQ = (GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 0, 6))
iFixerHQ += ENUM_TO_INT(FIXER_HQ_HAWICK)
CDEBUG1LN(DEBUG_INTERNET, "GET_LAST_CLICKED_FIXER_HQ: ", iFixerHQ)
IF iFixerHQ < ENUM_TO_INT(FIXER_HQ_HAWICK)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_FIXER_HQ: iFixerHQ ", iFixerHQ, " < FIXER_HQ_HAWICK: ")
iFixerHQ = ENUM_TO_INT(FIXER_HQ_HAWICK)
ELIF iFixerHQ >= ENUM_TO_INT(FIXER_HQ_ID_COUNT)
CASSERTLN(DEBUG_INTERNET, "GET_LAST_CLICKED_FIXER_HQ: iFixerHQ ", iFixerHQ, " >= FIXER_HQ_ID_COUNT: ")
iFixerHQ = ENUM_TO_INT(FIXER_HQ_ID_COUNT) - 1
ENDIF
RETURN iFixerHQ
ENDFUNC
#ENDIF
PROC GET_SCALEFORM_OFFICE_DATA(INT &iStyle,INT &iPersonnel,INT &iFont,INT &iColour,INT &iGunLocker,INT &iVault,INT &iAccommodation,
INT &iGarage1Style, INT &iGarage1Lighting, INT &iGarage1Number,
INT &iGarage2Style, INT &iGarage2Lighting, INT &iGarage2Number,
INT &iGarage3Style, INT &iGarage3Lighting, INT &iGarage3Number,
INT &iModshop)
iStyle = GET_OFFICE_INTERIOR_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 6, 4))
iPersonnel = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 10, 1)
iFont = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 11, 4)
iColour = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 15, 4)
iGunLocker = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 19, 1)
iVault = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 20, 1)
iAccommodation = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 21, 1)
IF GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 7, 1) = 0
iGarage1Style = -1
iGarage1Lighting = -1
iGarage1Number = -1
ELSE
iGarage1Style = GET_OFFICE_GARAGE_INTERIOR_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 8, 2))
iGarage1Lighting = GET_OFFICE_GARAGE_LIGHTING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 10, 4))
iGarage1Number = GET_OFFICE_GARAGE_NUMBERING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 14, 4))
ENDIF
IF GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 18, 1) = 0
iGarage2Style = -1
iGarage2Lighting = -1
iGarage2Number = -1
ELSE
iGarage2Style = GET_OFFICE_GARAGE_INTERIOR_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 19, 2))
iGarage2Lighting = GET_OFFICE_GARAGE_LIGHTING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 21, 4))
iGarage2Number = GET_OFFICE_GARAGE_NUMBERING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA), 25, 4))
ENDIF
IF GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 7, 1) = 0
iGarage3Style = -1
iGarage3Lighting = -1
iGarage3Number = -1
ELSE
iGarage3Style = GET_OFFICE_GARAGE_INTERIOR_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 8, 2))
iGarage3Lighting = GET_OFFICE_GARAGE_LIGHTING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 10, 4))
iGarage3Number = GET_OFFICE_GARAGE_NUMBERING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 14, 4))
ENDIF
IF GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 18, 1) = 0
iModshop = 0 //-1
ELSE
iModshop = GET_OFFICE_MODSHOP_INTERIOR_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA), 19, 5))
ENDIF
ENDPROC
PROC GET_SCALEFORM_CLUBHOUSE_DATA(INT iProperty, INT &iWall,INT &iHanging,INT &iFurniture,INT &iColourScheme,INT &iFont,INT &iFontColour,INT &iEmblem,INT &iHideSinage,INT &iGunLocker,INT &iGarage)
IF iProperty != -1
iWall = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 1)
iHanging = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 7, 1)
iFurniture = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 8, 1)
iColourScheme = GET_CLUBHOUSE_INTERIOR_FROM_SF(iProperty, GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 9, 4))
iFont = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 13, 4)
iFontColour = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 17, 4)
iEmblem = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 21, 4)
iHideSinage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 25, 1)
iGunLocker = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 26, 1)
iGarage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 27, 1)
ELSE
iWall = -1
iHanging = -1
iFurniture = -1
iColourScheme = -1
iFont = -1
iFontColour = -1
iEmblem = -1
iHideSinage = -1
iGunLocker = -1
iGarage = -1
ENDIF
ENDPROC
PROC GET_SCALEFORM_FACTORY_DATA(INT &iDecor,INT &iAccommodation,INT &iFiringRange,INT &iGunLocker,INT &iTransportation)
iDecor = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 2)
iAccommodation = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 8, 1)
iFiringRange = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 9, 2)
iGunLocker = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 11, 1)
iTransportation = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 12, 2)
ENDPROC
PROC GET_SCALEFORM_HANGAR_DATA(HANGAR_DATA_STRUCT &sData)
sData.iHangarID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6)
sData.iStyle = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 4)
sData.iLighting = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 10, 2)
sData.iFlooring = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 12, 4)
sData.iFurniture = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 16, 2)
sData.iSleepingQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 18, 2)
sData.iWorkshop = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 20, 1)
ENDPROC
PROC GET_SCALEFORM_DEFUNCT_BASE_DATA(DEFUNCT_BASE_DATA_STRUCT &sData)
sData.iBaseID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6)
sData.iStyle = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 4)
sData.iGraphics = GET_DBASE_GRAPHICS_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 10, 4))
sData.iOrbitalWeapon = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 14, 1)
sData.iSecurityRoom = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 15, 1)
sData.iLounge = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 16, 2)
sData.iPersonalQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 18, 2)
sData.iPrivicyGlass = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 20, 1)
ENDPROC
PROC GET_SCALEFORM_NIGHTCLUB_DATA(NIGHTCLUB_DATA_STRUCT &sData)
sData.iNightclubID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6)
sData.iStyle = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 2)
sData.iLighting = GET_NIGHTCLUB_LIGHTING_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 8, 3))
sData.iDancers = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 11,4)
sData.iStorage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 15,3)
sData.iGarage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 18,3)
sData.iNameID = GET_NIGHTCLUB_NAME_FROM_SF(GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 21,4))
sData.iDryIce = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 25,1)
ENDPROC
PROC GET_SCALEFORM_ARENA_GARAGE_DATA(ARENA_GARAGE_DATA_STRUCT &sData)
sData.iStyle = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 0, 2)
sData.iGraphics = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 2, 5)
sData.iColour = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 7, 4)
sData.iExpansionFloorB1 = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 11,5)
sData.iExpansionFloorB2 = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 16,5)
sData.iBennyMechanic = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 21,1)
sData.iWeaponMechanic = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 22,1)
sData.iPersonalQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA), 23,1)
ENDPROC
PROC GET_SCALEFORM_CASINO_APT_DATA(CASINO_APT_DATA_STRUCT &sData)
sData.iColourOption = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 0, 2)
sData.iStyleOption = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 2, 4)
sData.iLounge = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 6, 1)
sData.iBar = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 7, 2)
sData.iDealer = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 9, 1)
sData.iBedroom = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 10,1)
sData.iMediaroom = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 11,1)
sData.iSpa = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 12,1)
sData.iOffice = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 13,1)
sData.iGarage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA), 14,1)
ENDPROC
PROC GET_SCALEFORM_ARCADE_DATA(ARCADE_DATA_STRUCT &sData)
sData.iArcadeID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 6)
sData.iFloor = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 6, 4)
sData.iCeiling = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 10, 2)
sData.iWall = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 12, 4)
sData.iPersonalQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 16, 1)
sData.iGarage = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 17, 1)
sData.iNeonLights = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 18, 4)
sData.iScreens = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 22, 1)
ENDPROC
PROC GET_SCALEFORM_AUTO_SHOP_DATA(AUTO_SHOP_DATA_STRUCT &sData)
sData.iAutoShopID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 0, 3)
sData.iWall = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 3, 4)
sData.iTint = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 7, 4)
sData.iEmblem = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 11, 4)
sData.iCrewName = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 15, 1)
sData.iStaff1 = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 16, 1)
sData.iStaff2 = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 17, 1)
sData.iCarLift = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 18, 1)
sData.iPersonalQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 19, 1)
sData.iCarClubMembership = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 20, 1)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - CALLED")
DEBUG_PRINTCALLSTACK()
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iAutoShopID = ", sData.iAutoShopID)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iWall = ", sData.iWall)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iTint = ", sData.iTint)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iEmblem = ", sData.iEmblem)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iCrewName = ", sData.iCrewName)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iStaff1 = ", sData.iStaff1)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iStaff2 = ", sData.iStaff2)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iCarLift = ", sData.iCarLift)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iPersonalQuarters = ", sData.iPersonalQuarters)
PRINTLN("GET_SCALEFORM_AUTO_SHOP_DATA - sData.iCarClubMembership = ", sData.iCarClubMembership)
ENDPROC
#IF FEATURE_FIXER
PROC GET_SCALEFORM_FIXER_HQ_DATA(FIXER_HQ_DATA_STRUCT &ref_sData)
ref_sData.iAgencyID = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 0, 6)
ref_sData.iArt = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 6, 2)
ref_sData.iWallpaper = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 8, 4)
ref_sData.iTint = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 12, 4)
ref_sData.iVehWorkshop = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 16, 1)
ref_sData.iArmory = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 17, 1)
ref_sData.iPersonalQuarters = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA), 18, 1)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - CALLED")
DEBUG_PRINTCALLSTACK()
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iAgencyID = ", ref_sData.iAgencyID)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iArt = ", ref_sData.iArt)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iWallpaper = ", ref_sData.iWallpaper)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iTint = ", ref_sData.iTint)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iVehWorkshop = ", ref_sData.iVehWorkshop)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iArmory = ", ref_sData.iArmory)
PRINTLN("GET_SCALEFORM_FIXER_HQ_DATA - ref_sData.iPersonalQuarters = ", ref_sData.iPersonalQuarters)
ENDPROC
#ENDIF
FUNC INT GET_GENDER_METRIC_FROM_PERSONEL_INT(INT iPersonnel)
IF iPersonnel = 0 // FEMALE PA
IF GET_ENTITY_MODEL(PLAYER_PED_ID()) = MP_M_FREEMODE_01
RETURN 1 //= female PA, male character
ELSE
RETURN 2 //= female PA, female character
ENDIF
ELSE // MALE PA
IF GET_ENTITY_MODEL(PLAYER_PED_ID()) = MP_M_FREEMODE_01
RETURN 3 //= male PA, male character
ELSE
RETURN 4 //= male PA, female character
ENDIF
ENDIF
ENDFUNC
#IF IS_DEBUG_BUILD
FUNC HUD_COLOURS GET_HUD_COLOUR_COMPARING_OLD_NEW(BOOL iOldMatchesNew)
IF !iOldMatchesNew
RETURN HUD_COLOUR_RED
ENDIF
RETURN HUD_COLOUR_PURE_WHITE
ENDFUNC
#ENDIF
PROC CLOSE_BROWSER_AFTER_SUCCESSFUL_PURCHASE(INT iTimeToExpire = ciAUTO_CLOSE_DELAY_TIME_DEFAULT)
IF NOT HAS_NET_TIMER_STARTED(timerAutoCloseDelay)
START_NET_TIMER(timerAutoCloseDelay)
iAutoCloseDelayTime = iTimeToExpire
CPRINTLN(DEBUG_INTERNET, "CLOSE_BROWSER_AFTER_SUCCESSFUL_PURCHASE timerAutoCloseDelay - Starting auto close delay timer.")
ENDIF
ENDPROC
PROC RENDER_BROWSER(BOOL allowphone = FALSE, BOOL bPropertyVersion = FALSE)//, BOOL forceButtons = FALSE)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_AIM)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_BEHIND)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_BEHIND)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_LEFT)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_RIGHT)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_UP)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_LOOK_DOWN)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_GUN_LEFT)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_GUN_RIGHT)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_GUN_UP)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_GUN_DOWN)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_LOOK_LEFT)
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_VEH_LOOK_RIGHT)
INT iCurrentDelta = ROUND(0 +@ 1000)
g_iBrowserTimer += iCurrentDelta
iCurrentSiteTimer += iCurrentDelta
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
IF !bIDisabledCarRadio
/*
BOOL mpVeto = FALSE
IF g_bInMultiplayer
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF DOES_ENTITY_EXIST(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
IF !NETWORK_HAS_CONTROL_OF_ENTITY(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
mpVeto = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF !mpVeto
IF DOES_PLAYER_VEH_HAVE_RADIO()
IF NOT IS_PLAYER_DEAD(GET_PLAYER_INDEX())
//SET_VEHICLE_RADIO_ENABLED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), FALSE)
START_AUDIO_SCENE("WEB_GENERAL_BROWSING_SCENE")
bIDisabledCarRadio =TRUE
ENDIF
ENDIF
ENDIF
*/
START_AUDIO_SCENE("WEB_GENERAL_BROWSING_SCENE")
bIDisabledCarRadio = TRUE
ENDIF
IF !bIDisabledAptRadio
IF NETWORK_IS_GAME_IN_PROGRESS()
IF IS_PLAYER_IN_MP_PROPERTY(PLAYER_ID(), FALSE)
OR IS_PLAYER_IN_OFFICE_PROPERTY(PLAYER_ID())
OR IS_PLAYER_IN_WAREHOUSE(PLAYER_ID())
START_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
bIDisabledAptRadio = TRUE
ENDIF
ENDIF
ENDIF
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WANTED_STARS)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_1)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_2)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RADIO_STATIONS)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL_STATS)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FEED)
IF g_bInMultiplayer
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) // 1599742
ENDIF
//HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT)
IF g_bInMultiplayer // mp transactions come out of a different pool, makes no sense to show it in sp
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH)
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE)
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)
ENDIF
IF NOT IS_RADAR_HIDDEN()
bIHidRadar = TRUE
DISPLAY_RADAR(FALSE)
ENDIF
DISABLE_SELECTOR_THIS_FRAME()
IF (NOT allowphone)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
ENDIF
IF NOT bProcessingBasket
IF (eSet_mouse_pointer_style = MOUSE_CURSOR_STYLE_ARROW_DIMMED)
CPRINTLN(DEBUG_INTERNET, "RENDER_BROWSER: restore pointer style to non-dimmed [", GET_GAME_TIMER(), "]")
eSet_mouse_pointer_style = INT_TO_ENUM(eMOUSE_POINTER_STYLE, -1)
SET_MOUSE_CURSOR_STYLE(MOUSE_CURSOR_STYLE_ARROW)
BROWSER_SET_CURSOR_STATE("ARROW")
ENDIF
ELSE
IF (eSet_mouse_pointer_style != MOUSE_CURSOR_STYLE_ARROW_DIMMED)
CPRINTLN(DEBUG_INTERNET, "RENDER_BROWSER: set pointer style to dimmed [", GET_GAME_TIMER(), "]")
eSet_mouse_pointer_style = MOUSE_CURSOR_STYLE_ARROW_DIMMED
SET_MOUSE_CURSOR_STYLE(MOUSE_CURSOR_STYLE_ARROW_DIMMED)
BROWSER_SET_CURSOR_STATE("BUSY")
ENDIF
ENDIF
IF DO_CHECK_FOR_RAGDOLL_OR_DEAD()
EXIT
ENDIF
b_SuppressContextHelpNextUpdate = TRUE
DISABLE_ALL_MP_HUD_THIS_FRAME()
IF g_sBrowserHelpMessage.bShow
IF NOT IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
AND NOT IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
PRINT_BROWSER_HELP(g_sBrowserHelpMessage)
bTradeHelpPrinted = TRUE
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
CDEBUG3LN(DEBUG_INTERNET, "PRINT_HELP(\"", g_sBrowserHelpMessage.tl15Tag, "\"), iTutstage:", iTutstage, ", iTutTimer:", iTutTimer, ", g_iBrowserTimer:", g_iBrowserTimer, " //", TO_FLOAT(iTutTimer-g_iBrowserTimer)/1000.0)
ENDIF
IF iTutTimer < g_iBrowserTimer
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT(TRUE)
ENDIF
ENDIF
IF IS_BROWSER_OPEN() AND (NOT bPanicShutdownStart)
DISABLE_CONTROL_ACTIONS_GENERAL()
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
IF NOT HAS_SCALEFORM_MOVIE_LOADED(mov)
IF mov = NULL
mov = REQUEST_SCALEFORM_MOVIE("web_browser")
ELSE
CASSERTLN(DEBUG_INTERNET, "RENDER_BROWSER: scaleform movie mov has not loaded")
ENDIF
ELSE
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,0)
ENDIF
IF !bPropertyVersion
POST_BLOCKING_IS_PROPERTY_OVERWRITE_OK()
ENDIF
IF g_bBrowserGoToStoreTrigger
RENDER_NAG_SCREEN()
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
IF g_bBrowserUserMode
IF bKeyboardHelp OR g_bBrowserNagScreenState OR g_bBrowserVoucherNagScreenState
IF NOT HAS_SCALEFORM_MOVIE_LOADED(buttons)
buttons = REQUEST_SCALEFORM_MOVIE_INSTANCE("INSTRUCTIONAL_BUTTONS")
CERRORLN(DEBUG_INTERNET, "RENDER_BROWSER: scaleform movie buttons has not loaded")
ELIF IS_SCALEFORM_MOVIE_DELETING(buttons)
CERRORLN(DEBUG_INTERNET, "RENDER_BROWSER: scaleform movie buttons is flagged for deletion")
ELIF IS_ACTIVE_SCALEFORM_MOVIE_DELETING(buttons)
CERRORLN(DEBUG_INTERNET, "RENDER_BROWSER: scaleform movie buttons is deleting")
ELSE
DRAW_SCALEFORM_MOVIE_FULLSCREEN(buttons,255,255,255,255)
ENDIF
ENDIF
ENDIF
ENDIF
IF eStaticCurrentSite = WWW_DOCKTEASE_COM
AND HAS_PLAYER_BEEN_ASSIGNED_PRIVATE_YACHT(PLAYER_ID())
CONST_INT iYACHT_D_HOME 19
CONST_INT iYACHT_D_MODEL 20
CONST_INT iYACHT_D_FITTINGS 21
CONST_INT iYACHT_D_COLOUR 22
CONST_INT iYACHT_D_LIGHTING 23
CONST_INT iYACHT_D_FLAG 29
CONST_INT iYACHT_D_PERSONALIZE 24
CONST_INT iYACHT_D_CHECKOUT 25
CONST_INT iYACHT_D_PURCHASE 26
CONST_INT iYACHT_D_PURCHASE_SUCCESS 27
CONST_INT iYACHT_D_PURCHASE_FAILED 28
IF iStaticCurrentPage = iYACHT_D_CHECKOUT
OR iStaticCurrentPage = iYACHT_D_PURCHASE
// OR iStaticCurrentPage = iYACHT_D_PURCHASE_SUCCESS
// OR iStaticCurrentPage = iYACHT_D_PURCHASE_FAILED
IF (iBroadcast_Disable_Recording_Timer < 0)
OR (iBroadcast_Disable_Recording_Timer +4500 < GET_GAME_TIMER())
INT iYachtID = GET_PRIVATE_YACHT_ASSIGNED_TO_PLAYER(PLAYER_ID())
IF IS_PRIVATE_YACHT_ID_VALID(iYachtID)
BROADCAST_DISABLE_RECORDING_FOR_SPHERE(GET_COORDS_OF_PRIVATE_YACHT(iYachtID), 75.0, 300.0, 5000)
iBroadcast_Disable_Recording_Timer = GET_GAME_TIMER()
ELSE
CASSERTLN(DEBUG_INTERNET, "RENDER_BROWSER: invalid yacht ID when trying to disable recording the yacht")
ENDIF
ENDIF
ELSE
IF iBroadcast_Disable_Recording_Timer >= 0
iBroadcast_Disable_Recording_Timer = -1
ENDIF
ENDIF
ELSE
IF iBroadcast_Disable_Recording_Timer >= 0
iBroadcast_Disable_Recording_Timer = -1
ENDIF
ENDIF
BOOL bCleanup_HELP_SPVE = FALSE
IF g_bInMultiplayer
IF (eStaticCurrentSite = WWW_ELITASTRAVEL_COM
OR eStaticCurrentSite = WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
OR eStaticCurrentSite = WWW_LEGENDARYMOTORSPORT_NET
OR eStaticCurrentSite = WWW_DOCKTEASE_COM
OR eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
OR eStaticCurrentSite = WWW_ARENAWAR_TV
OR eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM)
AND (eCursorInputProcessed != UNSET_BUYABLE_VEHICLE
OR (eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM AND iStaticCurrentPage = 1) //Warstock MOC banner
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 13) //Casino Suite dealer button
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 14)
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 8)) //Casino High roller
IF (eCursorInputProcessed != UNSET_BUYABLE_VEHICLE
OR (eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM AND iStaticCurrentPage = 1)
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 13)
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 14)
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 8))
AND NOT bWaitingForSelectionReturn
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_ROLLOVER")
currentRolloverReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
bWaitingForSelectionReturn = TRUE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> currentRolloverReturnIndex not ready... ", NATIVE_TO_INT(currentRolloverReturnIndex))
ELSE
IF bWaitingForSelectionReturn
IF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentRolloverReturnIndex)
bWaitingForSelectionReturn = FALSE
INT iLastHiglightedButton = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentRolloverReturnIndex)
CDEBUG1LN(DEBUG_INTERNET, "<HELP> currentRolloverReturnIndex ready, iLastHiglightedButton: ", iLastHiglightedButton)
IF iLastHiglightedButton != -1
#IF FEATURE_CASINO_HEIST
OR (eCursorInputProcessed = BV_CH_MINITANK AND iStaticCurrentPage = 124)
#ENDIF
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
#IF FEATURE_CASINO_HEIST
IF (eCursorInputProcessed != BV_CH_MINITANK)
OR (iStaticCurrentPage != 124)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("UNLOCK_RCTANK")
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty - UNLOCK_RCTANK displayed")
CLEAR_HELP()
bCleanup_HELP_SPVE = TRUE
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
g_sBrowserHelpMessage.bShow = TRUE
ENDIF
ENDIF
#ENDIF
IF (eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM AND iStaticCurrentPage = 1)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
bCleanup_HELP_SPVE = TRUE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_HACKT0")
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty - HELP_HACKT0 displayed")
CLEAR_HELP()
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_MOC0")
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty - HELP_MOC0 displayed")
CLEAR_HELP()
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_AOC0")
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty - HELP_AOC0 displayed")
CLEAR_HELP()
#IF FEATURE_HEIST_ISLAND
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_KOSA0")
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty - HELP_KOSA0 displayed")
CLEAR_HELP()
#ENDIF
ELSE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", empty")
ENDIF
ELIF NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_HACKT0")
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_MOC0")
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_AOC0")
#IF FEATURE_HEIST_ISLAND
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_KOSA0")
#ENDIF
CLEAR_HELP()
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_MOC0 or HELP_AOC0 or HELP_HACKT0 or HELP_KOSA0")
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
g_sBrowserHelpMessage.bShow = TRUE
ELSE
IF HAS_MP_HACKER_TRUCK_ACCESS()
IF (iLastHiglightedButton = 1)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_HACKT0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_HACKT0")
ELIF (iLastHiglightedButton = 2)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_MOC0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_MOC0")
ELIF (iLastHiglightedButton = 3)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_AOC0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_AOC0")
#IF FEATURE_HEIST_ISLAND
ELIF (iLastHiglightedButton = 0)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_KOSA0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_KOSA0")
#ENDIF
ENDIF
ELSE
IF (iLastHiglightedButton = 0)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_MOC0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_MOC0")
ELIF (iLastHiglightedButton = 1)
AND NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_AOC0")
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page ", iLastHiglightedButton, ", \"", g_sBrowserHelpMessage.tl15Tag, "\" not HELP_AOC0")
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
TEXT_LABEL_15 tl15Tag = ""
BROWSER_HELP_MESSAGE_TYPE_ENUM eTextType = BHMT_STRING
INT iNumToDisplay1 = 0, iNumToDisplay2 = 0
IF IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(eCursorInputProcessed)
AND HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> - vehicle ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " is free for Criminal Enterprise SP")
ELIF (GET_SVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) <= 0
tl15Tag = "HELP_SPVE0a" //In order to purchase this vehicle you must fulfil the following criteria:~n~- Own an Executive Office.~n~- Own a Vehicle Warehouse.~n~- Renovate the Underground Storage Facility in your Vehicle Warehouse.
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0A)
ELIF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_IE_WAREHOUSE) <= 0
tl15Tag = "HELP_SPVE0b" //In order to purchase this vehicle you must fulfil the following criteria:~n~- Own a Vehicle Warehouse.~n~- Renovate the Underground Storage Facility in your Vehicle Warehouse.
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0B)
ELSE
SWITCH iLastHiglightedButton
CASE 1
//
BREAK
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT SVM_IS_SPECIAL_VEHICLE_UNLOCKED(SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(eModel))
tl15Tag = "HELP_SPVE1"
SWITCH eCursorInputProcessed
CASE BV_IE_PHANTOM2 tl15Tag += "a" BREAK
CASE BV_IE_VOLTIC2 tl15Tag += "b" BREAK
CASE BV_IE_DUNE5 tl15Tag += "c" BREAK
CASE BV_IE_BLAZER5 tl15Tag += "d" BREAK
CASE BV_IE_TECHNICAL2 tl15Tag += "e" BREAK
CASE BV_IE_WASTELANDER tl15Tag += "f" BREAK
CASE BV_IE_BOXVILLE5 tl15Tag += "g" BREAK
CASE BV_IE_RUINER2 tl15Tag += "h" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown SVM_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
ENDIF
ELIF (GET_AWS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
BOOL bAddBrowserHelpMessageTag_0, bAddBrowserHelpMessageTag_1
bAddBrowserHelpMessageTag_0 = FALSE
bAddBrowserHelpMessageTag_1 = FALSE
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
IF eCursorInputProcessed = BV_DLC_RATLOADER2
OR eCursorInputProcessed = BV_DLC_SLAMVAN
OR eCursorInputProcessed = BV_AW_IMPALER
SWITCH iLastHiglightedButton
CASE 1
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ELIF eCursorInputProcessed = BV_ST_GARGOYLE
SWITCH iLastHiglightedButton
CASE 2
CASE 3
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
CASE 1
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ELSE
SWITCH iLastHiglightedButton
CASE 8
CASE 9
CASE 10
CASE 11
CASE 12
CASE 13
CASE 14
CASE 15
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
SWITCH iLastHiglightedButton
CASE 1
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
BREAK
CASE WWW_ARENAWAR_TV
IF IS_VEHICLE_AN_ARENA_CONTENDER_VEHICLE(eModel)
//==ARENA READY==
SWITCH iLastHiglightedButton
CASE 2
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 3
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ELSE
//==UPGRADEABLE==
SWITCH iLastHiglightedButton
CASE 4
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 5
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
IF NOT DOES_PLAYER_OWN_AN_ARENA_GARAGE(PLAYER_ID())
IF (bAddBrowserHelpMessageTag_1)
SWITCH eCursorInputProcessed
CASE BV_AW_CERBERUS tl15Tag = "HELP_AWSE2a" BREAK
CASE BV_AW_CERBERUS2 tl15Tag = "HELP_AWSE2a" BREAK
CASE BV_AW_CERBERUS3 tl15Tag = "HELP_AWSE2a" BREAK
CASE BV_DLC_RATLOADER2 tl15Tag = "HELP_AWSE3a" BREAK
CASE BV_DLC_GLENDALE tl15Tag = "HELP_AWSE3b" BREAK
CASE BV_DLC_SLAMVAN tl15Tag = "HELP_AWSE3c" BREAK
CASE BV_MP_DOMINATOR tl15Tag = "HELP_AWSE3d" BREAK
CASE BV_AW_IMPALER tl15Tag = "HELP_AWSE3e" BREAK
CASE BV_AR_ISSI3 tl15Tag = "HELP_AWSE3f" BREAK
CASE BV_ST_GARGOYLE tl15Tag = "HELP_AWSE3g" BREAK
ENDSWITCH
ELIF (bAddBrowserHelpMessageTag_0)
SWITCH eCursorInputProcessed
CASE BV_AW_CERBERUS tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_AW_CERBERUS2 tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_AW_CERBERUS3 tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_DLC_RATLOADER2 tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_DLC_GLENDALE tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_DLC_SLAMVAN tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_MP_DOMINATOR tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_AW_IMPALER tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_AR_ISSI3 tl15Tag = "HELP_AWSE0a" BREAK
CASE BV_ST_GARGOYLE tl15Tag = "HELP_AWSE0a" BREAK
ENDSWITCH
ENDIF
ELSE
IF (bAddBrowserHelpMessageTag_1)
SWITCH eCursorInputProcessed
CASE BV_DLC_RATLOADER2 tl15Tag = "HELP_AWSE3a" BREAK
CASE BV_DLC_GLENDALE tl15Tag = "HELP_AWSE3b" BREAK
CASE BV_DLC_SLAMVAN tl15Tag = "HELP_AWSE3c" BREAK
CASE BV_MP_DOMINATOR tl15Tag = "HELP_AWSE3d" BREAK
CASE BV_AW_IMPALER tl15Tag = "HELP_AWSE3e" BREAK
CASE BV_AR_ISSI3 tl15Tag = "HELP_AWSE3f" BREAK
CASE BV_ST_GARGOYLE tl15Tag = "HELP_AWSE3g" BREAK
ENDSWITCH
ELIF (bAddBrowserHelpMessageTag_0)
IF NOT IS_ARENA_WARS_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_DLC_RATLOADER2 tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_DLC_GLENDALE tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_DLC_SLAMVAN tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_MP_DOMINATOR tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_AW_IMPALER tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_AR_ISSI3 tl15Tag = "HELP_AWSE1a" BREAK
CASE BV_ST_GARGOYLE tl15Tag = "HELP_AWSE1a" BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
IF IS_STRING_NULL_OR_EMPTY(tl15Tag)
bCleanup_HELP_SPVE = TRUE
ENDIF
ELIF (eCursorInputProcessed = BV_AW_RCBANDITO)
IF iLastHiglightedButton = 0
ARENA_GARAGE_ID eArenaID = GET_PLAYERS_OWNED_ARENA_GARAGE(PLAYER_ID())
IF NOT (eArenaID != ARENA_GARAGE_ID_INVALID)
tl15Tag = "HELP_RCBA0a" //In order to purchase this equipment you must fulfil the following criteria:~n~- Own a Bunker.~n~- Set up the Gunrunning Business.~n~- Unlock the Ballistic Equipment via Research.~n~
// bDisplayed_HELP_RCBA0a = TRUE
ELIF NOT IS_RC_BANDITO_UNLOCKED()
tl15Tag = "HELP_RCBA0b" //In order to purchase this equipment you must fulfil the following criteria:~n~- Unlock the Ballistic Equipment via Research.~n~
// bDisplayed_HELP_RCBA0b = TRUE
ENDIF
ENDIF
ELIF (GET_BBS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
BOOL bAddBrowserHelpMessageTag_0, bAddBrowserHelpMessageTag_1
bAddBrowserHelpMessageTag_0 = FALSE
bAddBrowserHelpMessageTag_1 = FALSE
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
IF (eCursorInputProcessed = BV_BB_PBUS2)
SWITCH iLastHiglightedButton
CASE 10
CASE 11
CASE 12
CASE 13
CASE 14
CASE 15
CASE 16
CASE 17
CASE 18
CASE 19
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
CASE 8
CASE 9
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ELSE
SWITCH iLastHiglightedButton
CASE 8
CASE 9
CASE 10
CASE 11
CASE 12
CASE 13
CASE 14
CASE 15
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF (eCursorInputProcessed = BV_BB_BLIMP3)
SWITCH iLastHiglightedButton
CASE 8
CASE 9
CASE 10
CASE 11
CASE 12
CASE 13
CASE 14
CASE 15
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ELSE
SWITCH iLastHiglightedButton
CASE 1
bAddBrowserHelpMessageTag_1 = TRUE
BREAK
CASE 0
bAddBrowserHelpMessageTag_0 = TRUE
BREAK
ENDSWITCH
ENDIF
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown eStaticCurrentSite ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " ")
BREAK
ENDSWITCH
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT DOES_PLAYER_OWN_A_NIGHTCLUB(PLAYER_ID())
AND (eCursorInputProcessed = BV_BB_MULE4
OR eCursorInputProcessed = BV_BB_POUNDER2
OR eCursorInputProcessed = BV_BB_PBUS2
OR eCursorInputProcessed = BV_BB_PATRIOT2
OR eCursorInputProcessed = BV_BB_BLIMP3)
IF (bAddBrowserHelpMessageTag_1)
// skip
ELIF (bAddBrowserHelpMessageTag_0)
IF (eCursorInputProcessed = BV_BB_MULE4)
tl15Tag = "HELP_BBSE1na"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
ELIF (eCursorInputProcessed = BV_BB_POUNDER2)
tl15Tag = "HELP_BBSE1nb"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
ELIF (eCursorInputProcessed = BV_BB_PBUS2)
tl15Tag = "HELP_BBSE1ne"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
ELIF (eCursorInputProcessed = BV_BB_PATRIOT2)
tl15Tag = "HELP_BBSE1nf"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
ELIF (eCursorInputProcessed = BV_BB_BLIMP3)
tl15Tag = "HELP_BBSE1ng"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
ENDIF
ENDIF
ELIF NOT IS_PLAYER_HACKER_TRUCK_PURCHASED(PLAYER_ID())
AND (eCursorInputProcessed = BV_BB_OPPRESSOR2)
IF (bAddBrowserHelpMessageTag_1)
// tl15Tag = "HELP_BBSE0ht"
// bDisplayed_HELP_BBSE0ht = TRUE
ELIF (bAddBrowserHelpMessageTag_0)
IF (eCursorInputProcessed = BV_BB_OPPRESSOR2)
tl15Tag = "HELP_BBSE1hc"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
ENDIF
ENDIF
ELSE
IF (bAddBrowserHelpMessageTag_1)
//
ELIF (bAddBrowserHelpMessageTag_0)
IF NOT IS_BUSINESS_BATTLES_VEHICLE_REWARD_UNLOCKED(eModel)
tl15Tag = "HELP_BBSE1"
SWITCH eCursorInputProcessed
CASE BV_BB_MULE4
tl15Tag += "a"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_POUNDER2
tl15Tag += "b"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_OPPRESSOR2
tl15Tag += "c"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_SCRAMJET
tl15Tag += "d"
// eTextType = BHMT_STRING_WITH_NUMBER
// iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_PBUS2
tl15Tag += "e"
// eTextType = BHMT_STRING_WITH_NUMBER
// iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_PATRIOT2
tl15Tag += "f"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
CASE BV_BB_BLIMP3
tl15Tag += "g"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = GET_MISSION_UNLOCK_COUNT_FROM_BUSINESS_BATTLES_VEHICLE_MODEL(eModel)
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown FDS_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
// #IF FEATURE_BUSINESS_BATTLES
// IF (eCursorInputProcessed = BV_BB_BLIMP3)
// IF IS_STRING_NULL_OR_EMPTY(tl15Tag)
// IF NOT DOES_PLAYER_OWN_A_NIGHTCLUB(PLAYER_ID())
// tl15Tag = "HELP_BLIMP3" //In order to purchase this livery, you must fulfil the following criteria:~n~- Own a Nightclub.~n~
// ENDIF
// ENDIF
// ENDIF
// #ENDIF
ELIF (GET_FDS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
IF NOT DOES_PLAYER_OWN_A_DEFUNCT_BASE(PLAYER_ID())
AND GET_FDS_VEHICLE_SLOT(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1
IF (iLastHiglightedButton = 1)
tl15Tag = "HELP_FDSE0db"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ELIF (iLastHiglightedButton = 0)
IF (eCursorInputProcessed = BV_GO_KHANJALI)
tl15Tag = "HELP_FDSE1dg"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ELIF (eCursorInputProcessed = BV_GO_CHERNOBOG)
tl15Tag = "HELP_FDSE1de"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ELIF (eCursorInputProcessed = BV_GO_RIOT2)
tl15Tag = "HELP_FDSE1dc"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ELIF (eCursorInputProcessed = BV_GO_THRUSTER)
tl15Tag = "HELP_FDSE1di"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ENDIF
ENDIF
ELIF NOT DOES_PLAYER_OWN_A_HANGER(PLAYER_ID())
AND (eCursorInputProcessed = BV_GO_AKULA
OR eCursorInputProcessed = BV_GO_VOLATOL)
IF (iLastHiglightedButton = 1)
tl15Tag = "HELP_FDSE0ha"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
ELIF (iLastHiglightedButton = 0)
IF (eCursorInputProcessed = BV_GO_AKULA)
tl15Tag = "HELP_FDSE1hb"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
ELIF (eCursorInputProcessed = BV_GO_VOLATOL)
tl15Tag = "HELP_FDSE1hh"
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
ENDIF
ENDIF
ELSE
SWITCH iLastHiglightedButton
CASE 1
//
BREAK
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT HAS_PLAYER_UNLOCKED_GANG_OPS_VEHICLE_TRADE_PRICE(eModel)
tl15Tag = "HELP_FDSE1"
SWITCH eCursorInputProcessed
CASE BV_GO_DELUXO tl15Tag += "a" BREAK
CASE BV_GO_AKULA tl15Tag += "b" BREAK
CASE BV_GO_RIOT2 tl15Tag += "c" BREAK
CASE BV_GO_STROMBERG tl15Tag += "d" BREAK
CASE BV_GO_CHERNOBOG tl15Tag += "e" BREAK
CASE BV_GO_BARRAGE tl15Tag += "f" BREAK
CASE BV_GO_KHANJALI tl15Tag += "g" BREAK
CASE BV_GO_VOLATOL tl15Tag += "h" BREAK
CASE BV_GO_THRUSTER tl15Tag += "i" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown FDS_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
ENDIF
#IF FEATURE_CASINO_HEIST
ELIF (GET_CH_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
#IF FEATURE_COPS_N_CROOKS
IF eCursorInputProcessed = BV_CH_KANJO
IF NOT IS_CASINO_HEIST_VEHICLE_REWARD_UNLOCKED(eModel)
OR (IS_CNC_CONTENT_ENABLED() AND NOT IS_CNC_VEHICLE_REWARD_UNLOCKED())
tl15Tag = "HELP_CNCSE1" BREAK
ENDIF
ELSE
#ENDIF
IF NOT IS_CASINO_HEIST_VEHICLE_REWARD_UNLOCKED(eModel)
tl15Tag = "HELP_CHSE1"
SWITCH eCursorInputProcessed
CASE BV_CH_FIRETRUK tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_BURRITO2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_BOXVILLE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_STOCKADE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_ASBO tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_KANJO tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_EVERON tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_RETINUE2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_YOSEMITE2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_SUGOI tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_SULTAN2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_OUTLAW tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_VAGRANT tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_KOMODA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_STRYDER tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_FURIA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_ZHABA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CA_JUGULAR tl15Tag = "HELP_CHSE1" BREAK
CASE BV_GO_SENTINEL3 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CA_GAUNTLET3 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_AR_ELLIE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_BI_DEFILER tl15Tag = "HELP_CHSE1" BREAK
CASE BV_BI_MANCHEZ tl15Tag = "HELP_CHSE1" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown CH_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
#IF FEATURE_COPS_N_CROOKS
ENDIF
#ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
SWITCH iLastHiglightedButton
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_CASINO_HEIST_VEHICLE_REWARD_UNLOCKED(eModel)
tl15Tag = "HELP_CHSE1"
SWITCH eCursorInputProcessed
CASE BV_CH_FIRETRUK tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_BURRITO2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_BOXVILLE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_STOCKADE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_ASBO tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_KANJO tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_EVERON tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_RETINUE2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_YOSEMITE2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_SUGOI tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_SULTAN2 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_OUTLAW tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_VAGRANT tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_KOMODA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_STRYDER tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_FURIA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CH_ZHABA tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CA_JUGULAR tl15Tag = "HELP_CHSE1" BREAK
CASE BV_GO_SENTINEL3 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_CA_GAUNTLET3 tl15Tag = "HELP_CHSE1" BREAK
CASE BV_AR_ELLIE tl15Tag = "HELP_CHSE1" BREAK
CASE BV_BI_DEFILER tl15Tag = "HELP_CHSE1" BREAK
CASE BV_BI_MANCHEZ tl15Tag = "HELP_CHSE1" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown CH_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ELIF (eCursorInputProcessed = BV_CH_MINITANK)
AND (iStaticCurrentPage = 124)
IF g_sMPTunables.bXMAS2019_RC_TANK_PURCHASE
tl15Tag = "UNLOCK_RCTANK"
ENDIF
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF (GET_CNC_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
IF (IS_CNC_CONTENT_ENABLED() AND NOT IS_CNC_VEHICLE_REWARD_UNLOCKED())
tl15Tag = "HELP_CNCSE3"
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
SWITCH iLastHiglightedButton
CASE 0
IF (IS_CNC_CONTENT_ENABLED() AND NOT IS_CNC_VEHICLE_REWARD_UNLOCKED())
tl15Tag = "HELP_CNCSE3"
SWITCH eCursorInputProcessed
CASE BV_CNC_POLICE5 tl15Tag = "HELP_CNCSE2" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown CH_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
#ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF (GET_ISLAND_HEIST_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_ISLAND_HEIST_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_IH_ITALIRSX tl15Tag = "WEB_D_ITALIRSX" BREAK
CASE BV_IH_BRIOSO2 tl15Tag = "WEB_D_BRIOSO2" BREAK
CASE BV_IH_WEEVIL tl15Tag = "WEB_D_WEEVIL" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown CH_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
SWITCH iLastHiglightedButton
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_ISLAND_HEIST_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_IH_ALKONOST tl15Tag = "WEB_D_LAAP" BREAK
CASE BV_IH_ANNIHILATOR2 tl15Tag = "WEB_D_LAAP" BREAK
CASE BV_IH_PATROLBOAT tl15Tag = "WEB_D_LAAP" BREAK
CASE BV_IH_VETIR tl15Tag = "WEB_D_VETIR" BREAK
CASE BV_IH_WINKY tl15Tag = "WEB_D_WINK" BREAK
CASE BV_IH_ITALIRSX tl15Tag = "" BREAK // Handled on WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE BV_IH_BRIOSO2 tl15Tag = "" BREAK // Handled on WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE BV_IH_WEEVIL tl15Tag = "" BREAK // Handled on WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown CH_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_DOCKTEASE_COM
IF eCursorInputProcessed = BV_IH_LONGFIN
tl15Tag = "WEB_D_LAAP"
ENDIF
BREAK
ENDSWITCH
ELIF (GET_TUNER_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_TUNER_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_TU_EUROS tl15Tag = "WEB_D_EUROS" BREAK
CASE BV_TU_TAILGATER2 tl15Tag = "WEB_D_TAIL2" BREAK
DEFAULT
tl15Tag = "WEB_D_RANDOM"
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ELIF (GET_FIXER_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_FIXER_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_AGENCY_BUFFALO4 tl15Tag = "WEB_D_BUFFALO4" BREAK
CASE BV_AGENCY_GRANGER2 tl15Tag = "WEB_D_GRANGER2" BREAK
CASE BV_AGENCY_DEITY tl15Tag = "WEB_D_DEITY" BREAK
CASE BV_AGENCY_PATRIOT3 tl15Tag = "WEB_D_PATRIOT3" BREAK
CASE BV_AGENCY_JUBILEE tl15Tag = "WEB_D_JUBILEE" BREAK
CASE BV_AGENCY_CHAMPION tl15Tag = "WEB_D_CHAMPION" BREAK
CASE BV_AGENCY_BALLER7 tl15Tag = "WEB_D_BALLER7" BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
#IF FEATURE_DLC_1_2022
ELIF (GET_SUMMER_2022_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_ELITASTRAVEL_COM
SWITCH iLastHiglightedButton
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT IS_SUMMER_2022_VEHICLE_REWARD_UNLOCKED(eModel)
SWITCH eCursorInputProcessed
CASE BV_SUM2_KANJOSJ tl15Tag = "WEB_D_RANDOM" BREAK
CASE BV_SUM2_POSTLUDE tl15Tag = "WEB_D_RANDOM" BREAK
CASE BV_SUM2_GREENWOOD tl15Tag = "WEB_D_GRNWOOD" BREAK
CASE BV_SUM2_DRAUGUR
IF g_sMPTunables.iSUM22_CAYO_PERICO_SERIES_DRAUGUR_TRADE_PRICE_COUNT = 1
tl15Tag = "WEB_D_DRAUGUR1"
ELSE
tl15Tag = "WEB_D_DRAUGUR"
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = g_sMPTunables.iSUM22_CAYO_PERICO_SERIES_DRAUGUR_TRADE_PRICE_COUNT
ENDIF
BREAK
CASE BV_SUM2_CONADA tl15Tag = "WEB_D_CONADA" BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
#ENDIF
ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_HEIST_LOCKED(eCursorInputProcessed)
AND !(eCursorInputProcessed = BV_DLC_INSURGENT AND DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018))
BOOL bAddBrowserHelpMessageTag
bAddBrowserHelpMessageTag = FALSE
SWITCH eStaticCurrentSite
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_LEGENDARYMOTORSPORT_NET
SWITCH iLastHiglightedButton
CASE 8
CASE 9
CASE 10
CASE 11
CASE 12
CASE 13
CASE 14
CASE 15
//
BREAK
CASE 0
CASE 1
CASE 2
CASE 3
CASE 4
CASE 5
CASE 6
CASE 7
IF NOT IS_BUYABLE_VEHICLE_UNLOCKED(eCursorInputProcessed)
bAddBrowserHelpMessageTag = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_ELITASTRAVEL_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
SWITCH iLastHiglightedButton
CASE 1
IF (eCursorInputProcessed = BV_DLC_INSURGENT AND g_sMPTunables.bENABLE_INSURGENT_MODSHOP)
OR (eCursorInputProcessed = BV_DLC_TECHNICAL AND g_sMPTunables.bENABLE_TECHNICAL_MODSHOP)
tl15Tag = "HELP_PEGMOD1"
ENDIF
BREAK
CASE 0
IF IS_BUYABLE_VEHICLE_UNLOCKED(eCursorInputProcessed)
IF (eCursorInputProcessed = BV_DLC_INSURGENT AND g_sMPTunables.bENABLE_INSURGENT_MODSHOP)
OR (eCursorInputProcessed = BV_DLC_TECHNICAL AND g_sMPTunables.bENABLE_TECHNICAL_MODSHOP)
tl15Tag = "HELP_PEGMOD1"
ENDIF
ELSE
bAddBrowserHelpMessageTag = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown eStaticCurrentSite ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " ")
BREAK
ENDSWITCH
IF bAddBrowserHelpMessageTag
SWITCH eCursorInputProcessed
CASE BV_DLC_VALKYRIE tl15Tag = "PHLO_HL_FINALE" BREAK
CASE BV_DLC_HYDRA tl15Tag = "PHLO_HL_EMP" BREAK
CASE BV_DLC_SAVAGE tl15Tag = "PHLO_PS_CONVOY" BREAK
// CASE BV_DLC_ENDURO tl15Tag = "" BREAK
CASE BV_DLC_BOXVILLE4 tl15Tag = "PHLO_PS_VANS" BREAK
CASE BV_DLC_CASCO tl15Tag = "PHLO_PB_STATION" BREAK
CASE BV_DLC_DINGHY3 tl15Tag = "PHLO_HL_FINALE" BREAK
CASE BV_DLC_GBURRITO2 tl15Tag = "PHLO_PS_HACK" BREAK
// CASE BV_DLC_GUARDIAN tl15Tag = "" BREAK
CASE BV_DLC_INSURGENT tl15Tag = "PHLO_HL_FINALE" BREAK
CASE BV_DLC_INSURGENT2 tl15Tag = "PHLO_HL_FINALE" BREAK
CASE BV_DLC_MULE3 tl15Tag = "PHLO_SA_FINALE" BREAK
CASE BV_DLC_KURUMA tl15Tag = "PHLO_TUT_FINALE" BREAK
CASE BV_DLC_KURUMA2 tl15Tag = "PHLO_TUT_FINALE" BREAK
CASE BV_DLC_LECTRO tl15Tag = "PHLO_PS_FINALE2" BREAK
CASE BV_DLC_PBUS tl15Tag = "PHLO_PB_FINALE" BREAK
CASE BV_DLC_TECHNICAL tl15Tag = "PHLO_SA_FINALE" BREAK
CASE BV_DLC_VELUM2 tl15Tag = "PHLO_PB_FINALE" BREAK
DEFAULT
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown PHLO_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
ELIF (eCursorInputProcessed = BV_DLC_BALLISTIC_EQUIPMENT)
FACTORY_ID eFactoryID = GET_OWNED_BUNKER(PLAYER_ID())
IF NOT (eFactoryID != FACTORY_ID_INVALID)
tl15Tag = "HELP_BAEQ0a" //In order to purchase this equipment you must fulfil the following criteria:~n~- Own a Bunker.~n~- Set up the Gunrunning Business.~n~- Unlock the Ballistic Equipment via Research.~n~
// bDisplayed_HELP_BAEQ0a = TRUE
ELIF NOT HAS_PLAYER_COMPLETED_FACTORY_SETUP_MISSION(PLAYER_ID(), eFactoryID)
tl15Tag = "HELP_BAEQ0b" //In order to purchase this equipment you must fulfil the following criteria:~n~- Set up the Gunrunning Business.~n~- Unlock the Ballistic Equipment via Research.~n~
// bDisplayed_HELP_BAEQ0b = TRUE
ELIF NOT IS_BALLISTIC_EQUIPMENT_UNLOCKED()
tl15Tag = "HELP_BAEQ0c" //In order to purchase this equipment you must fulfil the following criteria:~n~- Unlock the Ballistic Equipment via Research.~n~
// bDisplayed_HELP_BAEQ0c = TRUE
ENDIF
ELIF (GET_WVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) != -1)
IF !HAS_PLAYER_COMPLETED_INITIAL_AMBIENT_TUTORIALS(PLAYER_ID())
AND (eCursorInputProcessed = BV_GR_TRAILERSMALL2)
tl15Tag = "PM_INF_QMF4"
ELSE
SWITCH iLastHiglightedButton
CASE 1
//
BREAK
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
BOOL bLocked
bLocked = FALSE
IF NOT DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID())
tl15Tag = "HELP_WEVE0" //In order to purchase this vehicle at the Trade Price, you must fulfil the following criteria:~n~- Own a Bunker.~n~- Own the Truck Property.~n~- Complete the <MISSION NAME> mission.~n~
bLocked = TRUE
ELIF NOT IS_GUNRUNNING_TRUCK_PURCHASED()
tl15Tag = "HELP_WEVE1" //In order to purchase this vehicle at the Trade Price, you must fulfil the following criteria:~n~- Own the Truck Property.~n~- Complete the <MISSION NAME> mission.~n~
bLocked = TRUE
ELIF NOT WVM_IS_SPECIAL_VEHICLE_UNLOCKED(WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(eModel))
tl15Tag = "HELP_WEVE2"
bLocked = TRUE
ENDIF
IF bLocked
SWITCH eCursorInputProcessed
CASE BV_GR_APC tl15Tag += "a" BREAK
CASE BV_GR_DUNE3 tl15Tag += "b" BREAK
CASE BV_GR_HALFTRACK tl15Tag += "c" BREAK
CASE BV_GR_OPPRESSOR tl15Tag += "d" BREAK
CASE BV_GR_TAMPA3 tl15Tag += "e" BREAK
CASE BV_GR_TRAILERSMALL2 tl15Tag += "f" BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown WVM_VEHICLE eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
ENDIF
ELIF (eCursorInputProcessed = BV_AR_SEASPARROW)
SWITCH iLastHiglightedButton
CASE 1
//
BREAK
CASE 0
IF NOT DOES_PLAYER_OWN_A_HANGER(PLAYER_ID())
tl15Tag = "HELP_SEAS0" //In order to purchase this vehicle at the Trade Price, you must fulfil the following criteria:~n~- Own a Hangar.~n~- Complete ~1~ smuggler missions.~n~
ENDIF
BREAK
ENDSWITCH
ELIF (WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)) > 0)
SWITCH iLastHiglightedButton
CASE 1
//
BREAK
CASE 0
MODEL_NAMES eModel
eModel = GET_MODEL_FOR_BUYABLE_VEHICLE(eCursorInputProcessed)
IF NOT DOES_PLAYER_OWN_A_HANGER(PLAYER_ID())
tl15Tag = "HELP_WEAI0" //In order to purchase this vehicle at the Trade Price, you must fulfil the following criteria:~n~- Own a Hangar.~n~- Complete ~1~ smuggler missions.~n~
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(eModel)
ELIF NOT WAM_IS_SPECIAL_VEHICLE_UNLOCKED(eModel)
tl15Tag = "HELP_WEAI1" //In order to purchase this vehicle at the Trade Price, you must fulfil the following criteria:~n~- Complete ~1~ smuggler missions.~n~
eTextType = BHMT_STRING_WITH_NUMBER
iNumToDisplay1 = WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(eModel)
ENDIF
BREAK
ENDSWITCH
ELIF (eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM AND iStaticCurrentPage = 1)
IF HAS_MP_HACKER_TRUCK_ACCESS()
IF (iLastHiglightedButton = 1) //BV_DLC_HACKER_TRUCK
IF NOT DOES_PLAYER_OWN_A_BUSINESS_HUB(PLAYER_ID())
tl15Tag = "HELP_HACKT0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " bunker owned")
ENDIF
ELIF (iLastHiglightedButton = 2) //BV_DLC_BIG_TRUCK
IF NOT DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID())
tl15Tag = "HELP_MOC0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " bunker owned")
ENDIF
ELIF (iLastHiglightedButton = 3) //BV_DLC_BIG_PLANE
IF NOT DOES_PLAYER_OWN_A_DEFUNCT_BASE(PLAYER_ID())
tl15Tag = "HELP_AOC0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " defunct base owned")
ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF (iLastHiglightedButton = 0) //BV_IH_KOSATKA
IF NOT HAS_CASINO_NIGHTCLUB_INTRO_SCENE_BEEN_VIEWED()
tl15Tag = "HELP_KOSA0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " watched cutscene")
ENDIF
#ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " not interesting")
ENDIF
ELSE
IF (iLastHiglightedButton = 0) //BV_DLC_BIG_TRUCK
IF NOT DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID())
tl15Tag = "HELP_MOC0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " bunker owned")
ENDIF
ELIF (iLastHiglightedButton = 1) //BV_DLC_BIG_PLANE
IF NOT DOES_PLAYER_OWN_A_DEFUNCT_BASE(PLAYER_ID())
tl15Tag = "HELP_AOC0"
ELSE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " defunct base owned")
ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> warstock home page, iLastHiglightedButton ", iLastHiglightedButton, " not interesting")
ENDIF
ENDIF
ELIF (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 13)
OR (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 8)
IF (iLastHiglightedButton = 11 AND iStaticCurrentPage = 13)
OR (iLastHiglightedButton = 5 AND iStaticCurrentPage = 8)
INT iBlackjackReason, i3CardPokerReason
IF IS_PLAYER_BLOCKED_FROM_CASINO_GAME(CG_BLACKJACK, iBlackjackReason)
OR IS_PLAYER_BLOCKED_FROM_CASINO_GAME(CG_3CARDPOKER , i3CardPokerReason)
tl15Tag = "HELP_CASWEB_2"
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> casino suite options page, iLastHiglightedButton ", iLastHiglightedButton, " card games not blocked")
ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> casino suite options page, iLastHiglightedButton ", iLastHiglightedButton, " not interesting")
ENDIF
ELIF (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM AND iStaticCurrentPage = 14)
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME)
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME)
ENDIF
ENDIF
IF NOT IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME)
IF (iLastHiglightedButton = 4)
IF IS_GAMBLING_APPROVED_REGION()
tl15Tag = "HELP_CASWEB_0"
ELSE
tl15Tag = "HELP_CASWEB_0B"
ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> casino summary page, iLastHiglightedButton ", iLastHiglightedButton, " not interesting")
ENDIF
ENDIF
ELSE
CASSERTLN(DEBUG_INTERNET, "<HELP> - unknown eCursorInputProcessed ", GET_LABEL_BUYABLE_VEHICLE(eCursorInputProcessed), " ")
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(tl15Tag)
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT(tl15Tag,eTextType,TRUE,iNumToDisplay1,iNumToDisplay2)
iTutTimer = g_iBrowserTimer + 7500
CPRINTLN(DEBUG_INTERNET, "<HELP> - display ", g_sBrowserHelpMessage.tl15Tag, " ")
bWaitingForSelectionReturn = FALSE
ELSE
CERRORLN(DEBUG_INTERNET, "<HELP> - empty g_sBrowserHelpMessage.tl15Tag")
ENDIF
ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
CDEBUG1LN(DEBUG_INTERNET, "<HELP> currentRolloverReturnIndex ready, iLastHiglightedButton: ", iLastHiglightedButton, " - reset")
bWaitingForSelectionReturn = FALSE
ENDIF
ELSE
CDEBUG3LN(DEBUG_INTERNET, "<HELP> currentRolloverReturnIndex still not ready... ", NATIVE_TO_INT(currentRolloverReturnIndex))
// bWaitingForSelectionReturn = FALSE
ENDIF
IF bWaitingForSelectionReturn
IF bDPadUp
OR bDPadDown
OR bDPadLeft
OR bDPadRight
CDEBUG1LN(DEBUG_INTERNET, "<HELP> change DPAD")
bWaitingForSelectionReturn = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
#IF FEATURE_CASINO_HEIST
ELIF (eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM)
AND iStaticCurrentPage = 2
AND CAN_PLAYER_PURCHASE_ARCADE()
bCleanup_HELP_SPVE = TRUE
IF NOT g_bBrowser_ARCADEHELP_seen
IF DOES_LOCAL_PLAYER_STAT_OWN_ARCADE()
CPRINTLN(DEBUG_INTERNET, "<HELP> - display ARCADEHELP (iStaticCurrentPage: ", iStaticCurrentPage, "), already owns Arcade")
g_bBrowser_ARCADEHELP_seen = TRUE
ELSE
CPRINTLN(DEBUG_INTERNET, "<HELP> - display ARCADEHELP (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("ARCADEHELP", DEFAULT, FALSE)
iTutTimer = g_iBrowserTimer + 7500
g_bBrowser_ARCADEHELP_seen = TRUE
ENDIF
ENDIF
#ENDIF
ELSE
bCleanup_HELP_SPVE = TRUE
ENDIF
IF bCleanup_HELP_SPVE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_PASSIVE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHRE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHSC")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHX17")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "MBANKHELP")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBSTY")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBLIG")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBDAN")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBICE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_AWSE0h")
OR (ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_CASWEB_0") AND IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME))
OR (ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_CASWEB_0B") AND IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME))
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHCH")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "ARCADEHELP")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "ARC_OPTIONS")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_ASHOPSTY")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_ASHOPTNT")
#IF FEATURE_DLC_1_2022
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_BKRCLNT")
#ENDIF
bCleanup_HELP_SPVE = FALSE
ENDIF
ENDIF
IF bCleanup_HELP_SPVE
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear \"", g_sBrowserHelpMessage.tl15Tag, "\"")
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
g_sBrowserHelpMessage.bShow = TRUE
CLEAR_HELP()
ENDIF
IF (currentRolloverReturnIndex != NULL)
AND (bWaitingForSelectionReturn != FALSE)
CPRINTLN(DEBUG_INTERNET, "<HELP> - reset currentRolloverReturnIndex ", NATIVE_TO_INT(currentRolloverReturnIndex), ", bWaitingForSelectionReturn ", GET_STRING_FROM_BOOL(bWaitingForSelectionReturn))
currentRolloverReturnIndex = NULL
bWaitingForSelectionReturn = FALSE
ENDIF
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF bDrawDebugStuff
IF NOT bSetDebugLinesAndSpheresDrawingActive
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
bSetDebugLinesAndSpheresDrawingActive = TRUE
ENDIF
VECTOR vOffsetBase = <<0.3,0.2,0>>, vOffsetMult = <<0.0,0.010,0>>, vColumnMult = <<0.2,0.0,0>>
IF USE_SERVER_TRANSACTIONS()
vOffsetBase = <<0.3,0.2,0>>*0.75
vOffsetMult = <<0.0,0.0175,0>>
ENDIF
INT iStrOffset = 0, iColumn = 0
INT iRed, iGreen, iBlue, iAlpha
TEXT_LABEL_63 str = ""
str = "site:"
str += GET_WEBSITE_FROM_INDEX(eStaticCurrentSite)
IF eStaticLastSite != eStaticCurrentSite
str += ", last:"
str += GET_WEBSITE_FROM_INDEX(eStaticLastSite)
ENDIF
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "page:"
str += iStaticLastPage
str += ", current:"
str += iStaticCurrentPage
str += ", history:"
str += iStaticHistory
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "last selected index:"
str += g_iLastSelectedWebIndex
str += ", colour:"
str += ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)
IF iTVOnTimeoutFrameCount != -1
INT iGameTime = GET_FRAME_COUNT()
str += ", TVTime F:"
str += iTVOnTimeoutFrameCount-iGameTime
ENDIF
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
IF eStaticCurrentSite = WWW_DOCKTEASE_COM
str = "iMod:"
str += g_sYachtDataStruct.iMod
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFixture:"
str += g_sYachtDataStruct.iFixture
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iLighting:"
str += g_sYachtDataStruct.iLighting
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iColour:"
str += g_sYachtDataStruct.iColour
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFlag:"
str += g_sYachtDataStruct.iFlag
str += " "
str += GET_MODEL_NAME_FOR_DEBUG(MODEL_NAME_FOR_YACHT_FLAG(g_sYachtDataStruct.iFlag))
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63Name:\""
str += g_sYachtDataStruct.tl63Name
str += "\" -> \""
str += g_sYachtDataStruct.tl63NewName
IF ARE_STRINGS_EQUAL(g_sYachtDataStruct.tl63Name, g_sYachtDataStruct.tl63NewName)
str += "\" same"
ELSE
str += "\" DIFF"
ENDIF
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iYachtNameID:"
str += g_sYachtDataStruct.iYachtNameID
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
ELIF eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM
str = "Cached Last Clocked Office:"
str += GET_CACHED_LAST_CLICKED_OFFICE()
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
str = "iOfficeID:"
str += g_sOfficeDataStruct.iOfficeID
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
TEXT_LABEL tlStyle = "PM_OFF_VAR_"
tlStyle += g_sOfficeDataStruct.iStyle
str = "iStyle:"
str += g_sOfficeDataStruct.iStyle
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlStyle)
str += "\""
str += PICK_STRING(g_sOfficeDataStruct.iStyle = iStyle, " == ", " != ")
str += iStyle
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iStyle = iStyle), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iPersonnel:"
str += g_sOfficeDataStruct.iPersonnel
str += PICK_STRING(g_sOfficeDataStruct.iPersonnel = iPersonnel, " == ", " != ")
str += iPersonnel
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iPersonnel = iPersonnel), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFont:"
str += g_sOfficeDataStruct.iFont
str += PICK_STRING(g_sOfficeDataStruct.iFont = iFont, " == ", " != ")
str += iFont
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iFont = iFont), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iColour:"
str += g_sOfficeDataStruct.iColour
str += PICK_STRING(g_sOfficeDataStruct.iColour = iColour, " == ", " != ")
str += iColour
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iColour = iColour), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63OldOrgName:\""
str += g_sOfficeDataStruct.tl63OldOrgName
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63NewOrgName:\""
str += g_sOfficeDataStruct.tl63NewOrgName
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGunLocker:"
str += g_sOfficeDataStruct.iGunLocker
str += PICK_STRING(g_sOfficeDataStruct.iGunLocker = iGunLocker, " == ", " != ")
str += iGunLocker
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGunLocker = iGunLocker), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iVault:"
str += g_sOfficeDataStruct.iVault
str += PICK_STRING(g_sOfficeDataStruct.iVault = iVault, " == ", " != ")
str += iVault
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iVault = iVault), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iAccommodation:"
str += g_sOfficeDataStruct.iAccommodation
str += PICK_STRING(g_sOfficeDataStruct.iAccommodation = iAccommodation, " == ", " != ")
str += iAccommodation
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iAccommodation = iAccommodation), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iOfficeNameID:"
str += g_sOfficeDataStruct.iOfficeNameID
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGarage1Style:"
str += g_sOfficeDataStruct.iGarage1Style
str += PICK_STRING(g_sOfficeDataStruct.iGarage1Style = iGarage1Style, " == ", " != ")
str += iGarage1Style
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage1Style = iGarage1Style), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage1Lighting:"
str += g_sOfficeDataStruct.iGarage1Lighting
str += PICK_STRING(g_sOfficeDataStruct.iGarage1Lighting = iGarage1Lighting, " == ", " != ")
str += iGarage1Lighting
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage1Lighting = iGarage1Lighting), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage1Numb:"
str += g_sOfficeDataStruct.iGarage1Number
str += PICK_STRING(g_sOfficeDataStruct.iGarage1Number = iGarage1Number, " == ", " != ")
str += iGarage1Number
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage1Number = iGarage1Number), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGarage2Style:"
str += g_sOfficeDataStruct.iGarage2Style
str += PICK_STRING(g_sOfficeDataStruct.iGarage2Style = iGarage2Style, " == ", " != ")
str += iGarage2Style
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage2Style = iGarage2Style), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage2Lighting:"
str += g_sOfficeDataStruct.iGarage2Lighting
str += PICK_STRING(g_sOfficeDataStruct.iGarage2Lighting = iGarage2Lighting, " == ", " != ")
str += iGarage2Lighting
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage2Lighting = iGarage2Lighting), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage2Numb:"
str += g_sOfficeDataStruct.iGarage2Number
str += PICK_STRING(g_sOfficeDataStruct.iGarage2Number = iGarage2Number, " == ", " != ")
str += iGarage2Number
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage2Number = iGarage2Number), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGarage3Style:"
str += g_sOfficeDataStruct.iGarage3Style
str += PICK_STRING(g_sOfficeDataStruct.iGarage3Style = iGarage3Style, " == ", " != ")
str += iGarage3Style
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage3Style = iGarage3Style), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage3Lighting:"
str += g_sOfficeDataStruct.iGarage3Lighting
str += PICK_STRING(g_sOfficeDataStruct.iGarage3Lighting = iGarage3Lighting, " == ", " != ")
str += iGarage3Lighting
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage3Lighting = iGarage3Lighting), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = " iGarage3Numb:"
str += g_sOfficeDataStruct.iGarage3Number
str += PICK_STRING(g_sOfficeDataStruct.iGarage3Number = iGarage3Number, " == ", " != ")
str += iGarage3Number
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iGarage3Number = iGarage3Number), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iModshop:"
str += g_sOfficeDataStruct.iModshop
str += PICK_STRING(g_sOfficeDataStruct.iModshop = iModshop, " == ", " != ")
str += iModshop
str += " {stat:"
str += GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP)
str += "}"
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sOfficeDataStruct.iModshop = iModshop), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
// ----- FIXER HQ -----
#IF FEATURE_FIXER
str = "Last Clicked Fixer HQ:"
str += GET_LAST_CLICKED_FIXER_HQ()
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
FIXER_HQ_DATA_STRUCT sData
GET_SCALEFORM_FIXER_HQ_DATA(sData)
str = "iArt:"
str += g_sFixerHQDataStruct.iArt
str += PICK_STRING(g_sFixerHQDataStruct.iArt = sData.iArt, " == ", " != ")
str += sData.iArt
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iArt = sData.iArt), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iWallpaper:"
str += g_sFixerHQDataStruct.iWallpaper
str += PICK_STRING(g_sFixerHQDataStruct.iWallpaper = sData.iWallpaper, " == ", " != ")
str += sData.iWallpaper
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iWallpaper = sData.iWallpaper), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iTint:"
str += g_sFixerHQDataStruct.iTint
str += PICK_STRING(g_sFixerHQDataStruct.iTint = sData.iTint, " == ", " != ")
str += sData.iTint
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iTint = sData.iTint), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iVehWorkshop:"
str += g_sFixerHQDataStruct.iVehWorkshop
str += PICK_STRING(g_sFixerHQDataStruct.iVehWorkshop = sData.iVehWorkshop, " == ", " != ")
str += sData.iVehWorkshop
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iVehWorkshop = sData.iVehWorkshop), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iArmory:"
str += g_sFixerHQDataStruct.iArmory
str += PICK_STRING(g_sFixerHQDataStruct.iArmory = sData.iArmory, " == ", " != ")
str += sData.iArmory
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iArmory = sData.iArmory), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iPersonalQuarters:"
str += g_sFixerHQDataStruct.iPersonalQuarters
str += PICK_STRING(g_sFixerHQDataStruct.iPersonalQuarters = sData.iPersonalQuarters, " == ", " != ")
str += sData.iPersonalQuarters
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sFixerHQDataStruct.iPersonalQuarters = sData.iPersonalQuarters), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
#ENDIF
ELIF eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM
TEXT_LABEL_31 tlModName
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(g_sClubhouseDataStruct.iClubhouseID, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
tlModName = GET_PROPERTY_NAME(g_sClubhouseDataStruct.iClubhouseID)
str = "iClubhouseID:"
str += g_sClubhouseDataStruct.iClubhouseID
str += " \""
str += tlModName
str += "\""
INT iClubhouseIDStrOffset = iStrOffset
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FC_WALL_"
tlModName += g_sClubhouseDataStruct.iWall
str = "iWall:"
str += g_sClubhouseDataStruct.iWall
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
str += PICK_STRING(g_sClubhouseDataStruct.iWall = iWall, " == ", " != ")
str += iWall
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iWall = iWall), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FC_HANGING_"
tlModName += g_sClubhouseDataStruct.iWall
str = "iHanging:"
str += g_sClubhouseDataStruct.iHanging
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
str += PICK_STRING(g_sClubhouseDataStruct.iHanging = iHanging, " == ", " != ")
str += iHanging
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iHanging = iHanging), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FC_FURNITURE_"
tlModName += g_sClubhouseDataStruct.iFurniture
str = "iFurniture:"
str += g_sClubhouseDataStruct.iFurniture
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
str += PICK_STRING(g_sClubhouseDataStruct.iFurniture = iFurniture, " == ", " != ")
str += iFurniture
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iFurniture = iFurniture), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_PROPERTY_INTERIOR_NAME(g_sClubhouseDataStruct.iColourScheme, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE))
str = "iColourScheme:"
str += g_sClubhouseDataStruct.iColourScheme
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
str += PICK_STRING(g_sClubhouseDataStruct.iColourScheme = iColourScheme, " == ", " != ")
str += iColourScheme
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iColourScheme = iColourScheme), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFont:"
str += g_sClubhouseDataStruct.iFont
str += PICK_STRING(g_sClubhouseDataStruct.iFont = iFont, " == ", " != ")
str += iFont
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iFont = iFont), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFontColour:"
str += g_sClubhouseDataStruct.iFontColour
str += PICK_STRING(g_sClubhouseDataStruct.iFontColour = iFontColour, " == ", " != ")
str += iFontColour
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iFontColour = iFontColour), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iEmblem:"
str += g_sClubhouseDataStruct.iEmblem
str += PICK_STRING(g_sClubhouseDataStruct.iEmblem = iEmblem, " == ", " != ")
str += iEmblem
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iEmblem = iEmblem), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iHideSinage:"
str += g_sClubhouseDataStruct.iHideSinage
str += PICK_STRING(g_sClubhouseDataStruct.iHideSinage = iHideSinage, " == ", " != ")
str += iHideSinage
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iHideSinage = iHideSinage), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63OldOrgName:\""
str += g_sClubhouseDataStruct.tl63OldSignage
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63NewOrgName:\""
str += g_sClubhouseDataStruct.tl63NewSignage
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGunLocker:"
str += g_sClubhouseDataStruct.iGunLocker
str += PICK_STRING(g_sClubhouseDataStruct.iGunLocker = iGunLocker, " == ", " != ")
str += iGunLocker
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iGunLocker = iGunLocker), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGarage:"
str += g_sClubhouseDataStruct.iGarage
str += PICK_STRING(g_sClubhouseDataStruct.iGarage = iGarage, " == ", " != ")
str += iGarage
GET_HUD_COLOUR(GET_HUD_COLOUR_COMPARING_OLD_NEW(g_sClubhouseDataStruct.iGarage = iGarage), iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63CrewEmblem:\""
str += g_sClubhouseDataStruct.tl63CrewEmblem
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iClubhouseNameID:"
str += g_sClubhouseDataStruct.iClubhouseNameID
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_FACTORY_NAME_FROM_ID(INT_TO_ENUM(FACTORY_ID, g_sBunkerDataStruct.iBunkerID))
str = "iBunkerID:"
str += g_sBunkerDataStruct.iBunkerID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iDecor:"
str += g_sBunkerDataStruct.iDecor
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iAccommodation:"
str += g_sBunkerDataStruct.iAccommodation
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iFiringRange:"
str += g_sBunkerDataStruct.iFiringRange
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGunLocker:"
str += g_sBunkerDataStruct.iGunLocker
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iTransportation:"
str += g_sBunkerDataStruct.iTransportation
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_HANGAR_NAME_FROM_ID(INT_TO_ENUM(HANGAR_ID, g_sHangarDataStruct.iHangarID))
str = "iHangarID:"
str += g_sHangarDataStruct.iHangarID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FCHNGR_STY_"
tlModName += (g_sHangarDataStruct.iStyle+1)
str = "iStyle:"
str += g_sHangarDataStruct.iStyle
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FCHNGR_LGT_"
tlModName += (g_sHangarDataStruct.iLighting+1)
str = "iLighting:"
str += g_sHangarDataStruct.iLighting
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FCHNGR_FLR_"
tlModName += (g_sHangarDataStruct.iFlooring+1)
str = "iFlooring:"
str += g_sHangarDataStruct.iFlooring
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FCHNGR_FRN_"
tlModName += (g_sHangarDataStruct.iFurniture+1)
str = "iFurniture:"
str += g_sHangarDataStruct.iFurniture
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = "FCHNGR_FRN_"
tlModName += (g_sHangarDataStruct.iSleepingQuarters+1)
str = "iSleepingQuarters:"
str += g_sHangarDataStruct.iSleepingQuarters
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iWorkshop:"
str += g_sHangarDataStruct.iWorkshop
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_DEFUNCT_BASE_NAME_FROM_ID(INT_TO_ENUM(DEFUNCT_BASE_ID, g_sDefunctBaseDataStruct.iBaseID))
str = "iBaseID:"
str += g_sDefunctBaseDataStruct.iBaseID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, g_sDefunctBaseDataStruct.iStyle)
str = "iStyle:"
str += g_sDefunctBaseDataStruct.iStyle
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(g_sDefunctBaseDataStruct.iGraphics))
str = "iGraphics:"
str += g_sDefunctBaseDataStruct.iGraphics
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, g_sDefunctBaseDataStruct.iOrbitalWeapon)
str = "iOrbitalWeapon:"
str += g_sDefunctBaseDataStruct.iOrbitalWeapon
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, g_sDefunctBaseDataStruct.iSecurityRoom)
str = "iSecurityRoom:"
str += g_sDefunctBaseDataStruct.iSecurityRoom
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, g_sDefunctBaseDataStruct.iLounge)
str = "iLounge:"
str += g_sDefunctBaseDataStruct.iLounge
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, g_sDefunctBaseDataStruct.iPrivicyGlass)
str = "iPrivicyGlass:"
str += g_sDefunctBaseDataStruct.iPrivicyGlass
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, g_sDefunctBaseDataStruct.iPersonalQuarters)
str = "iPersonalQuarters:"
str += g_sDefunctBaseDataStruct.iPersonalQuarters
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " \""
str += (tlModName)
str += "\""
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_NIGHTCLUB_NAME_FROM_ID(INT_TO_ENUM(NIGHTCLUB_ID, g_sNightclubDataStruct.iNightclubID))
str = "eNightclubID:"
str += g_sNightclubDataStruct.iNightclubID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, g_sNightclubDataStruct.iStyle)
str = "iStyle:"
str += g_sNightclubDataStruct.iStyle
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(g_sNightclubDataStruct.iLighting))
str = "iLighting:"
str += g_sNightclubDataStruct.iLighting
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, g_sNightclubDataStruct.iDancers)
str = "iDancers:"
str += g_sNightclubDataStruct.iDancers
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, g_sNightclubDataStruct.iDryIce)
str = "iDryIce:"
str += g_sNightclubDataStruct.iDryIce
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, g_sNightclubDataStruct.iStorage)
str = "iStorage:"
str += g_sNightclubDataStruct.iStorage
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, g_sNightclubDataStruct.iGarage)
str = "iGarage:"
str += g_sNightclubDataStruct.iGarage
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, /*GET_SF_FROM_NIGHTCLUB_NAME*/ (g_sNightclubDataStruct.iNameID))
str = "iNameID:"
str += g_sNightclubDataStruct.iNameID
str += ", SF_"
str += GET_SF_FROM_NIGHTCLUB_NAME(g_sNightclubDataStruct.iNameID)
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
#IF FEATURE_CASINO_HEIST
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_ARCADE_NAME_FROM_ID(INT_TO_ENUM(ARCADE_PROPERTY_ID, g_sArcadeDataStruct.iArcadeID))
str = "eArcadeID: "
str += g_sArcadeDataStruct.iArcadeID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase + (vOffsetMult * TO_FLOAT(iStrOffset)) + (<<0.175, 0.0, 0.0>> * TO_FLOAT(iColumn - 1)), iRed, iGreen, iBlue, iAlpha)
iStrOffset++
tlModName = GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_FLOOR, g_sArcadeDataStruct.iFloor)
str = "iStyle:"
str += g_sNightclubDataStruct.iStyle
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase + (vOffsetMult * TO_FLOAT(iStrOffset)) + (<<0.175, 0.0, 0.0>> * TO_FLOAT(iColumn - 1)), iRed, iGreen, iBlue, iAlpha)
iStrOffset++
#ENDIF
#IF FEATURE_TUNER
iStrOffset = iClubhouseIDStrOffset
iColumn++
tlModName = GET_AUTO_SHOP_NAME_FROM_ID(INT_TO_ENUM(AUTO_SHOP_PROPERTY_ID, g_sAutoShopDataStruct.iAutoShopID))
str = "eAutoShopID: "
str += g_sAutoShopDataStruct.iAutoShopID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase + (vOffsetMult * TO_FLOAT(iStrOffset)) + (<<0.175, 0.0, 0.0>> * TO_FLOAT(iColumn - 1)), iRed, iGreen, iBlue, iAlpha)
iStrOffset++
tlModName = GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_WALL, g_sAutoShopDataStruct.iWall)
str = "iWall:"
str += g_sAutoShopDataStruct.iWall
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase + (vOffsetMult * TO_FLOAT(iStrOffset)) + (<<0.175, 0.0, 0.0>> * TO_FLOAT(iColumn - 1)), iRed, iGreen, iBlue, iAlpha)
iStrOffset++
#ENDIF
ELIF eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
str = "iCab:"
str += g_sTruckDataStruct.iCab
IF g_sTruckDataStruct.iCab != -1
str += " "
str += GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab)))
ENDIF
INT iTruckCabIDStrOffset = iStrOffset
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iSection1:"
str += g_sTruckDataStruct.iSection1
str += " "
str += GET_ARMORY_TRUCK_SECTION_TYPE_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection1)))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iSection2:"
str += g_sTruckDataStruct.iSection2
str += " "
str += GET_ARMORY_TRUCK_SECTION_TYPE_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection2)))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iSection3:"
str += g_sTruckDataStruct.iSection3
str += " "
str += GET_ARMORY_TRUCK_SECTION_TYPE_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection3)))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iColour:"
str += g_sTruckDataStruct.iColour
str += " "
str += GET_ARMORY_TRUCK_SECTION_TINT_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TINT_ENUM, GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour)))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iTruckCabIDStrOffset
iColumn++
str = "iAvenger:"
str += g_sPlaneDataStruct.iAvenger
IF g_sPlaneDataStruct.iAvenger != -1
str += " "
str += GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(INT_TO_ENUM(MODEL_NAMES, g_sPlaneDataStruct.iAvenger))
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iInterior:"
str += g_sPlaneDataStruct.iInterior
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iGunTurret:"
str += g_sPlaneDataStruct.iGunTurret
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iVehShop:"
str += g_sPlaneDataStruct.iVehShop
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iWeaShop:"
str += g_sPlaneDataStruct.iWeaShop
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
//
iStrOffset = iTruckCabIDStrOffset
iColumn++
str = "iCab:"
str += g_sHackerTruckDataStruct.iCab
IF g_sHackerTruckDataStruct.iCab != -1
str += " "
str += GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(INT_TO_ENUM(MODEL_NAMES, g_sHackerTruckDataStruct.iCab))
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iTint:"
str += g_sHackerTruckDataStruct.iTint
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_TINT, GET_HACKER_TRUCK_TINT_FROM_SF(g_sHackerTruckDataStruct.iTint))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iDecal:"
str += g_sHackerTruckDataStruct.iDecal
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, GET_HACKER_TRUCK_DECAL_FROM_SF(g_sHackerTruckDataStruct.iDecal))
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iMissileLauncher:"
str += g_sHackerTruckDataStruct.iMissileLauncher
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MISSILE_LAUNCHER, g_sHackerTruckDataStruct.iMissileLauncher)
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iDroneStation:"
str += g_sHackerTruckDataStruct.iDroneStation
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DRONE_STATION, g_sHackerTruckDataStruct.iDroneStation)
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iWeaShop:"
str += g_sHackerTruckDataStruct.iWeaShop
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_WEAPON_STATION, g_sHackerTruckDataStruct.iWeaShop)
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iVehShop:"
str += g_sHackerTruckDataStruct.iVehShop
str += " "
str += GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MOTORCYCLE_WORKSHOP, g_sHackerTruckDataStruct.iVehShop)
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(vColumnMult*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
ELIF eStaticCurrentSite = WWW_ARENAWAR_TV
//
iColumn = 0
TEXT_LABEL_31 tlModName = GET_ARENA_GARAGE_NAME_FROM_ID(INT_TO_ENUM(ARENA_GARAGE_ID, g_sArenaDataStruct.iArenaID))
str = "iArenaID:"
str += g_sArenaDataStruct.iArenaID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, g_sArenaDataStruct.iStyle)
str = "iStyle:"
str += g_sArenaDataStruct.iStyle
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, g_sArenaDataStruct.iGraphics)
str = "iGraphics:"
str += g_sArenaDataStruct.iGraphics
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, g_sArenaDataStruct.iColour)
str = "iColour:"
str += g_sArenaDataStruct.iColour
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, g_sArenaDataStruct.iExpansionFloorB1)
str = "iExpansionFloorB1:"
str += g_sArenaDataStruct.iExpansionFloorB1
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, g_sArenaDataStruct.iExpansionFloorB2)
str = "iExpansionFloorB2:"
str += g_sArenaDataStruct.iExpansionFloorB2
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_BENNY_MECHANIC, g_sArenaDataStruct.iBennyMechanic)
str = "iBennyMechanic:"
str += g_sArenaDataStruct.iBennyMechanic
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_WEAPON_MECHANIC, g_sArenaDataStruct.iWeaponMechanic)
str = "iWeaponMechanic:"
str += g_sArenaDataStruct.iWeaponMechanic
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, g_sArenaDataStruct.iPersonalQuarters)
str = "iPersonalQuarters:"
str += g_sArenaDataStruct.iPersonalQuarters
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
ELIF eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM
//
iColumn = 0
TEXT_LABEL_31 tlModName = GET_CASINO_APT_NAME_FROM_ID(INT_TO_ENUM(CASINO_APT_ID, g_sCasinoDataStruct.iCasinoID))
str = "iCasinoID:"
str += g_sCasinoDataStruct.iCasinoID
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, g_sCasinoDataStruct.iColourOption)
str = "iColourOption:"
str += g_sCasinoDataStruct.iColourOption
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, g_sCasinoDataStruct.iStyleOption)
str = "iStyleOption:"
str += g_sCasinoDataStruct.iStyleOption
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, g_sCasinoDataStruct.iLounge)
str = "iLounge:"
str += g_sCasinoDataStruct.iLounge
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, g_sCasinoDataStruct.iBar)
str = "iBar:"
str += g_sCasinoDataStruct.iBar
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, g_sCasinoDataStruct.iDealer)
str = "iDealer:"
str += g_sCasinoDataStruct.iDealer
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BEDROOM, g_sCasinoDataStruct.iBedroom)
str = "iBedroom:"
str += g_sCasinoDataStruct.iBedroom
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_MEDIAROOM, g_sCasinoDataStruct.iMediaroom)
str = "iMediaroom:"
str += g_sCasinoDataStruct.iMediaroom
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, g_sCasinoDataStruct.iSpa)
str = "iSpa:"
str += g_sCasinoDataStruct.iSpa
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, g_sCasinoDataStruct.iOffice)
str = "iOffice:"
str += g_sCasinoDataStruct.iOffice
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
tlModName = GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, g_sCasinoDataStruct.iGarage)
str = "iGarage:"
str += g_sCasinoDataStruct.iGarage
IF DOES_TEXT_LABEL_EXIST(tlModName)
str += " \""
str += GET_STRING_FROM_TEXT_FILE(tlModName)
str += "\""
ELSE
str += " "
str += (tlModName)
ENDIF
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "iCasinoMembership:"
str += g_sCasinoDataStruct.iCasinoMembership
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl63Gamertag:\""
str += g_sCasinoDataStruct.tl63Gamertag
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
str = "tl23MugshotTexture:\""
str += g_sCasinoDataStruct.tl23MugshotTexture
str += "\""
GET_HUD_COLOUR(HUD_COLOUR_PURE_WHITE, iRed, iGreen, iBlue, iAlpha)
DRAW_DEBUG_TEXT_2D(str, vOffsetBase+(vOffsetMult*TO_FLOAT(iStrOffset))+(<<0.175,0.0,0>>*TO_FLOAT(iColumn-1)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
ENDIF
ENDIF
#ENDIF
ENDPROC
PROC PLAY_TACO_LINE(TACO_SITE_LINES tsl, structPedsForConversation &thisSpfc)
IF IS_SCRIPTED_CONVERSATION_ONGOING()
TEXT_LABEL_23 tl23 = GET_LAST_PASSED_STANDARD_CONVERSATION_ROOT()
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: Conversation already playing (\"", tl23, "\")")
EXIT
ENDIF
INT iGameTime = GET_GAME_TIMER()+2000
SWITCH tsl
CASE TSL_PACOW_TASTY
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_TASTY")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_TASTY",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_COLON
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_COLON")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_COLON",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_CSEC
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_CSEC")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_CSEC",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_DOG
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_DOG")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_DOG",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_VOMIT
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_VOMIT")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_VOMIT",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_PAIN
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_PAIN")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_PAIN",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
CASE TSL_PACOW_MELT
ADD_PED_FOR_DIALOGUE(thisSpfc,1,NULL,"PACO")
CPRINTLN(DEBUG_INTERNET, "PLAY_TACO_LINE: trying to create conversation - TSL_PACOW_MELT")
WHILE NOT CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(thisSpfc, "PACOWAU", "PACOW_MELT",
CONV_PRIORITY_AMBIENT_LOW, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
AND GET_GAME_TIMER() <= iGameTime
CDEBUG1LN(DEBUG_INTERNET, "PLAY_TACO_LINE: waiting for CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC to return true [", iGameTime-GET_GAME_TIMER(), "ms, ", g_CurrentlyPlayingConvPriority, "]")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
BREAK
ENDSWITCH
ENDPROC
PROC DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(WEBSITE_INDEX_ENUM eSite, SITE_BUYABLE_VEHICLE sbv, STRING vehicleNameTag, BOOL bPegasus, BOOL bClubhouse, BOOL bMobileOperationsCenter, BOOL bSmugglerHangar, BOOL bDefuctBase, BOOL bNightclub, BOOL bHackerTruck, BOOL bArenaGarage, BOOL bCasinoGarage ,BOOL bSubmarine #IF FEATURE_TUNER, BOOL bAutoShop #ENDIF)
IF NETWORK_IS_GAME_IN_PROGRESS()
REQUEST_SYSTEM_ACTIVITY_TYPE_PURCHASED_VEHICLE()
TEXT_LABEL_31 txdict = "", fstr = ""
TEXT_LABEL_63 fYachtName = ""
BOOL bImportExportGarage = GET_SVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1
BOOL bGunrunningGarage = GET_WVM_VEHICLE_SLOT(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1
IF NOT bDefuctBase
IF GET_FDS_VEHICLE_SLOT(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1
bDefuctBase = TRUE
ENDIF
ENDIF
IF bDefuctBase
bSmugglerHangar = FALSE
ENDIF
IF bPegasus
txdict = GET_FILENAME_FOR_AUDIO_CONVERSATION(g_sCharacterSheetAll[CHAR_PEGASUS_DELIVERY].picture)
fstr = "DELVIRLP" // Your ~a~ will be available from Pegasus shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELVIRLB" // Your new vehicle will be available from Pegasus shortly.
ENDIF
ELSE
IF (sbv = BV_DLC_BIG_YACHT)
IF NOT bPreviousPegasus
IF SHOULD_PRIVATE_YACHTS_BE_ACTIVE()
fstr = "DELVIRLY" // Your new yacht ~a~ is now available.
ELSE
fstr = "DELVIRLYS" // Your new yacht ~a~ will soon be made available to you.
ENDIF
ELSE
fstr = "DELVIRLYR" // Your yacht ~a~ has now been redesigned.
ENDIF
fYachtName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_YACHT_NAME, MP_STAT_YACHT_NAME2)
IF IS_STRING_NULL_OR_EMPTY(fYachtName)
fstr += "a"
ENDIF
ELIF (sbv = BV_DLC_BIG_TRUCK)
fYachtName = ""
IF NOT bPreviousPegasus
fstr = "DELVIRLT" // Your new Mobile Operations Center ~a~ is now available.
ELSE
fstr = "DELVIRLTR" // Your renovated Mobile Operations Center ~a~ is now available.
ENDIF
IF IS_STRING_NULL_OR_EMPTY(fYachtName)
fstr += "a"
ENDIF
ELIF (sbv = BV_DLC_BIG_PLANE)
fYachtName = ""
IF NOT bPreviousPegasus
fstr = "DELVIRLO" // Your new Osprey ~a~ is now available.
ELSE
fstr = "DELVIRLOR" // Your renovated Osprey ~a~ is now available.
ENDIF
IF IS_STRING_NULL_OR_EMPTY(fYachtName)
fstr += "a"
ENDIF
ELIF (sbv = BV_DLC_HACKER_TRUCK)
fYachtName = ""
IF NOT bPreviousPegasus
fstr = "DELVIRLH" // Your new Terrorbyte ~a~ is now available.
ELSE
fstr = "DELVIRLHR" // Your renovated Terrorbyte ~a~ is now available.
ENDIF
IF IS_STRING_NULL_OR_EMPTY(fYachtName)
fstr += "a"
ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
fYachtName = ""
IF NOT bPreviousPegasus
fstr = "DELSUBT" // Your new Submarine ~a~ is now available.
ELSE
fstr = "DELSUBTR" // Your renovated Submarine ~a~ is now available.
ENDIF
IF IS_STRING_NULL_OR_EMPTY(fYachtName)
fstr += "a"
ENDIF
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF sbv = BV_CNC_POLBATI
OR sbv = BV_CNC_POLBUFFALO
OR sbv = BV_CNC_POLGAUNTLET
OR sbv = BV_CNC_POLGRANGER
OR sbv = BV_CNC_POLICE5
OR sbv = BV_CNC_POLICE6
OR sbv = BV_CNC_POLICEB2
OR sbv = BV_CNC_POLICET2
OR sbv = BV_CNC_POLPANTO
OR sbv = BV_CNC_POLCARACARA
OR sbv = BV_CNC_POLRIATA
OR sbv = BV_CNC_POLGREENWOOD
IF NOT IS_BIT_SET(MPGlobalsAmbience.iFmNmhBitSet12, BI_FM_NMH12_CNC_POLICE_DISPATCH_JOBS_HELP)
SET_BIT(MPGlobalsAmbience.iFmNmhBitSet12, BI_FM_NMH12_CNC_POLICE_DISPATCH_JOBS_HELP)
PRINTLN("DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE BI_FM_NMH12_CNC_POLICE_DISPATCH_JOBS_HELP TRUE")
ENDIF
fstr = "DELVIRL" // Your ~a~ will be delivered to your Garage shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELVIRLG" // Your new vehicle will be delivered to your Garage shortly.
ENDIF
#ENDIF
ELSE
IF bClubhouse
fstr = "DELCIRL" // Your ~a~ will be delivered to your Clubhouse shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELCIRLG" // Your new vehicle will be delivered to your Clubhouse shortly.
ENDIF
ELIF bImportExportGarage
fstr = "DELSIRL" // Your ~a~ will be delivered to your Import Export Garage shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELSIRLG" // Your new vehicle will be delivered to your Import Export Garage shortly.
ENDIF
ELIF bGunrunningGarage
IF DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID())
fstr = "DELWIRL" // Your ~a~ will be delivered to your Bunker shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELWIRLG" // Your new vehicle will be delivered to your Bunker shortly.
ENDIF
ELSE
fstr = "DELPIRL" // Your ~a~ will be available from the Vehicle section of the Interaction Menu Menu shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELPIRLG" // Your new vehicle will be available from the Vehicle section of the Interaction Menu Menu shortly.
ENDIF
ENDIF
ELIF bMobileOperationsCenter
fstr = "DELMIRL" // Your ~a~ will be delivered to your MOC shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELMIRLG" // Your new vehicle will be delivered to your MOC shortly.
ENDIF
ELIF bSmugglerHangar
fstr = "DELHARL" // Your ~a~ will be delivered to the Hangar shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELHARLG" // Your new vehicle will be delivered to the Hangar shortly.
ENDIF
ELIF bDefuctBase
fstr = "DELFIRL" // Your ~a~ will be delivered to your Facility shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELFIRLG" // Your new vehicle will be delivered to your Facility shortly.
ENDIF
ELIF bNightclub
fstr = "DELNCRL" // Your ~a~ will be delivered to your Nightclub shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELNCRLG" // Your new vehicle will be delivered to your Nightclub shortly.
ENDIF
ELIF bHackerTruck
fstr = "DELHTRL" // Your ~a~ will be delivered to your Terbyte shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELHTRLG" // Your new vehicle will be delivered to your Terbyte shortly.
ENDIF
ELIF bArenaGarage
fstr = "DELARRL" // Your ~a~ will be delivered to your Nightclub shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELARRLG" // Your new vehicle will be delivered to your Nightclub shortly.
ENDIF
ELIF bCasinoGarage
fstr = "DELCARL" // Your ~a~ will be delivered to your Casino Garage shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELCARLG" // Your new vehicle will be delivered to your Casino Garage shortly.
ENDIF
ELIF bSubmarine
fstr = "DELSUB" // Your ~a~ will be delivered to your Submarine Moonpool shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELSUBG" // Your new vehicle will be delivered to your Submarine Moonpool shortly.
ENDIF
#IF FEATURE_TUNER
ELIF bAutoShop
fstr = "DEL_AS" // Your ~a~ will be delivered to your Auto Shop shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DEL_ASG" // Your new vehicle will be delivered to your Auto Shop shortly.
ENDIF
#ENDIF
ELSE
fstr = "DELVIRL" // Your ~a~ will be delivered to your Garage shortly.
IF IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
fstr = "DELVIRLG" // Your new vehicle will be delivered to your Garage shortly.
ENDIF
ENDIF
ENDIF
SWITCH eSite
CASE WWW_LEGENDARYMOTORSPORT_NET
txdict = "CHAR_CARSITE"
BREAK
CASE WWW_ELITASTRAVEL_COM
txdict = "CHAR_PLANESITE"
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
txdict = "CHAR_MILSITE"
BREAK
CASE WWW_DOCKTEASE_COM
txdict = "CHAR_BOATSITE"
BREAK
CASE WWW_PANDMCYCLES_COM
txdict = "CHAR_BIKESITE"
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
txdict = "CHAR_CARSITE2"
BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
txdict = "CHAR_CARSITE3"
BREAK
CASE WWW_ARENAWAR_TV
txdict = "CHAR_CARSITE4"
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE: invalid eSite ", GET_WEBSITE_FROM_INDEX(eSite))
BREAK
ENDSWITCH
ENDIF
TEXT_LABEL_63 tl63 = ""
IF bPegasus tl63 += ", bPegasus" ENDIF
IF bClubhouse tl63 += ", bClubhouse" ENDIF
IF bImportExportGarage tl63 += ", bImportExportGarage" ENDIF
IF bGunrunningGarage tl63 += ", bGunrunningGarage" ENDIF
IF bMobileOperationsCenter tl63 += ", bMobileOperationsCenter" ENDIF
IF bSmugglerHangar tl63 += ", bSmugglerHangar" ENDIF
IF bDefuctBase tl63 += ", bDefuctBase" ENDIF
IF bNightclub tl63 += ", bNightclub" ENDIF
IF bArenaGarage tl63 += ", bArenaGarage" ENDIF
IF bCasinoGarage tl63 += ", bCasinoGarage" ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(", GET_WEBSITE_FROM_INDEX(eSite), ", \"", vehicleNameTag, "\"", tl63, "), fstr:\"", fstr, "\", txdict:\"", txdict, "\"" )
UNUSED_PARAMETER(tl63)
BEGIN_TEXT_COMMAND_THEFEED_POST(fstr)
IF NOT IS_STRING_NULL_OR_EMPTY(vehicleNameTag)
AND NOT (sbv = BV_DLC_BIG_YACHT OR sbv = BV_DLC_BIG_TRUCK OR sbv = BV_DLC_BIG_PLANE
OR sbv = BV_DLC_HACKER_TRUCK #IF FEATURE_HEIST_ISLAND OR sbv = BV_IH_KOSATKA #ENDIF
)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(vehicleNameTag)
ELIF NOT IS_STRING_NULL_OR_EMPTY(fYachtName)
AND (sbv = BV_DLC_BIG_YACHT OR sbv = BV_DLC_BIG_TRUCK OR sbv = BV_DLC_BIG_PLANE
OR sbv = BV_DLC_HACKER_TRUCK #IF FEATURE_HEIST_ISLAND OR sbv = BV_IH_KOSATKA #ENDIF
)
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(fYachtName)
ENDIF
END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT(txdict, txdict, FALSE, TEXT_ICON_BLANK, "DELPURCN")
ENDIF
ENDPROC
PROC SEND_MP_VEHICLE_CONFIRMATION_TEXT(SITE_BUYABLE_VEHICLE veh, SITE_BUYABLE_VEHICLE_COLOURS col, WEBSITE_INDEX_ENUM siteID, INT iDisplaySlot, INT iSlot)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT ", GET_LABEL_BUYABLE_VEHICLE(veh), ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(veh, col), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", iDisplaySlot:", iDisplaySlot, ", iSlot:", iSlot)
enumCharacterList char
TEXT_LABEL_23 csitebase
TEXT_LABEL_63 vehname = GET_LABEL_BUYABLE_VEHICLE(veh)
//#1932819
IF veh = BV_MP_COQUETTE2_TOPLESS
vehname = GET_LABEL_BUYABLE_VEHICLE(BV_MP_COQUETTE2)
ENDIF
//STRING garagestring = "TXT_TO_GARAGE"
BOOL pegMode = FALSE
// Vehicle is too large to deliver to garage
IF GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(veh, col) != -1
char = CHAR_PEGASUS_DELIVERY // B*1396526
//garagestring = "TXT_FROM_PEGASUS"
pegMode = TRUE
ENDIF
BOOL clubhouseMode = FALSE
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE), PROPERTY_OWNED_SLOT_CLUBHOUSE)
clubhouseMode = TRUE
ENDIF
BOOL undergroundGarageMode = FALSE
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_IE_WAREHOUSE), PROPERTY_OWNED_SLOT_IE_WAREHOUSE)
undergroundGarageMode = TRUE
ENDIF
BOOL bOfficeGarage = FALSE
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1), PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2), PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3), PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3)
bOfficeGarage = TRUE
ENDIF
BOOL hangarMode = FALSE
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_HANGAR), PROPERTY_OWNED_SLOT_HANGAR)
hangarMode = TRUE
ENDIF
// #IF FEATURE_GANG_OPS
// BOOL defunctBaseMode = FALSE
// IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_DEFUNCBASE), PROPERTY_OWNED_SLOT_DEFUNCBASE)
// defunctBaseMode = TRUE
// ENDIF
// #ENDIF
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
char = CHAR_CARSITE
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELSE
csitebase = "TXT_CAR_GARN"
IF NOT IS_SBV_A_VEHICLE_WITH_LIVERIES(veh)
AND NOT IS_SBV_A_VEHICLE_WITH_ARMOUR_OPTION(veh)
AND veh != BV_BI_RATBIKE
TEXT_LABEL_23 csitetemp
csitetemp = ""
SWITCH col
CASE BCV_RED_COLOUR csitetemp = "TXT_CAR_GARN0" BREAK
CASE BCV_PINK_COLOUR csitetemp = "TXT_CAR_GARN1" BREAK
CASE BCV_YELLOW_COLOUR csitetemp = "TXT_CAR_GARN2" BREAK
CASE BCV_ORANGE_COLOUR csitetemp = "TXT_CAR_GARN3" BREAK
CASE BCV_GREEN_COLOUR csitetemp = "TXT_CAR_GARN4" BREAK
CASE BCV_BLUE_COLOUR csitetemp = "TXT_CAR_GARN5" BREAK
CASE BCV_BLACK_COLOUR csitetemp = "TXT_CAR_GARN6" BREAK
CASE BCV_WHITE_COLOUR csitetemp = "TXT_CAR_GARN7" BREAK
ENDSWITCH
IF NOT IS_STRING_NULL_OR_EMPTY(csitetemp)
AND DOES_TEXT_LABEL_EXIST(csitetemp)
csitebase = csitetemp
ENDIF
ENDIF
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
char = CHAR_PLANESITE
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELIF hangarMode
csitebase = "TXT_VEH_BASEHA"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
char = CHAR_MILSITE
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELIF undergroundGarageMode
csitebase = "TXT_VEH_BASEUG"
ELIF hangarMode
csitebase = "TXT_VEH_BASEHA"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
char = CHAR_BOATSITE
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM
char = CHAR_BIKESITE_PAMC
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
char = CHAR_CARSITE_SSASA
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELIF clubhouseMode
csitebase = "TXT_VEH_BASECH"
ELSE
csitebase = "TXT_CAR_GARN"
IF NOT IS_SBV_A_VEHICLE_WITH_LIVERIES(veh)
AND NOT IS_SBV_A_VEHICLE_WITH_ARMOUR_OPTION(veh)
AND veh != BV_BI_RATBIKE
TEXT_LABEL_23 csitetemp
csitetemp = ""
SWITCH col
CASE BCV_RED_COLOUR csitetemp = "TXT_CAR_GARN0" BREAK
CASE BCV_PINK_COLOUR csitetemp = "TXT_CAR_GARN1" BREAK
CASE BCV_YELLOW_COLOUR csitetemp = "TXT_CAR_GARN2" BREAK
CASE BCV_ORANGE_COLOUR csitetemp = "TXT_CAR_GARN3" BREAK
CASE BCV_GREEN_COLOUR csitetemp = "TXT_CAR_GARN4" BREAK
CASE BCV_BLUE_COLOUR csitetemp = "TXT_CAR_GARN5" BREAK
CASE BCV_BLACK_COLOUR csitetemp = "TXT_CAR_GARN6" BREAK
CASE BCV_WHITE_COLOUR csitetemp = "TXT_CAR_GARN7" BREAK
ENDSWITCH
IF NOT IS_STRING_NULL_OR_EMPTY(csitetemp)
AND DOES_TEXT_LABEL_EXIST(csitetemp)
csitebase = csitetemp
ENDIF
ENDIF
IF bOfficeGarage
csitebase += "f"
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
IF col = BCV_COLOUR_39
csitebase = "TXT_CAR_GARN8f"
ENDIF
#ENDIF
ENDIF
BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
char = CHAR_BENNYS_OMW
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
CASE WWW_ARENAWAR_TV
char = CHAR_ARENA
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_CAR_BASEPEG"
ELSE
csitebase = "TXT_CAR_GARN"
IF bOfficeGarage
csitebase += "f"
ENDIF
ENDIF
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - invalid siteID parameter for switch statement")
BREAK
ENDSWITCH
// IF (veh = BV_GO_THRUSTER)
// char = CHAR_LESTER
// csitebase = "TXT_CAR_THRUST"
// ENDIF
IF GET_CURRENT_LANGUAGE() = LANGUAGE_RUSSIAN
OR GET_CURRENT_LANGUAGE() = LANGUAGE_JAPANESE
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT: \"", csitebase, "\":\"", GET_STRING_FROM_TEXT_FILE(csitebase), "\", \"", vehname, "\":\"", GET_STRING_FROM_TEXT_FILE(vehname), "\"")
IF pegMode
char = CHAR_PEGASUS_DELIVERY
csitebase = "TXT_VEH_BASEPEG"
ELSE
csitebase = "TXT_VEH_GARN"
ENDIF
vehname = ""
ENDIF
///#IF IS_DEBUG_BUILD
// CPRINTLN(DEBUG_INTERNET, "Sending two component text message for vehicle buy :",GET_PLAYER_NAME(GET_PLAYER_INDEX()),":",vehname,":")
//#ENDIF
//INT iTimeout = g_iBrowserTimer + 4000
IF GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(veh, col) != -1
IF veh = BV_DLC_BIG_YACHT
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
SET_BIT(MPGlobalsAmbience.iFmNmhBitSet12, BI_FM_NMH12_YACHT_PURCHASED_THIS_BOOT)
IF NOT bPreviousPegasus
IF NOT g_sMPTunables.byacht_disable_captain_phone_contact
IF NOT IS_CONTACT_IN_PHONEBOOK(CHAR_YACHT_CAPTAIN, MULTIPLAYER_BOOK)
BOOL bDisplay = FALSE
INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT8)
IF NOT IS_BIT_SET(iStatInt, BI_FM_NMH11_UNLOCKED_YACHT_CAPTAIN)
SET_BIT(iStatInt, BI_FM_NMH11_UNLOCKED_YACHT_CAPTAIN)
SET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT8, iStatInt)
bDisplay = TRUE
ENDIF
ADD_CONTACT_TO_PHONEBOOK(CHAR_YACHT_CAPTAIN, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_SHOPS, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - [YACHT_CAPTAIN_CONTACT] MAINTAIN_ADD_YACHT_CAPTAIN_CONTACT - ADD_CONTACT_TO_PHONEBOOK(CHAR_YACHT_CAPTAIN, MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
IF GET_ENTITY_MODEL(PLAYER_PED_ID()) = MP_M_FREEMODE_01
csitebase = "TXT_YACHT_M"
ELSE
csitebase = "TXT_YACHT_F"
ENDIF
ADD_ITEM_TO_MP_VEHICLE_TEXT(CHAR_YACHT_CAPTAIN, csitebase, vehname, "", 3000)
ELSE
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, byacht_disable_captain_phone_contact:", GET_STRING_FROM_BOOL(g_sMPTunables.byacht_disable_captain_phone_contact))
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ENDIF
ELIF veh = BV_DLC_BIG_TRUCK
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELIF veh = BV_DLC_BIG_PLANE
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELIF veh = BV_DLC_BALLISTIC_EQUIPMENT
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for ballistic, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELIF veh = BV_GR_TRAILERSMALL2
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELIF veh = BV_DLC_HACKER_TRUCK
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for CHAR_YACHT_CAPTAIN, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
#IF FEATURE_HEIST_ISLAND
ELIF veh = BV_IH_KOSATKA
SET_BIT(MPGlobalsAmbience.iFmNmhBitSet12, BI_FM_NMH12_H4_BOUGHT_SUBMARINE)
#IF FEATURE_GEN9_EXCLUSIVE
RESUME_ISLAND_HEIST_UDS_ACTIVITY()
END_ISLAND_HEIST_UDS_ACTIVITY(UDS_ACTIVITY_END_REASON_ABANDONED)
#ENDIF
IF NOT IS_PLAYER_IN_SMPL_INT_SUBMARINE_THEY_OWN(PLAYER_ID())
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for KOSATKA, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELSE
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - no call or ticker notification for KOSATKA, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ENDIF
#ENDIF
ELIF veh = BV_AW_RCBANDITO
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for RC Bandito, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
ELSE
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE #IF FEATURE_TUNER,FALSE #ENDIF)
ADD_ITEM_TO_MP_VEHICLE_TEXT(char,csitebase,vehname,"",MP_VEHICLE_TEXT_DELAY_FOR_PURCHASED_VEHICLE)
ENDIF
ELSE
IF iSlot = -1
#IF IS_DEBUG_BUILD
CASSERTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT player ordered a personal vehicle but no slot was set? See conor.")
#ENDIF
#IF FEATURE_CASINO_HEIST
ELIF veh = BV_CH_MINITANK
CPRINTLN(DEBUG_INTERNET, "SEND_MP_VEHICLE_CONFIRMATION_TEXT - don't call for RC Tank, bPreviousPegasus:", GET_STRING_FROM_BOOL(bPreviousPegasus))
#ENDIF
ELSE
STRING sGarageString = ""
INT iGarageSlot = iSlot
BOOL bClubhouse = FALSE, bMobileOperationsCenter = FALSE, bSmugglerHangar = FALSE, bDefuctBase = FALSE, bNightclub = FALSE, bHackerTruck = FALSE, bArenaGarage = FALSE, bCasinoGarage = FALSE
#IF FEATURE_HEIST_ISLAND
BOOL bSubmarine
#ENDIF
#IF FEATURE_TUNER
BOOL bAutoShop
#ENDIF
bClubhouse = DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE), PROPERTY_OWNED_SLOT_CLUBHOUSE)
IF (iDisplaySlot = DISPLAY_SLOT_START_ARMOURY_TRUCK)
sGarageString = "PIM_MTRUCK"
csitebase = "TXT_TRUCK_GAR"
///iGarageSlot = -1
bMobileOperationsCenter = TRUE
ENDIF
bSmugglerHangar = DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_HANGAR), PROPERTY_OWNED_SLOT_HANGAR)
bDefuctBase = DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_DEFUNCBASE), PROPERTY_OWNED_SLOT_DEFUNCBASE)
bNightclub = DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_NIGHTCLUB), PROPERTY_OWNED_SLOT_NIGHTCLUB)
IF NOT bNightclub
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL1), PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL1)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL2), PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL2)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL3), PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL3)
bNightclub = TRUE
ENDIF
ENDIF
IF NOT bNightclub
IF (iDisplaySlot = DISPLAY_SLOT_CLUBSPEEDO)
OR (iDisplaySlot = DISPLAY_SLOT_CLUBMULE)
OR (iDisplaySlot = DISPLAY_SLOT_CLUBPOUNDER)
bNightclub = TRUE
ENDIF
ENDIF
IF (iDisplaySlot = DISPLAY_SLOT_TEROBYTE_OPP2)
// sGarageString = "PIM_MTRUCK"""
// csitebase = "TXT_TRUCK_GAR"""
///iGarageSlot = -1
bHackerTruck = TRUE
ENDIF
#IF FEATURE_HEIST_ISLAND
IF (iDisplaySlot = DISPLAY_SLOT_SUB_AQUA_CAR)
// sGarageString = "PIM_MTRUCK"""
// csitebase = "TXT_TRUCK_GAR"""
///iGarageSlot = -1
bSubmarine = TRUE
ENDIF
#ENDIF
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL1), PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL1)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL2), PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL2)
OR DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL3), PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL3)
bArenaGarage = TRUE
ENDIF
IF NOT bArenaGarage
IF (iDisplaySlot = DISPLAY_SLOT_CERBERUS)
OR (iDisplaySlot = DISPLAY_SLOT_CERBERUS2)
OR (iDisplaySlot = DISPLAY_SLOT_CERBERUS3)
OR (iDisplaySlot = DISPLAY_SLOT_RCCAR)
bArenaGarage = TRUE
ENDIF
ENDIF
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CASINO_GARAGE), PROPERTY_OWNED_SLOT_CASINO_GARAGE)
bCasinoGarage = TRUE
ENDIF
IF DOES_DISPLAY_SLOT_EXIST_IN_PROPERTY(iDisplaySlot, GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_AUTOSHOP_PROPERTY), PROPERTY_OWNED_SLOT_AUTOSHOP_PROPERTY)
bAutoShop = TRUE
ENDIF
DO_VEHICLE_PURCHASE_NOTIFICATION_FEED_MESSAGE(siteID,veh,vehname,FALSE,bClubhouse, bMobileOperationsCenter, bSmugglerHangar, bDefuctBase, bNightclub, bHackerTruck, bArenaGarage, bCasinoGarage,bSubmarine #IF FEATURE_TUNER,bAutoShop #ENDIF)
ADD_ITEM_TO_MP_VEHICLE_TEXT(char,csitebase,vehname,sGarageString,MP_VEHICLE_TEXT_DELAY_FOR_PURCHASED_VEHICLE,MP_SAVE_VEH_TEXT_ACTION_GIVE_PERSONAL_VEHICLE,iGarageSlot)
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "Appinternet waiting for mp vehicle text message to send...")
///MOVED TO MAINTAIN_MP_VEHICLE_TEXT_MESSAGES
// WHILE (NOT Request_MP_Comms_Txtmsg_With_Components(char,
// csitebase,
// GET_PLAYER_NAME(GET_PLAYER_INDEX()),
// TRUE,
// NO_INT_SUBSTRING_COMPONENT_VALUE,
// (vehname),
// (garagestring),
// FALSE,
// ALL_MP_COMMS_MODIFIERS_CLEAR))
// AND (iTimeout > g_iBrowserTimer)
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER(TRUE)
WAIT(0)
//ENDWHILE
ENDPROC
#IF IS_DEBUG_BUILD
// Widget handles and setup
WIDGET_GROUP_ID DebugBrowserWidgets
BOOL DebugAttemptToForceWebsite = FALSE
BOOL DebugLudicrousMoney = FALSE//2147483647
INT DebugNagScreen = 0
BOOL bSetOwnedProperties = FALSE
BOOL bSaveVehicleLabels = FALSE
BOOL bDrawMysteriousPageValues = FALSE
///STRING DebugForceSiteTo = "WWW_EYEFIND_INFO"
TEXT_WIDGET_ID forceTo
INT iStoryCount[BAWSAQ_STORIES_PER_CATEGORY]
TEXT_WIDGET_ID storyHeader[BAWSAQ_STORIES_PER_CATEGORY], storyText[BAWSAQ_STORIES_PER_CATEGORY]
PROC DEBUG_DRAW_MYSTERIOUS_PAGE_VALUES()
IF bDrawMysteriousPageValues
OR GET_COMMANDLINE_PARAM_EXISTS("sc_DrawWebsiteMysteriousPageValues")
TEXT_LABEL_63 tlText
VECTOR vPos = <<0.1, 0.3, 0.0>>
VECTOR vOffset = << 0.0, 0.02, 0.0>>
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
tlText = "*** WEBSITE PAGE VALUES ***"
DRAW_DEBUG_TEXT_2D(Get_String_From_TextLabel(tlText), vPos, 0, 255, 0)
vPos += vOffset
vPos += vOffset
tlText = "iStaticCurrentPage: "
tlText += GET_STRING_FROM_INT(iStaticCurrentPage)
DRAW_DEBUG_TEXT_2D(Get_String_From_TextLabel(tlText), vPos, 0, 255, 0)
vPos += vOffset
tlText = "g_iLastSelectedWebIndex: "
tlText += GET_STRING_FROM_INT(g_iLastSelectedWebIndex)
DRAW_DEBUG_TEXT_2D(Get_String_From_TextLabel(tlText), vPos, 0, 255, 0)
vPos += vOffset
tlText = "iStaticLastPage: "
tlText += GET_STRING_FROM_INT(iStaticLastPage)
DRAW_DEBUG_TEXT_2D(Get_String_From_TextLabel(tlText), vPos, 0, 255, 0)
vPos += vOffset
ENDIF
ENDPROC
PROC DEBUG_MAKE_BROWSER_WIDGETS()
IF DOES_WIDGET_GROUP_EXIST(DebugBrowserWidgets)
DELETE_WIDGET_GROUP(DebugBrowserWidgets)
ENDIF
DebugBrowserWidgets = START_WIDGET_GROUP("Web Browser Overrides")
ADD_WIDGET_BOOL("Draw Mysterious Page Values", bDrawMysteriousPageValues)
ADD_WIDGET_BOOL("Do force", DebugAttemptToForceWebsite)
forceTo = ADD_TEXT_WIDGET("Force site")
SET_CONTENTS_OF_TEXT_WIDGET(forceTo,"WWW_EYEFIND_INFO")
ADD_WIDGET_BOOL("Force Specific Eye Find News Story : ", bDebug_ForceSpecificEyeFindNewsStory)
ADD_WIDGET_INT_SLIDER("Set Forced Specific Eye Find News Story : ", iDebug_ForcedSpecificEyeFindNewsStory, 1, 10, 1)
ADD_WIDGET_BOOL("bBrowserTutorialSeen", g_savedGlobals.sFinanceData.bBrowserTutorialSeen)
ADD_WIDGET_BOOL("GEIF ME ALL THE MONEYS", DebugLudicrousMoney)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("NSR_CASH")
ADD_TO_WIDGET_COMBO("NSR_DLC")
ADD_TO_WIDGET_COMBO("NSR_VOUCHER")
STOP_WIDGET_COMBO("TRIGGER NAG SCREEN", DebugNagScreen)
// ADD_WIDGET_INT_READ_ONLY("eStaticLastSite", eStaticLastSite)
// ADD_WIDGET_INT_READ_ONLY("eStaticCurrentSite", eStaticCurrentSite)
ADD_WIDGET_INT_READ_ONLY("iStaticLastPage", iStaticLastPage)
ADD_WIDGET_INT_READ_ONLY("iStaticCurrentPage", iStaticCurrentPage)
START_WIDGET_GROUP("Force Bawsaq News")
ADD_WIDGET_BOOL("g_bForceBawsaqNews", g_bForceBawsaqNews)
TEXT_LABEL str
INT iStory
REPEAT BAWSAQ_STORIES_PER_CATEGORY iStory
str = "iStoryCount["
str += iStory
str += "]"
ADD_WIDGET_INT_SLIDER(str, iStoryCount[iStory], 0, PRICE_TRIGGER_STACK_TOTAL, 1)
str = "storyHeader["
str += iStory
str += "]"
storyHeader[iStory] = ADD_TEXT_WIDGET(str) SET_CONTENTS_OF_TEXT_WIDGET(storyHeader[iStory], "null")
str = "storyText["
str += iStory
str += "]"
storyText[iStory] = ADD_TEXT_WIDGET(str) SET_CONTENTS_OF_TEXT_WIDGET(storyText[iStory], "null")
ENDREPEAT
STOP_WIDGET_GROUP()
START_WIDGET_GROUP("SF Eyefind advert indexes")
ADD_WIDGET_STRING("Large advert indexes")
ADD_WIDGET_INT_SLIDER("Large advert index 0", g_sMPTunables.iSF_EYEFIND_MP_LARGE_ADVERT_INDEX_0, -1, 14, 1)
ADD_WIDGET_INT_SLIDER("Large advert index 1", g_sMPTunables.iSF_EYEFIND_MP_LARGE_ADVERT_INDEX_1, -1, 14, 1)
ADD_WIDGET_INT_SLIDER("Large advert index 2", g_sMPTunables.iSF_EYEFIND_MP_LARGE_ADVERT_INDEX_2, -1, 14, 1)
ADD_WIDGET_STRING("Small advert indexes")
ADD_WIDGET_INT_SLIDER("Small advert index 0", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_0, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 1", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_1, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 2", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_2, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 3", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_3, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 4", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_4, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 5", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_5, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 6", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_6, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 7", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_7, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 8", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_8, -1, 78, 1)
ADD_WIDGET_INT_SLIDER("Small advert index 9", g_sMPTunables.iSF_EYEFIND_MP_SMALL_ADVERT_INDEX_9, -1, 78, 1)
STOP_WIDGET_GROUP()
ADD_WIDGET_BOOL("Catalogue missing entries", b_debug_CatalogueMissingEntries)
START_WIDGET_GROUP("GET_OWNED_PROPERTY")
INT iSlot = GET_ACTIVE_CHARACTER_SLOT()
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_1", g_MP_STAT_PROPERTY_HOUSE[iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_2", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_2-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_3", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_3-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_4", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_4-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_5", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_5-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_OFFICE_0", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_0-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_CLUBHOUSE", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_CLUBHOUSE-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_6", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_6-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_IE_WAREHOUSE", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_IE_WAREHOUSE-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_HANGAR", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_HANGAR-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
#IF FEATURE_SUMMER_2020
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_7", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_7-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_8", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_8-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
#ENDIF
#IF FEATURE_DLC_1_2022
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_9", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_9-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_APT_10", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_10-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
#ENDIF
// ADD_WIDGET_INT_SLIDER("PROPERTY_OWNED_SLOT_XXXXXX", g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_XXXXXX-1][iSlot], 0, MAX_MP_PROPERTIES, 1)
ADD_WIDGET_BOOL("GET_OWNED_PROPERTY - save all", bSetOwnedProperties)
STOP_WIDGET_GROUP()
ADD_WIDGET_BOOL("Browser MBANKHELP seen", g_bBrowser_MBANKHELP_seen)
#IF FEATURE_CASINO_HEIST
ADD_WIDGET_BOOL("Browser ARCADEHELP seen", g_bBrowser_ARCADEHELP_seen)
#ENDIF
ADD_WIDGET_BOOL("bSaveVehicleLabels", bSaveVehicleLabels)
ADD_WIDGET_BOOL("Draw Debug Stuff", bDrawDebugStuff)
STOP_WIDGET_GROUP()
ENDPROC
#ENDIF
CONST_FLOAT SCRIPT_INVALID_SCALEFORM_PARAM -1.0
PROC CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(SCALEFORM_INDEX &thisMov,
STRING method,
FLOAT p1,
FLOAT p2 = SCRIPT_INVALID_SCALEFORM_PARAM,
FLOAT p3 = SCRIPT_INVALID_SCALEFORM_PARAM,
FLOAT p4 = SCRIPT_INVALID_SCALEFORM_PARAM,
FLOAT p5 = SCRIPT_INVALID_SCALEFORM_PARAM)
BEGIN_SCALEFORM_MOVIE_METHOD(thisMov,method)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(p1)
IF p2 != SCRIPT_INVALID_SCALEFORM_PARAM
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(p2)
ENDIF
IF p3 != SCRIPT_INVALID_SCALEFORM_PARAM
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(p3)
ENDIF
IF p4 != SCRIPT_INVALID_SCALEFORM_PARAM
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(p4)
ENDIF
IF p5 != SCRIPT_INVALID_SCALEFORM_PARAM
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(p5)
ENDIF
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
SCALEFORM_RETURN_INDEX fudp
INT fudret = 0
WEBSITE_INDEX_ENUM eSiteIDCheck = INVALID_WEBSITE_INDEX
INT iPageIDCheck = -1
INT iPageIDLast = -1
BOOL bDynamic = FALSE
BOOL bHasLoadedChildContent = FALSE
INT iBSTutorialProgress = 0
BOOL bSelectionHoldActionDetector = FALSE
BOOL bSelectionHoldActionPolarity = FALSE
INT iSelectionHoldActionRateTracker = 0
BOOL bLifeInvaderTutorialMode = FALSE
CONST_INT HOUSE_GPS_SITE_OFFSET 5
BOOL bClickDetector = FALSE // Flagged true when g_iLastSelectedWebIndex is set
BOOL bPrimedAveryGps
INT iStaticAveryPrevious = -1
INT iPgBack = 0
BOOL bColourPickingMode = FALSE
PROC DO_VEHICLE_SITE_FAIL_PAGE_REASON(VEHICLE_SITE_FAIL_REASON &reason)
//SlotID 1 = heading
//SlotID 2 = message text
SWITCH reason
CASE VSFR_INSUFFCIENT_RANK
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Web browser updating VSFR_INSUFFCIENT_RANK error text ")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRIRANK")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRIRANK2")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_INSUFFCIENT_RANK_PENDING
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Web browser updating VSFR_INSUFFCIENT_RANK_PENDING error text ")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRIRANK")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRIRANKC2")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_CANCELED
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Web browser updating VSFR_CANCELED error text ")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRPURC")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALVECBNE")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_UNSET
//REDIRECT TO MAIN SITES
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Web browser updating VSFR_UNSET - redirect to main sites ")
BREAK
CASE VSFR_NO_STORAGE
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Web browser updating VSFR_NO_STORAGE error text ")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
SWITCH GET_VEHICLE_STORAGE_TYPE(lastVehicleFailVehicle)
CASE VST_HANGAR
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HANGAR_MICHAEL, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HANGAR")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_MARINA
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_MARINA_MICHAEL, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_MARINA")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_HELI
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HELIPAD_MICHAEL, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HELIPAD")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
DEFAULT
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_CAR_MICHAEL, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_GARAGE")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
ENDSWITCH
BREAK
CASE CHAR_FRANKLIN
SWITCH GET_VEHICLE_STORAGE_TYPE(lastVehicleFailVehicle)
CASE VST_HANGAR
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HANGAR_FRANKLIN, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HANGAR")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_MARINA
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_MARINA_FRANKLIN, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_MARINA")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_HELI
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HELIPAD_FRANKLIN, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HELIPAD")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
DEFAULT
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_CAR_FRANKLIN, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_GARAGE")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
ENDSWITCH
BREAK
CASE CHAR_TREVOR
SWITCH GET_VEHICLE_STORAGE_TYPE(lastVehicleFailVehicle)
CASE VST_HANGAR
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HANGAR_TREVOR, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HANGAR")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_MARINA
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_MARINA_TREVOR, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_MARINA")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
CASE VST_HELI
IF GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_HELIPAD")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
DEFAULT
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_CAR_TREVOR, VEHGEN_S_FLAG_AVAILABLE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA_GARAGE")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
ENDIF
BREAK
ENDSWITCH
BREAK
DEFAULT
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITNSTA")
BREAK
ENDSWITCH
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_NO_MONEY
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Vehicle site no money fail page, VSFR_NO_MONEY")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITINSF")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_INVALID_CATEGORY
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Vehicle invalid catagory, VSFR_INVALID_CATEGORY")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITCATINVAL")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_ALREADY_OWNED
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Vehicle already owned, VSFR_ALREADY_OWNED")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
IF lastVehicleFailVehicle != BV_DLC_BALLISTIC_EQUIPMENT
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRDOW") //You have already unlocked this vehicle.
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ISITALRDOW") //You have already unlocked this item.
ENDIF
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_NO_INV_SPACE
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Vehicle no inv space, VSFR_NO_INV_SPACE")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRDOR")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_BIGASS_NOT_UNLOCKED
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Bigass Vehicle not unlocked, VSFR_BIGASS_NOT_UNLOCKED")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITALRDPEG")
END_SCALEFORM_MOVIE_METHOD()
BREAK
CASE VSFR_NOT_SAFE
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Vehicle not safe, VSFR_NOT_SAFE")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
IF lastVehicleFailVehicle != BV_DLC_BALLISTIC_EQUIPMENT
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VSITSAVTRB") //Sorry, you may not purchase a vehicle at this time. Please try again later.
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ISITSAVTRB") //Sorry, you may not purchase an item at this time. Please try again later.
ENDIF
END_SCALEFORM_MOVIE_METHOD()
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_FAIL_PAGE_REASON: Unknown fail reason ", lastVehicleFailReason)
BREAK
ENDSWITCH
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
reason = VSFR_UNSET
ENDPROC
PROC DO_VEHICLE_CONF_PAGE_TEXT(WEBSITE_INDEX_ENUM vsite)
WEBSITE_INDEX_ENUM site = vsite
site = site
//SlotID 1 = message text
//SlotID 2 = YES button text HUD_YES
//slotID 3 = NO button text HUD_NO
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITUSURE")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_270")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_271")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC DO_VEHICLE_FAIL_PAGE(WEBSITE_INDEX_ENUM siteID, VEHICLE_SITE_FAIL_REASON reason, SITE_BUYABLE_VEHICLE sbv, INT iPrice)
lastVehicleFailReason = reason
lastVehicleFailVehicle = sbv
IF reason = VSFR_NO_MONEY
IF g_bInMultiplayer
//AND (NOT NETWORK_IS_ACTIVITY_SESSION())//1596812
//AND IS_STORE_AVAILABLE_TO_USER()
MODEL_NAMES thisModel = GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)
TRIGGER_BROWSER_NAG_SCREEN(ENUM_TO_INT(thisModel), iPrice)
BROWSER_SET_CURSOR_STATE("BUSY")
ENDIF
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
CALL_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT")//1587282
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 sReason = ""
SWITCH reason
CASE VSFR_UNSET sReason = "UNSET" BREAK
CASE VSFR_NO_STORAGE sReason = "NO_STORAGE" BREAK
CASE VSFR_NO_MONEY sReason = "NO_MONEY" BREAK
CASE VSFR_INVALID_CATEGORY sReason = "INVALID_CATEGOR" BREAK
CASE VSFR_ALREADY_OWNED sReason = "ALREADY_OWNED" BREAK
CASE VSFR_NO_INV_SPACE sReason = "NO_INV_SPACE" BREAK
CASE VSFR_BIGASS_NOT_UNLOCKED sReason = "BIGASS_NOT_UNLO" BREAK
CASE VSFR_INSUFFCIENT_RANK sReason = "INSUF_RANK" BREAK
CASE VSFR_INSUFFCIENT_RANK_PENDING sReason = "INSUF_RANK_PEND" BREAK
CASE VSFR_CANCELED sReason = "CANCELED" BREAK
CASE VSFR_NOT_SAFE sReason = "NOT_SAFE" BREAK
DEFAULT
sReason = "???_"
sReason += ENUM_TO_INT(reason)
BREAK
ENDSWITCH
#ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE(\"", GET_WEBSITE_FROM_INDEX(siteID), "\", reason:VSFR_", sReason, ", veh:", GET_LABEL_BUYABLE_VEHICLE(sbv), " $", iPrice, ")")
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET GO_TO_WEBSITE("WWW_LEGENDARYMOTORSPORT_NET_S_PURCHASE_D_ERROR") BREAK
CASE WWW_ELITASTRAVEL_COM GO_TO_WEBSITE("WWW_ELITASTRAVEL_COM_S_PURCHASE_D_ERROR") BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF (sbv = BV_DLC_BIG_TRUCK)
GO_TO_WEBSITE("WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_TRUCK_D_PURCHASE_FAIL")
ELIF (sbv = BV_DLC_BIG_PLANE)
GO_TO_WEBSITE("WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_AVENGER_D_BUY_D_FAIL")
ELIF (sbv = BV_DLC_HACKER_TRUCK)
GO_TO_WEBSITE("WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_HACKERTRUCK_D_NOSALE")
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
GO_TO_WEBSITE("WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_SUB_D_PURCHASE_FAIL")
#ENDIF
ELSE
GO_TO_WEBSITE("WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_PURCHASE_D_ERROR")
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF (sbv = BV_DLC_BIG_YACHT)
GO_TO_WEBSITE("WWW_DOCKTEASE_COM_S_YACHT_D_PURCHASE_FAILED")
ELSE
GO_TO_WEBSITE("WWW_DOCKTEASE_COM_S_PURCHASE_D_ERROR")
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM GO_TO_WEBSITE("WWW_PANDMCYCLES_COM_S_PURCHASE_D_ERROR") BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM GO_TO_WEBSITE("WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_PURCHASE_D_ERROR") BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM GO_TO_WEBSITE("WWW_BENNYSORIGINALMOTORWORKS_COM_S_PURCHASE_D_ERROR") BREAK
CASE WWW_ARENAWAR_TV GO_TO_WEBSITE("WWW_ARENAWAR_TV_S_PURCHASE_D_FAILED") BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "MISSING VEHICLE SITE FAIL PAGE")
BREAK
ENDSWITCH
IF sbv = BV_DLC_BIG_TRUCK
SETUP_TRUCK_GLOBALS_FROM_STATS()
ENDIF
IF sbv = BV_DLC_BIG_PLANE
SETUP_PLANE_GLOBALS_FROM_STATS()
ENDIF
IF sbv = BV_DLC_HACKER_TRUCK
SETUP_HACKER_TRUCK_GLOBALS_FROM_STATS()
ENDIF
#IF FEATURE_HEIST_ISLAND
IF sbv = BV_IH_KOSATKA
SETUP_KOSATKA_GLOBALS_FROM_STATS()
ENDIF
#ENDIF
ENDPROC
FUNC STRING GET_VEHICLE_PURCHASE_SUCCESS_PAGE(WEBSITE_INDEX_ENUM siteID, SITE_BUYABLE_VEHICLE sbv)
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET RETURN "WWW_LEGENDARYMOTORSPORT_NET_S_PURCHASE_D_SUCCESS" BREAK
CASE WWW_ELITASTRAVEL_COM RETURN "WWW_ELITASTRAVEL_COM_S_PURCHASE_D_SUCCESS" BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF (sbv = BV_DLC_BIG_TRUCK)
RETURN "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_TRUCK_D_PURCHASE_OK"
ELIF (sbv = BV_DLC_BIG_PLANE)
RETURN "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_AVENGER_D_BUY_D_OK"
ELIF (sbv = BV_DLC_HACKER_TRUCK)
RETURN "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_HACKERTRUCK_D_SOLD"
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
RETURN "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_SUB_D_PURCHASE_OK"
#ENDIF
ELSE
RETURN "WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM_S_PURCHASE_D_SUCCESS"
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF (sbv = BV_DLC_BIG_YACHT)
RETURN "WWW_DOCKTEASE_COM_S_YACHT_D_PURCHASE_SUCCESS"
ELSE
RETURN "WWW_DOCKTEASE_COM_S_PURCHASE_D_SUCCESS"
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM RETURN "WWW_PANDMCYCLES_COM_S_PURCHASE_D_SUCCESS" BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM RETURN "WWW_SOUTHERNSANANDREASSUPERAUTOS_COM_S_PURCHASE_D_SUCCESS" BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM RETURN "WWW_BENNYSORIGINALMOTORWORKS_COM_S_PURCHASE_D_SUCCESS" BREAK
CASE WWW_ARENAWAR_TV RETURN "WWW_ARENAWAR_TV_S_VEHICLE_D_PURCHASED" BREAK
ENDSWITCH
CASSERTLN(DEBUG_INTERNET, "MISSING VEHICLE SITE SUCCESS PAGE")
RETURN ""
ENDFUNC
SITE_BUYABLE_VEHICLE confSbv
INT confMpSlotIndex = -1, confMPDisplayIndex = -1
BOOL confCheck = FALSE
INT iLastPurchasedVehicleSlot
GENERIC_TRANSACTION_STATE eChipsTransactionState = TRANSACTION_STATE_DEFAULT
INT iYachtModPrice = 0
INT iYachtFlagPrice = 0
INT iYachtColourPrice = 0
INT iYachtLightingPrice = 0
INT iYachtFixturePrice = 0
INT iYachtNamePrice = 0
STRUCT OFFICE_PRICE_STRUCT
INT iStylePrice = 0
INT iPersonnelPrice = 0
INT iNamePrice = 0
INT iFontPrice = 0
INT iColourPrice = 0
INT iGunLockerPrice = 0
INT iVaultPrice = 0
INT iAccommodationPrice = 0
INT iGarage1StylePrice = 0
INT iGarage1LightingPrice = 0
INT iGarage1NumberPrice = 0
INT iGarage2StylePrice = 0
INT iGarage2LightingPrice = 0
INT iGarage2NumberPrice = 0
INT iGarage3StylePrice = 0
INT iGarage3LightingPrice = 0
INT iGarage3NumberPrice = 0
INT iModshopPrice = 0
ENDSTRUCT
OFFICE_PRICE_STRUCT sOffice_price_struct
STRUCT CLUBHOUSE_PRICE_STRUCT
INT iWallPrice = 0
INT iHangingPrice = 0
INT iFurniturePrice = 0
INT iStylePrice = 0
INT iNamePrice = 0
INT iFontPrice = 0
INT iFontColourPrice = 0
INT iHideSignagePrice = 0
INT iEmblemPrice = 0
INT iGunLockerPrice = 0
INT iGaragePrice = 0
ENDSTRUCT
CLUBHOUSE_PRICE_STRUCT sClubhouse_price_struct
STRUCT BUNKER_PRICE_STRUCT
INT iDecorPrice = 0
INT iAccommodationPrice = 0
INT iFiringRangePrice = 0
INT iGunLockerPrice = 0
INT iTransportationPrice = 0
ENDSTRUCT
BUNKER_PRICE_STRUCT sBunker_price_struct
TRUCK_PRICE_STRUCT sTruck_price_struct
STRUCT HANGAR_PRICE_STRUCT
INT iFlooringPrice = 0
INT iAccommodationPrice = 0
INT iFurniturePrice = 0
INT iModshopPrice = 0
INT iColourPrice = 0
INT iLightingPrice = 0
ENDSTRUCT
HANGAR_PRICE_STRUCT sHangar_price_struct
STRUCT DEFUNCT_BASE_PRICE_STRUCT
INT iStylePrice = 0
INT iGraphicsPrice = 0
INT iOrbitalWeaponPrice = 0
INT iPersonalQuartersPrice = 0
INT iSecurityRoomPrice = 0
INT iLoungePrice = 0
INT iPrivicyGlassPrice = 0
ENDSTRUCT
DEFUNCT_BASE_PRICE_STRUCT sDefunct_base_price_struct
PLANE_PRICE_STRUCT sPlane_price_struct
NIGHTCLUB_PRICE_STRUCT sNightclub_price_struct
HACKER_TRUCK_PRICE_STRUCT sHacker_truck_price_struct
ARENA_GARAGE_PRICE_STRUCT sArena_garage_price_struct
CASINO_APT_PRICE_STRUCT sCasino_apt_price_struct
ARCADE_PRICE_STRUCT sArcade_price_struct
KOSATKA_PRICE_STRUCT sKosatka_price_struct
AUTO_SHOP_PRICE_STRUCT sAutoShop_price_struct
#IF FEATURE_FIXER
FIXER_HQ_PRICE_STRUCT sFixerHQ_price_struct
#ENDIF
FUNC BOOL DOES_ITEM_MATCH_SELLING_ITEM(INT iItemId, INT iSellingItemId)
IF iItemId = iSellingItemId
RETURN TRUE
ENDIF
IF IS_CATALOG_ITEM_AN_OFFICE_PROPERTY_ITEM(iItemId)
IF (iItemId = HASH("PR_MP_PROP_OFF2_t0_v0") AND iSellingItemId = HASH("PR_MP_PROP_OFF2_t0_v0_CESP"))
OR (iItemId = HASH("PR_MP_PROP_OFF2_t0_v0_CESP") AND iSellingItemId = HASH("PR_MP_PROP_OFF2_t0_v0"))
RETURN TRUE
ENDIF
ELIF IS_CATALOG_ITEM_AN_OFFICE_GARAGE_PROPERTY_ITEM(iItemId)
ELIF IS_CATALOG_ITEM_A_CLUBHOUSE_PROPERTY_ITEM(iItemId)
IF (iItemId = HASH("PR_MP_PROP_CLUBH4_t0_v0") AND iSellingItemId = HASH("PR_MP_PROP_CLUBH4_t0_v0_CESP"))
OR (iItemId = HASH("PR_MP_PROP_CLUBH4_t0_v0_CESP") AND iSellingItemId = HASH("PR_MP_PROP_CLUBH4_t0_v0"))
RETURN TRUE
ENDIF
ELIF IS_CATALOG_ITEM_A_BUNKER_ITEM(iItemID)
IF (iItemId = HASH("FACTORY_INDEX_28_t0_v0") AND iSellingItemId = HASH("FACTORY_INDEX_28_t0_v0_CESP"))
OR (iItemId = HASH("FACTORY_INDEX_28_t0_v0_CESP") AND iSellingItemId = HASH("FACTORY_INDEX_28_t0_v0"))
RETURN TRUE
ENDIF
ELSE
IF (iItemId = HASH("PR_MP_PROP_18_t0_v0") AND iSellingItemId = HASH("PR_MP_PROP_18_t0_v0_CESP"))
OR (iItemId = HASH("PR_MP_PROP_18_t0_v0_CESP") AND iSellingItemId = HASH("PR_MP_PROP_18_t0_v0"))
RETURN TRUE
ENDIF
IF (iItemId = HASH("PR_MP_PROP_62_t0_v0") AND iSellingItemId = HASH("PR_MP_PROP_62_t0_v0_CESP"))
OR (iItemId = HASH("PR_MP_PROP_62_t0_v0_CESP") AND iSellingItemId = HASH("PR_MP_PROP_62_t0_v0"))
RETURN TRUE
ENDIF
ENDIF
IF (g_iPotentialFixForMatchingPropertySellingId != 0)
AND (g_iPotentialFixForMatchingPropertySellingId_CESP != 0)
IF (iItemId = g_iPotentialFixForMatchingPropertySellingId AND iSellingItemId = g_iPotentialFixForMatchingPropertySellingId_CESP)
OR (iItemId = g_iPotentialFixForMatchingPropertySellingId_CESP AND iSellingItemId = g_iPotentialFixForMatchingPropertySellingId)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PROCESSING_INTERNET_SHOPPING_BASKET(INT &iProcessSuccess, INT iPrice, INT iStatValue,
SHOP_ITEM_CATEGORIES eCategory, ITEM_ACTION_TYPES eAction,
INT iItemId, INT iInventoryKey, INT iDoCouponHash,
INT iSellingPrice = 0, INT iSellingItemId = 0, VEHICLE_INDEX tempVehID = NULL, INT iItemInteriorID = -1, INT iInventoryInteriorID = -1)
IF bProcessingBasket
IF NOT DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket transaction failed - terminate loop!")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket transaction failed - session pending!")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
SWITCH iProcessingBasketStage
// Add item to basket
CASE SHOP_BASKET_STAGE_ADD
INT iCouponPrice
iCouponPrice = iPrice
BOOL bCouponPriceZero
IF IS_CATALOG_ITEM_AN_OFFICE_PROPERTY_ITEM(iItemId)
iCouponPrice += (sOffice_price_struct.iStylePrice+sOffice_price_struct.iPersonnelPrice+sOffice_price_struct.iNamePrice+sOffice_price_struct.iFontPrice+sOffice_price_struct.iColourPrice+sOffice_price_struct.iGunLockerPrice+sOffice_price_struct.iVaultPrice+sOffice_price_struct.iAccommodationPrice+sOffice_price_struct.iModshopPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Office: $", iCouponPrice)
ELIF IS_CATALOG_ITEM_A_CLUBHOUSE_PROPERTY_ITEM(iItemId)
iCouponPrice += (sClubhouse_price_struct.iWallPrice+sClubhouse_price_struct.iHangingPrice+sClubhouse_price_struct.iFurniturePrice+sClubhouse_price_struct.iStylePrice+sClubhouse_price_struct.iNamePrice+sClubhouse_price_struct.iFontPrice+sClubhouse_price_struct.iFontColourPrice+sClubhouse_price_struct.iHideSignagePrice+sClubhouse_price_struct.iEmblemPrice+sClubhouse_price_struct.iGunLockerPrice+sClubhouse_price_struct.iGaragePrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Clubhouse: $", iCouponPrice)
ELIF IS_CATALOG_ITEM_AN_OFFICE_GARAGE_PROPERTY_ITEM(iItemId)
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL1)
iCouponPrice += (sOffice_price_struct.iGarage1StylePrice+sOffice_price_struct.iGarage1LightingPrice+sOffice_price_struct.iGarage1NumberPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Garage Lvl1: $", iCouponPrice)
ELIF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL2)
iCouponPrice += (sOffice_price_struct.iGarage2StylePrice+sOffice_price_struct.iGarage2LightingPrice+sOffice_price_struct.iGarage2NumberPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Garage Lvl2: $", iCouponPrice)
ELIF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL3)
iCouponPrice += (sOffice_price_struct.iGarage3StylePrice+sOffice_price_struct.iGarage3LightingPrice+sOffice_price_struct.iGarage3NumberPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Garage Lvl3: $", iCouponPrice)
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Garage Lvl Unknown: $", iCouponPrice)
ENDIF
ELIF IS_CATALOG_ITEM_A_TRUCK_ITEM(iItemId)
iCouponPrice = (sTruck_price_struct.iCabPrice+sTruck_price_struct.iSection1Price+sTruck_price_struct.iSection2Price+sTruck_price_struct.iSection3Price+sTruck_price_struct.iColourPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Truck: $", iCouponPrice,
" (iCabPrice:$", sTruck_price_struct.iCabPrice,
"+iSection1Price:$", sTruck_price_struct.iSection1Price,
"+iSection2Price:$", sTruck_price_struct.iSection2Price,
"+iSection3Price:$", sTruck_price_struct.iSection3Price,
"+iColourPrice:$", sTruck_price_struct.iColourPrice, ")")
ELIF IS_CATALOG_ITEM_A_BUNKER_ITEM(iItemId)
iCouponPrice += (sBunker_price_struct.iDecorPrice+sBunker_price_struct.iAccommodationPrice+sBunker_price_struct.iFiringRangePrice+sBunker_price_struct.iGunLockerPrice+sBunker_price_struct.iTransportationPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Bunker: $", iCouponPrice,
" (iDecorPrice:$", sBunker_price_struct.iDecorPrice,
"+iAccommodationPrice:$", sBunker_price_struct.iAccommodationPrice,
"+iFiringRangePrice:$", sBunker_price_struct.iFiringRangePrice,
"+iGunLockerPrice:$", sBunker_price_struct.iGunLockerPrice,
"+iTransportationPrice:$", sBunker_price_struct.iTransportationPrice, ")")
ELIF IS_CATALOG_ITEM_A_HANGAR_ITEM(iItemId)
iCouponPrice += (sHangar_price_struct.iFlooringPrice+sHangar_price_struct.iAccommodationPrice+sHangar_price_struct.iFurniturePrice+sHangar_price_struct.iModshopPrice+sHangar_price_struct.iColourPrice+sHangar_price_struct.iLightingPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Hangar: $", iCouponPrice)
ELIF IS_CATALOG_ITEM_A_DEFUNCT_BASE_ITEM(iItemId)
iCouponPrice += (sDefunct_base_price_struct.iPersonalQuartersPrice+sDefunct_base_price_struct.iOrbitalWeaponPrice+sDefunct_base_price_struct.iSecurityRoomPrice+sDefunct_base_price_struct.iLoungePrice+sDefunct_base_price_struct.iPrivicyGlassPrice+sDefunct_base_price_struct.iStylePrice+sDefunct_base_price_struct.iGraphicsPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Defunct Base: $", iCouponPrice,
" (iPersonalQuartersPrice:$", sDefunct_base_price_struct.iPersonalQuartersPrice,
"+iOrbitalWeaponPrice:$", sDefunct_base_price_struct.iOrbitalWeaponPrice,
"+iSecurityRoomPrice:$", sDefunct_base_price_struct.iSecurityRoomPrice,
"+iLoungePrice:$", sDefunct_base_price_struct.iLoungePrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Defunct Base... iPrivicyGlassPrice:$", sDefunct_base_price_struct.iPrivicyGlassPrice,
"+iStylePrice:$", sDefunct_base_price_struct.iStylePrice,
"+iGraphicsPrice:$", sDefunct_base_price_struct.iGraphicsPrice, ")")
ELIF IS_CATALOG_ITEM_A_PLANE_ITEM(iItemId)
iCouponPrice = (sPlane_price_struct.iAvengerPrice+sPlane_price_struct.iGunTurretPrice+sPlane_price_struct.iVehShopPrice+sPlane_price_struct.iWeaShopPrice+sPlane_price_struct.iInteriorPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Plane: $", iCouponPrice,
" (iAvengerPrice:$", sPlane_price_struct.iAvengerPrice,
"+iGunTurretPrice:$", sPlane_price_struct.iGunTurretPrice,
"+iVehShopPrice:$", sPlane_price_struct.iVehShopPrice,
"+iWeaShopPrice:$", sPlane_price_struct.iWeaShopPrice,
"+iInteriorPrice:$", sPlane_price_struct.iInteriorPrice, ")")
ELIF IS_CATALOG_ITEM_A_NIGHTCLUB_ITEM(iItemId)
iCouponPrice += (sNightclub_price_struct.iStylePrice+sNightclub_price_struct.iLightingPrice+sNightclub_price_struct.iDancersPrice+sNightclub_price_struct.iDryIcePrice+sNightclub_price_struct.iStoragePrice+sNightclub_price_struct.iGaragePrice+sNightclub_price_struct.iNamePrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Nightclub: $", iCouponPrice,
" (iStylePrice:$", sNightclub_price_struct.iStylePrice,
"+iLightingPrice:$", sNightclub_price_struct.iLightingPrice,
"+iDancersPrice:$", sNightclub_price_struct.iDancersPrice,
"+iDryIcePrice:$", sNightclub_price_struct.iDryIcePrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Nightclub... iStoragePrice:$", sNightclub_price_struct.iStoragePrice,
"+iGaragePrice:$", sNightclub_price_struct.iGaragePrice,
"+iNamePrice:$", sNightclub_price_struct.iNamePrice, ")")
ELIF IS_CATALOG_ITEM_A_HACKER_TRUCK_ITEM(iItemId)
iCouponPrice = (sHacker_truck_price_struct.iCabPrice+sHacker_truck_price_struct.iDecalPrice+sHacker_truck_price_struct.iTintPrice+sHacker_truck_price_struct.iMissileLauncherPrice+sHacker_truck_price_struct.iDroneStationPrice+sHacker_truck_price_struct.iWeaShopPrice+sHacker_truck_price_struct.iVehShopPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Hacker Truck: $", iCouponPrice,
" (iCabPrice:$", sHacker_truck_price_struct.iCabPrice,
"+iDecalPrice:$", sHacker_truck_price_struct.iDecalPrice,
"+iTintPrice:$", sHacker_truck_price_struct.iTintPrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Hacker Truck... iMissileLauncherPrice:$", sHacker_truck_price_struct.iMissileLauncherPrice,
"+iDroneStationPrice:$", sHacker_truck_price_struct.iDroneStationPrice,
"+iWeaShopPrice:$", sHacker_truck_price_struct.iWeaShopPrice,
"+iVehShopPrice:$", sHacker_truck_price_struct.iVehShopPrice, ")")
#IF FEATURE_HEIST_ISLAND
ELIF IS_CATALOG_ITEM_A_KOSATKA_ITEM(iItemId)
iCouponPrice = (sKosatka_price_struct.iOwnedPrice+sKosatka_price_struct.iColourPrice+sKosatka_price_struct.iFlagPrice+sKosatka_price_struct.iSonarPrice+sKosatka_price_struct.iMissilesPrice+sKosatka_price_struct.iWeaShopPrice+sKosatka_price_struct.iAvisaPrice+sKosatka_price_struct.iSeaSparrow2Price)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Kosatka: $", iCouponPrice,
" (sKosatka_price_struct.iOwnedPrice:$", sKosatka_price_struct.iOwnedPrice,
"+sKosatka_price_struct.iColourPrice:$", sKosatka_price_struct.iColourPrice,
"+sKosatka_price_struct.iFlagPrice:$", sKosatka_price_struct.iFlagPrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Kosatka... sKosatka_price_struct.iSonarPrice:$", sKosatka_price_struct.iSonarPrice,
"+sKosatka_price_struct.iMissilesPrice:$", sKosatka_price_struct.iMissilesPrice,
"+sKosatka_price_struct.iWeaShopPrice:$", sKosatka_price_struct.iWeaShopPrice,
"+sKosatka_price_struct.iAvisaPrice:$", sKosatka_price_struct.iAvisaPrice, ")")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Kosatka... sKosatka_price_struct.iSeaSparrow2Price$", sKosatka_price_struct.iSeaSparrow2Price)
#ENDIF
ELIF IS_CATALOG_ITEM_AN_ARENA_GARAGE_ITEM(iItemId)
iCouponPrice += (sArena_garage_price_struct.iStylePrice+sArena_garage_price_struct.iGraphicsPrice+sArena_garage_price_struct.iColourPrice+sArena_garage_price_struct.iExpansionFloorB1Price+sArena_garage_price_struct.iExpansionFloorB2Price+sArena_garage_price_struct.iBennyMechanicPrice+sArena_garage_price_struct.iWeaponMechanicPrice+sArena_garage_price_struct.iPersonalQuartersPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Arena Garage: $", iCouponPrice,
" (iStylePrice:$", sArena_garage_price_struct.iStylePrice,
"+iGraphicsPrice:$", sArena_garage_price_struct.iGraphicsPrice,
"+iColourPrice:$", sArena_garage_price_struct.iColourPrice,
"+iExpansionFloorB1Price:$", sArena_garage_price_struct.iExpansionFloorB1Price,
"+iExpansionFloorB2Price:$", sArena_garage_price_struct.iExpansionFloorB2Price, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Arena Garage... iBennyMechanicPrice:$", sArena_garage_price_struct.iBennyMechanicPrice,
"+iWeaponMechanicPrice:$", sArena_garage_price_struct.iWeaponMechanicPrice,
"+iPersonalQuartersPrice:$", sArena_garage_price_struct.iPersonalQuartersPrice, ")")
ELIF IS_CATALOG_ITEM_AN_CASINO_APT_ITEM(iItemId)
iCouponPrice += (sCasino_apt_price_struct.iColourOptionPrice+sCasino_apt_price_struct.iStyleOptionPrice+sCasino_apt_price_struct.iLoungePrice+sCasino_apt_price_struct.iBarPrice+sCasino_apt_price_struct.iDealerPrice+sCasino_apt_price_struct.iBedroomPrice+sCasino_apt_price_struct.iMediaroomPrice+sCasino_apt_price_struct.iSpaPrice+sCasino_apt_price_struct.iOfficePrice+sCasino_apt_price_struct.iGaragePrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Casino Apt: $", iCouponPrice,
" (iColourOptionPrice:$", sCasino_apt_price_struct.iColourOptionPrice,
"+iStyleOptionPrice:$", sCasino_apt_price_struct.iStyleOptionPrice,
"+iLoungePrice:$", sCasino_apt_price_struct.iLoungePrice,
"+iBarPrice:$", sCasino_apt_price_struct.iBarPrice,
"+iDealerPrice:$", sCasino_apt_price_struct.iDealerPrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Casino Apt... iBennyMechanicPrice:$", sCasino_apt_price_struct.iBedroomPrice,
"+iMediaroomPrice:$", sCasino_apt_price_struct.iMediaroomPrice,
"+iSpaPrice:$", sCasino_apt_price_struct.iSpaPrice,
"+iOfficePrice:$", sCasino_apt_price_struct.iOfficePrice,
"+iGaragePrice:$", sCasino_apt_price_struct.iGaragePrice, ")")
ELIF IS_CATALOG_ITEM_AN_ARCADE_ITEM(iItemId)
iCouponPrice += (sArcade_price_struct.iFloorPrice + sArcade_price_struct.iCeilingPrice + sArcade_price_struct.iWallPrice + sArcade_price_struct.iPersonalQuartersPrice + sArcade_price_struct.iGaragePrice + sArcade_price_struct.iNeonLightsPrice + sArcade_price_struct.iScreensPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Arcade: $", iCouponPrice,
" (iFloorPrice:$", sArcade_price_struct.iFloorPrice,
"+iCeilingPrice:$", sArcade_price_struct.iCeilingPrice,
"+iWallPrice:$", sArcade_price_struct.iWallPrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Arcade... iPersonalQuartersPrice:$", sArcade_price_struct.iPersonalQuartersPrice,
"+iGaragePrice:$", sArcade_price_struct.iGaragePrice,
"+iNeonLightsPrice:$", sArcade_price_struct.iNeonLightsPrice,
"+iScreensPrice:$", sArcade_price_struct.iScreensPrice, ")")
ELIF IS_CATALOG_ITEM_AN_AUTO_SHOP_ITEM(iItemId)
iCouponPrice += (sAutoShop_price_struct.iWallPrice + sAutoShop_price_struct.iTintPrice + sAutoShop_price_struct.iEmblemPrice + sAutoShop_price_struct.iCrewNamePrice + sAutoShop_price_struct.iStaff1Price + sAutoShop_price_struct.iStaff2Price + sAutoShop_price_struct.iCarLiftPrice + sAutoShop_price_struct.iPersonalQuartersPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Auto Shop: $", iCouponPrice,
"+iWallPrice:$", sAutoShop_price_struct.iWallPrice,
"+iStaff1Price:$", sAutoShop_price_struct.iStaff1Price, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Auto Shop... iTintPrice:$", sAutoShop_price_struct.iTintPrice,
"+iEmblemPrice:$", sAutoShop_price_struct.iEmblemPrice,
"+iCrewNamePrice:$", sAutoShop_price_struct.iCrewNamePrice, ")")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Auto Shop... iStaff2Price:$", sAutoShop_price_struct.iStaff2Price,
"+iCarLiftPrice:$", sAutoShop_price_struct.iCarLiftPrice,
"+iPersonalQuartersPrice:$", sAutoShop_price_struct.iPersonalQuartersPrice, ")")
#IF FEATURE_FIXER
ELIF IS_CATALOG_ITEM_A_FIXER_HQ_ITEM(iItemId)
iCouponPrice += (sFixerHQ_price_struct.iArtPrice + sFixerHQ_price_struct.iWallpaperPrice + sFixerHQ_price_struct.iTintPrice + sFixerHQ_price_struct.iVehWorkshopPrice + sFixerHQ_price_struct.iArmoryPrice + sFixerHQ_price_struct.iPersonalQuartersPrice)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Fixer HQ: $", iCouponPrice,
"+iArtPrice:$", sFixerHQ_price_struct.iArtPrice,
"+iWallpaperPrice:$", sFixerHQ_price_struct.iWallpaperPrice, "...")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Fixer HQ... iTintPrice:$", sFixerHQ_price_struct.iTintPrice,
"+iVehWorkshopPrice:$", sFixerHQ_price_struct.iVehWorkshopPrice,
"+iArmoryPrice:$", sFixerHQ_price_struct.iArmoryPrice, ")")
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Fixer HQ... iPersonalQuartersPrice:$", sFixerHQ_price_struct.iPersonalQuartersPrice, ")")
#ENDIF
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Other: $", iCouponPrice)
ENDIF
bCouponPriceZero = FALSE
IF iSellingItemId != 0
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId)
iCouponPrice -= iSellingPrice
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Selling: $", iCouponPrice, ", iSellingPrice $", iSellingPrice)
ENDIF
IF iCouponPrice < 0
IF (eCategory = CATEGORY_INVENTORY_PROPERTIE OR eCategory = CATEGORY_INVENTORY_WAREHOUSE)
IF IS_CATALOG_ITEM_A_CLUBHOUSE_PROPERTY_ITEM(iItemId)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Selling Clubhouse, dont reduce: $", iCouponPrice)
ELIF IS_CATALOG_ITEM_AN_APARTMENT_OR_GARAGE(iItemId)
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Selling Apt or Garage, dont reduce: $", iCouponPrice)
ELSE
iCouponPrice = 0
bCouponPriceZero = TRUE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] iCouponPrice Selling Reduced: $", iCouponPrice)
ENDIF
ENDIF
ENDIF
ENDIF
IF iDoCouponHash != 0
SWITCH iDoCouponHash
CASE HASH("PM_COUPON_CAR_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_PLANE_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_MIL_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PO_COUPON_CAR_XMAS2017")
iCouponPrice = 0
bCouponPriceZero = TRUE
BREAK
CASE HASH("PO_COUPON_CAR_XMAS2018")
iCouponPrice = 0
bCouponPriceZero = TRUE
BREAK
CASE HASH("PO_COUPON_HELI_XMAS2018")
iCouponPrice = 0
bCouponPriceZero = TRUE
BREAK
CASE HASH("PO_COUPON_CAR2_XMAS2018")
iCouponPrice = 0
bCouponPriceZero = TRUE
BREAK
CASE HASH("PM_COUPON_CASINO_PLANE_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_CASINO_BOAT_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_CASINO_CAR_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_CASINO_CAR_SITE2")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_CASINO_MIL_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE HASH("PM_COUPON_CASINO_BIKE_SITE")
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "[BASKET] unknown coupon hash ", iDoCouponHash, " for temp price")
BREAK
ENDSWITCH
ENDIF
// Override the players cash.
INT iWalletAmount, iBankAmount
IF NOT bBypassFakeCash
INT iTempPrice
iWalletAmount = 0
iBankAmount = 0
iTempPrice = iCouponPrice
// Bank first
IF (NETWORK_GET_VC_BANK_BALANCE() > 0)
IF NETWORK_GET_VC_BANK_BALANCE() >= iTempPrice
iBankAmount = iTempPrice
ELSE
iBankAmount = iTempPrice-(iTempPrice-NETWORK_GET_VC_BANK_BALANCE())
ENDIF
iTempPrice -= iBankAmount
ENDIF
IF iTempPrice > 0
IF (NETWORK_GET_VC_WALLET_BALANCE() > 0)
IF NETWORK_GET_VC_WALLET_BALANCE() >= iTempPrice
iWalletAmount = iTempPrice
ELSE
iWalletAmount = iTempPrice-(iTempPrice-NETWORK_GET_VC_WALLET_BALANCE())
ENDIF
iTempPrice -= iWalletAmount
ENDIF
ENDIF
IF iTempPrice > 0
CASSERTLN(DEBUG_INTERNET, "[BASKET] PROCESSING_INTERNET_SHOPPING_BASKET - Player can't afford this item! iTempPrice=", iTempPrice, ", iWalletAmount=", iWalletAmount, ", iBankAmount=", iBankAmount)
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] PROCESSING_INTERNET_SHOPPING_BASKET - Player can afford this item... iTempPrice=", iTempPrice,
", iWalletAmount=", iWalletAmount, ", iBankAmount=", iBankAmount,
" (iCouponPrice=", iCouponPrice, ")")
ENDIF
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] PROCESSING_INTERNET_SHOPPING_BASKET - bypass fake cash (iCouponPrice=", iCouponPrice, ")")
iWalletAmount = 0
iBankAmount = 0
ENDIF
IF eCategory = CATEGORY_INVENTORY_PROPERTIE
IF IS_CATALOG_ITEM_AN_OFFICE_PROPERTY_ITEM(iItemId)
INT g_sOfficeDataStruct_iOfficeNameID
g_sOfficeDataStruct_iOfficeNameID = g_sOfficeDataStruct.iOfficeNameID
INT g_sOfficeDataStruct_iStyle, g_sOfficeDataStruct_iPersonnel, g_sOfficeDataStruct_iFont, g_sOfficeDataStruct_iColour, g_sOfficeDataStruct_iGunLocker, g_sOfficeDataStruct_iVault, g_sOfficeDataStruct_iAccommodation
INT g_sOfficeDataStruct_iGarage1Style, g_sOfficeDataStruct_iGarage1Lighting, g_sOfficeDataStruct_iGarage1Number, g_sOfficeDataStruct_iGarage2Style, g_sOfficeDataStruct_iGarage2Lighting, g_sOfficeDataStruct_iGarage2Number, g_sOfficeDataStruct_iGarage3Style, g_sOfficeDataStruct_iGarage3Lighting, g_sOfficeDataStruct_iGarage3Number, g_sOfficeDataStruct_iModshop
GET_SCALEFORM_OFFICE_DATA(g_sOfficeDataStruct_iStyle, g_sOfficeDataStruct_iPersonnel, g_sOfficeDataStruct_iFont, g_sOfficeDataStruct_iColour, g_sOfficeDataStruct_iGunLocker, g_sOfficeDataStruct_iVault, g_sOfficeDataStruct_iAccommodation, g_sOfficeDataStruct_iGarage1Style, g_sOfficeDataStruct_iGarage1Lighting, g_sOfficeDataStruct_iGarage1Number, g_sOfficeDataStruct_iGarage2Style, g_sOfficeDataStruct_iGarage2Lighting, g_sOfficeDataStruct_iGarage2Number, g_sOfficeDataStruct_iGarage3Style, g_sOfficeDataStruct_iGarage3Lighting, g_sOfficeDataStruct_iGarage3Number, g_sOfficeDataStruct_iModshop)
g_sOfficeDataStruct_iStyle -= 1
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new office property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iStyle = ", g_sOfficeDataStruct_iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sOffice_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iPersonnel = ", g_sOfficeDataStruct_iPersonnel)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonnelPrice = ", sOffice_price_struct.iPersonnelPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iOfficeNameID = ", g_sOfficeDataStruct_iOfficeNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sOffice_price_struct.iNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iFont = ", g_sOfficeDataStruct_iFont)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontPrice = ", sOffice_price_struct.iFontPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iColour = ", g_sOfficeDataStruct_iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sOffice_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGunLocker = ", g_sOfficeDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sOffice_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iVault = ", g_sOfficeDataStruct_iVault)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVaultPrice = ", sOffice_price_struct.iVaultPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iAccommodation = ", g_sOfficeDataStruct_iAccommodation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sOffice_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iModshop = ", g_sOfficeDataStruct_iModshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModshopPrice = ", sOffice_price_struct.iModshopPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new office property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new office property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new office property iSellingItemId ", iSellingItemId)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new office property iItemInteriorID ", iItemInteriorID)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new office property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new office property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] - Ignore new office property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_OFFICE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sOfficeDataStruct_iStyle, sOffice_price_struct.iStylePrice,
g_sOfficeDataStruct_iPersonnel, sOffice_price_struct.iPersonnelPrice,
g_sOfficeDataStruct_iOfficeNameID, sOffice_price_struct.iNamePrice,
g_sOfficeDataStruct_iFont, sOffice_price_struct.iFontPrice,
g_sOfficeDataStruct_iColour, sOffice_price_struct.iColourPrice,
g_sOfficeDataStruct_iGunLocker, sOffice_price_struct.iGunLockerPrice,
g_sOfficeDataStruct_iVault, sOffice_price_struct.iVaultPrice,
g_sOfficeDataStruct_iAccommodation, sOffice_price_struct.iAccommodationPrice,
// g_sOfficeDataStruct_iGarage1, sOffice_price_struct.iGarage1Price,
// g_sOfficeDataStruct_iGarage2, sOffice_price_struct.iGarage2Price,
// g_sOfficeDataStruct_iGarage3, sOffice_price_struct.iGarage3Price,
g_sOfficeDataStruct_iModshop, sOffice_price_struct.iModshopPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New office failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start office basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add office item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding office property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iStyle = ", g_sOfficeDataStruct_iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sOffice_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iPersonnel = ", g_sOfficeDataStruct_iPersonnel)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonnelPrice = ", sOffice_price_struct.iPersonnelPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iOfficeNameID = ", g_sOfficeDataStruct_iOfficeNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sOffice_price_struct.iNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iFont = ", g_sOfficeDataStruct_iFont)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontPrice = ", sOffice_price_struct.iFontPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iColour = ", g_sOfficeDataStruct_iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sOffice_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGunLocker = ", g_sOfficeDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sOffice_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iVault = ", g_sOfficeDataStruct_iVault)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVaultPrice = ", sOffice_price_struct.iVaultPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iAccommodation = ", g_sOfficeDataStruct_iAccommodation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sOffice_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iModshop = ", g_sOfficeDataStruct_iModshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModshopPrice = ", sOffice_price_struct.iModshopPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added office property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add office property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore office property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_OFFICE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sOfficeDataStruct_iStyle, sOffice_price_struct.iStylePrice,
g_sOfficeDataStruct_iPersonnel, sOffice_price_struct.iPersonnelPrice,
g_sOfficeDataStruct_iOfficeNameID, sOffice_price_struct.iNamePrice,
g_sOfficeDataStruct_iFont, sOffice_price_struct.iFontPrice,
g_sOfficeDataStruct_iColour, sOffice_price_struct.iColourPrice,
g_sOfficeDataStruct_iGunLocker, sOffice_price_struct.iGunLockerPrice,
g_sOfficeDataStruct_iVault, sOffice_price_struct.iVaultPrice,
g_sOfficeDataStruct_iAccommodation, sOffice_price_struct.iAccommodationPrice,
g_sOfficeDataStruct_iModshop, sOffice_price_struct.iModshopPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New office failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start office basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_A_CLUBHOUSE_PROPERTY_ITEM(iItemId)
INT g_sClubhouseDataStruct_iClubhouseNameID
g_sClubhouseDataStruct_iClubhouseNameID = g_sClubhouseDataStruct.iClubhouseNameID
INT g_sClubhouseDataStruct_iWall, g_sClubhouseDataStruct_iHanging, g_sClubhouseDataStruct_iFurniture, g_sClubhouseDataStruct_iColour, g_sClubhouseDataStruct_iFont, g_sClubhouseDataStruct_iFontColour, g_sClubhouseDataStruct_iEmblem, g_sClubhouseDataStruct_iHideSinage, g_sClubhouseDataStruct_iGunLocker, g_sClubhouseDataStruct_iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(GET_CLUBHOUSE_ITEM_FROM_CATALOG_ITEM(iItemID), g_sClubhouseDataStruct_iWall, g_sClubhouseDataStruct_iHanging, g_sClubhouseDataStruct_iFurniture, g_sClubhouseDataStruct_iColour, g_sClubhouseDataStruct_iFont, g_sClubhouseDataStruct_iFontColour, g_sClubhouseDataStruct_iEmblem, g_sClubhouseDataStruct_iHideSinage, g_sClubhouseDataStruct_iGunLocker, g_sClubhouseDataStruct_iGarage)
g_sClubhouseDataStruct_iColour = GET_ACTIONSCRIPT_PARAM(GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA), 9, 4)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new Clubhouse property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iColour = ", g_sClubhouseDataStruct_iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sClubhouse_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iClubhouseNameID = ", g_sClubhouseDataStruct_iClubhouseNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sClubhouse_price_struct.iNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iFont = ", g_sClubhouseDataStruct_iFont)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontPrice = ", sClubhouse_price_struct.iFontPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iFontColour = ", g_sClubhouseDataStruct_iFontColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontColourPrice = ", sClubhouse_price_struct.iFontColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iHideSignage = ", g_sClubhouseDataStruct_iHideSinage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iHideSignageColourPrice = ", sClubhouse_price_struct.iHideSignagePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iEmblem = ", g_sClubhouseDataStruct_iEmblem)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iEmblemPrice = ", sClubhouse_price_struct.iEmblemPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iGunLocker = ", g_sClubhouseDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sClubhouse_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iGarage = ", g_sClubhouseDataStruct_iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sClubhouse_price_struct.iGaragePrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new Clubhouse property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new Clubhouse property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new Clubhouse property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new Clubhouse property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new Clubhouse property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_CLUBHOUSE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sClubhouseDataStruct_iWall, sClubhouse_price_struct.iWallPrice,
g_sClubhouseDataStruct_iHanging, sClubhouse_price_struct.iHangingPrice,
g_sClubhouseDataStruct_iFurniture, sClubhouse_price_struct.iFurniturePrice,
g_sClubhouseDataStruct_iColour, sClubhouse_price_struct.iStylePrice,
g_sClubhouseDataStruct_iClubhouseNameID, sClubhouse_price_struct.iNamePrice,
g_sClubhouseDataStruct_iFont, sClubhouse_price_struct.iFontPrice,
g_sClubhouseDataStruct_iFontColour, sClubhouse_price_struct.iFontColourPrice,
g_sClubhouseDataStruct_iHideSinage, sClubhouse_price_struct.iHideSignagePrice,
g_sClubhouseDataStruct_iEmblem, sClubhouse_price_struct.iEmblemPrice,
g_sClubhouseDataStruct_iGunLocker, sClubhouse_price_struct.iGunLockerPrice,
g_sClubhouseDataStruct_iGarage, sClubhouse_price_struct.iGaragePrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Clubhouse failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start clubhouse basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add clubhouse item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding Clubhouse property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iColour = ", g_sClubhouseDataStruct_iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sClubhouse_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iClubhouseNameID = ", g_sClubhouseDataStruct_iClubhouseNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sClubhouse_price_struct.iNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iFont = ", g_sClubhouseDataStruct_iFont)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontPrice = ", sClubhouse_price_struct.iFontPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iFontColour = ", g_sClubhouseDataStruct_iFontColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFontColourPrice = ", sClubhouse_price_struct.iFontColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iHideSignage = ", g_sClubhouseDataStruct_iHideSinage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iHideSignageColourPrice = ", sClubhouse_price_struct.iHideSignagePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iEmblem = ", g_sClubhouseDataStruct_iEmblem)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iEmblemPrice = ", sClubhouse_price_struct.iEmblemPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iGunLocker = ", g_sClubhouseDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sClubhouse_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sClubhouseDataStruct_iGarage = ", g_sClubhouseDataStruct_iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sClubhouse_price_struct.iGaragePrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added Clubhouse property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add Clubhouse property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore Clubhouse property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_CLUBHOUSE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sClubhouseDataStruct_iWall, sClubhouse_price_struct.iWallPrice,
g_sClubhouseDataStruct_iHanging, sClubhouse_price_struct.iHangingPrice,
g_sClubhouseDataStruct_iFurniture, sClubhouse_price_struct.iFurniturePrice,
g_sClubhouseDataStruct_iColour, sClubhouse_price_struct.iStylePrice,
g_sClubhouseDataStruct_iClubhouseNameID, sClubhouse_price_struct.iNamePrice,
g_sClubhouseDataStruct_iFont, sClubhouse_price_struct.iFontPrice,
g_sClubhouseDataStruct_iFontColour, sClubhouse_price_struct.iFontColourPrice,
g_sClubhouseDataStruct_iHideSinage, sClubhouse_price_struct.iHideSignagePrice,
g_sClubhouseDataStruct_iEmblem, sClubhouse_price_struct.iEmblemPrice,
g_sClubhouseDataStruct_iGunLocker, sClubhouse_price_struct.iGunLockerPrice,
g_sClubhouseDataStruct_iGarage, sClubhouse_price_struct.iGaragePrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Clubhouse failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start clubhouse basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_AN_OFFICE_GARAGE_PROPERTY_ITEM(iItemId)
INT g_sOfficeDataStruct_iStyle, g_sOfficeDataStruct_iPersonnel, g_sOfficeDataStruct_iFont, g_sOfficeDataStruct_iColour, g_sOfficeDataStruct_iGunLocker, g_sOfficeDataStruct_iVault, g_sOfficeDataStruct_iAccommodation
INT g_sOfficeDataStruct_iGarage1Style, g_sOfficeDataStruct_iGarage1Lighting, g_sOfficeDataStruct_iGarage1Number, g_sOfficeDataStruct_iGarage2Style, g_sOfficeDataStruct_iGarage2Lighting, g_sOfficeDataStruct_iGarage2Number, g_sOfficeDataStruct_iGarage3Style, g_sOfficeDataStruct_iGarage3Lighting, g_sOfficeDataStruct_iGarage3Number, g_sOfficeDataStruct_iModshop
GET_SCALEFORM_OFFICE_DATA(g_sOfficeDataStruct_iStyle, g_sOfficeDataStruct_iPersonnel, g_sOfficeDataStruct_iFont, g_sOfficeDataStruct_iColour, g_sOfficeDataStruct_iGunLocker, g_sOfficeDataStruct_iVault, g_sOfficeDataStruct_iAccommodation, g_sOfficeDataStruct_iGarage1Style, g_sOfficeDataStruct_iGarage1Lighting, g_sOfficeDataStruct_iGarage1Number, g_sOfficeDataStruct_iGarage2Style, g_sOfficeDataStruct_iGarage2Lighting, g_sOfficeDataStruct_iGarage2Number, g_sOfficeDataStruct_iGarage3Style, g_sOfficeDataStruct_iGarage3Lighting, g_sOfficeDataStruct_iGarage3Number, g_sOfficeDataStruct_iModshop)
g_sOfficeDataStruct_iGarage1Style -= 1
g_sOfficeDataStruct_iGarage2Style -= 1
g_sOfficeDataStruct_iGarage3Style -= 1
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new office garage property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Style = ", g_sOfficeDataStruct_iGarage1Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1StylePrice = ", sOffice_price_struct.iGarage1StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Lighting = ", g_sOfficeDataStruct_iGarage1Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1LightingPrice = ", sOffice_price_struct.iGarage1LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Number = ", g_sOfficeDataStruct_iGarage1Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1NumberPrice = ", sOffice_price_struct.iGarage1NumberPrice)
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Style = ", g_sOfficeDataStruct_iGarage2Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2StylePrice = ", sOffice_price_struct.iGarage2StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Lighting = ", g_sOfficeDataStruct_iGarage2Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2LightingPrice = ", sOffice_price_struct.iGarage2LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Number = ", g_sOfficeDataStruct_iGarage2Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2NumberPrice = ", sOffice_price_struct.iGarage2NumberPrice)
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL3)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Style = ", g_sOfficeDataStruct_iGarage3Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3StylePrice = ", sOffice_price_struct.iGarage3StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Lighting = ", g_sOfficeDataStruct_iGarage3Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3LightingPrice = ", sOffice_price_struct.iGarage3LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Number = ", g_sOfficeDataStruct_iGarage3Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3NumberPrice = ", sOffice_price_struct.iGarage3NumberPrice)
ENDIF
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new office garage property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new office garage property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
INT iCost
iCost = 0
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL1)
iCost = sOffice_price_struct.iGarage1StylePrice
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL2)
iCost = sOffice_price_struct.iGarage2StylePrice
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL3)
iCost = sOffice_price_struct.iGarage3StylePrice
ENDIF
IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, iCost, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add office garage interior item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new office garage property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new office garage property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new office garage property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_OFFICE_GARAGE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, FALSE,
g_sOfficeDataStruct_iGarage1Style, sOffice_price_struct.iGarage1StylePrice,
g_sOfficeDataStruct_iGarage1Lighting, sOffice_price_struct.iGarage1LightingPrice,
g_sOfficeDataStruct_iGarage1Number, sOffice_price_struct.iGarage1NumberPrice,
g_sOfficeDataStruct_iGarage2Style, sOffice_price_struct.iGarage2StylePrice,
g_sOfficeDataStruct_iGarage2Lighting, sOffice_price_struct.iGarage2LightingPrice,
g_sOfficeDataStruct_iGarage2Number, sOffice_price_struct.iGarage2NumberPrice,
g_sOfficeDataStruct_iGarage3Style, sOffice_price_struct.iGarage3StylePrice,
g_sOfficeDataStruct_iGarage3Lighting, sOffice_price_struct.iGarage3LightingPrice,
g_sOfficeDataStruct_iGarage3Number, sOffice_price_struct.iGarage3NumberPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New office garage failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start office garage basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add office garage item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding office garage property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Style = ", g_sOfficeDataStruct_iGarage1Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1StylePrice = ", sOffice_price_struct.iGarage1StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Lighting = ", g_sOfficeDataStruct_iGarage1Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1LightingPrice = ", sOffice_price_struct.iGarage1LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage1Number = ", g_sOfficeDataStruct_iGarage1Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage1NumberPrice = ", sOffice_price_struct.iGarage1NumberPrice)
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Style = ", g_sOfficeDataStruct_iGarage2Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2StylePrice = ", sOffice_price_struct.iGarage2StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Lighting = ", g_sOfficeDataStruct_iGarage2Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2LightingPrice = ", sOffice_price_struct.iGarage2LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage2Number = ", g_sOfficeDataStruct_iGarage2Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage2NumberPrice = ", sOffice_price_struct.iGarage2NumberPrice)
ENDIF
IF (GET_OFFICE_GARAGE_ITEM_FROM_CATALOG_ITEM(iItemID) = PROPERTY_OFFICE_1_GARAGE_LVL3)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Style = ", g_sOfficeDataStruct_iGarage3Style)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3StylePrice = ", sOffice_price_struct.iGarage3StylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Lighting = ", g_sOfficeDataStruct_iGarage3Lighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3LightingPrice = ", sOffice_price_struct.iGarage3LightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sOfficeDataStruct_iGarage3Number = ", g_sOfficeDataStruct_iGarage3Number)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGarage3NumberPrice = ", sOffice_price_struct.iGarage3NumberPrice)
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added office garage property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add office garage property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore office garage property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_OFFICE_GARAGE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, TRUE,
g_sOfficeDataStruct_iGarage1Style, sOffice_price_struct.iGarage1StylePrice,
g_sOfficeDataStruct_iGarage1Lighting, sOffice_price_struct.iGarage1LightingPrice,
g_sOfficeDataStruct_iGarage1Number, sOffice_price_struct.iGarage1NumberPrice,
g_sOfficeDataStruct_iGarage2Style, sOffice_price_struct.iGarage2StylePrice,
g_sOfficeDataStruct_iGarage2Lighting, sOffice_price_struct.iGarage2LightingPrice,
g_sOfficeDataStruct_iGarage2Number, sOffice_price_struct.iGarage2NumberPrice,
g_sOfficeDataStruct_iGarage3Style, sOffice_price_struct.iGarage3StylePrice,
g_sOfficeDataStruct_iGarage3Lighting, sOffice_price_struct.iGarage3LightingPrice,
g_sOfficeDataStruct_iGarage3Number, sOffice_price_struct.iGarage3NumberPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New office garage failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start office garage basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
AND (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// Property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore property coupon hash ", iDoCouponHash)
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start property basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add property item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
// YACHTS
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE AND IS_CATALOG_ITEM_A_YACHT_ITEM(iItemId)
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_MODEL_0) = 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new yacht to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iMod = ", g_sYachtDataStruct.iMod)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModPrice = ", iYachtModPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iLighting = ", g_sYachtDataStruct.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", iYachtLightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iFixture = ", g_sYachtDataStruct.iFixture)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFixturePrice = ", iYachtFixturePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iFlag = ", g_sYachtDataStruct.iFlag)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlagPrice = ", iYachtFlagPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iColour = ", g_sYachtDataStruct.iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", iYachtColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", iYachtNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iYachtNameID = ", g_sYachtDataStruct.iYachtNameID)
// vehicle = 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, GET_VEHICLE_INVENTORY_ITEM_FROM_PEGASUS_ITEM(iItemID), eAction, 1, 0, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// add all the yacht mods.
IF ADD_YACHT_MODS_TO_BASKET(0, eCategory, g_sYachtDataStruct.iMod, iYachtModPrice, g_sYachtDataStruct.iLighting, iYachtLightingPrice, g_sYachtDataStruct.iFixture, iYachtFixturePrice, g_sYachtDataStruct.iFlag, iYachtFlagPrice, g_sYachtDataStruct.iColour, iYachtColourPrice, g_sYachtDataStruct.iYachtNameID, iYachtNamePrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New yacht Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New yacht CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New yacht failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New yacht failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new yacht to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding yacht update to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(CATEGORY_INVENTORY_VEHICLE_MOD), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iMod = ", g_sYachtDataStruct.iMod)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModPrice = ", iYachtModPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iLighting = ", g_sYachtDataStruct.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", iYachtLightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iFixture = ", g_sYachtDataStruct.iFixture)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFixturePrice = ", iYachtFixturePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iFlag = ", g_sYachtDataStruct.iFlag)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlagPrice = ", iYachtFlagPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iColour = ", g_sYachtDataStruct.iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", iYachtColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", iYachtNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sYachtDataStruct.iYachtNameID = ", g_sYachtDataStruct.iYachtNameID)
// add all the yacht mods.
IF ADD_YACHT_MODS_TO_BASKET(0, CATEGORY_INVENTORY_VEHICLE_MOD, g_sYachtDataStruct.iMod, iYachtModPrice, g_sYachtDataStruct.iLighting, iYachtLightingPrice, g_sYachtDataStruct.iFixture, iYachtFixturePrice, g_sYachtDataStruct.iFlag, iYachtFlagPrice, g_sYachtDataStruct.iColour, iYachtColourPrice, g_sYachtDataStruct.iYachtNameID, iYachtNamePrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Yacht update Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Yacht update CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Yacht update failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Yacht update failed to add mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
// TRUCKS
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE AND IS_CATALOG_ITEM_A_TRUCK_ITEM(iItemId)
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection1, eSection2, eSection3
eSection1 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection1))
eSection2 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection2))
eSection3 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection3))
VALIDATE_TRUCK_EMPTY_SECTIONS(eSection1, eSection2, eSection3)
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_TRUCK_MODEL_0) = 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new truck to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iCab = ", g_sTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab))))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCabPrice = ", sTruck_price_struct.iCabPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection1 = ", g_sTruckDataStruct.iSection1, ", eSection1 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection1))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection1Price = ", sTruck_price_struct.iSection1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection2 = ", g_sTruckDataStruct.iSection2, ", eSection2 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection2))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection2Price = ", sTruck_price_struct.iSection2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection3 = ", g_sTruckDataStruct.iSection3, ", eSection3 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection3))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection3Price = ", sTruck_price_struct.iSection3Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iColour = ", g_sTruckDataStruct.iColour, ", eColour = ", GET_ARMORY_TRUCK_SECTION_TINT_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TINT_ENUM, GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour))))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sTruck_price_struct.iColourPrice)
// vehicle = 0
// IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, GET_VEHICLE_INVENTORY_ITEM_FROM_PEGASUS_ITEM(iItemID), eAction, 1, 0, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// add all the truck mods.
IF ADD_TRUCK_MODS_TO_BASKET(0, eCategory,
GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab), sTruck_price_struct.iCabPrice,
ENUM_TO_INT(eSection1), sTruck_price_struct.iSection1Price,
ENUM_TO_INT(eSection2), sTruck_price_struct.iSection2Price,
ENUM_TO_INT(eSection3), sTruck_price_struct.iSection3Price,
GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour), sTruck_price_struct.iColourPrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New truck Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New truck CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New truck failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New truck failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new truck to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding truck update to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(CATEGORY_INVENTORY_VEHICLE_MOD), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iCab = ", g_sTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab))))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCabPrice = ", sTruck_price_struct.iCabPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection1 = ", g_sTruckDataStruct.iSection1, ", eSection1 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection1))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection1Price = ", sTruck_price_struct.iSection1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection2 = ", g_sTruckDataStruct.iSection2, ", eSection2 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection2))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection2Price = ", sTruck_price_struct.iSection2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iSection3 = ", g_sTruckDataStruct.iSection3, ", eSection3 = ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection3))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSection3Price = ", sTruck_price_struct.iSection3Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sTruckDataStruct.iColour = ", g_sTruckDataStruct.iColour, ", eColour = ", GET_ARMORY_TRUCK_SECTION_TINT_NAME(INT_TO_ENUM(ARMORY_TRUCK_SECTION_TINT_ENUM, GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour))))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sTruck_price_struct.iColourPrice)
// add all the truck mods.
IF ADD_TRUCK_MODS_TO_BASKET(0, eCategory,
GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab), sTruck_price_struct.iCabPrice,
ENUM_TO_INT(eSection1), sTruck_price_struct.iSection1Price,
ENUM_TO_INT(eSection2), sTruck_price_struct.iSection2Price,
ENUM_TO_INT(eSection3), sTruck_price_struct.iSection3Price,
GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour), sTruck_price_struct.iColourPrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - truck update Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - truck update CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - truck update failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - truck update failed to add mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE AND IS_CATALOG_ITEM_A_PLANE_ITEM(iItemId)
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_PLANE_MODEL_0) = 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new plane to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iGunTurret = ", g_sPlaneDataStruct.iGunTurret)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunTurretPrice = ", sPlane_price_struct.iGunTurretPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iVehShop = ", g_sPlaneDataStruct.iVehShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehShopPrice = ", sPlane_price_struct.iVehShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iWeaShop = ", g_sPlaneDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sPlane_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iInterior = ", g_sPlaneDataStruct.iInterior)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iInteriorPrice = ", sPlane_price_struct.iInteriorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iAvenger = ", g_sPlaneDataStruct.iAvenger)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAvengerPrice = ", sPlane_price_struct.iAvengerPrice)
// vehicle = 0
// IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, GET_VEHICLE_INVENTORY_ITEM_FROM_PEGASUS_ITEM(iItemID), eAction, 1, 0, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// add all the plane mods.
IF ADD_PLANE_MODS_TO_BASKET(0, eCategory, g_sPlaneDataStruct,
sPlane_price_struct.iGunTurretPrice,
sPlane_price_struct.iVehShopPrice,
sPlane_price_struct.iWeaShopPrice,
sPlane_price_struct.iInteriorPrice,
sPlane_price_struct.iAvengerPrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New plane Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New plane CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New plane failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New plane failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new plane to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding plane update to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(CATEGORY_INVENTORY_VEHICLE_MOD), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iGunTurret = ", g_sPlaneDataStruct.iGunTurret)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunTurretPrice = ", sPlane_price_struct.iGunTurretPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iVehShop = ", g_sPlaneDataStruct.iVehShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehShopPrice = ", sPlane_price_struct.iVehShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iWeaShop = ", g_sPlaneDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sPlane_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iInterior = ", g_sPlaneDataStruct.iInterior)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iInteriorPrice = ", sPlane_price_struct.iInteriorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sPlaneDataStruct.iAvenger = ", g_sPlaneDataStruct.iAvenger)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAvengerPrice = ", sPlane_price_struct.iAvengerPrice)
// add all the plane mods.
IF ADD_PLANE_MODS_TO_BASKET(0, eCategory, g_sPlaneDataStruct,
sPlane_price_struct.iGunTurretPrice,
sPlane_price_struct.iVehShopPrice,
sPlane_price_struct.iWeaShopPrice,
sPlane_price_struct.iInteriorPrice,
sPlane_price_struct.iAvengerPrice)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - plane update Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - plane update CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - plane update failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - plane update failed to add mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE AND IS_CATALOG_ITEM_A_HACKER_TRUCK_ITEM(iItemId)
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_HACKERTRUCK_MODEL_0) = 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new hacker truck to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iCab = ", g_sHackerTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, g_sHackerTruckDataStruct.iCab)))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCabPrice = ", sHacker_truck_price_struct.iCabPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iDecal = ", g_sHackerTruckDataStruct.iDecal, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, g_sHackerTruckDataStruct.iDecal))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecalPrice = ", sHacker_truck_price_struct.iDecalPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iTint = ", g_sHackerTruckDataStruct.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sHacker_truck_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iMissileLauncher = ", g_sHackerTruckDataStruct.iMissileLauncher)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMissileLauncherPrice = ", sHacker_truck_price_struct.iMissileLauncherPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iDroneStation = ", g_sHackerTruckDataStruct.iDroneStation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDroneStationPrice = ", sHacker_truck_price_struct.iDroneStationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iWeaShop = ", g_sHackerTruckDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sHacker_truck_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iVehShop = ", g_sHackerTruckDataStruct.iVehShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehShopPrice = ", sHacker_truck_price_struct.iVehShopPrice)
// vehicle = 0
// IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, GET_VEHICLE_INVENTORY_ITEM_FROM_PEGASUS_ITEM(iItemID), eAction, 1, 0, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// add all the hacker truck mods.
IF ADD_HACKER_TRUCK_MODS_TO_BASKET(0, eCategory,
g_sHackerTruckDataStruct, sHacker_truck_price_struct)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New hacker truck Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New hacker truck CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New hacker truck failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New hacker truck failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new hacker truck to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding hacker truck update to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(CATEGORY_INVENTORY_VEHICLE_MOD), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iCab = ", g_sHackerTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, g_sHackerTruckDataStruct.iCab)))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCabPrice = ", sHacker_truck_price_struct.iCabPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iDecal = ", g_sHackerTruckDataStruct.iDecal, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, g_sHackerTruckDataStruct.iDecal))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecalPrice = ", sHacker_truck_price_struct.iDecalPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iTint = ", g_sHackerTruckDataStruct.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sHacker_truck_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iMissileLauncher = ", g_sHackerTruckDataStruct.iMissileLauncher)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMissileLauncherPrice = ", sHacker_truck_price_struct.iMissileLauncherPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iDroneStation = ", g_sHackerTruckDataStruct.iDroneStation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDroneStationPrice = ", sHacker_truck_price_struct.iDroneStationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iWeaShop = ", g_sHackerTruckDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sHacker_truck_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHackerTruckDataStruct.iVehShop = ", g_sHackerTruckDataStruct.iVehShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehShopPrice = ", sHacker_truck_price_struct.iVehShopPrice)
// add all the hacker truck mods.
IF ADD_HACKER_TRUCK_MODS_TO_BASKET(0, eCategory,
g_sHackerTruckDataStruct, sHacker_truck_price_struct)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - hacker truck update Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - hacker truck update CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - hacker truck update failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - hacker truck update failed to add mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE AND IS_CATALOG_ITEM_A_KOSATKA_ITEM(iItemId)
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_IH_SUB_OWNED) = 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new kosatka to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iOwned = ", g_sKosatkaDataStruct.iOwned, ", iOwned = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, g_sKosatkaDataStruct.iOwned)))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOwnedPrice = ", sKosatka_price_struct.iOwnedPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iColour = ", g_sKosatkaDataStruct.iColour, " ", GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_COLOUR, g_sKosatkaDataStruct.iColour))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecalPrice = ", sKosatka_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iFlag = ", g_sKosatkaDataStruct.iFlag)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlagPrice = ", sKosatka_price_struct.iFlagPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iSonar = ", g_sKosatkaDataStruct.iSonar)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSonarPrice = ", sKosatka_price_struct.iSonarPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iMissiles = ", g_sKosatkaDataStruct.iMissiles)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMissilesPrice = ", sKosatka_price_struct.iMissilesPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iWeaShop = ", g_sKosatkaDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sKosatka_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iSeaSparrow2 = ", g_sKosatkaDataStruct.iSeaSparrow2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSeaSparrow2Price = ", sKosatka_price_struct.iSeaSparrow2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iAvisa = ", g_sKosatkaDataStruct.iAvisa)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAvisaPrice = ", sKosatka_price_struct.iAvisaPrice)
// vehicle = 0
// IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, GET_VEHICLE_INVENTORY_ITEM_FROM_PEGASUS_ITEM(iItemID), eAction, 1, 0, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// add all the kosatka mods.
IF ADD_KOSATKA_MODS_TO_BASKET(0, eCategory,
g_sKosatkaDataStruct, sKosatka_price_struct)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New kosatka Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New kosatka CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New kosatka failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New kosatka failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new hacker truck to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding kosatka update to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(CATEGORY_INVENTORY_VEHICLE_MOD), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iOwned = ", g_sKosatkaDataStruct.iOwned, ", iOwned = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, g_sKosatkaDataStruct.iOwned)))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOwnedPrice = ", sKosatka_price_struct.iOwnedPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iColour = ", g_sKosatkaDataStruct.iColour, " ", GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_COLOUR, g_sKosatkaDataStruct.iColour))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecalPrice = ", sKosatka_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iFlag = ", g_sKosatkaDataStruct.iFlag)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlagPrice = ", sKosatka_price_struct.iFlagPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iSonar = ", g_sKosatkaDataStruct.iSonar)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSonarPrice = ", sKosatka_price_struct.iSonarPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iMissiles = ", g_sKosatkaDataStruct.iMissiles)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMissilesPrice = ", sKosatka_price_struct.iMissilesPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iWeaShop = ", g_sKosatkaDataStruct.iWeaShop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWeaShopPrice = ", sKosatka_price_struct.iWeaShopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iSeaSparrow2 = ", g_sKosatkaDataStruct.iSeaSparrow2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSeaSparrow2Price = ", sKosatka_price_struct.iSeaSparrow2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sKosatkaDataStruct.iAvisa = ", g_sKosatkaDataStruct.iAvisa)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAvisaPrice = ", sKosatka_price_struct.iAvisaPrice)
// add all the kosatka mods.
IF ADD_KOSATKA_MODS_TO_BASKET(0, CATEGORY_INVENTORY_VEHICLE_MOD,
g_sKosatkaDataStruct, sKosatka_price_struct)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - kosatka update Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - kosatka update CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - kosatka update failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - kosatka update failed to add mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
#ENDIF
ELIF eCategory = CATEGORY_INVENTORY_WAREHOUSE
IF IS_CATALOG_ITEM_A_BUNKER_ITEM(iItemID)
INT g_sBunkerDataStruct_iDecor, g_sBunkerDataStruct_iAccommodation, g_sBunkerDataStruct_iFiringRange, g_sBunkerDataStruct_iGunLocker, g_sBunkerDataStruct_iTransportation
GET_SCALEFORM_FACTORY_DATA(g_sBunkerDataStruct_iDecor, g_sBunkerDataStruct_iAccommodation, g_sBunkerDataStruct_iFiringRange, g_sBunkerDataStruct_iGunLocker, g_sBunkerDataStruct_iTransportation)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new factory property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new factory property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new factory property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new factory property iSellingItemId ", iSellingItemId)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
/* IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new factory property iItemInteriorID ", iItemInteriorID)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
*/
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore coupon hash ", iDoCouponHash)
ENDIF
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iDecor = ", g_sBunkerDataStruct_iDecor)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecorPrice = ", sBunker_price_struct.iDecorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iAccommodation = ", g_sBunkerDataStruct_iAccommodation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sBunker_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iFiringRange = ", g_sBunkerDataStruct_iFiringRange)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFiringRangePrice = ", sBunker_price_struct.iFiringRangePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iGunLocker = ", g_sBunkerDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sBunker_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iTransportation = ", g_sBunkerDataStruct_iTransportation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTransportationPrice = ", sBunker_price_struct.iTransportationPrice)
IF ADD_BUNKER_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_WAREHOUSE_INTERIOR,
g_sBunkerDataStruct_iDecor, sBunker_price_struct.iDecorPrice,
g_sBunkerDataStruct_iAccommodation, sBunker_price_struct.iAccommodationPrice,
g_sBunkerDataStruct_iFiringRange, sBunker_price_struct.iFiringRangePrice,
g_sBunkerDataStruct_iGunLocker, sBunker_price_struct.iGunLockerPrice,
g_sBunkerDataStruct_iTransportation, sBunker_price_struct.iTransportationPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New gunrunning bunker failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start factory basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add factory item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding factory property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iDecor = ", g_sBunkerDataStruct_iDecor)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDecorPrice = ", sBunker_price_struct.iDecorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iAccommodation = ", g_sBunkerDataStruct_iAccommodation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sBunker_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iFiringRange = ", g_sBunkerDataStruct_iFiringRange)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFiringRangePrice = ", sBunker_price_struct.iFiringRangePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iGunLocker = ", g_sBunkerDataStruct_iGunLocker)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGunLockerPrice = ", sBunker_price_struct.iGunLockerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sBunkerDataStruct_iTransportation = ", g_sBunkerDataStruct_iTransportation)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTransportationPrice = ", sBunker_price_struct.iTransportationPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added factory property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add factory property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore factory property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_BUNKER_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_WAREHOUSE_INTERIOR,
g_sBunkerDataStruct_iDecor, sBunker_price_struct.iDecorPrice,
g_sBunkerDataStruct_iAccommodation, sBunker_price_struct.iAccommodationPrice,
g_sBunkerDataStruct_iFiringRange, sBunker_price_struct.iFiringRangePrice,
g_sBunkerDataStruct_iGunLocker, sBunker_price_struct.iGunLockerPrice,
g_sBunkerDataStruct_iTransportation, sBunker_price_struct.iTransportationPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New gunrunning bunker failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start factory basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_A_HANGAR_ITEM(iItemId)
HANGAR_DATA_STRUCT g_sHangarData
GET_SCALEFORM_HANGAR_DATA(g_sHangarData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new hangar property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iFlooring = ", g_sHangarData.iFlooring)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlooringPrice = ", sHangar_price_struct.iFlooringPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iSleepingQuarters = ", g_sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sHangar_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iFurniture = ", g_sHangarData.iFurniture)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFurniturePrice = ", sHangar_price_struct.iFurniturePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iWorkshop = ", g_sHangarData.iWorkshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModshopPrice = ", sHangar_price_struct.iModshopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iStyle = ", g_sHangarData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sHangar_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iLighting = ", g_sHangarData.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", sHangar_price_struct.iLightingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new hangar property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new hangar property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new hangar property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new hangar property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new hangar property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_HANGAR_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sHangarData.iFlooring, sHangar_price_struct.iFlooringPrice,
g_sHangarData.iSleepingQuarters, sHangar_price_struct.iAccommodationPrice,
g_sHangarData.iFurniture, sHangar_price_struct.iFurniturePrice,
g_sHangarData.iWorkshop, sHangar_price_struct.iModshopPrice,
g_sHangarData.iStyle, sHangar_price_struct.iColourPrice,
g_sHangarData.iLighting, sHangar_price_struct.iLightingPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New hangar failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start hangar basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new hangar item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding hangar property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iFlooring = ", g_sHangarData.iFlooring)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFlooringPrice = ", sHangar_price_struct.iFlooringPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iSleepingQuarters = ", g_sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iAccommodationPrice = ", sHangar_price_struct.iAccommodationPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iFurniture = ", g_sHangarData.iFurniture)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFurniturePrice = ", sHangar_price_struct.iFurniturePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iWorkshop = ", g_sHangarData.iWorkshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iModshopPrice = ", sHangar_price_struct.iModshopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iStyle = ", g_sHangarData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sHangar_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sHangarData.iLighting = ", g_sHangarData.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", sHangar_price_struct.iLightingPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added hangar property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add hangar property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore hangar property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_HANGAR_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sHangarData.iFlooring, sHangar_price_struct.iFlooringPrice,
g_sHangarData.iSleepingQuarters, sHangar_price_struct.iAccommodationPrice,
g_sHangarData.iFurniture, sHangar_price_struct.iFurniturePrice,
g_sHangarData.iWorkshop, sHangar_price_struct.iModshopPrice,
g_sHangarData.iStyle, sHangar_price_struct.iColourPrice,
g_sHangarData.iLighting, sHangar_price_struct.iLightingPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Hangar upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start hangar upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_A_DEFUNCT_BASE_ITEM(iItemId)
DEFUNCT_BASE_DATA_STRUCT g_sDefunctBaseData
GET_SCALEFORM_DEFUNCT_BASE_DATA(g_sDefunctBaseData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new defunct base property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iPersonalQuarters = ", g_sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sDefunct_base_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iOrbitalWeapon = ", g_sDefunctBaseData.iOrbitalWeapon)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOrbitalWeaponPrice = ", sDefunct_base_price_struct.iOrbitalWeaponPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iSecurityRoom = ", g_sDefunctBaseData.iSecurityRoom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSecurityRoomPrice = ", sDefunct_base_price_struct.iSecurityRoomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iLounge = ", g_sDefunctBaseData.iLounge)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLoungePrice = ", sDefunct_base_price_struct.iLoungePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iPrivicyGlass = ", g_sDefunctBaseData.iPrivicyGlass)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPrivicyGlassPrice = ", sDefunct_base_price_struct.iPrivicyGlassPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iStyle = ", g_sDefunctBaseData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sDefunct_base_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iGraphics = ", g_sDefunctBaseData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGraphicsPrice = ", sDefunct_base_price_struct.iGraphicsPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new defunct base property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new defunct base property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new defunct base property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new defunct base property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new defunct base property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_DEFUNCT_BASE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sDefunctBaseData,
sDefunct_base_price_struct.iPersonalQuartersPrice,
sDefunct_base_price_struct.iOrbitalWeaponPrice,
sDefunct_base_price_struct.iSecurityRoomPrice,
sDefunct_base_price_struct.iLoungePrice,
sDefunct_base_price_struct.iPrivicyGlassPrice,
sDefunct_base_price_struct.iStylePrice,
sDefunct_base_price_struct.iGraphicsPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New defunct base failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start defunct base basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new defunct base item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding defunct base property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iPersonalQuarters = ", g_sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sDefunct_base_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iOrbitalWeapon = ", g_sDefunctBaseData.iOrbitalWeapon)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOrbitalWeaponPrice = ", sDefunct_base_price_struct.iOrbitalWeaponPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iSecurityRoom = ", g_sDefunctBaseData.iSecurityRoom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSecurityRoomPrice = ", sDefunct_base_price_struct.iSecurityRoomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iLounge = ", g_sDefunctBaseData.iLounge)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLoungePrice = ", sDefunct_base_price_struct.iLoungePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iPrivicyGlass = ", g_sDefunctBaseData.iPrivicyGlass)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPrivicyGlassPrice = ", sDefunct_base_price_struct.iPrivicyGlassPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iStyle = ", g_sDefunctBaseData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sDefunct_base_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sDefunctBaseData.iGraphics = ", g_sDefunctBaseData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGraphicsPrice = ", sDefunct_base_price_struct.iGraphicsPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added defunct base property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add defunct base property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore defunct base property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_DEFUNCT_BASE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sDefunctBaseData,
sDefunct_base_price_struct.iPersonalQuartersPrice,
sDefunct_base_price_struct.iOrbitalWeaponPrice,
sDefunct_base_price_struct.iSecurityRoomPrice,
sDefunct_base_price_struct.iLoungePrice,
sDefunct_base_price_struct.iPrivicyGlassPrice,
sDefunct_base_price_struct.iStylePrice,
sDefunct_base_price_struct.iGraphicsPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - defunct base upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start defunct base upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_A_NIGHTCLUB_ITEM(iItemId)
NIGHTCLUB_DATA_STRUCT g_sNightclubData
GET_SCALEFORM_NIGHTCLUB_DATA(g_sNightclubData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new nightclub property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iStyle = ", g_sNightclubData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sNightclub_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iLighting = ", g_sNightclubData.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", sNightclub_price_struct.iLightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iDancers = ", g_sNightclubData.iDancers)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDancersPrice = ", sNightclub_price_struct.iDancersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iDryIce = ", g_sNightclubData.iDryIce)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDryIcePrice = ", sNightclub_price_struct.iDryIcePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iStorage = ", g_sNightclubData.iStorage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStoragePrice = ", sNightclub_price_struct.iStoragePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iNameID = ", g_sNightclubData.iNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sNightclub_price_struct.iNamePrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new nightclub property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new nightclub property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new nightclub property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new nightclub property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new nightclub property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_NIGHTCLUB_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sNightclubData, sNightclub_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New nightclub failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start nightclub basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new nightclub item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding nightclub property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iStyle = ", g_sNightclubData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sNightclub_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iLighting = ", g_sNightclubData.iLighting)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLightingPrice = ", sNightclub_price_struct.iLightingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iDancers = ", g_sNightclubData.iDancers)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDancersPrice = ", sNightclub_price_struct.iDancersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iDryIce = ", g_sNightclubData.iDryIce)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDryIcePrice = ", sNightclub_price_struct.iDryIcePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iStorage = ", g_sNightclubData.iStorage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStoragePrice = ", sNightclub_price_struct.iStoragePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sNightclubData.iNameID = ", g_sNightclubData.iNameID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNamePrice = ", sNightclub_price_struct.iNamePrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added nightclub property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add nightclub property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore nightclub property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_NIGHTCLUB_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sNightclubData, sNightclub_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - nightclub upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start nightclub upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_AN_ARENA_GARAGE_ITEM(iItemId)
ARENA_GARAGE_DATA_STRUCT g_sArenaData
GET_SCALEFORM_ARENA_GARAGE_DATA(g_sArenaData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new arena garage property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iStyle = ", g_sArenaData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sArena_garage_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iGraphics = ", g_sArenaData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGraphicsPrice = ", sArena_garage_price_struct.iGraphicsPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iColour = ", g_sArenaData.iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sArena_garage_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iExpansionFloorB1 = ", g_sArenaData.iExpansionFloorB1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iExpansionFloorB1Price = ", sArena_garage_price_struct.iExpansionFloorB1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iExpansionFloorB2 = ", g_sArenaData.iExpansionFloorB2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iExpansionFloorB2Price = ", sArena_garage_price_struct.iExpansionFloorB2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iBennyMechanic = ", g_sArenaData.iBennyMechanic)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBennyMechanicPrice = ", sArena_garage_price_struct.iBennyMechanicPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iPersonalQuarters = ", g_sArenaData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sArena_garage_price_struct.iPersonalQuartersPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new arena garage property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new arena garage property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new arena garage property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new arena garage property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new arena garage property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_ARENA_GARAGE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sArenaData, sArena_garage_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New arena garage failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start arena garage basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new arena garage item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding arena garage property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iStyle = ", g_sArenaData.iStyle)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStylePrice = ", sArena_garage_price_struct.iStylePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iGraphics = ", g_sArenaData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGraphicsPrice = ", sArena_garage_price_struct.iGraphicsPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iColour = ", g_sArenaData.iColour)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourPrice = ", sArena_garage_price_struct.iColourPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iExpansionFloorB1 = ", g_sArenaData.iExpansionFloorB1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iExpansionFloorB1Price = ", sArena_garage_price_struct.iExpansionFloorB1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iExpansionFloorB2 = ", g_sArenaData.iExpansionFloorB2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iExpansionFloorB2Price = ", sArena_garage_price_struct.iExpansionFloorB2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iBennyMechanic = ", g_sArenaData.iBennyMechanic)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBennyMechanicPrice = ", sArena_garage_price_struct.iBennyMechanicPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArenaData.iPersonalQuarters = ", g_sArenaData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sArena_garage_price_struct.iPersonalQuartersPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added arena garage property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add arena garage property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore arena garage property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_ARENA_GARAGE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sArenaData, sArena_garage_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - arena garage upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start arena garage upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_AN_CASINO_APT_ITEM(iItemId)
CASINO_APT_DATA_STRUCT g_sCasinoData
GET_SCALEFORM_CASINO_APT_DATA(g_sCasinoData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId) //
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new Casino Apt property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iColourOption = ", g_sCasinoData.iColourOption)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourOptionPrice = ", sCasino_apt_price_struct.iColourOptionPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iStyleOption = ", g_sCasinoData.iStyleOption)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStyleOptionPrice = ", sCasino_apt_price_struct.iStyleOptionPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iLounge = ", g_sCasinoData.iLounge)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLoungePrice = ", sCasino_apt_price_struct.iLoungePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iBar = ", g_sCasinoData.iBar)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBarPrice = ", sCasino_apt_price_struct.iBarPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iDealer = ", g_sCasinoData.iDealer)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDealerPrice = ", sCasino_apt_price_struct.iDealerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iBedroom = ", g_sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBedroomPrice = ", sCasino_apt_price_struct.iBedroomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iMediaroom = ", g_sCasinoData.iMediaroom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMediaroomPrice = ", sCasino_apt_price_struct.iMediaroomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iSpa = ", g_sCasinoData.iSpa)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSpaPrice = ", sCasino_apt_price_struct.iSpaPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iOffice = ", g_sCasinoData.iOffice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOfficePrice = ", sCasino_apt_price_struct.iOfficePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iGarage = ", g_sCasinoData.iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sCasino_apt_price_struct.iGaragePrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
// new Casino Apt property we are trading in.
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new Casino Apt property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
//
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
// IF (NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemInteriorID, eAction, 1, 0, 0, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryInteriorID))
// //
// ELSE
// CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add interior item to basket")
// iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
// RETURN TRUE
// ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new Casino Apt property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new Casino Apt property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new Casino Apt property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_CASINO_APT_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sCasinoData, sCasino_apt_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Casino Apt failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Casino Apt basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new Casino Apt item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding Casino Apt property upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iColourOption = ", g_sCasinoData.iColourOption)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iColourOptionPrice = ", sCasino_apt_price_struct.iColourOptionPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iStyleOption = ", g_sCasinoData.iStyleOption)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStyleOptionPrice = ", sCasino_apt_price_struct.iStyleOptionPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iLounge = ", g_sCasinoData.iLounge)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iLoungePrice = ", sCasino_apt_price_struct.iLoungePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iBar = ", g_sCasinoData.iBar)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBarPrice = ", sCasino_apt_price_struct.iBarPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iDealer = ", g_sCasinoData.iDealer)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iDealerPrice = ", sCasino_apt_price_struct.iDealerPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iBedroom = ", g_sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iBedroomPrice = ", sCasino_apt_price_struct.iBedroomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iMediaroom = ", g_sCasinoData.iMediaroom)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iMediaroomPrice = ", sCasino_apt_price_struct.iMediaroomPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iSpa = ", g_sCasinoData.iSpa)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iSpaPrice = ", sCasino_apt_price_struct.iSpaPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iOffice = ", g_sCasinoData.iOffice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iOfficePrice = ", sCasino_apt_price_struct.iOfficePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sCasinoData.iGarage = ", g_sCasinoData.iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sCasino_apt_price_struct.iGaragePrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added Casino Apt property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add Casino Apt property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore Casino Apt property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_CASINO_APT_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR,
g_sCasinoData, sCasino_apt_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Casino Apt upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Casino Apt upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_AN_ARCADE_ITEM(iItemId)
ARCADE_DATA_STRUCT g_sArcadeData
GET_SCALEFORM_ARCADE_DATA(g_sArcadeData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new Arcade property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iFloor = ", g_sArcadeData.iFloor)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFloorPrice = ", sArcade_price_struct.iFloorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iCeiling = ", g_sArcadeData.iCeiling)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCeilingPrice = ", sArcade_price_struct.iCeilingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iWall = ", g_sArcadeData.iWall)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallPrice = ", sArcade_price_struct.iWallPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iPersonalQuarters = ", g_sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sArcade_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iGarage = ", g_sArcadeData.iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sArcade_price_struct.iGaragePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iNeonLights = ", g_sArcadeData.iNeonLights)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNeonLightsPrice = ", sArcade_price_struct.iNeonLightsPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iScreens = ", g_sArcadeData.iScreens)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iScreensPrice = ", sArcade_price_struct.iScreensPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new Arcade property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new nightclub property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new nightclub property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new Arcade property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_ARCADE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sArcadeData, sArcade_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Arcade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Arcade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new Arcade item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding Arcade property upgrade to basket eCategory: ", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction: ", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iFloor = ", g_sArcadeData.iFloor)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iFloorPrice = ", sArcade_price_struct.iFloorPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iCeiling = ", g_sArcadeData.iCeiling)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCeilingPrice = ", sArcade_price_struct.iCeilingPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iWall = ", g_sArcadeData.iWall)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallPrice = ", sArcade_price_struct.iWallPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iPersonalQuarters = ", g_sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sArcade_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iGarage = ", g_sArcadeData.iGarage)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iGaragePrice = ", sArcade_price_struct.iGaragePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iNeonLights = ", g_sArcadeData.iNeonLights)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iNeonLightsPrice = ", sArcade_price_struct.iNeonLightsPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sArcadeData.iScreens = ", g_sArcadeData.iScreens)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iScreensPrice = ", sArcade_price_struct.iScreensPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added Arcade property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Failed to add Arcade property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore Arcade property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_ARCADE_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sArcadeData, sArcade_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Arcade upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Arcade upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
ELIF IS_CATALOG_ITEM_AN_AUTO_SHOP_ITEM(iItemId)
AUTO_SHOP_DATA_STRUCT g_sAutoShopData
GET_SCALEFORM_AUTO_SHOP_DATA(g_sAutoShopData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new Auto Shop property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iWall = ", g_sAutoShopData.iWall)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallPrice = ", sAutoShop_price_struct.iWallPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iTint = ", g_sAutoShopData.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sAutoShop_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iEmblem = ", g_sAutoShopData.iEmblem)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iEmblemPrice = ", sAutoShop_price_struct.iEmblemPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCrewName = ", g_sAutoShopData.iCrewName)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCrewNamePrice = ", sAutoShop_price_struct.iCrewNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iStaff1 = ", g_sAutoShopData.iStaff1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStaff1Price = ", sAutoShop_price_struct.iStaff1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iStaff2 = ", g_sAutoShopData.iStaff2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStaff2Price = ", sAutoShop_price_struct.iStaff2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCarLift = ", g_sAutoShopData.iCarLift)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCarLiftPrice = ", sAutoShop_price_struct.iCarLiftPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iPersonalQuarters = ", g_sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sAutoShop_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCarClubMembership = ", g_sAutoShopData.iCarClubMembership)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCarClubMembershipPrice = ", sAutoShop_price_struct.iCarClubMembershipPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new Auto Shop property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new Auto Shop property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new nightclub property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new Auto Shop property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_AUTO_SHOP_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sAutoShopData, sAutoShop_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Auto Shop failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Auto Shop basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new Auto Shop item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding Auto Shop property upgrade to basket eCategory: ", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction: ", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iWall = ", g_sAutoShopData.iWall)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallPrice = ", sAutoShop_price_struct.iWallPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iTint = ", g_sAutoShopData.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sAutoShop_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iEmblem = ", g_sAutoShopData.iEmblem)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iEmblemPrice = ", sAutoShop_price_struct.iEmblemPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCrewName = ", g_sAutoShopData.iCrewName)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCrewNamePrice = ", sAutoShop_price_struct.iCrewNamePrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iStaff1 = ", g_sAutoShopData.iStaff1)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStaff1Price = ", sAutoShop_price_struct.iStaff1Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iStaff2 = ", g_sAutoShopData.iStaff2)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iStaff2Price = ", sAutoShop_price_struct.iStaff2Price)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCarLift = ", g_sAutoShopData.iCarLift)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCarLiftPrice = ", sAutoShop_price_struct.iCarLiftPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iPersonalQuarters = ", g_sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sAutoShop_price_struct.iPersonalQuartersPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...g_sAutoShopData.iCarClubMembership = ", g_sAutoShopData.iCarClubMembership)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iCarClubMembershipPrice = ", sAutoShop_price_struct.iCarClubMembershipPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added Auto Shop property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Failed to add Auto Shop property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore Auto Shop property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_AUTO_SHOP_MODS_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, g_sAutoShopData, sAutoShop_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Arcade upgrade failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Auto Shop upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
#IF FEATURE_FIXER
ELIF IS_CATALOG_ITEM_A_FIXER_HQ_ITEM(iItemId)
FIXER_HQ_DATA_STRUCT sFixerHQData
GET_SCALEFORM_FIXER_HQ_DATA(sFixerHQData)
IF NOT DOES_ITEM_MATCH_SELLING_ITEM(iItemId, iSellingItemId)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding new Fixer HQ property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iArt = ", sFixerHQData.iArt)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iArtPrice = ", sFixerHQ_price_struct.iArtPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iWallpaper = ", sFixerHQData.iWallpaper)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallpaperPrice = ", sFixerHQ_price_struct.iWallpaperPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iTint = ", sFixerHQData.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sFixerHQ_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iVehWorkshop = ", sFixerHQData.iVehWorkshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehWorkshopPrice = ", sFixerHQ_price_struct.iVehWorkshopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iArmory = ", sFixerHQData.iArmory)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iArmorypPrice = ", sFixerHQ_price_struct.iArmoryPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iPersonalQuarters = ", sFixerHQData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sFixerHQ_price_struct.iPersonalQuartersPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
IF iSellingItemId != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade new Fixer HQ property to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iSellingItemId, eAction, 1, iSellingPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add selling Fixer HQ item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ENDIF
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added new Fixer HQ property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add new Fixer HQ property coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore new Fixer HQ property coupon hash ", iDoCouponHash)
ENDIF
IF ADD_FIXER_HQ_UPGRADES_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, sFixerHQData, sFixerHQ_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - New Fixer HQ failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Fixer HQ basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add new Fixer HQ item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding Fixer HQ upgrade to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, ", iItemInteriorID: ", iItemInteriorID, ", iInventoryInteriorID: ", iInventoryInteriorID)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iArt = ", sFixerHQData.iArt)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iArtPrice = ", sFixerHQ_price_struct.iArtPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iWallpaper = ", sFixerHQData.iWallpaper)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iWallpaperPrice = ", sFixerHQ_price_struct.iWallpaperPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iTint = ", sFixerHQData.iTint)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iTintPrice = ", sFixerHQ_price_struct.iTintPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iVehWorkshop = ", sFixerHQData.iVehWorkshop)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iVehWorkshopPrice = ", sFixerHQ_price_struct.iVehWorkshopPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iArmory = ", sFixerHQData.iArmory)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iArmorypPrice = ", sFixerHQ_price_struct.iArmoryPrice)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...sFixerHQData.iPersonalQuarters = ", sFixerHQData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - ...iPersonalQuartersPrice = ", sFixerHQ_price_struct.iPersonalQuartersPrice)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added Fixer HQ property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Failed to add Fixer HQ property upgrade coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore Fixer HQ property upgrade coupon hash ", iDoCouponHash)
ENDIF
IF ADD_FIXER_HQ_UPGRADES_TO_BASKET(iItemId, CATEGORY_INVENTORY_PROPERTY_INTERIOR, sFixerHQData, sFixerHQ_price_struct)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Fixer HQ upgrade failed to add default upgrades to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet = $-", iWalletAmount, ", bank = $-", iBankAmount, "): iPrice = $", iPrice, ", bankBalance = $", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance = $", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start Fixer HQ upgrade basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ENDIF
#ENDIF
ENDIF
// VEHICLES
ELIF eCategory = CATEGORY_INVENTORY_VEHICLE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding vehicle to basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey, " iCouponPrice: ", iCouponPrice)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
/* <Item type="netCatalogOnlyItem" key="PM_COUPON_MIL_SITE">
<keyhash value="1776242445" />
<Item type="netCatalogOnlyItem" key="PM_COUPON_CAR_SITE">
<keyhash value="118439962" />
<Item type="netCatalogOnlyItem" key="PM_COUPON_PLANE_SITE">
<keyhash value="1514966546" />
<Item type="netCatalogOnlyItem" key="PO_COUPON_CAR_XMAS2017">
<keyhash value="-1996922865" />
<Item type="netCatalogOnlyItem" key="PO_COUPON_CAR2_XMAS2018>
<keyhash value="2125613953" />
<Item type="netCatalogOnlyItem" key="PO_COUPON_HELI_XMAS2018">
<keyhash value="-1462899015" />
<Item type="netCatalogOnlyItem" key="PO_COUPON_CAR2_XMAS2018">
<keyhash value="902521715" /> */
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iInventoryKey, eAction, 1, iCouponPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iDoCouponHash)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added vehicle coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add vehicle coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore vehicle coupon hash ", iDoCouponHash)
ENDIF
IF ADD_CURRENT_VEHICLE_MODS_TO_BASKET(confMpSlotIndex, tempVehID, TRUE)
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start vehicle basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add default mods to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add vehicle to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding basket eCategory:", GET_SHOP_ITEM_CATEGORIES_DEBUG_STRING(eCategory), ", eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iPrice:$", iPrice, ", iItemId:", iItemId, ", iInventoryKey:", iInventoryKey)
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
IF iDoCouponHash != 0
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iDoCouponHash, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iItemId)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Successfully added coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Faied to add coupon hash ", iDoCouponHash, " to basket (iItemId: ", iItemId, ").")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
RETURN TRUE
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Ignore coupon hash ", iDoCouponHash)
ENDIF
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
IF iWalletAmount != 0
OR iBankAmount != 0
OR bCouponPriceZero
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPrice=$", iPrice, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start basket checkout")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add item to basket")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
BREAK
// Pending
CASE SHOP_BASKET_STAGE_PENDING
INT iScriptTransactionIndex
iScriptTransactionIndex = GET_BASKET_TRANSACTION_SCRIPT_INDEX()
IF iScriptTransactionIndex >= 0
AND iScriptTransactionIndex < SHOPPING_TRANSACTION_MAX_NUMBER
IF IS_CASH_TRANSACTION_COMPLETE(iScriptTransactionIndex)
IF GET_CASH_TRANSACTION_STATUS(iScriptTransactionIndex) = CASH_TRANSACTION_STATUS_SUCCESS
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket transaction finished, success!")
iProcessingBasketStage = SHOP_BASKET_STAGE_SUCCESS
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket transaction finished, failed!")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket transaction invalid, failed!")
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
ENDIF
BREAK
// Success
CASE SHOP_BASKET_STAGE_SUCCESS
//DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX()) -- we delete this later
bProcessingBasket = FALSE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
IF NOT bBypassFakeCash
USE_FAKE_MP_CASH(FALSE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
ENDIF
iProcessSuccess = GENERIC_TRANSACTION_STATE_SUCCESS
RETURN FALSE
BREAK
//Failed
CASE SHOP_BASKET_STAGE_FAILED
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
bProcessingBasket = FALSE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
IF NOT bBypassFakeCash
USE_FAKE_MP_CASH(FALSE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
ENDIF
iProcessSuccess = GENERIC_TRANSACTION_STATE_FAILED
RETURN FALSE
BREAK
ENDSWITCH
RETURN TRUE
ENDIF
IF iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
CPRINTLN(DEBUG_INTERNET, "[BASKET] - was FORCE_CLOSE_BROWSER called to termiate the transaction? Set success to 0")
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
bProcessingBasket = FALSE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
IF NOT bBypassFakeCash
USE_FAKE_MP_CASH(FALSE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
ENDIF
iProcessSuccess = GENERIC_TRANSACTION_STATE_FAILED
RETURN FALSE
ENDIF
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
RETURN FALSE
ENDFUNC
FUNC BOOL SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
IF NETWORK_IS_ACTIVITY_SESSION()
RETURN FALSE
ENDIF
IF IS_PLAYER_CRITICAL_TO_ANY_EVENT(PLAYER_ID())
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL DO_BIGASS_VEHICLE_BUY(WEBSITE_INDEX_ENUM siteID,SITE_BUYABLE_VEHICLE sbv, INT iPrice, VEHICLE_SITE_FAIL_REASON &reason)
INT iBigAssID = GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(sbv, g_eLastBuyableVehicleColourSelected)
COUPON_TYPE eDoCoupon = MAX_COUPONS
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: triggered on vehicle SBV ", GET_LABEL_BUYABLE_VEHICLE(sbv), ":", sbv, ", iBigAssID: ", iBigAssID)
IF iBigAssID < -1 //OR iBigAssID > 31
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to invalid index ", iBigAssID)
reason = VSFR_INVALID_CATEGORY
RETURN FALSE
ENDIF
//Are bigass vehicles not purchaseable yet?
IF NOT ARE_ALL_INSTANCED_TUTORIALS_COMPLETE()
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to FM trigger not done yet")
reason = VSFR_BIGASS_NOT_UNLOCKED
RETURN FALSE
ENDIF
BOOL bPreviousBigassVehicle
VEHICLE_INDEX vi = NULL
INT iSlotToUse = -1, iDisplaySlotToUse = -1
//is it already owned?
IF (sbv = BV_DLC_BIG_YACHT)
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to insufficient rank:", GET_PLAYER_RANK(GET_PLAYER_INDEX()))
reason = VSFR_INSUFFCIENT_RANK
RETURN FALSE
ELSE
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to pending sufficient rank")
reason = VSFR_INSUFFCIENT_RANK_PENDING
RETURN FALSE
ENDIF
ENDIF
IF IS_PLAYER_CRITICAL_TO_ANY_EVENT(PLAYER_ID())
AND GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) = FMMC_TYPE_GB_YACHT_ROBBERY
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to yacht robbery active")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
ELIF (sbv = BV_DLC_BIG_TRUCK)
FACTORY_ID eTradeInFactory = GET_OWNED_BUNKER(PLAYER_ID())
IF eTradeInFactory = FACTORY_ID_INVALID
OR eTradeInFactory = FACTORY_ID_MAX
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to player not owing bunker")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousBigassVehicle = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_TRUCK))
ELSE
bPreviousBigassVehicle = (GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_TRUCK_MODEL_0) != 0)
ENDIF
INT iAltVersion = g_sTruckDataStruct.iCab
BOOL bAltVersion = (iAltVersion = 0)
CONFIGURE_STRUCT_FOR_BUYABLE_VEHICLE(sbv, g_sConfVssMP, TRUE, DEFAULT, iAltVersion, siteID)
///IF NOT bPreviousBigassVehicle
// iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT)
//ELSE
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT,DEFAULT,TRUE)
//ENDIF
iDisplaySlotToUse = DISPLAY_SLOT_MODDED_ARMOURY_TRUCK
IF NOT bPreviousBigassVehicle
AND iSlotToUse = -1
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to buying truck but iSlotToUse = -1")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
confMpSlotIndex = iSlotToUse
confMPDisplayIndex = iDisplaySlotToUse
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - waiting for CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_VEHICLE_BUY(", GET_LABEL_BUYABLE_VEHICLE(sbv), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), ", vi, iAltVersion:", iAltVersion, ")")
WHILE NOT CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY(sbv, siteID, g_sConfVssMP, vi, bAltVersion)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
ELIF (sbv = BV_DLC_BIG_PLANE)
DEFUNCT_BASE_ID eTradeInBase = GET_PLAYERS_OWNED_DEFUNCT_BASE(PLAYER_ID())
IF NOT IS_DEFUNCT_BASE_ID_VALID(eTradeInBase)
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to player not owing base")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousBigassVehicle = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_PLANE))
ELSE
bPreviousBigassVehicle = (GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_PLANE_MODEL_0) != 0)
ENDIF
INT iAltVersion = 0
BOOL bAltVersion = (iAltVersion = 0)
CONFIGURE_STRUCT_FOR_BUYABLE_VEHICLE(sbv, g_sConfVssMP, TRUE, DEFAULT, iAltVersion, siteID)
IF (g_sPlaneDataStruct.iGunTurret = 0)
g_sConfVssMP.VehicleSetup.iModIndex[MOD_ROOF] = 0
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: transaction, no turret")
ELSE
g_sConfVssMP.VehicleSetup.iModIndex[MOD_ROOF] = 1
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: transaction, has turret")
ENDIF
///IF NOT bPreviousBigassVehicle
// iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT)
//ELSE
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT,DEFAULT,TRUE)
//ENDIF
iDisplaySlotToUse = DISPLAY_SLOT_AVENGER_HELI
IF NOT bPreviousBigassVehicle
AND iSlotToUse = -1
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to buying plane but iSlotToUse = -1")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
confMpSlotIndex = iSlotToUse
confMPDisplayIndex = iDisplaySlotToUse
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - waiting for CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_VEHICLE_BUY(", GET_LABEL_BUYABLE_VEHICLE(sbv), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), ", vi, iAltVersion:", iAltVersion, ")")
WHILE NOT CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY(sbv, siteID, g_sConfVssMP, vi, bAltVersion)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
ELIF (sbv = BV_DLC_HACKER_TRUCK)
BUSINESS_HUB_ID eTradeInBusinessHub = GET_PLAYERS_OWNED_BUSINESS_HUB(PLAYER_ID())
IF eTradeInBusinessHub = BUSINESS_HUB_ID_INVALID
OR eTradeInBusinessHub = BUSINESS_HUB_ID_COUNT
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to player not owing business hub")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousBigassVehicle = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_HACKER_TRUCK))
ELSE
//
INT iSaveSlot, iModelInSaveSlot
MPSV_GET_SAVE_SLOT_FROM_DISPLAY_SLOT_USING_STATS(DISPLAY_SLOT_MEGAWARE_MOC, iSaveSlot)
IF iSaveSlot >= 0
iModelInSaveSlot = GET_MP_INT_CHARACTER_STAT(GET_INT_STAT_FOR_VEHICLE_SLOT(MPSV_STAT_ELEMENT_MODEL,iSaveSlot))
ENDIF
bPreviousBigassVehicle = (INT_TO_ENUM(MODEL_NAMES,iModelInSaveSlot) = TERBYTE)
ENDIF
INT iAltVersion = g_sHackerTruckDataStruct.iCab
BOOL bAltVersion = (iAltVersion = 0)
CONFIGURE_STRUCT_FOR_BUYABLE_VEHICLE(sbv, g_sConfVssMP, TRUE, DEFAULT, iAltVersion, siteID)
///IF NOT bPreviousBigassVehicle
// iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT)
//ELSE
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT,DEFAULT,TRUE)
//ENDIF
iDisplaySlotToUse = DISPLAY_SLOT_MEGAWARE_MOC
IF NOT bPreviousBigassVehicle
AND iSlotToUse = -1
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to buying hacker truck but iSlotToUse = -1")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
confMpSlotIndex = iSlotToUse
confMPDisplayIndex = iDisplaySlotToUse
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - waiting for CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_VEHICLE_BUY(", GET_LABEL_BUYABLE_VEHICLE(sbv), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), ", vi, iAltVersion:", iAltVersion, ")")
WHILE NOT CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY(sbv, siteID, g_sConfVssMP, vi, bAltVersion)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
// Allow renovations.
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousBigassVehicle = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_IH_KOSATKA))
ELSE
bPreviousBigassVehicle = (GET_MP_INT_CHARACTER_STAT(MP_STAT_IH_SUB_OWNED) != 0)
ENDIF
#ENDIF
ELSE
IF (sbv = BV_GR_TRAILERSMALL2)
IF !HAS_PLAYER_COMPLETED_INITIAL_AMBIENT_TUTORIALS(PLAYER_ID())
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to not completing online tutorial")
reason = VSFR_NOT_SAFE
RETURN FALSE
ENDIF
ENDIF
IF IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID)
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed due to player already owning ", GET_LABEL_BUYABLE_VEHICLE(sbv), " iBigAssID", iBigAssID)
reason = VSFR_ALREADY_OWNED
RETURN FALSE
ENDIF
ENDIF
// Check specific vehicle website
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
IF sbv = BV_GO_HERMES
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_XMAS2017)")
eDoCoupon = COUPON_CAR_XMAS2017
ENDIF
ELIF sbv = BV_AW_CLIQUE
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_XMAS2018)")
eDoCoupon = COUPON_CAR_XMAS2018
ENDIF
ELIF sbv = BV_A_BUZZARD
IF DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_HELI_XMAS2018)")
eDoCoupon = COUPON_HELI_XMAS2018
ENDIF
ELIF sbv = BV_DLC_INSURGENT
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR2_XMAS2018)")
eDoCoupon = COUPON_CAR2_XMAS2018
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF sbv = BV_G9E_S95
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_GEN9_MIGRATION)")
eDoCoupon = COUPON_CAR_GEN9_MIGRATION
ENDIF
#ENDIF
ENDIF
ENDIF
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_SITE)")
eDoCoupon = COUPON_CAR_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_CAR_SITE)")
eDoCoupon = COUPON_CASINO_CAR_SITE
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_PLANE_SITE)")
eDoCoupon = COUPON_PLANE_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_PLANE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_PLANE_SITE)")
eDoCoupon = COUPON_CASINO_PLANE_SITE
ENDIF
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_MIL_SITE)")
eDoCoupon = COUPON_MIL_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_MIL_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_MIL_SITE)")
eDoCoupon = COUPON_CASINO_MIL_SITE
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BOAT_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BOAT_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_BOAT_SITE)")
eDoCoupon = COUPON_CASINO_BOAT_SITE
ENDIF
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE2, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE2)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_CAR_SITE2)")
eDoCoupon = COUPON_CASINO_CAR_SITE2
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BIKE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BIKE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CASINO_BIKE_SITE)")
eDoCoupon = COUPON_CASINO_BIKE_SITE
ENDIF
BREAK
ENDSWITCH
ENDIF
IF (eDoCoupon = COUPON_CASINO_PLANE_SITE)
OR (eDoCoupon = COUPON_CASINO_BOAT_SITE)
OR (eDoCoupon = COUPON_CASINO_CAR_SITE)
OR (eDoCoupon = COUPON_CASINO_CAR_SITE2)
OR (eDoCoupon = COUPON_CASINO_MIL_SITE)
OR (eDoCoupon = COUPON_CASINO_BIKE_SITE)
TRIGGER_BROWSER_NAG_SCREEN(ENUM_TO_INT(eDoCoupon), iPrice, NSR_VOUCHER)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Trigger browser voucher screen(", GET_COUPON_STRING(eDoCoupon), ", ", iPrice, ", NSR_VOUCHER)")
BOOL bInputFrontendAcceptPressed = FALSE, bInputFrontendCancelPressed = FALSE
WHILE NOT bInputFrontendAcceptPressed
AND NOT bInputFrontendCancelPressed
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
bInputFrontendAcceptPressed = TRUE
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
ELIF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
bInputFrontendCancelPressed = TRUE
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
IF bInputFrontendAcceptPressed
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Accept voucher ", GET_COUPON_STRING(eDoCoupon))
ELIF bInputFrontendCancelPressed
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Cancel voucher ", GET_COUPON_STRING(eDoCoupon))
reason = VSFR_CANCELED
RETURN FALSE
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: UNKNOWN voucher ", GET_COUPON_STRING(eDoCoupon))
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iVariation, iAltNumber
iVariation = 0
iAltNumber = -1
IF sbv = BV_NG_MARSHALL
SWITCH g_eLastBuyableVehicleColourSelected
CASE BCV_RED_COLOUR iVariation = 0 BREAK //USA
CASE BCV_PINK_COLOUR iVariation = 1 BREAK //AUS
CASE BCV_YELLOW_COLOUR iVariation = 2 BREAK //BRA
CASE BCV_ORANGE_COLOUR iVariation = 3 BREAK //SPA
CASE BCV_GREEN_COLOUR iVariation = 4 BREAK //CAN
CASE BCV_BLUE_COLOUR iVariation = 5 BREAK //FRA
CASE BCV_BLACK_COLOUR iVariation = 6 BREAK //GER
CASE BCV_WHITE_COLOUR iVariation = 7 BREAK //JAP
CASE BCV_COLOUR_1 iVariation = 8 BREAK //SCO
CASE BCV_COLOUR_2 iVariation = 9 BREAK //UK
CASE BCV_COLOUR_3 iVariation = 10 BREAK //ITA
CASE BCV_COLOUR_4 iVariation = 11 BREAK //SWI
CASE BCV_COLOUR_5 iVariation = 12 BREAK //JAM
CASE BCV_COLOUR_6 iVariation = 13 BREAK //COL
CASE BCV_COLOUR_7 iVariation = 14 BREAK //NOR
CASE BCV_COLOUR_8 iVariation = 15 BREAK //SWE
CASE BCV_COLOUR_9 iVariation = 16 BREAK //BEL
CASE BCV_COLOUR_10 iVariation = 17 BREAK //MEX
CASE BCV_COLOUR_11 iVariation = 18 BREAK //AUT
CASE BCV_COLOUR_12 iVariation = 19 BREAK //RUS
CASE BCV_COLOUR_13 iVariation = 20 BREAK //ARG
CASE BCV_COLOUR_14 iVariation = 21 BREAK //TUR
CASE BCV_COLOUR_15 iVariation = 22 BREAK //IRE
CASE BCV_COLOUR_16 iVariation = 23 BREAK //WAL
CASE BCV_COLOUR_17 iVariation = 24 BREAK //ENG
ENDSWITCH
ELIF sbv = BV_BB_BLIMP3
SWITCH g_eLastBuyableVehicleColourSelected
CASE BCV_RED_COLOUR iVariation = 0 BREAK //Livery #1
CASE BCV_PINK_COLOUR iVariation = 1 BREAK //Livery #2
CASE BCV_YELLOW_COLOUR iVariation = 2 BREAK //Livery #3
CASE BCV_ORANGE_COLOUR iVariation = 3 BREAK //Livery #4
CASE BCV_GREEN_COLOUR iVariation = 4 BREAK //Livery #5
CASE BCV_BLUE_COLOUR iVariation = 5 BREAK //Livery #6
CASE BCV_BLACK_COLOUR iVariation = 6 BREAK //Livery #7
CASE BCV_WHITE_COLOUR iVariation = 7 BREAK //Nightclub
ENDSWITCH
IF IS_SBV_AN_ALTERNATE_VEHICLE(sbv, siteID, g_eLastBuyableVehicleColourSelected)
iAltNumber = 1
ENDIF
ELIF sbv = BV_BB_PBUS2
SWITCH g_eLastBuyableVehicleColourSelected
CASE BCV_RED_COLOUR iVariation = 0 BREAK //Livery #1
CASE BCV_PINK_COLOUR iVariation = 1 BREAK //Livery #2
CASE BCV_YELLOW_COLOUR iVariation = 2 BREAK //Livery #3
CASE BCV_ORANGE_COLOUR iVariation = 3 BREAK //Livery #4
CASE BCV_GREEN_COLOUR iVariation = 4 BREAK //Livery #5
CASE BCV_BLUE_COLOUR iVariation = 5 BREAK //Livery #6
CASE BCV_BLACK_COLOUR iVariation = 6 BREAK //Livery #7
CASE BCV_WHITE_COLOUR iVariation = 7 BREAK //Livery #8
CASE BCV_COLOUR_1 iVariation = 8 BREAK //Livery #9
CASE BCV_COLOUR_2 iVariation = 9 BREAK //Livery #10
ENDSWITCH
IF IS_SBV_AN_ALTERNATE_VEHICLE(sbv, siteID, g_eLastBuyableVehicleColourSelected)
iAltNumber = 1
ENDIF
ELSE
IF IS_SBV_AN_ALTERNATE_VEHICLE(sbv, siteID, g_eLastBuyableVehicleColourSelected)
iVariation = 1
ENDIF
ENDIF
BOOL bStarterPackItem = FALSE
IF IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(sbv)
IF HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
bStarterPackItem = TRUE
ENDIF
ENDIF
INT iItemId
iItemId = GET_BA_VEHICLE_KEY_FOR_CATALOGUE(sbv, iVariation, iAltNumber, bStarterPackItem)
INT iStatValue
iStatValue = g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedBigAssVehicles.iBigAssVehiclesBS[(iBigAssID/32)]
INT iProcessSuccess
iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR BIG ASS VEHICLE
INT iDoCouponHash = 0
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
iDoCouponHash = HASH("PM_COUPON_CAR_SITE") //<keyhash value="118439962" />
BREAK
CASE COUPON_PLANE_SITE
iDoCouponHash = HASH("PM_COUPON_PLANE_SITE") //<keyhash value="1514966546" />
BREAK
CASE COUPON_MIL_SITE
iDoCouponHash = HASH("PM_COUPON_MIL_SITE") //<keyhash value="1776242445" />
BREAK
CASE COUPON_CAR_XMAS2017
iDoCouponHash = HASH("PO_COUPON_CAR_XMAS2017") //<keyhash value="-1996922865" />
iPrice = 0
BREAK
CASE COUPON_CAR_XMAS2018
iDoCouponHash = HASH("PO_COUPON_CAR_XMAS2018") //<keyhash value="2125613953" />
iPrice = 0
BREAK
CASE COUPON_HELI_XMAS2018
iDoCouponHash = HASH("PO_COUPON_HELI_XMAS2018") //<keyhash value="-1462899015" />
iPrice = 0
BREAK
CASE COUPON_CAR2_XMAS2018
iDoCouponHash = HASH("PO_COUPON_CAR2_XMAS2018") //<keyhash value="902521715" />
iPrice = 0
BREAK
CASE COUPON_CASINO_PLANE_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_PLANE_SITE")
BREAK
CASE COUPON_CASINO_BOAT_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_BOAT_SITE")
BREAK
CASE COUPON_CASINO_CAR_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_CAR_SITE")
BREAK
CASE COUPON_CASINO_CAR_SITE2
iDoCouponHash = HASH("PM_COUPON_CASINO_CAR_SITE2")
BREAK
CASE COUPON_CASINO_MIL_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_MIL_SITE")
BREAK
CASE COUPON_CASINO_BIKE_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_BIKE_SITE")
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE COUPON_CAR_GEN9_MIGRATION
iPrice = 0
BREAK
#ENDIF
ENDSWITCH
ITEM_ACTION_TYPES eAction = NET_SHOP_ACTION_SPEND
SHOP_ITEM_CATEGORIES eCatageory = CATEGORY_SERVICE_UNLOCKED
INT iInventoryKey = 0
// Override yacht to use the buy vehicle action
IF sbv = BV_DLC_BIG_YACHT
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousPegasus = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_YACHT))
ELSE
bPreviousPegasus = (GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_MODEL_0) != 0)
ENDIF
eCatageory = CATEGORY_INVENTORY_VEHICLE
iInventoryKey = GET_YACHT_INVENTORY_KEY_FOR_CATALOGUE(0)
eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
IF sbv = BV_DLC_BIG_TRUCK
BOOL bProcessBigTruckBasket
IF NOT bPreviousBigassVehicle
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigTruckBasket = TRUE, not bPreviousBigassVehicle")
bProcessBigTruckBasket = TRUE
ELSE
IF INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eTruckModel
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigTruckBasket = TRUE, cab model changed")
bProcessBigTruckBasket = TRUE
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigTruckBasket = FALSE, cab model same")
bProcessBigTruckBasket = FALSE
ENDIF
ENDIF
IF bProcessBigTruckBasket
MODEL_NAMES eThisVehModel = g_sConfVssMP.vehicleSetup.eModel
BOOL bThisAltVersion = TRUE //free
// // GET_VEHICLE_KEY_FOR_CATALOGUE // // // // // // // // // // // //
INT iAltNum = -1
INT iPriceVariation = GET_VEHICLE_MOD_PRICE_VARIATION_FOR_CATALOGUE(eThisVehModel)
TEXT_LABEL_15 tlVehicleName = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(eThisVehModel)
TEXT_LABEL_63 tlCategoryKey
IF bThisAltVersion
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 1, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ELSE
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 0, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ENDIF
INT iTruckItemId = GET_HASH_KEY(tlCategoryKey)
PRINTLN("[CATALOGUE_KEY] key '", tlCategoryKey, "' = ", iTruckItemId)
// // // // // // // // // // // // // // // // // // // // // // // //
INT iTruckInventoryKey = GET_VEHICLE_INVENTORY_KEY_FOR_CATALOGUE(confMpSlotIndex)
INT iTruckProcessSuccess = -1
///////////////////////////////////////////
/// TRANSACTION FOR TRUCK
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iTruckProcessSuccess, 0, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel), CATEGORY_INVENTORY_VEHICLE, NET_SHOP_ACTION_BUY_VEHICLE, iTruckItemId, iTruckInventoryKey, iDoCouponHash, DEFAULT, DEFAULT, vi)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iTruckProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: truck cab:failed to process transaction")
CLEAR_BIG_ASS_VEHICLE_BS(iBigAssID)
reason = VSFR_NOT_SAFE
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: truck cab:success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: truck cab:unknown iTruckProcessSuccess: \"", iTruckProcessSuccess, "\"")
BREAK
ENDSWITCH
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
ENDIF
eCatageory = CATEGORY_INVENTORY_VEHICLE
iInventoryKey = GET_TRUCK_INVENTORY_KEY_FOR_CATALOGUE(0)
eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
IF sbv = BV_DLC_BALLISTIC_EQUIPMENT
// eCatageory = CATEGORY_INVENTORY_VEHICLE
// iInventoryKey = GET_BALLISTIC_EQUIPMENT_INVENTORY_KEY_FOR_CATALOGUE(0)
// eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
IF sbv = BV_DLC_BIG_PLANE
BOOL bProcessBigPlaneBasket
IF NOT bPreviousBigassVehicle
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigPlaneBasket = TRUE, not bPreviousBigassVehicle")
bProcessBigPlaneBasket = TRUE
ELSE
// IF INT_TO_ENUM(MODEL_NAMES, GET_PLANE_CAB_FROM_SF(g_sPlaneDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.ePlaneModel
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigPlaneBasket = TRUE, cab model changed")
// bProcessBigPlaneBasket = TRUE
// ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessBigPlaneBasket = FALSE, cab model same")
bProcessBigPlaneBasket = FALSE
// ENDIF
ENDIF
IF bProcessBigPlaneBasket
MODEL_NAMES eThisVehModel = g_sConfVssMP.vehicleSetup.eModel
BOOL bThisAltVersion = TRUE //free
// // GET_VEHICLE_KEY_FOR_CATALOGUE // // // // // // // // // // // //
INT iAltNum = -1
INT iPriceVariation = GET_VEHICLE_MOD_PRICE_VARIATION_FOR_CATALOGUE(eThisVehModel)
TEXT_LABEL_15 tlVehicleName = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(eThisVehModel)
TEXT_LABEL_63 tlCategoryKey
IF bThisAltVersion
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 1, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ELSE
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 0, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ENDIF
INT iPlaneItemId = GET_HASH_KEY(tlCategoryKey)
PRINTLN("[CATALOGUE_KEY] key '", tlCategoryKey, "' = ", iPlaneItemId)
// // // // // // // // // // // // // // // // // // // // // // // //
INT iPlaneInventoryKey = GET_VEHICLE_INVENTORY_KEY_FOR_CATALOGUE(confMpSlotIndex)
INT iPlaneProcessSuccess = -1
///////////////////////////////////////////
/// TRANSACTION FOR BIG PLANE
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iPlaneProcessSuccess, 0, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel), CATEGORY_INVENTORY_VEHICLE, NET_SHOP_ACTION_BUY_VEHICLE, iPlaneItemId, iPlaneInventoryKey, iDoCouponHash, DEFAULT, DEFAULT, vi)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iPlaneProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: plane cab:failed to process transaction")
CLEAR_BIG_ASS_VEHICLE_BS(iBigAssID)
reason = VSFR_NOT_SAFE
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: plane cab:success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: plane cab:unknown iPlaneProcessSuccess: \"", iPlaneProcessSuccess, "\"")
BREAK
ENDSWITCH
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
ENDIF
eCatageory = CATEGORY_INVENTORY_VEHICLE
iInventoryKey = GET_PLANE_INVENTORY_KEY_FOR_CATALOGUE(0)
eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
IF sbv = BV_DLC_HACKER_TRUCK
BOOL bProcessHackerTruckBasket
IF NOT bPreviousBigassVehicle
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessHackerTruckBasket = TRUE, not bPreviousBigassVehicle")
bProcessHackerTruckBasket = TRUE
ELSE
// IF IINT_TO_ENUM(MODEL_NAMES, GET_HACKER_TRUCK_CAB_FROM_SF(g_sHackerTruckDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eHackerTruckModel
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessHackerTruckBasket = TRUE, cab model changed")
// bProcessHackerTruckBasket = TRUE
// ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: bProcessHackerTruckBasket = FALSE, cab model same")
bProcessHackerTruckBasket = FALSE
// ENDIF
ENDIF
IF bProcessHackerTruckBasket
MODEL_NAMES eThisVehModel = g_sConfVssMP.vehicleSetup.eModel
BOOL bThisAltVersion = TRUE //free
// // GET_VEHICLE_KEY_FOR_CATALOGUE // // // // // // // // // // // //
INT iAltNum = -1
INT iPriceVariation = GET_VEHICLE_MOD_PRICE_VARIATION_FOR_CATALOGUE(eThisVehModel)
TEXT_LABEL_15 tlVehicleName = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(eThisVehModel)
TEXT_LABEL_63 tlCategoryKey
IF bThisAltVersion
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 1, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ELSE
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, eThisVehModel, SHOP_TYPE_CARMOD, 0, iPriceVariation, iAltNum, DEFAULT, DEFAULT, bStarterPackItem)
ENDIF
INT iHackerTruckItemId = GET_HASH_KEY(tlCategoryKey)
PRINTLN("[CATALOGUE_KEY] key '", tlCategoryKey, "' = ", iHackerTruckItemId)
// // // // // // // // // // // // // // // // // // // // // // // //
INT iHackerTruckInventoryKey = GET_VEHICLE_INVENTORY_KEY_FOR_CATALOGUE(confMpSlotIndex)
INT iHackerTruckProcessSuccess = -1
///////////////////////////////////////////
/// TRANSACTION FOR HACKER TRUCK
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iHackerTruckProcessSuccess, 0, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel), CATEGORY_INVENTORY_VEHICLE, NET_SHOP_ACTION_BUY_VEHICLE, iHackerTruckItemId, iHackerTruckInventoryKey, iDoCouponHash, DEFAULT, DEFAULT, vi)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iHackerTruckProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: hacker truck cab:failed to process transaction")
CLEAR_BIG_ASS_VEHICLE_BS(iBigAssID)
reason = VSFR_NOT_SAFE
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: hacker truck cab:success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: hacker truck cab:unknown iHackerTruckProcessSuccess: \"", iHackerTruckProcessSuccess, "\"")
BREAK
ENDSWITCH
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
ENDIF
eCatageory = CATEGORY_INVENTORY_VEHICLE
iInventoryKey = GET_HACKER_TRUCK_INVENTORY_KEY_FOR_CATALOGUE(0)
eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
#IF FEATURE_HEIST_ISLAND
// Override submarine to use the buy vehicle action
IF sbv = BV_IH_KOSATKA
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousPegasus = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_IH_KOSATKA))
ELSE
bPreviousPegasus = (GET_MP_INT_CHARACTER_STAT(MP_STAT_IH_SUB_OWNED) != 0)
ENDIF
eCatageory = CATEGORY_INVENTORY_VEHICLE
iInventoryKey = GET_KOSATKA_INVENTORY_KEY_FOR_CATALOGUE(0)
eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
#ENDIF
IF sbv = BV_AW_RCBANDITO
// eCatageory = CATEGORY_INVENTORY_VEHICLE
// iInventoryKey = GET_BALLISTIC_EQUIPMENT_INVENTORY_KEY_FOR_CATALOGUE(0)
// eAction = NET_SHOP_ACTION_BUY_VEHICLE
ENDIF
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPrice, iStatValue, eCatageory, eAction, iItemId, iInventoryKey, iDoCouponHash, DEFAULT, DEFAULT, vi, DEFAULT, DEFAULT)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: failed to process transaction")
CLEAR_BIG_ASS_VEHICLE_BS(iBigAssID)
reason = VSFR_NOT_SAFE
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
ENDIF
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
GO_TO_WEBSITE(GET_VEHICLE_PURCHASE_SUCCESS_PAGE(siteID, sbv))
// Check specific vehicle website
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CAR_XMAS2017
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2017)")
iPrice = 0
BREAK
CASE COUPON_CAR_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_HELI_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_HELI_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CAR2_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR2_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CASINO_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BOAT_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE2
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BIKE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE COUPON_CAR_GEN9_MIGRATION
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)")
iPrice = 0
BREAK
#ENDIF
ENDSWITCH
MODEL_NAMES thisModel = GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)
IF thisModel != GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - thisModel[", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(thisModel), "] is different from GET_MODEL_FOR_BUYABLE_VEHICLE(", GET_LABEL_BUYABLE_VEHICLE(sbv), ")!!!")
reason = VSFR_BIGASS_NOT_UNLOCKED
RETURN FALSE
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - thisModel[", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(thisModel), "] matches GET_MODEL_FOR_BUYABLE_VEHICLE(", GET_LABEL_BUYABLE_VEHICLE(sbv), ")")
ENDIF
IF IS_THIS_MODEL_A_BOAT(thisModel)
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BOAT_ACCESS, TRUE)
#IF IS_DEBUG_BUILD
NET_PRINT("[RANKUP] ... MP_STAT_BOAT_ACCESS AVAILABLE ")
#ENDIF
ELIF IS_THIS_MODEL_A_HELI(thisModel)
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_HELI_ACCESS, TRUE)
#IF IS_DEBUG_BUILD
NET_PRINT("[RANKUP] ... MP_STAT_HELI_ACCESS AVAILABLE ")
#ENDIF
ELIF IS_THIS_MODEL_A_PLANE(thisModel)
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_PLANE_ACCESS, TRUE)
#IF IS_DEBUG_BUILD
NET_PRINT("[RANKUP] ... MP_STAT_PLANE_ACCESS AVAILABLE ")
#ENDIF
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_SITE)")
REDEEM_COUPON(COUPON_CAR_SITE)
BREAK
CASE COUPON_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_PLANE_SITE)")
REDEEM_COUPON(COUPON_PLANE_SITE)
BREAK
CASE COUPON_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_MIL_SITE)")
REDEEM_COUPON(COUPON_MIL_SITE)
BREAK
CASE COUPON_CAR_XMAS2017
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2017)")
REDEEM_COUPON(COUPON_CAR_XMAS2017)
BREAK
CASE COUPON_CAR_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2018)")
REDEEM_COUPON(COUPON_CAR_XMAS2018)
BREAK
CASE COUPON_HELI_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_HELI_XMAS2018)")
REDEEM_COUPON(COUPON_HELI_XMAS2018)
BREAK
CASE COUPON_CAR2_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR2_XMAS2018)")
REDEEM_COUPON(COUPON_CAR2_XMAS2018)
BREAK
CASE COUPON_CASINO_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)")
REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)
BREAK
CASE COUPON_CASINO_BOAT_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)")
REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)
BREAK
CASE COUPON_CASINO_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE)")
REDEEM_COUPON(COUPON_CASINO_CAR_SITE)
BREAK
CASE COUPON_CASINO_CAR_SITE2
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)")
REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)
BREAK
CASE COUPON_CASINO_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_MIL_SITE)")
REDEEM_COUPON(COUPON_CASINO_MIL_SITE)
BREAK
CASE COUPON_CASINO_BIKE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)")
REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE COUPON_CAR_GEN9_MIGRATION
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)")
REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)
BREAK
#ENDIF
ENDSWITCH
IF iPrice < 0
AND thisModel != eDLC_BIG_YACHT_MODEL
AND thisModel != eDLC_BIG_TRUCK_MODEL
AND thisModel != eDLC_BALLISTIC_EQUIPMENT_MODEL
AND thisModel != eDLC_BIG_PLANE_MODEL
AND !IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(confSbv)
AND thisModel != eDLC_HACKER_TRUCK_MODEL
AND thisModel != GET_SUBMARINE_MODEL()
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: free vehicle ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(thisModel), " $", iPrice)
RETURN TRUE
ENDIF
IF iPrice >= 0
OR (thisModel = eDLC_BIG_TRUCK_MODEL)
OR (thisModel = eDLC_BIG_PLANE_MODEL)
OR IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(confSbv)
OR (thisModel = eDLC_HACKER_TRUCK_MODEL)
OR (thisModel = GET_SUBMARINE_MODEL())
//ENUM_TO_INT(thisModel)
BANK_ACCOUNT_ACTION_SOURCE_BAAC basource
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET basource = BAAC_MOTORSPORT_SITE BREAK
CASE WWW_ELITASTRAVEL_COM basource = BAAC_PLANE_SITE BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM basource = BAAC_ARMY_SITE BREAK
CASE WWW_DOCKTEASE_COM basource = BAAC_BOAT_SITE BREAK
CASE WWW_PANDMCYCLES_COM basource = BAAC_BIKE_SITE BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM basource = BAAC_SUPERAUTO_SITE BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM basource = BAAC_LOWRIDER_SITE BREAK
CASE WWW_ARENAWAR_TV basource = BAAC_ARENA_SITE BREAK
ENDSWITCH
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, iPrice)
IF thisModel = eDLC_BIG_YACHT_MODEL
IF (iYachtModPrice >= 0 AND g_sYachtDataStruct.iMod != GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_MOD))
OR !DOES_PLAYER_OWN_PRIVATE_YACHT(PLAYER_ID())
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtModPrice)
SWITCH g_sYachtDataStruct.iMod
CASE 0
CASE 3
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht model = ", g_sYachtDataStruct.iMod, ", HASH(\"BIG_YACHT_0\") ", HASH("BIG_YACHT_0"), " ", PICK_STRING(fromBank, "fromBank", "not fromBank"), " + $", PICK_STRING(fromBankAndWallet, "fromBankAndWallet", "not fromBankAndWallet"))
NETWORK_BUY_PROPERTY(iYachtModPrice,HASH("BIG_YACHT_0"),fromBank,fromBankAndWallet)
BREAK
CASE 1
CASE 4
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht model = ", g_sYachtDataStruct.iMod, ", HASH(\"BIG_YACHT_1\") ", HASH("BIG_YACHT_1"), " ", PICK_STRING(fromBank, "fromBank", "not fromBank"), " + $", PICK_STRING(fromBankAndWallet, "fromBankAndWallet", "not fromBankAndWallet"))
NETWORK_BUY_PROPERTY(iYachtModPrice,HASH("BIG_YACHT_1"),fromBank,fromBankAndWallet)
BREAK
CASE 2
CASE 5
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht model = ", g_sYachtDataStruct.iMod, ", HASH(\"BIG_YACHT_2\") ", HASH("BIG_YACHT_2"), " ", PICK_STRING(fromBank, "fromBank", "not fromBank"), " + $", PICK_STRING(fromBankAndWallet, "fromBankAndWallet", "not fromBankAndWallet"))
NETWORK_BUY_PROPERTY(iYachtModPrice,HASH("BIG_YACHT_2"),fromBank,fromBankAndWallet)
BREAK
DEFAULT
CASSERTLN(DEBUG_SHOPS, "kr_debug: yacht model = ", g_sYachtDataStruct.iMod, " unknown???")
BREAK
ENDSWITCH
ENDIF
TEXT_LABEL_23 str
IF iYachtLightingPrice > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtLightingPrice)
str = "BIG_YACHT_LIGHT_" //range 0 - 11
str += g_sYachtDataStruct.iLighting
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht light = ", g_sYachtDataStruct.iLighting, ", GET_HASH_KEY(\"", str, "\") ", GET_HASH_KEY(str), " $", iYachtLightingPrice)
NETWORK_BUY_PROPERTY(iYachtLightingPrice,GET_HASH_KEY(str),fromBank,fromBankAndWallet)
ENDIF
IF iYachtFixturePrice > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtFixturePrice)
str = "BIG_YACHT_FIXT_" //range 0 - 1
str += g_sYachtDataStruct.iFixture
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht fixt = ", g_sYachtDataStruct.iFixture, ", GET_HASH_KEY(\"", str, "\") ", GET_HASH_KEY(str), " $", iYachtFixturePrice)
NETWORK_BUY_PROPERTY(iYachtFixturePrice,GET_HASH_KEY(str),fromBank,fromBankAndWallet)
ENDIF
IF iYachtFlagPrice > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtFlagPrice)
str = "BIG_YACHT_FLAG_" //range 0 - 45
str += g_sYachtDataStruct.iFlag
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht flag = ", g_sYachtDataStruct.iFlag, ", GET_HASH_KEY(\"", str, "\") ", GET_HASH_KEY(str), " $", iYachtFlagPrice)
NETWORK_BUY_PROPERTY(iYachtFlagPrice,GET_HASH_KEY(str),fromBank,fromBankAndWallet)
ENDIF
IF iYachtColourPrice > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtColourPrice)
str = "BIG_YACHT_COL_" //range 0 - 15
str += g_sYachtDataStruct.iColour
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht col = ", g_sYachtDataStruct.iColour, ", GET_HASH_KEY(\"", str, "\") ", GET_HASH_KEY(str), " $", iYachtColourPrice)
NETWORK_BUY_PROPERTY(iYachtColourPrice,GET_HASH_KEY(str),fromBank,fromBankAndWallet)
ENDIF
IF iYachtNamePrice > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iYachtNamePrice)
str = "BIG_YACHT_NAME"
CPRINTLN(DEBUG_SHOPS, "kr_debug: yacht name = ", g_sYachtDataStruct.tl63Name, ", GET_HASH_KEY(\"", str, "\") ", GET_HASH_KEY(str), " $", iYachtNamePrice)
NETWORK_BUY_PROPERTY(iYachtNamePrice,GET_HASH_KEY(str),fromBank,fromBankAndWallet)
ENDIF
ELIF thisModel = eDLC_BIG_TRUCK_MODEL
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection1 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection1))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection2 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection2))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection3 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection3))
VALIDATE_TRUCK_EMPTY_SECTIONS(eSection1, eSection2, eSection3)
ARMORY_TRUCK_SECTION_TINT_ENUM eTint = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TINT_ENUM, GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour))
SPENT_ON_TRUCK data
//Check if we're trading of just buying
IF NOT bPreviousBigassVehicle
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL bUpgradeTrailer = FALSE
IF (sTruck_price_struct.iCabPrice >= 0)
data.m_vehicle = g_sTruckDataStruct.iCab
data.m_vehicle_amount = sTruck_price_struct.iCabPrice
ENDIF
// IF (sTruck_price_struct.iTrailerPrice >= 0)
// data.m_trailer = 0
// data.m_trailer_amount = 0
// ENDIF
IF (sTruck_price_struct.iSection1Price >= 0)
data.m_slot1 = ENUM_TO_INT(eSection1)
data.m_slot1_amount = sTruck_price_struct.iSection1Price
bUpgradeTrailer = TRUE
ENDIF
IF (sTruck_price_struct.iSection2Price >= 0)
data.m_slot2 = ENUM_TO_INT(eSection2)
data.m_slot2_amount = sTruck_price_struct.iSection2Price
bUpgradeTrailer = TRUE
ENDIF
IF (sTruck_price_struct.iSection3Price >= 0)
data.m_slot3 = ENUM_TO_INT(eSection3)
data.m_slot3_amount = sTruck_price_struct.iSection3Price
bUpgradeTrailer = TRUE
ENDIF
IF (sTruck_price_struct.iColourPrice >= 0)
data.m_colorscheme = ENUM_TO_INT(eTint)
data.m_colorscheme_amount = sTruck_price_struct.iColourPrice
bUpgradeTrailer = TRUE
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Bought truck for $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_vehicle:", data.m_vehicle, " m_vehicle_amount:$", data.m_vehicle_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_trailer:", data.m_trailer, " m_trailer_amount:$", data.m_trailer_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot1:", data.m_slot1, " m_slot1_amount:$", data.m_slot1_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot2:", data.m_slot2, " m_slot2_amount:$", data.m_slot2_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot3:", data.m_slot3, " m_slot3_amount:$", data.m_slot3_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_colorscheme:", data.m_colorscheme, " m_colorscheme_amount:$", data.m_colorscheme_amount)
NETWORK_SPENT_BUY_TRUCK(iPrice, FALSE, TRUE, data)
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_TRUCK)
IF bUpgradeTrailer
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_UPGRADETRAILER)
ENDIF
ELSE
// IF USE_SERVER_TRANSACTIONS()
// CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
// NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
// ENDIF
//
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Trading the business is earning the player: ", (iOwnedtruckValue * -1))
// NETWORK_EARN_FROM_PROPERTY(iOwnedtruckValue, GET_HASH_KEY(GET_truck_NAME_FROM_ID(eTradeIntruck)))
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL bUpgradeTrailer = FALSE
IF (sTruck_price_struct.iCabPrice >= 0)
data.m_vehicle = g_sTruckDataStruct.iCab
data.m_vehicle_amount = sTruck_price_struct.iCabPrice
bUpgradeTrailer = TRUE
ENDIF
IF (eSection1 != GET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_FIRST_SECTION))
data.m_slot1 = ENUM_TO_INT(eSection1)
data.m_slot1_amount = sTruck_price_struct.iSection1Price
bUpgradeTrailer = TRUE
ENDIF
IF (eSection2 != GET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_SECOND_SECTION))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSavedSection2 = GET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_SECOND_SECTION)
IF ((eSection2 = AT_ST_EMPTY_SINGLE) OR (eSection2 = AT_ST_EMPTY_DOUBLE) OR (eSection2 = AT_ST_EMPTY_SINGLE_DOOR))
AND ((eSavedSection2 = AT_ST_EMPTY_SINGLE) OR (eSavedSection2 = AT_ST_EMPTY_DOUBLE) OR (eSavedSection2 = AT_ST_EMPTY_SINGLE_DOOR))
//
ELSE
data.m_slot2 = ENUM_TO_INT(eSection2)
data.m_slot2_amount = sTruck_price_struct.iSection2Price
bUpgradeTrailer = TRUE
ENDIF
ENDIF
IF (eSection3 != GET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_THIRD_SECTION))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSavedSection3 = GET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_THIRD_SECTION)
IF ((eSection3 = AT_ST_EMPTY_SINGLE) OR (eSection3 = AT_ST_EMPTY_DOUBLE) OR (eSection3 = AT_ST_EMPTY_SINGLE_DOOR))
AND ((eSavedSection3 = AT_ST_EMPTY_SINGLE) OR (eSavedSection3 = AT_ST_EMPTY_DOUBLE) OR (eSavedSection3 = AT_ST_EMPTY_SINGLE_DOOR))
//
ELSE
data.m_slot3 = ENUM_TO_INT(eSection3)
data.m_slot3_amount = sTruck_price_struct.iSection3Price
bUpgradeTrailer = TRUE
ENDIF
ENDIF
IF (eTint != GET_ARMORY_TRUCK_SECTION_TINT_STAT(ATS_FIRST_SECTION))
data.m_colorscheme = ENUM_TO_INT(eTint)
data.m_colorscheme_amount = sTruck_price_struct.iColourPrice
bUpgradeTrailer = TRUE
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Renovating truck to $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_vehicle:", data.m_vehicle, " m_vehicle_amount:$", data.m_vehicle_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_trailer:", data.m_trailer, " m_trailer_amount:$", data.m_trailer_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot1:", data.m_slot1, " m_slot1_amount:$", data.m_slot1_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot2:", data.m_slot2, " m_slot2_amount:$", data.m_slot2_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_slot3:", data.m_slot3, " m_slot3_amount:$", data.m_slot3_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_colorscheme:", data.m_colorscheme, " m_colorscheme_amount:$", data.m_colorscheme_amount)
NETWORK_SPENT_UPGRADE_TRUCK(iPrice, FALSE, TRUE, data)
IF bUpgradeTrailer
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_UPGRADETRAILER)
ENDIF
ENDIF
ELIF thisModel = eDLC_BIG_PLANE_MODEL
SPENT_ON_TILTROTOR data
//Check if we're trading of just buying
IF NOT bPreviousBigassVehicle
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
TEXT_LABEL_23 str23 = ""
IF (sPlane_price_struct.iGunTurretPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_GUN_TURRET)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iGunTurret)
data.m_turret = GET_HASH_KEY(str23)
data.m_turret_amount = sPlane_price_struct.iGunTurretPrice
ENDIF
IF (sPlane_price_struct.iVehShopPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_VEHICLE_WORKSHOP)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iVehShop)
data.m_vehicleworkshop = GET_HASH_KEY(str23)
data.m_vehicleworkshop_amount = sPlane_price_struct.iVehShopPrice
ENDIF
IF (sPlane_price_struct.iWeaShopPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_WEAPON_WORKSHOP)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iWeaShop)
data.m_weaponworkshop = GET_HASH_KEY(str23)
data.m_weaponworkshop_amount = sPlane_price_struct.iWeaShopPrice
ENDIF
IF (sPlane_price_struct.iInteriorPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_INTERIOR)
str23 += "_"
str23 += ENUM_TO_INT(GET_PLANE_SECTION_TINT_FROM_SF(g_sPlaneDataStruct.iInterior))
data.m_interiortint = GET_HASH_KEY(str23)
data.m_interiortint_amount = sPlane_price_struct.iInteriorPrice
ENDIF
IF (sPlane_price_struct.iAvengerPrice >= 0)
data.m_aircraft = ENUM_TO_INT(INT_TO_ENUM(MODEL_NAMES, g_sPlaneDataStruct.iAvenger))
data.m_aircraft_amount = sPlane_price_struct.iAvengerPrice
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Bought plane for $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_aircraft:", data.m_aircraft, " m_aircraft_amount:$", data.m_aircraft_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_turret:", data.m_turret, " m_turret_amount:$", data.m_turret_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_vehicleworkshop:", data.m_vehicleworkshop, " m_vehicleworkshop_amount:$", data.m_vehicleworkshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_weaponworkshop:", data.m_weaponworkshop, " m_weaponworkshop_amount:$", data.m_weaponworkshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_interiortint:", data.m_interiortint, " m_interiortint_amount:$", data.m_interiortint_amount)
NETWORK_SPENT_BUY_TILTROTOR(iPrice, FALSE, TRUE, data)
ELSE
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
TEXT_LABEL_23 str23 = ""
IF (sPlane_price_struct.iGunTurretPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_GUN_TURRET)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iGunTurret)
data.m_turret = GET_HASH_KEY(str23)
data.m_turret_amount = sPlane_price_struct.iGunTurretPrice
ENDIF
IF (sPlane_price_struct.iVehShopPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_VEHICLE_WORKSHOP)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iVehShop)
data.m_vehicleworkshop = GET_HASH_KEY(str23)
data.m_vehicleworkshop_amount = sPlane_price_struct.iVehShopPrice
ENDIF
IF (sPlane_price_struct.iWeaShopPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_WEAPON_WORKSHOP)
str23 += "_"
str23 += ENUM_TO_INT(g_sPlaneDataStruct.iWeaShop)
data.m_weaponworkshop = GET_HASH_KEY(str23)
data.m_weaponworkshop_amount = sPlane_price_struct.iWeaShopPrice
ENDIF
IF (sPlane_price_struct.iInteriorPrice >= 0)
str23 = GET_ARMORY_AIRCRAFT_MOD_NAME(AAM_INTERIOR)
str23 += "_"
str23 += ENUM_TO_INT(GET_PLANE_SECTION_TINT_FROM_SF(g_sPlaneDataStruct.iInterior))
data.m_interiortint = GET_HASH_KEY(str23)
data.m_interiortint_amount = sPlane_price_struct.iInteriorPrice
ENDIF
IF (sPlane_price_struct.iAvengerPrice >= 0)
data.m_aircraft = ENUM_TO_INT(INT_TO_ENUM(MODEL_NAMES, g_sPlaneDataStruct.iAvenger))
data.m_aircraft_amount = sPlane_price_struct.iAvengerPrice
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Renovating plane to $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_aircraft:", data.m_aircraft, " m_aircraft_amount:$", data.m_aircraft_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_turret:", data.m_turret, " m_turret_amount:$", data.m_turret_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_vehicleworkshop:", data.m_vehicleworkshop, " m_vehicleworkshop_amount:$", data.m_vehicleworkshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_weaponworkshop:", data.m_weaponworkshop, " m_weaponworkshop_amount:$", data.m_weaponworkshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_interiortint:", data.m_interiortint, " m_interiortint_amount:$", data.m_interiortint_amount)
NETWORK_SPENT_UPGRADE_TILTROTOR(iPrice, FALSE, TRUE, data)
ENDIF
ELIF thisModel = eDLC_BALLISTIC_EQUIPMENT_MODEL
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iPrice)
INT colorHash = 0
NETWORK_BUY_ITEM(iPrice,ENUM_TO_INT(thisModel),PURCHASE_CLOTHES,1,fromBank,GET_LABEL_BUYABLE_VEHICLE(sbv),ENUM_TO_INT(basource),0,colorHash,fromBankAndWallet)//ENUM_TO_INT(sbv)
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_BALLISTIC)
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BAEQ2A)
ELIF thisModel = eDLC_HACKER_TRUCK_MODEL
INT iDecalSF = GET_HACKER_TRUCK_DECAL_FROM_SF(g_sHackerTruckDataStruct.iDecal)
INT iTintSF = GET_HACKER_TRUCK_TINT_FROM_SF(g_sHackerTruckDataStruct.iTint)
INT iMissileLauncher = g_sHackerTruckDataStruct.iMissileLauncher
INT iDroneStation = g_sHackerTruckDataStruct.iDroneStation
INT iWeaShop = g_sHackerTruckDataStruct.iWeaShop
INT iVehShop = g_sHackerTruckDataStruct.iVehShop
STRUCT_SPENT_ON_HACKER_TRUCK data
//Check if we're trading of just buying
IF NOT bPreviousBigassVehicle
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
IF (sHacker_truck_price_struct.iCabPrice >= 0)
data.m_truck = ENUM_TO_INT(INT_TO_ENUM(MODEL_NAMES, g_sHackerTruckDataStruct.iCab))
data.m_truck_amount = sHacker_truck_price_struct.iCabPrice
ENDIF
IF (sHacker_truck_price_struct.iDecalPrice >= 0)
data.m_pattern = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, iDecalSF))
data.m_pattern_amount = sHacker_truck_price_struct.iDecalPrice
ENDIF
IF (sHacker_truck_price_struct.iTintPrice >= 0)
data.m_tint = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_TINT, iTintSF))
data.m_tint_amount = sHacker_truck_price_struct.iTintPrice
ENDIF
IF (sHacker_truck_price_struct.iMissileLauncherPrice >= 0)
data.m_missileLauncher = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MISSILE_LAUNCHER, iMissileLauncher))
data.m_missileLauncher_amount = sHacker_truck_price_struct.iMissileLauncherPrice
ENDIF
IF (sHacker_truck_price_struct.iDroneStationPrice >= 0)
data.m_droneStation = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DRONE_STATION, iDroneStation))
data.m_droneStation_amount = sHacker_truck_price_struct.iDroneStationPrice
ENDIF
IF (sHacker_truck_price_struct.iWeaShopPrice >= 0)
data.m_weaponWorkshop = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_WEAPON_STATION, iWeaShop))
data.m_weaponWorkshop_amount = sHacker_truck_price_struct.iWeaShopPrice
ENDIF
IF (sHacker_truck_price_struct.iVehShopPrice >= 0)
data.m_bikeWorkshop = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MOTORCYCLE_WORKSHOP, iVehShop))
data.m_bikeWorkshop_amount = sHacker_truck_price_struct.iVehShopPrice
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Bought hacker truck for $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_truck:", data.m_truck, " m_truck_amount:$", data.m_truck_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_tint:", data.m_tint, " m_tint_amount:$", data.m_tint_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_TINT, iTintSF))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_pattern:", data.m_pattern, " m_pattern_amount:$", data.m_pattern_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, iDecalSF))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_missileLauncher:", data.m_missileLauncher, " m_missileLauncher_amount:$", data.m_missileLauncher_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MISSILE_LAUNCHER, iMissileLauncher))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_droneStation:", data.m_droneStation, " m_droneStation_amount:$", data.m_droneStation_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DRONE_STATION, iDroneStation))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_weaponWorkshop:", data.m_weaponWorkshop, " m_weaponWorkshop_amount:$", data.m_weaponWorkshop_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_WEAPON_STATION, iWeaShop))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_bikeWorkshop:", data.m_bikeWorkshop, " m_bikeWorkshop_amount:$", data.m_bikeWorkshop_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MOTORCYCLE_WORKSHOP, iVehShop))
NETWORK_SPENT_PURCHASE_HACKER_TRUCK(iPrice, data, FALSE, TRUE)
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_HACKT2)
ELSE
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
IF (sHacker_truck_price_struct.iCabPrice >= 0)
data.m_truck = ENUM_TO_INT(INT_TO_ENUM(MODEL_NAMES, g_sHackerTruckDataStruct.iCab))
data.m_truck_amount = sHacker_truck_price_struct.iCabPrice
ENDIF
IF (sHacker_truck_price_struct.iDecalPrice >= 0)
data.m_pattern = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, iDecalSF))
data.m_pattern_amount = sHacker_truck_price_struct.iDecalPrice
ENDIF
IF (sHacker_truck_price_struct.iTintPrice >= 0)
data.m_tint = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_TINT, iTintSF))
data.m_tint_amount = sHacker_truck_price_struct.iTintPrice
ENDIF
IF (sHacker_truck_price_struct.iMissileLauncherPrice >= 0)
data.m_missileLauncher = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MISSILE_LAUNCHER, iMissileLauncher))
data.m_missileLauncher_amount = sHacker_truck_price_struct.iMissileLauncherPrice
ENDIF
IF (sHacker_truck_price_struct.iDroneStationPrice >= 0)
data.m_droneStation = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DRONE_STATION, iDroneStation))
data.m_droneStation_amount = sHacker_truck_price_struct.iDroneStationPrice
ENDIF
IF (sHacker_truck_price_struct.iWeaShopPrice >= 0)
data.m_weaponWorkshop = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_WEAPON_STATION, iWeaShop))
data.m_weaponWorkshop_amount = sHacker_truck_price_struct.iWeaShopPrice
ENDIF
IF (sHacker_truck_price_struct.iVehShopPrice >= 0)
data.m_bikeWorkshop = GET_HASH_KEY(GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MOTORCYCLE_WORKSHOP, iVehShop))
data.m_bikeWorkshop_amount = sHacker_truck_price_struct.iVehShopPrice
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Renovating hacker truck to $", iPrice)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_truck:", data.m_truck, " m_truck_amount:$", data.m_truck_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_tint:", data.m_tint, " m_tint_amount:$", data.m_tint_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_TINT, iTintSF))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_pattern:", data.m_pattern, " m_pattern_amount:$", data.m_pattern_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DECAL, iDecalSF))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_missileLauncher:", data.m_missileLauncher, " m_missileLauncher_amount:$", data.m_missileLauncher_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MISSILE_LAUNCHER, iMissileLauncher))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_droneStation:", data.m_droneStation, " m_droneStation_amount:$", data.m_droneStation_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_DRONE_STATION, iDroneStation))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_weaponWorkshop:", data.m_weaponWorkshop, " m_weaponWorkshop_amount:$", data.m_weaponWorkshop_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_WEAPON_STATION, iWeaShop))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: m_bikeWorkshop:", data.m_bikeWorkshop, " m_bikeWorkshop_amount:$", data.m_bikeWorkshop_amount, " ", GET_HACKER_TRUCK_MOD_NAME_FROM_ID(eHACKER_TRUCK_MOD_MOTORCYCLE_WORKSHOP, iVehShop))
NETWORK_SPENT_UPGRADE_HACKER_TRUCK(iPrice, data, FALSE, TRUE)
ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF thisModel = GET_SUBMARINE_MODEL()
// ----- TELEMETRY SPEND -----
STRUCT_BUY_SUB sSubData
// Default values are -1, when they should be 0. Easier to change them via script at this stage.
sSubData.submarine_amount = 0
sSubData.color = 0
sSubData.color_amount = 0
sSubData.flag = 0
sSubData.flag_amount = 0
sSubData.anti_aircraft_amount = 0
sSubData.missile_station = 0
sSubData.missile_station_amount = 0
sSubData.sonar = 0
sSubData.sonar_amount = 0
sSubData.weapon_workshop = 0
sSubData.weapon_workshop_amount = 0
sSubData.iavisa = 0
sSubData.avisa_pool_amount = 0
sSubData.iseasparrow = 0
sSubData.seasparrow_pool_amount = 0
INT iKosatkaColourSF = GET_KOSATKA_COLOUR_FROM_SF(g_sKosatkaDataStruct.iColour) // 0 - 15
INT iKosatkaFlagSF = GET_KOSATKA_FLAG_FROM_SF(g_sKosatkaDataStruct.iFlag) // 0 - 49
INT iKosatkaMissilesSF = g_sKosatkaDataStruct.iMissiles // 0 - 1
INT iKosatkaSonarSF = g_sKosatkaDataStruct.iSonar // 0 - 1
INT iKosatkaWeaShopSF = g_sKosatkaDataStruct.iWeaShop // 0 - 1
INT iKosatkaSeaSparrow2SF = g_sKosatkaDataStruct.iSeaSparrow2 // 0 - 1
INT iKosatkaAvisaSF = g_sKosatkaDataStruct.iAvisa // 0 - 1
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
// If buying for the first time, pass in data for everything (purchased or not purchased).
IF NOT bPreviousBigassVehicle
// ----- Kosatka -----
IF (sKosatka_price_struct.iOwnedPrice >= 0)
sSubData.submarine_amount = sKosatka_price_struct.iOwnedPrice
ENDIF
// ----- Colour -----
IF (sKosatka_price_struct.iColourPrice >= 0)
sSubData.color = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_COLOUR, iKosatkaColourSF))
sSubData.color_amount = sKosatka_price_struct.iColourPrice
ENDIF
// ----- Flag -----
IF (sKosatka_price_struct.iFlagPrice >= 0)
sSubData.flag = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_FLAG, iKosatkaFlagSF))
sSubData.flag_amount = sKosatka_price_struct.iFlagPrice
ENDIF
// ----- Sonar -----
IF (sKosatka_price_struct.iSonarPrice >= 0)
sSubData.sonar = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_SONAR, iKosatkaSonarSF))
sSubData.sonar_amount = sKosatka_price_struct.iSonarPrice
ENDIF
// ----- Missiles -----
IF (sKosatka_price_struct.iMissilesPrice >= 0)
sSubData.missile_station = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_MISSILES, iKosatkaMissilesSF))
sSubData.missile_station_amount = sKosatka_price_struct.iMissilesPrice
ENDIF
// ----- Weapon Workshop -----
IF (sKosatka_price_struct.iWeaShopPrice >= 0)
sSubData.weapon_workshop = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_WEAPON_STATION, iKosatkaWeaShopSF))
sSubData.weapon_workshop_amount = sKosatka_price_struct.iWeaShopPrice
ENDIF
// ----- Avisa -----
IF (sKosatka_price_struct.iAvisaPrice >= 0)
sSubData.iavisa = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_AVISA, iKosatkaAvisaSF))
sSubData.avisa_pool_amount = sKosatka_price_struct.iAvisaPrice
ENDIF
// ----- Sparrow -----
IF (sKosatka_price_struct.iSeaSparrow2Price >= 0)
sSubData.iseasparrow = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_SEASPARROW2, iKosatkaSeaSparrow2SF))
sSubData.seasparrow_pool_amount = sKosatka_price_struct.iSeaSparrow2Price
ENDIF
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "***** DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - SPEND - BUY *****")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.submarine_amount: ", sSubData.submarine_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.color: ", sSubData.color)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.color_amount: ", sSubData.color_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.flag: ", sSubData.flag)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.flag_amount: ", sSubData.flag_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.sonar: ", sSubData.sonar)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.sonar_amount: ", sSubData.sonar_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.missile_station: ", sSubData.missile_station)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.missile_station_amount: ", sSubData.missile_station_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.weapon_workshop: ", sSubData.weapon_workshop)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.weapon_workshop_amount: ", sSubData.weapon_workshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.iavisa: ", sSubData.iavisa)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.avisa_pool_amount: ", sSubData.avisa_pool_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.iseasparrow: ", sSubData.iseasparrow)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.seasparrow_pool_amount: ", sSubData.seasparrow_pool_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - iPrice: ", iPrice)
CPRINTLN(DEBUG_INTERNET, "")
#ENDIF
NETWORK_SPEND_BUY_SUB(iPrice, FALSE, TRUE, sSubData)
ELSE
// If renovating, only pass in data for the add-ons that are being purchased, but still pass in the amount (purchased or not).
// ----- Kosatka -----
IF (sKosatka_price_struct.iOwnedPrice >= 0)
sSubData.submarine_amount = sKosatka_price_struct.iOwnedPrice
ENDIF
// ----- Colour -----
INT iKosatkaStoredColour = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_COLOUR)
IF (iKosatkaColourSF != iKosatkaStoredColour)
OR (sKosatka_price_struct.iColourPrice > 0)
sSubData.color = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_COLOUR, iKosatkaColourSF))
ENDIF
IF (sKosatka_price_struct.iColourPrice >= 0)
sSubData.color_amount = sKosatka_price_struct.iColourPrice
ENDIF
// ----- Flag -----
INT iKosatkaStoredFlag = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_FLAG)
IF (iKosatkaFlagSF != iKosatkaStoredFlag)
OR (sKosatka_price_struct.iFlagPrice > 0)
sSubData.flag = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_FLAG, iKosatkaFlagSF))
ENDIF
IF (sKosatka_price_struct.iFlagPrice >= 0)
sSubData.flag_amount = sKosatka_price_struct.iFlagPrice
ENDIF
// ----- Sonar -----
INT iKosatkaStoredSonar = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_SONAR)
IF (iKosatkaSonarSF != iKosatkaStoredSonar)
OR (sKosatka_price_struct.iSonarPrice > 0)
sSubData.sonar = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_SONAR, iKosatkaSonarSF))
ENDIF
IF (sKosatka_price_struct.iSonarPrice >= 0)
sSubData.sonar_amount = sKosatka_price_struct.iSonarPrice
ENDIF
// ----- Missiles -----
INT iKosatkaStoredMissiles = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_GUIDED_MISSILES)
IF (iKosatkaMissilesSF != iKosatkaStoredMissiles)
OR (sKosatka_price_struct.iMissilesPrice > 0)
sSubData.missile_station = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_MISSILES, iKosatkaMissilesSF))
ENDIF
IF (sKosatka_price_struct.iMissilesPrice >= 0)
sSubData.missile_station_amount = sKosatka_price_struct.iMissilesPrice
ENDIF
// ----- Weapon Workshop -----
INT iKosatkaStoredWeaShop = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_WEAPON_WORKSHOP)
IF (iKosatkaWeaShopSF != iKosatkaStoredWeaShop)
OR (sKosatka_price_struct.iWeaShopPrice > 0)
sSubData.weapon_workshop = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_WEAPON_STATION, iKosatkaWeaShopSF))
ENDIF
IF (sKosatka_price_struct.iWeaShopPrice >= 0)
sSubData.weapon_workshop_amount = sKosatka_price_struct.iWeaShopPrice
ENDIF
// ----- Avisa -----
INT iKosatkaStoredAvisa = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_AVISA)
IF (iKosatkaAvisaSF != iKosatkaStoredAvisa)
OR (sKosatka_price_struct.iAvisaPrice > 0)
sSubData.iavisa = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_AVISA, iKosatkaAvisaSF))
ENDIF
IF (sKosatka_price_struct.iAvisaPrice >= 0)
sSubData.avisa_pool_amount = sKosatka_price_struct.iAvisaPrice
ENDIF
// ----- Sparrow -----
INT iKosatkaStoredSparrow = GET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_SEASPARROW2)
IF (iKosatkaSeaSparrow2SF != iKosatkaStoredSparrow)
OR (sKosatka_price_struct.iSeaSparrow2Price > 0)
sSubData.iseasparrow = GET_HASH_KEY(GET_KOSATKA_MOD_NAME_FROM_ID(eKOSATKA_MOD_SEASPARROW2, iKosatkaSeaSparrow2SF))
ENDIF
IF (sKosatka_price_struct.iSeaSparrow2Price >= 0)
sSubData.seasparrow_pool_amount = sKosatka_price_struct.iSeaSparrow2Price
ENDIF
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "***** DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - SPEND - RENOVATE *****")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.submarine_amount: ", sSubData.submarine_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.color: ", sSubData.color)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.color_amount: ", sSubData.color_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.flag: ", sSubData.flag)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.flag_amount: ", sSubData.flag_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.sonar: ", sSubData.sonar)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.sonar_amount: ", sSubData.sonar_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.missile_station: ", sSubData.missile_station)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.missile_station_amount: ", sSubData.missile_station_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.weapon_workshop: ", sSubData.weapon_workshop)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.weapon_workshop_amount: ", sSubData.weapon_workshop_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.iavisa: ", sSubData.iavisa)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.avisa_pool_amount: ", sSubData.avisa_pool_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.iseasparrow: ", sSubData.iseasparrow)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - sSubData.seasparrow_pool_amount: ", sSubData.seasparrow_pool_amount)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: Kosatka - TELEMETRY - iPrice: ", iPrice)
CPRINTLN(DEBUG_INTERNET, "")
#ENDIF
NETWORK_SPEND_UPGRADE_SUB(iPrice, FALSE, TRUE, sSubData)
ENDIF
#ENDIF
ELSE
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() > 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iPrice)
INT colorHash = 0
INT iSVMIndex = GET_SVM_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iWVMIndex = GET_WVM_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iWAMIndex = WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
INT iFDSSlot = GET_FDS_VEHICLE_SLOT(g_sConfVssMP.vehicleSetup.eModel)
INT iBBSIndex = GET_BBS_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iAWSIndex = GET_AWS_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#IF FEATURE_CASINO_HEIST
INT iCHIndex = GET_CH_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
#IF FEATURE_COPS_N_CROOKS
INT iCNCIndex = GET_CNC_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
// #IF FEATURE_SUMMER_2020
// INT iSUMIndex = GET_SUMMER20_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
// #ENDIF
INT iIHIndex = GET_ISLAND_HEIST_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iTunerIndex = GET_TUNER_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iFixerIndex = GET_FIXER_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#IF FEATURE_DLC_1_2022
INT iSum2Index = GET_SUMMER_2022_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
IF iSVMIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
INT iMission = SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
IF NOT SVM_HAS_PLAYER_UNLOCKED_MISSION(iMission)
colorHash = 1
ELIF NOT SVM_HAS_THIS_MISSION_BEEN_PASSED(iMission, ciFLOW_MISSION_TYPE_SVM) //SVM_IS_SPECIAL_VEHICLE_UNLOCKED
colorHash = 2
ELSE
colorHash = 3
ENDIF
SMV_RESET_VEHICLE_UNLOCK_INT(iMission)
SET_BIT(iSVM_Unlock_Feed_Message, iMission)
ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_HEIST_LOCKED(sbv)
//1 = for not unlocked through heist
//2 = for unlocked through heist
IF NOT IS_BUYABLE_VEHICLE_UNLOCKED(sbv)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iWVMIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
INT iMission = WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
// IF NOT TRUE //WVM_HAS_PLAYER_UNLOCKED_MISSION(iMission)
// colorHash = 1
// EL
IF NOT SVM_HAS_THIS_MISSION_BEEN_PASSED(iMission, ciFLOW_MISSION_TYPE_WVM) //WVM_IS_SPECIAL_VEHICLE_UNLOCKED
colorHash = 2
ELSE
colorHash = 3
ENDIF
SMV_RESET_VEHICLE_UNLOCK_INT(iMission)
SET_BIT(iWVM_Unlock_Feed_Message, iMission)
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_SINGLEWEAPONIZEDVEHICLE)
BOOL bClothingAwardPurchAllWeaponizedVehicle = FALSE
INT i, iSavedWVMBitset = 0
SET_BIT(iSavedWVMBitset, iWVMIndex)
REPEAT MAX_MP_SAVED_VEHICLES i
INT iSavedWVMIndex = GET_WVM_VEHICLE_INDEX(g_MpSavedVehicles[i].vehicleSetupMP.VehicleSetup.eModel)
IF iSavedWVMIndex != -1
AND NOT IS_BIT_SET(iSavedWVMBitset, iSavedWVMIndex)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchase weaponized veh ", iWVMIndex, ", already own ", iSavedWVMIndex, ", in slot ", i, ".")
SET_BIT(iSavedWVMBitset, iSavedWVMIndex)
ENDIF
IF (IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(DUNE3))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(HALFTRACK))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TRAILERSMALL2))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(APC))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TAMPA3))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(OPPRESSOR)))
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_ALLWEAPONIZEDVEHICLE)
bClothingAwardPurchAllWeaponizedVehicle = TRUE
i = MAX_MP_SAVED_VEHICLES
ENDIF
ENDREPEAT
IF NOT bClothingAwardPurchAllWeaponizedVehicle
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchase weaponized veh ", iWVMIndex,
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(DUNE3)), ", own DUNE3", ", dont own DUNE3"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(HALFTRACK)), ", own HALFTRACK", ", dont own HALFTRACK"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TRAILERSMALL2)), ", own TRAILERSMALL2", ", dont own TRAILERSMALL2"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(APC)), ", own APC", ", dont own APC"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TAMPA3)), ", own TAMPA3", ", dont own TAMPA3"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(OPPRESSOR)), ", own OPPRESSOR", ", dont own OPPRESSOR"))
ENDIF
ELIF iWAMIndex > 0
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT WAM_IS_SPECIAL_VEHICLE_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iFDSSlot != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT HAS_PLAYER_UNLOCKED_GANG_OPS_VEHICLE_TRADE_PRICE(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
SET_BIT(iFDS_Unlock_Feed_Message, iFDSSlot)
ELIF iBBSIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_BUSINESS_BATTLES_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
SET_BIT(iBBS_Unlock_Feed_Message, iBBSIndex)
ELIF iAWSIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_ARENA_WARS_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
// SET_BIT(iBBS_Unlock_Feed_Message, iAWSIndex)
IF IS_VEHICLE_AN_ARENA_CONTENDER_VEHICLE(g_sConfVssMP.vehicleSetup.eModel)
// Player purchases an Arena vehicle (already supermodded):
GB_SETUP_ARENA_WARS_FIRST_ARENA_VEHICLE_PURCHASED_CALL()
SET_OWNED_ARENA_READY_VEHICLE_STAT(g_sConfVssMP.vehicleSetup.eModel)
ELSE
// Player purchases a base vehicle (can be supermodded to become Arena vehicle):
GB_SETUP_ARENA_WARS_FIRST_BASE_VEHICLE_PURCHASED_CALL()
ENDIF
#IF FEATURE_CASINO_HEIST
ELIF iCHIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_CASINO_HEIST_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF iCNCIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_CNC_VEHICLE_REWARD_UNLOCKED()
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
// #IF FEATURE_SUMMER_2020
// ELIF iSUMIndex != -1
// //1 = used 'Buy it Now' option and had NOT completed the requisite number
// // of Export missions to unlock the related Special Vehicle Mission
// //2 = used 'Buy it Now' option and HAD completed the requisite number
// // of Export missions to unlock the related Special Vehicle Mission
// //3 = Purchased at the Securo Serve Discount value
//
// // if not unlocked
// IF NOT IS_SUMMER20_VEHICLE_REWARD_UNLOCKED()
// colorHash = 1
// ELSE
// colorHash = 2
// ENDIF
// #ENDIF
ELIF iIHIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_ISLAND_HEIST_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iTunerIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_TUNER_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iFixerIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_FIXER_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#IF FEATURE_DLC_1_2022
ELIF iSum2Index != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_SUMMER_2022_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
ELIF thisModel = RCBANDITO
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_RCBANDITO_OWNED, ENUM_TO_INT(thisModel) != 0)
BROADCAST_PLAYER_RC_BANDITO_PURCHASED(TRUE)
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the RC Bandito!")
#IF FEATURE_CASINO_HEIST
ELIF thisModel = MINITANK
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_RC_TANK_OWNED, ENUM_TO_INT(thisModel) != 0)
SET_PLAYER_PURCHASED_RC_TANK(TRUE)
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the RC Tank!")
#ENDIF
ENDIF
IF IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(sbv)
IF HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
SWITCH sbv
CASE BV_GR_DUNE3 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_BF_DUNE_FAV) BREAK
CASE BV_BI_VORTEX SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_PEGASSI_VORTEX) BREAK
CASE BV_ST_OMNIS SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_OBEY_OMNIS) BREAK
CASE BV_P_FROGGER SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_MAIBATSU_FROGGER) BREAK
CASE BV_BI_ZOMBIEB SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_WESTERN_ZOMBIE_CHOPPER) BREAK
CASE BV_DLC_TURISMO SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_GROTTI_TURISMO_R) BREAK
CASE BV_LX_WINDSOR SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_ENUS_WINDSOR) BREAK
CASE BV_C_BANSHEE SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_BRAVADO_BANSHEE) BREAK
CASE BV_MP_COQUETTE2 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_INVETERO_COQUETTE_CLASSIC) BREAK
CASE BV_DLC_HUNTLEY SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_ENUS_HUNTLEY_S) BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: unknown free Criminal Enterprise Starter Pack vehicle ", sbv)
BREAK
ENDSWITCH
ENDIF
ENDIF
NETWORK_BUY_ITEM(iPrice,ENUM_TO_INT(thisModel),PURCHASE_VEHICLES,1,fromBank,GET_LABEL_BUYABLE_VEHICLE(sbv),ENUM_TO_INT(basource),0,colorHash,fromBankAndWallet)//ENUM_TO_INT(sbv)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY, price = ", iPrice, ", bypass natives")
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
IF NETWORK_IS_GAME_IN_PROGRESS()
IF (thisModel != eDLC_BIG_TRUCK_MODEL)
AND (thisModel != eDLC_BALLISTIC_EQUIPMENT_MODEL)
AND (thisModel != eDLC_BIG_PLANE_MODEL)
AND (thisModel != eDLC_HACKER_TRUCK_MODEL)
AND (thisModel != GET_SUBMARINE_MODEL())
CHECK_LIVE_A_LITTLE_ACHIEVEMENT(thisModel, iPrice)
ENDIF
SET_CLOTHING_FOR_VEHICLE_PURCHASE(siteID, sbv)
WHILE NOT SET_CHIPS_FOR_VEHICLE_PURCHASE(sbv, eChipsTransactionState)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
RENDER_BROWSER()
WAIT(0)
ENDWHILE
eChipsTransactionState = TRANSACTION_STATE_DEFAULT
IF (GET_WVM_VEHICLE_INDEX(thisModel) != -1)
AND thisModel != TRAILERSMALL2
IF g_bPurchasedWeaponisedVehicle = FALSE
PRINTLN("[GUNRUN_CALL] - DO_BIGASS_VEHICLE_BUY - g_bPurchasedWeaponisedVehicle = TRUE, player has purchased a weaponised vehicle")
g_bPurchasedWeaponisedVehicle = TRUE
ENDIF
ENDIF
SET_MP_VEHICLE_PURCHASED_PACKED_STAT_BOOL(thisModel)
IF thisModel = eDLC_BIG_YACHT_MODEL
IF NOT IS_STRING_NULL_OR_EMPTY(g_sYachtDataStruct.tl63NewName)
g_sYachtDataStruct.tl63Name = g_sYachtDataStruct.tl63NewName
ENDIF
g_sYachtDataStruct.tl63NewName = ""
SET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_MOD, g_sYachtDataStruct.iMod)
SET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FIXTURE, g_sYachtDataStruct.iFixture)
SET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_LIGHTING, g_sYachtDataStruct.iLighting)
SET_LOCAL_PLAYER_OWNS_PRIVATE_YACHT(TRUE, g_sYachtDataStruct.iMod, g_sYachtDataStruct.iColour, g_sYachtDataStruct.iLighting, g_sYachtDataStruct.iFixture, g_sYachtDataStruct.iFlag)
SET_LOCAL_PLAYER_BD_DESIRED_YACHT_LOCATION(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE))
SET_LOCAL_PLAYER_BD_YACHT_NAME(g_sYachtDataStruct.tl63Name)
SET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FLAG, g_sYachtDataStruct.iFlag)
SET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_YACHT_NAME, MP_STAT_YACHT_NAME2, g_sYachtDataStruct.tl63Name)
SET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID, g_sYachtDataStruct.iYachtNameID)
SET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_COLOR, g_sYachtDataStruct.iColour)
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_YACHT))
SET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_MODEL_0, HASH("BIG_YACHT"))
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the yacht!")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: g_sYachtDataStruct.iMod:", g_sYachtDataStruct.iMod, " iFixture:", g_sYachtDataStruct.iFixture, " iLighting:", g_sYachtDataStruct.iLighting, " iColour:", g_sYachtDataStruct.iColour, " iFlag:", g_sYachtDataStruct.iFlag, " tl63Name:\"", g_sYachtDataStruct.tl63Name, "\"")
ENDIF
IF thisModel = eDLC_BIG_TRUCK_MODEL
bPreviousPegasus = bPreviousBigassVehicle
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection1 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection1))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection2 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection2))
ARMORY_TRUCK_SECTION_TYPE_ENUM eSection3 = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TYPE_ENUM, GET_TRUCK_SECTION_TYPE_FROM_SF(g_sTruckDataStruct.iSection3))
PRINTLN("[AT-INTERIOR][AT-STAT]INTERNET SF - before validation(", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection1), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection2), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection3), ")")
VALIDATE_TRUCK_EMPTY_SECTIONS(eSection1, eSection2, eSection3)
IF NOT bPreviousBigassVehicle
IF DOES_ENTITY_EXIST(vi)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi exists")
MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi doesnt exist...")
ENDIF
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_1, 0)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_2, 0)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_EXTRA_1, 0)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_EXTRA_2, 0)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_GROUP_1, 255)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_GROUP_2, 255)
IF eSection1 = AT_ST_COMMAND_CENTER
OR eSection2 = AT_ST_COMMAND_CENTER
OR eSection3 = AT_ST_COMMAND_CENTER
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_MOD_ROOF, 1) // front turrets
ELSE
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_MOD_ROOF, 0) // no turrets
ENDIF
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_MOD_LIVERY, -1)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_PLATE_INDEX, 0)
SET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_COL_CREW_1, 0)
SET_ARMORY_TRUCK_IS_IN_BUNKER(TRUE)
ELSE
IF INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eTruckModel
IF DOES_ENTITY_EXIST(vi)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi exists")
MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi doesnt exist...")
ENDIF
SET_OWNER_RENOVATED_TRUCK_CAB(TRUE)
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...g_sTruckDataStruct.iCab = ", g_sTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab))))
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...eTruckModel = ", GET_MODEL_NAME_FOR_DEBUG(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eTruckModel))
ENDIF
IF eSection1 = AT_ST_COMMAND_CENTER
OR eSection2 = AT_ST_COMMAND_CENTER
OR eSection3 = AT_ST_COMMAND_CENTER
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - player has command centre, roof stat:", GET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_MOD_ROOF))
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - player doesn't have command centre, roof stat:", GET_MP_TRUCK_MOD_STAT(TRUCK_MOD_TRAILER_MOD_ROOF))
ENDIF
SET_OWNER_RENOVATED_TRUCK_TRAILER(TRUE)
ENDIF
MODEL_NAMES eCabModel = INT_TO_ENUM(MODEL_NAMES, GET_TRUCK_CAB_FROM_SF(g_sTruckDataStruct.iCab))
SET_MP_INT_CHARACTER_STAT(MP_STAT_INV_TRUCK_MODEL_0, ENUM_TO_INT(eCabModel))
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_TRUCK))
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eTruckModel = eCabModel
BROADCAST_PLAYER_PURCHASED_ARMORY_TRUCK(TRUE)
IF NOT bPreviousBigassVehicle
SET_REQUEST_TO_CREATE_ARMORY_TRUCK_IN_BUNKER(TRUE)
ENDIF
PRINTLN("[AT-INTERIOR][AT-STAT]INTERNET SF - after validation (", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection1), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection2), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection3), ")")
ARMORY_TRUCK_SECTION_TINT_ENUM eTint = INT_TO_ENUM(ARMORY_TRUCK_SECTION_TINT_ENUM, GET_TRUCK_SECTION_TINT_FROM_SF(g_sTruckDataStruct.iColour))
SET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_FIRST_SECTION, eSection1)
SET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_SECOND_SECTION, eSection2)
SET_ARMORY_TRUCK_SECTION_TYPE_STAT(ATS_THIRD_SECTION, eSection3)
PRINTLN("[AT-INTERIOR][AT-STAT]INTERNET SF - stats set (", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection1), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection2), ", ", GET_ARMORY_TRUCK_SECTION_TYPE_NAME(eSection3), ")")
SET_ARMORY_TRUCK_TINT_STAT(eTint)
//ARMORY_TRUCK_REQUEST_INTERIOR_UPDATE()
IF NOT IS_PLAYER_PURCHASED_GUN_LOCKER_FOR_TRUCK(PLAYER_ID())
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
// Phonecall if the player has purchased the truck property and has already done enough resupplies to unlock some WVMs (see the call above for details)
// -
// [Trigger after you buy the truck but have already unlocked some missions] - GNRC_TRUCK
// -
INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL)
IF NOT IS_BIT_SET(iStatInt, biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE)
IF IS_BIT_SET(iStatInt, biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_BOUGHT_WVM_AVAILABLE - Player has bought the truck, requesting call")
GB_SET_LOCAL_GUNRUN_CALL_BIT(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_BOUGHT_WVM_AVAILABLE)
SET_BIT(iStatInt, biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE)
SET_BIT(iStatInt, biGR_Help_FIRST_WVM_UNLOCKED) // Set this so we know its safe to let players know when they unlock subsequent WVMs
SET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL, iStatInt)
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL not set")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE already set")
ENDIF
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the truck!")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: g_sTruckDataStruct.iCab:", g_sTruckDataStruct.iCab, " iFixture:", g_sTruckDataStruct.iSection1, " iLighting:", g_sTruckDataStruct.iSection2, " iColour:", g_sTruckDataStruct.iColour, " iFlag:", g_sTruckDataStruct.iSection3)
ENDIF
IF thisModel = eDLC_BALLISTIC_EQUIPMENT_MODEL
IF NOT USE_SERVER_TRANSACTIONS()
bPreviousPegasus = IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BALLISTIC_EQUIPMENT))
ELSE
bPreviousPegasus = !(GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BALLASTIC_OWNED))
ENDIF
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BALLISTIC_EQUIPMENT))
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BALLASTIC_OWNED, ENUM_TO_INT(thisModel) != 0)
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the BallisticEquipment!")
ENDIF
IF thisModel = eDLC_BIG_PLANE_MODEL
bPreviousPegasus = bPreviousBigassVehicle
IF NOT bPreviousBigassVehicle
IF DOES_ENTITY_EXIST(vi)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi exists")
MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi doesnt exist...")
ENDIF
SET_ARMORY_AIRCRAFT_IS_IN_DEFUNCT_BASE(TRUE)
ELSE
// IF INT_TO_ENUM(MODEL_NAMES, GET_PLANE_CAB_FROM_SF(g_sPlaneDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.ePlaneModel
// IF DOES_ENTITY_EXIST(vi)
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi exists")
//
// MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
// MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
// ELSE
// CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi doesnt exist...")
// ENDIF
//
// SET_OWNER_RENOVATED_TRUCK_CAB(TRUE)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...g_sPlaneDataStruct.iCab = ", g_sPlaneDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, GET_PLANE_CAB_FROM_SF(g_sPlaneDataStruct.iCab))))
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...eTruckModel = ", GET_MODEL_NAME_FOR_DEBUG(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.ePlaneModel))
// ENDIF
//
// SET_OWNER_RENOVATED_TRUCK_TRAILER(TRUE)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_INV_PLANE_MODEL_0, ENUM_TO_INT(GET_ARMORY_AIRCRAFT_MODEL()))
SET_ARMORY_AIRCRAFT_AS_OWNED()
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_PLANE))
IF NOT bPreviousBigassVehicle
SET_REQUEST_TO_CREATE_ARMORY_AIRCRAFT_IN_DEFUNCT_BASE(TRUE)
ELSE
SET_OWNER_RENOVATED_AVENGER(TRUE)
ENDIF
SET_PACKED_STAT_INT(PACKED_MP_INT_ARMORY_AIRCRAFT_GUN_TURRET, g_sPlaneDataStruct.iGunTurret)
SET_PACKED_STAT_INT(PACKED_MP_INT_ARMORY_AIRCRAFT_VEH_SHOP, g_sPlaneDataStruct.iVehShop)
SET_PACKED_STAT_INT(PACKED_MP_INT_ARMORY_AIRCRAFT_WEA_SHOP, g_sPlaneDataStruct.iWeaShop)
SET_PACKED_STAT_INT(PACKED_MP_INT_ARMORY_AIRCRAFT_INTERIOR, GET_PLANE_SECTION_TINT_FROM_SF(g_sPlaneDataStruct.iInterior))
BROADCAST_PLAYER_PURCHASED_ARMORY_AIRCRAFT(TRUE)
BROADCAST_PLAYER_ARMORY_AIRCRAFT_PURCHASED_MODS()
IF iSlotToUse = -1
MPSV_GET_SAVE_SLOT_FROM_DISPLAY_SLOT(DISPLAY_SLOT_AVENGER_HELI, iSlotToUse)
ENDIF
IF (g_sPlaneDataStruct.iGunTurret = 0)
g_MpSavedVehicles[iSlotToUse].vehicleSetupMP.VehicleSetup.iModIndex[MOD_ROOF] = 0
MP_SAVE_VEHICLE_SLOT_STATS_FROM_SAVEGAME(iSlotToUse,g_MpSavedVehicles[iSlotToUse] ,TRUE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchased, no turret")
ELSE
IF g_MpSavedVehicles[iSlotToUse].vehicleSetupMP.VehicleSetup.iModIndex[MOD_ROOF] != 1
AND g_MpSavedVehicles[iSlotToUse].vehicleSetupMP.VehicleSetup.iModIndex[MOD_ROOF] != 2
g_MpSavedVehicles[iSlotToUse].vehicleSetupMP.VehicleSetup.iModIndex[MOD_ROOF] = 1
MP_SAVE_VEHICLE_SLOT_STATS_FROM_SAVEGAME(iSlotToUse,g_MpSavedVehicles[iSlotToUse] ,TRUE)
SET_PLAYER_RENOVATED_AVENGER_TURRET(TRUE)
SET_EMPTY_AVENGER_HOLD(TRUE)
CLEANUP_MP_SAVED_AVENGER(DEFAULT , DEFAULT, TRUE, DEFAULT, TRUE)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchased, has turret")
ENDIF
ENDIF
//ARMORY_TRUCK_REQUEST_INTERIOR_UPDATE()
// Phonecall if the player has purchased the plane property and has already done enough resupplies to unlock some WVMs (see the call above for details)
// -
// [Trigger after you buy the plane but have already unlocked some missions] - GNRC_TRUCK
// -
// INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL)
// IF NOT IS_BIT_SET(iStatInt, biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE)
// IF IS_BIT_SET(iStatInt, biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL)
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_BOUGHT_WVM_AVAILABLE - Player has bought the truck, requesting call")
// GB_SET_LOCAL_GUNRUN_CALL_BIT(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_BOUGHT_WVM_AVAILABLE)
// SET_BIT(iStatInt, biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE)
// SET_BIT(iStatInt, biGR_Help_FIRST_WVM_UNLOCKED) // Set this so we know its safe to let players know when they unlock subsequent WVMs
// SET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL, iStatInt)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL not set")
// ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_BOUGHT_TRUCK_WVM_AVAILABLE already set")
// ENDIF
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the plane!")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: g_sPlaneDataStruct.iGunTurret:", g_sPlaneDataStruct.iGunTurret, " iVehShop:", g_sPlaneDataStruct.iVehShop, " iWeaShop:", g_sPlaneDataStruct.iWeaShop, " iInterior:", g_sPlaneDataStruct.iInterior, " iAvenger:", g_sPlaneDataStruct.iAvenger)
ENDIF
IF thisModel = eDLC_HACKER_TRUCK_MODEL
bPreviousPegasus = bPreviousBigassVehicle
INT iDecalSF = GET_HACKER_TRUCK_DECAL_FROM_SF(g_sHackerTruckDataStruct.iDecal)
INT iTintSF = GET_HACKER_TRUCK_TINT_FROM_SF(g_sHackerTruckDataStruct.iTint)
IF NOT bPreviousBigassVehicle
IF DOES_ENTITY_EXIST(vi)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi exists")
MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: new vi doesnt exist...")
ENDIF
SET_HACKER_TRUCK_IS_IN_BUSINESS_HUB(TRUE)
SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet7, BI_FM_GANG_BOSS_HELP_7_TERRORBYTE_JUST_PURCHASED)
ELSE
SET_EMPTY_HACKER_TRUCK_TRAILER(TRUE)
SET_OWNER_RENOVATED_HACKER_TRUCK(TRUE)
// IF INT_TO_ENUM(MODEL_NAMES, GET_HACKER_TRUCK_CAB_FROM_SF(g_sHackerTruckDataStruct.iCab)) != GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eHackerTruckModel
// IF DOES_ENTITY_EXIST(vi)
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi exists")
//
// MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
// MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
// ELSE
// CASSERTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: renovated vi doesnt exist...")
// ENDIF
//
// SET_OWNER_RENOVATED_TRUCK_CAB(TRUE)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...g_sHackerTruckDataStruct.iCab = ", g_sHackerTruckDataStruct.iCab, ", eCab = ", GET_MODEL_NAME_FOR_DEBUG(INT_TO_ENUM(MODEL_NAMES, GET_HACKER_TRUCK_CAB_FROM_SF(g_sHackerTruckDataStruct.iCab))))
// CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - ...eHackerTruckModel = ", GET_MODEL_NAME_FOR_DEBUG(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eHackerTruckModel))
// ENDIF
//
// SET_OWNER_RENOVATED_TRUCK_TRAILER(TRUE)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_INV_HACKERTRUCK_MODEL_0, ENUM_TO_INT(GET_HACKER_TRUCK_MODEL()))
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_HACKER_TRUCK))
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.eHackerTruckModel = GET_HACKER_TRUCK_MODEL()
IF NOT bPreviousBigassVehicle
IF IS_PLAYER_IN_BUSINESS_HUB_THEY_OWN(PLAYER_ID())
SET_REQUEST_TO_CREATE_HACKER_TRUCK_IN_BUSINESS_HUB(TRUE)
ENDIF
ENDIF
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_INTERIOR_DECAL, iDecalSF)
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_INTERIOR_TINT, iTintSF)
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_MISSILE_LAUNCHER, g_sHackerTruckDataStruct.iMissileLauncher)
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_DRONE_STATION, g_sHackerTruckDataStruct.iDroneStation)
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_WEAPON_STATION, g_sHackerTruckDataStruct.iWeaShop)
SET_PACKED_STAT_INT(PACKED_MP_INT_HACKERTRUCK_MOTORCYCLE_WORKSHOP, g_sHackerTruckDataStruct.iVehShop)
//HACKER_TRUCK_REQUEST_INTERIOR_UPDATE()
IF NOT IS_PLAYER_PURCHASED_GUN_LOCKER_FOR_TRUCK(PLAYER_ID())
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
BROADCAST_PLAYER_PURCHASED_HACKER_TRUCK(TRUE)
BROADCAST_PLAYER_HACKER_TRUCK_PURCHASED_MODS()
enumCharacterList CharacterToAdd = GET_BUSINESS_BATTLE_HACKERTRUCK_CONTACT()
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = TRUE
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[HACKERTRUCK_CONTACT] MAINTAIN_ADD_BUSINESS_BATTLE_NIGHTCLUB_CONTACT - ADD_CONTACT_TO_PHONEBOOK(", g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
/* // Phonecall if the player has purchased the hacker truck property and has already done enough resupplies to unlock some WVMs (see the call above for details)
// -
// [Trigger after you buy the hacker truck but have already unlocked some missions] - GNRC_TRUCK_1
// -
INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL)
IF NOT IS_BIT_SET(iStatInt, biGR_Help_BOUGHT_TRUCK_1_WVM_AVAILABLE)
IF IS_BIT_SET(iStatInt, biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_1_BOUGHT_WVM_AVAILABLE - Player has bought the TRUCK_1, requesting call")
GB_SET_LOCAL_GUNRUN_CALL_BIT(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_TRUCK_1_BOUGHT_WVM_AVAILABLE)
SET_BIT(iStatInt, biGR_Help_BOUGHT_TRUCK_1_WVM_AVAILABLE)
SET_BIT(iStatInt, biGR_Help_FIRST_WVM_UNLOCKED) // Set this so we know its safe to let players know when they unlock subsequent WVMs
SET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL, iStatInt)
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_DIDNT_MAKE_FIRST_WVM_CALL not set")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY - [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - biGR_Help_BOUGHT_TRUCK_1_WVM_AVAILABLE already set")
ENDIF
*/
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
CDEBUG1LN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchased hacker truck, set bDisplayed_HELP_BBSE0ht false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
ENDIF
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the hacker truck!")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: g_sHackerTruckDataStruct.iCab:", g_sHackerTruckDataStruct.iCab,
" iDecal:", g_sHackerTruckDataStruct.iDecal,
" iTint:", g_sHackerTruckDataStruct.iTint,
" iMissileLauncher:", g_sHackerTruckDataStruct.iMissileLauncher,
" iDroneStation:", g_sHackerTruckDataStruct.iDroneStation,
" iWeaShop:", g_sHackerTruckDataStruct.iWeaShop,
" iVehShop:", g_sHackerTruckDataStruct.iVehShop)
ENDIF
#IF FEATURE_HEIST_ISLAND
IF thisModel = GET_SUBMARINE_MODEL()
//bPreviousPegasus = bPreviousBigassVehicle
INT iColourSF = GET_KOSATKA_COLOUR_FROM_SF(g_sKosatkaDataStruct.iColour)
INT iFlagSF = GET_KOSATKA_FLAG_FROM_SF(g_sKosatkaDataStruct.iFlag)
IF NOT bPreviousBigassVehicle
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_SUBMARINE)
// MPGlobalsAmbience.bLaunchVehicleDropSubmarine = TRUE
// SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SUBMARINE)
ENDIF
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_IH_KOSATKA))
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.sSubmarinePropertyData.eModel = GET_SUBMARINE_MODEL()
SET_SUBMARINE_AS_OWNED(TRUE)
SET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_COLOUR, iColourSF)
SET_PACKED_STAT_INT(PACKED_MP_INT_KOSATKA_FLAG, iFlagSF)
SET_SUBMARINE_SONAR_AS_OWNED(INT_TO_BOOL(g_sKosatkaDataStruct.iSonar))
SET_SUBMARINE_GUIDED_MISSILES_AS_OWNED(INT_TO_BOOL(g_sKosatkaDataStruct.iMissiles))
SET_SUBMARINE_WORKSHOP_AS_OWNED(INT_TO_BOOL(g_sKosatkaDataStruct.iWeaShop))
SET_SEASPARROW2_AS_OWNED(INT_TO_BOOL(g_sKosatkaDataStruct.iSeaSparrow2))
SET_AVISA_AS_OWNED(INT_TO_BOOL(g_sKosatkaDataStruct.iAvisa))
BROADCAST_PLAYER_PURCHASED_SUBMARINE(TRUE)
BROADCAST_PLAYER_KOSATKA_PURCHASED_MODS()
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
CDEBUG1LN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: purchased kosatka, set bDisplayed_HELP_BBSE0ht false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0HT)
ENDIF
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the Submarine!")
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: g_sKosatkaDataStruct.iColour:", g_sKosatkaDataStruct.iColour,
" iFlag:", g_sKosatkaDataStruct.iFlag,
" iMissiles:", g_sKosatkaDataStruct.iMissiles,
" iSonar:", g_sKosatkaDataStruct.iSonar,
" iWeaShop:", g_sKosatkaDataStruct.iWeaShop,
" iSeaSparrow2:", g_sKosatkaDataStruct.iSeaSparrow2,
" iAvisa:", g_sKosatkaDataStruct.iAvisa)
ENDIF
#ENDIF
IF thisModel = BLIMP3
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: set BLIMP3_LIVERY ", ENUM_TO_INT(g_eLastBuyableVehicleColourSelected), "!")
SET_PACKED_STAT_INT(PACKED_MP_INT_PEGASUS_BLIMP3_LIVERY, ENUM_TO_INT(g_eLastBuyableVehicleColourSelected))
ENDIF
INT iVehicleSpend = GET_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_SPENT_ON_VEHICLES)
CONST_INT iCONST_THRESHOLD 1000000 //$1,000,000
INT iSpendTarget = ((iVehicleSpend/iCONST_THRESHOLD)+1) * iCONST_THRESHOLD
CPRINTLN(DEBUG_SHOPS, "DO_BIGASS_VEHICLE_BUY: request high vehicle spend ($", iVehicleSpend ," + $", iPrice, ") >= $", iSpendTarget)
IF (iVehicleSpend+iPrice) >= iSpendTarget
REQUEST_SYSTEM_ACTIVITY_TYPE_HIGH_VEHICLE_SPEND((iSpendTarget/iCONST_THRESHOLD)+1)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_SPENT_ON_VEHICLES, iVehicleSpend+iPrice)
ENDIF
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
ENDIF
bBrowserShoppingSavePending = TRUE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedATM.bAnyMpVehicleBought = TRUE
RETURN TRUE
ENDFUNC
/// PURPOSE:
///
/// PARAMS:
/// siteID -
/// iPrice - -1 indicates look up the price
/// RETURNS:
///
FUNC BOOL DO_MP_VEHICLE_BUY(WEBSITE_INDEX_ENUM siteID, INT iAltVersion, INT iPriceIn = -1)
IF !confCheck
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, FALSE))
CERRORLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: \"", GET_WEBSITE_FROM_INDEX(siteID), "\", ", iAltVersion, ", ", iPriceIn, ") - confCheck is false!!!")
RETURN FALSE
ENDIF
confCheck = FALSE
IF g_sConfVssMP.VehicleSetup.eModel != GET_MODEL_FOR_BUYABLE_VEHICLE(confSbv, iAltVersion)
CASSERTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: \"", GET_WEBSITE_FROM_INDEX(siteID), "\", ", iAltVersion, ", ", iPriceIn, ") - g_sConfVssMP.VehicleSetup.eModel[", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), "] is different from GET_MODEL_FOR_BUYABLE_VEHICLE(", GET_LABEL_BUYABLE_VEHICLE(confSbv), ")!!!")
RETURN FALSE
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: \"", GET_WEBSITE_FROM_INDEX(siteID), "\", ", iAltVersion, ", ", iPriceIn, ") - g_sConfVssMP.VehicleSetup.eModel[", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), "] matches GET_MODEL_FOR_BUYABLE_VEHICLE(", GET_LABEL_BUYABLE_VEHICLE(confSbv), ")")
ENDIF
VEHICLE_INDEX vi
BOOL bAltVersion = IS_SBV_AN_ALTERNATE_VEHICLE(confSbv, siteID, g_eLastBuyableVehicleColourSelected)
IF !IS_VEH_ENABLED_BY_TUNABLE(siteID, g_sConfVssMP.VehicleSetup.eModel)
CASSERTLN(DEBUG_INTERNET, "Appinternet: vehicle ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), " is not enabled by tunables")
#IF NOT IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv))
#ENDIF
#IF IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, bAltVersion))
#ENDIF
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY - waiting for CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_VEHICLE_BUY(", GET_LABEL_BUYABLE_VEHICLE(confSbv), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", ", GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.VehicleSetup.eModel), ", vi, ", GET_STRING_FROM_BOOL(bAltVersion), ")")
WHILE NOT CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY(confSbv, siteID, g_sConfVssMP, vi, bAltVersion)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
INT iSlotToUse = -1
INT iDisplaySlotToUse = -1
IF confMpSlotIndex = -1
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel)
ELSE
iSlotToUse = confMpSlotIndex
CPRINTLN(DEBUG_INTERNET, "setting iSlotToUse = confMpSlotIndex = ",iSlotToUse)
ENDIF
IF confMPDisplayIndex = -1
iDisplaySlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel)
ELSE
iDisplaySlotToUse = confMPDisplayIndex
CPRINTLN(DEBUG_INTERNET, "setting iDisplaySlotToUse = confMPDisplayIndex = ",iDisplaySlotToUse)
ENDIF
// auto-pick slot for hangar if necessary
IF iSlotToUse > -1
AND iDisplaySlotToUse > -1
AND MP_SAVE_VEHICLE_IS_DISPLAY_SLOT_HANGAR(iDisplaySlotToUse)
MP_SAVE_VEHICLE_GET_SUITABLE_HANGAR_SLOT(iDisplaySlotToUse, iSlotToUse, g_sConfVssMP.VehicleSetup.eModel)
ENDIF
IF g_sMPTunables.bDisableDisplaySlots
iDisplaySlotToUse = iSlotToUse
CPRINTLN(DEBUG_INTERNET, "g_sMPTunables.bDisableDisplaySlots internet 1 setting iDisplaySlotToUse = iSlotToUse ")
ENDIF
IF iSlotToUse > -1
AND iDisplaySlotToUse > -1
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY - use slots ", GET_LABEL_BUYABLE_VEHICLE(confSbv), ", ", GET_WEBSITE_FROM_INDEX(siteID), ", iSlotToUse: ", iSlotToUse, ", iDisplaySlotToUse:", iDisplaySlotToUse)
// are we replacing the last used car? (see 1685165)
IF (g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastSavedCarUsed = iSlotToUse)
NET_PRINT("DO_MP_VEHICLE_BUY - replacing last used car") NET_NL()
CLEANUP_MP_SAVED_VEHICLE()
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastSavedCarUsed = -1
ENDIF
INT iPrice = GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, bAltVersion)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: iPrice: ", iPrice, " bAltVersion: ", GET_STRING_FROM_BOOL(bAltVersion))
COUPON_TYPE eDoCoupon = MAX_COUPONS
// Adjust prices for MP tunables
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
CASE WWW_ARENAWAR_TV
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fCarsWebsiteMultiplier: ", g_sMPTunables.fCarsWebsiteMultiplier)
iPrice = CEIL(g_sMPTunables.fCarsWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF GET_VEHICLE_STORAGE_TYPE(confSbv) = VST_HANGAR
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fPlanesWebsiteMultiplier: ", g_sMPTunables.fPlanesWebsiteMultiplier)
iPrice = CEIL(g_sMPTunables.fPlanesWebsiteMultiplier * (TO_FLOAT(iPrice)))
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fHelisWebsiteMultiplier: ", g_sMPTunables.fHelisWebsiteMultiplier)
iPrice = CEIL(g_sMPTunables.fHelisWebsiteMultiplier * (TO_FLOAT(iPrice)))
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fBoatsWebsiteMultiplier: ", g_sMPTunables.fBoatsWebsiteMultiplier)
iPrice = CEIL(g_sMPTunables.fBoatsWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_PANDMCYCLES_COM
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fBikesWebsiteMultiplier: ", g_sMPTunables.fBikesWebsiteMultiplier)
iPrice = CEIL(g_sMPTunables.fBikesWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
ENDSWITCH
IF g_smpTunables.bTurn_on_promotional_eyefind_homepage
CASSERTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: Promotional eyefind homepage discount hooked up, check site \"", GET_WEBSITE_FROM_INDEX(siteID), "\"")
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT: ", g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_ELITASTRAVEL_COM
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT: ", g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT: ", g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
ENDSWITCH
ENDIF
IF iPriceIn > -1
iPrice = iPriceIn
ENDIF
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
IF confSbv = BV_GO_HERMES
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_XMAS2017)")
eDoCoupon = COUPON_CAR_XMAS2017
ENDIF
ELIF confSbv = BV_AW_CLIQUE
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_XMAS2018)")
eDoCoupon = COUPON_CAR_XMAS2018
ENDIF
ELIF confSbv = BV_A_BUZZARD
IF DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_HELI_XMAS2018)")
eDoCoupon = COUPON_HELI_XMAS2018
ENDIF
ELIF confSbv = BV_DLC_INSURGENT
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR2_XMAS2018)")
eDoCoupon = COUPON_CAR2_XMAS2018
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF confSbv = BV_G9E_S95
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION)
CPRINTLN(DEBUG_INTERNET, "DO_BIGASS_VEHICLE_BUY: has coupon(COUPON_CAR_GEN9_MIGRATION)")
eDoCoupon = COUPON_CAR_GEN9_MIGRATION
ENDIF
#ENDIF
ENDIF
ENDIF
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CAR_SITE)")
eDoCoupon = COUPON_CAR_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_CAR_SITE)")
eDoCoupon = COUPON_CASINO_CAR_SITE
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_PLANE_SITE)")
eDoCoupon = COUPON_PLANE_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_PLANE_SITE, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_PLANE_SITE)")
eDoCoupon = COUPON_CASINO_PLANE_SITE
ENDIF
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_MIL_SITE)")
eDoCoupon = COUPON_MIL_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_MIL_SITE, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_MIL_SITE)")
eDoCoupon = COUPON_CASINO_MIL_SITE
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BOAT_SITE, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BOAT_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_BOAT_SITE)")
eDoCoupon = COUPON_CASINO_BOAT_SITE
ENDIF
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE2, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE2)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_CAR_SITE2)")
eDoCoupon = COUPON_CASINO_CAR_SITE2
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BIKE_SITE, confSbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BIKE_SITE)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: has coupon(COUPON_CASINO_BIKE_SITE)")
eDoCoupon = COUPON_CASINO_BIKE_SITE
ENDIF
BREAK
ENDSWITCH
ENDIF
IF (eDoCoupon = COUPON_CASINO_PLANE_SITE)
OR (eDoCoupon = COUPON_CASINO_BOAT_SITE)
OR (eDoCoupon = COUPON_CASINO_CAR_SITE)
OR (eDoCoupon = COUPON_CASINO_CAR_SITE2)
OR (eDoCoupon = COUPON_CASINO_MIL_SITE)
OR (eDoCoupon = COUPON_CASINO_BIKE_SITE)
TRIGGER_BROWSER_NAG_SCREEN(ENUM_TO_INT(eDoCoupon), iPrice, NSR_VOUCHER)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: Trigger browser voucher screen(", GET_COUPON_STRING(eDoCoupon), ", ", iPrice, ", NSR_VOUCHER)")
BOOL bInputFrontendReleased = FALSE
BOOL bInputFrontendAcceptPressed = FALSE, bInputFrontendCancelPressed = FALSE
WHILE NOT bInputFrontendAcceptPressed
AND NOT bInputFrontendCancelPressed
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
IF bInputFrontendReleased
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
bInputFrontendAcceptPressed = TRUE
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
ELIF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
bInputFrontendCancelPressed = TRUE
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
ENDIF
ENDIF
IF NOT bInputFrontendReleased
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: Triggered browser voucher screen, bInputFrontendReleased = true")
bInputFrontendReleased = TRUE
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
IF bInputFrontendAcceptPressed
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: Accept voucher ", GET_COUPON_STRING(eDoCoupon))
ELIF bInputFrontendCancelPressed
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: Cancel voucher ", GET_COUPON_STRING(eDoCoupon))
//canceled the buy process
#IF NOT IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_CANCELED,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv))
#ENDIF
#IF IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_CANCELED,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, bAltVersion))
#ENDIF
IF DOES_ENTITY_EXIST(vi)
DELETE_VEHICLE(vi)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
ELSE
CASSERTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: UNKNOWN voucher ", GET_COUPON_STRING(eDoCoupon))
ENDIF
ENDIF
// Process cash transaction.
IF USE_SERVER_TRANSACTIONS()
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
MODEL_NAMES eThisVehModel = g_sConfVssMP.vehicleSetup.eModel
BOOL bThisAltVersion = bAltVersion
IF IS_SBV_A_VEHICLE_WITH_ARMOUR_OPTION(confSbv)
AND bAltVersion
SWITCH confSbv
CASE BV_AP_BALLER3 eThisVehModel = BALLER5 BREAK
CASE BV_AP_BALLER4 eThisVehModel = BALLER6 BREAK
CASE BV_AP_COG55 eThisVehModel = COG552 BREAK
CASE BV_AP_COGNOSCENTI eThisVehModel = COGNOSCENTI2 BREAK
CASE BV_AP_SCHAFTER3 eThisVehModel = SCHAFTER5 BREAK
CASE BV_AP_SCHAFTER4 eThisVehModel = SCHAFTER6 BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: unknown armouted vehicle ", GET_LABEL_BUYABLE_VEHICLE(confSbv))
BREAK
ENDSWITCH
bThisAltVersion = FALSE
ENDIF
IF (eThisVehModel = COGNOSCENTI)
OR (eThisVehModel = COGNOSCENTI2)
IF IS_ARENA_WARS_VEHICLE_REWARD_UNLOCKED(eThisVehModel)
bThisAltVersion = TRUE
ENDIF
ENDIF
BOOL bStarterPackItem = FALSE
IF IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(confSbv)
IF HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
bStarterPackItem = TRUE
ENDIF
ENDIF
INT iItemId = GET_VEHICLE_KEY_FOR_CATALOGUE(eThisVehModel, bThisAltVersion, DEFAULT, bStarterPackItem)
INT iInventoryKey = GET_VEHICLE_INVENTORY_KEY_FOR_CATALOGUE(confMpSlotIndex)
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR INVENTORY VEHICLE
INT iDoCouponHash = 0
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
iDoCouponHash = HASH("PM_COUPON_CAR_SITE") //<keyhash value="118439962" />
BREAK
CASE COUPON_PLANE_SITE
iDoCouponHash = HASH("PM_COUPON_PLANE_SITE") //<keyhash value="1514966546" />
BREAK
CASE COUPON_MIL_SITE
iDoCouponHash = HASH("PM_COUPON_MIL_SITE") //<keyhash value="1776242445" />
BREAK
CASE COUPON_CAR_XMAS2017
iDoCouponHash = HASH("PO_COUPON_CAR_XMAS2017") //<keyhash value="-1996922865" />
iPriceIn = 0
BREAK
CASE COUPON_CAR_XMAS2018
iDoCouponHash = HASH("PO_COUPON_CAR_XMAS2018") //<keyhash value="2125613953" />
iPriceIn = 0
BREAK
CASE COUPON_HELI_XMAS2018
iDoCouponHash = HASH("PO_COUPON_HELI_XMAS2018") //<keyhash value="-1462899015" />
iPriceIn = 0
BREAK
CASE COUPON_CAR2_XMAS2018
iDoCouponHash = HASH("PO_COUPON_CAR2_XMAS2018") //<keyhash value="902521715" />
iPriceIn = 0
BREAK
CASE COUPON_CASINO_PLANE_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_PLANE_SITE")
BREAK
CASE COUPON_CASINO_BOAT_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_BOAT_SITE")
BREAK
CASE COUPON_CASINO_CAR_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_CAR_SITE")
BREAK
CASE COUPON_CASINO_CAR_SITE2
iDoCouponHash = HASH("PM_COUPON_CASINO_CAR_SITE2")
BREAK
CASE COUPON_CASINO_MIL_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_MIL_SITE")
BREAK
CASE COUPON_CASINO_BIKE_SITE
iDoCouponHash = HASH("PM_COUPON_CASINO_BIKE_SITE")
BREAK
ENDSWITCH
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPriceIn, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel), CATEGORY_INVENTORY_VEHICLE, NET_SHOP_ACTION_BUY_VEHICLE, iItemId, iInventoryKey, iDoCouponHash, DEFAULT, DEFAULT, vi)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
#IF NOT IS_DEBUG_BUILD
TEXT_LABEL tlCategoryKey
tlCategoryKey = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 tlCategoryKey
INT iPriceVariation
TEXT_LABEL_15 tlVehicleName
iPriceVariation = GET_VEHICLE_MOD_PRICE_VARIATION_FOR_CATALOGUE(g_sConfVssMP.vehicleSetup.eModel)
tlVehicleName = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
IF bAltVersion
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, g_sConfVssMP.vehicleSetup.eModel, SHOP_TYPE_CARMOD, 1, iPriceVariation)
ELSE
GENERATE_KEY_FOR_SHOP_CATALOGUE(tlCategoryKey, tlVehicleName, g_sConfVssMP.vehicleSetup.eModel, SHOP_TYPE_CARMOD, 0, iPriceVariation)
ENDIF
#ENDIF
CWARNINGLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: failed to process transaction \"", tlCategoryKey, "\"")
#IF NOT IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv))
#ENDIF
#IF IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, bAltVersion))
#ENDIF
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
BREAK
ENDSWITCH
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CAR_XMAS2017
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2017)")
iPrice = 0
BREAK
CASE COUPON_CAR_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_HELI_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_HELI_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CAR2_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR2_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CASINO_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BOAT_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE2
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BIKE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE COUPON_CAR_GEN9_MIGRATION
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)")
iPrice = 0
BREAK
#ENDIF
ENDSWITCH
ELSE
SWITCH eDoCoupon
CASE COUPON_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CAR_XMAS2017
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2017)")
iPrice = 0
BREAK
CASE COUPON_CAR_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_HELI_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_HELI_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CAR2_XMAS2018
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR2_XMAS2018)")
iPrice = 0
BREAK
CASE COUPON_CASINO_PLANE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BOAT_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_CAR_SITE2
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_MIL_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
CASE COUPON_CASINO_BIKE_SITE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE COUPON_CAR_GEN9_MIGRATION
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)")
iPrice = 0
BREAK
#ENDIF
ENDSWITCH
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() >= 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iPrice)
IF (fromBank AND NETWORK_CAN_SPEND_MONEY(iPrice,TRUE,FALSE,FALSE))
OR (fromBankAndWallet AND NETWORK_CAN_SPEND_MONEY(iPrice,FALSE,TRUE,FALSE))
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY() - vehicle site fail reason \"cannot spend money\"")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_MONEY, confSbv, iPrice)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
ENDIF
ENDIF
GO_TO_WEBSITE(GET_VEHICLE_PURCHASE_SUCCESS_PAGE(siteID, confSbv))
MP_SAVE_VEHICLE_STORE_CAR_DETAILS_IN_SLOT(vi,iSlotToUse,TRUE,TRUE,FALSE,TRUE,TRUE)
MPSV_SET_DISPLAY_SLOT(iDisplaySlotToUse,iSlotToUse)
#IF FEATURE_GTAO_MEMBERSHIP
MP_SAVE_VEHICLE_CHECK_SET_MEMBERSHIP_PURCHASE(g_sConfVssMP.VehicleSetup.eModel,iSlotToUse)
#ENDIF
IF iDisplaySlotToUse >= DISPLAY_SLOT_START_ARENAWARS_GARAGE_LVL1
AND iDisplaySlotToUse <= DISPLAY_SLOT_END_ARENAWARS_GARAGE_LVL3
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY() - SET_ARENA_VEHICLE_NAME to NULL for ",iDisplaySlotToUse-DISPLAY_SLOT_START_ARENAWARS_GARAGE_LVL1)
CLEAR_ARENA_VEHICLE_NAME(iDisplaySlotToUse-DISPLAY_SLOT_START_ARENAWARS_GARAGE_LVL1)
ENDIF
IF NOT IS_VEHICLE_A_CYCLE(g_sConfVssMP.VehicleSetup.eModel)
INSURE_MP_SAVED_VEHICLE_PRIVATE(iSlotToUse)
ENDIF
// g_MpSavedVehicles[iSlotToUse].vehicleSetupMP.VehicleSetup.iColour1 = g_sConfVssMP.VehicleSetup.iColour1
SET_VEHICLE_AS_JUST_PURCHASED(iSlotToUse)
GB_SET_SHOULD_REFRESH_OWNED_ABILITY_VEHICLES()
IF !(eDoCoupon = MAX_COUPONS)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: REDEEM_COUPON(", eDoCoupon, ")")
REDEEM_COUPON(eDoCoupon)
ENDIF
BANK_ACCOUNT_ACTION_SOURCE_BAAC basource
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
basource = BAAC_MOTORSPORT_SITE
BREAK
CASE WWW_ELITASTRAVEL_COM
basource = BAAC_PLANE_SITE
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
basource = BAAC_ARMY_SITE
BREAK
CASE WWW_DOCKTEASE_COM
basource = BAAC_BOAT_SITE
BREAK
CASE WWW_PANDMCYCLES_COM
basource = BAAC_BIKE_SITE
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
basource = BAAC_SUPERAUTO_SITE
BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
basource = BAAC_LOWRIDER_SITE
BREAK
CASE WWW_ARENAWAR_TV
basource = BAAC_ARENA_SITE
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: invalid siteID ", GET_WEBSITE_FROM_INDEX(siteID))
BREAK
ENDSWITCH
INT iData = GET_MP_INT_PLAYER_STAT(MPPLY_VEHICLE_ID_ADMIN_WEB)
IF INT_TO_ENUM(MODEL_NAMES, iData) = g_sConfVssMP.VehicleSetup.eModel
SET_MP_INT_PLAYER_STAT(MPPLY_VEHICLE_ID_ADMIN_WEB, 0)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "Appinternet: MPPLY_VEHICLE_ID_ADMIN_WEB is ", iData, " == \"", GET_LABEL_BUYABLE_VEHICLE(confSbv), "\" ", ENUM_TO_INT(GET_MODEL_FOR_BUYABLE_VEHICLE(confSbv, iAltVersion)))
ELSE
CPRINTLN(DEBUG_INTERNET, "Appinternet: MPPLY_VEHICLE_ID_ADMIN_WEB is ", iData, " != \"", GET_LABEL_BUYABLE_VEHICLE(confSbv), "\" ", ENUM_TO_INT(GET_MODEL_FOR_BUYABLE_VEHICLE(confSbv, iAltVersion)))
#ENDIF
ENDIF
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "PLAYSTATS_SHOP_ITEM(", GET_LABEL_BUYABLE_VEHICLE(confSbv), ", ", iPrice, ")")
#ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
IF iPrice >= 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, iPrice)
BOOL fromBank = (NETWORK_GET_VC_BANK_BALANCE() >= 0)
BOOL fromBankAndWallet = (NETWORK_GET_VC_BANK_BALANCE() < iPrice)
IF (fromBank AND NETWORK_CAN_SPEND_MONEY(iPrice,TRUE,FALSE,FALSE))
OR (fromBankAndWallet AND NETWORK_CAN_SPEND_MONEY(iPrice,FALSE,TRUE,FALSE))
OR USE_SERVER_TRANSACTIONS() // Transaction would have already taken cash off here.
INT colorHash = 0
INT iSVMIndex = GET_SVM_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iWVMIndex = GET_WVM_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iWAMIndex = WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
INT iFDSSlot = GET_FDS_VEHICLE_SLOT(g_sConfVssMP.vehicleSetup.eModel)
INT iBBSIndex = GET_BBS_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iAWSIndex = GET_AWS_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#IF FEATURE_CASINO_HEIST
INT iCHIndex = GET_CH_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
#IF FEATURE_COPS_N_CROOKS
INT iCNCIndex = GET_CNC_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
// #IF FEATURE_SUMMER_2020
// INT iSUMIndex = GET_SUMMER20_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
// #ENDIF
INT iIHIndex = GET_ISLAND_HEIST_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iTunerIndex = GET_TUNER_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
INT iFixerIndex = GET_FIXER_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#IF FEATURE_DLC_1_2022
INT iSum2Index = GET_SUMMER_2022_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel)
#ENDIF
IF iSVMIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
INT iMission = SVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
IF NOT SVM_HAS_PLAYER_UNLOCKED_MISSION(iMission)
colorHash = 1
ELIF NOT SVM_HAS_THIS_MISSION_BEEN_PASSED(iMission, ciFLOW_MISSION_TYPE_SVM) //SVM_IS_SPECIAL_VEHICLE_UNLOCKED
colorHash = 2
ELSE
colorHash = 3
ENDIF
SMV_RESET_VEHICLE_UNLOCK_INT(iMission)
SET_BIT(iSVM_Unlock_Feed_Message, iMission)
ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_HEIST_LOCKED(confSbv)
//1 = for not unlocked through heist
//2 = for unlocked through heist
IF NOT IS_BUYABLE_VEHICLE_UNLOCKED(confSbv)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iWVMIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
INT iMission = WVM_GET_FLOW_POS_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
// IF NOT TRUE //WVM_HAS_PLAYER_UNLOCKED_MISSION(iMission)
// colorHash = 1
// EL
IF NOT SVM_HAS_THIS_MISSION_BEEN_PASSED(iMission, ciFLOW_MISSION_TYPE_WVM) //WVM_IS_SPECIAL_VEHICLE_UNLOCKED
colorHash = 2
ELSE
colorHash = 3
ENDIF
SMV_RESET_VEHICLE_UNLOCK_INT(iMission)
SET_BIT(iWVM_Unlock_Feed_Message, iMission)
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_SINGLEWEAPONIZEDVEHICLE)
BOOL bClothingAwardPurchAllWeaponizedVehicle = FALSE
INT i, iSavedWVMBitset = 0
SET_BIT(iSavedWVMBitset, iWVMIndex)
REPEAT MAX_MP_SAVED_VEHICLES i
INT iSavedWVMIndex = GET_WVM_VEHICLE_INDEX(g_MpSavedVehicles[i].vehicleSetupMP.VehicleSetup.eModel)
IF iSavedWVMIndex != -1
AND NOT IS_BIT_SET(iSavedWVMBitset, iSavedWVMIndex)
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: purchase weaponized veh ", iWVMIndex, ", already own ", iSavedWVMIndex, ", in slot ", i, ".")
SET_BIT(iSavedWVMBitset, iSavedWVMIndex)
ENDIF
IF (IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(DUNE3))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(HALFTRACK))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TRAILERSMALL2))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(APC))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TAMPA3))
AND IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(OPPRESSOR)))
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_ALLWEAPONIZEDVEHICLE)
bClothingAwardPurchAllWeaponizedVehicle = TRUE
i = MAX_MP_SAVED_VEHICLES
ENDIF
ENDREPEAT
IF NOT bClothingAwardPurchAllWeaponizedVehicle
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: purchase weaponized veh ", iWVMIndex,
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(DUNE3)), ", own DUNE3", ", dont own DUNE3"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(HALFTRACK)), ", own HALFTRACK", ", dont own HALFTRACK"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TRAILERSMALL2)), ", own TRAILERSMALL2", ", dont own TRAILERSMALL2"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(APC)), ", own APC", ", dont own APC"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(TAMPA3)), ", own TAMPA3", ", dont own TAMPA3"),
PICK_STRING(IS_BIT_SET(iSavedWVMBitset, GET_WVM_VEHICLE_INDEX(OPPRESSOR)), ", own OPPRESSOR", ", dont own OPPRESSOR"))
ENDIF
ELIF iWAMIndex > 0
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT WAM_IS_SPECIAL_VEHICLE_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iFDSSlot != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT HAS_PLAYER_UNLOCKED_GANG_OPS_VEHICLE_TRADE_PRICE(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
SET_BIT(iFDS_Unlock_Feed_Message, iFDSSlot)
ELIF iBBSIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_BUSINESS_BATTLES_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
SET_BIT(iBBS_Unlock_Feed_Message, iBBSIndex)
ELIF iAWSIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_ARENA_WARS_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
// SET_BIT(iBBS_Unlock_Feed_Message, iAWSIndex)
IF IS_VEHICLE_AN_ARENA_CONTENDER_VEHICLE(g_sConfVssMP.vehicleSetup.eModel)
// Player purchases an Arena vehicle (already supermodded):
GB_SETUP_ARENA_WARS_FIRST_ARENA_VEHICLE_PURCHASED_CALL()
SET_OWNED_ARENA_READY_VEHICLE_STAT(g_sConfVssMP.vehicleSetup.eModel)
ELSE
// Player purchases a base vehicle (can be supermodded to become Arena vehicle):
GB_SETUP_ARENA_WARS_FIRST_BASE_VEHICLE_PURCHASED_CALL()
ENDIF
#IF FEATURE_CASINO_HEIST
ELIF iCHIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
IF NOT IS_CASINO_HEIST_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF iCNCIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_CNC_VEHICLE_REWARD_UNLOCKED()
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
// #IF FEATURE_SUMMER_2020
// ELIF iSUMIndex != -1
// //1 = used 'Buy it Now' option and had NOT completed the requisite number
// // of Export missions to unlock the related Special Vehicle Mission
// //2 = used 'Buy it Now' option and HAD completed the requisite number
// // of Export missions to unlock the related Special Vehicle Mission
// //3 = Purchased at the Securo Serve Discount value
//
// // if not unlocked
// IF NOT IS_SUMMER20_VEHICLE_REWARD_UNLOCKED()
// colorHash = 1
// ELSE
// colorHash = 2
// ENDIF
// #ENDIF
ELIF iIHIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_ISLAND_HEIST_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iTunerIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_TUNER_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
ELIF iFixerIndex != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_FIXER_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#IF FEATURE_DLC_1_2022
ELIF iSum2Index != -1
//1 = used 'Buy it Now' option and had NOT completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//2 = used 'Buy it Now' option and HAD completed the requisite number
// of Export missions to unlock the related Special Vehicle Mission
//3 = Purchased at the Securo Serve Discount value
// if not unlocked
IF NOT IS_SUMMER_2022_VEHICLE_REWARD_UNLOCKED(g_sConfVssMP.vehicleSetup.eModel)
colorHash = 1
ELSE
colorHash = 2
ENDIF
#ENDIF
ELIF g_sConfVssMP.vehicleSetup.eModel = RCBANDITO
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_RCBANDITO_OWNED, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel) != 0)
BROADCAST_PLAYER_RC_BANDITO_PURCHASED(TRUE)
CPRINTLN(DEBUG_SHOPS, "DO_MP_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the RC Bandito!")
#IF FEATURE_CASINO_HEIST
ELIF g_sConfVssMP.vehicleSetup.eModel = MINITANK
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_RC_TANK_OWNED, ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel) != 0)
SET_PLAYER_PURCHASED_RC_TANK(TRUE)
CPRINTLN(DEBUG_SHOPS, "DO_MP_VEHICLE_BUY: Big Ass Vehicle details: making sure player owns the RC Tank!")
#ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "NETWORK_BUY_ITEM(", iPrice, ",", ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel), ",PURCHASE_VEHICLES,1,fromBank:", fromBank, ",\"", GET_LABEL_BUYABLE_VEHICLE(confSbv), "\",ENUM_TO_INT(basource),0,colorHash:", colorHash, ",fromBankAndWallet:", fromBankAndWallet, ")")
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iItemHash = ENUM_TO_INT(g_sConfVssMP.vehicleSetup.eModel)
NETWORK_BUY_ITEM(iPrice, iItemHash, PURCHASE_VEHICLES, 1, fromBank, GET_LABEL_BUYABLE_VEHICLE(confSbv), ENUM_TO_INT(basource), 0, colorHash, fromBankAndWallet)
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
IF NETWORK_IS_GAME_IN_PROGRESS()
SET_MP_VEHICLE_PURCHASED_PACKED_STAT_BOOL(g_sConfVssMP.VehicleSetup.eModel)
IF WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel) > 0
GB_SMUGGLER_SETUP_WAM_PURCHASED_FLOW_PHONECALL()
ENDIF
IF (g_sConfVssMP.vehicleSetup.eModel != eDLC_BALLISTIC_EQUIPMENT_MODEL)
CHECK_LIVE_A_LITTLE_ACHIEVEMENT(g_sConfVssMP.vehicleSetup.eModel, iPrice)
ENDIF
SET_CLOTHING_FOR_VEHICLE_PURCHASE(siteID, confSbv)
WHILE NOT SET_CHIPS_FOR_VEHICLE_PURCHASE(confSbv, eChipsTransactionState)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
RENDER_BROWSER()
WAIT(0)
ENDWHILE
eChipsTransactionState = TRANSACTION_STATE_DEFAULT
IF (GET_WVM_VEHICLE_INDEX(g_sConfVssMP.vehicleSetup.eModel) != -1)
AND g_sConfVssMP.vehicleSetup.eModel != TRAILERSMALL2
IF g_bPurchasedWeaponisedVehicle = FALSE
PRINTLN("[GUNRUN_CALL] - DO_MP_VEHICLE_BUY - g_bPurchasedWeaponisedVehicle = TRUE, player has purchased a weaponised vehicle")
g_bPurchasedWeaponisedVehicle = TRUE
ENDIF
ENDIF
IF IS_SBV_A_VEHICLE_FREE_FOR_CRIMINAL_ENTERPRISE_STARTER_PACK(confSbv)
SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(GET_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_VEHICLE_FOR_SBV(confSbv))
ENDIF
INT iVehicleSpend = GET_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_SPENT_ON_VEHICLES)
CONST_INT iCONST_THRESHOLD 1000000 //$1,000,000
INT iSpendTarget = ((iVehicleSpend/iCONST_THRESHOLD)+1) * iCONST_THRESHOLD
CPRINTLN(DEBUG_SHOPS, "DO_MP_VEHICLE_BUY: request high vehicle spend ($", iVehicleSpend ," + $", iPrice, ") >= $", iSpendTarget)
IF (iVehicleSpend+iPrice) >= iSpendTarget
REQUEST_SYSTEM_ACTIVITY_TYPE_HIGH_VEHICLE_SPEND((iSpendTarget/iCONST_THRESHOLD)+1)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_SPENT_ON_VEHICLES, iVehicleSpend+iPrice)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY() - vehicle site fail reason \"cannot spend money\"")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_MONEY, confSbv, iPrice)
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
ENDIF
g_MpSavedVehicles[iSlotToUse].iPricePaid = iPrice
ENDIF
IF iPrice = 0
//CDM: 2013-08-27 set flag on vehicle to indicate it was free so player can't sell it to make money. 1596988
SET_BIT(g_MpSavedVehicles[iSlotToUse].iVehicleBS ,MP_SAVED_VEHICLE_FREE_VEHICLE)
ENDIF
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedATM.bAnyMpVehicleBought = TRUE
bBrowserShoppingSavePending = TRUE
//note for posterity, the app can only work on an instantiated vehicle - ask kenneth why
//UPDATE_STORED_MP_SAVED_VEHICLE_DATA_FROM_VEHICLE(vi, TRUE,FALSE)
//INT iPerVehBS = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_PLYVEH_BITSET)
//SET_BIT(iPerVehBS,MP_PERSONAL_VEHICLE_AT_GARAGE)
//CLEAR_BIT(iPerVehBS,MP_PERSONAL_TAKEN_OUT_OF_GARAGE)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_PLYVEH_BITSET, iPerVehBS)
MP_SAVE_VEHICLE_SLOT_STATS_FROM_SAVEGAME(iSlotToUse,g_MpSavedVehicles[iSlotToUse],FALSE)
CPRINTLN(DEBUG_INTERNET, "Appinternet: Setting car as owned using UPDATE_STORED_MP_SAVED_VEHICLE_DATA_FROM_VEHICLE")
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN TRUE
ELSE
CASSERTLN(DEBUG_INTERNET, "Appinternet: Couldnt find a free slot to save vehicle")
#IF NOT IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NO_STORAGE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv))
#ENDIF
#IF IS_NEXTGEN_BUILD
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NO_STORAGE,confSbv, GET_BUYABLE_VEHICLE_PRICE_MP(siteID, confSbv, bAltVersion))
#ENDIF
DELETE_VEHICLE(vi)
SET_MODEL_AS_NO_LONGER_NEEDED(g_sConfVssMP.VehicleSetup.eModel)
iLastPurchasedVehicleSlot = confMpSlotIndex
confMpSlotIndex = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
RETURN FALSE
ENDIF
ENDFUNC
PROC UPDATE_VEHICLE_SITES_PAGE_CHANGE(WEBSITE_INDEX_ENUM siteID, INT pageFrom, INT pageTO)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," pageFrom: ",pageFrom,", pageTO: ",pageTO)
// Check if the transition is one we're interested in like index selection or purchase...
REPLACE_MP_VEH_OR_PROP_MENU scms
INT mpresult = -1, mpDisplaySlotReturned = -1
SITE_BUYABLE_VEHICLE sbv
COUPON_TYPE eDoCoupon = MAX_COUPONS
INT iPrice, iSlotToUse
//Check if this is the transaction complete webpage
BOOL bIsPurchase = FALSE
IF (siteID = WWW_SOUTHERNSANANDREASSUPERAUTOS_COM)
IF pageTo = 34
bIsPurchase = TRUE
ENDIF
ELIF (siteID = WWW_DOCKTEASE_COM)
IF pageTo = 12
OR pageTo = 26
bIsPurchase = TRUE
ENDIF
ELIF (siteID = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM)
IF pageTo = 12
OR pageTo = 60
OR pageTo = 88
OR pageTo = 108
OR pageTo = 145
bIsPurchase = TRUE
ENDIF
ELIF (siteID = WWW_ARENAWAR_TV)
IF pageTo = 17
bIsPurchase = TRUE
ENDIF
ELIF (siteID <> WWW_SOUTHERNSANANDREASSUPERAUTOS_COM)
IF pageTo = 12
bIsPurchase = TRUE
ENDIF
ENDIF
IF (siteID = WWW_DOCKTEASE_COM)
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(siteID, pageFrom)
IF (sbv = BV_DLC_BIG_YACHT)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," sbv: ",GET_LABEL_BUYABLE_VEHICLE(sbv)," pageFrom: ",pageFrom,", pageTO: ",pageTO,", colpick: ",g_eLastBuyableVehicleColourSelected)
CONST_INT iYACHT_D_HOME 19
CONST_INT iYACHT_D_MODEL 20
CONST_INT iYACHT_D_FITTINGS 21
CONST_INT iYACHT_D_COLOUR 22
CONST_INT iYACHT_D_LIGHTING 23
CONST_INT iYACHT_D_FLAG 29
CONST_INT iYACHT_D_PERSONALIZE 24
CONST_INT iYACHT_D_CHECKOUT 25
CONST_INT iYACHT_D_PURCHASE 26
CONST_INT iYACHT_D_PURCHASE_SUCCESS 27
CONST_INT iYACHT_D_PURCHASE_FAILED 28
SWITCH pageFrom
CASE iYACHT_D_HOME
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
g_sYachtDataStruct.iMod = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_MOD)
g_sYachtDataStruct.iFixture = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FIXTURE)
g_sYachtDataStruct.iLighting = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_LIGHTING)
g_sYachtDataStruct.iFlag = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FLAG)
g_sYachtDataStruct.iColour = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_COLOR)
g_sYachtDataStruct.tl63Name = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_YACHT_NAME, MP_STAT_YACHT_NAME2)
g_sYachtDataStruct.tl63NewName = ""
IF IS_STRING_NULL_OR_EMPTY(g_sYachtDataStruct.tl63Name)
g_sYachtDataStruct.tl63NewName = GET_FILENAME_FOR_AUDIO_CONVERSATION("YACHT_GSY")
ENDIF
g_sYachtDataStruct.iYachtNameID = GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID)
CPRINTLN(DEBUG_INTERNET, " - YACHT, Yacht home page iMod:", g_sYachtDataStruct.iMod,
" iFixture:", g_sYachtDataStruct.iFixture,
" iLighting:", g_sYachtDataStruct.iLighting,
" iColour:", g_sYachtDataStruct.iColour,
" iFlag:", g_sYachtDataStruct.iFlag)
CPRINTLN(DEBUG_INTERNET, " - YACHT, tl63Name:\"", g_sYachtDataStruct.tl63Name,
"\", tl63NewName:\"", g_sYachtDataStruct.tl63NewName,
"\", iYachtNameID:", g_sYachtDataStruct.iYachtNameID)
BREAK
CASE iYACHT_D_MODEL
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iMod = ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)-1
//
// // If we already own the yacht then we need to use the lower price items
// IF IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_YACHT))
// g_sYachtDataStruct.iMod += NUMBER_OF_PRIVATE_YACHT_VARIATIONS
// ENDIF
//
// CPRINTLN(DEBUG_INTERNET, " - YACHT_D_MODEL changed to ", g_sYachtDataStruct.iMod)
// ELSE
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_MODEL unchanged (", g_sYachtDataStruct.iMod, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_FITTINGS
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iFixture = ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)-1
// CPRINTLN(DEBUG_INTERNET, " - YACHT_D_FITTINGS changed to ", g_sYachtDataStruct.iFixture)
// ELSE
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_FITTINGS unchanged (", g_sYachtDataStruct.iFixture, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_COLOUR
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iColour = ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)-1
// CPRINTLN(DEBUG_INTERNET, " - YACHT_D_COLOUR changed to ", g_sYachtDataStruct.iColour)
// ELSE
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_COLOUR unchanged (", g_sYachtDataStruct.iColour, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_LIGHTING
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iLighting = ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)-1
// CPRINTLN(DEBUG_INTERNET, " - YACHT_D_LIGHTING changed to ", g_sYachtDataStruct.iLighting)
// ELSE
CPRINTLN(DEBUG_INTERNET, " - iYACHT_D_LIGHTING unchanged (", g_sYachtDataStruct.iLighting, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_PERSONALIZE
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iFont = ENUM_TO_INT(g_eLastBuyableVehicleColourSelected)-1
// CPRINTLN(DEBUG_INTERNET, " - iYACHT_D_PERSONALIZE changed to ", g_sYachtDataStruct.iFont)
// ELSE
// CPRINTLN(DEBUG_INTERNET, " - iYACHT_D_PERSONALIZE unchanged (", g_sYachtDataStruct.iFont, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_FLAG
// IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
// g_sYachtDataStruct.iFlag = GET_YACHT_FLAG_INT_FROM_COLOUR(g_eLastBuyableVehicleColourSelected)
// CPRINTLN(DEBUG_INTERNET, " - YACHT_D_FLAG col:", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
// ", id:", g_sYachtDataStruct.iFlag, ", mod:", GET_MODEL_NAME_FOR_DEBUG(MODEL_NAME_FOR_YACHT_FLAG(g_sYachtDataStruct.iFlag)))
// ELSE
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_FLAG unchanged (", g_sYachtDataStruct.iFlag, ")")
// ENDIF
// g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
BREAK
CASE iYACHT_D_CHECKOUT
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_CHECKOUT Page showing the user choices before the purchase page ", g_iLastSelectedWebIndex, ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iYACHT_D_PURCHASE
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_PURCHASE iMod:", g_sYachtDataStruct.iMod, " iFixture:", g_sYachtDataStruct.iFixture, " iLighting:", g_sYachtDataStruct.iLighting, " iColour:", g_sYachtDataStruct.iColour, " iFlag:", g_sYachtDataStruct.iFlag, " tl63Name:\"", g_sYachtDataStruct.tl63Name, "\"")
BREAK
CASE iYACHT_D_PURCHASE_SUCCESS
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_PURCHASE_SUCCESS ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iYACHT_D_PURCHASE_FAILED
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_PURCHASE_FAILED reason:", lastVehicleFailReason)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, " - YACHT_D_UNKNOWN_", pageFrom)
BREAK
ENDSWITCH
ENDIF
ElIF (siteID = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM)
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(siteID, pageFrom)
IF (sbv = BV_DLC_BIG_TRUCK)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," sbv: ",GET_LABEL_BUYABLE_VEHICLE(sbv)," pageFrom: ",pageFrom,", pageTO: ",pageTO,", colpick: ",g_eLastBuyableVehicleColourSelected)
CONST_INT iTRUCK_D_CAB 54
CONST_INT iTRUCK_D_MODULE_D_1 55
CONST_INT iTRUCK_D_MODULE_D_2 56
CONST_INT iTRUCK_D_MODULE_D_3 57
CONST_INT iTRUCK_D_COLOR 58
CONST_INT iTRUCK_D_SUMMARY 59
CONST_INT iTRUCK_D_PURCHASE 60
CONST_INT iTRUCK_D_PURCHASE_SUCCESS 61
CONST_INT iTRUCK_D_PURCHASE_FAILED 62
SWITCH pageFrom
CASE iTRUCK_D_CAB
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
SETUP_TRUCK_GLOBALS_FROM_STATS()
CPRINTLN(DEBUG_INTERNET, " - TRUCK, TRUCK home page iCab:", g_sTruckDataStruct.iCab,
" iSection1:", g_sTruckDataStruct.iSection1,
" iSection2:", g_sTruckDataStruct.iSection2,
" iSection3:", g_sTruckDataStruct.iSection3,
" iColour:", g_sTruckDataStruct.iColour)
BREAK
CASE iTRUCK_D_MODULE_D_1
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_MODULE_D_1 unchanged (", g_sTruckDataStruct.iCab, ")")
BREAK
CASE iTRUCK_D_MODULE_D_2
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_MODULE_D_2 unchanged (", g_sTruckDataStruct.iSection1, ")")
BREAK
CASE iTRUCK_D_MODULE_D_3
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_MODULE_D_3 unchanged (", g_sTruckDataStruct.iSection1, ")")
BREAK
CASE iTRUCK_D_COLOR
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_COLOR unchanged (", g_sTruckDataStruct.iColour, ")")
BREAK
CASE iTRUCK_D_SUMMARY
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_SUMMARY Page showing the user choices before the purchase page ", g_iLastSelectedWebIndex, ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iTRUCK_D_PURCHASE
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_PURCHASE iCab:", g_sTruckDataStruct.iCab, " iSection1:", g_sTruckDataStruct.iSection1, " iSection2:", g_sTruckDataStruct.iSection2, " iSection3:", g_sTruckDataStruct.iSection3, " iColour:", g_sTruckDataStruct.iColour)
BREAK
CASE iTRUCK_D_PURCHASE_SUCCESS
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_PURCHASE_SUCCESS ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iTRUCK_D_PURCHASE_FAILED
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_PURCHASE_FAILED reason:", lastVehicleFailReason)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, " - TRUCK_D_UNKNOWN_", pageFrom)
BREAK
ENDSWITCH
ELIF (sbv = BV_DLC_BIG_PLANE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," sbv: ",GET_LABEL_BUYABLE_VEHICLE(sbv)," pageFrom: ",pageFrom,", pageTO: ",pageTO,", colpick: ",g_eLastBuyableVehicleColourSelected)
CONST_INT iAVENGER_D_INTERIOR 83
CONST_INT iAVENGER_D_TURRET 84
CONST_INT iAVENGER_D_VEHICLE_D_WORKSHOP 85
CONST_INT iAVENGER_D_WEAPON_D_WORKSHOP 86
CONST_INT iAVENGER_D_SUMMARY 87
CONST_INT iAVENGER_D_BUY 88
CONST_INT iAVENGER_D_BUY_D_OK 89
CONST_INT iAVENGER_D_BUY_D_FAIL 90
SWITCH pageFrom
CASE iAVENGER_D_INTERIOR
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
SETUP_PLANE_GLOBALS_FROM_STATS()
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_INTERIOR home page iGunTurret:", g_sPlaneDataStruct.iGunTurret,
" iVehShop:", g_sPlaneDataStruct.iVehShop,
" iWeaShop:", g_sPlaneDataStruct.iWeaShop,
" iInterior:", g_sPlaneDataStruct.iInterior,
" iAvenger:", g_sPlaneDataStruct.iAvenger)
BREAK
CASE iAVENGER_D_TURRET
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_TURRET unchanged (", g_sPlaneDataStruct.iGunTurret, ")")
BREAK
CASE iAVENGER_D_VEHICLE_D_WORKSHOP
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_VEHICLE_D_WORKSHOP unchanged (", g_sPlaneDataStruct.iWeaShop, ")")
BREAK
CASE iAVENGER_D_WEAPON_D_WORKSHOP
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_WEAPON_D_WORKSHOP unchanged (", g_sPlaneDataStruct.iInterior, ")")
BREAK
CASE iAVENGER_D_SUMMARY
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_SUMMARY Page showing the user choices before the purchase page ", g_iLastSelectedWebIndex, ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iAVENGER_D_BUY
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_BUY iGunTurret:", g_sPlaneDataStruct.iGunTurret, " iVehShop:", g_sPlaneDataStruct.iVehShop, " iWeaShop:", g_sPlaneDataStruct.iWeaShop, " iInterior:", g_sPlaneDataStruct.iInterior, " iAvenger:", g_sPlaneDataStruct.iAvenger)
BREAK
CASE iAVENGER_D_BUY_D_OK
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_BUY_D_OK ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iAVENGER_D_BUY_D_FAIL
CPRINTLN(DEBUG_INTERNET, " - iAVENGER_D_BUY_D_FAIL reason:", lastVehicleFailReason)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, " - PLANE_D_UNKNOWN_", pageFrom)
BREAK
ENDSWITCH
ELIF (sbv = BV_DLC_HACKER_TRUCK)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," sbv: ",GET_LABEL_BUYABLE_VEHICLE(sbv)," pageFrom: ",pageFrom,", pageTO: ",pageTO,", colpick: ",g_eLastBuyableVehicleColourSelected)
CONST_INT iHACKERTRUCK_D_TINT 101
CONST_INT iHACKERTRUCK_D_DECAL 102
CONST_INT iHACKERTRUCK_D_MISSILE_D_LAUNCHER 103
CONST_INT iHACKERTRUCK_D_DRONE_D_STATION 104
CONST_INT iHACKERTRUCK_D_WEAPON_D_STATION 105
CONST_INT iHACKERTRUCK_D_MOTORCYCLE_D_WORKSHOP 106
CONST_INT iHACKERTRUCK_D_SUMMARY 107
CONST_INT iHACKERTRUCK_D_BUY 108
CONST_INT iHACKERTRUCK_D_SOLD 109
CONST_INT iHACKERTRUCK_D_NOSALE 110
SWITCH pageFrom
CASE iHACKERTRUCK_D_TINT
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
SETUP_HACKER_TRUCK_GLOBALS_FROM_STATS()
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_TINT, hacker truck home page iCab:", g_sHackerTruckDataStruct.iCab,
" iTint:", g_sHackerTruckDataStruct.iTint)
BREAK
CASE iHACKERTRUCK_D_DECAL
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_DECAL unchanged (", g_sHackerTruckDataStruct.iDecal, ")")
BREAK
CASE iHACKERTRUCK_D_MISSILE_D_LAUNCHER
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_MISSILE_D_LAUNCHER unchanged (", g_sHackerTruckDataStruct.iMissileLauncher, ")")
BREAK
CASE iHACKERTRUCK_D_DRONE_D_STATION
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_DRONE_D_STATION unchanged (", g_sHackerTruckDataStruct.iDroneStation, ")")
BREAK
CASE iHACKERTRUCK_D_WEAPON_D_STATION
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_WEAPON_D_STATION unchanged (", g_sHackerTruckDataStruct.iWeaShop, ")")
BREAK
CASE iHACKERTRUCK_D_MOTORCYCLE_D_WORKSHOP
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_MOTORCYCLE_D_WORKSHOP unchanged (", g_sHackerTruckDataStruct.iVehShop, ")")
BREAK
CASE iHACKERTRUCK_D_SUMMARY
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_SUMMARY Page showing the user choices before the purchase page ", g_iLastSelectedWebIndex, ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iHACKERTRUCK_D_BUY
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_BUY iCab:", g_sHackerTruckDataStruct.iCab,
" iDecal:", g_sHackerTruckDataStruct.iDecal,
" iColour:", g_sHackerTruckDataStruct.iTint,
" iMissileLauncher:", g_sHackerTruckDataStruct.iMissileLauncher,
" iDroneStation:", g_sHackerTruckDataStruct.iDroneStation,
" iWeaShop:", g_sHackerTruckDataStruct.iWeaShop,
" iVehShop:", g_sHackerTruckDataStruct.iVehShop)
BREAK
CASE iHACKERTRUCK_D_SOLD
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_SOLD ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iHACKERTRUCK_D_NOSALE
CPRINTLN(DEBUG_INTERNET, " - HACKERTRUCK_D_NOSALE reason:", lastVehicleFailReason)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, " - TRUCK_1_D_UNKNOWN_", pageFrom)
BREAK
ENDSWITCH
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: ",GET_WEBSITE_FROM_INDEX(siteID)," sbv: ",GET_LABEL_BUYABLE_VEHICLE(sbv)," pageFrom: ",pageFrom,", pageTO: ",pageTO,", colpick: ",g_eLastBuyableVehicleColourSelected)
CONST_INT iSUB_D_COLOR 138
CONST_INT iSUB_D_FLAG 139
CONST_INT iSUB_D_SONAR 140
CONST_INT iSUB_D_MISSILES 141
CONST_INT iSUB_D_WEAPON_D_WORKSHOP 142
CONST_INT iSUB_D_VEHICLES 143
CONST_INT iSUB_D_SUMMARY 144
CONST_INT iSUB_D_PURCHASE 145
CONST_INT iSUB_D_PURCHASE_OK 146
CONST_INT iSUB_D_PURCHASE_FAIL 147
SWITCH pageFrom
CASE iSUB_D_COLOR
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
SETUP_KOSATKA_GLOBALS_FROM_STATS()
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_COLOR, kosatka home page iOwned:", g_sKosatkaDataStruct.iOwned,
" iColour:", g_sKosatkaDataStruct.iColour)
BREAK
CASE iSUB_D_FLAG
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_FLAG unchanged (", g_sKosatkaDataStruct.iFlag, ")")
BREAK
CASE iSUB_D_SONAR
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_SONAR unchanged (", g_sKosatkaDataStruct.iSonar, ")")
BREAK
CASE iSUB_D_MISSILES
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_MISSILES unchanged (", g_sKosatkaDataStruct.iMissiles, ")")
BREAK
CASE iSUB_D_WEAPON_D_WORKSHOP
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_WEAPON_D_WORKSHOP unchanged (", g_sKosatkaDataStruct.iWeaShop, ")")
BREAK
CASE iSUB_D_VEHICLES
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_WEAPON_D_VEHICLES unchanged, g_sKosatkaDataStruct.iSeaSparrow2 (", g_sKosatkaDataStruct.iSeaSparrow2, ")")
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_WEAPON_D_VEHICLES unchanged, g_sKosatkaDataStruct.iAvisa (", g_sKosatkaDataStruct.iAvisa, ")")
BREAK
CASE iSUB_D_SUMMARY
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_SUMMARY Page showing the user choices before the purchase page ", g_iLastSelectedWebIndex, ", ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iSUB_D_PURCHASE
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_PURCHASE iColour:", g_sKosatkaDataStruct.iColour,
" iFlag:", g_sKosatkaDataStruct.iFlag,
" iMissiles:", g_sKosatkaDataStruct.iMissiles,
" iSonar:", g_sKosatkaDataStruct.iSonar,
" iWeaShop:", g_sKosatkaDataStruct.iWeaShop,
" iSeaSparrow2:", g_sKosatkaDataStruct.iSeaSparrow2,
" iAvisa:", g_sKosatkaDataStruct.iAvisa)
BREAK
CASE iSUB_D_PURCHASE_OK
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_PURCHASE_OK ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected))
BREAK
CASE iSUB_D_PURCHASE_FAIL
CPRINTLN(DEBUG_INTERNET, " - iSUB_D_PURCHASE_FAIL reason:", lastVehicleFailReason)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, " - UNKNOWN", pageFrom)
BREAK
ENDSWITCH
#ENDIF
ENDIF
ENDIF
IF bIsPurchase
// Check correct range for a transaction
// 3 to 33 for SP, multiplayer has more vehicles
IF (IS_INDEX_VALID_FOR_VEH_SITE(siteID, pageFrom-3))
OR (pageFrom > 2 AND pageFrom < 34)
// Attempt a transaction
// Is the vehicle valid for that page?
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(siteID, pageFrom)
CPRINTLN(DEBUG_INTERNET, "GET_VEHICLE_FROM_SITE_AND_PAGE_ID(",GET_WEBSITE_FROM_INDEX(siteID), ", pageFrom:", pageFrom,", SBV_", GET_LABEL_BUYABLE_VEHICLE(sbv), ":", sbv, ")")
IF !g_bInMultiplayer
BOOL iAlternateVeh = IS_SBV_AN_ALTERNATE_VEHICLE(sbv, siteID, g_eLastBuyableVehicleColourSelected)
iPrice = GET_BUYABLE_VEHICLE_PRICE_SP(sbv, siteID, iAlternateVeh)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Price: $", iPrice, " as iAlternateVeh = ", iAlternateVeh)
// Is the vehicle already owned for that page?
IF GET_HAS_VEHICLE_BEEN_BOUGHT_FROM_WEBSITE(sbv, GET_CURRENT_PLAYER_PED_ENUM())
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE: VSFR_ALREADY_OWNED")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_ALREADY_OWNED, sbv, iPrice)
EXIT
ENDIF
// Prevent the player from buying the Marshall if they were given it for free.
IF sbv = BV_NG_MARSHALL
AND g_savedGlobals.sCountryRaceData.bMarshallUnlocked
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE: VSFR_ALREADY_OWNED")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_ALREADY_OWNED, sbv, iPrice)
EXIT
ENDIF
// Can the current player afford the vehicle?
IF iPrice > 0
AND iPrice > GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM())
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE: VSFR_NO_MONEY")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_MONEY, sbv, iPrice)
EXIT
ENDIF
// Does the player have a garage, hangar, etc. to store the vehicle?
IF NOT GET_SP_CAN_PLAYER_STORE_VEHICLE(sbv)
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE: VSFR_NO_STORAGE")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_STORAGE,sbv, iPrice)
EXIT
ENDIF
//Can the player fit the vehicle into their inventory of vehicles
IF NOT GET_HAS_DOES_PLAYER_HAVE_SPACE_IN_GARAGE(sbv, GET_CURRENT_PLAYER_PED_ENUM())
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_FAIL_PAGE: VSFR_NO_INV_SPACE")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_INV_SPACE, sbv, iPrice)
EXIT
ENDIF
// Check specific vehicle website
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
IF sbv = BV_GO_HERMES
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CAR_XMAS2017)")
iPrice = 0
eDoCoupon = COUPON_CAR_XMAS2017
ENDIF
ELIF sbv = BV_AW_CLIQUE
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CAR_XMAS2018)")
iPrice = 0
eDoCoupon = COUPON_CAR_XMAS2018
ENDIF
ELIF sbv = BV_A_BUZZARD
IF DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_HELI_XMAS2018)")
iPrice = 0
eDoCoupon = COUPON_HELI_XMAS2018
ENDIF
ELIF sbv = BV_DLC_INSURGENT
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CAR2_XMAS2018)")
iPrice = 0
eDoCoupon = COUPON_CAR2_XMAS2018
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF sbv = BV_G9E_S95
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CAR_GEN9_MIGRATION)")
iPrice = 0
eDoCoupon = COUPON_CAR_GEN9_MIGRATION
ENDIF
#ENDIF
ENDIF
ENDIF
IF (eDoCoupon = MAX_COUPONS)
AND (iPrice > 0)
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CAR_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_CAR_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_CAR_SITE
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_PLANE_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_PLANE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_PLANE_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_PLANE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_PLANE_SITE
ENDIF
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_MIL_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_MIL_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_MIL_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_MIL_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_MIL_SITE
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BOAT_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BOAT_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_BOAT_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_BOAT_SITE
ENDIF
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE2, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE2)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_CAR_SITE2)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_CAR_SITE2
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BIKE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BIKE_SITE)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(COUPON_CASINO_BIKE_SITE)")
iPrice = CEIL(0.90 * (TO_FLOAT(iPrice)))
eDoCoupon = COUPON_CASINO_BIKE_SITE
ENDIF
BREAK
ENDSWITCH
ENDIF
IF !(eDoCoupon = MAX_COUPONS)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: REDEEM_COUPON(", eDoCoupon, ")")
REDEEM_COUPON(eDoCoupon)
ENDIF
// Do the payment
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_MOTORSPORT_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_MOTORSPORT_SITE, iPrice)
BREAK
CASE WWW_ELITASTRAVEL_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_PLANE_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_PLANE_SITE, iPrice)
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_ARMY_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_ARMY_SITE, iPrice)
BREAK
CASE WWW_DOCKTEASE_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_BOAT_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_BOAT_SITE, iPrice)
BREAK
CASE WWW_PANDMCYCLES_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_BIKE_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_BIKE_SITE, iPrice)
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_SUPERAUTO_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_SUPERAUTO_SITE, iPrice)
BREAK
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_LOWRIDER_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_LOWRIDER_SITE, iPrice)
BREAK
CASE WWW_ARENAWAR_TV
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: DEBIT_BANK_ACCOUNT(BAAC_ARENA_SITE)")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_ARENA_SITE, iPrice)
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: invalid siteID ", GET_WEBSITE_FROM_INDEX(siteID))
BREAK
ENDSWITCH
INT iVehicleSpendSP0, iVehicleSpendSP1, iVehicleSpendSP2
STAT_GET_INT(SP0_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP0)
STAT_GET_INT(SP1_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP1)
STAT_GET_INT(SP2_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP2)
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL STAT_SET_INT(SP0_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP0+iPrice) BREAK
CASE CHAR_FRANKLIN STAT_SET_INT(SP1_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP1+iPrice) BREAK
CASE CHAR_TREVOR STAT_SET_INT(SP2_SP_MONEY_SPENT_ON_VEHICLES, iVehicleSpendSP2+iPrice) BREAK
ENDSWITCH
PURCHASE_COMPLETE_AUDIO_LINE()
DO_SP_VEHICLE_BUY(sbv, GET_CURRENT_PLAYER_PED_ENUM(), g_sConfVssMP.VehicleSetup, siteID)
GO_TO_WEBSITE(GET_VEHICLE_PURCHASE_SUCCESS_PAGE(siteID, sbv))
PLAY_SOUND_FRONTEND(-1, "Click_Special"," WEB_NAVIGATION_SOUNDS_PHONE")
ELSE
confMpSlotIndex = -1
iLastPurchasedVehicleSlot = -1
confMPDisplayIndex = -1
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
BOOL bAltVersion = IS_SBV_AN_ALTERNATE_VEHICLE(sbv, siteID, g_eLastBuyableVehicleColourSelected)
INT iAltVersion = -1
IF bAltVersion
iAltVersion = 1
ENDIF
iPrice = GET_BUYABLE_VEHICLE_PRICE_MP(siteID, sbv, bAltVersion)
IF IS_BUYABLE_VEHICLE_SUITABLE_FOR_GARAGE(sbv)
IF NOT DOES_PLAYER_OWN_VEHICLE_STORAGE_FOR_VEHICLE_MODEL(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv, iAltVersion))
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: VSFR_NO_STORAGE ", GET_LABEL_BUYABLE_VEHICLE(sbv), " ")
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NO_STORAGE,sbv, iPrice)
EXIT
ENDIF
INT iSVMIndex = GET_SVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv, iAltVersion))
IF iSVMIndex != -1
IF SVM_IS_SPECIAL_VEHICLE_SLOT_OCCUPUED(iSVMIndex)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Special Vehicle ",
GET_LABEL_BUYABLE_VEHICLE(sbv), " (index:",
iSVMIndex, ") is already owned")
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_ALREADY_OWNED,sbv, iPrice)
EXIT
ENDIF
ENDIF
INT iWVMSlot = GET_WVM_VEHICLE_SLOT(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv, iAltVersion))
IF iWVMSlot != -1
IF WVM_IS_SPECIAL_VEHICLE_SLOT_OCCUPUED(iWVMSlot)
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Weaponized Vehicle ",
GET_LABEL_BUYABLE_VEHICLE(sbv), " (slot:",
iWVMSlot, ") is already owned")
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_ALREADY_OWNED,sbv, iPrice)
EXIT
ENDIF
ENDIF
INT iFDSDisplaySlot = GET_FDS_VEHICLE_DISPLAY_SLOT(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv, iAltVersion))
IF iFDSDisplaySlot != -1
INT iSaveSlot = -1
MPSV_GET_SAVE_SLOT_FROM_DISPLAY_SLOT(iFDSDisplaySlot, iSaveSlot)
IF iSaveSlot >= 0
MODEL_NAMES vehModel = INT_TO_ENUM(MODEL_NAMES,GET_MP_INT_CHARACTER_STAT(GET_INT_STAT_FOR_VEHICLE_SLOT(MPSV_STAT_ELEMENT_MODEL,iSaveSlot)))
IF vehModel != DUMMY_MODEL_FOR_SCRIPT
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Special Vehicle ",
GET_SAFE_DISPLAY_NAME_FROM_VEHICLE_MODEL(vehModel),
" (iDisplaySlot:", iFDSDisplaySlot, ", iSaveSlot:", iSaveSlot,
") is already owned")
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_ALREADY_OWNED,sbv, iPrice)
EXIT
ELSE
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Special Vehicle ",
"DUMMY_MODEL_FOR_SCRIPT",
" (iDisplaySlot:", iFDSDisplaySlot, ", iSaveSlot:", iSaveSlot,
") is not currently owned")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Special Vehicle ",
GET_LABEL_BUYABLE_VEHICLE(sbv),
" (iDisplaySlot:", iFDSDisplaySlot, ", iSaveSlot:", iSaveSlot,
") has unknown save slot")
ENDIF
ENDIF
ELSE
//is it already owned?
INT iBigAssID = GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(sbv, g_eLastBuyableVehicleColourSelected)
IF (sbv = BV_DLC_BIG_YACHT)
INT ydFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_YACHT_DATA)
// Data Index Bit Width Notes
// Vechicle ID 0 6 18 is used for the Yacht
// Colour 6 6 Valid range 0 - 63, expected range 0 - 15
// Lighting 12 6 Valid range 0 - 63, expected range 0 - 11
// Flag 18 6 Valid range 0 - 63, expected range 0 - 45
// Model 24 2 Valid range 0 - 3, expected range 0 - 2
// Fittings 26 2 Valid range 0 - 3, expected range 0 - 1
g_sYachtDataStruct.iColour = GET_ACTIONSCRIPT_PARAM(ydFlag, 6,6)
g_sYachtDataStruct.iLighting = GET_ACTIONSCRIPT_PARAM(ydFlag, 12,6)
g_sYachtDataStruct.iFlag = GET_ACTIONSCRIPT_PARAM(ydFlag, 18,6)
g_sYachtDataStruct.iMod = GET_ACTIONSCRIPT_PARAM(ydFlag, 24,2)
g_sYachtDataStruct.iFixture = GET_ACTIONSCRIPT_PARAM(ydFlag, 26,2)
IF NOT IS_YACHT_STRUCT_VALID(g_sYachtDataStruct)
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,sbv, iPrice)
EXIT
ENDIF
// If we already own the yacht then we need to use the lower price items
IF IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID)
g_sYachtDataStruct.iMod += NUMBER_OF_PRIVATE_YACHT_VARIATIONS
ENDIF
iPrice = GET_BIG_YACHT_MP_PRICE_MP(IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID),
g_sYachtDataStruct.iColour, g_sYachtDataStruct.iLighting, g_sYachtDataStruct.iFlag, g_sYachtDataStruct.iMod, g_sYachtDataStruct.iFixture, g_sYachtDataStruct.tl63NewName,
iYachtColourPrice, iYachtLightingPrice, iYachtFlagPrice, iYachtModPrice, iYachtFixturePrice, iYachtNamePrice)
ELIF (sbv = BV_DLC_BIG_TRUCK)
INT ydFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_TRUCK_DATA)
// Data Index Bit Width Notes
// Cab 0 4 Valid range: 0 - 15, expected values: 0, 1
// Slot 1 Module 4 4 Valid range: 0 - 15, expected values: 0 - 6 (see Modules table above)
// Slot 2 Module 8 4 Valid range: 0 - 15, expected values: 0 - 6 (see Modules table above)
// Slot 3 Module 12 4 Valid range: 0 - 15, expected values: 0 - 6 (see Modules table above)
// Colour Scheme 16 4 Valid range: 0 - 15, expected values: 0 - 13 (see Colours table above)
g_sTruckDataStruct.iCab = GET_ACTIONSCRIPT_PARAM(ydFlag,0,4)
g_sTruckDataStruct.iSection1 = GET_ACTIONSCRIPT_PARAM(ydFlag,4,4)
g_sTruckDataStruct.iSection2 = GET_ACTIONSCRIPT_PARAM(ydFlag,8,4)
g_sTruckDataStruct.iSection3 = GET_ACTIONSCRIPT_PARAM(ydFlag,12,4)
g_sTruckDataStruct.iColour = GET_ACTIONSCRIPT_PARAM(ydFlag,16,4)
// IF NOT IS_TRUCK_STRUCT_VALID(g_sTruckDataStruct)
// DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,sbv, iPrice)
// EXIT
// ENDIF
iPrice = GET_BIG_TRUCK_MP_PRICE_MP(IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID),
g_sTruckDataStruct.iCab, g_sTruckDataStruct.iSection1, g_sTruckDataStruct.iSection2, g_sTruckDataStruct.iSection3, g_sTruckDataStruct.iColour,
sTruck_price_struct)
ELIF (sbv = BV_DLC_BIG_PLANE)
INT ydFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_PLANE_DATA)
// Data Index Bit Width Notes
// Gun Turret 0 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Vehicle Workshop 1 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Weapon Workshop 2 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Interior Style 3 4 Valid range: 0 - 15, expected values: 0 - 8
g_sPlaneDataStruct.iAvenger = ENUM_TO_INT(GET_ARMORY_AIRCRAFT_MODEL())
g_sPlaneDataStruct.iGunTurret = GET_ACTIONSCRIPT_PARAM(ydFlag,0,1)
g_sPlaneDataStruct.iVehShop = GET_ACTIONSCRIPT_PARAM(ydFlag,1,1)
g_sPlaneDataStruct.iWeaShop = GET_ACTIONSCRIPT_PARAM(ydFlag,2,1)
g_sPlaneDataStruct.iInterior = GET_ACTIONSCRIPT_PARAM(ydFlag,3,4)
// IF NOT IS_PLANE_STRUCT_VALID(g_sPlaneDataStruct)
// DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,sbv, iPrice)
// EXIT
// ENDIF
iPrice = GET_BIG_PLANE_MP_PRICE_MP(IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID),
g_sPlaneDataStruct.iGunTurret, g_sPlaneDataStruct.iVehShop, g_sPlaneDataStruct.iWeaShop, g_sPlaneDataStruct.iInterior, g_sPlaneDataStruct.iAvenger,
sPlane_price_struct)
ELIF (sbv = BV_DLC_HACKER_TRUCK)
INT ydFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_PLANE_DATA)
// Data Index Bit Width Notes
// Tint 0 4 Valid range: 0 - 15, expected values: 0 - 8
// Decal 4 5 Valid range: 0 - 32, expected values: 0 - 24
// Missile Launcher 9 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Drone Station 10 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Weapon Station 11 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
// Vehicle Workshop 12 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
g_sHackerTruckDataStruct.iCab = ENUM_TO_INT(GET_HACKER_TRUCK_MODEL())
g_sHackerTruckDataStruct.iTint = GET_ACTIONSCRIPT_PARAM(ydFlag,0,4)
g_sHackerTruckDataStruct.iDecal = GET_ACTIONSCRIPT_PARAM(ydFlag,4,5)
g_sHackerTruckDataStruct.iMissileLauncher = GET_ACTIONSCRIPT_PARAM(ydFlag,9,1)
g_sHackerTruckDataStruct.iDroneStation = GET_ACTIONSCRIPT_PARAM(ydFlag,10,1)
g_sHackerTruckDataStruct.iWeaShop = GET_ACTIONSCRIPT_PARAM(ydFlag,11,1)
g_sHackerTruckDataStruct.iVehShop = GET_ACTIONSCRIPT_PARAM(ydFlag,12,1)
// IF NOT IS_HACKER_TRUCK_STRUCT_VALID(g_sHackerTruckDataStruct)
// DO_VEHICLE_FAIL_PAGE(siteID,VSFR_NOT_SAFE,sbv, iPrice)
// EXIT
// ENDIF
iPrice = GET_HACKER_TRUCK_MP_PRICE_MP(IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID),
g_sHackerTruckDataStruct, sHacker_truck_price_struct)
#IF FEATURE_HEIST_ISLAND
ELIF (sbv = BV_IH_KOSATKA)
INT ydFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_PLANE_DATA)
//Colour 0 5 Valid range: 0 - 31, expected values: 0 - 15
//Flag 5 6 Valid range: 0 - 63, expected values: 0 - 49
//Sonar 11 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
//Missiles 12 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
//Weapon Workshop 13 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
//Helicopter 14 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
//Mini Submarine 15 1 Valid range: 0 - 1, expected values: 0 (not purchased), 1 (purchased)
g_sKosatkaDataStruct.iOwned = ENUM_TO_INT(GET_SUBMARINE_MODEL())
g_sKosatkaDataStruct.iColour = GET_ACTIONSCRIPT_PARAM(ydFlag,0,5)
g_sKosatkaDataStruct.iFlag = GET_ACTIONSCRIPT_PARAM(ydFlag,5,6)
g_sKosatkaDataStruct.iSonar = GET_ACTIONSCRIPT_PARAM(ydFlag,11,1)
g_sKosatkaDataStruct.iMissiles = GET_ACTIONSCRIPT_PARAM(ydFlag,12,1)
g_sKosatkaDataStruct.iWeaShop = GET_ACTIONSCRIPT_PARAM(ydFlag,13,1)
g_sKosatkaDataStruct.iSeaSparrow2 = GET_ACTIONSCRIPT_PARAM(ydFlag,14,1)
g_sKosatkaDataStruct.iAvisa = GET_ACTIONSCRIPT_PARAM(ydFlag,15,1)
iPrice = GET_KOSATKA_PRICE_MP(IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID),
g_sKosatkaDataStruct, sKosatka_price_struct)
#ENDIF
ELSE
IF IS_BIG_ASS_VEHICLE_BS_SET(iBigAssID)
CWARNINGLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: failed due to player already owning ", GET_LABEL_BUYABLE_VEHICLE(sbv), " iBigAssID ", iBigAssID)
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_ALREADY_OWNED,sbv, iPrice)
EXIT
ENDIF
ENDIF
ENDIF
IF g_bInMultiplayer
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
CASE WWW_ARENAWAR_TV
iPrice = CEIL(g_sMPTunables.fCarsWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF GET_VEHICLE_STORAGE_TYPE(sbv) = VST_HANGAR
iPrice = CEIL(g_sMPTunables.fPlanesWebsiteMultiplier * (TO_FLOAT(iPrice)))
ELSE
iPrice = CEIL(g_sMPTunables.fHelisWebsiteMultiplier * (TO_FLOAT(iPrice)))
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
iPrice = CEIL(g_sMPTunables.fBoatsWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_PANDMCYCLES_COM
iPrice = CEIL(g_sMPTunables.fBikesWebsiteMultiplier * (TO_FLOAT(iPrice)))
BREAK
ENDSWITCH
IF g_smpTunables.bTurn_on_promotional_eyefind_homepage
CASSERTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Promotional eyefind homepage discount hooked up, check site \"", GET_WEBSITE_FROM_INDEX(siteID), "\"")
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT: ", g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fLEGENDARY_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_ELITASTRAVEL_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT: ", g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fELITAS_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT: ", g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT)
iPrice = CEIL((100-g_sMPTunables.fSSASA_DISPLAYED_DISCOUNT)/100.0 * (TO_FLOAT(iPrice)))
BREAK
ENDSWITCH
ENDIF
ENDIF
COUPON_TYPE eDoCouponPrice = MAX_COUPONS
INT iCouponPrice = iPrice
// Check specific vehicle website
IF (eDoCouponPrice = MAX_COUPONS)
IF sbv = BV_GO_HERMES
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017)
iCouponPrice = 0
eDoCouponPrice = COUPON_CAR_XMAS2017
ENDIF
ELIF sbv = BV_AW_CLIQUE
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018)
iCouponPrice = 0
eDoCouponPrice = COUPON_CAR_XMAS2018
iAltVersion = 1
CPRINTLN(DEBUG_INTERNET, "UPDATE_VEHICLE_SITES_PAGE_CHANGE: Set BV_AW_CLIQUE iAltVersion to ", iAltVersion)
ENDIF
ELIF sbv = BV_A_BUZZARD
IF DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018)
iCouponPrice = 0
eDoCouponPrice = COUPON_HELI_XMAS2018
ENDIF
ELIF sbv = BV_DLC_INSURGENT
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018)
iCouponPrice = 0
eDoCouponPrice = COUPON_CAR2_XMAS2018
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF sbv = BV_G9E_S95
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION)
iCouponPrice = 0
eDoCouponPrice = COUPON_CAR_GEN9_MIGRATION
ENDIF
#ENDIF
ENDIF
ENDIF
IF (eDoCouponPrice = MAX_COUPONS)
SWITCH siteID
CASE WWW_LEGENDARYMOTORSPORT_NET
IF DOES_SAVE_HAVE_COUPON(COUPON_CAR_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CAR_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_CAR_SITE
ENDIF
BREAK
CASE WWW_ELITASTRAVEL_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_PLANE_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_PLANE_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_PLANE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_PLANE_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_PLANE_SITE
ENDIF
BREAK
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
IF DOES_SAVE_HAVE_COUPON(COUPON_MIL_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_MIL_SITE
ELIF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_MIL_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_MIL_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_MIL_SITE
ENDIF
BREAK
CASE WWW_DOCKTEASE_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BOAT_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BOAT_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_BOAT_SITE
ENDIF
BREAK
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_CAR_SITE2, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_CAR_SITE2)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_CAR_SITE2
ENDIF
BREAK
CASE WWW_PANDMCYCLES_COM
IF CAN_USE_COUPON_ON_VEHICLE(COUPON_CASINO_BIKE_SITE, sbv)
AND DOES_SAVE_HAVE_COUPON(COUPON_CASINO_BIKE_SITE)
iCouponPrice = CEIL(0.90 * (TO_FLOAT(iCouponPrice)))
eDoCouponPrice = COUPON_CASINO_BIKE_SITE
ENDIF
BREAK
ENDSWITCH
ENDIF
CPRINTLN(DEBUG_INTERNET, "iPrice[$", iPrice, ", $", iCouponPrice, "], NETWORK_GET_VC_BANK_BALANCE(", NETWORK_GET_VC_BANK_BALANCE(), "), NETWORK_GET_VC_WALLET_BALANCE(", NETWORK_GET_VC_WALLET_BALANCE(), ")")
IF iCouponPrice > 0
AND NOT NETWORK_CAN_SPEND_MONEY(iCouponPrice, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "NETWORK_CAN_SPEND_MONEY() - vehicle site fail reason \"cannot spend money\" ", GET_LABEL_BUYABLE_VEHICLE(sbv), " $", iPrice)
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NO_MONEY, sbv, iCouponPrice)
EXIT
ENDIF
//#1697899
IF IS_SAVING_HAVING_TROUBLE()
CPRINTLN(DEBUG_INTERNET, "IS_SAVING_HAVING_TROUBLE() - vehicle site fail reason \"not safe\"")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NOT_SAFE, sbv, iPrice)
EXIT
ENDIF
IF NOT IS_VEHICLE_AVAILABLE_PAST_CURRENT_TIME(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv, iAltVersion))
CPRINTLN(DEBUG_INTERNET, "IS_SAVING_HAVING_TROUBLE() - vehicle site fail reason \"not safe\" past current time")
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NOT_SAFE, sbv, iPrice)
EXIT
ENDIF
confSbv = sbv
CONFIGURE_STRUCT_FOR_BUYABLE_VEHICLE(confSbv, g_sConfVssMP, TRUE, DEFAULT, iAltVersion, siteID)
IF NOT IS_BUYABLE_VEHICLE_SUITABLE_FOR_GARAGE(sbv)
// It is a bigass vehicle, try to buy it
VEHICLE_SITE_FAIL_REASON reason = VSFR_UNSET
IF NOT DO_BIGASS_VEHICLE_BUY(siteID,sbv,iPrice, reason)
DO_VEHICLE_FAIL_PAGE(siteID,reason,sbv,iPrice)
ELSE
// Send the bigass confirmation vehicle conftext
IF lastVehicleFailReason != VSFR_ALREADY_OWNED
AND lastVehicleFailReason != VSFR_BIGASS_NOT_UNLOCKED
SEND_MP_VEHICLE_CONFIRMATION_TEXT(sbv,BCV_NO_COLOUR,siteID,-1,-1)
ENDIF
//set the damn bit
SET_BIG_ASS_VEHICLE_BS(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(sbv, g_eLastBuyableVehicleColourSelected))
GB_SET_SHOULD_REFRESH_OWNED_ABILITY_VEHICLES()
IF lastVehicleFailReason != VSFR_ALREADY_OWNED
AND lastVehicleFailReason != VSFR_BIGASS_NOT_UNLOCKED
MP_BIG_ASS_VEHICLES_STORE_DATA_IN_STATS()
REQUEST_SAVE(SSR_REASON_PURCHASE_VEHICLE, STAT_SAVETYPE_IMMEDIATE_FLUSH)
ENDIF
// Auto close browser if we want to
IF SHOULD_BROWSER_CLOSE_AFTER_SUCCESSFUL_BIGASS_VEHICLE_BUY(siteID, sbv)
AND NOT bPreviousPegasus // And not renovating vehicle
CPRINTLN(DEBUG_INTERNET, "[UPDATE_VEHICLE_SITES_PAGE_CHANGE] Auto closing browser after successful purchase.")
CLOSE_BROWSER_AFTER_SUCCESSFUL_PURCHASE()
ENDIF
ENDIF
EXIT
ENDIF
//if there are no saved models go ahead and do the buy
INT iSVMIndex = GET_SVM_VEHICLE_INDEX(g_sConfVssMP.VehicleSetup.eModel)
INT iWVMSlot = GET_WVM_VEHICLE_SLOT(g_sConfVssMP.VehicleSetup.eModel)
INT iWAMIndex = WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(g_sConfVssMP.vehicleSetup.eModel)
INT iFDSDisplaySlot = GET_FDS_VEHICLE_DISPLAY_SLOT(g_sConfVssMP.VehicleSetup.eModel)
IF iSVMIndex != -1
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_IE_WAREHOUSE))
mpDisplaySlotReturned = iSVMIndex+GET_PROPERTY_SLOT_DISPLAY_START_INDEX(PROPERTY_OWNED_SLOT_IE_WAREHOUSE)
confMPDisplayIndex = mpDisplaySlotReturned
ELIF iWVMSlot != -1
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT)
mpDisplaySlotReturned = iWVMSlot+DISPLAY_SLOT_AA_TRAILER
confMPDisplayIndex = mpDisplaySlotReturned
ELIF iWAMIndex > 0
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,DEFAULT)
//MP_SAVE_VEHICLE_GET_SUITABLE_HANGAR_SLOT(mpDisplaySlotReturned, iSlotToUse, g_sConfVssMP.VehicleSetup.eModel, TRUE)
IF iSlotToUse != -1
//AND mpDisplaySlotReturned = -1
mpDisplaySlotReturned = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_HANGAR))
ENDIF
confMPDisplayIndex = mpDisplaySlotReturned
ELIF iFDSDisplaySlot != -1
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_DEFUNCBASE))
mpDisplaySlotReturned = GET_FDS_VEHICLE_DISPLAY_SLOT(g_sConfVssMP.VehicleSetup.eModel)
confMPDisplayIndex = mpDisplaySlotReturned
ELSE
INT iOnlySuitableProperty = -1
CHECK_ONLY_ONE_SUITABLE_PROPERTY(g_sConfVssMP.VehicleSetup.eModel,iOnlySuitableProperty)
IF iOnlySuitableProperty != -1
iSlotToUse = MP_SAVE_VEHICLE_GET_EMPTY_SAVE_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,iOnlySuitableProperty)
mpDisplaySlotReturned = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,g_sConfVssMP.VehicleSetup.eModel,iOnlySuitableProperty)
ELSE
iSlotToUse = -1
ENDIF
ENDIF
IF iSlotToUse = -1
OR mpDisplaySlotReturned = -1
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
mpDisplaySlotReturned = -1
WHILE !HANDLE_REPLACE_MP_SV_MENU(scms,mpresult,mpDisplaySlotReturned, g_sConfVssMP.VehicleSetup.eModel)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
AND !DO_CHECK_FOR_RAGDOLL_OR_DEAD()
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
g_sMenuData.bKeepPhoneForNextDrawMenuCall = FALSE
confMpSlotIndex = mpresult
confMPDisplayIndex = mpDisplaySlotReturned
CPRINTLN(DEBUG_INTERNET, "Menu result was ",confMpSlotIndex, ", ", confMPDisplayIndex)
//reload the damn buttons
PREP_BROWSER_BUTTONS(FALSE)
IF mpresult = -1
OR mpDisplaySlotReturned = -1
//canceled the buy process
DO_VEHICLE_FAIL_PAGE(siteID,VSFR_CANCELED,sbv, iPrice)
EXIT
ENDIF
ELSE
confMpSlotIndex = iSlotToUse
ENDIF
confCheck = TRUE
IF DO_MP_VEHICLE_BUY(siteID,iAltVersion,iPrice)
SEND_MP_VEHICLE_CONFIRMATION_TEXT(sbv, g_eLastBuyableVehicleColourSelected, siteID, mpDisplaySlotReturned, iLastPurchasedVehicleSlot)
//REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
ELSE
DO_VEHICLE_FAIL_PAGE(siteID, VSFR_NOT_SAFE, sbv, iPrice)
ENDIF
ENDIF
ELSE
CASSERTLN(DEBUG_INTERNET, "GET_VEHICLE_FROM_SITE_AND_PAGE_ID(",GET_WEBSITE_FROM_INDEX(siteID), ", pageFrom:", pageFrom,", SBV_", GET_LABEL_BUYABLE_VEHICLE(sbv), ":", sbv, ") - INVALID???")
ENDIF
ENDIF
ENDPROC
PROC HANDLE_BLEETER_SELECT(SCALEFORM_INDEX pagemov)
INT iTemp
IF g_iLastSelectedWebIndex < 1
EXIT
ENDIF
INT iPrevBleetPageNo
IF g_iLastSelectedWebIndex = 1
iCurrentBleetPageNumber = 1
ELIF g_iLastSelectedWebIndex = 2
iCurrentBleetPageNumber = BLEETER_GET_LAST_PAGE_NUMBER()
ELIF g_iLastSelectedWebIndex = 3
-- iCurrentBleetPageNumber
ELIF g_iLastSelectedWebIndex = 4
++ iCurrentBleetPageNumber
ELSE
IF g_iLastSelectedWebIndex > 4 and g_iLastSelectedWebIndex < 15
IF iCurrentBleetPageNumber > 10
iTemp = (((iCurrentBleetPageNumber - 1) / 10) * 10)
iCurrentBleetPageNumber = (g_iLastSelectedWebIndex - 4) + iTemp
ELSE
iCurrentBleetPageNumber = (g_iLastSelectedWebIndex - 4)
ENDIF
ENDIF
ENDIF
IF iPrevBleetPageNo != iCurrentBleetPageNumber
BLEETER_UPDATE_BLEETS( pagemov )
BLEETER_ADD_PAGE_TO_HISTORY(iCurrentBleetPageNumber)
ENDIF
ENDPROC
/// PURPOSE:
/// Check player's donation on the Epsilon website unlocking the RC flowflags
PROC CHECK_EPSILON_DONATION_UNLOCKS(INT iDonation)
// Increase saved global
IF (g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment < 1000000)
g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment += iDonation
CPRINTLN(DEBUG_RANDOM_CHAR, "Current donation to Epsilon Program is = $", g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment)
ENDIF
// $10000
IF IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_4)
IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_10000)
IF g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment >= 10000
CPRINTLN(DEBUG_RANDOM_CHAR, "FLOWFLAG_EPSILON_DONATED_10000")
//Set epsilon step stat
INT iCurrent
STAT_GET_INT(NUM_EPSILON_STEP,iCurrent)
IF iCurrent < 13
STAT_SET_INT(NUM_EPSILON_STEP,13)
SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH20),13)
CPRINTLN(debug_dan,"Epsilon progress:",13)
ENDIF
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_10000, TRUE)
CANCEL_COMMUNICATION(EMAIL_EPSILON4_DONATE)
MAKE_AUTOSAVE_REQUEST()
ENDIF
ENDIF
// $5000
ELIF IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_2)
IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_5000)
IF g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment >= 5000
CPRINTLN(DEBUG_RANDOM_CHAR, "FLOWFLAG_EPSILON_DONATED_5000")
//Set epsilon step stat
INT iCurrent
STAT_GET_INT(NUM_EPSILON_STEP,iCurrent)
IF iCurrent < 5
STAT_SET_INT(NUM_EPSILON_STEP,5)
SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH20),5)
CPRINTLN(debug_dan,"Epsilon progress:",5)
ENDIF
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_5000, TRUE)
CANCEL_COMMUNICATION(EMAIL_EPSILON2_DONATE)
MAKE_AUTOSAVE_REQUEST()
ENDIF
ENDIF
// $500
ELIF IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_1)
IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_500)
IF g_savedGlobals.sRandomChars.g_iCurrentEpsilonPayment >= 500
CPRINTLN(DEBUG_RANDOM_CHAR, "FLOWFLAG_EPSILON_DONATED_500")
//Set epsilon step stat
INT iCurrent
STAT_GET_INT(NUM_EPSILON_STEP,iCurrent)
IF iCurrent < 3
STAT_SET_INT(NUM_EPSILON_STEP,3)
SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH20),3)
CPRINTLN(debug_dan,"Epsilon progress:",3)
ENDIF
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_DONATED_500, TRUE)
CANCEL_COMMUNICATION(EMAIL_EPSILON1_DONATE)
MAKE_AUTOSAVE_REQUEST()
ENDIF
ENDIF
ENDIF
ENDPROC
PROC HANDLE_EPSILON_SELECT(INT iSelection)
CPRINTLN(DEBUG_INTERNET, "HANDLE_EPSILON_SELECT(iSelection:", iSelection, ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ")")
//5 20 : Selection 2 // $500
//5 20 : Selection 3 // $5000
//5 21 : Selection 1 // $25k - Robes
SWITCH g_iWebPageIndexFeedback
CASE 20
SWITCH iSelection
CASE 2
CPRINTLN(DEBUG_RANDOM_CHAR, "Attempting to donate $500 to Epsilon Program")
IF GET_TOTAL_CASH(CHAR_MICHAEL) < 500
CPRINTLN(DEBUG_RANDOM_CHAR, "Not enough money to donate...")
SF_EPSILON_FAIL(EPSILON_NO_MONEY)
EXIT
ENDIF
// Debit account by $500
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_MICHAEL, BAA_DEBIT, BAAC_EPSILON_SITE_DONATION, 500)
// Update donation unlocks
CHECK_EPSILON_DONATION_UNLOCKS(500)
BREAK
CASE 3
CPRINTLN(DEBUG_RANDOM_CHAR, "Attempting to donate $5000 to Epsilon Program")
IF GET_TOTAL_CASH(CHAR_MICHAEL) < 5000
CPRINTLN(DEBUG_RANDOM_CHAR, "Not enough money to donate...")
SF_EPSILON_FAIL(EPSILON_NO_MONEY)
EXIT
ENDIF
// Debit account by $5000
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_MICHAEL, BAA_DEBIT, BAAC_EPSILON_SITE_DONATION, 5000)
// Update donation unlocks
CHECK_EPSILON_DONATION_UNLOCKS(5000)
BREAK
ENDSWITCH
BREAK
CASE 21
IF iSelection = 1
CPRINTLN(DEBUG_RANDOM_CHAR, "Robes buy triggered, 25k")
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("epsrobes")) < 1
CPRINTLN(DEBUG_RANDOM_CHAR, "Robes buy failed since epsrobes wasn't running")
SF_EPSILON_FAIL(EPSILON_OUT_OF_STOCK)
EXIT
ENDIF
IF GET_TOTAL_CASH(CHAR_MICHAEL) < 25000
SF_EPSILON_FAIL(EPSILON_NO_MONEY)
EXIT
ENDIF
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_MICHAEL,BAA_DEBIT,BAAC_EPSILON_ROBES_DONATION, 25000)
IF !GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_ROBES_BOUGHT)
Set_Mission_Flow_Flag_State(FLOWFLAG_EPSILON_ROBES_BOUGHT, TRUE)
//Set epsilon step stat
INT iCurrent
STAT_GET_INT(NUM_EPSILON_STEP,iCurrent)
IF iCurrent < 15
STAT_SET_INT(NUM_EPSILON_STEP,15)
SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH20),15)
CPRINTLN(debug_dan,"Epsilon progress:",15)
ENDIF
PURCHASE_COMPLETE_AUDIO_LINE()
MAKE_AUTOSAVE_REQUEST()
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MARK_ROBE_PAGE_VISITED()
IF g_iWebPageIndexFeedback = 1
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("epsrobes")) < 1
CPRINTLN(DEBUG_AMBIENT, "Don't mark Eps robe page visited because Eps Robes isn't running")
EXIT
ENDIF
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
CPRINTLN(DEBUG_AMBIENT, "Don't mark Eps robe page visited because player isn't Michael")
EXIT
ENDIF
IF g_bMikeVisitedCultRobePage != TRUE
CPRINTLN(DEBUG_AMBIENT, "Mike visited Robe page marked true...")
g_bMikeVisitedCultRobePage = TRUE
ENDIF
ENDIF
ENDPROC
FUNC BOOL BOUGHT_CON_SITE()
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Checked")
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIKE_CON_BOUGHT)
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
BREAK
CASE CHAR_TREVOR
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TREV_CON_BOUGHT)
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
BREAK
CASE CHAR_FRANKLIN
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_FRANK_CON_BOUGHT)
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
BREAK
ENDSWITCH
RETURN TRUE // Assume MP char has bought it already
ENDFUNC
FUNC BOOL BUY_CON_SITE()
IF BOUGHT_CON_SITE()
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Already bought")
RETURN TRUE
ENDIF
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
IF GET_TOTAL_CASH(CHAR_MICHAEL) < 10000
RETURN FALSE
ELSE
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIKE_CON_BOUGHT, TRUE)
PURCHASE_COMPLETE_AUDIO_LINE()
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_MICHAEL,BAA_DEBIT, BAAC_CONSITE, 10000, TRUE)
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Transaction BANK_ACCOUNT_MICHAEL")
ENDIF
BREAK
CASE CHAR_TREVOR
IF GET_TOTAL_CASH(CHAR_TREVOR) < 10000
RETURN FALSE
ELSE
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TREV_CON_BOUGHT, TRUE)
PURCHASE_COMPLETE_AUDIO_LINE()
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_TREVOR, BAA_DEBIT, BAAC_CONSITE, 10000, TRUE)
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Transaction BANK_ACCOUNT_TREVOR")
ENDIF
BREAK
CASE CHAR_FRANKLIN
IF GET_TOTAL_CASH(CHAR_FRANKLIN) < 10000
RETURN FALSE
ELSE
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_FRANK_CON_BOUGHT, TRUE)
PURCHASE_COMPLETE_AUDIO_LINE()
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_FRANKLIN, BAA_DEBIT, BAAC_CONSITE,10000,TRUE)
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Transaction BANK_ACCOUNT_FRANKLIN")
ENDIF
BREAK
ENDSWITCH
MAKE_AUTOSAVE_REQUEST()
CPRINTLN(DEBUG_INTERNET, "BOUGHT_CON_SITE: Transaction complete")
RETURN TRUE
ENDFUNC
PROC SET_INTERIOR_STAT_FOR_CUSTOM_APT(INT iResultSlot, INT &iInteriorVariation)
IF iInteriorVariation = -1
//Deal with case in which the default option was selected
iInteriorVariation = 1
CDEBUG1LN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: iInteriorVariation: ", iInteriorVariation)
ENDIF
IF iResultSlot = 0
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_0, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = 1
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_1, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = 2
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_2, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = 3
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_3, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = 4
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_4, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_0
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_CLUBHOUSE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLUBHOUSE_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_6
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_5, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_IE_WAREHOUSE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_IE_WAREHOUSE_VAR, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
#IF FEATURE_SUMMER_2020
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_7
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_6, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_8
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_7, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
#ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_9 //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_8, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_10
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_APPARTMENT_VAR_9, iInteriorVariation)
CPRINTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Setting stat for specified \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iInteriorVariation:", iInteriorVariation)
ELSE
CASSERTLN(DEBUG_INTERNET, "SET_INTERIOR_STAT_FOR_CUSTOM_APT: Not setting stat, invalid slot specified iResultSlot:", iResultSlot)
ENDIF
ENDPROC
/// Purpose: Grabs the relevant string for office purchase results
FUNC STRING GET_OFFICE_PURCHASE_RESULT_STRING(INT iPropertyType, BOOL bPurchaseSucceeded, BOOL bRenovation)
BOOL bOffice = (iPropertyType = 1)
BOOL bClubhouse = (iPropertyType = 2)
BOOL bOfficeGarage = (iPropertyType = 3)
BOOL bFactoryBunker = (iPropertyType = 4)
BOOL bHangar = (iPropertyType = 5)
BOOL bDefunctBase = (iPropertyType = 6)
BOOL bNightclub = (iPropertyType = 7)
BOOL bArenaGarage = (iPropertyType = 8)
BOOL bCasinoApt = (iPropertyType = 9)
BOOL bArcade = (iPropertyType = 10)
BOOL bAutoShop = (iPropertyType = 11)
#IF FEATURE_FIXER
BOOL bFixerHQ = (iPropertyType = 12)
#ENDIF
IF bOffice
AND NOT bOfficeGarage
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
IF iModshop != 0
INT iPrevModshop = GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP)
CDEBUG1LN(DEBUG_INTERNET, "GET_OFFICE_PURCHASE_RESULT_STRING iModshop: ", iModshop, ", iPrevModshop:", iPrevModshop)
IF iModshop != iPrevModshop
//
bOffice = FALSE
bOfficeGarage = TRUE
ENDIF
ENDIF
ENDIF
TEXT_LABEL_23 tl23Str = ""
IF bRenovation IF bOffice RETURN "MP_OFF_S_REN" ELIF bClubhouse RETURN "MP_CLU_S_REN" ELIF bOfficeGarage RETURN "MP_GAR_S_REN" ELIF bFactoryBunker RETURN "MP_BUN_S_REN" ELIF bHangar RETURN "MP_HAN_S_REN" ELIF bDefunctBase RETURN "MP_DBA_S_REN" ELIF bNightclub RETURN "MP_NCL_S_REN" ELIF bArenaGarage RETURN "MP_MBA_S_REN" ELIF bCasinoApt RETURN "MP_CASWEB_S_REN" ELIF bArcade RETURN "MP_ARC_S_REN" ELIF bAutoShop RETURN "MP_AUT_S_REN" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_S_REN" #ENDIF ENDIF
ELIF bPurchaseSucceeded IF bOffice RETURN "MP_OFF_S_BUY" ELIF bClubhouse RETURN "MP_CLU_S_BUY" ELIF bOfficeGarage RETURN "MP_GAR_S_BUY" ELIF bFactoryBunker RETURN "MP_BUN_S_BUY" ELIF bHangar RETURN "MP_HAN_S_BUY" ELIF bDefunctBase RETURN "MP_DBA_S_BUY" ELIF bNightclub RETURN "MP_NCL_S_BUY" ELIF bArenaGarage RETURN "MP_MBA_S_BUY" ELIF bCasinoApt RETURN "MP_CASWEB_S_BUY" ELIF bArcade RETURN "MP_ARC_S_BUY" ELIF bAutoShop RETURN "MP_AUT_S_BUY" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_S_BUY" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_NOT_UNLOCKED IF bOffice RETURN "MP_OFF_F_BUY_1" ELIF bClubhouse RETURN "MP_CLU_F_BUY_1" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_1" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_1" ELIF bHangar RETURN "MP_HAN_F_BUY_1" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_1" ELIF bNightclub RETURN "MP_NCL_F_BUY_1" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_1" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_1" ELIF bArcade RETURN "MP_ARC_F_BUY_1" ELIF bAutoShop RETURN "MP_AUT_F_BUY_1" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_1" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH IF bOffice RETURN "MP_OFF_F_BUY_2" ELIF bClubhouse RETURN "MP_CLU_F_BUY_2" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_2" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_2" ELIF bHangar RETURN "MP_HAN_F_BUY_2" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_2" ELIF bNightclub RETURN "MP_NCL_F_BUY_2" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_2" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_2" ELIF bArcade RETURN "MP_ARC_F_BUY_2" ELIF bAutoShop RETURN "MP_AUT_F_BUY_2" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_2" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK IF bOffice RETURN "MP_OFF_F_BUY_3" ELIF bClubhouse RETURN "MP_CLU_F_BUY_3" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_3" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_3" ELIF bHangar RETURN "MP_HAN_F_BUY_3" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_3" ELIF bNightclub RETURN "MP_NCL_F_BUY_3" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_3" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_3" ELIF bArcade RETURN "MP_ARC_F_BUY_3" ELIF bAutoShop RETURN "MP_AUT_F_BUY_3" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_3" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING IF bOffice RETURN "MP_OFF_F_BUY_4" ELIF bClubhouse RETURN "MP_CLU_F_BUY_4" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_4" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_4" ELIF bHangar RETURN "MP_HAN_F_BUY_4" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_4" ELIF bNightclub RETURN "MP_NCL_F_BUY_4" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_4" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_4" ELIF bArcade RETURN "MP_ARC_F_BUY_4" ELIF bAutoShop RETURN "MP_AUT_F_BUY_4" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_4" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_CANCELED IF bOffice RETURN "MP_OFF_F_BUY_5" ELIF bClubhouse RETURN "MP_CLU_F_BUY_5" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_5" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_5" ELIF bHangar RETURN "MP_HAN_F_BUY_5" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_5" ELIF bNightclub RETURN "MP_NCL_F_BUY_5" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_5" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_5" ELIF bArcade RETURN "MP_ARC_F_BUY_5" ELIF bAutoShop RETURN "MP_AUT_F_BUY_5" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_5" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_NOT_SAFE IF bOffice RETURN "MP_OFF_F_BUY_6" ELIF bClubhouse RETURN "MP_CLU_F_BUY_6" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_6" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_6" ELIF bHangar RETURN "MP_HAN_F_BUY_6" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_6" ELIF bNightclub RETURN "MP_NCL_F_BUY_6" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_6" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_6" ELIF bArcade RETURN "MP_ARC_F_BUY_6" ELIF bAutoShop RETURN "MP_AUT_F_BUY_6" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_6" #ENDIF ENDIF
ELIF g_bDontCrossRunning = TRUE IF bOffice RETURN "MP_OFF_F_BUY_7" ELIF bClubhouse RETURN "MP_CLU_F_BUY_7" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_7" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_7" ELIF bHangar RETURN "MP_HAN_F_BUY_7" ELIF bDefunctBase RETURN "MP_DBA_F_BUY_7" ELIF bNightclub RETURN "MP_NCL_F_BUY_7" ELIF bArenaGarage RETURN "MP_MBA_F_BUY_7" ELIF bCasinoApt RETURN "MP_CASWEB_F_BUY_7" ELIF bArcade RETURN "MP_ARC_F_BUY_7" ELIF bAutoShop RETURN "MP_AUT_F_BUY_7" #IF FEATURE_FIXER ELIF bFixerHQ RETURN "MP_FIX_F_BUY_7" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_ON_MISSION IF bOffice RETURN "MP_OFF_F_BUY_8" ELIF bClubhouse RETURN "MP_CLU_F_BUY_8" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_8" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_8" ELIF bHangar tl23Str = "MP_HAN_F_BUY_8" ELIF bDefunctBase tl23Str = "MP_DBA_F_BUY_8" ELIF bNightclub tl23Str = "MP_NCL_F_BUY_8" ELIF bArenaGarage tl23Str = "MP_MBA_F_BUY_8" ELIF bCasinoApt tl23Str = "MP_CASWEB_F_BUY_8" ELIF bArcade tl23Str = "MP_ARC_F_BUY_8" ELIF bAutoShop tl23Str = "MP_AUT_F_BUY_8" #IF FEATURE_FIXER ELIF bFixerHQ tl23Str = "MP_FIX_F_BUY_8" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_PAID_RESUPPLY IF bOffice RETURN "MP_OFF_F_BUY_9" ELIF bClubhouse RETURN "MP_CLU_F_BUY_9" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_9" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_9" ELIF bHangar tl23Str = "MP_HAN_F_BUY_9" ELIF bDefunctBase tl23Str = "MP_DBA_F_BUY_9" ELIF bNightclub tl23Str = "MP_NCL_F_BUY_9" ELIF bArenaGarage tl23Str = "MP_MBA_F_BUY_9" ELIF bCasinoApt tl23Str = "MP_CASWEB_F_BUY_9" ELIF bArcade tl23Str = "MP_ARC_F_BUY_9" ELIF bAutoShop tl23Str = "MP_AUT_F_BUY_9" #IF FEATURE_FIXER ELIF bFixerHQ tl23Str = "MP_FIX_F_BUY_9" #ENDIF ENDIF
ELIF mpPropertySiteFailReason = MPSFR_HAS_STOCK IF bOffice RETURN "MP_OFF_F_BUY_10" ELIF bClubhouse RETURN "MP_CLU_F_BUY_10" ELIF bOfficeGarage RETURN "MP_GAR_F_BUY_10" ELIF bFactoryBunker RETURN "MP_BUN_F_BUY_10" ELIF bHangar tl23Str = "MP_HAN_F_BUY_10" ELIF bDefunctBase tl23Str = "MP_DBA_F_BUY_10" ELIF bNightclub tl23Str = "MP_NCL_F_BUY_10" ELIF bArenaGarage tl23Str = "MP_MBA_F_BUY_10" ELIF bCasinoApt tl23Str = "MP_CASWEB_F_BUY_10" ELIF bArcade tl23Str = "MP_ARC_F_BUY_10" ELIF bAutoShop tl23Str = "MP_AUT_F_BUY_10" #IF FEATURE_FIXER ELIF bFixerHQ tl23Str = "MP_FIX_F_BUY_10" #ENDIF ENDIF
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(tl23Str)
IF ARE_STRINGS_EQUAL(tl23Str, "MP_HAN_F_BUY_8")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_HAN_F_BUY_9")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_HAN_F_BUY_10")
HANGAR_ID eBuyingHangar = INT_TO_ENUM(HANGAR_ID, GET_LAST_CLICKED_HANGAR())
HANGAR_ID eOwnedHangar = GET_PLAYERS_OWNED_HANGAR(PLAYER_ID())
IF (eBuyingHangar = eOwnedHangar)
tl23Str += "b" //renovate
ELIF (eOwnedHangar = HANGAR_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
ELIF ARE_STRINGS_EQUAL(tl23Str, "MP_DBA_F_BUY_8")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_DBA_F_BUY_9")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_DBA_F_BUY_10")
DEFUNCT_BASE_ID eBuyingDefunctBase = INT_TO_ENUM(DEFUNCT_BASE_ID, GET_LAST_CLICKED_DEFUNCT_BASE())
DEFUNCT_BASE_ID eOwnedDefunctBase = GET_PLAYERS_OWNED_DEFUNCT_BASE(PLAYER_ID())
IF (eBuyingDefunctBase = eOwnedDefunctBase)
tl23Str += "b" //renovate
ELIF (eOwnedDefunctBase = DEFUNCT_BASE_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
ELIF ARE_STRINGS_EQUAL(tl23Str, "MP_NCL_F_BUY_8")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_NCL_F_BUY_9")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_NCL_F_BUY_10")
NIGHTCLUB_ID eBuyingNightclub = INT_TO_ENUM(NIGHTCLUB_ID, GET_LAST_CLICKED_NIGHTCLUB())
NIGHTCLUB_ID eOwnedNightclub = GET_PLAYERS_OWNED_NIGHTCLUB(PLAYER_ID())
IF (eBuyingNightclub = eOwnedNightclub)
tl23Str += "b" //renovate
ELIF (eOwnedNightclub = NIGHTCLUB_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
ELIF ARE_STRINGS_EQUAL(tl23Str, "MP_ARC_F_BUY_8")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_ARC_F_BUY_9")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_ARC_F_BUY_10")
ARCADE_PROPERTY_ID eBuyingArcade = INT_TO_ENUM(ARCADE_PROPERTY_ID, GET_LAST_CLICKED_ARCADE())
ARCADE_PROPERTY_ID eOwnedArcade = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
IF (eBuyingArcade = eOwnedArcade)
tl23Str += "b" //renovate
ELIF (eOwnedArcade = ARCADE_PROPERTY_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
ELIF ARE_STRINGS_EQUAL(tl23Str, "MP_AUT_F_BUY_8")
OR ARE_STRINGS_EQUAL(tl23Str, "MP_AUT_F_BUY_9")
AUTO_SHOP_PROPERTY_ID eBuyingAutoShop = INT_TO_ENUM(AUTO_SHOP_PROPERTY_ID, GET_LAST_CLICKED_AUTO_SHOP())
AUTO_SHOP_PROPERTY_ID eOwnedAutoShop = GET_PLAYERS_OWNED_AUTO_SHOP_PROPERTY(PLAYER_ID())
IF (eBuyingAutoShop = eOwnedAutoShop)
tl23Str += "b" //renovate
ELIF (eOwnedAutoShop = AUTO_SHOP_PROPERTY_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
#IF FEATURE_FIXER
ELIF ARE_STRINGS_EQUAL(tl23Str, "MP_FIX_F_BUY_8")
FIXER_HQ_ID eBuyingFixerHQ = INT_TO_ENUM(FIXER_HQ_ID, GET_LAST_CLICKED_FIXER_HQ())
FIXER_HQ_ID eOwnedFixerHQ = GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())
IF (eBuyingFixerHQ = eOwnedFixerHQ)
tl23Str += "b" //renovate
ELIF (eOwnedFixerHQ = FIXER_HQ_ID_INVALID)
tl23Str += "a" //buy
ELSE
tl23Str += "c" //trade
ENDIF
#ENDIF
ENDIF
RETURN GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME(tl23Str, 0, GET_LENGTH_OF_LITERAL_STRING(tl23Str))
ENDIF
//Return office buy Fail default
IF bOffice
RETURN "MP_OFF_F_BUY_6"
ELIF bClubhouse
RETURN "MP_CLU_F_BUY_6"
ELIF bOfficeGarage
RETURN "MP_GAR_F_BUY_6"
ELIF bFactoryBunker
RETURN "MP_BUN_F_BUY_6"
ELIF bHangar
RETURN "MP_HAN_F_BUY_6"
ELIF bDefunctBase
RETURN "MP_DBA_F_BUY_6"
ELIF bNightclub
RETURN "MP_NCL_F_BUY_6"
ELIF bArenaGarage
RETURN "MP_MBA_F_BUY_6"
ELIF bCasinoApt
RETURN "MP_CASWEB_F_BUY_6"
ELIF bArcade
RETURN "MP_ARC_F_BUY_6"
ELIF bAutoShop
RETURN "MP_AUT_F_BUY_6"
#IF FEATURE_FIXER
ELIF bFixerHQ
RETURN "MP_FIX_F_BUY_6"
#ENDIF
ENDIF
RETURN "MP_F_BUY_5"
ENDFUNC
///Purpose: Switches to either dynasty8 or dynasty8Exec for offices
/// To be used when displaying purchase results
PROC SWITCH_TO_PROPERTY_RESULTS_PAGE(INT iBuyPropertyIndex, STRING sPageExtension, BOOL bPurchaseSucceeded, BOOL bRenovation, BOOL bSetWaypointSuccess, BOOL bSetWaypointFail, REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType)
TEXT_LABEL_63 sWebpage
BOOL bOffice, bClubhouse, bOfficeGarage
IF (ePropertyType = rpmt_0)
bOffice = IS_PROPERTY_OFFICE(iBuyPropertyIndex)
bClubhouse = IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
bOfficeGarage = IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
IF bOffice
AND NOT bOfficeGarage
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
IF iModshop != 0
INT iPrevModshop = GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP)
CDEBUG1LN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE iModshop: ", iModshop, ", iPrevModshop:", iPrevModshop)
IF iModshop != iPrevModshop
//
bOffice = FALSE
bOfficeGarage = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF bOffice
OR bClubhouse
OR bOfficeGarage
OR (ePropertyType != rpmt_0)
//Purchase result screen - Title
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
IF bPurchaseSucceeded
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("MP_OFF_S_BUY_T")
ELIF bSetWaypointSuccess
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("MP_OFF_W_BUY_T")
ELIF bSetWaypointFail
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("MP_OFF_WF_BUY_T")
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("MP_OFF_F_BUY_T")
ENDIF
END_SCALEFORM_MOVIE_METHOD()
//Purchase result screen - Body text
TEXT_LABEL_23 tl23BodyParam = ""
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
IF bSetWaypointSuccess
IF bOffice
tl23BodyParam = "MP_OFF_S_WAY"
ELIF bClubhouse
tl23BodyParam = "MP_CLU_S_WAY"
ELIF bOfficeGarage
tl23BodyParam = "MP_GAR_S_WAY"
ELIF (ePropertyType = rpmt_1_FACTORY)
tl23BodyParam = "MP_BUN_S_WAY"
ELIF (ePropertyType = rpmt_2_HANGAR)
tl23BodyParam = "MP_HAN_S_WAY"
ELIF (ePropertyType = rpmt_3_DEFUNCT_BASE)
tl23BodyParam = "MP_DBA_S_WAY"
ELIF (ePropertyType = rpmt_4_NIGHTCLUB)
tl23BodyParam = "MP_NCL_S_WAY"
ELIF (ePropertyType = rpmt_5_ARENA_GARAGE)
tl23BodyParam = "MP_MBA_S_WAY"
ELIF (ePropertyType = rpmt_6_CASINO_APARTMENT)
tl23BodyParam = "MP_CASWEB_S_WAY"
ELIF (ePropertyType = rpmt_7_ARCADE)
tl23BodyParam = "MP_ARC_S_WAY"
ELIF (ePropertyType = rpmt_8_AUTO_SHOP)
tl23BodyParam = "MP_AUT_S_WAY"
#IF FEATURE_FIXER
ELIF (ePropertyType = rpmt_9_FIXER_HQ)
tl23BodyParam = "MP_FIX_S_WAY"
#ENDIF
ELSE
tl23BodyParam = "MP_XXX_S_WAY"
ENDIF
ELIF bSetWaypointFail
IF bOffice
tl23BodyParam = "MP_OFF_S_WAYF"
ELIF bClubhouse
tl23BodyParam = "MP_CLU_S_WAYF"
ELIF bOfficeGarage
tl23BodyParam = "MP_GAR_S_WAYF"
ELIF (ePropertyType = rpmt_1_FACTORY)
tl23BodyParam = "MP_BUN_S_WAYF"
ELIF (ePropertyType = rpmt_2_HANGAR)
tl23BodyParam = "MP_HAN_S_WAYF"
ELIF (ePropertyType = rpmt_3_DEFUNCT_BASE)
tl23BodyParam = "MP_DBA_S_WAYF"
ELIF (ePropertyType = rpmt_4_NIGHTCLUB)
tl23BodyParam = "MP_NCL_S_WAYF"
ELIF (ePropertyType = rpmt_5_ARENA_GARAGE)
tl23BodyParam = "MP_MBA_S_WAYF"
ELIF (ePropertyType = rpmt_6_CASINO_APARTMENT)
tl23BodyParam = "MP_CASWEB_S_WAYF"
ELIF (ePropertyType = rpmt_7_ARCADE)
tl23BodyParam = "MP_ARC_S_WAYF"
ELIF (ePropertyType = rpmt_8_AUTO_SHOP)
tl23BodyParam = "MP_AUT_S_WAYF"
#IF FEATURE_FIXER
ELIF (ePropertyType = rpmt_9_FIXER_HQ)
tl23BodyParam = "MP_FIX_S_WAYF"
#ENDIF
ELSE
tl23BodyParam = "MP_XXX_S_WAYF"
ENDIF
ELSE
IF bOffice
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(1, bPurchaseSucceeded, bRenovation)
ELIF bClubhouse
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(2, bPurchaseSucceeded, bRenovation)
ELIF bOfficeGarage
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(3, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_1_FACTORY)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(4, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_2_HANGAR)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(5, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_3_DEFUNCT_BASE)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(6, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_4_NIGHTCLUB)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(7, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_5_ARENA_GARAGE)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(8, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_6_CASINO_APARTMENT)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(9, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_7_ARCADE)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(10, bPurchaseSucceeded, bRenovation)
ELIF (ePropertyType = rpmt_8_AUTO_SHOP)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(11, bPurchaseSucceeded, bRenovation)
#IF FEATURE_FIXER
ELIF (ePropertyType = rpmt_9_FIXER_HQ)
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(12, bPurchaseSucceeded, bRenovation)
#ENDIF
ELSE
tl23BodyParam = GET_OFFICE_PURCHASE_RESULT_STRING(0, bPurchaseSucceeded, bRenovation)
ENDIF
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tl23BodyParam)
END_SCALEFORM_MOVIE_METHOD()
IF bOffice
sWebpage = "WWW_DYNASTY8EXECUTIVEREALTY_COM"
ELIF bClubhouse
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF bOfficeGarage
sWebpage = "WWW_DYNASTY8EXECUTIVEREALTY_COM"
ELIF (ePropertyType = rpmt_1_FACTORY)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF (ePropertyType = rpmt_2_HANGAR)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF (ePropertyType = rpmt_3_DEFUNCT_BASE)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF (ePropertyType = rpmt_4_NIGHTCLUB)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF (ePropertyType = rpmt_5_ARENA_GARAGE)
sWebpage = "WWW_ARENAWAR_TV"
ELIF (ePropertyType = rpmt_6_CASINO_APARTMENT)
sWebpage = "WWW_THEDIAMONDCASINOANDRESORT_COM"
ELIF (ePropertyType = rpmt_7_ARCADE)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
ELIF (ePropertyType = rpmt_8_AUTO_SHOP)
sWebpage = "FORECLOSURES_MAZE_D_BANK_COM"
#IF FEATURE_FIXER
ELIF (ePropertyType = rpmt_9_FIXER_HQ)
sWebpage = "WWW_DYNASTY8EXECUTIVEREALTY_COM"
#ENDIF
ELSE
CASSERTLN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE EXTENSION: unknown websitr")
ENDIF
CDEBUG1LN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE ",
PICK_STRING(bSetWaypointSuccess, "bSetWaypointSuccess", PICK_STRING(bSetWaypointFail, "bSetWaypointSuccess", "PURCHASE")),
PICK_STRING(bOffice, ", bOffice",
PICK_STRING(bClubhouse, ", bClubhouse",
PICK_STRING((ePropertyType = rpmt_1_FACTORY), ", rpmt_1_FACTORY",
PICK_STRING((ePropertyType = rpmt_2_HANGAR), ", rpmt_2_HANGAR",
PICK_STRING((ePropertyType = rpmt_3_DEFUNCT_BASE), ", rpmt_3_DEFUNCT_BASE",
PICK_STRING((ePropertyType = rpmt_4_NIGHTCLUB), ", rpmt_4_NIGHTCLUB",
PICK_STRING((ePropertyType = rpmt_5_ARENA_GARAGE), ", rpmt_5_ARENA_GARAGE",
PICK_STRING((ePropertyType = rpmt_6_CASINO_APARTMENT), ", rpmt_6_CASINO_APARTMENT",
PICK_STRING((ePropertyType = rpmt_7_ARCADE), ", rpmt_7_ARCADE",
PICK_STRING((ePropertyType = rpmt_8_AUTO_SHOP), ", rpmt_8_AUTO_SHOP",
PICK_STRING(bOfficeGarage, ", bOfficeGarage",
"UNKNOWN"))))))))))),
": \"", sWebpage, sPageExtension, "\", \"", tl23BodyParam, "\"")
#IF FEATURE_FIXER
CDEBUG1LN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE ",
PICK_STRING((ePropertyType = rpmt_9_FIXER_HQ), ", rpmt_9_FIXER_HQ",
"UNKNOWN"),
": \"", sWebpage, sPageExtension, "\", \"", tl23BodyParam, "\"")
#ENDIF
ELSE
sWebpage = "WWW_DYNASTY8REALESTATE_COM"
ENDIF
tl63sPropertyResultsWebpage = sWebpage
sWebpage += sPageExtension
GO_TO_WEBSITE(sWebpage)
ENDPROC
///Purpose: params returned from Scaleform are 0 or 1
/// Returns true if 1
FUNC BOOL HAS_SCALEFORM_OPTION_BEEN_SELECTED(INT iOption)
RETURN (iOption = 1)
ENDFUNC
FUNC INT CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES(INT iProperty,
INT &iOfficeStylePrice, INT &iOfficePersonnelPrice, INt &iOfficeNamePrice,
INT &iOfficeFontPrice, INT &iOfficeColourPrice,
INT &iOfficeGunLockerPrice, INT &iOfficeVaultPrice, INT &iOfficeAccommodationPrice,
INT &iOfficeModshopPrice)
INT iOwned = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0)
INT iCost = 0
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
iOfficeStylePrice = 0
IF GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_0) != iStyle
#IF IS_DEBUG_BUILD
INT iOldStyle = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_0)
INT iOldStyleSF = -1
IF (iOldStyle != 0)
iOldStyleSF = GET_SF_FROM_OFFICE_INTERIOR(iOldStyle)
ENDIF
#ENDIF
INT iNewStyleSF = GET_SF_FROM_OFFICE_INTERIOR(iStyle)
IF USE_SERVER_TRANSACTIONS()
iOfficeStylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iStyle-1, iProperty)
ELSE
iOfficeStylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iStyle-1, iProperty)
ENDIF
#IF IS_DEBUG_BUILD
// use GET_PROPERTY_INTERIOR_NAME(INT iIndex, INT iCurrentProperty) // //
TEXT_LABEL tlOldStyle = "PM_OFF_VAR_" //
tlOldStyle += iOldStyleSF //
TEXT_LABEL tlNewStyle = "PM_OFF_VAR_" //
tlNewStyle += iNewStyleSF //
// // // // // // // // // // // // // // // // // // // // // // // // //
// STRING sOldStyleLabel = "null"
// IF DOES_TEXT_LABEL_EXIST(tlOldStyle)
// sOldStyleLabel = GET_STRING_FROM_TEXT_FILE(tlOldStyle)
// ENDIF
// STRING sNewStyleLabel = GET_STRING_FROM_TEXT_FILE(tlNewStyle)
#ENDIF
IF iOwned != iProperty
AND iNewStyleSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: new property, interior ",
tlOldStyle, ":", iStyle,
" [sf:", iNewStyleSF,
"] is free")
iOfficeStylePrice = 0
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldStyleData = tlOldStyle
tlOldStyleData += ":"
tlOldStyleData += iOldStyle
TEXT_LABEL tlNewStyleData = tlNewStyle
tlNewStyleData += ":"
tlNewStyleData += iStyle
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: changing interior from ",
tlOldStyleData,
" [sf:", iOldStyleSF,
"] to ",
tlNewStyleData,
" [sf:", iNewStyleSF,
"] add $", iOfficeStylePrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewStyle))
iCost += iOfficeStylePrice
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: unchanged property, interior ",
GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_0), " != ", iStyle,
" is free")
iOfficeStylePrice = 0
ENDIF
iOfficePersonnelPrice = 0
IF iOwned != iProperty
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: new property, personel change is free")
ELSE
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL) != iPersonnel)
IF NOT IS_OFFICE_PA_MALE(FALSE)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: changing to male personel: add $", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_PERSONNEL, 1))
iOfficePersonnelPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_PERSONNEL, 1)
iCost += iOfficePersonnelPrice
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: changing to female personel: add $", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_PERSONNEL, 0))
iOfficePersonnelPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_PERSONNEL, 0)
iCost += iOfficePersonnelPrice
ENDIF
ENDIF
ENDIF
iOfficeNamePrice = 0
iOfficeFontPrice = 0
iOfficeColourPrice = 0
IF iOwned != iProperty
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: new property, name change is free")
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(g_sOfficeDataStruct.tl63NewOrgName)
TEXT_LABEL_63 tlGB_OFFICE_NAME = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_OFFICE_NAME, MP_STAT_GB_OFFICE_NAME2)
IF NOT IS_STRING_NULL_OR_EMPTY(tlGB_OFFICE_NAME)
AND NOT ARE_STRINGS_EQUAL(g_sOfficeDataStruct.tl63NewOrgName, tlGB_OFFICE_NAME)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Updating name from \"", tlGB_OFFICE_NAME, "\" to \"", g_sOfficeDataStruct.tl63NewOrgName, "\" (\"", g_sOfficeDataStruct.tl63OldOrgName, "\") add $", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_NAME_ID))
iOfficeNamePrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_NAME_ID)
iCost += iOfficeNamePrice
ENDIF
ENDIF
IF iFont != GET_MP_INT_CHARACTER_STAT(MP_STAT_FONT_PLAYER_OFFICE)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: changing font from ", iFont, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_FONT_PLAYER_OFFICE), " add $", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_FONT))
iOfficeFontPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_FONT)
iCost += iOfficeFontPrice
ENDIF
IF iColour != GET_MP_INT_CHARACTER_STAT(MP_STAT_COLOUR_PLAYER_OFFICE)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: changing colour from ", iColour, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_COLOUR_PLAYER_OFFICE), " add $", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_COLOUR))
iOfficeColourPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_COLOUR)
iCost += iOfficeColourPrice
ENDIF
ENDIF
iOfficeGunLockerPrice = 0
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF iOwned != iProperty
iOfficeGunLockerPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_LOCKER_GUN)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Buying gunlocker: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker), " add $", iOfficeGunLockerPrice)
iCost += iOfficeGunLockerPrice
ELIF NOT IS_OFFICE_GUN_LOCKER_PURCHASED()
iOfficeGunLockerPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_LOCKER_GUN)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Adding gunlocker: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker), " add $", iOfficeGunLockerPrice)
iCost += iOfficeGunLockerPrice
ENDIF
ENDIF
iOfficeVaultPrice = 0
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iVault)
IF iOwned != iProperty
iOfficeVaultPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_LOCKER_CASH)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Buying vault: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iVault), " add $", iOfficeVaultPrice)
iCost += iOfficeVaultPrice
ELIF NOT IS_OFFICE_CASH_VAULT_PURCHASED()
iOfficeVaultPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_LOCKER_CASH)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Adding vault: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iVault), " add $", iOfficeVaultPrice)
iCost += iOfficeVaultPrice
ENDIF
ENDIF
iOfficeAccommodationPrice = 0
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
IF iOwned != iProperty
iOfficeAccommodationPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_ACCOMMODATION)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Buying accommodation: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation), " add $", iOfficeAccommodationPrice)
iCost += iOfficeAccommodationPrice
ELIF NOT IS_OFFICE_ACCOMMODATION_PURCHASED()
iOfficeAccommodationPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_ACCOMMODATION)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Adding accommodation: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation), " add $", iOfficeAccommodationPrice)
iCost += iOfficeAccommodationPrice
ENDIF
ENDIF
iOfficeModShopPrice = 0
IF iModShop != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP)
INT iOfficePropertyModShopPrice = 0
INT iModshopSF = GET_SF_FROM_OFFICE_MODSHOP_INTERIOR(iModShop)
IF NOT IS_OFFICE_MODSHOP_PURCHASED()
iOfficePropertyModShopPrice = GET_OFFICE_PROPERTY_MODSHOP_VALUE(iProperty)
IF (iModshopSF = 0) //
iOfficeModShopPrice = 0
ELSE
iOfficeModShopPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_MODSHOP, iModshopSF+1)
ENDIF
ELSE
iOfficeModShopPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_MODSHOP, iModshopSF+1)
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Adding ModShop:", iModShop, " (iModshopSF:", iModshopSF, " ) add prop:$", iOfficePropertyModShopPrice, " + var:$", iOfficeModShopPrice, ", replacing ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP))
iOfficeModShopPrice += iOfficePropertyModShopPrice
iCost += iOfficeModShopPrice
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES(INT iProperty,
INT &iClubhouseWallPrice, INT &iClubhouseHangingPrice, INT &iClubhouseFurniturePrice,
INT &iClubhouseColourPrice, INT &iClubhouseNamePrice,
INT &iClubhouseFontPrice, INT &iClubhouseFontColourPrice, INT &iClubhouseHideSinagePrice,
INT &iClubhouseEmblemPrice,
INT &iClubhouseGunLockerPrice, INT &iClubhouseGaragePrice)
INT iOwned = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE)
INT iCost = 0
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(iProperty, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
iClubhouseWallPrice = 0
IF iOwned != iProperty
IF iWall = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, wall A is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, wall from ", iWall, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_WALL, iWall))
iClubhouseWallPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_WALL, iWall)
iCost += iClubhouseWallPrice
ENDIF
ELSE
IF iWall != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing wall from ", iWall, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_WALL, iWall))
iClubhouseWallPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_WALL, iWall)
iCost += iClubhouseWallPrice
ENDIF
ENDIF
iClubhouseHangingPrice = 0
IF iOwned != iProperty
IF iHanging = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, hanging A is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, hanging from ", iHanging, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HANGING, iHanging))
iClubhouseHangingPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HANGING, iHanging)
iCost += iClubhouseHangingPrice
ENDIF
ELSE
IF iHanging != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing hanging from ", iHanging, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HANGING, iHanging))
iClubhouseHangingPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HANGING, iHanging)
iCost += iClubhouseHangingPrice
ENDIF
ENDIF
iClubhouseFurniturePrice = 0
IF iOwned != iProperty
IF iFurniture = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, Furniture A is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, Furniture from ", iFurniture, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FURNITURE, iFurniture))
iClubhouseFurniturePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FURNITURE, iFurniture)
iCost += iClubhouseFurniturePrice
ENDIF
ELSE
IF iFurniture != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing Furniture from ", iFurniture, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FURNITURE, iFurniture))
iClubhouseFurniturePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FURNITURE, iFurniture)
iCost += iClubhouseFurniturePrice
ENDIF
ENDIF
iClubhouseColourPrice = 0
IF iOwned != iProperty
OR GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_CLUBHOUSE) != iColourScheme
#IF IS_DEBUG_BUILD
INT iOldColour = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_CLUBHOUSE)
INT iOldColourSF = -1
IF (iOldColour != 0)
iOldColourSF = GET_SF_FROM_CLUBHOUSE_INTERIOR(iProperty, iOldColour)
ENDIF
#ENDIF
INT iNewColourSF = GET_SF_FROM_CLUBHOUSE_INTERIOR(iProperty, iColourScheme)
iClubhouseColourPrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewColourSF, iProperty)
#IF IS_DEBUG_BUILD
// use GET_PROPERTY_INTERIOR_NAME(INT iIndex, INT iCurrentProperty) // //
TEXT_LABEL tlOldColour = "FC_MURAL_" //
tlOldColour += iOldColourSF //
TEXT_LABEL tlNewColour = "FC_MURAL_" //
tlNewColour += iNewColourSF //
// // // // // // // // // // // // // // // // // // // // // // // // //
// STRING sOldColourLabel = "null"
// IF DOES_TEXT_LABEL_EXIST(tlOldColour)
// sOldColourLabel = GET_STRING_FROM_TEXT_FILE(tlOldColour)
// ENDIF
// STRING sNewColourLabel = GET_STRING_FROM_TEXT_FILE(tlNewColour)
#ENDIF
IF iOwned != iProperty
IF iNewColourSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, interior ",
tlOldColour, ":", iColourScheme,
" [sf:", iNewColourSF,
"] is free")
iClubhouseColourPrice = 0
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlNewColourData = tlNewColour
tlNewColourData += ":"
tlNewColourData += iColourScheme
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, interior to ",
tlNewColourData,
" [sf:", iNewColourSF,
"] add $", iClubhouseColourPrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewColour))
iCost += iClubhouseColourPrice
ENDIF
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldColourData = tlOldColour
tlOldColourData += ":"
tlOldColourData += iOldColour
TEXT_LABEL tlNewColourData = tlNewColour
tlNewColourData += ":"
tlNewColourData += iColourScheme
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing interior from ",
tlOldColourData,
" [sf:", iOldColourSF,
"] to ",
tlNewColourData,
" [sf:", iNewColourSF,
"] add $", iClubhouseColourPrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewColour))
iCost += iClubhouseColourPrice
ENDIF
ENDIF
iClubhouseNamePrice = 0
iClubhouseFontPrice = 0
iClubhouseFontColourPrice = 0
iClubhouseHideSinagePrice = 0
IF iOwned != iProperty
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, name change is free")
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(g_sClubhouseDataStruct.tl63NewSignage)
TEXT_LABEL_63 tlGB_Clubhouse_NAME = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_MC_CLBHOSE_NAME, MP_STAT_MC_CLBHOSE_NAME2)
IF NOT IS_STRING_NULL_OR_EMPTY(tlGB_Clubhouse_NAME)
AND NOT ARE_STRINGS_EQUAL(g_sClubhouseDataStruct.tl63NewSignage, tlGB_Clubhouse_NAME)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Updating name from \"", tlGB_Clubhouse_NAME, "\" to \"", g_sClubhouseDataStruct.tl63NewSignage, "\" (\"", g_sClubhouseDataStruct.tl63OldSignage, "\") add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_NAME_ID, 1))
iClubhouseNamePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_NAME_ID, 1)
iCost += iClubhouseNamePrice
ENDIF
ENDIF
IF iFont != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FONT)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing font from ", iFont, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FONT), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FONT))
iClubhouseFontPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FONT)
iCost += iClubhouseFontPrice
ENDIF
IF iFontColour != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_COLOUR)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing font colour from ", iFontColour, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_COLOUR), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FONT_COLOUR))
iClubhouseFontColourPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_FONT_COLOUR)
iCost += iClubhouseFontColourPrice
ENDIF
IF iHideSinage != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing hide signage from ", iHideSinage, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HIDE_SINAGE))
iClubhouseHideSinagePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_HIDE_SINAGE)
iCost += iClubhouseHideSinagePrice
ENDIF
ENDIF
iClubhouseEmblemPrice = 0
IF iOwned != iProperty
IF iEmblem = iCONST_DEFAULT_FREE_CLUBHOUSE_EMBLEM //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, Emblem A is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: new property, Emblem from ", iEmblem, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_EMBLEM), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_EMBLEM, iEmblem))
iClubhouseEmblemPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_EMBLEM, iEmblem)
iCost += iClubhouseEmblemPrice
ENDIF
ELSE
IF iEmblem != GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_EMBLEM)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: changing Emblem from ", iEmblem, " to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_EMBLEM), " add $", GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_EMBLEM, iEmblem))
iClubhouseEmblemPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_EMBLEM, iEmblem)
iCost += iClubhouseEmblemPrice
ENDIF
ENDIF
iClubhouseGunLockerPrice = 0
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF iOwned != iProperty
iClubhouseGunLockerPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_LOCKER_GUN, 1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Buying gunlocker: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker), " add $", iClubhouseGunLockerPrice)
iCost += iClubhouseGunLockerPrice
ELIF NOT IS_CLUBHOUSE_GUN_LOCKER_PURCHASED()
iClubhouseGunLockerPrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_LOCKER_GUN, 1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Adding gunlocker: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker), " add $", iClubhouseGunLockerPrice)
iCost += iClubhouseGunLockerPrice
ENDIF
ENDIF
iClubhouseGaragePrice = 0
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGarage)
IF iOwned != iProperty
iClubhouseGaragePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_GARAGE, 1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Buying Garage: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGarage), " add $", iClubhouseGaragePrice)
iCost += iClubhouseGaragePrice
ELIF NOT IS_CLUBHOUSE_GARAGE_PURCHASED()
iClubhouseGaragePrice = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_GARAGE, 1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Adding Garage: ", HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGarage), " add $", iClubhouseGaragePrice)
iCost += iClubhouseGaragePrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(INT iProperty,
INT &iOfficeGarage1StylePrice,
INT &iOfficeGarage1LightingPrice,
INT &iOfficeGarage1NumberPrice,
INT &iOfficeGarage2StylePrice,
INT &iOfficeGarage2LightingPrice,
INT &iOfficeGarage2NumberPrice,
INT &iOfficeGarage3StylePrice,
INT &iOfficeGarage3LightingPrice,
INT &iOfficeGarage3NumberPrice)
INT iCost = 0
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
INT iOwnedGarage1 = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1)
iOfficeGarage1StylePrice = 0
iOfficeGarage1LightingPrice = 0
iOfficeGarage1NumberPrice = 0
IF iProperty = PROPERTY_OFFICE_1_GARAGE_LVL1
IF GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1) != iGarage1Style
AND iGarage1Style != -1
#IF IS_DEBUG_BUILD
INT iOldGarage = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1)
INT iOldGarageSF = -1
IF (iOldGarage != 0)
iOldGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iOldGarage)
ENDIF
#ENDIF
INT iNewGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage1Style)
iOfficeGarage1StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iOldGarageSF)
TEXT_LABEL tlNewGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iNewGarageSF)
#ENDIF
IF iOwnedGarage1 != iProperty
IF iNewGarageSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 style ",
tlOldGarage, ":", iGarage1Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage1StylePrice = 0
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 Style from ", iNewGarageSF, " to ", GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1), " add $", GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty))
iOfficeGarage1StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage1StylePrice
ENDIF
ELSE
IF iGarage1Style = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: unchanging garage 1 Style ",
tlOldGarage, ":", iGarage1Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage1StylePrice = 0
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarageData = tlOldGarage
tlOldGarageData += ":"
tlOldGarageData += iOldGarage
TEXT_LABEL tlNewGarageData = tlNewGarage
tlNewGarageData += ":"
tlNewGarageData += iGarage1Style
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 1 style from ",
tlOldGarageData,
" [sf:", iOldGarageSF,
"] to ",
tlNewGarageData,
" [sf:", iNewGarageSF,
"] add $", iOfficeGarage1StylePrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewGarage))
iOfficeGarage1StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage1StylePrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 1 style ", iGarage1Style)
ENDIF
IF iGarage1Lighting != -1
INT iGarage1LightingSF = GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage1Lighting)
IF iOwnedGarage1 != iProperty
IF iGarage1LightingSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 lighting ", iGarage1Lighting, " (iGarage1LightingSF:", iGarage1LightingSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 lighting from ", iGarage1Lighting, " (iGarage1LightingSF:", iGarage1LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_LIGHTING), " add 1", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_LIGHTING, iGarage1Lighting))
iOfficeGarage1LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_LIGHTING, iGarage1LightingSF)
iCost += iOfficeGarage1LightingPrice
ENDIF
ELSE
IF iGarage1Lighting != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_LIGHTING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 1 lighting from ", iGarage1Lighting, " (iGarage1LightingSF:", iGarage1LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_LIGHTING), " add 1", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_LIGHTING, iGarage1Lighting))
iOfficeGarage1LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_LIGHTING, iGarage1LightingSF)
iCost += iOfficeGarage1LightingPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 1 lighting ", iGarage1Lighting)
ENDIF
IF iGarage1Number != -1
INT iGarage1NumberSF = GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage1Number)
IF iOwnedGarage1 != iProperty
IF iGarage1NumberSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 number ", iGarage1Number, " (iGarage1NumberSF:", iGarage1NumberSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 1 number from ", iGarage1Number, " (iGarage1NumberSF:", iGarage1NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_NUMBERING), " add 1", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_NUMBERING, iGarage1Number))
iOfficeGarage1NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_NUMBERING, iGarage1NumberSF)
iCost += iOfficeGarage1NumberPrice
ENDIF
ELSE
IF iGarage1Number != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_NUMBERING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 1 number from ", iGarage1Number, " (iGarage1NumberSF:", iGarage1NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_NUMBERING), " add 1", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_NUMBERING, iGarage1Number))
iOfficeGarage1NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE1_NUMBERING, iGarage1NumberSF)
iCost += iOfficeGarage1NumberPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 1 number ", iGarage1Number)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 1, iProperty:", iProperty)
ENDIF
INT iOwnedGarage2 = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2)
iOfficeGarage2StylePrice = 0
iOfficeGarage2LightingPrice = 0
iOfficeGarage2NumberPrice = 0
IF iProperty = PROPERTY_OFFICE_1_GARAGE_LVL2
IF GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2) != iGarage2Style
AND iGarage2Style != -1
#IF IS_DEBUG_BUILD
INT iOldGarage = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2)
INT iOldGarageSF = -1
IF (iOldGarage != 0)
iOldGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iOldGarage)
ENDIF
#ENDIF
INT iNewGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage2Style)
iOfficeGarage2StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iOldGarageSF)
TEXT_LABEL tlNewGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iNewGarageSF)
#ENDIF
IF iOwnedGarage2 != iProperty
IF iNewGarageSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 style ",
tlOldGarage, ":", iGarage2Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage2StylePrice = 0
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 style from ", iNewGarageSF, " to ", GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2), " add $", GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty))
iOfficeGarage2StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage2StylePrice
ENDIF
ELSE
IF iGarage2Style = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: unchanging garage 2 style ",
tlOldGarage, ":", iGarage2Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage2StylePrice = 0
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarageData = tlOldGarage
tlOldGarageData += ":"
tlOldGarageData += iOldGarage
TEXT_LABEL tlNewGarageData = tlNewGarage
tlNewGarageData += ":"
tlNewGarageData += iGarage2Style
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 2 style from ",
tlOldGarageData,
" [sf:", iOldGarageSF,
"] to ",
tlNewGarageData,
" [sf:", iNewGarageSF,
"] add $", iOfficeGarage2StylePrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewGarage))
iOfficeGarage2StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage2StylePrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 2 style ", iGarage2Style)
ENDIF
IF iGarage2Lighting != -1
INT iGarage2LightingSF = GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage2Lighting)
IF iOwnedGarage2 != iProperty
IF iGarage2LightingSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 lighting ", iGarage2Lighting, " (iGarage2LightingSF:", iGarage2LightingSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 lighting from ", iGarage2Lighting, " (iGarage2LightingSF:", iGarage2LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_LIGHTING), " add 2", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_LIGHTING, iGarage2Lighting))
iOfficeGarage2LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_LIGHTING, iGarage2LightingSF)
iCost += iOfficeGarage2LightingPrice
ENDIF
ELSE
IF iGarage2Lighting != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_LIGHTING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 2 lighting from ", iGarage2Lighting, " (iGarage2LightingSF:", iGarage2LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_LIGHTING), " add 2", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_LIGHTING, iGarage2Lighting))
iOfficeGarage2LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_LIGHTING, iGarage2LightingSF)
iCost += iOfficeGarage2LightingPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 2 lighting ", iGarage2Lighting)
ENDIF
IF iGarage2Number != -1
INT iGarage2NumberSF = GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage2Number)
IF iOwnedGarage2 != iProperty
IF iGarage2NumberSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 number ", iGarage2Number, " (iGarage2NumberSF:", iGarage2NumberSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 2 number from ", iGarage2Number, " (iGarage2NumberSF:", iGarage2NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_NUMBERING), " add 2", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_NUMBERING, iGarage2Number))
iOfficeGarage2NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_NUMBERING, iGarage2NumberSF)
iCost += iOfficeGarage2NumberPrice
ENDIF
ELSE
IF iGarage2Number != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_NUMBERING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 2 number from ", iGarage2Number, " (iGarage2NumberSF:", iGarage2NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_NUMBERING), " add 2", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_NUMBERING, iGarage2Number))
iOfficeGarage2NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE2_NUMBERING, iGarage2NumberSF)
iCost += iOfficeGarage2NumberPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 2 number ", iGarage2Number)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 2, iProperty:", iProperty)
ENDIF
INT iOwnedGarage3 = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3)
iOfficeGarage3StylePrice = 0
iOfficeGarage3LightingPrice = 0
iOfficeGarage3NumberPrice = 0
IF iProperty = PROPERTY_OFFICE_1_GARAGE_LVL3
IF GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3) != iGarage3Style
AND iGarage3Style != -1
#IF IS_DEBUG_BUILD
INT iOldGarage = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3)
INT iOldGarageSF = -1
IF (iOldGarage != 0)
iOldGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iOldGarage)
ENDIF
#ENDIF
INT iNewGarageSF = GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage3Style)
iOfficeGarage3StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iOldGarageSF)
TEXT_LABEL tlNewGarage = GET_PROPERTY_INTERIOR_NAME(iProperty, iNewGarageSF)
#ENDIF
IF iOwnedGarage3 != iProperty
IF iNewGarageSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 style ",
tlOldGarage, ":", iGarage3Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage3StylePrice = 0
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 style from ", iNewGarageSF, " to ", GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3), " add $", GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty))
iOfficeGarage3StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage3StylePrice
ENDIF
ELSE
IF iGarage3Style = GET_OWNED_PROPERTY_VARIATION(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: unchanging garage 3 style ",
tlOldGarage, ":", iGarage3Style,
" [sf:", iNewGarageSF,
"] is free")
iOfficeGarage3StylePrice = 0
ELSE
#IF IS_DEBUG_BUILD
TEXT_LABEL tlOldGarageData = tlOldGarage
tlOldGarageData += ":"
tlOldGarageData += iOldGarage
TEXT_LABEL tlNewGarageData = tlNewGarage
tlNewGarageData += ":"
tlNewGarageData += iGarage3Style
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 3 style from ",
tlOldGarageData,
" [sf:", iOldGarageSF,
"] to ",
tlNewGarageData,
" [sf:", iNewGarageSF,
"] add $", iOfficeGarage3StylePrice, " ", GET_STRING_FROM_TEXT_FILE(tlNewGarage))
iOfficeGarage3StylePrice = GET_MP_PROPERTY_INTERIOR_VALUE(iNewGarageSF, iProperty)
iCost += iOfficeGarage3StylePrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 3 style ", iGarage3Style)
ENDIF
IF iGarage3Lighting != -1
INT iGarage3LightingSF = GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage3Lighting)
IF iOwnedGarage3 != iProperty
IF iGarage3LightingSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 lighting ", iGarage3Lighting, " (iGarage3LightingSF:", iGarage3LightingSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 lighting from ", iGarage3Lighting, " (iGarage3LightingSF:", iGarage3LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_LIGHTING), " add 3", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_LIGHTING, iGarage3Lighting))
iOfficeGarage3LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_LIGHTING, iGarage3LightingSF)
iCost += iOfficeGarage3LightingPrice
ENDIF
ELSE
IF iGarage3Lighting != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_LIGHTING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 3 lighting from ", iGarage3Lighting, " (iGarage3LightingSF:", iGarage3LightingSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_LIGHTING), " add 3", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_LIGHTING, iGarage3Lighting))
iOfficeGarage3LightingPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_LIGHTING, iGarage3LightingSF)
iCost += iOfficeGarage3LightingPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 3 lighting ", iGarage3Lighting)
ENDIF
IF iGarage3Number != -1
INT iGarage3NumberSF = GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage3Number)
IF iOwnedGarage3 != iProperty
IF iGarage3NumberSF = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 number ", iGarage3Number, " (iGarage3NumberSF:", iGarage3NumberSF, ") is free")
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: new property, garage 3 number from ", iGarage3Number, " (iGarage3NumberSF:", iGarage3NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_NUMBERING), " add 3", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_NUMBERING, iGarage3Number))
iOfficeGarage3NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_NUMBERING, iGarage3NumberSF)
iCost += iOfficeGarage3NumberPrice
ENDIF
ELSE
IF iGarage3Number != GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_NUMBERING)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: changing garage 3 number from ", iGarage3Number, " (iGarage3NumberSF:", iGarage3NumberSF, ") to ", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_NUMBERING), " add 3", GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_NUMBERING, iGarage3Number))
iOfficeGarage3NumberPrice = GET_OFFICE_PROPERTY_MOD_VALUE(OFFICE_MOD_GARAGE3_NUMBERING, iGarage3NumberSF)
iCost += iOfficeGarage3NumberPrice
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 3 number ", iGarage3Number)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: ignore garage 3, iProperty:", iProperty)
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES(FACTORY_ID eFactoryId, BUNKER_PRICE_STRUCT &sBunkerPriceStruct)
FACTORY_ID eTradeInFactory = GET_OWNED_BUNKER(PLAYER_ID())
INT iCost = 0
INT iDecor, iAccommodation, iFiringRange, iGunLocker, iTransportation
GET_SCALEFORM_FACTORY_DATA(iDecor, iAccommodation, iFiringRange, iGunLocker, iTransportation)
sBunkerPriceStruct.iDecorPrice = 0
IF eTradeInFactory != eFactoryId
IF iDecor = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Decor A is free")
ELSE
SWITCH iDecor
CASE 0 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_0, eFactoryId) BREAK
CASE 1 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_1, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_2, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Decor to ", iDecor, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR), " add $", sBunkerPriceStruct.iDecorPrice)
iCost += sBunkerPriceStruct.iDecorPrice
ENDIF
ELSE
IF iDecor != GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR)
SWITCH iDecor
CASE 0 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_0, eFactoryId) BREAK
CASE 1 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_1, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iDecorPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_DECOR_2, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: changing Decor to ", iDecor, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR), " add $", sBunkerPriceStruct.iDecorPrice)
iCost += sBunkerPriceStruct.iDecorPrice
ENDIF
ENDIF
sBunkerPriceStruct.iAccommodationPrice = 0
IF eTradeInFactory != eFactoryId
IF iAccommodation = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Accommodation A is free")
ELSE
sBunkerPriceStruct.iAccommodationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_PERSONAL_QUARTERS, eFactoryId)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Accommodation to ", iAccommodation, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED), " add $", sBunkerPriceStruct.iAccommodationPrice)
iCost += sBunkerPriceStruct.iAccommodationPrice
ENDIF
ELSE
IF iAccommodation != GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED)
sBunkerPriceStruct.iAccommodationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_PERSONAL_QUARTERS, eFactoryId)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: changing Accommodation to ", iAccommodation, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED), " add $", sBunkerPriceStruct.iAccommodationPrice)
iCost += sBunkerPriceStruct.iAccommodationPrice
ENDIF
ENDIF
sBunkerPriceStruct.iFiringRangePrice = 0
IF eTradeInFactory != eFactoryId
IF iFiringRange = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, FiringRange A is free")
ELSE
SWITCH iFiringRange
CASE 0 sBunkerPriceStruct.iFiringRangePrice = 0 BREAK
CASE 1 sBunkerPriceStruct.iFiringRangePrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_FIRING_RANGE_0, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iFiringRangePrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_FIRING_RANGE_1, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, FiringRange to ", iFiringRange, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE), " add $", sBunkerPriceStruct.iFiringRangePrice)
iCost += sBunkerPriceStruct.iFiringRangePrice
ENDIF
ELSE
IF iFiringRange != GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE)
SWITCH iFiringRange
CASE 0 sBunkerPriceStruct.iFiringRangePrice = 0 BREAK
CASE 1 sBunkerPriceStruct.iFiringRangePrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_FIRING_RANGE_0, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iFiringRangePrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_FIRING_RANGE_1, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: changing FiringRange to ", iFiringRange, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE), " add $", sBunkerPriceStruct.iFiringRangePrice)
iCost += sBunkerPriceStruct.iFiringRangePrice
ENDIF
ENDIF
sBunkerPriceStruct.iGunLockerPrice = 0
IF eTradeInFactory != eFactoryId
IF iGunLocker = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, GunLocker A is free")
ELSE
sBunkerPriceStruct.iGunLockerPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_GUN_LOCKER, eFactoryId)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, GunLocker to ", iGunLocker, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_GUNLOCKER), " add $", sBunkerPriceStruct.iGunLockerPrice)
iCost += sBunkerPriceStruct.iGunLockerPrice
ENDIF
ELSE
IF iGunLocker != GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_GUNLOCKER)
sBunkerPriceStruct.iGunLockerPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_GUN_LOCKER, eFactoryId)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: changing GunLocker to ", iGunLocker, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_GUNLOCKER), " add $", sBunkerPriceStruct.iGunLockerPrice)
iCost += sBunkerPriceStruct.iGunLockerPrice
ENDIF
ENDIF
sBunkerPriceStruct.iTransportationPrice = 0
IF eTradeInFactory != eFactoryId
IF iTransportation = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Transportation A is free")
ELSE
SWITCH iTransportation
CASE 0 sBunkerPriceStruct.iTransportationPrice = 0 BREAK
CASE 1 sBunkerPriceStruct.iTransportationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_TRANSPORTATION_0, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iTransportationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_TRANSPORTATION_1, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: new property, Transportation to ", iTransportation, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION), " add $", sBunkerPriceStruct.iTransportationPrice)
iCost += sBunkerPriceStruct.iTransportationPrice
ENDIF
ELSE
IF iTransportation != GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION)
SWITCH iTransportation
CASE 0 sBunkerPriceStruct.iTransportationPrice = 0 BREAK
CASE 1 sBunkerPriceStruct.iTransportationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_TRANSPORTATION_0, eFactoryId) BREAK
CASE 2 sBunkerPriceStruct.iTransportationPrice = GET_FACTORY_UPGRADE_COST(UPGRADE_ID_TRANSPORTATION_1, eFactoryId) BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: changing Transportation to ", iTransportation, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION), " add $", sBunkerPriceStruct.iTransportationPrice)
iCost += sBunkerPriceStruct.iTransportationPrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES(HANGAR_ID eHangarID, HANGAR_PRICE_STRUCT &sHangarPriceStruct)
HANGAR_ID eTradeInHangar = GET_PLAYERS_OWNED_HANGAR(PLAYER_ID())
INT iCost = 0
HANGAR_DATA_STRUCT sHangarData
GET_SCALEFORM_HANGAR_DATA(sHangarData)
sHangarPriceStruct.iFlooringPrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iFlooring = 4 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, FloorDecal A is free")
ELSE
sHangarPriceStruct.iFlooringPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_FLOORING, eHangarID, sHangarData.iFlooring)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, FloorDecal to ", sHangarData.iFlooring, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FLOOR_DECAL), " add $", sHangarPriceStruct.iFlooringPrice)
iCost += sHangarPriceStruct.iFlooringPrice
ENDIF
ELSE
IF sHangarData.iFlooring != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FLOOR_DECAL)
sHangarPriceStruct.iFlooringPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_FLOORING, eHangarID, sHangarData.iFlooring)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing FloorDecal to ", sHangarData.iFlooring, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FLOOR_DECAL), " add $", sHangarPriceStruct.iFlooringPrice)
iCost += sHangarPriceStruct.iFlooringPrice
ENDIF
ENDIF
sHangarPriceStruct.iAccommodationPrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iSleepingQuarters = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Accommodation A is free")
ELSE
sHangarPriceStruct.iAccommodationPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_PERSONAL_QUARTERS, eHangarID, sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Accommodation to ", sHangarData.iSleepingQuarters, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED), " add $", sHangarPriceStruct.iAccommodationPrice)
iCost += sHangarPriceStruct.iAccommodationPrice
ENDIF
ELSE
IF sHangarData.iSleepingQuarters != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED)
sHangarPriceStruct.iAccommodationPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_PERSONAL_QUARTERS, eHangarID, sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Accommodation to ", sHangarData.iSleepingQuarters, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED), " add $", sHangarPriceStruct.iAccommodationPrice)
iCost += sHangarPriceStruct.iAccommodationPrice
ENDIF
ENDIF
sHangarPriceStruct.iFurniturePrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iFurniture = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Furniture A is free")
ELSE
sHangarPriceStruct.iFurniturePrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_FURNITURE, eHangarID, sHangarData.iFurniture)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Furniture to ", sHangarData.iFurniture, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE), " add $", sHangarPriceStruct.iFurniturePrice)
iCost += sHangarPriceStruct.iFurniturePrice
ENDIF
ELSE
IF sHangarData.iFurniture != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE)
sHangarPriceStruct.iFurniturePrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_FURNITURE, eHangarID, sHangarData.iFurniture)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Furniture to ", sHangarData.iFurniture, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE), " add $", sHangarPriceStruct.iFurniturePrice)
iCost += sHangarPriceStruct.iFurniturePrice
ENDIF
ENDIF
sHangarPriceStruct.iModshopPrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iWorkshop = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Modshop A is free")
ELSE
sHangarPriceStruct.iModshopPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_MODSHOP, eHangarID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Modshop to ", sHangarData.iWorkshop, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_MODSHOP), " add $", sHangarPriceStruct.iModshopPrice)
iCost += sHangarPriceStruct.iModshopPrice
ENDIF
ELSE
IF sHangarData.iWorkshop != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_MODSHOP)
sHangarPriceStruct.iModshopPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_MODSHOP, eHangarID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Modshop to ", sHangarData.iWorkshop, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_MODSHOP), " add $", sHangarPriceStruct.iModshopPrice)
iCost += sHangarPriceStruct.iModshopPrice
ENDIF
ENDIF
sHangarPriceStruct.iColourPrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iStyle = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Colour A is free")
ELSE
sHangarPriceStruct.iColourPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_STYLE, eHangarID, sHangarData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Colour to ", sHangarData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR), " add $", sHangarPriceStruct.iColourPrice)
iCost += sHangarPriceStruct.iColourPrice
ENDIF
ELSE
IF sHangarData.iStyle != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR)
sHangarPriceStruct.iColourPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_STYLE, eHangarID, sHangarData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Colour to ", sHangarData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR), " add $", sHangarPriceStruct.iColourPrice)
iCost += sHangarPriceStruct.iColourPrice
ENDIF
ENDIF
sHangarPriceStruct.iLightingPrice = 0
IF eTradeInHangar != eHangarID
IF sHangarData.iLighting = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Lighting A is free")
ELSE
sHangarPriceStruct.iLightingPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_LIGHTING, eHangarID, GET_HANGER_LIGHTING_ID_FROM_STYLE_AND_LIGHTING(sHangarData.iStyle, sHangarData.iLighting))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: new property, Lighting to ", sHangarData.iLighting, " (iStyle ", sHangarData.iStyle, ") from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_LIGHTING), " add $", sHangarPriceStruct.iLightingPrice)
iCost += sHangarPriceStruct.iLightingPrice
ENDIF
ELSE
IF sHangarData.iLighting != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_LIGHTING)
OR sHangarData.iStyle != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR)
IF sHangarData.iLighting = 0
AND sHangarData.iStyle != GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Lighting to ", sHangarData.iLighting, " (iStyle ", sHangarData.iStyle, ") from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_LIGHTING), " but changing Colour to ", sHangarData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR), ", Lighting A is free")
ELSE
sHangarPriceStruct.iLightingPrice = GET_HANGAR_UPGRADE_COST(eHANGAR_MOD_LIGHTING, eHangarID, GET_HANGER_LIGHTING_ID_FROM_STYLE_AND_LIGHTING(sHangarData.iStyle, sHangarData.iLighting))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: changing Lighting to ", sHangarData.iLighting, " (iStyle ", sHangarData.iStyle, ") from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_LIGHTING), " add $", sHangarPriceStruct.iLightingPrice)
iCost += sHangarPriceStruct.iLightingPrice
ENDIF
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES(DEFUNCT_BASE_ID eBaseID, DEFUNCT_BASE_PRICE_STRUCT &sDefunctBasePriceStruct)
DEFUNCT_BASE_ID eTradeInBase = GET_PLAYERS_OWNED_DEFUNCT_BASE(PLAYER_ID())
INT iCost = 0
DEFUNCT_BASE_DATA_STRUCT sDefunctBaseData
GET_SCALEFORM_DEFUNCT_BASE_DATA(sDefunctBaseData)
sDefunctBasePriceStruct.iStylePrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iStyle = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Style A is free")
ELSE
sDefunctBasePriceStruct.iStylePrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_STYLE, eBaseID, sDefunctBaseData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Style to ", sDefunctBaseData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_STYLE), " add $", sDefunctBasePriceStruct.iStylePrice)
iCost += sDefunctBasePriceStruct.iStylePrice
ENDIF
ELSE
IF sDefunctBaseData.iStyle != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_STYLE)
sDefunctBasePriceStruct.iStylePrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_STYLE, eBaseID, sDefunctBaseData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing Style to ", sDefunctBaseData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_STYLE), " add $", sDefunctBasePriceStruct.iStylePrice)
iCost += sDefunctBasePriceStruct.iStylePrice
ENDIF
ENDIF
INT iOldGraphic = GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_GRAPHIC)
INT iOldGraphicSF = -1
IF (iOldGraphic != 0)
iOldGraphicSF = GET_SF_FROM_DBASE_GRAPHICS(iOldGraphic)
ENDIF
INT iNewGraphicSF = GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)
sDefunctBasePriceStruct.iGraphicsPrice = 0
IF eTradeInBase != eBaseID
IF iNewGraphicSF = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Graphics A is free")
ELSE
sDefunctBasePriceStruct.iGraphicsPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_GRAPHIC, eBaseID, iNewGraphicSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Graphics to ", iNewGraphicSF, " from ", iOldGraphicSF, " add $", sDefunctBasePriceStruct.iGraphicsPrice)
iCost += sDefunctBasePriceStruct.iGraphicsPrice
ENDIF
ELSE
IF iNewGraphicSF != iOldGraphicSF
sDefunctBasePriceStruct.iGraphicsPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_GRAPHIC, eBaseID, iNewGraphicSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing Graphics to ", iNewGraphicSF, " from ", iOldGraphicSF, " add $", sDefunctBasePriceStruct.iGraphicsPrice)
iCost += sDefunctBasePriceStruct.iGraphicsPrice
ENDIF
ENDIF
sDefunctBasePriceStruct.iOrbitalWeaponPrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iOrbitalWeapon = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, OrbitalWeapon A is free")
ELSE
sDefunctBasePriceStruct.iOrbitalWeaponPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, OrbitalWeapon to ", sDefunctBaseData.iOrbitalWeapon, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_ORBITAL_WEAPON), " add $", sDefunctBasePriceStruct.iOrbitalWeaponPrice)
iCost += sDefunctBasePriceStruct.iOrbitalWeaponPrice
ENDIF
ELSE
IF sDefunctBaseData.iOrbitalWeapon != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_ORBITAL_WEAPON)
sDefunctBasePriceStruct.iOrbitalWeaponPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing OrbitalWeapon to ", sDefunctBaseData.iOrbitalWeapon, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_ORBITAL_WEAPON), " add $", sDefunctBasePriceStruct.iOrbitalWeaponPrice)
iCost += sDefunctBasePriceStruct.iOrbitalWeaponPrice
ENDIF
ENDIF
sDefunctBasePriceStruct.iSecurityRoomPrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iSecurityRoom = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, SecurityRoom A is free")
ELSE
sDefunctBasePriceStruct.iSecurityRoomPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_SECURITY_ROOM, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, SecurityRoom to ", sDefunctBaseData.iSecurityRoom, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_SECURITY_ROOM), " add $", sDefunctBasePriceStruct.iSecurityRoomPrice)
iCost += sDefunctBasePriceStruct.iSecurityRoomPrice
ENDIF
ELSE
IF sDefunctBaseData.iSecurityRoom != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_SECURITY_ROOM)
sDefunctBasePriceStruct.iSecurityRoomPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_SECURITY_ROOM, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing SecurityRoom to ", sDefunctBaseData.iSecurityRoom, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_SECURITY_ROOM), " add $", sDefunctBasePriceStruct.iSecurityRoomPrice)
iCost += sDefunctBasePriceStruct.iSecurityRoomPrice
ENDIF
ENDIF
sDefunctBasePriceStruct.iLoungePrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iLounge = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Lounge A is free")
ELSE
sDefunctBasePriceStruct.iLoungePrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_LOUNGE, eBaseID, sDefunctBaseData.iLounge)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, Lounge to ", sDefunctBaseData.iLounge, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_LOUNGE), " add $", sDefunctBasePriceStruct.iLoungePrice)
iCost += sDefunctBasePriceStruct.iLoungePrice
ENDIF
ELSE
IF sDefunctBaseData.iLounge != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_LOUNGE)
sDefunctBasePriceStruct.iLoungePrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_LOUNGE, eBaseID, sDefunctBaseData.iLounge)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing Lounge to ", sDefunctBaseData.iLounge, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_LOUNGE), " add $", sDefunctBasePriceStruct.iLoungePrice)
iCost += sDefunctBasePriceStruct.iLoungePrice
ENDIF
ENDIF
sDefunctBasePriceStruct.iPrivicyGlassPrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iPrivicyGlass = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, iPrivicyGlass A is free")
ELSE
sDefunctBasePriceStruct.iPrivicyGlassPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, iPrivicyGlass to ", sDefunctBaseData.iPrivicyGlass, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PRIVACY_GLASS), " add $", sDefunctBasePriceStruct.iPrivicyGlassPrice)
iCost += sDefunctBasePriceStruct.iPrivicyGlassPrice
ENDIF
ELSE
IF sDefunctBaseData.iPrivicyGlass != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PRIVACY_GLASS)
sDefunctBasePriceStruct.iPrivicyGlassPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, eBaseID)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing iPrivicyGlass to ", sDefunctBaseData.iPrivicyGlass, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PRIVACY_GLASS), " add $", sDefunctBasePriceStruct.iPrivicyGlassPrice)
iCost += sDefunctBasePriceStruct.iPrivicyGlassPrice
ENDIF
ENDIF
sDefunctBasePriceStruct.iPersonalQuartersPrice = 0
IF eTradeInBase != eBaseID
IF sDefunctBaseData.iPersonalQuarters = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, PersonalQuarters A is free")
ELSE
sDefunctBasePriceStruct.iPersonalQuartersPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, eBaseID, sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: new property, PersonalQuarters to ", sDefunctBaseData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PERSONAL_QUARTERS), " add $", sDefunctBasePriceStruct.iPersonalQuartersPrice)
iCost += sDefunctBasePriceStruct.iPersonalQuartersPrice
ENDIF
ELSE
IF sDefunctBaseData.iPersonalQuarters != GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PERSONAL_QUARTERS)
sDefunctBasePriceStruct.iPersonalQuartersPrice = GET_DEFUNCT_BASE_UPGRADE_COST(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, eBaseID, sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: changing PersonalQuarters to ", sDefunctBaseData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PERSONAL_QUARTERS), " add $", sDefunctBasePriceStruct.iPersonalQuartersPrice)
iCost += sDefunctBasePriceStruct.iPersonalQuartersPrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES(NIGHTCLUB_ID eNightclubID, NIGHTCLUB_PRICE_STRUCT &sNightclubPriceStruct)
NIGHTCLUB_ID eTradeInNightclub = GET_PLAYERS_OWNED_NIGHTCLUB(PLAYER_ID())
INT iCost = 0
NIGHTCLUB_DATA_STRUCT sNightclubData
GET_SCALEFORM_NIGHTCLUB_DATA(sNightclubData)
sNightclubPriceStruct.iStylePrice = 0
IF eTradeInNightclub != eNightclubID
IF sNightclubData.iStyle = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Style A is free")
ELSE
sNightclubPriceStruct.iStylePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_STYLE, eNightclubID, sNightclubData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Style to ", sNightclubData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_STYLE)), " add $", sNightclubPriceStruct.iStylePrice)
iCost += sNightclubPriceStruct.iStylePrice
ENDIF
ELSE
IF sNightclubData.iStyle != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_STYLE))
sNightclubPriceStruct.iStylePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_STYLE, eNightclubID, sNightclubData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Style to ", sNightclubData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_STYLE)), " add $", sNightclubPriceStruct.iStylePrice)
iCost += sNightclubPriceStruct.iStylePrice
ENDIF
ENDIF
INT iOldLighting = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_LIGHTING))
INT iOldLightingSF = GET_SF_FROM_NIGHTCLUB_LIGHTING(iOldLighting)
INT iNewLightingSF = GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)
sNightclubPriceStruct.iLightingPrice = 0
IF eTradeInNightclub != eNightclubID
IF iNewLightingSF = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Lighting A is free")
ELSE
sNightclubPriceStruct.iLightingPrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_LIGHTING, eNightclubID, iNewLightingSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Lighting to ", iNewLightingSF, " from ", iOldLightingSF, " add $", sNightclubPriceStruct.iLightingPrice)
iCost += sNightclubPriceStruct.iLightingPrice
ENDIF
ELSE
IF iNewLightingSF != iOldLightingSF
sNightclubPriceStruct.iLightingPrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_LIGHTING, eNightclubID, iNewLightingSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Lighting to ", iNewLightingSF, " from ", iOldLightingSF, " add $", sNightclubPriceStruct.iLightingPrice)
iCost += sNightclubPriceStruct.iLightingPrice
ENDIF
ENDIF
sNightclubPriceStruct.iDancersPrice = 0
IF eTradeInNightclub != eNightclubID
IF sNightclubData.iDancers = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Podium A is free")
ELSE
sNightclubPriceStruct.iDancersPrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_DANCERS, eNightclubID, sNightclubData.iDancers)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Podium to ", sNightclubData.iDancers, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DANCERS)), " add $", sNightclubPriceStruct.iDancersPrice)
iCost += sNightclubPriceStruct.iDancersPrice
ENDIF
ELSE
IF sNightclubData.iDancers != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DANCERS))
sNightclubPriceStruct.iDancersPrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_DANCERS, eNightclubID, sNightclubData.iDancers)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Podium to ", sNightclubData.iDancers, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DANCERS)), " add $", sNightclubPriceStruct.iDancersPrice)
iCost += sNightclubPriceStruct.iDancersPrice
ENDIF
ENDIF
sNightclubPriceStruct.iDryIcePrice = 0
IF eTradeInNightclub != eNightclubID
IF sNightclubData.iDryIce = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Podium A is free")
ELSE
sNightclubPriceStruct.iDryIcePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_DRYICE, eNightclubID, sNightclubData.iDryIce)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Podium to ", sNightclubData.iDryIce, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DRYICE)), " add $", sNightclubPriceStruct.iDryIcePrice)
iCost += sNightclubPriceStruct.iDryIcePrice
ENDIF
ELSE
IF sNightclubData.iDryIce != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DRYICE))
sNightclubPriceStruct.iDryIcePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_DRYICE, eNightclubID, sNightclubData.iDryIce)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Podium to ", sNightclubData.iDryIce, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DRYICE)), " add $", sNightclubPriceStruct.iDryIcePrice)
iCost += sNightclubPriceStruct.iDryIcePrice
ENDIF
ENDIF
INT iOldName = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_Name))
INT iOldNameSF = GET_SF_FROM_NIGHTCLUB_NAME(iOldName)
INT iNewNameSF = GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)
sNightclubPriceStruct.iNamePrice = 0
IF eTradeInNightclub != eNightclubID
IF iNewNameSF = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Name A is free")
ELIF IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
AND iNewNameSF = iOldNameSF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Name to ", iNewNameSF, " from ", iOldNameSF, " is free")
ELSE
sNightclubPriceStruct.iNamePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_Name, eNightclubID, iNewNameSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Name to ", iNewNameSF, " from ", iOldNameSF, " add $", sNightclubPriceStruct.iNamePrice)
iCost += sNightclubPriceStruct.iNamePrice
ENDIF
ELSE
IF iNewNameSF != iOldNameSF
sNightclubPriceStruct.iNamePrice = GET_NIGHTCLUB_UPGRADE_COST(eNIGHTCLUB_MOD_Name, eNightclubID, iNewNameSF)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Name to ", iNewNameSF, " from ", iOldNameSF, " add $", sNightclubPriceStruct.iNamePrice)
iCost += sNightclubPriceStruct.iNamePrice
ENDIF
ENDIF
sNightclubPriceStruct.iStoragePrice = 0
IF eTradeInNightclub != eNightclubID
IF sNightclubData.iStorage = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Warehouse A is free")
ELIF IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
AND sNightclubData.iStorage = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_WAREHOUSE))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Warehouse ", sNightclubData.iStorage, " is kept for free")
ELSE
sNightclubPriceStruct.iStoragePrice = GET_BUSINESS_HUB_ADDITIVE_UPGRADE_COST(eBUSINESS_HUB_MOD_WAREHOUSE, INT_TO_ENUM(BUSINESS_HUB_ID, ENUM_TO_INT(eNightclubID)), sNightclubData.iStorage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Warehouse to ", sNightclubData.iStorage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_WAREHOUSE)), " add $", sNightclubPriceStruct.iStoragePrice)
iCost += sNightclubPriceStruct.iStoragePrice
ENDIF
ELSE
IF sNightclubData.iStorage != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_WAREHOUSE))
sNightclubPriceStruct.iStoragePrice = GET_BUSINESS_HUB_ADDITIVE_UPGRADE_COST(eBUSINESS_HUB_MOD_WAREHOUSE, INT_TO_ENUM(BUSINESS_HUB_ID, ENUM_TO_INT(eNightclubID)), sNightclubData.iStorage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Warehouse to ", sNightclubData.iStorage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_WAREHOUSE)), " add $", sNightclubPriceStruct.iStoragePrice)
iCost += sNightclubPriceStruct.iStoragePrice
ENDIF
ENDIF
sNightclubPriceStruct.iGaragePrice = 0
IF eTradeInNightclub != eNightclubID
IF sNightclubData.iGarage = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Garage A is free")
ELIF IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
AND sNightclubData.iGarage = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_GARAGE))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Garage ", sNightclubData.iGarage, " is kept for free")
ELSE
sNightclubPriceStruct.iGaragePrice = GET_BUSINESS_HUB_ADDITIVE_UPGRADE_COST(eBUSINESS_HUB_MOD_GARAGE, INT_TO_ENUM(BUSINESS_HUB_ID, ENUM_TO_INT(eNightclubID)), sNightclubData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: new property, Garage to ", sNightclubData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_GARAGE)), " add $", sNightclubPriceStruct.iGaragePrice)
iCost += sNightclubPriceStruct.iGaragePrice
ENDIF
ELSE
IF sNightclubData.iGarage != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_GARAGE))
sNightclubPriceStruct.iGaragePrice = GET_BUSINESS_HUB_ADDITIVE_UPGRADE_COST(eBUSINESS_HUB_MOD_GARAGE, INT_TO_ENUM(BUSINESS_HUB_ID, ENUM_TO_INT(eNightclubID)), sNightclubData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: changing Garage to ", sNightclubData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_GARAGE)), " add $", sNightclubPriceStruct.iGaragePrice)
iCost += sNightclubPriceStruct.iGaragePrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES(ARENA_GARAGE_ID eArenaID, ARENA_GARAGE_PRICE_STRUCT &sArenaPriceStruct)
ARENA_GARAGE_ID eTradeInArena = GET_PLAYERS_OWNED_ARENA_GARAGE(PLAYER_ID())
INT iCost = 0
ARENA_GARAGE_DATA_STRUCT sArenaData
GET_SCALEFORM_ARENA_GARAGE_DATA(sArenaData)
sArenaPriceStruct.iStylePrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iStyle = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Style A is free")
ELSE
sArenaPriceStruct.iStylePrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Style to ", sArenaData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_STYLE)), " add $", sArenaPriceStruct.iStylePrice)
iCost += sArenaPriceStruct.iStylePrice
ENDIF
ELSE
IF sArenaData.iStyle != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_STYLE))
sArenaPriceStruct.iStylePrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing Style to ", sArenaData.iStyle, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_STYLE)), " add $", sArenaPriceStruct.iStylePrice)
iCost += sArenaPriceStruct.iStylePrice
ENDIF
ENDIF
sArenaPriceStruct.iGraphicsPrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iGraphics = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Graphics A is free")
ELSE
sArenaPriceStruct.iGraphicsPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Graphics to ", sArenaData.iGraphics, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_GRAPHICS)), " add $", sArenaPriceStruct.iGraphicsPrice)
iCost += sArenaPriceStruct.iGraphicsPrice
ENDIF
ELSE
IF sArenaData.iGraphics != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_GRAPHICS))
sArenaPriceStruct.iGraphicsPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing Graphics to ", sArenaData.iGraphics, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_GRAPHICS)), " add $", sArenaPriceStruct.iGraphicsPrice)
iCost += sArenaPriceStruct.iGraphicsPrice
ENDIF
ENDIF
sArenaPriceStruct.iColourPrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iColour = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Colour A is free")
ELSE
sArenaPriceStruct.iColourPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Colour to ", sArenaData.iColour, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_COLOUR)), " add $", sArenaPriceStruct.iColourPrice)
iCost += sArenaPriceStruct.iColourPrice
ENDIF
ELSE
IF sArenaData.iColour != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_COLOUR))
sArenaPriceStruct.iColourPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing Colour to ", sArenaData.iColour, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_COLOUR)), " add $", sArenaPriceStruct.iColourPrice)
iCost += sArenaPriceStruct.iColourPrice
ENDIF
ENDIF
sArenaPriceStruct.iExpansionFloorB1Price = 0
IF eTradeInArena != eArenaID
IF sArenaData.iExpansionFloorB1 = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, ExpansionFloorB1 A is free")
ELSE
sArenaPriceStruct.iExpansionFloorB1Price = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, sArenaData.iExpansionFloorB1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, ExpansionFloorB1 to ", sArenaData.iExpansionFloorB1, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0)), " add $", sArenaPriceStruct.iExpansionFloorB1Price)
iCost += sArenaPriceStruct.iExpansionFloorB1Price
ENDIF
ELSE
IF sArenaData.iExpansionFloorB1 != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0))
sArenaPriceStruct.iExpansionFloorB1Price = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, sArenaData.iExpansionFloorB1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing ExpansionFloorB1 to ", sArenaData.iExpansionFloorB1, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0)), " add $", sArenaPriceStruct.iExpansionFloorB1Price)
iCost += sArenaPriceStruct.iExpansionFloorB1Price
ENDIF
ENDIF
sArenaPriceStruct.iExpansionFloorB2Price = 0
IF eTradeInArena != eArenaID
IF sArenaData.iExpansionFloorB2 = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, ExpansionFloorB2 A is free")
ELSE
sArenaPriceStruct.iExpansionFloorB2Price = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, sArenaData.iExpansionFloorB2)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, ExpansionFloorB2 to ", sArenaData.iExpansionFloorB2, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1)), " add $", sArenaPriceStruct.iExpansionFloorB2Price)
iCost += sArenaPriceStruct.iExpansionFloorB2Price
ENDIF
ELSE
IF sArenaData.iExpansionFloorB2 != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1))
sArenaPriceStruct.iExpansionFloorB2Price = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, sArenaData.iExpansionFloorB2)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing ExpansionFloorB2 to ", sArenaData.iExpansionFloorB2, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1)), " add $", sArenaPriceStruct.iExpansionFloorB2Price)
iCost += sArenaPriceStruct.iExpansionFloorB2Price
ENDIF
ENDIF
sArenaPriceStruct.iBennyMechanicPrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iBennyMechanic = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Warehouse A is free")
ELSE
sArenaPriceStruct.iBennyMechanicPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_BENNY_MECHANIC, sArenaData.iBennyMechanic)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, Warehouse to ", sArenaData.iBennyMechanic, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_BENNY_MECHANIC)), " add $", sArenaPriceStruct.iBennyMechanicPrice)
iCost += sArenaPriceStruct.iBennyMechanicPrice
ENDIF
ELSE
IF sArenaData.iBennyMechanic != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_BENNY_MECHANIC))
sArenaPriceStruct.iBennyMechanicPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_BENNY_MECHANIC, sArenaData.iBennyMechanic)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing Warehouse to ", sArenaData.iBennyMechanic, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_BENNY_MECHANIC)), " add $", sArenaPriceStruct.iBennyMechanicPrice)
iCost += sArenaPriceStruct.iBennyMechanicPrice
ENDIF
ENDIF
sArenaPriceStruct.iWeaponMechanicPrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iWeaponMechanic = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, WEAPON_MECHANIC A is free")
ELSE
sArenaPriceStruct.iWeaponMechanicPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_WEAPON_MECHANIC, sArenaData.iWeaponMechanic)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, WEAPON_MECHANIC to ", sArenaData.iWeaponMechanic, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_WEAPON_MECHANIC)), " add $", sArenaPriceStruct.iWeaponMechanicPrice)
iCost += sArenaPriceStruct.iWeaponMechanicPrice
ENDIF
ELSE
IF sArenaData.iWeaponMechanic != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_WEAPON_MECHANIC))
sArenaPriceStruct.iWeaponMechanicPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_WEAPON_MECHANIC, sArenaData.iWeaponMechanic)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing WEAPON_MECHANIC to ", sArenaData.iWeaponMechanic, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_WEAPON_MECHANIC)), " add $", sArenaPriceStruct.iWeaponMechanicPrice)
iCost += sArenaPriceStruct.iWeaponMechanicPrice
ENDIF
ENDIF
sArenaPriceStruct.iPersonalQuartersPrice = 0
IF eTradeInArena != eArenaID
IF sArenaData.iPersonalQuarters = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, PersonalQuarters A is free")
ELSE
sArenaPriceStruct.iPersonalQuartersPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: new property, PersonalQuarters to ", sArenaData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_PERSONAL_QUARTERS)), " add $", sArenaPriceStruct.iPersonalQuartersPrice)
iCost += sArenaPriceStruct.iPersonalQuartersPrice
ENDIF
ELSE
IF sArenaData.iPersonalQuarters != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_PERSONAL_QUARTERS))
sArenaPriceStruct.iPersonalQuartersPrice = GET_ARENA_GARAGE_UPGRADE_COST(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: changing PersonalQuarters to ", sArenaData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_PERSONAL_QUARTERS)), " add $", sArenaPriceStruct.iPersonalQuartersPrice)
iCost += sArenaPriceStruct.iPersonalQuartersPrice
ENDIF
ENDIF
IF eTradeInArena != eArenaID
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: Total cost of new property: $", iCost)
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
ENDIF
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES(CASINO_APT_ID eCasinoID, CASINO_APT_PRICE_STRUCT &sCasinoPriceStruct)
CASINO_APT_ID eTradeInCasino = GET_PLAYERS_OWNED_CASINO_APARTMENT(PLAYER_ID())
INT iCost = 0
CASINO_APT_DATA_STRUCT sCasinoData
GET_SCALEFORM_CASINO_APT_DATA(sCasinoData)
sCasinoPriceStruct.iColourOptionPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iColourOption = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, ColourOption A is free")
ELSE
sCasinoPriceStruct.iColourOptionPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, ColourOption to ", sCasinoData.iColourOption, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_COLOUR_OPTION)), " add $", sCasinoPriceStruct.iColourOptionPrice)
iCost += sCasinoPriceStruct.iColourOptionPrice
ENDIF
ELSE
IF sCasinoData.iColourOption != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_COLOUR_OPTION))
sCasinoPriceStruct.iColourOptionPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing ColourOption to ", sCasinoData.iColourOption, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_COLOUR_OPTION)), " add $", sCasinoPriceStruct.iColourOptionPrice)
iCost += sCasinoPriceStruct.iColourOptionPrice
ENDIF
ENDIF
sCasinoPriceStruct.iStyleOptionPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iStyleOption = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, StyleOption A is free")
ELSE
sCasinoPriceStruct.iStyleOptionPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, StyleOption to ", sCasinoData.iStyleOption, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_STYLE_OPTION)), " add $", sCasinoPriceStruct.iStyleOptionPrice)
iCost += sCasinoPriceStruct.iStyleOptionPrice
ENDIF
ELSE
IF sCasinoData.iStyleOption != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_STYLE_OPTION))
sCasinoPriceStruct.iStyleOptionPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing StyleOption to ", sCasinoData.iStyleOption, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_STYLE_OPTION)), " add $", sCasinoPriceStruct.iStyleOptionPrice)
iCost += sCasinoPriceStruct.iStyleOptionPrice
ENDIF
ENDIF
sCasinoPriceStruct.iLoungePrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iLounge = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Lounge A is free")
ELSE
sCasinoPriceStruct.iLoungePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Lounge to ", sCasinoData.iLounge, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_LOUNGE)), " add $", sCasinoPriceStruct.iLoungePrice)
iCost += sCasinoPriceStruct.iLoungePrice
ENDIF
ELSE
IF sCasinoData.iLounge != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_LOUNGE))
sCasinoPriceStruct.iLoungePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Lounge to ", sCasinoData.iLounge, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_LOUNGE)), " add $", sCasinoPriceStruct.iLoungePrice)
iCost += sCasinoPriceStruct.iLoungePrice
ENDIF
ENDIF
sCasinoPriceStruct.iBarPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iBar = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Bar A is free")
ELIF GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)) != 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Bar to ", sCasinoData.iBar, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)), " is free")
ELSE
sCasinoPriceStruct.iBarPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_BAR, sCasinoData.iBar)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Bar to ", sCasinoData.iBar, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)), " add $", sCasinoPriceStruct.iBarPrice)
iCost += sCasinoPriceStruct.iBarPrice
ENDIF
ELSE
IF GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)) != 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Bar to ", sCasinoData.iBar, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)), " is free")
ELIF sCasinoData.iBar != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR))
sCasinoPriceStruct.iBarPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_BAR, sCasinoData.iBar)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Bar to ", sCasinoData.iBar, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR)), " add $", sCasinoPriceStruct.iBarPrice)
iCost += sCasinoPriceStruct.iBarPrice
ENDIF
ENDIF
sCasinoPriceStruct.iDealerPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iDealer = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Dealer A is free")
ELSE
sCasinoPriceStruct.iDealerPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Dealer to ", sCasinoData.iDealer, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_DEALER)), " add $", sCasinoPriceStruct.iDealerPrice)
iCost += sCasinoPriceStruct.iDealerPrice
ENDIF
ELSE
IF sCasinoData.iDealer != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_DEALER))
sCasinoPriceStruct.iDealerPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Dealer to ", sCasinoData.iDealer, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_DEALER)), " add $", sCasinoPriceStruct.iDealerPrice)
iCost += sCasinoPriceStruct.iDealerPrice
ENDIF
ENDIF
sCasinoPriceStruct.iBedroomPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iBedroom = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Bedroom A is free")
ELSE
sCasinoPriceStruct.iBedroomPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_BEDROOM, sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Bedroom to ", sCasinoData.iBedroom, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BEDROOM)), " add $", sCasinoPriceStruct.iBedroomPrice)
iCost += sCasinoPriceStruct.iBedroomPrice
ENDIF
ELSE
IF sCasinoData.iBedroom != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BEDROOM))
sCasinoPriceStruct.iBedroomPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_BEDROOM, sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Bedroom to ", sCasinoData.iBedroom, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BEDROOM)), " add $", sCasinoPriceStruct.iBedroomPrice)
iCost += sCasinoPriceStruct.iBedroomPrice
ENDIF
ENDIF
sCasinoPriceStruct.iMediaroomPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iMediaroom = 0 //
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Mediaroom A is free")
ELSE
sCasinoPriceStruct.iMediaroomPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_MEDIAROOM, sCasinoData.iMediaroom)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Mediaroom to ", sCasinoData.iMediaroom, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_MEDIAROOM)), " add $", sCasinoPriceStruct.iMediaroomPrice)
iCost += sCasinoPriceStruct.iMediaroomPrice
ENDIF
ELSE
IF sCasinoData.iMediaroom != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_MEDIAROOM))
sCasinoPriceStruct.iMediaroomPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_MEDIAROOM, sCasinoData.iMediaroom)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Mediaroom to ", sCasinoData.iMediaroom, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_MEDIAROOM)), " add $", sCasinoPriceStruct.iMediaroomPrice)
iCost += sCasinoPriceStruct.iMediaroomPrice
ENDIF
ENDIF
sCasinoPriceStruct.iSpaPrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iSpa = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Spa A is free")
ELSE
sCasinoPriceStruct.iSpaPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_SPA, sCasinoData.iSpa)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Spa to ", sCasinoData.iSpa, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_SPA)), " add $", sCasinoPriceStruct.iSpaPrice)
iCost += sCasinoPriceStruct.iSpaPrice
ENDIF
ELSE
IF sCasinoData.iSpa != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_SPA))
sCasinoPriceStruct.iSpaPrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_SPA, sCasinoData.iSpa)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Spa to ", sCasinoData.iSpa, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_SPA)), " add $", sCasinoPriceStruct.iSpaPrice)
iCost += sCasinoPriceStruct.iSpaPrice
ENDIF
ENDIF
sCasinoPriceStruct.iOfficePrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iOffice = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Office A is free")
ELSE
sCasinoPriceStruct.iOfficePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Office to ", sCasinoData.iOffice, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_OFFICE)), " add $", sCasinoPriceStruct.iOfficePrice)
iCost += sCasinoPriceStruct.iOfficePrice
ENDIF
ELSE
IF sCasinoData.iOffice != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_OFFICE))
sCasinoPriceStruct.iOfficePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Office to ", sCasinoData.iOffice, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_OFFICE)), " add $", sCasinoPriceStruct.iOfficePrice)
iCost += sCasinoPriceStruct.iOfficePrice
ENDIF
ENDIF
sCasinoPriceStruct.iGaragePrice = 0
IF eTradeInCasino != eCasinoID
IF sCasinoData.iGarage = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Garage A is free")
ELSE
sCasinoPriceStruct.iGaragePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: new property, Garage to ", sCasinoData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_GARAGE)), " add $", sCasinoPriceStruct.iGaragePrice)
iCost += sCasinoPriceStruct.iGaragePrice
ENDIF
ELSE
IF sCasinoData.iGarage != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_GARAGE))
sCasinoPriceStruct.iGaragePrice = GET_CASINO_APT_UPGRADE_COST(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: changing Garage to ", sCasinoData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_GARAGE)), " add $", sCasinoPriceStruct.iGaragePrice)
iCost += sCasinoPriceStruct.iGaragePrice
ENDIF
ENDIF
IF eTradeInCasino != eCasinoID
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: Total cost of new property: $", iCost)
ELSE
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
ENDIF
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES(ARCADE_PROPERTY_ID eArcadeID, ARCADE_PRICE_STRUCT &sArcadePriceStruct)
ARCADE_PROPERTY_ID eTradeInArcade = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
INT iCost = 0
ARCADE_DATA_STRUCT sArcadeData
GET_SCALEFORM_ARCADE_DATA(sArcadeData)
sArcadePriceStruct.iFloorPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iFloor = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Floor A is free")
ELSE
sArcadePriceStruct.iFloorPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_FLOOR, eArcadeID, sArcadeData.iFloor)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Floor to ", sArcadeData.iFloor, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_FLOOR)), " add $", sArcadePriceStruct.iFloorPrice)
iCost += sArcadePriceStruct.iFloorPrice
ENDIF
ELSE
IF sArcadeData.iFloor != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_FLOOR))
sArcadePriceStruct.iFloorPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_FLOOR, eArcadeID, sArcadeData.iFloor)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Floor to ", sArcadeData.iFloor, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_FLOOR)), " add $", sArcadePriceStruct.iFloorPrice)
iCost += sArcadePriceStruct.iFloorPrice
ENDIF
ENDIF
sArcadePriceStruct.iCeilingPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iCeiling = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Ceiling A is free")
ELSE
sArcadePriceStruct.iCeilingPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_CEILING, eArcadeID, sArcadeData.iCeiling)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Ceiling to ", sArcadeData.iCeiling, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_CEILING)), " add $", sArcadePriceStruct.iCeilingPrice)
iCost += sArcadePriceStruct.iCeilingPrice
ENDIF
ELSE
IF sArcadeData.iCeiling != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_CEILING))
sArcadePriceStruct.iCeilingPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_CEILING, eArcadeID, sArcadeData.iCeiling)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Ceiling to ", sArcadeData.iCeiling, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_CEILING)), " add $", sArcadePriceStruct.iCeilingPrice)
iCost += sArcadePriceStruct.iCeilingPrice
ENDIF
ENDIF
sArcadePriceStruct.iWallPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iWall = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Wall A is free")
ELSE
sArcadePriceStruct.iWallPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_WALL, eArcadeID, sArcadeData.iWall)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Wall to ", sArcadeData.iWall, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_WALL)), " add $", sArcadePriceStruct.iWallPrice)
iCost += sArcadePriceStruct.iWallPrice
ENDIF
ELSE
IF sArcadeData.iWall != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_WALL))
sArcadePriceStruct.iWallPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_WALL, eArcadeID, sArcadeData.iWall)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Wall to ", sArcadeData.iWall, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_WALL)), " add $", sArcadePriceStruct.iWallPrice)
iCost += sArcadePriceStruct.iWallPrice
ENDIF
ENDIF
sArcadePriceStruct.iPersonalQuartersPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iPersonalQuarters = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Personal Quarters A is free")
ELSE
sArcadePriceStruct.iPersonalQuartersPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_PERSONAL_QUARTERS, eArcadeID, sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Personal Quarters to ", sArcadeData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_PERSONAL_QUARTERS)), " add $", sArcadePriceStruct.iPersonalQuartersPrice)
iCost += sArcadePriceStruct.iPersonalQuartersPrice
ENDIF
ELSE
IF sArcadeData.iPersonalQuarters != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_PERSONAL_QUARTERS))
sArcadePriceStruct.iPersonalQuartersPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_PERSONAL_QUARTERS, eArcadeID, sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Personal Quarters to ", sArcadeData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_PERSONAL_QUARTERS)), " add $", sArcadePriceStruct.iPersonalQuartersPrice)
iCost += sArcadePriceStruct.iPersonalQuartersPrice
ENDIF
ENDIF
sArcadePriceStruct.iGaragePrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iGarage = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Garage A is free")
ELIF IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
AND sArcadeData.iGarage = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Garage ", sArcadeData.iGarage, " is kept for free")
ELSE
sArcadePriceStruct.iGaragePrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_GARAGE, eArcadeID, sArcadeData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Garage to ", sArcadeData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE)), " add $", sArcadePriceStruct.iGaragePrice)
iCost += sArcadePriceStruct.iGaragePrice
ENDIF
ELSE
IF sArcadeData.iGarage != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE))
sArcadePriceStruct.iGaragePrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_GARAGE, eArcadeID, sArcadeData.iGarage)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Garage to ", sArcadeData.iGarage, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE)), " add $", sArcadePriceStruct.iGaragePrice)
iCost += sArcadePriceStruct.iGaragePrice
ENDIF
ENDIF
sArcadePriceStruct.iNeonLightsPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iNeonLights = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Neon Lights A is free")
ELSE
sArcadePriceStruct.iNeonLightsPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_NEON_LIGHTS, eArcadeID, sArcadeData.iNeonLights)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Neon Lights to ", sArcadeData.iNeonLights, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_NEON_LIGHTS)), " add $", sArcadePriceStruct.iNeonLightsPrice)
iCost += sArcadePriceStruct.iNeonLightsPrice
ENDIF
ELSE
IF sArcadeData.iNeonLights != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_NEON_LIGHTS))
sArcadePriceStruct.iNeonLightsPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_NEON_LIGHTS, eArcadeID, sArcadeData.iNeonLights)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Neon Lights to ", sArcadeData.iNeonLights, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_NEON_LIGHTS)), " add $", sArcadePriceStruct.iNeonLightsPrice)
iCost += sArcadePriceStruct.iNeonLightsPrice
ENDIF
ENDIF
sArcadePriceStruct.iScreensPrice = 0
IF eTradeInArcade != eArcadeID
IF sArcadeData.iScreens = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Screens A is free")
ELIF IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
AND sArcadeData.iScreens = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_SCREENS))
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Screens ", sArcadeData.iScreens, " is kept for free")
ELSE
sArcadePriceStruct.iScreensPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_SCREENS, eArcadeID, sArcadeData.iScreens)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: new property, Screens to ", sArcadeData.iScreens, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_SCREENS)), " add $", sArcadePriceStruct.iScreensPrice)
iCost += sArcadePriceStruct.iScreensPrice
ENDIF
ELSE
IF sArcadeData.iScreens != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_SCREENS))
sArcadePriceStruct.iScreensPrice = GET_ARCADE_UPGRADE_COST(eARCADE_MOD_SCREENS, eArcadeID, sArcadeData.iScreens)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: changing Screens to ", sArcadeData.iScreens, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_SCREENS)), " add $", sArcadePriceStruct.iScreensPrice)
iCost += sArcadePriceStruct.iScreensPrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
FUNC INT CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES(AUTO_SHOP_PROPERTY_ID eAutoShopID, AUTO_SHOP_PRICE_STRUCT &sAutoShopPriceStruct)
AUTO_SHOP_PROPERTY_ID eTradeInAutoShop = GET_PLAYERS_OWNED_AUTO_SHOP_PROPERTY(PLAYER_ID())
INT iCost = 0
AUTO_SHOP_DATA_STRUCT sAutoShopData
GET_SCALEFORM_AUTO_SHOP_DATA(sAutoShopData)
// ----- WALL -----
sAutoShopPriceStruct.iWallPrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iWall = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Wall A is free")
ELSE
sAutoShopPriceStruct.iWallPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_WALL, eAutoShopID, sAutoShopData.iWall)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Wall to ", sAutoShopData.iWall, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_WALL)), " add $", sAutoShopPriceStruct.iWallPrice)
iCost += sAutoShopPriceStruct.iWallPrice
ENDIF
ELSE
IF sAutoShopData.iWall != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_WALL))
sAutoShopPriceStruct.iWallPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_WALL, eAutoShopID, sAutoShopData.iWall)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Wall to ", sAutoShopData.iWall, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_WALL)), " add $", sAutoShopPriceStruct.iWallPrice)
iCost += sAutoShopPriceStruct.iWallPrice
ENDIF
ENDIF
// ----- TINT -----
sAutoShopPriceStruct.iTintPrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iTint = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Tint A is free")
ELSE
sAutoShopPriceStruct.iTintPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_TINT, eAutoShopID, sAutoShopData.iTint)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Tint to ", sAutoShopData.iTint, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_TINT)), " add $", sAutoShopPriceStruct.iTintPrice)
iCost += sAutoShopPriceStruct.iTintPrice
ENDIF
ELSE
IF sAutoShopData.iTint != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_TINT))
sAutoShopPriceStruct.iTintPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_TINT, eAutoShopID, sAutoShopData.iTint)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Tint to ", sAutoShopData.iTint, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_TINT)), " add $", sAutoShopPriceStruct.iTintPrice)
iCost += sAutoShopPriceStruct.iTintPrice
ENDIF
ENDIF
// ----- EMBLEM -----
sAutoShopPriceStruct.iEmblemPrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iEmblem = 0 // Crew
OR sAutoShopData.iEmblem = 1 // Hot Rod
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Emblem A and B is free")
ELSE
sAutoShopPriceStruct.iEmblemPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_EMBLEM, eAutoShopID, sAutoShopData.iEmblem)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Emblem to ", sAutoShopData.iEmblem, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_EMBLEM)), " add $", sAutoShopPriceStruct.iEmblemPrice)
iCost += sAutoShopPriceStruct.iEmblemPrice
ENDIF
ELSE
IF sAutoShopData.iEmblem != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_EMBLEM))
sAutoShopPriceStruct.iEmblemPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_EMBLEM, eAutoShopID, sAutoShopData.iEmblem)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Emblem to ", sAutoShopData.iEmblem, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_EMBLEM)), " add $", sAutoShopPriceStruct.iEmblemPrice)
iCost += sAutoShopPriceStruct.iEmblemPrice
ENDIF
ENDIF
// ----- CREW NAME -----
sAutoShopPriceStruct.iCrewNamePrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iCrewName = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Crew Name A is free")
ELSE
sAutoShopPriceStruct.iCrewNamePrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_CREW_NAME, eAutoShopID, sAutoShopData.iCrewName)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Crew Name to ", sAutoShopData.iCrewName, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CREW_NAME)), " add $", sAutoShopPriceStruct.iCrewNamePrice)
iCost += sAutoShopPriceStruct.iCrewNamePrice
ENDIF
ELSE
IF sAutoShopData.iCrewName != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CREW_NAME))
sAutoShopPriceStruct.iCrewNamePrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_CREW_NAME, eAutoShopID, sAutoShopData.iCrewName)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Crew Name to ", sAutoShopData.iCrewName, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CREW_NAME)), " add $", sAutoShopPriceStruct.iCrewNamePrice)
iCost += sAutoShopPriceStruct.iCrewNamePrice
ENDIF
ENDIF
// ----- STAFF 1 -----
sAutoShopPriceStruct.iStaff1Price = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iStaff1 = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Staff 1 A is free")
ELSE
sAutoShopPriceStruct.iStaff1Price = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_STAFF_ONE, eAutoShopID, sAutoShopData.iStaff1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Staff 1 to ", sAutoShopData.iStaff1, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_ONE)), " add $", sAutoShopPriceStruct.iStaff1Price)
iCost += sAutoShopPriceStruct.iStaff1Price
ENDIF
ELSE
IF sAutoShopData.iStaff1 != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_ONE))
sAutoShopPriceStruct.iStaff1Price = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_STAFF_ONE, eAutoShopID, sAutoShopData.iStaff1)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Staff 1 to ", sAutoShopData.iStaff1, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_ONE)), " add $", sAutoShopPriceStruct.iStaff1Price)
iCost += sAutoShopPriceStruct.iStaff1Price
ENDIF
ENDIF
// ----- STAFF 2 -----
sAutoShopPriceStruct.iStaff2Price = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iStaff2 = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Staff 2 A is free")
ELSE
sAutoShopPriceStruct.iStaff2Price = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_STAFF_TWO, eAutoShopID, sAutoShopData.iStaff2)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, Staff 2 to ", sAutoShopData.iStaff2, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_TWO)), " add $", sAutoShopPriceStruct.iStaff2Price)
iCost += sAutoShopPriceStruct.iStaff2Price
ENDIF
ELSE
IF sAutoShopData.iStaff2 != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_TWO))
sAutoShopPriceStruct.iStaff2Price = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_STAFF_TWO, eAutoShopID, sAutoShopData.iStaff2)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing Staff 2 to ", sAutoShopData.iStaff2, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_TWO)), " add $", sAutoShopPriceStruct.iStaff2Price)
iCost += sAutoShopPriceStruct.iStaff2Price
ENDIF
ENDIF
// ----- CAR LIFT -----
sAutoShopPriceStruct.iCarLiftPrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iCarLift = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, iCarLift A is free")
ELSE
sAutoShopPriceStruct.iCarLiftPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_CAR_LIFT, eAutoShopID, sAutoShopData.iCarLift)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, iCarLift to ", sAutoShopData.iCarLift, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CAR_LIFT)), " add $", sAutoShopPriceStruct.iCarLiftPrice)
iCost += sAutoShopPriceStruct.iCarLiftPrice
ENDIF
ELSE
IF sAutoShopData.iCarLift != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CAR_LIFT))
sAutoShopPriceStruct.iCarLiftPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_CAR_LIFT, eAutoShopID, sAutoShopData.iCarLift)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing iCarLift to ", sAutoShopData.iCarLift, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CAR_LIFT)), " add $", sAutoShopPriceStruct.iCarLiftPrice)
iCost += sAutoShopPriceStruct.iCarLiftPrice
ENDIF
ENDIF
// ----- PERSONAL QUARTERS -----
sAutoShopPriceStruct.iPersonalQuartersPrice = 0
IF eTradeInAutoShop != eAutoShopID
IF sAutoShopData.iPersonalQuarters = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, iPersonalQuarters A is free")
ELSE
sAutoShopPriceStruct.iPersonalQuartersPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_PERSONAL_QUARTERS, eAutoShopID, sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: new property, iPersonalQuarters to ", sAutoShopData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_PERSONAL_QUARTERS)), " add $", sAutoShopPriceStruct.iPersonalQuartersPrice)
iCost += sAutoShopPriceStruct.iPersonalQuartersPrice
ENDIF
ELSE
IF sAutoShopData.iPersonalQuarters != GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_PERSONAL_QUARTERS))
sAutoShopPriceStruct.iPersonalQuartersPrice = GET_AUTO_SHOP_UPGRADE_COST(AUTO_SHOP_MOD_PERSONAL_QUARTERS, eAutoShopID, sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: changing iPersonalQuarters to ", sAutoShopData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_PERSONAL_QUARTERS)), " add $", sAutoShopPriceStruct.iPersonalQuartersPrice)
iCost += sAutoShopPriceStruct.iPersonalQuartersPrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
#IF FEATURE_FIXER
FUNC INT CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES(FIXER_HQ_ID eFixerHQID, FIXER_HQ_PRICE_STRUCT &ref_sFixerHQPriceStruct)
FIXER_HQ_ID eTradeInFixerHQ = GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())
INT iCost = 0
FIXER_HQ_DATA_STRUCT sFixerHQData
GET_SCALEFORM_FIXER_HQ_DATA(sFixerHQData)
// ----- ART -----
ref_sFixerHQPriceStruct.iArtPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iArt = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, Art 0 is free")
ELSE
ref_sFixerHQPriceStruct.iArtPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_ART, eFixerHQID, sFixerHQData.iArt)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, Art to ", sFixerHQData.iArt, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ART)), " add $", ref_sFixerHQPriceStruct.iArtPrice)
iCost += ref_sFixerHQPriceStruct.iArtPrice
ENDIF
ELSE
IF sFixerHQData.iArt != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ART))
ref_sFixerHQPriceStruct.iArtPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_ART, eFixerHQID, sFixerHQData.iArt)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing Art to ", sFixerHQData.iArt, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ART)), " add $", ref_sFixerHQPriceStruct.iArtPrice)
iCost += ref_sFixerHQPriceStruct.iArtPrice
ENDIF
ENDIF
// ----- WALLPAPER -----
ref_sFixerHQPriceStruct.iWallpaperPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iWallpaper = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iWallpaper 0 is free")
ELSE
ref_sFixerHQPriceStruct.iWallpaperPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_WALLPAPER, eFixerHQID, sFixerHQData.iWallpaper)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iWallpaper to ", sFixerHQData.iWallpaper, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_WALLPAPER)), " add $", ref_sFixerHQPriceStruct.iWallpaperPrice)
iCost += ref_sFixerHQPriceStruct.iWallpaperPrice
ENDIF
ELSE
IF sFixerHQData.iWallpaper != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_WALLPAPER))
ref_sFixerHQPriceStruct.iWallpaperPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_WALLPAPER, eFixerHQID, sFixerHQData.iWallpaper)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing iWallpaper to ", sFixerHQData.iWallpaper, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_WALLPAPER)), " add $", ref_sFixerHQPriceStruct.iWallpaperPrice)
iCost += ref_sFixerHQPriceStruct.iWallpaperPrice
ENDIF
ENDIF
// ----- TINT -----
ref_sFixerHQPriceStruct.iTintPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iTint = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iTint 0 is free")
ELSE
ref_sFixerHQPriceStruct.iTintPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_TINT, eFixerHQID, sFixerHQData.iTint)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iTint to ", sFixerHQData.iTint, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_TINT)), " add $", ref_sFixerHQPriceStruct.iTintPrice)
iCost += ref_sFixerHQPriceStruct.iTintPrice
ENDIF
ELSE
IF sFixerHQData.iTint != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_TINT))
ref_sFixerHQPriceStruct.iTintPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_TINT, eFixerHQID, sFixerHQData.iTint)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing iTint to ", sFixerHQData.iTint, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_TINT)), " add $", ref_sFixerHQPriceStruct.iTintPrice)
iCost += ref_sFixerHQPriceStruct.iTintPrice
ENDIF
ENDIF
// ----- VEHICLE WORKSHOP -----
ref_sFixerHQPriceStruct.iVehWorkshopPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iVehWorkshop = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iVehWorkshop 0 is free")
ELSE
ref_sFixerHQPriceStruct.iVehWorkshopPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_VEH_WORKSHOP, eFixerHQID, sFixerHQData.iVehWorkshop)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iVehWorkshop to ", sFixerHQData.iVehWorkshop, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_VEH_WORKSHOP)), " add $", ref_sFixerHQPriceStruct.iVehWorkshopPrice)
iCost += ref_sFixerHQPriceStruct.iVehWorkshopPrice
ENDIF
ELSE
IF sFixerHQData.iVehWorkshop != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_VEH_WORKSHOP))
ref_sFixerHQPriceStruct.iVehWorkshopPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_VEH_WORKSHOP, eFixerHQID, sFixerHQData.iVehWorkshop)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing iVehWorkshop to ", sFixerHQData.iVehWorkshop, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_VEH_WORKSHOP)), " add $", ref_sFixerHQPriceStruct.iVehWorkshopPrice)
iCost += ref_sFixerHQPriceStruct.iVehWorkshopPrice
ENDIF
ENDIF
// ----- ARMORY -----
ref_sFixerHQPriceStruct.iArmoryPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iArmory = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iArmory 0 is free")
ELSE
ref_sFixerHQPriceStruct.iArmoryPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_ARMORY, eFixerHQID, sFixerHQData.iArmory)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iArmory to ", sFixerHQData.iArmory, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ARMORY)), " add $", ref_sFixerHQPriceStruct.iArmoryPrice)
iCost += ref_sFixerHQPriceStruct.iArmoryPrice
ENDIF
ELSE
IF sFixerHQData.iArmory != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ARMORY))
ref_sFixerHQPriceStruct.iArmoryPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_ARMORY, eFixerHQID, sFixerHQData.iArmory)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing iArmory to ", sFixerHQData.iArmory, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ARMORY)), " add $", ref_sFixerHQPriceStruct.iArmoryPrice)
iCost += ref_sFixerHQPriceStruct.iArmoryPrice
ENDIF
ENDIF
// ----- PERSONAL QUARTERS -----
ref_sFixerHQPriceStruct.iPersonalQuartersPrice = 0
IF eTradeInFixerHQ != eFixerHQID
IF sFixerHQData.iPersonalQuarters = 0
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iPersonalQuarters 0 is free")
ELSE
ref_sFixerHQPriceStruct.iPersonalQuartersPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS, eFixerHQID, sFixerHQData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: new property, iPersonalQuarters to ", sFixerHQData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS)), " add $", ref_sFixerHQPriceStruct.iPersonalQuartersPrice)
iCost += ref_sFixerHQPriceStruct.iPersonalQuartersPrice
ENDIF
ELSE
IF sFixerHQData.iPersonalQuarters != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS))
ref_sFixerHQPriceStruct.iPersonalQuartersPrice = GET_FIXER_HQ_UPGRADE_COST(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS, eFixerHQID, sFixerHQData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: changing iPersonalQuarters to ", sFixerHQData.iPersonalQuarters, " from ", GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS)), " add $", ref_sFixerHQPriceStruct.iPersonalQuartersPrice)
iCost += ref_sFixerHQPriceStruct.iPersonalQuartersPrice
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES: Total cost of changes: $", iCost)
RETURN iCost
ENDFUNC
#ENDIF
PROC SAFE_NETWORK_EARN_FROM_PROPERTY(INT amount, INT propertyType)
CONST_INT iEARN_FROM_PROPERTY_LIMIT 2500000
IF amount >= iEARN_FROM_PROPERTY_LIMIT
NETWORK_EARN_FROM_PROPERTY(iEARN_FROM_PROPERTY_LIMIT-1, propertyType)
amount -= iEARN_FROM_PROPERTY_LIMIT-1
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
NETWORK_EARN_FROM_PROPERTY(amount, propertyType)
ENDPROC
PROC SAFE_NETWORK_EARN_FROM_HANGAR_TRADE(INT amount, INT propertyHash)
CONST_INT iEARN_FROM_HANGAR_LIMIT 2500000
IF amount >= iEARN_FROM_HANGAR_LIMIT
NETWORK_EARN_FROM_HANGAR_TRADE(iEARN_FROM_HANGAR_LIMIT-1, propertyHash)
amount -= iEARN_FROM_HANGAR_LIMIT-1
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
NETWORK_EARN_FROM_HANGAR_TRADE(amount, propertyHash)
ENDPROC
FUNC BOOL IS_PLAYER_ON_MISSION_BLOCKING_GANG_CREATION()
#IF FEATURE_COPS_N_CROOKS
IF GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) = FMMC_TYPE_DISPATCH
RETURN TRUE
ENDIF
#ENDIF
RETURN FALSE
ENDFUNC
PROC BUY_MP_PROPERTY_FROM_WEBSITE(INT iBuyPropertyIndex)
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
INT iResultSlot = -1, i, iOfficeRenovationCost, iClubhouseRenovationCost, iOfficeGarageRenovationCost
BOOL bUpgradingOffice = FALSE, bUpgradingClubhouse = FALSE, bUpgradingOfficeGarage = FALSE
IF iBuyPropertyIndex < 0
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iBuyPropertyIndex invalid, bailing")
EXIT //bailout
ENDIF
IF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_BKRCLNT")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ENDIF
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank")
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: failed to process transaction - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
#IF FEATURE_DLC_1_2022
IF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BIKER_CLIENT_VEHICLE_MODIFICATION()) != 0
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ELIF GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) = FMMC_TYPE_BAR_RESUPPLY
OR GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID()) = FMMC_TYPE_CLUBHOUSE_CONTRACTS
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
#ENDIF
//MP_PROPERTY_STRUCT propertyDetails
//GET_MP_PROPERTY_DETAILS(propertyDetails,iBuyPropertyIndex)
TEXT_LABEL_15 tLastClickedPropertyIndex = GET_PROPERTY_NAME(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: trying to purchase property #", iBuyPropertyIndex, " \"", tLastClickedPropertyIndex, "\"")
INT iMaxTradeIn = 0
INT iOwned, propval
INT iReplaceSpecificPropertySlot = -1
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
iReplaceSpecificPropertySlot = GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
iOwned = GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
PRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iReplaceSpecificPropertySlot #", iReplaceSpecificPropertySlot, " iOwned =",iOwned, " iBuyPropertyIndex =",iBuyPropertyIndex)
IF iOwned = iBuyPropertyIndex
IF NOT IS_PROPERTY_OFFICE(iOwned)
AND NOT IS_PROPERTY_CLUBHOUSE(iOwned)
AND NOT IS_PROPERTY_OFFICE_GARAGE(iOwned)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ELSE
REPEAT MAX_OWNED_PROPERTIES i
IF iMaxTradeIn < GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
ENDIF
ENDREPEAT
REPEAT MAX_OWNED_PROPERTIES i
iOwned = GET_OWNED_PROPERTY(i)
IF iOwned = iBuyPropertyIndex
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDREPEAT
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: prop value of #", iBuyPropertyIndex, " is propval:$", propval)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
propval = 0
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
propval += CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iStylePrice,
sOffice_price_struct.iPersonnelPrice,
sOffice_price_struct.iNamePrice,
sOffice_price_struct.iFontPrice,
sOffice_price_struct.iColourPrice,
sOffice_price_struct.iGunLockerPrice,
sOffice_price_struct.iVaultPrice,
sOffice_price_struct.iAccommodationPrice,
sOffice_price_struct.iModshopPrice)
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
propval += CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sClubhouse_price_struct.iWallPrice,
sClubhouse_price_struct.iHangingPrice,
sClubhouse_price_struct.iFurniturePrice,
sClubhouse_price_struct.iStylePrice,
sClubhouse_price_struct.iNamePrice,
sClubhouse_price_struct.iFontPrice,
sClubhouse_price_struct.iFontColourPrice,
sClubhouse_price_struct.iHideSignagePrice,
sClubhouse_price_struct.iEmblemPrice,
sClubhouse_price_struct.iGunLockerPrice,
sClubhouse_price_struct.iGaragePrice)
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
propval += CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iGarage1StylePrice,
sOffice_price_struct.iGarage1LightingPrice,
sOffice_price_struct.iGarage1NumberPrice,
sOffice_price_struct.iGarage2StylePrice,
sOffice_price_struct.iGarage2LightingPrice,
sOffice_price_struct.iGarage2NumberPrice,
sOffice_price_struct.iGarage3StylePrice,
sOffice_price_struct.iGarage3LightingPrice,
sOffice_price_struct.iGarage3NumberPrice)
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase valid, attempting index #", iBuyPropertyIndex, " for propval:$", propval)
INT minPendingTransactionValue = propval - iMaxTradeIn
INT finalPendingTransactionValue
INT iPrevModshop
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: min pending: propval:$", propval, " - $", iMaxTradeIn, " = $", minPendingTransactionValue)
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iStylePrice,
sUpgrade_Office_price_struct.iPersonnelPrice,
sUpgrade_Office_price_struct.iNamePrice,
sUpgrade_Office_price_struct.iFontPrice,
sUpgrade_Office_price_struct.iColourPrice,
sUpgrade_Office_price_struct.iGunLockerPrice,
sUpgrade_Office_price_struct.iVaultPrice,
sUpgrade_Office_price_struct.iAccommodationPrice,
sUpgrade_Office_price_struct.iModshopPrice)
iOfficeRenovationCost = minPendingTransactionValue
bUpgradingOffice = TRUE
ENDIF
IF bUpgradingOffice
AND g_bDontCrossRunning
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF iOwned = iBuyPropertyIndex
CLUBHOUSE_PRICE_STRUCT sUpgrade_Clubhouse_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_CLUBHOUSE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Clubhouse_price_struct.iWallPrice,
sUpgrade_Clubhouse_price_struct.iHangingPrice,
sUpgrade_Clubhouse_price_struct.iFurniturePrice,
sUpgrade_Clubhouse_price_struct.iStylePrice,
sUpgrade_Clubhouse_price_struct.iNamePrice,
sUpgrade_Clubhouse_price_struct.iFontPrice,
sUpgrade_Clubhouse_price_struct.iFontColourPrice,
sUpgrade_Clubhouse_price_struct.iHideSignagePrice,
sUpgrade_Clubhouse_price_struct.iEmblemPrice,
sUpgrade_Clubhouse_price_struct.iGunLockerPrice,
sUpgrade_Clubhouse_price_struct.iGaragePrice)
iClubhouseRenovationCost = minPendingTransactionValue
bUpgradingClubhouse = TRUE
ENDIF
IF bUpgradingClubhouse
AND g_bDontCrossRunning
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iGarage1StylePrice,
sUpgrade_Office_price_struct.iGarage1LightingPrice,
sUpgrade_Office_price_struct.iGarage1NumberPrice,
sUpgrade_Office_price_struct.iGarage2StylePrice,
sUpgrade_Office_price_struct.iGarage2LightingPrice,
sUpgrade_Office_price_struct.iGarage2NumberPrice,
sUpgrade_Office_price_struct.iGarage3StylePrice,
sUpgrade_Office_price_struct.iGarage3LightingPrice,
sUpgrade_Office_price_struct.iGarage3NumberPrice)
iOfficeGarageRenovationCost = minPendingTransactionValue
bUpgradingOfficeGarage = TRUE
ENDIF
IF bUpgradingOfficeGarage
AND g_bDontCrossRunning
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
iPrevModshop = GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP)
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
TEXT_LABEL_15 tl_15PropertyName
//is it a debit or refund
IF minPendingTransactionValue >0
//do they have enough money
// IF (iBankBalance+iWalletBalance) < minPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
// IF (minPendingTransactionValue <= 0
// OR (minPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < minPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < minPendingTransactionValue $", minPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), minPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
// ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: min pending: $", minPendingTransactionValue, ", MAX trade val $",iMaxTradeIn)
//BOOL bSmallerGarage
IF IS_PROPERTY_CUSTOMISABLE(iBuyPropertyIndex)
//IS_PROPERTY_CUSTOM_APARTMENT OR OFFICE_GARAGE(iBuyPropertyIndex)
IF DISABLE_INTERIOR_VARIATION(iCustomAptVariant, iBuyPropertyIndex)
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, custom apartment ", iCustomAptVariant, "is disabled")
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
IF (GET_OWNED_PROPERTY(0) > 0
AND iReplaceSpecificPropertySlot = -1 AND NOT (bUpgradingOffice OR bUpgradingClubhouse OR bUpgradingOfficeGarage))
OR ((iReplaceSpecificPropertySlot != -1 AND GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot) > 0)
AND NOT (bUpgradingOffice OR bUpgradingClubhouse OR bUpgradingOfficeGarage))
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,iBuyPropertyIndex,iReplaceSpecificPropertySlot,rpmt_0)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
buttons = NULL
ELSE
IF iReplaceSpecificPropertySlot != -1
iResultSlot = iReplaceSpecificPropertySlot
ELSE
iResultSlot = 0
ENDIF
ENDIF
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_PROPERTY_FROM_WEBSITE: Player backed out of property selection")
EXIT
ELSE
IF bUpgradingOffice
finalPendingTransactionValue = iOfficeRenovationCost
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: upgrade office[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] finalPendingTransactionValue:$", finalPendingTransactionValue)
ELIF bUpgradingClubhouse
finalPendingTransactionValue = iClubhouseRenovationCost
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: upgrade clubhouse[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] finalPendingTransactionValue:$", finalPendingTransactionValue)
ELIF bUpgradingOfficeGarage
finalPendingTransactionValue = iOfficeGarageRenovationCost
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: upgrade office garage[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] finalPendingTransactionValue:$", finalPendingTransactionValue)
ELSE
finalPendingTransactionValue = propval - GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: buy new property[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] propval:$", propval, " - $", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " = finalPendingTransactionValue:$", finalPendingTransactionValue)
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
IF finalPendingTransactionValue < 0 //url:bugstar:2850740
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: floor the money pending for office finalPendingTransactionValue:$", finalPendingTransactionValue)
finalPendingTransactionValue = 0
ENDIF
ENDIF
ENDIF
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " <> finalPendingTransactionValue:$", finalPendingTransactionValue)
// IF (iBankBalance+iWalletBalance+ GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot)) < finalPendingTransactionValue
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash after trade selection [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < finalPendingTransactionValue finalPendingTransactionValue:$", finalPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), finalPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
IF NOT IS_STRING_NULL_OR_EMPTY(g_sOfficeDataStruct.tl63NewOrgName)
AND NOT ARE_STRINGS_EQUAL(g_sOfficeDataStruct.tl63OldOrgName, g_sOfficeDataStruct.tl63NewOrgName)
IF NOT CAN_ORGANIZATION_BE_RENAMED(DEFAULT, finalPendingTransactionValue)
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, organisation cannot be renamed from \"", g_sOfficeDataStruct.tl63OldOrgName, "\" to \"", g_sOfficeDataStruct.tl63NewOrgName, "\"")
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
OR IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
IF DOES_CURRENT_MISSION_USE_GANG_BOSS_FLOW()
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, mission is SVM Flow")
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
OR IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
OR IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF IS_PLAYER_ON_MP_INTRO()
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase failed, player is on MP Intro")
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
#ENDIF
INT iCachedReplaceProperty = GET_OWNED_PROPERTY(iResultSlot)
INT iCachedSellingPrice = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: cached replace property ", iCachedReplaceProperty, ", selling price $", iCachedSellingPrice)
IF USE_SERVER_TRANSACTIONS()
// IF NOT IS_PROPERTY_OFFICE_XX(iBuyPropertyIndex)
INT iVariation = 0
BOOL bStarterPackItem = FALSE
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iBuyPropertyIndex)
iVariation = 1
ELSE
bStarterPackItem = TRUE
ENDIF
ENDIF
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
IF iOwned = iBuyPropertyIndex
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_PROPERTY_KEY_FOR_CATALOGUE(iBuyPropertyIndex, iVariation, bStarterPackItem)
INT iInventoryKey = GET_PROPERTY_INVENTORY_KEY_FOR_CATALOGUE(iResultSlot)
INT iReplaceProperty = GET_OWNED_PROPERTY(iResultSlot)
INT iItemInteriorID, iInventoryInteriorID
IF IS_PROPERTY_CUSTOMISABLE(iBuyPropertyIndex)
//IS_PROPERTY_CUSTOM_APARTMENT OR OFFICE_GARAGE(iBuyPropertyIndex)
INT iItemType = 0
IF GET_BASE_PROPERTY_FROM_PROPERTY(iBuyPropertyIndex) = PROPERTY_OFFICE_2_BASE
AND ((iCustomAptVariant - 1) = 4) //Style 1: "Executive: Rich"
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) != iBuyPropertyIndex
iItemType = 1
ENDIF
ENDIF
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
SWITCH iResultSlot
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage1Style), iBuyPropertyIndex, iItemType)
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage2Style), iBuyPropertyIndex, iItemType)
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage3Style), iBuyPropertyIndex, iItemType)
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_0
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(GET_OFFICE_INTERIOR_FROM_SF(iCustomAptVariant - 1)-1, iBuyPropertyIndex, iItemType)
BREAK
DEFAULT
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(iCustomAptVariant - 1, iBuyPropertyIndex, iItemType)
BREAK
ENDSWITCH
ELSE
iItemInteriorID = GET_PROPERTY_INTERIOR_KEY_FOR_CATALOGUE(-1, iBuyPropertyIndex)
ENDIF
iInventoryInteriorID = GET_PROPERTY_INTERIOR_INVENTORY_KEY_FOR_CATALOGUE(iResultSlot)
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 tlLastClickedPropertyIndex = GET_PROPERTY_NAME(iBuyPropertyIndex)
IF IS_STRING_NULL_OR_EMPTY(tlLastClickedPropertyIndex)
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: label for last clicked property index #", iBuyPropertyIndex, " is empty!")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: label for last clicked property index #", iBuyPropertyIndex, " is \"", tlLastClickedPropertyIndex, "\" (iReplaceProperty: ", iReplaceProperty, ")")
ENDIF
#ENDIF
//for selling property
INT iSellingPrice = 0
INT iSellingItemId = 0
IF (iReplaceProperty > 0)
INT iSellingPropertyVariation = 0
BOOL bSellingPropertyStarterPackItem = FALSE
iSellingPrice = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iReplaceProperty)
IF (iResultSlot = 0 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_0))
OR (iResultSlot = 1 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_1))
OR (iResultSlot = 2 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_2))
OR (iResultSlot = 3 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_3))
OR (iResultSlot = 4 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_4))
OR (iResultSlot = PROPERTY_OWNED_SLOT_APT_6 AND GET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_5))
#IF FEATURE_SUMMER_2020
OR (iResultSlot = PROPERTY_OWNED_SLOT_APT_7 AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_7))
OR (iResultSlot = PROPERTY_OWNED_SLOT_APT_8 AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_8))
#ENDIF
OR (iResultSlot = PROPERTY_OWNED_SLOT_APT_9 AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_9))
OR (iResultSlot = PROPERTY_OWNED_SLOT_APT_10 AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_10)) //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: free property stat set for iResultSlot:", iResultSlot)
IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iReplaceProperty)
iSellingPropertyVariation = 1
ELSE
bSellingPropertyStarterPackItem = TRUE
ENDIF
iSellingPrice = 0
ELIF (iSellingPrice = 0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: no free property stat to get for \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iSellingPrice:$FREE")
IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iReplaceProperty)
iSellingPropertyVariation = 1
ELSE
bSellingPropertyStarterPackItem = TRUE
ENDIF
iSellingPrice = 0
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: no free property stat to get for \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iSellingPrice:$", iSellingPrice)
ENDIF
ENDIF
iSellingItemId = GET_PROPERTY_KEY_FOR_CATALOGUE(iReplaceProperty, iSellingPropertyVariation, bSellingPropertyStarterPackItem)
IF (iReplaceProperty = iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Renovating in property slot \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\" itemID ", iSellingItemId, " with sale value $", iSellingPrice)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Trading in property slot \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\" itemID ", iSellingItemId, " with sale value $", iSellingPrice)
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 tlOwnedResultSlotProperty = GET_PROPERTY_NAME(iReplaceProperty)
IF IS_STRING_NULL_OR_EMPTY(tlOwnedResultSlotProperty)
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: label for traded property[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] index #", iReplaceProperty, " is empty!")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: label for traded property[\"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"] index #", iReplaceProperty, " is \"", tlLastClickedPropertyIndex, "\"")
ENDIF
#ENDIF
ENDIF
//
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR PROPERTY
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, propval, iResultSlot, CATEGORY_INVENTORY_PROPERTIE, NET_SHOP_ACTION_BUY_PROPERTY, iItemId, iInventoryKey, 0, iSellingPrice, iSellingItemId, NULL, iItemInteriorID, iInventoryInteriorID)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: success!!")
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
BREAK
ENDSWITCH
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
CDEBUG1LN(DEBUG_INTERNET, "[EXEC_BYPASS] Setting interior var to: ", iStyle)
IF iResultSlot >= 0
AND iResultSlot <= MAX_MP_PROPERTIES-1
FORCE_CLEAN_APARTMENT_MESS_DATA(iResultSlot)
ENDIF
IF GET_OWNED_PROPERTY_VARIATION(iResultSlot) != iStyle
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_DECOR)
ENDIF
SET_INTERIOR_STAT_FOR_CUSTOM_APT(PROPERTY_OWNED_SLOT_OFFICE_0, iStyle)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iPersonnel)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_MALE_PA)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS_OFFICE_MALE_PA TRUE")
ELSE
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_MALE_PA)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS_OFFICE_MALE_PA FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_GENDER_SET)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_GENDER_SET)
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_NEW_CLOTHES)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_NEW_CLOTHES)
ENDIF
//SET_MP_INT_CHARACTER_STAT(MP_STAT_FONT_PLAYER_OFFICE, iFont)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_COLOUR_PLAYER_OFFICE, iColour)
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOfficeNameFont = iFont
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOfficeNameFontColour = iColour
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iFont: ", iFont)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iColour: ", iColour)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
IF NOT IS_OFFICE_ACCOMMODATION_PURCHASED()
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_ADDQUARTERS)
ENDIF
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_ACCOMMODATION, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_LIVINGQ_PURCHASED)
ELSE
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_ACCOMMODATION, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_LIVINGQ_PURCHASED)
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(g_sOfficeDataStruct.tl63NewOrgName)
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
AND NOT GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
GB_SET_ORGANIZATION_NAME(g_sOfficeDataStruct.tl63NewOrgName,GB_ORGANISATION_NAME_TYPE_OFFICE, TRUE)
GB_SET_OFFICE_NAME(g_sOfficeDataStruct.tl63NewOrgName, TRUE)
//GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
GB_SEND_NAME_CHANGE_EVENT()
ELSE
GB_SET_OFFICE_NAME(g_sOfficeDataStruct.tl63NewOrgName, TRUE)
ENDIF
ELSE
TEXT_LABEL_63 tlOfficeName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_OFFICE_NAME, MP_STAT_GB_OFFICE_NAME2)
IF IS_STRING_NULL_OR_EMPTY(tlOfficeName)
STRING sDefaultOrgName = GET_DEFAULT_GANG_NAME(PLAYER_ID(), TRUE)
GB_SET_OFFICE_NAME(sDefaultOrgName, TRUE)
ENDIF
ENDIF
BOOL bUpgradingOfficeModshop = FALSE
IF IS_OFFICE_MODSHOP_PURCHASED()
IF iModshop != iPrevModshop
bUpgradingOfficeModshop = TRUE
ENDIF
ENDIF
IF !bUpgradingOffice
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
ENDIF
ENDIF
IF !HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
IF IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY)
AND bUpgradingOffice
AND NOT bUpgradingOfficeModshop
IF IS_PLAYER_IN_APARTMENT_WITH_BUDDY()
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
ELSE
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW set FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
ENDIF
g_iCustomAptVariantPIM = iStyle
SET_UPDATE_CUSTOM_APT(TRUE)
ELIF bUpgradingOffice
g_iCustomAptVariantPIM = iStyle
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office purchase valid for ", iBuyPropertyIndex, " transactions unavailable! going to purchase success")
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingOffice, FALSE, FALSE, rpmt_0)
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(iBuyPropertyIndex, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
CDEBUG1LN(DEBUG_INTERNET, "[EXEC_BYPASS] Setting interior var to: ", iColourScheme)
IF iResultSlot >= 0
AND iResultSlot <= MAX_MP_PROPERTIES-1
FORCE_CLEAN_APARTMENT_MESS_DATA(iResultSlot)
ENDIF
//IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iWall)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 1)
//ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 0)
//ENDIF
//IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHanging)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 1)
//ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 0)
//ENDIF
//IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iFurniture)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 1)
//ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 0)
//ENDIF
SET_INTERIOR_STAT_FOR_CUSTOM_APT(PROPERTY_OWNED_SLOT_CLUBHOUSE, iColourScheme)
IF GET_BASE_PROPERTY_FROM_PROPERTY(iBuyPropertyIndex) = PROPERTY_CLUBHOUSE_1_BASE_A
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL TRUE")
ELIF GET_BASE_PROPERTY_FROM_PROPERTY(iBuyPropertyIndex) = PROPERTY_CLUBHOUSE_7_BASE_B
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL FALSE")
ELSE
//
ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_GENDER_SET)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_GENDER_SET)
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_NEW_CLOTHES)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_NEW_CLOTHES)
// ENDIF
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FONT, iFont)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_COLOUR, iFontColour)
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseNameFont = iFont
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseNameFontColour = iFontColour
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].bClubhouseHideName = iHideSinage
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iFont: ", iFont)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iColour: ", iFontColour)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iHideSinage: ", iHideSinage)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_EMBLEM, iEmblem)
//IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHideSinage)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE, 1)
//ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE, 0)
//ENDIF
//
//IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GUNLOCKER, 1)
//ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GUNLOCKER, 0)
//ENDIF
//
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGarage)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GARAGE, 1)
SET_PLAYER_OWNS_CLUBHOUSE_MOD_BOOTH(TRUE)
ELSE
//SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GARAGE, 0)
SET_PLAYER_OWNS_CLUBHOUSE_MOD_BOOTH(FALSE)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
SET_PLAYER_OWNS_CLUBHOUSE_GUN_LOCKER(TRUE)
ELSE
SET_PLAYER_OWNS_CLUBHOUSE_GUN_LOCKER(FALSE)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iWall)
SET_PLAYER_CLUBHOUSE_WALL_STYLE(TRUE)
ELSE
SET_PLAYER_CLUBHOUSE_WALL_STYLE(FALSE)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHanging)
SET_PLAYER_CLUBHOUSE_WALL_HANGING_STYLE(TRUE)
ELSE
SET_PLAYER_CLUBHOUSE_WALL_HANGING_STYLE(FALSE)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iFurniture)
SET_PLAYER_CLUBHOUSE_FURNISHINGS_STYLE(TRUE)
ELSE
SET_PLAYER_CLUBHOUSE_FURNISHINGS_STYLE(FALSE)
ENDIF
SET_PLAYER_CLUBHOUSE_MURAL_STYLE(iColourScheme)
// IF NOT IS_STRING_NULL_OR_EMPTY(g_sClubhouseDataStruct.tl63NewSignage)
// IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
// GB_SET_ORGANIZATION_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
// GB_SET_MC_CLUBHOUSE_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
// GB_SEND_NAME_CHANGE_EVENT()
// ELSE
// GB_SET_MC_CLUBHOUSE_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
// ENDIF
// ELSE
// TEXT_LABEL_63 tlClubhouseName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_MC_CLBHOSE_NAME, MP_STAT_MC_CLBHOSE_NAME2)
// IF IS_STRING_NULL_OR_EMPTY(tlClubhouseName)
// GB_SET_MC_CLUBHOUSE_NAME(GET_DEFAULT_GANG_NAME(PLAYER_ID()), TRUE)
// ENDIF
// ENDIF
// IF !bUpgradingClubhouse
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_Garage_DOOR_OPENED)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_Garage_DOOR_OPENED)
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_Garage_DOOR_OPENED)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_Garage_DOOR_OPENED)
// ENDIF
// ENDIF
IF !HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
IF IS_PROPERTY_CLUBHOUSE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY)
AND bUpgradingClubhouse
IF IS_PLAYER_IN_APARTMENT_WITH_BUDDY()
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
ELSE
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW set FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
ENDIF
g_iCustomAptVariantPIM = iColourScheme
SET_UPDATE_CUSTOM_APT(TRUE)
ELIF bUpgradingClubhouse
g_iCustomAptVariantPIM = iColourScheme
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
ENDIF
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[PROPERTY_OWNED_SLOT_CLUBHOUSE] = g_iCustomAptVariantPIM
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: clubhouse purchase valid for ", iBuyPropertyIndex, " transactions unavailable! going to purchase success")
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingClubhouse, FALSE, FALSE, rpmt_0)
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
CDEBUG1LN(DEBUG_INTERNET, "[EXEC_BYPASS] Setting interior var to: ", iStyle)
IF iResultSlot >= 0
AND iResultSlot <= MAX_MP_PROPERTIES-1
FORCE_CLEAN_APARTMENT_MESS_DATA(iResultSlot)
ENDIF
PRINTLN("Setting iGarage1Style: ", iGarage1Style, " iGarage1Lighting: ",iGarage1Lighting, " iGarage1Number: ", iGarage1Number, " iModshop: ", iModshop)
PRINTLN("Setting iGarage2Style: ", iGarage2Style, " iGarage2Lighting: ",iGarage2Lighting, " iGarage2Number: ", iGarage2Number, " iModshop: ", iModshop)
PRINTLN("Setting iGarage3Style: ", iGarage3Style, " iGarage3Lighting: ",iGarage3Lighting, " iGarage3Number: ", iGarage3Number, " iModshop: ", iModshop)
SET_PLAYER_OFFICE_GARAGE_LVL1_INTERIOR_FLAGS(iGarage1Number, iGarage1Lighting, iGarage1Style, iModshop)
SET_PLAYER_OFFICE_GARAGE_LVL2_INTERIOR_FLAGS(iGarage2Number, iGarage2Lighting, iGarage2Style, iModshop)
SET_PLAYER_OFFICE_GARAGE_LVL3_INTERIOR_FLAGS(iGarage3Number, iGarage3Lighting, iGarage3Style, iModshop)
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND bUpgradingOfficeGarage
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
ENDIF
// IF GET_OWNED_PROPERTY_VARIATION(iResultSlot) != iStyle
// SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_DECOR)
// ENDIF
// SET_INTERIOR_STAT_FOR_CUSTOM_APT(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_0, iStyle)
// IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iPersonnel)
// //SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GARAGE_PERSONNEL, 1)
// SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_GARAGE_MALE_PA)
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS_OFFICE_GARAGE_MALE_PA TRUE")
// ELSE
// //SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GARAGE_PERSONNEL, 0)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_GARAGE_MALE_PA)
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS_OFFICE_GARAGE_MALE_PA FALSE")
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_PA_GENDER_SET)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_PA_GENDER_SET)
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_PA_NEW_CLOTHES)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_PA_NEW_CLOTHES)
// ENDIF
//SET_MP_INT_CHARACTER_STAT(MP_STAT_FONT_PLAYER_OFFICE_GARAGE, iFont)
//SET_MP_INT_CHARACTER_STAT(MP_STAT_COLOUR_PLAYER_OFFICE_GARAGE, iColour)
// GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOFFICE_GARAGENameFont = iFont
// GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOFFICE_GARAGENameFontColour = iColour
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iFont: ", iFont)
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iColour: ", iColour)
// IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
// IF NOT IS_OFFICE_GARAGE_ACCOMMODATION_PURCHASED()
// SET_BIT(g_iOFFICE_GARAGEPersonalAssistantSpeechBitset, OFF_PA_SPEECH_ADDQUARTERS)
// ENDIF
// //SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GARAGE_ACCOMMODATION, 1)
// SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_LIVINGQ_PURCHASED)
// ELSE
// //SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GARAGE_ACCOMMODATION, 0)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_LIVINGQ_PURCHASED)
// ENDIF
//
// IF NOT IS_STRING_NULL_OR_EMPTY(g_sOFFICE_GARAGEDataStruct.tl63NewOrgName)
// IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
// AND NOT GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
// GB_SET_ORGANIZATION_NAME(g_sOFFICE_GARAGEDataStruct.tl63NewOrgName,GB_ORGANISATION_NAME_TYPE_OFFICE_GARAGE, TRUE)
// GB_SET_OFFICE_GARAGE_NAME(g_sOFFICE_GARAGEDataStruct.tl63NewOrgName, TRUE)
// //GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
// GB_SEND_NAME_CHANGE_EVENT()
// ELSE
// GB_SET_OFFICE_GARAGE_NAME(g_sOFFICE_GARAGEDataStruct.tl63NewOrgName, TRUE)
// ENDIF
// ELSE
// TEXT_LABEL_63 tlOFFICE_GARAGEName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_OFFICE_GARAGE_NAME, MP_STAT_GB_OFFICE_GARAGE_NAME2)
// IF IS_STRING_NULL_OR_EMPTY(tlOFFICE_GARAGEName)
// STRING sDefaultOrgName = GET_DEFAULT_GANG_NAME(PLAYER_ID(), TRUE)
// GB_SET_OFFICE_GARAGE_NAME(sDefaultOrgName, TRUE)
// ENDIF
// ENDIF
//
// IF !bUpgradingOfficeGarage
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
// ENDIF
// ENDIF
//
// IF !HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
// SET_CUSTOM_WEAPON_LOADOUT(FALSE)
// RESET_CUSTOM_WEAPON_LOADOUT_STATS()
// ENDIF
IF IS_PROPERTY_OFFICE_GARAGE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY)
AND bUpgradingOfficeGarage
IF IS_PLAYER_IN_APARTMENT_WITH_BUDDY()
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
ELSE
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW set FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW set FALSE")
ENDIF
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
ENDIF
// IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_RENOVATE)
// SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_RENOVATE)
// ENDIF
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
g_iCustomAptVariantPIM = iStyle
SET_UPDATE_CUSTOM_APT(TRUE)
ENDIF
ELIF bUpgradingOfficeGarage
g_iCustomAptVariantPIM = iStyle
// IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_RENOVATE)
// SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_GARAGE_RENOVATE)
// ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office garage purchase valid for ", iBuyPropertyIndex, " transactions unavailable! going to purchase success")
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingOfficeGarage, FALSE, FALSE, rpmt_0)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, FALSE, FALSE, FALSE, rpmt_0)
ENDIF
// IF finalPendingTransactionValue != 0
// AND GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY() > 0 // 1633010
//
// INT itradeval = propval - iMaxTradeIn
//
// IF itradeval > 0 //its a cost
// //flip it around so you tell them how much it will save them
// itradeval = propval - itradeval
// //ELSE // its a profit
// // itradeval = -pendingTransactionValue//make sure its correct 1632591
// ENDIF
//
// IF GET_PROPERTY_GARAGE_SIZE(iBuyPropertyIndex) < GET_PROPERTY_GARAGE_SIZE()
// bSmallerGarage = TRUE
// ENDIF
//
// IF NOT BLOCKING_IS_PROPERTY_OVERWRITE_OK(itradeval,bSmallerGarage)
// GO_TO_WEBSITE("WWW_DYNASTY8REALESTATE_COM_S_PURCHASE_D_ERROR")
// mpPropertySiteFailReason = MPSFR_CANCELED
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
//
// EXIT
//
// ENDIF
// ENDIF
//GIVE_LOCAL_PLAYER_FM_CASH(-pendingTransasctionValue) //if its a refund then its a negative value already
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: final:$", finalPendingTransactionValue)
IF HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
INT iReplaceProperty = GET_OWNED_PROPERTY(iResultSlot)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iReplaceProperty)
SWITCH iReplaceProperty
CASE PROPERTY_OFFICE_2_BASE SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_MAZE_BANK_WEST_EXECUTIVE_OFFICE, FALSE) BREAK
CASE PROPERTY_CLUBHOUSE_4_BASE_A SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_GREAT_CHAPARRAL_BIKER_CLUBHOUSE, FALSE) BREAK
CASE PROPERTY_LOW_APT_2 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_1561_SAN_VITAS_STREET_APARTMENT, FALSE) BREAK
CASE PROPERTY_GARAGE_NEW_19 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_1337_EXCEPTIONALISTS_WAY_10_CAR_GARAGE, FALSE) BREAK
ENDSWITCH
ENDIF
ENDIF
IF finalPendingTransactionValue >= 0
AND (finalPendingTransactionValue = 0
OR (finalPendingTransactionValue > 0 AND (USE_SERVER_TRANSACTIONS() OR NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue,FALSE,TRUE,FALSE))))
// INCREMENT_BY_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_SPENT_PROPERTY,pendingTransactionValue)
//NETWORK_SPENT_FROM_PROPERTY(-pendingTransactionValue, pendingTransactionValue)
tl_15PropertyName = GET_PROPERTY_NAME(iResultSlot)
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
//NETWORK_BUY_PROPERTY(finalPendingTransactionValue, GET_HASH_KEY(tl_15PropertyName),FALSE,TRUE)
IF iCachedReplaceProperty > 0
INT iSellingPrice = iCachedSellingPrice //GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot)
IF iCachedSellingPrice >= 0
AND NOT (bUpgradingOffice OR bUpgradingClubhouse OR bUpgradingOfficeGarage)
IF NOT IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn from office when buying free office set to zero :$", iSellingPrice, " ", tl_15PropertyName)
iSellingPrice = 0
ENDIF
ENDIF
IF iSellingPrice >= 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
tl_15PropertyName = GET_PROPERTY_NAME(iCachedReplaceProperty)
SAFE_NETWORK_EARN_FROM_PROPERTY(iSellingPrice, GET_HASH_KEY(tl_15PropertyName))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn from property:$", iSellingPrice, " ", tl_15PropertyName)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn nothing from property:$", iSellingPrice, " ", tl_15PropertyName, " as was free")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn nothing from clubhouse")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn nothing from property:$", iCachedSellingPrice, " ", tl_15PropertyName,
PICK_STRING(bUpgradingOffice, ", bUpgradingOffice", ", not bUpgradingOffice"),
PICK_STRING(bUpgradingClubhouse, ", bUpgradingClubhouse", ", not bUpgradingClubhouse"),
PICK_STRING(bUpgradingOfficeGarage, ", bUpgradingOfficeGarage", ", not bUpgradingOfficeGarage"))
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn nothing, not trading")
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
SPEND_OFFICE_AND_WAREHOUSE data
IF NOT bUpgradingOffice
data.m_Location = iBuyPropertyIndex
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_LocationAmount = 0
ENDIF
data.m_Style = iStyle
data.m_StyleAmount = sOffice_price_struct.iStylePrice
data.m_PaGender = GET_GENDER_METRIC_FROM_PERSONEL_INT(iPersonnel)
data.m_PaGenderAmount = sOffice_price_struct.iPersonnelPrice
data.m_Signage = g_sOfficeDataStruct.iOfficeNameID
data.m_SignageAmount = (sOffice_price_struct.iNamePrice+sOffice_price_struct.iFontPrice+sOffice_price_struct.iColourPrice)
data.m_GunLocker = iGunLocker
data.m_GunLockerAmount = sOffice_price_struct.iGunLockerPrice
data.m_Vault = iVault
data.m_VaultAmount = sOffice_price_struct.iVaultPrice
data.m_PersonalQuarters = iAccommodation
data.m_PersonalQuartersAmount = sOffice_price_struct.iAccommodationPrice
data.m_ModShop = iModshop
data.m_ModShopAmount = sOffice_price_struct.iModshopPrice
INT iAmount = (data.m_LocationAmount+data.m_StyleAmount+data.m_PaGenderAmount+data.m_SignageAmount+data.m_GunLockerAmount+data.m_VaultAmount+data.m_PersonalQuartersAmount+data.m_ModShopAmount)
NETWORK_SPENT_PURCHASE_OFFICE_PROPERTY(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Buying office for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ELSE
INT iAmount
data.m_Location = iBuyPropertyIndex
//IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
//ELSE
// data.m_LocationAmount = 0
//ENDIF
//iAmount = data.m_LocationAmount <-- WE DON'T ADD THIS FOR UPGRADE !
IF (sOffice_price_struct.iStylePrice >= 0)
data.m_Style = iStyle
data.m_StyleAmount = sOffice_price_struct.iStylePrice
iAmount += data.m_StyleAmount
ENDIF
IF (sOffice_price_struct.iPersonnelPrice >= 0)
data.m_PaGender = GET_GENDER_METRIC_FROM_PERSONEL_INT(iPersonnel)
data.m_PaGenderAmount = sOffice_price_struct.iPersonnelPrice
iAmount += data.m_PaGenderAmount
ENDIF
INT iSignageAmount = sOffice_price_struct.iNamePrice+sOffice_price_struct.iFontPrice+sOffice_price_struct.iColourPrice
IF (iSignageAmount != 0)
data.m_Signage = g_sOfficeDataStruct.iOfficeNameID
data.m_SignageAmount = iSignageAmount
iAmount += data.m_SignageAmount
ENDIF
IF (sOffice_price_struct.iGunLockerPrice >= 0)
data.m_GunLocker = iGunLocker
data.m_GunLockerAmount = sOffice_price_struct.iGunLockerPrice
iAmount += data.m_GunLockerAmount
ENDIF
IF (sOffice_price_struct.iVaultPrice >= 0)
data.m_Vault = iVault
data.m_VaultAmount = sOffice_price_struct.iVaultPrice
iAmount += data.m_VaultAmount
ENDIF
IF (sOffice_price_struct.iAccommodationPrice >= 0)
data.m_PersonalQuarters = iAccommodation
data.m_PersonalQuartersAmount = sOffice_price_struct.iAccommodationPrice
iAmount += data.m_PersonalQuartersAmount
ENDIF
IF (sOffice_price_struct.iModshopPrice >= 0)
data.m_ModShop = iModshop
data.m_ModShopAmount = sOffice_price_struct.iModshopPrice
iAmount += data.m_ModShopAmount
ENDIF
NETWORK_SPENT_UPGRADE_OFFICE_PROPERTY(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Upgrading office for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF propval >= 0
OR finalPendingTransactionValue > 0
OR SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
OR GET_MP_PROPERTY_VALUE(iBuyPropertyIndex) = 0
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(iBuyPropertyIndex, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
INT iPropertyVariation = 0
BOOL bStarterPackItem = FALSE
// IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iBuyPropertyIndex)
// iPropertyVariation = 1
// ELSE
// bStarterPackItem = TRUE
// ENDIF
// ENDIF
SPEND_CLUB_HOUSE data
IF NOT bUpgradingClubhouse
IF iCachedReplaceProperty != 0
INT iSellingPropertyVariation = 0
BOOL bSellingPropertyStarterPackItem = FALSE
// iCachedReplacePropertyPrice -= GET_VALUE_OF_CURRENTLY_OWNED_CLUBHOUSE_MODS(PROPERTY_OWNED_SLOT_CLUBHOUSE, TRUE)
// IF iCachedReplacePropertyPrice = 0
// IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iCachedReplaceProperty)
// iSellingPropertyVariation = 1
// ELSE
// bSellingPropertyStarterPackItem = TRUE
// ENDIF
// ENDIF
SPEND_CLUB_HOUSE earnData
earnData.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iCachedReplaceProperty, iSellingPropertyVariation, bSellingPropertyStarterPackItem)
earnData.m_property_id_amount = iCachedSellingPrice
earnData.m_mural_type = g_sClubhouseDataStruct.iColourScheme
earnData.m_mural_type_amount = -1
earnData.m_wall_style = g_sClubhouseDataStruct.iWall
earnData.m_wall_style_amount = -1
earnData.m_wall_hanging_style = g_sClubhouseDataStruct.iHanging
earnData.m_wall_hanging_style_amount = -1
earnData.m_furniture_style = g_sClubhouseDataStruct.iFurniture
earnData.m_furniture_style_amount = -1
earnData.m_emblem = g_sClubhouseDataStruct.iEmblem
earnData.m_emblem_amount = -1
earnData.m_gun_locker = g_sClubhouseDataStruct.iGunLocker
earnData.m_gun_locker_amount = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_LOCKER_GUN, g_sClubhouseDataStruct.iGunLocker)
earnData.m_mod_shop = g_sClubhouseDataStruct.iGarage
earnData.m_mod_shop_amount = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_GARAGE, g_sClubhouseDataStruct.iGarage)
earnData.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
earnData.m_signage_amount = -1
earnData.m_font = g_sClubhouseDataStruct.iFont
earnData.m_font_amount = -1
NETWORK_EARN_PURCHASE_CLUB_HOUSE(iCachedSellingPrice, earnData)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from Clubhouse for iAmount:$", iCachedSellingPrice, " - A")
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
ENDIF
data.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iBuyPropertyIndex, iPropertyVariation, bStarterPackItem)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_property_id_amount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_property_id_amount = 0
ENDIF
data.m_mural_type = iColourScheme
data.m_mural_type_amount = sClubhouse_price_struct.iStylePrice
data.m_wall_style = iWall
data.m_wall_style_amount = sClubhouse_price_struct.iWallPrice
data.m_wall_hanging_style = iHanging
data.m_wall_hanging_style_amount = sClubhouse_price_struct.iHangingPrice
data.m_furniture_style = iFurniture
data.m_furniture_style_amount = sClubhouse_price_struct.iFurniturePrice
data.m_emblem = iEmblem
data.m_emblem_amount = sClubhouse_price_struct.iEmblemPrice
IF (sClubhouse_price_struct.iGunLockerPrice >= 0)
data.m_gun_locker = iGunLocker
data.m_gun_locker_amount = sClubhouse_price_struct.iGunLockerPrice
ENDIF
IF (sClubhouse_price_struct.iGaragePrice >= 0)
data.m_mod_shop = iGarage
data.m_mod_shop_amount = sClubhouse_price_struct.iGaragePrice
ENDIF
data.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
data.m_signage_amount = sClubhouse_price_struct.iNamePrice
data.m_font = iFont
data.m_font_amount = sClubhouse_price_struct.iFontPrice
INT iAmount = 0
IF (data.m_property_id_amount != -1) iAmount += data.m_property_id_amount ENDIF
IF (data.m_mural_type_amount != -1) iAmount += data.m_mural_type_amount ENDIF
IF (data.m_wall_style_amount != -1) iAmount += data.m_wall_style_amount ENDIF
IF (data.m_wall_hanging_style_amount != -1) iAmount += data.m_wall_hanging_style_amount ENDIF
IF (data.m_furniture_style_amount != -1) iAmount += data.m_furniture_style_amount ENDIF
IF (data.m_emblem_amount != -1) iAmount += data.m_emblem_amount ENDIF
IF (data.m_gun_locker_amount != -1) iAmount += data.m_gun_locker_amount ENDIF
IF (data.m_mod_shop_amount != -1) iAmount += data.m_mod_shop_amount ENDIF
IF (data.m_signage_amount != -1) iAmount += data.m_signage_amount ENDIF
IF (data.m_font_amount != -1) iAmount += data.m_font_amount ENDIF
NETWORK_SPENT_PURCHASE_CLUB_HOUSE(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Buying Clubhouse for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval, " iCachedSellingPrice:$", iCachedSellingPrice)
ELSE
INT iAmount = 0
// data.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iBuyPropertyIndex, iPropertyVariation)
IF (sClubhouse_price_struct.iStylePrice >= 0)
data.m_mural_type = iColourScheme
data.m_mural_type_amount = sClubhouse_price_struct.iStylePrice
iAmount +=data.m_mural_type_amount
ENDIF
IF (sClubhouse_price_struct.iWallPrice >= 0)
data.m_wall_style = iWall
data.m_wall_style_amount = sClubhouse_price_struct.iWallPrice
iAmount +=data.m_wall_style_amount
ENDIF
IF (sClubhouse_price_struct.iHangingPrice >= 0)
data.m_wall_hanging_style = iHanging
data.m_wall_hanging_style_amount = sClubhouse_price_struct.iHangingPrice
iAmount +=data.m_wall_hanging_style_amount
ENDIF
IF (sClubhouse_price_struct.iFurniturePrice >= 0)
data.m_furniture_style = iFurniture
data.m_furniture_style_amount = sClubhouse_price_struct.iFurniturePrice
iAmount +=data.m_furniture_style_amount
ENDIF
IF (sClubhouse_price_struct.iEmblemPrice >= 0)
data.m_emblem = iEmblem
data.m_emblem_amount = sClubhouse_price_struct.iEmblemPrice
iAmount +=data.m_emblem_amount
ENDIF
IF (sClubhouse_price_struct.iGunLockerPrice >= 0)
data.m_gun_locker = iGunLocker
data.m_gun_locker_amount = sClubhouse_price_struct.iGunLockerPrice
iAmount +=data.m_gun_locker_amount
ENDIF
IF (sClubhouse_price_struct.iGaragePrice >= 0)
data.m_mod_shop = iGarage
data.m_mod_shop_amount = sClubhouse_price_struct.iGaragePrice
iAmount +=data.m_mod_shop_amount
ENDIF
IF (sClubhouse_price_struct.iNamePrice >= 0)
data.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
data.m_signage_amount = sClubhouse_price_struct.iNamePrice
iAmount +=data.m_signage_amount
ENDIF
IF (sClubhouse_price_struct.iFontPrice >= 0)
data.m_font = iFont
data.m_font_amount = sClubhouse_price_struct.iFontPrice
iAmount +=data.m_font_amount
ENDIF
NETWORK_SPENT_UPGRADE_CLUB_HOUSE(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Upgrading Clubhouse for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchasing Clubhouse for finalPendingTransactionValue:$", finalPendingTransactionValue, " FREE")
ENDIF
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
SPEND_OFFICE_GARAGE data
IF NOT bUpgradingOfficeGarage
data.m_Location = iBuyPropertyIndex
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_LocationAmount = 0
ENDIF
SWITCH iResultSlot
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
data.m_Numbering = 1
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage1Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage1NumberPrice
data.m_Lighting = iGarage1Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage1LightingPrice
data.m_Wall = iGarage1Style
data.m_WallAmount = sOffice_price_struct.iGarage1StylePrice
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
data.m_Numbering = 2
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage2Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage2NumberPrice
data.m_Lighting = iGarage2Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage2LightingPrice
data.m_Wall = iGarage2Style
data.m_WallAmount = sOffice_price_struct.iGarage2StylePrice
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
data.m_Numbering = 3
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage3Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage3NumberPrice
data.m_Lighting = iGarage3Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage3LightingPrice
data.m_Wall = iGarage3Style
data.m_WallAmount = sOffice_price_struct.iGarage3StylePrice
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iResultSlot ", iResultSlot, " for NETWORK_SPENT_PURCHASE_OFFICE_GARAGE")
BREAK
ENDSWITCH
INT iAmount = (data.m_LocationAmount+data.m_NumberingStyleAmount+data.m_LightingAmount+data.m_WallAmount)
NETWORK_SPENT_PURCHASE_OFFICE_GARAGE(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Buying office garage ", iResultSlot, " for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ELSE
INT iAmount
data.m_Location = iBuyPropertyIndex
//IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
//ELSE
// data.m_LocationAmount = 0
//ENDIF
//iAmount = data.m_LocationAmount <-- WE DON'T ADD THIS FOR UPGRADE !
SWITCH iResultSlot
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
IF (sOffice_price_struct.iGarage1NumberPrice >= 0)
data.m_Numbering = 1
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage1Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage1NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage1LightingPrice >= 0)
data.m_Lighting = iGarage1Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage1LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage1StylePrice >= 0)
data.m_Wall = iGarage1Style
data.m_WallAmount = sOffice_price_struct.iGarage1StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
IF (sOffice_price_struct.iGarage2NumberPrice >= 0)
data.m_Numbering = 2
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage2Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage2NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage2LightingPrice >= 0)
data.m_Lighting = iGarage2Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage2LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage2StylePrice >= 0)
data.m_Wall = iGarage2Style
data.m_WallAmount = sOffice_price_struct.iGarage2StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
IF (sOffice_price_struct.iGarage3NumberPrice >= 0)
data.m_Numbering = 3
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage3Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage3NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage3LightingPrice >= 0)
data.m_Lighting = iGarage3Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage3LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage3StylePrice >= 0)
data.m_Wall = iGarage3Style
data.m_WallAmount = sOffice_price_struct.iGarage3StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iResultSlot ", iResultSlot, " for NETWORK_SPENT_PURCHASE_OFFICE_GARAGE")
BREAK
ENDSWITCH
NETWORK_SPENT_UPGRADE_OFFICE_GARAGE(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Upgrading office garage ", iResultSlot, " for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELSE
tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
NETWORK_BUY_PROPERTY(propval,GET_HASH_KEY(tl_15PropertyName),FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Buying property for propval:$", propval)
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(
GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
ELSE
IF finalPendingTransactionValue < 0
//INCREMENT_BY_MP_INT_CHARACTER_STAT(MP_STAT_MONEY_EARNED_PROPERTY,-pendingTransactionValue)
//NETWORK_EARN_FROM_PROPERTY(-finalPendingTransactionValue, GET_HASH_KEY(tl_15PropertyName))
IF GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot) > 0
AND NOT (bUpgradingOffice OR bUpgradingClubhouse OR bUpgradingOfficeGarage)
IF NOT IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
OR (iBuyPropertyIndex = PROPERTY_LOW_APT_2
OR iBuyPropertyIndex = PROPERTY_GARAGE_NEW_19
// OR iBuyPropertyIndex = PROPERTY_OFFICE_2_BASE
// OR iBuyPropertyIndex = PROPERTY_CLUBHOUSE_4_BASE_A //IS_PROPERTY_CLUBHOUSE
)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
tl_15PropertyName = GET_PROPERTY_NAME(GET_OWNED_PROPERTY(iResultSlot))
SAFE_NETWORK_EARN_FROM_PROPERTY(GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), GET_HASH_KEY(tl_15PropertyName))
ELSE
tl_15PropertyName = GET_PROPERTY_NAME(GET_OWNED_PROPERTY(iResultSlot))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earn nothing from property:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " \"", tl_15PropertyName, "\" as was free")
ENDIF
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
SPEND_OFFICE_AND_WAREHOUSE data
IF NOT bUpgradingOffice
data.m_Location = iBuyPropertyIndex
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_LocationAmount = 0
ENDIF
data.m_Style = iStyle
data.m_StyleAmount = sOffice_price_struct.iStylePrice
data.m_PaGender = GET_GENDER_METRIC_FROM_PERSONEL_INT(iPersonnel)
data.m_PaGenderAmount = sOffice_price_struct.iPersonnelPrice
data.m_Signage = g_sOfficeDataStruct.iOfficeNameID
data.m_SignageAmount = (sOffice_price_struct.iNamePrice+sOffice_price_struct.iFontPrice+sOffice_price_struct.iColourPrice)
data.m_GunLocker = iGunLocker
data.m_GunLockerAmount = sOffice_price_struct.iGunLockerPrice
data.m_Vault = iVault
data.m_VaultAmount = sOffice_price_struct.iVaultPrice
data.m_PersonalQuarters = iAccommodation
data.m_PersonalQuartersAmount = sOffice_price_struct.iAccommodationPrice
data.m_ModShop = iModshop
data.m_ModShopAmount = sOffice_price_struct.iModshopPrice
INT iAmount = (data.m_LocationAmount+data.m_StyleAmount+data.m_PaGenderAmount+data.m_SignageAmount+data.m_GunLockerAmount+data.m_VaultAmount+data.m_PersonalQuartersAmount+data.m_ModShopAmount)
NETWORK_SPENT_PURCHASE_OFFICE_PROPERTY(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from office for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ELSE
INT iAmount
data.m_Location = iBuyPropertyIndex
//IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
//ELSE
// data.m_LocationAmount = 0
//ENDIF
//iAmount = data.m_LocationAmount <-- WE DON'T ADD THIS FOR UPGRADE !
IF (sOffice_price_struct.iStylePrice >= 0)
data.m_Style = iStyle
data.m_StyleAmount = sOffice_price_struct.iStylePrice
iAmount += data.m_StyleAmount
ENDIF
IF (sOffice_price_struct.iPersonnelPrice >= 0)
data.m_PaGender = GET_GENDER_METRIC_FROM_PERSONEL_INT(iPersonnel)
data.m_PaGenderAmount = sOffice_price_struct.iPersonnelPrice
iAmount += data.m_PaGenderAmount
ENDIF
data.m_Signage = g_sOfficeDataStruct.iOfficeNameID
data.m_SignageAmount = (sOffice_price_struct.iNamePrice+sOffice_price_struct.iFontPrice+sOffice_price_struct.iColourPrice)
iAmount += data.m_SignageAmount
IF (sOffice_price_struct.iGunLockerPrice >= 0)
data.m_GunLocker = iGunLocker
data.m_GunLockerAmount = sOffice_price_struct.iGunLockerPrice
iAmount += data.m_GunLockerAmount
ENDIF
IF (sOffice_price_struct.iVaultPrice >= 0)
data.m_Vault = iVault
data.m_VaultAmount = sOffice_price_struct.iVaultPrice
iAmount += data.m_VaultAmount
ENDIF
IF (sOffice_price_struct.iAccommodationPrice >= 0)
data.m_PersonalQuarters = iAccommodation
data.m_PersonalQuartersAmount = sOffice_price_struct.iAccommodationPrice
iAmount += data.m_PersonalQuartersAmount
ENDIF
IF (sOffice_price_struct.iModshopPrice >= 0)
data.m_ModShop = iModshop
data.m_ModShopAmount = sOffice_price_struct.iModshopPrice
iAmount += data.m_ModShopAmount
ENDIF
NETWORK_SPENT_UPGRADE_OFFICE_PROPERTY(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from office upgrade for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(iBuyPropertyIndex, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
INT iPropertyVariation = 0
BOOL bStarterPackItem = FALSE
// IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(i)
// iPropertyVariation = 1
// ELSE
// bStarterPackItem = TRUE
// ENDIF
// ENDIF
SPEND_CLUB_HOUSE data
IF NOT bUpgradingClubhouse
IF iCachedReplaceProperty != 0
INT iSellingPropertyVariation = 0
BOOL bSellingPropertyStarterPackItem = FALSE
// iCachedReplacePropertyPrice -= GET_VALUE_OF_CURRENTLY_OWNED_CLUBHOUSE_MODS(PROPERTY_OWNED_SLOT_CLUBHOUSE, TRUE)
// IF iCachedReplacePropertyPrice = 0
// IF NOT COULD_PROPERTY_BE_FREE_FOR_PLAYER_WITH_CRIMINAL_ENTERPRISE_STARTER_PACK(iCachedReplaceProperty)
// iSellingPropertyVariation = 1
// ELSE
// bSellingPropertyStarterPackItem = TRUE
// ENDIF
// ENDIF
SPEND_CLUB_HOUSE earnData
earnData.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iCachedReplaceProperty, iSellingPropertyVariation, bSellingPropertyStarterPackItem)
earnData.m_property_id_amount = iCachedSellingPrice
earnData.m_mural_type = g_sClubhouseDataStruct.iColourScheme
earnData.m_mural_type_amount = -1
earnData.m_wall_style = g_sClubhouseDataStruct.iWall
earnData.m_wall_style_amount = -1
earnData.m_wall_hanging_style = g_sClubhouseDataStruct.iHanging
earnData.m_wall_hanging_style_amount = -1
earnData.m_furniture_style = g_sClubhouseDataStruct.iFurniture
earnData.m_furniture_style_amount = -1
earnData.m_emblem = g_sClubhouseDataStruct.iEmblem
earnData.m_emblem_amount = -1
earnData.m_gun_locker = g_sClubhouseDataStruct.iGunLocker
earnData.m_gun_locker_amount = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_LOCKER_GUN, g_sClubhouseDataStruct.iGunLocker)
earnData.m_mod_shop = g_sClubhouseDataStruct.iGarage
earnData.m_mod_shop_amount = GET_CLUBHOUSE_PROPERTY_MOD_VALUE(CLUBHOUSE_MOD_GARAGE, g_sClubhouseDataStruct.iGarage)
earnData.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
earnData.m_signage_amount = -1
earnData.m_font = g_sClubhouseDataStruct.iFont
earnData.m_font_amount = -1
NETWORK_EARN_PURCHASE_CLUB_HOUSE(iCachedSellingPrice, earnData)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from Clubhouse for iAmount:$", iCachedSellingPrice, " - B")
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_SHOPS, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
ENDIF
INT iAmount = 0
data.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iBuyPropertyIndex, iPropertyVariation, bStarterPackItem)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_property_id_amount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_property_id_amount = 0
ENDIF
iAmount +=data.m_property_id_amount
data.m_mural_type = iColourScheme
data.m_mural_type_amount = sClubhouse_price_struct.iStylePrice
iAmount +=data.m_mural_type_amount
data.m_wall_style = iWall
data.m_wall_style_amount = sClubhouse_price_struct.iWallPrice
iAmount +=data.m_wall_style_amount
data.m_wall_hanging_style = iHanging
data.m_wall_hanging_style_amount = sClubhouse_price_struct.iHangingPrice
iAmount +=data.m_wall_hanging_style_amount
data.m_furniture_style = iFurniture
data.m_furniture_style_amount = sClubhouse_price_struct.iFurniturePrice
iAmount +=data.m_furniture_style_amount
data.m_emblem = iEmblem
data.m_emblem_amount = sClubhouse_price_struct.iEmblemPrice
iAmount +=data.m_emblem_amount
IF (sClubhouse_price_struct.iGunLockerPrice >= 0)
data.m_gun_locker = iGunLocker
data.m_gun_locker_amount = sClubhouse_price_struct.iGunLockerPrice
iAmount +=data.m_gun_locker_amount
ENDIF
IF (sClubhouse_price_struct.iGaragePrice >= 0)
data.m_mod_shop = iGarage
data.m_mod_shop_amount = sClubhouse_price_struct.iGaragePrice
iAmount +=data.m_mod_shop_amount
ENDIF
data.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
data.m_signage_amount = sClubhouse_price_struct.iNamePrice
iAmount +=data.m_signage_amount
data.m_font = iFont
data.m_font_amount = sClubhouse_price_struct.iFontPrice
iAmount +=data.m_font_amount
NETWORK_SPENT_PURCHASE_CLUB_HOUSE(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Spend after earning from Clubhouse for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ELSE
INT iAmount = 0
// data.m_property_id = GET_PROPERTY_KEY_FOR_CATALOGUE(iBuyPropertyIndex, iPropertyVariation)
IF (sClubhouse_price_struct.iStylePrice >= 0)
data.m_mural_type = iColourScheme
data.m_mural_type_amount = sClubhouse_price_struct.iStylePrice
iAmount +=data.m_mural_type_amount
ENDIF
IF (sClubhouse_price_struct.iWallPrice >= 0)
data.m_wall_style = iWall
data.m_wall_style_amount = sClubhouse_price_struct.iWallPrice
iAmount +=data.m_wall_style_amount
ENDIF
IF (sClubhouse_price_struct.iHangingPrice >= 0)
data.m_wall_hanging_style = iHanging
data.m_wall_hanging_style_amount = sClubhouse_price_struct.iHangingPrice
iAmount +=data.m_wall_hanging_style_amount
ENDIF
IF (sClubhouse_price_struct.iFurniturePrice >= 0)
data.m_furniture_style = iFurniture
data.m_furniture_style_amount = sClubhouse_price_struct.iFurniturePrice
iAmount +=data.m_furniture_style_amount
ENDIF
IF (sClubhouse_price_struct.iEmblemPrice >= 0)
data.m_emblem = iEmblem
data.m_emblem_amount = sClubhouse_price_struct.iEmblemPrice
iAmount +=data.m_emblem_amount
ENDIF
IF (sClubhouse_price_struct.iGunLockerPrice >= 0)
data.m_gun_locker = iGunLocker
data.m_gun_locker_amount = sClubhouse_price_struct.iGunLockerPrice
iAmount +=data.m_gun_locker_amount
ENDIF
IF (sClubhouse_price_struct.iGaragePrice >= 0)
data.m_mod_shop = iGarage
data.m_mod_shop_amount = sClubhouse_price_struct.iGaragePrice
iAmount +=data.m_mod_shop_amount
ENDIF
IF (sClubhouse_price_struct.iNamePrice >= 0)
data.m_signage = g_sClubhouseDataStruct.iClubhouseNameID
data.m_signage_amount = sClubhouse_price_struct.iNamePrice
iAmount +=data.m_signage_amount
ENDIF
IF (sClubhouse_price_struct.iFontPrice >= 0)
data.m_font = iFont
data.m_font_amount = sClubhouse_price_struct.iFontPrice
iAmount +=data.m_font_amount
ENDIF
NETWORK_SPENT_UPGRADE_CLUB_HOUSE(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Spent on Clubhouse upgrade for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELSE
tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
NETWORK_BUY_PROPERTY(propval,GET_HASH_KEY(tl_15PropertyName),FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from proprety: $", -finalPendingTransactionValue)
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
IF propval > 0
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
SPEND_OFFICE_GARAGE data
IF NOT bUpgradingOfficeGarage
data.m_Location = iBuyPropertyIndex
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
ELSE
data.m_LocationAmount = 0
ENDIF
SWITCH iResultSlot
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
data.m_Numbering = 1
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage1Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage1NumberPrice
data.m_Lighting = iGarage1Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage1LightingPrice
data.m_Wall = iGarage1Style
data.m_WallAmount = sOffice_price_struct.iGarage1StylePrice
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
data.m_Numbering = 2
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage2Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage2NumberPrice
data.m_Lighting = iGarage2Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage2LightingPrice
data.m_Wall = iGarage2Style
data.m_WallAmount = sOffice_price_struct.iGarage2StylePrice
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
data.m_Numbering = 3
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage3Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage3NumberPrice
data.m_Lighting = iGarage3Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage3LightingPrice
data.m_Wall = iGarage3Style
data.m_WallAmount = sOffice_price_struct.iGarage3StylePrice
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iResultSlot ", iResultSlot, " for NETWORK_SPENT_PURCHASE_OFFICE_GARAGE")
BREAK
ENDSWITCH
INT iAmount = (data.m_LocationAmount+data.m_NumberingStyleAmount+data.m_LightingAmount+data.m_WallAmount)
NETWORK_SPENT_PURCHASE_OFFICE_GARAGE(iAmount, data, FALSE,TRUE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from office garage for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ELSE
INT iAmount
data.m_Location = iBuyPropertyIndex
//IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// data.m_LocationAmount = GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)
//ELSE
// data.m_LocationAmount = 0
//ENDIF
SWITCH iResultSlot
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
IF (sOffice_price_struct.iGarage1NumberPrice >= 0)
data.m_Numbering = 1
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage1Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage1NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage1LightingPrice >= 0)
data.m_Lighting = iGarage1Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage1LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage1StylePrice >= 0)
data.m_Wall = iGarage1Style
data.m_WallAmount = sOffice_price_struct.iGarage1StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
IF (sOffice_price_struct.iGarage2NumberPrice >= 0)
data.m_Numbering = 2
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage2Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage2NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage2LightingPrice >= 0)
data.m_Lighting = iGarage2Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage2LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage2StylePrice >= 0)
data.m_Wall = iGarage2Style
data.m_WallAmount = sOffice_price_struct.iGarage2StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
CASE PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
IF (sOffice_price_struct.iGarage3NumberPrice >= 0)
data.m_Numbering = 3
data.m_NumberingAmount = 0
data.m_NumberingStyle = iGarage3Number
data.m_NumberingStyleAmount = sOffice_price_struct.iGarage3NumberPrice
iAmount += data.m_NumberingStyleAmount
ENDIF
IF (sOffice_price_struct.iGarage3LightingPrice >= 0)
data.m_Lighting = iGarage3Lighting
data.m_LightingAmount = sOffice_price_struct.iGarage3LightingPrice
iAmount += data.m_LightingAmount
ENDIF
IF (sOffice_price_struct.iGarage3StylePrice >= 0)
data.m_Wall = iGarage3Style
data.m_WallAmount = sOffice_price_struct.iGarage3StylePrice
iAmount += data.m_WallAmount
ENDIF
BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iResultSlot ", iResultSlot, " for NETWORK_SPENT_PURCHASE_OFFICE_GARAGE")
BREAK
ENDSWITCH
NETWORK_SPENT_UPGRADE_OFFICE_GARAGE(iAmount, data, FALSE,TRUE)
propval = finalPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: Earning from office garage upgrade for iAmount:$", iAmount, " finalPendingTransactionValue:$", finalPendingTransactionValue, " propval:$", propval)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchasing office garage for finalPendingTransactionValue:$", finalPendingTransactionValue, " FREE")
ENDIF
ELSE
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE: purchase going ahead, transaction value $" ,finalPendingTransactionValue, " combined bank and wallet balance $",(iBankBalance+iWalletBalance) )
IF GET_OWNED_PROPERTY(iResultSlot) > 0
AND NOT (bUpgradingOffice OR bUpgradingClubhouse OR bUpgradingOfficeGarage)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: incrementing trade in.")
INCREMENT_BY_MP_INT_CHARACTER_AWARD(MP_AWARD_TRADE_IN_YOUR_PROPERTY,1)
ENDIF
WHILE NOT SET_CHIPS_FOR_PROPERTY_PURCHASE(iBuyPropertyIndex, eChipsTransactionState)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
RENDER_BROWSER()
WAIT(0)
ENDWHILE
eChipsTransactionState = TRANSACTION_STATE_DEFAULT
IF iResultSlot >= 0
AND iResultSlot <= MAX_MP_PROPERTIES-1
FORCE_CLEAN_APARTMENT_MESS_DATA(iResultSlot)
ENDIF
IF iResultSlot = PROPERTY_OWNED_SLOT_APT_1
IF GET_OWNED_PROPERTY(iResultSlot) <= 0
REQUEST_SYSTEM_ACTIVITY_TYPE_PURCHASED_FIRST_PROPERTY()
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE_TIME,GET_CLOUD_TIME_AS_INT())
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE_NEW,iBuyPropertyIndex)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE_NEW_TIME,GET_CLOUD_TIME_AS_INT())
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iCurrentPropertyValue = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iCurrentPropertyValue = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE_NEW_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iCurrentPropertyValue)
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_0, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_0, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_2
IF GET_OWNED_PROPERTY(iResultSlot) <= 0
REQUEST_SYSTEM_ACTIVITY_TYPE_PURCHASED_SECOND_PROPERTY()
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_1, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiProperty1Value = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiProperty1Value = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_1,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiProperty1Value)
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_1, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_1, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_3
IF GET_OWNED_PROPERTY(iResultSlot) <= 0
REQUEST_SYSTEM_ACTIVITY_TYPE_PURCHASED_THIRD_PROPERTY()
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_2, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[0] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[0] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_2,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[0])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_2, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_2, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_4
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_3, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[1] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[1] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_3,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[1])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_3, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_3, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_5
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_4, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_4,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_4, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_4, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_0
BOOL bOwnsOffice
//Print a ticker the first time we purchase an office
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) <= 0
PRINT_TICKER("OFFPURCH_TICK")
bOwnsOffice = FALSE
ELSE
bOwnsOffice = TRUE
ENDIF
//#2829938
g_bOfficeJustPurchased = TRUE
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0A)
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchased office, set PURCHASE_HELP_BS_SPVE0A false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_SPVE0A)
ENDIF
IF NOT bOwnsOffice
GB_SET_LOCAL_HELP_BIT(eGB_LOCAL_HELP_BITSET_NOTIFICATION_BUY_OFFICE)
IF NOT GB_IS_PLAYER_MEMBER_OF_A_GANG(PLAYER_ID())
AND GB_GET_NUM_BOSSES_IN_SESSION() < GB_GET_MAX_NUM_GANGS()
AND NOT NETWORK_IS_ACTIVITY_SESSION()
AND NOT GB_IS_VIP_GAMEPLAY_DISABLED_FOR_PLAYER(PLAYER_ID())
AND NOT IS_PLAYER_ON_MISSION_BLOCKING_GANG_CREATION()
IF NOT IS_STRING_NULL_OR_EMPTY(g_sOfficeDataStruct.tl63NewOrgName)
GB_SET_ORGANIZATION_NAME(g_sOfficeDataStruct.tl63NewOrgName,GB_ORGANISATION_NAME_TYPE_OFFICE, TRUE)
GB_SET_OFFICE_NAME(g_sOfficeDataStruct.tl63NewOrgName, TRUE)
//GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
GB_SEND_NAME_CHANGE_EVENT()
ELSE
TEXT_LABEL_63 tlOfficeName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_OFFICE_NAME, MP_STAT_GB_OFFICE_NAME2)
IF NOT IS_STRING_NULL_OR_EMPTY(tlOfficeName)
GB_SET_ORGANIZATION_NAME(tlOfficeName,GB_ORGANISATION_NAME_TYPE_OFFICE, TRUE)
GB_SET_OFFICE_NAME(tlOfficeName, TRUE)
ELSE
GB_SET_ORGANIZATION_NAME(GET_DEFAULT_GANG_NAME(PLAYER_ID()),GB_ORGANISATION_NAME_TYPE_OFFICE, TRUE)
GB_SET_OFFICE_NAME(GET_DEFAULT_GANG_NAME(PLAYER_ID(), TRUE), TRUE)
ENDIF
ENDIF
GB_BOSS_CREATE_GANG()
CLEANUP_TEMP_PASSIVE_MODE()
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office GB_BOSS_CREATE_GANG \"", g_sOfficeDataStruct.tl63NewOrgName, "\"")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office don't call GB_BOSS_CREATE_GANG")
ENDIF
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT bUpgradingOffice
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: value:", g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: value ignored (upgrading office)")
ENDIF
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
IF IS_PROPERTY_CUSTOMISABLE(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iStyle:", iStyle)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office iPersonnel: ", iPersonnel, ", iGunLocker: ", iGunLocker, " iVault: ", iVault, " iAccommodation: ", iAccommodation)
IF GET_OWNED_PROPERTY_VARIATION(iResultSlot) != iStyle
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_DECOR)
ENDIF
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iStyle)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iPersonnel)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_MALE_PA)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office PROPERTY_BROADCAST_BS_OFFICE_MALE_PA TRUE")
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_OFFICE_MALE_PA)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office PROPERTY_BROADCAST_BS_OFFICE_MALE_PA FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_GENDER_SET)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_GENDER_SET)
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_NEW_CLOTHES)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_PA_NEW_CLOTHES)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_FONT_PLAYER_OFFICE, iFont)
SET_MP_INT_CHARACTER_STAT(MP_STAT_COLOUR_PLAYER_OFFICE, iColour)
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOfficeNameFont = iFont
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iOfficeNameFontColour = iColour
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office iFont: ", iFont)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office iColour: ", iColour)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF NOT IS_OFFICE_GUN_LOCKER_PURCHASED()
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_ADDLOCKER)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_LOCKER_GUN, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_LOCKER_GUN, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iVault)
IF NOT IS_OFFICE_CASH_VAULT_PURCHASED()
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_ADDSAFE)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_LOCKER_CASH, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_LOCKER_CASH, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
IF NOT IS_OFFICE_ACCOMMODATION_PURCHASED()
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_ADDQUARTERS)
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_ACCOMMODATION, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_LIVINGQ_PURCHASED)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_ACCOMMODATION, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo, PROPERTY_BROADCAST_BS2_OFFICE_LIVINGQ_PURCHASED)
ENDIF
BOOL bUpgradingOfficeModshop = FALSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office iModshop: ", iModshop, ", previously: ", iPrevModshop)
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[appInternet] -BUY_MP_PROPERTY_FROM_WEBSITE: office iModshop: ", iModshop, ", previously: ", iPrevModshop)
#ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP, iModshop)
IF IS_OFFICE_MODSHOP_PURCHASED()
SET_PLAYER_OWNS_OFFICE_MOD_GARAGE(TRUE)
IF iModshop != iPrevModshop
bUpgradingOfficeModshop = TRUE
IF iPrevModshop = 0
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_MODSHOP)
ENDIF
ENDIF
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[appInternet] -IS_OFFICE_MODSHOP_PURCHASED - TRUE")
#ENDIF
ELSE
SET_PLAYER_OWNS_OFFICE_MOD_GARAGE(FALSE)
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[appInternet] - IS_OFFICE_MODSHOP_PURCHASED - FALSE")
#ENDIF
ENDIF
IF bUpgradingOfficeModshop
SET_PLAYER_OFFICE_GARAGE_MOD_INTERIOR_FLAGS(iModshop)
IF (IS_PROPERTY_OFFICE_MOD_GARAGE(PLAYER_ID())
OR IS_PROPERTY_OFFICE_GARAGE(GET_PROPERTY_THAT_IM_CURRENTLY_IN()))
AND (IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY))
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
SET_UPDATE_CUSTOM_APT(TRUE)
g_iCustomAptVariantPIM = 999 // Setting to something obvious incase it breaks something.
PRINTLN("COMPLETE_INTERIOR_PURCHASE: RENOVATING OFFICE MOD SHOP")
ENDIF
ENDIF
IF !bUpgradingOffice
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
ENDIF
ENDIF
IF !HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
IF NOT IS_STRING_NULL_OR_EMPTY(g_sOfficeDataStruct.tl63NewOrgName)
IF (GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
AND NOT GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID()))
OR NOT GB_IS_PLAYER_MEMBER_OF_A_GANG(PLAYER_ID())
GB_SET_ORGANIZATION_NAME(g_sOfficeDataStruct.tl63NewOrgName,GB_ORGANISATION_NAME_TYPE_OFFICE, TRUE)
GB_SET_OFFICE_NAME(g_sOfficeDataStruct.tl63NewOrgName, TRUE)
//GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
GB_SEND_NAME_CHANGE_EVENT()
ELSE
GB_SET_OFFICE_NAME(g_sOfficeDataStruct.tl63NewOrgName, TRUE)
ENDIF
ELIF NOT GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
OR GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
TEXT_LABEL_63 tlOfficeName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_OFFICE_NAME, MP_STAT_GB_OFFICE_NAME2)
IF IS_STRING_NULL_OR_EMPTY(tlOfficeName)
STRING sDefaultOrgName = GET_DEFAULT_GANG_NAME(PLAYER_ID(), TRUE)
GB_SET_OFFICE_NAME(sDefaultOrgName, TRUE)
ENDIF
ENDIF
IF IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY)
AND bUpgradingOffice
AND NOT bUpgradingOfficeModshop
IF IS_PLAYER_IN_APARTMENT_WITH_BUDDY()
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
ELSE
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW set FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
ENDIF
g_iCustomAptVariantPIM = iStyle
SET_UPDATE_CUSTOM_APT(TRUE)
ELIF bUpgradingOffice
g_iCustomAptVariantPIM = iStyle
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_OFFICE_RENOVATE)
ENDIF
ENDIF
SET_PLAYER_OWNS_OFFICE(TRUE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: office \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_CLUBHOUSE
BOOL bOwnsClubhouse
INT iForceDisplayUpdatedSlot
//Print a ticker the first time we purchase an Clubhouse
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE) <= 0
bOwnsClubhouse = FALSE
ELSE
bOwnsClubhouse = TRUE
ENDIF
//#2829938
SET_PLAYER_OWNS_CLUBHOUSE(TRUE)
IF NOT bOwnsClubhouse
IF NOT GB_IS_PLAYER_MEMBER_OF_A_GANG(PLAYER_ID())
GB_SET_LOCAL_BIKER_CALL_BIT(eGB_LOCAL_BIKER_CALL_BITSET_NOTIFICATION_BUY_CLUBHOUSE)
ENDIF
IF NOT GB_IS_PLAYER_MEMBER_OF_A_GANG(PLAYER_ID())
AND GB_GET_NUM_BOSSES_IN_SESSION() < GB_GET_MAX_NUM_GANGS()
AND NOT NETWORK_IS_ACTIVITY_SESSION()
AND NOT GB_IS_VIP_GAMEPLAY_DISABLED_FOR_PLAYER(PLAYER_ID())
AND NOT IS_PLAYER_ON_MISSION_BLOCKING_GANG_CREATION()
IF GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
GB_BOSS_RETIRE(FALSE)
ENDIF
GB_BOSS_CREATE_GANG(TRUE, GT_BIKER)
IF NOT IS_STRING_NULL_OR_EMPTY(g_sClubhouseDataStruct.tl63NewSignage)
GB_SET_ORGANIZATION_NAME(g_sClubhouseDataStruct.tl63NewSignage,GB_ORGANISATION_NAME_TYPE_CLUBHOUSE, TRUE)
GB_SET_MC_CLUBHOUSE_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
//GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
GB_SEND_NAME_CHANGE_EVENT()
ELSE
TEXT_LABEL_63 tlClubhouseName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_MC_CLBHOSE_NAME, MP_STAT_MC_CLBHOSE_NAME2)
IF NOT IS_STRING_NULL_OR_EMPTY(tlClubhouseName)
GB_SET_ORGANIZATION_NAME(tlClubhouseName,GB_ORGANISATION_NAME_TYPE_CLUBHOUSE, TRUE)
GB_SET_MC_CLUBHOUSE_NAME(tlClubhouseName, TRUE)
ELSE
GB_SET_ORGANIZATION_NAME(GET_DEFAULT_BIKER_GANG_NAME(),GB_ORGANISATION_NAME_TYPE_CLUBHOUSE, TRUE)
GB_SET_MC_CLUBHOUSE_NAME(GET_DEFAULT_BIKER_GANG_NAME(), TRUE)
ENDIF
ENDIF
TEXT_LABEL_63 stName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_GB_GANG_NAME, MP_STAT_GB_GANG_NAME2)
IF IS_STRING_NULL_OR_EMPTY(stName)
// IF NOT IS_TEMP_PASSIVE_MODE_ENABLED()
// SET_TEMP_PASSIVE_MODE()
// ENDIF
ELSE
CLEANUP_TEMP_PASSIVE_MODE()
GB_SET_ORGANIZATION_NAME_ON_ENTRY_TO_FM()
GB_SET_OFFICE_NAME_ON_ENTRY_TO_FM()
GB_SET_MC_CLUBHOUSE_NAME_ON_ENTRY_TO_FM()
ENDIF
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: GB_BOSS_CREATE_GANG \"", stName, "\", GT_BIKER")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: don't call GB_BOSS_CREATE_GANG")
ENDIF
ENDIF
IF NOT IS_CONTACT_IN_PHONEBOOK(CHAR_BIKER_CH1, MULTIPLAYER_BOOK)
BOOL bDisplay = FALSE
// INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT8)
// IF NOT IS_BIT_SET(iStatInt, BI_FM_NMH11_UNLOCKED_PERSONAL_bikerANT)
// SET_BIT(iStatInt, BI_FM_NMH11_UNLOCKED_PERSONAL_bikerANT)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT8, iStatInt)
// bDisplay = TRUE
// ENDIF
ADD_CONTACT_TO_PHONEBOOK(CHAR_BIKER_CH1,MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[BIKER_CONTACT] MAINTAIN_ADD_BIKER_CLUBHOUSE_CONTACT - ADD_CONTACT_TO_PHONEBOOK(", g_sCharacterSheetAll[CHAR_BIKER_CH1].label, ", bDisplay:", GET_STRING_FROM_BOOL(bDisplay), ")")
ENDIF
IF IS_CONTACT_IN_PHONEBOOK(CHAR_MP_RAY_LAVOY,MULTIPLAYER_BOOK)
REMOVE_CONTACT_FROM_INDIVIDUAL_PHONEBOOK(CHAR_MP_RAY_LAVOY, MULTIPLAYER_BOOK)
CPRINTLN(DEBUG_INTERNET, "[BIKER_CONTACT] MAINTAIN_ADD_BIKER_CLUBHOUSE_CONTACT - REMOVE_CONTACT_FROM_INDIVIDUAL_PHONEBOOK(", g_sCharacterSheetAll[CHAR_MP_RAY_LAVOY].label, ") - url:bugstar:2954910 - Can we replace the SecuroServ contact with the new Clubhouse contact on becoming a Biker President")
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLUBHOUSE, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT bUpgradingClubhouse
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: value:", g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLUBHOUSE_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: value ignored (upgrading clubhouse)")
ENDIF
INT iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage
GET_SCALEFORM_CLUBHOUSE_DATA(iBuyPropertyIndex, iWall, iHanging, iFurniture, iColourScheme, iFont, iFontColour, iEmblem, iHideSinage, iGunLocker, iGarage)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iColourScheme:", iColourScheme)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: iGunLocker: ", iGunLocker, " iGarage: ", iGarage)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iWall)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHanging)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iFurniture)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 0)
ENDIF
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iColourScheme)
IF GET_BASE_PROPERTY_FROM_PROPERTY(iBuyPropertyIndex) = PROPERTY_CLUBHOUSE_1_BASE_A
//SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL TRUE")
ELIF GET_BASE_PROPERTY_FROM_PROPERTY(iBuyPropertyIndex) = PROPERTY_CLUBHOUSE_7_BASE_B
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY_BROADCAST_BS2_CLUBHOUSE_TRADITIONAL FALSE")
ELSE
//
ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_GENDER_SET)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_GENDER_SET)
// ENDIF
// IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_NEW_CLOTHES)
// CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_PA_NEW_CLOTHES)
// ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FONT, iFont)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_COLOUR, iFontColour)
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseNameFont = iFont
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseNameFontColour = iFontColour
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iFont: ", iFont)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iColour: ", iFontColour)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_EMBLEM, iEmblem)
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseEmblem = iEmblem
PRINTLN("[CREW_EMBLEM] BUY_MP_PROPERTY_FROM_WEBSITE - Setting emblem to: ", GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].iClubhouseEmblem)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHideSinage)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_SINAGEHIDE, 0)
ENDIF
GlobalPlayerBD_FM_3[NATIVE_TO_INT(PLAYER_ID())].bClubhouseHideName = iHideSinage
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iEmblem: ", iEmblem)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE (MC): iHideSinage: ", iHideSinage)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GUNLOCKER, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GUNLOCKER, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGarage)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GARAGE, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_GARAGE, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iWall)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_WALL, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iHanging)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_HANGING, 0)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iFurniture)
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 1)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_CLBHOS_FURNATURE, 0)
ENDIF
IF !bUpgradingClubhouse
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_GUN_VAULT_DOOR_OPENED)
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_SAFE_VAULT_DOOR_OPENED)
ENDIF
ENDIF
IF !HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
IF NOT IS_STRING_NULL_OR_EMPTY(g_sClubhouseDataStruct.tl63NewSignage)
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
OR NOT GB_IS_PLAYER_MEMBER_OF_A_GANG(PLAYER_ID())
GB_SET_ORGANIZATION_NAME(g_sClubhouseDataStruct.tl63NewSignage,GB_ORGANISATION_NAME_TYPE_CLUBHOUSE, TRUE)
GB_SET_MC_CLUBHOUSE_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
//GB_SETUP_AFTER_NAMING_GANG(GBKeyBoardData)
GB_SEND_NAME_CHANGE_EVENT()
ELSE
GB_SET_MC_CLUBHOUSE_NAME(g_sClubhouseDataStruct.tl63NewSignage, TRUE)
ENDIF
ELIF NOT GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
TEXT_LABEL_63 tlClubhouseName = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_MC_CLBHOSE_NAME, MP_STAT_MC_CLBHOSE_NAME2)
IF IS_STRING_NULL_OR_EMPTY(tlClubhouseName)
GB_SET_MC_CLUBHOUSE_NAME(GET_DEFAULT_BIKER_GANG_NAME(), TRUE)
ENDIF
ENDIF
IF IS_PROPERTY_CLUBHOUSE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_OWNED_PROPERTY)
AND bUpgradingClubhouse
IF IS_PLAYER_IN_APARTMENT_WITH_BUDDY()
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
ELSE
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED_WITH_BUDDY set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS , PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PURCHASED )
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_PREVIEW set FALSE")
ENDIF
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW)
PRINTLN("COMPLETE_INTERIOR_PURCHASE: PROPERTY_BROADCAST_BS_PLAYER_APT_VARIANT_CANCEL_PREVIEW set FALSE")
ENDIF
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
ENDIF
g_iCustomAptVariantPIM = iColourScheme
SET_UPDATE_CUSTOM_APT(TRUE)
ELIF bUpgradingClubhouse
g_iCustomAptVariantPIM = iColourScheme
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSTwo,PROPERTY_BROADCAST_BS2_Clubhouse_RENOVATE)
ENDIF
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[PROPERTY_OWNED_SLOT_CLUBHOUSE] = g_iCustomAptVariantPIM
ENDIF
IF NOT bOwnsClubhouse
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing Current bike slot display to #",iForceDisplayUpdatedSlot," when buying clubhouse")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_6
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_5, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_5,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_5, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_STAT_FREE_PROPERTY_SLOT_5, FALSE)
ENDIF
#IF FEATURE_SUMMER_2020
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_7
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_6, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_6,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_7, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_7, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_8
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_7, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_7,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_8, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_8, FALSE)
ENDIF
#ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_9
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_8, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_8,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_9, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_9, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_APT_10 //MAX_OWNED_PROPERTIES //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_9, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_VALUE_9,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
IF propval = 0
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_10, TRUE)
ELSE
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_FREE_OWNED_SLOT_APT_10, FALSE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1
BOOL bOwnsOfficeGarage
INT iForceDisplayUpdatedSlot
//Print a ticker the first time we purchase an Clubhouse
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1) <= 0
bOwnsOfficeGarage = FALSE
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_GARAGE)
ELSE
bOwnsOfficeGarage = TRUE
ENDIF
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1, iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY DETAIL TYPE:", mpProperties[iBuyPropertyIndex].iType)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: PROPERTY SIZE TYPE:", GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex))
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iGarage1Style:", iGarage1Style, " iGarage1Lighting:", iGarage1Lighting, " iGarage1Number:", iGarage1Number)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iGarage1Style)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_LIGHTING, iGarage1Lighting)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1_NUMBERING, iGarage1Number)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iGarage1Style
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND bUpgradingOfficeGarage
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
ENDIF
IF NOT bOwnsOfficeGarage
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing Current personal vehicle display to #",iForceDisplayUpdatedSlot," when buying an office garage")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2) <= 0
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_FLOORS)
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iGarage2Style:", iGarage2Style, " iGarage2Lighting:", iGarage2Lighting, " iGarage2Number:", iGarage2Number)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iGarage2Style)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_LIGHTING, iGarage2Lighting)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2_NUMBERING, iGarage2Number)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iGarage2Style
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND bUpgradingOfficeGarage
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3) <= 0
SET_BIT(g_iOfficePersonalAssistantSpeechBitset, OFF_PA_SPEECH_FLOORS)
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
PRINTLN("PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3- iGarage3Style: ", iGarage3Style, " iGarage3Lighting: ", iGarage3Lighting, " iGarage3Number: ", iGarage3Number)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iGarage3Style:", iGarage3Style, " iGarage3Lighting:", iGarage3Lighting, " iGarage3Number:", iGarage3Number)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iGarage3Style)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_LIGHTING, iGarage3Lighting)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3_NUMBERING, iGarage3Number)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iGarage3Style
IF GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex) = GET_PROPERTY_RESTRICTED_SLOT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
AND bUpgradingOfficeGarage
SET_PLAYER_RENOVATED_OFFICE_GARAGE_FLAG(TRUE)
ENDIF
ELIF iResultSlot = PROPERTY_OWNED_SLOT_IE_WAREHOUSE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_IE_WAREHOUSE, iBuyPropertyIndex)
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_IE_WAREHOUSE_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
IF IS_PROPERTY_CUSTOM_APARTMENT(iBuyPropertyIndex)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant:", iCustomAptVariant)
SET_INTERIOR_STAT_FOR_CUSTOM_APT(iResultSlot, iCustomAptVariant)
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iPropertyVariant[iResultSlot] = iCustomAptVariant
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\", iBuyPropertyIndex:", iBuyPropertyIndex, " iCustomAptVariant: NONE")
ENDIF
// #IF FEATURE_TUNER
// ELIF iResultSlot = PROPERTY_OWNED_SLOT_AUTOSHOP_PROPERTY //MAX_OWNED_PROPERTIES
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_AUTO_SHOP_OWNED, iBuyPropertyIndex)
// INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
// IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
// ELSE
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
// ENDIF
// SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_AUTO_SHOP_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
// ELSE
// #ENDIF
// #IF FEATURE_FIXER
// ELIF iResultSlot = PROPERTY_OWNED_SLOT_SECURITY_OFFICE_GAR //MAX_OWNED_PROPERTIES //CDM PROPERTY STAT UPDATE
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_SECURITY_OFFICE, iBuyPropertyIndex)
// INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
// IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
// ELSE
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
// ENDIF
// SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_SECURITY_OFFICE_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
// ELSE
// #ENDIF
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown iResultSlot: \"", GET_STRING_FROM_PROPERTY_OWNED_SLOT(iResultSlot), "\"")
ENDIF
SWITCH GET_PROPERTY_SIZE_TYPE(iBuyPropertyIndex)
CASE PROP_SIZE_TYPE_SMALL_APT
CASE PROP_SIZE_TYPE_MED_APT
CASE PROP_SIZE_TYPE_LARGE_APT
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_CL_BUY_APPARTMENT, TRUE)
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_CL_BUY_GARAGE , TRUE)
FALLTHRU// because all houses have garages
CASE PROP_SIZE_TYPE_2_GAR
CASE PROP_SIZE_TYPE_6_GAR
CASE PROP_SIZE_TYPE_10_GAR
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_CL_BUY_GARAGE , TRUE)
BREAK
ENDSWITCH
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF HAS_MP_CRIMINAL_ENTERPRISE_PREMIUM_OR_STARTER_ACCESS()
SWITCH iBuyPropertyIndex
CASE PROPERTY_OFFICE_2_BASE SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_MAZE_BANK_WEST_EXECUTIVE_OFFICE) BREAK
CASE PROPERTY_CLUBHOUSE_4_BASE_A SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_GREAT_CHAPARRAL_BIKER_CLUBHOUSE) BREAK
CASE PROPERTY_LOW_APT_2 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_1561_SAN_VITAS_STREET_APARTMENT) BREAK
CASE PROPERTY_GARAGE_NEW_19 SET_PLAYER_PURCHASED_CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT(CRIMINAL_ENTERPRISE_STARTER_PACK_CONTENT_PROPERTY_1337_EXCEPTIONALISTS_WAY_10_CAR_GARAGE) BREAK
DEFAULT
CASSERTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: unknown free Criminal Enterprise Starter Pack property ", iBuyPropertyIndex)
BREAK
ENDSWITCH
ENDIF
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
//REQUEST_SAVE(STAT_SAVETYPE_END_SHOPPING)
//REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
//bBoughtProperty = TRUE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase complete, index #", iBuyPropertyIndex)
IF IS_PROPERTY_OFFICE(iBuyPropertyIndex)
POPULATE_MP_EXEC_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingOffice, FALSE, FALSE, rpmt_0)
ELIF IS_PROPERTY_CLUBHOUSE(iBuyPropertyIndex)
#IF FEATURE_GEN9_STANDALONE
// if this is a purchase rather than an upgrade, report activity as complete
IF NOT bUpgradingClubhouse
NETWORK_POST_UDS_ACTIVITY_END("PurchasePropertyClubhouse", UDS_ACTIVITY_END_REASON_COMPLETED)
ENDIF
#ENDIF // FEATURE_GEN9_STANDALONE
#IF FEATURE_DLC_1_2022
IF !bUpgradingClubhouse
CLEAR_BIKER_CLIENT_VEHICLE_STATS()
CLEAR_BIKER_CLIENT_DELIVERY_DATA()
ENDIF
#ENDIF
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingClubhouse, FALSE, FALSE, rpmt_0)
ELIF IS_PROPERTY_OFFICE_GARAGE(iBuyPropertyIndex)
POPULATE_MP_EXEC_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_SUCCESS", TRUE, bUpgradingOfficeGarage, FALSE, FALSE, rpmt_0)
ELSE
POPULATE_MP_PROPERTY_SITE_PIN_MAP(mov)
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = iBuyPropertyIndex
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
iBoughtCasinoPreset = -1
REQUEST_SAVE(SSR_REASON_VEH_STORAGE_UPDATE,STAT_SAVETYPE_CRITICAL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_PROPERTY_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_FACTORY_FROM_WEBSITE(FACTORY_ID eFactoryId, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedFactoryValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF (iCurrentMission = FMMC_TYPE_GUNRUNNING_BUY
OR iCurrentMission = FMMC_TYPE_GUNRUNNING_SELL
OR iCurrentMission = FMMC_TYPE_GUNRUNNING_DEFEND
#IF FEATURE_DLC_1_2022
OR iCurrentMission = FMMC_TYPE_SOURCE_RESEARCH
#ENDIF)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
#IF FEATURE_CASINO_HEIST
IF GB_GET_CASINO_HEIST_PREP_PLAYER_IS_ON(PLAYER_ID()) = CHV_ARMORED_EQUIPMENT_1
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player on CHV_ARMORED_EQUIPMENT_1")
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
#ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15FactoryName = GET_FACTORY_NAME_FROM_ID(eFactoryId)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: trying to purchase factory ", tl_15FactoryName, " #", eFactoryId)
INT propval = CEIL(TO_FLOAT(GET_FACTORY_PRICE(eFactoryId))*g_sMPTunables.fPropertyMultiplier)
IF SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eFactoryId)
propval = 0
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase valid, attempting index ", tl_15FactoryName, " $", propval)
minPendingTransactionValue = propval
FACTORY_ID eTradeInFactory = GET_OWNED_BUNKER(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: currently owns factory #", eFactoryId)
BOOL bRenovateFactory = FALSE
IF (eFactoryId = eTradeInFactory)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES(eFactoryId, sBunker_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: renovate ", tl_15FactoryName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateFactory = TRUE
ELSE
IF IS_PAID_RESUPPLY_TIMER_RUNNING(BUNKER_SAVE_SLOT)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, paid resupply timer running")
mpPropertySiteFailReason = MPSFR_PAID_RESUPPLY
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval += CALCULATE_COST_OF_BUNKER_INTERIOR_UPGRADES(eFactoryId, sBunker_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase ", tl_15FactoryName, " for ", eTradeInFactory, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF eTradeInFactory = FACTORY_ID_INVALID
OR eTradeInFactory = FACTORY_ID_MAX
OR bRenovateFactory
IF minPendingTransactionValue > 0
//do they have enough money
// IF (iBankBalance+iWalletBalance) < minPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
// IF (minPendingTransactionValue <= 0
// OR (minPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < minPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < minPendingTransactionValue $", minPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), minPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
// ENDIF
ENDIF
ELSE
//is it a debit or refund
IF minPendingTransactionValue >0
//do they have enough money
// IF (iBankBalance+iWalletBalance) < minPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
// IF (minPendingTransactionValue <= 0
// OR (minPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < minPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < minPendingTransactionValue $", minPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), minPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
// ENDIF
ENDIF
iResultSlot = GET_SAVE_SLOT_FOR_FACTORY(eTradeInFactory)
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eFactoryId),iReplaceSpecificPropertySlot,rpmt_1_FACTORY)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
// eTradeInFactory = GET_FACTORY_ID_FROM_FACTORY_SLOT(PLAYER_ID(), iResultSlot)
iOwnedFactoryValue = GET_FACTORY_SALE_VALUE(eTradeInFactory)
finalPendingTransactionValue = propval - iOwnedFactoryValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", factory: ", eTradeInFactory, " for trade. propval $", propval, ", iOwnedFactoryValue: ", iOwnedFactoryValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedFactoryValue, " <> $", finalPendingTransactionValue)
// IF (iBankBalance+iWalletBalance+ GET_FACTORY_SALE_VALUE(eTradeInFactory)) < finalPendingTransactionValue
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash after trade selection [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < finalPendingTransactionValue finalPendingTransactionValue:$", finalPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), finalPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15FactoryName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
INT iDecor, iAccommodation, iFiringRange, iGunLocker, iTransportation
GET_SCALEFORM_FACTORY_DATA(iDecor, iAccommodation, iFiringRange, iGunLocker, iTransportation)
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eFactoryId = eTradeInFactory
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_FACTORY_PRICE(eFactoryId))*g_sMPTunables.fPropertyMultiplier)
ENDIF
BOOL bStarterPackItem = FALSE
IF SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eFactoryID)
bStarterPackItem = TRUE
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_FACTORY_KEY_FOR_CATALOGUE(eFactoryId, bStarterPackItem)
INT iInventoryKey = GET_FACTORY_INVENTORY_KEY_FOR_CATALOGUE(5) //bunker
INT iSellingItemId = 0
IF eTradeInFactory != FACTORY_ID_INVALID
AND eTradeInFactory != FACTORY_ID_MAX
iSellingItemId = GET_FACTORY_KEY_FOR_CATALOGUE(eTradeInFactory)
//for selling factory
BOOL bSellingFactoryVariation = FALSE
iOwnedFactoryValue = GET_FACTORY_SALE_VALUE(eTradeInFactory)
IF SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eTradeInFactory)
IF (iOwnedFactoryValue = 0)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: free factory stat to get for \"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\", iOwnedFactoryValue:$FREE")
bSellingFactoryVariation = TRUE
iOwnedFactoryValue = 0
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: no free factory stat to get for \"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\", iOwnedFactoryValue:$", iOwnedFactoryValue)
ENDIF
ENDIF
iSellingItemId = GET_FACTORY_KEY_FOR_CATALOGUE(eTradeInFactory, bSellingFactoryVariation)
IF (bRenovateFactory)
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Renovating in factory slot \"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\" iSellingItemId ", iSellingItemId, " iItemId ", iItemId, " iOwnedFactoryValue $", iOwnedFactoryValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Trading in factory slot \"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\" iSellingItemId ", iSellingItemId, " iItemId ", iItemId, " iOwnedFactoryValue $", iOwnedFactoryValue)
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 tlOwnedResultSlotFactory = GET_FACTORY_NAME_FROM_ID(eTradeInFactory)
IF IS_STRING_NULL_OR_EMPTY(tlOwnedResultSlotFactory)
CASSERTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: label for traded factory[\"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\"] index #", eTradeInFactory, " is empty!")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: label for traded factory[\"", GET_FACTORY_NAME_FROM_ID(eTradeInFactory), "\"] index #", eTradeInFactory, " is \"", tlOwnedResultSlotFactory, "\"")
ENDIF
#ENDIF
//
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR FACTORY
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedFactoryValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_1_FACTORY)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
SPENT_ON_BUNKER data
//Check if we're trading of just buying
IF (eTradeInFactory = FACTORY_ID_INVALID)
OR (eTradeInFactory = FACTORY_ID_MAX)
OR (bRenovateFactory)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sBunker_price_struct.iDecorPrice >= 0)
SWITCH iDecor
CASE 0 data.m_style = 3 BREAK //url:bugstar:3770268
CASE 1 data.m_style = 1 BREAK
CASE 2 data.m_style = 2 BREAK
DEFAULT
data.m_style = iDecor
BREAK
ENDSWITCH
data.m_style_amount = sBunker_price_struct.iDecorPrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sBunker_price_struct.iAccommodationPrice >= 0)
data.m_personalquarter = iAccommodation
data.m_personalquarter_amount = sBunker_price_struct.iAccommodationPrice
iFinalPropValue -= data.m_personalquarter_amount
ENDIF
IF (sBunker_price_struct.iFiringRangePrice >= 0)
data.m_firingrange = iFiringRange
data.m_firingrange_amount = sBunker_price_struct.iFiringRangePrice
iFinalPropValue -= data.m_firingrange_amount
ENDIF
IF (sBunker_price_struct.iGunLockerPrice >= 0)
data.m_gunlocker = iGunLocker
data.m_gunlocker_amount = sBunker_price_struct.iGunLockerPrice
iFinalPropValue -= data.m_gunlocker_amount
ENDIF
IF (sBunker_price_struct.iTransportationPrice >= 0)
data.m_caddy = iTransportation
data.m_caddy_amount = sBunker_price_struct.iTransportationPrice
iFinalPropValue -= data.m_caddy_amount
ENDIF
IF (iFinalPropValue >= 0)
OR (SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eFactoryID) AND NOT bRenovateFactory)
data.m_location = GET_HASH_KEY(GET_FACTORY_NAME_FROM_ID(eFactoryId))
data.m_location_amount = iFinalPropValue
ENDIF
IF NOT bRenovateFactory
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Bought factory for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_personalquarter:", data.m_personalquarter, " m_personalquarter_amount:$", data.m_personalquarter_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_firingrange:", data.m_firingrange, " m_firingrange_amount:$", data.m_firingrange_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_gunlocker:", data.m_gunlocker, " m_gunlocker_amount:$", data.m_gunlocker_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_caddy:", data.m_caddy, " m_caddy_amount:$", data.m_caddy_amount)
NETWORK_SPENT_BUY_BUNKER(propval, FALSE, TRUE, data)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Renovate factory for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_personalquarter:", data.m_personalquarter, " m_personalquarter_amount:$", data.m_personalquarter_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_firingrange:", data.m_firingrange, " m_firingrange_amount:$", data.m_firingrange_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_gunlocker:", data.m_gunlocker, " m_gunlocker_amount:$", data.m_gunlocker_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_caddy:", data.m_caddy, " m_caddy_amount:$", data.m_caddy_amount)
NETWORK_SPENT_UPRADE_BUNKER(propval, FALSE, TRUE, data)
ENDIF
UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_BUNKER)
IF NOT bRenovateFactory
SET_FACTORY_AS_OWNED(eFactoryId)
ENDIF
// Set up phonecall for purchasing bunker
INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL)
IF NOT IS_BIT_SET(iStatInt, biGR_Help_BOUGHT_BUNKER_CALL)
PRINTLN("BUY_MP_FACTORY_FROM_WEBSITE: [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_PURCHASE_BUNKER - Requested call for purchasing a bunker")
GB_SET_LOCAL_GUNRUN_CALL_BIT(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_PURCHASE_BUNKER)
IF GB_IS_LOCAL_GUNRUN_CALL_BIT_SET(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_NO_BUNKER)
PRINTLN("BUY_MP_FACTORY_FROM_WEBSITE: [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - Clearing call request for not owning a bunker")
GB_CLEAR_LOCAL_GUNRUN_CALL_BIT(eGB_LOCAL_GUNRUN_CALL_BITSET_NOTIFICATION_FLOW_NO_BUNKER)
ENDIF
SET_BIT(iStatInt, biGR_Help_BOUGHT_BUNKER_CALL)
SET_MP_INT_CHARACTER_STAT(MP_STAT_HELP_BUNK_EMAIL, iStatInt)
g_bResetTruckReminder = TRUE
IF IS_BIT_SET(MPGlobalsAmbience.iFmGbHelpBitSet3, BI_FM_GANG_BOSS_HELP_3_TRUCK_AVAILABLE_REMINDER_TEXT)
CLEAR_BIT(MPGlobalsAmbience.iFmGbHelpBitSet3, BI_FM_GANG_BOSS_HELP_3_TRUCK_AVAILABLE_REMINDER_TEXT)
PRINTLN("BUY_MP_FACTORY_FROM_WEBSITE: [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - Player has already received reminder text about buying a truck, resetting as we've just bought a bunker")
ENDIF
ELSE
PRINTLN("BUY_MP_FACTORY_FROM_WEBSITE: [GUNRUN_CALL] - MAINTAIN_GUNRUNNING_NOTIFICATIONS - Buying a bunker but already made the call, ignoring")
ENDIF
// // Update scaleform with the new businees status.
// ADD_FACTORY_TO_SCALEFORM_MOVIE(id)
// // Set a flag so that closing the overlay forces the site to display the homepage
// bGoHome = TRUE
//Clear the help call bits
GB_CLEAR_LOCAL_BIKER_CALL_BIT(eGB_LOCAL_BIKER_CALL_BITSET_NOTIFICATION_GET_BUSINESS_0)
GB_CLEAR_LOCAL_BIKER_CALL_BIT(eGB_LOCAL_BIKER_CALL_BITSET_NOTIFICATION_GET_BUSINESS_1)
START_FACTORY_DEFEND_MISSION_TIMER(GET_SAVE_SLOT_FOR_FACTORY(eFactoryId))
SAVE_FACOTRY_DEFEND_TIMER_FOR_SLOT(GET_SAVE_SLOT_FOR_FACTORY(eFactoryId))
SET_PACKED_STAT_BOOL(GET_STAT_ENUM_FOR_FACTORY_SETUP_DELAY_TIMER_SLOT(iResultSlot), FALSE)
CLEAR_FACTORY_STAFF_ARRIVED_TEXT_MESSAGES(iResultSlot)
CLEAR_FACTORY_PRODUCTION_LJT_CALL_TRIGGERS(iResultSlot)
// //Set the flag to request a save when we leave the app
// bRequestSave = TRUE
// // Notify the player.
// SHOW_OVERLAY(2001, "OR_PUR_SUC", "OR_OVRLY_OK", "")
ELIF GET_FACTORY_BASE_PRICE(eTradeInFactory) > 0
IF (iOwnedFactoryValue != 0)
OR SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eTradeInFactory)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Trading the business ", eTradeInFactory, " is earning the player:$", iOwnedFactoryValue)
NETWORK_EARN_FROM_SELL_BUNKER(iOwnedFactoryValue, GET_HASH_KEY(GET_FACTORY_NAME_FROM_ID(eTradeInFactory)))
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Trading the business ", eTradeInFactory, " earning nothing for the player:$", iOwnedFactoryValue, " as was free")
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedFactoryValue
IF (sBunker_price_struct.iDecorPrice >= 0)
data.m_style = iDecor
data.m_style_amount = sBunker_price_struct.iDecorPrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sBunker_price_struct.iAccommodationPrice >= 0)
data.m_personalquarter = iAccommodation
data.m_personalquarter_amount = sBunker_price_struct.iAccommodationPrice
iFinalPropValue -= data.m_personalquarter_amount
ENDIF
IF (sBunker_price_struct.iFiringRangePrice >= 0)
data.m_firingrange = iFiringRange
data.m_firingrange_amount = sBunker_price_struct.iFiringRangePrice
iFinalPropValue -= data.m_firingrange_amount
ENDIF
IF (sBunker_price_struct.iGunLockerPrice >= 0)
data.m_gunlocker = iGunLocker
data.m_gunlocker_amount = sBunker_price_struct.iGunLockerPrice
iFinalPropValue -= data.m_gunlocker_amount
ENDIF
IF (sBunker_price_struct.iTransportationPrice >= 0)
data.m_caddy = iTransportation
data.m_caddy_amount = sBunker_price_struct.iTransportationPrice
iFinalPropValue -= data.m_caddy_amount
ENDIF
IF (iFinalPropValue >= 0)
OR (SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eFactoryID))
data.m_location = GET_HASH_KEY(GET_FACTORY_NAME_FROM_ID(eFactoryId))
data.m_location_amount = iFinalPropValue
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: Trading factory for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_personalquarter:", data.m_personalquarter, " m_personalquarter_amount:$", data.m_personalquarter_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_firingrange:", data.m_firingrange, " m_firingrange_amount:$", data.m_firingrange_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_gunlocker:", data.m_gunlocker, " m_gunlocker_amount:$", data.m_gunlocker_amount)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: m_caddy:", data.m_caddy, " m_caddy_amount:$", data.m_caddy_amount)
NETWORK_SPENT_BUY_BUNKER(propval, FALSE, TRUE, data)
TRADE_BIKER_FACTORY(eFactoryId, eTradeInFactory)
// // Update scaleform with the new businees status.
// ADD_FACTORY_TO_SCALEFORM_MOVIE(ENUM_TO_INT(eOldFactory))
// ADD_FACTORY_TO_SCALEFORM_MOVIE(ENUM_TO_INT(eFactoryId))
// // Set a flag so that closing the overlay forces the site to display the homepage
// bGoHome = TRUE
// //Set the flag to request a save when we leave the app
// bRequestSave = TRUE
// // Notify the player.
// SHOW_OVERLAY(2001, "OR_PUR_SUC", "OR_OVRLY_OK", "")
ENDIF
IF NOT bRenovateFactory
IF SHOULD_FACTORY_BE_FREE_FOR_PLAYER(eFactoryId)
SET_FACTORY_PAID_FOR_PURCHASE_PRICE(5, 0)
ELSE
SET_FACTORY_PAID_FOR_PURCHASE_PRICE(5, propval)
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: iDecor: ", iDecor)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: iAccommodation: ", iAccommodation)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: iFiringRange: ", iFiringRange)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: iGunLocker: ", iGunLocker)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: iTransportation: ", iTransportation)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR, 0)
// GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBunkerDecor = iDecor
SWITCH iDecor
CASE 0 // Bunker style A
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR, 0)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_1)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_2)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_3)
BREAK
CASE 1 // Bunker style B
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR, 1)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_2)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_3)
BREAK
CASE 2 // Bunker style C
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_DECOR, 2)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_1)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_2)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree, PROPERTY_BROADCAST_BS3_OWNS_BUNKER_DECOR_3)
BREAK
ENDSWITCH
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED) != iAccommodation)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: set bunker spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_BUNKER)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: set bunker spawn, player already has accom so not a renovation")
ENDIF
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iAccommodation)
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_SAVEBED)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_SAVEBED, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_SAVEBED)
ENDIF
SWITCH iFiringRange
CASE 0 //no firing range
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_BLACK_FIRING_RANGE)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_WHITE_FIRING_RANGE)
BREAK
CASE 1 //black firing range
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_BLACK_FIRING_RANGE)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_WHITE_FIRING_RANGE)
BREAK
CASE 2 //white firing range
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_FIRING_RANGE, 2)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_BLACK_FIRING_RANGE)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_WHITE_FIRING_RANGE)
BREAK
ENDSWITCH
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(iGunLocker)
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_GUNLOCKER, 1)
SET_PLAYER_BUNKER_GUNLOCKER_PURCHASED(TRUE)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_GUNLOCKER, 0)
SET_PLAYER_BUNKER_GUNLOCKER_PURCHASED(FALSE)
IF SHOULD_ALLOW_DISABLE_WEAPON_LOADOUT_FROM_INTERNET()
SET_CUSTOM_WEAPON_LOADOUT(FALSE)
RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
ENDIF
SWITCH iTransportation
CASE 0 //no transportation
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION, 0)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_STANDARD)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_UPDATED)
BREAK
CASE 1 //standard transportation
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION, 1)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_STANDARD)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_UPDATED)
BREAK
CASE 2 //updated transportation
SET_MP_INT_CHARACTER_STAT(MP_STAT_BUNKER_TRANSPORTATION, 2)
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_STANDARD)
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBSThree,PROPERTY_BROADCAST_BS3_OWNS_BUNKER_TRANSPORTATION_UPDATED)
BREAK
ENDSWITCH
enumCharacterList CharacterToAdd = GET_GUNRUNNING_CONTACT()
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = FALSE
// INT iStatInt = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT_unknown)
// IF NOT IS_BIT_SET(iStatInt, BI_FM_NMH11_UNLOCKED_BUNKER_unknown)
// SET_BIT(iStatInt, BI_FM_NMH11_UNLOCKED_BUNKER_unknown)
// SET_MP_INT_CHARACTER_STAT(MP_STAT_FM_NON_MS_HELP_TEXT_unknown, iStatInt)
// bDisplay = TRUE
// ENDIF
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[BUNKER_CONTACT] MAINTAIN_ADD_GUNRUNNING_BUNKER_CONTACT - ADD_CONTACT_TO_PHONEBOOK(", g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
//REQUEST_SAVE(STAT_SAVETYPE_END_SHOPPING)
//REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
//bBoughtProperty = TRUE
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateFactory, FALSE, FALSE, rpmt_1_FACTORY)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = eFactoryId
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
iBoughtCasinoPreset = -1
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FACTORY_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_HANGAR_FROM_WEBSITE(HANGAR_ID eHangarID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedHangarValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15HangarName = GET_HANGAR_NAME_FROM_ID(eHangarID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: trying to purchase hangar ", tl_15HangarName, " #", eHangarID)
INT propval = CEIL(TO_FLOAT(GET_HANGAR_PRICE(eHangarID))*g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase valid, attempting index ", tl_15HangarName, " $", propval)
minPendingTransactionValue = propval
HANGAR_ID eTradeInHangar = GET_PLAYERS_OWNED_HANGAR(PLAYER_ID())
IF eTradeInHangar != HANGAR_ID_INVALID
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: currently owns hangar #", eTradeInHangar)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
AND (iCurrentMission = FMMC_TYPE_SMUGGLER_BUY
OR iCurrentMission = FMMC_TYPE_SMUGGLER_SELL
OR iCurrentMission = FMMC_TYPE_SMUGGLER_WEAPONIZED_AIR_VEHICLE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
BOOL bRenovateHangar = FALSE
IF (eHangarID = eTradeInHangar)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES(eHangarID, sHangar_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: renovate ", tl_15HangarName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateHangar = TRUE
ELSE
// IF GB_IS_PLAYER_ON_ANY_GANG_BOSS_MISSION
// AND GB_IS_PLAYER_CRITICAL_TO_JOB
IF eTradeInHangar != HANGAR_ID_INVALID
IF NOT IS_PLAYERS_HANGAR_CONTRABAND_STORAGE_EMPTY(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed - can't trade, has stock!")
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
propval += CALCULATE_COST_OF_HANGAR_INTERIOR_UPGRADES(eHangarID, sHangar_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase ", tl_15HangarName, " for ", eTradeInHangar, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF eTradeInHangar = HANGAR_ID_INVALID
OR eTradeInHangar = HANGAR_ID_MAX
OR bRenovateHangar
IF minPendingTransactionValue > 0
//do they have enough money
// IF (iBankBalance+iWalletBalance) < minPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
// IF (minPendingTransactionValue <= 0
// OR (minPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < minPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < minPendingTransactionValue $", minPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), minPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
// ENDIF
ELSE
//is it a debit or refund
IF minPendingTransactionValue >0
//do they have enough money
// IF (iBankBalance+iWalletBalance) < minPendingTransactionValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
// IF (minPendingTransactionValue <= 0
// OR (minPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < minPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < minPendingTransactionValue $", minPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), minPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
// ENDIF
ENDIF
// iResultSlot = GET_SAVE_SLOT_FOR_factory(eTradeInHangar)
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eHangarID),iReplaceSpecificPropertySlot,rpmt_2_HANGAR)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
// eTradeInHangar = GET_HANGAR_ID_FROM_factory_SLOT(PLAYER_ID(), iResultSlot)
iOwnedHangarValue = GET_HANGAR_SALE_VALUE(eTradeInHangar)
finalPendingTransactionValue = propval - iOwnedHangarValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", hangar: ", eTradeInHangar, " for trade. propval $", propval, ", iOwnedHangarValue: ", iOwnedHangarValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedHangarValue, " <> $", finalPendingTransactionValue)
// IF (iBankBalance+iWalletBalance+ GET_HANGAR_SALE_VALUE(eTradeInHangar)) < finalPendingTransactionValue
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash after trade selection [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < finalPendingTransactionValue finalPendingTransactionValue:$", finalPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), finalPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15HangarName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
HANGAR_DATA_STRUCT sHangarData
GET_SCALEFORM_HANGAR_DATA(sHangarData)
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eHangarID = eTradeInHangar
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_HANGAR_PRICE(eHangarID))*g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_HANGAR_KEY_FOR_CATALOGUE(eHangarID)
INT iInventoryKey = GET_HANGAR_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF eTradeInHangar != HANGAR_ID_INVALID
AND eTradeInHangar != HANGAR_ID_MAX
iSellingItemId = GET_HANGAR_KEY_FOR_CATALOGUE(eTradeInHangar)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR HANGAR
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedHangarValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_2_HANGAR)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
SPEND_HANGAR data
//Check if we're trading of just buying
IF (eTradeInHangar = HANGAR_ID_INVALID)
OR (eTradeInHangar = HANGAR_ID_MAX)
OR (bRenovateHangar)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sHangar_price_struct.iFlooringPrice >= 0)
OR NOT bRenovateHangar
data.m_flooring = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FLOORING, sHangarData.iFlooring))
data.m_flooring_amount = sHangar_price_struct.iFlooringPrice
iFinalPropValue -= data.m_flooring_amount
ENDIF
IF (sHangar_price_struct.iAccommodationPrice >= 0)
OR NOT bRenovateHangar
data.m_livingQuarter = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_PERSONAL_QUARTERS, sHangarData.iSleepingQuarters))
data.m_livingQuarter_amount = sHangar_price_struct.iAccommodationPrice
iFinalPropValue -= data.m_livingQuarter_amount
ENDIF
IF (sHangar_price_struct.iFurniturePrice >= 0)
OR NOT bRenovateHangar
data.m_furnitures = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FURNITURE, sHangarData.iFurniture))
data.m_furnitures_amount = sHangar_price_struct.iFurniturePrice
iFinalPropValue -= data.m_furnitures_amount
ENDIF
IF (sHangar_price_struct.iModshopPrice >= 0)
OR NOT bRenovateHangar
data.m_workshop = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_MODSHOP, sHangarData.iWorkshop))
data.m_workshop_amount = sHangar_price_struct.iModshopPrice
iFinalPropValue -= data.m_workshop_amount
ENDIF
IF (sHangar_price_struct.iColourPrice >= 0)
OR NOT bRenovateHangar
data.m_style = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_STYLE, sHangarData.iStyle))
data.m_style_amount = sHangar_price_struct.iColourPrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sHangar_price_struct.iLightingPrice >= 0)
OR NOT bRenovateHangar
data.m_lighting = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_LIGHTING, sHangarData.iLighting))
data.m_lighting_amount = sHangar_price_struct.iLightingPrice
iFinalPropValue -= data.m_lighting_amount
ENDIF
IF (iFinalPropValue >= 0)
OR NOT bRenovateHangar
data.m_location = GET_HASH_KEY(GET_HANGAR_NAME_FROM_ID(eHangarID))
data.m_location_amount = iFinalPropValue
ENDIF
IF NOT bRenovateHangar
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Bought hangar for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_HANGAR_NAME_FROM_ID(eHangarID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_flooring:", data.m_flooring, " m_flooring_amount:$", data.m_flooring_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FLOORING, sHangarData.iFlooring))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_furnitures:", data.m_furnitures, " m_furnitures_amount:$", data.m_furnitures_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FURNITURE, sHangarData.iFurniture))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_workshop:", data.m_workshop, " m_workshop_amount:$", data.m_workshop_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_MODSHOP, sHangarData.iWorkshop))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_STYLE, sHangarData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_LIGHTING, sHangarData.iLighting))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_PERSONAL_QUARTERS, sHangarData.iSleepingQuarters))
NETWORK_SPENT_PURCHASE_HANGAR(propval, data, FALSE, TRUE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Renovate hangar for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_HANGAR_NAME_FROM_ID(eHangarID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_flooring:", data.m_flooring, " m_flooring_amount:$", data.m_flooring_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FLOORING, sHangarData.iFlooring))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_furnitures:", data.m_furnitures, " m_furnitures_amount:$", data.m_furnitures_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FURNITURE, sHangarData.iFurniture))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_workshop:", data.m_workshop, " m_workshop_amount:$", data.m_workshop_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_MODSHOP, sHangarData.iWorkshop))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_STYLE, sHangarData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_LIGHTING, sHangarData.iLighting))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_PERSONAL_QUARTERS, sHangarData.iSleepingQuarters))
NETWORK_SPENT_UPGRADE_HANGAR(propval, data, FALSE, TRUE)
ENDIF
// UNLOCK_CLOTHING_AWARD(CLOTHING_AWARD_PURCH_HANGAR)
IF NOT bRenovateHangar
SET_HANGAR_AS_OWNED(eHangarID)
GB_SMUGGLER_SETUP_HANGAR_PURCHASED_FLOW_PHONECALL()
ENDIF
ELIF GET_HANGAR_BASE_PRICE(eTradeInHangar) > 0
// IF NOT SHOULD_HANGAR_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Trading the business ", eTradeInHangar, " is earning the player:$", iOwnedHangarValue)
SAFE_NETWORK_EARN_FROM_HANGAR_TRADE(iOwnedHangarValue, GET_HASH_KEY(GET_HANGAR_NAME_FROM_ID(eTradeInHangar)))
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Trading the business ", eTradeInHangar, " is earning nothing the player:$", iOwnedHangarValue, " as was free")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedHangarValue
//
data.m_flooring = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FLOORING, sHangarData.iFlooring))
data.m_flooring_amount = sHangar_price_struct.iFlooringPrice
iFinalPropValue -= data.m_flooring_amount
//
data.m_livingQuarter = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_PERSONAL_QUARTERS, sHangarData.iSleepingQuarters))
data.m_livingQuarter_amount = sHangar_price_struct.iAccommodationPrice
iFinalPropValue -= data.m_livingQuarter_amount
//
data.m_furnitures = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FURNITURE, sHangarData.iFurniture))
data.m_furnitures_amount = sHangar_price_struct.iFurniturePrice
iFinalPropValue -= data.m_furnitures_amount
//
data.m_workshop = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_MODSHOP, sHangarData.iWorkshop))
data.m_workshop_amount = sHangar_price_struct.iModshopPrice
iFinalPropValue -= data.m_workshop_amount
//
data.m_style = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_STYLE, sHangarData.iStyle))
data.m_style_amount = sHangar_price_struct.iColourPrice
iFinalPropValue -= data.m_style_amount
//
data.m_lighting = GET_HASH_KEY(GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_LIGHTING, sHangarData.iLighting))
data.m_lighting_amount = sHangar_price_struct.iLightingPrice
iFinalPropValue -= data.m_lighting_amount
//
data.m_location = GET_HASH_KEY(GET_HANGAR_NAME_FROM_ID(eHangarID))
data.m_location_amount = iFinalPropValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: Trading hangar for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_HANGAR_NAME_FROM_ID(eHangarID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_flooring:", data.m_flooring, " m_flooring_amount:$", data.m_flooring_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FLOORING, sHangarData.iFlooring))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_furnitures:", data.m_furnitures, " m_furnitures_amount:$", data.m_furnitures_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_FURNITURE, sHangarData.iFurniture))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_workshop:", data.m_workshop, " m_workshop_amount:$", data.m_workshop_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_MODSHOP, sHangarData.iWorkshop))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_STYLE, sHangarData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_LIGHTING, sHangarData.iLighting))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_HANGAR_MOD_NAME_FROM_ID(eHANGAR_MOD_PERSONAL_QUARTERS, sHangarData.iSleepingQuarters))
NETWORK_SPENT_UPGRADE_HANGAR(propval, data, FALSE, TRUE)
REMOTE_REQUEST_REMOVE_ALL_CONTRABAND_FROM_HANGAR()
TRADE_HANGAR(eHangarID, eTradeInHangar)
ENDIF
INT iBuyPropertyIndex = PROPERTY_HANGAR
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_HANGAR, iBuyPropertyIndex)
INCREMENT_MP_INT_CHARACTER_STAT(MP_STAT_NO_PROPERTIES_UNLOCK)
IF NOT bRenovateHangar
// IF NOT SHOULD_HANGAR_BE_FREE_FOR_PLAYER(eHangarID)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_HANGAR_VALUE, propval)
// ELSE
// SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_HANGAR_VALUE,0)
// ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_HANGAR_VALUE_VALID, ENUM_TO_INT(eHangarID))
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iFloorDecal: ", sHangarData.iFlooring)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iAccommodation: ", sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iFurniture: ", sHangarData.iFurniture)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iModshop: ", sHangarData.iWorkshop)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iColour: ", sHangarData.iStyle)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: iLighting: ", sHangarData.iLighting)
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FLOOR_DECAL, sHangarData.iFlooring)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sHangarData.iSleepingQuarters)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED) != sHangarData.iSleepingQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: set hangar spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_HANGAR)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: set hangar spawn, player already has accom so not a renovation")
ENDIF
ENDIF
SWITCH sHangarData.iSleepingQuarters
CASE 0 //0. None.
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED, 0)
BREAK
CASE 1 //2. Modern, comes with modern lighting.
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED, 1)
BREAK
CASE 2 //3. Traditional, comes with traditional lighting.
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_SAVEBED, 2)
BREAK
ENDSWITCH
SWITCH sHangarData.iFurniture
CASE 0
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE, 0)
BREAK
CASE 1 //1. Modern, comes with modern lighting.
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE, 1)
BREAK
CASE 2 //2. Traditional, comes with traditional lighting.
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_FURNITURE, 2)
BREAK
ENDSWITCH
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sHangarData.iWorkshop)
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_MODSHOP, 1)
// SET_PLAYER_HANGAR_MODSHOP_PURCHASED(TRUE)
ELSE
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_MODSHOP, 0)
// SET_PLAYER_HANGAR_MODSHOP_PURCHASED(FALSE)
// SET_CUSTOM_WEAPON_LOADOUT(FALSE)
// RESET_CUSTOM_WEAPON_LOADOUT_STATS()
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_COLOUR, sHangarData.iStyle)
SET_MP_INT_CHARACTER_STAT(MP_STAT_HANGAR_LIGHTING, sHangarData.iLighting)
BROADCAST_PLAYER_PURCHASED_HANGAR()
enumCharacterList CharacterToAdd = GET_SMUGGLER_CONTACT()
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = FALSE
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[HANGAR_CONTACT] MAINTAIN_ADD_SMUGGLER_HANGAR_CONTACT - ADD_CONTACT_TO_PHONEBOOK(",
g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchased hangar, set bDisplayed_HELP_FDSE0ha false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0HA)
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateHangar, FALSE, FALSE, rpmt_2_HANGAR)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = eHangarID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_HANGAR_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_DEFUNCT_BASE_FROM_WEBSITE(DEFUNCT_BASE_ID eBaseID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeBaseValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15BaseName = GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: trying to purchase base ", tl_15BaseName, " #", eBaseID)
INT propval = CEIL(TO_FLOAT(GET_DEFUNCT_BASE_PRICE(eBaseID))*g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase valid, attempting index ", tl_15BaseName, " $", propval)
minPendingTransactionValue = propval
DEFUNCT_BASE_ID eTradeInBase = GET_PLAYERS_OWNED_DEFUNCT_BASE(PLAYER_ID())
IF IS_DEFUNCT_BASE_ID_VALID(eTradeInBase)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: currently owns base #", eTradeInBase)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
IF (iCurrentMission = FMMC_TYPE_FM_GANGOPS)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
ENDIF
BOOL bRenovateBase = FALSE
IF (eBaseID = eTradeInBase)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES(eBaseID, sDefunct_base_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: renovate ", tl_15BaseName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateBase = TRUE
ELSE
propval += CALCULATE_COST_OF_DEFUNCT_BASE_INTERIOR_UPGRADES(eBaseID, sDefunct_base_price_struct)
IF NOT IS_DEFUNCT_BASE_ID_VALID(eTradeInBase)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase ", tl_15BaseName, " for ", eTradeInBase, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: trade ", tl_15BaseName, " for ", eTradeInBase, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF NOT IS_DEFUNCT_BASE_ID_VALID(eTradeInBase)
OR bRenovateBase
IF minPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15BaseName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
//is it a debit or refund
INT iTempMinPendingTransactionValue = minPendingTransactionValue-GET_DEFUNCT_BASE_SALE_VALUE(eTradeInBase)
IF iTempMinPendingTransactionValue >0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_DEFUNCT_BASE_SALE_VALUE(eTradeInBase))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_DEFUNCT_BASE_SALE_VALUE(eTradeInBase), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15BaseName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_DEFUNCT_BASE_SALE_VALUE(eTradeInBase))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eBaseID),iReplaceSpecificPropertySlot,rpmt_3_DEFUNCT_BASE)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
//RENDER_BROWSER()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeBaseValue = GET_DEFUNCT_BASE_SALE_VALUE(eTradeInBase)
finalPendingTransactionValue = propval - iOwnedTradeBaseValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInBase, " for trade. propval $", propval, ", iOwnedTradeBaseValue: ", iOwnedTradeBaseValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedTradeBaseValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15BaseName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
DEFUNCT_BASE_DATA_STRUCT sDefunctBaseData
GET_SCALEFORM_DEFUNCT_BASE_DATA(sDefunctBaseData)
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eBaseID = eTradeInBase
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_DEFUNCT_BASE_PRICE(eBaseID))*g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_DEFUNCT_BASE_KEY_FOR_CATALOGUE(eBaseID)
INT iInventoryKey = GET_DEFUNCT_BASE_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_DEFUNCT_BASE_ID_VALID(eTradeInBase)
iSellingItemId = GET_DEFUNCT_BASE_KEY_FOR_CATALOGUE(eTradeInBase)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR DEFUNCT_BASE
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeBaseValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
SPENT_ON_BASE data
//Check if we're trading of just buying
IF (NOT IS_DEFUNCT_BASE_ID_VALID(eTradeInBase))
OR (bRenovateBase)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sDefunct_base_price_struct.iPersonalQuartersPrice >= 0)
OR NOT bRenovateBase
data.m_livingQuarter = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters))
data.m_livingQuarter_amount = sDefunct_base_price_struct.iPersonalQuartersPrice
iFinalPropValue -= data.m_livingQuarter_amount
ENDIF
IF (sDefunct_base_price_struct.iOrbitalWeaponPrice >= 0)
OR NOT bRenovateBase
data.m_orbcannon = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon))
data.m_orbcannon_amount = sDefunct_base_price_struct.iOrbitalWeaponPrice
iFinalPropValue -= data.m_orbcannon_amount
ENDIF
IF (sDefunct_base_price_struct.iSecurityRoomPrice >= 0)
OR NOT bRenovateBase
data.m_secroom = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom))
data.m_secroom_amount = sDefunct_base_price_struct.iSecurityRoomPrice
iFinalPropValue -= data.m_secroom_amount
ENDIF
IF (sDefunct_base_price_struct.iLoungePrice >= 0)
OR NOT bRenovateBase
data.m_lounge = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, sDefunctBaseData.iLounge))
data.m_lounge_amount = sDefunct_base_price_struct.iLoungePrice
iFinalPropValue -= data.m_lounge_amount
ENDIF
IF (sDefunct_base_price_struct.iPrivicyGlassPrice >= 0)
OR NOT bRenovateBase
data.m_privacyglass = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass))
data.m_privacyglass_amount = sDefunct_base_price_struct.iPrivicyGlassPrice
iFinalPropValue -= data.m_privacyglass_amount
ENDIF
IF (sDefunct_base_price_struct.iStylePrice >= 0)
OR NOT bRenovateBase
data.m_style = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, sDefunctBaseData.iStyle))
data.m_style_amount = sDefunct_base_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sDefunct_base_price_struct.iGraphicsPrice >= 0)
OR NOT bRenovateBase
data.m_graphics = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)))
data.m_graphics_amount = sDefunct_base_price_struct.iGraphicsPrice
iFinalPropValue -= data.m_graphics_amount
ENDIF
IF (iFinalPropValue >= 0)
OR NOT bRenovateBase
data.m_location = GET_HASH_KEY(GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID))
data.m_location_amount = iFinalPropValue
ENDIF
IF NOT bRenovateBase
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Bought defunct base for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_orbcannon:", data.m_orbcannon, " m_orbcannon_amount:$", data.m_orbcannon_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_secroom:", data.m_secroom, " m_secroom_amount:$", data.m_secroom_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, sDefunctBaseData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_privacyglass:", data.m_privacyglass, " m_privacyglass_amount:$", data.m_privacyglass_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, sDefunctBaseData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters))
NETWORK_SPENT_BUY_BASE(propval, FALSE, TRUE, data)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Renovate defunct base for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_orbcannon:", data.m_orbcannon, " m_orbcannon_amount:$", data.m_orbcannon_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_secroom:", data.m_secroom, " m_secroom_amount:$", data.m_secroom_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, sDefunctBaseData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_privacyglass:", data.m_privacyglass, " m_privacyglass_amount:$", data.m_privacyglass_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, sDefunctBaseData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters))
NETWORK_SPENT_UPGRADE_BASE(propval, FALSE, TRUE, data)
ENDIF
IF NOT bRenovateBase
SET_DEFUNCT_BASE_AS_OWNED(eBaseID)
GANGOPS_SETUP_FACILITY_PURCHASED_FLOW_PHONECALL()
#IF FEATURE_GEN9_EXCLUSIVE
END_DOOMSDAY_HEIST_UDS_ACTIVITY_TASK(DOOMSDAY_HEIST_UDS_ACTIVITY_TASK_BUY_FACILITY, UDS_ACTIVITY_END_REASON_COMPLETED)
END_DOOMSDAY_HEIST_UDS_ACTIVITY(UDS_ACTIVITY_END_REASON_ABANDONED)
#ENDIF
ENDIF
ELIF GET_DEFUNCT_BASE_BASE_PRICE(eTradeInBase) > 0
// IF NOT SHOULD_DEFUNCT_BASE_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Trading the business ", eTradeInBase, " is earning the player:$", iOwnedTradeBaseValue)
IF iOwnedTradeBaseValue != 0
NETWORK_EARN_SELL_BASE(iOwnedTradeBaseValue, GET_HASH_KEY(GET_DEFUNCT_BASE_NAME_FROM_ID(eTradeInBase)))
ENDIF
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Earn nothing from property:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " ", tl_15PropertyName, " as was free")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedTradeBaseValue
//
data.m_livingQuarter = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters))
data.m_livingQuarter_amount = sDefunct_base_price_struct.iPersonalQuartersPrice
iFinalPropValue -= data.m_livingQuarter_amount
//
data.m_orbcannon = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon))
data.m_orbcannon_amount = sDefunct_base_price_struct.iOrbitalWeaponPrice
iFinalPropValue -= data.m_orbcannon_amount
//
data.m_secroom = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom))
data.m_secroom_amount = sDefunct_base_price_struct.iSecurityRoomPrice
iFinalPropValue -= data.m_secroom_amount
//
data.m_lounge = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, sDefunctBaseData.iLounge))
data.m_lounge_amount = sDefunct_base_price_struct.iLoungePrice
iFinalPropValue -= data.m_lounge_amount
//
data.m_privacyglass = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass))
data.m_privacyglass_amount = sDefunct_base_price_struct.iPrivicyGlassPrice
iFinalPropValue -= data.m_privacyglass_amount
//
data.m_style = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, sDefunctBaseData.iStyle))
data.m_style_amount = sDefunct_base_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
//
data.m_graphics = GET_HASH_KEY(GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)))
data.m_graphics_amount = sDefunct_base_price_struct.iGraphicsPrice
iFinalPropValue -= data.m_graphics_amount
//
data.m_location = GET_HASH_KEY(GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID))
data.m_location_amount = iFinalPropValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: Trading defunct base for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_DEFUNCT_BASE_NAME_FROM_ID(eBaseID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_orbcannon:", data.m_orbcannon, " m_orbcannon_amount:$", data.m_orbcannon_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_secroom:", data.m_secroom, " m_secroom_amount:$", data.m_secroom_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_LOUNGE, sDefunctBaseData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_privacyglass:", data.m_privacyglass, " m_privacyglass_amount:$", data.m_privacyglass_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_STYLE, sDefunctBaseData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_GRAPHIC, GET_SF_FROM_DBASE_GRAPHICS(sDefunctBaseData.iGraphics)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: m_livingQuarter:", data.m_livingQuarter, " m_livingQuarter_amount:$", data.m_livingQuarter_amount, " ", GET_DEFUNCT_BASE_MOD_NAME_FROM_ID(eDEFUNCT_BASE_MOD_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters))
NETWORK_SPENT_UPGRADE_BASE(propval, FALSE, TRUE, data)
// REMOTE_REQUEST_REMOVE_ALL_CONTRABAND_FROM_XXXXXX()
TRADE_DEFUNCT_BASE(eBaseID, eTradeInBase)
ENDIF
INT iBuyPropertyIndex = PROPERTY_DEFUNC_BASE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_DEFUNCBASE, iBuyPropertyIndex)
IF NOT bRenovateBase
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_DEFUNCBASE_VALUE, propval)
INT iForceDisplayUpdatedSlot
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying facility")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iPersonalQuarters: ", sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iOrbitalWeapon: ", sDefunctBaseData.iOrbitalWeapon)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iSecurityRoom: ", sDefunctBaseData.iSecurityRoom)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iLounge: ", sDefunctBaseData.iLounge)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iPrivicyGlass: ", sDefunctBaseData.iPrivicyGlass)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iColour: ", sDefunctBaseData.iStyle)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: iGraphics: ", sDefunctBaseData.iGraphics)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sDefunctBaseData.iPersonalQuarters)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PERSONAL_QUARTERS) != sDefunctBaseData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: set defunct base spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_DEFUNCT_BASE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: set defunct base spawn, player already has accom so not a renovation")
ENDIF
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PERSONAL_QUARTERS, sDefunctBaseData.iPersonalQuarters)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_ORBITAL_WEAPON, sDefunctBaseData.iOrbitalWeapon)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_SECURITY_ROOM, sDefunctBaseData.iSecurityRoom)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_LOUNGE, sDefunctBaseData.iLounge)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_PRIVACY_GLASS, sDefunctBaseData.iPrivicyGlass)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_STYLE, sDefunctBaseData.iStyle)
SET_MP_INT_CHARACTER_STAT(MP_STAT_DBASE_FACILITY_GRAPHIC, sDefunctBaseData.iGraphics)
BROADCAST_PLAYER_PURCHASED_DEFUNCT_BASE()
enumCharacterList CharacterToAdd = GET_GANGOPS_CONTACT()
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = FALSE
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[DEFUNCT_BASE_CONTACT] MAINTAIN_ADD_GANGOPS_DEFUNCT_BASE_CONTACT - ADD_CONTACT_TO_PHONEBOOK(",
g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchased facility, set bDisplayed_HELP_FDSE0db false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_FDSE0DB)
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateBase, FALSE, FALSE, rpmt_3_DEFUNCT_BASE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = eBaseID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_DEFUNCT_BASE_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_NIGHTCLUB_FROM_WEBSITE(NIGHTCLUB_ID eNightclubID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeNightclubValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBSTY")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBLIG")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBDAN")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBICE")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15NightclubName = GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: trying to purchase Nightclub ", tl_15NightclubName, " #", eNightclubID)
INT propval = CEIL(TO_FLOAT(GET_NIGHTCLUB_PRICE(eNightclubID))*g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase valid, attempting index ", tl_15NightclubName, " $", propval)
minPendingTransactionValue = propval
NIGHTCLUB_ID eTradeInNightclub = GET_PLAYERS_OWNED_NIGHTCLUB(PLAYER_ID())
IF IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: currently owns Nightclub #", eTradeInNightclub)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
IF (iCurrentMission != -1)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
ENDIF
BOOL bRenovateNightclub = FALSE
IF (eNightclubID = eTradeInNightclub)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES(eNightclubID, sNightclub_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: renovate ", tl_15NightclubName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateNightclub = TRUE
ELSE
IF eTradeInNightclub != NIGHTCLUB_ID_INVALID
INT iTotalGoodsInHub = GET_PLAYERS_TOTAL_OF_ALL_GOODS_IN_HUB(PLAYER_ID())
IF iTotalGoodsInHub > 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed - can't trade, has ", iTotalGoodsInHub, " goods in hub!")
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
propval += CALCULATE_COST_OF_NIGHTCLUB_INTERIOR_UPGRADES(eNightclubID, sNightclub_price_struct)
IF NOT IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase ", tl_15NightclubName, " for ", eTradeInNightclub, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: trade ", tl_15NightclubName, " for ", eTradeInNightclub, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF NOT IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
OR bRenovateNightclub
IF minPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15NightclubName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
//is it a debit or refund
INT iTempMinPendingTransactionValue = minPendingTransactionValue-GET_NIGHTCLUB_SALE_VALUE(eTradeInNightclub)
IF iTempMinPendingTransactionValue >0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_NIGHTCLUB_SALE_VALUE(eTradeInNightclub))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_NIGHTCLUB_SALE_VALUE(eTradeInNightclub), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15NightclubName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_NIGHTCLUB_SALE_VALUE(eTradeInNightclub))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eNightclubID),iReplaceSpecificPropertySlot,rpmt_4_NIGHTCLUB)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeNightclubValue = GET_NIGHTCLUB_SALE_VALUE(eTradeInNightclub)
finalPendingTransactionValue = propval - iOwnedTradeNightclubValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInNightclub, " for trade. propval $", propval, ", iOwnedTradeNightclubValue: ", iOwnedTradeNightclubValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedTradeNightclubValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15NightclubName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
NIGHTCLUB_DATA_STRUCT sNightclubData
GET_SCALEFORM_NIGHTCLUB_DATA(sNightclubData)
// IF IS_NIGHTCLUB_UPGRADE_PURCHASE_DISABLED(eNIGHTCLUB_MOD_DJ2_PURCHASED, eNightclubID, sNightclubData.iDJChoice)
// CWARNINGLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed - DJ Choice ", sNightclubData.iDJChoice, " disabled")
// mpPropertySiteFailReason = MPSFR_NOT_SAFE
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: DJ Choice ", sNightclubData.iDJChoice, " enabled")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eNightclubID = eTradeInNightclub
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_NIGHTCLUB_PRICE(eNightclubID))*g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_NIGHTCLUB_KEY_FOR_CATALOGUE(eNightclubID)
INT iInventoryKey = GET_NIGHTCLUB_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_NIGHTCLUB_ID_VALID(eTradeInNightclub)
iSellingItemId = GET_NIGHTCLUB_KEY_FOR_CATALOGUE(eTradeInNightclub)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR NIGHTCLUB
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeNightclubValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_4_NIGHTCLUB)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
STRUCT_SPENT_ON_NIGHTCLUB_AND_WAREHOUSE data
//Check if we're trading of just buying
IF (NOT IS_NIGHTCLUB_ID_VALID(eTradeInNightclub))
OR (bRenovateNightclub)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sNightclub_price_struct.iDancersPrice >= 0)
OR NOT bRenovateNightclub
data.m_podium = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, sNightclubData.iDancers))
data.m_podium_amount = sNightclub_price_struct.iDancersPrice
iFinalPropValue -= data.m_podium_amount
ENDIF
IF (sNightclub_price_struct.iDryIcePrice >= 0)
OR NOT bRenovateNightclub
data.m_dryice = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, sNightclubData.iDryIce))
data.m_dryice_amount = sNightclub_price_struct.iDryIcePrice
iFinalPropValue -= data.m_dryice_amount
ENDIF
IF (sNightclub_price_struct.iStoragePrice >= 0)
OR NOT bRenovateNightclub
data.m_whBasement2 = GET_HASH_KEY(GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, sNightclubData.iStorage))
data.m_whBasement2_amount = sNightclub_price_struct.iStoragePrice
iFinalPropValue -= data.m_whBasement2_amount
ENDIF
IF (sNightclub_price_struct.iGaragePrice >= 0)
OR NOT bRenovateNightclub
data.m_whGarage2 = GET_HASH_KEY(GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, sNightclubData.iGarage))
data.m_whGarage2_amount = sNightclub_price_struct.iGaragePrice
iFinalPropValue -= data.m_whGarage2_amount
ENDIF
IF (sNightclub_price_struct.iStylePrice >= 0)
OR NOT bRenovateNightclub
data.m_style = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, sNightclubData.iStyle))
data.m_style_amount = sNightclub_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sNightclub_price_struct.iLightingPrice >= 0)
OR NOT bRenovateNightclub
data.m_lighting = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)))
data.m_lighting_amount = sNightclub_price_struct.iLightingPrice
iFinalPropValue -= data.m_lighting_amount
ENDIF
IF (sNightclub_price_struct.iNamePrice >= 0)
OR NOT bRenovateNightclub
data.m_name = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)))
data.m_name_amount = sNightclub_price_struct.iNamePrice
iFinalPropValue -= data.m_name_amount
ENDIF
IF (iFinalPropValue >= 0)
OR NOT bRenovateNightclub
data.m_location = GET_HASH_KEY(GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID))
data.m_location_amount = iFinalPropValue
ENDIF
IF NOT bRenovateNightclub
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Bought nightclub for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, sNightclubData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_podium:", data.m_podium, " m_podium_amount:$", data.m_podium_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, sNightclubData.iDancers))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_dryice:", data.m_dryice, " m_dryice_amount:$", data.m_dryice_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, sNightclubData.iDryIce))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whBasement2:", data.m_whBasement2, " m_whBasement2_amount:$", data.m_whBasement2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, sNightclubData.iStorage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whGarage2:", data.m_whGarage2, " m_whGarage2_amount:$", data.m_whGarage2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, sNightclubData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_name:", data.m_name, " m_name_amount:$", data.m_name_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)))
NETWORK_SPENT_PURCHASE_NIGHTCLUB_AND_WAREHOUSE(propval, data, FALSE, TRUE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Renovate nightclub for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, sNightclubData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_podium:", data.m_podium, " m_podium_amount:$", data.m_podium_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, sNightclubData.iDancers))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_dryice:", data.m_dryice, " m_dryice_amount:$", data.m_dryice_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, sNightclubData.iDryIce))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whBasement2:", data.m_whBasement2, " m_whBasement2_amount:$", data.m_whBasement2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, sNightclubData.iStorage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whGarage2:", data.m_whGarage2, " m_whGarage2_amount:$", data.m_whGarage2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, sNightclubData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_name:", data.m_name, " m_name_amount:$", data.m_name_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)))
NETWORK_SPENT_UPGRADE_NIGHTCLUB_AND_WAREHOUSE(propval, data, FALSE, TRUE)
ENDIF
IF NOT bRenovateNightclub
SET_NIGHTCLUB_AS_OWNED(eNightclubID)
SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet6, BI_FM_GANG_BOSS_HELP_6_SEND_NIGHTCLUB_PURCHASED_TEXT)
PRINTLN("[FMBB_CALL] - BUY_MP_NIGHTCLUB_FROM_WEBSITE - BI_FM_GANG_BOSS_HELP_6_SEND_NIGHTCLUB_PURCHASED_TEXT set")
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: set nightclub spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_NIGHTCLUB)
SET_NIGHTCLUB_DJ_ACTIVE_STATE(DJ_SOLOMUN, TRUE)
ENDIF
ELIF GET_NIGHTCLUB_BASE_PRICE(eTradeInNightclub) > 0
// IF NOT SHOULD_NIGHTCLUB_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Trading the business ", eTradeInNightclub, " is earning the player:$", iOwnedTradeNightclubValue)
NETWORK_EARN_NIGHTCLUB_AND_WAREHOUSE(iOwnedTradeNightclubValue, GET_HASH_KEY(GET_NIGHTCLUB_NAME_FROM_ID(eTradeInNightclub)), 0, 0, 0, 0, 0)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Earn nothing from property:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " ", tl_15PropertyName, " as was free")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedTradeNightclubValue
//
data.m_style = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, sNightclubData.iStyle))
data.m_style_amount = sNightclub_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
//
data.m_lighting = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)))
data.m_lighting_amount = sNightclub_price_struct.iLightingPrice
iFinalPropValue -= data.m_lighting_amount
//
data.m_podium = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, sNightclubData.iDancers))
data.m_podium_amount = sNightclub_price_struct.iDancersPrice
iFinalPropValue -= data.m_podium_amount
//
data.m_dryice = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, sNightclubData.iDryIce))
data.m_dryice_amount = sNightclub_price_struct.iDryIcePrice
iFinalPropValue -= data.m_dryice_amount
//
data.m_whBasement2 = GET_HASH_KEY(GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, sNightclubData.iStorage))
data.m_whBasement2_amount = sNightclub_price_struct.iStoragePrice
iFinalPropValue -= data.m_whBasement2_amount
//
data.m_whGarage2 = GET_HASH_KEY(GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, sNightclubData.iGarage))
data.m_whGarage2_amount = sNightclub_price_struct.iGaragePrice
iFinalPropValue -= data.m_whGarage2_amount
//
data.m_name = GET_HASH_KEY(GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)))
data.m_name_amount = sNightclub_price_struct.inamePrice
iFinalPropValue -= data.m_name_amount
//
data.m_location = GET_HASH_KEY(GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID))
data.m_location_amount = iFinalPropValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: Trading nightclub for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_NIGHTCLUB_NAME_FROM_ID(eNightclubID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_STYLE, sNightclubData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_lighting:", data.m_lighting, " m_lighting_amount:$", data.m_lighting_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_LIGHTING, GET_SF_FROM_NIGHTCLUB_LIGHTING(sNightclubData.iLighting)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_podium:", data.m_podium, " m_podium_amount:$", data.m_podium_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DANCERS, sNightclubData.iDancers))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_dryice:", data.m_dryice, " m_dryice_amount:$", data.m_dryice_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_DRYICE, sNightclubData.iDryIce))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whBasement2:", data.m_whBasement2, " m_whBasement2_amount:$", data.m_whBasement2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_WAREHOUSE, sNightclubData.iStorage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_whGarage2:", data.m_whGarage2, " m_whGarage2_amount:$", data.m_whGarage2_amount, " ", GET_BUSINESS_HUB_MOD_NAME_FROM_ID(eBUSINESS_HUB_MOD_GARAGE, sNightclubData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: m_name:", data.m_name, " m_name_amount:$", data.m_name_amount, " ", GET_NIGHTCLUB_MOD_NAME_FROM_ID(eNIGHTCLUB_MOD_NAME, GET_SF_FROM_NIGHTCLUB_NAME(sNightclubData.iNameID)))
NETWORK_SPENT_UPGRADE_NIGHTCLUB_AND_WAREHOUSE(propval, data, FALSE, TRUE)
// REMOTE_REQUEST_REMOVE_ALL_CONTRABAND_FROM_XXXXXX()
TRADE_NIGHTCLUB(eNightclubID, eTradeInNightclub)
ENDIF
INT iBuyPropertyIndex = PROPERTY_NIGHTCLUB
iResultSlot = PROPERTY_OWNED_SLOT_NIGHTCLUB
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_NIGHTCLUB, iBuyPropertyIndex)
IF NOT bRenovateNightclub
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_NIGHTCLUB_VALUE, propval)
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying nightclub")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
g_iHubDefendLaunchTimeRemaining = GET_BUSINESS_HUB_TOTAL_AMBIENT_MISSION_INTERVAL(AMB_TYPE_DEFEND)
SET_MP_INT_CHARACTER_STAT(MP_STAT_BBT_DEFEND_TIMER_NCLUB, g_iHubDefendLaunchTimeRemaining)
PRINTLN("[BUSINESS_HUB][HUB_DEFEND] Local player now owns a hub. Setting timer to: ", g_iHubDefendLaunchTimeRemaining)
g_iHubPhoneMissionLaunchTimeRemaining = GET_BUSINESS_HUB_TOTAL_AMBIENT_MISSION_INTERVAL(AMB_TYPE_PHONECALL)
SET_MP_INT_CHARACTER_STAT(MP_STAT_BBT_DEFEND_TIMER_NCLUB, g_iHubPhoneMissionLaunchTimeRemaining)
PRINTLN("[BUSINESS_HUB][HUB_PHONE] Local player now owns a hub. Setting phone mission launch timer to: ", g_iHubPhoneMissionLaunchTimeRemaining)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iStyle: ", sNightclubData.iStyle)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iLighting: ", sNightclubData.iLighting)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iDancers: ", sNightclubData.iDancers)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iDryIce: ", sNightclubData.iDryIce)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iStorage: ", sNightclubData.iStorage)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iGarage: ", sNightclubData.iGarage)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: iNameID: ", sNightclubData.iNameID)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_STYLE), sNightclubData.iStyle)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_LIGHTING), sNightclubData.iLighting)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DANCERS), sNightclubData.iDancers)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_DRYICE), sNightclubData.iDryIce)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_NIGHTCLUB_UPGRADE(eNIGHTCLUB_MOD_NAME), sNightclubData.iNameID)
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NIGHTCLUB_DRY_ICE, (sNightclubData.iDryIce = 1))
BUSINESS_HUB_ID eHubID = INT_TO_ENUM(BUSINESS_HUB_ID, ENUM_TO_INT(eNightclubID))
IF NOT DOES_PLAYER_OWN_BUSINESS_HUB(PLAYER_ID(), eHubID)
SET_BUSINESS_HUB_AS_OWNED(eHubID, !bRenovateNightclub)
ENDIF
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_GARAGE), sNightclubData.iGarage)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_BUSINESS_HUB_UPGRADE(eBUSINESS_HUB_MOD_WAREHOUSE), sNightclubData.iStorage)
IF IS_BUSINESS_HUB_GARAGE_02_PURCHASED()
iBuyPropertyIndex = PROPERTY_MEGAWARE_GARAGE_LVL1
iResultSlot = PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL1
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR1, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR1_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: MP_STAT_PROP_MEGAWARE_GAR1 iBuyPropertyIndex:", iBuyPropertyIndex)
ENDIF
IF IS_BUSINESS_HUB_GARAGE_03_PURCHASED()
iBuyPropertyIndex = PROPERTY_MEGAWARE_GARAGE_LVL2
iResultSlot = PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL2
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR2, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR2_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: MP_STAT_PROP_MEGAWARE_GAR2 iBuyPropertyIndex:", iBuyPropertyIndex)
ENDIF
IF IS_BUSINESS_HUB_GARAGE_04_PURCHASED()
iBuyPropertyIndex = PROPERTY_MEGAWARE_GARAGE_LVL3
iResultSlot = PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL3
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR3, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR3_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: MP_STAT_PROP_MEGAWARE_GAR3 iBuyPropertyIndex:", iBuyPropertyIndex)
ENDIF
CDEBUG1LN(DEBUG_PROPERTY, "BUY_MP_NIGHTCLUB_FROM_WEBSITE - Setting local player as owner of Business Hub: ", ENUM_TO_INT(eHubID))
BROADCAST_PLAYER_PURCHASED_BUSINESS_HUB()
BROADCAST_PLAYER_PURCHASED_NIGHTCLUB()
enumCharacterList CharacterToAdd = GET_BUSINESS_BATTLE_NIGHTCLUB_CONTACT()
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = TRUE
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[NIGHTCLUB_CONTACT] MAINTAIN_ADD_BUSINESS_BATTLE_NIGHTCLUB_CONTACT - ADD_CONTACT_TO_PHONEBOOK(", g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
IF IS_BIT_SET(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchased nightclub, set bDisplayed_HELP_BBSE0nc false")
CLEAR_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_BBSE0NC)
ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateNightclub, FALSE, FALSE, rpmt_4_NIGHTCLUB)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = eNightclubID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_NIGHTCLUB_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_ARENA_GARAGE_FROM_WEBSITE(ARENA_GARAGE_ID eArenaID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeArenaValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
// IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBSTY")
// OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBLIG")
// OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBDAN")
// OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBICE")
// CLEAR_HELP()
// CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
// ENDIF
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15ArenaName = GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: trying to purchase ARENA_GARAGE ", tl_15ArenaName, " #", eArenaID)
INT propval = CEIL(TO_FLOAT(GET_ARENA_GARAGE_PRICE(eArenaID))*g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase valid, attempting index ", tl_15ArenaName, " $", propval)
minPendingTransactionValue = propval
ARENA_GARAGE_ID eTradeInArena = GET_PLAYERS_OWNED_ARENA_GARAGE(PLAYER_ID())
IF IS_ARENA_GARAGE_ID_VALID(eTradeInArena)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: currently owns ARENA_GARAGE #", eTradeInArena)
// INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
// IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
//
// IF (iCurrentMission = FMMC_TYPE_FMBB_DEFEND)
// OR (iCurrentMission = FMMC_TYPE_FMBB_PHONECALL)
// OR (iCurrentMission = FMMC_TYPE_FMBB_SELL)
// OR (iCurrentMission = FMMC_TYPE_FMBB_CLUB_MANAGEMENT)
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
// mpPropertySiteFailReason = MPSFR_ON_MISSION
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ENDIF
// ENDIF
ENDIF
BOOL bRenovateArenaGarage = FALSE
IF (eArenaID = eTradeInArena)
// IF GET_LOCAL_PLAYER_USING_ARENA_BOX_SEATID() != -1
// CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed - using arena box seat ", GET_LOCAL_PLAYER_USING_ARENA_BOX_SEATID(), "!")
// mpPropertySiteFailReason = MPSFR_NOT_SAFE
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ENDIF
propval = CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES(eArenaID, sArena_garage_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: renovate ", tl_15ArenaName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateArenaGarage = TRUE
ELSE
IF eTradeInArena != ARENA_GARAGE_ID_INVALID
INT iTotalGoodsInHub = GET_PLAYERS_TOTAL_OF_ALL_GOODS_IN_HUB(PLAYER_ID())
IF iTotalGoodsInHub > 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed - can't trade, has ", iTotalGoodsInHub, " goods in hub!")
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
propval += CALCULATE_COST_OF_ARENA_GARAGE_INTERIOR_UPGRADES(eArenaID, sArena_garage_price_struct)
IF NOT IS_ARENA_GARAGE_ID_VALID(eTradeInArena)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase ", tl_15ArenaName, " for ", eTradeInArena, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: trade ", tl_15ArenaName, " for ", eTradeInArena, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF NOT IS_ARENA_GARAGE_ID_VALID(eTradeInArena)
OR bRenovateArenaGarage
IF minPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
//is it a debit or refund
INT iTempMinPendingTransactionValue = minPendingTransactionValue-GET_ARENA_GARAGE_SALE_VALUE(eTradeInArena)
IF iTempMinPendingTransactionValue >0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_ARENA_GARAGE_SALE_VALUE(eTradeInArena))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_ARENA_GARAGE_SALE_VALUE(eTradeInArena), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_ARENA_GARAGE_SALE_VALUE(eTradeInArena))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eArenaID),iReplaceSpecificPropertySlot,rpmt_5_ARENA_GARAGE)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeArenaValue = GET_ARENA_GARAGE_SALE_VALUE(eTradeInArena)
finalPendingTransactionValue = propval - iOwnedTradeArenaValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInArena, " for trade. propval $", propval, ", iOwnedTradeArenaValue: ", iOwnedTradeArenaValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedTradeArenaValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
ARENA_GARAGE_DATA_STRUCT sArenaData
GET_SCALEFORM_ARENA_GARAGE_DATA(sArenaData)
// IF IS_ARENA_GARAGE_UPGRADE_PURCHASE_DISABLED(eARENA_GARAGE_MOD_DJ2_PURCHASED, eArenaID, sArenaData.iDJChoice)
// CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed - DJ Choice ", sArenaData.iDJChoice, " disabled")
// mpPropertySiteFailReason = MPSFR_NOT_SAFE
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: DJ Choice ", sArenaData.iDJChoice, " enabled")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eArenaID = eTradeInArena
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_ARENA_GARAGE_PRICE(eArenaID))*g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_ARENA_GARAGE_KEY_FOR_CATALOGUE(eArenaID)
INT iInventoryKey = GET_ARENA_GARAGE_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_ARENA_GARAGE_ID_VALID(eTradeInArena)
iSellingItemId = GET_ARENA_GARAGE_KEY_FOR_CATALOGUE(eTradeInArena)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR ARENA_GARAGE
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeArenaValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
TEXT_LABEL_31 tl31FloorHashname = "", tl31MechanicHashname = ""
STRUCT_SPENT_ON_ARENA data
//Check if we're trading of just buying
IF (NOT IS_ARENA_GARAGE_ID_VALID(eTradeInArena))
OR (bRenovateArenaGarage)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sArena_garage_price_struct.iStylePrice >= 0)
OR NOT bRenovateArenaGarage
data.m_style = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle))
data.m_style_amount = sArena_garage_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
ENDIF
IF (sArena_garage_price_struct.iGraphicsPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_graphics = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics))
data.m_graphics_amount = sArena_garage_price_struct.iGraphicsPrice
iFinalPropValue -= data.m_graphics_amount
ENDIF
IF (sArena_garage_price_struct.iColourPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_colour = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour))
data.m_colour_amount = sArena_garage_price_struct.iColourPrice
iFinalPropValue -= data.m_colour_amount
ENDIF
IF (sArena_garage_price_struct.iExpansionFloorB1Price >= 0)
OR (sArena_garage_price_struct.iExpansionFloorB2Price >= 0)
OR NOT bRenovateArenaGarage
IF (sArena_garage_price_struct.iExpansionFloorB1Price != 0
AND sArena_garage_price_struct.iExpansionFloorB2Price >= 0)
OR NOT bRenovateArenaGarage
tl31FloorHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, sArenaData.iExpansionFloorB1, eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, sArenaData.iExpansionFloorB2)
data.m_floor = GET_HASH_KEY(tl31FloorHashname)
ELSE
IF (sArena_garage_price_struct.iExpansionFloorB1Price >= 0)
tl31FloorHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, sArenaData.iExpansionFloorB1, eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, -1)
data.m_floor = GET_HASH_KEY(tl31FloorHashname)
ELIF (sArena_garage_price_struct.iExpansionFloorB2Price >= 0)
tl31FloorHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, -1, eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, sArenaData.iExpansionFloorB2)
data.m_floor = GET_HASH_KEY(tl31FloorHashname)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: invalid m_floor values!!!")
ENDIF
ENDIF
data.m_floor_amount = 0
IF (sArena_garage_price_struct.iExpansionFloorB1Price >= 0)
data.m_floor_amount += sArena_garage_price_struct.iExpansionFloorB1Price
ENDIF
IF (sArena_garage_price_struct.iExpansionFloorB2Price >= 0)
data.m_floor_amount += sArena_garage_price_struct.iExpansionFloorB2Price
ENDIF
iFinalPropValue -= data.m_floor_amount
ENDIF
IF (sArena_garage_price_struct.iBennyMechanicPrice >= 0)
OR (sArena_garage_price_struct.iWeaponMechanicPrice >= 0)
OR NOT bRenovateArenaGarage
IF (sArena_garage_price_struct.iBennyMechanicPrice != 0
AND sArena_garage_price_struct.iWeaponMechanicPrice >= 0)
OR NOT bRenovateArenaGarage
tl31MechanicHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_BENNY_MECHANIC, sArenaData.iBennyMechanic, eARENA_GARAGE_MOD_WEAPON_MECHANIC, sArenaData.iWeaponMechanic)
data.m_mechanic = GET_HASH_KEY(tl31MechanicHashname)
ELSE
IF (sArena_garage_price_struct.iBennyMechanicPrice >= 0)
tl31MechanicHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_BENNY_MECHANIC, sArenaData.iBennyMechanic, eARENA_GARAGE_MOD_WEAPON_MECHANIC, -1)
data.m_mechanic = GET_HASH_KEY(tl31MechanicHashname)
ELIF (sArena_garage_price_struct.iWeaponMechanicPrice >= 0)
tl31MechanicHashname = GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_BENNY_MECHANIC, -1, eARENA_GARAGE_MOD_WEAPON_MECHANIC, sArenaData.iWeaponMechanic)
data.m_mechanic = GET_HASH_KEY(tl31MechanicHashname)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: invalid m_mechanic values!!!")
ENDIF
ENDIF
data.m_mechanic_amount = 0
IF (sArena_garage_price_struct.iBennyMechanicPrice >= 0)
data.m_mechanic_amount += sArena_garage_price_struct.iBennyMechanicPrice
ENDIF
IF (sArena_garage_price_struct.iWeaponMechanicPrice >= 0)
data.m_mechanic_amount += sArena_garage_price_struct.iWeaponMechanicPrice
ENDIF
iFinalPropValue -= data.m_mechanic_amount
ENDIF
IF (sArena_garage_price_struct.iPersonalQuartersPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_personalQuarters = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters))
data.m_personalQuarters_amount = sArena_garage_price_struct.iPersonalQuartersPrice
iFinalPropValue -= data.m_personalQuarters_amount
ENDIF
IF (iFinalPropValue >= 0)
OR NOT bRenovateArenaGarage
data.m_location = GET_HASH_KEY(GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID))
data.m_location_amount = iFinalPropValue
ENDIF
IF NOT bRenovateArenaGarage
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Bought ARENA_GARAGE for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_floor:", data.m_floor, " ($", sArena_garage_price_struct.iExpansionFloorB1Price, "+$", sArena_garage_price_struct.iExpansionFloorB2Price, ") m_floor_amount:$", data.m_floor_amount, " ", tl31FloorHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_mechanic:", data.m_mechanic, " ($", sArena_garage_price_struct.iBennyMechanicPrice, "+$", sArena_garage_price_struct.iWeaponMechanicPrice, ") m_mechanic_amount:$", data.m_mechanic_amount, " ", tl31MechanicHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_personalQuarters:", data.m_personalQuarters," m_personalQuarters_amount:$", data.m_personalQuarters_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters))
NETWORK_SPEND_BUY_ARENA(propval, FALSE, TRUE, data)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Renovate ARENA_GARAGE for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_floor:", data.m_floor, " ($", sArena_garage_price_struct.iExpansionFloorB1Price, "+$", sArena_garage_price_struct.iExpansionFloorB2Price, ") m_floor_amount:$", data.m_floor_amount, " ", tl31FloorHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_mechanic:", data.m_mechanic, " ($", sArena_garage_price_struct.iBennyMechanicPrice, "+$", sArena_garage_price_struct.iWeaponMechanicPrice, ") m_mechanic_amount:$", data.m_mechanic_amount, " ", tl31MechanicHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_personalQuarters:", data.m_personalQuarters," m_personalQuarters_amount:$", data.m_personalQuarters_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters))
NETWORK_SPEND_UPGRADE_ARENA(propval, FALSE, TRUE, data)
ENDIF
IF NOT bRenovateArenaGarage
SET_ARENA_GARAGE_AS_OWNED(eArenaID)
SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet8, BI_FM_GANG_BOSS_HELP_8_ARENA_WORKSHOP_PURCHASED)
PRINTLN("[FMBB_CALL] - BUY_MP_ARENA_GARAGE_FROM_WEBSITE - BI_FM_GANG_BOSS_HELP_8_ARENA_WORKSHOP_PURCHASED set")
#IF IS_DEBUG_BUILD
IF GET_COMMANDLINE_PARAM_EXISTS("sc_SkipArenaCutscenes")
SET_LOCAL_PLAYER_HAS_VIEWED_ARENA_MOCAP_SCENE_1(TRUE)
SET_LOCAL_PLAYER_HAS_VIEWED_ARENA_MOCAP_SCENE_2(TRUE)
ENDIF
#ENDIF
// SET_ARENA_GARAGE_DJ_ACTIVE_STATE(DJ_SOLOMUN, TRUE)
ENDIF
ELIF GET_ARENA_GARAGE_BASE_PRICE(eTradeInArena) > 0
// IF NOT SHOULD_ARENA_GARAGE_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Trading the business ", eTradeInArena, " is earning the player:$", iOwnedTradeArenaValue)
NETWORK_EARN_NIGHTCLUB_AND_WAREHOUSE(iOwnedTradeArenaValue, GET_HASH_KEY(GET_ARENA_GARAGE_NAME_FROM_ID(eTradeInArena)), 0, 0, 0, 0, 0)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Earn nothing from property:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " ", tl_15PropertyName, " as was free")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedTradeArenaValue
//
data.m_style = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle))
data.m_style_amount = sArena_garage_price_struct.iStylePrice
iFinalPropValue -= data.m_style_amount
//
data.m_graphics = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics))
data.m_graphics_amount = sArena_garage_price_struct.iGraphicsPrice
iFinalPropValue -= data.m_graphics_amount
//
data.m_colour = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour))
data.m_colour_amount = sArena_garage_price_struct.iColourPrice
iFinalPropValue -= data.m_colour_amount
//
data.m_floor = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0, sArenaData.iExpansionFloorB1, eARENA_GARAGE_MOD_EXPANSION_FLOOR_1, sArenaData.iExpansionFloorB2))
data.m_floor_amount = sArena_garage_price_struct.iExpansionFloorB1Price
data.m_floor_amount += sArena_garage_price_struct.iExpansionFloorB2Price
iFinalPropValue -= data.m_floor_amount
//
data.m_mechanic = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_COMBINED_HASH(eARENA_GARAGE_MOD_BENNY_MECHANIC, sArenaData.iBennyMechanic, eARENA_GARAGE_MOD_WEAPON_MECHANIC, sArenaData.iWeaponMechanic))
data.m_mechanic_amount = sArena_garage_price_struct.iBennyMechanicPrice
data.m_mechanic_amount += sArena_garage_price_struct.iWeaponMechanicPrice
iFinalPropValue -= data.m_mechanic_amount
//
data.m_personalQuarters = GET_HASH_KEY(GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters))
data.m_personalQuarters_amount = sArena_garage_price_struct.iPersonalQuartersPrice
iFinalPropValue -= data.m_personalQuarters_amount
//
data.m_location = GET_HASH_KEY(GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID))
data.m_location_amount = iFinalPropValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: Trading ARENA_GARAGE for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_location:", data.m_location, " m_location_amount:$", data.m_location_amount, " ", GET_ARENA_GARAGE_NAME_FROM_ID(eArenaID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_style:", data.m_style, " m_style_amount:$", data.m_style_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_STYLE, sArenaData.iStyle))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_GRAPHICS, sArenaData.iGraphics))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_COLOUR, sArenaData.iColour))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_floor:", data.m_floor, " ($", sArena_garage_price_struct.iExpansionFloorB1Price, "+$", sArena_garage_price_struct.iExpansionFloorB2Price, ") m_floor_amount:$", data.m_floor_amount, " ", tl31FloorHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_mechanic:", data.m_mechanic, " ($", sArena_garage_price_struct.iBennyMechanicPrice, "+$", sArena_garage_price_struct.iWeaponMechanicPrice, ") m_mechanic_amount:$", data.m_mechanic_amount, " ", tl31MechanicHashname)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: m_personalQuarters:", data.m_personalQuarters," m_personalQuarters_amount:$", data.m_personalQuarters_amount, " ", GET_ARENA_GARAGE_MOD_NAME_FROM_ID(eARENA_GARAGE_MOD_PERSONAL_QUARTERS, sArenaData.iPersonalQuarters))
NETWORK_SPEND_UPGRADE_ARENA(propval, FALSE, TRUE, data)
// REMOTE_REQUEST_REMOVE_ALL_CONTRABAND_FROM_XXXXXX()
// TRADE_ARENA_GARAGE(eArenaID, eTradeInArena)
ENDIF
INT iBuyPropertyIndex = PROPERTY_ARENAWARS_GARAGE_LVL1
iResultSlot = PROPERTY_ARENAWARS_GARAGE_LVL1
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR1, iBuyPropertyIndex)
IF NOT bRenovateArenaGarage
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR1_VALUE,CEIL(TO_FLOAT(GET_ARENA_GARAGE_PRICE(eArenaID))*g_sMPTunables.fPropertyMultiplier))
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying ARENA_GARAGE")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sArenaData.iPersonalQuarters)
IF (GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_PERSONAL_QUARTERS)) != sArenaData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: set ARENA_GARAGE spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_ARENA_GARAGE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: set ARENA_GARAGE spawn, player already has accom so not a renovation")
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iStyle: ", sArenaData.iStyle)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iGraphics: ", sArenaData.iGraphics)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iColour: ", sArenaData.iColour)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iExpansionFloorB1: ", sArenaData.iExpansionFloorB1)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iExpansionFloorB2: ", sArenaData.iExpansionFloorB2)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iBennyMechanic: ", sArenaData.iBennyMechanic)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iWeaponMechanic: ", sArenaData.iWeaponMechanic)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: iPersonalQuarters: ", sArenaData.iPersonalQuarters)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_STYLE), sArenaData.iStyle)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_GRAPHICS), sArenaData.iGraphics)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_COLOUR), sArenaData.iColour)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_0), sArenaData.iExpansionFloorB1)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_EXPANSION_FLOOR_1), sArenaData.iExpansionFloorB2)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_BENNY_MECHANIC), sArenaData.iBennyMechanic)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_WEAPON_MECHANIC), sArenaData.iWeaponMechanic)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARENA_GARAGE_UPGRADE(eARENA_GARAGE_MOD_PERSONAL_QUARTERS), sArenaData.iPersonalQuarters)
IF (sArenaData.iExpansionFloorB1 >= 1)
iBuyPropertyIndex = PROPERTY_ARENAWARS_GARAGE_LVL2
iResultSlot = PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL1
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR2, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR2_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: MP_STAT_PROP_ARENAWARS_GAR2 iBuyPropertyIndex:", iBuyPropertyIndex)
ENDIF
IF (sArenaData.iExpansionFloorB2 >= 1)
iBuyPropertyIndex = PROPERTY_ARENAWARS_GARAGE_LVL3
iResultSlot = PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL2
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR3, iBuyPropertyIndex)
IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ELSE
g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARENAWARS_GAR3_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: MP_STAT_PROP_ARENAWARS_GAR3 iBuyPropertyIndex:", iBuyPropertyIndex)
ENDIF
SETUP_ARENA_GARAGE_BROADCAST_DATA()
enumCharacterList CharacterToAdd = CHAR_BRYONY
IF NOT IS_CONTACT_IN_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK)
BOOL bDisplay = TRUE
ADD_CONTACT_TO_PHONEBOOK(CharacterToAdd, MULTIPLAYER_BOOK,bDisplay)
CPRINTLN(DEBUG_INTERNET, "[ARENA_GARAGE_CONTACT] MAINTAIN_ADD_ARENA_WARS_ARENA_GARAGE_CONTACT - ADD_CONTACT_TO_PHONEBOOK(", g_sCharacterSheetAll[CharacterToAdd].label, ", MULTIPLAYER_BOOK, ", bDisplay, ")")
ENDIF
// IF bDisplayed_HELP_AWSE0nc
// CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchased ARENA_GARAGE, set bDisplayed_HELP_AWSE0nc false")
// bDisplayed_HELP_AWSE0nc = FALSE
// ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_ARENA_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PROPERTY_D_PURCHASED", TRUE, bRenovateArenaGarage, FALSE, FALSE, rpmt_5_ARENA_GARAGE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = eArenaID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARENA_GARAGE_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE()
IF GET_CASINO_MEMBERSHIP_COST() > 0 AND NOT NETWORK_CAN_SPEND_MONEY(GET_CASINO_MEMBERSHIP_COST(), FALSE, TRUE, FALSE)
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE: NETWORK_CAN_SPEND_MONEY false")
EXIT
ENDIF
GENERIC_TRANSACTION_STATE eTransactionResult
WHILE NOT PURCHASE_CASINO_MEMBERSHIP(eTransactionResult, CMPP_WEBSITE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE: Running transaction")
RENDER_BROWSER()
WAIT(0)
ENDWHILE
RENDER_BROWSER()
IF eTransactionResult = TRANSACTION_STATE_FAILED
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE: TRANSACTION_STATE_FAILED")
GO_TO_WEBSITE("WWW_THEDIAMONDCASINOANDRESORT_COM_S_MEMBERSHIP_D_FAILED")
EXIT
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE: ")
POPULATE_MP_CASINO_PROPERTY_SITE_PIN_MAP(mov, TRUE)
GO_TO_WEBSITE("WWW_THEDIAMONDCASINOANDRESORT_COM_S_MEMBERSHIP_D_SUCCESS")
ENDPROC
PROC BUY_MP_CASINO_APT_FROM_WEBSITE(CASINO_APT_ID eCasinoID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeArenaValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_CASWEB_0")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_CASWEB_0B")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15ArenaName = GET_CASINO_APT_NAME_FROM_ID(eCasinoID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: trying to purchase CASINO_APT ", tl_15ArenaName, " #", eCasinoID)
INT propval = CEIL(TO_FLOAT(GET_CASINO_APT_PRICE(eCasinoID))*g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase valid, attempting index ", tl_15ArenaName, " $", propval)
minPendingTransactionValue = propval
CASINO_APT_ID eTradeInArena = GET_PLAYERS_OWNED_CASINO_APARTMENT(PLAYER_ID())
IF IS_CASINO_APT_ID_VALID(eTradeInArena)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: currently owns CASINO_APT #", eTradeInArena)
// INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
// IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
//
// IF (iCurrentMission = FMMC_TYPE_FMBB_DEFEND)
// OR (iCurrentMission = FMMC_TYPE_FMBB_PHONECALL)
// OR (iCurrentMission = FMMC_TYPE_FMBB_SELL)
// OR (iCurrentMission = FMMC_TYPE_FMBB_CLUB_MANAGEMENT)
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
// mpPropertySiteFailReason = MPSFR_ON_MISSION
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ENDIF
// ENDIF
ENDIF
BOOL bRenovateArenaGarage = FALSE
IF (eCasinoID = eTradeInArena)
// IF GET_LOCAL_PLAYER_USING_ARENA_BOX_SEATID() != -1
// CWARNINGLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed - using arena box seat ", GET_LOCAL_PLAYER_USING_ARENA_BOX_SEATID(), "!")
// mpPropertySiteFailReason = MPSFR_NOT_SAFE
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ENDIF
propval = CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES(eCasinoID, sCasino_apt_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: renovate ", tl_15ArenaName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateArenaGarage = TRUE
ELSE
IF eTradeInArena != CASINO_APARTMENT_ID_INVALID
INT iTotalGoodsInHub = GET_PLAYERS_TOTAL_OF_ALL_GOODS_IN_HUB(PLAYER_ID())
IF iTotalGoodsInHub > 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed - can't trade, has ", iTotalGoodsInHub, " goods in hub!")
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
propval += CALCULATE_COST_OF_CASINO_APT_INTERIOR_UPGRADES(eCasinoID, sCasino_apt_price_struct)
IF NOT IS_CASINO_APT_ID_VALID(eTradeInArena)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase ", tl_15ArenaName, " for ", eTradeInArena, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: trade ", tl_15ArenaName, " for ", eTradeInArena, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF NOT IS_CASINO_APT_ID_VALID(eTradeInArena)
OR bRenovateArenaGarage
IF minPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
//is it a debit or refund
INT iTempMinPendingTransactionValue = minPendingTransactionValue-GET_CASINO_APT_SALE_VALUE(eTradeInArena)
IF iTempMinPendingTransactionValue >0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_CASINO_APT_SALE_VALUE(eTradeInArena))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_CASINO_APT_SALE_VALUE(eTradeInArena), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_CASINO_APT_SALE_VALUE(eTradeInArena))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu,iResultSlot,ENUM_TO_INT(eCasinoID),iReplaceSpecificPropertySlot,rpmt_6_CASINO_APARTMENT)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeArenaValue = GET_CASINO_APT_SALE_VALUE(eTradeInArena)
finalPendingTransactionValue = propval - iOwnedTradeArenaValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInArena, " for trade. propval $", propval, ", iOwnedTradeArenaValue: ", iOwnedTradeArenaValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " + trade:$", iOwnedTradeArenaValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArenaName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
CASINO_APT_DATA_STRUCT sCasinoData
GET_SCALEFORM_CASINO_APT_DATA(sCasinoData)
// IF IS_CASINO_APT_UPGRADE_PURCHASE_DISABLED(eCASINO_APT_MOD_DJ2_PURCHASED, eCasinoID, sCasinoData.iDJChoice)
// CWARNINGLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed - DJ Choice ", sCasinoData.iDJChoice, " disabled")
// mpPropertySiteFailReason = MPSFR_NOT_SAFE
// SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
// EXIT
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: DJ Choice ", sCasinoData.iDJChoice, " enabled")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eCasinoID = eTradeInArena
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_CASINO_APT_PRICE(eCasinoID))*g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_CASINO_APT_KEY_FOR_CATALOGUE(eCasinoID)
INT iInventoryKey = GET_CASINO_APT_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_CASINO_APT_ID_VALID(eTradeInArena)
iSellingItemId = GET_CASINO_APT_KEY_FOR_CATALOGUE(eTradeInArena)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
///////////////////////////////////////////
/// TRANSACTION FOR ARENA_GARAGE_b
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeArenaValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: final:$", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
TEXT_LABEL_23 tl23PresetName = "CASWEB_PRESET_"
tl23PresetName += iBoughtCasinoPreset
IF bRenovateArenaGarage
tl23PresetName = "CASWEB_PRESET_0"
ENDIF
IF NOT bRenovateArenaGarage
IF IS_PLAYER_IN_CASINO(PLAYER_ID())
AND NOT IS_PLAYER_WALKING_IN_OR_OUT_OF_SIMPLE_INTERIOR(PLAYER_ID())
AND IS_LOCAL_PLAYER_PED_IN_CASINO_ROOM(CASINO_RECEPTION_ROOM)
PRINTLN("<CASINO_DIALOGUE> BUY_MP_CASINO_APT_FROM_WEBSITE - Set BS7_SIMPLE_INTERIOR_CASINO_MAITRE_D_PLAY_PURCHASED_PENTHOUSE_LINE")
SET_BIT(g_SimpleInteriorData.iSeventhBS, BS7_SIMPLE_INTERIOR_CASINO_MAITRE_D_PLAY_PURCHASED_PENTHOUSE_LINE)
ENDIF
ENDIF
STRUCT_SPENT_ON_CASINO data
//Check if we're trading of just buying
IF (NOT IS_CASINO_APT_ID_VALID(eTradeInArena))
OR (bRenovateArenaGarage)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = propval
IF (sCasino_apt_price_struct.iColourOptionPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_colour = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption))
data.m_colour_amount = sCasino_apt_price_struct.iColourOptionPrice
iFinalPropValue -= data.m_colour_amount
ENDIF
IF (sCasino_apt_price_struct.iStyleOptionPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_graphics = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption))
data.m_graphics_amount = sCasino_apt_price_struct.iStyleOptionPrice
iFinalPropValue -= data.m_graphics_amount
ENDIF
IF (sCasino_apt_price_struct.iLoungePrice >= 0)
OR NOT bRenovateArenaGarage
data.m_lounge = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge))
data.m_lounge_amount = sCasino_apt_price_struct.iLoungePrice
iFinalPropValue -= data.m_lounge_amount
ENDIF
IF (sCasino_apt_price_struct.iBarPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_barParty = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, sCasinoData.iBar))
data.m_barParty_amount = sCasino_apt_price_struct.iBarPrice
iFinalPropValue -= data.m_barParty_amount
ENDIF
IF (sCasino_apt_price_struct.iDealerPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_dealer = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer))
data.m_dealer_amount = sCasino_apt_price_struct.iDealerPrice
iFinalPropValue -= data.m_dealer_amount
ENDIF
IF (sCasino_apt_price_struct.iBedroomPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_extraBedroom = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_Bedroom, sCasinoData.iBedroom))
data.m_extraBedroom_amount = sCasino_apt_price_struct.iBedroomPrice
iFinalPropValue -= data.m_extraBedroom_amount
ENDIF
IF (sCasino_apt_price_struct.iMediaroomPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_Mediaroom = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_Mediaroom, sCasinoData.iMediaroom))
data.m_Mediaroom_amount = sCasino_apt_price_struct.iMediaroomPrice
iFinalPropValue -= data.m_Mediaroom_amount
ENDIF
IF (sCasino_apt_price_struct.iSpaPrice >= 0)
OR NOT bRenovateArenaGarage
data.m_spa = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, sCasinoData.iSpa))
data.m_spa_amount = sCasino_apt_price_struct.iSpaPrice
iFinalPropValue -= data.m_spa_amount
ENDIF
IF (sCasino_apt_price_struct.iOfficePrice >= 0)
OR NOT bRenovateArenaGarage
data.m_office = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice))
data.m_office_amount = sCasino_apt_price_struct.iOfficePrice
iFinalPropValue -= data.m_office_amount
ENDIF
IF (sCasino_apt_price_struct.iGaragePrice >= 0)
OR NOT bRenovateArenaGarage
data.m_garage = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage))
data.m_garage_amount = sCasino_apt_price_struct.iGaragePrice
iFinalPropValue -= data.m_garage_amount
ENDIF
data.m_preset = GET_HASH_KEY(tl23PresetName)
data.m_preset_amount = 0
IF (iFinalPropValue >= 0)
OR NOT bRenovateArenaGarage
data.m_masterBedroom = GET_HASH_KEY(GET_CASINO_APT_NAME_FROM_ID(eCasinoID))
data.m_masterBedroom_amount = iFinalPropValue
ENDIF
IF NOT bRenovateArenaGarage
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Bought CASINO_APT for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_masterBedroom:", data.m_masterBedroom, " m_masterBedroom_amount:$", data.m_masterBedroom_amount, " ", GET_CASINO_APT_NAME_FROM_ID(eCasinoID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_barParty:", data.m_barParty, " m_barParty_amount:$", data.m_barParty_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, sCasinoData.iBar))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_dealer:", data.m_dealer, " m_dealer_amount:$", data.m_dealer_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_extraBedroom:", data.m_extraBedroom, " m_extraBedroom_amount:$", data.m_extraBedroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BEDROOM, sCasinoData.iBedroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_Mediaroom:", data.m_Mediaroom, " m_Mediaroom_amount:$", data.m_Mediaroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_MEDIAROOM, sCasinoData.iMediaroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_spa:", data.m_spa, " m_spa_amount:$", data.m_spa_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, sCasinoData.iSpa))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_office:", data.m_office, " m_office_amount:$", data.m_office_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_garage:", data.m_garage, " m_garage_amount:$", data.m_garage_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_preset:", data.m_preset, " m_preset_amount:$", data.m_preset_amount, " ", tl23PresetName)
NETWORK_SPEND_BUY_CASINO(propval, FALSE, TRUE, data)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Renovate CASINO_APT for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_masterBedroom:", data.m_masterBedroom, " m_masterBedroom_amount:$", data.m_masterBedroom_amount, " ", GET_CASINO_APT_NAME_FROM_ID(eCasinoID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_barParty:", data.m_barParty, " m_barParty_amount:$", data.m_barParty_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, sCasinoData.iBar))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_dealer:", data.m_dealer, " m_dealer_amount:$", data.m_dealer_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_extraBedroom:", data.m_extraBedroom, " m_extraBedroom_amount:$", data.m_extraBedroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BEDROOM, sCasinoData.iBedroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_Mediaroom:", data.m_Mediaroom, " m_Mediaroom_amount:$", data.m_Mediaroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_MEDIAROOM, sCasinoData.iMediaroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_spa:", data.m_spa, " m_spa_amount:$", data.m_spa_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, sCasinoData.iSpa))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_office:", data.m_office, " m_office_amount:$", data.m_office_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_garage:", data.m_garage, " m_garage_amount:$", data.m_garage_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_preset:", data.m_preset, " m_preset_amount:$", data.m_preset_amount, " ", tl23PresetName)
NETWORK_SPEND_UPGRADE_CASINO(propval, FALSE, TRUE, data)
ENDIF
IF NOT bRenovateArenaGarage
SET_CASINO_APARTMENT_AS_OWNED(eCasinoID)
IF !IS_PLAYER_IN_CASINO(PLAYER_ID())
GB_SETUP_CASINO_PURCHASED_FLOW_CALL()
PRINTLN("[FMBB_CALL] - BUY_MP_CASINO_APT_FROM_WEBSITE - GB_SETUP_CASINO_PURCHASED_FLOW_CALL set")
ELSE
g_bPurchasedCasinoAptInsideCasino = TRUE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: g_bPurchasedCasinoAptInsideCasino = TRUE")
ENDIF
#IF DEFINED(NETWORK_CASINO_CAN_BET_PVC)
IF NOT NETWORK_CASINO_CAN_BET_PVC()
// [[HELP_CASWEB_1]
// Please note: The Diamond Casino & Resort does not support the use of Shark Cards in your region. Only earned GTA$ can be used to purchase additional chips to use inside the casino.
// CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_CASWEB_1 (iStaticCurrentPage: ", iStaticCurrentPage, ")")
// SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_CASWEB_1", DEFAULT, TRUE)
// iTutTimer = g_iBrowserTimer + 7500
ENDIF
#ENDIF
ENDIF
ELIF GET_CASINO_APT_BASE_PRICE(eTradeInArena) > 0
// IF NOT SHOULD_CASINO_APT_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Trading the business ", eTradeInArena, " is earning the player:$", iOwnedTradeArenaValue)
NETWORK_EARN_NIGHTCLUB_AND_WAREHOUSE(iOwnedTradeArenaValue, GET_HASH_KEY(GET_CASINO_APT_NAME_FROM_ID(eTradeInArena)), 0, 0, 0, 0, 0)
// ELSE
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Earn nothing from property:$", GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iResultSlot), " ", tl_15PropertyName, " as was free")
// ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iFinalPropValue = finalPendingTransactionValue
iFinalPropValue += iOwnedTradeArenaValue
//
data.m_colour = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption))
data.m_colour_amount = sCasino_apt_price_struct.iColourOptionPrice
iFinalPropValue -= data.m_colour_amount
//
data.m_graphics = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption))
data.m_graphics_amount = sCasino_apt_price_struct.iStyleOptionPrice
iFinalPropValue -= data.m_graphics_amount
//
data.m_lounge = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge))
data.m_lounge_amount = sCasino_apt_price_struct.iLoungePrice
iFinalPropValue -= data.m_lounge_amount
//
data.m_barParty = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, sCasinoData.iBar))
data.m_barParty_amount = sCasino_apt_price_struct.iBarPrice
iFinalPropValue -= data.m_barParty_amount
//
data.m_dealer = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer))
data.m_dealer_amount = sCasino_apt_price_struct.iDealerPrice
iFinalPropValue -= data.m_dealer_amount
//
data.m_extraBedroom = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_Bedroom, sCasinoData.iBedroom))
data.m_extraBedroom_amount = sCasino_apt_price_struct.iBedroomPrice
iFinalPropValue -= data.m_extraBedroom_amount
//
data.m_Mediaroom = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_Mediaroom, sCasinoData.iMediaroom))
data.m_Mediaroom_amount = sCasino_apt_price_struct.iMediaroomPrice
iFinalPropValue -= data.m_Mediaroom_amount
//
data.m_spa = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, sCasinoData.iSpa))
data.m_spa_amount = sCasino_apt_price_struct.iSpaPrice
iFinalPropValue -= data.m_spa_amount
//
data.m_office = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice))
data.m_office_amount = sCasino_apt_price_struct.iOfficePrice
iFinalPropValue -= data.m_office_amount
//
data.m_garage = GET_HASH_KEY(GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage))
data.m_garage_amount = sCasino_apt_price_struct.iGaragePrice
iFinalPropValue -= data.m_garage_amount
//
data.m_preset = GET_HASH_KEY(tl23PresetName)
data.m_preset_amount = 0
//
data.m_masterBedroom = GET_HASH_KEY(GET_CASINO_APT_NAME_FROM_ID(eCasinoID))
data.m_masterBedroom_amount = iFinalPropValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: Trading CASINO_APT for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_masterBedroom:", data.m_masterBedroom, " m_masterBedroom_amount:$", data.m_masterBedroom_amount, " ", GET_CASINO_APT_NAME_FROM_ID(eCasinoID))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_colour:", data.m_colour, " m_colour_amount:$", data.m_colour_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_COLOUR_OPTION, sCasinoData.iColourOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_graphics:", data.m_graphics, " m_graphics_amount:$", data.m_graphics_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_STYLE_OPTION, sCasinoData.iStyleOption))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_lounge:", data.m_lounge, " m_lounge_amount:$", data.m_lounge_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_LOUNGE, sCasinoData.iLounge))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_barParty:", data.m_barParty, " m_barParty_amount:$", data.m_barParty_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BAR, sCasinoData.iBar))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_dealer:", data.m_dealer, " m_dealer_amount:$", data.m_dealer_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_DEALER, sCasinoData.iDealer))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_extraBedroom:", data.m_extraBedroom, " m_extraBedroom_amount:$", data.m_extraBedroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_BEDROOM, sCasinoData.iBedroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_Mediaroom:", data.m_Mediaroom, " m_Mediaroom_amount:$", data.m_Mediaroom_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_MEDIAROOM, sCasinoData.iMediaroom))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_spa:", data.m_spa, " m_spa_amount:$", data.m_spa_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_SPA, sCasinoData.iSpa))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_office:", data.m_office, " m_office_amount:$", data.m_office_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_OFFICE, sCasinoData.iOffice))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_garage:", data.m_garage, " m_garage_amount:$", data.m_garage_amount, " ", GET_CASINO_APT_MOD_NAME_FROM_ID(eCASINO_APT_MOD_GARAGE, sCasinoData.iGarage))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: m_preset:", data.m_preset, " m_preset_amount:$", data.m_preset_amount, " ", tl23PresetName)
NETWORK_SPEND_UPGRADE_CASINO(propval, FALSE, TRUE, data)
// REMOTE_REQUEST_REMOVE_ALL_CONTRABAND_FROM_XXXXXX()
// TRADE_ARENA_GARAGE_b(eCasinoID, eTradeInArena)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sCasinoData.iGarage)
INT iBuyPropertyIndex = PROPERTY_CASINO_GARAGE
iResultSlot = PROPERTY_OWNED_SLOT_CASINO_GARAGE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CASINO_GAR1, iBuyPropertyIndex)
IF (GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_GARAGE)) != sCasinoData.iGarage)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CASINO_GAR1_VALUE,CEIL(TO_FLOAT(GET_CASINO_APT_PRICE(eCasinoID))*g_sMPTunables.fPropertyMultiplier))
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying xxxx_GARAGE_b")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
#IF DEFINED(MP_SETTING_SPAWN_CASINO_APARTMENT)
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sCasinoData.iBedroom)
IF (GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BEDROOM)) != sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: set CASINO_APT spawn, player bought accomodation")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_CASINO_APARTMENT)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: set CASINO_APT spawn, player already has accom so not a renovation")
ENDIF
ENDIF
#ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iColourOption: ", sCasinoData.iColourOption)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iStyleOption: ", sCasinoData.iStyleOption)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iLounge: ", sCasinoData.iLounge)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iBar: ", sCasinoData.iBar)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iDealer: ", sCasinoData.iDealer)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iBedroom: ", sCasinoData.iBedroom)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iMediaroom: ", sCasinoData.iMediaroom)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iSpa: ", sCasinoData.iSpa)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iOffice: ", sCasinoData.iOffice)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: iGarage: ", sCasinoData.iGarage)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_COLOUR_OPTION), sCasinoData.iColourOption)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_STYLE_OPTION), sCasinoData.iStyleOption)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_LOUNGE), sCasinoData.iLounge)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BAR), sCasinoData.iBar)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_DEALER), sCasinoData.iDealer)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_BEDROOM), sCasinoData.iBedroom)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_MEDIAROOM), sCasinoData.iMediaroom)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_SPA), sCasinoData.iSpa)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_OFFICE), sCasinoData.iOffice)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CASINO_APT_UPGRADE(eCASINO_APT_MOD_GARAGE), sCasinoData.iGarage)
// IF (sCasinoData.iGarage >= 1)
// iBuyPropertyIndex = PROPERTY_CASINO_GARAGE
// iResultSlot = PROPERTY_OWNED_SLOT_CASINO_GARAGE
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CASINO_GAR1, iBuyPropertyIndex)
// IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
// ELSE
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2] = 0
// ENDIF
// SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CASINO_GAR1_VALUE,g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot-2])
//
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: MP_STAT_PROP_CASINO_GAR1 iBuyPropertyIndex:", iBuyPropertyIndex)
// ENDIF
SETUP_CASINO_APT_BROADCAST_DATA()
// IF bDisplayed_HELP_AWSE0nc
// CDEBUG1LN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchased ARENA_GARAGE_b, set bDisplayed_HELP_AWSE0nc false")
// bDisplayed_HELP_AWSE0nc = FALSE
// ENDIF
PLAY_SOUND_FRONTEND(-1, "Click_Special","WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_CASINO_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateArenaGarage, FALSE, FALSE, rpmt_6_CASINO_APARTMENT)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = eCasinoID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_CASINO_APT_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_ARCADE_FROM_WEBSITE(ARCADE_PROPERTY_ID eArcadeID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeArcadeValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARCADEHELP")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARC_OPTIONS")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15ArcadeName = GET_ARCADE_NAME_FROM_ID(eArcadeID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: trying to purchase Arcade ", tl_15ArcadeName, " #", eArcadeID)
INT propval = CEIL(TO_FLOAT(GET_ARCADE_PRICE(eArcadeID)) * g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase valid, attempting index ", tl_15ArcadeName, " $", propval)
minPendingTransactionValue = propval
ARCADE_PROPERTY_ID eTradeInArcade = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
IF IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: currently owns Arcade #", eTradeInArcade)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
IF (iCurrentMission = FMMC_TYPE_GB_CASINO_HEIST)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
ENDIF
BOOL bRenovateArcade = FALSE
IF (eArcadeID = eTradeInArcade)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES(eArcadeID, sArcade_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: renovate ", tl_15ArcadeName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateArcade = TRUE
ELSE
propval += CALCULATE_COST_OF_ARCADE_INTERIOR_UPGRADES(eArcadeID, sArcade_price_struct)
IF NOT IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase ", tl_15ArcadeName, " for ", eTradeInArcade, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: trade ", tl_15ArcadeName, " for ", eTradeInArcade, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propval
//is it a debit or refund
IF NOT IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
OR bRenovateArcade
IF minPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue, FALSE, TRUE, FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance + iWalletBalance) $", (iBankBalance + iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArcadeName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
//is it a debit or refund
INT iTempMinPendingTransactionValue = minPendingTransactionValue - GET_ARCADE_SALE_VALUE(eTradeInArcade)
IF iTempMinPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_ARCADE_SALE_VALUE(eTradeInArcade))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue, FALSE, TRUE, FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance + iWalletBalance) $", (iBankBalance + iWalletBalance), " < NETWORK_CAN_SPEND_MONEY: iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_ARCADE_SALE_VALUE(eTradeInArcade), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArcadeName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: bank: $", iBankBalance, " + wallet: $", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_ARCADE_SALE_VALUE(eTradeInArcade))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu, iResultSlot, ENUM_TO_INT(eArcadeID), iReplaceSpecificPropertySlot, rpmt_7_ARCADE)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeArcadeValue = GET_ARCADE_SALE_VALUE(eTradeInArcade)
finalPendingTransactionValue = propval - iOwnedTradeArcadeValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInArcade, " for trade. propval $", propval, ", iOwnedTradeArcadeValue: ", iOwnedTradeArcadeValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: bank: $", iBankBalance, " + wallet: $", iWalletBalance, " + trade: $", iOwnedTradeArcadeValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ArcadeName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
ARCADE_DATA_STRUCT sArcadeData
GET_SCALEFORM_ARCADE_DATA(sArcadeData)
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eArcadeID = eTradeInArcade
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_ARCADE_PRICE(eArcadeID)) * g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_ARCADE_KEY_FOR_CATALOGUE(eArcadeID)
INT iInventoryKey = GET_ARCADE_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade)
iSellingItemId = GET_ARCADE_KEY_FOR_CATALOGUE(eTradeInArcade)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
IF GET_ARCADE_BASE_PRICE(eTradeInArcade) > 0
INT iSafeCash = GET_MP_INT_CHARACTER_STAT(MP_STAT_ARCADE_SAFE_CASH_VALUE)
IF iSafeCash > 0
g_iCachedPlayerCashForArcadeSafe = iSafeCash
g_eCachedPlayerArcadeForArcadeSafe = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
PRINTLN("[ARCADE_PAYOUT] SAFE_SWAP - cacheing safe cash stat")
ELSE
PRINTLN("[ARCADE_PAYOUT] SAFE_SWAP - cash stat was 0 not cacheing")
ENDIF
ENDIF
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeArcadeValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_7_ARCADE)
g_iCachedPlayerCashForArcadeSafe = 0
g_eCachedPlayerArcadeForArcadeSafe = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
PRINTLN("[ARCADE_PAYOUT] SAFE_SWAP - clearing cached values")
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: final: $", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
STRUCT_ARCADE sArcadeTelemetry
sArcadeTelemetry.location = GET_HASH_KEY(GET_ARCADE_NAME_FROM_ID(eArcadeID))
sArcadeTelemetry.garage = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_GARAGE, sArcadeData.iGarage))
sArcadeTelemetry.garage_amount = sArcade_price_struct.iGaragePrice
sArcadeTelemetry.sleeping_quarter = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_PERSONAL_QUARTERS, sArcadeData.iPersonalQuarters))
sArcadeTelemetry.sleeping_quarter_amount = sArcade_price_struct.iPersonalQuartersPrice
sArcadeTelemetry.m_style = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_CEILING, sArcadeData.iCeiling))
sArcadeTelemetry.m_style_amount = sArcade_price_struct.iCeilingPrice
sArcadeTelemetry.m_mural = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_WALL, sArcadeData.iWall))
sArcadeTelemetry.m_mural_amount = sArcade_price_struct.iWallPrice
sArcadeTelemetry.m_floor = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_FLOOR, sArcadeData.iFloor))
sArcadeTelemetry.m_floor_amount = sArcade_price_struct.iFloorPrice
sArcadeTelemetry.m_neon_art = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_NEON_LIGHTS, sArcadeData.iNeonLights))
sArcadeTelemetry.m_neon_art_amount = sArcade_price_struct.iNeonLightsPrice
sArcadeTelemetry.m_highscore_screen = GET_HASH_KEY(GET_ARCADE_MOD_NAME_FROM_ID(eARCADE_MOD_SCREENS, sArcadeData.iScreens))
sArcadeTelemetry.m_highscore_screen_amount = sArcade_price_struct.iScreensPrice
//Check if we're trading of just buying
IF (NOT IS_ARCADE_PROPERTY_ID_VALID(eTradeInArcade))
OR (bRenovateArcade)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iLocationAmount = propval
IF (sArcade_price_struct.iFloorPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iFloorPrice
ENDIF
IF (sArcade_price_struct.iCeilingPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iCeilingPrice
ENDIF
IF (sArcade_price_struct.iWallPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iWallPrice
ENDIF
IF (sArcade_price_struct.iPersonalQuartersPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iPersonalQuartersPrice
ENDIF
IF (sArcade_price_struct.iGaragePrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iGaragePrice
ENDIF
IF (sArcade_price_struct.iNeonLightsPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iNeonLightsPrice
ENDIF
IF (sArcade_price_struct.iScreensPrice >= 0)
OR NOT bRenovateArcade
iLocationAmount -= sArcade_price_struct.iScreensPrice
ENDIF
IF NOT bRenovateArcade
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: Bought Arcade for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_ARCADE_NAME_FROM_ID(eArcadeID)), " m_location_amount: $", iLocationAmount, " ", GET_ARCADE_NAME_FROM_ID(eArcadeID))
IF GET_LOCAL_PLAYER_ARCADE_CABINET_SAVE_SLOT_TYPE(ACM_SLOT_18, ACP_ARCADE) != ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_A
SET_ARCADE_CABINET_TO_DISPLAY_SAVE_SLOT(ACM_SLOT_18, ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_A, ACP_ARCADE)
ENDIF
IF GET_LOCAL_PLAYER_ARCADE_CABINET_SAVE_SLOT_TYPE(ACM_SLOT_19, ACP_ARCADE) != ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_B
SET_ARCADE_CABINET_TO_DISPLAY_SAVE_SLOT(ACM_SLOT_19, ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_B, ACP_ARCADE)
ENDIF
IF GET_LOCAL_PLAYER_ARCADE_CABINET_SAVE_SLOT_TYPE(ACM_SLOT_20, ACP_ARCADE) != ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_C
SET_ARCADE_CABINET_TO_DISPLAY_SAVE_SLOT(ACM_SLOT_20, ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_C, ACP_ARCADE)
ENDIF
IF GET_LOCAL_PLAYER_ARCADE_CABINET_SAVE_SLOT_TYPE(ACM_SLOT_21, ACP_ARCADE) != ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_D
SET_ARCADE_CABINET_TO_DISPLAY_SAVE_SLOT(ACM_SLOT_21, ARCADE_CABINET_SAVE_SLOT_CA_STREET_CRIMES_PROP_D, ACP_ARCADE)
ENDIF
SET_ARCADE_AS_OWNED(eArcadeID)
GB_SET_LOCAL_CASINO_HEIST_CALL_BIT(eGB_CASINO_HEIST_CALL_BITSET_ARCADE_PROPERTY_PURCHASED)
#IF FEATURE_GEN9_EXCLUSIVE
RESUME_CASINO_HEIST_UDS_ACTIVITY()
END_CASINO_HEIST_UDS_ACTIVITY(UDS_ACTIVITY_END_REASON_ABANDONED)
#ENDIF
// only set location amount when buying the location
sArcadeTelemetry.location_amount = iLocationAmount
NETWORK_SPEND_BUY_ARCADE(propval, FALSE, TRUE, sArcadeTelemetry)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: Renovate Arcade for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_ARCADE_NAME_FROM_ID(eArcadeID)), " m_location_amount: $", iLocationAmount, " ", GET_ARCADE_NAME_FROM_ID(eArcadeID))
NETWORK_SPEND_UPGRADE_ARCADE(propval, FALSE, TRUE, sArcadeTelemetry)
ENDIF
ELIF GET_ARCADE_BASE_PRICE(eTradeInArcade) > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: Trading the business ", eTradeInArcade, " is earning the player: $", iOwnedTradeArcadeValue)
INT iLocationAmount = finalPendingTransactionValue + iOwnedTradeArcadeValue
iLocationAmount -= sArcade_price_struct.iFloorPrice
iLocationAmount -= sArcade_price_struct.iCeilingPrice
iLocationAmount -= sArcade_price_struct.iWallPrice
iLocationAmount -= sArcade_price_struct.iPersonalQuartersPrice
iLocationAmount -= sArcade_price_struct.iGaragePrice
iLocationAmount -= sArcade_price_struct.iNeonLightsPrice
iLocationAmount -= sArcade_price_struct.iScreensPrice
IF iOwnedTradeArcadeValue > 0
NETWORK_EARN_UPGRADE_ARCADE(iOwnedTradeArcadeValue, GET_HASH_KEY(GET_ARCADE_NAME_FROM_ID(eArcadeID)), iLocationAmount)
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: Trading Arcade for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_ARCADE_NAME_FROM_ID(eArcadeID)), " m_location_amount: $", iLocationAmount, " ", GET_ARCADE_NAME_FROM_ID(eArcadeID))
sArcadeTelemetry.location_amount = iLocationAmount
NETWORK_SPEND_UPGRADE_ARCADE(propval, FALSE, TRUE, sArcadeTelemetry)
TRADE_ARCADE(eArcadeID, eTradeInArcade)
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sArcadeData.iPersonalQuarters)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_ARCADE_PERSONAL_QUARTERS) != sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: set Arcade spawn, player bought personal quarters")
// SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_ARCADE)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: do not set Arcade spawn, player already has personal quarters")
ENDIF
ENDIF
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sArcadeData.iGarage)
INT iBuyPropertyIndex = PROPERTY_ARCADE_GARAGE
iResultSlot = PROPERTY_OWNED_SLOT_ARCADE_GARAGE
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARCADE_GAR1, iBuyPropertyIndex)
IF (GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE)) != sArcadeData.iGarage)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARCADE_GAR1_VALUE, propval)
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(), iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST, FALSE, GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #", iForceDisplayUpdatedSlot," when buying arcade garage")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot, CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0, -1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT bRenovateArcade
propval -= sArcade_price_struct.iGaragePrice
propval -= sArcade_price_struct.iScreensPrice
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: MP_STAT_PROP_ARCADE_VALUE = ", propval)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_ARCADE_VALUE, propval)
SWITCH INT_TO_ENUM(ARCADE_PROPERTY_ID, eArcadeID)
CASE ARCADE_PROPERTY_PALETO_BAY SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_PIXEL_PETES, TRUE) BREAK
CASE ARCADE_PROPERTY_GRAPESEED SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_WONDERLAND, TRUE) BREAK
CASE ARCADE_PROPERTY_DAVIS SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_WAREHOUSE, TRUE) BREAK
CASE ARCADE_PROPERTY_WEST_VINEWOOD SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_EIGHT_BIT, TRUE) BREAK
CASE ARCADE_PROPERTY_ROCKFORD_HILLS SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_INSERT_COIN, TRUE) BREAK
CASE ARCADE_PROPERTY_LA_MESA SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_ARCADE_PROPERTY_TSHIRT_VIDEOGEDDON, TRUE) BREAK
ENDSWITCH
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(), iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST, FALSE, GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #", iForceDisplayUpdatedSlot," when buying Arcade")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot, CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0, -1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iFloor: ", sArcadeData.iFloor)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iCeiling: ", sArcadeData.iCeiling)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iWall: ", sArcadeData.iWall)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iPersonalQuarters: ", sArcadeData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iGarage: ", sArcadeData.iGarage)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iNeonLights: ", sArcadeData.iNeonLights)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: iScreens: ", sArcadeData.iScreens)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_FLOOR), sArcadeData.iFloor)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_CEILING), sArcadeData.iCeiling)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_WALL), sArcadeData.iWall)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_PERSONAL_QUARTERS), sArcadeData.iPersonalQuarters)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_GARAGE), sArcadeData.iGarage)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_NEON_LIGHTS), sArcadeData.iNeonLights)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_ARCADE_UPGRADE(eARCADE_MOD_SCREENS), sArcadeData.iScreens)
// IF IS_BUSINESS_HUB_GARAGE_02_PURCHASED()
// iBuyPropertyIndex = PROPERTY_MEGAWARE_GARAGE_LVL1
//
// iResultSlot = PROPERTY_OWNED_SLOT_MEGAWARE_GARAGE_LVL1
//
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR1, iBuyPropertyIndex)
//
// IF NOT SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot - 2] = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex)) * g_sMPTunables.fPropertyMultiplier)
// ELSE
// g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot - 2] = 0
// ENDIF
//
// SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_MEGAWARE_GAR1_VALUE, g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iMultiPropertyValueArray[iResultSlot - 2])
//
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: MP_STAT_PROP_MEGAWARE_GAR1 iBuyPropertyIndex:", iBuyPropertyIndex)
// ENDIF
BROADCAST_PLAYER_PURCHASED_ARCADE()
PLAY_SOUND_FRONTEND(-1, "Click_Special", "WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateArcade, FALSE, FALSE, rpmt_7_ARCADE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase complete, refreshing pin map")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = eArcadeID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
#IF FEATURE_FIXER
eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID
#ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
PROC BUY_MP_AUTO_SHOP_FROM_WEBSITE(AUTO_SHOP_PROPERTY_ID eAutoShopID, INT &iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeAutoShopValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("AUT_OPTIONS")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_ASHOPSTY")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_ASHOPTNT")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
// ----- Can't purchase if the player isn't a high enough rank. -----
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
/// ----- Can't purchase if the session isn't valid. -----
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
TEXT_LABEL_15 tl_15AutoShopName = GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: trying to purchase Auto Shop ", tl_15AutoShopName, " #", eAutoShopID)
INT propval = CEIL(TO_FLOAT(GET_AUTO_SHOP_PRICE(eAutoShopID)) * g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase valid, attempting index ", tl_15AutoShopName, " $", propval)
minPendingTransactionValue = propval
AUTO_SHOP_PROPERTY_ID eTradeInAutoShop = GET_PLAYERS_OWNED_AUTO_SHOP_PROPERTY(PLAYER_ID())
// ----- Can't purchase if the player is on a mission. -----
IF IS_AUTO_SHOP_PROPERTY_ID_VALID(eTradeInAutoShop)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: currently owns Auto Shop #", eTradeInAutoShop)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
IF (iCurrentMission != -1)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
ENDIF
BOOL bRenovateAutoShop = FALSE
IF (eAutoShopID = eTradeInAutoShop)
// ----- Can't purchase if the player is using an office seat. -----
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
propval = CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES(eAutoShopID, sAutoShop_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: renovate ", tl_15AutoShopName, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateAutoShop = TRUE
ELSE
IF GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CLIENT_VEHICLE_MODIFICATION(0)) != 0
OR GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_CLIENT_VEHICLE_MODIFICATION(1)) != 0
mpPropertySiteFailReason = MPSFR_HAS_STOCK
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_FAILED", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ELSE
propval += CALCULATE_COST_OF_AUTO_SHOP_INTERIOR_UPGRADES(eAutoShopID, sAutoShop_price_struct)
IF NOT IS_AUTO_SHOP_PROPERTY_ID_VALID(eTradeInAutoShop)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase ", tl_15AutoShopName, " for ", eTradeInAutoShop, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: trade ", tl_15AutoShopName, " for ", eTradeInAutoShop, ", propval $", propval, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
ENDIF
minPendingTransactionValue = propval
IF NOT IS_AUTO_SHOP_PROPERTY_ID_VALID(eTradeInAutoShop)
OR bRenovateAutoShop
IF minPendingTransactionValue > 0
// ----- Can't purchase if they don't have enough money -----
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", minPendingTransactionValue)
IF (minPendingTransactionValue <= 0
OR (minPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue, FALSE, TRUE, FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance + iWalletBalance) $", (iBankBalance + iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", minPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15AutoShopName), minPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ELSE
INT iTempMinPendingTransactionValue = minPendingTransactionValue - GET_AUTO_SHOP_SALE_VALUE(eTradeInAutoShop)
IF iTempMinPendingTransactionValue > 0
// ----- Can't purchase if they don't have enough money -----
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " > $", minPendingTransactionValue, "+", GET_AUTO_SHOP_SALE_VALUE(eTradeInAutoShop))
IF (iTempMinPendingTransactionValue <= 0
OR (iTempMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iTempMinPendingTransactionValue, FALSE, TRUE, FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance + iWalletBalance) $", (iBankBalance + iWalletBalance), " < NETWORK_CAN_SPEND_MONEY: iTempMinPendingTransactionValue $", minPendingTransactionValue, "+", GET_AUTO_SHOP_SALE_VALUE(eTradeInAutoShop), "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15AutoShopName), iTempMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: bank: $", iBankBalance, " + wallet: $", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_AUTO_SHOP_SALE_VALUE(eTradeInAutoShop))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu, iResultSlot, ENUM_TO_INT(eAutoShopID), iReplaceSpecificPropertySlot, rpmt_8_AUTO_SHOP)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeAutoShopValue = GET_AUTO_SHOP_SALE_VALUE(eTradeInAutoShop)
finalPendingTransactionValue = propval - iOwnedTradeAutoShopValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: Player selected iResultSlot ", iResultSlot, ", trade ba: ", eTradeInAutoShop, " for trade. propval $", propval, ", iOwnedTradeAutoShopValue: ", iOwnedTradeAutoShopValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
//do they have enough money
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: bank: $", iBankBalance, " + wallet: $", iWalletBalance, " + trade: $", iOwnedTradeAutoShopValue, " <> $", finalPendingTransactionValue)
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15AutoShopName), finalPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDIF
ENDIF
AUTO_SHOP_DATA_STRUCT sAutoShopData
GET_SCALEFORM_AUTO_SHOP_DATA(sAutoShopData)
// If the player is renovating the auto shop, but only purchasing the membership with no add-ons, we ship the next part.
BOOL bOnlyPurchasingMembership
IF USE_SERVER_TRANSACTIONS()
IF bRenovateAutoShop
AND HAS_SCALEFORM_OPTION_BEEN_SELECTED(sAutoShopData.iCarClubMembership)
AND sAutoShopData.iWall = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_WALL))
AND sAutoShopData.iTint = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_TINT))
AND sAutoShopData.iEmblem = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_EMBLEM))
AND sAutoShopData.iCrewName = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CREW_NAME))
AND sAutoShopData.iStaff1 = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_ONE))
AND sAutoShopData.iStaff2 = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_TWO))
AND sAutoShopData.iCarLift = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CAR_LIFT))
AND sAutoShopData.iPersonalQuarters = GET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_PERSONAL_QUARTERS))
PRINTLN("BUY_MP_AUTO_SHOP_FROM_WEBSITE: Renovating Auto Shop with just the membership. Skipping transaction process.")
bOnlyPurchasingMembership = TRUE
ENDIF
ENDIF
IF USE_SERVER_TRANSACTIONS()
AND NOT bOnlyPurchasingMembership
INT iPropval
IF eAutoShopID = eTradeInAutoShop
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_AUTO_SHOP_PRICE(eAutoShopID)) * g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_AUTO_SHOP_KEY_FOR_CATALOGUE(eAutoShopID)
INT iInventoryKey = GET_AUTO_SHOP_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_AUTO_SHOP_PROPERTY_ID_VALID(eTradeInAutoShop)
iSellingItemId = GET_AUTO_SHOP_KEY_FOR_CATALOGUE(eTradeInAutoShop)
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeAutoShopValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_8_AUTO_SHOP)
//g_iCachedPlayerCashForArcadeSafe = 0
//g_eCachedPlayerArcadeForArcadeSafe = GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())
//PRINTLN("[ARCADE_PAYOUT] SAFE_SWAP - clearing cached values")
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: success!!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: final: $", finalPendingTransactionValue, ", propval $", propval)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
STRUCT_BUY_AUTOSHOP sAutoShopTelemetry
TEXT_LABEL_63 tlStaff
tlStaff += GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_STAFF_ONE, sAutoShopData.iStaff1)
tlStaff += GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_STAFF_TWO, sAutoShopData.iStaff2)
sAutoShopTelemetry.location = GET_HASH_KEY(GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID))
sAutoShopTelemetry.style_amount = sAutoShop_price_struct.iWallPrice
sAutoShopTelemetry.tint_amount = sAutoShop_price_struct.iTintPrice
sAutoShopTelemetry.emblem_amount = sAutoShop_price_struct.iEmblemPrice
sAutoShopTelemetry.crew_name_amount = sAutoShop_price_struct.iCrewNamePrice
sAutoShopTelemetry.staff_amount = sAutoShop_price_struct.iStaff1Price + sAutoShop_price_struct.iStaff2Price
sAutoShopTelemetry.lift_amount = sAutoShop_price_struct.iCarLiftPrice
sAutoShopTelemetry.personal_quarter_amount = sAutoShop_price_struct.iPersonalQuartersPrice
IF bRenovateAutoShop
IF sAutoShopData.iWall != g_sAutoShopDataStruct.iWall
sAutoShopTelemetry.style = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_WALL, sAutoShopData.iWall))
ENDIF
IF sAutoShopData.iTint != g_sAutoShopDataStruct.iTint
sAutoShopTelemetry.tint = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_TINT, sAutoShopData.iTint))
ENDIF
IF sAutoShopData.iEmblem != g_sAutoShopDataStruct.iEmblem
sAutoShopTelemetry.emblem = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_EMBLEM, sAutoShopData.iEmblem))
ENDIF
IF sAutoShopData.iCrewName != g_sAutoShopDataStruct.iCrewName
AND sAutoShopData.iCrewName > 0
sAutoShopTelemetry.crew_name = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CREW_NAME, sAutoShopData.iCrewName))
ENDIF
IF sAutoShopData.iStaff1 != g_sAutoShopDataStruct.iStaff1
OR sAutoShopData.iStaff2 != g_sAutoShopDataStruct.iStaff2
AND (sAutoShopData.iStaff1 > 0 OR sAutoShopData.iStaff2 > 0)
sAutoShopTelemetry.staff = GET_HASH_KEY(tlStaff)
ENDIF
IF sAutoShopData.iCarLift != g_sAutoShopDataStruct.iCarLift
AND sAutoShopData.iCarLift > 0
sAutoShopTelemetry.lift = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CAR_LIFT, sAutoShopData.iCarLift))
ENDIF
IF sAutoShopData.iPersonalQuarters != g_sAutoShopDataStruct.iPersonalQuarters
AND sAutoShopData.iPersonalQuarters > 0
sAutoShopTelemetry.personal_quarter = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_PERSONAL_QUARTERS, sAutoShopData.iPersonalQuarters))
ENDIF
ELSE
sAutoShopTelemetry.style = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_WALL, sAutoShopData.iWall))
sAutoShopTelemetry.tint = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_TINT, sAutoShopData.iTint))
sAutoShopTelemetry.emblem = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_EMBLEM, sAutoShopData.iEmblem))
sAutoShopTelemetry.crew_name = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CREW_NAME, sAutoShopData.iCrewName))
sAutoShopTelemetry.staff = GET_HASH_KEY(tlStaff)
sAutoShopTelemetry.lift = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CAR_LIFT, sAutoShopData.iCarLift))
sAutoShopTelemetry.personal_quarter = GET_HASH_KEY(GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_PERSONAL_QUARTERS, sAutoShopData.iPersonalQuarters))
ENDIF
#IF IS_DEBUG_BUILD
PRINTLN("===== Auto Shop telemetry =====")
PRINTLN("sAutoShopTelemetry.location - Name: ", GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID), " Hash: ", sAutoShopTelemetry.location)
PRINTLN("sAutoShopTelemetry.style - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_WALL, sAutoShopData.iWall), " Hash: ", sAutoShopTelemetry.style)
PRINTLN("sAutoShopTelemetry.style_amount - ", sAutoShopTelemetry.style_amount)
PRINTLN("sAutoShopTelemetry.tint - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_TINT, sAutoShopData.iTint), " Hash: ", sAutoShopTelemetry.tint)
PRINTLN("sAutoShopTelemetry.tint_amount - ", sAutoShopTelemetry.tint_amount)
PRINTLN("sAutoShopTelemetry.emblem - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_EMBLEM, sAutoShopData.iEmblem), " Hash: ", sAutoShopTelemetry.emblem)
PRINTLN("sAutoShopTelemetry.emblem_amount - ", sAutoShopTelemetry.emblem_amount)
PRINTLN("sAutoShopTelemetry.crew_name - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CREW_NAME, sAutoShopData.iCrewName), " Hash: ", sAutoShopTelemetry.crew_name)
PRINTLN("sAutoShopTelemetry.crew_name_amount - ", sAutoShopTelemetry.crew_name_amount)
PRINTLN("sAutoShopTelemetry.staff - Name: ", tlStaff, " Hash: ", sAutoShopTelemetry.staff)
PRINTLN("sAutoShopTelemetry.staff_amount - ", sAutoShopTelemetry.staff_amount)
PRINTLN("sAutoShopTelemetry.lift - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_CAR_LIFT, sAutoShopData.iCarLift), " Hash: ", sAutoShopTelemetry.lift)
PRINTLN("sAutoShopTelemetry.lift_amount - ", sAutoShopTelemetry.lift_amount)
PRINTLN("sAutoShopTelemetry.personal_quarter - Name: ", GET_AUTO_SHOP_MOD_NAME_FROM_ID(AUTO_SHOP_MOD_PERSONAL_QUARTERS, sAutoShopData.iPersonalQuarters), " Hash: ", sAutoShopTelemetry.personal_quarter)
PRINTLN("sAutoShopTelemetry.personal_quarter_amount - ", sAutoShopTelemetry.personal_quarter_amount)
#ENDIF
INT iLocationAmount
// url:bugstar:7122350
// Skip all of this if the player is only purchasing the membnership
IF NOT bOnlyPurchasingMembership
//Check if we're trading or just buying
IF (NOT IS_AUTO_SHOP_PROPERTY_ID_VALID(eTradeInAutoShop))
OR (bRenovateAutoShop)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
iLocationAmount = propval
IF (sAutoShop_price_struct.iWallPrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iWallPrice
ENDIF
IF (sAutoShop_price_struct.iTintPrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iTintPrice
ENDIF
IF (sAutoShop_price_struct.iEmblemPrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iEmblemPrice
ENDIF
IF (sAutoShop_price_struct.iCrewNamePrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iCrewNamePrice
ENDIF
IF (sAutoShop_price_struct.iStaff1Price >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iStaff1Price
ENDIF
IF (sAutoShop_price_struct.iStaff2Price >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iStaff2Price
ENDIF
IF (sAutoShop_price_struct.iCarLiftPrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iCarLiftPrice
ENDIF
IF (sAutoShop_price_struct.iPersonalQuartersPrice >= 0)
OR NOT bRenovateAutoShop
iLocationAmount -= sAutoShop_price_struct.iPersonalQuartersPrice
ENDIF
IF NOT bRenovateAutoShop
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: Bought Auto Shop for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID)), " m_location_amount: $", iLocationAmount, " ", GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID))
SET_AUTO_SHOP_AS_OWNED(eAutoShopID)
sAutoShopTelemetry.location_amount = iLocationAmount
PRINTLN("sAutoShopTelemetry.location_amount - ", sAutoShopTelemetry.location_amount)
NETWORK_SPEND_BUY_AUTOSHOP(propval, FALSE, TRUE, sAutoShopTelemetry)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: Renovate Auto Shop for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID)), " m_location_amount: $", iLocationAmount, " ", GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID))
NETWORK_SPEND_UPGRADE_AUTOSHOP(propval, FALSE, TRUE, sAutoShopTelemetry)
ENDIF
ELIF GET_AUTO_SHOP_BASE_PRICE(eTradeInAutoShop) > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iTradeInAutoShopHash = GET_HASH_KEY(GET_AUTO_SHOP_NAME_FROM_ID(eTradeInAutoShop))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: Trading the business ", eTradeInAutoShop, " is earning the player: $", iOwnedTradeAutoShopValue, " Hash: ", iTradeInAutoShopHash)
iLocationAmount = finalPendingTransactionValue + iOwnedTradeAutoShopValue
iLocationAmount -= sAutoShop_price_struct.iWallPrice
iLocationAmount -= sAutoShop_price_struct.iTintPrice
iLocationAmount -= sAutoShop_price_struct.iEmblemPrice
iLocationAmount -= sAutoShop_price_struct.iCrewNamePrice
iLocationAmount -= sAutoShop_price_struct.iStaff1Price
iLocationAmount -= sAutoShop_price_struct.iStaff2Price
iLocationAmount -= sAutoShop_price_struct.iCarLiftPrice
iLocationAmount -= sAutoShop_price_struct.iPersonalQuartersPrice
IF iOwnedTradeAutoShopValue > 0
NETWORK_EARN_UPGRADE_AUTOSHOP(iOwnedTradeAutoShopValue, iTradeInAutoShopHash)
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: Trading Auto Shop for $", propval)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID)), " m_location_amount: $", iLocationAmount, " ", GET_AUTO_SHOP_NAME_FROM_ID(eAutoShopID))
sAutoShopTelemetry.location_amount = iLocationAmount
PRINTLN("sAutoShopTelemetry.location_amount - ", sAutoShopTelemetry.location_amount)
NETWORK_SPEND_UPGRADE_AUTOSHOP(propval, FALSE, TRUE, sAutoShopTelemetry)
TRADE_AUTO_SHOP(eAutoShopID, eTradeInAutoShop)
ENDIF
ENDIF
// ----- Set the spawn point for the new auto shop? -----
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sAutoShopData.iPersonalQuarters)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_AUTO_SHOP_PERSONAL_QUARTERS) != sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: set Auto Shop spawn, player bought personal quarters")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_AUTO_SHOP)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: do not set Auto Shop spawn, player already has personal quarters")
ENDIF
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_AUTO_SHOP,PROPERTY_AUTO_SHOP)
IF NOT bRenovateAutoShop
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: MP_STAT_PROP_AUTO_SHOP_VALUE = ", propval)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_AUTO_SHOP_VALUE, propval)
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying autoshop")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// Process the Car Club Membership.
// At this point the auto shop transaction has been successful, otherwise we would EXIT this function and display the fail page.
BOOL bSuccessfullyPurchasedMembership = FALSE
BOOL bSelectedCarClubMembership = HAS_SCALEFORM_OPTION_BEEN_SELECTED(sAutoShopData.iCarClubMembership)
BOOL bAlreadyPurchasedMembership = HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID())
IF bSelectedCarClubMembership
AND NOT bAlreadyPurchasedMembership
GENERIC_TRANSACTION_STATE eMembershipPurchaseState
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
WHILE NOT PURCHASE_CAR_CLUB_MEMBERSHIP(eMembershipPurchaseState, MEMBERSHIP_PURCHASE_WEBSITE)
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Purchasing Car Club Membership...")
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH eMembershipPurchaseState
CASE TRANSACTION_STATE_FAILED
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Purchase Failed.")
BREAK
CASE TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Purchase Successful!")
bSuccessfullyPurchasedMembership = TRUE
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Purchase Unknown.")
BREAK
ENDSWITCH
IF NOT (bSuccessfullyPurchasedMembership)
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CLUB_MEM_FAIL")
CLEAR_HELP()
PRINT_HELP("CLUB_MEM_FAIL")
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Do not process Car Club Membership transaction.")
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Selected on website? - ", GET_STRING_FROM_BOOL(bSelectedCarClubMembership))
CPRINTLN(DEBUG_INTERNET, "[MEMBERSHIP] BUY_MP_AUTO_SHOP_FROM_WEBSITE: Already owns it? - ", GET_STRING_FROM_BOOL(bAlreadyPurchasedMembership))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iWall: ", sAutoShopData.iWall)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iTint: ", sAutoShopData.iTint)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iEmblem: ", sAutoShopData.iEmblem)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iCrewName: ", sAutoShopData.iCrewName)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iStaff1: ", sAutoShopData.iStaff1)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iStaff2: ", sAutoShopData.iStaff2)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iCarLift: ", sAutoShopData.iCarLift)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iPersonalQuarters: ", sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: iCarClubMembership: ", sAutoShopData.iCarClubMembership)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: bSuccessfullyPurchasedMembership: ", GET_STRING_FROM_BOOL(bSuccessfullyPurchasedMembership))
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_WALL), sAutoShopData.iWall)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_TINT), sAutoShopData.iTint)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_EMBLEM), sAutoShopData.iEmblem)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CREW_NAME), sAutoShopData.iCrewName)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_ONE), sAutoShopData.iStaff1)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_STAFF_TWO), sAutoShopData.iStaff2)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_CAR_LIFT), sAutoShopData.iCarLift)
SET_MP_INT_CHARACTER_STAT(GET_FM_INT_STAT_FOR_AUTO_SHOP_UPGRADE(AUTO_SHOP_MOD_PERSONAL_QUARTERS), sAutoShopData.iPersonalQuarters)
BROADCAST_PLAYER_PURCHASED_AUTO_SHOP()
PLAY_SOUND_FRONTEND(-1, "Click_Special", "WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateAutoShop, FALSE, FALSE, rpmt_8_AUTO_SHOP)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase complete, refreshing pin map")
IF !bRenovateAutoShop
AND eTradeInAutoShop = AUTO_SHOP_PROPERTY_ID_INVALID
SET_BIT(g_sTunerFlow.BitSet, ciTUNER_FLOW_BITSET__JUST_BOUGHT_AUTOSHOP)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: SET_BIT(g_sTunerFlow.BitSet, ciTUNER_FLOW_BITSET__JUST_BOUGHT_AUTOSHOP)")
ENDIF
IF !bRenovateAutoShop
CLEAR_TUNER_CLIENT_VEHICLE_STATS(0)
CLEAR_TUNER_CLIENT_VEHICLE_STATS(1)
CLEAR_TUNER_CLIENT_DELIVERY_DATA(0)
CLEAR_TUNER_CLIENT_DELIVERY_DATA(1)
ENDIF
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = eAutoShopID
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
#IF FEATURE_FIXER
/// PURPOSE:
/// Checks the players rank before attempting to purchase a property.
FUNC BOOL CHECK_PLAYER_RANK_BEFORE_PROPERTY_PURCHASE(REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType)
IF NOT IS_FM_TYPE_UNLOCKED(FMMC_TYPE_CUSTOM_CAR_GARAGE)
IF GET_PLAYER_RANK(GET_PLAYER_INDEX()) < 5
CPRINTLN(DEBUG_INTERNET, "CHECK_PLAYER_RANK_BEFORE_PROPERTY_PURCHASE: purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK
ELSE
CPRINTLN(DEBUG_INTERNET, "CHECK_PLAYER_RANK_BEFORE_PROPERTY_PURCHASE: purchase failed, player pending unlock for sufficient rank")
mpPropertySiteFailReason = MPSFR_INSUFFCIENT_RANK_PENDING
ENDIF
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, ePropertyType)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// Checks the current session before attempting to purchase a property.
FUNC BOOL CHECK_SESSION_BEFORE_PROPERTY_PURCHASE(REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType)
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "CHECK_SESSION_BEFORE_PROPERTY_PURCHASE: Purchase failed - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, ePropertyType)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// Checks the current session before attempting to purchase / trade in a property.
FUNC BOOL CHECK_ON_MISSION_BEFORE_PROPERTY_PURCHASE(REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType)
INT iCurrentMission = GB_GET_PLAYER_CURRENT_GANG_BOSS_MISSION(PLAYER_ID())
BOOL bGangBossFlow = DOES_CURRENT_MISSION_USE_GANG_BOSS_FLOW()
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "CHECK_ON_MISSION_BEFORE_PROPERTY_PURCHASE: Player current gang boss mission: \"", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission), "\"")
CPRINTLN(DEBUG_INTERNET, "CHECK_ON_MISSION_BEFORE_PROPERTY_PURCHASE: Does current mission use gang boss flow: \"", GET_STRING_FROM_BOOL(bGangBossFlow), "\"")
IF (iCurrentMission != -1)
OR bGangBossFlow
CPRINTLN(DEBUG_INTERNET, "CHECK_ON_MISSION_BEFORE_PROPERTY_PURCHASE: Purchase failed, player current gang boss mission: ", GANG_BOSS_GET_NAME_FOR_TYPE_FOR_DEBUG_PRINT(iCurrentMission))
mpPropertySiteFailReason = MPSFR_ON_MISSION
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, ePropertyType)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL CHECK_USING_OFFICE_SEAT_BEFORE_PROPERTY_PURCHASE(REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType)
IF GET_LOCAL_PLAYER_USING_OFFICE_SEATID() != -1
CWARNINGLN(DEBUG_INTERNET, "CHECK_USING_OFFICE_SEAT_BEFORE_PROPERTY_PURCHASE: purchase failed - using office seat ", GET_LOCAL_PLAYER_USING_OFFICE_SEATID(), "!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, ePropertyType)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL CHECK_MONEY_BEFORE_PROPERTY_PURCHASE(INT iBankBalance, INT iWalletBalance, INT iMinPendingTransactionValue, REPLACE_PROPERTY_MENU_TYPE_ENUM ePropertyType, TEXT_LABEL_15 tl15PropertyName)
#IF NOT IS_DEBUG_BUILD
UNUSED_PARAMETER(iBankBalance)
UNUSED_PARAMETER(iWalletBalance)
#ENDIF
CPRINTLN(DEBUG_INTERNET, "CHECK_MONEY_BEFORE_PROPERTY_PURCHASE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", iMinPendingTransactionValue)
IF (iMinPendingTransactionValue <= 0
OR (iMinPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iMinPendingTransactionValue, FALSE, TRUE, FALSE)))
CPRINTLN(DEBUG_INTERNET, "CHECK_MONEY_BEFORE_PROPERTY_PURCHASE: purchase failed, player doesn't have sufficient cash [(iBankBalance + iWalletBalance) $", (iBankBalance + iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:minPendingTransactionValue $", iMinPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, ePropertyType)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl15PropertyName), iMinPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
PROC BUY_MP_FIXER_HQ_FROM_WEBSITE(FIXER_HQ_ID eFixerHQID, INT &ref_iResultSlot)
INT minPendingTransactionValue, finalPendingTransactionValue, iOwnedTradeFixerHQValue
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
// If help text is being display during a specific upgrade, clear it here.
// ----- Can't purchase if the player isn't a high enough rank. -----
IF NOT CHECK_PLAYER_RANK_BEFORE_PROPERTY_PURCHASE(rpmt_9_FIXER_HQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, player doesn't have sufficient rank (", GET_PLAYER_RANK(GET_PLAYER_INDEX()), ")")
EXIT
ENDIF
/// ----- Can't purchase if the session isn't valid. -----
IF NOT CHECK_SESSION_BEFORE_PROPERTY_PURCHASE(rpmt_9_FIXER_HQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, invalid session.")
EXIT
ENDIF
// ----- Check if the purchase is valid -----
TEXT_LABEL_15 tl15FixerHQName = GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: trying to purchase Fixer HQ ", tl15FixerHQName, " #", eFixerHQID)
INT propVal = CEIL(TO_FLOAT(GET_FIXER_HQ_COST(eFixerHQID)) * g_sMPTunables.fPropertyMultiplier)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase valid, attempting index ", tl15FixerHQName, " $", propVal)
minPendingTransactionValue = propVal
// ----- Check if player already owns a Fixer HQ -----
FIXER_HQ_ID eTradeInFixerHQ = GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())
// ----- Can't replace / renovate if the player is on a mission. -----
IF IS_FIXER_HQ_ID_VALID(eTradeInFixerHQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: currently owns Fixer HQ #", eTradeInFixerHQ)
IF NOT CHECK_ON_MISSION_BEFORE_PROPERTY_PURCHASE(rpmt_9_FIXER_HQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase / Renovation failed, currently on a mission")
EXIT
ENDIF
ENDIF
// ----- Check if player is purchasing a new Fixer HQ, or renovating -----
BOOL bRenovateFixerHQ = FALSE
IF (eFixerHQID = eTradeInFixerHQ)
// ----- Can't purchase if the player is using an office seat. -----
IF NOT CHECK_USING_OFFICE_SEAT_BEFORE_PROPERTY_PURCHASE(rpmt_9_FIXER_HQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, using office seat.")
EXIT
ENDIF
propVal = CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES(eFixerHQID, sFixerHQ_price_struct)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: renovate ", tl15FixerHQName, ", propVal $", propVal, ", minPendingTransactionValue $", minPendingTransactionValue)
bRenovateFixerHQ = TRUE
ELSE
propVal += CALCULATE_COST_OF_FIXER_HQ_INTERIOR_UPGRADES(eFixerHQID, sFixerHQ_price_struct)
IF NOT IS_FIXER_HQ_ID_VALID(eTradeInFixerHQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase ", tl15FixerHQName, " for ", eTradeInFixerHQ, ", propVal $", propVal, ", minPendingTransactionValue $", minPendingTransactionValue)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: trade ", tl15FixerHQName, " for ", eTradeInFixerHQ, ", propVal $", propVal, ", minPendingTransactionValue $", minPendingTransactionValue)
ENDIF
ENDIF
minPendingTransactionValue = propVal
// ----- Do added checks before proceeding -----
IF NOT IS_FIXER_HQ_ID_VALID(eTradeInFixerHQ)
OR bRenovateFixerHQ
IF minPendingTransactionValue > 0
// ----- Can't purchase if they don't have enough money -----
IF NOT CHECK_MONEY_BEFORE_PROPERTY_PURCHASE(iBankBalance, iWalletBalance, minPendingTransactionValue, rpmt_9_FIXER_HQ, tl15FixerHQName)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, not enough money - 1")
EXIT
ENDIF
ENDIF
ELSE
INT iTempMinPendingTransactionValue = minPendingTransactionValue - GET_FIXER_HQ_SALE_VALUE(eTradeInFixerHQ)
IF iTempMinPendingTransactionValue > 0
// ----- Can't purchase if they don't have enough money -----
IF NOT CHECK_MONEY_BEFORE_PROPERTY_PURCHASE(iBankBalance, iWalletBalance, iTempMinPendingTransactionValue, rpmt_9_FIXER_HQ, tl15FixerHQName)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, not enough money - 2")
EXIT
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: bank: $", iBankBalance, " + wallet: $", iWalletBalance, " <= $", minPendingTransactionValue, "+", GET_FIXER_HQ_SALE_VALUE(eTradeInFixerHQ))
ENDIF
INT iReplaceSpecificPropertySlot
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
WHILE NOT RUN_REPLACE_PROPERTY_MENU(replaceMenu, ref_iResultSlot, ENUM_TO_INT(eFixerHQID), iReplaceSpecificPropertySlot, rpmt_9_FIXER_HQ)
AND DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
DISABLE_SELECTOR_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
WAIT(0)
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
ENDWHILE
IF ref_iResultSlot = -1
mpPropertySiteFailReason = MPSFR_CANCELED
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_9_FIXER_HQ)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
g_iPendingBrowserTimer = g_iBrowserTimer
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
CPRINTLN(DEBUG_INTERNET, "CDM: BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase failed, player backed out of property selection")
EXIT
ELSE
iOwnedTradeFixerHQValue = GET_FIXER_HQ_SALE_VALUE(eTradeInFixerHQ)
finalPendingTransactionValue = propVal - iOwnedTradeFixerHQValue
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Player selected ref_iResultSlot ", ref_iResultSlot, ", trade ba: ", eTradeInFixerHQ, " for trade. propVal $", propVal, ", iOwnedTradeFixerHQValue: ", iOwnedTradeFixerHQValue, " Final trans value $", finalPendingTransactionValue)
ENDIF
// Re-check if player can afford based on selected trade-in value
IF finalPendingTransactionValue > 0
IF NOT CHECK_MONEY_BEFORE_PROPERTY_PURCHASE(iBankBalance, iWalletBalance, finalPendingTransactionValue, rpmt_9_FIXER_HQ, tl15FixerHQName)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Purchase failed, not enough money - 3")
EXIT
ENDIF
ENDIF
ENDIF
FIXER_HQ_DATA_STRUCT sFixerHQData
GET_SCALEFORM_FIXER_HQ_DATA(sFixerHQData)
IF USE_SERVER_TRANSACTIONS()
INT iPropval
IF eFixerHQID = eTradeInFixerHQ
iPropval = 0
ELSE
iPropval = CEIL(TO_FLOAT(GET_FIXER_HQ_COST(eFixerHQID)) * g_sMPTunables.fPropertyMultiplier)
ENDIF
bProcessingBasket = TRUE
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
INT iItemId = GET_FIXER_HQ_KEY_FOR_CATALOGUE(eFixerHQID)
INT iInventoryKey = GET_FIXER_HQ_INVENTORY_KEY_FOR_CATALOGUE()
INT iSellingItemId = 0
IF IS_FIXER_HQ_ID_VALID(eTradeInFixerHQ)
iSellingItemId = GET_FIXER_HQ_KEY_FOR_CATALOGUE(eTradeInFixerHQ)
INT iSafeCash = GET_MP_INT_CHARACTER_STAT(MP_STAT_FIXER_SAFE_CASH_VALUE)
IF iSafeCash > 0
g_iCachedPlayerCashForFixerHQSafe = iSafeCash
g_eCachedPlayerFixerHQForHQSafe = GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())
PRINTLN("[FIXER_AGENCY_PAYOUT] SAFE_SWAP - cacheing safe cash stat")
ELSE
PRINTLN("[FIXER_AGENCY_PAYOUT] SAFE_SWAP - cash stat was 0 not cacheing")
ENDIF
ENDIF
INT iProcessSuccess = GENERIC_TRANSACTION_STATE_DEFAULT
WHILE PROCESSING_INTERNET_SHOPPING_BASKET(iProcessSuccess, iPropval, ref_iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, 0, iOwnedTradeFixerHQValue, iSellingItemId)
RENDER_BROWSER()
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(TRUE)
WAIT(0)
ENDWHILE
TOGGLE_PLAYER_PROOFS_WHEN_PROCESSING_INTERNET_SHOPPING_BASKET(FALSE)
RENDER_BROWSER()
SWITCH iProcessSuccess
CASE GENERIC_TRANSACTION_STATE_FAILED
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase failed, failed to process transaction")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
g_iCachedPlayerCashForFixerHQSafe = 0
g_eCachedPlayerFixerHQForHQSafe = GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_9_FIXER_HQ)
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
BREAK
CASE GENERIC_TRANSACTION_STATE_SUCCESS
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Success! Give us your money!")
BREAK
DEFAULT
mpPropertySiteFailReason = MPSFR_NOT_SAFE
CASSERTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase failed, unknown iProcessSuccess: \"", iProcessSuccess, "\"")
EXIT
BREAK
ENDSWITCH
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: final: $", finalPendingTransactionValue, ", propVal $", propVal)
//Assign the telemetry data
//Increment the spending stat
IF finalPendingTransactionValue > 0
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
ENDIF
STRUCT_BUY_AGENCY sFixerHQTelemetry
sFixerHQTelemetry.location = GET_HASH_KEY(GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID))
sFixerHQTelemetry.style_amount = sFixerHQ_price_struct.iArtPrice
sFixerHQTelemetry.wallpaper_amount = sFixerHQ_price_struct.iWallpaperPrice
sFixerHQTelemetry.tint_amount = sFixerHQ_price_struct.iTintPrice
sFixerHQTelemetry.weapon_workshop_amount = sFixerHQ_price_struct.iArmoryPrice
sFixerHQTelemetry.vehicle_workshop_amount = sFixerHQ_price_struct.iVehWorkshopPrice
sFixerHQTelemetry.personal_quarter_amount = sFixerHQ_price_struct.iPersonalQuartersPrice
sFixerHQTelemetry.style = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_ART, sFixerHQData.iArt))
sFixerHQTelemetry.wallpaper = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_WALLPAPER, sFixerHQData.iWallpaper))
sFixerHQTelemetry.tint = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_TINT, sFixerHQData.iTint))
sFixerHQTelemetry.weapon_workshop = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_ARMORY, sFixerHQData.iArmory))
sFixerHQTelemetry.vehicle_workshop = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_VEH_WORKSHOP, sFixerHQData.iVehWorkshop))
sFixerHQTelemetry.personal_quarter = GET_HASH_KEY(GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS, sFixerHQData.iPersonalQuarters))
#IF IS_DEBUG_BUILD
PRINTLN("===== Fixer HQ telemetry =====")
PRINTLN("sFixerHQTelemetry.location - Name: ", GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID), " Hash: ", sFixerHQTelemetry.location)
PRINTLN("sFixerHQTelemetry.style - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_ART, sFixerHQData.iArt), " Hash: ", sFixerHQTelemetry.style)
PRINTLN("sFixerHQTelemetry.style_amount - ", sFixerHQTelemetry.style_amount)
PRINTLN("sFixerHQTelemetry.wallpaper - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_WALLPAPER, sFixerHQData.iWallpaper), " Hash: ", sFixerHQTelemetry.wallpaper)
PRINTLN("sFixerHQTelemetry.wallpaper_amount - ", sFixerHQTelemetry.wallpaper_amount)
PRINTLN("sFixerHQTelemetry.tint - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_TINT, sFixerHQData.iTint), " Hash: ", sFixerHQTelemetry.tint)
PRINTLN("sFixerHQTelemetry.tint_amount - ", sFixerHQTelemetry.tint_amount)
PRINTLN("sFixerHQTelemetry.weapon_workshop - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_ARMORY, sFixerHQData.iArmory), " Hash: ", sFixerHQTelemetry.weapon_workshop)
PRINTLN("sFixerHQTelemetry.weapon_workshop_amount - ", sFixerHQTelemetry.weapon_workshop_amount)
PRINTLN("sFixerHQTelemetry.vehicle_workshop - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_VEH_WORKSHOP, sFixerHQData.iVehWorkshop), " Hash: ", sFixerHQTelemetry.vehicle_workshop)
PRINTLN("sFixerHQTelemetry.vehicle_workshop_amount - ", sFixerHQTelemetry.vehicle_workshop_amount)
PRINTLN("sFixerHQTelemetry.personal_quarter - Name: ", GET_FIXER_HQ_UPGRADE_NAME_FROM_ID(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS, sFixerHQData.iPersonalQuarters), " Hash: ", sFixerHQTelemetry.personal_quarter)
PRINTLN("sFixerHQTelemetry.personal_quarter_amount - ", sFixerHQTelemetry.personal_quarter_amount)
#ENDIF
INT iLocationAmount
//Check if we're trading or just buying
IF (NOT IS_FIXER_HQ_ID_VALID(eTradeInFixerHQ))
OR (bRenovateFixerHQ)
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
iLocationAmount = propVal
IF (sFixerHQ_price_struct.iArtPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iArtPrice
ENDIF
IF (sFixerHQ_price_struct.iWallpaperPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iWallpaperPrice
ENDIF
IF (sFixerHQ_price_struct.iTintPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iTintPrice
ENDIF
IF (sFixerHQ_price_struct.iVehWorkshopPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iVehWorkshopPrice
ENDIF
IF (sFixerHQ_price_struct.iArmoryPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iArmoryPrice
ENDIF
IF (sFixerHQ_price_struct.iPersonalQuartersPrice >= 0)
OR NOT bRenovateFixerHQ
iLocationAmount -= sFixerHQ_price_struct.iPersonalQuartersPrice
ENDIF
IF NOT bRenovateFixerHQ
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Bought Fixer HQ for $", propVal)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID)), " m_location_amount: $", iLocationAmount, " ", GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID))
SET_FIXER_HQ_AS_OWNED(eFixerHQID)
sFixerHQTelemetry.location_amount = iLocationAmount
PRINTLN("sFixerHQTelemetry.location_amount - ", sFixerHQTelemetry.location_amount)
NETWORK_SPEND_BUY_AGENCY(propVal, FALSE, TRUE, sFixerHQTelemetry)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Renovate Fixer HQ for $", propVal)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID)), " m_location_amount: $", iLocationAmount, " ", GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID))
NETWORK_SPEND_UPGRADE_AGENCY(propval, FALSE, TRUE, sFixerHQTelemetry)
ENDIF
ELIF GET_FIXER_HQ_BASE_COST(eTradeInFixerHQ) > 0
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
INT iTradeInFixerHQHash = GET_HASH_KEY(GET_FIXER_HQ_NAME_FROM_ID(eTradeInFixerHQ))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Trading the business ", GET_FIXER_HQ_NAME_FROM_ID(eTradeInFixerHQ), " is earning the player: $", iOwnedTradeFixerHQValue, " Hash: ", iTradeInFixerHQHash)
iLocationAmount = finalPendingTransactionValue + iOwnedTradeFixerHQValue
iLocationAmount -= sFixerHQ_price_struct.iArtPrice
iLocationAmount -= sFixerHQ_price_struct.iWallpaperPrice
iLocationAmount -= sFixerHQ_price_struct.iTintPrice
iLocationAmount -= sFixerHQ_price_struct.iVehWorkshopPrice
iLocationAmount -= sFixerHQ_price_struct.iArmoryPrice
iLocationAmount -= sFixerHQ_price_struct.iPersonalQuartersPrice
IF iOwnedTradeFixerHQValue > 0
NETWORK_EARN_UPGRADE_AGENCY(iOwnedTradeFixerHQValue, iTradeInFixerHQHash)
ENDIF
IF USE_SERVER_TRANSACTIONS()
CPRINTLN(DEBUG_INTERNET, "[CASH] NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED - basket")
NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED(GET_CASH_TRANSACTION_ID_FROM_INDEX(GET_BASKET_TRANSACTION_SCRIPT_INDEX()))
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Trading Fixer HQ for $", propVal)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: m_location:", GET_HASH_KEY(GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID)), " m_location_amount: $", iLocationAmount, " ", GET_FIXER_HQ_NAME_FROM_ID(eFixerHQID))
sFixerHQTelemetry.location_amount = iLocationAmount
PRINTLN("sFixerHQTelemetry.location_amount - ", sFixerHQTelemetry.location_amount)
NETWORK_SPEND_UPGRADE_AGENCY(propVal, FALSE, TRUE, sFixerHQTelemetry)
TRADE_FIXER_HQ(eFixerHQID, eTradeInFixerHQ)
ENDIF
// ----- Set the spawn point for the new fixer hq? -----
/*
IF HAS_SCALEFORM_OPTION_BEEN_SELECTED(sAutoShopData.iPersonalQuarters)
IF (GET_MP_INT_CHARACTER_STAT(MP_STAT_AUTO_SHOP_PERSONAL_QUARTERS) != sAutoShopData.iPersonalQuarters)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_AUTO_SHOP_FROM_WEBSITE: set Auto Shop spawn, player bought personal quarters")
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_AUTO_SHOP)
ELSE
CPRINTLN(DEBUG_INTERNET, "BUY_MP_ARCADE_FROM_WEBSITE: do not set Auto Shop spawn, player already has personal quarters")
ENDIF
ENDIF
*/
// @TODO: Wait for PROPERTY_FIXER_HQ const?
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_FIXER_HQ, PROPERTY_AUTO_SHOP)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_SECURITY_OFFICE_GAR,PROPERTY_SECURITY_OFFICE_GARAGE)
IF NOT bRenovateFixerHQ
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: propVal = ", propVal)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_FIXER_HQ_VALUE, propval)
IF GET_OWNED_PROPERTY(0) <= 0
IF IS_PERSONAL_VEHICLE_DRIVEABLE_IN_FREEMODE()
IF DOES_ENTITY_EXIST(MPGlobalsAmbience.vehPersonalVehicle)
INT iForceDisplayUpdatedSlot
MPSV_GET_DISPLAY_SLOT_FROM_SAVE_SLOT(CURRENT_SAVED_VEHICLE_SLOT(),iForceDisplayUpdatedSlot)
IF iForceDisplayUpdatedSlot <= 0
iForceDisplayUpdatedSlot = MP_SAVE_VEHICLE_GET_EMPTY_DISPLAY_SLOT(MP_SAVE_VEH_SEARCH_EMPTY_FIRST,FALSE,GET_ENTITY_MODEL(MPGlobalsAmbience.vehPersonalVehicle))
IF iForceDisplayUpdatedSlot >= 0
PRINTLN("Forcing vehicle out in freemode slot display to #",iForceDisplayUpdatedSlot," when buying fixer HQ")
MPSV_SET_DISPLAY_SLOT(iForceDisplayUpdatedSlot,CURRENT_SAVED_VEHICLE_SLOT())
IF iForceDisplayUpdatedSlot != 0
MPSV_SET_DISPLAY_SLOT(0,-1)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iArt: ", sFixerHQData.iArt)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iWallpaper: ", sFixerHQData.iWallpaper)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iTint: ", sFixerHQData.iTint)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iVehWorkshop: ", sFixerHQData.iVehWorkshop)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iArmory: ", sFixerHQData.iArmory)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: iPersonalQuarters: ", sFixerHQData.iPersonalQuarters)
// ----- Renovation upgrade txt message -----
IF bRenovateFixerHQ
// --- Style changes ---
IF sFixerHQData.iArt != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ART))
OR sFixerHQData.iWallpaper != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_WALLPAPER))
OR sFixerHQData.iTint != GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_TINT))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Changed style of fixer HQ, sending txt msg.")
SET_BIT(g_SimpleInteriorData.iEleventhBS, BS11_SIMPLE_INTERIOR_FIXER_HQ_RENOVATED_STYLE)
ENDIF
// --- Purchased all upgrades ---
BOOL bSendAllUpgradeTxtMessage = TRUE
IF GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_VEH_WORKSHOP)) > 0
AND GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ARMORY)) > 0
AND GET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS)) > 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: already owned all upgrades. Don't send txt message.")
bSendAllUpgradeTxtMessage = FALSE
ENDIF
IF sFixerHQData.iVehWorkshop = 0
OR sFixerHQData.iArmory = 0
OR sFixerHQData.iPersonalQuarters = 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: Has not purchased all upgrades. Don't send txt message.")
bSendAllUpgradeTxtMessage = FALSE
ENDIF
IF bSendAllUpgradeTxtMessage
SET_BIT(g_SimpleInteriorData.iEleventhBS, BS11_SIMPLE_INTERIOR_FIXER_HQ_BOUGHT_ALL_UPGRADES)
ENDIF
ENDIF
SET_FIXER_HQ_AS_OWNED(eFixerHQID)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ART), sFixerHQData.iArt)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_WALLPAPER), sFixerHQData.iWallpaper)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_TINT), sFixerHQData.iTint)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_VEH_WORKSHOP), sFixerHQData.iVehWorkshop)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_ARMORY), sFixerHQData.iArmory)
SET_MP_INT_CHARACTER_STAT(GET_MP_INT_STAT_FOR_FIXER_HQ_UPGRADE(FIXER_HQ_UPGRADE_PERSONAL_QUARTERS), sFixerHQData.iPersonalQuarters)
BROADCAST_PLAYER_PURCHASED_FIXER_HQ()
PLAY_SOUND_FRONTEND(-1, "Click_Special", "WEB_NAVIGATION_SOUNDS_PHONE")
bBrowserShoppingSavePending = TRUE
CHECK_AMERICAN_DREAM_ACHIEVEMENT()
POPULATE_MP_EXEC_PROPERTY_SITE_PIN_MAP(mov, TRUE)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_PURCHASE_D_SUCCESS", TRUE, bRenovateFixerHQ, FALSE, FALSE, rpmt_9_FIXER_HQ)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase complete, refreshing pin map")
IF !bRenovateFixerHQ
IF eTradeInFixerHQ = FIXER_HQ_ID_INVALID
// For flow guys - Set a bit here to start whatever flow there is :)
SET_BIT(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__DO_FIXER_HQ_BOUGHT_HELP)
CLEAR_BIT(g_sFixerFlow.Bitset, ciFIXER_FLOW_BITSET__DO_LAMAR_INTRO_CALL)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: SET_BIT(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__DO_FIXER_HQ_BOUGHT_HELP)")
ENDIF
CLOSE_BROWSER_AFTER_SUCCESSFUL_PURCHASE(1000)
ENDIF
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
iBoughtPropertyIndex = -1
IF USE_SERVER_TRANSACTIONS()
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
ENDIF
eBoughtFactoryIndex = FACTORY_ID_INVALID
eBoughtHangarIndex = HANGAR_ID_INVALID
eBoughtDefunctBaseIndex = DEFUNCT_BASE_ID_INVALID
eBoughtNightclubIndex = NIGHTCLUB_ID_INVALID
eBoughtArenaIndex = ARENA_GARAGE_ID_INVALID
eBoughtArcadeIndex = ARCADE_PROPERTY_ID_INVALID
eBoughtCasinoIndex = CASINO_APARTMENT_ID_INVALID
iBoughtCasinoPreset = -1
eBoughtAutoShopIndex = AUTO_SHOP_PROPERTY_ID_INVALID
eBoughtFixerHQIndex = eFixerHQID
CPRINTLN(DEBUG_INTERNET, "BUY_MP_FIXER_HQ_FROM_WEBSITE: purchase complete, resetting iCustomAptVariant to 1")
ENDPROC
#ENDIF // #IF FEATURE_FIXER
PROC BUY_MP_OFFICE_GARAGE_FROM_WEBSITE()
mpPropertySiteFailReason = MPSFR_UNSET
INT iOffice = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0)
IF iOffice <= 0
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: purchase failed, doesn't own an office")
mpPropertySiteFailReason = MPSFR_NOT_UNLOCKED
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOffice, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
INT iClickedOffice = GET_CACHED_LAST_CLICKED_OFFICE()
IF iOffice != iClickedOffice
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: purchase failed, owned office ", iOffice, " not same as last clicked office ", iClickedOffice)
mpPropertySiteFailReason = MPSFR_NOT_UNLOCKED
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOffice, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
IF USE_SERVER_TRANSACTIONS()
IF NOT NET_GAMESERVER_IS_SESSION_VALID(GET_ACTIVE_CHARACTER_SLOT())
OR NET_GAMESERVER_IS_SESSION_REFRESH_PENDING()
CWARNINGLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: failed to process transaction - session pending!")
mpPropertySiteFailReason = MPSFR_NOT_SAFE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOffice, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
EXIT
ENDIF
ENDIF
INT iOfficeGarage = GET_LAST_CLICKED_OFFICE_GARAGE()
INT iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop
GET_SCALEFORM_OFFICE_DATA(iStyle, iPersonnel, iFont, iColour, iGunLocker, iVault, iAccommodation, iGarage1Style, iGarage1Lighting, iGarage1Number, iGarage2Style, iGarage2Lighting, iGarage2Number, iGarage3Style, iGarage3Lighting, iGarage3Number, iModshop)
INT iPendingTransactionValue = 0
INT iPendingGarage1Value = 0, iPendingGarage2Value = 0, iPendingGarage3Value = 0, iPendingModshopValue = 0
IF (iGarage1Style > 0 AND g_sOfficeDataStruct.iGarage1Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage1Style))
OR (iGarage1Lighting >= 0 AND g_sOfficeDataStruct.iGarage1Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage1Lighting))
OR (iGarage1Number >= 0 AND g_sOfficeDataStruct.iGarage1Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage1Number))
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
INT i, iBuyPropertyIndex = PROPERTY_OFFICE_1_GARAGE_LVL1
INT iMaxTradeIn = 0
INT iOwned, propval
INT iReplaceSpecificPropertySlot = -1
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
iReplaceSpecificPropertySlot = GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
iOwned = GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
IF iOwned = iBuyPropertyIndex
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ELSE
REPEAT MAX_OWNED_PROPERTIES i
IF iMaxTradeIn < GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
ENDIF
ENDREPEAT
REPEAT MAX_OWNED_PROPERTIES i
iOwned = GET_OWNED_PROPERTY(i)
IF iOwned = iBuyPropertyIndex
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDREPEAT
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
iPendingGarage1Value = propval
propval += CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iGarage1StylePrice,
sOffice_price_struct.iGarage1LightingPrice,
sOffice_price_struct.iGarage1NumberPrice,
sOffice_price_struct.iGarage2StylePrice,
sOffice_price_struct.iGarage2LightingPrice,
sOffice_price_struct.iGarage2NumberPrice,
sOffice_price_struct.iGarage3StylePrice,
sOffice_price_struct.iGarage3LightingPrice,
sOffice_price_struct.iGarage3NumberPrice)
iPendingGarage1Value += (sOffice_price_struct.iGarage1StylePrice+sOffice_price_struct.iGarage1LightingPrice+sOffice_price_struct.iGarage1NumberPrice)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
propval = 0
ENDIF
INT minPendingTransactionValue = propval - iMaxTradeIn
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iGarage1StylePrice,
sUpgrade_Office_price_struct.iGarage1LightingPrice,
sUpgrade_Office_price_struct.iGarage1NumberPrice,
sUpgrade_Office_price_struct.iGarage2StylePrice,
sUpgrade_Office_price_struct.iGarage2LightingPrice,
sUpgrade_Office_price_struct.iGarage2NumberPrice,
sUpgrade_Office_price_struct.iGarage3StylePrice,
sUpgrade_Office_price_struct.iGarage3LightingPrice,
sUpgrade_Office_price_struct.iGarage3NumberPrice)
ENDIF
iPendingTransactionValue += iPendingGarage1Value
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE GAR1: iBuyPropertyIndex:", iBuyPropertyIndex, ", iPendingTransactionValue:$", iPendingTransactionValue, " (minPendingTransactionValue:$", minPendingTransactionValue, "), iPendingGarageValue:", iPendingGarage1Value)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
ENDIF
IF (iGarage2Style > 0 AND g_sOfficeDataStruct.iGarage2Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage2Style))
OR (iGarage2Lighting >= 0 AND g_sOfficeDataStruct.iGarage2Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage2Lighting))
OR (iGarage2Number >= 0 AND g_sOfficeDataStruct.iGarage2Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage2Number))
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
INT i, iBuyPropertyIndex = PROPERTY_OFFICE_1_GARAGE_LVL2
INT iMaxTradeIn = 0
INT iOwned, propval
INT iReplaceSpecificPropertySlot = -1
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
iReplaceSpecificPropertySlot = GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
iOwned = GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
IF iOwned = iBuyPropertyIndex
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ELSE
REPEAT MAX_OWNED_PROPERTIES i
IF iMaxTradeIn < GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
ENDIF
ENDREPEAT
REPEAT MAX_OWNED_PROPERTIES i
iOwned = GET_OWNED_PROPERTY(i)
IF iOwned = iBuyPropertyIndex
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDREPEAT
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
iPendingGarage2Value = propval
propval += CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iGarage1StylePrice,
sOffice_price_struct.iGarage1LightingPrice,
sOffice_price_struct.iGarage1NumberPrice,
sOffice_price_struct.iGarage2StylePrice,
sOffice_price_struct.iGarage2LightingPrice,
sOffice_price_struct.iGarage2NumberPrice,
sOffice_price_struct.iGarage3StylePrice,
sOffice_price_struct.iGarage3LightingPrice,
sOffice_price_struct.iGarage3NumberPrice)
iPendingGarage2Value += (sOffice_price_struct.iGarage2StylePrice+sOffice_price_struct.iGarage2LightingPrice+sOffice_price_struct.iGarage2NumberPrice)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
propval = 0
ENDIF
INT minPendingTransactionValue = propval - iMaxTradeIn
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iGarage1StylePrice,
sUpgrade_Office_price_struct.iGarage1LightingPrice,
sUpgrade_Office_price_struct.iGarage1NumberPrice,
sUpgrade_Office_price_struct.iGarage2StylePrice,
sUpgrade_Office_price_struct.iGarage2LightingPrice,
sUpgrade_Office_price_struct.iGarage2NumberPrice,
sUpgrade_Office_price_struct.iGarage3StylePrice,
sUpgrade_Office_price_struct.iGarage3LightingPrice,
sUpgrade_Office_price_struct.iGarage3NumberPrice)
ENDIF
iPendingTransactionValue += iPendingGarage2Value
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE GAR2: iBuyPropertyIndex:", iBuyPropertyIndex, ", iPendingTransactionValue:$", iPendingTransactionValue, " (minPendingTransactionValue:$", minPendingTransactionValue, "), iPendingGarageValue:", iPendingGarage2Value)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
ENDIF
IF (iGarage3Style > 0 AND g_sOfficeDataStruct.iGarage3Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage3Style))
OR (iGarage3Lighting >= 0 AND g_sOfficeDataStruct.iGarage3Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage3Lighting))
OR (iGarage3Number >= 0 AND g_sOfficeDataStruct.iGarage3Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage3Number))
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
INT i, iBuyPropertyIndex = PROPERTY_OFFICE_1_GARAGE_LVL3
INT iMaxTradeIn = 0
INT iOwned, propval
INT iReplaceSpecificPropertySlot = -1
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
iReplaceSpecificPropertySlot = GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
iOwned = GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
IF iOwned = iBuyPropertyIndex
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ELSE
REPEAT MAX_OWNED_PROPERTIES i
IF iMaxTradeIn < GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
ENDIF
ENDREPEAT
REPEAT MAX_OWNED_PROPERTIES i
iOwned = GET_OWNED_PROPERTY(i)
IF iOwned = iBuyPropertyIndex
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDREPEAT
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
iPendingGarage3Value = propval
propval += CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iGarage1StylePrice,
sOffice_price_struct.iGarage1LightingPrice,
sOffice_price_struct.iGarage1NumberPrice,
sOffice_price_struct.iGarage2StylePrice,
sOffice_price_struct.iGarage2LightingPrice,
sOffice_price_struct.iGarage2NumberPrice,
sOffice_price_struct.iGarage3StylePrice,
sOffice_price_struct.iGarage3LightingPrice,
sOffice_price_struct.iGarage3NumberPrice)
iPendingGarage3Value += (sOffice_price_struct.iGarage3StylePrice+sOffice_price_struct.iGarage3LightingPrice+sOffice_price_struct.iGarage3NumberPrice)
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
propval = 0
ENDIF
INT minPendingTransactionValue = propval - iMaxTradeIn
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_GARAGE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iGarage1StylePrice,
sUpgrade_Office_price_struct.iGarage1LightingPrice,
sUpgrade_Office_price_struct.iGarage1NumberPrice,
sUpgrade_Office_price_struct.iGarage2StylePrice,
sUpgrade_Office_price_struct.iGarage2LightingPrice,
sUpgrade_Office_price_struct.iGarage2NumberPrice,
sUpgrade_Office_price_struct.iGarage3StylePrice,
sUpgrade_Office_price_struct.iGarage3LightingPrice,
sUpgrade_Office_price_struct.iGarage3NumberPrice)
ENDIF
iPendingTransactionValue += iPendingGarage3Value
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE GAR3: iBuyPropertyIndex:", iBuyPropertyIndex, ", iPendingTransactionValue:$", iPendingTransactionValue, " (minPendingTransactionValue:$", minPendingTransactionValue, "), iPendingGarageValue:", iPendingGarage3Value)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
ENDIF
IF iModshop > 0
AND g_sOfficeDataStruct.iModshop != GET_SF_FROM_OFFICE_MODSHOP_INTERIOR(iModshop)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
INT i, iBuyPropertyIndex = GET_LAST_CLICKED_OFFICE()
INT iMaxTradeIn = 0
INT iOwned, propval
INT iReplaceSpecificPropertySlot = -1
IF IS_PROPERTY_RESTRICTED_SLOT_ONLY(iBuyPropertyIndex)
iReplaceSpecificPropertySlot = GET_PROPERTY_RESTRICTED_SLOT(iBuyPropertyIndex)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
iOwned = GET_OWNED_PROPERTY(iReplaceSpecificPropertySlot)
IF iOwned = iBuyPropertyIndex
propval = 0
ELSE
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
ELSE
REPEAT MAX_OWNED_PROPERTIES i
IF iMaxTradeIn < GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
iMaxTradeIn = GET_VALUE_OF_CURRENTLY_OWNED_PROPERTY(i)
ENDIF
ENDREPEAT
REPEAT MAX_OWNED_PROPERTIES i
iOwned = GET_OWNED_PROPERTY(i)
IF iOwned = iBuyPropertyIndex
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDREPEAT
propval = CEIL(TO_FLOAT(GET_VALUE_OF_PROPERTY(iBuyPropertyIndex))*g_sMPTunables.fPropertyMultiplier)
ENDIF
propval += CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sOffice_price_struct.iStylePrice,
sOffice_price_struct.iPersonnelPrice,
sOffice_price_struct.iNamePrice,
sOffice_price_struct.iFontPrice,
sOffice_price_struct.iColourPrice,
sOffice_price_struct.iGunLockerPrice,
sOffice_price_struct.iVaultPrice,
sOffice_price_struct.iAccommodationPrice,
sOffice_price_struct.iModshopPrice)
iPendingModshopValue = sOffice_price_struct.iModshopPrice
IF SHOULD_PROPERTY_BE_FREE_FOR_PLAYER(iBuyPropertyIndex)
propval = 0
ENDIF
INT minPendingTransactionValue = propval - iMaxTradeIn
IF iOwned = iBuyPropertyIndex
OFFICE_PRICE_STRUCT sUpgrade_Office_price_struct
minPendingTransactionValue = CALCULATE_COST_OF_OFFICE_INTERIOR_UPGRADES(iBuyPropertyIndex,
sUpgrade_Office_price_struct.iStylePrice,
sUpgrade_Office_price_struct.iPersonnelPrice,
sUpgrade_Office_price_struct.iNamePrice,
sUpgrade_Office_price_struct.iFontPrice,
sUpgrade_Office_price_struct.iColourPrice,
sUpgrade_Office_price_struct.iGunLockerPrice,
sUpgrade_Office_price_struct.iVaultPrice,
sUpgrade_Office_price_struct.iAccommodationPrice,
sUpgrade_Office_price_struct.iModshopPrice)
iPendingModshopValue = sUpgrade_Office_price_struct.iModshopPrice
ENDIF
iPendingTransactionValue += sOffice_price_struct.iModshopPrice
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE MODSHOP: iOwned:", iOwned, ", iBuyPropertyIndex:", iBuyPropertyIndex, ", iPendingTransactionValue:$", iPendingTransactionValue, " (minPendingTransactionValue:$", minPendingTransactionValue, "), iPendingModshopValue:", iPendingModshopValue)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
ENDIF
IF iPendingTransactionValue >0
INT iBankBalance = NETWORK_GET_VC_BANK_BALANCE()
INT iWalletBalance = NETWORK_GET_VC_WALLET_BALANCE()
UNUSED_PARAMETER(iBankBalance)
UNUSED_PARAMETER(iWalletBalance)
TEXT_LABEL_15 tl_15PropertyName
// IF (iBankBalance+iWalletBalance) < iPendingTransactionValue
INT iBuyPropertyIndex = GET_LAST_CLICKED_OFFICE_GARAGE()
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: bank:$", iBankBalance, " + wallet:$", iWalletBalance, " <> $", iPendingTransactionValue)
// IF (iPendingTransactionValue <= 0
// OR (iPendingTransactionValue > 0 AND ((iBankBalance+iWalletBalance) < iPendingTransactionValue)))
// CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < iPendingTransactionValue $", iPendingTransactionValue, "]")
// mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
// SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
// iCustomAptVariant = 1
// bCustomInteriorSelected = FALSE
//
// tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
// TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), iPendingTransactionValue)
//
// PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
// EXIT
// ENDIF
IF (iPendingTransactionValue <= 0
OR (iPendingTransactionValue > 0 AND NOT NETWORK_CAN_SPEND_MONEY(iPendingTransactionValue,FALSE,TRUE,FALSE)))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE: purchase failed, player doesn't have sufficient cash [(iBankBalance+iWalletBalance) $", (iBankBalance+iWalletBalance), " < NETWORK_CAN_SPEND_MONEY:iPendingTransactionValue $", iPendingTransactionValue, "]")
mpPropertySiteFailReason = MPSFR_INSUFFICIENT_CASH
SWITCH_TO_PROPERTY_RESULTS_PAGE(iBuyPropertyIndex, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
iCustomAptVariant = 1
bCustomInteriorSelected = FALSE
tl_15PropertyName = GET_PROPERTY_NAME(iBuyPropertyIndex)
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15PropertyName), iPendingTransactionValue)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
// ENDIF
IF USE_SERVER_TRANSACTIONS()
INT iWalletAmount = 0, iBankAmount = 0
INT iTempPrice = (iPendingGarage1Value+iPendingGarage2Value+iPendingGarage3Value+iPendingModshopValue) //iPendingTransactionValue
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] BUY_MP_OFFICE_GARAGE_FROM_WEBSITE - iTempPrice = (g1:$", iPendingGarage1Value, " + g2:$", iPendingGarage2Value, " + g3:$", iPendingGarage3Value, " + mod:$", iPendingModshopValue, ") =", iTempPrice)
// Bank first
IF (NETWORK_GET_VC_BANK_BALANCE() > 0)
IF NETWORK_GET_VC_BANK_BALANCE() >= iTempPrice
iBankAmount = iTempPrice
ELSE
iBankAmount = iTempPrice-(iTempPrice-NETWORK_GET_VC_BANK_BALANCE())
ENDIF
iTempPrice -= iBankAmount
ENDIF
IF iTempPrice > 0
IF (NETWORK_GET_VC_WALLET_BALANCE() > 0)
IF NETWORK_GET_VC_WALLET_BALANCE() >= iTempPrice
iWalletAmount = iTempPrice
ELSE
iWalletAmount = iTempPrice-(iTempPrice-NETWORK_GET_VC_WALLET_BALANCE())
ENDIF
iTempPrice -= iWalletAmount
ENDIF
ENDIF
IF iTempPrice > 0
CASSERTLN(DEBUG_INTERNET, "[BASKET] BUY_MP_OFFICE_GARAGE_FROM_WEBSITE - Player can't afford this item! iTempPrice=", iTempPrice,
", iWalletAmount=", iWalletAmount, ", iBankAmount=", iBankAmount)
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] BUY_MP_OFFICE_GARAGE_FROM_WEBSITE - Player can afford this item... iTempPrice=", iTempPrice,
", iWalletAmount=", iWalletAmount, ", iBankAmount=", iBankAmount,
" (iCouponPrice=", iPendingTransactionValue, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE(), ")")
IF iWalletAmount != 0
OR iBankAmount != 0
CPRINTLN(DEBUG_INTERNET, "[BASKET] - CHANGE_FAKE_MP_CASH(wallet=$-", iWalletAmount, ", bank=$-", iBankAmount, "): iPendingTransactionValue=$", iPendingTransactionValue, ", bankBalance=$", NETWORK_GET_VC_BANK_BALANCE(), ", walletBalance=$", NETWORK_GET_VC_WALLET_BALANCE())
USE_FAKE_MP_CASH(TRUE)
CHANGE_FAKE_MP_CASH(-iWalletAmount, -iBankAmount)
bBypassFakeCash = TRUE
ENDIF
ENDIF
ENDIF
ELSE
CDEBUG1LN(DEBUG_INTERNET, "[BASKET] BUY_MP_OFFICE_GARAGE_FROM_WEBSITE - iPendingTransactionValue:$", iPendingTransactionValue)
ENDIF
BOOL bPurchasedGarageMod = FALSE
INT iCachedBoughtPropertyIndex = -1
IF (iGarage1Style > 0 AND g_sOfficeDataStruct.iGarage1Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage1Style))
OR (iGarage1Lighting >= 0 AND g_sOfficeDataStruct.iGarage1Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage1Lighting))
OR (iGarage1Number >= 0 AND g_sOfficeDataStruct.iGarage1Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage1Number))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage1 buy attempt triggered on Style: ", iGarage1Style , " (previously:", g_sOfficeDataStruct.iGarage1Style, "), Lighting: ", iGarage1Lighting , " (previously:", g_sOfficeDataStruct.iGarage1Lighting, "), Number: ", iGarage1Number , " (previously:", g_sOfficeDataStruct.iGarage1Number, ")")
BUY_MP_PROPERTY_FROM_WEBSITE(PROPERTY_OFFICE_1_GARAGE_LVL1)
IF iCachedBoughtPropertyIndex = -1
iCachedBoughtPropertyIndex = iBoughtPropertyIndex
ENDIF
bPurchasedGarageMod = TRUE
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage1 not bought for Style: ", iGarage1Style , " (previously:", g_sOfficeDataStruct.iGarage1Style, "), Lighting: ", iGarage1Lighting , " (previously:", g_sOfficeDataStruct.iGarage1Lighting, "), Number: ", iGarage1Number , " (previously:", g_sOfficeDataStruct.iGarage1Number, ")")
ENDIF
IF (mpPropertySiteFailReason = MPSFR_UNSET)
IF (iGarage2Style > 0 AND g_sOfficeDataStruct.iGarage2Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage2Style))
OR (iGarage2Lighting >= 0 AND g_sOfficeDataStruct.iGarage2Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage2Lighting))
OR (iGarage2Number >= 0 AND g_sOfficeDataStruct.iGarage2Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage2Number))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage2 buy attempt triggered on Style: ", iGarage2Style , " (previously:", g_sOfficeDataStruct.iGarage2Style, "), Lighting: ", iGarage2Lighting , " (previously:", g_sOfficeDataStruct.iGarage2Lighting, "), Number: ", iGarage2Number , " (previously:", g_sOfficeDataStruct.iGarage2Number, ")")
BUY_MP_PROPERTY_FROM_WEBSITE(PROPERTY_OFFICE_1_GARAGE_LVL2)
IF iCachedBoughtPropertyIndex = -1
iCachedBoughtPropertyIndex = iBoughtPropertyIndex
ENDIF
bPurchasedGarageMod = TRUE
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage2 not bought for Style: ", iGarage2Style , " (previously:", g_sOfficeDataStruct.iGarage2Style, "), Lighting: ", iGarage2Lighting , " (previously:", g_sOfficeDataStruct.iGarage2Lighting, "), Number: ", iGarage2Number , " (previously:", g_sOfficeDataStruct.iGarage2Number, ")")
ENDIF
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage2 will not be not bought for Style: ", iGarage3Style , " (previously:", g_sOfficeDataStruct.iGarage3Style, "), Lighting: ", iGarage3Lighting , " (previously:", g_sOfficeDataStruct.iGarage3Lighting, "), Number: ", iGarage3Number , " (previously:", g_sOfficeDataStruct.iGarage3Number, ")")
bPurchasedGarageMod = TRUE //fail condition already done
ENDIF
IF (mpPropertySiteFailReason = MPSFR_UNSET)
IF (iGarage3Style > 0 AND g_sOfficeDataStruct.iGarage3Style != GET_SF_FROM_OFFICE_GARAGE_INTERIOR(iGarage3Style))
OR (iGarage3Lighting >= 0 AND g_sOfficeDataStruct.iGarage3Lighting != GET_SF_FROM_OFFICE_GARAGE_LIGHTING(iGarage3Lighting))
OR (iGarage3Number >= 0 AND g_sOfficeDataStruct.iGarage3Number != GET_SF_FROM_OFFICE_GARAGE_NUMBERING(iGarage3Number))
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage3 buy attempt triggered on Style: ", iGarage3Style , " (previously:", g_sOfficeDataStruct.iGarage3Style, "), Lighting: ", iGarage3Lighting , " (previously:", g_sOfficeDataStruct.iGarage3Lighting, "), Number: ", iGarage3Number , " (previously:", g_sOfficeDataStruct.iGarage3Number, ")")
BUY_MP_PROPERTY_FROM_WEBSITE(PROPERTY_OFFICE_1_GARAGE_LVL3)
IF iCachedBoughtPropertyIndex = -1
iCachedBoughtPropertyIndex = iBoughtPropertyIndex
ENDIF
bPurchasedGarageMod = TRUE
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage3 not bought for Style: ", iGarage3Style , " (previously:", g_sOfficeDataStruct.iGarage3Style, "), Lighting: ", iGarage3Lighting , " (previously:", g_sOfficeDataStruct.iGarage3Lighting, "), Number: ", iGarage3Number , " (previously:", g_sOfficeDataStruct.iGarage3Number, ")")
ENDIF
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage3 will not be not bought for Style: ", iGarage3Style , " (previously:", g_sOfficeDataStruct.iGarage3Style, "), Lighting: ", iGarage3Lighting , " (previously:", g_sOfficeDataStruct.iGarage3Lighting, "), Number: ", iGarage3Number , " (previously:", g_sOfficeDataStruct.iGarage3Number, ")")
bPurchasedGarageMod = TRUE //fail condition already done
ENDIF
IF (mpPropertySiteFailReason = MPSFR_UNSET)
IF iModshop > 0
AND g_sOfficeDataStruct.iModshop != GET_SF_FROM_OFFICE_MODSHOP_INTERIOR(iModshop)
CPRINTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage Modshop buy attempt triggered on index: ", iOffice , " (selected:", iModshop, ", previously:", g_sOfficeDataStruct.iModshop, ")")
BUY_MP_PROPERTY_FROM_WEBSITE(iOffice)
IF iCachedBoughtPropertyIndex != -1
iBoughtPropertyIndex = iCachedBoughtPropertyIndex
ENDIF
bPurchasedGarageMod = TRUE
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage Modshop not bought (selected:", iModshop, ", previously:", g_sOfficeDataStruct.iModshop, ")")
ENDIF
ELSE
CDEBUG2LN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office Garage Modshop will not be not bought for Style: ", iGarage3Style , " (previously:", g_sOfficeDataStruct.iGarage3Style, "), Lighting: ", iGarage3Lighting , " (previously:", g_sOfficeDataStruct.iGarage3Lighting, "), Number: ", iGarage3Number , " (previously:", g_sOfficeDataStruct.iGarage3Number, ")")
bPurchasedGarageMod = TRUE //fail condition already done
ENDIF
USE_FAKE_MP_CASH(FALSE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
bBypassFakeCash = FALSE
g_iLastPendingGarageTransactionValue = iPendingTransactionValue
IF NOT bPurchasedGarageMod
CASSERTLN(DEBUG_INTERNET, "BUY_MP_OFFICE_GARAGE_FROM_WEBSITE(fail:", mpPropertySiteFailReason, "): Office ", iOfficeGarage, " garage and modshop buy attempt but no garage or mod was changed (iGarage1Style:", g_sOfficeDataStruct.iGarage1Style, ") (iGarage2Style:", g_sOfficeDataStruct.iGarage2Style, ") (iGarage3Style:", g_sOfficeDataStruct.iGarage3Style, ") (iModshop:", g_sOfficeDataStruct.iModshop, ") !?!")
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOfficeGarage, "_S_PURCHASE_D_ERROR", FALSE, FALSE, FALSE, FALSE, rpmt_0)
PLAY_SOUND_FRONTEND(-1, "Click_Fail","WEB_NAVIGATION_SOUNDS_PHONE")
EXIT
ENDIF
ENDPROC
PROC DO_VEHICLE_SITE_PRICE_SET(WEBSITE_INDEX_ENUM site)
IF site = WWW_LEGENDARYMOTORSPORT_NET
OR site = WWW_ELITASTRAVEL_COM
OR site = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
OR site = WWW_DOCKTEASE_COM
OR site = WWW_PANDMCYCLES_COM
OR site = WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
OR site = WWW_BENNYSORIGINALMOTORWORKS_COM
OR site = WWW_ARENAWAR_TV
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "DO_VEHICLE_SITE_PRICE_SET: Updating vehicle prices for webpage ", GET_WEBSITE_FROM_INDEX(site))
#ENDIF
IF g_bInMultiplayer
UPDATE_VEHICLE_SITE_PRICES_MP(mov, site)
ELSE
UPDATE_VEHICLE_SITE_PRICES_SP(mov, site)
ENDIF
ENDIF
ENDPROC
PROC DO_STATIC_SITE_CHANGE_TRIGGERS()
BOOL bUpdate = FALSE
IF iStaticLastPage != iStaticCurrentPage
OR eStaticLastSite != eStaticCurrentSite
CPRINTLN(DEBUG_INTERNET,"DO_STATIC_SITE_CHANGE_TRIGGERS: ", iStaticLastPage, " != ", iStaticCurrentPage, " OR ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), " != ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), ": DO_VEHICLE_SITE_PRICE_SET()")
DO_VEHICLE_SITE_PRICE_SET(eStaticCurrentSite) //do the buggers anyway
IF (eStaticCurrentSite = WWW_ARENAWAR_TV)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
//
// IF g_bPropertyRefreshTrigger
POPULATE_MP_ARENA_PROPERTY_SITE_PIN_MAP(mov)
// g_bPropertyRefreshTrigger = FALSE
// ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET,"DO_STATIC_SITE_CHANGE_TRIGGERS: ", iStaticLastPage, " = ", iStaticCurrentPage, " AND ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), " = ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), ": don't do veh price set")
ENDIF
INT kbHistory = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_HISTORY_FLAG_INDEX)
IF kbHistory = 0
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: kbHistory is zero ", kbHistory, " ", iStaticHistory)
ELSE
IF kbHistory < iStaticHistory
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: kbHistory is less than ", kbHistory, " < ", iStaticHistory)
ELSE
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: kbHistory is greater than/equal to ", kbHistory, " >= ", iStaticHistory)
ENDIF
ENDIF
// Webpage has changed
IF iStaticLastPage != iStaticCurrentPage
OR kbHistory < iStaticHistory
CPRINTLN(DEBUG_INTERNET,"DO_STATIC_SITE_CHANGE_TRIGGERS: ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " last page:", iStaticLastPage, " -> current page:", iStaticCurrentPage, " (g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ")")
IF bColourPickingMode
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: Leaving colour picking mode")
bColourPickingMode = FALSE
ENDIF
// Check whether we're on a locked DLC vehicle page
IF IS_INDEX_DLC_FOR_VEH_SITE(eStaticCurrentSite, iStaticCurrentPage-3)
AND IS_SBV_DLC_UNLOCKED(GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage)) = FALSE
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: Player attempting access to locked DLC")
TRIGGER_BROWSER_NAG_SCREEN(-1, -1, NSR_DLC)
DO_VEHICLE_FAIL_PAGE(eStaticCurrentSite, VSFR_CANCELED, GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage), -1)
// First check for content uploads required for specific sites
// Within the same site
ELIF eStaticCurrentSite = eStaticLastSite
OR kbHistory < iStaticHistory
bColourPickingMode = FALSE
SWITCH eStaticCurrentSite
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_PANDMCYCLES_COM
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
// We are in colour picking mode! (Reduce for websites which actually support this)
bColourPickingMode = FALSE
// Update page
IF iStaticCurrentPage != iStaticLastPage
OR kbHistory < iStaticHistory
SITE_BUYABLE_VEHICLE sbv
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage)
IF sbv != UNSET_BUYABLE_VEHICLE
bColourPickingMode = TRUE
IF SET_VEHICLE_DEFAULT_COLOUR(sbv, eStaticCurrentSite, bColourPickingMode, g_eLastBuyableVehicleColourSelected, g_bLastBuyableVehicleArmourSelected)
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: Setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: not setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
ENDIF
eCursorInputProcessed = UNSET_BUYABLE_VEHICLE
bWaitingForSelectionReturn = FALSE
BOOL bShowingBrowserHelpMessage
bShowingBrowserHelpMessage = FALSE
IF g_bInMultiplayer
INT iVehicleNum
iVehicleNum = -1
IF (sbv = BV_LX_LUXOR2 OR sbv = BV_LX_SWIFT2
OR sbv = BV_AP_SUPERVOLITO1 OR sbv = BV_AP_SUPERVOLITO2
OR sbv = BV_EX_NIMBUS OR sbv = BV_EX_VOLATUS)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_PASSIVE")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_PASSIVE (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_PASSIVE")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF GET_CLOTHING_FOR_VEHICLE_PURCHASE(sbv, iVehicleNum)
OR GET_CLOTHING_FOR_VEHICLE_WEBSITE_PURCHASE(eStaticCurrentSite)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHRE")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHRE (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHRE")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF GET_CHIPS_FOR_VEHICLE_PURCHASE(sbv, iVehicleNum)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHCH")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHCH (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHCH", BHMT_STRING_WITH_NUMBER_AND_STRING, DEFAULT, g_sMPTunables.iCHIPS_FOR_WEBSITE_PURCHASE_CHIPS, DEFAULT, GET_LABEL_BUYABLE_VEHICLE(sbv))
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF (sbv = BV_SC_ELEGY2
AND NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT())
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHSC")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHSC (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHSC")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF (GET_SVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_SPVE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
// ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_LASTGEN_ONLY(sbv)
// CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_PLGO (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
// eCursorInputProcessed = sbv
ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_HEIST_LOCKED(sbv)
AND !(sbv = BV_DLC_INSURGENT AND DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018))
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying PHLO (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_DLC_BALLISTIC_EQUIPMENT)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_BAEQ (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_WVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_WEVE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) > 0)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_WEAI (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_FDS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_FDSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_BBS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_BBSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_AWS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_AWSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#IF FEATURE_CASINO_HEIST
ELIF (GET_CH_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_CH_MINITANK)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_RCBA (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF (GET_CNC_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
AND IS_CNC_CONTENT_ENABLED()
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
ELIF (GET_ISLAND_HEIST_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_TUNER_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_FIXER_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#IF FEATURE_DLC_1_2022
ELIF (GET_SUMMER_2022_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
// #IF FEATURE_SUMMER_2020
// ELIF (GET_SUMMER20_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
// CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
// eCursorInputProcessed = sbv
// #ENDIF
ELIF (sbv = BV_AW_RCBANDITO)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_RCBA (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_GO_HERMES AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017))
OR (sbv = BV_AW_CLIQUE AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018))
OR (sbv = BV_A_BUZZARD AND DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018))
OR (sbv = BV_DLC_INSURGENT AND DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018))
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHX17")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHX17 (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHX17")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF (sbv = BV_G9E_S95 AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION))
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHGEN9M")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHGEN9M (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHGEN9M")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
#ENDIF
ENDIF
ENDIF
IF NOT bShowingBrowserHelpMessage
IF NOT IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
AND (ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_PASSIVE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHRE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHCH")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHSC")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHX17"))
CPRINTLN(DEBUG_INTERNET, "<HELP> - remove ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CLEAR_HELP(TRUE)
ENDIF
ENDIF
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ENDIF
ENDIF
// Error page, upload fail string
IF IS_ERROR_PAGE_FOR_VEHICLE_SITE(eStaticCurrentSite, iStaticCurrentPage)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
// Confirmation page
ELIF IS_CONFIRM_PAGE_FOR_VEHICLE_SITE(eStaticCurrentSite, iStaticCurrentPage)
DO_VEHICLE_CONF_PAGE_TEXT(eStaticCurrentSite)
ENDIF
UPDATE_VEHICLE_SITES_PAGE_CHANGE(eStaticCurrentSite,iStaticLastPage, iStaticCurrentPage)
BREAK
CASE WWW_ARENAWAR_TV
// We are in colour picking mode! (Reduce for websites which actually support this)
bColourPickingMode = FALSE
// Update page
IF iStaticCurrentPage != iStaticLastPage
OR kbHistory < iStaticHistory
SITE_BUYABLE_VEHICLE sbv
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage)
IF sbv != UNSET_BUYABLE_VEHICLE
bColourPickingMode = TRUE
IF SET_VEHICLE_DEFAULT_COLOUR(sbv, eStaticCurrentSite, bColourPickingMode, g_eLastBuyableVehicleColourSelected, g_bLastBuyableVehicleArmourSelected)
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: Setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: not setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
ENDIF
eCursorInputProcessed = UNSET_BUYABLE_VEHICLE
bWaitingForSelectionReturn = FALSE
BOOL bShowingBrowserHelpMessage
bShowingBrowserHelpMessage = FALSE
IF g_bInMultiplayer
INT iVehicleNum
iVehicleNum = -1
IF (sbv = BV_LX_LUXOR2 OR sbv = BV_LX_SWIFT2
OR sbv = BV_AP_SUPERVOLITO1 OR sbv = BV_AP_SUPERVOLITO2
OR sbv = BV_EX_NIMBUS OR sbv = BV_EX_VOLATUS)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_PASSIVE")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_PASSIVE (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_PASSIVE")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF GET_CLOTHING_FOR_VEHICLE_PURCHASE(sbv, iVehicleNum)
OR GET_CLOTHING_FOR_VEHICLE_WEBSITE_PURCHASE(eStaticCurrentSite)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHRE")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHRE (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHRE")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF GET_CHIPS_FOR_VEHICLE_PURCHASE(sbv, iVehicleNum)
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHCH")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHCH (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHCH", BHMT_STRING_WITH_NUMBER_AND_STRING, DEFAULT, g_sMPTunables.iCHIPS_FOR_WEBSITE_PURCHASE_CHIPS, DEFAULT, GET_LABEL_BUYABLE_VEHICLE(sbv))
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF (sbv = BV_SC_ELEGY2
AND NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT())
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHSC")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHSC (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHSC")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
ELIF (GET_SVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_SPVE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
// ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_LASTGEN_ONLY(sbv)
// CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_PLGO (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
// eCursorInputProcessed = sbv
ELIF IS_SBV_A_VEHICLE_PREVIOUSLY_HEIST_LOCKED(sbv)
AND !(sbv = BV_DLC_INSURGENT AND DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018))
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying PHLO (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_DLC_BALLISTIC_EQUIPMENT)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_BAEQ (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_WVM_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_WEVE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (WAM_GET_STEAL_MISSION_UNLOCK_COUNT_FROM_VEHICLE_MODEL(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) > 0)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_WEAI (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_FDS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_FDSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_BBS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_BBSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (GET_AWS_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_AWSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#IF FEATURE_CASINO_HEIST
ELIF (GET_CH_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_CH_MINITANK)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_RCBA (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
#IF FEATURE_COPS_N_CROOKS
ELIF (GET_CNC_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1)
AND IS_CNC_CONTENT_ENABLED()
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
// #IF FEATURE_SUMMER_2020
// ELIF GET_SUMMER20_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1
// CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
// eCursorInputProcessed = sbv
// #ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF GET_ISLAND_HEIST_VEHICLE_INDEX(GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)) != -1
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_CHSE (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
#ENDIF
ELIF (sbv = BV_AW_RCBANDITO)
CPRINTLN(DEBUG_INTERNET, "<HELP> - consider displaying HELP_RCBA (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
eCursorInputProcessed = sbv
ELIF (sbv = BV_GO_HERMES AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2017))
OR (sbv = BV_AW_CLIQUE AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_XMAS2018))
OR (sbv = BV_A_BUZZARD AND DOES_SAVE_HAVE_COUPON(COUPON_HELI_XMAS2018))
OR (sbv = BV_DLC_INSURGENT AND DOES_SAVE_HAVE_COUPON(COUPON_CAR2_XMAS2018))
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHX17")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHX17 (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHX17")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
ELIF (sbv = BV_G9E_S95 AND DOES_SAVE_HAVE_COUPON(COUPON_CAR_GEN9_MIGRATION))
IF IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
OR NOT ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHGEN9M")
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_VEHGEN9M (sbv: ", GET_LABEL_BUYABLE_VEHICLE(sbv), ", iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_VEHGEN9M")
iTutTimer = g_iBrowserTimer + 7500
bShowingBrowserHelpMessage = TRUE
ENDIF
#ENDIF
ENDIF
ENDIF
IF NOT bShowingBrowserHelpMessage
IF NOT IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
AND (ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_PASSIVE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHRE")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHCH")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHSC")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_VEHX17"))
CPRINTLN(DEBUG_INTERNET, "<HELP> - remove ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CLEAR_HELP(TRUE)
ENDIF
ENDIF
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ENDIF
ENDIF
// Error page, upload fail string
IF IS_ERROR_PAGE_FOR_VEHICLE_SITE(eStaticCurrentSite, iStaticCurrentPage)
DO_VEHICLE_SITE_FAIL_PAGE_REASON(lastVehicleFailReason)
// Confirmation page
ELIF IS_CONFIRM_PAGE_FOR_VEHICLE_SITE(eStaticCurrentSite, iStaticCurrentPage)
DO_VEHICLE_CONF_PAGE_TEXT(eStaticCurrentSite)
//
ELIF (iStaticCurrentPage = 12)
INT iArenaGarage
iArenaGarage = ENUM_TO_INT(ARENA_GARAGE_1) //GET_LAST_CLICKED_ARENA_GARAGE()
// IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 41)
CPRINTLN(DEBUG_INTERNET, "ARENA_GARAGE property buy attempt triggered on index: ", iArenaGarage)
// ELSE
// CASSERTLN(DEBUG_INTERNET, "ARENA_GARAGE property replace(?) attempt triggered on index: ", iArenaGarage)
// ENDIF
INT iResultSlot
iResultSlot = 0
BUY_MP_ARENA_GARAGE_FROM_WEBSITE(INT_TO_ENUM(ARENA_GARAGE_ID, iArenaGarage), iResultSlot)
ENDIF
UPDATE_VEHICLE_SITES_PAGE_CHANGE(eStaticCurrentSite,iStaticLastPage, iStaticCurrentPage)
BREAK
CASE WWW_IWILLSURVIVEITALL_COM
SWITCH iStaticCurrentPage
CASE 2
// Redirect if already owns portfolio
IF BOUGHT_CON_SITE()
GO_TO_WEBSITE("WWW_IWILLSURVIVEITALL_COM_S_MY_D_PORTFOLIO")
ENDIF
BREAK
CASE 15
// Do transaction if char doesn't own portfolio
IF NOT BUY_CON_SITE()
GO_TO_WEBSITE("WWW_IWILLSURVIVEITALL_COM_S_PURCHASE_D_ERROR")
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WWW_DYNASTY8EXECUTIVEREALTY_COM
IF (iStaticCurrentPage = 10)
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 9)
INT iOffice
iOffice = GET_LAST_CLICKED_OFFICE()
CPRINTLN(DEBUG_INTERNET, "Office buy attempt triggered on index: ", iOffice)
BUY_MP_PROPERTY_FROM_WEBSITE(iOffice)
ELIF (g_iLastSelectedWebIndex = 5 AND iStaticLastPage = 9)
CPRINTLN(DEBUG_INTERNET, "Office Garage buy attempt triggered")
BUY_MP_OFFICE_GARAGE_FROM_WEBSITE()
#IF FEATURE_FIXER
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 25)
INT iFixerHQ
iFixerHQ = GET_LAST_CLICKED_FIXER_HQ()
CPRINTLN(DEBUG_INTERNET, "Fixer HQ buy attempt triggered")
INT iResultSlot
BUY_MP_FIXER_HQ_FROM_WEBSITE(INT_TO_ENUM(FIXER_HQ_ID, iFixerHQ), iResultSlot)
#ENDIF
ELSE
CDEBUG3LN(DEBUG_INTERNET, "Potential property buy attempt (Dynasty 8 Exclusive) 1 - g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, ", iStaticLastPage: ", iStaticLastPage, ", iStaticCurrentPage: ", iStaticCurrentPage)
ENDIF
ENDIF
IF iStaticCurrentPage != iStaticLastPage
bColourPickingMode = TRUE
ENDIF
BREAK
CASE FORECLOSURES_MAZE_D_BANK_COM
IF NOT g_bBrowser_help_bunkmod_seen
// IF (iStaticCurrentPage = 15) //BUNKER STYLE
IF (iStaticCurrentPage = 16) //PERSONAL QUARTERS
OR (iStaticCurrentPage = 17) //SHOOTING RANGE
OR (iStaticCurrentPage = 18) //GUN LOCKER
OR (iStaticCurrentPage = 19) //TRANSPORTATION
INT iHELP_BUNKMOD_SEEN_COUNT
iHELP_BUNKMOD_SEEN_COUNT = GET_PACKED_STAT_INT(PACKED_MP_INT_HELP_BUNKMOD_SEEN_COUNT)
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_BUNKMOD (iStaticCurrentPage: ", iStaticCurrentPage, ", iHELP_BUNKMOD_SEEN_COUNT: ", iHELP_BUNKMOD_SEEN_COUNT, ")")
IF iHELP_BUNKMOD_SEEN_COUNT < 3
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_BUNKMOD")
iTutTimer = g_iBrowserTimer + 7500
g_bBrowser_help_bunkmod_seen = TRUE
SET_PACKED_STAT_INT(PACKED_MP_INT_HELP_BUNKMOD_SEEN_COUNT, iHELP_BUNKMOD_SEEN_COUNT)
ENDIF
// bShowingBrowserHelpMessage = TRUE
ENDIF
ENDIF
IF (iStaticCurrentPage = 35) //NIGHTCLUB STYLE
// [HELP_NCLUBSTY]
// Please note: Your chosen style will be installed as you progress with the Nightclub set up.
IF NOT (HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_EQUIPMENT)
AND HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_STAFF))
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_NCLUBSTY (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_NCLUBSTY", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELIF (iStaticCurrentPage = 36) //NIGHTCLUB LIGHTING
// [HELP_NCLUBLIG]
// Please note: Your chosen lighting option will be installed as you progress with the Nightclub set up.
IF NOT (HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_EQUIPMENT)
OR HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_STAFF))
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_NCLUBLIG (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_NCLUBLIG", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELIF (iStaticCurrentPage = 39) //NIGHTCLUB DANCERS
// [HELP_NCLUBDAN]
// Please note: Your dancers will arrive after the Nightclub has been set up.
IF NOT (HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_DJ_CRASH))
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_NCLUBDAN (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_NCLUBDAN", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELIF (iStaticCurrentPage = 40) //DRY ICE
// [HELP_NCLUBICE]
// Please note: Dry Ice will arrive after the Nightclub has been setup.
IF NOT (HAS_PLAYER_COMPLETED_ALL_NIGHTCLUB_SETUP_MISSIONS(PLAYER_ID()))
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_NCLUBICE (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_NCLUBICE", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELSE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBSTY")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBLIG")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBDAN")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_NCLUBICE")
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBSTY")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBLIG")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBDAN")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_NCLUBICE")
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear nightclub help (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
ENDIF
ENDIF
#IF FEATURE_CASINO_HEIST
IF (iStaticCurrentPage >= 42)
AND (iStaticCurrentPage <= 48)
IF NOT HAS_LOCAL_PLAYER_COMPLETE_FULL_ARCADE_SETUP()
CPRINTLN(DEBUG_INTERNET, "<HELP> - display ARC_OPTIONS (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("ARC_OPTIONS", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELSE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "ARC_OPTIONS")
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARC_OPTIONS")
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear nightclub help (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
ENDIF
ENDIF
#ENDIF
#IF FEATURE_TUNER
IF (iStaticCurrentPage = 49) // AUTO SHOP STYLE
// [HELP_ASHOPSTY]
// Please note: Your chosen style will be installed after you complete the Auto Shop setup.
IF NOT HAS_PLAYER_COMPLETED_AUTO_SHOP_SETUP_MISSION(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_ASHOPSTY (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_ASHOPSTY", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELIF (iStaticCurrentPage = 50) // AUTO SHOP TINT
// [HELP_ASHOPTNT]
// Please note: Dry Ice will arrive after the Nightclub has been setup.
IF NOT HAS_PLAYER_COMPLETED_AUTO_SHOP_SETUP_MISSION(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_ASHOPTNT (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_ASHOPTNT", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELSE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_ASHOPSTY")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_ASHOPTNT")
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ENDIF
ENDIF
#ENDIF
#IF FEATURE_DLC_1_2022
IF (iStaticCurrentPage = 7) // CLUBHOUSE CUSTOM BIKE SHOP
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_BKRCLNT (iStaticCurrentPage: ", iStaticCurrentPage, ")")
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_BKRCLNT", DEFAULT, TRUE)
iTutTimer = g_iBrowserTimer + 7500
ELSE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_BKRCLNT")
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ENDIF
ENDIF
#ENDIF
IF (iStaticCurrentPage = 9)
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 8)
INT iClubhouse
iClubhouse = GET_LAST_CLICKED_CLUBHOUSE()
CPRINTLN(DEBUG_INTERNET, "Clubhouse property buy attempt triggered on index: ", iClubhouse)
BUY_MP_PROPERTY_FROM_WEBSITE(iClubhouse)
ELIF (g_iLastSelectedWebIndex = 6 AND iStaticLastPage = 20)
OR (g_iLastSelectedWebIndex = 1 AND iStaticLastPage = 20)
INT iBunker
iBunker = GET_LAST_CLICKED_BUNKER()
IF (g_iLastSelectedWebIndex = 6 AND iStaticLastPage = 20)
CPRINTLN(DEBUG_INTERNET, "Bunker property buy attempt triggered on index: ", iBunker)
ELIF (g_iLastSelectedWebIndex = 1 AND iStaticLastPage = 20)
CPRINTLN(DEBUG_INTERNET, "Bunker property trade attempt triggered on index: ", iBunker)
ELSE
CASSERTLN(DEBUG_INTERNET, "Bunker property replace(?) attempt triggered on index: ", iBunker)
ENDIF
INT iResultSlot
BUY_MP_FACTORY_FROM_WEBSITE(INT_TO_ENUM(FACTORY_ID, iBunker), iResultSlot)
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 27)
OR (g_iLastSelectedWebIndex = 1 AND iStaticLastPage = 27)
INT iHangar
iHangar = GET_LAST_CLICKED_HANGAR()
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 27)
CPRINTLN(DEBUG_INTERNET, "Hangar property buy attempt triggered on index: ", iHangar)
ELIF (g_iLastSelectedWebIndex = 1 AND iStaticLastPage = 27)
CPRINTLN(DEBUG_INTERNET, "Hangar property trade attempt triggered on index: ", iHangar)
ELSE
CASSERTLN(DEBUG_INTERNET, "Hangar property replace(?) attempt triggered on index: ", iHangar)
ENDIF
INT iResultSlot
BUY_MP_HANGAR_FROM_WEBSITE(INT_TO_ENUM(HANGAR_ID, iHangar), iResultSlot)
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 34)
INT iBase
iBase = GET_LAST_CLICKED_DEFUNCT_BASE()
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 34)
CPRINTLN(DEBUG_INTERNET, "defunct base property buy attempt triggered on index: ", iBase)
ELSE
CASSERTLN(DEBUG_INTERNET, "defunct base property replace(?) attempt triggered on index: ", iBase)
ENDIF
INT iResultSlot
BUY_MP_DEFUNCT_BASE_FROM_WEBSITE(INT_TO_ENUM(DEFUNCT_BASE_ID, iBase), iResultSlot)
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 41)
INT iNightclub
iNightclub = GET_LAST_CLICKED_NIGHTCLUB()
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 41)
CPRINTLN(DEBUG_INTERNET, "nightclub property buy attempt triggered on index: ", iNightclub)
ELSE
CASSERTLN(DEBUG_INTERNET, "nightclub property replace(?) attempt triggered on index: ", iNightclub)
ENDIF
INT iResultSlot
BUY_MP_NIGHTCLUB_FROM_WEBSITE(INT_TO_ENUM(NIGHTCLUB_ID, iNightclub), iResultSlot)
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 48)
INT iArcade
iArcade = GET_LAST_CLICKED_ARCADE()
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 48)
CPRINTLN(DEBUG_INTERNET, "Arcade property buy attempt triggered on index: ", iArcade)
ELSE
CASSERTLN(DEBUG_INTERNET, "Arcade property replace(?) attempt triggered on index: ", iArcade)
ENDIF
INT iResultSlot
BUY_MP_ARCADE_FROM_WEBSITE(INT_TO_ENUM(ARCADE_PROPERTY_ID, iArcade), iResultSlot)
ELIF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 55)
INT iAutoShop
iAutoShop = GET_LAST_CLICKED_AUTO_SHOP()
IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 55)
CPRINTLN(DEBUG_INTERNET, "Auto Shop property buy attempt triggered on index: ", iAutoShop)
ELSE
CASSERTLN(DEBUG_INTERNET, "Auto Shop property replace(?) attempt triggered on index: ", iAutoShop)
ENDIF
INT iResultSlot
BUY_MP_AUTO_SHOP_FROM_WEBSITE(INT_TO_ENUM(AUTO_SHOP_PROPERTY_ID, iAutoShop), iResultSlot)
ELSE
CDEBUG3LN(DEBUG_INTERNET, "Potential property buy attempt - g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", iStaticLastPage:", iStaticLastPage)
ENDIF
ENDIF
IF iStaticCurrentPage != iStaticLastPage
bColourPickingMode = TRUE
ENDIF
BREAK
CASE WWW_THEDIAMONDCASINOANDRESORT_COM
IF (iStaticCurrentPage = 4)
CPRINTLN(DEBUG_INTERNET, "CASINO_MEM membership buy attempt triggered")
BUY_MP_CASINO_MEMBERSHIP_FROM_WEBSITE()
ENDIF
IF (iStaticCurrentPage = 15)
INT iCasinoApt
iCasinoApt = ENUM_TO_INT(CASINO_APARTMENT_1) //GET_LAST_CLICKED_CASINO_APT()
// IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 41)
CPRINTLN(DEBUG_INTERNET, "CASINO_APT property buy attempt triggered on index: ", iCasinoApt)
// ELSE
// CASSERTLN(DEBUG_INTERNET, "CASINO_APT property replace(?) attempt triggered on index: ", iCasinoApt)
// ENDIF
INT iResultSlot
iResultSlot = 0
BUY_MP_CASINO_APT_FROM_WEBSITE(INT_TO_ENUM(CASINO_APT_ID, iCasinoApt), iResultSlot)
ENDIF
IF (iStaticCurrentPage = 0)
// [HELP_CASWEB_1]
// Please note: The Diamond Casino & Resort does not support the use of Shark Cards in your region. Only earned GTA$ can be used to purchase additional chips to use inside the casino.
// IF NOT bDisplaying_HELP_CASWEB_1_for_first_time
// AND NOT DOES_PLAYER_OWN_A_CASINO_APARTMENT(PLAYER_ID())
// IF NOT NETWORK_CASINO_CAN_BET_PVC()
// CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_CASWEB_1 (iStaticCurrentPage: ", iStaticCurrentPage, ")")
// bDisplaying_HELP_CASWEB_1_for_first_time = TRUE
// SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_CASWEB_1", DEFAULT, TRUE)
// iTutTimer = g_iBrowserTimer + 7500
// ENDIF
// ENDIF
ELSE
// IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_CASWEB_1")
// IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
// CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
// CLEAR_HELP()
// CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
// ENDIF
// ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_CASWEB_1")
// CPRINTLN(DEBUG_INTERNET, "<HELP> - clear casino help (iStaticCurrentPage: ", iStaticCurrentPage, ")")
// CLEAR_HELP()
// ENDIF
ENDIF
IF (iStaticCurrentPage = 14) //SUMMARY
// [HELP_CASWEB_0]
// Purchasing the suite will add $500 to the daily property utility charge. Each additional expansion will add a further $100.
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_HELP_CASWEB_0_DISPLAYED)
CPRINTLN(DEBUG_INTERNET, "<HELP> - display HELP_CASWEB_0 (iStaticCurrentPage: ", iStaticCurrentPage, ")")
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_HELP_CASWEB_0_DISPLAYED)
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_HELP_CASWEB_0_DISPLAYED, TRUE)
SET_BIT(iPurchaseHelpBS, PURCHASE_HELP_BS_CASWEB_0_FOR_FIRST_TIME)
ENDIF
IF IS_GAMBLING_APPROVED_REGION()
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_CASWEB_0", DEFAULT, TRUE)
ELSE
SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("HELP_CASWEB_0B", DEFAULT, TRUE)
ENDIF
iTutTimer = g_iBrowserTimer + 7500
ENDIF
ELSE
IF ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_CASWEB_0")
OR ARE_STRINGS_EQUAL(g_sBrowserHelpMessage.tl15Tag, "HELP_CASWEB_0B")
IF IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear ", g_sBrowserHelpMessage.tl15Tag, " (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
ENDIF
ELIF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_CASWEB_0")
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HELP_CASWEB_0B")
CPRINTLN(DEBUG_INTERNET, "<HELP> - clear casino help (iStaticCurrentPage: ", iStaticCurrentPage, ")")
CLEAR_HELP()
ENDIF
ENDIF
BREAK
CASE WWW_DYNASTY8REALESTATE_COM
// We are in colour picking mode! (Reduce for websites which actually support this)
bColourPickingMode = FALSE
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 tlLastClickedPropertyName
tlLastClickedPropertyName = GET_PROPERTY_NAME(iLastClickedPropertyIndex)
#ENDIF
// Update page
IF iStaticCurrentPage != iStaticLastPage
PRINTLN("kr_debug: IS_PROPERTY_CUSTOMISABLE = ", IS_PROPERTY_CUSTOMISABLE(iLastClickedPropertyIndex), ", iLastClickedPropertyIndex = ", iLastClickedPropertyIndex, ", name = ", GET_STRING_FROM_TEXT_FILE(tlLastClickedPropertyName))
IF IS_PROPERTY_CUSTOMISABLE(iLastClickedPropertyIndex)
//Check if an interior has been selected before setting the default value
IF NOT bCustomInteriorSelected
iCustomAptVariant = 1
bColourPickingMode = TRUE
CPRINTLN(DEBUG_INTERNET, "SET_PROPERTY_INTERIOR: Setting iStaticCurrentPage:", iStaticCurrentPage,
", iStaticLastPage = ", iStaticLastPage,
" \"", tlLastClickedPropertyName,
"\" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_PROPERTY_INTERIOR: Bypass iStaticCurrentPage:", iStaticCurrentPage,
", iStaticLastPage = ", iStaticLastPage,
" \"", tlLastClickedPropertyName,
"\" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
CPRINTLN(DEBUG_INTERNET," g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " iLastClickedPropertyIndex: ", iLastClickedPropertyIndex)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_PROPERTY_INTERIOR: not setting iStaticCurrentPage:", iStaticCurrentPage,
", iStaticLastPage = ", iStaticLastPage,
" \"", tlLastClickedPropertyName,
"\" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_PROPERTY_INTERIOR: ignoring iStaticCurrentPage:", iStaticCurrentPage,
", iStaticLastPage = ", iStaticLastPage,
", iLastClickedPropertyIndex = ", iLastClickedPropertyIndex,
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
IF (iStaticLastPage = 21 AND NOT IS_PROPERTY_CUSTOMISABLE(iLastClickedPropertyIndex))
OR (iStaticLastPage = 27 AND IS_PROPERTY_CUSTOMISABLE(iLastClickedPropertyIndex))
IF (iStaticCurrentPage = 4)
CPRINTLN(DEBUG_INTERNET, "Property buy attempt triggered on index: ",iLastClickedPropertyIndex)
//try to buy property with index iLastClickedPropertyIndex
IF iLastClickedPropertyIndex > -1
CPRINTLN(DEBUG_INTERNET, "Property buy attempt triggered on index: ",iLastClickedPropertyIndex)
BUY_MP_PROPERTY_FROM_WEBSITE(iLastClickedPropertyIndex)
ENDIF
ENDIF
ENDIF
IF (iStaticLastPage = 21)
OR (iStaticLastPage = 27 AND IS_PROPERTY_CUSTOMISABLE(iLastClickedPropertyIndex))
// Do gps placement for property
IF (iStaticCurrentPage = 5)
IF iLastClickedPropertyIndex > -1
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on property: ", iLastClickedPropertyIndex, " \"", tlLastClickedPropertyName, "\" ", mpProperties[iLastClickedPropertyIndex].vPurchaseLocation)
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(mpProperties[iLastClickedPropertyIndex].vPurchaseLocation)
ELSE
CPRINTLN(DEBUG_INTERNET, "Property gps placement failed on: ", iLastClickedPropertyIndex, " \"", tlLastClickedPropertyName, "\"")
ENDIF
ENDIF
ENDIF
// PURCHASE_D_ERROR
IF (iStaticCurrentPage = 23)
//SlotID 1 = heading
//SlotID 2 = message text
CPRINTLN(DEBUG_INTERNET, "updating property site error content")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT_EMPTY")
END_SCALEFORM_MOVIE_METHOD()
CPRINTLN(DEBUG_INTERNET, "Updating property purchase error page fail reason ", mpPropertySiteFailReason, ".")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("VHSITPURFH")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SWITCH mpPropertySiteFailReason
CASE MPSFR_INSUFFCIENT_RANK
CPRINTLN(DEBUG_INTERNET, "Insufficient rank for property purchase, MPSFR_INSUFFCIENT_RANK")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_IRANK")
BREAK
CASE MPSFR_INSUFFICIENT_CASH
CPRINTLN(DEBUG_INTERNET, "Insufficient cash for property purchase, MPSFR_INSUFFICIENT_CASH")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_ICASH")
BREAK
CASE MPSFR_NOT_UNLOCKED
CPRINTLN(DEBUG_INTERNET, "Property not unlocked for purchase, MPSFR_NOT_UNLOCKED")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_NLOCK")
BREAK
CASE MPSFR_INSUFFCIENT_RANK_PENDING
CPRINTLN(DEBUG_INTERNET, "Insufficient pending rank for property purchase, MPSFR_INSUFFCIENT_RANK_PENDING")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_IRANKC")
BREAK
CASE MPSFR_NOT_SAFE
CPRINTLN(DEBUG_INTERNET, "Not safe for for property purchase, MPSFR_NOT_SAFE")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_SAVTRB")
BREAK
CASE MPSFR_ON_MISSION
CPRINTLN(DEBUG_INTERNET, "Not safe for for property purchase, MPSFR_ON_MISSION")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_MISS")
BREAK
CASE MPSFR_PAID_RESUPPLY
CPRINTLN(DEBUG_INTERNET, "Not safe for for property purchase, MPSFR_PAID_RESUPPLY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_SHIP")
BREAK
CASE MPSFR_HAS_STOCK
CPRINTLN(DEBUG_INTERNET, "Not safe for for property purchase, MPSFR_HAS_STOCK")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("LAR_STOCK")
BREAK
CASE MPSFR_UNSET
CPRINTLN(DEBUG_INTERNET, "Property purchase failed flag unset, MPSFR_UNSET")
BREAK
CASE MPSFR_CANCELED
CPRINTLN(DEBUG_INTERNET, "Cancelled property purchase, MPSFR_CANCELED")
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "Unknown reason for failing property purchase, MPSFR_DEFAULT_", mpPropertySiteFailReason)
BREAK
ENDSWITCH
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
BREAK
CASE WWW_THECHILDRENOFTHEMOUNTAIN_COM
IF iStaticCurrentPage = 1
IF g_iChildrenOfTheMountainStatus = 3
WHILE NOT REGISTER_EMAIL_FROM_CHARACTER_TO_PLAYER(EMAIL_COTM_ADRIAN_3, CT_AMBIENT, BIT_FRANKLIN, CHAR_BLANK_ENTRY, 1000, 5000, DEFAULT, CID_BLANK)
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sending email with 'actuality' password...")
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sent email with 'actuality' password")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(4)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
g_iChildrenOfTheMountainStatus = 4
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: SET_DATA_SLOT set to 4")
ENDIF
ELIF iStaticCurrentPage = 14
IF g_iChildrenOfTheMountainStatus = 5
WHILE NOT REGISTER_EMAIL_FROM_CHARACTER_TO_PLAYER(EMAIL_COTM_ADRIAN_4, CT_AMBIENT, BIT_FRANKLIN, CHAR_BLANK_ENTRY, 1000, 5000, DEFAULT, CID_BLANK)
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sending final email...")
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sent final email")
SET_PED_COMP_ITEM_ACQUIRED_SP(PLAYER_ONE, COMP_TYPE_TORSO, TORSO_P1_T_SHIRT_12, TRUE)
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Unlocked t-shirt")
g_iChildrenOfTheMountainStatus = 6
ENDIF
ENDIF
BREAK
ENDSWITCH
ELSE
IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
CPRINTLN(DEBUG_INTERNET, "<COLPICK> invalidated vehicle colour from ", g_eLastBuyableVehicleColourSelected, " to BCV_NO_COLOUR.")
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
ENDIF
IF g_bLastBuyableVehicleArmourSelected != FALSE
CPRINTLN(DEBUG_INTERNET, "<COLPICK> invalidated vehicle armour from ", GET_STRING_FROM_BOOL(g_bLastBuyableVehicleArmourSelected), " to FALSE.")
g_bLastBuyableVehicleArmourSelected = FALSE
ENDIF
// Transitioning to another site
SWITCH eStaticCurrentSite
CASE WWW_THECHILDRENOFTHEMOUNTAIN_COM
IF iStaticCurrentPage = 1
AND g_iChildrenOfTheMountainStatus < 1
WHILE NOT REGISTER_EMAIL_FROM_CHARACTER_TO_PLAYER(EMAIL_COTM_ADRIAN_2, CT_AMBIENT, BIT_FRANKLIN, CHAR_BLANK_ENTRY, 1000, 5000, DEFAULT, CID_BLANK)
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sending email with 'futility' password...")
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sent email with 'futility' password")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
g_iChildrenOfTheMountainStatus = 1
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: SET_DATA_SLOT set to 1")
ENDIF
BREAK
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_PANDMCYCLES_COM
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
CASE WWW_ARENAWAR_TV
// We are in colour picking mode! (Reduce for websites which actually support this)
bColourPickingMode = FALSE
SITE_BUYABLE_VEHICLE sbv
sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage)
IF sbv != UNSET_BUYABLE_VEHICLE
bColourPickingMode = TRUE
IF SET_VEHICLE_DEFAULT_COLOUR(sbv, eStaticCurrentSite, bColourPickingMode, g_eLastBuyableVehicleColourSelected, g_bLastBuyableVehicleArmourSelected)
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: Setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ELSE
CPRINTLN(DEBUG_INTERNET, "SET_VEHICLE_DEFAULT_COLOUR: not setting \"",
GET_LABEL_BUYABLE_VEHICLE(sbv),
"\" default colour = ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected),
", bColourPickingMode = ", GET_STRING_FROM_BOOL(bColourPickingMode),
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
bUpdate = TRUE
ELIF eStaticLastSite != eStaticCurrentSite
IF eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM
bUpdate = TRUE
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS EXEC: Static site with id ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), " -> ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " : ",iStaticLastPage ," -> ", iStaticCurrentPage ," detected ")
ENDIF
ELIF eStaticLastSite != eStaticCurrentSite
IF eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM
bUpdate = TRUE
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS BIKER: Static site with id ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), " -> ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " : ",iStaticLastPage ," -> ", iStaticCurrentPage ," detected ")
ENDIF
ENDIF
IF bUpdate
g_bPropertyRefreshTrigger = TRUE
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHANGE_TRIGGERS: Static site with id ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), " -> ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), " : ",iStaticLastPage ," -> ", iStaticCurrentPage ," detected ")
ENDIF
iStaticHistory = kbHistory
// OLD STATIC TRIGGERS - these should be converted to the above format
// These static site triggers should perhaps get moved somewhere else sometime
SWITCH eStaticCurrentSite
CASE WWW_THEREALITYMILL_COM
IF eStaticLastSite = WWW_THEREALITYMILL_COM
AND iStaticLastPage = 1
AND iStaticCurrentPage = 15
enumCharacterList eChar
eChar = GET_CURRENT_PLAYER_PED_ENUM()
SWITCH eChar
CASE CHAR_MICHAEL
IF NOT g_savedGlobals.sAmbient.bWebsiteSubscription[0]
IF GET_TOTAL_CASH(CHAR_MICHAEL) < 500
GO_TO_WEBSITE("WWW_THEREALITYMILL_COM_S_PURCHASE_D_ERROR")
ELSE
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_MICHAEL, BAA_DEBIT, BAAC_REALITY_MILL, 500)
g_savedGlobals.sAmbient.bWebsiteSubscription[0] = TRUE
ENDIF
ENDIF
BREAK
CASE CHAR_FRANKLIN
IF NOT g_savedGlobals.sAmbient.bWebsiteSubscription[1]
IF GET_TOTAL_CASH(CHAR_FRANKLIN) < 500
GO_TO_WEBSITE("WWW_THEREALITYMILL_COM_S_PURCHASE_D_ERROR")
ELSE
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_FRANKLIN, BAA_DEBIT, BAAC_REALITY_MILL, 500)
g_savedGlobals.sAmbient.bWebsiteSubscription[1] = TRUE
ENDIF
ENDIF
BREAK
CASE CHAR_TREVOR
IF NOT g_savedGlobals.sAmbient.bWebsiteSubscription[2]
IF GET_TOTAL_CASH(CHAR_TREVOR) < 500
GO_TO_WEBSITE("WWW_THEREALITYMILL_COM_S_PURCHASE_D_ERROR")
ELSE
// Debit account by $500
DO_BANK_ACCOUNT_ACTION(BANK_ACCOUNT_TREVOR, BAA_DEBIT, BAAC_REALITY_MILL, 500)
g_savedGlobals.sAmbient.bWebsiteSubscription[2] = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE WWW_LENNYAVERY_D_REALTY_COM
IF bPrimedAveryGps
IF !g_bInMultiplayer
IF iStaticCurrentPage = 5
bPrimedAveryGps = FALSE
SWITCH iStaticAveryPrevious
//House 1
CASE 6
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1569.5250, 444.0400, 108.1350>>)
BREAK
//House 2
CASE 7
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1352.8800, 613.7700, 134.3400>>)
BREAK
//House 3
CASE 8
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1469.2000, -5.3300, 53.1050>>)
BREAK
//House 4
CASE 9
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1632.8329, -413.8573, 39.9441>>)
BREAK
//House 5
CASE 10
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1774.2250, -430.0300, 44.0400>>)
BREAK
//House 6
CASE 11
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-380.7500, 427.7900, 110.9700>>)
BREAK
//House 7
CASE 12
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-163.2826, 989.2324, 234.0641>>)
BREAK
//House 8
CASE 13
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-492.2117, 585.2451, 122.0000>>)
BREAK
//House 9
CASE 14
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-818.8400, 434.7400, 88.1500>>)
BREAK
//House 10
CASE 15
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-910.1000, 784.3440, 184.4710>>)
BREAK
//House 11
CASE 16
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-825.9200, -26.6700, 38.6800>>)
BREAK
//House 12
CASE 17
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1103.5000, 587.2900, 102.8650>>)
BREAK
//House 13
CASE 18
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1253.2550, 496.6150, 93.8200>>)
BREAK
//House 14
CASE 19
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<166.5500, 487.3100, 142.1200>>)
BREAK
//House 15
CASE 20
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(<<-1163.8590, 319.1900, 67.9600>>)
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "appInternet: Avery property site location set failed. Pass this bug to Default Levels.")
BREAK
ENDSWITCH
ENDIF
ENDIF
ELSE
bPrimedAveryGps = TRUE
ENDIF
iStaticAveryPrevious = iStaticCurrentPage
BREAK
ENDSWITCH
eStaticLastSite = eStaticCurrentSite
iStaticLastPage = iStaticCurrentPage
ENDPROC
PROC PROGRESS_FIRST_TIME_TUTORIAL()
CDEBUG3LN(DEBUG_INTERNET, "PROGRESS_FIRST_TIME_TUTORIAL(\"", g_sBrowserHelpMessage.tl15Tag, "\"), iTutstage:", iTutstage, ", iTutTimer:", iTutTimer, ", g_iBrowserTimer:", g_iBrowserTimer, " //", TO_FLOAT(g_iBrowserTimer-iTutTimer)/1000.0)
IF iTutstage = 0
PAUSE_FLOW_HELP_QUEUE(TRUE)
iTutTimer = g_iBrowserTimer + 7500
IF NOT IS_PLAYER_DEAD(GET_PLAYER_INDEX())
g_iBrowserHealthDelta = GET_ENTITY_HEALTH(GET_PLAYER_PED(GET_PLAYER_INDEX()))
ENDIF
++iTutstage
ENDIF
IF iTutstage != 0
SWITCH iTutstage
CASE 1
g_sBrowserHelpMessage.bShow = TRUE
g_sBrowserHelpMessage.tl15Tag = "BROWTUT1"
g_sBrowserHelpMessage.eTextType = BHMT_STRING
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) // PC specific mouse help
g_sBrowserHelpMessage.tl15Tag = "BROWTUT1_KM"
ENDIF
BREAK
CASE 2
g_sBrowserHelpMessage.tl15Tag = "BROWTUT2"
g_sBrowserHelpMessage.eTextType = BHMT_STRING
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) // PC specific mouse help
g_sBrowserHelpMessage.tl15Tag = "BROWTUT2_KM"
ENDIF
BREAK
CASE 3
g_sBrowserHelpMessage.tl15Tag = "BROWTUT3"
g_sBrowserHelpMessage.eTextType = BHMT_STRING
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) // PC specific mouse help
g_sBrowserHelpMessage.tl15Tag = "BROWTUT3_KM"
ENDIF
BREAK
CASE 4
g_sBrowserHelpMessage.tl15Tag = "BROWTUT4"
g_sBrowserHelpMessage.eTextType = BHMT_STRING
BREAK
CASE 5
g_sBrowserHelpMessage.tl15Tag = "BROWTUT5"
g_sBrowserHelpMessage.eTextType = BHMT_STRING
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) // PC specific mouse help
g_sBrowserHelpMessage.tl15Tag = "BROWTUT5_KM"
ENDIF
BREAK
#IF IS_NEXTGEN_BUILD
CASE 6
IF IS_PLAYSTATION_PLATFORM()
g_sBrowserHelpMessage.tl15Tag = "BROWTUT1a" //The Track Pad may also be used to move the pointer."
g_sBrowserHelpMessage.eTextType = BHMT_STRING
ELSE
iTutstage++
ENDIF
BREAK
#ENDIF
DEFAULT
//tutorial over
g_sBrowserHelpMessage.bShow = FALSE
iTutstage = 0
//g_bBrowserUserMode = TRUE//return player control
g_savedGlobals.sFinanceData.bBrowserTutorialSeen = TRUE
PAUSE_FLOW_HELP_QUEUE(FALSE)
BREAK
ENDSWITCH
IF iTutTimer < g_iBrowserTimer
iTutTimer = g_iBrowserTimer + 7500
++iTutstage
ENDIF
ENDIF
ENDPROC
BOOL bTexitSeenUp = FALSE
PROC SORT_NUMERICAL_INT_ARRAY(INT &intArray[],INT iSizeOfArray)
INT i,j, tempInt
REPEAT iSizeOfArray i
FOR j=i+1 TO iSizeOfArray-1
IF intArray[j] < intArray[i]
tempInt = intArray[j]
intArray[j] = intArray[i]
intArray[i] = tempInt
ENDIF
ENDFOR
ENDREPEAT
ENDPROC
PROC RUN_OSK_FOR_ORG_NAME()
BOOL bOfficeWebsite = FALSE, bIsMCClub = FALSE
TEXT_LABEL_63 tlOfficeName = ""
IF eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM
bOfficeWebsite = TRUE // B* 2789770
bIsMCClub = FALSE
tlOfficeName = g_sOfficeDataStruct.tl63OldOrgName
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Runing keyboard for office \"", tlOfficeName, "\" ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ELIF eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM
bOfficeWebsite = FALSE
bIsMCClub = TRUE
tlOfficeName = g_sClubhouseDataStruct.tl63OldSignage
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Runing keyboard for clubhouse \"", tlOfficeName, "\" ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite))
ENDIF
IF GB_MANAGE_NAMING_GANG(GBKeyBoardData, TRUE, bOfficeWebsite, tlOfficeName, bIsMCClub, FALSE)
TEXT_LABEL_63 tl63OrganisationName = GET_ONSCREEN_KEYBOARD_RESULT()
IF NOT IS_STRING_NULL_OR_EMPTY(tl63OrganisationName)
IF bOfficeWebsite
g_sOfficeDataStruct.tl63NewOrgName = tl63OrganisationName
// Player doesn't own Office
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) = 0
g_sOfficeDataStruct.iOfficeNameID = 0
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Office not purchased, id = ", g_sOfficeDataStruct.iOfficeNameID)
// Player already has this name
ELIF GET_HASH_KEY(g_sOfficeDataStruct.tl63NewOrgName) = GET_HASH_KEY(g_sOfficeDataStruct.tl63OldOrgName)
g_sOfficeDataStruct.iOfficeNameID = GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_NAME_ID)
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] player already has this name, id = ", g_sOfficeDataStruct.iOfficeNameID)
// Stats are out of sync!
// ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_NAME_ID) != GET_PACKED_STAT_INT(PACKED_MP_CHAR_Office_NAME_ID)
// g_sOfficeDataStruct.iOfficeNameID = 0
// CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Office stats out of sync, id = ", g_sOfficeDataStruct.iOfficeNameID, ", packed=", GET_PACKED_STAT_INT(PACKED_MP_CHAR_Office_NAME_ID), ", profile=", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_NAME_ID))
// Change id
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_NAME_ID) != 1
g_sOfficeDataStruct.iOfficeNameID = 1
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] changing name, id = ", g_sOfficeDataStruct.iOfficeNameID)
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_NAME_ID) != 2
g_sOfficeDataStruct.iOfficeNameID = 2
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] changing name, id = ", g_sOfficeDataStruct.iOfficeNameID)
ELSE
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] missing case, id = ", g_sOfficeDataStruct.iOfficeNameID)
ENDIF
POPULATE_OWNED_EXEC_OFFICE(mov)
ELIF bIsMCClub
g_sClubhouseDataStruct.tl63NewSignage = tl63OrganisationName
// Player doesn't own Clubhouse
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE) = 0
g_sClubhouseDataStruct.iClubhouseNameID = 0
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Clubhouse not purchased, id = ", g_sClubhouseDataStruct.iClubhouseNameID)
// Player already has this name
ELIF GET_HASH_KEY(g_sClubhouseDataStruct.tl63NewSignage) = GET_HASH_KEY(g_sClubhouseDataStruct.tl63OldSignage)
g_sClubhouseDataStruct.iClubhouseNameID = GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLBHOSE_NAME_ID)
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] player already has this name, id = ", g_sClubhouseDataStruct.iClubhouseNameID)
// Stats are out of sync!
// ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLBHOSE_NAME_ID) != GET_PACKED_STAT_INT(PACKED_MP_CHAR_CLUBHOUSE_NAME_ID)
// g_sClubhouseDataStruct.iClubhouseNameID = 0
// CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] CLUBHOUSE stats out of sync, id = ", g_sClubhouseDataStruct.iClubhouseNameID, ", packed=", GET_PACKED_STAT_INT(PACKED_MP_CHAR_CLUBHOUSE_NAME_ID), ", profile=", GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLBHOSE_NAME_ID))
// Change id
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLBHOSE_NAME_ID) != 1
g_sClubhouseDataStruct.iClubhouseNameID = 1
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] changing name, id = ", g_sClubhouseDataStruct.iClubhouseNameID)
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLBHOSE_NAME_ID) != 2
g_sClubhouseDataStruct.iClubhouseNameID = 2
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] changing name, id = ", g_sClubhouseDataStruct.iClubhouseNameID)
ELSE
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] missing case, id = ", g_sClubhouseDataStruct.iClubhouseNameID)
ENDIF
POPULATE_OWNED_BIKER_CLUBHOUSE(mov)
ENDIF
CPRINTLN(DEBUG_INTERNET, "[MGR_EXEC_WEB] Result = ", tl63OrganisationName)
ENDIF
GBKeyBoardData.bCanceled = FALSE
bRunningOrgNameKeyboard = FALSE
BROWSER_CURSOR_LOADING(TRUE)
ENDIF
ENDPROC
PROC RUN_OSK_FOR_YACHT(TEXT_LABEL_63 tl63Name)
WHILE NOT RUN_ON_SCREEN_KEYBOARD(KeyBoardData.eStatus, //OSK_STATUS &oskStatus,
KeyBoardData.iProfanityToken, //INT &iProfanityToken,
KeyBoardData.iCurrentStatus, //INT &iCurrentstatus,
FALSE, //BOOL bIsObjectiveText = FALSE,
FALSE, //BOOL bMissionName = TRUE,
tl63Name, //STRING stToChange = NULL,
DEFAULT, //BOOL bSMSMessage = FALSE,
DEFAULT, //INT iMissObjectiveType = 0,
DEFAULT, //BOOL bSMSMessageShort = FALSE,
DEFAULT, //BOOL bMissionTags = FALSE,
DEFAULT, //STRING stToChange2 = NULL,
DEFAULT, //BOOL bUsingLaptopEmail = FALSE,
DEFAULT, //BOOL bRenameOutfit = FALSE,
DEFAULT, //BOOL bCutsceneName = FALSE,
DEFAULT, //BOOL bCustomTeamName = FALSE,
DEFAULT, //BOOL bCustomRoleName = FALSE,
DEFAULT, //INT iCurrentSMS = 0,
TRUE, //BOOL bCustomYachtName = FALSE)
DEFAULT, //BOOL bCustomOrganization = FALSE)
DEFAULT, //BOOL bTooShort = FALSE)
DEFAULT, //BOOL bCanceled = FALSE)
DEFAULT, //BOOL bInUse = FALSE)
TRUE) //BOOL bUGC = FALSE)
RENDER_BROWSER()
IF KeyBoardData.eStatus = OSK_CANCELLED
OR IS_PED_INJURED(PLAYER_PED_ID())
OR NOT DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
IF KeyBoardData.eStatus = OSK_CANCELLED
CPRINTLN(DEBUG_INTERNET, "<COLPICK> ...cancelled keyboard!")
ELIF IS_PED_INJURED(PLAYER_PED_ID())
CPRINTLN(DEBUG_INTERNET, "<COLPICK> ...injured keyboard!")
ELIF NOT DO_CHECK_TO_TERMINATE_WHILE_LOOPS()
CPRINTLN(DEBUG_INTERNET, "<COLPICK> ...terminated keyboard!")
ELSE
CPRINTLN(DEBUG_INTERNET, "<COLPICK> ...UNKNOWN keyboard!")
ENDIF
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
EXIT
ENDIF
WAIT(0)
ENDWHILE
ENDPROC
PROC PASS_INPUTS_TO_BROWSER(SCALEFORM_INDEX movin)
IF g_iBrowserNoInputTimer != -1
IF g_iBrowserNoInputTimer > g_iBrowserTimer
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Browser input delayed")
EXIT
ELSE
g_iBrowserNoInputTimer = -1
ENDIF
ENDIF
IF IS_SYSTEM_UI_BEING_DISPLAYED()
EXIT
ENDIF
IF IS_PAUSE_MENU_ACTIVE()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: IS_PAUSE_MENU_ACTIVE")
EXIT
ENDIF
IF IS_SCREEN_FADED_OUT()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: IS_SCREEN_FADED_OUT")
EXIT
ELIF IS_SCREEN_FADING_IN()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: IS_SCREEN_FADING_IN")
EXIT
ELIF IS_SCREEN_FADED_OUT()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: IS_SCREEN_FADED_OUT")
EXIT
ENDIF
IF g_bBrowserGoToStoreTrigger
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: g_bBrowserGoToStoreTrigger()")
IF g_bBrowserNagScreenState
OR g_bBrowserVoucherNagScreenState
IF g_bBrowserNagScreenState
IF g_bBrowserVoucherNagScreenState
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: g_bBrowserNagScreenState AND g_bBrowserVoucherNagScreenState")
ELSE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: g_bBrowserNagScreenState")
ENDIF
ELSE
IF g_bBrowserVoucherNagScreenState
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: g_bBrowserVoucherNagScreenState")
ELSE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: UNKNOWN NAG SCREEN STATE")
ENDIF
ENDIF
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
BROWSER_SET_CURSOR_STATE("ARROW")
PREP_BROWSER_BUTTONS(TRUE)
//Store the current page as we need to open it again when this comes back from the store
//1621761
//lastSiteURL
IF g_bBrowserNagScreenState
IF NOT IS_STRING_NULL_OR_EMPTY(lastSiteURL)
//plug it into the globals for the relaunch on coming back from the shop
IF g_bInMultiplayer // these only work in MP
SET_TRANSITION_SESSION_RESTORE_SHOP_STATE_ON_RESPAWN()
SET_TRANSITION_SESSION_SHOP_STATE_INITIALISED() // dont wait for initialisation on return
ENDIF
ENDIF
SET_LAST_VIEWED_SHOP_ITEM(g_iBrowserGoToStoreItemHash, g_iBrowserGoToStoreItemPrice, 0)
OPEN_COMMERCE_STORE("", "", SPL_PHONE)
g_bBrowserNagScreenState = FALSE
WHILE IS_COMMERCE_STORE_OPEN()
RENDER_BROWSER()
WAIT(0)
ENDWHILE
ENDIF
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
ELIF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: canceled, bailing")
g_sTransitionSessionData.sEndReserve.stMPBrowserFromShopSite = ""
BROWSER_SET_CURSOR_STATE("ARROW")
PLAY_SOUND_FRONTEND(-1, "BACK","HUD_FRONTEND_DEFAULT_SOUNDSET")
g_bBrowserNagScreenState = FALSE
g_bBrowserVoucherNagScreenState = FALSE
g_bBrowserGoToStoreTrigger = FALSE
PREP_BROWSER_BUTTONS(TRUE)
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = null
g_iBrowserNoInputTimer = g_iBrowserTimer + 500
ENDIF
ENDIF
EXIT
ENDIF
BAWSAQ_TRADERS bttarget
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
bttarget = BS_TR_MIKE
BREAK
CASE CHAR_TREVOR
bttarget = BS_TR_TREVOR
BREAK
CASE CHAR_FRANKLIN
bttarget = BS_TR_FRANKLIN
BREAK
ENDSWITCH
IF NOT IS_BROWSER_OPEN()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: bail due to browser not visible")
EXIT
ENDIF
// If there has been keyboard text this frame then the user is using the PC keyboard to type so ignore all other
// inputs has they can conflict.
IF PASS_KEYBOARD_INPUT_TO_SCALEFORM(movin)
OR b_Creating_Email_Message_Body_from_OSK
OR b_Creating_Email_Message_Subject_from_OSK
EXIT
ENDIF
//function SET_ANALOG_STICK_INPUT(isLeftStick:Boolean, mouseX:Number, mouseY:Number):Void // ANALOG STICKS
//GET_POSITION_OF_ANALOGUE_STICKS(PAD1,iPadLeftX,iPadLeftY,iPadRightX,iPadRightY)
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS_UNBOUND( iPadLeftX, iPadLeftY, iPadRightX, iPadRightY, TRUE)
// iPadLeftX = GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_FRONTEND_AXIS_X) -128
// iPadLeftY = GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_FRONTEND_AXIS_Y)-128
// iPadRightX = GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_FRONTEND_RIGHT_AXIS_X)-128
// iPadRightY = GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_FRONTEND_RIGHT_AXIS_Y)-128
//deadzone
IF ((iPadLeftX < 10) AND (iPadLeftX > -10))
iPadLeftX = 0
ENDIF
IF ((iPadLeftY < 10) AND (iPadLeftY > -10))
iPadLeftY = 0
ENDIF
IF ((iPadRightX < 10) AND (iPadRightX > -10))
iPadRightX = 0
ENDIF
IF ((iPadRightY < 10) AND (iPadRightY > -10))
iPadRightY = 0
ENDIF
// CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Browserblah : ", iPadLeftX, " ", iPadLeftY, " ",iPadRightX, " ", iPadRightY)
FLOAT delta = 1.0 +@ g_fWebCursorSensitivity
IF NOT bTVOn // Disabling the cursor and scrolling controls whilst playing video.
// Mouse cursor control
IF IS_USING_CURSOR(FRONTEND_CONTROL)
iCursorX = GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X )
iCursorY = GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y )
IF iCursorX != iCursorXLast
OR iCursorY != iCursorYLast
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(iCursorX)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(iCursorY)
END_SCALEFORM_MOVIE_METHOD()
iCursorXLast = iCursorX
iCursorYLast = iCursorY
ENDIF
ENDIF
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
// Scroll up and down using cursor keys, as in real world browsers.
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
fMouseWheelScrollSpeed = 200
ELIF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
fMouseWheelScrollSpeed = -200
ELIF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
// Mouse scroll wheel down: If not already scrolling down set to 200, otherwise increase speed. (Speed decays with smoothing below)
IF fMouseWheelScrollSpeed <= 0.0
fMouseWheelScrollSpeed = 200.0
ELSE
fMouseWheelScrollSpeed += 200.0
IF fMouseWheelScrollSpeed >= 1000.0
fMouseWheelScrollSpeed = 1000.0
ENDIF
ENDIF
ELIF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
// Mouse scroll wheel up: If not already scrolling up set to -200, otherwise increase speed. (Speed decays with smoothing below)
IF fMouseWheelScrollSpeed >= 0.0
fMouseWheelScrollSpeed = -200.0
ELSE
fMouseWheelScrollSpeed -= 200.0
IF fMouseWheelScrollSpeed <= -1000.0
fMouseWheelScrollSpeed = -1000.0
ENDIF
ENDIF
ENDIF
ELSE
// Gamepad control
IF (NOT (iPadLeftXLast = iPadLeftX)) OR (NOT (iPadLeftYLast = iPadLeftY))
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(1.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(iPadLeftX)) * delta)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(iPadLeftY)) * delta)
END_SCALEFORM_MOVIE_METHOD()
iPadLeftXLast = iPadLeftX
iPadLeftYLast = iPadLeftY
ENDIF
IF (NOT (iPadRightXLast = iPadRightX)) OR (NOT (iPadRightYLast = iPadRightY))
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(iPadRightX)) * delta)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(iPadRightY)) * delta)
END_SCALEFORM_MOVIE_METHOD()
iPadRightXLast = iPadRightX
iPadRightYLast = iPadRightY
fMouseWheelScrollSpeed = 0.0
ENDIF
ENDIF
// Mouse wheel scroll
IF fMouseWheelScrollSpeed != 0.0
// Decay scroll speed with smoothing
fMouseWheelScrollSpeed *= 0.9
IF fMouseWheelScrollSpeed < 5.0
AND fMouseWheelScrollSpeed > -5.0
fMouseWheelScrollSpeed = 0.0
ENDIF
// Apply scroll speed
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fMouseWheelScrollSpeed)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LB)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LB)
IF !bRunningOrgNameKeyboard
IF bLeftShoulder = FALSE
bLeftShoulder = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending an LEFT BUMPER input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_LEFTSHOULDER1)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDIF
ELSE
bLeftShoulder = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LT)
IF bLeftShoulder2 = FALSE
bLeftShoulder2 = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a LEFT TRIGGER input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_LEFTSHOULDER2)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bLeftShoulder2 = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RB)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RB)
IF !bRunningOrgNameKeyboard
IF bRightShoulder = FALSE
bRightShoulder = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a RIGHT BUMPER input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_RIGHTSHOULDER1)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDIF
ELSE
bRightShoulder = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RT)
IF bRightShoulder2 = FALSE
bRightShoulder2 = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a RIGHT TRIGGER input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_RIGHTSHOULDER2)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bRightShoulder2 = FALSE
ENDIF
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_RT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RT)
bRightShoulder2 = FALSE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a RIGHT TRIGGER release event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_RELEASE_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_RIGHTSHOULDER2)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_LT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LT)
bLeftShoulder2 = FALSE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a LEFT TRIGGER release event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_RELEASE_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_LEFTSHOULDER2)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
IF bDPadUp = FALSE
bDPadUp = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a UP input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_UP)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bDPadUp = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
IF bDPadDown = FALSE
bDPadDown = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a DOWN input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_DOWN)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bDPadDown = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_LEFT)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
IF bDPadLeft = FALSE
bDPadLeft = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a LEFT input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_LEFT)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bDPadLeft = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_RIGHT)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
IF bDPadRight = FALSE
bDPadRight = TRUE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a RIGHT input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_RIGHT)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bDPadRight = FALSE
ENDIF
ELSE
IF IS_CONTROL_RELEASED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
OR IS_DISABLED_CONTROL_RELEASED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
IF bMouseAccept = TRUE
bMouseAccept = FALSE
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a INPUT_CURSOR_ACCEPT input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_RELEASE_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_ACCEPT)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bMouseAccept = TRUE
ENDIF
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
IF bPadSelect = FALSE
bPadSelect = TRUE
//CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(movin,"SET_INPUT_EVENT",TO_FLOAT(ENUM_TO_INT(SELECT)))
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending a SELECT input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_SELECT)))
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ELSE
bPadSelect = FALSE
ENDIF
ENDIF
BAWSAQ_COMPANIES coindex
FLOAT fBalance = TO_FLOAT(g_BankAccounts[bttarget].iBalance)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR (IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
IF bPadCross = FALSE
bPadCross = TRUE
IF bTVOn
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Website click IGNORED as video is playing back.")
EXIT
ENDIF
// Don't process the accept if the keyboard is up and you're using keyboard and mouse.
IF GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_KEYBOARD_FLAG_INDEX) !=0
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Website keyboard frontend accept IGNORED as keyboard is up")
EXIT
ENDIF
ENDIF
ENDIF
//CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(movin,"SET_INPUT_EVENT",TO_FLOAT(ENUM_TO_INT(CROSS)))
CDEBUG3LN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: App internet sending an ACCEPT input event to scaleform on frame ", GET_FRAME_COUNT())
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_CROSS)))
ELSE
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_LEFT_CLICK)))
ENDIF
END_SCALEFORM_MOVIE_METHOD()
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "GET_CURRENT_SELECTION")
fudp = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Appinternet waiting for site response on getting current selection...")
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(fudp)
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
fudret = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(fudp)
INT i = fudret
g_bLastSelectedWebIndexInvalid = TRUE
IF i > -1
g_bLastSelectedWebIndexInvalid = FALSE
g_iLastSelectedWebIndex = i
bClickDetector = TRUE
IF EmailState = eCOMPOSING
OR EmailState = eNEUTRAL_BROWSING
OR EmailState = eSTATUS_UPDATE
b_EmailClickDetected = TRUE
ENDIF
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Valid web entity index on click detected [i = ", i, "]")
// ELSE
// thats where GET_CURRENT_SELECTION == -2 will come in handy...
// that means you're on the toolbar. Then you call
// GET_CURRENT_OBJECT_TYPE and if it's 2 its the toolbar back button
ENDIF
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Browser on button click GET_CURRENT_SELECTION returned: ", i)
IF g_eWebSiteIndexFeedback = WWW_DYNASTY8REALESTATE_COM AND g_iWebPageIndexFeedback = 2
IF i > -1
AND i < COUNT_OF(g_iPropertyIDStoredInWebSlot)
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Updating last clicked property to ", i)
iLastClickedPropertyIndex = g_iPropertyIDStoredInWebSlot[i]
ENDIF
ENDIF
// Colour selection for the Legendary Motorsport and Southern San Andreas Super Autos!
IF bColourPickingMode
IF !g_bLastSelectedWebIndexInvalid
IF eStaticCurrentSite = WWW_LEGENDARYMOTORSPORT_NET
OR eStaticCurrentSite = WWW_ELITASTRAVEL_COM
OR eStaticCurrentSite = WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
OR eStaticCurrentSite = WWW_DOCKTEASE_COM
OR eStaticCurrentSite = WWW_PANDMCYCLES_COM
OR eStaticCurrentSite = WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
OR eStaticCurrentSite = WWW_BENNYSORIGINALMOTORWORKS_COM
OR eStaticCurrentSite = WWW_ARENAWAR_TV
SITE_BUYABLE_VEHICLE sbv = GET_VEHICLE_FROM_SITE_AND_PAGE_ID(eStaticCurrentSite, iStaticCurrentPage)
#IF NOT IS_NEXTGEN_BUILD
UNUSED_PARAMETER(sbv)
#ENDIF
IF IS_INDEX_VALID_FOR_VEH_COLOUR(eStaticCurrentSite, g_iLastSelectedWebIndex)
BOOL bBuyNow
IF sbv = BV_NG_MARSHALL
PICK_VEHICLE_COUNTRY_FROM_BUTTON_INT(g_iLastSelectedWebIndex, bBuyNow)
ELIF IS_SBV_A_VEHICLE_WITH_ARMOUR_OPTION(sbv)
PICK_VEHICLE_COLOUR_AND_ARMOUR_FROM_BUTTON_INT(eStaticCurrentSite, g_iLastSelectedWebIndex, bBuyNow)
ELIF (sbv = BV_DLC_BIG_YACHT)
// PICK_YACHT_MOD_FROM_BUTTON_INT(g_iLastSelectedWebIndex, iStaticCurrentPage, bBuyNow)
IF iStaticCurrentPage = 24
AND g_iLastSelectedWebIndex = 0
TEXT_LABEL_63 tl63YachtName = ""
IF IS_STRING_NULL_OR_EMPTY(g_sYachtDataStruct.tl63NewName)
tl63YachtName = g_sYachtDataStruct.tl63Name
CPRINTLN(DEBUG_INTERNET, "<COLPICK> start keyboard tl63Name \"", tl63YachtName, "\" (tl63NewName:null)...")
ELSE
tl63YachtName = g_sYachtDataStruct.tl63NewName
CPRINTLN(DEBUG_INTERNET, "<COLPICK> start keyboard tl63NewName \"", tl63YachtName, "\" (tl63Name:\"", g_sYachtDataStruct.tl63Name, "\")...")
ENDIF
RUN_OSK_FOR_YACHT(tl63YachtName)
g_sYachtDataStruct.tl63NewName = GET_ONSCREEN_KEYBOARD_RESULT()
TEXT_LABEL_63 tl63YachtNameFromStat = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_YACHT_NAME, MP_STAT_YACHT_NAME2)
// Player doesn't own yacht
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_MODEL_0) = 0
g_sYachtDataStruct.iYachtNameID = 0
CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] yacht not purchased, id = ", g_sYachtDataStruct.iYachtNameID)
// Player already has this name
ELIF GET_HASH_KEY(g_sYachtDataStruct.tl63NewName) = GET_HASH_KEY(tl63YachtNameFromStat)
g_sYachtDataStruct.iYachtNameID = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_NAME_ID)
CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] player already has this name, id = ", g_sYachtDataStruct.iYachtNameID)
// Stats are out of sync!
// ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID) != GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_NAME_ID)
// g_sYachtDataStruct.iYachtNameID = 0
// CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] yacht stats out of sync, id = ", g_sYachtDataStruct.iYachtNameID, ", packed=", GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_NAME_ID), ", profile=", GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID))
// Change id
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID) != 1
g_sYachtDataStruct.iYachtNameID = 1
CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] changing name, id = ", g_sYachtDataStruct.iYachtNameID)
ELIF GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID) != 2
g_sYachtDataStruct.iYachtNameID = 2
CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] changing name, id = ", g_sYachtDataStruct.iYachtNameID)
ELSE
CPRINTLN(DEBUG_INTERNET, "[KR_DEBUG] missing case, id = ", g_sYachtDataStruct.iYachtNameID)
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_YACHT_DATA(mov, 18, IS_BIG_ASS_VEHICLE_BS_SET(GET_BIGASS_VEHICLE_INDICE_BIT_FROM_ENUM(BV_DLC_BIG_YACHT)),
g_sYachtDataStruct, GET_BUYABLE_VEHICLE_PRICE_MP(eStaticCurrentSite, sbv, FALSE), "KEYBOARD")
CPRINTLN(DEBUG_INTERNET, "<COLPICK> ...end keyboard \"", g_sYachtDataStruct.tl63Name, "\" -> \"", g_sYachtDataStruct.tl63NewName, "\"")
// g_sYachtDataStruct.tl63Name = g_sYachtDataStruct.tl63NewName
KeyBoardData.eStatus = OSK_PENDING
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
KeyBoardData.iProfanityToken = 0
ENDIF
ELIF sbv = BV_BB_BLIMP3
PICK_VEHICLE_LIVERY_FROM_BUTTON_INT(sbv, g_iLastSelectedWebIndex, bBuyNow)
ELIF sbv = BV_BB_PBUS2
PICK_VEHICLE_LIVERY_FROM_BUTTON_INT(sbv, g_iLastSelectedWebIndex, bBuyNow)
ELSE
PICK_VEHICLE_COLOUR_FROM_BUTTON_INT(sbv, eStaticCurrentSite, g_iLastSelectedWebIndex, bBuyNow)
ENDIF
CPRINTLN(DEBUG_INTERNET, "<COLPICK> colour selected for \"", GET_LABEL_BUYABLE_VEHICLE(sbv), "\" as ", GET_STRING_FROM_SITE_BUYABLE_VEHICLE_COLOURS(sbv, g_eLastBuyableVehicleColourSelected), " [g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", armour:", GET_STRING_FROM_BOOL(g_bLastBuyableVehicleArmourSelected), ", bBuyNow:", GET_STRING_FROM_BOOL(bBuyNow), "].")
ELSE
CPRINTLN(DEBUG_INTERNET, "<COLPICK> colour selected for \"", GET_LABEL_BUYABLE_VEHICLE(sbv), "\" not a valid ID [\"", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), "\", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, "].")
ENDIF
ELIF eStaticCurrentSite = WWW_DYNASTY8REALESTATE_COM
IF (g_iLastSelectedWebIndex = 11) iCustomAptVariant = 1 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 12) iCustomAptVariant = 2 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 13) iCustomAptVariant = 3 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 14) iCustomAptVariant = 4 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 15) iCustomAptVariant = 5 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 16) iCustomAptVariant = 6 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 17) iCustomAptVariant = 7 bCustomInteriorSelected = TRUE
ELIF (g_iLastSelectedWebIndex = 18) iCustomAptVariant = 8 bCustomInteriorSelected = TRUE
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_15 tlLastClickedPropertyName = GET_PROPERTY_NAME(iLastClickedPropertyIndex)
#ENDIF
CPRINTLN(DEBUG_INTERNET, "<COLPICK> colour selected for ", tlLastClickedPropertyName,
" - ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite),
", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex,
", iCustomAptVariant:", iCustomAptVariant)
ELIF eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM
IF iStaticCurrentPage = 5 //#2786374
AND g_iLastSelectedWebIndex = 7 //#2786374
bRunningOrgNameKeyboard = TRUE
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
END_SCALEFORM_MOVIE_METHOD()
BROWSER_CURSOR_LOADING(FALSE)
ENDIF
ELIF eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM
IF iStaticCurrentPage = 5 //#2786374
AND g_iLastSelectedWebIndex = 7 //#2786374
bRunningOrgNameKeyboard = TRUE
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
END_SCALEFORM_MOVIE_METHOD()
BROWSER_CURSOR_LOADING(FALSE)
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "<COLPICK> colour selection ignored for web index ", GET_WEBSITE_FROM_INDEX(eStaticLastSite), ".")
ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "<COLPICK> colour picking mode turned off.")
ENDIF
BOOL BSinput = FALSE
//g_iWebPageIndexFeedback = pageID
//g_eWebSiteIndexFeedback = siteID
SWITCH g_eWebSiteIndexFeedback
CASE WWW_BAWSAQ_COM
BSinput = TRUE
BREAK
CASE WWW_EPSILONPROGRAM_COM
HANDLE_EPSILON_SELECT(i)
MARK_ROBE_PAGE_VISITED()
BREAK
CASE WWW_LCN_D_EXCHANGE_COM
BSinput = TRUE
BREAK
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
CASE WWW_ARENAWAR_TV
IF g_iWebPageIndexFeedback = 15
IF g_iLastSelectedWebIndex = 2 // Confirm yes button
IF NOT confCheck
AND g_eWebSiteIndexFeedback = WWW_BENNYSORIGINALMOTORWORKS_COM
//
CWARNINGLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: bypass!! g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
ELIF NOT confCheck
AND g_eWebSiteIndexFeedback = WWW_ARENAWAR_TV
//
CWARNINGLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: bypass!! g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
ELSE
INT iAltVersion
iAltVersion = -1
IF IS_SBV_AN_ALTERNATE_VEHICLE(confSbv, g_eWebSiteIndexFeedback, g_eLastBuyableVehicleColourSelected)
iAltVersion = 1
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
DO_MP_VEHICLE_BUY(g_eWebSiteIndexFeedback, iAltVersion)
ENDIF
ELIF g_iLastSelectedWebIndex = 3 // Confirm no button
//DO_VEHICLE_FAIL_PAGE(g_eWebSiteIndexFeedback,VSFR_CANCELED)
confCheck = FALSE
ENDIF
ENDIF
BREAK
ENDSWITCH
IF BSinput
FLOAT fCurrentLoggedPrice
SWITCH g_iWebPageIndexFeedback
CASE 6 // buy
IF g_iLastSelectedWebIndex = 21 AND (i != -1)//plus
g_iSharesToBuySell++
g_bForceBrowserRefresh = TRUE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Increased shares selected on buy page : this increments g_iSharesToBuySell to ", g_iSharesToBuySell)
bSelectionHoldActionDetector = TRUE
bSelectionHoldActionPolarity = TRUE
iSelectionHoldActionRateTracker = 0
ELSE
IF g_iLastSelectedWebIndex = 22 AND (i != -1)//minus
g_iSharesToBuySell--
g_bForceBrowserRefresh = TRUE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Reduce shares selected on buy page : this decrements g_iSharesToBuySell to ", g_iSharesToBuySell)
bSelectionHoldActionDetector = TRUE
bSelectionHoldActionPolarity = FALSE
iSelectionHoldActionRateTracker = 0
ENDIF
ENDIF
BREAK
CASE 7 // sell
IF g_iLastSelectedWebIndex = 21 AND (i != -1)//plus
g_iSharesToBuySell++
g_bForceBrowserRefresh = TRUE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Increased shares selected on sell page : this increments g_iSharesToBuySell to ", g_iSharesToBuySell)
bSelectionHoldActionDetector = TRUE
bSelectionHoldActionPolarity = TRUE
iSelectionHoldActionRateTracker = 0
ELSE
IF g_iLastSelectedWebIndex = 22 AND (i != -1)//minus
g_iSharesToBuySell--
g_bForceBrowserRefresh = TRUE
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Reduce shares selected on sell page : this decrements g_iSharesToBuySell to ", g_iSharesToBuySell)
bSelectionHoldActionDetector = TRUE
bSelectionHoldActionPolarity = FALSE
iSelectionHoldActionRateTracker= 0
ENDIF
ENDIF
IF g_iLastSelectedWebIndex = 30
// Sell all of this attempt
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Attempted to fire sell all.")
CDEBUG1LN(DEBUG_STOCKS, "Calculating buy/sell value for shares on website...")
g_iSharesToBuySell = GET_OWNED_TOTAL_FROM_PORTFOLIO(ENUM_TO_INT(bttarget),g_iStockSelectedPortfolioIndex)
CDEBUG1LN(DEBUG_STOCKS, "The player owns ", g_iSharesToBuySell, " shares of company ", ENUM_TO_INT(bttarget), ".")
IF g_iSharesToBuySell > 0
coindex = GET_COMPANY_INDEX_FROM_PORTFOLIO(ENUM_TO_INT(bttarget),g_iStockSelectedPortfolioIndex)
fCurrentLoggedPrice = GET_CURRENT_STOCK_PRICE(ENUM_TO_INT(coindex))
g_fShareTotal = g_iSharesToBuySell*fCurrentLoggedPrice
CDEBUG1LN(DEBUG_STOCKS, "Total value of shares is $", g_fShareTotal, ".")
// Check cap the share total if needed.
IF (fBalance + g_fShareTotal) > 2147483647.0
g_iSharesToBuySell = FLOOR((2147483647.0-fBalance)/fCurrentLoggedPrice)
g_fShareTotal = g_iSharesToBuySell*fCurrentLoggedPrice
CDEBUG1LN(DEBUG_STOCKS, "Capping shares sold to stop bank account overruning. Shares to sell now ", g_iSharesToBuySell, " for total value of $", g_fShareTotal, ".")
ENDIF
g_fOriginalProfit = TO_FLOAT(GET_OWNED_TOTAL_FROM_PORTFOLIO(ENUM_TO_INT(bttarget),g_iStockSelectedPortfolioIndex)) // change this value to owned shares, and string to match
g_fCurrentProfit = GET_INVESTED_TOTAL_FROM_PORTFOLIO(ENUM_TO_INT(bttarget),g_iStockSelectedPortfolioIndex)
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ELSE
IF bSelectionHoldActionDetector
BROWSER_SET_CURSOR_STATE("ARROW")
ENDIF
bSelectionHoldActionDetector = FALSE
bPadCross = FALSE
ENDIF
// Fix for backspace on PC keyboard (frontend cancel) quitting the virtual keyboard
// instead of deleting characters. Fixes B* 1860158
// Player can still use right mouse button to go back.
//BOOL bDisableBackButtonForPCKeyboard = FALSE
IF GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_KEYBOARD_FLAG_INDEX) != 0
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
ENDIF
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE())
IF bPadCircle = FALSE
bPadCircle = TRUE
IF bRunningOrgNameKeyboard
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Backstep overriden KeyBoardData.iCurrentstatus = ", KeyBoardData.iCurrentstatus, " store trigger ", g_bBrowserGoToStoreTrigger)
ELIF g_iPendingBrowserTimer != -1 OR ChildInitStage != 3
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: Backstep overriden t = ",g_iPendingBrowserTimer, " stage = ", ChildInitStage, " store trigger ", g_bBrowserGoToStoreTrigger)
//bflag = 1//deny backbutton when a change is pending
ELSE
INT bflag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BACKBUTTON_FLAG_INDEX)
CPRINTLN(DEBUG_INTERNET, "PASS_INPUTS_TO_BROWSER: GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BACKBUTTON_FLAG_INDEX) returned : " , bflag)
IF bFlag = 1
IF NOT BACK_BUTTON_INTERCEPT(g_eWebSiteIndexFeedback, movin)
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_TRIANGLE)))
END_SCALEFORM_MOVIE_METHOD()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Executing browser default back step...Resetting emailstate to dormant also!")
IF EmailState > eDORMANT //Critical!
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Was using Eyefind Inbox.")
FORCE_CLOSE_BROWSER()
ENDIF
IF g_BrowserStartState != SBSS_CashMachineFinance
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "GO_BACK") //GO_FORWARD
END_SCALEFORM_MOVIE_METHOD()
PLAY_SOUND_FRONTEND(-1, "CLICK_BACK","WEB_NAVIGATION_SOUNDS_PHONE")
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_BrowserStartState = SBSS_CashMachineFinance")
FORCE_CLOSE_BROWSER()
ENDIF
IF g_eLastBuyableVehicleColourSelected != BCV_NO_COLOUR
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> updating last picked vehicle colour from ", g_eLastBuyableVehicleColourSelected, " to BCV_NO_COLOUR.")
g_eLastBuyableVehicleColourSelected = BCV_NO_COLOUR
ENDIF
IF g_bLastBuyableVehicleArmourSelected != FALSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> updating last picked vehicle armour from ", GET_STRING_FROM_BOOL(g_bLastBuyableVehicleArmourSelected), " to FALSE.")
g_bLastBuyableVehicleArmourSelected = FALSE
ENDIF
IF !(GET_GAME_TIMER() > g_iTimeLastBrowserRefresh + WEB_BROWSER_PAGE_REFRESH_RATE)
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> set the time last browser refresh to now.")
g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
ENDIF
// IF NOT IS_STRING_NULL_OR_EMPTY(g_sBrowserHelpMessage.tl15Tag)
// AND IS_THIS_BROWSER_HELP_MESSAGE_BEING_DISPLAYED(g_sBrowserHelpMessage)
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> - remove ", g_sBrowserHelpMessage.tl15Tag, ", cancel pressed")
CLEAR_HELP()
CLEAR_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT()
// ENDIF
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Backbutton press with SCALEFORM_BACKBUTTON_FLAG_INDEX set!")
FORCE_CLOSE_BROWSER()
ENDIF
ENDIF
ENDIF
// Shut down TV playback
IF bTVOn
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: turn off TV")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SUPRESS_HISTORY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
SET_TV_CHANNEL(TVCHANNELTYPE_CHANNEL_NONE)
STOP_AUDIO_SCENE("INTERNET_BROWSER_VIDEO_SCENE")
bTVOn = FALSE
iTVOnTimeoutFrameCount = -1
ENDIF
ELSE
bPadCircle = FALSE
ENDIF
IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
AND (IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y))
IF bPadTriangle = FALSE AND bTexitSeenUp
bPadTriangle = TRUE
BEGIN_SCALEFORM_MOVIE_METHOD(movin, "SET_INPUT_EVENT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(ENUM_TO_INT(SCALEFORM_INPUT_EVENT_CIRCLE)))
END_SCALEFORM_MOVIE_METHOD()
IF g_BrowserStartState != SBSS_CashMachineFinance
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: g_BrowserStartState = SBSS_CashMachineFinance")
FORCE_CLOSE_BROWSER()
ENDIF
ENDIF
ELSE
bPadTriangle = FALSE
bTexitSeenUp = TRUE
ENDIF
INT iGLOBAL_ACTIONSCRIPT_FLAG_BROWSER_CLOSE = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BROWSER_CLOSE)
IF iGLOBAL_ACTIONSCRIPT_FLAG_BROWSER_CLOSE != 0
IF HAS_SCALEFORM_MOVIE_LOADED(movin)
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BROWSER_CLOSE) = ", iGLOBAL_ACTIONSCRIPT_FLAG_BROWSER_CLOSE)
FORCE_CLOSE_BROWSER()
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> don't force close browset, scaleform movie not loaded: GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BROWSER_CLOSE) = ", iGLOBAL_ACTIONSCRIPT_FLAG_BROWSER_CLOSE)
ENDIF
ENDIF
IF NOT bRunningOrgNameKeyboard
BROWSER_CURSOR_LOADING(TRUE)
ENDIF
ENDPROC
/// PURPOSE:
/// loads the text slot required for the eyefind news stories to display
PROC LOAD_EYEFIND_TEXT_SLOT()
// We must make sure the internet's text slot is loaded before progressing
IF ARE_STRINGS_EQUAL(tl23RequestedInternetTextBlock, "")
CLEAR_ADDITIONAL_TEXT(SHOP_TEXT_SLOT, TRUE)
tl23RequestedInternetTextBlock = GET_EYEFIND_REQUIRED_TEXT_BLOCK() // set initial value shared by EyeFind News and LifeInvader
//RENDER_BROWSER()
//WAIT(0) // need frame as HAS_ADDITIONAL_TEXT_LOADED will return true even if CLEAR_ADDITIONAL_TEXT was called
CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : set initial tl23RequestedInternetTextBlock = ", tl23RequestedInternetTextBlock)
ELIF NOT ARE_STRINGS_EQUAL(tl23RequestedInternetTextBlock, GET_EYEFIND_REQUIRED_TEXT_BLOCK())
CLEAR_ADDITIONAL_TEXT(SHOP_TEXT_SLOT, TRUE)
tl23RequestedInternetTextBlock = GET_EYEFIND_REQUIRED_TEXT_BLOCK() // set the text block to be requested for Eyefind News
//RENDER_BROWSER()
//WAIT(0) // need frame as HAS_ADDITIONAL_TEXT_LOADED will return true even if CLEAR_ADDITIONAL_TEXT was called
CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : updated tl23RequestedInternetTextBlock = ", tl23RequestedInternetTextBlock)
ENDIF
// using bIsInternetTextSupported as return value for REQUEST_ADDITIONAL_TEXT commented out for now incase it's needed again at a later date
//IF REQUEST_ADDITIONAL_TEXT(tl23RequestedInternetTextBlock, SHOP_TEXT_SLOT) // ensure the current text block has been requested before checking HAS_ADDITIONAL_TEXT_LOADED
REQUEST_ADDITIONAL_TEXT(tl23RequestedInternetTextBlock, SHOP_TEXT_SLOT) // ensure the current text block has been requested before checking HAS_ADDITIONAL_TEXT_LOADED
bIsInternetTextSupported = TRUE
CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : requested tl23RequestedInternetTextBlock = ", tl23RequestedInternetTextBlock)
IF DOES_TEXT_BLOCK_EXIST(tl23RequestedInternetTextBlock)
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(SHOP_TEXT_SLOT)
RENDER_BROWSER()
CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : Waiting for eyefind text slot to load for tl23RequestedInternetTextBlock = ", tl23RequestedInternetTextBlock)
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : eyefind text slot loaded with tl23RequestedInternetTextBlock = ", tl23RequestedInternetTextBlock)
ENDIF
//ELSE
// bIsInternetTextSupported = FALSE
// CPRINTLN(DEBUG_INTERNET, " LOAD_EYEFIND_TEXT_SLOT() : eyefind text slot not loaded bIsInternetTextSupported failed !")
//ENDIF
ENDPROC
#IF IS_DEBUG_BUILD
BOOL bDebugRaiseKey = FALSE
BOOL bDebugCrashKey = FALSE
#ENDIF
PROC STOCK_SYSTEM_CHECK(BOOL bDoStockFunctionality)
IF bDoStockFunctionality
IF !g_bInMultiplayer
IF (NOT g_savedGlobals.sFinanceData.bFirstTimeTutorialSeen)
AND (NOT g_bBAWSAQWebTutorialInProgress)
CPRINTLN(DEBUG_INTERNET, "Stock system tutorial activated")
//g_bBAWSAQWebTutorialInProgress = TRUE
//g_bBrowserUserMode = FALSE//take player control
//g_savedGlobals.sFinanceData.bFirstTimeTutorialSeen = TRUE
IF g_savedGlobals.sFinanceData.bBrowserTutorialSeen
IF NOT g_savedGlobals.sFinanceData.bFirstTimeTutorialSeen
ADD_HELP_TO_FLOW_QUEUE("BS_TUT_1", FHP_HIGH, 0, 1000)
g_savedGlobals.sFinanceData.bFirstTimeTutorialSeen = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//check for buy or sell situation
IF iPageIDCheck = 8//transaction confirmation page
//transaction type
IF iPageIDLast = 6 // buy
CPRINTLN(DEBUG_INTERNET, "Buy primed")
g_bBuySell = TRUE
ENDIF
IF iPageIDLast = 7 //sell
CPRINTLN(DEBUG_INTERNET, "Sell primed")
g_bBuySell = FALSE
ENDIF
ENDIF
IF iPageIDCheck = 9//Transaction complete page
IF iPageIDLast = 8 //coming from the confirm page
//carry out the transaction
IF g_bBuySell
CPRINTLN(DEBUG_INTERNET, "Attempting buy stock: index ",g_iStockSelectionFocus," number ",g_iSharesToBuySell)
BAWSAQ_TRADERS bttarget
enumBankAccountName batarget
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
bttarget = BS_TR_MIKE
batarget = BANK_ACCOUNT_MICHAEL
BREAK
CASE CHAR_TREVOR
bttarget = BS_TR_TREVOR
batarget = BANK_ACCOUNT_TREVOR
BREAK
CASE CHAR_FRANKLIN
bttarget = BS_TR_FRANKLIN
batarget = BANK_ACCOUNT_FRANKLIN
BREAK
ENDSWITCH
//find the correct selection focus from market mode
/*
INT targetselection = g_iStockSelectionFocus
INT selectedindex = 0
INT i = 0
CPRINTLN(DEBUG_INTERNET, "Stock selection is: ")
PRINTINT(g_iStockSelectionFocus)
PRINTNL()
WHILE (NOT (i = targetselection))
//FIND CORRECT SELECTED INDEX
IF g_bOnlineMarket = g_BS_Listings[i].bOnlineStock
//only count entries that have the same online status
++i
ENDIF
++selectedindex
ENDWHILE
*/
CPRINTLN(DEBUG_INTERNET, "Stock selection is: ", g_iStockSelectionFocus)
IF g_iSharesToBuySell >= 0
BUY_STOCKS(batarget, bttarget,INT_TO_ENUM(BAWSAQ_COMPANIES, g_iStockSelectionFocus), g_iSharesToBuySell, g_fShareTotal)
ELSE
CASSERTLN(DEBUG_INTERNET, "Cannot buy zero shares! Button should have been greyed out")
ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "Attempting sell stock: index ", g_iStockSelectionFocus)
BAWSAQ_TRADERS bttarget
enumBankAccountName batarget
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
bttarget = BS_TR_MIKE
batarget = BANK_ACCOUNT_MICHAEL
BREAK
CASE CHAR_TREVOR
bttarget = BS_TR_TREVOR
batarget = BANK_ACCOUNT_TREVOR
BREAK
CASE CHAR_FRANKLIN
bttarget = BS_TR_FRANKLIN
batarget = BANK_ACCOUNT_FRANKLIN
BREAK
ENDSWITCH
IF g_iSharesToBuySell > 0
SELL_STOCKS(batarget, bttarget, INT_TO_ENUM(BAWSAQ_COMPANIES, g_iStockSelectionFocus), g_iSharesToBuySell, g_fShareTotal)
ELSE
CASSERTLN(DEBUG_INTERNET, "Cannot sell zero shares! Button should have been greyed out.")
ENDIF
ENDIF
ELIF iPageIDLast = 16 // Coming from the sell all page, oh snap.
g_iStockSelectionFocus = -2
// Purge all owned stocks.
BAWSAQ_TRADERS bttarget
enumBankAccountName batarget
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
bttarget = BS_TR_MIKE
batarget = BANK_ACCOUNT_MICHAEL
BREAK
CASE CHAR_TREVOR
bttarget = BS_TR_TREVOR
batarget = BANK_ACCOUNT_TREVOR
BREAK
CASE CHAR_FRANKLIN
bttarget = BS_TR_FRANKLIN
batarget = BANK_ACCOUNT_FRANKLIN
BREAK
ENDSWITCH
SELL_ALL_STOCKS(batarget, bttarget)
ENDIF
ENDIF
// Reset of selection data
IF iPageIDLast = 4 //coming from 44
// is currently on buy amount selection
IF iPageIDCheck = 6 OR iPageIDCheck = 7
g_iSharesToBuySell = 0
CPRINTLN(DEBUG_INTERNET, "g_iSharesToBuySell zeroed by appInternet")
ENDIF
ENDIF
IF iPageIDCheck = 4 // entering 44
IF iPageIDLast = 3 OR iPageIDLast = 2 //coming from the listing pages, so a new listing will need to be set
g_iStockSelectionFocus = -1//unset the selection
ENDIF
ENDIF
ENDIF
ENDPROC
//----------------------
// Epsilon Presentation
//----------------------
BOOL epsConvLoaded
TEXT_LABEL epsBlock
PROC START_EPSILON_PRESENTATION()
CPRINTLN(DEBUG_INTERNET, "EPSILON: Attempting to start presentation!")
ADD_PED_FOR_DIALOGUE(spfc,0,NULL,"CRIS")
epsConvLoaded = FALSE
epsBlock = "EPSW_VOICE1"
ENDPROC
PROC UPDATE_EPSILON_PRESENTATION()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND g_iEpsilonTutorialStage != -1
IF NOT epsConvLoaded
IF CREATE_CONVERSATION_USING_V_CONTENT_IN_DLC(spfc, "EPSWAUD", epsBlock,
CONV_PRIORITY_VERY_HIGH, DISPLAY_SUBTITLES, DO_NOT_ADD_TO_BRIEF_SCREEN)
CPRINTLN(DEBUG_INTERNET, "EPSILON: Created conversation for stage ", g_iEpsilonTutorialStage)
epsConvLoaded = TRUE
ENDIF
ELSE
epsConvLoaded = FALSE
++g_iEpsilonTutorialStage
SWITCH g_iEpsilonTutorialStage
CASE 2
epsBlock = "EPSW_VOICE2"
BREAK
CASE 3
epsBlock = "EPSW_VOICE3"
BREAK
CASE 4
epsBlock = "EPSW_VOICE4"
BREAK
CASE 5
epsBlock = "EPSW_VOICE5"
BREAK
CASE 6
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "PROXY_FUNCTION")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(6)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_iEpsilonTutorialStage)
END_SCALEFORM_MOVIE_METHOD()
g_iEpsilonTutorialStage = -1
BREAK
DEFAULT
g_iEpsilonTutorialStage = -1
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROC
PROC DO_WEBSITE_ANALYTICS_HASH_SET()
CPRINTLN(DEBUG_INTERNET, "DO_WEBSITE_ANALYTICS_HASH_SET: triggered")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_WEBSITE")
SCALEFORM_RETURN_INDEX retindex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
CPRINTLN(DEBUG_INTERNET, "Appinternet waiting for site response to PLAYSTATS_WEBSITE_VISITED call...")
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(retindex)
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
STRING strret = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING(retindex)
INT key = GET_HASH_KEY(strret)
PLAYSTATS_WEBSITE_VISITED(key, iCurrentSiteTimer)
CPRINTLN(DEBUG_INTERNET, "Analytics website set : ", strret)
lastSiteURL = strret //used internally for 1621761
IF ARE_STRINGS_EQUAL(strret, "WWW_MYDIVINEWITHIN_COM")
AND NOT IS_BIT_SET(g_savedGlobals.sRandomChars.g_iWebsiteQueryBit, ENUM_TO_INT(RC_WEB_VISITED_COM_SITE))
SET_BIT(g_savedGlobals.sRandomChars.g_iWebsiteQueryBit, ENUM_TO_INT(RC_WEB_VISITED_COM_SITE))
WHILE NOT REGISTER_EMAIL_FROM_CHARACTER_TO_PLAYER(EMAIL_COTM_ADRIAN_1, CT_AMBIENT, BIT_FRANKLIN, CHAR_BLANK_ENTRY, 1000, 5000, DEFAULT, CID_BLANK)
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sending initial email to Franklin...")
WAIT(0)
ENDWHILE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Sent initial email to Franklin")
ELIF ARE_STRINGS_EQUAL(strret, "WWW_THECHILDRENOFTHEMOUNTAIN_COM")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_iChildrenOfTheMountainStatus)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Set SET_DATA_SLOT to ", g_iChildrenOfTheMountainStatus)
ENDIF
g_sLastLastSiteHash = g_sLastSiteHash
g_sLastSiteHash = GET_HASH_KEY(strret)
ENDPROC
PROC DISABLE_VIDEO_PLAYBACK()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "DISABLE_VIDEO")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"UPDATE_TEXT")
END_SCALEFORM_MOVIE_METHOD()
bVideoDisabled = TRUE
ENDPROC
PROC SETUP_VIDEO_PLAYBACK( STRING sPlaylist )
IF bVideoDisabled = TRUE
EXIT
ENDIF
SET_TV_CHANNEL_PLAYLIST(TVCHANNELTYPE_CHANNEL_1, sPlaylist, TRUE)
SET_TV_AUDIO_FRONTEND(TRUE)
SET_TV_VOLUME(-5.0)
ENABLE_MOVIE_SUBTITLES(TRUE)
SET_TV_CHANNEL(TVCHANNELTYPE_CHANNEL_1)
SET_TEXT_RENDER_ID(GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID())
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_HUD)
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE)
DRAW_TV_CHANNEL(0.5,0.5,0.5,0.5,0.0,255,255,255,255)
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SUPRESS_HISTORY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
START_AUDIO_SCENE("INTERNET_BROWSER_VIDEO_SCENE")
iPadLeftX = 0
iPadLeftY = 0
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(1.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iPadLeftX))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iPadLeftY))
END_SCALEFORM_MOVIE_METHOD()
bTVOn = TRUE
ENDPROC
PROC DO_STATIC_SITE_CHECKS()
INT iPage = GET_CURRENT_WEBPAGE_ID() // END_SCALEFORM_MOVIE_METHOD_INT()
WEBSITE_INDEX_ENUM eSite = INT_TO_ENUM(WEBSITE_INDEX_ENUM, GET_CURRENT_WEBSITE_ID()) // fudret
IF (eStaticCurrentSite = WWW_DYNASTY8REALESTATE_COM)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
IF g_bPropertyRefreshTrigger//g_bInMultiplayer AND
//this is the property site map with pins
POPULATE_MP_PROPERTY_SITE_PIN_MAP(mov)
g_bPropertyRefreshTrigger = FALSE
ENDIF
ENDIF
IF (eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
IF g_bPropertyRefreshTrigger
POPULATE_MP_EXEC_PROPERTY_SITE_PIN_MAP(mov)
g_bPropertyRefreshTrigger = FALSE
ENDIF
ENDIF
IF (eStaticCurrentSite = WWW_DYNASTY8EXECUTIVEREALTY_COM)
AND iStaticCurrentPage = 2
AND g_bInMultiplayer
PRINT_HELP_FOR_WEBSITE_DYNASTY_8_EXECUTIVE()
ENDIF
IF (eStaticCurrentSite = FORECLOSURES_MAZE_D_BANK_COM)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
IF g_bPropertyRefreshTrigger
POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov)
g_bPropertyRefreshTrigger = FALSE
ENDIF
ENDIF
IF (eStaticCurrentSite = WWW_ARENAWAR_TV)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
IF g_bPropertyRefreshTrigger
POPULATE_MP_ARENA_PROPERTY_SITE_PIN_MAP(mov)
g_bPropertyRefreshTrigger = FALSE
ENDIF
ENDIF
IF (eStaticCurrentSite = WWW_THEDIAMONDCASINOANDRESORT_COM)
AND (iStaticCurrentPage = 1 OR iStaticCurrentPage = 2 OR iStaticCurrentPage = 8 OR iStaticCurrentPage = 9 OR bPopulatePropertySitePinMap)
AND g_bInMultiplayer
IF g_bPropertyRefreshTrigger
POPULATE_MP_CASINO_PROPERTY_SITE_PIN_MAP(mov)
g_bPropertyRefreshTrigger = FALSE
ENDIF
ENDIF
bPopulatePropertySitePinMap = FALSE
BOOL eitherChanged = FALSE
IF iPage > 0
IF iStaticCurrentPage != iPage
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHECKS: iStaticCurrentPage != iPage, iStaticCurrentPage will now = ", iPage)
eitherChanged = TRUE
ENDIF
iStaticCurrentPage = iPage
g_bLastStaticSiteInvalid = FALSE
ELSE
g_bLastStaticSiteInvalid = TRUE
ENDIF
IF ENUM_TO_INT(eSite) > 0
IF eStaticCurrentSite != eSite
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHECKS: eStaticCurrentSite != eSite, eStaticCurrentSite will now = ", GET_WEBSITE_FROM_INDEX(eSite))
eitherChanged = TRUE
ENDIF
eStaticCurrentSite = eSite
ELSE
g_bLastStaticSiteInvalid = TRUE
ENDIF
IF g_eWebSiteIndexFeedback != eStaticCurrentSite
iCurrentSiteTimer = 0
CPRINTLN(DEBUG_INTERNET, "Resetting site timer S")
ENDIF
g_iWebPageIndexFeedback = iStaticCurrentPage
g_eWebSiteIndexFeedback = eStaticCurrentSite
IF eitherChanged
// Set these again - one of them changed, so set BOTH to the current website/webpage so they're consistent (was causing B*1576939)
iStaticCurrentPage = iPage
eStaticCurrentSite = eSite
g_iWebPageIndexFeedback = iStaticCurrentPage
g_eWebSiteIndexFeedback = eStaticCurrentSite
CPRINTLN(DEBUG_INTERNET, "DO_STATIC_SITE_CHECKS: eStaticCurrentSite = ", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), ". iStaticCurrentPage = ", iStaticCurrentPage)
DO_STATIC_SITE_CHANGE_TRIGGERS()
ENDIF
ENDPROC
#IF IS_DEBUG_BUILD
PROC CATALOGUE_MISSING_ENTRIES()
IF NETWORK_IS_GAME_IN_PROGRESS()
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() - Rebuilding for vehicles(website) - COLOURS ONLY" )
SITE_BUYABLE_VEHICLE eSiteVeh
VEHICLE_SETUP_STRUCT_MP sVSSMP
VEHICLE_SETUP_STRUCT sVSSBlank
ScriptCatalogItem sCatalogueData
INT iNewEntriesCount = 0
// Loop through every site buyable vehicle and generate keys, adding any currently missing from the catalogue.
REPEAT COUNT_OF( SITE_BUYABLE_VEHICLE ) eSiteVeh
IF GET_MODEL_FOR_BUYABLE_VEHICLE( eSiteVeh ) != DUMMY_MODEL_FOR_SCRIPT
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() - Rebuilding vehicle(website) - eSiteVeh = ", GET_LABEL_BUYABLE_VEHICLE( eSiteVeh ) )
VEHICLE_INDEX vehTemp = NULL
BOOL bAltVersion = FALSE
// Loop through colours
SITE_BUYABLE_VEHICLE_COLOURS eSiteVehColours
FOR eSiteVehColours = BCV_NO_COLOUR TO BCV_WHITE_COLOUR
PRINTLN( "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Colour loop start, colour = ", eSiteVehColours )
// Configure the vehicle setup struct for this colour
sVSSMP.VehicleSetup = sVSSBlank
g_eLastBuyableVehicleColourSelected = eSiteVehColours
CONFIGURE_STRUCT_FOR_BUYABLE_VEHICLE( eSiteVeh, sVSSMP, TRUE)
// Verify model
IF sVSSMP.VehicleSetup.eModel != DUMMY_MODEL_FOR_SCRIPT
AND IS_MODEL_A_VEHICLE( sVSSMP.VehicleSetup.eModel )
// Create new vehicle
IF NOT DOES_ENTITY_EXIST( vehTemp )
OR NOT IS_VEHICLE_DRIVEABLE( vehTemp )
IF DOES_ENTITY_EXIST( vehTemp )
DELETE_VEHICLE( vehTemp)
PRINTLN( "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Deleted undriveable vehicle" )
ENDIF
PRINTLN( "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Creating new vehicle - waiting for CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY...")
WHILE NOT CREATE_AND_POPULATE_VEHICLE_DETAILS_FOR_MP_WEBSITE_VEHICLE_BUY( eSiteVeh, WWW_NOT_EXIST, sVSSMP, vehTemp, bAltVersion )
WAIT(0)
ENDWHILE
SET_MODEL_AS_NO_LONGER_NEEDED( sVSSMP.VehicleSetup.eModel )
// already have a working vehicle, update vehicle colours for this loop
ELSE
SET_VEHICLE_SETUP_MP( vehTemp, sVSSMP )
PRINTLN( "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Updating vehicle colour" )
ENDIF
IF DOES_ENTITY_EXIST( vehTemp )
AND IS_VEHICLE_DRIVEABLE( vehTemp )
PRINTLN( "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Retrieving colour details = ", eSiteVehColours )
// Reset colour vars
MOD_COLOR_TYPE eModColorType1 = MCT_NONE
MOD_COLOR_TYPE eModColorType2 = MCT_NONE
MOD_COLOR_TYPE eModColorTypeExtra1 = MCT_NONE
TEXT_LABEL_15 sModCol1Name = ""
TEXT_LABEL_15 sModCol2Name = ""
TEXT_LABEL_15 sModCol1NameExtra = ""
INT iCol1 = 0
INT iCol2 = 0
INT iCol3 = 0
INT iCol4 = 0
// Find colour details
GET_VEH_MOD_COLOUR_DETAILS( vehTemp,
eModColorType1, sModCol1Name, iCol1,
eModColorType2, sModCol2Name, iCol2,
eModColorTypeExtra1, sModCol1NameExtra, iCol3,
iCol4 )
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() sModCol1Name = ", sModCol1Name, " iCol1 = ", iCol1 )
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() sModCol1Name = ", sModCol1NameExtra, " iCol3 = ", iCol3 )
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() sModCol2Name = ", sModCol2Name, " iCol2 = ", iCol2 )
INT iPriceVariation = GET_VEHICLE_SHARED_MOD_PRICE_VARIATION_FOR_CATALOGUE( sVSSMP.VehicleSetup.eModel)
// Generate catalogue entry for Color 1
GENERATE_KEY_FOR_SHOP_CATALOGUE(sCatalogueData.m_key, sModCol1Name, DUMMY_MODEL_FOR_SCRIPT, SHOP_TYPE_CARMOD, ENUM_TO_INT(CMT_RESPRAY_PRIMARY), iPriceVariation, 1, ENUM_TO_INT( eModColorType1 ) )
sCatalogueData.m_textTag = sModCol1Name
sCatalogueData.m_category = CATEGORY_VEHICLE_MOD
sCatalogueData.m_price = 1000
sCatalogueData.m_storagetype = NET_SHOP_ISTORAGE_INT
sCatalogueData.m_statvalue = iCol1
sCatalogueData.m_bitsize = 0
sCatalogueData.m_stathash = ENUM_TO_INT(MPIntStatNamesArray[MP_STAT_MPSV_VEHICLE_BS_0][GET_SLOT_NUMBER(g_iPedComponentSlot)])
IF NOT NET_GAMESERVER_CATALOG_ITEM_IS_VALID(sCatalogueData.m_key)
iNewEntriesCount++
ENDIF
ADD_ITEM_TO_CATALOG_WITH_CHECK(sCatalogueData)
// Generate catalogue entry for Color Extra 1
GENERATE_KEY_FOR_SHOP_CATALOGUE(sCatalogueData.m_key, sModCol1NameExtra, DUMMY_MODEL_FOR_SCRIPT, SHOP_TYPE_CARMOD, ENUM_TO_INT(CMT_RESPRAY_PRIMARY), iPriceVariation, 3, ENUM_TO_INT( eModColorTypeExtra1 ) )
sCatalogueData.m_textTag = sModCol1NameExtra
sCatalogueData.m_category = CATEGORY_VEHICLE_MOD
sCatalogueData.m_price = 1000
sCatalogueData.m_storagetype = NET_SHOP_ISTORAGE_INT
sCatalogueData.m_statvalue = iCol3
sCatalogueData.m_bitsize = 0
sCatalogueData.m_stathash = ENUM_TO_INT(MPIntStatNamesArray[MP_STAT_MPSV_VEHICLE_BS_0][GET_SLOT_NUMBER(g_iPedComponentSlot)])
IF NOT NET_GAMESERVER_CATALOG_ITEM_IS_VALID(sCatalogueData.m_key)
iNewEntriesCount++
ENDIF
ADD_ITEM_TO_CATALOG_WITH_CHECK(sCatalogueData)
// Generate catalogue entry for Color 2
GENERATE_KEY_FOR_SHOP_CATALOGUE(sCatalogueData.m_key, sModCol2Name, DUMMY_MODEL_FOR_SCRIPT, SHOP_TYPE_CARMOD, ENUM_TO_INT(CMT_RESPRAY_SECONDARY), iPriceVariation, 2, ENUM_TO_INT( eModColorType2 ) )
sCatalogueData.m_textTag = sModCol2Name
sCatalogueData.m_category = CATEGORY_VEHICLE_MOD
sCatalogueData.m_price = 1000
sCatalogueData.m_storagetype = NET_SHOP_ISTORAGE_INT
sCatalogueData.m_statvalue = iCol2
sCatalogueData.m_bitsize = 0
sCatalogueData.m_stathash = ENUM_TO_INT(MPIntStatNamesArray[MP_STAT_MPSV_VEHICLE_BS_0][GET_SLOT_NUMBER(g_iPedComponentSlot)])
IF NOT NET_GAMESERVER_CATALOG_ITEM_IS_VALID(sCatalogueData.m_key)
iNewEntriesCount++
ENDIF
ADD_ITEM_TO_CATALOG_WITH_CHECK(sCatalogueData)
ENDIF
ELSE
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() - Invalid Model - sVSSMP.VehicleSetup.eModel = ", ENUM_TO_INT( sVSSMP.VehicleSetup.eModel ) )
eSiteVehColours = BCV_COLOUR_1 // break colour loop
ENDIF
ENDFOR // end colour loop
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() Cleaning up veh & model" )
DELETE_VEHICLE( vehTemp )
ELSE
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() - Invalid eSiteVeh = ", ENUM_TO_INT( eSiteVeh ) )
ENDIF
ENDREPEAT // end vehicle loop
CPRINTLN(DEBUG_SHOPS, "[CATALOGUE] CATALOGUE_MISSING_ENTRIES() - Rebuild complete - iNewEntriesCount = ", iNewEntriesCount )
ENDIF
ENDPROC
#ENDIF
PROC MP_PROPERTY_DATA_INITIALISE()
g_sYachtDataStruct.iMod = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_MOD)
g_sYachtDataStruct.iFixture = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FIXTURE)
g_sYachtDataStruct.iLighting = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_LIGHTING)
g_sYachtDataStruct.iFlag = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_FLAG)
g_sYachtDataStruct.iColour = GET_PACKED_STAT_INT(PACKED_MP_CHAR_YACHT_COLOR)
g_sYachtDataStruct.tl63Name = GET_MP_LONG_STRING_CHARACTER_STAT(MP_STAT_YACHT_NAME, MP_STAT_YACHT_NAME2)
g_sYachtDataStruct.tl63NewName = ""
IF IS_STRING_NULL_OR_EMPTY(g_sYachtDataStruct.tl63Name)
g_sYachtDataStruct.tl63NewName = GET_FILENAME_FOR_AUDIO_CONVERSATION("YACHT_GSY")
ENDIF
g_sYachtDataStruct.iYachtNameID = GET_MP_INT_CHARACTER_STAT(MP_STAT_INV_YACHT_NAME_ID)
ALIGN_PROPERTY_ORGANIZATION_NAMES()
SETUP_OFFICE_GLOBALS_FROM_STATS()
g_sOfficeDataStruct.tl63NewOrgName = ""
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_DATA)
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_A_DATA)
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_OFFICE_GARAGE_B_DATA)
SETUP_CLUBHOUSE_GLOBALS_FROM_STATS()
g_sClubhouseDataStruct.tl63NewSignage = ""
SETUP_BUNKER_GLOBALS_FROM_STATS()
SETUP_TRUCK_GLOBALS_FROM_STATS()
SETUP_HANGAR_GLOBALS_FROM_STATS()
SETUP_DEFUNCT_BASE_GLOBALS_FROM_STATS()
SETUP_PLANE_GLOBALS_FROM_STATS()
SETUP_NIGHTCLUB_GLOBALS_FROM_STATS()
SETUP_HACKER_TRUCK_GLOBALS_FROM_STATS()
SETUP_KOSATKA_GLOBALS_FROM_STATS()
SETUP_ARCADE_GLOBALS_FROM_STATS()
SETUP_AUTO_SHOP_GLOBALS_FROM_STATS()
SETUP_FIXER_HQ_GLOBALS_FROM_STATS()
#IF FEATURE_DLC_2_2022
SETUP_MULTISTOREY_GARAGE_GLOBALS_FROM_STATS()
#ENDIF
SETUP_ARENA_GARAGE_GLOBALS_FROM_STATS()
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_ARENA_WARS_DATA)
SETUP_CASINO_APT_GLOBALS_FROM_STATS()
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CASINO_DATA)
RESET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_CLUBHOUSE_DATA)
UPDATE_PROPERTY_VALUES()
ENDPROC
SCRIPT
CPRINTLN(DEBUG_INTERNET, "Web browser script launched! ")
g_bBSWebsiteNoSpaceTrigger = FALSE
g_iPendingBrowserTimer = -1
g_bBSWebsiteTerminated = FALSE
Clear_PlayerList_Details_For_Email()
RESET_VEHICLE_SETUP_STRUCT_MP(g_sConfVssMP)
IF g_bInMultiplayer
MP_PROPERTY_DATA_INITIALISE()
ENDIF
MP_FORCE_TERMINATE_INTERNET_CLEAR()
SP_FORCE_TERMINATE_INTERNET_CLEAR()
MISSION_REPEAT_INFO sRepeatInfo
#IF IS_DEBUG_BUILD
IF GET_COMMANDLINE_PARAM_EXISTS("skipBrowserTutorial")
g_savedGlobals.sFinanceData.bBrowserTutorialSeen = TRUE
ENDIF
#ENDIF
IF IS_FAKE_MULTIPLAYER_MODE_SET()
CPRINTLN(DEBUG_INTERNET, "Web browser disallowed due to fake MP ")
TERMINATE_THIS_THREAD()
ENDIF
IF g_bMagDemoActive
CPRINTLN(DEBUG_INTERNET, "Web browser in mag demo launch prevention triggered. ")
TERMINATE_THIS_THREAD()
ENDIF
REQUEST_BAWSAQ_STOCK_PRICE_VALUES()
//WEB_BROWSER.gfx
//g_bSingleShotLCNRedirect = FALSE
g_bTickerPriceChange = TRUE
//IS_SITE_DYNAMIC //call on mov //0 or 1
//GET_SITE_ID //call on mov // id int // -1 if not dynamic
//GET_PAGE_ID //call on mov // id int
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
EmailState = eDORMANT //Steve T email Work.
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appinternet")) > 1
EXIT
ENDIF
#IF IS_DEBUG_BUILD
DEBUG_MAKE_BROWSER_WIDGETS()
IF GET_DRAW_DEBUG_COMMANDLINE_PARAM_EXISTS()
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
bDrawDebugStuff = TRUE
ENDIF
#ENDIF
IF IS_STUNT_JUMP_IN_PROGRESS()
g_CellPhone.PhoneDS = PDS_AWAY
EXIT
ENDIF
////////////////////////
PREP_BROWSER_BUTTONS(TRUE)
////////////////////////
// INIT_VEH_SITE_PRICES()
INT iReturnPadding = 0
INT pgi = 0
WEBSITE_INDEX_ENUM wsi = WWW_NOT_EXIST
bPanicShutdownStart = FALSE
/*
IF HAS_FORCE_CLEANUP_OCCURRED()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: HAS_FORCE_CLEANUP_OCCURRED()")
FORCE_CLOSE_BROWSER()
EXIT
ENDIF
*/
g_sBrowserHelpMessage.bShow = FALSE
g_bBrowserQuitMessage = FALSE
SCALEFORM_INDEX fontindex
fontindex = REQUEST_SCALEFORM_MOVIE("font_lib_web")
CPRINTLN(DEBUG_INTERNET, "Font_lib_web loading")
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(fontindex))
WAIT(0)
ENDWHILE
//Activate multihead blinders on PC
IF SET_MULTIHEAD_SAFE(TRUE,TRUE,DEFAULT,TRUE)
bActivatedMultiheadBlinders = TRUE
ENDIF
IF (g_BrowserStartState = SBSS_CashMachineFinance)
//DISABLE_PLAYER_FIRING(GET_PLAYER_INDEX(),TRUE)//so player doesn't punch the atm
/*
IF (NOT IS_PLAYER_DEAD(GET_PLAYER_INDEX())) AND (NOT IS_ENTITY_DEAD(GET_PLAYER_PED(GET_PLAYER_INDEX())))
SET_DISABLE_AMBIENT_MELEE_MOVE(GET_PLAYER_INDEX(),TRUE)
ENDIF
*/
ENDIF
// If the movie isn't prestreamed
IF mov = NULL
mov = REQUEST_SCALEFORM_MOVIE("web_browser")
ENDIF
INT gtime = g_iBrowserTimer + g_iDelayATMDisplay
CPRINTLN(DEBUG_INTERNET, "Web_browser loading...")
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
WAIT(0)
ENDWHILE
BROWSER_CURSOR_LOADING(FALSE)
IF NOT IS_PLAYER_DEAD(GET_PLAYER_INDEX())
g_iBrowserHealthDelta = GET_ENTITY_HEALTH(GET_PLAYER_PED(GET_PLAYER_INDEX()))
ENDIF
DO_CHECK_FOR_RAGDOLL_OR_DEAD()
IF (g_BrowserStartState = SBSS_CashMachineFinance)
gtime = gtime - (g_iBrowserTimer)
IF gtime > 0
WAIT(gtime)
ENDIF
PLAY_SOUND_FRONTEND(-1, "ATM_WINDOW","HUD_FRONTEND_DEFAULT_SOUNDSET")
ENDIF
#IF IS_JAPANESE_BUILD
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"IS_JAPANESE")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
#ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
IF g_bInMultiplayer
IF BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_GEN9")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
PRINTLN(DEBUG_INTERNET, "Setting gen 9 exclusive content - TRUE")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDIF
#ENDIF
IF GET_IS_WIDESCREEN()
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_WIDESCREEN",1.0)
ELSE
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_WIDESCREEN",0.0)
ENDIF
IF g_BrowserStartState = SBSS_CashMachineFinance
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_BROWSER_SKIN",4.0)
ELSE
IF g_bInMultiplayer
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_BROWSER_SKIN",1.0)
ELSE
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
CASE CHAR_MICHAEL
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_BROWSER_SKIN",0.0)
BREAK
CASE CHAR_FRANKLIN
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_BROWSER_SKIN",2.0)
BREAK
CASE CHAR_TREVOR
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov,"SET_BROWSER_SKIN",3.0)
BREAK
ENDSWITCH
ENDIF
ENDIF
//BROWSER_ON_STARTUP_HISTORY_RESTORE()
/*
IF (((NOT (g_BrowserStartState = SBSS_CashMachineFinance))
AND GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH ("cellphone_flashhand")) > 0))
HIDE_ACTIVE_PHONE(TRUE)
ENDIF
*/
// SET_PLAYER_CONTROL(GET_PLAYER_INDEX(),FALSE, SPC_ALLOW_PLAYER_DAMAGE | SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER | SPC_REENABLE_CONTROL_ON_DEATH | SPC_PREVENT_EVERYBODY_BACKOFF )
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Game paused by browser")
SET_BROWSER_OPEN(TRUE)
BOOL bTempFirstLoad = FALSE
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
// B*154147 - Stop player from being able to be pushed around
IF IS_PLAYER_PLAYING(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "<WEB BROWSER> Setting kinematic mode on player ped.")
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_UseKinematicModeWhenStationary,TRUE)
ENDIF
IF g_bInMultiplayer
SET_MULTIPLAYER_WALLET_CASH()
SET_MULTIPLAYER_BANK_CASH()
DISABLE_KILL_YOURSELF_OPTION()
ENDIF
IF NOT g_sBrowserHelpMessage.bShow
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
CPRINTLN(DEBUG_INTERNET, "Browser cleared help as per 1532352")
ENDIF
ENDIF
/// main update and render loop
WHILE IS_BROWSER_OPEN()
IF g_bInMultiplayer
AND bRunningOrgNameKeyboard
RUN_OSK_FOR_ORG_NAME()
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(tl63sPopulatePropertySitePinMap)
GO_TO_WEBSITE(tl63sPopulatePropertySitePinMap)
tl63sPopulatePropertySitePinMap = ""
ENDIF
// If the Epsilon music is playing or been requested and IS_GAME_IN_CONTROL_OF_MUSIC() returns false, stop the music
IF bStreamLoaded OR bDoLoadStream
IF NOT IS_GAME_IN_CONTROL_OF_MUSIC()
CPRINTLN(DEBUG_INTERNET, "IS_GAME_IN_CONTROL_OF_MUSIC returned false while music was playing, stop it...")
STOP_STREAM()
STOP_AUDIO_SCENE("WEB_EPSILONISM_SITE_MUSIC_SCENE")
bStreamLoaded = FALSE
bDoLoadStream = FALSE
ENDIF
ENDIF
//
IF bAWStreamLoaded OR bDoLoadAWStream
IF NOT IS_GAME_IN_CONTROL_OF_MUSIC()
CPRINTLN(DEBUG_INTERNET, "IS_GAME_IN_CONTROL_OF_MUSIC returned false while arena wars music was playing, stop it...")
STOP_STREAM()
// STOP_AUDIO_SCENE("DLC_AW_Arena_Websites_Sounds")
bAWStreamLoaded = FALSE
bDoLoadAWStream = FALSE
ENDIF
ENDIF
IF bRefreshButtons
//refresh the damn buttons
PREP_BROWSER_BUTTONS(TRUE)
bRefreshButtons = FALSE
ELSE
//check if the buttons need refreshing
INT kbFlag = GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_KEYBOARD_FLAG_INDEX)
IF kbFlag = 0
IF bKeyboardHelp
bRefreshButtons = TRUE
bKeyboardHelp = FALSE
ENDIF
ELSE
IF !bKeyboardHelp
bRefreshButtons = TRUE
bKeyboardHelp = TRUE
ENDIF
ENDIF
INT backflag = 0// GET_GLOBAL_ACTIONSCRIPT_FLAG(SCALEFORM_BACKBUTTON_FLAG_INDEX)
IF backflag = 0
IF bShowingBackButton
bRefreshButtons = TRUE
bShowingBackButton = FALSE
ENDIF
ELSE
IF !bShowingBackButton
bRefreshButtons = TRUE
bShowingBackButton = TRUE
ENDIF
ENDIF
IF HAVE_CONTROLS_CHANGED(FRONTEND_CONTROL)
bRefreshButtons = TRUE
ENDIF
ENDIF
DO_CHECK_FOR_RAGDOLL_OR_DEAD()
IF (NOT IS_SKYSWOOP_AT_GROUND())
OR IS_TRANSITION_ACTIVE()
OR IS_SCREEN_FADED_OUT()
OR IS_INTERACTION_MENU_OPEN()
#IF FEATURE_FIXER
OR g_bBlockInternetApp
#ENDIF
SET_BROWSER_OPEN(FALSE)
g_bBrowserQuitMessage = TRUE
ENDIF
IF IS_CUTSCENE_PLAYING()
// OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH ("cellphone_flashhand")) > 0
// AND CHECK_FOR_ABNORMAL_EXIT())
CPRINTLN(DEBUG_INTERNET, "Browser abnormal exit")
SET_BROWSER_OPEN(FALSE)
g_bBrowserQuitMessage = TRUE
ENDIF
IF IS_BROWSER_OPEN()
//Steve T - Eyefind Email handling routines.
/*
IF b_MessageBodyFilledThisCycle
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.14, "STRING", "TRUE TRUE TRUE TRUE TRUE")
ELSE
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.14, "STRING", "FALS FALS FALS FALS FALS")
ENDIF
*/
//Critical!
IF b_GamertagGrabSignalledForceClose = TRUE
#IF IS_DEBUG_BUILD
cdPrintstring("AppInternet - b_GamertagGrabSignalledForceClose was TRUE after grab process completed. Aborting browser.")
cdPrintnl()
#ENDIF
b_GamertagGrabSignalledForceClose = FALSE
FORCE_CLOSE_BROWSER()
ENDIF
IF EmailState >= eSF_FILLING
IF GET_CURRENT_WEBSITE_ID() = ENUM_TO_INT(WWW_EYEFIND_INFO)
IF GET_CURRENT_WEBPAGE_ID() <> 7
AND GET_CURRENT_WEBPAGE_ID() <> 8
IF EmailState <> eSTATUS_UPDATE
EmailState = eDORMANT
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Eyefind Email. Move from Eyefind Email page detected - returning to eDORMANT state.")
cdPrintnl()
#ENDIF
ELSE
/*
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintstring("AppInternet - Eyefind Email. Move from Eyefind Email page detected - remaining in eSTATUS_UPDATE.")
cdPrintnl()
#ENDIF
*/
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH EmailState
CASE eDORMANT
IF IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID()) //Fix for 2437163. The inbox will always be empty and no contacts will appear if the user account does not have communication privileges.
CheckForEmailAwakeningFromDormantState()
CheckForComposeAwakening()
ENDIF
BREAK
CASE eINITIAL
IF i_InboxDepth = 0
InitialiseEmailRetrieval(0, 6) //First param is the starting index Second param is the number of emails to grab. Only 5 per page but need to check the sixth for displaying the older button.
ELSE
InitialiseEmailRetrieval( (5 * i_InboxDepth) , 6)
ENDIF
BREAK
CASE eRETRIEVAL
MaintainRetrievalProcess()
BREAK
CASE eSF_FILLING
IF i_InboxDepth = 0
FillScaleformWithRetrievedEmails( 0, 5 )
ELSE
FillScaleformWithRetrievedEmails( 0, 5 ) //This seems to work so the indices are reset when you grab a new batch!
//FillScaleformWithRetrievedEmails( (5 * i_InboxDepth), ((5 * i_InboxDepth) + 5) ) //Hardcoded. Need to have these batch numbers dynamically update according to what part of the inbox we're scrolling through.
ENDIF
BREAK
CASE eNEUTRAL_BROWSING
IF b_WaitingToRetrieveGamerTag = FALSE
//Steve T - This would need to be wrapped in a check for the scaleform webpage details, so we know ww are on the Eyefind page.
Player_to_Player_Email_Main()
CheckForComposeAwakening()
ENDIF
BREAK
CASE eCOMPOSING
IF b_WaitingToRetrieveGamerTag = FALSE
Player_to_Player_Composing_Main()
ENDIF
BREAK
CASE eSTATUS_UPDATE
IF b_WaitingToRetrieveGamerTag = FALSE
Status_Update_Screen_Handling()
ENDIF
//Might need to be included again for a stronger fix for #1903168.
/*
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
#IF IS_DEBUG_BUILD
cdPrintstring ("AppInternet - FORCE_CLOSE_BROWSER from Eyefind Email Status Update Screen.")
cdPrintnl()
#ENDIF
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER from Eyefind Email Status Update Screen.")
FORCE_CLOSE_BROWSER()
ENDIF
*/
BREAK
ENDSWITCH
//End of Steve T MP human to human email work
IF bClickDetector
IF g_eWebSiteIndexFeedback != INVALID_WEBSITE_INDEX
// Website element click detection
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "Valid website click detected: Site = ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback),
" Page = ", g_iWebPageIndexFeedback,
" Index = ", g_iLastSelectedWebIndex)
#ENDIF
#IF IS_DEBUG_BUILD
cdPrintnl()
cdPrintnl()
cdPrintstring("SteveT_Click Detection. g_eWebSiteIndexFeedback was ")
cdPrintint(ENUM_TO_INT(g_eWebSiteIndexFeedback))
cdPrintnl()
#ENDIF
// This should be somewhere else...
SWITCH g_eWebSiteIndexFeedback
// Vehicle websites
CASE WWW_LEGENDARYMOTORSPORT_NET
CASE WWW_ELITASTRAVEL_COM
CASE WWW_WARSTOCK_D_CACHE_D_AND_D_CARRY_COM
CASE WWW_DOCKTEASE_COM
CASE WWW_PANDMCYCLES_COM
CASE WWW_SOUTHERNSANANDREASSUPERAUTOS_COM
CASE WWW_BENNYSORIGINALMOTORWORKS_COM
IF g_iWebPageIndexFeedback = 15
IF g_iLastSelectedWebIndex = 2 //confirm yes button
IF NOT confCheck
AND g_eWebSiteIndexFeedback = WWW_BENNYSORIGINALMOTORWORKS_COM
//
CWARNINGLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: bypass!! g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
ELSE
INT iAltVersion
iAltVersion = -1
IF IS_SBV_AN_ALTERNATE_VEHICLE(confSbv, g_eWebSiteIndexFeedback, g_eLastBuyableVehicleColourSelected)
iAltVersion = 1
ENDIF
CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
DO_MP_VEHICLE_BUY(g_eWebSiteIndexFeedback, iAltVersion)
ENDIF
ELIF g_iLastSelectedWebIndex = 3//confirm no button
DO_VEHICLE_FAIL_PAGE(g_eWebSiteIndexFeedback, VSFR_CANCELED,UNSET_BUYABLE_VEHICLE, -1)
ENDIF
ELIF g_iWebPageIndexFeedback = 4
IF g_eWebSiteIndexFeedback = WWW_BENNYSORIGINALMOTORWORKS_COM
AND g_iLastSelectedWebIndex = 3
// IF IS_SHOP_AVAILABLE(CARMOD_SHOP_SUPERMOD)
CPRINTLN(DEBUG_INTERNET, "WWW_BENNYSORIGINALMOTORWORKS_COM: SET GPS ROUTE")
SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(GET_SHOP_COORDS(CARMOD_SHOP_SUPERMOD))
// ELSE
// CPRINTLN(DEBUG_INTERNET, "WWW_BENNYSORIGINALMOTORWORKS_COM: don't set gps route, supermod shop not available")
// ENDIF
ENDIF
ENDIF
BREAK
CASE WWW_ARENAWAR_TV
SWITCH g_iWebPageIndexFeedback
//==Arena Garage Purchase Page==
CASE 10
IF g_iLastSelectedWebIndex = 6
INT iArenaGarage
iArenaGarage = ENUM_TO_INT(ARENA_GARAGE_1) //GET_LAST_CLICKED_ARENA_GARAGE()
// IF (g_iLastSelectedWebIndex = 7 AND iStaticLastPage = 41)
CPRINTLN(DEBUG_INTERNET, "ARENA_GARAGE property buy attempt triggered on index: ", iArenaGarage)
// ELSE
// CASSERTLN(DEBUG_INTERNET, "ARENA_GARAGE property replace(?) attempt triggered on index: ", iArenaGarage)
// ENDIF
// INT iResultSlot
// iResultSlot = 0
// BUY_MP_ARENA_GARAGE_FROM_WEBSITE(INT_TO_ENUM(ARENA_GARAGE_ID, iArenaGarage), iResultSlot)
ENDIF
BREAK
CASE 14
IF g_iLastSelectedWebIndex = 0
AND (eBoughtArenaIndex != ARENA_GARAGE_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_ARENA_GARAGE_ID(eBoughtArenaIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_ARENA_GARAGE_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on ARENA_GARAGE: ", eBoughtArenaIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_5_ARENA_GARAGE)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_5_ARENA_GARAGE)
ENDIF
ENDIF
BREAK
// //==Arena Contender Vehicle Pages==
// CASE 29
// CASE 31
// IF g_iLastSelectedWebIndex = 0
// OR g_iLastSelectedWebIndex = 1
// IF NOT confCheck
// //
// CWARNINGLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: bypass!! g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
// ELSE
// INT iAltVersion
// iAltVersion = -1
// IF IS_SBV_AN_ALTERNATE_VEHICLE(confSbv, g_eWebSiteIndexFeedback, g_eLastBuyableVehicleColourSelected)
// iAltVersion = 1
// ENDIF
//
// CPRINTLN(DEBUG_INTERNET, "DO_MP_VEHICLE_BUY: g_eWebSiteIndexFeedback:", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback), ", g_iWebPageIndexFeedback:", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", confCheck:", GET_STRING_FROM_BOOL(confCheck))
// DO_MP_VEHICLE_BUY(g_eWebSiteIndexFeedback, iAltVersion)
// ENDIF
// ELIF g_iLastSelectedWebIndex = 3//confirm no button
// DO_VEHICLE_FAIL_PAGE(g_eWebSiteIndexFeedback, VSFR_CANCELED,UNSET_BUYABLE_VEHICLE, -1)
// ENDIF
// BREAK
ENDSWITCH
BREAK
CASE WWW_BLEETER_COM
HANDLE_BLEETER_SELECT(mov)
BREAK
CASE WWW_LIFEINVADER_COM
IF g_iLastSelectedWebIndex >= 4
CHANGE_LIFEINVADER_PROFILE(mov, g_iLastSelectedWebIndex)
ELSE
HANDLE_LIFEINVADER_PROFILE_BUTTON_CLICK(mov, g_iLastSelectedWebIndex)
ENDIF
BREAK
#IF NOT IS_JAPANESE_BUILD
// CASE WWW_HUSHSMUSH_COM
// CHECK_HUSHSMUSH_CLICK(g_iWebPageIndexFeedback, g_iLastSelectedWebIndex)
// BREAK
#ENDIF
CASE WWW_THECHILDRENOFTHEMOUNTAIN_COM
IF iStaticCurrentPage = 4
IF g_iLastSelectedWebIndex = 0
AND g_iChildrenOfTheMountainStatus < 2
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) >= 199
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player has enough money, deducted 199")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_UNLOGGED_SMALL_ACTION, 199)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
END_SCALEFORM_MOVIE_METHOD()
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: SET_DATA_SLOT set to 2")
g_iChildrenOfTheMountainStatus = 2
ELSE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player doesn't have enough money")
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
GO_TO_WEBSITE("WWW_THECHILDRENOFTHEMOUNTAIN_COM_S_PAYMENTERROR")
ENDIF
ENDIF
ELIF iStaticCurrentPage = 6
IF g_iLastSelectedWebIndex = 0
AND g_iChildrenOfTheMountainStatus < 3
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) >= 4999
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player has enough money, deducted 4999")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_UNLOGGED_SMALL_ACTION, 4999)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3)
END_SCALEFORM_MOVIE_METHOD()
g_iChildrenOfTheMountainStatus = 3
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: SET_DATA_SLOT set to 3")
ELSE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player doesn't have enough money")
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
GO_TO_WEBSITE("WWW_THECHILDRENOFTHEMOUNTAIN_COM_S_PAYMENTERROR")
ENDIF
ENDIF
ELIF iStaticCurrentPage = 8
IF g_iLastSelectedWebIndex = 0
AND g_iChildrenOfTheMountainStatus < 5
IF GET_TOTAL_CASH(GET_CURRENT_PLAYER_PED_ENUM()) >= 9999
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player has enough money, deducted 9999")
DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), BAAC_UNLOGGED_SMALL_ACTION, 9999)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(5)
END_SCALEFORM_MOVIE_METHOD()
g_iChildrenOfTheMountainStatus = 5
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: SET_DATA_SLOT set to 5")
ELSE
CPRINTLN(DEBUG_INTERNET, "WWW_THECHILDRENOFTHEMOUNTAIN_COM: Player doesn't have enough money")
PLAY_SOUND_FRONTEND(-1, "Click_Fail", "WEB_NAVIGATION_SOUNDS_PHONE")
GO_TO_WEBSITE("WWW_THECHILDRENOFTHEMOUNTAIN_COM_S_PAYMENTERROR")
ENDIF
ENDIF
ENDIF
BREAK
CASE WWW_MAZE_D_BANK_COM
// MP only
IF g_bInMultiplayer
IF g_iWebPageIndexFeedback = 3
// Evaluate button press from menu page
SF_BANK_MENU_UPDATE_MP(g_iLastSelectedWebIndex)
ELIF g_iWebPageIndexFeedback = 4
// Evaluate button press from withdrawals page
SF_BANK_WITHDRAWAL_UPDATE_MP(g_iLastSelectedWebIndex)
ELIF g_iWebPageIndexFeedback = 5
// Evaluate button press from deposits page
SF_BANK_DEPOSIT_UPDATE_MP(g_iLastSelectedWebIndex)
ELIF g_iWebPageIndexFeedback = 8
// Evaluate button press from message screen
SF_BANK_MESSAGE_UPDATE_MP(mov, g_iLastSelectedWebIndex, &RENDER_BROWSER)
ENDIF
ENDIF
BREAK
CASE WWW_DYNASTY8EXECUTIVEREALTY_COM
// MP only
IF g_bInMultiplayer
IF g_iWebPageIndexFeedback = 11
AND g_iLastSelectedWebIndex = 0
IF NOT IS_PROPERTY_OFFICE_GARAGE(iBoughtPropertyIndex)
#IF FEATURE_FIXER
AND (eBoughtFixerHQIndex = FIXER_HQ_ID_INVALID)
#ENDIF
INT iOffice
iOffice = GET_LAST_CLICKED_OFFICE()
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on office: ", iOffice, " ", mpProperties[iOffice].vPurchaseLocation, " [iBoughtPropertyIndex:", iBoughtPropertyIndex, "]")
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(mpProperties[iOffice].vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOffice, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_0)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iOffice, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_0)
ENDIF
#IF FEATURE_FIXER
ELIF (eBoughtFixerHQIndex != FIXER_HQ_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_FIXER_HQ_ID(eBoughtFixerHQIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_FIXER_HQ_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on Fixer HQ: ", eBoughtFixerHQIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_9_FIXER_HQ)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_9_FIXER_HQ)
ENDIF
#ENDIF
ELSE
INT iGarage
iGarage = GET_LAST_CLICKED_OFFICE() //iBoughtPropertyIndex
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on office garage: ", iGarage, " ", mpProperties[iGarage].vBlipLocation[2], " [iBoughtPropertyIndex:", iBoughtPropertyIndex, "]")
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(mpProperties[iGarage].vBlipLocation[2])
SWITCH_TO_PROPERTY_RESULTS_PAGE(iGarage, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_0)
IF g_bForceCloseBrowserForOfficeGarageGPS
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Shutdown due to gps placement on office garage: ", iGarage, " ", mpProperties[iGarage].vBlipLocation[2], "")
FORCE_CLOSE_BROWSER()
ENDIF
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iGarage, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_0)
ENDIF
ENDIF
ENDIF
IF iStaticCurrentPage = 2 //offices
INT iThisLastClickedOffice
iThisLastClickedOffice = 0
SWITCH g_iLastSelectedWebIndex
CASE 0 //Renovate button clicked
iThisLastClickedOffice = iLastClickedOffice
BREAK
CASE 4
CASE 5
iThisLastClickedOffice = PROPERTY_OFFICE_1
BREAK
CASE 6
CASE 7
iThisLastClickedOffice = PROPERTY_OFFICE_2_BASE
BREAK
CASE 8
CASE 9
iThisLastClickedOffice = PROPERTY_OFFICE_3
BREAK
CASE 10
CASE 11
iThisLastClickedOffice = PROPERTY_OFFICE_4
BREAK
ENDSWITCH
IF iThisLastClickedOffice != iLastClickedOffice
CPRINTLN(DEBUG_INTERNET, "Clicked Office iStaticCurrentPage[", iStaticCurrentPage, "] iThisLastClickedOffice:", iThisLastClickedOffice, ", replacing:", iLastClickedOffice)
iLastClickedOffice = iThisLastClickedOffice
ENDIF
// iLastClickedOffice = GET_LAST_CLICKED_OFFICE()
// CPRINTLN(DEBUG_INTERNET, "Last Clicked Office: iStaticCurrentPage[", iStaticCurrentPage, "] g_iLastSelectedWebIndex:", g_iLastSelectedWebIndex, ", iLastClickedOffice:", iLastClickedOffice)
ENDIF
ENDIF
BREAK
CASE FORECLOSURES_MAZE_D_BANK_COM
// MP only
IF g_bInMultiplayer
IF g_iWebPageIndexFeedback = 10
AND g_iLastSelectedWebIndex = 0
IF (eBoughtFactoryIndex != FACTORY_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_FACTORY_ID(eBoughtFactoryIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_BUNKER_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on bunker: ", eBoughtFactoryIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_1_FACTORY)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_1_FACTORY)
ENDIF
ELIF (eBoughtHangarIndex != HANGAR_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_HANGAR_ID(eBoughtHangarIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_HANGAR_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on hangar: ", eBoughtHangarIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_2_HANGAR)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_2_HANGAR)
ENDIF
ELIF (eBoughtDefunctBaseIndex != DEFUNCT_BASE_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_DEFUNCT_BASE_ID(eBoughtDefunctBaseIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_DEFUNCT_BASE_MAZEBANK_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on defunct base: ", eBoughtDefunctBaseIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_3_DEFUNCT_BASE)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_3_DEFUNCT_BASE)
ENDIF
ELIF (eBoughtNightclubIndex != NIGHTCLUB_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_NIGHTCLUB_ID(eBoughtNightclubIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_NIGHTCLUB_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on nightclub: ", eBoughtNightclubIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_4_NIGHTCLUB)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_4_NIGHTCLUB)
ENDIF
ELIF (eBoughtArcadeIndex != ARCADE_PROPERTY_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_ARCADE_PROPERTY_ID(eBoughtArcadeIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_ARCADE_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on Arcade: ", eBoughtArcadeIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_7_ARCADE)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_7_ARCADE)
ENDIF
ELIF (eBoughtAutoShopIndex != AUTO_SHOP_PROPERTY_ID_INVALID)
SIMPLE_INTERIORS eSimpleInteriorID
eSimpleInteriorID = GET_SIMPLE_INTERIOR_ID_FROM_AUTO_SHOP_PROPERTY_ID(eBoughtAutoShopIndex)
VECTOR vPurchaseLocation
vPurchaseLocation = GET_AUTO_SHOP_BLIP_COORDS(eSimpleInteriorID)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on Auto shop: ", eBoughtAutoShopIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_8_AUTO_SHOP)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_8_AUTO_SHOP)
ENDIF
ELSE
INT iClubhouse
iClubhouse = GET_LAST_CLICKED_CLUBHOUSE()
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on clubhouse: ", iClubhouse, " ", mpProperties[iClubhouse].vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(mpProperties[iClubhouse].vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(iClubhouse, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_0)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(iClubhouse, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_0)
ENDIF
ENDIF
ENDIF
IF iStaticCurrentPage = 36
AND NOT bTVOn
SWITCH g_iLastSelectedWebIndex
CASE 11 //LIGHTING 1
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: PLAY LIGHTING 1 VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
// SETUP_VIDEO_PLAYBACK("PL_WEB_FOS")
// iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+5000
BREAK
CASE 12 //LIGHTING 2
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: PLAY LIGHTING 2 VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
SETUP_VIDEO_PLAYBACK("PL_WEB_LR1")
iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+644 //- Cathedral - 19 seconds
BREAK
CASE 13 //LIGHTING 3
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: PLAY LIGHTING 3 VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
SETUP_VIDEO_PLAYBACK("PL_WEB_LR2")
iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+443 //- Lightning Storm - 18.5 seconds
BREAK
CASE 14 //LIGHTING 4
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: PLAY LIGHTING 4 VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
SETUP_VIDEO_PLAYBACK("PL_WEB_LR3")
iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+522 //- Surge - 16 seconds
BREAK
CASE 15 //LIGHTING 5
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: PLAY LIGHTING 5 VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
SETUP_VIDEO_PLAYBACK("PL_WEB_LR4")
iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+528 //- Dazzle - 23 seconds
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "FORECLOSURES_MAZE_D_BANK_COM: no video - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
BREAK
ENDSWITCH
ENDIF
ENDIF
BREAK
CASE WWW_THEDIAMONDCASINOANDRESORT_COM
IF g_iWebPageIndexFeedback = 17
AND g_iLastSelectedWebIndex = 0
AND (eBoughtCasinoIndex != CASINO_APARTMENT_ID_INVALID)
//==Casino Apt Waypoint Set - PURCHASED==
VECTOR vPurchaseLocation
vPurchaseLocation = GET_CASINO_BLIP_COORDS(SIMPLE_INTERIOR_CASINO)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on CASINO_APT: ", eBoughtCasinoIndex, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_6_CASINO_APARTMENT)
IF NOT IS_PLAYER_IN_CASINO_APARTMENT_THEY_OWN(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "FORCE_CLOSE_BROWSER - url:bugstar:5726270 - Can we please close the website if players press \"Set Waypoint\" after purchasing the Penthouse?")
FORCE_CLOSE_BROWSER()
ENDIF
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_6_CASINO_APARTMENT)
ENDIF
ELIF g_iWebPageIndexFeedback = 1
AND g_iLastSelectedWebIndex = 1
//==Casino Apt Waypoint Set - HOME PAGE==
VECTOR vPurchaseLocation
vPurchaseLocation = GET_CASINO_BLIP_COORDS(SIMPLE_INTERIOR_CASINO)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on CASINO_APT: ", CASINO_APARTMENT_1, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_6_CASINO_APARTMENT)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_6_CASINO_APARTMENT)
ENDIF
ELIF g_iWebPageIndexFeedback = 6
AND g_iLastSelectedWebIndex = 0
//==Casino Apt Waypoint Set - MEMBERSHIP==
VECTOR vPurchaseLocation
vPurchaseLocation = GET_CASINO_BLIP_COORDS(SIMPLE_INTERIOR_CASINO)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on CASINO_APT: ", CASINO_APARTMENT_1, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_6_CASINO_APARTMENT)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_6_CASINO_APARTMENT)
ENDIF
ELIF g_iWebPageIndexFeedback = 2
AND g_iLastSelectedWebIndex = 0
//==Casino Apt Waypoint Set - CASINO==
VECTOR vPurchaseLocation
vPurchaseLocation = GET_CASINO_BLIP_COORDS(SIMPLE_INTERIOR_CASINO)
CPRINTLN(DEBUG_INTERNET, "Property gps placement attempted on CASINO_APT: ", CASINO_APARTMENT_1, " ", vPurchaseLocation)
IF SET_ROUTE_TARGET_FOR_AVERY_SITE_GPS(vPurchaseLocation)
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, TRUE, FALSE, rpmt_6_CASINO_APARTMENT)
ELSE
SWITCH_TO_PROPERTY_RESULTS_PAGE(-1, "_S_WAYPOINT_D_SET", FALSE, FALSE, FALSE, TRUE, rpmt_6_CASINO_APARTMENT)
ENDIF
ELIF g_iWebPageIndexFeedback = 8
AND g_iLastSelectedWebIndex = 2
//==Casino Apt DESIGN YOUR OWN==
CPRINTLN(DEBUG_INTERNET, "DESIGN YOUR OWN: g_iWebPageIndexFeedback: ", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
iBoughtCasinoPreset = 1
ELIF g_iWebPageIndexFeedback = 8
AND g_iLastSelectedWebIndex = 4
//==Casino Apt HIGH ROLLER==
CPRINTLN(DEBUG_INTERNET, "HIGH ROLLER: g_iWebPageIndexFeedback: ", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
iBoughtCasinoPreset = 2
ELIF g_iWebPageIndexFeedback = 8
AND g_iLastSelectedWebIndex = 6
//==Casino Apt CRASH PAD==
CPRINTLN(DEBUG_INTERNET, "CRASH PAD: g_iWebPageIndexFeedback: ", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
iBoughtCasinoPreset = 3
ELIF g_iWebPageIndexFeedback = 8
AND g_iLastSelectedWebIndex = 8
//==Casino Apt PARTY PENTHOUSE==
CPRINTLN(DEBUG_INTERNET, "PARTY PENTHOUSE: g_iWebPageIndexFeedback: ", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
iBoughtCasinoPreset = 4
ELSE
CPRINTLN(DEBUG_INTERNET, "unknown g_iWebPageIndexFeedback: ", g_iWebPageIndexFeedback, ", g_iLastSelectedWebIndex: ", g_iLastSelectedWebIndex, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
ENDIF
IF iStaticCurrentPage = 1
AND NOT bTVOn
SWITCH g_iLastSelectedWebIndex
CASE 0 //CASINO TRAILER
CPRINTLN(DEBUG_INTERNET, "WWW_THEDIAMONDCASINOANDRESORT_COM: PLAY CASINO TRAILER VIDEO - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
SETUP_VIDEO_PLAYBACK("PL_WEB_CAS")
iTVOnTimeoutFrameCount = GET_FRAME_COUNT()+2467+500
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "WWW_THEDIAMONDCASINOANDRESORT_COM: no video - currentPage:", iStaticCurrentPage, ", lastIndex:", g_iLastSelectedWebIndex)
BREAK
ENDSWITCH
ENDIF
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "invalid g_eWebSiteIndexFeedback: ", g_eWebSiteIndexFeedback, " - ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback))
BREAK
ENDSWITCH
IF eStaticCurrentSite != WWW_DYNASTY8EXECUTIVEREALTY_COM
iLastClickedOffice = 0
ENDIF
ELSE
// Website element click detection
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_INTERNET, "Invalid website click detected: Site = ", GET_WEBSITE_FROM_INDEX(g_eWebSiteIndexFeedback),
" Page = ", g_iWebPageIndexFeedback,
" Index = ", g_iLastSelectedWebIndex,
" g_sLastSiteHash = ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash))
#ENDIF
SWITCH g_sLastSiteHash
// Websites with embedded video
CASE HASH("WWW_FAMEORSHAME_NET")
IF NOT bTVOn
IF iStaticCurrentPage = 2 AND g_iLastSelectedWebIndex = 6 //Watch Now
CPRINTLN(DEBUG_INTERNET, "WWW_FAMEORSHAME_NET: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_FOS")
ELIF iStaticCurrentPage = 1 AND g_iLastSelectedWebIndex = 8 //homepage
SETUP_VIDEO_PLAYBACK("PL_WEB_FOS")
ELIF iStaticCurrentPage = 4 AND g_iLastSelectedWebIndex = 8 // Top acts
CPRINTLN(DEBUG_INTERNET, "WWW_FAMEORSHAME_NET: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_FOS")
ELIF iStaticCurrentPage = 4 AND g_iLastSelectedWebIndex = 8 // Top acts
CPRINTLN(DEBUG_INTERNET, "WWW_FAMEORSHAME_NET: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_FOS")
ENDIF
ENDIF
BREAK
CASE HASH("WWW_JACKHOWITZER_COM")
#IF NOT IS_JAPANESE_BUILD
IF NOT bTVOn
IF g_iLastSelectedWebIndex = 7
CPRINTLN(DEBUG_INTERNET, "WWW_JACKHOWITZER_COM: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_HOWITZER")
ENDIF
ENDIF
#ENDIF
BREAK
CASE HASH("WWW_KUNGFURAINBOWLAZERFORCE_COM")
IF NOT bTVOn
IF g_iLastSelectedWebIndex = 6
CPRINTLN(DEBUG_INTERNET, "WWW_KUNGFURAINBOWLAZERFORCE_COM: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_KFLF")
ENDIF
ENDIF
BREAK
CASE HASH("WWW_PRINCESSROBOTBUBBLEGUM_COM")
// Disabled for PC ratings build B* 2199116
IF NOT (IS_PC_VERSION()
AND NOT IS_DLC_PRESENT(HASH("patchDay3NG")))
IF NOT bTVOn
IF g_iLastSelectedWebIndex = 6
CPRINTLN(DEBUG_INTERNET, "WWW_PRINCESSROBOTBUBBLEGUM_COM: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_PRB2")
ENDIF
ENDIF
ENDIF
BREAK
CASE HASH("WWW_REPUBLICANSPACERANGERS_COM")
IF NOT bTVOn
IF g_iLastSelectedWebIndex = 8
CPRINTLN(DEBUG_INTERNET, "WWW_REPUBLICANSPACERANGERS_COM: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_RANGERS")
ENDIF
ENDIF
BREAK
CASE HASH("WWW_RIGHTEOUSSLAUGHTER7_COM")
IF NOT bTVOn
IF g_iLastSelectedWebIndex = 3
CPRINTLN(DEBUG_INTERNET, "WWW_RIGHTEOUSSLAUGHTER7_COM: PLAY VIDEO")
SETUP_VIDEO_PLAYBACK("PL_WEB_RS")
ENDIF
ENDIF
BREAK
CASE HASH("WWW_SAWATERANDPOWER_COM")
IF g_iLastSelectedWebIndex = 5
CPRINTLN(DEBUG_INTERNET, "WWW_SAWATERANDPOWER_COM: PLAY VIDEO")
ENDIF
BREAK
// Taco dialogue
CASE HASH("WWW_TACO_D_BOMB_COM")
IF g_iWebPageIndexFeedback = 2
CPRINTLN(DEBUG_INTERNET, "WWW_TACO_D_BOMB_COM: PLAY_TACO_LINE")
SWITCH g_iLastSelectedWebIndex
CASE 0
PLAY_TACO_LINE(TSL_PACOW_TASTY, spfc)
BREAK
CASE 1
PLAY_TACO_LINE(TSL_PACOW_COLON, spfc)
BREAK
CASE 2
PLAY_TACO_LINE(TSL_PACOW_CSEC, spfc)
BREAK
CASE 3
PLAY_TACO_LINE(TSL_PACOW_DOG, spfc)
BREAK
CASE 4
PLAY_TACO_LINE(TSL_PACOW_VOMIT, spfc)
BREAK
CASE 5
PLAY_TACO_LINE(TSL_PACOW_PAIN, spfc)
BREAK
CASE 6
PLAY_TACO_LINE(TSL_PACOW_MELT, spfc)
BREAK
ENDSWITCH
ENDIF
BREAK
DEFAULT
CPRINTLN(DEBUG_INTERNET, "unknown g_sLastSiteHash: ", g_sLastSiteHash, " - ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash))
BREAK
ENDSWITCH
ENDIF
bClickDetector = FALSE
ENDIF
IF IS_FLOATING_HELP_TEXT_ON_SCREEN(FLOATING_HELP_TEXT_ID_1)
CLEAR_FLOATING_HELP(FLOATING_HELP_TEXT_ID_1)
ENDIF
IF IS_FLOATING_HELP_TEXT_ON_SCREEN(FLOATING_HELP_TEXT_ID_2)
CLEAR_FLOATING_HELP(FLOATING_HELP_TEXT_ID_2)
ENDIF
RENDER_BROWSER()
WAIT(0) // Has to render
SET_INPUT_EXCLUSIVE (PLAYER_CONTROL, (INT_TO_ENUM (CONTROL_ACTION, PHONE_DELETE_OPTION_INPUT)))
SET_INPUT_EXCLUSIVE (PLAYER_CONTROL, (INT_TO_ENUM (CONTROL_ACTION, PHONE_SPECIAL_OPTION_INPUT)))
IF g_bBrowserUserMode
PASS_INPUTS_TO_BROWSER(mov)
ELSE
BROWSER_CURSOR_LOADING(FALSE)
IF iBSTutorialProgress = 3 //scroll on the listings page
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov, "SET_ANALOG_STICK_INPUT",0.0,0.0,33.0)
ELSE
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_NORET(mov, "SET_ANALOG_STICK_INPUT",0.0,0.0,0.0)
ENDIF
ENDIF
IF (NOT (bTempFirstLoad))
TEXT_LABEL_63 sGoto = "WWW_EYEFIND_INFO"
SWITCH g_BrowserStartState
CASE SBSS_CashMachineFinance
sGoto = "WWW_BANK_COM"
BREAK
CASE SBSS_EyeFind
sGoto = "WWW_EYEFIND_INFO"
BREAK
CASE SBSS_LifeInvader
sGoto = "WWW_LIFEINVADER_COM"
g_iLifeInvaderTutorialLastVisitedPage = -1
BREAK
CASE SBSS_LifeInvader_BrucieResponse
g_iLifeInvaderTutorialLastVisitedPage = -1
sGoto = "WWW_LIFEINVADER_COM_S_USER584348_3"
BREAK
CASE SBSS_Launch_Link
sGoto = g_BrowserLinkToLaunch
BREAK
CASE SBSS_Bawsaq
sGoto = "WWW_BAWSAQ_COM"
BREAK
CASE SBSS_SHOP_RESTORE
sGoto = g_sTransitionSessionData.sEndReserve.stMPBrowserFromShopSite
BREAK
CASE SBSS_ArenaWar
sGoto = "WWW_ARENAWAR_TV"
BREAK
CASE SBSS_Casino
IF !DOES_PLAYER_OWN_A_CASINO_APARTMENT(PLAYER_ID())
sGoto = "WWW_THEDIAMONDCASINOANDRESORT_COM_S_SUITES"
ELSE
sGoto = "WWW_THEDIAMONDCASINOANDRESORT_COM_S_RENOVATE"
ENDIF
BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> initial triggered with: ",sGoto)
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE(sGoto)
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
IF ARE_STRINGS_EQUAL(sGoto, "WWW_EYEFIND_INFO")
LOAD_EYEFIND_TEXT_SLOT()
g_iWebPageIndexFeedback = 1
g_eWebSiteIndexFeedback = WWW_EYEFIND_INFO
//url:bugstar:5396844 - Internet - Shop tiles become unresponsive / unclickable after going to the inbox then quickly back to the Eyefind homepage
IF GET_CURRENT_WEBPAGE_ID() <> 7
AND GET_CURRENT_WEBPAGE_ID() <> 8
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> \"",sGoto, "\" triggered with webpageID ", GET_CURRENT_WEBPAGE_ID(), ", call SET_DATA_SLOT_EMPTY")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT_EMPTY")
END_SCALEFORM_MOVIE_METHOD()
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> \"",sGoto, "\" triggered with webpageID ", GET_CURRENT_WEBPAGE_ID(), ", dont call SET_DATA_SLOT_EMPTY")
ENDIF
SF_EYEFIND(mov, 1, sRepeatInfo, FALSE)
g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
ELIF ARE_STRINGS_EQUAL(sGoto, "WWW_DYNASTY8REALESTATE_COM_S_LOS_D_SANTOS")
GO_TO_WEBSITE("WWW_DYNASTY8REALESTATE_COM") //works
g_iWebPageIndexFeedback = 1
g_eWebSiteIndexFeedback = WWW_DYNASTY8REALESTATE_COM
POPULATE_MP_PROPERTY_SITE_PIN_MAP(mov)
g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
bPopulatePropertySitePinMap = TRUE
tl63sPopulatePropertySitePinMap = (sGoto)
ELIF ARE_STRINGS_EQUAL(sGoto, "WWW_DYNASTY8EXECUTIVEREALTY_COM_S_OFFICES")
GO_TO_WEBSITE("WWW_DYNASTY8EXECUTIVEREALTY_COM")
// g_iWebPageIndexFeedback = 1
// g_eWebSiteIndexFeedback = WWW_DYNASTY8EXECUTIVEREALTY_COM
//
// POPULATE_MP_EXEC_PROPERTY_SITE_PIN_MAP(mov, TRUE)
// g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
// bPopulatePropertySitePinMap = TRUE
//
// tl63sPopulatePropertySitePinMap = (sGoto)
ELIF ARE_STRINGS_EQUAL(sGoto, "FORECLOSURES_MAZE_D_BANK_COM_S_PROPERTIES")
GO_TO_WEBSITE("FORECLOSURES_MAZE_D_BANK_COM")
// g_iWebPageIndexFeedback = 1
// g_eWebSiteIndexFeedback = FORECLOSURES_MAZE_D_BANK_COM
//
// POPULATE_MP_BIKER_PROPERTY_SITE_PIN_MAP(mov, TRUE)
// g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
// bPopulatePropertySitePinMap = TRUE
//
// tl63sPopulatePropertySitePinMap = (sGoto)
ELIF ARE_STRINGS_EQUAL(sGoto, "WWW_THEDIAMONDCASINOANDRESORT_COM_S_SUITES")
OR ARE_STRINGS_EQUAL(sGoto, "WWW_THEDIAMONDCASINOANDRESORT_COM_S_RENOVATE")
// GO_TO_WEBSITE("WWW_THEDIAMONDCASINOANDRESORT_COM")
//
// g_iWebPageIndexFeedback = 1
// g_eWebSiteIndexFeedback = WWW_THEDIAMONDCASINOANDRESORT_COM
// POPULATE_MP_CASINO_PROPERTY_SITE_PIN_MAP(mov)
g_iTimeLastBrowserRefresh = GET_GAME_TIMER()
bPopulatePropertySitePinMap = TRUE
g_bPropertyRefreshTrigger = TRUE
//
// tl63sPopulatePropertySitePinMap = ("WWW_THEDIAMONDCASINOANDRESORT_COM")
ENDIF
bTempFirstLoad = TRUE
ENDIF
IF ChildInitStage != 0 // If the first stage is complete then
IF bPanicShutdownStart // Check for panic bailout
SET_BROWSER_OPEN(FALSE)
ENDIF
ENDIF
IF NOT bHasLoadedChildContent
INT iStageTimeout = 0
BOOL bTimedOut = FALSE
SWITCH ChildInitStage
CASE 0
WHILE NOT HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT(mov)
AND (!bTimedOut)
CPRINTLN(DEBUG_INTERNET, "Web browser stage 0 startup - waiting for HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT (iStageTimeout:", iStageTimeout, ")")
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
iStageTimeout += FLOOR(0 +@ 1000)
IF iStageTimeout > 10000
CPRINTLN(DEBUG_INTERNET, "Browser timed out waiting for scaleform in stage 0")
bTimedOut = TRUE
ENDIF
RENDER_BROWSER()
IF NOT HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT(mov)
AND (!bTimedOut)
AND (iStageTimeout > 2000)
AND(IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_CANCEL) AND NOT IS_WARNING_MESSAGE_ACTIVE()))
CPRINTLN(DEBUG_INTERNET, "FORCE_CLOSE_BROWSER from waiting web browser stage 0 startup.")
FORCE_CLOSE_BROWSER()
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
EXIT
ENDIF
WAIT(0)
ENDWHILE
IF !bTimedOut
CPRINTLN(DEBUG_INTERNET, "Scaleform return true to HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT after ", iStageTimeout, "seconds, move to stage two")
ChildInitStage = 2
ELSE
CASSERTLN(DEBUG_INTERNET, "FORCE_CLOSE_BROWSER due to timeout, this means scaleform did not return true to HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT in 10 seconds")
FORCE_CLOSE_BROWSER()
ENDIF
BREAK
CASE 2
CPRINTLN(DEBUG_INTERNET, "Web browser stage 2 - complete, calling init")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"INITIALISE_WEBSITE")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "IS_SITE_DYNAMIC")
fudp = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
iStageTimeout = g_iBrowserTimer + 6000
bTimedOut = FALSE
CPRINTLN(DEBUG_INTERNET, "Appinternet waiting for site response in stage 3, waiting for IS_SITE_DYNAMIC to return...")
WHILE (NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(fudp))
AND (!bTimedOut)
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
IF g_iBrowserTimer > iStageTimeout
bTimedOut = TRUE
ELSE
WAIT(0)
ENDIF
ENDWHILE
IF NOT bTimedOut
fudret = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(fudp)
ELSE
//assume the bugger is static and throw an assert
fudret = 0
CASSERTLN(DEBUG_INTERNET, "<WEB_BROWSER> Browser timed out waiting for IS_SITE_DYNAMIC to return true. Pass this bug to Default Levels.")
ENDIF
DO_WEBSITE_ANALYTICS_HASH_SET()
IF fudret = 1
iStaticLastPage = -1
iStaticCurrentPage = 0
eStaticLastSite = INVALID_WEBSITE_INDEX
eStaticCurrentSite = WWW_NOT_EXIST
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Dynamic site ID check.")
bDynamic = TRUE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Waiting a second before calling GET_CURRENT_WEBSITE_ID() on currently loaded dynamic page.")
// GET_CURRENT_WEBSITE_ID() takes a moment to line up
iReturnPadding = 10
WHILE iReturnPadding != 0
--iReturnPadding
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
pgi = GET_CURRENT_WEBPAGE_ID()
wsi = INT_TO_ENUM(WEBSITE_INDEX_ENUM, GET_CURRENT_WEBSITE_ID())
//CPRINTLN(DEBUG_INTERNET, "GET_CURRENT_WEBPAGE_ID_WRAPPED = ", pgi ," GET_CURRENT_WEBSITE_ID_WRAPPED = ", wsi)
IF pgi != 0
IF pgi != iPageIDCheck
iPageIDLast = iPageIDCheck
iPageIDCheck = pgi
ENDIF
ELSE
pgi = iPageIDCheck
ENDIF
IF wsi != WWW_NOT_EXIST
IF wsi != eSiteIDCheck
iCurrentSiteTimer = 0
CPRINTLN(DEBUG_INTERNET, "Resetting site timer")
ENDIF
eSiteIDCheck = wsi
ELSE
wsi = eSiteIDCheck
ENDIF
SWITCH g_BrowserStartState
CASE SBSS_Default
CPRINTLN(DEBUG_INTERNET, "SWITCH g_BrowserStartState -> SBSS_Default")
IF wsi = WWW_EYEFIND_INFO
LOAD_EYEFIND_TEXT_SLOT()
ENDIF
CPRINTLN(DEBUG_INTERNET, "about to call SF_UPDATE_DYNAMIC_SITE_CONTENT from g_BrowserStartState -> SBSS_Default")
SF_UPDATE_DYNAMIC_SITE_CONTENT((wsi), pgi, mov, sRepeatInfo, spfc, TRUE)
bUpdatedEyeFindNewsThisFrame = FALSE // make sure the next call to SF_UPDATE_DYNAMIC_SITE_CONTENT doesn't update the news story
IF wsi = WWW_LIFEINVADER_COM
IF bIsInternetTextSupported
// We must make sure the Lifeinvader text has loaded before progressing
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(SHOP_TEXT_SLOT)
RENDER_BROWSER()
CPRINTLN(DEBUG_INTERNET, "Waiting for Lifeinvader text to load")
WAIT(0)
ENDWHILE
IF HAS_ADDITIONAL_TEXT_LOADED(SHOP_TEXT_SLOT)
CPRINTLN(DEBUG_INTERNET, "Lifeinvader text loaded!")
ENDIF
//UPDATE_LIFEINVADER_PAGE(mov)
g_iTimeLastBrowserRefresh = GET_GAME_TIMER() - WEB_BROWSER_PAGE_REFRESH_RATE
ELSE
CPRINTLN(DEBUG_INTERNET, " load lifeinvader text failed bIsInternetTextSupported = FALSE")
ENDIF
ENDIF
BREAK
CASE SBSS_LifeInvader
CASE SBSS_LifeInvader_BrucieResponse
CPRINTLN(DEBUG_INTERNET, "SWITCH g_BrowserStartState -> SBSS_LifeInvader or SBSS_LifeInvader_BrucieResponse")
CPRINTLN(DEBUG_INTERNET, "LFTUTORIALPRINT!")
bLifeInvaderTutorialMode = TRUE
SF_UPDATE_DYNAMIC_SITE_CONTENT((wsi),pgi,mov, sRepeatInfo, spfc)
BREAK
ENDSWITCH
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Website ", GET_WEBSITE_FROM_INDEX(wsi), " is dynamic...")
// IF (wsi = WWW_EYEFIND_INFO)
// IF g_bInMultiplayer
// AND NOT g_bBrowser_MBANKHELP_seen
// IF DOES_LOCAL_PLAYER_STAT_OWN_DEFUNCT_BASE()
// CPRINTLN(DEBUG_INTERNET, "<HELP> - display MBANKHELP (iStaticCurrentPage: ", iStaticCurrentPage, "), already owns DBASE")
// g_bBrowser_MBANKHELP_seen = TRUE
// ELSE
// CPRINTLN(DEBUG_INTERNET, "<HELP> - display MBANKHELP (iStaticCurrentPage: ", iStaticCurrentPage, ")")
//
// SET_GLOBAL_BROWSER_HELP_MESSAGE_STRUCT("MBANKHELP", DEFAULT, FALSE)
// iTutTimer = g_iBrowserTimer + 7500
// g_bBrowser_MBANKHELP_seen = TRUE
// ENDIF
// ENDIF
// ENDIF
ELSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Website ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " not dynamic...")
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Waiting a second before calling GET_CURRENT_WEBSITE_ID() on currently loaded dynamic page.")
// GET_CURRENT_WEBSITE_ID() takes a moment to line up
iReturnPadding = 10
WHILE iReturnPadding != 0
--iReturnPadding
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
DO_STATIC_SITE_CHECKS()
bDynamic = FALSE
IF g_sLastSiteHash = HASH("WWW_FAMEORSHAME_NET")
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4)
CPRINTLN(DEBUG_INTERNET, "Entered Fame Or Shame - Post Family 4")
ELSE
CPRINTLN(DEBUG_INTERNET, "Entered Fame Or Shame - Pre Family 4")
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDIF
BOOL bDisableVideo
bDisableVideo = FALSE
// B*1557251 - Disable video on websites when cinema or tv script is active
IF NOT bDisableVideo
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("act_cinema")) <> 0
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as cinema script is active.")
bDisableVideo = TRUE
ELIF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("ob_tv")) <> 0
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as tv object script is active.")
bDisableVideo = TRUE
ELIF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("am_mp_property_int")) <> 0 // Stop internet videos from working in MP apartments (url:bugstar:1605987)
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as property script is active.")
bDisableVideo = TRUE
ENDIF
ENDIF
// B*5248616 - Nightclub Purchase Flow - Preview bink videos are not suppressed in the Hangar, but do not play.
IF NOT bDisableVideo
IF IS_PLAYER_IN_HANGAR(PLAYER_ID())
PLAYER_INDEX hangarOwner
hangarOwner = globalPlayerBD[NATIVE_TO_INT(PLAYER_ID())].SimpleInteriorBD.propertyOwner
IF hangarOwner != INVALID_PLAYER_INDEX()
IF IS_PLAYER_HANGAR_FURNITURE_TRADITIONAL_PURCHASED(hangarOwner)
OR IS_PLAYER_HANGAR_FURNITURE_MODERN_PURCHASED(hangarOwner)
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as player is in ", GET_PLAYER_NAME(hangarOwner), " hangar which has a tv.")
bDisableVideo = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
// B*5248616 - Nightclub Purchase Flow - Preview bink videos are not suppressed in the Hangar, but do not play.
IF NOT bDisableVideo
IF IS_PLAYER_IN_CASINO(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as player is in casino which has a tv.")
bDisableVideo = TRUE
ELIF IS_PLAYER_IN_CASINO_APARTMENT(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as player is in casino apartment which has a tv.")
bDisableVideo = TRUE
ELIF IS_PLAYER_IN_ARCADE_PROPERTY(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " as player is in arcade which has a tv.")
bDisableVideo = TRUE
ENDIF
IF g_sLastSiteHash = HASH("WWW_THEDIAMONDCASINOANDRESORT_COM")
IF NOT IS_GAMBLING_APPROVED_REGION()
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for ", GET_WEBSITE_FROM_HASH(g_sLastSiteHash), " restricted region.")
bDisableVideo = TRUE
ENDIF
ENDIF
ENDIF
IF bDisableVideo
// Websites with embedded video
IF g_sLastSiteHash = HASH("WWW_FAMEORSHAME_NET")
OR g_sLastSiteHash = HASH("WWW_JACKHOWITZER_COM")
OR g_sLastSiteHash = HASH("WWW_KUNGFURAINBOWLAZERFORCE_COM")
OR g_sLastSiteHash = HASH("WWW_PRINCESSROBOTBUBBLEGUM_COM")
OR g_sLastSiteHash = HASH("WWW_REPUBLICANSPACERANGERS_COM")
OR g_sLastSiteHash = HASH("WWW_RIGHTEOUSSLAUGHTER7_COM")
OR g_sLastSiteHash = HASH("FORECLOSURES_MAZE_D_BANK_COM")
OR g_sLastSiteHash = HASH("WWW_THEDIAMONDCASINOANDRESORT_COM")
DISABLE_VIDEO_PLAYBACK()
ELSE
bVideoDisabled = FALSE
ENDIF
ENDIF
// DISABLE PRINCESS ROBOT BUBBLEGUM ON PC VERSION FOR RATINGS BUILD - See B* 2199116
IF IS_PC_VERSION()
AND NOT IS_DLC_PRESENT(HASH("patchDay3NG"))
IF g_sLastSiteHash = HASH("WWW_PRINCESSROBOTBUBBLEGUM_COM")
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for Princess Robot Bubblegum, as this is now \"patchDay3NG\" DLC.")
DISABLE_VIDEO_PLAYBACK()
ENDIF
ENDIF
// Disable Jack Howitzer for Japanese build
#IF IS_JAPANESE_BUILD
IF g_sLastSiteHash = HASH("WWW_JACKHOWITZER_COM")
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality for Japanese build")
DISABLE_VIDEO_PLAYBACK()
ENDIF
#ENDIF
// Windmill video hasn't got a standalone clip at present
IF g_sLastSiteHash = HASH("WWW_SAWATERANDPOWER_COM")
CPRINTLN(DEBUG_INTERNET, "Disabling video functionality as video is not available as a standalone.")
DISABLE_VIDEO_PLAYBACK()
ENDIF
ENDIF
ChildInitStage = 3
bHasLoadedChildContent = TRUE
BREAK
ENDSWITCH
// Child content is loaded, check if anything needs to change
ELSE
IF bPanicShutdownStart
SET_BROWSER_OPEN(FALSE)
ENDIF
//check if child movie has changed
//cm = GET_SCALEFORM_CONTAINER_MOVIE_REQUESTED()
IF NOT HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT(mov)//NOT (cm = NULL)
//update is happening
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Site change detected!")
IF bStreamLoaded OR bDoLoadStream
STOP_STREAM()
CPRINTLN(DEBUG_INTERNET, "appInternet: Trying to stop streamed audio")
bStreamLoaded = FALSE
bDoLoadStream = FALSE
ENDIF
IF bAWStreamLoaded OR bDoLoadAWStream
STOP_STREAM()
CPRINTLN(DEBUG_INTERNET, "appInternet: Trying to stop streamed arena wars audio")
bAWStreamLoaded = FALSE
bDoLoadAWStream = FALSE
ENDIF
IF HAS_ADDITIONAL_TEXT_LOADED(SHOP_TEXT_SLOT)
CPRINTLN(DEBUG_INTERNET, "Clearing SHOP_TEXT_SLOT on website change")
CLEAR_ADDITIONAL_TEXT(SHOP_TEXT_SLOT, FALSE)
RESET_LIFEINVADER() // if the shop text has loaded, we were just on Lifeinvader but have left it, reset the vars for it
ENDIF
bHasLoadedChildContent = FALSE
g_bForceBrowserRefresh = FALSE
ChildInitStage = 0//now goes to init stage
ELSE
BOOL bChangeDetected = FALSE
IF bDynamic
// If the site is dynamic then keep an eye on page changes
// Check for page index change
iPgBack = GET_CURRENT_WEBPAGE_ID()
wsi = INT_TO_ENUM(WEBSITE_INDEX_ENUM, GET_CURRENT_WEBSITE_ID())
//CPRINTLN(DEBUG_INTERNET, "WEBDEBUG : DYNAMIC : GET_CURRENT_WEBPAGE_ID_WRAPPED = ", iPgBack ," GET_CURRENT_WEBSITE_ID_WRAPPED = ", wsi)
WEBSITE_INDEX_ENUM wsiLast = eSiteIDCheck
IF wsi != WWW_NOT_EXIST
eSiteIDCheck = wsi
ENDIF
IF iPgBack != 0
iPageIDCheck = iPgBack
ENDIF
IF iPageIDCheck != iPageIDLast
OR eSiteIDCheck != wsiLast
OR g_sLastLastSiteHash != g_sLastSiteHash // to catch situation between market pages with same index
g_sLastLastSiteHash = g_sLastSiteHash
bSelectionHoldActionDetector = FALSE
//do site and page specific callbacks
BOOL bDoStockFunctionality = FALSE
SWITCH eSiteIDCheck
CASE WWW_BAWSAQ_COM
// Coming from somewhere else, update ticker
IF wsiLast != WWW_BAWSAQ_COM
g_bTickerPriceChange = TRUE
ENDIF
bDoStockFunctionality = TRUE
BREAK
CASE WWW_EPSILONPROGRAM_COM
// Setup audio trigger
IF NOT bStreamLoaded
bDoLoadStream = TRUE
ENDIF
BREAK
CASE WWW_LIFEINVADER_COM
IF (NOT IS_CURRENTLY_ON_MISSION_TO_TYPE()) AND (NOT bLifeInvaderTutorialMode)
//redirect broke the back button functionality.
//killing it because this site is placeholder these days
//CPRINTLN(DEBUG_INTERNET, "Lifeinvader redirect")
//GO_TO_WEBSITE("WWW_LIFEINVADER_COM")
ELSE
SWITCH iPageIDCheck
CASE 6
g_bLifeInvaderMissionMessageToBruciePosted = TRUE
BREAK
CASE 8
g_bLifeInvaderMissionResponseToBruciePosted = TRUE
BREAK
ENDSWITCH
ENDIF
BREAK
CASE WWW_LCN_D_EXCHANGE_COM
// Coming from somewhere else, update ticker
IF wsiLast != WWW_LCN_D_EXCHANGE_COM
g_bTickerPriceChange = TRUE
ENDIF
bDoStockFunctionality = TRUE
BREAK
CASE WWW_ARENAWAR_TV
// Setup audio trigger
IF NOT bAWStreamLoaded
bDoLoadAWStream = TRUE
ENDIF
BREAK
ENDSWITCH
STOCK_SYSTEM_CHECK(bDoStockFunctionality)
//IF g_iLastSelectedWebIndex <> 22
//AND g_iLastSelectedWebIndex <> 23
//AND g_eWebSiteIndexFeedback <> 2
IF eSiteIDCheck = WWW_EYEFIND_INFO
LOAD_EYEFIND_TEXT_SLOT()
ENDIF
CPRINTLN(DEBUG_INTERNET, "about to call SF_UPDATE_DYNAMIC_SITE_CONTENT [iPageIDCheck != iPageIDLast:", iPageIDCheck != iPageIDLast, "] OR [eSiteIDCheck != wsiLast:", eSiteIDCheck != wsiLast, "] OR [g_sLastLastSiteHash != g_sLastSiteHash:", g_sLastLastSiteHash != g_sLastSiteHash, "] , bUpdatedEyeFindNewsThisFrame = ", bUpdatedEyeFindNewsThisFrame)
SF_UPDATE_DYNAMIC_SITE_CONTENT(eSiteIDCheck,iPageIDCheck,mov, sRepeatInfo, spfc, bUpdatedEyeFindNewsThisFrame)
bUpdatedEyeFindNewsThisFrame = TRUE // make sure the next call to SF_UPDATE_DYNAMIC_SITE_CONTENT resets the update's the news story
iPageIDLast = iPageIDCheck
IF bDoLoadStream
IF IS_GAME_IN_CONTROL_OF_MUSIC() // Fix for TRC 1590789
CPRINTLN(DEBUG_INTERNET, "Appinternet waiting for site music to load:LOAD_STREAM(MUSIC, EPSILONISM_SITE_MUSIC)")
WHILE NOT LOAD_STREAM("MUSIC", "EPSILONISM_SITE_SOUNDS")
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
bStreamLoaded = TRUE
PLAY_STREAM_FRONTEND()
bDoLoadStream = FALSE
START_AUDIO_SCENE("WEB_EPSILONISM_SITE_MUSIC_SCENE")
ELSE
CPRINTLN(DEBUG_INTERNET, "Appinternet wanted to stream Epsilon music but IS_GAME_IN_CONTROL_OF_MUSIC returned false")
bStreamLoaded = FALSE
bDoLoadStream = FALSE
ENDIF
ENDIF
IF bDoLoadAWStream
IF IS_GAME_IN_CONTROL_OF_MUSIC()
CPRINTLN(DEBUG_INTERNET, "Appinternet waiting for arena wars site music to load:LOAD_STREAM(MUSIC, DLC_AW_Arena_Websites_Sounds)")
WHILE NOT LOAD_STREAM("MUSIC", "DLC_AW_Arena_Websites_Sounds")
BROWSER_CURSOR_LOADING(FALSE)
IF IS_USING_CURSOR(FRONTEND_CONTROL)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_X ))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL( FRONTEND_CONTROL, INPUT_CURSOR_Y ))
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_ANALOG_STICK_INPUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.0)
END_SCALEFORM_MOVIE_METHOD()
fMouseWheelScrollSpeed = 0.0
ENDIF
RENDER_BROWSER()
WAIT(0)
ENDWHILE
bAWStreamLoaded = TRUE
PLAY_STREAM_FRONTEND()
bDoLoadAWStream = FALSE
// START_AUDIO_SCENE("DLC_AW_Arena_Websites_Sounds")
ELSE
CPRINTLN(DEBUG_INTERNET, "Appinternet wanted to stream arena wars music but IS_GAME_IN_CONTROL_OF_MUSIC returned false")
bAWStreamLoaded = FALSE
bDoLoadAWStream = FALSE
ENDIF
ENDIF
ELSE
// Do temp debug stock modifier key check
//BOOL bDebugRaiseKey = FALSE
#IF IS_DEBUG_BUILD
IF NOT bDebugRaiseKey
IF IS_KEYBOARD_KEY_PRESSED(KEY_K)
bDebugRaiseKey = TRUE
CPRINTLN(DEBUG_INTERNET, "BRT bought modifier posted.")
//BAWSAQ_INTERNAL_INCREMENT_MODIFIER(BSMF_VA_BOUGHT_VH_BRUTE,25)
ENDIF
ELSE
IF NOT IS_KEYBOARD_KEY_PRESSED(KEY_K)
bDebugRaiseKey = FALSE
ENDIF
ENDIF
//BOOL bDebugCrashKey = FALSE
IF NOT bDebugCrashKey
IF IS_KEYBOARD_KEY_PRESSED(KEY_L)
bDebugCrashKey = TRUE
CPRINTLN(DEBUG_INTERNET, "BRT destroy modifier posted.")
//BAWSAQ_INTERNAL_INCREMENT_MODIFIER(BSMF_VA_DESTROYED_VH_BRUTE,25)
ENDIF
ELSE
IF NOT IS_KEYBOARD_KEY_PRESSED(KEY_L)
bDebugCrashKey = FALSE
ENDIF
ENDIF
#ENDIF
// Do update if on the stock site and on a page that should refresh
IF g_bStockMarketBrowserUpdateTick
IF (g_iWebPageIndexFeedback = 4)
IF(NOT((iPageIDCheck = 9) OR (iPageIDCheck = 8) ))
g_bForceBrowserRefresh = TRUE
ENDIF
ENDIF
ENDIF
g_bStockMarketBrowserUpdateTick = FALSE
IF g_bForceBrowserRefresh
IF eSiteIDCheck = WWW_EYEFIND_INFO
LOAD_EYEFIND_TEXT_SLOT()
ENDIF
CPRINTLN(DEBUG_INTERNET, "about to call SF_UPDATE_DYNAMIC_SITE_CONTENT from g_bForceBrowserRefresh TRUE : bUpdatedEyeFindNewsThisFrame = ", bUpdatedEyeFindNewsThisFrame)
g_bForceBrowserRefresh = FALSE
SF_UPDATE_DYNAMIC_SITE_CONTENT(eSiteIDCheck,iPageIDCheck,mov, sRepeatInfo, spfc, bUpdatedEyeFindNewsThisFrame)
bUpdatedEyeFindNewsThisFrame = TRUE // make sure the next call to SF_UPDATE_DYNAMIC_SITE_CONTENT resets the update's the news story
ENDIF
ENDIF
ELSE
// Static site, clear settings that could mess stuff up
bSelectionHoldActionDetector = FALSE
DO_STATIC_SITE_CHECKS()
ENDIF
IF NOT bChangeDetected
IF g_iPendingBrowserTimer > -1
IF g_iPendingBrowserTimer < g_iBrowserTimer
BOOL bSafeToCall_GO_TO_WEBPAGE = TRUE
IF NOT IS_STRING_NULL_OR_EMPTY(tl63sPropertyResultsWebpage)
WEBSITE_INDEX_ENUM eSite = INT_TO_ENUM(WEBSITE_INDEX_ENUM, GET_CURRENT_WEBSITE_ID()) // fudret
IF (eSite = WWW_DYNASTY8REALESTATE_COM) AND ARE_STRINGS_EQUAL(tl63sPropertyResultsWebpage, "WWW_DYNASTY8REALESTATE_COM")
OR (eSite = WWW_DYNASTY8EXECUTIVEREALTY_COM) AND ARE_STRINGS_EQUAL(tl63sPropertyResultsWebpage, "WWW_DYNASTY8EXECUTIVEREALTY_COM")
OR (eSite = FORECLOSURES_MAZE_D_BANK_COM) AND ARE_STRINGS_EQUAL(tl63sPropertyResultsWebpage, "FORECLOSURES_MAZE_D_BANK_COM")
OR (eSite = WWW_ARENAWAR_TV) AND ARE_STRINGS_EQUAL(tl63sPropertyResultsWebpage, "WWW_ARENAWAR_TV")
OR (eSite = WWW_THEDIAMONDCASINOANDRESORT_COM) AND ARE_STRINGS_EQUAL(tl63sPropertyResultsWebpage, "WWW_THEDIAMONDCASINOANDRESORT_COM")
IF (eSite = eStaticCurrentSite)
CDEBUG1LN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE - eSite:", GET_WEBSITE_FROM_INDEX(eSite), ", tl63sPropertyResultsWebpage:\"", tl63sPropertyResultsWebpage, "\", all ok")
ELSE
CDEBUG1LN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE - eSite:", GET_WEBSITE_FROM_INDEX(eSite), ", eStaticCurrentSite:", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), ", tl63sPropertyResultsWebpage:\"", tl63sPropertyResultsWebpage, "\", all ok")
ENDIF
ELSE
//
IF (eSite = eStaticCurrentSite)
CASSERTLN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE - eSite:", GET_WEBSITE_FROM_INDEX(eSite), ", tl63sPropertyResultsWebpage:\"", tl63sPropertyResultsWebpage, "\", bail from success page")
ELSE
CASSERTLN(DEBUG_INTERNET, "SWITCH_TO_PROPERTY_RESULTS_PAGE - eSite:", GET_WEBSITE_FROM_INDEX(eSite), ", eStaticCurrentSite:", GET_WEBSITE_FROM_INDEX(eStaticCurrentSite), ", tl63sPropertyResultsWebpage:\"", tl63sPropertyResultsWebpage, "\", bail from success page")
ENDIF
bSafeToCall_GO_TO_WEBPAGE = FALSE
ENDIF
ENDIF
IF bSafeToCall_GO_TO_WEBPAGE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> change triggered with: ",g_sPendingBrowserPage)
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"GO_TO_WEBPAGE")
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE(g_sPendingBrowserPage)
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ENDIF
g_iPendingBrowserTimer = -1
tl63sPropertyResultsWebpage = ""
ENDIF
ENDIF
ENDIF
ENDIF
IF bDynamic
IF eSiteIDCheck = WWW_BAWSAQ_COM
OR eSiteIDCheck = WWW_LCN_D_EXCHANGE_COM
FLOAT delta = 0 +@ 1.0
INT dms = FLOOR(delta*1000.0)
//CPRINTLN(DEBUG_INTERNET, "Procdelta ", dms)
QUICK_INCREMENT_INT_STAT(TIME_SPENT_ON_STOCKMARKET,dms)
ENDIF
ENDIF
bControlsEnabled = TRUE
IF g_BrowserStartState != SBSS_Launch_Link
IF IS_FLOW_HELP_QUEUE_EMPTY()
IF (NOT g_savedGlobals.sFinanceData.bBrowserTutorialSeen)
AND (NOT g_bInMultiplayer)
AND (NOT IS_CURRENTLY_ON_MISSION_OF_ANY_TYPE())
PROGRESS_FIRST_TIME_TUTORIAL()
ENDIF
ENDIF
ENDIF
ENDIF
////////////////////////////////////////////////////////////////////////
// Epsilon Presentation
IF g_iEpsilonTutorialStage != epsTutorialLast
IF g_iEpsilonTutorialStage > 6
CPRINTLN(DEBUG_INTERNET, "EPSILON: Presentation has finished!")
g_iEpsilonTutorialStage = -1
ENDIF
IF epsTutorialLast = -1 AND g_iEpsilonTutorialStage > 0
// g_bBrowserUserMode = FALSE
PAUSE_CLOCK(TRUE)
START_EPSILON_PRESENTATION()
ELIF g_iEpsilonTutorialStage = -1 AND epsTutorialLast > 0
PAUSE_CLOCK(FALSE)
// g_bBrowserUserMode = TRUE
ENDIF
// The first param passed must be 0. Pass the slideshow page as the second param.
// Valid range is 0 to 8 (nine pages to match the audio).
IF g_iEpsilonTutorialStage > -1 AND g_iEpsilonTutorialStage < 6
CPRINTLN(DEBUG_INTERNET, "EPSILON: Presentation, stage = ", g_iEpsilonTutorialStage)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "PROXY_FUNCTION")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_iEpsilonTutorialStage)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
epsTutorialLast = g_iEpsilonTutorialStage
ENDIF
// Epsilon tutorial in progress update
IF g_iEpsilonTutorialStage > -1
UPDATE_EPSILON_PRESENTATION()
ENDIF
IF bTVon
IF IS_PAUSE_MENU_ACTIVE() //B * 1629013 - In MP we need to turn off bink playback if the pause menu is active, as there's not enough memory.
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> Pause menu active: turn off TV")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SUPRESS_HISTORY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
SET_TV_CHANNEL(TVCHANNELTYPE_CHANNEL_NONE)
STOP_AUDIO_SCENE("INTERNET_BROWSER_VIDEO_SCENE")
bTVOn = FALSE
iTVOnTimeoutFrameCount = -1
ELSE
SET_TEXT_RENDER_ID(GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID())
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_HUD)
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE)
DRAW_TV_CHANNEL(0.5,0.5,0.5,0.5,0.0,255,255,255,255)
ENDIF
IF iTVOnTimeoutFrameCount != -1
INT iFrameCount = GET_FRAME_COUNT()
CDEBUG3LN(DEBUG_INTERNET, "<WEB_BROWSER> TV Frame Count: should turn off TV after ", TO_FLOAT(iTVOnTimeoutFrameCount-iFrameCount)/1000.0, "ms?")
IF iFrameCount >= iTVOnTimeoutFrameCount
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> TV Frame Count: turn off TV")
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SUPRESS_HISTORY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
SET_TV_CHANNEL(TVCHANNELTYPE_CHANNEL_NONE)
STOP_AUDIO_SCENE("INTERNET_BROWSER_VIDEO_SCENE")
bTVOn = FALSE
iTVOnTimeoutFrameCount = -1
ENDIF
ENDIF
ENDIF
// Called every frame while the browser is open.
IF HAS_NET_TIMER_STARTED(timerAutoCloseDelay)
IF HAS_NET_TIMER_EXPIRED(timerAutoCloseDelay, iAutoCloseDelayTime)
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> timerAutoCloseDelay - Auto closing browser!")
FORCE_CLOSE_BROWSER()
RESET_NET_TIMER(timerAutoCloseDelay)
iAutoCloseDelayTime = ciAUTO_CLOSE_DELAY_TIME_DEFAULT
ENDIF
ENDIF
ELSE
WAIT(200)
ENDIF
IF IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)
CPRINTLN(DEBUG_INTERNET, "Browser script hud bail.")
g_bBrowserQuitMessage = TRUE
ENDIF
IF IS_REPLAY_BEING_PROCESSED()
g_bBrowserQuitMessage = TRUE
ENDIF
IF g_bBrowserQuitMessage = TRUE
IF bHasLoadedChildContent // no termination during child content load
g_bBrowserQuitMessage = FALSE
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Shutdown due to quit message being posted")
FORCE_CLOSE_BROWSER()
ENDIF
ENDIF
IF bSelectionHoldActionDetector
IF iSelectionHoldActionRateTracker > 20
BROWSER_SET_CURSOR_STATE("BUSY")
IF bSelectionHoldActionPolarity
g_iSharesToBuySell+= 1 + ((g_iSharesToBuySell+1)/50)
g_bForceBrowserRefresh = TRUE
IF g_iSharesToBuySell > g_iSharesBuySellCap
g_iSharesToBuySell = g_iSharesBuySellCap
ENDIF
ELSE
g_iSharesToBuySell-= 1 + ((g_iSharesToBuySell+1)/100)
g_bForceBrowserRefresh = TRUE
ENDIF
ELSE
++iSelectionHoldActionRateTracker
ENDIF
ENDIF
IF bPanicShutdownStart
SET_BROWSER_OPEN(FALSE)
ENDIF
#IF IS_DEBUG_BUILD
//BOOL DebugAttemptToForceWebsite = FALSE
//STRING DebugForceSiteTo = "WWW_EYEFIND_INFO"
IF DebugAttemptToForceWebsite
DebugAttemptToForceWebsite = FALSE
IF DOES_WIDGET_GROUP_EXIST(DebugBrowserWidgets)
GO_TO_WEBSITE(GET_CONTENTS_OF_TEXT_WIDGET(forceTo))
ENDIF
ENDIF
IF DebugLudicrousMoney = TRUE
DebugLudicrousMoney = FALSE
g_BankAccounts[BANK_ACCOUNT_MICHAEL].iBalance = 2147483647
BANK_FORCE_UPDATE_LINKED_ACCOUNT_STATS(BANK_ACCOUNT_MICHAEL)
g_BankAccounts[BANK_ACCOUNT_FRANKLIN].iBalance = 2147483647
BANK_FORCE_UPDATE_LINKED_ACCOUNT_STATS(BANK_ACCOUNT_FRANKLIN)
g_BankAccounts[BANK_ACCOUNT_TREVOR].iBalance = 2147483647
BANK_FORCE_UPDATE_LINKED_ACCOUNT_STATS(BANK_ACCOUNT_TREVOR)
IF g_bInMultiplayer
GIVE_LOCAL_PLAYER_FM_CASH(20000000)
ENDIF
ENDIF
IF !(DebugNagScreen = 0)
TRIGGER_BROWSER_NAG_SCREEN(-1, -1, INT_TO_ENUM(NAG_SCREEN_REASON, DebugNagScreen-1))
DebugNagScreen = 0
ENDIF
INT iStory
IF g_bForceBawsaqNews
REPEAT BAWSAQ_STORIES_PER_CATEGORY iStory
g_BS_NewsStack[0][iStory] = g_BS_PriceTriggers[iStoryCount[iStory]].s
SET_CONTENTS_OF_TEXT_WIDGET(storyHeader[iStory], g_BS_NewsStack[0][iStory].tHeader)
SET_CONTENTS_OF_TEXT_WIDGET(storyText[iStory], GET_STRING_FROM_TEXT_FILE(g_BS_NewsStack[0][iStory].tHeader))
ENDREPEAT
ELSE
REPEAT BAWSAQ_STORIES_PER_CATEGORY iStory
SET_CONTENTS_OF_TEXT_WIDGET(storyHeader[iStory], "null")
SET_CONTENTS_OF_TEXT_WIDGET(storyText[iStory], "null")
ENDREPEAT
ENDIF
IF bSetOwnedProperties
INT iSlot = GET_ACTIVE_CHARACTER_SLOT()
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROPERTY_HOUSE, g_MP_STAT_PROPERTY_HOUSE[iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_1, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_2-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_2, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_3-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_3, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_4-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_4, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_5-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_0-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_CLUBHOUSE, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_CLUBHOUSE-1][iSlot], iSlot)
IF g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_CLUBHOUSE-1][iSlot] = 0
REMOVE_FACTORY(GET_OWNED_BUNKER(PLAYER_ID()))
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_5, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_6-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR1, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR2, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL2-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_GAR3, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL3-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_IE_WAREHOUSE, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_IE_WAREHOUSE-1][iSlot], iSlot)
IF g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_OFFICE_GARAGE_LVL1-1][iSlot] = 0
SET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_MODSHOP, 0)
ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_HANGAR, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_HANGAR-1][iSlot], iSlot)
#IF FEATURE_SUMMER_2020
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_6, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_7-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_7, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_8-1][iSlot], iSlot)
#ENDIF
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_8, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_9-1][iSlot], iSlot)
SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_MULTI_PROPERTY_9, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_APT_10-1][iSlot], iSlot) //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
// #IF FEATURE_GANG_OPS
// SET_HEAVILY_ACCESSED_MP_INT_CHARACTER_STAT(MP_STAT_PROP_XXXXXX, g_MP_STAT_MULTI_PROPERTY[PROPERTY_OWNED_SLOT_XXXXXX-1][iSlot], iSlot)
// #ENDIF
bSetOwnedProperties = FALSE
ENDIF
IF bSaveVehicleLabels
OPEN_DEBUG_FILE()
SITE_BUYABLE_VEHICLE sbv
REPEAT TOTAL_BUYABLE_VEHICLES sbv
MODEL_NAMES eSBVModel = GET_MODEL_FOR_BUYABLE_VEHICLE(sbv)
STRING sSBVLabel = GET_LABEL_BUYABLE_VEHICLE(sbv)
STRING sModelDisplayName = GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(eSBVModel)
SAVE_STRING_TO_DEBUG_FILE(" \"")
SAVE_STRING_TO_DEBUG_FILE(sSBVLabel)
SAVE_STRING_TO_DEBUG_FILE("\" \"")
SAVE_STRING_TO_DEBUG_FILE(sModelDisplayName)
SAVE_STRING_TO_DEBUG_FILE("\"")
IF ARE_STRINGS_EQUAL(sSBVLabel, sModelDisplayName)
SAVE_STRING_TO_DEBUG_FILE(" are equal")
ELSE
SAVE_STRING_TO_DEBUG_FILE(" are NOT equal")
ENDIF
SAVE_NEWLINE_TO_DEBUG_FILE()
ENDREPEAT
SAVE_NEWLINE_TO_DEBUG_FILE()
CLOSE_DEBUG_FILE()
bSaveVehicleLabels = FALSE
ENDIF
#ENDIF
// Replaced deatharrest due to scaleform unable to cleanup in one frame...
IF IS_PLAYER_DEAD(GET_PLAYER_INDEX())
OR IS_PLAYER_PED_SWITCH_IN_PROGRESS()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: IS_PLAYER_DEAD or IS_PLAYER_PED_SWITCH_IN_PROGRESS")
FORCE_CLOSE_BROWSER()
ENDIF
IF g_bInMultiplayer
AND IS_PLAYER_IN_CORONA()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: player is in corona")
FORCE_CLOSE_BROWSER()
ENDIF
IF g_bInMultiplayer
AND MP_FORCE_TERMINATE_INTERNET_ACTIVE()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: MP force kill set")
FORCE_CLOSE_BROWSER()
ENDIF
IF NOT g_bInMultiplayer
AND SP_FORCE_TERMINATE_INTERNET_ACTIVE()
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: SP force kill set")
FORCE_CLOSE_BROWSER()
ENDIF
#IF IS_DEBUG_BUILD
IF b_debug_CatalogueMissingEntries
CATALOGUE_MISSING_ENTRIES()
b_debug_CatalogueMissingEntries = FALSE
ENDIF
DEBUG_DRAW_MYSTERIOUS_PAGE_VALUES()
#ENDIF
ENDWHILE
IF g_bInMultiplayer
REMOVE_MULTIPLAYER_WALLET_CASH()
REMOVE_MULTIPLAYER_BANK_CASH()
ENDIF
//------------------------------
// Script cleanup starts here!
//------------------------------
CPRINTLN(DEBUG_INTERNET, "<WEB_BROWSER> FORCE_CLOSE_BROWSER: Shutdown due to browser visible set to FALSE")
FORCE_CLOSE_BROWSER()
// History suppression for Video playback.
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SUPRESS_HISTORY")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
//DISABLE_CELLPHONE(FALSE)
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHUTDOWN_MOVIE")
END_SCALEFORM_MOVIE_METHOD()
bControlsEnabled = FALSE
DISABLE_CONTROL_ACTIONS_GENERAL()
// This delay is here because calling both of these the same frame makes scaleform shit itself...
WAIT(0)
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
mov = NULL
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(buttons)
buttons = NULL
IF nagScreen != NULL
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(nagScreen)
nagScreen = NULL
ENDIF
INT iGameTime = GET_GAME_TIMER()
CPRINTLN(DEBUG_INTERNET, "Waiting for buttons to unload...")
WHILE HAS_SCALEFORM_MOVIE_LOADED(buttons)
AND GET_GAME_TIMER() <= (iGameTime+0500)
DISABLE_CONTROL_ACTIONS_GENERAL()
WAIT(0)
ENDWHILE
#IF IS_DEBUG_BUILD
IF HAS_SCALEFORM_MOVIE_LOADED(buttons)
CERRORLN(DEBUG_INTERNET, "Still waiting to unload buttons, ", GET_GAME_TIMER() - iGameTime, "ms have passed")
ELSE
#ENDIF
CPRINTLN(DEBUG_INTERNET, "...buttons unloaded in ", GET_GAME_TIMER() - iGameTime, "ms")
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
buttons = NULL
IF bStreamLoaded OR bDoLoadStream
STOP_STREAM()
STOP_AUDIO_SCENE("WEB_EPSILONISM_SITE_MUSIC_SCENE")
bStreamLoaded = FALSE
ENDIF
IF bAWStreamLoaded OR bDoLoadAWStream
STOP_STREAM()
// STOP_AUDIO_SCENE("DLC_AW_Arena_Websites_Sounds")
bAWStreamLoaded = FALSE
ENDIF
g_BrowserStartState = SBSS_Default
IF bIHidRadar
DISPLAY_RADAR(TRUE)
ENDIF
IF bIDisabledCarRadio
STOP_AUDIO_SCENE("WEB_GENERAL_BROWSING_SCENE")
ENDIF
IF bIDisabledAptRadio
STOP_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
bIDisabledAptRadio = FALSE
ENDIF
REMOVE_HELP_FROM_FLOW_QUEUE("BS_TUT_1")
// Unload the font, this has to happen
iGameTime = GET_GAME_TIMER()
CPRINTLN(DEBUG_INTERNET, "Waiting for mov to unload...")
WHILE HAS_SCALEFORM_MOVIE_LOADED(mov)
AND GET_GAME_TIMER() <= (iGameTime+0500)
DISABLE_CONTROL_ACTIONS_GENERAL()
WAIT(0)
ENDWHILE
#IF IS_DEBUG_BUILD
IF HAS_SCALEFORM_MOVIE_LOADED(mov)
CERRORLN(DEBUG_INTERNET, "Still waiting to unload mov, ", GET_GAME_TIMER() - iGameTime, "ms have passed")
ELSE
#ENDIF
CPRINTLN(DEBUG_INTERNET, "...mov unloaded in ", GET_GAME_TIMER() - iGameTime, "ms")
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
mov = NULL
DISABLE_CONTROL_ACTIONS_GENERAL()
WAIT(0)
IF bBrowserShoppingSavePending
//IF bBoughtProperty
REQUEST_NET_SPEND_COMMON_DATA_UPDATE()
REQUEST_SAVE(SSR_REASON_WEBSITE, STAT_SAVETYPE_IMMEDIATE_FLUSH)
CPRINTLN(DEBUG_INTERNET, "CDM:REQUEST_SAVE App internet triggering a requested save. Immediate flush.")
//ELSE
// REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
//ENDIF
//bBoughtProperty = FALSE
bBrowserShoppingSavePending = FALSE
ENDIF
CPRINTLN(DEBUG_INTERNET, "<Web browser> Waiting 10 frames before releasing font...")
INT dli2 = g_iBrowserTimer + 500
INT dli = 10
WHILE dli > 0
//SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
//SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
DISABLE_CONTROL_ACTIONS_GENERAL()
g_iBrowserTimer += ROUND(0 +@ 1000)
WAIT(0)
--dli
ENDWHILE
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(fontindex)
// Delay to prevent button press spillover
CPRINTLN(DEBUG_INTERNET, "<Web browser> Closing and waiting to terminate script...")
WHILE dli2 > g_iBrowserTimer
//SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
//SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
DISABLE_CONTROL_ACTIONS_GENERAL()
g_iBrowserTimer += ROUND(0 +@ 1000)
WAIT(0)
ENDWHILE
CLEAR_ADDITIONAL_TEXT(SHOP_TEXT_SLOT, TRUE) // make sure the requested additional text is removed
IF g_bInMultiplayer
ENABLE_KILL_YOURSELF_OPTION()
ENDIF
#IF IS_DEBUG_BUILD //Steve T addition for 2133870. Failsafe to make absolutely sure the movie is freed.
cdPrintnl()
cdPrintstring("AppInternet - Secondary marking of Eyefind email instructional buttons as no longer needed and removing text entry box.")
cdPrintnl()
#ENDIF
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED (SF_EyefindInstButtonsIndex) //2133870
FORCE_CLOSE_TEXT_INPUT_BOX() //Fix for 2232389 - Prevent the text entry box on PC in the first instance from persisting when the browser has closed.
// B*154147 - Restore player's ability to be pushed around
IF IS_PLAYER_PLAYING(PLAYER_ID())
CPRINTLN(DEBUG_INTERNET, "<Web browser> Disabling kinematic mode on player ped.")
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_UseKinematicModeWhenStationary,FALSE)
ENDIF
g_bBSWebsiteNoSpaceTrigger = FALSE
//Deativate multihead blinders on PC - Should not get here with blinders on - visible lag
IF SET_MULTIHEAD_SAFE(FALSE,FALSE,bActivatedMultiheadBlinders, TRUE)
bActivatedMultiheadBlinders = FALSE
ENDIF
CPRINTLN(DEBUG_INTERNET, "<WEB BROWSER> Thread terminated!")
ENDSCRIPT