5270 lines
224 KiB
Python
Executable File
5270 lines
224 KiB
Python
Executable File
USING "rage_builtins.sch"
|
||
USING "globals.sch"
|
||
|
||
USING "cellphone_public.sch"
|
||
USING "commands_zone.sch"
|
||
|
||
USING "website_private.sch"
|
||
USING "net_realty_warehouse.sch"
|
||
USING "net_gang_boss.sch"
|
||
USING "net_simple_interior_ie_garage.sch"
|
||
USING "net_realty_vehicle_garage.sch"
|
||
USING "net_ie_dropoff_public.sch"
|
||
USING "SVM_MISSION_FLOW.sch"
|
||
USING "net_script_tunables_new.sch"
|
||
USING "gb_vehicle_export_freemode_header.sch"
|
||
|
||
SCALEFORM_INDEX mov
|
||
SCALEFORM_RETURN_INDEX currentSelectionReturnIndex, currentWarehouseReturnIndex, currentCurrentScreenReturnIndex, buyWindowOpenReturnIndex
|
||
|
||
/////////////////////////////
|
||
/// Consts
|
||
///
|
||
//Page ID's
|
||
CONST_INT ciLoginPageID 0
|
||
CONST_INT ciWarehouseStatsPageID 1
|
||
CONST_INT ciWarehouseMapPageID 2
|
||
CONST_INT ciBranchPageID 3
|
||
CONST_INT ciVehicleWHStatsPageID 4
|
||
CONST_INT ciVehicleWHMapPageID 5
|
||
CONST_INT ciSVMPageID 6
|
||
|
||
//Bit set consts
|
||
CONST_INT SEC_BS_DISPLAY_OVERLAY_WARNING 0
|
||
CONST_INT SEC_BS_DISPLAY_OVERLAY_CONFIRM 1
|
||
CONST_INT SEC_BS_PRUCHASE_IE_WH_SELECTED 2
|
||
CONST_INT SEC_BS_LAUNCH_STEAL_MIS_SELECTED 3
|
||
CONST_INT SEC_BS_IE_TRANSACTION_FAILED 4
|
||
CONST_INT SEC_BS_OVERLAY_ACTIVE 5
|
||
CONST_INT SEC_BS_PROPERTY_PURCHASED_THIS_RUN 6 //Set to true if we've purchased anything during this run of the script
|
||
CONST_INT SEC_BS_PROCESSING_BASKET 7
|
||
CONST_INT SEC_BS_PROCESSING_CONTRA_BASKET_FAILED 8
|
||
CONST_INT SEC_BS_PROCESSING_WH_BASKET_DONE 9
|
||
CONST_INT SEC_BS_BUY_WAREHOUSE_CONFIRMED 10
|
||
CONST_INT SEC_BS_SELL_CONTRABAND_CONFIRMED 11
|
||
CONST_INT SEC_BS_CHECK_PAGE_ID 12
|
||
CONST_INT SEC_BS_CURRENTLY_INSIDE_WAREHOUSE 13
|
||
CONST_INT SEC_BS_CURRENTLY_PLAYING_TUTORIAL 14
|
||
CONST_INT SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP 15
|
||
CONST_INT SEC_BS_SIDE_PANEL_SHOWING 16
|
||
CONST_INT SEC_BS_CHECK_SIDE_BAR 17
|
||
CONST_INT SEC_BS_PURCHASE_FAILED_NO_MONEY 18
|
||
CONST_INT SEC_BS_JUST_PURCHASED_WAREHOUSE 19
|
||
CONST_INT SEC_BS_WAITING_FOR_BUTTON_RETURN_VALUE 20
|
||
CONST_INT SEC_BS_SHOW_CASH_CHANGE_HUD 21
|
||
CONST_INT SEC_BS_DISPLAYING_LOGIN_PAGE 22
|
||
CONST_INT SEC_BS_DISPLAYING_PURCHASE_WH_TUT 23
|
||
CONST_INT SEC_BS_DIALOGUE_TUTORIAL_COMPLETE 24
|
||
CONST_INT SEC_BS_HELP_TEXT_TUTORIAL_COMPLETE 25
|
||
CONST_INT SEC_BS_DELAY_APP_EXIT_FOR_CONVERSATION 26
|
||
CONST_INT SEC_BS_BUY_MISSION_ON_COOLDOWN 27
|
||
CONST_INT SEC_BS_SELL_MISSION_ON_COOLDOWN 28
|
||
CONST_INT SEC_BS_BUY_COOLDOWN_HELP_PLAYED 29
|
||
CONST_INT SEC_BS_SELL_COOLDOWN_HELP_PLAYED 30
|
||
CONST_INT SEC_BS_COOLDOWN_HELP_DISPLAYING 31
|
||
//End of Bit set 1
|
||
CONST_INT SEC_BS2_SPECIAL_ITEM 0
|
||
CONST_INT SEC_BS2_PA_IS_MALE 1
|
||
CONST_INT SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES 2
|
||
CONST_INT SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF 3 //Set to true to make sure we don't close the overlay screen after the browser nag screen is closed
|
||
CONST_INT SEC_BS2_DONE_MP_INTRO_HELP_1 4
|
||
CONST_INT SEC_BS2_DONE_MP_INTRO_HELP_2 5
|
||
CONST_INT SEC_BS2_DONE_MP_INTRO_HELP_3 6
|
||
//End of bit set 2
|
||
|
||
ENUM enumItemConsumed
|
||
inputConsumed_0 = 0,
|
||
inputConsumed_1,
|
||
|
||
inputConsumed_BUY_WAREHOUSE = 3007,
|
||
inputConsumed_BUY_SMALL_SHIPMENT = 3008,
|
||
inputConsumed_BUY_MEDIUM_SHIPMENT = 3009,
|
||
inputConsumed_BUY_LARGE_SHIPMENT = 3010,
|
||
inputConsumed_SELL = 3011,
|
||
inputConsumed_CONFIRM = 3012, //Overlay screen confirm
|
||
|
||
inputConsumed_STEAL_VEHICLE = 4001,
|
||
inputConsumed_VEH_STAT_ACCEPT = 4003, //Accept button on the vehicle stat screen overlay
|
||
inputConsumed_VEH_STAT_CANCEL = 4004, //Cancel button on the vehicle stat screen overlay
|
||
|
||
inputConsumed_BUY_VEH_WH = 5005,
|
||
inputConsumed_MAP_STEAL_VEHICLE = 5006,
|
||
inputConsumed_VEH_MAP_ACCEPT = 5007, //Accept button on the map screen overlay
|
||
inputConsumed_VEH_MAP_CANCEL = 5008, //Cancel button on the map screen overlay
|
||
|
||
inputConsumed_SVM_MAP_ACCEPT = 6002, //Accept button on the special vehicle screen
|
||
inputConsumed_SVM_MAP_CANCEL = 6003, //Cancel button on the special vehicle screen
|
||
inputConsumed_SVM_LAUNCH = 6999, //Any of the special vehilce options
|
||
|
||
inputConsumed_END
|
||
ENDENUM
|
||
enumItemConsumed currentButtonPressStage = inputConsumed_1
|
||
|
||
/////////////////////////////
|
||
/// Variables
|
||
///
|
||
INT iBS, iBS2
|
||
INT iCurrentSelectedWarehouse = -1
|
||
CONTRABAND_SIZE eCurrentSelectedShipmentSize = CONTRABAND_INVALID
|
||
|
||
//Contraband details at the time of opening the app
|
||
CONTRABAND_TYPE securoContraType = CONTRABAND_TYPE_INVALID
|
||
|
||
structPedsForConversation tutPedStruct
|
||
|
||
//Cooldown help text vars
|
||
INT iWarehouseSellCooldownBS = 0
|
||
INT iCooldownExpierdCheckFC = 0
|
||
INT iJustPurchasedWHID = 0
|
||
INT iTutorialDialogueID = -1
|
||
INT iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
INT iMissionUnavailableReason = -1
|
||
INT iCurrentlyInsideWarehouse = ciW_Invalid
|
||
INT iCurrentPageID = ciLoginPageID
|
||
INT iPlayerLoop = 0
|
||
INT iTutorialHelpTime = 0
|
||
INT iCratesToSell = 0
|
||
INT iContrabandBuyerID = 0
|
||
INT iCooldownTimeLastUpdate = 0 //The cooldown time we sent to SF last update
|
||
|
||
INT iLeftX, iLeftY
|
||
INT iRightX, iRightY
|
||
|
||
//Used for the replace warehouse menu when trading in
|
||
INT iWHOrder[ciMaxOwnedWarehouses]
|
||
|
||
FLOAT iCursorX = 0.0
|
||
FLOAT iCursorY = 0.0
|
||
|
||
FLOAT iCursorXLast = 0.0
|
||
FLOAT iCursorYLast = 0.0
|
||
|
||
//Used to check if the player has moved too far from the laptop object
|
||
VECTOR vPlayerCoords
|
||
//Used to maintain a list of organisations for the securoserv app
|
||
INT iActiveUsers[MAX_NUM_GANGS]
|
||
//Needed so we can remove this user from the list if they leave the game
|
||
TEXT_LABEL_63 tlUserList[MAX_NUM_GANGS]
|
||
//Used for the tutorial
|
||
SCRIPT_TIMER sTutorialTimer
|
||
//USed to block the cash hud when we don't need it
|
||
SCRIPT_TIMER stCashChangeHUDTimer
|
||
|
||
/////////////////////////////
|
||
/// Variables for the IE parts of the SF movie
|
||
///
|
||
//An offset value to make sure we give SF unique ID's for the IE warehouses vs the old warehouses
|
||
INT iWarehouseOffset = (ciMaxWarehouses + 1)
|
||
INT iSVMToLaunch = -1 //The special vehicle mission we have selected
|
||
INT iIETutorialBS1 = -1
|
||
INT iIETutorialBS2 = -1
|
||
|
||
FMMC_PLANNING_MISSION_HEADER_DESCRIPTIONS sSVMDescriptions
|
||
IE_GARAGE_INTERIORS eSelectedInterior = IE_INTERIOR_BASIC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
BOOL bDrawDebugStuff = FALSE
|
||
#ENDIF
|
||
|
||
ENUM SEC_OVERLAY_PROMPT
|
||
SEC_OVERLAY_NO_VEH_FOUND = 0,
|
||
SEC_OVERLAY_WHOUSE_FULL,
|
||
SEC_OVERLAY_GOON_ANIMAL,
|
||
SEC_OVERLAY_GOON_GAMBLING
|
||
ENDENUM
|
||
|
||
PROC CLEANUP_SECUROSERVE(BOOL bCloseHubApp = FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> cleanup \"", GET_THIS_SCRIPT_NAME(), "\"")
|
||
|
||
SET_BROWSER_OPEN(FALSE)
|
||
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
|
||
DISABLE_CELLPHONE(FALSE)
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
g_bSecuroDelayOfficeChairExit = TRUE
|
||
SET_AUDIO_SCRIPT_CLEANUP_TIME(1000)
|
||
PLAY_SOUND_FRONTEND(-1, "Logout", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
ELSE
|
||
NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
||
ENDIF
|
||
|
||
STOP_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
|
||
|
||
Unpause_Objective_Text()
|
||
|
||
THEFEED_RESUME()
|
||
|
||
SET_USE_DLC_DIALOGUE(FALSE)
|
||
|
||
IF IS_PC_VERSION()
|
||
SET_MULTIHEAD_SAFE(FALSE, TRUE, TRUE, TRUE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
AND NOT USE_SERVER_TRANSACTIONS()
|
||
REQUEST_SAVE(SSR_REASON_PURCHASE_PROPERTY, STAT_SAVETYPE_END_SHOPPING)
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CLEAR_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_CONFIRM)
|
||
|
||
IF bCloseHubApp
|
||
AND WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
g_sBusAppManagement.bCloseHubApp = TRUE
|
||
ENDIF
|
||
|
||
g_sBusAppManagement.iRenderHandShakeFC = -1
|
||
|
||
TERMINATE_THIS_THREAD()
|
||
ENDPROC
|
||
|
||
FUNC INT GET_WAREHOUSE_INDEX_FROM_SCALEFORM_INDEX(INT iScaleformID)
|
||
RETURN (iScaleformID+1)
|
||
ENDFUNC
|
||
|
||
FUNC INT GET_SCALEFORM_INDEX_FROM_WAREHOUSE_INDEX(INT iWarehouseID)
|
||
RETURN (iWarehouseID-1)
|
||
ENDFUNC
|
||
|
||
FUNC BOOL ARE_SELL_MISSIONS_DISABLED()
|
||
RETURN g_sMPTunables.bexec_disable_sell_missions
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Grabs the name of our gang. If we're checking the local player we need to
|
||
/// avoid the restricted account checks: 2770221
|
||
FUNC STRING GET_PLAYER_ORGANISATION_NAME(PLAYER_INDEX piPlayer)
|
||
|
||
IF piPlayer = PLAYER_ID()
|
||
PLAYER_INDEX playerID = GB_GET_THIS_PLAYER_GANG_BOSS(piPlayer)
|
||
IF playerID != INVALID_PLAYER_INDEX()
|
||
STRING stReturn = GB_TO_STRING(GlobalplayerBD_FM_3[NATIVE_TO_INT(playerID)].sMagnateGangBossData.tlGangName)
|
||
IF IS_STRING_NULL_OR_EMPTY(stReturn)
|
||
RETURN GET_DEFAULT_GANG_NAME(playerID)
|
||
ELSE
|
||
RETURN stReturn
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN GB_GET_PLAYER_ORGANIZATION_NAME_AS_A_STRING(piPlayer)
|
||
ENDFUNC
|
||
|
||
FUNC STRING GET_SPECIAL_ITEM_TXD_LABEL(INT iWarehouse)
|
||
CONTRABAND_SPECIAL_ITEM eSpecialItem = GET_FIRST_SPECIAL_ITEM_IN_WAREHOUSE(iWarehouse)
|
||
|
||
SWITCH eSpecialItem
|
||
CASE CONTRABAND_ITEM_EXTRA_LARGE_DIAMOND RETURN "ah_sell_crt_2"
|
||
CASE CONTRABAND_ITEM_FILM_REEL RETURN "ah_sell_crt_3"
|
||
CASE CONTRABAND_ITEM_ORNAMENTAL_EGG RETURN "ah_sell_crt_4"
|
||
CASE CONTRABAND_ITEM_GOLDEN_MINIGUN RETURN "ah_sell_crt_5"
|
||
CASE CONTRABAND_ITEM_SASQUATCH_HIDE RETURN "ah_sell_crt_6"
|
||
CASE CONTRABAND_ITEM_RARE_POCKET_WATCH RETURN "ah_sell_crt_7"
|
||
ENDSWITCH
|
||
|
||
RETURN ""
|
||
ENDFUNC
|
||
|
||
PROC UPDATE_IE_MISSION_COOLDOWN()
|
||
|
||
//Get the time remaining (In seconds)
|
||
INT iCurrentTimeRemaining = (GB_GET_MISSION_COOLDOWN_TIME_REMAINING(VEV_EYE_IN_THE_SKY) + 1)
|
||
INT iTimeToPassScaleform = -1
|
||
|
||
IF GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
IF iCooldownTimeLastUpdate != 0
|
||
iTimeToPassScaleform = 0
|
||
iCooldownTimeLastUpdate = 0
|
||
ENDIF
|
||
ELIF iCooldownTimeLastUpdate != iCurrentTimeRemaining
|
||
iTimeToPassScaleform = iCurrentTimeRemaining
|
||
iCooldownTimeLastUpdate = iCurrentTimeRemaining
|
||
ENDIF
|
||
|
||
IF iTimeToPassScaleform != -1
|
||
CDEBUG2LN(DEBUG_INTERNET, "<SECURO> UPDATE_IE_MISSION_COOLDOWN sending uptated time of: ", iTimeToPassScaleform)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_COOLDOWN")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTimeToPassScaleform)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC STRING GET_SEC_OVERLAY_PROMPT(SEC_OVERLAY_PROMPT sPrompt)
|
||
SWITCH sPrompt
|
||
CASE SEC_OVERLAY_NO_VEH_FOUND RETURN "SEC_MISS_L_F"
|
||
CASE SEC_OVERLAY_WHOUSE_FULL RETURN "SEC_WHOUSE_FULL"
|
||
CASE SEC_OVERLAY_GOON_ANIMAL RETURN "GENERAL_MLF_G2"
|
||
CASE SEC_OVERLAY_GOON_GAMBLING RETURN "GENERAL_MLF_G5"
|
||
ENDSWITCH
|
||
|
||
RETURN ""
|
||
ENDFUNC
|
||
|
||
FUNC BOOL SHOULD_SVM_MISSION_BE_ADDED_TO_SELECTION(INT iMission)
|
||
|
||
// #IF IS_DEBUG_BUILD
|
||
// IF GET_COMMANDLINE_PARAM_EXISTS("sc_ImpExpFlowPlayVariations")
|
||
// RETURN TRUE
|
||
// ENDIF
|
||
// #ENDIF
|
||
|
||
#IF FEATURE_CASINO_HEIST
|
||
IF WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
RETURN FALSE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
UNUSED_PARAMETER(iMission)
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL GET_DESCRIPTION_FOR_SVM(INT iMissionDecHash)
|
||
BOOL bDescriptionReady = TRUE
|
||
CACHED_MISSION_DESCRIPTION_LOAD_VARS sMissionDescLoadVars
|
||
|
||
IF iMissionDecHash != 0
|
||
WHILE NOT REQUEST_AND_LOAD_CACHED_DESCRIPTION_FOR_HEIST(iMissionDecHash, sMissionDescLoadVars)
|
||
PRINTLN("<SECURO> DOWNLOAD_PLANNING_MISSION_HEADER_DATA - GET_DESCRIPTION_FOR_SVM - IS_HEIST_DESCRIPTION_READY - Waiting on sub HASH: ", iMissionDecHash)
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF NOT sMissionDescLoadVars.bSucess
|
||
bDescriptionReady = FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bDescriptionReady
|
||
PRINTLN("<SECURO> [BDEC] * DOWNLOAD_PLANNING_MISSION_HEADER_DATA - GET_DESCRIPTION_FOR_SVM - All description strings are available; beginning dump: ")
|
||
STRING sText
|
||
INT iStartCharacterIndex, iStringLengthInCharacters, iArrayIndex, i
|
||
BOOL bFinishedCopying
|
||
|
||
//Clear the previously saved data
|
||
REPEAT FMMC_NUM_LABELS_FOR_DESCRIPTION i
|
||
sSVMDescriptions.tl63MissionDecription[i] = ""
|
||
ENDREPEAT
|
||
|
||
//Get the cached description:
|
||
sText = UGC_GET_CACHED_DESCRIPTION_WITH_NO_TRANSLATION_CHECK(iMissionDecHash, INVITE_MAX_DESCRIPTION_LENGTH)
|
||
iStringLengthInCharacters = GET_LENGTH_OF_LITERAL_STRING(sText)
|
||
PRINTLN("<SECURO> [BDEC] DOWNLOAD_PLANNING_MISSION_HEADER_DATA - GET_DESCRIPTION_FOR_PLANNING_MISSION_HEADER_DATA - [", sText, "] - iStringLengthInCharacters = ", iStringLengthInCharacters)
|
||
//Copy this string into chunks using a byte limit
|
||
WHILE NOT bFinishedCopying
|
||
//If we've got to the end of the string then we're done
|
||
IF iStartCharacterIndex >= iStringLengthInCharacters
|
||
PRINTLN("<SECURO> [BDEC] DOWNLOAD_PLANNING_MISSION_HEADER_DATA - GET_DESCRIPTION_FOR_PLANNING_MISSION_HEADER_DATA - IS_HEIST_DESCRIPTION_READY = ", sSVMDescriptions.tl63MissionDecription[0], sSVMDescriptions.tl63MissionDecription[1], sSVMDescriptions.tl63MissionDecription[2], sSVMDescriptions.tl63MissionDecription[3],
|
||
sSVMDescriptions.tl63MissionDecription[4], sSVMDescriptions.tl63MissionDecription[5], sSVMDescriptions.tl63MissionDecription[6], sSVMDescriptions.tl63MissionDecription[7])
|
||
bFinishedCopying = TRUE
|
||
ELSE
|
||
//If we're over the array size then we done
|
||
IF iArrayIndex >= FMMC_NUM_LABELS_FOR_DESCRIPTION
|
||
PRINTLN("<SECURO> bFinishedCopying (iArrayIndex >= FMMC_NUM_LABELS_FOR_DESCRIPTION)")
|
||
bFinishedCopying = TRUE
|
||
ELSE
|
||
//Get the next chunk
|
||
sSVMDescriptions.tl63MissionDecription[iArrayIndex] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(sText, iStartCharacterIndex, iStringLengthInCharacters, 63)
|
||
//Print
|
||
PRINTLN("<SECURO> [BDEC]DOWNLOAD_PLANNING_MISSION_HEADER_DATA - GET_DESCRIPTION_FOR_PLANNING_MISSION_HEADER_DATA - g_HeistPrePlanningClient.sPlanningData.sMissionData.tl63MissionDecription[", iArrayIndex, "] = ", sSVMDescriptions.tl63MissionDecription[iArrayIndex])
|
||
//Get the length of the chunk that we've just grabbed so we can move start position
|
||
iStartCharacterIndex += GET_LENGTH_OF_LITERAL_STRING(sSVMDescriptions.tl63MissionDecription[iArrayIndex])
|
||
PRINTLN("iStartCharacterIndex is now ", iStartCharacterIndex)
|
||
//Move to the next array
|
||
iArrayIndex++
|
||
PRINTLN("<SECURO> iArrayIndex is now ", iArrayIndex)
|
||
ENDIF
|
||
ENDIF
|
||
ENDWHILE
|
||
ENDIF
|
||
|
||
RETURN bDescriptionReady
|
||
ENDFUNC
|
||
|
||
PROC POPULATE_SPECIAL_VEH_DATA(INT iMissionID, INT iVehicleMissionsCompleted, BOOL bFallback = FALSE)
|
||
INT i
|
||
INT iSpecialVehID = iMissionID
|
||
INT iCountOfMissionsToUnock = GET_SVM_UNLOCK_VALUE(iMissionID)
|
||
INT iArrayPos = SVM_FLOW_GET_NEXT_AVAILABLE_MISSION_CONTENT_ARRAY_POS(iMissionID)
|
||
FLOAT fMissionCashMultiplier = 0.0
|
||
FLOAT fMissionRPMultiplier = 0.0
|
||
TEXT_LABEL tlMissionName = GET_SVM_MISSION_NAME(iMissionID)
|
||
BOOL bMissionUnlocked = (iVehicleMissionsCompleted >= iCountOfMissionsToUnock)
|
||
|
||
IF bMissionUnlocked
|
||
AND AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
|
||
bMissionUnlocked = FALSE
|
||
ENDIF
|
||
|
||
STRING sTextureHandle
|
||
SCRIPT_TIMER stDescriptionLoadTO
|
||
|
||
IF bFallback
|
||
sTextureHandle = GET_SVM_SCALEFORM_TXD(iMissionID)
|
||
CDEBUG1LN(DEBUG_INTERNET, "[SECURO] POPULATE_SPECIAL_VEH_DATA - bFallback = ", BOOL_TO_INT(bFallback), " , using alternate SVM image.")
|
||
ELSE
|
||
sTextureHandle = TEXT_LABEL_TO_STRING(g_txtSVMThumbnails[iMissionID])
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("sc_SvmFlowAlwaysAvailable")
|
||
bMissionUnlocked = TRUE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
IF bMissionUnlocked
|
||
iCountOfMissionsToUnock = 0
|
||
ENDIF
|
||
|
||
//If we have a valid mision request the description
|
||
IF iArrayPos != -1
|
||
IF NOT IS_CLOUD_DOWN_CLOUD_LOADER()
|
||
WHILE NOT GET_DESCRIPTION_FOR_SVM(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArrayPos].iMissionDecHash)
|
||
|
||
IF NOT HAS_NET_TIMER_STARTED(stDescriptionLoadTO)
|
||
START_NET_TIMER(stDescriptionLoadTO)
|
||
ELIF HAS_NET_TIMER_EXPIRED(stDescriptionLoadTO, 750)
|
||
iArrayPos = -1
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA Description failed to load! using fallback")
|
||
BREAKLOOP
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA waiting on descriptions to load using GET_DESCRIPTION_FOR_SVM")
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF iArrayPos != -1
|
||
GET_XP_MULTIPLIER_AND_CASH_MULTIPLIER_BASED_ON_MISSION_TYPE(fMissionRPMultiplier, fMissionCashMultiplier, FMMC_TYPE_MISSION, FMMC_TYPE_MISSION_CONTACT, DEFAULT, DEFAULT, GET_HASH_KEY(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArrayPos].tlName))
|
||
ENDIF
|
||
|
||
IF fMissionRPMultiplier = 1.0
|
||
fMissionRPMultiplier = 0.0
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA Mission RP multiplier set to: ", fMissionRPMultiplier)
|
||
ENDIF
|
||
IF fMissionCashMultiplier = 1.0
|
||
fMissionCashMultiplier = 0.0
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA Mission cash multiplier set to: ", fMissionCashMultiplier)
|
||
ENDIF
|
||
ELSE
|
||
iArrayPos = -1
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA cloud down. Using fallback")
|
||
ENDIF
|
||
ELSE
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> POPULATE_SPECIAL_VEH_DATA Description failed to load because iArrayPos is -1")
|
||
ENDIF
|
||
|
||
//Documentation here: https://hub.take2games.com/display/RSGGTAV/SecuroServ+App
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_SPECIAL_VEHICLE")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSpecialVehID) // Mission ID
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlMissionName) // Mission/Vehicle name
|
||
|
||
IF iArrayPos != -1
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("FMMC_OFFLN_HD")
|
||
//Add the text description for the mission grabbed above
|
||
REPEAT FMMC_NUM_LABELS_FOR_DESCRIPTION i
|
||
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(sSVMDescriptions.tl63MissionDecription[i])
|
||
ENDREPEAT
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ELSE
|
||
//Fallback on the old descriptions
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("") // Fallback Mission description
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING(sTextureHandle) // TXD reference
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iCountOfMissionsToUnock) // Count of regular missions to unlock this SVM
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bMissionUnlocked) // If we've unlocked the mission or not
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(fMissionCashMultiplier))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(fMissionRPMultiplier))
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
///
|
||
/// PARAMS:
|
||
/// eIEWarehouse - The warehouse we check to see if is on sale
|
||
/// eIEWarehouseInterior - The interior we check to see if is on sale
|
||
/// bIncludeWHCost - Pass true if the cost of the WH shuld be added
|
||
/// bsalePrice - Pass true if you need the sale price of the vehicle warehouse
|
||
/// RETURNS:
|
||
/// The price of the interior passed incluing sale discounts and office base price if required
|
||
FUNC INT GET_IE_WH_COST_WITH_INTERIOR(IMPORT_EXPORT_GARAGES eIEWarehouse, IE_GARAGE_INTERIORS eIEWarehouseInterior, BOOL bIncludeWHCost, BOOl bsalePrice)
|
||
INT iTotalCost
|
||
|
||
BOOL bOwnedWH = (eIEWarehouse = GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()))
|
||
|
||
IF bsalePrice
|
||
IF (IS_IE_GARAGE_ON_SALE(eIEWarehouse) & bIncludeWHCost)
|
||
OR IS_IE_GARAGE_INTERIOR_ON_SALE(eIEWarehouseInterior, bOwnedWH)
|
||
iTotalCost += GET_IE_GARAGE_INTERIOR_COST(eIEWarehouseInterior, bOwnedWH)
|
||
|
||
IF bIncludeWHCost
|
||
iTotalCost += GET_IE_GARAGE_COST(eIEWarehouse)
|
||
ENDIF
|
||
ELSE
|
||
iTotalCost = -1
|
||
ENDIF
|
||
ELSE
|
||
IF bIncludeWHCost
|
||
IF IS_IE_GARAGE_ON_SALE(eIEWarehouse)
|
||
iTotalCost += GET_IE_GARAGE_BASE_COST(eIEWarehouse)
|
||
ELSE
|
||
iTotalCost += GET_IE_GARAGE_COST(eIEWarehouse)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_IE_GARAGE_INTERIOR_ON_SALE(eIEWarehouseInterior, bOwnedWH)
|
||
iTotalCost += GET_IE_GARAGE_INTERIOR_BASE_COST(eIEWarehouseInterior, bOwnedWH)
|
||
ELSE
|
||
iTotalCost += GET_IE_GARAGE_INTERIOR_COST(eIEWarehouseInterior, bOwnedWH)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN iTotalCost
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Returns the minimum sale value of all vehicles in a players vehicle warehouse
|
||
FUNC INT GET_IE_WAREHOUSE_VEHICLE_STOCK_VALUE()
|
||
INT i, iTotalValue
|
||
|
||
//Send data for the players owned vehicles
|
||
REPEAT ciMAX_IE_OWNED_VEHICLES i
|
||
IE_VEHICLE_ENUM eTempVeh = INT_TO_ENUM(IE_VEHICLE_ENUM, GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.iWarehouseVehicles[i])
|
||
|
||
IF ENUM_TO_INT(eTempVeh) > ciIE_COVER_VEHICLE_INDEX
|
||
eTempVeh = INT_TO_ENUM(IE_VEHICLE_ENUM, (ENUM_TO_INT(eTempVeh) - ciIE_COVER_VEHICLE_INDEX))
|
||
ENDIF
|
||
|
||
IF eTempVeh > IE_VEH_INVALID
|
||
AND eTempVeh < IE_VEHICLE_COUNT
|
||
iTotalValue += GET_VEHICLE_EXPORT_VEHICLE_BASE_VALUE(GET_MODEL_NAME_FROM_IE_VEHICLE(eTempVeh), IE_DROPOFF_PRIVATE_BUYER_1, FALSE)
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
RETURN iTotalValue
|
||
ENDFUNC
|
||
|
||
PROC POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(IMPORT_EXPORT_GARAGES eIEWarehouse, INT iCollectedVehCount)
|
||
|
||
IF eIEWarehouse = IE_GARAGE_STRAWBERRY
|
||
EXIT
|
||
ENDIF
|
||
|
||
VECTOR vCoord = GET_IE_GARAGE_MAP_MIDPOINT(GET_SIMPLE_INTERIOR_ID_FROM_IMPORT_EXPORT_GARAGE_ID(eIEWarehouse))
|
||
BOOL bIsOwned = (GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()) = eIEWarehouse)
|
||
INT iVehWHID = (ENUM_TO_INT(eIEWarehouse) + iWarehouseOffset)
|
||
|
||
INT iWHCostWithBasicInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_BASIC, !bIsOwned, FALSE)
|
||
INT iWHSaleCostWithBasicInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_BASIC, !bIsOwned, TRUE)
|
||
INT iWHCostWithUrbanInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_URBAN, !bIsOwned, FALSE)
|
||
INT iWHSaleCostWithUrbanInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_URBAN, !bIsOwned, TRUE)
|
||
INT iWHCostWithBrandedInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_BRANDED, !bIsOwned, FALSE)
|
||
INT iWHSaleCostWithBrandedInterior = GET_IE_WH_COST_WITH_INTERIOR(eIEWarehouse, IE_INTERIOR_BRANDED, !bIsOwned, TRUE)
|
||
|
||
TEXT_LABEL tlName = GET_IE_GARAGE_NAME_LABEL(eIEWarehouse)
|
||
TEXT_LABEL locationLabel = GET_NAME_OF_ZONE(vCoord)
|
||
TEXT_LABEL descriptionLabel = GET_IE_GARAGE_DESCRIPTION(eIEWarehouse)
|
||
TEXT_LABEL txdLabel = GET_IE_GARAGE_TXD(eIEWarehouse)
|
||
INT iVehicleCapacity = 40
|
||
INT iNumVehiclesStored = iCollectedVehCount
|
||
INT iValueOfVehiclesStored = 0
|
||
INT iOwnedInterior = -1
|
||
FLOAT fStealCooldown = 0.0
|
||
|
||
IF NOT bIsOwned
|
||
iNumVehiclesStored = 0
|
||
ENDIF
|
||
|
||
IF eIEWarehouse = IE_GARAGE_LISA
|
||
OR eIEWarehouse = IE_GARAGE_LISA2
|
||
locationLabel = "WH_LISA_1"
|
||
ENDIF
|
||
|
||
IF bIsOwned
|
||
iOwnedInterior = ENUM_TO_INT(GET_PLAYERS_OWND_IE_WAREHOUSE_INTERIOR(PLAYER_ID()))
|
||
|
||
//The basic interior has a 0 or $125000 cost depending on if we're renovating or not
|
||
iWHCostWithBasicInterior = GET_IE_GARAGE_INTERIOR_BASE_COST(IE_INTERIOR_BASIC, TRUE)
|
||
|
||
//Get the value of all owned vehicles
|
||
iValueOfVehiclesStored = GET_IE_WAREHOUSE_VEHICLE_STOCK_VALUE()
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN Passing owned interior: ", iOwnedInterior, " value of owned vehicles: ", iValueOfVehiclesStored)
|
||
ENDIF
|
||
|
||
IF NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
fStealCooldown = TO_FLOAT(GB_GET_MISSION_COOLDOWN_TIME_REMAINING(VEV_EYE_IN_THE_SKY))
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN Cooldown timer running. iTimeRemaining = ", fStealCooldown)
|
||
ENDIF
|
||
|
||
//Documentation here: https://hub.take2games.com/display/RSGGTAV/SecuroServ+App
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_VEHICLE_WAREHOUSE")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iVehWHID) // Vehicle WH ID
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vCoord.x) // X position in world coordinates
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vCoord.y) // Y position in world coordinates
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHCostWithBasicInterior) // Purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHSaleCostWithBasicInterior) // On sale purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHCostWithUrbanInterior) // Purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHSaleCostWithUrbanInterior) // On sale purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHCostWithBrandedInterior) // Purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWHSaleCostWithBrandedInterior) // On sale purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlName) // Warehouse name text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(locationLabel) // Warehouse location text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(descriptionLabel) // Warehouse description text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(txdLabel) // Warehouse image txd reference
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bIsOwned) // Is warehouse owned by player?
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iVehicleCapacity) // Warehouse capacity
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iNumVehiclesStored) // Number of vehicles currently stored
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iValueOfVehiclesStored) // Lifetime earnings
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fStealCooldown) // Steal cooldown time remaining
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iOwnedInterior) // Lifetime earnings
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
PROC POPULATE_MP_SECUROSERV_SITE_PIN(INT iWarehouse)
|
||
|
||
TEXT_LABEL nameLabel = GET_WAREHOUSE_NAME(iWarehouse)
|
||
VECTOR vCoord = GET_WAREHOUSE_COORDS(iWarehouse)
|
||
TEXT_LABEL locationLabel = GET_NAME_OF_ZONE(vCoord)
|
||
TEXT_LABEL descriptionLabel = GET_WAREHOUSE_DESCRIPTION(iWarehouse)
|
||
TEXT_LABEL txdLabel = GET_WAREHOUSE_TXD(iWarehouse)
|
||
INT purchaseCost = GET_WAREHOUSE_COST(iWarehouse)
|
||
BOOL isOwned = DOES_LOCAL_PLAYER_OWN_WAREHOUSE(iWarehouse)
|
||
EWarehouseSize eSize = GET_WAREHOUSE_SIZE(iWarehouse)
|
||
INT capacity = GET_WAREHOUSE_MAX_CAPACITY(iWarehouse)
|
||
INT amountStored = GET_CONTRABAND_UNITS_TOTAL_FOR_WAREHOUSE(iWarehouse)
|
||
INT iSellValue = 0
|
||
INT buyTimeRem = GET_CONTRABAND_BUY_COOLDOWN(iWarehouse)
|
||
INT iWarehouseSlot = -1
|
||
INT iSalePrice = -1
|
||
INT iSellTimeRem = -1
|
||
|
||
//If necessary grab the time remaining from the sell mission tuneable timer
|
||
IF buyTimeRem <= 0
|
||
IF NOT GB_HAS_BUY_MISSION_TIMER_EXPIRED()
|
||
buyTimeRem = g_sMPTunables.iexec_buy_fail_cooldown - ABSI(GET_TIME_DIFFERENCE(INT_TO_NATIVE(TIME_DATATYPE, GET_GAME_TIMER()), g_sGbWorkCoolDownVars.gbBuyCooldownTimer.Timer))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF buyTimeRem > 0
|
||
SET_BIT(iBS, SEC_BS_BUY_MISSION_ON_COOLDOWN)
|
||
SET_BIT(iWarehouseSellCooldownBS, iWarehouse)
|
||
ENDIF
|
||
|
||
IF DOES_LOCAL_PLAYER_OWN_WAREHOUSE(iWarehouse)
|
||
iWarehouseSlot = GET_SAVE_SLOT_FOR_WAREHOUSE(iWarehouse)
|
||
iSellValue = (GB_GET_PER_CRATE_CASH_REWARD(amountStored) * amountStored) + GB_CALCULATE_SPECIAL_ITEM_REWARD(iWarehouse)
|
||
ENDIF
|
||
|
||
//url:bugstar:2803928
|
||
IF iWarehouse = ciW_LSIA_1
|
||
OR iWarehouse = ciW_LSIA_2
|
||
locationLabel = "WH_LISA_1"
|
||
ENDIF
|
||
|
||
IF IS_WAREHOUSE_ON_SALE(iWarehouse)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "Warehouse on sale: ", iWarehouse)
|
||
iSalePrice = purchaseCost
|
||
purchaseCost = GET_WAREHOUSE_BASE_COST(iWarehouse)
|
||
ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_WAREHOUSE")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SCALEFORM_INDEX_FROM_WAREHOUSE_INDEX(iWarehouse)) // Warehouse ID
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vCoord.x) // X position in world coordinates
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vCoord.y) // Y position in world coordinates
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(purchaseCost) // Purchase cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(nameLabel) // Warehouse name text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(locationLabel) // Warehouse location text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(descriptionLabel) // Warehouse description text label
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(txdLabel) // Warehouse image txd reference
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(isOwned) // Is warehouse owned by player?
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eSize)) // Warehouse size - 0:Small, 1:Medium, 2:Large
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(capacity) // Warehouse capacity in units of contraband
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(amountStored) // How many units of contraband the player currently has in the warehouse
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue) // Value of the contraband currently stored in the warehouse.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellTimeRem) // if > 0 this adds a timer to the Sell contraband buttons
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(buyTimeRem) // if > 0 this adds a timer to the buy buttons
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iWarehouseSlot) // if > -1 this controls the order in which owned warehouses are added to the graph
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSalePrice) // if > -1 this tells securoServ that the item is on sale
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
TEXT_LABEL_23 tlContrabandType = GET_WAREHOUSE_CONTRABAND_TYPE_LABEL_FOR_SECURO_APP(g_eContrabandType)
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_WAREHOUSE_SHIPMENTS")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SCALEFORM_INDEX_FROM_WAREHOUSE_INDEX(iWarehouse)) // Warehouse ID
|
||
|
||
INT iSmallShipmentCost = GET_CONTRABAND_SHIPMENT_COST(CONTRABAND_SMALL)
|
||
INT iMediumShipmentCost = GET_CONTRABAND_SHIPMENT_COST(CONTRABAND_MEDIUM)
|
||
INT iLargeShipmentCost = GET_CONTRABAND_SHIPMENT_COST(CONTRABAND_LARGE)
|
||
INT iSmallShipmentSize = ENUM_TO_INT(CONTRABAND_SMALL)
|
||
INT iMedShipmentSize = ENUM_TO_INT(CONTRABAND_MEDIUM)
|
||
|
||
INT iSmallShipmentSaleCost = -1
|
||
INT iMediumShipmentSaleCost = -1
|
||
INT iLargeShipmentSaleCost = -1
|
||
|
||
IF IS_CONTRABAND_SHIPMENT_ON_SALE(CONTRABAND_MEDIUM)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "Medi Contraband shipment on sale")
|
||
iMediumShipmentSaleCost = iMediumShipmentCost
|
||
iMediumShipmentCost = GET_CONTRABAND_BASE_SHIPMENT_COST(CONTRABAND_MEDIUM)
|
||
ENDIF
|
||
|
||
IF IS_CONTRABAND_SHIPMENT_ON_SALE(CONTRABAND_LARGE)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "LARGE Contraband shipment on sale")
|
||
iLargeShipmentSaleCost = iLargeShipmentCost
|
||
iLargeShipmentCost = GET_CONTRABAND_BASE_SHIPMENT_COST(CONTRABAND_LARGE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_SPECIAL_ITEM)
|
||
CONTRABAND_SPECIAL_ITEM eItem = GET_SPECIAL_ITEM_FROM_CONTRABAND_TYPE(securoContraType)
|
||
IF IS_SPECIAL_CONTRABAND_ITEM_ON_SALE(eItem)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "Special Contraband shipment on sale")
|
||
iSmallShipmentSaleCost = GET_SPECIAL_CONTRABAND_ITEM_COST(eItem)
|
||
iSmallShipmentCost = GET_SPECIAL_CONTRABAND_ITEM_BASE_COST(eItem)
|
||
ELSE
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "Special Contraband shipment available")
|
||
iSmallShipmentCost = GET_SPECIAL_CONTRABAND_ITEM_COST(eItem)
|
||
ENDIF
|
||
ELIF IS_CONTRABAND_SHIPMENT_ON_SALE(CONTRABAND_SMALL)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "Small Contraband shipment on sale")
|
||
iSmallShipmentSaleCost = iSmallShipmentCost
|
||
iSmallShipmentCost = GET_CONTRABAND_BASE_SHIPMENT_COST(CONTRABAND_SMALL)
|
||
ENDIF
|
||
|
||
#IF FEATURE_GEN9_EXCLUSIVE
|
||
IF IS_PLAYER_ON_MP_INTRO()
|
||
//Remove the smaller shipment sizes as they would all be free
|
||
iSmallShipmentSize = -1
|
||
iMedShipmentSize = -1
|
||
|
||
//Set the price to free
|
||
iLargeShipmentSaleCost = -1
|
||
iLargeShipmentCost = 0
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSmallShipmentSize) // smallShipmentSize int How many units of contraband are in a small shipment for this warehouse. -1 is used to indicate that this shipment size isn't available.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSmallShipmentCost) // smallShipmentCost int How much a small shipment costs to purchase.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlContrabandType) // smallShipmentType string A description of what the small shipment is (eg "guns", "jewels" etc)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iMedShipmentSize) // mediumShipmentSize int How many units of contraband are in a medium shipment for this warehouse. -1 is used to indicate that this shipment size isn't available.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iMediumShipmentCost) // mediumShipmentCost int How much a medium shipment costs to purchase.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("") // No longer used (Empty string requested)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(CONTRABAND_LARGE)) // largeShipmentSize int How many units of contraband are in a large shipment for this warehouse. -1 is used to indicate that this shipment size isn't available.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLargeShipmentCost) // largeShipmentCost int How much a large shipment costs to purchase.
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(IS_BIT_SET(iBS2, SEC_BS2_SPECIAL_ITEM)) // Is special item active for the one crate option
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSmallShipmentSaleCost) // Small shipment sale cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iMediumShipmentSaleCost) // Medium shipment sale cost
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLargeShipmentSaleCost) // Large shipment salecost
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
FUNC BOOL SHOULD_WAREHOUSE_PIN_BE_ADDED_TO_MAP(INT iWarehouse)
|
||
IF NOT IS_WAREHOUSE_DISABLED_BY_TUNEABLE(iWarehouse)
|
||
#IF FEATURE_CASINO_HEIST
|
||
AND NOT WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
#ENDIF
|
||
IF GET_COUNT_OF_WAREHOUSES_OWNED() < ciMaxOwnedWarehouses
|
||
OR GET_WAREHOUSE_SIZE(iWarehouse) = eWarehouseLarge
|
||
RETURN TRUE
|
||
ELIF GET_WAREHOUSE_SIZE(iWarehouse) = eWarehouseMedium
|
||
AND GET_SMALLEST_OWNED_WAREHOUSE() = eWarehouseMedium
|
||
RETURN TRUE
|
||
ELIF GET_SMALLEST_OWNED_WAREHOUSE() = eWarehouseSmall
|
||
RETURN TRUE
|
||
ENDIF
|
||
ELIF DOES_LOCAL_PLAYER_OWN_WAREHOUSE(iWarehouse)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "[WHOUSE] SHOULD_WAREHOUSE_PIN_BE_ADDED_TO_MAP RETURNING FALSE for warehouse: ", iWarehouse)
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC GET_CONTRABAND_BUYER_INFO(INT &iSellVal, TEXT_LABEL_63 &sBuyerOrg, TEXT_LABEL_63 &sQuantity, INT ibuyerNo, INT amountStored)
|
||
|
||
BOOL bPlural
|
||
INT iSpecialCount = GET_COUNT_OF_SPECIAL_ITEMS_IN_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
INT NonSpecialContraTotal = amountStored - iSpecialCount
|
||
|
||
IF NOT IS_WAREHOUSE_EMPTY(iCurrentlyInsideWarehouse)
|
||
AND (ibuyerNo = 0
|
||
OR NonSpecialContraTotal >= 2 AND ibuyerNo < 2
|
||
OR NonSpecialContraTotal > 2 AND ibuyerNo <= 2
|
||
OR ibuyerNo = 3 AND DOES_WAREHOUSE_CONTAIN_A_SPECIAL_ITEM(iCurrentlyInsideWarehouse))
|
||
AND (amountStored != iSpecialCount OR ibuyerNo = 3)
|
||
|
||
INT iItemCount
|
||
INT iSaveSlot = GET_SAVE_SLOT_FOR_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
|
||
sQuantity = ""
|
||
|
||
//Because we're just setting the values, satisfy the compiler :(
|
||
UNUSED_PARAMETER(sBuyerOrg)
|
||
UNUSED_PARAMETER(sQuantity)
|
||
|
||
SWITCH ibuyerNo
|
||
CASE 0
|
||
iItemCount = ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER1_AMOUNT) / 100))
|
||
iSellVal = GB_GET_PER_CRATE_CASH_REWARD(iItemCount) * iItemCount
|
||
sBuyerOrg = GET_CONTRABAND_BUYER_COMPANY(g_iContrabandBuyerOneID[iSaveSlot])
|
||
sQuantity = iItemCount
|
||
|
||
bPlural = (iItemCount > 1)
|
||
BREAK
|
||
CASE 1
|
||
iItemCount = ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER2_AMOUNT) / 100))
|
||
|
||
iSellVal = GB_GET_PER_CRATE_CASH_REWARD(iItemCount) * iItemCount
|
||
sBuyerOrg = GET_CONTRABAND_BUYER_COMPANY(g_iContrabandBuyerTwoID[iSaveSlot])
|
||
sQuantity = iItemCount
|
||
|
||
bPlural = (iItemCount > 1)
|
||
BREAK
|
||
CASE 2
|
||
iItemCount = ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER3_AMOUNT) / 100))
|
||
|
||
iSellVal = GB_GET_PER_CRATE_CASH_REWARD(iItemCount) * iItemCount
|
||
sBuyerOrg = GET_CONTRABAND_BUYER_COMPANY(g_iContrabandBuyerThreeID[iSaveSlot])
|
||
sQuantity = iItemCount
|
||
|
||
bPlural = (iItemCount > 1)
|
||
BREAK
|
||
CASE 3
|
||
iSellVal = GB_CALCULATE_SPECIAL_ITEM_REWARD(iCurrentlyInsideWarehouse)
|
||
sBuyerOrg = GET_CONTRABAND_BUYER_COMPANY(g_iContrabandBuyerFourID[iSaveSlot])
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
IF g_sMPTunables.benable_control_payout_Executive_Office_SpecialCargo
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_RECEIVED_BOOSTED_EXEC_SPECIAL_CARGO_SELL_PAYOUT)
|
||
PRINTLN("<SECURO>[BOOSTED_PAYOUTS] Giving booseted payout for exex special cargo. From: ", iSellVal, " to: ", (iSellVal * g_sMPTunables.icash_control_payout_Executive_Office_SpecialCargo))
|
||
iSellVal *= g_sMPTunables.icash_control_payout_Executive_Office_SpecialCargo
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF ibuyerNo = 3
|
||
sQuantity += GET_FILENAME_FOR_AUDIO_CONVERSATION("CBUYERCRS")
|
||
ELSE
|
||
IF bPlural
|
||
sQuantity += GET_FILENAME_FOR_AUDIO_CONVERSATION("CBUYERCRP")
|
||
ELSE
|
||
sQuantity += GET_FILENAME_FOR_AUDIO_CONVERSATION("CBUYERCR")
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
iSellVal = -1
|
||
sBuyerOrg = ""
|
||
sQuantity = ""
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC VECTOR GET_OFFICE_FRONT_DOOR_POS(INT iCurrentProperty)
|
||
SWITCH iCurrentProperty
|
||
CASE PROPERTY_OFFICE_1 RETURN <<-1582.5367, -556.0219, 33.9540>>
|
||
CASE PROPERTY_OFFICE_2_BASE RETURN <<-1373.8700, -502.7115, 32.1574>>
|
||
CASE PROPERTY_OFFICE_3 RETURN <<-117.5296, -605.7157, 35.2857>>
|
||
CASE PROPERTY_OFFICE_4 RETURN <<-74.7579, -818.4601, 325.1753>>
|
||
ENDSWITCH
|
||
|
||
RETURN <<0.0, 0.0, 0.0>>
|
||
ENDFUNC
|
||
|
||
PROC APP_SECURO_SHOW_PAGE(INT iPageID)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "showScreen")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iPageID)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
iCurrentPageID = iPageID
|
||
PRINTLN("<SECURO> APP_SECURO_SHOW_PAGE - Open page: ", iPageID)
|
||
ENDPROC
|
||
|
||
PROC POPULATE_MP_SECUROSERV_SITE_PIN_MAP(BOOL bCanAccessApp)
|
||
|
||
securoContraType = g_eContrabandType
|
||
IF IS_SPECIAL_CONTRABAND_ITEM_ACTIVE()
|
||
SET_BIT(iBS2, SEC_BS2_SPECIAL_ITEM)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
TEXT_LABEL nameLabel = GET_WAREHOUSE_NAME(iCurrentlyInsideWarehouse)
|
||
VECTOR vCoord = GET_WAREHOUSE_COORDS(iCurrentlyInsideWarehouse)
|
||
TEXT_LABEL locationLabel = GET_NAME_OF_ZONE(vCoord)
|
||
TEXT_LABEL txdLabel = ""
|
||
TEXT_LABEL_63 sBuyerOrg = ""
|
||
TEXT_LABEL_63 sQuantity = ""
|
||
EWarehouseSize eSize = GET_WAREHOUSE_SIZE(iCurrentlyInsideWarehouse)
|
||
INT capacity = GET_WAREHOUSE_MAX_CAPACITY(iCurrentlyInsideWarehouse)
|
||
INT amountStored = GET_CONTRABAND_UNITS_TOTAL_FOR_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
INT iSellValue = -1
|
||
INT iSpecialItemCount = GET_COUNT_OF_SPECIAL_ITEMS_IN_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
|
||
//Grab this time here to make sure all timers are consistent
|
||
INT iSellTimeRem = GET_CONTRABAND_SELL_COOLDOWN(iCurrentlyInsideWarehouse)
|
||
|
||
//If necessary grab the time remaining from the sell mission tuneable timer
|
||
IF iSellTimeRem <= 0
|
||
IF NOT GB_HAS_SELL_MISSION_TIMER_EXPIRED()
|
||
iSellTimeRem = g_sMPTunables.iexec_sell_fail_cooldown - ABSI(GET_TIME_DIFFERENCE(INT_TO_NATIVE(TIME_DATATYPE, GET_GAME_TIMER()), g_sGbWorkCoolDownVars.gbSellCooldownTimer.Timer))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF iSellTimeRem > 0
|
||
SET_BIT(iBS, SEC_BS_SELL_MISSION_ON_COOLDOWN)
|
||
ENDIF
|
||
|
||
IF DOES_WAREHOUSE_CONTAIN_A_SPECIAL_ITEM(iCurrentlyInsideWarehouse)
|
||
txdLabel = GET_SPECIAL_ITEM_TXD_LABEL(iCurrentlyInsideWarehouse)
|
||
ENDIF
|
||
|
||
GET_CONTRABAND_BUYER_INFO(iSellValue, sBuyerOrg, sQuantity, 0, amountStored)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "iCurrentlyInsideWarehouse: ", iCurrentlyInsideWarehouse, " nameLabel: ", nameLabel, " locationLabel: ", locationLabel, " txdLabel: ", txdLabel, " eSize: ", eSize, " capacity: ", capacity, " amountStored: ", amountStored )
|
||
|
||
INT iSellMissionsComplete = GET_SELL_MISSION_COMPLETED_COUNT()
|
||
INT iSellCompletionPercentage = FLOOR(CLAMP((TO_FLOAT(iSellMissionsComplete) / TO_FLOAT(GET_SELL_MISSION_UNDERTAKEN_COUNT())) * 100, 0, 100))
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_PLAYER_DATA")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_NAME(PLAYER_ID()))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_ORGANISATION_NAME(PLAYER_ID()))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iSellCompletionPercentage))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellMissionsComplete)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_LIFETIME_CONTRABAND_EARNINGS())
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_BUYER_DATA")
|
||
//Buyer 1
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sBuyerOrg)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sQuantity)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue)
|
||
|
||
//Buyer 2
|
||
GET_CONTRABAND_BUYER_INFO(iSellValue, sBuyerOrg, sQuantity, 1,amountStored)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sBuyerOrg)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sQuantity)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue)
|
||
|
||
//Buyer 3
|
||
GET_CONTRABAND_BUYER_INFO(iSellValue, sBuyerOrg, sQuantity, 2, amountStored)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sBuyerOrg)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sQuantity)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue)
|
||
|
||
//Buyer 4
|
||
GET_CONTRABAND_BUYER_INFO(iSellValue, sBuyerOrg, sQuantity, 3, amountStored)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sBuyerOrg)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sQuantity)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_WAREHOUSE_DATA")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(nameLabel)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(locationLabel)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(txdLabel)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eSize))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(capacity)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(amountStored)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellValue)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSpecialItemCount)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellTimeRem)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ELSE
|
||
// Set the login username and the flag to indicate whether they can access the app or not
|
||
/*
|
||
SET_PLAYER_DATA
|
||
gamerTag string The username displayed in the login panel.
|
||
gamerHasAccess bool Flag to determine whether the map screen (true) or the access denied overlay (false) is shown after pressing the log in button.
|
||
totalEarnings float How much money the player has made from their warehouses.
|
||
collectionsCompleted int How many collections the player has completed.
|
||
collectionSuccessRate float Percentage of collections that were successful.
|
||
salesCompleted int How many sales the player has completed.
|
||
salesSuccessRate float Percentage of sales that were successful.
|
||
organisation string The player's organisation name.
|
||
numVehiclesStolen int How many vehicles the player has stolen.
|
||
stealVehiclesSuccess float Percentage of successful vehicle steals.
|
||
vehiclesExported int How many vehicles the player has successfully exported.
|
||
exportVehiclesSuccess float Percentage of successful vehicle exports.
|
||
totalVehicleEarnings int How much money the player has made from exporting vehicles.
|
||
bCanAccessSVMMissions bool Informs SF as to if the player has unlocked the SVM missions
|
||
vOfficePosition.x float Players x pos in world coords
|
||
vOfficePosition.y float Players y pos in world coords
|
||
*/
|
||
|
||
VECTOR vOfficePosition = GET_OFFICE_FRONT_DOOR_POS(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0))
|
||
|
||
INT iBuyMissionsComplete = GET_BUY_MISSION_COMPLETED_COUNT()
|
||
INT iSellMissionsComplete = GET_SELL_MISSION_COMPLETED_COUNT()
|
||
|
||
INT iBuyCompletionPercentage = FLOOR(CLAMP((TO_FLOAT(iBuyMissionsComplete) / TO_FLOAT(GET_BUY_MISSION_UNDERTAKEN_COUNT())) * 100, 0, 100))
|
||
INT iSellCompletionPercentage = FLOOR(CLAMP((TO_FLOAT(iSellMissionsComplete) / TO_FLOAT(GET_SELL_MISSION_UNDERTAKEN_COUNT())) * 100, 0, 100))
|
||
|
||
INT iNumVehStolen = GET_TOTAL_NUM_VEHICLES_STOLEN()
|
||
INT iNumVehExported = GET_TOTAL_NUM_EXPORT_MISSIONS_COMPLETED()
|
||
INT iTotalExportEarnings = GET_TOTAL_EXPORT_EARNINGS()
|
||
|
||
INT iStealCompletionPercentage = FLOOR(CLAMP((TO_FLOAT(iNumVehStolen) / TO_FLOAT(GET_TOTAL_NUM_STEAL_MISSIONS_STARTED())) * 100, 0, 100))
|
||
INT iExportCompletionPercentage = FLOOR(CLAMP((TO_FLOAT(GET_TOTAL_NUM_EXPORT_MISSIONS_COMPLETED()) / TO_FLOAT(GET_TOTAL_NUM_EXPORT_MISSIONS_STARTED())) * 100, 0, 100))
|
||
|
||
INT iSVMUnlockCount = GET_MINIMUM_STOLEN_VEH_COUNT_TO_UNLOCK_SVM()
|
||
|
||
BOOL bCanAccessSVMMissions = (iNumVehStolen >= iSVMUnlockCount)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> POPULATE_MP_SECUROSERV_SITE_PIN_MAP: Minimum stolen vehicles to unlock SVM section: ", iSVMUnlockCount, " iNumVehStolen: ", iNumVehStolen)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("sc_SvmFlowAlwaysAvailable")
|
||
bCanAccessSVMMissions = TRUE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_PLAYER_DATA")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_NAME(PLAYER_ID()))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bCanAccessApp)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(GET_LIFETIME_CONTRABAND_EARNINGS()))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iBuyMissionsComplete)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iBuyCompletionPercentage))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSellMissionsComplete)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iSellCompletionPercentage))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_ORGANISATION_NAME(PLAYER_ID()))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iNumVehStolen)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iStealCompletionPercentage))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iNumVehExported)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(iExportCompletionPercentage))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTotalExportEarnings)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bCanAccessSVMMissions)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vOfficePosition.x)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(vOfficePosition.y)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
|
||
#IF FEATURE_GEN9_EXCLUSIVE
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(!IS_PLAYER_ON_MP_INTRO())
|
||
#ENDIF
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
INT iWarehouse
|
||
FOR iWarehouse = 1 TO ciMaxWarehouses
|
||
IF SHOULD_WAREHOUSE_PIN_BE_ADDED_TO_MAP(iWarehouse)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN(iWarehouse)
|
||
ENDIF
|
||
ENDFOR
|
||
|
||
//Populate the map with the IE warehouses
|
||
INT iIEWarehouse, iMission
|
||
INT iCollectedVehCount = GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.iVehicleTotal
|
||
|
||
FOR iIEWarehouse = 1 TO (ENUM_TO_INT(IE_GARAGE_UPPER_LIMIT) -1)
|
||
#IF FEATURE_CASINO_HEIST
|
||
IF NOT WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
OR ENUM_TO_INT(GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())) = iIEWarehouse
|
||
#ENDIF
|
||
POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(INT_TO_ENUM(IMPORT_EXPORT_GARAGES, iIEWarehouse), iCollectedVehCount)
|
||
#IF FEATURE_CASINO_HEIST
|
||
ENDIF
|
||
#ENDIF
|
||
ENDFOR
|
||
|
||
REPEAT ciMAX_AT_FLOW_MISSIONS iMission
|
||
IF SHOULD_SVM_MISSION_BE_ADDED_TO_SELECTION(iMission)
|
||
POPULATE_SPECIAL_VEH_DATA(iMission, iNumVehStolen, g_bSVMThumbnailFallback)
|
||
ENDIF
|
||
ENDREPEAT
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Initalises the iActiveUsers array to -1
|
||
PROC INIT_ACTIVE_USER_LIST()
|
||
INT i = 0
|
||
|
||
REPEAT GB_GET_MAX_NUM_GANGS() i
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[securo] INIT_ACTIVE_USER_LIST Setting value: ", i, " of app active user list to -1")
|
||
iActiveUsers[i] = -1
|
||
ENDREPEAT
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Checks a local array for the current player in the loop (iPlayerLoop)
|
||
FUNC BOOL IS_PLAYER_IN_ACTIVE_GANG_LIST()
|
||
INT i = 0
|
||
|
||
REPEAT GB_GET_MAX_NUM_GANGS() i
|
||
IF iActiveUsers[i] = iPlayerLoop
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Adds a player to the local array and calls the relevant scaleform method
|
||
PROC ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST(PLAYER_INDEX piPlayer, INT iPlayerID)
|
||
INT i = 0
|
||
STRING sPlayerName = GET_PLAYER_NAME(piPlayer)
|
||
|
||
IF ARE_STRINGS_EQUAL(sPlayerName, "**Invalid**")
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[SECURO] ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST. tried to add **Invalid** player to list")
|
||
EXIT
|
||
ENDIF
|
||
|
||
INT iIter
|
||
INT iMaxNumGoons = GB_MAX_GANG_GOONS_EXEC
|
||
TEXT_LABEL_63 tlGoons[GB_MAX_GANG_GOONS_EXEC]
|
||
|
||
REPEAT iMaxNumGoons iIter
|
||
PLAYER_INDEX piGoon = GlobalplayerBD_FM_3[iPlayerID].sMagnateGangBossData.GangMembers[iIter]
|
||
|
||
IF piGoon != INVALID_PLAYER_INDEX()
|
||
tlGoons[iIter] = GET_PLAYER_NAME(piGoon)
|
||
ELSE
|
||
tlGoons[iIter] = ""
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
//Make sure there are no spaces in the list
|
||
REPEAT iMaxNumGoons iIter
|
||
IF IS_STRING_NULL_OR_EMPTY(tlGoons[iIter])
|
||
IF iIter != iMaxNumGoons
|
||
INT j
|
||
|
||
FOR j = iIter TO (iMaxNumGoons -1)
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(tlGoons[j])
|
||
tlGoons[iIter] = tlGoons[j]
|
||
tlGoons[j] = ""
|
||
j = (iMaxNumGoons -1)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST Updating list order Empty player slot: ", iIter, " Moving Goon: ", j, " down the list")
|
||
ENDIF
|
||
ENDFOR
|
||
ENDIF
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_ACTIVE_USER")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sPlayerName)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_ORGANISATION_NAME(piPlayer))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(tlGoons[0])
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(tlGoons[1])
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(tlGoons[2])
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
REPEAT GB_GET_MAX_NUM_GANGS() i
|
||
IF iActiveUsers[i] = -1
|
||
iActiveUsers[i] = iPlayerID
|
||
tlUserList[i] = sPlayerName
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[SECURO] ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST. Adding: ", tlUserList[i], " to slot: ", i)
|
||
EXIT
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[SECURO] ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST. We have more players to add than GB_GET_MAX_NUM_GANGS: ", GB_GET_MAX_NUM_GANGS())
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Removes a player from the local array and calls the relevant scaleform method
|
||
PROC REMOVE_PLAYER_FROM_ACTIVE_ORGANISATION_LIST()
|
||
INT i = 0
|
||
INT iIndex = -1
|
||
|
||
REPEAT GB_GET_MAX_NUM_GANGS() i
|
||
IF iActiveUsers[i] = iPlayerLoop
|
||
iActiveUsers[i] = -1
|
||
iIndex = i
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
IF iIndex != -1
|
||
AND iIndex < GB_GET_MAX_NUM_GANGS()
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[SECURO] REMOVE_PLAYER_FROM_ACTIVE_ORGANISATION_LIST. index: ", iIndex)
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[SECURO] REMOVE_PLAYER_FROM_ACTIVE_ORGANISATION_LIST. removing: ", tlUserList[iIndex])
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "REMOVE_ACTIVE_USER")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(tlUserList[iIndex])
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
tlUserList[iIndex] = ""
|
||
ELSE
|
||
CASSERTLN(DEBUG_SAFEHOUSE, "[SECURO] REMOVE_PLAYER_FROM_ACTIVE_ORGANISATION_LIST. Can't find player to remove: ", iIndex)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
/// PURPOSE: One player per frame loop to check gang status
|
||
/// Maintains the list of organizations to be displayed in the app
|
||
PROC MAINTAIN_ACTIVE_ORGANIZATION_LIST()
|
||
PLAYER_INDEX pPlayer = INT_TO_NATIVE(PLAYER_INDEX, iPlayerLoop)
|
||
|
||
IF NETWORK_IS_PLAYER_ACTIVE(pPlayer)
|
||
AND GB_IS_PLAYER_BOSS_OF_A_GANG(pPlayer)
|
||
AND NOT GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(pPlayer)
|
||
//AND NOT GB_ARE_PLAYER_BOSS_PRIVILIGES_SUSPENDED_BD(PLAYER_ID())
|
||
IF NOT IS_PLAYER_IN_ACTIVE_GANG_LIST()
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[securo] Adding player: ", iPlayerLoop, " to app active user list")
|
||
ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST(pPlayer, iPlayerLoop)
|
||
ENDIF
|
||
ELSE
|
||
IF IS_PLAYER_IN_ACTIVE_GANG_LIST()
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[securo] Removing player: ", iPlayerLoop, " from app active user list")
|
||
REMOVE_PLAYER_FROM_ACTIVE_ORGANISATION_LIST()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
iPlayerLoop ++
|
||
|
||
IF iPlayerLoop = NUM_NETWORK_PLAYERS
|
||
iPlayerLoop = 0
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SECUROSERVE_CONTROL_DISABLE()
|
||
SET_CLEAR_ON_CALL_HUD_THIS_FRAME()
|
||
|
||
IF (NOT IS_SYSTEM_UI_BEING_DISPLAYED())
|
||
AND (NOT IS_PAUSE_MENU_ACTIVE())
|
||
DISABLE_ALL_CONTROL_ACTIONS(PLAYER_CONTROL)
|
||
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RENDER_SECUROSERVE()
|
||
HIDE_HUD_AND_RADAR_THIS_FRAME()
|
||
HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME(HUD_MP_RANK_BAR)
|
||
|
||
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
||
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
||
SECUROSERVE_CONTROL_DISABLE()
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
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
|
||
|
||
THEFEED_HIDE_THIS_FRAME()
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL,INPUT_FRONTEND_PAUSE)
|
||
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
||
DRAW_RECT_FROM_CORNER(0.0, 0.0, 1.0, 1.0, 0, 0, 0, 255)
|
||
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
||
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,255)
|
||
|
||
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
|
||
|
||
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
||
DISABLE_ALL_MP_HUD_THIS_FRAME()
|
||
|
||
g_sBusAppManagement.iRenderHandShakeFC = GET_FRAME_COUNT()
|
||
ENDPROC
|
||
|
||
FUNC BOOL IS_MAP_SIDEBAR_OPEN()
|
||
RETURN IS_BIT_SET(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
ENDFUNC
|
||
|
||
PROC CLEAR_OVERLAY_WARNING_BS()
|
||
IF IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CLEAR_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_CONFIRM)
|
||
CLEAR_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_CONFIRM)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC CLOSE_OVERLAY_SCREEN(BOOL bPlaySound = FALSE, BOOL bClearIEPurAndStealBitSet = FALSE)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "HIDE_OVERLAY")
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
CLEAR_OVERLAY_WARNING_BS()
|
||
|
||
IF bPlaySound
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Cancel", "GTAO_Exec_SecuroServ_Computer_Sounds" )
|
||
ENDIF
|
||
|
||
IF bClearIEPurAndStealBitSet
|
||
IF IS_BIT_SET(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> CLOSE_OVERLAY_SCREEN clearing bit SEC_BS_LAUNCH_STEAL_MIS_SELECTED")
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO> CLOSE_OVERLAY_SCREEN clearing bit SEC_BS_PRUCHASE_IE_WH_SELECTED")
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
CLEAR_BIT(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Shows a popup message over the top of the current screen
|
||
/// PARAMS:
|
||
/// sTitleBar - Top bar textlable
|
||
/// sDescription - Description text label
|
||
/// sButton1 - Left side button text label (Moves to center if "" is passed for sButton2)
|
||
/// sButton2 - Pass "" to show no button. Right side button text label
|
||
/// bSuccess - True = Green False = Red overlay screen
|
||
/// bInteriorsOverlay - If true brings up the interior overlay instead of the standard screen
|
||
/// iAdditionalINT - Set to a value !-1 to add an additional INT to the overlay description
|
||
PROC START_OVERLAY_SCREEN(STRING sTitleBar, STRING sDescription, String sButton1, String sButton2, BOOL bSuccess , BOOL bInteriorsOverlay = FALSE, INT iAdditionalINT = -1 )
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_OVERLAY")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTitleBar)
|
||
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sDescription)
|
||
IF iadditionalINT != -1
|
||
ADD_TEXT_COMPONENT_INTEGER(iadditionalINT)
|
||
ENDIF
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sButton1)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sButton2)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bSuccess)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bInteriorsOverlay)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
SET_BIT(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
PROC PASS_DPAD_INPUTS_TO_SCALEFORM()
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_UP)))
|
||
ENDIF
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_DOWN)))
|
||
ENDIF
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LEFT)))
|
||
ENDIF
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RIGHT)))
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC PASS_ANALOGUE_STICK_INPUTS_TO_SF(BOOL BPassInLeftStickInput, BOOL BPassInRightStickInput)
|
||
IF BPassInLeftStickInput
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
|
||
INT iLeftXNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
|
||
INT iLeftYNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
|
||
IF (iLeftXNew != 127) OR (iLeftX != 127) OR (iLeftYNew != 127) OR (iLeftY != 127)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
|
||
iLeftX = iLeftXNew
|
||
iLeftY = iLeftYNew
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLeftX)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLeftY)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF BPassInRightStickInput
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
|
||
INT iRightXNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
|
||
INT iRightYNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
|
||
IF (iRightXNew != 127) OR (iRightX != 127) OR (iRightYNew != 127) OR (iRightY != 127)
|
||
BOOL bUsingScrollWheel = (IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN))
|
||
|
||
IF NOT bUsingScrollWheel
|
||
bUsingScrollWheel = (IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP))
|
||
ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
|
||
iRightX = iRightXNew
|
||
iRightY = iRightYNew
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRightX)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRightY)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bUsingScrollWheel)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC PASS_CURSOR_INPUT_TO_SF()
|
||
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(mov, "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
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_ACCEPT)))
|
||
ENDIF
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
IF iCurrentPageID != ciVehicleWHStatsPageID
|
||
AND iCurrentPageID != ciSVMPageID
|
||
OR NOT IS_BIT_SET(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_CANCEL)))
|
||
ENDIF
|
||
IF iCurrentPageID = ciBranchPageID
|
||
OR iCurrentPageID = ciLoginPageID
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, "EXITING WEBSITE")
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
CLEAR_BIT(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, " and bOverlayActive Closing overlay")
|
||
CLOSE_OVERLAY_SCREEN(TRUE, TRUE)
|
||
ELIF IS_MAP_SIDEBAR_OPEN()
|
||
CLEAR_BIT(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC PASS_WAREHOUSE_INPUTS_TO_SCALEFORM()
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_ACCEPT)))
|
||
ENDIF
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_CANCEL)))
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
|
||
IF (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
||
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y))
|
||
AND NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, " EXITING WEBSITE for Triangle press")
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
|
||
PASS_DPAD_INPUTS_TO_SCALEFORM()
|
||
|
||
// Mouse cursor control
|
||
IF IS_USING_CURSOR(FRONTEND_CONTROL)
|
||
PASS_CURSOR_INPUT_TO_SF()
|
||
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
ELSE
|
||
PASS_ANALOGUE_STICK_INPUTS_TO_SF(TRUE, TRUE)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC PASS_INPUTS_TO_SCALEFORM()
|
||
|
||
IF g_bBrowserGoToStoreTrigger
|
||
CPRINTLN(DEBUG_INTERNET, "APP_SECURO g_bBrowserGoToStoreTrigger()")
|
||
|
||
IF g_bBrowserNagScreenState
|
||
CPRINTLN(DEBUG_INTERNET, "APP_SECURO g_bBrowserNagScreenState()")
|
||
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
|
||
OR (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CURSOR_ACCEPT) AND NOT IS_WARNING_MESSAGE_ACTIVE())
|
||
|
||
g_bBrowserNagScreenState = FALSE
|
||
g_bBrowserGoToStoreTrigger = FALSE
|
||
CLEAR_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
|
||
SET_LAST_VIEWED_SHOP_ITEM(g_iBrowserGoToStoreItemHash, g_iBrowserGoToStoreItemPrice, 0)
|
||
OPEN_COMMERCE_STORE("", "", SPL_PHONE)
|
||
|
||
WHILE IS_COMMERCE_STORE_OPEN()
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
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())
|
||
CPRINTLN(DEBUG_INTERNET, "APP_SECURO canceled, bailing")
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "BACK","HUD_FRONTEND_DEFAULT_SOUNDSET")
|
||
|
||
g_bBrowserNagScreenState = FALSE
|
||
g_bBrowserGoToStoreTrigger = FALSE
|
||
CLEAR_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
|
||
SET_BIT(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
ENDIF
|
||
ENDIF
|
||
EXIT
|
||
ENDIF
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
||
IF iCurrentPageID = ciVehicleWHMapPageID
|
||
IF DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
CLEAR_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
ELSE
|
||
SET_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LB)))
|
||
ENDIF
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
||
IF iCurrentPageID = ciVehicleWHMapPageID
|
||
IF DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
CLEAR_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
ELSE
|
||
SET_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RB)))
|
||
ENDIF
|
||
// NB: Using IS_CONTROL_PRESSED for continuous zooming out on map.
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LT)))
|
||
ENDIF
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_LT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LT)))
|
||
ENDIF
|
||
// NB: Using IS_CONTROL_PRESSED for continuous zooming in on map.
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RT)))
|
||
ENDIF
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_RT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RT)))
|
||
ENDIF
|
||
|
||
PASS_DPAD_INPUTS_TO_SCALEFORM()
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
IF IS_BIT_SET(iBS, SEC_BS_CHECK_PAGE_ID)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> Accept cancel input for SEC_BS_CHECK_PAGE_ID")
|
||
ELSE
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_ACCEPT)))
|
||
ENDIF
|
||
ENDIF
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
IF IS_BIT_SET(iBS, SEC_BS_CHECK_PAGE_ID)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> Reject cancel input for SEC_BS_CHECK_PAGE_ID")
|
||
ELSE
|
||
#IF FEATURE_CASINO_HEIST
|
||
IF WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
AND g_sBusAppManagement.bRunningPrimaryApp
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
IF iCurrentPageID = ciVehicleWHStatsPageID
|
||
OR iCurrentPageID = ciWarehouseStatsPageID
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> Opened from hub app: CURRENT PAGE ID is:", iCurrentPageID, " EXITING WEBSITE")
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
IF iCurrentPageID != ciVehicleWHStatsPageID
|
||
AND iCurrentPageID != ciSVMPageID
|
||
OR NOT IS_BIT_SET(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_CANCEL)))
|
||
ENDIF
|
||
|
||
IF iCurrentPageID = ciBranchPageID
|
||
OR iCurrentPageID = ciLoginPageID
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, " EXITING WEBSITE")
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
CLEAR_BIT(iBS2, SEC_BS2_FINISHED_SHOWING_NAG_SCREEN_LF)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_OVERLAY_ACTIVE)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, " and bOverlayActive Closing overlay")
|
||
CLOSE_OVERLAY_SCREEN(TRUE, TRUE)
|
||
ELIF IS_MAP_SIDEBAR_OPEN()
|
||
CLEAR_BIT(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
CLEAR_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_X)))
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_ACCEPT)))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Mouse cursor control
|
||
IF IS_USING_CURSOR(FRONTEND_CONTROL)
|
||
|
||
PASS_CURSOR_INPUT_TO_SF()
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_ACCEPT)))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_CANCEL)))
|
||
ENDIF
|
||
ENDIF
|
||
IF iCurrentPageID = ciSVMPageID
|
||
//This allows us to have different functionality for a zoom in/out map vs a scrolling list like the SVM page
|
||
PASS_ANALOGUE_STICK_INPUTS_TO_SF(FALSE, TRUE)
|
||
ELSE
|
||
// NB: Using IS_CONTROL_PRESSED for continuous zooming out on map.
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_SCROLL_UP)))
|
||
ENDIF
|
||
// NB: Using IS_CONTROL_PRESSED for continuous zooming in on map.
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_CURSOR_SCROLL_DOWN)))
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
PASS_ANALOGUE_STICK_INPUTS_TO_SF(TRUE, TRUE)
|
||
ENDIF
|
||
|
||
IF (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
||
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y))
|
||
AND NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> CURRENT PAGE ID is:", iCurrentPageID, " EXITING WEBSITE for Triangle press")
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
PROC ADD_WAREHOUSE_MENU_HELP_KEY_INPUT(REPLACE_MP_VEH_OR_PROP_MENU &control, INT iNewWarehouse)
|
||
REMOVE_MENU_HELP_KEYS()
|
||
IF GET_WAREHOUSE_ID_FOR_SAVE_SLOT(control.iCurrentVertSel) <= 0
|
||
OR ARE_WAREHOUSES_SUITABLE_FOR_TRADE(GET_WAREHOUSE_ID_FOR_SAVE_SLOT(control.iCurrentVertSel), iNewWarehouse)
|
||
ADD_MENU_HELP_KEY_INPUT(INPUT_CELLPHONE_SELECT, "BB_SELECT")
|
||
ENDIF
|
||
ADD_MENU_HELP_KEY_INPUT(INPUT_CELLPHONE_CANCEL, "BB_BACK")
|
||
//ADD_MENU_HELP_KEY_GROUP( INPUTGROUP_FRONTEND_DPAD_UD,"HUD_INPUT1C")
|
||
ENDPROC
|
||
|
||
PROC SETUP_REPLACE_WAREHOUSE_MENU(REPLACE_MP_VEH_OR_PROP_MENU &control, INT iNewWarehouse)
|
||
INT iMenuCounter
|
||
INT i
|
||
INT iOwnedCount = GET_COUNT_OF_WAREHOUSES_OWNED()
|
||
CLEAR_MENU_DATA()
|
||
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
|
||
REPEAT ciMaxOwnedWarehouses i
|
||
iWHOrder[i] = iOwnedCount
|
||
ENDREPEAT
|
||
|
||
SET_MENU_ITEM_LAYOUT(MENU_ITEM_TEXT,MENU_ITEM_TEXT)
|
||
SET_MENU_ITEM_JUSTIFICATION(FONT_LEFT, FONT_RIGHT)
|
||
SET_MENU_ITEM_TOGGLEABLE(FALSE, FALSE)
|
||
SET_MENU_TITLE("REP_WHOUSE_0")
|
||
INT iWarehouse
|
||
FOR i = (ciMaxOwnedWarehouses - 1) TO 0 STEP -1
|
||
iWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(i)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "SETUP_REPLACE_WAREHOUSE_MENU: GET_OWNED_WAREHOUSE(",i,") = ",iWarehouse)
|
||
IF iWarehouse > ciW_Invalid
|
||
BOOL bIsSelectable = ARE_WAREHOUSES_SUITABLE_FOR_TRADE(iWarehouse, iNewWarehouse)
|
||
|
||
ADD_MENU_ITEM_TEXT(iMenuCounter,"PIM_DNAME",1,bIsSelectable)
|
||
// B* 2750666
|
||
IF IS_LANGUAGE_NON_ROMANIC()
|
||
ADD_MENU_ITEM_TEXT_COMPONENT_LITERAL(GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_WAREHOUSE_NAME(iWarehouse)))
|
||
ELSE
|
||
ADD_MENU_ITEM_TEXT_COMPONENT_PLAYER_NAME(GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_WAREHOUSE_NAME(iWarehouse)), FALSE, TRUE)
|
||
ENDIF
|
||
|
||
ADD_MENU_ITEM_TEXT(iMenuCounter,"CUST_GAR_COST",1,bIsSelectable)
|
||
ADD_MENU_ITEM_TEXT_COMPONENT_INT(GET_WAREHOUSE_VALUE_FOR_SALE(iWarehouse))
|
||
|
||
control.iSlotIDS[i] = iWarehouse
|
||
iWHOrder[iMenuCounter] = i
|
||
iMenuCounter++
|
||
ELSE
|
||
IF i > ciW_Invalid
|
||
IF GET_WAREHOUSE_ID_FOR_SAVE_SLOT(i-1) > 0
|
||
ADD_MENU_ITEM_TEXT(iMenuCounter,"REP_WHOUSE_1",0)
|
||
control.iSlotIDS[i] = iWarehouse
|
||
iWHOrder[iMenuCounter] = i
|
||
iMenuCounter++
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDFOR
|
||
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_NO_MONEY)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_HEIST_ACTIVE)
|
||
control.iMaxVertSel = iMenuCounter
|
||
SET_CURRENT_MENU_ITEM(control.icurrentVertSel)
|
||
|
||
//Once
|
||
ADD_WAREHOUSE_MENU_HELP_KEY_INPUT(control, iNewWarehouse)
|
||
ENDIF
|
||
CPRINTLN(DEBUG_INTERNET, "SETUP_REPLACE_WAREHOUSE_MENU: setup menu")
|
||
ENDPROC
|
||
|
||
PROC REPLACE_WAREHOUSE_WARNING_MESSAGE_WEB(INT iValue, BOOL bSmallerGarage)
|
||
STRING pHeaderTextLabel
|
||
STRING pBodyTextLabel
|
||
STRING pBodySubTextLabel = NULL
|
||
INT NumberToInsert = -1
|
||
STRING pFirstSubStringTextLabel = NULL
|
||
|
||
pHeaderTextLabel = ("BRSCRWTEX") //"Alert"
|
||
IF bSmallerGarage
|
||
pBodyTextLabel = ("BRDISWARE") //"You already own a warehouse, purchasing this one will trade in your old one.~n~
|
||
// You will also lose access to some of your stored vehicles as the Garage is smaller. The trade in will ~a~ you $~1~.""
|
||
pBodySubTextLabel = ("BRSHETPROSUB1") //"Do you wish to continue with this purchase?
|
||
ELSE
|
||
pBodyTextLabel = ("BRDISWAREB1") //"You already own a warehouse, purchasing this one will trade in your old one. The trade in will ~a~ you $~1~.""
|
||
pBodySubTextLabel = ("BRSHETPROSUB1") //"Do you wish to continue with this purchase?
|
||
ENDIF
|
||
NumberToInsert = iValue
|
||
IF NumberToInsert < 0
|
||
NumberToInsert *= -1
|
||
ENDIF
|
||
IF iValue < 0 //3rd
|
||
pFirstSubStringTextLabel = ("BRSHETMAK") //make
|
||
ELSE
|
||
pFirstSubStringTextLabel = ("BRSHETPRSA") //save
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "REPLACE_WAREHOUSE_WARNING_MESSAGE_WEB(pHeaderTextLabel:\"",
|
||
pHeaderTextLabel, "\", pBodyTextLabel:\"",
|
||
pBodyTextLabel, "\", pBodySubTextLabel:\"",
|
||
pBodySubTextLabel, "\", NumberToInsert:\"",
|
||
NumberToInsert, "\", pFirstSubStringTextLabel:\"",
|
||
pFirstSubStringTextLabel, "\")")
|
||
SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS(pHeaderTextLabel,
|
||
pBodyTextLabel,
|
||
FE_WARNING_OKCANCEL,
|
||
pBodySubTextLabel,
|
||
TRUE,
|
||
NumberToInsert,
|
||
WARNING_MESSAGE_DEFAULT,
|
||
pFirstSubStringTextLabel)
|
||
ENDPROC
|
||
|
||
PROC HANDLE_REPLACE_WAREHOUSE_MENU_DESCRIPTION(REPLACE_MP_VEH_OR_PROP_MENU &control, INT iPurchasingWarehouseID)
|
||
//item description
|
||
BOOL bSmallerGarage
|
||
INT iCurrentSelectedWHSlot = iWHOrder[control.iCurrentVertSel]
|
||
INT iOwnedWarehouseID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iCurrentSelectedWHSlot)
|
||
|
||
IF IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
|
||
INT iTradeIn = GET_WAREHOUSE_VALUE_FOR_SALE(iOwnedWarehouseID)
|
||
REPLACE_WAREHOUSE_WARNING_MESSAGE_WEB(iTradeIn, bSmallerGarage)
|
||
|
||
ELSE
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_REQ_SF)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_WARNING)
|
||
IF IS_BIT_SET(control.iBS,REP_VEH_PROP_BS_NO_MONEY)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_4",100)
|
||
ELIF IS_BIT_SET(control.iBS,REP_VEH_PROP_BS_HEIST_ACTIVE)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("MP_PROP_HEI_0",100)
|
||
ELIF IS_BIT_SET(control.iBS,REP_VEH_PROP_BS_3RD_DISABLE)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("PROP3RDDIS",1000)
|
||
ELIF iOwnedWarehouseID > 0
|
||
AND NOT ARE_WAREHOUSES_SUITABLE_FOR_TRADE(iOwnedWarehouseID, iPurchasingWarehouseID)
|
||
IF GET_WAREHOUSE_SIZE(iOwnedWarehouseID) > GET_WAREHOUSE_SIZE(iPurchasingWarehouseID)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_5a",1000)
|
||
ELIF NOT IS_WAREHOUSE_EMPTY(iOwnedWarehouseID)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_5b",1000)
|
||
ELIF iOwnedWarehouseID = iPurchasingWarehouseID
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_5c",1000)
|
||
#IF FEATURE_DLC_1_2022
|
||
ELIF IS_WAREHOUSE_PED_SOURCING_CARGO(iOwnedWarehouseID)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_5d",1000)
|
||
#ENDIF
|
||
ELSE
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> HANDLE_REPLACE_WAREHOUSE_MENU_DESCRIPTION: unknown reason why warehouse not suitable to trade ", iOwnedWarehouseID, " for ", iPurchasingWarehouseID, " in selection ", control.iCurrentVertSel, "!")
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_5",1000)
|
||
ENDIF
|
||
ELIF iOwnedWarehouseID > 0
|
||
AND ARE_WAREHOUSES_SUITABLE_FOR_TRADE(iOwnedWarehouseID, iPurchasingWarehouseID)
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_2",100)
|
||
ELSE
|
||
SET_CURRENT_MENU_ITEM_DESCRIPTION("REP_WHOUSE_3",100)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL RUN_REPLACE_WAREHOUSE_MENU(REPLACE_MP_VEH_OR_PROP_MENU &control,INT &iResultSlot,INT iPurchasingWarehouseID)
|
||
|
||
bool g_bAbortWarehouseMenus = FALSE
|
||
|
||
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
||
OR IS_PLAYER_IN_CORONA()
|
||
OR NOT IS_NET_PLAYER_OK(PLAYER_ID())
|
||
OR g_bMissionEnding
|
||
OR g_bAbortWarehouseMenus
|
||
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
||
IF g_bAbortWarehouseMenus
|
||
CPRINTLN(DEBUG_INTERNET, "RUN_REPLACE_WAREHOUSE_MENU: aborting menu. g_bAbortWarehouseMenus = TRUE")
|
||
ENDIF
|
||
iResultSlot = -1
|
||
CPRINTLN(DEBUG_INTERNET, "RUN_REPLACE_WAREHOUSE_MENU - NETWORK_IS_GAME_IN_PROGRESS = FALSE - returning slot -1")
|
||
CLEANUP_REPLACE_MP_VEH_OR_PROP_MENU(control)
|
||
RETURN(TRUE)
|
||
ENDIF
|
||
INT propval = GET_WAREHOUSE_PAID_FOR_PURCHASE_PRICE(iPurchasingWarehouseID) //*g_sMPTunables.fPropertyMultiplier)
|
||
|
||
HIDE_HELP_TEXT_THIS_FRAME()
|
||
DISABLE_DPADDOWN_THIS_FRAME()
|
||
DISABLE_SELECTOR_THIS_FRAME()
|
||
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_LEFT)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_RIGHT)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_CELLPHONE_LEFT)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_CELLPHONE_RIGHT)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_FORWARD)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_BACKWARD)
|
||
|
||
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
||
SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_ATTACK)
|
||
SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_ATTACK2)
|
||
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
|
||
|
||
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_LOOK_UD)
|
||
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_LOOK_LR)
|
||
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK)
|
||
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2)
|
||
|
||
IF NOT IS_PAUSE_MENU_ACTIVE() AND NOT IS_WARNING_MESSAGE_ACTIVE()
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
|
||
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
|
||
ENDIF
|
||
|
||
HANDLE_CURSOR_HIGHLIGHTED_MENU_ITEMS()
|
||
SET_MOUSE_CURSOR_THIS_FRAME()
|
||
ENDIF
|
||
|
||
SET_BIT(control.iBS,REP_VEH_PROP_BS_USING)
|
||
IF LOAD_MENU_ASSETS()
|
||
IF IS_NET_PLAYER_OK(PLAYER_ID())
|
||
IF NOT IS_BIT_SET(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
SETUP_REPLACE_WAREHOUSE_MENU(control, iPurchasingWarehouseID)
|
||
SET_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
HANDLE_REPLACE_WAREHOUSE_MENU_DESCRIPTION(control, iPurchasingWarehouseID)
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
DRAW_MENU()
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_PAUSE_MENU_ACTIVE()
|
||
AND NOT IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)
|
||
AND NOT g_sTransitionSessionData.sEndReserve.bTranCleanUpEndReservingSlot
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_PRESSED_ACCEPT)
|
||
INT iCurrentSelectedWHSlot = iWHOrder[control.iCurrentVertSel]
|
||
INT iOwnedWarehouseID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iCurrentSelectedWHSlot)
|
||
INT iOwnedWarehouseCost = 0
|
||
|
||
IF iOwnedWarehouseID > ciW_Invalid
|
||
iOwnedWarehouseCost = GET_WAREHOUSE_VALUE_FOR_SALE(iOwnedWarehouseID)
|
||
ENDIF
|
||
|
||
IF iOwnedWarehouseID <= ciW_Invalid
|
||
OR ARE_WAREHOUSES_SUITABLE_FOR_TRADE(iOwnedWarehouseID, iPurchasingWarehouseID)
|
||
IF IS_CELLPHONE_ACCEPT_JUST_PRESSED_EXCLUDING_MOUSE()
|
||
OR (IS_MENU_CURSOR_ACCEPT_PRESSED() AND (g_iMenuCursorItem = control.iCurrentVertSel))
|
||
OR (IS_WARNING_MESSAGE_ACTIVE() AND IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT))
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Success", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> control.iCurrentVertSel ", control.iCurrentVertSel, " ownedWarehouse: ", iOwnedWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> propVal = ",propval)
|
||
|
||
IF iOwnedWarehouseID > 0
|
||
AND ARE_WAREHOUSES_SUITABLE_FOR_TRADE(iOwnedWarehouseID, iPurchasingWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> trade in = ",iOwnedWarehouseCost)
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
INT iSpendValue = (propval - iOwnedWarehouseCost)
|
||
|
||
IF iSpendValue <= 0
|
||
OR NETWORK_CAN_SPEND_MONEY(iSpendValue, FALSE, TRUE, FALSE)
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
AND iOwnedWarehouseID > ciW_Invalid
|
||
CLEANUP_MENU_ASSETS()
|
||
SET_BIT(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
RETURN FALSE
|
||
ELSE
|
||
iResultSlot = iCurrentSelectedWHSlot
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
CLEANUP_REPLACE_MP_VEH_OR_PROP_MENU(control)
|
||
RETURN TRUE
|
||
ENDIF
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> NETWORK_CAN_SPEND_MONEY returned false")
|
||
SET_BIT(control.iBS,REP_VEH_PROP_BS_NO_MONEY)
|
||
ENDIF
|
||
SET_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_ACCEPT)
|
||
ENDIF
|
||
ELSE
|
||
//not suitable for trade...
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_CELLPHONE_SELECT)
|
||
AND NOT IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SELECT)
|
||
CLEAR_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_ACCEPT)
|
||
ENDIF
|
||
ENDIF
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_PRESSED_CANCEL)
|
||
IF IS_CELLPHONE_CANCEL_JUST_PRESSED_EXCLUDING_MOUSE()
|
||
OR (IS_MENU_CURSOR_CANCEL_PRESSED() AND (g_iMenuCursorItem > MENU_CURSOR_NO_ITEM))
|
||
OR (IS_WARNING_MESSAGE_ACTIVE() AND IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
|
||
PLAY_SOUND_FRONTEND(-1, "CANCEL","HUD_FREEMODE_SOUNDSET")
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
CPRINTLN(DEBUG_INTERNET, "RUN_REPLACE_WAREHOUSE_MENU player exited menu")
|
||
CLEANUP_REPLACE_MP_VEH_OR_PROP_MENU(control)
|
||
iResultSlot = -1
|
||
RETURN TRUE
|
||
ELSE
|
||
//REMOVE_MENU_HELP_KEYS()
|
||
//ADD_MENU_HELP_KEY_INPUT(INPUT_FRONTEND_ACCEPT, "BB_SELECT")
|
||
//ADD_MENU_HELP_KEY_INPUT(INPUT_FRONTEND_CANCEL, "BB_BACK")
|
||
//ADD_MENU_HELP_KEY_GROUP( INPUTGROUP_FRONTEND_DPAD_UD,"HUD_INPUT1C")
|
||
CLEAR_BIT(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
ENDIF
|
||
|
||
SET_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_CANCEL)
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
|
||
CLEAR_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_CANCEL)
|
||
ENDIF
|
||
ENDIF
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_PRESSED_UP)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_UP)
|
||
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_UP)
|
||
OR IS_MENU_CURSOR_SCROLL_UP_PRESSED()
|
||
PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN","HUD_FREEMODE_SOUNDSET")
|
||
control.iCurrentVertSel--
|
||
SET_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_UP)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
RESET_NET_TIMER(control.menuNavigationDelay)
|
||
ENDIF
|
||
ELSE
|
||
IF REPLACE_MP_VEH_OR_PROP_CHECK_MENU_INPUT_DELAY(control,INPUT_CELLPHONE_UP)
|
||
CLEAR_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_UP)
|
||
ENDIF
|
||
ENDIF
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_PRESSED_DOWN)
|
||
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_DOWN)
|
||
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_DOWN)
|
||
OR IS_MENU_CURSOR_SCROLL_DOWN_PRESSED()
|
||
PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN","HUD_FREEMODE_SOUNDSET")
|
||
control.iCurrentVertSel++
|
||
SET_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_DOWN)
|
||
CLEAR_BIT(control.iBS,REP_VEH_PROP_BS_SETUP)
|
||
RESET_NET_TIMER(control.menuNavigationDelay)
|
||
ENDIF
|
||
ELSE
|
||
IF REPLACE_MP_VEH_OR_PROP_CHECK_MENU_INPUT_DELAY(control,INPUT_CELLPHONE_DOWN)
|
||
CLEAR_BIT(control.iButtonBS,PROP_BUTTON_BS_PRESSED_DOWN)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// handle clicking on a new highlighted option
|
||
IF IS_MENU_CURSOR_ACCEPT_PRESSED()
|
||
IF (g_iMenuCursorItem != control.iCurrentVertSel)
|
||
control.iCurrentVertSel = g_iMenuCursorItem
|
||
SET_CURRENT_MENU_ITEM(control.icurrentVertSel)
|
||
PLAY_SOUND_FRONTEND(-1, "SELECT", "HUD_FREEMODE_SOUNDSET")
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF control.iCurrentVertSel >= control.iMaxVertSel
|
||
control.iCurrentVertSel = 0
|
||
ENDIF
|
||
IF Control.iCurrentVertSel < 0
|
||
control.iCurrentVertSel = control.iMaxVertSel-1
|
||
ENDIF
|
||
//PRINTLN("control.iCurrentVertSel = ",control.iCurrentVertSel)
|
||
HANDLE_REPLACE_WAREHOUSE_MENU_DESCRIPTION(control,iPurchasingWarehouseID)
|
||
IF NOT IS_BIT_SET(control.iButtonBS,PROP_BUTTON_BS_GIVEN_CONFIRMATION)
|
||
AND NOT IS_WARNING_MESSAGE_ACTIVE()
|
||
DRAW_MENU()
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL PROCESSING_SECUROSERVE_WAREHOUSE_BASKET(INT &iProcessSuccess, INT iPrice, INT iStatValue, SHOP_ITEM_CATEGORIES eCategory,
|
||
ITEM_ACTION_TYPES eAction, INT iItemId, INT iInventoryKey, INT iSellingPrice = 0,
|
||
INT iSellingItemId = 0, INT iInteriorID = 0, INT iInteriorInventoryKey = 0, INT iInteriorPrice = 0)
|
||
|
||
INT iTempPrice
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_PROCESSING_BASKET)
|
||
SWITCH iProcessingBasketStage
|
||
// Add item to basket
|
||
CASE SHOP_BASKET_STAGE_ADD
|
||
// Override the players cash.
|
||
iTempPrice = (iPrice - iSellingPrice)
|
||
|
||
IF iTempPrice > 0
|
||
AND NOT NETWORK_CAN_SPEND_MONEY(iTempPrice, FALSE, TRUE, FALSE)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
CASSERTLN(DEBUG_INTERNET, "[BASKET] PROCESSING_SECUROSERVE_WAREHOUSE_BASKET - Player can't afford this item! iTempPrice= ", iTempPrice)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding warehouse 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)
|
||
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
|
||
|
||
|
||
IF iSellingItemId = HASH("WH_INDEX_0_t0_v0")
|
||
OR iSellingItemId = HASH("IE_WH_INDEX_0_t0_v0")
|
||
SCRIPT_ASSERT("PROCESSING_SECUROSERVE_WAREHOUSE_BASKET - You are trading in an invalid warehouse!")
|
||
ENDIF
|
||
|
||
// Warehouse we are trading in.
|
||
IF iSellingItemId != 0
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade warehouse 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 iInteriorID != 0
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding trade warehouse to basket eCategory: CATEGORY_INVENTORY_WAREHOUSE_INTERIOR, eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction), ", iSellingPrice:$", iSellingPrice)
|
||
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, CATEGORY_INVENTORY_WAREHOUSE_INTERIOR, iInteriorID, eAction, 1, iInteriorPrice, 1, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInteriorInventoryKey)
|
||
//
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Failed to add interior item to basket")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
|
||
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start basket checkout")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to add item to basket")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
ENDIF
|
||
BREAK
|
||
// Pending
|
||
CASE SHOP_BASKET_STAGE_PENDING
|
||
IF IS_CASH_TRANSACTION_COMPLETE(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
IF GET_CASH_TRANSACTION_STATUS(GET_BASKET_TRANSACTION_SCRIPT_INDEX()) = 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
|
||
BREAK
|
||
|
||
// Success
|
||
CASE SHOP_BASKET_STAGE_SUCCESS
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
USE_FAKE_MP_CASH(FALSE)
|
||
|
||
iProcessSuccess = 2
|
||
RETURN FALSE
|
||
BREAK
|
||
|
||
//Failed
|
||
CASE SHOP_BASKET_STAGE_FAILED
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
|
||
USE_FAKE_MP_CASH(FALSE)
|
||
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
|
||
|
||
iProcessSuccess = 0
|
||
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")
|
||
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
iProcessSuccess = 0
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
iProcessSuccess = -1
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL BUY_MP_WAREHOUSE_FROM_SECUROSERV(INT iWarehouseID, INT &iResultSlot)
|
||
REPLACE_MP_VEH_OR_PROP_MENU replaceMenu
|
||
iResultSlot = -1 //, i
|
||
|
||
IF g_sMPTunables.bexec_disable_warehouse_purchase
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: purchase failed, g_sMPTunables.bexec_disable_warehouse_purchase is true")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF DOES_LOCAL_PLAYER_OWN_WAREHOUSE(iWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: purchase invalid, we already own warehouse: ", iWarehouseID)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
TEXT_LABEL_15 tl_15WarehouseName = GET_WAREHOUSE_NAME(iWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: trying to purchase warehouse #", iWarehouseID, " \"", tl_15WarehouseName, "\"")
|
||
|
||
INT iMaxTradeIn = 0
|
||
INT propval = CEIL(TO_FLOAT(GET_WAREHOUSE_COST(iWarehouseID))*g_sMPTunables.fPropertyMultiplier)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: purchase valid, attempting index #", iWarehouseID)
|
||
INT minPendingTransactionValue
|
||
INT finalPendingTransactionValue
|
||
minPendingTransactionValue = propval - iMaxTradeIn
|
||
|
||
INT iOldWarehouse = 0
|
||
|
||
//is it a debit or refund
|
||
IF minPendingTransactionValue >0
|
||
//do they have enough money
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: purchase failed, player doesn't have sufficient cash NETWORK_CAN_SPEND_MONEY returned false")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15WarehouseName), minPendingTransactionValue)
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: min pending- $", minPendingTransactionValue, " MAX trade val- $",iMaxTradeIn)
|
||
|
||
IF DOES_LOCAL_PLAYER_OWN_A_WAREHOUSE()
|
||
WHILE NOT RUN_REPLACE_WAREHOUSE_MENU(replaceMenu,iResultSlot,iWarehouseID)
|
||
DISABLE_SELECTOR_THIS_FRAME()
|
||
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
||
WAIT(0)
|
||
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
|
||
ENDWHILE
|
||
|
||
DISABLE_SELECTOR_THIS_FRAME()
|
||
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
||
WAIT(0)
|
||
g_sMenuData.bKeepPhoneForNextDrawMenuCall = TRUE
|
||
ELSE
|
||
iResultSlot = 0
|
||
ENDIF
|
||
|
||
INT iResultSlotCost = 0
|
||
IF iResultSlot = -1
|
||
// g_iPendingBrowserTimer = g_iBrowserTimer
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Player backed out of warehouse selection")
|
||
RETURN FALSE
|
||
ELSE
|
||
|
||
iOldWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iResultSlot)
|
||
IF (iOldWarehouse <= ciW_Invalid)
|
||
OR (iOldWarehouse > ciMaxWarehouses)
|
||
iResultSlotCost = ciW_Invalid
|
||
ELSE
|
||
iResultSlotCost = GET_WAREHOUSE_VALUE_FOR_SALE(iOldWarehouse)
|
||
ENDIF
|
||
|
||
finalPendingTransactionValue = propval - iResultSlotCost
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TRADE> Player selected WH: ", iOldWarehouse, " for trade. price before trade: ", propval, " Old WH trade val: ", iResultSlotCost, " 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
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15WarehouseName), finalPendingTransactionValue)
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
INT iItemId = GET_WAREHOUSE_KEY_FOR_CATALOGUE(iWarehouseID)
|
||
INT iInventoryKey = GET_WAREHOUSE_INVENTORY_KEY_FOR_CATALOGUE(iResultSlot)
|
||
INT iSellingItemId = 0
|
||
IF GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iResultSlot) != ciW_Invalid
|
||
iSellingItemId = GET_WAREHOUSE_KEY_FOR_CATALOGUE(GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iResultSlot))
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
TEXT_LABEL_15 tlLastClickedWarehouseIndex = tl_15WarehouseName
|
||
IF IS_STRING_NULL_OR_EMPTY(tlLastClickedWarehouseIndex)
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: label for last clicked warehouse index #", iWarehouseID, " is empty!")
|
||
ELSE
|
||
//CDEBUG1LN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: label for last clicked warehouse index #", iWarehouseID, " is \"", tlLastClickedWarehouseIndex, "\" (iReplaceWarehouse: ", iReplaceWarehouse, ")")
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
INT iProcessSuccess = -1
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR WAREHOUSE
|
||
WHILE PROCESSING_SECUROSERVE_WAREHOUSE_BASKET(iProcessSuccess, propval, iResultSlot, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, iResultSlotCost, iSellingItemId)
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
RENDER_SECUROSERVE()
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: success!!")
|
||
BREAK
|
||
DEFAULT
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: final:$", finalPendingTransactionValue)
|
||
|
||
SPEND_OFFICE_AND_WAREHOUSE data
|
||
|
||
data.m_Location = iWarehouseID
|
||
data.m_LocationAmount = finalPendingTransactionValue
|
||
data.m_SmallWarehouses = GET_COUNT_OF_WAREHOUSES_OWNED_BY_SIZE(eWarehouseSmall, PLAYER_ID())
|
||
data.m_MediumWarehouses = GET_COUNT_OF_WAREHOUSES_OWNED_BY_SIZE(eWarehouseMedium, PLAYER_ID())
|
||
data.m_LargeWarehouses = GET_COUNT_OF_WAREHOUSES_OWNED_BY_SIZE(eWarehouseLarge, PLAYER_ID())
|
||
data.m_WarehouseSize = ENUM_TO_INT(GET_WAREHOUSE_SIZE(iWarehouseID))
|
||
|
||
SET_WAREHOUSE_PAID_FOR_PURCHASE_PRICE(iResultSlot, PropVal)
|
||
|
||
IF finalPendingTransactionValue >= 0
|
||
AND (finalPendingTransactionValue = 0
|
||
OR (finalPendingTransactionValue > 0 AND (USE_SERVER_TRANSACTIONS() OR NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue,FALSE,TRUE,FALSE))))
|
||
IF finalPendingTransactionValue > 0
|
||
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
|
||
ENDIF
|
||
iOldWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iResultSlot)
|
||
IF (iOldWarehouse <= 0)
|
||
OR (iOldWarehouse > ciMaxWarehouses)
|
||
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_SPENT_PURCHASE_WAREHOUSE_PROPERTY(propval, data, FALSE, TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_WAREHOUSE_FROM_SECUROSERV: Bought warehouse ", tl_15WarehouseName, " for $", finalPendingTransactionValue)
|
||
ELIF finalPendingTransactionValue > 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
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, ",SECURO_TRADE> Trading with cost: ", finalPendingTransactionValue, " Sending telemtry cost as: ", data.m_LocationAmount)
|
||
NETWORK_SPENT_UPGRADE_WAREHOUSE_PROPERTY(finalPendingTransactionValue, data, FALSE, TRUE)
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV(IMPORT_EXPORT_GARAGES eIEWarehouseID)
|
||
|
||
INT iOwnedIEWarehouseValue
|
||
IMPORT_EXPORT_GARAGES eOwnedIEWH = GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())
|
||
|
||
INT iInteriorItemCost = GET_IE_GARAGE_INTERIOR_COST(eSelectedInterior, FALSE)
|
||
INT iInteriorInventoryKey = HASH("MP_STAT_OWNED_IE_WAREHOUSE_VAR_v0")
|
||
INT iInteriorItemHash = GET_IE_GARAGE_INTERIOR_KEY_FOR_CATALOGUE(eSelectedInterior, FALSE)
|
||
|
||
IF iInteriorItemCost = 0
|
||
//The basic interior is free when first purchasing a WH
|
||
//Setting the item hash to 0 stops it from being added to the transaction basket
|
||
iInteriorInventoryKey = 0
|
||
iInteriorItemHash = 0
|
||
ENDIF
|
||
|
||
IF DOES_PLAYER_OWN_IE_GARAGE(PLAYER_ID(), eIEWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: purchase invalid, we already own warehouse: ", eIEWarehouseID)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
TEXT_LABEL_15 tl_15WarehouseName = GET_IE_GARAGE_NAME_LABEL(eIEWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: trying to purchase warehouse #", eIEWarehouseID, " \"", tl_15WarehouseName, "\"")
|
||
|
||
INT iMaxTradeIn = 0
|
||
INT propval = CEIL(TO_FLOAT(GET_IE_GARAGE_COST(eIEWarehouseID))*g_sMPTunables.fPropertyMultiplier)
|
||
|
||
propval += iInteriorItemCost
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: purchase valid, attempting index #", eIEWarehouseID)
|
||
INT minPendingTransactionValue
|
||
INT finalPendingTransactionValue
|
||
minPendingTransactionValue = propval - iMaxTradeIn
|
||
|
||
//is it a debit or refund
|
||
IF eOwnedIEWH = IE_GARAGE_INVALID
|
||
IF minPendingTransactionValue > 0
|
||
//do they have enough money
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO>BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: purchase failed, player doesn't have sufficient cash")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15WarehouseName), minPendingTransactionValue)
|
||
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
finalPendingTransactionValue = propval
|
||
ELSE
|
||
iOwnedIEWarehouseValue = GET_IE_GARAGE_TRADE_PRICE(eOwnedIEWH)
|
||
|
||
finalPendingTransactionValue = propval - iOwnedIEWarehouseValue
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO><SECURO_TRADE> Player selected factory: ", eOwnedIEWH, " for trade. price before trade: ", propval, " Old Factory trade val: ", iOwnedIEWarehouseValue, " Final trans value: ", finalPendingTransactionValue)
|
||
|
||
// Re-check if player can afford based on selected trade-in value
|
||
IF finalPendingTransactionValue > 0
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO>BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15WarehouseName), minPendingTransactionValue)
|
||
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
INT iItemId = GET_IE_WAREHOUSE_KEY_FOR_CATALOGUE(eIEWarehouseID)
|
||
INT iInventoryKey = GET_IE_WAREHOUSE_INVENTORY_KEY_FOR_CATALOGUE()
|
||
INT iSellingItemId = 0
|
||
IF eOwnedIEWH != IE_GARAGE_INVALID
|
||
iSellingItemId = GET_IE_WAREHOUSE_KEY_FOR_CATALOGUE(eOwnedIEWH)
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
TEXT_LABEL_15 tlLastClickedWarehouseIndex = tl_15WarehouseName
|
||
IF IS_STRING_NULL_OR_EMPTY(tlLastClickedWarehouseIndex)
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: label for last clicked warehouse index #", eIEWarehouseID, " is empty!")
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
INT iProcessSuccess = -1
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR WAREHOUSE
|
||
WHILE PROCESSING_SECUROSERVE_WAREHOUSE_BASKET(iProcessSuccess, (propval - iInteriorItemCost), 0, CATEGORY_INVENTORY_WAREHOUSE, NET_SHOP_ACTION_BUY_WAREHOUSE, iItemId, iInventoryKey, iOwnedIEWarehouseValue, iSellingItemId, iInteriorItemHash, iInteriorInventoryKey, iInteriorItemCost)
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
RENDER_SECUROSERVE()
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: success!!")
|
||
BREAK
|
||
DEFAULT
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: final:$", finalPendingTransactionValue)
|
||
|
||
SPEND_OFFICE_AND_WAREHOUSE data
|
||
SPEND_BUSINESS_PROPERTY data2
|
||
|
||
data.m_Location = GET_HASH_KEY(GET_IE_GARAGE_NAME_LABEL(eIEWarehouseID))
|
||
data.m_LocationAmount = finalPendingTransactionValue
|
||
data.m_Style = GET_HASH_KEY(GET_IE_GARAGE_INTERIOR_STRING(eSelectedInterior))
|
||
data.m_StyleAmount = iInteriorItemCost
|
||
data2.m_businessID = data.m_Location
|
||
data2.m_businessUpgradeType = data.m_Style
|
||
|
||
IF data.m_StyleAmount > 0
|
||
AND (eOwnedIEWH = IE_GARAGE_INVALID OR eOwnedIEWH = IE_GARAGE_UPPER_LIMIT)
|
||
//This makes sure the total price in the telemetry data matches the price charged
|
||
//This is only necessary when using NETWORK_SPENT_PURCHASE_IMPEXP_WAREHOUSE_PROPERTY
|
||
data.m_LocationAmount -= data.m_StyleAmount
|
||
ENDIF
|
||
|
||
SET_IE_GARAGE_PAID_FOR_PURCHASE_PRICE(propval - iInteriorItemCost)
|
||
|
||
//Check if we're trading of just buying
|
||
IF eOwnedIEWH = IE_GARAGE_INVALID
|
||
OR eOwnedIEWH = IE_GARAGE_UPPER_LIMIT
|
||
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_SPENT_PURCHASE_IMPEXP_WAREHOUSE_PROPERTY(propval, data, FALSE, TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: Bought vehicle warehouse ", tl_15WarehouseName, " for $", finalPendingTransactionValue)
|
||
ELSE
|
||
IF iOwnedIEWarehouseValue > 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
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO><SECURO_TRADE> BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV: Trading the vehicle warehouse is earning the player: ", iOwnedIEWarehouseValue)
|
||
NETWORK_EARN_FROM_PROPERTY(iOwnedIEWarehouseValue, GET_HASH_KEY(GET_IE_GARAGE_NAME_LABEL(eOwnedIEWH)))
|
||
ENDIF
|
||
|
||
IF propval > 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
|
||
|
||
CDEBUG1LN(DEBUG_SHOPS, "<SECURO><SECURO_TRADE> Trading with cost: ", finalPendingTransactionValue, " Sending telemtry cost as: ", propval)
|
||
NETWORK_SPENT_TRADE_IMPEXP_WAREHOUSE_PROPERTY(propval, data2, FALSE, TRUE)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL PROCESSING_SECUROSERVE_WAREHOUSE_INTERIOR_BASKET(INT &iProcessSuccess, INT iPrice, INT iStatValue, SHOP_ITEM_CATEGORIES eCategory,
|
||
ITEM_ACTION_TYPES eAction, INT iItemId, INT iInventoryKey)
|
||
IF IS_BIT_SET(iBS, SEC_BS_PROCESSING_BASKET)
|
||
SWITCH iProcessingBasketStage
|
||
// Add item to basket
|
||
CASE SHOP_BASKET_STAGE_ADD
|
||
|
||
IF iPrice > 0
|
||
AND NOT NETWORK_CAN_SPEND_MONEY(iPrice, FALSE, TRUE, FALSE)
|
||
CASSERTLN(DEBUG_INTERNET, "[BASKET] PROCESSING_SECUROSERVE_WAREHOUSE_INTERIOR_BASKET - Player can't afford this item! iPrice= $", iPrice)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Adding warehouse interior to basket eCategory: CATEGORY_INVENTORY_WAREHOUSE_INTERIOR, eAction:", GET_CASH_TRANSACTION_ACTION_TYPE_DEBUG_STRING(eAction))
|
||
IF NETWORK_REQUEST_BASKET_TRANSACTION(NET_SHOP_TTYPE_BASKET, eCategory, iItemId, eAction, 1, iPrice, iStatValue, CATALOG_ITEM_FLAG_BANK_THEN_WALLET, iInventoryKey)
|
||
IF iProcessingBasketStage != SHOP_BASKET_STAGE_FAILED
|
||
IF NETWORK_START_BASKET_TRANSACTION_CHECKOUT()
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Basket checkout started")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_PENDING
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - failed to start basket checkout")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "[BASKET] - Failed to add interior item to basket")
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_FAILED
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
// Pending
|
||
CASE SHOP_BASKET_STAGE_PENDING
|
||
IF IS_CASH_TRANSACTION_COMPLETE(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
IF GET_CASH_TRANSACTION_STATUS(GET_BASKET_TRANSACTION_SCRIPT_INDEX()) = 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
|
||
BREAK
|
||
|
||
// Success
|
||
CASE SHOP_BASKET_STAGE_SUCCESS
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
|
||
USE_FAKE_MP_CASH(FALSE)
|
||
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
|
||
|
||
iProcessSuccess = 2
|
||
RETURN FALSE
|
||
BREAK
|
||
|
||
//Failed
|
||
CASE SHOP_BASKET_STAGE_FAILED
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
|
||
USE_FAKE_MP_CASH(FALSE)
|
||
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
|
||
|
||
iProcessSuccess = 0
|
||
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")
|
||
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
iProcessSuccess = 0
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
iProcessSuccess = -1
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL BUY_MP_IE_WAREHOUSE_INTERIOR(IMPORT_EXPORT_GARAGES eIEWarehouseID, IE_GARAGE_INTERIORS eInterior)
|
||
IMPORT_EXPORT_GARAGES eOwnedIEWH = GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())
|
||
|
||
INT iInteriorItemCost = GET_IE_GARAGE_INTERIOR_COST(eInterior, TRUE)
|
||
INT iInteriorInventoryKey = HASH("MP_STAT_OWNED_IE_WAREHOUSE_VAR_v0")
|
||
INT iInteriorItemHash = GET_IE_GARAGE_INTERIOR_KEY_FOR_CATALOGUE(eInterior, TRUE)
|
||
|
||
IF eIEWarehouseID != eOwnedIEWH
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR attempting interior purchase for an IE warehouse we don't own")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF iInteriorItemCost > 0
|
||
AND NOT NETWORK_CAN_SPEND_MONEY(iInteriorItemCost, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO>BUY_MP_IE_WAREHOUSE_INTERIOR: purchase failed, player doesn't have sufficient cash. Interior cost: ", iInteriorItemCost)
|
||
TRIGGER_BROWSER_NAG_SCREEN(iInteriorItemHash, iInteriorItemCost)
|
||
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
|
||
INT iProcessSuccess = -1
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR WAREHOUSE INTERIOR
|
||
WHILE PROCESSING_SECUROSERVE_WAREHOUSE_INTERIOR_BASKET(iProcessSuccess, iInteriorItemCost, 1, CATEGORY_INVENTORY_WAREHOUSE_INTERIOR, NET_SHOP_ACTION_BUY_WAREHOUSE, iInteriorItemHash, iInteriorInventoryKey)
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
RENDER_SECUROSERVE()
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR: success!!")
|
||
BREAK
|
||
DEFAULT
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
IF iInteriorItemCost > 0
|
||
SPEND_OFFICE_AND_WAREHOUSE data
|
||
|
||
data.m_Location = GET_HASH_KEY(GET_IE_GARAGE_NAME_LABEL(eIEWarehouseID))
|
||
data.m_LocationAmount = 0
|
||
data.m_Style = GET_HASH_KEY(GET_IE_GARAGE_INTERIOR_STRING(eSelectedInterior))
|
||
data.m_StyleAmount = iInteriorItemCost
|
||
|
||
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
|
||
|
||
PRINTLN("<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR - item cost: ",iInteriorItemCost)
|
||
PRINTLN("<SECURO> BUY_MP_IE_WAREHOUSE_INTERIOR - Call NETWORK_SPENT_UPGRADE_IMPEXP_WAREHOUSE_PROPERTY")
|
||
NETWORK_SPENT_UPGRADE_IMPEXP_WAREHOUSE_PROPERTY(iInteriorItemCost, data, FALSE, TRUE)
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL BUY_MP_CONTRABAND_FROM_SECUROSERV(INT iWarehouseID, CONTRABAND_SIZE ShipmentSize)
|
||
INT iResultSlot = GET_SAVE_SLOT_FOR_WAREHOUSE(iWarehouseID)
|
||
|
||
TEXT_LABEL_15 tl_15ContrabandName = GET_WAREHOUSE_NAME(iWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: trying to purchase CONTRABAND #", iWarehouseID, " \"", tl_15ContrabandName, "\"")
|
||
|
||
BOOL bSpeialItemSelected = FALSE
|
||
INT iMaxTradeIn = 0
|
||
INT propval = GET_CONTRABAND_SHIPMENT_COST(ShipmentSize)
|
||
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_SPECIAL_ITEM)
|
||
AND ShipmentSize = CONTRABAND_SMALL
|
||
propval = GET_SPECIAL_CONTRABAND_ITEM_COST(GET_SPECIAL_ITEM_FROM_CONTRABAND_TYPE(securoContraType))
|
||
bSpeialItemSelected = TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase valid, attempting index #", iWarehouseID)
|
||
INT minPendingTransactionValue
|
||
INT finalPendingTransactionValue
|
||
minPendingTransactionValue = propval - iMaxTradeIn
|
||
|
||
//is it a debit or refund
|
||
IF minPendingTransactionValue > 0
|
||
//do they have enough money
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(minPendingTransactionValue,FALSE,TRUE,FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, player doesn't have sufficient cash")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ContrabandName), minPendingTransactionValue)
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: min pending- $", minPendingTransactionValue, " MAX trade val- $",iMaxTradeIn)
|
||
|
||
finalPendingTransactionValue = propval //- GET_VALUE_OF_CURRENTLY_OWNED_CONTRABAND(iResultSlot)
|
||
|
||
// Re-check if player can afford based on selected trade-in value
|
||
IF finalPendingTransactionValue > 0
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, player failed on command NETWORK_CAN_SPEND_MONEY")
|
||
TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ContrabandName), finalPendingTransactionValue)
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
SET_BIT(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Check that mission is available
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_BUY, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, mission not available")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
iMissionUnavailableReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_BUY, FALSE)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
// Check we're not taking part in something
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, player critical to job")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
iMissionUnavailableReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_BUY, FALSE)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT GB_HAS_BUY_MISSION_TIMER_EXPIRED()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, GB_HAS_BUY_MISSION_TIMER_EXPIRED is false")
|
||
iMissionUnavailableReason = GB_MU_REASON_ON_COOLDOWN
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF ARE_SECUROSERV_BUY_MISSIONS_DISABLED()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, ARE_BUY_MISSIONS_DISABLED is true")
|
||
iMissionUnavailableReason = GB_MU_REASON_UNSUITABLE_SESSION
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NETWORK_IS_ACTIVITY_SESSION()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, NETWORK_IS_ACTIVITY_SESSION is true")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
|
||
/*
|
||
BuyContrabandMission –
|
||
This is used to fill/set the CATEGORY_INVENTORY_CONTRABAND_MISSION
|
||
It deducts money for the ‘purchasing’ of the mission
|
||
Basket will be < CATEGORY_INVENTORY_CONTRABAND_MISSION, CATEGORY_CONTRABAND_MISSION, price>
|
||
Validation must make sure the player owns the warehouse this CATEGORY_INVENTORY_CONTRABAND_MISSION is associated with
|
||
|
||
*/
|
||
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
INT iItemId = GET_CONTRABAND_MISSION_KEY_FOR_CATALOGUE(TRUE, ENUM_TO_INT(ShipmentSize), bSpeialItemSelected, ENUM_TO_INT(GET_SPECIAL_ITEM_FROM_CONTRABAND_TYPE(securoContraType)))
|
||
INT iInventoryKey = GET_CONTRABAND_MISSION_INVENTORY_KEY_FOR_CATALOGUE(iResultSlot)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
TEXT_LABEL_15 tlLastClickedCONTRABANDIndex = tl_15ContrabandName
|
||
IF IS_STRING_NULL_OR_EMPTY(tlLastClickedCONTRABANDIndex)
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: label for last clicked CONTRABAND index #", iWarehouseID, " is empty!")
|
||
ELSE
|
||
//CDEBUG1LN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: label for last clicked CONTRABAND index #", iWarehouseID, " is \"", tlLastClickedCONTRABANDIndex, "\" (iReplaceCONTRABAND: ", iReplaceCONTRABAND, ")")
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
INT iProcessSuccess = -1
|
||
BOOL bProcessingBasket = IS_BIT_SET(iBS, SEC_BS_PROCESSING_BASKET)
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR CONTRABAND
|
||
WHILE PROCESSING_SECUROSERVE_CONTRABAND_BASKET(iProcessSuccess, propval, iResultSlot, CATEGORY_INVENTORY_CONTRABAND_MISSION, NET_SHOP_ACTION_BUY_CONTRABAND_MISSION, iItemId, iInventoryKey, bProcessingBasket, iProcessingBasketStage)
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF NOT bProcessingBasket
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
ENDIF
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: success!!")
|
||
|
||
// Track this so we can add contraband if the mision was successful.
|
||
SET_LAST_PURCHASED_BUY_MISSION_CATALOGUE_KEY(iItemId)
|
||
BREAK
|
||
DEFAULT
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: final:$", finalPendingTransactionValue)
|
||
|
||
IF finalPendingTransactionValue >= 0
|
||
AND (finalPendingTransactionValue = 0
|
||
OR (finalPendingTransactionValue > 0 AND (USE_SERVER_TRANSACTIONS() OR NETWORK_CAN_SPEND_MONEY(finalPendingTransactionValue,FALSE,TRUE,FALSE))))
|
||
IF finalPendingTransactionValue > 0
|
||
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, finalPendingTransactionValue)
|
||
ENDIF
|
||
/* IF GET_VALUE_OF_CURRENTLY_OWNED_CONTRABAND(iResultSlot) > 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
|
||
NETWORK_EARN_FROM_CONTRABAND(GET_VALUE_OF_CURRENTLY_OWNED_CONTRABAND(iResultSlot), GET_HASH_KEY(tl_15ContrabandName))
|
||
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_BUY_CONTRABAND_MISSION(propval, iWarehouseID, GET_HASH_KEY(tl_15ContrabandName), FALSE, TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: Bought contraband ", tl_15ContrabandName, " for $", finalPendingTransactionValue)
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
ELSE
|
||
IF finalPendingTransactionValue < 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
|
||
|
||
NETWORK_BUY_PROPERTY(propval,GET_HASH_KEY(tl_15ContrabandName),FALSE,TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> BUY_MP_CONTRABAND_FROM_SECUROSERV: Earning from proprety: $", -finalPendingTransactionValue)
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
ELSE
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL SELL_MP_CONTRABAND_FROM_SECUROSERV(INT iWarehouseID)
|
||
|
||
INT iResultSlot = GET_SAVE_SLOT_FOR_WAREHOUSE(iWarehouseID)
|
||
TEXT_LABEL_15 tl_15ContrabandName = GET_WAREHOUSE_NAME(iWarehouseID)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: trying to sell contraband for warehouse #", iWarehouseID, " \"", tl_15ContrabandName, "\", in slot ", iResultSlot)
|
||
|
||
// Check that mission is available
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_SELL, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, mission not available")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: purchase failed, player is critical")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF IS_WAREHOUSE_EMPTY(iWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: warehouse is empty")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT GB_HAS_SELL_MISSION_TIMER_EXPIRED()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: GB_HAS_SELL_MISSION_TIMER_EXPIRED false")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
|
||
/*
|
||
BuyContrabandMission –
|
||
This is used to fill/set the CATEGORY_INVENTORY_CONTRABAND_MISSION
|
||
It deducts money for the ‘purchasing’ of the mission
|
||
Basket will be < CATEGORY_INVENTORY_CONTRABAND_MISSION, CATEGORY_CONTRABAND_MISSION, price>
|
||
Validation must make sure the player owns the warehouse this CATEGORY_INVENTORY_CONTRABAND_MISSION is associated with
|
||
|
||
*/
|
||
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
iProcessingBasketStage = SHOP_BASKET_STAGE_ADD
|
||
INT iItemId = GET_CONTRABAND_MISSION_KEY_FOR_CATALOGUE(FALSE, -1)
|
||
INT iInventoryKey = GET_CONTRABAND_MISSION_INVENTORY_KEY_FOR_CATALOGUE(iResultSlot)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
TEXT_LABEL_15 tlLastClickedCONTRABANDIndex = tl_15ContrabandName
|
||
IF IS_STRING_NULL_OR_EMPTY(tlLastClickedCONTRABANDIndex)
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: label for last clicked CONTRABAND index #", iWarehouseID, " is empty!")
|
||
ELSE
|
||
//CDEBUG1LN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: label for last clicked CONTRABAND index #", iWarehouseID, " is \"", tlLastClickedCONTRABANDIndex, "\" (iReplaceCONTRABAND: ", iReplaceCONTRABAND, ")")
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
INT iProcessSuccess = -1
|
||
BOOL bProcessingBasket = IS_BIT_SET(iBS, SEC_BS_PROCESSING_BASKET)
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR CONTRABAND
|
||
WHILE PROCESSING_SECUROSERVE_CONTRABAND_BASKET(iProcessSuccess, 0, iResultSlot, CATEGORY_INVENTORY_CONTRABAND_MISSION, NET_SHOP_ACTION_BUY_CONTRABAND_MISSION, iItemId, iInventoryKey, bProcessingBasket, iProcessingBasketStage)
|
||
RENDER_SECUROSERVE()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF NOT bProcessingBasket
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_BASKET)
|
||
ENDIF
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: success!!")
|
||
BREAK
|
||
DEFAULT
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
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_BUY_CONTRABAND_MISSION(0, iWarehouseID, GET_HASH_KEY(tl_15ContrabandName), FALSE, TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SELL_MP_CONTRABAND_FROM_SECUROSERV: Bought contraband ", tl_15ContrabandName)
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV: trying to steal vehicle")
|
||
|
||
// Check that mission is available
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), FMMC_TYPE_VEHICLE_EXPORT_BUY , FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV: purchase failed, mission not available")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV: purchase failed, player is critical")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Returns a string to give mission unavailable feedback
|
||
/// PARAMS:
|
||
/// bBuyMission - Is this a buy or sell mission
|
||
FUNC STRING GET_MISSION_UNAVAILABLE_REASON_STRING(BOOL bBuyMission, INT iWarehouseID)
|
||
CDEBUG1LN(DEBUG_INTERNET, "Returning mission unavailable reason for: ", iMissionUnavailableReason, " buy mission? ", bBuyMission)
|
||
|
||
IF NOT GB_HAS_SELL_MISSION_TIMER_EXPIRED()
|
||
OR NOT GB_HAS_BUY_MISSION_TIMER_EXPIRED()
|
||
RETURN "WH_MFREASON_9"
|
||
ENDIF
|
||
|
||
SWITCH iMissionUnavailableReason
|
||
CASE GB_MU_REASON_ONLY_GANG_PLAYERS RETURN "WH_MFREASON_0"
|
||
CASE GB_MU_REASON_SESSION_MISSION_ACTIVE RETURN "WH_MFREASON_1"
|
||
CASE GB_MU_REASON_NO_OTHER_BOSSES RETURN "WH_MFREASON_2"
|
||
CASE GB_MU_REASON_NOT_ENOUGH_GOONS RETURN "WH_MFREASON_3"
|
||
CASE GB_MU_REASON_TOO_MANY_INSTANCES RETURN "WH_MFREASON_4"
|
||
CASE GB_MU_REASON_BOSS_CRITICAL_TO_FME RETURN "WH_MFREASON_5"
|
||
CASE GB_MU_REASON_GOON_CRITICAL_TO_FME RETURN "WH_MFREASON_6"
|
||
CASE GB_MU_REASON_GOON_FM_EVENT_ACTIVE RETURN "WH_MFREASON_6"
|
||
CASE GB_MU_REASON_INVITE_SENT RETURN "WH_MFREASON_8"
|
||
CASE GB_MU_REASON_BOTH_SENT_BVB_INVITE RETURN "WH_MFREASON_8"
|
||
CASE GB_MU_REASON_ON_COOLDOWN RETURN "WH_MFREASON_9"
|
||
CASE GB_MU_REASON_UNSUITABLE_SESSION RETURN "WH_MFREASON_12"
|
||
CASE GB_MU_REASON_GOON_GAMBLING RETURN "GENERAL_MLF_G5"
|
||
CASE GB_MU_REASON_GOON_IS_ANIMAL RETURN "GENERAL_MLF_G2"
|
||
ENDSWITCH
|
||
|
||
//Critical to job so cant launch a mission
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
OR NETWORK_IS_ACTIVITY_SESSION()
|
||
RETURN "WH_MFREASON_10"
|
||
ENDIF
|
||
|
||
IF bBuyMission
|
||
RETURN "WHOUSE_PURCHF"
|
||
ENDIF
|
||
|
||
IF IS_WAREHOUSE_EMPTY(iWarehouseID)
|
||
RETURN "MP_WH_SELL_FE"
|
||
ENDIF
|
||
|
||
RETURN "MP_WH_SELL_F"
|
||
ENDFUNC
|
||
|
||
PROC RUN_INITIAL_CONTRABAND_SELL_CHECKS(INT iWarehouse)
|
||
IF ARE_SELL_MISSIONS_DISABLED()
|
||
START_OVERLAY_SCREEN("MP_WH_SELL", "WH_MFREASON_12", "WHOUSE_CONF", "", FALSE) //FAIL: Tuneables have disabled sell missions
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELIF IS_WAREHOUSE_EMPTY(iWarehouse) //FAIL: Empty WH
|
||
START_OVERLAY_SCREEN("MP_WH_SELL", "MP_WH_SELL_FE", "WHOUSE_CONF", "", FALSE)
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELIF IS_CONTRABAND_SELL_COOLDOWN_ACTIVE(iWarehouse) //FAIL: Sell cooldown active
|
||
OR NOT GB_HAS_SELL_MISSION_TIMER_EXPIRED()
|
||
START_OVERLAY_SCREEN("CONTRA_SALEF", "WH_MFREASON_9", "WHOUSE_CONF", "", FALSE)
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELIF NETWORK_IS_ACTIVITY_SESSION() //FAIL: Not in freemode
|
||
START_OVERLAY_SCREEN("CONTRA_SALEF", "WH_MFREASON_10", "WHOUSE_CONF", "", FALSE)
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELIF iCratesToSell >= g_sMPTunables.iexec_sell_3rd_brickade_threshold //PASS: Mission may require 3 vehicles
|
||
SET_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
START_OVERLAY_SCREEN("MP_WH_SALER", "MP_WH_SELL_W2", "WHOUSE_CONT", "WHOUSE_CANC", TRUE)
|
||
ELIF iCratesToSell >= g_sMPTunables.iexec_sell_2nd_brickade_threshold //PASS: Mission may require 2 vehicles
|
||
OR iCratesToSell >= g_sMPTunables.iexec_sell_2nd_cuban_threshold
|
||
SET_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
START_OVERLAY_SCREEN("MP_WH_SALER", "MP_WH_SELL_W", "WHOUSE_CONT", "WHOUSE_CANC", TRUE)
|
||
ELIF iContrabandBuyerID = ciContraSellMissionBuyer_4 //PASS: Special item confirm
|
||
SET_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
|
||
STRING sOverlayTitle = "MP_WH_SELLS" //Plural
|
||
STRING sOverlayDesc = "MP_WH_SELL_D"
|
||
|
||
IF iCratesToSell = 1
|
||
sOverlayTitle = "MP_WH_SELLSS" //Single crate
|
||
sOverlayDesc = "MP_WH_SELL_DS"
|
||
ENDIF
|
||
|
||
START_OVERLAY_SCREEN(sOverlayTitle, sOverlayDesc, "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
ELSE //PASS: Start mission confirm
|
||
SET_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
#IF FEATURE_DLC_1_2022
|
||
IF DID_I_JOIN_A_PRIVATE_SESSION()
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_APP_SELL_GOODS_HELP_TEXT_EXEC_CARGO)
|
||
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("APP_SG_HELP")
|
||
PRINT_HELP("APP_SG_HELP")
|
||
ENDIF
|
||
SET_PACKED_STAT_BOOL (PACKED_MP_BOOL_APP_SELL_GOODS_HELP_TEXT_EXEC_CARGO, TRUE)
|
||
ENDIF
|
||
ENDIF
|
||
#ENDIF
|
||
START_OVERLAY_SCREEN("MP_WH_SELL", "MP_WH_SELL_C", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
ENDIF
|
||
|
||
currentButtonPressStage = inputConsumed_0
|
||
iMissionUnavailableReason = -1
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Prints a ticker message each time the player purchases a new warehouse of a size they haven't previously purchased
|
||
PROC RUN_CHECK_FOR_NEW_ITEM_TICKER(INT iWarehouse)
|
||
EWarehouseSize eWHSize = GET_WAREHOUSE_SIZE(iWarehouse)
|
||
STRING stickerString = ""
|
||
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "RUN_CHECK_FOR_NEW_ITEM_TICKER: Checking for WH: ", iWarehouse, " Do we own one of this size: ", DOES_LOCAL_PLAYER_OWN_WAREHOUSE_OF_SIZE(eWHSize, iWarehouse))
|
||
|
||
IF NOT DOES_LOCAL_PLAYER_OWN_WAREHOUSE_OF_SIZE(eWHSize, iWarehouse)
|
||
INT iStat = GET_MP_INT_CHARACTER_STAT(MP_STAT_GB_SYSTEM_HELP_TEXT2)
|
||
INT iBitToCheck = 0
|
||
|
||
IF eWHSize = eWarehouseSmall
|
||
iBitToCheck = biFmGb_Help2_HasCashNoOffice0
|
||
stickerString = "WHPURCH_TICK_1"
|
||
ELIF eWHSize = eWarehouseMedium
|
||
iBitToCheck = biFmGb_Help2_HasCashNoOffice1
|
||
stickerString = "WHPURCH_TICK_2"
|
||
ELSE
|
||
iBitToCheck = biFmGb_Help2_HasCashNoOffice2
|
||
stickerString = "WHPURCH_TICK_3"
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iStat, iBitToCheck)
|
||
PRINT_TICKER(stickerString)
|
||
SET_BIT(iStat, iBitToCheck)
|
||
SET_MP_INT_CHARACTER_STAT(MP_STAT_GB_SYSTEM_HELP_TEXT2, iStat)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC INT CALCULATE_CONTRABAND_CRATES_TO_SELL(INT iSellButtonSelected)
|
||
INT iamountStored = GET_CONTRABAND_UNITS_TOTAL_FOR_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
INT iSpecialCount = GET_COUNT_OF_SPECIAL_ITEMS_IN_WAREHOUSE(iCurrentlyInsideWarehouse)
|
||
INT NonSpecialContraTotal = iamountStored - iSpecialCount
|
||
|
||
IF iSellButtonSelected = 1
|
||
RETURN ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER1_AMOUNT) / 100))
|
||
ELIF iSellButtonSelected = 2
|
||
RETURN ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER2_AMOUNT) / 100))
|
||
ELIF iSellButtonSelected = 3
|
||
RETURN ROUND(NonSpecialContraTotal * (TO_FLOAT(g_sMPTunables.iEXEC_SELL_BUYER3_AMOUNT) / 100))
|
||
ELIF iSellButtonSelected = 4
|
||
RETURN iSpecialCount
|
||
ENDIF
|
||
|
||
RETURN 0
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Handles inputs for the smaller version of the SecuroServ app used inside warehouses
|
||
PROC CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP()
|
||
IF currentButtonPressStage = inputConsumed_0
|
||
OR currentButtonPressStage = inputConsumed_1
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
ENABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_SELECTION")
|
||
currentSelectionReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
currentButtonPressStage = inputConsumed_0
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
PLAY_SOUND_FRONTEND(-1, "Mouse_Click", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
ENDIF
|
||
|
||
IF (currentButtonPressStage = inputConsumed_0)
|
||
AND IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentSelectionReturnIndex)
|
||
INT iButtonIndex = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentSelectionReturnIndex)
|
||
IF iButtonIndex > 0
|
||
AND iButtonIndex < 5
|
||
iContrabandBuyerID = iButtonIndex
|
||
iCratesToSell = CALCULATE_CONTRABAND_CRATES_TO_SELL(iButtonIndex)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP [MAP] Sell Contraband in \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentlyInsideWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentlyInsideWarehouse), "...")
|
||
currentButtonPressStage = inputConsumed_SELL
|
||
PLAY_SOUND_FRONTEND(-1, "Sell", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
ELIF iButtonIndex = 5
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP [MAP] Sell Contraband in \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentlyInsideWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentlyInsideWarehouse), "...")
|
||
IF IS_BIT_SET(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
currentButtonPressStage = inputConsumed_1
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
CLOSE_OVERLAY_SCREEN()
|
||
PLAY_SOUND_FRONTEND(-1, "Error", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
ELSE
|
||
currentButtonPressStage = inputConsumed_CONFIRM
|
||
PLAY_SOUND_FRONTEND(-1, "Confirm", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
ENDIF
|
||
ELIF iButtonIndex = 6
|
||
CLOSE_OVERLAY_SCREEN()
|
||
PLAY_SOUND_FRONTEND(-1, "Cancel", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP overlay screen cancel button pressed ")
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP unknown button index ", iButtonIndex, ", warehouseID: ", iCurrentlyInsideWarehouse)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF currentButtonPressStage = inputConsumed_SELL
|
||
RUN_INITIAL_CONTRABAND_SELL_CHECKS(iCurrentlyInsideWarehouse)
|
||
ENDIF
|
||
|
||
IF currentButtonPressStage = inputConsumed_CONFIRM
|
||
IF NOT SELL_MP_CONTRABAND_FROM_SECUROSERV(iCurrentlyInsideWarehouse)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Cannot launch sell mission for warehouse: ", iCurrentlyInsideWarehouse)
|
||
|
||
iCratesToSell = 0
|
||
iContrabandBuyerID = 0
|
||
iMissionUnavailableReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_SELL, FALSE)
|
||
STRING sSellFailReason = GET_MISSION_UNAVAILABLE_REASON_STRING(FALSE, iCurrentlyInsideWarehouse)
|
||
START_OVERLAY_SCREEN("MP_WH_SELL", sSellFailReason, "WHOUSE_CONF", "", FALSE)
|
||
PLAY_SOUND_FRONTEND(-1, "Error", "GTAO_Exec_SecuroServ_Warehouse_PC_Sounds")
|
||
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting contraband sell mission for warehouse: ", iCurrentlyInsideWarehouse)
|
||
GB_BOSS_REQUEST_CONTRABAND_MISSION_LAUNCH_FROM_SERVER(FMMC_TYPE_GB_CONTRABAND_SELL, iCurrentlyInsideWarehouse)
|
||
|
||
CLEAR_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_CARGO_MISSION_FROM_HACKER_TRUCK)
|
||
g_iContraSellMissionCratesToSell = iCratesToSell
|
||
g_iContraSellMissionBuyerID = iContrabandBuyerID
|
||
g_bLaunchedMissionFrmLaptop = TRUE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Launching contraband sell mission for: ", g_iContraSellMissionCratesToSell, " crates to buyer: ", g_iContraSellMissionBuyerID)
|
||
|
||
IF IS_PLAYER_IN_ARCADE_PROPERTY(PLAYER_ID())
|
||
g_sBusAppManagement.iMissionLaunched = FMMC_TYPE_GB_CONTRABAND_SELL
|
||
ENDIF
|
||
|
||
// Exit
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
|
||
currentButtonPressStage = inputConsumed_1
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Deals with any input on the original warehouse pages
|
||
PROC HANDLE_SECURO_WAREHOUSE_INPUTS(enumItemConsumed &ecurrentButtonPressStage)
|
||
// Buy Warehouse
|
||
IF (eCurrentButtonPressStage = inputConsumed_BUY_WAREHOUSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting warehouse purchase. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("WHOUSE_PURCH", "WHOUSE_PURCHQ", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
eCurrentButtonPressStage = inputConsumed_0
|
||
iMissionUnavailableReason = -1
|
||
SET_BIT(iBS, SEC_BS_BUY_WAREHOUSE_CONFIRMED)
|
||
ENDIF
|
||
|
||
// Run the confirm overlay for the purchase of contraband.
|
||
IF (eCurrentButtonPressStage = inputConsumed_BUY_SMALL_SHIPMENT)
|
||
OR (eCurrentButtonPressStage = inputConsumed_BUY_MEDIUM_SHIPMENT)
|
||
OR (eCurrentButtonPressStage = inputConsumed_BUY_LARGE_SHIPMENT)
|
||
IF IS_CONTRABAND_BUY_COOLDOWN_ACTIVE(iCurrentSelectedWarehouse)
|
||
START_OVERLAY_SCREEN("CONTRA_PURFA", "WH_MFREASON_11", "WHOUSE_CONF", "", FALSE)
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting contraband buy mission for warehouse. Runing confirm screen overlay")
|
||
TEXT_LABEL_15 tlContraSize
|
||
|
||
tlContraSize = BUILD_BUY_MISSION_CONFIRM_STRING(securoContraType, eCurrentSelectedShipmentSize, IS_SPECIAL_CONTRABAND_ITEM_ACTIVE())
|
||
|
||
START_OVERLAY_SCREEN("WHOUSE_SHI", tlContraSize, "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
ENDIF
|
||
|
||
eCurrentButtonPressStage = inputConsumed_0
|
||
ENDIF
|
||
|
||
//Confirm purchase of warehouse or contraband
|
||
IF (eCurrentButtonPressStage = inputConsumed_CONFIRM)
|
||
//Buy a warehouse
|
||
IF IS_BIT_SET(iBS, SEC_BS_BUY_WAREHOUSE_CONFIRMED)
|
||
CLOSE_OVERLAY_SCREEN()
|
||
INT iWarehouseID = iCurrentSelectedWarehouse
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Buying \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iWarehouseID), "\" $", GET_WAREHOUSE_COST(iWarehouseID))
|
||
|
||
INT iResultSlot = -1
|
||
IF BUY_MP_WAREHOUSE_FROM_SECUROSERV(iWarehouseID, iResultSlot)
|
||
// Buy warehouse.
|
||
START_OVERLAY_SCREEN("WHOUSE_PURCH", "WHOUSE_PURCHD", "WHOUSE_CONF", "", TRUE)
|
||
|
||
// If warehouse is successfully purchased then resend the data for that warehouse now with the 'isOwned' param changed.
|
||
INT iOldWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iResultSlot)
|
||
IF (iOldWarehouse <= 0)
|
||
SET_WAREHOUSE_AS_PURCHASED(iWarehouseID)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN(iWarehouseID)
|
||
REQUEST_NET_SPEND_COMMON_DATA_UPDATE()
|
||
ELSE
|
||
TRADE_IN_WAREHOUSE(iOldWarehouse, iWarehouseID)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN(iOldWarehouse)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN(iWarehouseID)
|
||
ENDIF
|
||
iJustPurchasedWHID = iWarehouseID
|
||
SET_BIT(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
SET_BIT(iBS, SEC_BS_JUST_PURCHASED_WAREHOUSE)
|
||
SET_BIT(iBS, SEC_BS_DISPLAYING_PURCHASE_WH_TUT)
|
||
SET_BIT(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
RUN_CHECK_FOR_NEW_ITEM_TICKER(iWarehouseID)
|
||
ELSE
|
||
// Buy failed
|
||
STRING sFailReason = "WHOUSE_PURCHF"
|
||
IF IS_BIT_SET(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
sFailReason = "WHSE_PURCHF_NM"
|
||
ELIF g_sMPTunables.bexec_disable_warehouse_purchase
|
||
sFailReason = "WHSE_PURCHF_TU"
|
||
ENDIF
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", sFailReason, "WHOUSE_CONF", "", FALSE)
|
||
ENDIF
|
||
|
||
iCurrentSelectedWarehouse = -1
|
||
eCurrentSelectedShipmentSize = CONTRABAND_INVALID
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_WH_BASKET_DONE)
|
||
CLEAR_BIT(iBS, SEC_BS_BUY_WAREHOUSE_CONFIRMED)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
IF SELL_MP_CONTRABAND_FROM_SECUROSERV(iCurrentSelectedWarehouse)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting contraband sell mission for warehouse: ", iCurrentSelectedWarehouse)
|
||
g_bSecuroQuickExitOfficeChair = TRUE
|
||
GB_BOSS_REQUEST_CONTRABAND_MISSION_LAUNCH_FROM_SERVER(FMMC_TYPE_GB_CONTRABAND_SELL, iCurrentSelectedWarehouse)
|
||
|
||
CLEAR_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_CARGO_MISSION_FROM_HACKER_TRUCK)
|
||
g_iContraSellMissionCratesToSell = GET_CONTRABAND_UNITS_TOTAL_FOR_WAREHOUSE(iCurrentSelectedWarehouse)
|
||
g_iContraSellMissionBuyerID = ciContraSellMissionBuyer_1
|
||
|
||
IF IS_PLAYER_IN_ARCADE_PROPERTY(PLAYER_ID())
|
||
g_sBusAppManagement.iMissionLaunched = FMMC_TYPE_GB_CONTRABAND_SELL
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Launching contraband sell mission for: ", g_iContraSellMissionCratesToSell, " crates to buyer: ", g_iContraSellMissionBuyerID)
|
||
|
||
// Exit
|
||
CLEANUP_SECUROSERVE(TRUE)
|
||
ELSE
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Cannot launch sell mission for warehouse: ", iCurrentSelectedWarehouse)
|
||
|
||
iMissionUnavailableReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_GB_CONTRABAND_SELL, FALSE)
|
||
STRING sSellFailReason = GET_MISSION_UNAVAILABLE_REASON_STRING(FALSE, iCurrentSelectedWarehouse)
|
||
|
||
START_OVERLAY_SCREEN("MP_WH_SELL", sSellFailReason, "WHOUSE_CONF", "", FALSE)
|
||
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
iCurrentSelectedWarehouse = -1
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
CLEAR_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
ENDIF
|
||
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
//Else buy contraband for a warehouse
|
||
ELSE
|
||
INT iWarehouseID = iCurrentSelectedWarehouse
|
||
|
||
IF iWarehouseID > ciW_Invalid
|
||
AND BUY_MP_CONTRABAND_FROM_SECUROSERV(iWarehouseID, eCurrentSelectedShipmentSize)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Buying shipment of ", eCurrentSelectedShipmentSize, " units from \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iWarehouseID), "\" $", GET_CONTRABAND_SHIPMENT_COST(eCurrentSelectedShipmentSize))
|
||
// Start the mission - bit of a fudge for now we should probably add a central controller for this?
|
||
BOOL bActivateSpecialItemMission = FALSE
|
||
//Only start a special item mission if the user clicked the 1 crate option
|
||
g_bSecuroQuickExitOfficeChair = TRUE
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_SPECIAL_ITEM)
|
||
AND eCurrentSelectedShipmentSize = CONTRABAND_SMALL
|
||
bActivateSpecialItemMission = TRUE
|
||
ENDIF
|
||
|
||
INT iFMMCTypeChosen
|
||
|
||
CLEAR_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_CARGO_MISSION_FROM_HACKER_TRUCK)
|
||
iFMMCTypeChosen = REQUEST_LAUNCH_ANY_SOURCE_CARGO_MISSION(iWarehouseID, eCurrentSelectedShipmentSize, securoContraType, bActivateSpecialItemMission)
|
||
|
||
IF IS_PLAYER_IN_ARCADE_PROPERTY(PLAYER_ID())
|
||
g_sBusAppManagement.iMissionLaunched = iFMMCTypeChosen
|
||
ENDIF
|
||
|
||
SET_BIT(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
|
||
//Exit
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_START_MIS)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
iTutorialDialogueID = 4
|
||
SET_BIT(iBS, SEC_BS_DELAY_APP_EXIT_FOR_CONVERSATION)
|
||
ELSE
|
||
CLEANUP_SECUROSERVE(TRUE)
|
||
ENDIF
|
||
ELSE
|
||
// Purchase Failed
|
||
STRING sFailReason = GET_MISSION_UNAVAILABLE_REASON_STRING(TRUE, iWarehouseID)
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", sFailReason, "WHOUSE_CONF", "", FALSE)
|
||
SET_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
ENDIF
|
||
|
||
iCurrentSelectedWarehouse = -1
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF(eCurrentButtonPressStage = inputConsumed_SELL)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting warehouse purchase. Runing confirm screen overlay")
|
||
RUN_INITIAL_CONTRABAND_SELL_CHECKS(iCurrentSelectedWarehouse)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL LAUNCH_IE_STEAL_MISSION(SEC_OVERLAY_PROMPT &iPrompt)
|
||
|
||
IF GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.iVehicleTotal >= ciMAX_IE_OWNED_VEHICLES
|
||
iPrompt = SEC_OVERLAY_WHOUSE_FULL
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
INT iFailReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_VEHICLE_EXPORT_BUY, FALSE)
|
||
|
||
IF iFailReason = GB_MU_REASON_GOON_IS_ANIMAL
|
||
iPrompt = SEC_OVERLAY_GOON_ANIMAL
|
||
RETURN FALSE
|
||
ELIF iFailReason = GB_MU_REASON_GOON_GAMBLING
|
||
iPrompt = SEC_OVERLAY_GOON_GAMBLING
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
//Check we are about to launch a mission with a valid vehicle that we don't own
|
||
CHECK_IE_VEH_STEAL_LIST_FOR_OWNED_VEHICLES()
|
||
|
||
IF GET_ACTIVE_IE_STEAL_MISSION_VEHICLE() = IE_VEH_INVALID
|
||
//Shuffle the list
|
||
SHUFFLE_IE_VEHICLE_LIST_FOR_STEAL_MISSIONS()
|
||
//Make sure we don't start at a point in the list with an empty slot
|
||
CHECK_IE_VEH_STEAL_LIST_FOR_OWNED_VEHICLES(TRUE)
|
||
ENDIF
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO>[Mission_Launch] LAUNCH_IE_STEAL_MISSION Requesting Mission: FMMC_TYPE_VEHICLE_EXPORT_BUY",
|
||
" With vehicle: ", GET_STRING_FROM_IE_VEHICLE_ENUM(GET_ACTIVE_IE_STEAL_MISSION_VEHICLE()))
|
||
|
||
IF GET_ACTIVE_IE_STEAL_MISSION_VEHICLE() != IE_VEH_INVALID
|
||
AND LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV()
|
||
AND IE_DELIVERY_ACTIVATE_DROPOFF_OF_TYPE_FOR_GANG(VEHICLE_EXPORT_DROPOFF_GB_WAREHOUSE)
|
||
//Get the mission vehicle
|
||
IE_VEHICLE_ENUM eMissionVeh = GET_ACTIVE_IE_STEAL_MISSION_VEHICLE()
|
||
//Launch the mission
|
||
GB_BOSS_REQUEST_VEHICLE_EXPORT_MISSION_LAUNCH_FROM_SERVER(FMMC_TYPE_VEHICLE_EXPORT_BUY, eMissionVeh, IE_VEH_INVALID, IE_VEH_INVALID, IE_VEH_INVALID)
|
||
//Set the active vehicle for the next steal mission
|
||
INCREMENT_ACTIVE_IE_STEAL_MISSION_VEHICLE()
|
||
//Quick exit the office chair
|
||
g_bSecuroQuickExitOfficeChair = TRUE
|
||
//Clear telemetry
|
||
CLEAR_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_VEH_EXP_MISSION_FROM_HACKER_TRUCK)
|
||
|
||
IF IS_PLAYER_IN_ARCADE_PROPERTY(PLAYER_ID())
|
||
g_sBusAppManagement.iMissionLaunched = FMMC_TYPE_VEHICLE_EXPORT_BUY
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ELSE
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_ACTIVE_IE_STEAL_MISSION_VEHICLE() = IE_VEH_INVALID
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> LAUNCH_IE_STEAL_MISSION Still trying to launch a mission with an invalid vehicle. This will not work!")
|
||
ENDIF
|
||
#ENDIF
|
||
CDEBUG1LN(DEBUG_INTERNET, "<SECURO>[Mission_Launch] LAUNCH_IE_STEAL_MISSION Couldn't activate warehouse dropoff!")
|
||
ENDIF
|
||
|
||
iPrompt = SEC_OVERLAY_NO_VEH_FOUND
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC INT GET_IE_WH_PURCHASE_COST(IMPORT_EXPORT_GARAGES eVehicleWH, IE_GARAGE_INTERIORS eWarehouseInterior, BOOL bRenovating)
|
||
INT iTotalCost
|
||
BOOL bPurchasingvehicleWH = (eVehicleWH != GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()))
|
||
BOOL bTradingInExisitingWH = (DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID()) AND bPurchasingvehicleWH)
|
||
|
||
IF bPurchasingvehicleWH
|
||
OR bTradingInExisitingWH
|
||
iTotalCost += GET_IE_GARAGE_COST(eVehicleWH)
|
||
|
||
IF bTradingInExisitingWH
|
||
iTotalCost -= GET_IE_GARAGE_TRADE_PRICE(GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//We always need to add the cost of a new interior
|
||
iTotalCost += GET_IE_GARAGE_INTERIOR_COST(eWarehouseInterior, bRenovating)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> GET_IE_WH_PURCHASE_COST: Total cost: ", iTotalCost, " bPurchasingvehicleWH ",bPurchasingvehicleWH, " bTradingInExisitingWH ", bTradingInExisitingWH)
|
||
|
||
RETURN iTotalCost
|
||
ENDFUNC
|
||
|
||
FUNC BOOL CAN_PLAYER_AFFORD_IE_WH_PURCHASE(IMPORT_EXPORT_GARAGES eVehicleWH, IE_GARAGE_INTERIORS eWarehouseInterior, BOOL bRenovating)
|
||
|
||
INT iTotalCost = GET_IE_WH_PURCHASE_COST(eVehicleWH, eWarehouseInterior, bRenovating)
|
||
|
||
IF iTotalCost > 0
|
||
AND NOT NETWORK_CAN_SPEND_MONEY(iTotalCost, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CAN_PLAYER_AFFORD_IE_WH_PURCHASE: purchase failed, player doesn't have sufficient cash. Total cost: ", iTotalCost)
|
||
INT iItemHash = GET_HASH_KEY(GET_IE_GARAGE_NAME_LABEL(eVehicleWH))
|
||
TRIGGER_BROWSER_NAG_SCREEN(iItemHash, iTotalCost)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CAN_PLAYER_AFFORD_IE_WH_PURCHASE: purchase can go ahead player has sufficient cash. Total cost: ", iTotalCost)
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Deals with any input on the IE vehicle warehouse pages
|
||
PROC HANDLE_SECURO_IE_WAREHOUSE_INPUTS(enumItemConsumed &eCurrentButtonPressStage)
|
||
|
||
INT iIEWarehouseID = ((iCurrentSelectedWarehouse - iWarehouseOffset) - 1)
|
||
INT iCollectedVehCount = GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.iVehicleTotal
|
||
IMPORT_EXPORT_GARAGES eSelectedWH = INT_TO_ENUM(IMPORT_EXPORT_GARAGES, iIEWarehouseID)
|
||
IMPORT_EXPORT_GARAGES eOwnedWH = GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())
|
||
IE_GARAGE_INTERIORS eOwnedWHInterior = GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.eWarehouseStyle
|
||
STRING sFailReason
|
||
|
||
SWITCH eCurrentButtonPressStage
|
||
//Steal vehicle buttons on the map and stats page
|
||
CASE inputConsumed_STEAL_VEHICLE
|
||
CASE inputConsumed_MAP_STEAL_VEHICLE
|
||
IF NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting IE steal mission. Cooldown timer stilll running. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("SEC_VEH_STEAL", "SEC_V_STEAL_F", "WHOUSE_CONF", "", FALSE)
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting IE steal mission. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("SEC_VEH_STEAL", "SEC_VEH_STEALQ", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
SET_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
ENDIF
|
||
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
BREAK
|
||
|
||
//Cancel button on the stats page overlay
|
||
CASE inputConsumed_VEH_STAT_CANCEL
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
BREAK
|
||
|
||
//Buy vehicle warehouse button
|
||
CASE inputConsumed_BUY_VEH_WH
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
SET_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
|
||
IF eSelectedWH = eOwnedWH
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting IE warehouse interior purchase. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("IEWHINT_PURCH", "IEWHINT_PURCHQ", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
ELIF DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting IE warehouse trade. Runing confirm trade screen overlay")
|
||
START_OVERLAY_SCREEN("IEWHOUSE_PURCH", "IE_WH_TRADE", "WHOUSE_CONF", "WHOUSE_CANC", TRUE, FALSE, GET_IE_GARAGE_TRADE_PRICE(GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())))
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting IE warehouse purchase. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("IEWHOUSE_PURCH", "IEWHOUSE_PURCHQ", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
//Confirm button on the map page overlay screen
|
||
CASE inputConsumed_VEH_MAP_ACCEPT
|
||
CASE inputConsumed_VEH_STAT_ACCEPT
|
||
IF IS_BIT_SET(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
|
||
IF NOT CAN_PLAYER_AFFORD_IE_WH_PURCHASE(eSelectedWH, eSelectedInterior, (eSelectedWH = eOwnedWH))
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS CAN_PLAYER_AFFORD_IE_WH_PURCHASE returned false.")
|
||
IF eSelectedWH = eOwnedWH
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", "IEWH_PURCHF_NM", "WHOUSE_CONF", "", FALSE)
|
||
ELSE
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", "WHSE_PURCHF_NM", "WHOUSE_CONF", "", FALSE)
|
||
ENDIF
|
||
SET_BIT(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
ELIF eSelectedWH = eOwnedWH
|
||
|
||
//Selecting a new interior
|
||
IF eOwnedWHInterior = eSelectedInterior
|
||
|
||
//We already own this interior
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requested purchase of an interior we already own")
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", "IEWH_INT_PURCHF", "WHOUSE_CONF", "", FALSE)
|
||
|
||
ELIF BUY_MP_IE_WAREHOUSE_INTERIOR(eSelectedWH, eSelectedInterior)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Completed purchase of IE garage interior rennovation to: ", eSelectedInterior, ". Did not select the underground garage for purchase")
|
||
START_OVERLAY_SCREEN("IEWHOUSE_PURCH", "IEWHINT_PURCHD", "WHOUSE_CONF", "", TRUE)
|
||
|
||
//Set the interior variation
|
||
SET_OWND_IE_WAREHOUSE_INTERIOR(eSelectedInterior)
|
||
eSelectedInterior = IE_INTERIOR_BASIC
|
||
|
||
//Send the data back to SF
|
||
POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(eSelectedWH, iCollectedVehCount)
|
||
|
||
//Request a save
|
||
SET_BIT(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
SET_BIT(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
ELSE
|
||
// Buy failed
|
||
sFailReason = "WHOUSE_PURCHF"
|
||
IF IS_BIT_SET(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
sFailReason = "WHSE_PURCHF_NM"
|
||
ENDIF
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", sFailReason, "WHOUSE_CONF", "", FALSE)
|
||
|
||
SET_BIT(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
ENDIF
|
||
ELIF BUY_MP_IE_WAREHOUSE_FROM_SECUROSERV(eSelectedWH)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Completed purchase of IE garage: ", iIEWarehouseID, " with interior: ", eSelectedInterior)
|
||
START_OVERLAY_SCREEN("IEWHOUSE_PURCH", "IEWHOUSE_PURCHD", "WHOUSE_CONF", "", TRUE)
|
||
|
||
IF DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
//Trade our existing IE warehouse
|
||
SET_IE_GARAGE_AS_OWNED(INT_TO_ENUM(IMPORT_EXPORT_GARAGES, iIEWarehouseID))
|
||
SET_OWND_IE_WAREHOUSE_INTERIOR(eSelectedInterior)
|
||
POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(eOwnedWH, iCollectedVehCount)
|
||
POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(eSelectedWH, iCollectedVehCount)
|
||
ELSE
|
||
//Buying our first IE warehouse
|
||
SET_IE_GARAGE_AS_OWNED(INT_TO_ENUM(IMPORT_EXPORT_GARAGES, iIEWarehouseID))
|
||
SET_OWND_IE_WAREHOUSE_INTERIOR(eSelectedInterior)
|
||
POPULATE_MP_SECUROSERV_SITE_VEH_WH_PIN(eSelectedWH, iCollectedVehCount)
|
||
REQUEST_NET_SPEND_COMMON_DATA_UPDATE()
|
||
ENDIF
|
||
|
||
//Set the underground garage as owned
|
||
SET_IE_WAREHOUSE_UNDERGROUND_GAR_AS_OWNED()
|
||
eSelectedInterior = IE_INTERIOR_BASIC
|
||
|
||
//Request a save
|
||
SET_BIT(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
SET_BIT(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
ELSE
|
||
// Buy failed
|
||
sFailReason = "WHOUSE_PURCHF"
|
||
IF IS_BIT_SET(iBS, SEC_BS_PURCHASE_FAILED_NO_MONEY)
|
||
sFailReason = "WHSE_PURCHF_NM"
|
||
// ELIF g_sMPTunables.bexec_disable_warehouse_purchase
|
||
// sFailReason = "WHSE_PURCHF_TU"
|
||
ENDIF
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", sFailReason, "WHOUSE_CONF", "", FALSE)
|
||
|
||
SET_BIT(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_IE_WAREHOUSE_INPUTS Requesting steal vehicle mission launch")
|
||
SEC_OVERLAY_PROMPT iPrompt
|
||
|
||
IF LAUNCH_IE_STEAL_MISSION(iPrompt)
|
||
INCREMENT_TOTAL_NUM_STEAL_MISSIONS_STARTED()
|
||
SET_SHARD_SHOULD_BE_HELD_UP_FOR_OFFICE_SEAT_ANIM(TRUE)
|
||
SET_PLAYER_IS_ON_IE_VEHICLE_STEAL_MISSION(TRUE)
|
||
CLEANUP_SECUROSERVE(TRUE)
|
||
ELSE
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
START_OVERLAY_SCREEN("SEC_VEH_STEAL", GET_SEC_OVERLAY_PROMPT(iPrompt), "WHOUSE_CONF", "", FALSE)
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
ENDIF
|
||
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
BREAK
|
||
|
||
//Cancel button on the map page confirm screen overlay
|
||
CASE inputConsumed_VEH_MAP_CANCEL
|
||
CLEAR_BIT(iBS, SEC_BS_LAUNCH_STEAL_MIS_SELECTED)
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
PROC HANDLE_SECURO_SVM_INPUTS(enumItemConsumed &eCurrentButtonPressStage)
|
||
|
||
INT iCountOfMissionsToUnock = (4 * (iSVMToLaunch + 1))
|
||
BOOL bMissionUnlocked = FALSE
|
||
|
||
SWITCH eCurrentButtonPressStage
|
||
//Confirm button on the map page overlay screen
|
||
CASE inputConsumed_SVM_MAP_ACCEPT
|
||
IF iSVMToLaunch < 0
|
||
OR iSVMToLaunch > ciMAX_AT_FLOW_MISSIONS
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Requesting IE SVM mission (2) with invalid ID: ", iSVMToLaunch, ". Runing confirm screen overlay")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
START_OVERLAY_SCREEN("SVM_MIS_TI", "SVM_MIS_FL", "WHOUSE_CONF", "", FALSE)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "HANDLE_SECURO_SVM_INPUTS - inputConsumed_SVM_MAP_ACCEPT: Setting bit SVM_BS_DISPLAY_OVERLAY_WARNING")
|
||
SET_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
ENDIF
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Confirmed request launching SVM mission: ", iSVMToLaunch)
|
||
g_bLaunchedMissionFrmLaptop = TRUE
|
||
SVM_FLOW_LAUNCH_NEXT_AVAILABLE_MISSION(g_sTransitionSessionData.ciCam, iSVMToLaunch, ciFLOW_MISSION_TYPE_SVM)
|
||
CLEANUP_SECUROSERVE()
|
||
ENDIF
|
||
BREAK
|
||
//Cancel button on the map page confirm screen overlay
|
||
CASE inputConsumed_SVM_MAP_CANCEL
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
BREAK
|
||
//SVM mission selection
|
||
CASE inputConsumed_SVM_LAUNCH
|
||
|
||
IF iCurrentPageID != ciSVMPageID
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> HANDLE_SECURO_SVM_INPUTS Invalid page id for SVM input. Page: ", iCurrentPageID, " SVM mission ID: ", iSVMToLaunch)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
eCurrentButtonPressStage = inputConsumed_1
|
||
EXIT
|
||
ENDIF
|
||
|
||
bMissionUnlocked = (GET_MP_INT_CHARACTER_STAT(MP_STAT_AT_FLOW_IMPEXP_NUM) >= iCountOfMissionsToUnock)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("sc_SvmFlowAlwaysAvailable")
|
||
bMissionUnlocked = TRUE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
IF iSVMToLaunch < 0
|
||
OR iSVMToLaunch > ciMAX_AT_FLOW_MISSIONS
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Requesting IE SVM mission (2) with invalid ID: ", iSVMToLaunch, ". Runing confirm screen overlay")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
START_OVERLAY_SCREEN("SVM_MIS_TI", "SVM_MIS_FL", "", "WHOUSE_CONF", FALSE)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "HANDLE_SECURO_SVM_INPUTS - inputConsumed_SVM_LAUNCH: Setting bit SVM_BS_DISPLAY_OVERLAY_WARNING")
|
||
SET_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
ENDIF
|
||
|
||
iSVMToLaunch = -1
|
||
ELIF NOT bMissionUnlocked
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Requesting IE SVM mission which we have not unlocked. ID: ", iSVMToLaunch)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
START_OVERLAY_SCREEN("SVM_MIS_TI", "SVM_MIS_FNA", "", "WHOUSE_CONF", FALSE)
|
||
|
||
CDEBUG1LN(DEBUG_INTERNET, "HANDLE_SECURO_SVM_INPUTS - inputConsumed_SVM_LAUNCH: Setting bit SVM_BS_DISPLAY_OVERLAY_WARNING - Mission not unlocked.")
|
||
SET_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
ENDIF
|
||
|
||
iSVMToLaunch = -1
|
||
ELIF SVM_FLOW_GET_NEXT_AVAILABLE_MISSION_CONTENT_ARRAY_POS(iSVMToLaunch, ciFLOW_MISSION_TYPE_SVM) = -1
|
||
OR AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Requesting IE SVM mission which is not in the game. ID: ", iSVMToLaunch)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Fail", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
START_OVERLAY_SCREEN("SVM_MIS_TI", "SVM_MIS_FL", "", "WHOUSE_CONF", FALSE)
|
||
|
||
SET_BIT(iBS, SEC_BS_DISPLAY_OVERLAY_WARNING)
|
||
ENDIF
|
||
|
||
iSVMToLaunch = -1
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS HANDLE_SECURO_SVM_INPUTS Confirmed request launching SVM mission: ", iSVMToLaunch)
|
||
START_OVERLAY_SCREEN("SVM_MIS_TI", "SVM_MIS_L", "WHOUSE_CONF", "WHOUSE_CANC", TRUE)
|
||
PLAY_SOUND_FRONTEND(-1, "Navigate", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
ENDIF
|
||
|
||
currentButtonPressStage = inputConsumed_1
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
FUNC BOOL IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
||
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL IS_CANCEL_BUTTON_INPUT_JUST_PRESSED()
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC MAINTAIN_CHECKS_FOR_CURRENT_SCREEN_ID()
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CHECK_PAGE_ID)
|
||
IF IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
||
OR IS_CANCEL_BUTTON_INPUT_JUST_PRESSED()
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_SCREEN_ID")
|
||
currentCurrentScreenReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
SET_BIT(iBS, SEC_BS_CHECK_PAGE_ID)
|
||
ENDIF
|
||
ELIF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentCurrentScreenReturnIndex)
|
||
iCurrentPageID = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentCurrentScreenReturnIndex)
|
||
CPRINTLN(DEBUG_INTERNET,"<SECURO> MAINTAIN_CHECKS_FOR_CURRENT_SCREEN_ID CURRENT PAGE ID:", iCurrentPageID)
|
||
CLEAR_BIT(iBS, SEC_BS_CHECK_PAGE_ID)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
||
IF currentButtonPressStage = inputConsumed_0
|
||
OR currentButtonPressStage = inputConsumed_1
|
||
IF IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_SELECTION")
|
||
currentSelectionReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_SELECTED_WAREHOUSE_ID")
|
||
currentWarehouseReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
|
||
SET_BIT(iBS, SEC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
ENDIF
|
||
|
||
SET_BIT(iBS, SEC_BS_CHECK_SIDE_BAR)
|
||
currentButtonPressStage = inputConsumed_0
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC MAINTAIN_CHECKS_FOR_IS_WAREHOUSE_PANEL_SHOWING()
|
||
IF iCurrentPageID = ciWarehouseMapPageID
|
||
OR iCurrentPageID = ciVehicleWHMapPageID
|
||
IF IS_BIT_SET(iBS, SEC_BS_CHECK_SIDE_BAR)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "IS_WAREHOUSE_PANEL_SHOWING")
|
||
buyWindowOpenReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
CLEAR_BIT(iBS, SEC_BS_CHECK_SIDE_BAR)
|
||
ELIF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(buyWindowOpenReturnIndex)
|
||
IF GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL(buyWindowOpenReturnIndex)
|
||
SET_BIT(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
ELSE
|
||
CLEAR_BIT(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
ENDIF
|
||
CLEAR_BIT(iBS, SEC_BS_CHECK_SIDE_BAR)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC CHECK_BUTTON_PRESS()
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
INT iStrOffset = 0, iColumn = 0
|
||
INT iRed, iGreen, iBlue, iAlpha
|
||
TEXT_LABEL_63 str1 = "", str2 = ""
|
||
str1 = "CHECK_BUTTON_PRESS stage:"
|
||
str1 += ENUM_TO_INT(currentButtonPressStage)
|
||
#ENDIF
|
||
|
||
MAINTAIN_CHECKS_FOR_CURRENT_SCREEN_ID()
|
||
MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
||
MAINTAIN_CHECKS_FOR_IS_WAREHOUSE_PANEL_SHOWING()
|
||
|
||
IF (currentButtonPressStage = inputConsumed_0)
|
||
IF (IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentSelectionReturnIndex) AND IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentWarehouseReturnIndex))
|
||
INT iButtonIndex = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentSelectionReturnIndex)
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
|
||
// You can find the id of the warehouse in question with this...
|
||
iCurrentSelectedWarehouse = GET_WAREHOUSE_INDEX_FROM_SCALEFORM_INDEX(GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentWarehouseReturnIndex))
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [TOP]: ", iButtonIndex)
|
||
|
||
//Login Screen
|
||
CONST_INT iCONST_Button_Index_1001 1001 //Log In button on log in panel
|
||
CONST_INT iCONST_Button_Index_1002 1002 //Quit button on access denied popup
|
||
//Stats Screen
|
||
CONST_INT iCONST_Button_Index_2001 2001 //Warehouse map button
|
||
CONST_INT iCONST_Button_Index_2002 2002 //Buy button in column 1 of the bar graph
|
||
CONST_INT iCONST_Button_Index_2003 2003 //Buy button in column 2 of the bar graph
|
||
CONST_INT iCONST_Button_Index_2004 2004 //Buy button in column 3 of the bar graph
|
||
CONST_INT iCONST_Button_Index_2005 2005 //Buy button in column 4 of the bar graph
|
||
CONST_INT iCONST_Button_Index_2006 2006 //Buy button in column 5 of the bar graph
|
||
//Map Screen
|
||
CONST_INT iCONST_Button_Index_3001 3001 //Zoom In button
|
||
CONST_INT iCONST_Button_Index_3002 3002 //Zoom Out button
|
||
CONST_INT iCONST_Button_Index_3003 3003 //Filter All button
|
||
CONST_INT iCONST_Button_Index_3004 3004 //Filter Small button
|
||
CONST_INT iCONST_Button_Index_3005 3005 //Filter Medium button
|
||
CONST_INT iCONST_Button_Index_3006 3006 //Filter Large button
|
||
CONST_INT iCONST_Button_Index_3007 3007 //Buy Warehouse button
|
||
CONST_INT iCONST_Button_Index_3008 3008 //Buy Small Shipment button
|
||
CONST_INT iCONST_Button_Index_3009 3009 //Buy Medium Shipment button
|
||
CONST_INT iCONST_Button_Index_3010 3010 //Buy Large Shipment button
|
||
CONST_INT iCONST_Button_Index_3011 3011 //Sell Contraband Button
|
||
CONST_INT iCONST_Button_Index_3012 3012 //Set Waypoint button on purchase success popup
|
||
CONST_INT iCONST_Button_Index_3013 3013 //Close button on purchase success popup
|
||
//Vehicle stats screen
|
||
CONST_INT iCONST_Button_Index_4001 4001 //Steal Vehicle
|
||
CONST_INT iCONST_Button_Index_4002 4002 //Show Vehicle Map Screen
|
||
CONST_INT iCONST_Button_Index_4003 4003 //Accept button on map screen popup/overlay
|
||
CONST_INT iCONST_Button_Index_4004 4004 //Cancel button on map screen popup/overlay
|
||
|
||
CONST_INT iCONST_Button_Index_4015 4015 //IE warehouse Interior Style 0
|
||
CONST_INT iCONST_Button_Index_4016 4016 //IE warehouse Interior Style 1
|
||
CONST_INT iCONST_Button_Index_4017 4017 //IE warehouse Interior Style 2
|
||
CONST_INT iCONST_Button_Index_4018 4018 //IE warehouse Purchase Interior / Basement renovation
|
||
CONST_INT iCONST_Button_Index_4019 4019 //IE warehouse Cancel Interior Overlay
|
||
CONST_INT iCONST_Button_Index_4023 4023 //IE warehouse Show Interior Overlay
|
||
|
||
//Vehicle Map
|
||
CONST_INT iCONST_Button_Index_5003 5003 //IE WH map page - Filter button: All
|
||
CONST_INT iCONST_Button_Index_5004 5004 //IE WH map page - Filter button: Owned
|
||
CONST_INT iCONST_Button_Index_5005 5005 //Buy Vehicle Warehouse
|
||
CONST_INT iCONST_Button_Index_5006 5006 //Steal Vehicle
|
||
CONST_INT iCONST_Button_Index_5007 5007 //Accept button on map screen popup/overlay
|
||
CONST_INT iCONST_Button_Index_5008 5008 //Cancel button on map screen popup/overlay
|
||
CONST_INT iCONST_Button_Index_5010 5010 //Buy IE WH (Brings up the interiors overlay)
|
||
CONST_INT iCONST_Button_Index_5011 5011 //Renovate IE WH (Brings up the interiors overlay)
|
||
CONST_INT iCONST_Button_Index_5012 5012 //IE warehouse Interior 1
|
||
CONST_INT iCONST_Button_Index_5013 5013 //IE warehouse Interior 2
|
||
CONST_INT iCONST_Button_Index_5014 5014 //IE warehouse Interior 3
|
||
CONST_INT iCONST_Button_Index_5015 5015 //IE warehouse Interior overlay cancel button
|
||
//Special Vehicle page
|
||
CONST_INT iCONST_Button_Index_6002 6002 //Accept button on map screen popup/overlay
|
||
CONST_INT iCONST_Button_Index_6003 6003 //Cancel button on map screen popup/overlay
|
||
|
||
CONST_INT iCONST_SVM_Button_Index_0 0 //Special vehicle mission 1
|
||
CONST_INT iCONST_SVM_Button_Index_1 1 //Special vehicle mission 2
|
||
CONST_INT iCONST_SVM_Button_Index_2 2 //Special vehicle mission 3
|
||
CONST_INT iCONST_SVM_Button_Index_3 3 //Special vehicle mission 4
|
||
CONST_INT iCONST_SVM_Button_Index_4 4 //Special vehicle mission 5
|
||
CONST_INT iCONST_SVM_Button_Index_5 5 //Special vehicle mission 6
|
||
CONST_INT iCONST_SVM_Button_Index_6 6 //Special vehicle mission 7
|
||
CONST_INT iCONST_SVM_Button_Index_7 7 //Special vehicle mission 8
|
||
|
||
SWITCH iButtonIndex
|
||
/////////////////////////////////////////////
|
||
/// LOGIN SCREEN
|
||
///
|
||
CASE iCONST_Button_Index_1001 //Log In button on log in panel
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [LOGIN] Log In")
|
||
BREAK
|
||
CASE iCONST_Button_Index_1002 //Quit button on access denied popup
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [LOGIN] Quit")
|
||
//CLEANUP_SECUROSERVE()
|
||
BREAK
|
||
|
||
/////////////////////////////////////////////
|
||
/// STATS SCREEN
|
||
///
|
||
CASE iCONST_Button_Index_2001 //Warehouse map button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Warehouse map")
|
||
BREAK
|
||
CASE iCONST_Button_Index_2002 //Buy button in column 1 of the bar graph
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Buy in column 1")
|
||
BREAK
|
||
CASE iCONST_Button_Index_2003 //Buy button in column 2 of the bar graph
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Buy in column 2")
|
||
BREAK
|
||
CASE iCONST_Button_Index_2004 //Buy button in column 3 of the bar graph
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Buy in column 3")
|
||
BREAK
|
||
CASE iCONST_Button_Index_2005 //Buy button in column 4 of the bar graph
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Buy in column 4")
|
||
BREAK
|
||
CASE iCONST_Button_Index_2006 //Buy button in column 5 of the bar graph
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Buy in column 5")
|
||
BREAK
|
||
|
||
/////////////////////////////////////////////
|
||
/// MAP SCREEN
|
||
///
|
||
CASE iCONST_Button_Index_3001 //Zoom In button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Zoom In")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3002 //Zoom Out button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Zoom Out")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3003 //Filter All button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Filter All")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3004 //Filter Small button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Filter Small")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3005 //Filter Medium button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Filter Medium")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3006 //Filter Large button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Filter Large")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3007 //Buy Warehouse button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Buy \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentSelectedWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentSelectedWarehouse), "...")
|
||
currentButtonPressStage = inputConsumed_BUY_WAREHOUSE
|
||
BREAK
|
||
CASE iCONST_Button_Index_3008 //Buy Small Shipment button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Buy small shipment from \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentSelectedWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentSelectedWarehouse), "...")
|
||
eCurrentSelectedShipmentSize = CONTRABAND_SMALL
|
||
currentButtonPressStage = inputConsumed_BUY_SMALL_SHIPMENT
|
||
BREAK
|
||
CASE iCONST_Button_Index_3009 //Buy Medium Shipment button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Buy medium shipment from \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentSelectedWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentSelectedWarehouse), "...")
|
||
eCurrentSelectedShipmentSize = CONTRABAND_MEDIUM
|
||
currentButtonPressStage = inputConsumed_BUY_MEDIUM_SHIPMENT
|
||
BREAK
|
||
CASE iCONST_Button_Index_3010 //Buy Large Shipment button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Buy large shipment from \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentSelectedWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentSelectedWarehouse), "...")
|
||
eCurrentSelectedShipmentSize = CONTRABAND_LARGE
|
||
currentButtonPressStage = inputConsumed_BUY_LARGE_SHIPMENT
|
||
BREAK
|
||
CASE iCONST_Button_Index_3011 //Sell Contraband Button
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Sell Contraband in \"", DEBUG_GET_STRING_FOR_WAREHOUSE(iCurrentSelectedWarehouse), "\" $", GET_WAREHOUSE_COST(iCurrentSelectedWarehouse), "...")
|
||
currentButtonPressStage = inputConsumed_SELL
|
||
BREAK
|
||
CASE iCONST_Button_Index_3012 //Confirm button (Can add whatever text we need to this)
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_PROCESSING_WH_BASKET_DONE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Going to confirm purchase stage")
|
||
currentButtonPressStage = inputConsumed_CONFIRM
|
||
ELSE
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_WH_BASKET_DONE)
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
iCurrentSelectedWarehouse = -1
|
||
currentButtonPressStage = inputConsumed_1
|
||
CLOSE_OVERLAY_SCREEN()
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_JUST_PURCHASED_WAREHOUSE)
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Success", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [OVERLAY] inputConsumed_CONFIRM")
|
||
BREAK
|
||
CASE iCONST_Button_Index_3013 //Close button on purchase success popup
|
||
iCurrentSelectedWarehouse = -1
|
||
currentButtonPressStage = inputConsumed_1
|
||
CLEAR_BIT(iBS, SEC_BS_PROCESSING_CONTRA_BASKET_FAILED)
|
||
CLEAR_BIT(iBS, SEC_BS_SELL_CONTRABAND_CONFIRMED)
|
||
CLEAR_BIT(iBS, SEC_BS_BUY_WAREHOUSE_CONFIRMED)
|
||
CLOSE_OVERLAY_SCREEN()
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Cancel", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Close")
|
||
BREAK
|
||
/////////////////////////////////////////////
|
||
/// Vehicle stats screen
|
||
///
|
||
CASE iCONST_Button_Index_4001 //Steal Vehicle
|
||
currentButtonPressStage = inputConsumed_STEAL_VEHICLE
|
||
PLAY_SOUND_FRONTEND(-1, "Sell", "GTAO_Exec_SecuroServ_Computer_Sounds" )
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Steal vehicle")
|
||
BREAK
|
||
CASE iCONST_Button_Index_4002 //Show Vehicle Map Screen
|
||
SET_BIT(iBS, SEC_BS_SIDE_PANEL_SHOWING)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] Show vehicle map screen")
|
||
BREAK
|
||
CASE iCONST_Button_Index_4003 //Accept button on map screen popup/overlay
|
||
currentButtonPressStage = inputConsumed_VEH_STAT_ACCEPT
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] overlay scrren accept")
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Success", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
CASE iCONST_Button_Index_4004 //Cancel button on map screen popup/overlay
|
||
currentButtonPressStage = inputConsumed_VEH_STAT_CANCEL
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [STATS] overlay scrren cancel")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Cancel", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
|
||
/////////////////////////////////////////////
|
||
/// Vehicle map
|
||
///
|
||
CASE iCONST_Button_Index_5003 //IE WH map page - Filter button: All
|
||
SET_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
BREAK
|
||
CASE iCONST_Button_Index_5004 //IE WH map page - Filter button: Owned
|
||
CLEAR_BIT(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
BREAK
|
||
CASE iCONST_Button_Index_5005 //Buy Vehicle Warehouse
|
||
CASE iCONST_Button_Index_4018
|
||
currentButtonPressStage = inputConsumed_BUY_VEH_WH
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Buy vehicle WH")
|
||
BREAK
|
||
CASE iCONST_Button_Index_5006 //Steal Vehicle
|
||
currentButtonPressStage = inputConsumed_MAP_STEAL_VEHICLE
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] Steal vehicle")
|
||
BREAK
|
||
CASE iCONST_Button_Index_5007 //Accept button on map screen popup/overlay
|
||
currentButtonPressStage = inputConsumed_VEH_MAP_ACCEPT
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] overlay scrren accept")
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Confirm_Success", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
ENDIF
|
||
|
||
CLEAR_BIT(iBS, SEC_BS_IE_TRANSACTION_FAILED)
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
CASE iCONST_Button_Index_5008 //Cancel button on map screen popup/overlay
|
||
currentButtonPressStage = inputConsumed_VEH_MAP_CANCEL
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] overlay scrren cancel")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Cancel", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
CASE iCONST_Button_Index_5010 //Buy IE WH (Brings up the interiors overlay)
|
||
IF GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdIEgarageData.iVehicleTotal != 0
|
||
AND GET_MP_INT_CHARACTER_STAT(MP_STAT_OWNED_IE_WAREHOUSE) != 0
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS Requesting IE warehouse purchase when our warehouse isn't empty. Runing confirm screen overlay")
|
||
START_OVERLAY_SCREEN("WHOUSE_PURFA", "SEC_WHOUSE_NEMP", "WHOUSE_CONF", "", FALSE)
|
||
CLEAR_BIT(iBS, SEC_BS_PRUCHASE_IE_WH_SELECTED)
|
||
ELSE
|
||
eSelectedInterior = IE_INTERIOR_BASIC
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH_MAP] Buy IE WH")
|
||
START_OVERLAY_SCREEN("IEWH_SEL_INTT", "IEWH_SEL_INTD", "WHOUSE_CONF", "WHOUSE_CANC", TRUE, TRUE)
|
||
ENDIF
|
||
BREAK
|
||
CASE iCONST_Button_Index_5011 //Renovate IE WH (Brings up the interiors overlay)
|
||
CASE iCONST_Button_Index_4023
|
||
eSelectedInterior = GET_PLAYERS_OWND_IE_WAREHOUSE_INTERIOR(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH_MAP] Renovate IE WH")
|
||
START_OVERLAY_SCREEN("IEWH_SEL_INTT", "IEWH_SEL_INTD", "WHOUSE_CONF", "WHOUSE_CANC", TRUE, TRUE)
|
||
BREAK
|
||
CASE iCONST_Button_Index_5012
|
||
CASE iCONST_Button_Index_4015
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH] Interior 1")
|
||
eSelectedInterior = IE_INTERIOR_BASIC
|
||
BREAK
|
||
CASE iCONST_Button_Index_5013
|
||
CASE iCONST_Button_Index_4016
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH] Interior 2")
|
||
eSelectedInterior = IE_INTERIOR_URBAN
|
||
BREAK
|
||
CASE iCONST_Button_Index_5014
|
||
CASE iCONST_Button_Index_4017
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH] Interior 3")
|
||
eSelectedInterior = IE_INTERIOR_BRANDED
|
||
BREAK
|
||
CASE iCONST_Button_Index_5015
|
||
CASE iCONST_Button_Index_4019
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [IE_WH] Cancel button")
|
||
eSelectedInterior = IE_INTERIOR_BASIC
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
|
||
////////////////////////////////////////////
|
||
/// Special vehicle missions
|
||
///
|
||
CASE iCONST_Button_Index_6002 //Accept button on map screen popup/overlay
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] SVM confirm")
|
||
currentButtonPressStage = inputConsumed_SVM_MAP_ACCEPT
|
||
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
|
||
CASE iCONST_Button_Index_6003 //Cancel button on map screen popup/overlay
|
||
currentButtonPressStage = inputConsumed_SVM_MAP_CANCEL
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] SVM cancel")
|
||
PLAY_SOUND_FRONTEND(-1, "Popup_Cancel", "GTAO_Exec_SecuroServ_Computer_Sounds")
|
||
CLOSE_OVERLAY_SCREEN()
|
||
BREAK
|
||
|
||
CASE iCONST_SVM_Button_Index_0 //Special vehicle mission 1
|
||
CASE iCONST_SVM_Button_Index_1 //Special vehicle mission 2
|
||
CASE iCONST_SVM_Button_Index_2 //Special vehicle mission 3
|
||
CASE iCONST_SVM_Button_Index_3 //Special vehicle mission 4
|
||
CASE iCONST_SVM_Button_Index_4 //Special vehicle mission 5
|
||
CASE iCONST_SVM_Button_Index_5 //Special vehicle mission 6
|
||
CASE iCONST_SVM_Button_Index_6 //Special vehicle mission 7
|
||
CASE iCONST_SVM_Button_Index_7 //Special vehicle mission 8
|
||
IF iCurrentPageID = ciSVMPageID
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS [MAP] SVM screen selected vehicle: ", iButtonIndex)
|
||
currentButtonPressStage = inputConsumed_SVM_LAUNCH
|
||
iSVMToLaunch = iButtonIndex
|
||
ENDIF
|
||
BREAK
|
||
DEFAULT
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> CHECK_BUTTON_PRESS unknown button index ", iButtonIndex, ", warehouseID: ", iCurrentSelectedWarehouse)
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
#IF IS_DEBUG_BUILD
|
||
str2 = "selection and warehouse index not ready..."
|
||
#ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Handle the control input receivied above
|
||
HANDLE_SECURO_SVM_INPUTS(currentButtonPressStage)
|
||
HANDLE_SECURO_WAREHOUSE_INPUTS(currentButtonPressStage)
|
||
HANDLE_SECURO_IE_WAREHOUSE_INPUTS(currentButtonPressStage)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF bDrawDebugStuff
|
||
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
|
||
DRAW_DEBUG_TEXT_2D(str1, <<0.3,0.2,0>>+(<<0.0,0.01,0>>*TO_FLOAT(iStrOffset))+(<<0.1,0.0,0>>*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
|
||
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(str2)
|
||
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
|
||
DRAW_DEBUG_TEXT_2D(str2, <<0.3,0.2,0>>+(<<0.0,0.01,0>>*TO_FLOAT(iStrOffset))+(<<0.1,0.0,0>>*TO_FLOAT(iColumn)), iRed, iGreen, iBlue, iAlpha) iStrOffset++
|
||
ENDIF
|
||
|
||
INT iIter
|
||
FOR iIter = 0 TO (ciMaxOwnedWarehouses-1)
|
||
INT iWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iIter)
|
||
|
||
STRING sWarehouse
|
||
TEXT_LABEL_31 tlCurrentContrabandTotal
|
||
TEXT_LABEL_15 tlCurrentSlot = "Slot "
|
||
tlCurrentSlot += iIter
|
||
|
||
IF iWarehouse > 0
|
||
//Prevent asserts when we don't own a warehouse in this slot
|
||
sWarehouse = DEBUG_GET_STRING_FOR_WAREHOUSE(iWarehouse)
|
||
tlCurrentContrabandTotal = GET_CONTRABAND_UNITS_TOTAL_FOR_WAREHOUSE(iWarehouse)
|
||
tlCurrentContrabandTotal += " / "
|
||
tlCurrentContrabandTotal += GET_WAREHOUSE_MAX_CAPACITY(iWarehouse)
|
||
tlCurrentContrabandTotal += " Units"
|
||
ELSE
|
||
sWarehouse = DEBUG_GET_STRING_FOR_WAREHOUSE(iWarehouse)
|
||
tlCurrentContrabandTotal = "0 Units"
|
||
ENDIF
|
||
|
||
FLOAT fColumn = TO_FLOAT(iColumn)
|
||
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
|
||
DRAW_DEBUG_TEXT_2D(tlCurrentSlot, <<0.3,0.2,0>>+(<<0.0,0.01,0>>*TO_FLOAT(iStrOffset))+(<<0.1,0.0,0>>*fColumn), iRed, iGreen, iBlue, iAlpha) fColumn += 0.5
|
||
|
||
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
|
||
DRAW_DEBUG_TEXT_2D(sWarehouse, <<0.3,0.2,0>>+(<<0.0,0.01,0>>*TO_FLOAT(iStrOffset))+(<<0.1,0.0,0>>*fColumn), iRed, iGreen, iBlue, iAlpha) fColumn += 1.5
|
||
|
||
// IF iWarehouse > -1
|
||
// AND IS_WAREHOUSE_FULL(iWarehouse)
|
||
// SET_TEXT_COLOUR(255, 0, 0, 255)
|
||
// ENDIF
|
||
GET_HUD_COLOUR(INT_TO_ENUM(HUD_COLOURS, iStrOffset), iRed, iGreen, iBlue, iAlpha)
|
||
DRAW_DEBUG_TEXT_2D(tlCurrentContrabandTotal, <<0.3,0.2,0>>+(<<0.0,0.01,0>>*TO_FLOAT(iStrOffset))+(<<0.1,0.0,0>>*fColumn), iRed, iGreen, iBlue, iAlpha) iStrOffset++
|
||
ENDFOR
|
||
ENDIF
|
||
#ENDIF
|
||
ENDPROC
|
||
|
||
PROC SECURO_PRINT_TUTORIAL_HELP(STRING sStringToDisplay, INT HelpTime)
|
||
BEGIN_TEXT_COMMAND_DISPLAY_HELP(sStringToDisplay)
|
||
END_TEXT_COMMAND_DISPLAY_HELP(HELP_TEXT_SLOT_STANDARD, FALSE, TRUE, HelpTime)
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// IF the sidebar is open this will return the warehouse being looked at
|
||
FUNC INT GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR()
|
||
RETURN iCurrentSelectedWarehouse
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// IF the sidebar is open this will return true if the player
|
||
/// owns the displayed warehouse
|
||
FUNC BOOL DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
IF GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR() > ciW_Invalid
|
||
AND GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR() < iWarehouseOffset
|
||
AND DOES_LOCAL_PLAYER_OWN_WAREHOUSE(GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR())
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Returns true if the conditions are met to show the special item sidebar
|
||
FUNC BOOL SHOULD_DISPLAY_SPECIAL_ITEM_TUTORIAL()
|
||
|
||
IF iCurrentPageID != ciWarehouseMapPageID
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
INT iWarehouse = GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR()
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_HELP_TEXT_TUTORIAL_COMPLETE)
|
||
AND iWarehouse > ciW_Invalid
|
||
AND IS_MAP_SIDEBAR_OPEN()
|
||
AND DOES_LOCAL_PLAYER_OWN_WAREHOUSE(iWarehouse)
|
||
AND g_bSpecialItemActive
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
|
||
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_LIN_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_MAP_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_PURCH_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_BUY_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SUM_TUT)
|
||
//AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_START_MIS)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_NU_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_WH_OLD_USER_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_STAT_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_PUR_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_RENO_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SVM_TUT)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED TRUE")
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED FALSE")
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC STRING SECURO_TUT_GET_ROOT_LABEL(INT iTutorialID)
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_PA_IS_MALE)
|
||
SWITCH iTutorialID
|
||
CASE 0 RETURN "EXCPA_LOGINM" //Login
|
||
CASE 1 RETURN "EXCPA_MAPM" //Map Page
|
||
CASE 2 RETURN "EXCPA_WAREM" //Confirm Warehouse Purchase
|
||
CASE 3 RETURN "EXCPA_BUYINM" //Buying Contraband Stock
|
||
CASE 4 RETURN "EXCPA_STOCKM" //Confirm Stock Purchase
|
||
CASE 5 RETURN "EXCPA_SUMMM" //Stats Page
|
||
CASE 6 RETURN "IMPA_TUT1M" //3 option page (existing user)
|
||
CASE 7 RETURN "IMPA_TUT1BM" //3 option page (New User)
|
||
CASE 8 RETURN "IMPA_TUT2M" //Special cargo page (existing user)
|
||
CASE 9 RETURN "IMPA_TUT3M" //Special vehicle work page
|
||
CASE 10 RETURN "IMPA_TUT4M" //Vehicle cargo page
|
||
CASE 11 RETURN "IMPA_TUT5M" //First purchase of a vehicle WH
|
||
CASE 12 RETURN "IMPA_TUT6M" //First entry to Site once we have purcased a vehicle WH
|
||
CASE 13 RETURN "IMPA_TUT7M" //Renovate reminder
|
||
ENDSWITCH
|
||
ELSE
|
||
SWITCH iTutorialID
|
||
CASE 0 RETURN "EXCPA_LOGINF"
|
||
CASE 1 RETURN "EXCPA_MAPF"
|
||
CASE 2 RETURN "EXCPA_WAREF"
|
||
CASE 3 RETURN "EXCPA_BUYINF"
|
||
CASE 4 RETURN "EXCPA_STOCKF"
|
||
CASE 5 RETURN "EXCPA_SUMMF"
|
||
CASE 6 RETURN "IMPA_TUT1F"
|
||
CASE 7 RETURN "IMPA_TUT1BF"
|
||
CASE 8 RETURN "IMPA_TUT2F"
|
||
CASE 9 RETURN "IMPA_TUT3F"
|
||
CASE 10 RETURN "IMPA_TUT4F"
|
||
CASE 11 RETURN "IMPA_TUT5F"
|
||
CASE 12 RETURN "IMPA_TUT6F"
|
||
CASE 13 RETURN "IMPA_TUT7F"
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
CASSERTLN(DEBUG_SAFEHOUSE, "SECURO_TUT_GET_ROOT_LABEL: Invalid tutorial ID: ", iTutorialID)
|
||
RETURN "EXCPA_LOGINM"
|
||
ENDFUNC
|
||
|
||
PROC SECURO_START_TUTORIAL_DIALOGUE(INT iTutorialID)
|
||
STRING sRootID = "EXCPAAU"
|
||
|
||
IF iTutorialID > 5
|
||
sRootID = "IMPAAUD"
|
||
ENDIF
|
||
|
||
IF CREATE_CONVERSATION(tutPedStruct, sRootID, SECURO_TUT_GET_ROOT_LABEL(iTutorialID), CONV_PRIORITY_HIGH)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Created tutorial converstion: ", iTutorialID)
|
||
iTutorialDialogueID = -1
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SECURO_RUN_TUTORIAL_DIALOGUE()
|
||
//Start the dialogue
|
||
IF iTutorialDialogueID != -1
|
||
SECURO_START_TUTORIAL_DIALOGUE(iTutorialDialogueID)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_SECURO_APP_DIALOGUE_TUTORIAL()
|
||
|
||
BOOL bStartNewDialogue
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
IF IS_BIT_SET(iBS, SEC_BS_DISPLAYING_LOGIN_PAGE)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_LIN_TUT)
|
||
//Login page
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 6750
|
||
iTutorialDialogueID = 0
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_LIN_TUT, TRUE)
|
||
ELIF iCurrentPageID = ciWarehouseMapPageID
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_MAP_TUT)
|
||
//Map Page
|
||
IF NOT DOES_LOCAL_PLAYER_OWN_A_WAREHOUSE() //Dont trigger dialogue if player already owns a warehouse B*7218537
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 8000
|
||
iTutorialDialogueID = 1
|
||
ENDIF
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_MAP_TUT, TRUE)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_WH_OLD_USER_TUT, TRUE)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_DISPLAYING_PURCHASE_WH_TUT)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_PURCH_TUT)
|
||
//Successful WH purchase
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 6000
|
||
iTutorialDialogueID = 2
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_PURCH_TUT, TRUE)
|
||
ELIF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_BUY_TUT)
|
||
AND (DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
OR IS_MAP_SIDEBAR_OPEN() AND iJustPurchasedWHID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(0) AND iJustPurchasedWHID != ciW_Invalid AND iCurrentSelectedWarehouse = -1)
|
||
//Buy Contraband tutorial
|
||
iJustPurchasedWHID = ciW_Invalid
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = 3
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_BUY_TUT, TRUE)
|
||
ELIF iCurrentPageID = ciWarehouseStatsPageID
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SUM_TUT)
|
||
//Stats page
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 6000
|
||
iTutorialDialogueID = 5
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SUM_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciBranchPageID
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_TUT)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_NU_TUT)
|
||
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_MAP_TUT)
|
||
//Branching page - Existing user
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 10000
|
||
iTutorialDialogueID = 6
|
||
ELSE
|
||
//Branching page - New user
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 10000
|
||
iTutorialDialogueID = 7
|
||
ENDIF
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_TUT, TRUE)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_NEWF_NU_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciSVMPageID
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SVM_TUT)
|
||
//SVM page - all users
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 9
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SVM_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciVehicleWHMapPageID
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_TUT)
|
||
//Vehicle WH map page - all users
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 10
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciVehicleWHMapPageID
|
||
AND IS_BIT_SET(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_PUR_TUT)
|
||
//Purchased WH - all users
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 11
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_PUR_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciVehicleWHStatsPageID
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_STAT_TUT)
|
||
//Purchased WH - after closing app and loging back in
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 12
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_VEH_WH_STAT_TUT, TRUE)
|
||
|
||
ELIF iCurrentPageID = ciVehicleWHStatsPageID
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_PROPERTY_PURCHASED_THIS_RUN)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_RENO_TUT)
|
||
//Renovate WH - after closing app and loging back in
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 13
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_RENO_TUT, TRUE)
|
||
|
||
ELIF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_MAP_TUT)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_SUM_TUT)
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_WH_OLD_USER_TUT)
|
||
IF iCurrentPageID = ciWarehouseStatsPageID
|
||
OR iCurrentPageID = ciWarehouseMapPageID
|
||
//Special cargo page - Existing user
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 4000
|
||
iTutorialDialogueID = 8
|
||
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_WH_OLD_USER_TUT, TRUE)
|
||
ENDIF
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bStartNewDialogue
|
||
SET_BIT(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_DIALOGUE_TUTORIAL Running tutorial for: ", iTutorialHelpTime, " seconds. Tutorial ID: ", iTutorialDialogueID)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_DIALOGUE_TUTORIAL Starting timer time: ", iTutorialHelpTime, " Tutorial ID: ", iTutorialDialogueID)
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, iTutorialHelpTime)
|
||
CLEAR_BIT(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_DIALOGUE_TUTORIAL Starting timer expired time: ", iTutorialHelpTime, " Tutorial ID: ", iTutorialDialogueID)
|
||
|
||
//Once all the tutorial are complete we no longer need this function
|
||
IF HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
SET_BIT(iBS, SEC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROC RUN_WAREHOUSE_APP_TUTORIAL()
|
||
|
||
STRING sHelp
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_1) < 3
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_1))
|
||
|
||
sHelp = "WH_TUT_1" //First message
|
||
iTutorialHelpTime = 5500
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_1))
|
||
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_1)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_1, iNumTimes)
|
||
|
||
ELIF GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_2) < 3
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_2))
|
||
|
||
sHelp = "WH_TUT_2" //Second message
|
||
iTutorialHelpTime = 5500
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_2))
|
||
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_2)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_2, iNumTimes)
|
||
|
||
ELIF GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_3) < 3
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_3))
|
||
|
||
sHelp = "WH_TUT_3" //Third Message
|
||
iTutorialHelpTime = 5500
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_3))
|
||
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_3)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_3, iNumTimes)
|
||
|
||
ELIF GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_SPECIAL) < 3
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_SPEC))
|
||
AND DOES_WAREHOUSE_CONTAIN_A_SPECIAL_ITEM(iCurrentlyInsideWarehouse)
|
||
|
||
sHelp = "WH_TUT_SPEC" //Special message
|
||
iTutorialHelpTime = 5500
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_WH_TUT_SPEC))
|
||
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_SPECIAL)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_WH_TUTORIAL_SPECIAL, iNumTimes)
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(sHelp)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
//Display the relevant help text
|
||
SECURO_PRINT_TUTORIAL_HELP(sHelp, iTutorialHelpTime)
|
||
SET_BIT(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_WAREHOUSE_APP_TUTORIAL Printing: sHelp: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_WAREHOUSE_APP_TUTORIAL Starting timer for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, iTutorialHelpTime)
|
||
CLEAR_BIT(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_WAREHOUSE_APP_TUTORIAL Starting timer expired for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
FUNC BOOL HAVE_ALL_SECURO_HELP_TUTORIALS_BEEN_COMPLETED()
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP) >= 3 //Map page buy first WH
|
||
AND GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_WH) >= 3 //Buy WH
|
||
AND GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP_OWNED_WH) >= 3 //Map page Green icons
|
||
AND GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_CONTRABAND) >= 3 //Buy Contraband tutorial
|
||
AND GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SUMMARY) >= 3 //Summary
|
||
AND GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SPECIAL_ITEM) >= 3 //Special
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE)
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE_2)
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SOURCE_VEH)
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SUM_PAGE)
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SOURCE_VEH_CD)
|
||
AND HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SVM_PAGE)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWEBSITE_TUTORIAL_BS_INDEX eTutorialID)
|
||
|
||
INT iTutorialID = ENUM_TO_INT(eTutorialID)
|
||
|
||
SWITCH eTutorialID
|
||
CASE eWTBS_SECURO_MAP_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP) < 3 //Map page buy first WH
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_SECURO_WH_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_WH) < 3 //Buy WH
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_SECURO_PURCH_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP_OWNED_WH) < 3 //Map page Green icons
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_SECURO_BUY_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_CONTRABAND) < 3 //Buy Contraband tutorial
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS,iTutorialID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_SECURO_SUM_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SUMMARY) < 3 //Summary
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_SECURO_SPEC_TUT
|
||
IF GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SPECIAL_ITEM) < 3 //Special
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND SHOULD_DISPLAY_SPECIAL_ITEM_TUTORIAL()
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT1
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND IS_BIT_SET(iBS2, SEC_BS2_VEH_WH_MAP_SHOWING_ALL_WAREHOUSES)
|
||
AND iCurrentPageID = ciVehicleWHMapPageID
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT2
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE_2)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT3))
|
||
AND iCurrentPageID = ciVehicleWHMapPageID
|
||
AND NOT IS_MAP_SIDEBAR_OPEN()
|
||
AND DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT3
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SOURCE_VEH)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND iCurrentPageID = ciVehicleWHMapPageID
|
||
AND IS_MAP_SIDEBAR_OPEN()
|
||
AND DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT4
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SUM_PAGE)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND iCurrentPageID = ciVehicleWHStatsPageID
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT5
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SOURCE_VEH_CD)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
IF iCurrentPageID = ciVehicleWHStatsPageID
|
||
OR iCurrentPageID = ciVehicleWHMapPageID
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE eWTBS_IE_SEC_TUT6
|
||
IF NOT HAS_IE_WEBSITE_TUT_BEEN_DONE(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SVM_PAGE)
|
||
AND NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS, iTutorialID)
|
||
AND iCurrentPageID = ciSVMPageID
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC UPDATE_IE_WEBSITE_TUTORIAL_BS()
|
||
iIETutorialBS1 = GET_MP_INT_CHARACTER_STAT(MP_STAT_IMP_EXP_COMP_TUTORIALS1)
|
||
iIETutorialBS2 = GET_MP_INT_CHARACTER_STAT(MP_STAT_IMP_EXP_COMP_TUTORIALS2)
|
||
ENDPROC
|
||
|
||
#IF FEATURE_GEN9_EXCLUSIVE
|
||
PROC CLEAR_DISPLAYED_TUTORIAL_HELP()
|
||
CLEAR_HELP()
|
||
CLEAR_BIT(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
ENDPROC
|
||
|
||
PROC RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL()
|
||
|
||
STRING sHelp
|
||
|
||
IF IS_PLAYER_ON_MP_INTRO()
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
SWITCH iCurrentPageID
|
||
CASE ciBranchPageID
|
||
IF NOT IS_BIT_SET(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_1)
|
||
sHelp = "G9_SEC_TUT_1" //Login Page
|
||
iTutorialHelpTime = 10000
|
||
SET_BIT(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_1)
|
||
ENDIF
|
||
BREAK
|
||
CASE ciWarehouseStatsPageID
|
||
IF NOT IS_BIT_SET(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_2)
|
||
sHelp = "G9_SEC_TUT_2" //Stats Page
|
||
iTutorialHelpTime = 20000
|
||
SET_BIT(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_2)
|
||
ENDIF
|
||
BREAK
|
||
CASE ciWarehouseMapPageID
|
||
IF NOT IS_BIT_SET(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_3)
|
||
AND NOT IS_MAP_SIDEBAR_OPEN()
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL Starting timer to delay warehouse prompt")
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, 500)
|
||
sHelp = "G9_SEC_TUT_3" //Warehouse Page
|
||
iTutorialHelpTime = 10000
|
||
SET_BIT(iBS2, SEC_BS2_DONE_MP_INTRO_HELP_3)
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
ENDIF
|
||
ELSE
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
SWITCH iCurrentPageID
|
||
CASE ciBranchPageID
|
||
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_2")
|
||
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_3")
|
||
CLEAR_DISPLAYED_TUTORIAL_HELP()
|
||
ENDIF
|
||
BREAK
|
||
CASE ciWarehouseStatsPageID
|
||
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_1")
|
||
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_3")
|
||
CLEAR_DISPLAYED_TUTORIAL_HELP()
|
||
ENDIF
|
||
BREAK
|
||
CASE ciWarehouseMapPageID
|
||
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_1")
|
||
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_2")
|
||
OR IS_MAP_SIDEBAR_OPEN()
|
||
CLEAR_DISPLAYED_TUTORIAL_HELP()
|
||
ENDIF
|
||
BREAK
|
||
DEFAULT
|
||
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_1")
|
||
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_2")
|
||
OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("G9_SEC_TUT_3")
|
||
CLEAR_DISPLAYED_TUTORIAL_HELP()
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(sHelp)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
//Display the relevant help text
|
||
SECURO_PRINT_TUTORIAL_HELP(sHelp, iTutorialHelpTime)
|
||
SET_BIT(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL Printing: sHelp: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL Starting timer for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, iTutorialHelpTime)
|
||
CLEAR_BIT(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL Starting timer expired for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
#ENDIF
|
||
|
||
PROC RUN_SECURO_APP_HELP_TEXT_TUTORIAL()
|
||
|
||
STRING sHelp
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
IF iCurrentPageID = ciWarehouseMapPageID
|
||
AND SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_MAP_TUT)
|
||
|
||
sHelp = "SECURO_MAP_TUT" //Map Page
|
||
iTutorialHelpTime = 8000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_MAP_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP, iNumTimes)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_WH_TUT)
|
||
AND IS_MAP_SIDEBAR_OPEN()
|
||
AND NOT DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
|
||
sHelp = "SECURO_WH_TUT" //Buy WH
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_WH_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_WH)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_WH, iNumTimes)
|
||
|
||
ELIF iCurrentPageID = ciWarehouseMapPageID
|
||
AND DOES_LOCAL_PLAYER_OWN_A_WAREHOUSE()
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_JUST_PURCHASED_WAREHOUSE)
|
||
AND SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_PURCH_TUT)
|
||
|
||
sHelp = "SECURO_PURCH_TUT" //Map page Green icons
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_PURCH_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP_OWNED_WH)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_MAP_OWNED_WH, iNumTimes)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_BUY_TUT)
|
||
AND DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
AND IS_MAP_SIDEBAR_OPEN()
|
||
|
||
sHelp = "SECURO_BUY_TUT" //Buy Contraband tutorial
|
||
iTutorialHelpTime = 9000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_BUY_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_CONTRABAND)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_BUY_CONTRABAND, iNumTimes)
|
||
|
||
ELIF iCurrentPageID = ciWarehouseStatsPageID
|
||
AND SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_SUM_TUT)
|
||
|
||
sHelp = "SECURO_SUM_TUT" //Stats page
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_SUM_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SUMMARY)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SUMMARY, iNumTimes)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_SECURO_SPEC_TUT)
|
||
|
||
sHelp = "SECURO_SPEC_TUT" //OOOHHHH a special item!
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_SECURO_SPEC_TUT))
|
||
INT iNumTimes = GET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SPECIAL_ITEM)
|
||
iNumTimes ++
|
||
SET_PACKED_STAT_INT(PACKED_MP_INT_SECURO_TUT_SPECIAL_ITEM, iNumTimes)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT1)
|
||
|
||
sHelp = "IE_SEC_TUT1" //Vehicle WH map page 1
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT1))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT2)
|
||
|
||
sHelp = "IE_SEC_TUT2" //Vehicle WH map page 2
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT2))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_MAP_PAGE_2)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT3)
|
||
|
||
sHelp = "IE_SEC_TUT3" //Vehicle WH Source vehicle button
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT3))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SOURCE_VEH)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT4)
|
||
|
||
sHelp = "IE_SEC_TUT4" //Vehicle WH summary page
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT4))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SUM_PAGE)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT5)
|
||
|
||
sHelp = "IE_SEC_TUT5" //Vehicle WH Steal mission on CD
|
||
iTutorialHelpTime = 6000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT5))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_VWH_SOURCE_VEH_CD)
|
||
|
||
ELIF SHOULD_SECURO_HELP_TUTORIAL_BE_DISPLAYED(eWTBS_IE_SEC_TUT6)
|
||
|
||
sHelp = "IE_SEC_TUT6" //SVM page
|
||
iTutorialHelpTime = 9000
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS, ENUM_TO_INT(eWTBS_IE_SEC_TUT6))
|
||
INCREMENT_NUM_TIMES_IE_WEB_TUT_HAS_PLAYED(iIETutorialBS1, iIETutorialBS2, IE_WEB_TUT_SVM_PAGE)
|
||
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(sHelp)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
//Display the relevant help text
|
||
SECURO_PRINT_TUTORIAL_HELP(sHelp, iTutorialHelpTime)
|
||
SET_BIT(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_TUTORIAL Printing: sHelp: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_TUTORIAL Starting timer for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, iTutorialHelpTime)
|
||
CLEAR_BIT(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO_TUT> RUN_SECURO_APP_HELP_TEXT_TUTORIAL Starting timer expired for: ", sHelp, " time: ", iTutorialHelpTime)
|
||
|
||
IF HAVE_ALL_SECURO_HELP_TUTORIALS_BEEN_COMPLETED()
|
||
SET_BIT(iBS, SEC_BS_HELP_TEXT_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
PROC RENDER_NAG_SCREEN()
|
||
CPRINTLN(DEBUG_INTERNET, "APP_SECURO RENDER_NAG_SCREEN()")
|
||
|
||
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
|
||
|
||
pHeaderTextLabel = ("BRSCRWTEX") //title
|
||
IF NOT HAS_ENTERED_OFFLINE_SAVE_FM()
|
||
SWITCH g_eBrosNagReason
|
||
CASE NSR_CASH
|
||
pBodyTextLabel = ("BRDISTEX") //warning
|
||
BREAK
|
||
CASE NSR_DLC
|
||
pBodyTextLabel = ("BRDISDLC") //warning
|
||
BREAK
|
||
ENDSWITCH
|
||
pBodySubTextLabel = ("BRSHETEX") //warning
|
||
ELSE
|
||
SWITCH g_eBrosNagReason
|
||
CASE NSR_CASH
|
||
pBodyTextLabel = ("BRDISTES") //warning
|
||
BREAK
|
||
CASE NSR_DLC
|
||
pBodyTextLabel = ("BRDISDLC") //warning
|
||
BREAK
|
||
ENDSWITCH
|
||
pBodySubTextLabel = ("BRSHETES") //warning
|
||
ENDIF
|
||
SET_WARNING_MESSAGE_WITH_HEADER(pHeaderTextLabel, pBodyTextLabel, iButtonFlagBitfield, pBodySubTextLabel)
|
||
|
||
g_sBusAppManagement.iRenderHandShakeFC = GET_FRAME_COUNT()
|
||
ENDPROC
|
||
|
||
PROC SECURO_SETUP_TUTORIAL_DIALOGUE()
|
||
SET_USE_DLC_DIALOGUE(TRUE)
|
||
|
||
IF GET_MP_INT_CHARACTER_STAT(MP_STAT_PROP_OFFICE_PERSONNEL, -1) = 1
|
||
SET_BIT(iBS2, SEC_BS2_PA_IS_MALE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS2, SEC_BS2_PA_IS_MALE)
|
||
ADD_PED_FOR_DIALOGUE(tutPedStruct, 3, NULL, "EXECPA_MALE")
|
||
ELSE
|
||
ADD_PED_FOR_DIALOGUE(tutPedStruct, 2, NULL, "EXECPA_FEMALE")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> SECURO_SETUP_TUTORIAL_DIALOGUE Setup PA voice. MALE? ", IS_BIT_SET(iBS2, SEC_BS2_PA_IS_MALE))
|
||
ENDPROC
|
||
|
||
PROC RUN_CHECK_ON_ACTIVE_BUY_MISSION_COOLDOWNS()
|
||
IF iCooldownExpierdCheckFC = 180
|
||
INT iLoop
|
||
REPEAT ciMaxOwnedWarehouses iLoop
|
||
INT iWH = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iLoop)
|
||
|
||
IF iWH != ciW_Invalid
|
||
AND IS_BIT_SET(iWarehouseSellCooldownBS, iWH)
|
||
INT buyTimeRem = GET_CONTRABAND_BUY_COOLDOWN(iWH)
|
||
|
||
//If necessary grab the time remaining from the sell mission tuneable timer
|
||
IF buyTimeRem <= 0
|
||
IF NOT GB_HAS_BUY_MISSION_TIMER_EXPIRED()
|
||
buyTimeRem = g_sMPTunables.iexec_buy_fail_cooldown - ABSI(GET_TIME_DIFFERENCE(INT_TO_NATIVE(TIME_DATATYPE, GET_GAME_TIMER()), g_sGbWorkCoolDownVars.gbBuyCooldownTimer.Timer))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF buyTimeRem <= 0
|
||
CLEAR_BIT(iWarehouseSellCooldownBS, iWH)
|
||
ENDIF
|
||
ENDIF
|
||
ENDREPEAT
|
||
iCooldownExpierdCheckFC = -1
|
||
ENDIF
|
||
|
||
iCooldownExpierdCheckFC ++
|
||
ENDPROC
|
||
|
||
PROC RUN_MISSION_COOLDOWN_HELP_TEXT()
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
IF NOT HAS_NET_TIMER_STARTED(sTutorialTimer)
|
||
START_NET_TIMER(sTutorialTimer)
|
||
ELIF HAS_NET_TIMER_EXPIRED(sTutorialTimer, 5000)
|
||
CLEAR_BIT(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
RESET_NET_TIMER(sTutorialTimer)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_SELL_COOLDOWN_HELP_PLAYED)
|
||
AND IS_BIT_SET(iBS, SEC_BS_SELL_MISSION_ON_COOLDOWN)
|
||
SECURO_PRINT_TUTORIAL_HELP("SECURO_SELL_CD", 5000)
|
||
SET_BIT(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
SET_BIT(iBS, SEC_BS_SELL_COOLDOWN_HELP_PLAYED)
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_DISPLAYING_TUTORIAL_HELP)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
|
||
RUN_CHECK_ON_ACTIVE_BUY_MISSION_COOLDOWNS()
|
||
|
||
IF IS_MAP_SIDEBAR_OPEN()
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_BUY_COOLDOWN_HELP_PLAYED)
|
||
AND IS_BIT_SET(iBS, SEC_BS_BUY_MISSION_ON_COOLDOWN)
|
||
AND DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
IF IS_BIT_SET(iWarehouseSellCooldownBS, GET_WAREHOUSE_ID_FOR_OPEN_BUY_SIDE_BAR())
|
||
SECURO_PRINT_TUTORIAL_HELP("SECURO_BUY_CD", 5000)
|
||
SET_BIT(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
SET_BIT(iBS, SEC_BS_BUY_COOLDOWN_HELP_PLAYED)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_SELL_COOLDOWN_HELP_PLAYED)
|
||
AND NOT IS_BIT_SET(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
AND IS_BIT_SET(iBS, SEC_BS_SELL_MISSION_ON_COOLDOWN)
|
||
AND DOES_PLAYER_OWN_WAREHOUSE_OPEN_IN_SIDEBAR()
|
||
SECURO_PRINT_TUTORIAL_HELP("SECURO_SELL_CD", 5000)
|
||
SET_BIT(iBS, SEC_BS_COOLDOWN_HELP_DISPLAYING)
|
||
SET_BIT(iBS, SEC_BS_SELL_COOLDOWN_HELP_PLAYED)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
SCRIPT
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> started \"", GET_THIS_SCRIPT_NAME(), "\"")
|
||
|
||
iBS = 0
|
||
|
||
IF IS_PLAYER_IN_WAREHOUSE(PLAYER_ID())
|
||
#IF FEATURE_CASINO_HEIST
|
||
OR WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
AND g_sBusAppManagement.bRunningPrimaryApp = FALSE
|
||
#ENDIF
|
||
SET_BIT(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
mov = REQUEST_SCALEFORM_MOVIE("warehouse")
|
||
ELSE
|
||
mov = REQUEST_SCALEFORM_MOVIE("securoserv")
|
||
g_bSecuroDelayOfficeChairExit = TRUE
|
||
g_bSecuroQuickExitOfficeChair = FALSE
|
||
ENDIF
|
||
|
||
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
|
||
DISABLE_CELLPHONE(TRUE)
|
||
|
||
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
iCurrentlyInsideWarehouse = GET_WAREHOUSE_PLAYER_IS_IN(PLAYER_ID())
|
||
#IF FEATURE_CASINO_HEIST
|
||
IF WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
iCurrentlyInsideWarehouse = g_sBusAppManagement.iPropertyID
|
||
ENDIF
|
||
#ENDIF
|
||
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_FREEZE_POSITION)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN_MAP(TRUE)
|
||
ELIF IS_PROPERTY_OFFICE(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iCurrentlyInsideProperty)
|
||
#IF FEATURE_CASINO_HEIST
|
||
OR WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
#ENDIF
|
||
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_IN_ANOTHER_PLAYERS_PROPERTY)
|
||
POPULATE_MP_SECUROSERV_SITE_PIN_MAP(TRUE)
|
||
ELSE
|
||
POPULATE_MP_SECUROSERV_SITE_PIN_MAP(FALSE)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
#IF FEATURE_CASINO_HEIST
|
||
IF WAS_BUSINESS_APP_SRIPT_LAUNCHED_FROM_HUB_APP()
|
||
AND g_sBusAppManagement.bRunningPrimaryApp
|
||
IF g_sBusAppManagement.bSecuroSpecCargo
|
||
APP_SECURO_SHOW_PAGE(ciWarehouseStatsPageID)
|
||
ELSE
|
||
APP_SECURO_SHOW_PAGE(ciVehicleWHStatsPageID)
|
||
ENDIF
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
START_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
|
||
|
||
SET_BIT(iBS, SEC_BS_DISPLAYING_LOGIN_PAGE)
|
||
SET_BROWSER_OPEN(TRUE)
|
||
|
||
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
||
AND NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
||
vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID(), TRUE)
|
||
ENDIF
|
||
|
||
Pause_Objective_Text()
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
INIT_ACTIVE_USER_LIST()
|
||
|
||
IF NETWORK_IS_PLAYER_ACTIVE(PLAYER_ID())
|
||
AND GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
|
||
//AND NOT GB_ARE_PLAYER_BOSS_PRIVILIGES_SUSPENDED_BD(PLAYER_ID())
|
||
ADD_PLAYER_TO_ACTIVE_ORGANISATION_LIST(PLAYER_ID(), NATIVE_TO_INT(PLAYER_ID()))
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
SET_BIT(iBS, SEC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
IF HAVE_ALL_SECURO_HELP_TUTORIALS_BEEN_COMPLETED()
|
||
SET_BIT(iBS, SEC_BS_HELP_TEXT_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
|
||
SECURO_SETUP_TUTORIAL_DIALOGUE()
|
||
SET_SHARD_SHOULD_BE_HELD_UP_FOR_OFFICE_SEAT_ANIM(FALSE)
|
||
|
||
THEFEED_PAUSE()
|
||
|
||
IF IS_PC_VERSION()
|
||
SET_MULTIHEAD_SAFE(TRUE, TRUE, TRUE, TRUE)
|
||
ENDIF
|
||
|
||
UPDATE_IE_WEBSITE_TUTORIAL_BS()
|
||
SET_TRANSITION_SESSIONS_CLEAN_UP_ON_CALL_NOW_IF_NEEDED()
|
||
|
||
#IF FEATURE_GEN9_EXCLUSIVE
|
||
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_DARKNETACCESSED, TRUE)
|
||
#ENDIF
|
||
|
||
/// main update and render loop
|
||
WHILE IS_BROWSER_OPEN()
|
||
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_EXITING_PROPERTY)
|
||
OR GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(), vPlayerCoords) > 5.0
|
||
// Exit
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Shutting down! Player too far from the coords")
|
||
CLEANUP_SECUROSERVE()
|
||
ELIF IS_PAUSE_MENU_ACTIVE_EX()
|
||
OR IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Shutting down! Player opend the pause menu")
|
||
CLEANUP_SECUROSERVE()
|
||
ELIF IS_SYSTEM_UI_BEING_DISPLAYED()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Shutting down! IS_SYSTEM_UI_BEING_DISPLAYED")
|
||
CLEANUP_SECUROSERVE(TRUE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
IF NOT HAS_NET_TIMER_STARTED(stCashChangeHUDTimer)
|
||
START_NET_TIMER(stCashChangeHUDTimer)
|
||
ELIF HAS_NET_TIMER_EXPIRED(stCashChangeHUDTimer, 4000)
|
||
RESET_NET_TIMER(stCashChangeHUDTimer)
|
||
CLEAR_BIT(iBS, SEC_BS_SHOW_CASH_CHANGE_HUD)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DELAY_APP_EXIT_FOR_CONVERSATION)
|
||
IF g_bBrowserGoToStoreTrigger
|
||
g_bBrowserNagScreenState = TRUE
|
||
RENDER_NAG_SCREEN()
|
||
ELSE
|
||
RENDER_SECUROSERVE()
|
||
ENDIF
|
||
|
||
UPDATE_IE_MISSION_COOLDOWN()
|
||
RUN_MISSION_COOLDOWN_HELP_TEXT()
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
RUN_SECURO_APP_DIALOGUE_TUTORIAL()
|
||
SECURO_RUN_TUTORIAL_DIALOGUE()
|
||
#IF FEATURE_GEN9_EXCLUSIVE
|
||
RUN_SECURO_APP_HELP_TEXT_INTRO_MISSION_TUTORIAL()
|
||
#ENDIF
|
||
ELIF NOT IS_BIT_SET(iBS, SEC_BS_HELP_TEXT_TUTORIAL_COMPLETE)
|
||
RUN_SECURO_APP_HELP_TEXT_TUTORIAL()
|
||
ENDIF
|
||
ELSE
|
||
IF NOT IS_WAREHOUSE_EMPTY(iCurrentlyInsideWarehouse)
|
||
RUN_WAREHOUSE_APP_TUTORIAL()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
PASS_WAREHOUSE_INPUTS_TO_SCALEFORM()
|
||
CHECK_BUTTON_PRESS_FOR_WAREHOUSE_APP()
|
||
ELSE
|
||
PASS_INPUTS_TO_SCALEFORM()
|
||
CHECK_BUTTON_PRESS()
|
||
ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, SEC_BS_CURRENTLY_INSIDE_WAREHOUSE)
|
||
MAINTAIN_ACTIVE_ORGANIZATION_LIST()
|
||
ENDIF
|
||
ELSE
|
||
IF iTutorialDialogueID = -1
|
||
OR IS_SCRIPTED_CONVERSATION_ONGOING()
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Shutting down! buy mission dialoge has started!")
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_SECURO_START_MIS, TRUE)
|
||
CLEANUP_SECUROSERVE(TRUE)
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<SECURO> Shutting down! Waiting for the buy misssion started dialogue to begin")
|
||
SECURO_RUN_TUTORIAL_DIALOGUE()
|
||
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE)
|
||
ENDIF
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
// Script should never reach here. Always terminate with cleanup function.
|
||
CASSERTLN(DEBUG_INTERNET, "<SECURO> \"", GET_THIS_SCRIPT_NAME(), "\" should never reach here. Always terminate with cleanup function.")
|
||
ENDSCRIPT
|