638 lines
24 KiB
Python
Executable File
638 lines
24 KiB
Python
Executable File
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
USING "getaway_vehicle_include.sch"
|
|
INT iStoppedTime = -1
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player has the phone cursor over one of the available contacts
|
|
/// RETURNS:
|
|
/// TRUE if the player is highlighting one of the available contacts
|
|
FUNC BOOL IS_PLAYER_HIGHLIGHTING_CONTACT()
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
IF eHighlighted = CHAR_TREVOR
|
|
OR eHighlighted = CHAR_FRANKLIN
|
|
#IF IS_DEBUG_BUILD
|
|
IF eHighlighted = CHAR_TREVOR
|
|
SK_PRINT("The player is highlighting CHAR_TREV, can be rang to leave the getaway")
|
|
ELIF eHighlighted = CHAR_FRANKLIN
|
|
SK_PRINT("The player is highlighting CHAR_FRANK, can be rang to leave the getaway")
|
|
ENDIF
|
|
#ENDIF
|
|
RETURN TRUE
|
|
// ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF (GET_GAME_TIMER() - iGenericPrintTimer) > 1500
|
|
// #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_SHARM_STEALTH, "Phone is on screen but player is not highlighting correct contact") #ENDIF
|
|
// ENDIF
|
|
// #ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF eHighlighted = CHAR_MICHAEL
|
|
#IF IS_DEBUG_BUILD SK_PRINT("The player is highlighting Michael, can be rang to leave the getaway") #ENDIF
|
|
RETURN TRUE
|
|
// ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF (GET_GAME_TIMER() - iGenericPrintTimer) > 1500
|
|
// #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_SHARM_STEALTH, "Phone is on screen but player is not highlighting correct contact") #ENDIF
|
|
// ENDIF
|
|
// #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
FUNC BOOL IS_PLAYER_TO_CLOSE_TO_FBI_LOCS()
|
|
IF ( VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<855.72577, -2344.49072, 29.33145>>) <= 230*230) //HIEST location
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SEC_ROUTE)
|
|
ENDIF
|
|
// PRINT_HELP("AM_H_FBIC6A", DEFAULT_HELP_TEXT_TIME)//This location isn't discrete enough.
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "TOO CLOSE TO HIEST location RETURN TRUE")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
|
|
ELIF ( VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<1383.21021, -2068.01978, 51.87057>>) <= 400*400) //FBI LOT
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_FIB_LOC)
|
|
ENDIF
|
|
// PRINT_HELP("AM_H_FBIC6B", DEFAULT_HELP_TEXT_TIME)//This location isn't discrete enough.
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "TOO CLOSE TO FBI LOT() RETURN TRUE")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Performs all checks required to decide if the vehicle is suitable to use as a vehicle
|
|
/// PARAMS:
|
|
/// Veh - the vehicle perfore the checks on
|
|
/// RETURNS:
|
|
/// TRUE if the current vehicle is valid
|
|
FUNC BOOL IS_CURRENT_VEHICLE_VALID(VEHICLE_INDEX Veh)
|
|
IF IS_VEHICLE_ROAD_VEHICLE()
|
|
AND DO_VALID_GETAWAY_CAR_CHECK(Veh)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//SET_PED_ALLOW_MINOR_REACTIONS_AS_MISSION_PED
|
|
|
|
PROC MONITOR_HIDING_PLACE_VALID()
|
|
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
AND g_OnMissionState = MISSION_TYPE_OFF_MISSION
|
|
AND NOT IS_MISSION_LEADIN_ACTIVE()
|
|
IF eCopMonitor = CM_MONITER
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vPotentialHidingPos, 5)
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE)) ///
|
|
OR IS_PLAYER_HIGHLIGHTING_CONTACT()
|
|
IF IS_PED_UNINJURED(PLAYER_PED_ID())
|
|
AND NOT IS_BIT_SET(iHelpTextBit[0], ENUM_TO_INT(HTE_VEH_CAN_BE_USED_FRANK_TREV))
|
|
AND NOT IS_BIT_SET(iHelpTextBit[1], ENUM_TO_INT(HTE_VEH_CAN_BE_USED_MIKE))
|
|
IF IS_PED_STOPPED(PLAYER_PED_ID())
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_VEH_STOP)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Player is stopped start vehicle checks") #ENDIF
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF NOT IS_PLAYER_TO_CLOSE_TO_FBI_LOCS()
|
|
AND IS_AREA_QUIET(GET_ENTITY_COORDS(viVeh))
|
|
IF IS_AREA_CLEAR_AROUND_LOCATION_VEHICLE(viVeh)
|
|
IF IS_VEHICLE_UPRIGHT_AND_LEVEL(viVeh)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SUITABLEFT)
|
|
CLEAR_ALL_HELP_BITS(HTE_LOC_SUITABLEFT, TRUE)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SUITABLEM)
|
|
CLEAR_ALL_HELP_BITS(HTE_LOC_SUITABLEM, TRUE)
|
|
ENDIF
|
|
vPotentialHidingPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP)
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
ENDIF
|
|
vPotentialHidingPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
ENDIF
|
|
|
|
ELSE
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_LOC_SUITABLEFT, HTE_LOC_SUITABLEM)
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_VEH_STOP)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
IF IS_PED_STOPPED(PLAYER_PED_ID())
|
|
AND IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE)) ///
|
|
IF iStoppedTime != -1
|
|
IF (GET_GAME_TIMER() - iStoppedTime) > 1000
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
ENDIF
|
|
ELSE
|
|
iStoppedTime = GET_GAME_TIMER()
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vPotentialHidingPos, 10)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Player is 10m away from the vPotentialHidingPos clearing flag") #ENDIF
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
ELIF NOT IS_PED_STOPPED(PLAYER_PED_ID())
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE)) ///
|
|
SET_HELP_TEXT_BIT(HTE_VEH_STOP)
|
|
ENDIF
|
|
CLEAR_ALL_HELP_BITS(HTE_VEH_STOP, TRUE)
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Player started moving whilst ringing") #ENDIF
|
|
ENDIF
|
|
ELIF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) != viVeh
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP)
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
CLEAR_CAR_RELATED_BITS()
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
#IF IS_DEBUG_BUILD SK_PRINT("got in to a different car whilst ringing") #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELIF NOT IS_AREA_CLEAR_AROUND_LOCATION_VEHICLE(viVeh)
|
|
CLEAR_ALL_HELP_BITS(HTE_LOC_PUBLIC, TRUE)
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TIME_OUT_HIDING_PLACE))
|
|
iStoppedTime = -1
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ped walked passed") #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC MONITOR_PLAYERS_CAR()
|
|
IF g_OnMissionState = MISSION_TYPE_OFF_MISSION
|
|
AND eCopMonitor = CM_MONITER
|
|
AND NOT IS_MISSION_LEADIN_ACTIVE()
|
|
IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF NOT MONITOR_PLAYER_CARGO_BOBBING_CAR()
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
VEHICLE_INDEX viPlayersVeh = GET_PLAYERS_LAST_VEHICLE()
|
|
IF IS_VEHICLE_OK(viPlayersVeh)
|
|
IF NOT HAS_VEHICLE_BEEN_CHECKED_BEFORE(viPlayersVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("3") #ENDIF
|
|
IF NOT DECOR_EXIST_ON(viPlayersVeh, "Getaway_Winched")
|
|
IF IS_CURRENT_VEHICLE_VALID(viPlayersVeh)
|
|
AND NOT IS_PLAYER_PASSENGER_IN_TAXI()
|
|
IF NOT IS_ENTITY_A_MISSION_ENTITY(viPlayersVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bIsCarValid = TRUE 1 ") #ENDIF
|
|
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL
|
|
SET_HELP_TEXT_BIT(HTE_VEH_CAN_BE_USED_FRANK_TREV)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_VEH_CAN_BE_USED_MIKE)
|
|
ENDIF
|
|
viVeh = viPlayersVeh
|
|
SET_ENTITY_AS_MISSION_ENTITY(viVeh, TRUE, TRUE)
|
|
IF DECOR_SET_BOOL(viVeh, "GetawayVehicleValid", TRUE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ADDED decor - GetawayVehicleValid = TRUE") #ENDIF
|
|
ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
EXIT
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("BISCARVALID = FALSE 1 ")
|
|
ENDIF
|
|
CPRINTLN(DEBUG_MISSION, "Player entered mission vehicle, which was then checked by the getaway vehicle script", GET_THIS_SCRIPT_NAME())
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR IS_ENTITY_A_MISSION_ENTITY(viPlayersVeh)- SAFE_RELEASE_VEHICLE(VIVEH)") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bHasCurrentVehicleBeenChecked = TRUE 3 ") #ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
EXIT
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
IF DECOR_SET_BOOL(viPlayersVeh, "GetawayVehicleValid", FALSE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ADDED decor - GetawayVehicleValid = FALSE ") #ENDIF
|
|
ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bHasCurrentVehicleBeenChecked = TRUE 1 ") #ENDIF
|
|
ELSE
|
|
IF IS_PREVIOUSLY_CHECKED_VEHICLE_VALID(viPlayersVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bIsCarValid = TRUE 2 ") #ENDIF
|
|
viVeh = viPlayersVeh
|
|
SET_ENTITY_AS_MISSION_ENTITY(viVeh, TRUE, TRUE)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("bIsCarValid = FALSE 1 ")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR 1 - SAFE_RELEASE_VEHICLE(viVeh)") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bHasCurrentVehicleBeenChecked = TRUE 2 ") #ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF NOT IS_VEHICLE_OK(viVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("VEHICLE is dead reset bits ") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
VEHICLE_INDEX viPlayersVeh = GET_PLAYERS_LAST_VEHICLE()
|
|
IF IS_VEHICLE_OK(viPlayersVeh)
|
|
CPRINTLN(DEBUG_MISSION, "GET_PLAYERS_LAST_VEHICLE() is valid in GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE")
|
|
IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(), viPlayersVeh, 10)
|
|
AND NOT DECOR_EXIST_ON(viPlayersVeh, "Getaway_Winched")
|
|
CPRINTLN(DEBUG_MISSION, "Player has returned to a vaild vehicle, grabbing vehicle")
|
|
viVeh = viPlayersVeh
|
|
SET_ENTITY_AS_MISSION_ENTITY(viVeh, TRUE, TRUE)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
SK_PRINT("bHasCurrentVehicleBeenChecked = FALSE 1 ")
|
|
ENDIF
|
|
#ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF NOT IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(), viVeh, 80)
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("bIsCarValid = FALSE 2 ")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF NOT DECOR_EXIST_ON(viVeh, "Getaway_Winched")
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR 2 - SAFE_RELEASE_VEHICLE(viVeh)") #ENDIF
|
|
SET_BIT(iHelpTextBit[GET_HELP_BIT_ID(ENUM_TO_INT(HTE_LEFT_CAR))], ENUM_TO_INT(HTE_LEFT_CAR))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
ELSE
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
ENDIF
|
|
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
ELIF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) != viVeh
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("bIsCarValid = FALSE 3 ")
|
|
ENDIF
|
|
#ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR 3 - SAFE_RELEASE_VEHICLE(viVeh)") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_VEH_CAN_BE_USED_FRANK_TREV)
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_VEH_CAN_BE_USED_MIKE)
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_UNSUITABLE_VEH)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bHasCurrentVehicleBeenChecked = FALSE 1 ") #ENDIF
|
|
CLEAR_CAR_RELATED_BITS()
|
|
ELSE
|
|
IF MONITOR_PLAYER_CARGO_BOBBING_CAR()
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("bIsCarValid = FALSE 3 ")
|
|
ENDIF
|
|
#ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR 3 - SAFE_RELEASE_VEHICLE(viVeh)") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("bHasCurrentVehicleBeenChecked = FALSE 1 ") #ENDIF
|
|
CLEAR_CAR_RELATED_BITS()
|
|
ENDIF
|
|
ENDIF
|
|
ELIF NOT IS_GETAWAY_VEHICLE_HEALTHY(viVeh)
|
|
IF DECOR_SET_BOOL(viVeh, "GetawayVehicleValid", FALSE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ADDED decor - GetawayVehicleValid HEALTH = FALSE ") #ENDIF
|
|
ENDIF
|
|
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_VEH_CAN_BE_USED_FRANK_TREV)
|
|
CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HTE_VEH_CAN_BE_USED_MIKE)
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CLEAR_CAR_RELATED_BITS()
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SK_PRINT("bIsCarValid = FALSE 4 ")
|
|
ENDIF
|
|
#ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITOR_PLAYERS_CAR 4 - SAFE_RELEASE_VEHICLE(viVeh)") #ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CLEAR_CAR_RELATED_BITS()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL HAS_CAR_BEEN_PLACED()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
// VEHICLE_INDEX viPlayersVeh = GET_PLAYERS_LAST_VEHICLE()
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
|
|
IF IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION(CHAR_MICHAEL)
|
|
OR IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION(CHAR_TREVOR)
|
|
OR IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION(CHAR_FRANKLIN)
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP, TRUE)
|
|
GRAB_CAR_PLACED_INFO()
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
PROC WAIT_PLACE_FIRST_ITEM()
|
|
MONITOR_RESTRICTED_AREAS()
|
|
MONITOR_PLAYERS_CAR()
|
|
MONITOR_HIDING_PLACE_VALID()
|
|
MONITOR_PHONE_CALL()
|
|
MONITOR_CONTACTS()
|
|
|
|
IF HAS_CAR_BEEN_PLACED()
|
|
MISSION_STATE eNextState
|
|
IF PICK_PHONE_CALL_AND_NEXT_STATE(eNextState)
|
|
|
|
CONTACT_WATCH(FALSE)
|
|
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND IS_PED_STOPPED(PLAYER_PED_ID())
|
|
TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
|
|
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " Telling the player to get out of the getaway vehicle after phone call") #ENDIF
|
|
ENDIF
|
|
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_VEHICLE_DOORS_LOCKED(viVeh, VEHICLELOCK_LOCKED)
|
|
ENDIF
|
|
|
|
UPDATE_SAVED_STATE(eNextState)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MONITOR_GETAWAY()
|
|
MAINTAIN_GETAWAY_VEHICLE()
|
|
MONITOR_PHONE_CALL()
|
|
ENDPROC
|
|
|
|
|
|
PROC MONITOR_PLAYER_ON_FIB4()
|
|
IF MISSION_FLOW_GET_RUNNING_MISSION() = SP_MISSION_FBI_4
|
|
IF IS_REPLAY_IN_PROGRESS()
|
|
AND NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
IF mDroppedOffCarStruct.eModel != DUMMY_MODEL_FOR_SCRIPT
|
|
CPRINTLN(DEBUG_MISSION, "REINITIALISING - Vehicle gen after replay from ", GET_THIS_SCRIPT_NAME())
|
|
UPDATE_DYNAMIC_VEHICLE_GEN_DATA(VEHGEN_MISSION_VEH_FBI4_PREP, mDroppedOffCarStruct, vCarPosition, fCarHeading)
|
|
ENDIF
|
|
ENDIF
|
|
ELIF MISSION_FLOW_GET_RUNNING_MISSION() = SP_MISSION_NONE
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vPotentialHidingPos, 5)
|
|
IF IS_PLAYER_HIGHLIGHTING_CONTACT()
|
|
IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
IF IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
SET_HELP_TEXT_BIT(HTE_ON_FRIEND_ACT)
|
|
ELIF g_bTaxiProceduralRunning
|
|
SET_HELP_TEXT_BIT(HTE_ON_TAXI_MISSION)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_ON_MISSION)
|
|
ENDIF
|
|
eHelpTextState = HTS_DISPLAY
|
|
fHelpDisplayedFor = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DO_ON_MISSION_CHECKS()
|
|
MONITOR_PLAYER_MOVING_VEHICLE_ON_MISSION()
|
|
MONITOR_PLAYER_ON_FIB4()
|
|
ENDPROC
|
|
|
|
PROC WAIT_ON_MISSION()
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF iOnMissionTimerCheck != -1
|
|
// IF (GET_GAME_TIMER() - iOnMissionTimerCheck) > 5000
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "In on mission state", GET_THIS_SCRIPT_NAME())
|
|
// ENDIF
|
|
// ENDIF
|
|
// #ENDIF
|
|
|
|
|
|
DO_ON_MISSION_CHECKS()
|
|
ENDPROC
|
|
|
|
|
|
|
|
SCRIPT
|
|
IF NOT REGISTER_SCRIPT_TO_RELAUNCH_LIST(LAUNCH_BIT_FBI4_PREP3)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "Loading from a save - ", GET_THIS_SCRIPT_NAME())
|
|
#ENDIF
|
|
|
|
eMissionState = INT_TO_ENUM(MISSION_STATE, g_savedGlobals.sAmbient.iGetawayState)
|
|
IF eMissionState = MS_MONITOR_GETAWAY_AREA
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
vCarPosition = GET_VEHICLE_GEN_COORDS(VEHGEN_MISSION_VEH_FBI4_PREP) //talk to kenneth
|
|
fCarHeading = GET_VEHICLE_GEN_HEADING(VEHGEN_MISSION_VEH_FBI4_PREP)
|
|
|
|
IF GET_VEHICLE_GEN_VEHICLE_SETUP_SAVED_DATA(mDroppedOffCarStruct, VEHGEN_MISSION_VEH_FBI4_PREP)
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
ENDIF
|
|
CPRINTLN(DEBUG_MISSION, "Vehicle gen vehicle setup data was found - ")
|
|
ELSE
|
|
SCRIPT_ASSERT("Vehicle gen data was not found for VEHGEN_MISSION_VEH_FBI4_PREP")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_MISSION, "Saved state - ", g_savedGlobals.sAmbient.iGetawayState)
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "First time initialisation - ", GET_THIS_SCRIPT_NAME())
|
|
#ENDIF
|
|
|
|
g_savedGlobals.sAmbient.iGetawayState = ENUM_TO_INT(eMissionState)
|
|
ENDIF
|
|
|
|
|
|
// Setup callback when player is killed, arrested or goes to multiplayer
|
|
IF (HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_DEBUG_MENU|FORCE_CLEANUP_FLAG_REPEAT_PLAY ))
|
|
#IF IS_DEBUG_BUILD SK_PRINT("HAS_FORCE_CLEANUP_OCCURRED") #ENDIF
|
|
IF GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP() = FORCE_CLEANUP_FLAG_SP_TO_MP
|
|
CONTACT_WATCH(FALSE)
|
|
Script_Cleanup(LAUNCH_BIT_FBI4_PREP3, TRUE)
|
|
ELSE
|
|
Script_Cleanup(LAUNCH_BIT_FBI4_PREP3)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bShowDebugText
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE (TRUE)
|
|
ENDIF
|
|
SET_PROFILING_OF_THIS_SCRIPT(TRUE)
|
|
SET_UP_RAG_WIDGETS()
|
|
// BREAK_ON_NATIVE_COMMAND("CLEAR_HELP", FALSE)
|
|
#ENDIF
|
|
|
|
POPULATE_STUFF(FIB4_GETAWAY)
|
|
|
|
// Loop within here until the mission passes or fails
|
|
WHILE(TRUE)
|
|
#IF IS_DEBUG_BUILD
|
|
IF (GET_GAME_TIMER() - iGenericPrintTimer) > 20000
|
|
SK_PRINT("Still looping prep 3 ")
|
|
ENDIF
|
|
#ENDIF
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_4)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("FIB 4 HAS PASSED Clean up Getaway FIB 4 script") #ENDIF
|
|
Script_Cleanup(LAUNCH_BIT_FBI4_PREP3)
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
IF iGenericPrintTimer = -1
|
|
iGenericPrintTimer = GET_GAME_TIMER()
|
|
ELSE
|
|
IF (GET_GAME_TIMER() - iGenericPrintTimer) > 20000
|
|
iGenericPrintTimer = -1
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
IF IS_PED_UNINJURED(PLAYER_PED_ID())
|
|
MONITOR_PLAYER_IN_MOD_SHOP()
|
|
MONITOR_ON_MISSION_STATUS()
|
|
MONITOR_FOR_PLAYER_SWITCH()
|
|
MONITER_HELP_TEXT()
|
|
SWITCH eMissionState
|
|
CASE MS_PLACE_FIRST_ITEM
|
|
WAIT_PLACE_FIRST_ITEM()
|
|
BREAK
|
|
|
|
CASE MS_MONITOR_GETAWAY_AREA
|
|
MONITOR_GETAWAY()
|
|
BREAK
|
|
|
|
CASE MS_WAIT_ON_MISSION
|
|
WAIT_ON_MISSION()
|
|
BREAK
|
|
|
|
CASE MS_DISPLAYING_SPLASH
|
|
DISPLAY_SPLASH(FLOWFLAG_MISSION_FBI_4_PREP_3_COMPLETED)
|
|
BREAK
|
|
|
|
CASE MS_DONE
|
|
|
|
BREAK
|
|
DEFAULT
|
|
SCRIPT_ASSERT("Getaway car mission state is invalid. Add bug and include details about if loaded from a save or if there where any RE's or minigames around at the time")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_WIDGET()
|
|
// Check debug completion/failure
|
|
UPDATE_DEBUG_PASS()
|
|
#ENDIF
|
|
SAFE_MONITOR_CONTACT_HIGHLIGHT()
|
|
ELSE
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP, TRUE)
|
|
ENDIF
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF (GET_GAME_TIMER() - iGenericPrintTimer) > 2000
|
|
// SK_PRINT("B ")
|
|
// ENDIF
|
|
// #ENDIF
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
// Script should never reach here. Always terminate with cleanup function.
|
|
ENDSCRIPT
|
|
|