3082 lines
114 KiB
Python
Executable File
3082 lines
114 KiB
Python
Executable File
///// appBusinessHub
|
||
///// Mark Richardson - 26/04/2018
|
||
///// Hacker truck app functionality
|
||
///// Scaleform documentation: https://hub.rockstargames.com/pages/viewpage.action?spaceKey=RSGGTAV&title=Hacker+Truck+Desktop+App
|
||
USING "rage_builtins.sch"
|
||
USING "globals.sch"
|
||
|
||
USING "cellphone_public.sch"
|
||
USING "commands_zone.sch"
|
||
USING "menu_public.sch"
|
||
USING "net_realty_hangar.sch"
|
||
USING "net_gang_boss.sch"
|
||
USING "net_simple_interior.sch"
|
||
|
||
//***********Script CONSTS***********
|
||
|
||
//Local BS consts
|
||
CONST_INT NC_BS_OVERLAY_SCREEN_ACTIVE 0
|
||
CONST_INT NC_BS_LAUNCHED_MISSION 1
|
||
CONST_INT NC_BS_PRINTED_PAUSE_MENU_ACTIVE 2
|
||
CONST_INT NC_BS_WAITING_FOR_BUTTON_RETURN_VALUE 3
|
||
CONST_INT NC_BS_JOB_OVERLAY_ACTIVE 4
|
||
CONST_INT NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE 5
|
||
CONST_INT NC_BS_SPECIAL_ITEM_ACTIVE 6
|
||
CONST_INT NC_BS_IE_COOLDOWN_RUNNING 7
|
||
CONST_INT NC_BS_CURRENTLY_PLAYING_TUTORIAL 8
|
||
CONST_INT NC_BS_DIALOGUE_TUTORIAL_COMPLETE 9
|
||
CONST_INT NC_BS_INITIAL_TUTORIAL_COMPLETE 10
|
||
CONST_INT NC_BS_INITIAL_TUTORIAL_COMPLETE_THIS_BOOT 11
|
||
CONST_INT NC_BS_DONE_BUSINESS_PURCHASE_TUT_THIS_BOOT 12
|
||
|
||
CONST_INT ciINPUT_KEYBOARD_DOWN 300
|
||
CONST_INT ciINPUT_KEYBOARD_UP 301
|
||
|
||
CONST_INT ciTYPE_FORMAT_HIDDEN 0
|
||
CONST_INT ciTYPE_FORMAT_CURRENCY 1
|
||
CONST_INT ciTYPE_FORMAT_TIME 2
|
||
|
||
CONST_INT MAX_WORKS_JOBS 6
|
||
|
||
//Enum for button indexes returned by SF
|
||
ENUM BH_BUTTON_INDEXES
|
||
BUTTON_OVERLAY_CANCEL = 0,
|
||
BUTTON_OVERLAY_ACCEPT,
|
||
BUTTON_LOGIN,
|
||
BUTTON_HACKER_WORKS_MISSION,
|
||
BUTTON_AIR_FREIGHT_MISSION,
|
||
BUTTON_SPECIAL_CARGO_MISSION,
|
||
BUTTON_VEHICLE_CARGO_MISSION,
|
||
BUTTON_GUNRUNNING_MISSION,
|
||
BUTTON_DRUG_BUSINESS_MISSION,
|
||
BUTTON_JOB1,
|
||
BUTTON_JOB2,
|
||
BUTTON_JOB3,
|
||
BUTTON_JOB4,
|
||
BUTTON_JOB5,
|
||
BUTTON_JOB6,
|
||
BUTTON_JOB7,
|
||
BUTTON_JOB8,
|
||
BUTTON_JOB9
|
||
ENDENUM
|
||
|
||
//Enum for the current page ID
|
||
ENUM BH_PAGE_ID
|
||
PAGE_LOGIN = 0,
|
||
PAGE_HOME
|
||
ENDENUM
|
||
|
||
ENUM NC_APP_STAGE_ID
|
||
NCA_STAGE_IDLE = 0,
|
||
|
||
//Overlay on screen stages
|
||
NCA_STAGE_CONFIRM_HACKER_WORKS_MISSION_LAUNCH, //Confirm the launch of a hacker works mission
|
||
NCA_STAGE_CONFIRM_AIR_FREIGHT_MISSION_LAUNCH, //Confirm the launch of a hangar air freight mission
|
||
NCA_STAGE_CONFIRM_SPECIAL_CARGO_MISSION_LAUNCH, //Confirm the launch of a special cargo mission
|
||
NCA_STAGE_CONFIRM_VEHICLE_CARGO_MISSION_LAUNCH, //Confirm the launch of a vehicle cargo mission
|
||
NCA_STAGE_CONFIRM_GUNRUNNING_MISSION_LAUNCH, //Confirm the launch of a gunrunning missionn
|
||
NCA_STAGE_CONFIRM_DRUG_BUSINESS_MISSION_LAUNCH //Confirm the launch of a biker business mission
|
||
|
||
ENDENUM
|
||
|
||
ENUM NC_MISSION_TYPE
|
||
NC_BOSS_WORK,
|
||
NC_AIR_FREIGHT,
|
||
NC_SPECIAL_CARGO,
|
||
NC_VEHICLE_CARGO,
|
||
NC_WEAPONS_CARGO,
|
||
NC_DRUG_CARGO,
|
||
NC_COUNT
|
||
ENDENUM
|
||
|
||
ENUM NC_TT_JOB_NA_REASON
|
||
NC_TT_NONE = 0, //No reason to block the launch
|
||
NC_TT_JOB_GENERIC, //No specific reason
|
||
NC_TT_ON_CD_PRIMARY, //The cooldown is active after just completing this mission
|
||
NC_TT_ON_CD_GLOBAL, //The coolodown is active after completing another mission
|
||
NC_TT_NEED_DRONE, //You need to purchase the drone
|
||
NC_TT_NO_JOB_GANG, //The job is not available due to a gang member being too close
|
||
NC_TT_NO_JOB_NON_GANG, //The job is not available due to another being too close
|
||
NC_TT_INSUFFICIENT_GOONS, //The job is not available due to a lack of gang menbers
|
||
NC_TT_IN_HUB, //The hacker truck is in the hub
|
||
|
||
//Biker
|
||
NC_TT_NOT_SETUP, //You need to setup your biker business
|
||
NC_TT_SUPPLIES_FULL, //You do not need supplies
|
||
NC_TT_SUSPENDED_PROD, //You have suspended production
|
||
NC_TT_BOUGHT_SUPPLIES, //You have already bought supplies
|
||
|
||
//Smuggler
|
||
NC_TT_SMUG_CD, //Air freight mission on cooldown
|
||
NC_TT_SMUG_FULL, //The Hangar is full
|
||
|
||
//Special Cargo
|
||
NC_TT_SC_FULL, //The warehouse is full
|
||
NC_TT_SC_ON_CD //The cooldown timer is active
|
||
|
||
ENDENUM
|
||
|
||
CONST_INT ciMAX_JOB_SLOTS 9
|
||
|
||
//***********Script variables***********
|
||
|
||
INT iBS = 0
|
||
INT iMissionIDToLaunch = -1
|
||
INT iSelectedMissionSubVar = -1
|
||
INT iJobUpdateStaggeredLoop = 0 //Staggered loop var to prevent updating all jobs in one frame
|
||
INT iTutorialHelpTime = 0
|
||
INT iTutorialDialogueID = -1
|
||
STRING sMissionLanuchFailReason = ""
|
||
|
||
BH_PAGE_ID eCurrentPage = PAGE_LOGIN
|
||
NC_APP_STAGE_ID eCurrentStage = NCA_STAGE_IDLE
|
||
NC_MISSION_TYPE eCurrentMissionType = NC_BOSS_WORK
|
||
|
||
structPedsForConversation tutPedStruct
|
||
|
||
NC_TT_JOB_NA_REASON eToolTipReason[ciMAX_JOB_SLOTS]
|
||
|
||
//Special cargo tracking variables
|
||
INT iSelectedSCWarehouse = ciW_Invalid
|
||
CONTRABAND_SIZE eSelectedShipmentSize = CONTRABAND_SMALL
|
||
CONTRABAND_TYPE eActiveContrabandType = CONTRABAND_TYPE_INVALID
|
||
|
||
//Hangar mission tracking variables
|
||
eSMUGGLED_GOODS_TYPE eSelectedHangarGoodsType
|
||
|
||
//Biker business tracking variable
|
||
FACTORY_ID eSelectedFactory
|
||
|
||
//The Scaleform movie
|
||
SCALEFORM_INDEX mov
|
||
SCALEFORM_RETURN_INDEX currentSelectionReturnIndex
|
||
|
||
//Control input variables
|
||
INT iLeftX
|
||
INT iLeftY
|
||
INT iRightX
|
||
INT iRightY
|
||
|
||
SCRIPT_TIMER stUpdateCDTimer
|
||
SCRIPT_TIMER stUpdateLockReasonsTimer
|
||
SCRIPT_TIMER stLoginAnimation
|
||
SCRIPT_TIMER stTutorialTimer
|
||
|
||
//***********Script functions***********
|
||
PROC SCRIPT_CLEANUP(BOOL bDontCleanupBrowserFlag = FALSE, BOOL bPlayExitSound = TRUE)
|
||
|
||
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
|
||
|
||
SET_BROWSER_OPEN(bDontCleanupBrowserFlag)
|
||
|
||
DISABLE_CELLPHONE(FALSE)
|
||
|
||
Unpause_Objective_Text()
|
||
|
||
SET_AUDIO_SCRIPT_CLEANUP_TIME(1000)
|
||
|
||
IF bPlayExitSound
|
||
PLAY_SOUND_FRONTEND(-1, "Logout", "DLC_GR_MOC_Computer_Sounds")
|
||
ENDIF
|
||
|
||
IF IS_PC_VERSION()
|
||
SET_MULTIHEAD_SAFE(FALSE, TRUE, TRUE, TRUE)
|
||
ENDIF
|
||
|
||
THEFEED_RESUME()
|
||
|
||
IF IS_AUDIO_SCENE_ACTIVE("GTAO_Computer_Screen_Active_Scene")
|
||
STOP_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
|
||
ENDIF
|
||
|
||
CLEAR_BIT(g_SimpleInteriorData.iForthBS, BS4_SIMPLE_INTERIOR_NC_DRAW_MISSIONS_SCREEN)
|
||
|
||
TERMINATE_THIS_THREAD()
|
||
ENDPROC
|
||
|
||
PROC PLAY_CLICK_LINK_SOUND()
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Are_You_Sure", "DLC_GR_MOC_Computer_Sounds")
|
||
ENDPROC
|
||
|
||
PROC PLAY_CLICK_LINK_FAIL_SOUND()
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable", "DLC_GR_MOC_Computer_Sounds")
|
||
ENDPROC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
FUNC STRING DEBUG_GET_BUTTON_NAME(BH_BUTTON_INDEXES eButton)
|
||
SWITCH eButton
|
||
CASE BUTTON_OVERLAY_CANCEL RETURN "BUTTON_OVERLAY_CANCEL"
|
||
CASE BUTTON_OVERLAY_ACCEPT RETURN "BUTTON_OVERLAY_ACCEPT"
|
||
CASE BUTTON_LOGIN RETURN "BUTTON_LOGIN"
|
||
CASE BUTTON_HACKER_WORKS_MISSION RETURN "BUTTON_HACKER_WORKS_MISSION"
|
||
CASE BUTTON_AIR_FREIGHT_MISSION RETURN "BUTTON_AIR_FREIGHT_MISSION"
|
||
CASE BUTTON_SPECIAL_CARGO_MISSION RETURN "BUTTON_SPECIAL_CARGO_MISSION"
|
||
CASE BUTTON_VEHICLE_CARGO_MISSION RETURN "BUTTON_VEHICLE_CARGO_MISSION"
|
||
CASE BUTTON_GUNRUNNING_MISSION RETURN "BUTTON_GUNRUNNING_MISSION"
|
||
CASE BUTTON_DRUG_BUSINESS_MISSION RETURN "BUTTON_DRUG_BUSINESS_MISSION"
|
||
CASE BUTTON_JOB1 RETURN "BUTTON_JOB1"
|
||
CASE BUTTON_JOB2 RETURN "BUTTON_JOB2"
|
||
CASE BUTTON_JOB3 RETURN "BUTTON_JOB3"
|
||
CASE BUTTON_JOB4 RETURN "BUTTON_JOB4"
|
||
CASE BUTTON_JOB5 RETURN "BUTTON_JOB5"
|
||
CASE BUTTON_JOB6 RETURN "BUTTON_JOB6"
|
||
CASE BUTTON_JOB7 RETURN "BUTTON_JOB7"
|
||
CASE BUTTON_JOB8 RETURN "BUTTON_JOB8"
|
||
CASE BUTTON_JOB9 RETURN "BUTTON_JOB9"
|
||
ENDSWITCH
|
||
|
||
RETURN "***INVALID***"
|
||
ENDFUNC
|
||
|
||
FUNC STRING DEBUG_GET_PAGE_NAME(BH_PAGE_ID ePage)
|
||
SWITCH ePage
|
||
CASE PAGE_HOME RETURN "PAGE_HOME"
|
||
CASE PAGE_LOGIN RETURN "PAGE_LOGIN"
|
||
ENDSWITCH
|
||
|
||
RETURN "***INVALID***"
|
||
ENDFUNC
|
||
|
||
FUNC STRING NC_APP_GET_APP_STAGE_DEBUG_NAME(NC_APP_STAGE_ID eStage)
|
||
SWITCH eStage
|
||
CASE NCA_STAGE_IDLE RETURN "NCA_STAGE_IDLE"
|
||
CASE NCA_STAGE_CONFIRM_HACKER_WORKS_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_HACKER_WORKS_MISSION_LAUNCH"
|
||
CASE NCA_STAGE_CONFIRM_AIR_FREIGHT_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_AIR_FREIGHT_MISSION_LAUNCH"
|
||
CASE NCA_STAGE_CONFIRM_SPECIAL_CARGO_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_SPECIAL_CARGO_MISSION_LAUNCH"
|
||
CASE NCA_STAGE_CONFIRM_VEHICLE_CARGO_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_VEHICLE_CARGO_MISSION_LAUNCH"
|
||
CASE NCA_STAGE_CONFIRM_GUNRUNNING_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_GUNRUNNING_MISSION_LAUNCH"
|
||
CASE NCA_STAGE_CONFIRM_DRUG_BUSINESS_MISSION_LAUNCH RETURN "NCA_STAGE_CONFIRM_DRUG_BUSINESS_MISSION_LAUNCH"
|
||
ENDSWITCH
|
||
|
||
RETURN "****Invalid****"
|
||
ENDFUNC
|
||
|
||
FUNC STRING NC_APP_GET_MISSION_TYPE_DEBUG_NAME(NC_MISSION_TYPE eMissionType)
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK RETURN "NC_BOSS_WORK"
|
||
CASE NC_AIR_FREIGHT RETURN "NC_AIR_FREIGHT"
|
||
CASE NC_SPECIAL_CARGO RETURN "NC_SPECIAL_CARGO"
|
||
CASE NC_VEHICLE_CARGO RETURN "NC_VEHICLE_CARGO"
|
||
CASE NC_WEAPONS_CARGO RETURN "NC_WEAPONS_CARGO"
|
||
CASE NC_DRUG_CARGO RETURN "NC_DRUG_CARGO"
|
||
CASE NC_COUNT RETURN "NC_COUNT"
|
||
ENDSWITCH
|
||
|
||
RETURN "****Invalid****"
|
||
ENDFUNC
|
||
|
||
FUNC STRING NC_APP_GET_TOOL_TIP_ENUM_DEBUG_NAME(NC_TT_JOB_NA_REASON eReason)
|
||
SWITCH eReason
|
||
CASE NC_TT_NONE RETURN "NC_TT_NONE"
|
||
CASE NC_TT_JOB_GENERIC RETURN "NC_TT_JOB_GENERIC"
|
||
CASE NC_TT_ON_CD_PRIMARY RETURN "NC_TT_ON_CD_PRIMARY"
|
||
CASE NC_TT_ON_CD_GLOBAL RETURN "NC_TT_ON_CD_GLOBAL"
|
||
CASE NC_TT_NEED_DRONE RETURN "NC_TT_NEED_DRONE"
|
||
CASE NC_TT_NO_JOB_GANG RETURN "NC_TT_NO_JOB_GANG"
|
||
CASE NC_TT_NO_JOB_NON_GANG RETURN "NC_TT_NO_JOB_NON_GANG"
|
||
CASE NC_TT_INSUFFICIENT_GOONS RETURN "NC_TT_INSUFFICIENT_GOONS"
|
||
CASE NC_TT_IN_HUB RETURN "NC_TT_IN_HUB"
|
||
|
||
//Biker
|
||
CASE NC_TT_NOT_SETUP RETURN "NC_TT_NOT_SETUP"
|
||
CASE NC_TT_SUPPLIES_FULL RETURN "NC_TT_SUPPLIES_FULL"
|
||
CASE NC_TT_SUSPENDED_PROD RETURN "NC_TT_SUSPENDED_PROD"
|
||
CASE NC_TT_BOUGHT_SUPPLIES RETURN "NC_TT_BOUGHT_SUPPLIES"
|
||
|
||
//Smuggler
|
||
CASE NC_TT_SMUG_CD RETURN "NC_TT_SMUG_CD"
|
||
CASE NC_TT_SMUG_FULL RETURN "NC_TT_SMUG_FULL"
|
||
|
||
//Special Cargo
|
||
CASE NC_TT_SC_FULL RETURN "NC_TT_SC_FULL"
|
||
CASE NC_TT_SC_ON_CD RETURN "NC_TT_SC_ON_CD"
|
||
|
||
ENDSWITCH
|
||
|
||
RETURN "****Invalid****"
|
||
ENDFUNC
|
||
#ENDIF
|
||
|
||
PROC NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_JOB_NA_REASON eReason, INT iMissionIndex)
|
||
IF iMissionIndex < 0
|
||
OR iMissionIndex >= ciMAX_JOB_SLOTS
|
||
CASSERTLN(DEBUG_INTERNET, "NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX - Using invalid index: ", iMissionIndex)
|
||
EXIT
|
||
ENDIF
|
||
|
||
PRINTLN("<APP_NC> NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX - Index: ", iMissionIndex, " Reason: ", NC_APP_GET_TOOL_TIP_ENUM_DEBUG_NAME(eReason))
|
||
eToolTipReason[iMissionIndex] = eReason
|
||
ENDPROC
|
||
|
||
FUNC NC_TT_JOB_NA_REASON NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(INT iMissionIndex)
|
||
IF iMissionIndex < 0
|
||
OR iMissionIndex >= ciMAX_JOB_SLOTS
|
||
CASSERTLN(DEBUG_INTERNET, "NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX - Using invalid index: ", iMissionIndex)
|
||
RETURN NC_TT_NONE
|
||
ENDIF
|
||
|
||
RETURN eToolTipReason[iMissionIndex]
|
||
ENDFUNC
|
||
|
||
FUNC BOOL NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
RETURN IS_BIT_SET(iBS, NC_BS_SPECIAL_ITEM_ACTIVE)
|
||
ENDFUNC
|
||
|
||
PROC SET_FMMC_MISSION_ID(INT iID)
|
||
iMissionIDToLaunch = iID
|
||
PRINTLN("<APP_NC> SET_FMMC_MISSION_ID - ID: ", iID)
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Returns if the overlay screen is currently active
|
||
FUNC BOOL NC_APP_IS_OVERLAY_OPEN()
|
||
RETURN IS_BIT_SET(iBS, NC_BS_OVERLAY_SCREEN_ACTIVE)
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Returns the current app stage
|
||
FUNC NC_APP_STAGE_ID NC_APP_GET_APP_STAGE()
|
||
RETURN eCurrentStage
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Sets the current app stage
|
||
PROC NC_APP_SET_APP_STAGE(NC_APP_STAGE_ID eNewStage)
|
||
IF eCurrentStage != eNewStage
|
||
eCurrentStage = eNewStage
|
||
PRINTLN("<APP_NC> NC_APP_SET_APP_STAGE Setting new stage to: ", NC_APP_GET_APP_STAGE_DEBUG_NAME(eNewStage))
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Returns the current app stage
|
||
FUNC NC_MISSION_TYPE NC_APP_GET_APP_MISSION_TYPE()
|
||
RETURN eCurrentMissionType
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Sets the current app stage
|
||
PROC NC_APP_SET_MISSION_TYPE(NC_MISSION_TYPE eNewMissionType)
|
||
IF eCurrentMissionType != eNewMissionType
|
||
eCurrentMissionType = eNewMissionType
|
||
PRINTLN("<APP_NC> NC_APP_SET_MISSION_TYPE Setting new type to: ", NC_APP_GET_MISSION_TYPE_DEBUG_NAME(eNewMissionType))
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC OPEN_PAGE(BH_PAGE_ID ePage)
|
||
IF ePage = PAGE_HOME
|
||
SET_BIT(g_SimpleInteriorData.iForthBS, BS4_SIMPLE_INTERIOR_NC_DRAW_MISSIONS_SCREEN)
|
||
ELSE
|
||
CLEAR_BIT(g_SimpleInteriorData.iForthBS, BS4_SIMPLE_INTERIOR_NC_DRAW_MISSIONS_SCREEN)
|
||
ENDIF
|
||
|
||
PRINTLN("<APP_NC> OPEN_PAGE - new page = ", DEBUG_GET_PAGE_NAME(ePage))
|
||
eCurrentPage = ePage
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_SCREEN")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(ePage))
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
PROC NC_APP_SET_MISSION_LAUNCH_FAIL_REASON(STRING sReason)
|
||
sMissionLanuchFailReason = sReason
|
||
PRINTLN("<APP_NC> NC_APP_SET_MISSION_LAUNCH_FAIL_REASON Setting new fail reason: ", GET_FILENAME_FOR_AUDIO_CONVERSATION(sReason))
|
||
ENDPROC
|
||
|
||
PROC NC_APP_CLEAR_MISSION_LAUNCH_FAIL_REASON()
|
||
sMissionLanuchFailReason = ""
|
||
PRINTLN("<APP_NC> NC_APP_CLEAR_MISSION_LAUNCH_FAIL_REASON called.")
|
||
ENDPROC
|
||
|
||
FUNC STRING NC_APP_GET_MISSION_LAUNCH_FAIL_REASON()
|
||
RETURN sMissionLanuchFailReason
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Sets the mission unavailable value
|
||
FUNC BOOL CAN_PLAYER_LAUNCH_BOSS_WORK(INT iMissionToLaunch)
|
||
// Check that mission is available
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), iMissionToLaunch, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_BOSS_WORK: NOPE! mission unavailable")
|
||
INT iReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), iMissionToLaunch, FALSE)
|
||
|
||
IF iReason = GB_MU_REASON_GOON_CRITICAL_TO_FME
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L2")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L3")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L4")
|
||
ENDIF
|
||
ELIF iReason = GB_MU_REASON_BOSS_IS_ANIMAL
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R6")
|
||
ELIF iReason = GB_MU_REASON_GOON_IS_ANIMAL
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G1")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G2")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G3")
|
||
ENDIF
|
||
ELIF iReason = GB_MU_REASON_GOON_GAMBLING
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G4")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G5")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G6")
|
||
ENDIF
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L1")
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_BOSS_WORK: NOPE! GB_IS_PLAYER_BOSS_OF_A_GANG is false")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L5")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
// Check we're not taking part in some other mission
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_BOSS_WORK: NOPE! player critical to job")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L6")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NETWORK_IS_ACTIVITY_SESSION()
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_BOSS_WORK: NOPE! NETWORK_IS_ACTIVITY_SESSION is true")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("HT_BW_L6")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:
|
||
/// Sets the mission unavailable value
|
||
FUNC BOOL CAN_PLAYER_LAUNCH_MISSION(INT iMissionToLaunch)
|
||
// Check that mission is available
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), iMissionToLaunch, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_MISSION: NOPE! mission unavailable")
|
||
INT iReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), iMissionToLaunch, FALSE)
|
||
|
||
IF iReason = GB_MU_REASON_GOON_CRITICAL_TO_FME
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("UA_ML_F_GOON1")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("UA_ML_F_GOON2")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("UA_ML_F_GOON3")
|
||
ENDIF
|
||
ELIF iReason = GB_MU_REASON_BOSS_IS_ANIMAL
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R6")
|
||
ELIF iReason = GB_MU_REASON_GOON_IS_ANIMAL
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G1")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G2")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G3")
|
||
ENDIF
|
||
ELIF iReason = GB_MU_REASON_GOON_GAMBLING
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G4")
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G5")
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("GENERAL_MLF_G6")
|
||
ENDIF
|
||
ELSE
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R6")
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NOT GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_MISSION: NOPE! GB_IS_PLAYER_BOSS_OF_A_GANG is false")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("DBG_BUN_NB")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
// Check we're not taking part in some other mission
|
||
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_MISSION: NOPE! player critical to job")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R3")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF NETWORK_IS_ACTIVITY_SESSION()
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> CAN_PLAYER_LAUNCH_MISSION: NOPE! NETWORK_IS_ACTIVITY_SESSION is true")
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R3")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
PROC SHOW_OVERLAY(STRING sTitle, STRING sMessage, STRING sAcceptButtonLabel, STRING sCancelButtonLabel, BOOL bPlayFailSound, BOOL bPlayClickSound, NC_APP_STAGE_ID eNewAppStage = NCA_STAGE_IDLE, INT iAdditionalINT = -1, INT iSecondAdditionalINT = -1, STRING sAdditionalString = NULL, STRING sAdditionalString2 = NULL)
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_OVERLAY")
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTitle)
|
||
|
||
//Build the string we need to display
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sMessage)
|
||
//These parameters need to be given in the correct order(May need a new function if more are added)
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(sAdditionalString)
|
||
|
||
//Add the first int if needed
|
||
IF iadditionalINT != -1
|
||
ADD_TEXT_COMPONENT_INTEGER(iadditionalINT)
|
||
ENDIF
|
||
|
||
//Add the string
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sAdditionalString)
|
||
|
||
//Add the extra int if needed
|
||
IF iSecondAdditionalINT != -1
|
||
//For messages that use all available parameters: Int-String-Int
|
||
ADD_TEXT_COMPONENT_INTEGER(iSecondAdditionalINT)
|
||
ENDIF
|
||
|
||
//Add the extra string if needed
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(sAdditionalString2)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sAdditionalString2)
|
||
ENDIF
|
||
ELSE
|
||
IF iadditionalINT != -1
|
||
ADD_TEXT_COMPONENT_INTEGER(iadditionalINT)
|
||
ENDIF
|
||
ENDIF
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sAcceptButtonLabel)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sCancelButtonLabel)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
IF bPlayClickSound
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ELIF bPlayFailSound
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
ENDIF
|
||
|
||
SET_BIT(iBS, NC_BS_OVERLAY_SCREEN_ACTIVE)
|
||
NC_APP_SET_APP_STAGE(eNewAppStage)
|
||
|
||
PRINTLN("<APP_NC> SHOW_OVERLAY with title: ", sTitle, " message: ", sMessage, " Accebt button: ", sAcceptButtonLabel, " Cancel button: ", sCancelButtonLabel)
|
||
ENDPROC
|
||
|
||
PROC HIDE_OVERLAY()
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "HIDE_OVERLAY")
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
NC_APP_SET_APP_STAGE(NCA_STAGE_IDLE)
|
||
CLEAR_BIT(iBS, NC_BS_OVERLAY_SCREEN_ACTIVE)
|
||
|
||
PRINTLN("<APP_NC> HIDE_OVERLAY")
|
||
ENDPROC
|
||
|
||
PROC APP_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 SET_INPUT_EXCLUSIVE_AND_ENABLED(CONTROL_TYPE eType, CONTROL_ACTION eAction, BOOL bEnableRelatedActions = TRUE)
|
||
IF NOT IS_PAUSE_MENU_ACTIVE_EX()
|
||
SET_INPUT_EXCLUSIVE(eType, eAction)
|
||
ENABLE_CONTROL_ACTION(eType, eAction, bEnableRelatedActions)
|
||
ELSE
|
||
#IF IS_DEBUG_BUILD
|
||
IF NOT IS_BIT_SET(iBS, NC_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
||
PRINTLN("<APP_NC>, SET_INPUT_EXCLUSIVE_AND_ACTIVE called but IS_PAUSE_MENU_ACTIVE_EX returned true")
|
||
SET_BIT(iBS, NC_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
||
ENDIF
|
||
#ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RENDER_NC_APP()
|
||
|
||
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)
|
||
APP_CONTROL_DISABLE()
|
||
|
||
IF g_bInMultiplayer
|
||
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH)//1544427
|
||
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()
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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()
|
||
ENDPROC
|
||
|
||
PROC CLOSE_JOB_OVERLAY()
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "HIDE_JOB_OVERLAY")
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
CLEAR_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
CLEAR_BIT(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
ENDPROC
|
||
|
||
FUNC BOOL IS_JOB_OVERLAY_VISIBLE()
|
||
RETURN IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDFUNC
|
||
|
||
//╒═════════════════════════════════════════════════════════════════════════════╕
|
||
//╞═════════════════════════╡ Mission Data Functions ╞══════════════════════════╡
|
||
//╘═════════════════════════════════════════════════════════════════════════════╛
|
||
|
||
FUNC BOOL SHOULD_MISSION_TYPE_BUTTON_BE_UNLOCKED(NC_MISSION_TYPE eMissionType)
|
||
|
||
IF NOT GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
AND eMissionType != NC_BOSS_WORK
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("scRestrictNCAppToClientJobs")
|
||
AND eMissionType != NC_BOSS_WORK
|
||
RETURN FALSE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK RETURN TRUE BREAK
|
||
|
||
CASE NC_AIR_FREIGHT
|
||
IF DOES_PLAYER_OWN_A_HANGER(PLAYER_ID())
|
||
RETURN IS_HANGAR_SETUP_MISSION_COMPLETE()
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NC_SPECIAL_CARGO RETURN DOES_PLAYER_OWN_A_WAREHOUSE(PLAYER_ID()) AND GB_IS_LOCAL_PLAYER_BOSS_OF_GANG_TYPE(GT_VIP) BREAK
|
||
CASE NC_VEHICLE_CARGO RETURN DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID()) AND GB_IS_LOCAL_PLAYER_BOSS_OF_GANG_TYPE(GT_VIP) BREAK
|
||
CASE NC_WEAPONS_CARGO RETURN DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID()) AND IS_BUSINESS_TYPE_ACTIVE(BUSINESS_TYPE_WEAPONS) AND NOT IS_FACTORY_SHUTDOWN_BY_PLAYER(BUNKER_SAVE_SLOT) BREAK
|
||
|
||
CASE NC_DRUG_CARGO
|
||
IF DOES_PLAYER_OWN_A_FACTORY(PLAYER_ID())
|
||
AND GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_MISSION_TYPE eMissionType)
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("scRestrictNCAppToClientJobs")
|
||
AND eMissionType != NC_BOSS_WORK
|
||
RETURN TRUE
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK
|
||
IF g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_AIR_FREIGHT
|
||
IF g_sMPTunables.bBB_HACKER_WORK_AIRFREIGHT_CARGO_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_SPECIAL_CARGO
|
||
IF g_sMPTunables.bBB_HACKER_WORK_SPECIAL_CARGO_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_VEHICLE_CARGO
|
||
IF g_sMPTunables.bBB_HACKER_WORK_VEHICLE_CARGO_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_WEAPONS_CARGO
|
||
IF g_sMPTunables.bBB_HACKER_WORK_GUNRUNNING_SUPPLIES_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_DRUG_CARGO
|
||
IF g_sMPTunables.bBB_HACKER_WORK_BIKER_SUPPLIES_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC UPDATE_PRIMARY_MISSION_WITH_ID(INT iMissionID)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_MISSION")
|
||
NC_MISSION_TYPE eMissionType = INT_TO_ENUM(NC_MISSION_TYPE, iMissionID)
|
||
INT iCooldown = 0
|
||
BOOL bAvailable = SHOULD_MISSION_TYPE_BUTTON_BE_UNLOCKED(eMissionType)
|
||
|
||
IF eMissionType = NC_VEHICLE_CARGO
|
||
AND NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
iCooldown = (GB_GET_MISSION_COOLDOWN_TIME_REMAINING(VEV_EYE_IN_THE_SKY) + 1)
|
||
SET_BIT(iBS, NC_BS_IE_COOLDOWN_RUNNING)
|
||
bAvailable = FALSE
|
||
ENDIF
|
||
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(eMissionType)
|
||
bAvailable = FALSE
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iMissionID) // Mission type
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable) // Available?
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iCooldown) // Any cooldown running for this mission type
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
PROC SEND_PRIMARY_MISSION_AVAILABILITY_TO_SCALEFORM()
|
||
INT i
|
||
|
||
REPEAT NC_COUNT i
|
||
UPDATE_PRIMARY_MISSION_WITH_ID(i)
|
||
ENDREPEAT
|
||
ENDPROC
|
||
|
||
PROC SEND_ALL_DATA_TO_SCALEFORM()
|
||
OPEN_PAGE(PAGE_LOGIN)
|
||
//Base data
|
||
SEND_PRIMARY_MISSION_AVAILABILITY_TO_SCALEFORM()
|
||
ENDPROC
|
||
|
||
FUNC INT GET_JOB_ID_FROM_FMMC_ID(INT iFMMCID)
|
||
SWITCH iFMMCID
|
||
CASE FMMC_TYPE_FMBB_BANK_JOB RETURN 0
|
||
CASE FMMC_TYPE_FMBB_DATA_HACK RETURN 1
|
||
CASE FMMC_TYPE_FMBB_INFILTRATION RETURN 2
|
||
CASE FMMC_TYPE_FMBB_JEWEL_STORE_GRAB RETURN 3
|
||
CASE FMMC_TYPE_FMBB_SECURITY_VAN RETURN 4
|
||
CASE FMMC_TYPE_FMBB_TARGET_PURSUIT RETURN 5
|
||
ENDSWITCH
|
||
|
||
RETURN -1
|
||
ENDFUNC
|
||
|
||
FUNC INT GET_FMMC_ID_FROM_JOB_ID(INT iJobID)
|
||
SWITCH iJobID
|
||
CASE 0 RETURN FMMC_TYPE_FMBB_BANK_JOB
|
||
CASE 1 RETURN FMMC_TYPE_FMBB_DATA_HACK
|
||
CASE 2 RETURN FMMC_TYPE_FMBB_INFILTRATION
|
||
CASE 3 RETURN FMMC_TYPE_FMBB_JEWEL_STORE_GRAB
|
||
CASE 4 RETURN FMMC_TYPE_FMBB_SECURITY_VAN
|
||
CASE 5 RETURN FMMC_TYPE_FMBB_TARGET_PURSUIT
|
||
ENDSWITCH
|
||
|
||
RETURN -1
|
||
ENDFUNC
|
||
|
||
FUNC INT GET_BOSS_WORK_OR_CHALLENGE_COOLDOWN_TIME_REMAINING(INT iFMMCID)
|
||
IF IS_FMMC_ID_BBATTLE_BOSS_WORK(iFMMCID)
|
||
INT i
|
||
REPEAT ciMAX_FMBB_BOSS_CHALLENGE_CD_TIMERS i
|
||
IF g_sBattleBossWorksCDVars.sBossWorksCD[i].iFMMCID = iFMMCID
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.sBossWorksCD[i].g_stBossWorksCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.sBossWorksCD[i].g_stBossWorksCD, GET_BUSINESS_BATTLE_BOSS_WORK_COOLDOWN_TIME(i))
|
||
ENDIF
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stAllBossWorksCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.g_stAllBossWorksCD, GET_BUSINESS_BATTLE_BOSS_WORK_GLOBAL_COOLDOWN_TIME())
|
||
ENDIF
|
||
ELIF IS_FMMC_ID_BBATTLE_BOSS_CHALLENGE(iFMMCID)
|
||
IF iFMMCID = FMMC_TYPE_FMBB_SECURITY_VAN
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stSecurityVansCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.g_stSecurityVansCD, GET_BUSINESS_BATTLE_BOSS_CHALLENGE_COOLDOWN_TIME(iFMMCID))
|
||
ELIF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stAllBossChallengeCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.g_stAllBossChallengeCD, GET_BUSINESS_BATTLE_BOSS_CHALLENGE_GLOBAL_COOLDOWN_TIME())
|
||
ENDIF
|
||
ELSE
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stTargetPursuitCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.g_stTargetPursuitCD, GET_BUSINESS_BATTLE_BOSS_CHALLENGE_COOLDOWN_TIME(iFMMCID))
|
||
ELIF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stAllBossChallengeCD)
|
||
RETURN GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sBattleBossWorksCDVars.g_stAllBossChallengeCD, GET_BUSINESS_BATTLE_BOSS_CHALLENGE_GLOBAL_COOLDOWN_TIME())
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN -1
|
||
ENDFUNC
|
||
|
||
FUNC BOOL IS_BOSS_WORK_OR_CHALLENGE_TIMER_RUNNING(INT iFMMCID, NC_TT_JOB_NA_REASON &eCooldownReason)
|
||
|
||
eCooldownReason = NC_TT_ON_CD_PRIMARY
|
||
|
||
IF iFMMCID = FMMC_TYPE_FMBB_SECURITY_VAN
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stSecurityVansCD)
|
||
RETURN TRUE
|
||
ENDIF
|
||
ELIF iFMMCID = FMMC_TYPE_FMBB_TARGET_PURSUIT
|
||
IF HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stTargetPursuitCD)
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
INT i
|
||
REPEAT ciMAX_FMBB_BOSS_CHALLENGE_CD_TIMERS i
|
||
IF iFMMCID != -1
|
||
AND g_sBattleBossWorksCDVars.sBossWorksCD[i].iFMMCID = iFMMCID
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
eCooldownReason = NC_TT_ON_CD_GLOBAL
|
||
|
||
IF IS_FMMC_ID_BBATTLE_BOSS_WORK(iFMMCID)
|
||
RETURN HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stAllBossWorksCD)
|
||
ENDIF
|
||
|
||
RETURN HAS_NET_TIMER_STARTED(g_sBattleBossWorksCDVars.g_stAllBossChallengeCD)
|
||
ENDFUNC
|
||
|
||
FUNC BOOL RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY(INT iFMMCID)
|
||
IF iFMMCID = FMMC_TYPE_FMBB_SECURITY_VAN
|
||
PRINTLN("<APP_NC> RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY - Checking FMMC_TYPE_FMBB_SECURITY_VAN - Returning TRUE")
|
||
iSelectedMissionSubVar = -1
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
IF SELECT_TRUCK_WORK_VARIATION(iFMMCID, iSelectedMissionSubVar)
|
||
PRINTLN("<APP_NC> RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY - Selected sub variation = ", iSelectedMissionSubVar, " for mission: ", iFMMCID)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
PRINTLN("<APP_NC> RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY - RETURN FALSE for mission ", iFMMCID)
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL IS_BOSS_MISSION_BLOCKED(INT iFMMCID)
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_COMMANDLINE_PARAM_EXISTS("sc_TerrorByteBW_FLOW_PLAY")
|
||
IF iFMMCID = FMMC_TYPE_FMBB_TARGET_PURSUIT
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
IF g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_GLOBAL
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
SWITCH iFMMCID
|
||
CASE FMMC_TYPE_FMBB_SECURITY_VAN RETURN g_sMPTunables.bBB_HACKER_WORK_HACKER_CHALLENGE_DISABLE_JOB_SECURITY_VANS
|
||
CASE FMMC_TYPE_FMBB_TARGET_PURSUIT RETURN g_sMPTunables.bBB_HACKER_WORK_HACKER_CHALLENGE_DISABLE_JOB_TARGET_PURSUIT
|
||
CASE FMMC_TYPE_FMBB_BANK_JOB RETURN g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_BANK_JOB
|
||
CASE FMMC_TYPE_FMBB_DATA_HACK RETURN g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_DATA_HACK
|
||
CASE FMMC_TYPE_FMBB_INFILTRATION RETURN g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_INFILTRATION
|
||
CASE FMMC_TYPE_FMBB_JEWEL_STORE_GRAB RETURN g_sMPTunables.bBB_HACKER_WORK_CLIENT_WORK_DISABLE_JOB_JEWEL_STORE_GRAB
|
||
ENDSWITCH
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL IS_NC_BOSS_WORK_AVAILABLE(INT iMissionID, BOOL bCheckCooldownTimer = TRUE)
|
||
|
||
INT iFMMCID = GET_FMMC_ID_FROM_JOB_ID(iMissionID)
|
||
|
||
IF IS_BOSS_MISSION_BLOCKED(iFMMCID)
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_JOB_GENERIC, iMissionID)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF bCheckCooldownTimer
|
||
NC_TT_JOB_NA_REASON eCooldownReason
|
||
|
||
IF IS_BOSS_WORK_OR_CHALLENGE_TIMER_RUNNING(iFMMCID, eCooldownReason)
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(eCooldownReason, iMissionID)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF IS_OWNERS_HACKER_TRUCK_INSIDE_BUSINESS_HUB(PLAYER_ID())
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_IN_HUB, iMissionID)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
IF iFMMCID = FMMC_TYPE_FMBB_INFILTRATION
|
||
OR iFMMCID = FMMC_TYPE_FMBB_JEWEL_STORE_GRAB
|
||
//Some missions require the drone stationt to be purchased before launch
|
||
IF NOT IS_PLAYER_HACKER_TRUCK_DRONE_STATION_PURCHASED(PLAYER_ID())
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NEED_DRONE, iMissionID)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF iFMMCID = FMMC_TYPE_FMBB_SECURITY_VAN
|
||
OR iFMMCID = FMMC_TYPE_FMBB_TARGET_PURSUIT
|
||
//The two challenge missions require a gang boss to have at least one goon
|
||
IF GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), iFMMCID) = GB_MU_REASON_NOT_ENOUGH_GOONS
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_INSUFFICIENT_GOONS, iMissionID)
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY(GET_FMMC_ID_FROM_JOB_ID(iMissionID))
|
||
IF iSelectedMissionSubVar = TRUCK_WORK_SELECT_FAILED_FOR_CLOSE_GANG
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NO_JOB_GANG, iMissionID)
|
||
ELSE
|
||
iSelectedMissionSubVar = -1
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NO_JOB_NON_GANG, iMissionID)
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NONE, iMissionID)
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC STRING GET_NC_BOSS_WORK_UNAVAILABLE_REASON(INT iMissionID)
|
||
|
||
INT iFMMCID = GET_FMMC_ID_FROM_JOB_ID(iMissionID)
|
||
|
||
IF IS_BOSS_MISSION_BLOCKED(iFMMCID)
|
||
RETURN "HT_BW_L1"
|
||
ENDIF
|
||
|
||
IF iFMMCID = FMMC_TYPE_FMBB_INFILTRATION
|
||
OR iFMMCID = FMMC_TYPE_FMBB_JEWEL_STORE_GRAB
|
||
//Some missions require the drone stationt to be purchased before launch
|
||
IF NOT IS_PLAYER_HACKER_TRUCK_DRONE_STATION_PURCHASED(PLAYER_ID())
|
||
RETURN "HT_BW_L8"
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF iFMMCID = FMMC_TYPE_FMBB_SECURITY_VAN
|
||
OR iFMMCID = FMMC_TYPE_FMBB_TARGET_PURSUIT
|
||
//The two challenge missions require a gang boss to have at least one goon
|
||
IF GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), iFMMCID) = GB_MU_REASON_NOT_ENOUGH_GOONS
|
||
IF GB_IS_LOCAL_PLAYER_BOSS_OF_A_BIKER_GANG()
|
||
RETURN "HT_BW_L9"
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
|
||
IF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
RETURN "HT_BW_L9a"
|
||
ELSE
|
||
RETURN "HT_BW_L9b"
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//This is set by RUN_DISTANCE_CHECK_FOR_MISSION_AVAILABILITY if it is -1 then no variations were suitable
|
||
IF iSelectedMissionSubVar = -1
|
||
RETURN "HT_BW_L1"
|
||
ENDIF
|
||
|
||
RETURN "HT_BW_L1"
|
||
ENDFUNC
|
||
|
||
PROC OPEN_JOB_LIST_OVERLAY(NC_MISSION_TYPE eMittionType, STRING sTitle)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_JOB_OVERLAY")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eMittionType))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTitle)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
PROC CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "CLEAR_JOBS")
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
INT i
|
||
|
||
REPEAT ciMAX_JOB_SLOTS i
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NONE, i)
|
||
ENDREPEAT
|
||
ENDPROC
|
||
|
||
FUNC TEXT_LABEL_15 GET_TOOL_TIP_TEXT_FOR_MISSION_UNAVAILABLE(NC_TT_JOB_NA_REASON eReason, INT iFMMCID)
|
||
TEXT_LABEL_15 tlReturn
|
||
|
||
SWITCH eReason
|
||
CASE NC_TT_NONE tlReturn = "INVALID" BREAK
|
||
CASE NC_TT_ON_CD_PRIMARY tlReturn = "HT_JOB_CD_0" BREAK
|
||
CASE NC_TT_NEED_DRONE tlReturn = "HT_JOB_R3" BREAK
|
||
CASE NC_TT_NO_JOB_NON_GANG tlReturn = "HT_JOB_R2" BREAK
|
||
CASE NC_TT_IN_HUB tlReturn = "HT_JOB_R6" BREAK
|
||
CASE NC_TT_JOB_GENERIC tlReturn = "HT_BW_L1" BREAK
|
||
|
||
CASE NC_TT_ON_CD_GLOBAL
|
||
IF IS_FMMC_ID_BBATTLE_BOSS_WORK(iFMMCID)
|
||
tlReturn = "HT_JOB_CD_1"
|
||
ELSE
|
||
tlReturn = "HT_JOB_CD_2"
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NC_TT_INSUFFICIENT_GOONS
|
||
IF GB_IS_LOCAL_PLAYER_BOSS_OF_A_BIKER_GANG()
|
||
tlReturn = "HT_JOB_R4"
|
||
ELSE
|
||
tlReturn = "HT_JOB_R5"
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NC_TT_NO_JOB_GANG
|
||
IF GB_IS_LOCAL_PLAYER_BOSS_OF_A_BIKER_GANG()
|
||
tlReturn = "HT_JOB_R1"
|
||
ELSE
|
||
tlReturn = "HT_JOB_R1a"
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NC_TT_NOT_SETUP tlReturn = "HT_DW_P1_D5" BREAK
|
||
CASE NC_TT_SUPPLIES_FULL tlReturn = "HT_DW_P1_D7" BREAK
|
||
CASE NC_TT_SUSPENDED_PROD tlReturn = "HT_DW_P1_D6" BREAK
|
||
CASE NC_TT_BOUGHT_SUPPLIES tlReturn = "HT_DW_P1_D8" BREAK
|
||
|
||
CASE NC_TT_SC_FULL
|
||
IF eSelectedShipmentSize = CONTRABAND_SMALL
|
||
tlReturn = "HT_DW_P1_D9"
|
||
ELIF eSelectedShipmentSize = CONTRABAND_MEDIUM
|
||
tlReturn = "HT_DW_P1_D10"
|
||
ELSE
|
||
tlReturn = "HT_DW_P1_D11"
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_TT_SC_ON_CD tlReturn = "HT_SC_P1_D3" BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN tlReturn
|
||
ENDFUNC
|
||
|
||
FUNC TEXT_LABEL_15 GET_FACTORY_TYPE_PROPERTY_LABEL(FACTORY_TYPE eType, INT iVariation = 0)
|
||
|
||
TEXT_LABEL_15 tlReturn = "*INVAILID*"
|
||
|
||
IF iVariation = 0
|
||
SWITCH eType
|
||
CASE FACTORY_TYPE_CRACK tlReturn = "HAPP_BTYPE_P2" BREAK
|
||
CASE FACTORY_TYPE_METH tlReturn = "HAPP_BTYPE_P3" BREAK
|
||
CASE FACTORY_TYPE_WEED tlReturn = "HAPP_BTYPE_P4" BREAK
|
||
CASE FACTORY_TYPE_FAKE_IDS tlReturn = "HAPP_BTYPE_P5" BREAK
|
||
CASE FACTORY_TYPE_FAKE_MONEY tlReturn = "HAPP_BTYPE_P6" BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
SWITCH eType
|
||
CASE FACTORY_TYPE_CRACK tlReturn = "HAPP_BTYPE_HP2" BREAK
|
||
CASE FACTORY_TYPE_METH tlReturn = "HAPP_BTYPE_HP3" BREAK
|
||
CASE FACTORY_TYPE_WEED tlReturn = "HAPP_BTYPE_HP4" BREAK
|
||
CASE FACTORY_TYPE_FAKE_IDS tlReturn = "HAPP_BTYPE_HP5" BREAK
|
||
CASE FACTORY_TYPE_FAKE_MONEY tlReturn = "HAPP_BTYPE_HP6" BREAK
|
||
ENDSWITCH
|
||
ENDIF
|
||
|
||
RETURN tlReturn
|
||
ENDFUNC
|
||
|
||
FUNC TEXT_LABEL_15 GET_TOOL_TIP_SUB_STRING_FOR_MISSION_UNAVAILABLE(NC_TT_JOB_NA_REASON eReason, FACTORY_TYPE eType)
|
||
TEXT_LABEL_15 tlReturn
|
||
|
||
SWITCH eReason
|
||
CASE NC_TT_SUPPLIES_FULL
|
||
CASE NC_TT_BOUGHT_SUPPLIES
|
||
CASE NC_TT_NOT_SETUP
|
||
CASE NC_TT_SUSPENDED_PROD
|
||
tlReturn = GET_FACTORY_TYPE_PROPERTY_LABEL(eType, 1)
|
||
BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN tlReturn
|
||
ENDFUNC
|
||
|
||
PROC SETUP_TRUCK_JOB_OVERLAY()
|
||
|
||
CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
|
||
INT i
|
||
NC_TT_JOB_NA_REASON eCooldownReason
|
||
|
||
REPEAT MAX_WORKS_JOBS i
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_JOB")
|
||
|
||
INT iFMMCID = GET_FMMC_ID_FROM_JOB_ID(i)
|
||
BOOL bAvailable = IS_NC_BOSS_WORK_AVAILABLE(i, FALSE)
|
||
eCooldownReason = NC_TT_NONE
|
||
|
||
//Mission name
|
||
TEXT_LABEL_15 tlName = "HT_BW_T"
|
||
tlName += i
|
||
|
||
//Description text label
|
||
TEXT_LABEL_15 tlDesc = "HT_BW_D"
|
||
tlDesc += i
|
||
|
||
//The challenges reference to the players gang type
|
||
IF i >= 4
|
||
AND GB_IS_LOCAL_PLAYER_BOSS_OF_A_BIKER_GANG()
|
||
tlDesc += "a"
|
||
ENDIF
|
||
|
||
INT iShowCooldown = 0
|
||
INT iCooldownTime = ciTYPE_FORMAT_HIDDEN
|
||
|
||
IF IS_BOSS_WORK_OR_CHALLENGE_TIMER_RUNNING(iFMMCID, eCooldownReason)
|
||
|
||
iShowCooldown = ciTYPE_FORMAT_TIME
|
||
iCooldownTime = GET_BOSS_WORK_OR_CHALLENGE_COOLDOWN_TIME_REMAINING(iFMMCID)
|
||
tlDesc = GET_TOOL_TIP_TEXT_FOR_MISSION_UNAVAILABLE(eCooldownReason, iFMMCID)
|
||
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(eCooldownReason, i)
|
||
|
||
ELIF NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i) != NC_TT_NONE
|
||
tlDesc = GET_TOOL_TIP_TEXT_FOR_MISSION_UNAVAILABLE(NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i), iFMMCID)
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(i)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlName)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iCooldownTime)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iShowCooldown) //Type format for param above: 0 = Hidden 1 = Cash 2 = Time
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlDesc)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDREPEAT
|
||
|
||
OPEN_JOB_LIST_OVERLAY(NC_BOSS_WORK, "HT_BW_MT")
|
||
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
FUNC BOOL SET_BIKER_MISSION_UNAVAILABLE_REASON(FACTORY_ID eFracotryID, INT iSlot, INT iMissionIndex)
|
||
|
||
IF NOT HAS_PLAYER_COMPLETED_FACTORY_SETUP_MISSION(PLAYER_ID(), eFracotryID)
|
||
AND NOT IS_DELAY_PRODUCTION_TIMER_RUNNING(iSlot)
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NOT_SETUP, iMissionIndex)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
IF g_iMaterialsTotalForFactory[iSlot] >= g_sMPTunables.iBIKER_RESUPPLY_LAUNCH_SUPPLIES_THRESHOLD
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SUPPLIES_FULL, iMissionIndex)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
IF HAS_PLAYER_SUSPENDED_BIKER_BUSINESS_PRODUCTION(PLAYER_ID(), eFracotryID)
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SUSPENDED_PROD, iMissionIndex)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
IF IS_PAID_RESUPPLY_TIMER_RUNNING(iSlot)
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_BOUGHT_SUPPLIES, iMissionIndex)
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_NONE, iMissionIndex)
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC SETUP_BIKER_JOB_OVERLAY()
|
||
CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
|
||
INT i
|
||
|
||
REPEAT FACTORY_TYPE_WEAPONS i
|
||
BOOL bAvailable = FALSE
|
||
FACTORY_TYPE eType = INT_TO_ENUM(FACTORY_TYPE, i)
|
||
FACTORY_ID eFracotryID = FACTORY_ID_INVALID
|
||
|
||
IF DOES_PLAYER_OWN_FACTORY_OF_TYPE(PLAYER_ID(), eType)
|
||
INT iSlot = GET_SAVE_SLOT_OF_OWNED_FACTORY_TYPE(PLAYER_ID(), eType)
|
||
eFracotryID = GET_FACTORY_ID_FROM_FACTORY_SLOT(PLAYER_ID(), iSlot)
|
||
|
||
IF NOT SET_BIKER_MISSION_UNAVAILABLE_REASON(eFracotryID, iSlot, i)
|
||
bAvailable = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Mission name
|
||
TEXT_LABEL_15 tlName = "HT_DW_T"
|
||
tlName += i
|
||
|
||
//Description text label
|
||
TEXT_LABEL_15 tlDescSub
|
||
TEXT_LABEL_15 tlDesc = "HT_DW_D"
|
||
tlDesc += i
|
||
|
||
NC_TT_JOB_NA_REASON eReason = NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i)
|
||
|
||
IF NOT DOES_PLAYER_OWN_FACTORY_OF_TYPE(PLAYER_ID(), eType)
|
||
tlDesc = "HT_DW_P1_D3"
|
||
tlDescSub = GET_FACTORY_TYPE_PROPERTY_LABEL(eType, 0)
|
||
ELIF eReason != NC_TT_NONE
|
||
tlDesc = GET_TOOL_TIP_TEXT_FOR_MISSION_UNAVAILABLE(eReason, -1)
|
||
tlDescSub = GET_TOOL_TIP_SUB_STRING_FOR_MISSION_UNAVAILABLE(eReason, eType)
|
||
ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_JOB")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(i)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlName)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ciTYPE_FORMAT_HIDDEN)
|
||
|
||
IF IS_STRING_NULL_OR_EMPTY(tlDescSub)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlDesc)
|
||
ELSE
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(tlDesc)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlDescSub)
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDREPEAT
|
||
|
||
OPEN_JOB_LIST_OVERLAY(NC_DRUG_CARGO, "HT_DW_MT")
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
FUNC BOOL DOES_PLAYER_OWN_WAREHOUSE_THAT_HAS_SPACE_TO_STORE_A_SHIPMENT_OF_SIZE(CONTRABAND_SIZE eShipmentSize)
|
||
INT iNumCratesToStore = ENUM_TO_INT(eShipmentSize)
|
||
|
||
INT i
|
||
|
||
REPEAT GET_COUNT_OF_WAREHOUSES_OWNED() i
|
||
INT iWarehouseID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(i)
|
||
IF GET_WAREHOUSE_REMAINING_CAPACITY(iWarehouseID) >= iNumCratesToStore
|
||
RETURN TRUE
|
||
ENDIF
|
||
ENDREPEAT
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC TEXT_LABEL_23 GET_CONTRABAND_WAREHOUSE_SIZE_TEXT_LABEL(EWarehouseSize eSize)
|
||
TEXT_LABEL_23 tlReturn
|
||
|
||
SWITCH eSize
|
||
CASE eWarehouseSmall tlReturn = "HT_SCW_DS0" BREAK
|
||
CASE eWarehouseMedium tlReturn = "HT_SCW_DS1" BREAK
|
||
CASE eWarehouseLarge tlReturn = "HT_SCW_DS2" BREAK
|
||
ENDSWITCH
|
||
|
||
RETURN tlReturn
|
||
ENDFUNC
|
||
|
||
/// PURPOSE:Returns the contraband type assigned to the local playere as a text label
|
||
FUNC TEXT_LABEL_23 GET_NC_APP_CONTRABAND_TYPE_LABEL_FOR_SECURO_APP(CONTRABAND_TYPE contaType)
|
||
TEXT_LABEL_23 tlContraType = "NC_CONTRATP_"
|
||
tlContraType += ENUM_TO_INT(contaType)
|
||
|
||
CDEBUG3LN(DEBUG_INTERNET, "GET_WAREHOUSE_CONTRABAND_TYPE_STRING: ", tlContraType)
|
||
RETURN tlContraType
|
||
ENDFUNC
|
||
|
||
/// PURPOSE: Returns the text label for the name of the specified warehouse - App version for localised language support
|
||
/// Validates the warehouse ID before returning its name
|
||
FUNC STRING GET_WAREHOUSE_NAME_FOR_APP(INT iWarehouse)
|
||
SWITCH iWarehouse
|
||
CASE ciW_Elysian_Island_2 RETURN "MP_WHOUSE_HT0" BREAK
|
||
CASE ciW_La_Puerta_1 RETURN "MP_WHOUSE_HT1" BREAK
|
||
CASE ciW_La_Mesa_1 RETURN "MP_WHOUSE_HT2" BREAK
|
||
CASE ciW_Rancho_1 RETURN "MP_WHOUSE_HT3" BREAK
|
||
CASE ciW_West_Vinewood_1 RETURN "MP_WHOUSE_HT4" BREAK
|
||
CASE ciW_LSIA_1 RETURN "MP_WHOUSE_HT5" BREAK
|
||
CASE ciW_Del_Perro_1 RETURN "MP_WHOUSE_HT6" BREAK
|
||
CASE ciW_LSIA_2 RETURN "MP_WHOUSE_HT7" BREAK
|
||
CASE ciW_Elysian_Island_1 RETURN "MP_WHOUSE_HT8" BREAK
|
||
CASE ciW_El_Burro_Heights_1 RETURN "MP_WHOUSE_HT9" BREAK
|
||
CASE ciW_Elysian_Island_3 RETURN "MP_WHOUSE_HT10" BREAK
|
||
CASE ciW_La_Mesa_2 RETURN "MP_WHOUSE_HT11" BREAK
|
||
CASE ciW_Maze_Bank_Arena_1 RETURN "MP_WHOUSE_HT12" BREAK
|
||
CASE ciW_Strawberry_1 RETURN "MP_WHOUSE_HT13" BREAK
|
||
CASE ciW_Downtown_Vinewood_1 RETURN "MP_WHOUSE_HT14" BREAK
|
||
CASE ciW_La_Mesa_3 RETURN "MP_WHOUSE_HT15" BREAK
|
||
CASE ciW_La_Mesa_4 RETURN "MP_WHOUSE_HT16" BREAK
|
||
CASE ciW_Cypress_Flats_2 RETURN "MP_WHOUSE_HT17" BREAK
|
||
CASE ciW_Cypress_Flats_3 RETURN "MP_WHOUSE_HT18" BREAK
|
||
CASE ciW_Vinewood_1 RETURN "MP_WHOUSE_HT19" BREAK
|
||
CASE ciW_Rancho_2 RETURN "MP_WHOUSE_HT20" BREAK
|
||
CASE ciW_Banning_1 RETURN "MP_WHOUSE_HT21" BREAK
|
||
ENDSWITCH
|
||
|
||
CDEBUG1LN(DEBUG_SAFEHOUSE, "[WHOUSE] GET_WAREHOUSE_NAME_FOR_APP: ", iWarehouse, " valid warehouse found. Returning: empty name")
|
||
RETURN ""
|
||
ENDFUNC
|
||
|
||
PROC SETUP_SPECIAL_CARGO_WAREHOUSE_LIST_OVERLAY()
|
||
|
||
CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
|
||
INT i
|
||
INT iOwnedWHCount = GET_COUNT_OF_WAREHOUSES_OWNED()
|
||
|
||
REPEAT ciMaxOwnedWarehouses i
|
||
|
||
INT iWarehouseID = ciW_Invalid
|
||
TEXT_LABEL_15 tlWarehouseName = ""
|
||
TEXT_LABEL_15 tlWarehouseNameSub = "" //Duplicate string for localised languages
|
||
BOOL bAvailable = (iOwnedWHCount > i)
|
||
|
||
IF bAvailable
|
||
iWarehouseID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(i)
|
||
//Warehouse name
|
||
tlWarehouseName = GET_WAREHOUSE_NAME(iWarehouseID)
|
||
tlWarehouseNameSub = GET_WAREHOUSE_NAME_FOR_APP(iWarehouseID)
|
||
|
||
//Do we have the capacity to store a shipment of this size?
|
||
IF GET_WAREHOUSE_REMAINING_CAPACITY(iWarehouseID) < ENUM_TO_INT(eSelectedShipmentSize)
|
||
bAvailable = FALSE
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SC_FULL, i)
|
||
ENDIF
|
||
ELSE
|
||
//We don't own a warehouse in this slot so hide it
|
||
BREAKLOOP
|
||
ENDIF
|
||
|
||
//Description text label - Based on the selected shipment size
|
||
TEXT_LABEL_15 tlDesc = "HT_SCW_D"
|
||
tlDesc += (ENUM_TO_INT(eSelectedShipmentSize) - 1)
|
||
|
||
TEXT_LABEL_23 tlDescSub = GET_NC_APP_CONTRABAND_TYPE_LABEL_FOR_SECURO_APP(eActiveContrabandType)
|
||
TEXT_LABEL_23 tlDescSub2
|
||
|
||
//Tootltip description for a special shipment
|
||
IF eSelectedShipmentSize = CONTRABAND_SMALL
|
||
AND NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
tlDesc = "HT_SCW_D3"
|
||
tlDescSub = GET_CONTRABAND_WAREHOUSE_SIZE_TEXT_LABEL(GET_WAREHOUSE_SIZE(iWarehouseID))
|
||
ELSE
|
||
tlDescSub2 = GET_CONTRABAND_WAREHOUSE_SIZE_TEXT_LABEL(GET_WAREHOUSE_SIZE(iWarehouseID))
|
||
ENDIF
|
||
|
||
INT buyTimeRem = GET_CONTRABAND_BUY_COOLDOWN(iWarehouseID)
|
||
INT iTimeFormat = ciTYPE_FORMAT_HIDDEN
|
||
|
||
//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
|
||
|
||
//Set the mission not available reason
|
||
IF buyTimeRem > 0
|
||
iTimeFormat = ciTYPE_FORMAT_TIME
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SC_ON_CD, i)
|
||
ENDIF
|
||
|
||
//Set the tooltip description string
|
||
IF NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i) != NC_TT_NONE
|
||
tlDesc = GET_TOOL_TIP_TEXT_FOR_MISSION_UNAVAILABLE(NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i), -1)
|
||
tlDescSub = ""
|
||
|
||
IF NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(i) = NC_TT_SC_FULL
|
||
tlDescSub = tlWarehouseNameSub
|
||
ENDIF
|
||
ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_JOB")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(i)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlWarehouseName)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(buyTimeRem)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTimeFormat) //Type format for param above: 0 = Hidden 1 = Cash 2 = Time
|
||
|
||
//Build the description string
|
||
IF IS_STRING_NULL_OR_EMPTY(tlDescSub)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlDesc)
|
||
ELSE
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(tlDesc)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlDescSub)
|
||
IF NOT IS_STRING_NULL_OR_EMPTY(tlDescSub2)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlDescSub2)
|
||
ENDIF
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDREPEAT
|
||
|
||
OPEN_JOB_LIST_OVERLAY(NC_SPECIAL_CARGO, "HT_SC_MTW")
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
PROC SETUP_SPECIAL_CARGO_JOB_OVERLAY()
|
||
CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
|
||
INT i
|
||
|
||
//Store the active contraband type at the time of opening of the overlay
|
||
eActiveContrabandType = g_eContrabandType
|
||
IF IS_SPECIAL_CONTRABAND_ITEM_ACTIVE()
|
||
SET_BIT(iBS, NC_BS_SPECIAL_ITEM_ACTIVE)
|
||
PRINTLN("<APP_NC> SETUP_SPECIAL_CARGO_JOB_OVERLAY - Open overlay Specail item active for type: ", eActiveContrabandType)
|
||
ELSE
|
||
PRINTLN("<APP_NC> SETUP_SPECIAL_CARGO_JOB_OVERLAY - Open overlay for type: ", eActiveContrabandType)
|
||
CLEAR_BIT(iBS, NC_BS_SPECIAL_ITEM_ACTIVE)
|
||
ENDIF
|
||
|
||
REPEAT CONTRABAND_LARGE i
|
||
TEXT_LABEL_23 tlContrabandType = GET_NC_APP_CONTRABAND_TYPE_LABEL_FOR_SECURO_APP(eActiveContrabandType)
|
||
|
||
CONTRABAND_SIZE eShipmentSize = INT_TO_ENUM(CONTRABAND_SIZE, (i + 1))
|
||
INT iShipmentCost = GET_CONTRABAND_SHIPMENT_COST(eShipmentSize)
|
||
INT iShipmentSaleCost = -1
|
||
|
||
IF eShipmentSize = CONTRABAND_SMALL
|
||
AND NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
CONTRABAND_SPECIAL_ITEM eItem = GET_SPECIAL_ITEM_FROM_CONTRABAND_TYPE(eActiveContrabandType)
|
||
IF IS_SPECIAL_CONTRABAND_ITEM_ON_SALE(eItem)
|
||
iShipmentSaleCost = GET_SPECIAL_CONTRABAND_ITEM_COST(eItem)
|
||
iShipmentCost = GET_SPECIAL_CONTRABAND_ITEM_BASE_COST(eItem)
|
||
PRINTLN("<APP_NC> Special Contraband shipment available and on sale!")
|
||
ELSE
|
||
iShipmentCost = GET_SPECIAL_CONTRABAND_ITEM_COST(eItem)
|
||
PRINTLN("<APP_NC> Special Contraband shipment available")
|
||
ENDIF
|
||
ELSE
|
||
IF IS_CONTRABAND_SHIPMENT_ON_SALE(eShipmentSize)
|
||
iShipmentSaleCost = iShipmentCost
|
||
iShipmentCost = GET_CONTRABAND_BASE_SHIPMENT_COST(eShipmentSize)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
//Mission name
|
||
TEXT_LABEL_15 tlShipmentSize = "HT_SC_T"
|
||
tlShipmentSize += i
|
||
|
||
//Description text label
|
||
TEXT_LABEL_15 tlDesc = "HT_SC_D"
|
||
tlDesc += i
|
||
|
||
IF eShipmentSize = CONTRABAND_SMALL
|
||
AND NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
tlShipmentSize = "HT_SC_T3"
|
||
tlDesc = "HT_SC_D3"
|
||
tlContrabandType = ""
|
||
ENDIF
|
||
|
||
BOOL bAvailable = DOES_PLAYER_OWN_A_WAREHOUSE(PLAYER_ID())
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_JOB")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(i)
|
||
|
||
IF IS_STRING_NULL_OR_EMPTY(tlContrabandType)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlShipmentSize)
|
||
ELSE
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(tlShipmentSize)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlContrabandType)
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iShipmentCost)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ciTYPE_FORMAT_CURRENCY) //Type format for param above: 0 = Hidden 1 = Cash 2 = Time
|
||
|
||
IF eShipmentSize = CONTRABAND_SMALL
|
||
AND NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlDesc)
|
||
ELSE
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(tlDesc)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlContrabandType)
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ENDIF
|
||
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iShipmentSaleCost)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDREPEAT
|
||
|
||
OPEN_JOB_LIST_OVERLAY(NC_SPECIAL_CARGO, "HT_SC_MT")
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
FUNC eSMUGGLED_GOODS_TYPE GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(INT iJobID)
|
||
SWITCH iJobID
|
||
CASE 0 RETURN eSGT_NARCOTICS
|
||
CASE 1 RETURN eSGT_CHEMICALS
|
||
CASE 2 RETURN eSGT_MEDICAL_SUPPLIES
|
||
CASE 3 RETURN eSGT_ANIMAL_MATERIALS
|
||
CASE 4 RETURN eSGT_ART_AND_ANTIQUES
|
||
CASE 5 RETURN eSGT_JEWELRY_AND_GEMSTONES
|
||
CASE 6 RETURN eSGT_TOBACCO_AND_ALCOHOL
|
||
CASE 7 RETURN eSGT_COUNTERFEIT_GOODS
|
||
CASE 8 RETURN eSGT_MIXED
|
||
ENDSWITCH
|
||
|
||
RETURN eSGT_INVALID
|
||
ENDFUNC
|
||
|
||
PROC SETUP_HANGAR_CARGO_JOB_OVERLAY()
|
||
CLEAR_JOB_LIST_OVERLAY_DATA()
|
||
|
||
INT i
|
||
|
||
REPEAT ciTOTAL_HANGAR_GOODS_TYPES i
|
||
//Mission name
|
||
TEXT_LABEL_15 tlName = "HT_AF_T"
|
||
tlName += i
|
||
//Second string for localisation purposes
|
||
TEXT_LABEL_15 tlNameL = "HT_AF_TD"
|
||
tlNameL += i
|
||
|
||
//Description text label
|
||
TEXT_LABEL_15 tlDesc = "HT_AF_D"
|
||
tlDesc += i
|
||
|
||
BOOL bAvailable = DOES_PLAYER_OWN_A_HANGER(PLAYER_ID()) AND HAS_PLAYER_COMPLETED_HANGAR_SETUP(PLAYER_ID()) AND NOT IS_PLAYERS_HANGAR_CONTRABAND_STORAGE_FULL(PLAYER_ID())
|
||
|
||
INT iTimeFormat = ciTYPE_FORMAT_HIDDEN
|
||
INT iBuyTimeRem = 0
|
||
eSMUGGLED_GOODS_TYPE eType = GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(i)
|
||
INT iTypeIndex = ENUM_TO_INT(eType)
|
||
|
||
IF eType != eSGT_MIXED
|
||
AND SMUGGLER_HAS_STEAL_COOLDOWN_STARTED(eType)
|
||
iBuyTimeRem = GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sSmugglerCDVars.stStealCoolDownTimer[iTypeIndex], g_sSmugglerCDVars.iStealCooldownTimes[iTypeIndex])
|
||
ENDIF
|
||
|
||
IF iBuyTimeRem > 0
|
||
iTimeFormat = ciTYPE_FORMAT_TIME
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SMUG_CD, i)
|
||
tlDesc = "HT_JOB_CD_3"
|
||
ELIF IS_PLAYERS_HANGAR_CONTRABAND_STORAGE_FULL(PLAYER_ID())
|
||
tlDesc = "HT_AF_P1_D2"
|
||
NC_APP_SET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(NC_TT_SMUG_FULL, i)
|
||
ENDIF
|
||
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ADD_JOB")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(i)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlName)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iBuyTimeRem)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTimeFormat)
|
||
IF iBuyTimeRem <= 0
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(tlDesc)
|
||
ELSE
|
||
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(tlDesc)
|
||
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(tlNameL)
|
||
END_TEXT_COMMAND_SCALEFORM_STRING()
|
||
ENDIF
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bAvailable)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDREPEAT
|
||
|
||
OPEN_JOB_LIST_OVERLAY(NC_AIR_FREIGHT, "HT_AF_MT")
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
ENDPROC
|
||
|
||
//╒═════════════════════════════════════════════════════════════════════════════╕
|
||
//╞═════════════════════════════╡ Input handling ╞══════════════════════════════╡
|
||
//╘═════════════════════════════════════════════════════════════════════════════╛
|
||
|
||
PROC HANDLE_CANCEL_BUTTON_PRESS()
|
||
|
||
IF NC_APP_IS_OVERLAY_OPEN()
|
||
//Hide the currently shown overlay
|
||
HIDE_OVERLAY()
|
||
ELSE
|
||
IF IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
|
||
CLEAR_BIT(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
//Go back to the special cargo shipment size overlay
|
||
SETUP_SPECIAL_CARGO_JOB_OVERLAY()
|
||
|
||
ELIF IS_JOB_OVERLAY_VISIBLE()
|
||
|
||
//Go back to the home page
|
||
CLOSE_JOB_OVERLAY()
|
||
|
||
ELIF eCurrentPage = PAGE_HOME
|
||
PRINTLN("<APP_NC> [APP_CLOSE] Back pressed not closing the app. page: ", eCurrentPage)
|
||
SCRIPT_CLEANUP()
|
||
EXIT
|
||
ELSE
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Cancel", "DLC_GR_MOC_Computer_Sounds")
|
||
ENDPROC
|
||
|
||
PROC PASS_INPUTS_TO_SCALEFORM()
|
||
|
||
// bCursorInputProcessed = FALSE
|
||
#IF IS_DEBUG_BUILD
|
||
CLEAR_BIT(iBS, NC_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
||
#ENDIF
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LB)))
|
||
ENDIF
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RB)))
|
||
ENDIF
|
||
|
||
IF IS_USING_CURSOR(FRONTEND_CONTROL)
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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(ciINPUT_KEYBOARD_UP)))
|
||
ENDIF
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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(ciINPUT_KEYBOARD_DOWN)))
|
||
ENDIF
|
||
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(ciINPUT_KEYBOARD_DOWN)))
|
||
ENDIF
|
||
|
||
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_RELEASE_EVENT", TO_FLOAT(ENUM_TO_INT(ciINPUT_KEYBOARD_UP)))
|
||
ENDIF
|
||
ELSE
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
ENDIF
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
||
HANDLE_CANCEL_BUTTON_PRESS()
|
||
ENDIF
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
||
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_Y)))
|
||
ENDIF
|
||
|
||
IF IS_USING_CURSOR(FRONTEND_CONTROL)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_CURSOR_X))
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_CURSOR_Y))
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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_FRONTEND_ACCEPT)))
|
||
ENDIf
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
||
HANDLE_CANCEL_BUTTON_PRESS()
|
||
ENDIf
|
||
|
||
ELSE
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDIF
|
||
ENDIF
|
||
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
|
||
SET_INPUT_EXCLUSIVE_AND_ENABLED(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
|
||
|
||
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,"<APP_NC> EXITING WEBSITE for Triangle press")
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
ENDPROC
|
||
|
||
//╒═════════════════════════════════════════════════════════════════════════════╕
|
||
//╞════════════════════════╡ Mission Launch Functions ╞═════════════════════════╡
|
||
//╘═════════════════════════════════════════════════════════════════════════════╛
|
||
|
||
FUNC BOOL BUY_SPECIAL_CARGO_MISSION(INT iWarehouseID, CONTRABAND_SIZE ShipmentSize, BOOL bSpecialItem, CONTRABAND_TYPE securoContraType, INT iMissionToLaunch)
|
||
INT iResultSlot = GET_SAVE_SLOT_FOR_WAREHOUSE(iWarehouseID)
|
||
|
||
TEXT_LABEL_15 tl_15ContrabandName = GET_WAREHOUSE_NAME(iWarehouseID)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: trying to purchase CONTRABAND #", iWarehouseID, " \"", tl_15ContrabandName, "\"")
|
||
|
||
BOOL bSpeialItemSelected = FALSE
|
||
INT iShipmentCost = GET_CONTRABAND_SHIPMENT_COST(ShipmentSize)
|
||
|
||
IF bSpecialItem
|
||
AND ShipmentSize = CONTRABAND_SMALL
|
||
iShipmentCost = GET_SPECIAL_CONTRABAND_ITEM_COST(GET_SPECIAL_ITEM_FROM_CONTRABAND_TYPE(securoContraType))
|
||
bSpeialItemSelected = TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: purchase valid, attempting index #", iWarehouseID)
|
||
|
||
//is it a debit or refund
|
||
IF iShipmentCost > 0
|
||
//do they have enough money
|
||
IF NOT NETWORK_CAN_SPEND_MONEY(iShipmentCost, FALSE, TRUE, FALSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: purchase failed, player doesn't have sufficient cash")
|
||
//TRIGGER_BROWSER_NAG_SCREEN(GET_HASH_KEY(tl_15ContrabandName), iShipmentCost)
|
||
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable", "DLC_GR_MOC_Computer_Sounds")
|
||
RETURN FALSE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
// Check that mission is available
|
||
IF NOT CAN_PLAYER_LAUNCH_MISSION(iMissionToLaunch)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: purchase failed, CAN_PLAYER_LAUNCH_MISSION = FALSE")
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable", "DLC_GR_MOC_Computer_Sounds")
|
||
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
|
||
*/
|
||
|
||
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)
|
||
|
||
INT iProcessSuccess = -1
|
||
INT iTransactionStatus = SHOP_BASKET_STAGE_ADD
|
||
BOOL bProcessingBasket = TRUE
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR CONTRABAND
|
||
WHILE PROCESSING_SECUROSERVE_CONTRABAND_BASKET(iProcessSuccess, iShipmentCost, iResultSlot, CATEGORY_INVENTORY_CONTRABAND_MISSION, NET_SHOP_ACTION_BUY_CONTRABAND_MISSION, iItemId, iInventoryKey, bProcessingBasket, iTransactionStatus)
|
||
RENDER_NC_APP()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
SWITCH iProcessSuccess
|
||
CASE 0
|
||
CWARNINGLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable", "DLC_GR_MOC_Computer_Sounds")
|
||
|
||
RETURN FALSE
|
||
BREAK
|
||
CASE 2
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: 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, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: unknown iProcessSuccess: \"", iProcessSuccess, "\"")
|
||
BREAK
|
||
ENDSWITCH
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: final:$", iShipmentCost)
|
||
|
||
IF iShipmentCost >= 0
|
||
AND (iShipmentCost = 0
|
||
OR (iShipmentCost > 0 AND (USE_SERVER_TRANSACTIONS() OR NETWORK_CAN_SPEND_MONEY(iShipmentCost,FALSE,TRUE,FALSE))))
|
||
IF iShipmentCost > 0
|
||
INCREMENT_BY_MP_INT_PLAYER_STAT(MPPLY_INGAMESTORE_MONEYSPENT, iShipmentCost)
|
||
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(iShipmentCost, iWarehouseID, GET_HASH_KEY(tl_15ContrabandName), FALSE, TRUE)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> BUY_SPECIAL_CARGO_MISSION: Bought contraband ", tl_15ContrabandName, " for $", iShipmentCost)
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
DELETE_CASH_TRANSACTION(GET_BASKET_TRANSACTION_SCRIPT_INDEX())
|
||
ENDIF
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL DO_HANGAR_SOURCE_CARGO_LAUNCH_MISSION_TRANSACTION()
|
||
|
||
IF NOT USE_SERVER_TRANSACTIONS()
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CONTRABAND_TRANSACTION_STATE eResult
|
||
|
||
WHILE NOT PROCESS_TRANSACTION_FOR_HANGAR_CONTRABAND_MISSION(eResult, FALSE)
|
||
RENDER_NC_APP()
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
RENDER_NC_APP()
|
||
|
||
RETURN (eResult = CONTRABAND_TRANSACTION_STATE_SUCCESS)
|
||
ENDFUNC
|
||
|
||
FUNC BOOL DO_FACTORY_LAUNCH_MISSION_TRANSACTION(FACTORY_ID eFactory, INT iMissionID)
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> DO_FACTORY_LAUNCH_MISSION_TRANSACTION: trying to launch mission for bunker: ", GET_OWNED_BUNKER(PLAYER_ID()))
|
||
|
||
// Check that mission is available and the player is in an ok state to launch
|
||
IF NOT CAN_PLAYER_LAUNCH_MISSION(iMissionID)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> DO_FACTORY_LAUNCH_MISSION_TRANSACTION: purchase failed, mission not available")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
CONTRABAND_TRANSACTION_STATE eTransactionState
|
||
INT iSaveSlot = GET_SAVE_SLOT_FOR_FACTORY(eFactory)
|
||
|
||
IF USE_SERVER_TRANSACTIONS()
|
||
|
||
/*
|
||
BuyContrabandMission
|
||
This is used to fill/set the CATEGORY_INVENTORY_CONTRABAND_MISSION
|
||
Basket will be < CATEGORY_INVENTORY_CONTRABAND_MISSION, CATEGORY_CONTRABAND_MISSION, price>
|
||
Validation must make sure the player owns the factory this CATEGORY_INVENTORY_CONTRABAND_MISSION is associated with
|
||
*/
|
||
|
||
INT iItemId = GET_FACTORY_MISSION_KEY_FOR_CATALOGUE(FALSE)
|
||
|
||
///////////////////////////////////////////
|
||
/// TRANSACTION FOR CONTRABAND
|
||
WHILE NOT PROCESS_TRANSACTION_FOR_CONTRABAND_MISSION(iSaveSlot, iItemId, eTransactionState)
|
||
WAIT(0)
|
||
RENDER_NC_APP()
|
||
ENDWHILE
|
||
|
||
RENDER_NC_APP()
|
||
|
||
IF eTransactionState = CONTRABAND_TRANSACTION_STATE_FAILED
|
||
CWARNINGLN(DEBUG_INTERNET, "<APP_NC> DO_FACTORY_LAUNCH_MISSION_TRANSACTION: failed to process transaction")
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable", "DLC_GR_MOC_Computer_Sounds")
|
||
|
||
NC_APP_SET_MISSION_LAUNCH_FAIL_REASON("BKR_TF_R6")
|
||
|
||
RETURN FALSE
|
||
ELIF eTransactionState = CONTRABAND_TRANSACTION_STATE_SUCCESS
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> DO_FACTORY_LAUNCH_MISSION_TRANSACTION: success!!")
|
||
SET_LAST_PURCHASED_FACTORY_MISSION_CATALOGUE_KEY(iItemId)
|
||
|
||
ENDIF
|
||
ELSE
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> DO_FACTORY_LAUNCH_MISSION_TRANSACTION: ignore NETWORK_REQUEST_BASKET_TRANSACTION")
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL CHECK_MP_VEH_STEAL_MISSION_AVAILABILITY()
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> 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, "<APP_NC> 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, "<APP_NC> LAUNCH_MP_VEH_STEAL_FROM_SECUROSERV: purchase failed, player is critical")
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL LAUNCH_IE_STEAL_MISSION()
|
||
|
||
//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, "<APP_NC>[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 CHECK_MP_VEH_STEAL_MISSION_AVAILABILITY()
|
||
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()
|
||
|
||
RETURN TRUE
|
||
ELSE
|
||
#IF IS_DEBUG_BUILD
|
||
IF GET_ACTIVE_IE_STEAL_MISSION_VEHICLE() = IE_VEH_INVALID
|
||
CASSERTLN(DEBUG_INTERNET, "<APP_NC> LAUNCH_IE_STEAL_MISSION Still trying to launch a mission with an invalid vehicle. This will not work!")
|
||
ENDIF
|
||
#ENDIF
|
||
CDEBUG1LN(DEBUG_INTERNET, "<APP_NC>[Mission_Launch] LAUNCH_IE_STEAL_MISSION Couldn't activate warehouse dropoff!")
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
PROC SCALEFORM_UPDATE_COOLODOWN_TIMER(INT iIndex, INT iUpdatedTime)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_COOLDOWN")
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iIndex)
|
||
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iUpdatedTime)
|
||
END_SCALEFORM_MOVIE_METHOD()
|
||
ENDPROC
|
||
|
||
PROC UPDATE_JOB_OVERLAY_COOLDOWN_TIMERS(NC_MISSION_TYPE eMissionType)
|
||
INT i, iCooldownTime
|
||
NC_TT_JOB_NA_REASON eCooldownReason
|
||
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK
|
||
REPEAT MAX_WORKS_JOBS i
|
||
iCooldownTime = GET_BOSS_WORK_OR_CHALLENGE_COOLDOWN_TIME_REMAINING(GET_FMMC_ID_FROM_JOB_ID(i))
|
||
|
||
IF IS_BOSS_WORK_OR_CHALLENGE_TIMER_RUNNING(GET_FMMC_ID_FROM_JOB_ID(i), eCooldownReason)
|
||
SCALEFORM_UPDATE_COOLODOWN_TIMER(i, iCooldownTime)
|
||
ENDIF
|
||
ENDREPEAT
|
||
BREAK
|
||
CASE NC_SPECIAL_CARGO
|
||
REPEAT GET_COUNT_OF_WAREHOUSES_OWNED() i
|
||
iCooldownTime = GET_CONTRABAND_BUY_COOLDOWN(GET_WAREHOUSE_ID_FOR_SAVE_SLOT(i))
|
||
|
||
IF iCooldownTime <= 0
|
||
IF NOT GB_HAS_BUY_MISSION_TIMER_EXPIRED()
|
||
iCooldownTime = 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 iCooldownTime >= 0
|
||
SCALEFORM_UPDATE_COOLODOWN_TIMER(i, iCooldownTime)
|
||
ENDIF
|
||
|
||
ENDREPEAT
|
||
BREAK
|
||
CASE NC_AIR_FREIGHT
|
||
REPEAT (ciTOTAL_HANGAR_GOODS_TYPES - 1) i
|
||
IF SMUGGLER_HAS_STEAL_COOLDOWN_STARTED(GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(i))
|
||
INT iTypeIndex
|
||
iTypeIndex = ENUM_TO_INT(GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(i))
|
||
iCooldownTime = GET_TIME_REMAINING_FROM_SCRIPT_TIMER_IN_SECONDS(g_sSmugglerCDVars.stStealCoolDownTimer[iTypeIndex], g_sSmugglerCDVars.iStealCooldownTimes[iTypeIndex])
|
||
ELSE
|
||
iCooldownTime = 0
|
||
ENDIF
|
||
|
||
IF iCooldownTime >= 0
|
||
SCALEFORM_UPDATE_COOLODOWN_TIMER(i, iCooldownTime)
|
||
ENDIF
|
||
ENDREPEAT
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
PROC UPDATE_JOB_OVERLAY_MISSION_LOCKED_REASONS(NC_MISSION_TYPE eMissionType)
|
||
INT iFMMCID, iSlot, iWarehouseID, buyTimeRem
|
||
BOOL bUpdate
|
||
NC_TT_JOB_NA_REASON eCooldownReason
|
||
NC_TT_JOB_NA_REASON eNewCooldownReason
|
||
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK
|
||
IF iJobUpdateStaggeredLoop = MAX_WORKS_JOBS
|
||
iJobUpdateStaggeredLoop = 0
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
ELSE
|
||
iFMMCID = GET_FMMC_ID_FROM_JOB_ID(iJobUpdateStaggeredLoop)
|
||
eCooldownReason = NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop)
|
||
|
||
//Get the current unavailable reason
|
||
IS_NC_BOSS_WORK_AVAILABLE(iJobUpdateStaggeredLoop, TRUE)
|
||
|
||
IF IS_BOSS_WORK_OR_CHALLENGE_TIMER_RUNNING(iFMMCID, eNewCooldownReason)
|
||
IF eNewCooldownReason != eCooldownReason
|
||
bUpdate = TRUE
|
||
ENDIF
|
||
ELIF NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != eCooldownReason
|
||
bUpdate = TRUE
|
||
ENDIF
|
||
|
||
IF bUpdate
|
||
SETUP_TRUCK_JOB_OVERLAY()
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
iJobUpdateStaggeredLoop = 0
|
||
ELSE
|
||
iJobUpdateStaggeredLoop ++
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_DRUG_CARGO
|
||
IF iJobUpdateStaggeredLoop = ENUM_TO_INT(FACTORY_TYPE_WEAPONS)
|
||
iJobUpdateStaggeredLoop = 0
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
ELSE
|
||
eCooldownReason = NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop)
|
||
|
||
FACTORY_TYPE eType
|
||
FACTORY_ID eFracotryID
|
||
|
||
eType = INT_TO_ENUM(FACTORY_TYPE, iJobUpdateStaggeredLoop)
|
||
|
||
IF DOES_PLAYER_OWN_FACTORY_OF_TYPE(PLAYER_ID(), eType)
|
||
iSlot = GET_SAVE_SLOT_OF_OWNED_FACTORY_TYPE(PLAYER_ID(), eType)
|
||
eFracotryID = GET_FACTORY_ID_FROM_FACTORY_SLOT(PLAYER_ID(), iSlot)
|
||
SET_BIKER_MISSION_UNAVAILABLE_REASON(eFracotryID, iSlot, iJobUpdateStaggeredLoop)
|
||
|
||
IF NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != eCooldownReason
|
||
bUpdate = TRUE
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bUpdate
|
||
SETUP_BIKER_JOB_OVERLAY()
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
iJobUpdateStaggeredLoop = 0
|
||
ELSE
|
||
iJobUpdateStaggeredLoop ++
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_AIR_FREIGHT
|
||
IF iJobUpdateStaggeredLoop =ciTOTAL_HANGAR_GOODS_TYPES
|
||
iJobUpdateStaggeredLoop = 0
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
ELSE
|
||
eSMUGGLED_GOODS_TYPE eType
|
||
|
||
eType = GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(iJobUpdateStaggeredLoop)
|
||
|
||
IF eType != eSGT_MIXED
|
||
IF SMUGGLER_HAS_STEAL_COOLDOWN_STARTED(eType)
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != NC_TT_SMUG_CD)
|
||
ELSE
|
||
IF IS_PLAYERS_HANGAR_CONTRABAND_STORAGE_FULL(PLAYER_ID())
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != NC_TT_SMUG_FULL)
|
||
ELSE
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != NC_TT_NONE)
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != NC_TT_SMUG_FULL)
|
||
ENDIF
|
||
|
||
IF bUpdate
|
||
SETUP_HANGAR_CARGO_JOB_OVERLAY()
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
iJobUpdateStaggeredLoop = 0
|
||
ELSE
|
||
iJobUpdateStaggeredLoop ++
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
CASE NC_SPECIAL_CARGO
|
||
IF IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
IF iJobUpdateStaggeredLoop = GET_COUNT_OF_WAREHOUSES_OWNED()
|
||
iJobUpdateStaggeredLoop = 0
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
ELSE
|
||
iWarehouseID = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iJobUpdateStaggeredLoop)
|
||
|
||
IF GET_WAREHOUSE_REMAINING_CAPACITY(iWarehouseID) < ENUM_TO_INT(eSelectedShipmentSize)
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) != NC_TT_SC_FULL)
|
||
ELSE
|
||
bUpdate = (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) = NC_TT_SC_FULL)
|
||
ENDIF
|
||
|
||
IF NOT bUpdate
|
||
buyTimeRem = GET_CONTRABAND_BUY_COOLDOWN(iWarehouseID)
|
||
|
||
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 (NC_APP_GET_TOOL_TIP_REASON_FOR_MISSION_WITH_INDEX(iJobUpdateStaggeredLoop) = NC_TT_SC_ON_CD)
|
||
bUpdate = (buyTimeRem <= 0)
|
||
ELSE
|
||
bUpdate = (buyTimeRem > 0)
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bUpdate
|
||
SETUP_SPECIAL_CARGO_WAREHOUSE_LIST_OVERLAY()
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
iJobUpdateStaggeredLoop = 0
|
||
ELSE
|
||
iJobUpdateStaggeredLoop ++
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
BREAK
|
||
DEFAULT
|
||
iJobUpdateStaggeredLoop = 0
|
||
REINIT_NET_TIMER(stUpdateLockReasonsTimer)
|
||
BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
PROC UPDATE_JOB_OVERLAY_DATA(NC_MISSION_TYPE eMissionType)
|
||
IF IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
IF NOT NC_APP_IS_OVERLAY_OPEN()
|
||
IF HAS_NET_TIMER_EXPIRED(stUpdateLockReasonsTimer, 1000)
|
||
UPDATE_JOB_OVERLAY_MISSION_LOCKED_REASONS(eMissionType)
|
||
ENDIF
|
||
|
||
IF HAS_NET_TIMER_EXPIRED(stUpdateCDTimer, 500)
|
||
UPDATE_JOB_OVERLAY_COOLDOWN_TIMERS(eMissionType)
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
RESET_NET_TIMER(stUpdateLockReasonsTimer)
|
||
iJobUpdateStaggeredLoop = 0
|
||
|
||
IF NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
OR IS_BIT_SET(iBS, NC_BS_IE_COOLDOWN_RUNNING)
|
||
IF HAS_NET_TIMER_EXPIRED(stUpdateCDTimer, 500)
|
||
RESET_NET_TIMER(stUpdateCDTimer)
|
||
UPDATE_PRIMARY_MISSION_WITH_ID(ENUM_TO_INT(NC_VEHICLE_CARGO))
|
||
|
||
IF GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
CLEAR_BIT(iBS, NC_BS_IE_COOLDOWN_RUNNING)
|
||
ELSE
|
||
SET_BIT(iBS, NC_BS_IE_COOLDOWN_RUNNING)
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
RESET_NET_TIMER(stUpdateCDTimer)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC LAUNCH_MISSION(INT iMissionID)
|
||
|
||
IF iMissionID = FMMC_TYPE_GB_CONTRABAND_BUY
|
||
BOOL bActivateSpecialItemMission = FALSE
|
||
|
||
IF NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO()
|
||
AND eSelectedShipmentSize = CONTRABAND_SMALL
|
||
bActivateSpecialItemMission = TRUE
|
||
ENDIF
|
||
|
||
GB_BOSS_REQUEST_CONTRABAND_MISSION_LAUNCH_FROM_SERVER(iMissionID, iSelectedSCWarehouse, eSelectedShipmentSize, eActiveContrabandType, bActivateSpecialItemMission)
|
||
ELIF iMissionID = FMMC_TYPE_SMUGGLER_BUY
|
||
IF eSelectedHangarGoodsType = eSGT_MIXED
|
||
PRINTLN("<APP_NC> LAUNCH_MISSION Mixed type not supported. Choosing random new type")
|
||
eSelectedHangarGoodsType = INT_TO_ENUM(eSMUGGLED_GOODS_TYPE, GET_RANDOM_INT_IN_RANGE(0, ENUM_TO_INT(eSGT_MIXED)))
|
||
GB_SET_GLOBAL_NON_BD_BIT0(eGB_GLOBAL_NON_BD_BITSET_0_LAUNCHED_SMUG_MISSION_WHIT_ANY_TYPE)
|
||
ELSE
|
||
GB_CLEAR_GLOBAL_NON_BD_BIT0(eGB_GLOBAL_NON_BD_BITSET_0_LAUNCHED_SMUG_MISSION_WHIT_ANY_TYPE)
|
||
ENDIF
|
||
|
||
PRINTLN("<APP_NC> LAUNCH_MISSION Requesting mission launch of type: ", iMissionID, " with goods type: ", DEBUG_GET_SMUGGLED_GOODS_TYPE_NAME(eSelectedHangarGoodsType))
|
||
GB_BOSS_REQUEST_SMUGGLER_MISSION_LAUNCH_FROM_SERVER(iMissionID, FREEMODE_DELIVERY_LOCATION_CITY, eSelectedHangarGoodsType)
|
||
ELIF iMissionID = FMMC_TYPE_GUNRUNNING_BUY
|
||
GB_BOSS_REQUEST_GUNRUNNING_MISSION_LAUNCH_FROM_SERVER(iMissionID)
|
||
ELIF iMissionID = FMMC_TYPE_BIKER_BUY
|
||
GB_BOSS_REQUEST_ILLICIT_GOODS_MISSION_LAUNCH_FROM_SERVER(iMissionID, eSelectedFactory)
|
||
ELSE
|
||
GB_BOSS_REQUEST_MISSION_LAUNCH_FROM_SERVER(iMissionID)
|
||
ENDIF
|
||
|
||
g_bLaunchedMissionFrmSMPLIntLaptop = TRUE
|
||
SCRIPT_CLEANUP(DEFAULT, FALSE)
|
||
ENDPROC
|
||
|
||
//╒═════════════════════════════════════════════════════════════════════════════╕
|
||
//╞══════════════════════════╡ Input result Handling ╞══════════════════════════╡
|
||
//╘═════════════════════════════════════════════════════════════════════════════╛
|
||
|
||
PROC RUN_BOSS_WORK_MISSION_LAUNCH_CEHCKS(INT iJobID)
|
||
INT iFMMCID = GET_FMMC_ID_FROM_JOB_ID(iJobID)
|
||
|
||
IF NOT IS_NC_BOSS_WORK_AVAILABLE(iJobID)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
ELIF NOT CAN_PLAYER_LAUNCH_BOSS_WORK(iFMMCID)
|
||
SHOW_OVERLAY("HT_BW_LT", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
TEXT_LABEL_15 tlJob = "HT_BW_T"
|
||
tlJob += iJobID
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_L0", "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_HACKER_WORKS_MISSION_LAUNCH, DEFAULT, DEFAULT, tlJob)
|
||
SET_FMMC_MISSION_ID(iFMMCID)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_AIR_FREIGHT_MISSION_LAUNCH_CEHCKS(INT iJobID)
|
||
eSelectedHangarGoodsType = GET_SMUGGLED_GOOD_TYPE_FOR_APP_INDEX(iJobID)
|
||
|
||
IF IS_PLAYERS_HANGAR_CONTRABAND_STORAGE_FULL(PLAYER_ID())
|
||
|
||
//SHOW_OVERLAY("HT_AF_P1", "HT_AF_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE) //FAIL: We have 100% supplies already
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF eSelectedHangarGoodsType != eSGT_MIXED
|
||
AND SMUGGLER_HAS_STEAL_COOLDOWN_STARTED(eSelectedHangarGoodsType)
|
||
|
||
//SHOW_OVERLAY("HT_AF_P1", "HT_AF_P1_D3", "OR_OVRLY_OK", "", TRUE, FALSE) //FAIL: We are on cooldown for this type
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF NOT CAN_PLAYER_LAUNCH_MISSION(FMMC_TYPE_SMUGGLER_BUY)
|
||
|
||
SHOW_OVERLAY("HT_AF_P1", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE) //FAIL: Not available
|
||
|
||
ELSE
|
||
|
||
TEXT_LABEL_15 tlConfirm = "HAPP_STEAL_C1"
|
||
TEXT_LABEL_15 tlConfirmSubString = ""
|
||
|
||
IF eSelectedHangarGoodsType != eSGT_MIXED
|
||
tlConfirm = "HAPP_STEAL_C0"
|
||
tlConfirmSubString = GET_HANGAR_STOCK_TYPE_TEXT_LABEL(eSelectedHangarGoodsType)
|
||
ENDIF
|
||
|
||
SHOW_OVERLAY("HT_AF_P1", tlConfirm, "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_AIR_FREIGHT_MISSION_LAUNCH, DEFAULT, DEFAULT, tlConfirmSubString)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_SPECIAL_CARGO_MISSION_LAUNCH_CEHCKS(INT iSelectedOption)
|
||
IF IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
|
||
iSelectedSCWarehouse = GET_WAREHOUSE_ID_FOR_SAVE_SLOT(iSelectedOption)
|
||
|
||
IF NOT DOES_PLAYER_OWN_WAREHOUSE_THAT_HAS_SPACE_TO_STORE_A_SHIPMENT_OF_SIZE(eSelectedShipmentSize)
|
||
//SHOW_OVERLAY("HT_SC_P1", "HT_SC_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
ELIF IS_CONTRABAND_BUY_COOLDOWN_ACTIVE(iSelectedSCWarehouse)
|
||
//SHOW_OVERLAY("HT_SC_P1", "HT_SC_P1_D3", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
ELIF NOT CAN_PLAYER_LAUNCH_MISSION(FMMC_TYPE_GB_CONTRABAND_BUY)
|
||
SHOW_OVERLAY("HT_SC_P1", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
TEXT_LABEL_15 tlContrabandLabel = BUILD_BUY_MISSION_CONFIRM_STRING(eActiveContrabandType, eSelectedShipmentSize, NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO())
|
||
|
||
SHOW_OVERLAY("HT_SC_P2", tlContrabandLabel, "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_SPECIAL_CARGO_MISSION_LAUNCH)
|
||
ENDIF
|
||
ELSE
|
||
eSelectedShipmentSize = INT_TO_ENUM(CONTRABAND_SIZE, (iSelectedOption + 1))
|
||
|
||
IF NOT DOES_PLAYER_OWN_A_WAREHOUSE(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_SC_P1", "HT_SC_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF NOT DOES_PLAYER_OWN_WAREHOUSE_THAT_HAS_SPACE_TO_STORE_A_SHIPMENT_OF_SIZE(eSelectedShipmentSize)
|
||
SHOW_OVERLAY("HT_SC_P1", "HT_SC_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SET_BIT(iBS, NC_BS_JOB_OVERLAY_SELECTED_SHIPMENT_SIZE)
|
||
|
||
PRINTLN("<APP_NC> RUN_SPECIAL_CARGO_MISSION_LAUNCH_CEHCKS - Selected shipment size ", eSelectedShipmentSize, " calling SETUP_SPECIAL_CARGO_WAREHOUSE_LIST_OVERLAY")
|
||
SETUP_SPECIAL_CARGO_WAREHOUSE_LIST_OVERLAY()
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_VEHICLE_CARGO_MISSION_LAUNCH_CEHCKS()
|
||
|
||
IF NOT GB_IS_BOSS_MISSION_AVAILABLE(PLAYER_ID(), FMMC_TYPE_VEHICLE_EXPORT_BUY, FALSE)
|
||
INT iFailReason = GB_GET_BOSS_MISSION_UNAVAILABLE_REASON(PLAYER_ID(), FMMC_TYPE_VEHICLE_EXPORT_BUY, FALSE)
|
||
|
||
IF iFailReason = GB_MU_REASON_BOSS_IS_ANIMAL
|
||
SHOW_OVERLAY("HT_VC_P1", "BKR_TF_R6", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
EXIT
|
||
ELIF iFailReason = GB_MU_REASON_GOON_IS_ANIMAL
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G3", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
|
||
EXIT
|
||
ELIF iFailReason = GB_MU_REASON_GOON_GAMBLING
|
||
IF GB_IS_PLAYER_BOSS_OF_A_BIKER_GANG(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G4", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF DOES_PLAYER_OWN_OFFICE(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G5", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_VC_P1", "GENERAL_MLF_G6", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
|
||
EXIT
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF NOT GB_HAS_IE_MISSION_COOLDOWN_TIMER_EXPIRED(VEV_EYE_IN_THE_SKY)
|
||
SHOW_OVERLAY("HT_VC_P1", "SEC_V_STEAL_F", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF IS_PLAYERS_IE_GARAGE_FULL(PLAYER_ID(), GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()))
|
||
SHOW_OVERLAY("HT_VC_P1", "HT_VC_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SHOW_OVERLAY("SEC_VEH_STEAL", "SEC_VEH_STEALQ", "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_VEHICLE_CARGO_MISSION_LAUNCH)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_WEAPONS_CARGO_MISSION_LAUNCH_CEHCKS()
|
||
IF NOT HAS_PLAYER_COMPLETED_FACTORY_SETUP_MISSION(PLAYER_ID(), GET_OWNED_BUNKER(PLAYER_ID()))
|
||
SHOW_OVERLAY("HT_GR_P1", "HT_GR_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF HAS_PLAYER_SUSPENDED_BUNKER_PRODUCTION()
|
||
SHOW_OVERLAY("HT_GR_P1", "OR_RESUP_RES", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF g_iMaterialsTotalForFactory[BUNKER_SAVE_SLOT] >= g_sMPTunables.iBIKER_RESUPPLY_LAUNCH_SUPPLIES_THRESHOLD //FAIL: We hav 100% supplies already
|
||
SHOW_OVERLAY("HT_GR_P1", "OR_MIS_NA_B", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF IS_PAID_RESUPPLY_TIMER_RUNNING(BUNKER_SAVE_SLOT) //FAIL: We have already paid for a resupply
|
||
SHOW_OVERLAY("HT_GR_P1", "OR_MIS_NA_C", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF NOT CAN_PLAYER_LAUNCH_MISSION(FMMC_TYPE_GUNRUNNING_BUY) //FAIL: Not available
|
||
SHOW_OVERLAY("HT_GR_P1", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_GR_P1", "BU_STEAL_SUP", "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_GUNRUNNING_MISSION_LAUNCH)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_DRUG_CARGO_MISSION_LAUNCH_CEHCKS(INT iJobID)
|
||
FACTORY_TYPE eFactoryType = INT_TO_ENUM(FACTORY_TYPE, iJobID)
|
||
|
||
IF DOES_PLAYER_OWN_FACTORY_OF_TYPE(PLAYER_ID(), eFactoryType)
|
||
eSelectedFactory = GET_FACTORY_ID_OF_OWNED_FACTORY_TYPE(PLAYER_ID(), eFactoryType)
|
||
INT iSaveSlot = GET_PLAYER_SAVE_SLOT_FOR_FACTORY(PLAYER_ID(), eSelectedFactory)
|
||
|
||
IF NOT HAS_PLAYER_COMPLETED_FACTORY_SETUP_MISSION(PLAYER_ID(), eSelectedFactory)
|
||
AND NOT IS_DELAY_PRODUCTION_TIMER_RUNNING(iSaveSlot)
|
||
|
||
// TEXT_LABEL_15 tlBusinessType = GET_FACTORY_TYPE_PROPERTY_LABEL(eFactoryType)
|
||
// SHOW_OVERLAY("HT_GR_P1", "HT_DW_P1_D5", "OR_OVRLY_OK", "", TRUE, FALSE, DEFAULT, DEFAULT, DEFAULT, tlBusinessType)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF HAS_PLAYER_SUSPENDED_BIKER_BUSINESS_PRODUCTION(PLAYER_ID(), eSelectedFactory)
|
||
|
||
// TEXT_LABEL_15 tlBusinessType = GET_FACTORY_TYPE_PROPERTY_LABEL(eFactoryType)
|
||
// SHOW_OVERLAY("HT_GR_P1", "HT_DW_P1_D6", "OR_OVRLY_OK", "", TRUE, FALSE, DEFAULT, DEFAULT, DEFAULT, tlBusinessType)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF g_iMaterialsTotalForFactory[GET_SAVE_SLOT_FOR_FACTORY(eSelectedFactory)] >= g_sMPTunables.iBIKER_RESUPPLY_LAUNCH_SUPPLIES_THRESHOLD //FAIL: We hav 100% supplies already
|
||
|
||
//SHOW_OVERLAY("HT_DW_P1", "OR_MIS_NA_B", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF IS_PAID_RESUPPLY_TIMER_RUNNING(GET_SAVE_SLOT_FOR_FACTORY(eSelectedFactory)) //FAIL: We have already paid for a resupply
|
||
|
||
//SHOW_OVERLAY("HT_DW_P1", "OR_MIS_NA_C", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
|
||
ELIF NOT CAN_PLAYER_LAUNCH_MISSION(FMMC_TYPE_BIKER_BUY) //FAIL: Not available
|
||
|
||
SHOW_OVERLAY("HT_DW_P1", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
|
||
ELSE
|
||
TEXT_LABEL_15 tlBusinessType = GET_FACTORY_TYPE_PROPERTY_LABEL(eFactoryType, 1)
|
||
SHOW_OVERLAY("HT_DW_P1", "HT_DW_P1_D4", "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, NCA_STAGE_CONFIRM_DRUG_BUSINESS_MISSION_LAUNCH, DEFAULT, DEFAULT, tlBusinessType)
|
||
ENDIF
|
||
ELSE
|
||
//TEXT_LABEL_15 tlBusinessType = GET_FACTORY_TYPE_PROPERTY_LABEL(eFactoryType)
|
||
//SHOW_OVERLAY("HT_DW_P1", "HT_DW_P1_D3", "OR_OVRLY_OK", "", TRUE, FALSE, DEFAULT, DEFAULT, DEFAULT, tlBusinessType)
|
||
PLAY_CLICK_LINK_FAIL_SOUND()
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC RUN_INITIAL_MISSION_LAUNCH_CHECKS(NC_MISSION_TYPE eMissionType, INT iJobID)
|
||
SWITCH eMissionType
|
||
CASE NC_BOSS_WORK RUN_BOSS_WORK_MISSION_LAUNCH_CEHCKS(iJobID) BREAK
|
||
CASE NC_AIR_FREIGHT RUN_AIR_FREIGHT_MISSION_LAUNCH_CEHCKS(iJobID) BREAK
|
||
CASE NC_SPECIAL_CARGO RUN_SPECIAL_CARGO_MISSION_LAUNCH_CEHCKS(iJobID) BREAK
|
||
CASE NC_VEHICLE_CARGO RUN_VEHICLE_CARGO_MISSION_LAUNCH_CEHCKS() BREAK
|
||
CASE NC_WEAPONS_CARGO RUN_WEAPONS_CARGO_MISSION_LAUNCH_CEHCKS() BREAK
|
||
CASE NC_DRUG_CARGO RUN_DRUG_CARGO_MISSION_LAUNCH_CEHCKS(iJobID) BREAK
|
||
ENDSWITCH
|
||
ENDPROC
|
||
|
||
PROC HANDLE_ACCEPT_OVERLAY_PRESS()
|
||
|
||
IF NC_APP_GET_APP_STAGE() != NCA_STAGE_IDLE
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Launch", "DLC_GR_MOC_Computer_Sounds")
|
||
ENDIF
|
||
|
||
SWITCH NC_APP_GET_APP_STAGE()
|
||
CASE NCA_STAGE_CONFIRM_HACKER_WORKS_MISSION_LAUNCH
|
||
IF IS_NC_BOSS_WORK_AVAILABLE(GET_JOB_ID_FROM_FMMC_ID(iMissionIDToLaunch))
|
||
AND CAN_PLAYER_LAUNCH_BOSS_WORK(iMissionIDToLaunch)
|
||
GB_SET_PLAYER_GANG_BOSS_MISSION_VARIATION(iSelectedMissionSubVar)
|
||
LAUNCH_MISSION(iMissionIDToLaunch)
|
||
ELSE
|
||
HIDE_OVERLAY()
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_L1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
EXIT
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_CONFIRM_AIR_FREIGHT_MISSION_LAUNCH
|
||
IF DO_HANGAR_SOURCE_CARGO_LAUNCH_MISSION_TRANSACTION()
|
||
g_sSMUGGLER_Telemetry_data.m_FromHackerTruck = 1
|
||
LAUNCH_MISSION(FMMC_TYPE_SMUGGLER_BUY)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_CONFIRM_SPECIAL_CARGO_MISSION_LAUNCH
|
||
IF BUY_SPECIAL_CARGO_MISSION(iSelectedSCWarehouse, eSelectedShipmentSize, NC_APP_IS_SPECIAL_ITEM_ACTIVE_FOR_SPECIAL_CARGO(), eActiveContrabandType, FMMC_TYPE_GB_CONTRABAND_BUY)
|
||
SET_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_CARGO_MISSION_FROM_HACKER_TRUCK)
|
||
LAUNCH_MISSION(FMMC_TYPE_GB_CONTRABAND_BUY)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_CONFIRM_VEHICLE_CARGO_MISSION_LAUNCH
|
||
IF IS_PLAYERS_IE_GARAGE_FULL(PLAYER_ID(), GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID()))
|
||
SHOW_OVERLAY("HT_VC_P1", "SEC_V_STEAL_F", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF LAUNCH_IE_STEAL_MISSION()
|
||
SET_BIT(g_SimpleInteriorData.iFifthBS, BS5_SIMPLE_INTERIOR_LAUNCHED_VEH_EXP_MISSION_FROM_HACKER_TRUCK)
|
||
PRINTLN("<APP_NC> HANDLE_ACCEPT_OVERLAY_PRESS - Setting BS5_SIMPLE_INTERIOR_LAUNCHED_VEH_EXP_MISSION_FROM_HACKER_TRUCK")
|
||
INCREMENT_TOTAL_NUM_STEAL_MISSIONS_STARTED()
|
||
SET_PLAYER_IS_ON_IE_VEHICLE_STEAL_MISSION(TRUE)
|
||
SCRIPT_CLEANUP()
|
||
ELSE
|
||
SHOW_OVERLAY("SEC_VEH_STEAL", "SEC_MISS_L_F", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_CONFIRM_GUNRUNNING_MISSION_LAUNCH
|
||
IF DO_FACTORY_LAUNCH_MISSION_TRANSACTION(GET_OWNED_BUNKER(PLAYER_ID()), FMMC_TYPE_GUNRUNNING_BUY)
|
||
g_sGUNRUN_Telemetry_data.m_FromHackerTruck = 1
|
||
LAUNCH_MISSION(FMMC_TYPE_GUNRUNNING_BUY)
|
||
INCREMENT_BIKER_BUY_MISSION_UNDERTAKEN_COUNT(BUNKER_SAVE_SLOT)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_GR_P1", NC_APP_GET_MISSION_LAUNCH_FAIL_REASON(), "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_CONFIRM_DRUG_BUSINESS_MISSION_LAUNCH
|
||
IF DO_FACTORY_LAUNCH_MISSION_TRANSACTION(eSelectedFactory, FMMC_TYPE_BIKER_BUY)
|
||
g_iResupplyingFactory = ENUM_TO_INT(eSelectedFactory)
|
||
g_sBIK_Telemetry_data.m_FromHackerTruck = 1
|
||
LAUNCH_MISSION(FMMC_TYPE_BIKER_BUY)
|
||
UPDATE_FACTORY_PRODUCTION_ACTIVE_STATE(GET_SAVE_SLOT_FOR_FACTORY(eSelectedFactory), !g_sMPtunables.bStopFactoryProductionOnMissions)
|
||
INCREMENT_BIKER_BUY_MISSION_UNDERTAKEN_COUNT(GET_SAVE_SLOT_FOR_FACTORY(eSelectedFactory))
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE NCA_STAGE_IDLE
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Unavailable_OK", "DLC_GR_MOC_Computer_Sounds")
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
|
||
HIDE_OVERLAY()
|
||
ENDPROC
|
||
|
||
////////////////////////////////////////////
|
||
/// Scaleform methods
|
||
|
||
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
|
||
|
||
PROC MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
||
IF IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
||
IF NOT IS_BIT_SET(iBS, NC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_SELECTION")
|
||
currentSelectionReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
||
|
||
SET_BIT(iBS, NC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC CHECK_BUTTON_PRESS()
|
||
MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
||
|
||
IF IS_BIT_SET(iBS, NC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
IF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentSelectionReturnIndex)
|
||
BH_BUTTON_INDEXES eButtonPressed = INT_TO_ENUM(BH_BUTTON_INDEXES, GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentSelectionReturnIndex))
|
||
|
||
PRINTLN("<APP_NC> CHECK_BUTTON_PRESS button press returned = ", DEBUG_GET_BUTTON_NAME(eButtonPressed), " ID: ", eButtonPressed)
|
||
|
||
SWITCH eButtonPressed
|
||
CASE BUTTON_OVERLAY_CANCEL
|
||
HIDE_OVERLAY()
|
||
PLAY_SOUND_FRONTEND(-1, "Select_Mission_Cancel", "DLC_GR_MOC_Computer_Sounds")
|
||
BREAK
|
||
|
||
CASE BUTTON_OVERLAY_ACCEPT
|
||
HANDLE_ACCEPT_OVERLAY_PRESS()
|
||
BREAK
|
||
|
||
CASE BUTTON_LOGIN
|
||
OPEN_PAGE(PAGE_HOME)
|
||
PLAY_SOUND_FRONTEND(-1, "Log_In", "DLC_GR_MOC_Computer_Sounds")
|
||
BREAK
|
||
|
||
CASE BUTTON_HACKER_WORKS_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_BOSS_WORK)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
|
||
NC_APP_SET_MISSION_TYPE(NC_BOSS_WORK)
|
||
SETUP_TRUCK_JOB_OVERLAY()
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ELSE
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_L5", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_AIR_FREIGHT_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_AIR_FREIGHT)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
SHOW_OVERLAY("HT_AF_P1", "NC_PRIV_SES_0", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
|
||
IF DOES_PLAYER_OWN_A_HANGER(PLAYER_ID())
|
||
IF HAS_PLAYER_COMPLETED_HANGAR_SETUP_MISSION(PLAYER_ID())
|
||
NC_APP_SET_MISSION_TYPE(NC_AIR_FREIGHT)
|
||
SETUP_HANGAR_CARGO_JOB_OVERLAY()
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ELSE
|
||
SHOW_OVERLAY("HT_AF_P1", "HT_AF_P1_D4", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_AF_P1", "HT_AF_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_AF_P1", "HT_BW_L5", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_SPECIAL_CARGO_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_SPECIAL_CARGO)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
SHOW_OVERLAY("HT_SC_P1", "NC_PRIV_SES_1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_GANG_TYPE(GT_VIP)
|
||
IF DOES_PLAYER_OWN_A_WAREHOUSE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_TYPE(NC_SPECIAL_CARGO)
|
||
SETUP_SPECIAL_CARGO_JOB_OVERLAY()
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ELSE
|
||
SHOW_OVERLAY("HT_SC_P1", "HT_SC_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_L11", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_VEHICLE_CARGO_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_VEHICLE_CARGO)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
SHOW_OVERLAY("HT_VC_P1", "NC_PRIV_SES_2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_GANG_TYPE(GT_VIP)
|
||
IF DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
NC_APP_SET_MISSION_TYPE(NC_VEHICLE_CARGO)
|
||
RUN_INITIAL_MISSION_LAUNCH_CHECKS(NC_VEHICLE_CARGO, -1)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_VC_P1", "HT_VC_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_VC_P1", "HT_BW_L10", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_GUNRUNNING_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_WEAPONS_CARGO)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
SHOW_OVERLAY("HT_GR_P1", "NC_PRIV_SES_3", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_A_GANG()
|
||
IF DOES_PLAYER_OWN_A_BUNKER(PLAYER_ID())
|
||
NC_APP_SET_MISSION_TYPE(NC_WEAPONS_CARGO)
|
||
RUN_INITIAL_MISSION_LAUNCH_CHECKS(NC_WEAPONS_CARGO, -1)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_GR_P1", "HT_GR_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_GR_P1", "HT_BW_L5", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_DRUG_BUSINESS_MISSION
|
||
IF IS_MISSION_TYPE_DISABLED_BY_TUNEABLE(NC_DRUG_CARGO)
|
||
SHOW_OVERLAY("HT_BW_LT", "HT_BW_DIS", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF MISSION_PC_DID_I_JOIN_A_PRIVATE_SESSION()
|
||
SHOW_OVERLAY("HT_DW_P1", "NC_PRIV_SES_4", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELIF GB_IS_LOCAL_PLAYER_BOSS_OF_A_BIKER_GANG()
|
||
IF DOES_PLAYER_OWN_A_BIKER_FACTORY(PLAYER_ID())
|
||
NC_APP_SET_MISSION_TYPE(NC_DRUG_CARGO)
|
||
SETUP_BIKER_JOB_OVERLAY()
|
||
PLAY_CLICK_LINK_SOUND()
|
||
ELIF DOES_PLAYER_OWN_CLUBHOUSE(PLAYER_ID())
|
||
SHOW_OVERLAY("HT_DW_P1", "HT_DW_P1_D2", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ELSE
|
||
SHOW_OVERLAY("HT_DW_P1", "HT_DW_P1_D1", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
ELSE
|
||
SHOW_OVERLAY("HT_DW_P1", "HT_BW_L7", "OR_OVRLY_OK", "", TRUE, FALSE)
|
||
ENDIF
|
||
BREAK
|
||
|
||
CASE BUTTON_JOB1
|
||
CASE BUTTON_JOB2
|
||
CASE BUTTON_JOB3
|
||
CASE BUTTON_JOB4
|
||
CASE BUTTON_JOB5
|
||
CASE BUTTON_JOB6
|
||
CASE BUTTON_JOB7
|
||
CASE BUTTON_JOB8
|
||
CASE BUTTON_JOB9
|
||
INT iJobID
|
||
iJobID = ENUM_TO_INT(eButtonPressed) - ENUM_TO_INT(BUTTON_JOB1)
|
||
RUN_INITIAL_MISSION_LAUNCH_CHECKS(eCurrentMissionType, iJobID)
|
||
BREAK
|
||
|
||
ENDSWITCH
|
||
|
||
CLEAR_BIT(iBS, NC_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
////////////////////////////////////////////////////////////////////////////
|
||
/// Dialogue tutorials
|
||
|
||
FUNC BOOL HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_1)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_2)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_3)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_4)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_5)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_6)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_7)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_8)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED TRUE")
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED FALSE")
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC BOOL HAVE_ALL_INITIAL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_1)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_2)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_3)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HAVE_ALL_INITIAL_DIALOGUE_TUTORIALS_BEEN_COMPLETED TRUE")
|
||
RETURN TRUE
|
||
ENDIF
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HAVE_ALL_INITIAL_DIALOGUE_TUTORIALS_BEEN_COMPLETED FALSE")
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC STRING NC_TUT_GET_ROOT_LABEL(INT iTutorialID)
|
||
SWITCH iTutorialID
|
||
CASE 0 RETURN "PAIFM_APPINT" //Intro - Home
|
||
CASE 1 RETURN "PAIFM_APPBL" //Main screen - Old jobs
|
||
CASE 2 RETURN "PAIFM_APPCJ" //Main screen - Client jobs list
|
||
CASE 3 RETURN "PAIFM_REMBL1"
|
||
CASE 4 RETURN "PAIFM_REMBL2"
|
||
CASE 5 RETURN "PAIFM_REMBL3"
|
||
CASE 6 RETURN "PAIFM_REMBB1"
|
||
CASE 7 RETURN "PAIFM_REMBB2"
|
||
CASE 8 RETURN "PAIFM_REMBB3"
|
||
ENDSWITCH
|
||
|
||
CASSERTLN(DEBUG_SAFEHOUSE, "NC_TUT_GET_ROOT_LABEL: Invalid tutorial ID: ", iTutorialID)
|
||
RETURN "PAIFM_APPINT"
|
||
ENDFUNC
|
||
|
||
PROC NC_APP_START_TUTORIAL_DIALOGUE(INT iTutorialID)
|
||
IF CREATE_CONVERSATION(tutPedStruct, "PAIFMAU", NC_TUT_GET_ROOT_LABEL(iTutorialID), CONV_PRIORITY_HIGH)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> Created tutorial converstion: ", iTutorialID)
|
||
iTutorialDialogueID = -1
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC HUB_APP_RUN_TUTORIAL_DIALOGUE()
|
||
//Start the dialogue
|
||
IF iTutorialDialogueID != -1
|
||
NC_APP_START_TUTORIAL_DIALOGUE(iTutorialDialogueID)
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL SHOULD_APP_PLAY_NC_BUSINESS_REMINDER_DIALOGUE()
|
||
IF GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_4)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_5)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_6)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_7)
|
||
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_8)
|
||
RETURN FALSE
|
||
ENDIF
|
||
|
||
RETURN TRUE
|
||
ENDFUNC
|
||
|
||
PROC INCREMENT_NC_BUSINESS_REMINDER_DIALOGUE_STAT()
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_4)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_4, TRUE)
|
||
EXIT
|
||
ENDIF
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_5)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_5, TRUE)
|
||
EXIT
|
||
ENDIF
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_6)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_6, TRUE)
|
||
EXIT
|
||
ENDIF
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_7)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_7, TRUE)
|
||
EXIT
|
||
ENDIF
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_8)
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_8, TRUE)
|
||
EXIT
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
FUNC BOOL SHOULD_APP_PLAY_NC_BUSINESS_PURCHASE_REMINDER_DIALOGUE()
|
||
IF GET_PLAYER_OWNED_BUSINESS_COUNT(PLAYER_ID()) = 0
|
||
RETURN NOT DOES_PLAYER_OWN_AN_IE_GARAGE(PLAYER_ID())
|
||
ENDIF
|
||
|
||
RETURN FALSE
|
||
ENDFUNC
|
||
|
||
FUNC INT GET_BUSINESS_REMINDER_DIALOGUE_TUTORIAL_ID(BOOL bPurchaseDialogue)
|
||
INT iMinTut = 3
|
||
INT iMaxTut = 6
|
||
|
||
IF bPurchaseDialogue
|
||
iMinTut = 6
|
||
iMaxTut = 9
|
||
ENDIF
|
||
|
||
RETURN GET_RANDOM_INT_IN_RANGE(iMinTut, iMaxTut)
|
||
ENDFUNC
|
||
|
||
PROC HUB_APP_SELECT_DIALOGUE_TUTORIAL()
|
||
|
||
BOOL bStartNewDialogue
|
||
|
||
IF NOT IS_BIT_SET(iBS, NC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
||
IF IS_BIT_SET(iBS, NC_BS_INITIAL_TUTORIAL_COMPLETE)
|
||
IF IS_BIT_SET(g_iWebsiteTutorialDisplayedBS2, ENUM_TO_INT(eWTBS2_NC_BUSINESS_TUT))
|
||
OR IS_BIT_SET(iBS, NC_BS_DONE_BUSINESS_PURCHASE_TUT_THIS_BOOT)
|
||
PRINTLN("<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL - Setting NC_BS_DIALOGUE_TUTORIAL_COMPLETE for done business reminder. Purch this app boot? ", IS_BIT_SET(iBS, NC_BS_DONE_BUSINESS_PURCHASE_TUT_THIS_BOOT))
|
||
SET_BIT(iBS, NC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
EXIT
|
||
ELIF IS_BIT_SET(g_SimpleInteriorData.iForthBS, BS4_SIMPLE_INTERIOR_NC_DRAW_MISSIONS_SCREEN)
|
||
IF NOT IS_BIT_SET(iBS, NC_BS_INITIAL_TUTORIAL_COMPLETE_THIS_BOOT)
|
||
IF SHOULD_APP_PLAY_NC_BUSINESS_PURCHASE_REMINDER_DIALOGUE()
|
||
IF NOT IS_BIT_SET(g_iWebsiteTutorialDisplayedBS2, ENUM_TO_INT(eWTBS2_NC_BUSINESS_PURCHASE_TUT))
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = GET_BUSINESS_REMINDER_DIALOGUE_TUTORIAL_ID(TRUE)
|
||
|
||
PRINTLN("<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL - Doing business purchase reminder")
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS2, ENUM_TO_INT(eWTBS2_NC_BUSINESS_PURCHASE_TUT))
|
||
SET_BIT(iBS, NC_BS_DONE_BUSINESS_PURCHASE_TUT_THIS_BOOT)
|
||
ELSE
|
||
PRINTLN("<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL - Skipping business purchase reminder for BS: ", eWTBS2_NC_BUSINESS_PURCHASE_TUT)
|
||
SET_BIT(iBS, NC_BS_DONE_BUSINESS_PURCHASE_TUT_THIS_BOOT)
|
||
ENDIF
|
||
ELIF SHOULD_APP_PLAY_NC_BUSINESS_REMINDER_DIALOGUE()
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = GET_BUSINESS_REMINDER_DIALOGUE_TUTORIAL_ID(FALSE)
|
||
INCREMENT_NC_BUSINESS_REMINDER_DIALOGUE_STAT()
|
||
|
||
PRINTLN("<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL - Doing business reminder")
|
||
SET_BIT(g_iWebsiteTutorialDisplayedBS2, ENUM_TO_INT(eWTBS2_NC_BUSINESS_TUT))
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ELSE
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_1)
|
||
//First login
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = 0
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_1, TRUE)
|
||
ENDIF
|
||
|
||
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_2)
|
||
AND NOT bStartNewDialogue
|
||
//Collections page
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = 1
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_2, TRUE)
|
||
ENDIF
|
||
|
||
IF IS_BIT_SET(iBS, NC_BS_JOB_OVERLAY_ACTIVE)
|
||
AND eCurrentMissionType = NC_BOSS_WORK
|
||
AND NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_3)
|
||
AND NOT bStartNewDialogue
|
||
//Collections page
|
||
bStartNewDialogue = TRUE
|
||
iTutorialHelpTime = 9000
|
||
iTutorialDialogueID = 2
|
||
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_NC_APP_DIALOGUE_TUT_3, TRUE)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
IF bStartNewDialogue
|
||
SET_BIT(iBS, NC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL Running tutorial for: ", iTutorialHelpTime, " seconds. Tutorial ID: ", iTutorialDialogueID)
|
||
ELIF IS_BIT_SET(iBS, NC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
IF NOT HAS_NET_TIMER_STARTED(stTutorialTimer)
|
||
START_NET_TIMER(stTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HUB_APP_SELECT_DIALOGUE_TUTORIAL Starting timer time: ", iTutorialHelpTime, " Tutorial ID: ", iTutorialDialogueID)
|
||
ELIF HAS_NET_TIMER_EXPIRED(stTutorialTimer, iTutorialHelpTime)
|
||
CLEAR_BIT(iBS, NC_BS_CURRENTLY_PLAYING_TUTORIAL)
|
||
iTutorialHelpTime = 0
|
||
RESET_NET_TIMER(stTutorialTimer)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC><APP_NC_TUT> HUB_APP_SELECT_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, NC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
|
||
//The first three tutorials must have run before we try and play the business reminders
|
||
IF HAVE_ALL_INITIAL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
SET_BIT(iBS, NC_BS_INITIAL_TUTORIAL_COMPLETE)
|
||
SET_BIT(iBS, NC_BS_INITIAL_TUTORIAL_COMPLETE_THIS_BOOT)
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
|
||
ENDPROC
|
||
|
||
/// PURPOSE:
|
||
/// Check for any flags that mean this script should terminate
|
||
PROC RUN_CLEANUP_CHECKS()
|
||
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
||
PRINTLN("<APP_NC> Shutting down! No network game is currently active")
|
||
SCRIPT_CLEANUP()
|
||
ELIF IS_PAUSE_MENU_ACTIVE_EX()
|
||
OR IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> Shutting down! Player opend the pause menu")
|
||
SCRIPT_CLEANUP()
|
||
ELIF IS_ENTITY_DEAD(PLAYER_PED_ID())
|
||
PRINTLN("<APP_NC> Shutting down! Player is injured or dead")
|
||
SCRIPT_CLEANUP()
|
||
ELIF IS_SCREEN_FADING_OUT()
|
||
PRINTLN("<APP_NC> Shutting down! External script is fading out the screen")
|
||
SCRIPT_CLEANUP()
|
||
ELIF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
|
||
PRINTLN("<APP_NC> Shutting down! starting an on call job")
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC NC_APP_SETUP_TUTORIAL_DIALOGUE()
|
||
IF HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
PRINTLN("<APP_NC><APP_NC_TUT> NC_APP_SETUP_TUTORIAL_DIALOGUE setting NC_BS_DIALOGUE_TUTORIAL_COMPLETE")
|
||
SET_BIT(iBS, NC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
ELSE
|
||
IF HAVE_ALL_INITIAL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
||
PRINTLN("<APP_NC><APP_NC_TUT> NC_APP_SETUP_TUTORIAL_DIALOGUE setting NC_BS_INITIAL_TUTORIAL_COMPLETE")
|
||
SET_BIT(iBS, NC_BS_INITIAL_TUTORIAL_COMPLETE)
|
||
ENDIF
|
||
|
||
SET_USE_DLC_DIALOGUE(TRUE)
|
||
|
||
ADD_PED_FOR_DIALOGUE(tutPedStruct, 2, NULL, "PAIGE")
|
||
|
||
CPRINTLN(DEBUG_INTERNET, "<APP_NC> NC_APP_SETUP_TUTORIAL_DIALOGUE ped added for dialogue")
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
PROC SCRIPT_INITALISE()
|
||
RUN_CLEANUP_CHECKS()
|
||
|
||
mov = REQUEST_SCALEFORM_MOVIE("hacker_truck_desktop")
|
||
|
||
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
|
||
DISABLE_CELLPHONE(TRUE)
|
||
|
||
Pause_Objective_Text()
|
||
THEFEED_PAUSE()
|
||
|
||
SET_BROWSER_OPEN(TRUE)
|
||
|
||
// Default cleanup
|
||
IF HAS_FORCE_CLEANUP_OCCURRED()
|
||
OR MPGlobalsAmbience.bRunningFmIntroCut
|
||
IF MPGlobalsAmbience.bRunningFmIntroCut
|
||
PRINTLN("<APP_NC> bRunningFmIntroCut is true so cleaning up!")
|
||
ENDIF
|
||
|
||
PRINTLN("<APP_NC> DEFAULT CLEANUP")
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
|
||
//Store the active contraband type at the time of opening the app
|
||
eActiveContrabandType = g_eContrabandType
|
||
|
||
SEND_ALL_DATA_TO_SCALEFORM()
|
||
START_NET_TIMER(stLoginAnimation)
|
||
|
||
IF IS_PC_VERSION()
|
||
SET_MULTIHEAD_SAFE(TRUE, TRUE, TRUE, TRUE)
|
||
ENDIF
|
||
|
||
IF NOT IS_AUDIO_SCENE_ACTIVE("GTAO_Computer_Screen_Active_Scene")
|
||
START_AUDIO_SCENE("GTAO_Computer_Screen_Active_Scene")
|
||
ENDIF
|
||
|
||
//Once all the tutorial are complete we no longer need this function
|
||
NC_APP_SETUP_TUTORIAL_DIALOGUE()
|
||
|
||
//Hold for one frame before we move into the while loop
|
||
WAIT(0)
|
||
ENDPROC
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
BOOL bRender = TRUE
|
||
#ENDIF
|
||
|
||
//FEATURE_BUSINESS_BATTLES
|
||
|
||
//***********SCRIPT***********
|
||
SCRIPT
|
||
PRINTLN("<APP_NC> started \"", GET_THIS_SCRIPT_NAME(), "\"")
|
||
|
||
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY("appBusinessHub")) > 1
|
||
PRINTLN("<APP_NC> Business hub app script already running! cleaning up.")
|
||
SCRIPT_CLEANUP()
|
||
ENDIF
|
||
|
||
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
||
|
||
SCRIPT_INITALISE()
|
||
|
||
/// main update loop
|
||
WHILE IS_BROWSER_OPEN()
|
||
RUN_CLEANUP_CHECKS()
|
||
|
||
#IF IS_DEBUG_BUILD
|
||
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_1)
|
||
bRender = !bRender
|
||
PRINTLN("<APP_NC> bRender toggled to ", bRender)
|
||
ENDIF
|
||
#ENDIF
|
||
|
||
IF NOT IS_BIT_SET(iBS, NC_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
||
HUB_APP_SELECT_DIALOGUE_TUTORIAL()
|
||
HUB_APP_RUN_TUTORIAL_DIALOGUE()
|
||
ENDIF
|
||
|
||
//Update any activley displayed cooldowns
|
||
UPDATE_JOB_OVERLAY_DATA(eCurrentMissionType)
|
||
//Render the scaleform movie
|
||
#IF IS_DEBUG_BUILD
|
||
IF bRender
|
||
#ENDIF
|
||
RENDER_NC_APP()
|
||
#IF IS_DEBUG_BUILD
|
||
ENDIF
|
||
#ENDIF
|
||
//Pass control inputs to scaleform
|
||
PASS_INPUTS_TO_SCALEFORM()
|
||
//Handle the return values of player input
|
||
CHECK_BUTTON_PRESS()
|
||
//Prevent first person view behind the scenes: url:bugstar:4825468
|
||
DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
|
||
|
||
IF HAS_NET_TIMER_STARTED(stLoginAnimation)
|
||
AND HAS_NET_TIMER_EXPIRED(stLoginAnimation, 1800)
|
||
SET_BIT(g_SimpleInteriorData.iForthBS, BS4_SIMPLE_INTERIOR_NC_DRAW_MISSIONS_SCREEN)
|
||
eCurrentPage = PAGE_HOME
|
||
ENDIF
|
||
|
||
WAIT(0)
|
||
ENDWHILE
|
||
|
||
// Script should never reach here. Always terminate with cleanup function.
|
||
CASSERTLN(DEBUG_INTERNET, "<APP_NC> \"", GET_THIS_SCRIPT_NAME(), "\" should never reach here. Always terminate with cleanup function.")
|
||
ENDSCRIPT
|
||
|