999 lines
28 KiB
Scheme
Executable File
999 lines
28 KiB
Scheme
Executable File
USING "RC_Area_public.sch"
|
|
USING "RC_helper_functions.sch"
|
|
USING "RC_threat_public.sch"
|
|
|
|
ENUM COP_MONITOR
|
|
CM_MONITER,
|
|
CM_INIT_WANTED,
|
|
CM_LOSING_WANTED
|
|
ENDENUM
|
|
|
|
ENUM IN_STEAL_CAR_MONITOR
|
|
ISCM_NOT_IN_VEHICLE,
|
|
ISCM_IN_VEHICLE,
|
|
ISCM_IN_ANY_VEHICLE,
|
|
ISCM_IS_TOWING_VEHICLE
|
|
ENDENUM
|
|
|
|
ENUM DYNAMIC_PHONE_STATE
|
|
DPS_CHOOSE_PHONE_CALL,
|
|
DPS_CONV_STARTED,
|
|
DPS_UPDATE_LINE,
|
|
DPS_WAITING_LAST_LINE,
|
|
DPS_REGISTER_PASS_CALL_AND_QUIT
|
|
ENDENUM
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// objstr -
|
|
/// Show -
|
|
PROC PRINT_OBJ(String objstr, BOOL &Show)
|
|
IF NOT Show
|
|
PRINT_NOW(objstr, DEFAULT_GOD_TEXT_TIME,0)
|
|
CPRINTLN(DEBUG_MISSION, " Showing objective = ", objstr)
|
|
Show = TRUE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Adds a blip to a location safly checking to see that its not in existance before creatinging it
|
|
/// PARAMS:
|
|
/// blipIn - The blip index to write the newly created blip to
|
|
/// pos - the position to set the blip at
|
|
/// route - should the blip have a GPS route
|
|
PROC ADD_BLIP_LOCATION(BLIP_INDEX &blipIn, VECTOR pos, BOOL route = TRUE)
|
|
IF NOT DOES_BLIP_EXIST(blipIn)
|
|
blipIn = CREATE_COORD_BLIP(pos, BLIPPRIORITY_MED, route)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Adds blip to Peds first checking that the blip doesnt exist then if the ped is ok. Also can set the ped to be enemy blip or not
|
|
/// PARAMS:
|
|
/// blipIn - The blip index to write the newly created blip to
|
|
/// pedindex - The ped to add the blip to
|
|
/// bFriendly - Is the ped an enemy if TRUE the blip is blue
|
|
PROC ADD_SAFE_BLIP_TO_PED(BLIP_INDEX &blipIn, PED_INDEX pedindex, BOOL bFriendly = FALSE, BOOL bCritical = TRUE)
|
|
IF NOT DOES_BLIP_EXIST(blipIn)
|
|
blipIn = CREATE_PED_BLIP(pedindex, bCritical, bFriendly)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Adds blip to vehicle checking blip doesnt exist then that the vehicle does
|
|
/// PARAMS:
|
|
/// blipIn - The blip index to write the newly created blip to
|
|
/// vhc - The vehicle to add the blip to
|
|
/// benemy - Is the vehicle an enemy if false the blip is blue
|
|
PROC ADD_SAFE_BLIP_TO_VEHICLE(BLIP_INDEX &blipIn, VEHICLE_INDEX vhc, BOOL bFriendly = FALSE)
|
|
IF NOT DOES_BLIP_EXIST(blipIn)
|
|
blipIn = CREATE_VEHICLE_BLIP(vhc, bFriendly)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC MARK_PREP_START_CAR_AS_VEH_GEN()
|
|
VEHICLE_INDEX veh = GET_PLAYERS_LAST_VEHICLE()
|
|
IF DOES_ENTITY_EXIST(veh)
|
|
IF IS_VEHICLE_DRIVEABLE(veh)
|
|
CPRINTLN(DEBUG_MISSION, "Setting snapshop vehicle as vehicle get for prep ", GET_THIS_SCRIPT_NAME())
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(veh, GET_ENTITY_COORDS(veh), GET_ENTITY_HEADING(veh))
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, " vehicle not drivable ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "vehicle doesnt exist ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// MissionID -
|
|
/// RETURNS:
|
|
///
|
|
FUNC STRING GET_PREP_TAKE_VEHICLE_BACK_OBJ(SP_MISSIONS MissionID, BOOL SecondObj = FALSE)
|
|
STRING sObj
|
|
SWITCH MissionID
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
sObj = "PRA_TAKBACK"
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
sObj = "PRB_TAKBACK"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_A
|
|
sObj = "PR_TAKBACK"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_C1
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C2
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C3
|
|
IF NOT SecondObj
|
|
sObj = "PRF_TAKBACK"
|
|
ELSE
|
|
sObj = "PRF_GARAGE"
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sObj
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// MissionID -
|
|
/// RETURNS:
|
|
///
|
|
FUNC STRING GET_PREP_RETURN_TO_VEHICLE_OBJ(SP_MISSIONS MissionID)
|
|
STRING sObj
|
|
SWITCH MissionID
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
sObj = "PRA_RETVEH"
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
sObj = "PRB_RETVEH"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_A
|
|
sObj = "PR_RETVEH"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_C1
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C2
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C3
|
|
sObj = "PRF_RETVEH"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sObj
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// MissionID -
|
|
/// RETURNS:
|
|
///
|
|
FUNC STRING GET_PREP_LEAVE_VEHICLE_OBJ(SP_MISSIONS MissionID)
|
|
STRING sObj
|
|
SWITCH MissionID
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
sObj = "PRA_LEVVEH"
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
sObj = "PRB_LEVVEH"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_A
|
|
sObj = "PR_LEVVEH"
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_C1
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C2
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C3
|
|
sObj = "PRF_LEAVE"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sObj
|
|
ENDFUNC
|
|
|
|
FUNC TEXT_LABEL_15 GET_UPDATE_STRING_FOR_PREP(BOOL bMissionAvailable)
|
|
TEXT_LABEL_15 sString
|
|
IF bMissionAvailable
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
CASE CHAR_FRANKLIN
|
|
sString = "FBI4_ISAGO"
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
sString = "FBI4_ISAGO"
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
CASE CHAR_FRANKLIN
|
|
sString = "FBI4_THATSIT"
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
sString = "FBI4_THATSIT"
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN sString
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// MissionID -
|
|
/// RETURNS:
|
|
///
|
|
FUNC MODEL_NAMES GET_PREP_VEHICLE_VALID_MODEL(SP_MISSIONS MissionID)
|
|
MODEL_NAMES Name
|
|
SWITCH MissionID
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
Name = TRASH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
Name = TOWTRUCK
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_A
|
|
Name = DUMMY_MODEL_FOR_SCRIPT
|
|
BREAK
|
|
|
|
CASE SP_HEIST_FINALE_PREP_C1
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C2
|
|
FALLTHRU
|
|
CASE SP_HEIST_FINALE_PREP_C3
|
|
Name = GAUNTLET
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN Name
|
|
ENDFUNC
|
|
|
|
FUNC enumCharacterList GET_CONTACT_TO_CALL()
|
|
enumCharacterList returnChar
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
returnChar = CHAR_FRANK_TREV_CONF
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
returnChar = CHAR_MIKE_TREV_CONF
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
returnChar = CHAR_MIKE_FRANK_CONF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN returnChar
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
FUNC STRING GET_PASS_CALL_FOR_PLAYER_CHAR()
|
|
STRING sCall
|
|
SWITCH MISSION_FLOW_GET_RUNNING_MISSION()
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
sCall = "FBIP1_MENDC"
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
sCall = "FBIP1_FENDC"
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
sCall = "FBIP1_TENDC"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
sCall = "FBIP2_MENDC"
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
sCall = "FBIP2_FENDC"
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
sCall = "FBIP2_TENDC"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_4
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
sCall = "FBIP4_MENDC"
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
sCall = "FBIP4_FENDC"
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
sCall = "FBIP4_TENDC"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_5
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
sCall = "FBIP5_MENDC"
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
sCall = "FBIP5_FENDC"
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
sCall = "FBIP5_TENDC"
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
RETURN sCall
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
FUNC CC_CommID GET_PASS_COMM_ID_FOR_PLAYER_CHAR()
|
|
SWITCH MISSION_FLOW_GET_RUNNING_MISSION()
|
|
CASE SP_MISSION_FBI_4_PREP_1
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
RETURN CALL_FIB4_P1_M_DONE
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN CALL_FIB4_P1_F_DONE
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN CALL_FIB4_P1_T_DONE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_2
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
RETURN CALL_FIB4_P2_M_DONE
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN CALL_FIB4_P2_F_DONE
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN CALL_FIB4_P2_T_DONE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_4
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
RETURN CALL_FIB4_P4_M_DONE
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN CALL_FIB4_P4_F_DONE
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN CALL_FIB4_P4_T_DONE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE SP_MISSION_FBI_4_PREP_5
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
RETURN CALL_FIB4_P5_M_DONE
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
RETURN CALL_FIB4_P5_F_DONE
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
RETURN CALL_FIB4_P5_T_DONE
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
RETURN COMM_NONE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
PROC REGISTER_PASS_CALL()
|
|
enumCharacterList eChar
|
|
REPEAT MAX_BATTLE_BUDDIES eChar
|
|
|
|
PED_INDEX hBuddy = GET_BATTLEBUDDY_PED(eChar)
|
|
|
|
IF NOT IS_PED_INJURED(hBuddy)
|
|
// Does script need to take control of buddy and drive to dest?
|
|
IF IS_BATTLEBUDDY_AVAILABLE(hBuddy, FALSE)
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
REGISTER_CALL_FROM_PLAYER_TO_CHARACTER(GET_PASS_COMM_ID_FOR_PLAYER_CHAR(), CT_END_OF_MISSION, GET_CURRENT_PLAYER_PED_ENUM(), GET_CONTACT_TO_CALL(), 9, CC_END_OF_MISSION_QUEUE_TIME, CC_END_OF_MISSION_QUEUE_TIME)
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC REGISTER_PASS_CALL_LAST_PREP(BOOL bMissionAvailable)
|
|
// enumCharacterList eChar
|
|
// REPEAT MAX_BATTLE_BUDDIES eChar
|
|
//
|
|
// PED_INDEX hBuddy = GET_BATTLEBUDDY_PED(eChar)
|
|
//
|
|
// IF NOT IS_PED_INJURED(hBuddy)
|
|
// // Does script need to take control of buddy and drive to dest?
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddy, FALSE)
|
|
// EXIT
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
|
|
IF bMissionAvailable
|
|
REGISTER_CALL_FROM_PLAYER_TO_CHARACTER(CALL_FIB4_PREPS_DONE, CT_END_OF_MISSION, GET_CURRENT_PLAYER_PED_ENUM(), CHAR_STEVE, 3, CC_END_OF_MISSION_QUEUE_TIME, CC_END_OF_MISSION_QUEUE_TIME)
|
|
ELSE
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_ASSASSIN_1)
|
|
REGISTER_CALL_FROM_PLAYER_TO_CHARACTER(CALL_FIB4_PREPS_DONE_WAIT, CT_END_OF_MISSION, GET_CURRENT_PLAYER_PED_ENUM(), CHAR_STEVE, 3, CC_END_OF_MISSION_QUEUE_TIME, CC_END_OF_MISSION_QUEUE_TIME,VID_BLANK,CID_TEXT_ASS1_REMINDER)
|
|
ELSE
|
|
REGISTER_CALL_FROM_PLAYER_TO_CHARACTER(CALL_FIB4_PREPS_DONE_WAIT, CT_END_OF_MISSION, GET_CURRENT_PLAYER_PED_ENUM(), CHAR_STEVE, 3, CC_END_OF_MISSION_QUEUE_TIME, CC_END_OF_MISSION_QUEUE_TIME)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
INT iCount = 0
|
|
INT iPrepMission
|
|
|
|
FOR iPrepMission = ENUM_TO_INT(SP_MISSION_FBI_4_PREP_1) TO ENUM_TO_INT(SP_MISSION_FBI_4_PREP_5)
|
|
CPRINTLN(DEBUG_MISSION, "PREP MISSION = = ", iPrepMission)
|
|
IF GET_MISSION_COMPLETE_STATE(INT_TO_ENUM(SP_MISSIONS, iPrepMission))
|
|
iCount++
|
|
CPRINTLN(DEBUG_MISSION, "iCount = = ", iCount)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_PREP_3_COMPLETED)
|
|
iCount++
|
|
CPRINTLN(DEBUG_MISSION, "iCount = = ", iCount)
|
|
ENDIF
|
|
|
|
IF iCount = 4
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL ARE_OTHER_STORY_MISSIONS_COMPLETE()
|
|
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FRANKLIN_1)
|
|
AND GET_MISSION_COMPLETE_STATE(SP_MISSION_ASSASSIN_1)
|
|
AND GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_5)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL IS_FIB4_AVAILABLE_AFTER_PASSED()
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF (GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)
|
|
OR GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2B)) //probaly wrong but kinda makes sence testing needed
|
|
AND ARE_OTHER_STORY_MISSIONS_COMPLETE()
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL UPDATE_PHONE_STATES(DYNAMIC_PHONE_STATE &state, TEXT_LABEL_15 &sPhoneUpdateString, structPedsForConversation &s_conversation_peds)
|
|
SWITCH state
|
|
CASE DPS_CHOOSE_PHONE_CALL
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF (GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)
|
|
OR GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2B)) //probaly wrong but kinda makes sence testing needed
|
|
AND ARE_OTHER_STORY_MISSIONS_COMPLETE()
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
CPRINTLN(DEBUG_MISSION, "All Preps complete and Docks heist is complete, Player is Michael rings steve conv = FBI4_READY" )
|
|
REGISTER_PASS_CALL_LAST_PREP(TRUE)
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_UNLOCKED_FROM_PREP, TRUE)
|
|
state = DPS_REGISTER_PASS_CALL_AND_QUIT
|
|
ELSE
|
|
|
|
ADD_PED_FOR_DIALOGUE(s_conversation_peds, 0, NULL, "MICHAEL")
|
|
IF PLAYER_MAKE_CONFERENCE_CALL(s_conversation_peds, GET_CONTACT_TO_CALL(), GET_CURRENT_PLAYER_PED_ENUM(), "FBIPRAU", GET_PASS_CALL_FOR_PLAYER_CHAR(), CONV_PRIORITY_VERY_HIGH)
|
|
sPhoneUpdateString = GET_UPDATE_STRING_FOR_PREP(TRUE)
|
|
CPRINTLN(DEBUG_MISSION, "All Preps complete and Docks heist is complete, Player is NOT MIKE update string = ", sPhoneUpdateString )
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_UNLOCKED_FROM_PREP, TRUE)
|
|
state = DPS_CONV_STARTED
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
CPRINTLN(DEBUG_MISSION, "All Preps complete BUT Docks heist NOT complete, Player is Michael rings steve conv = FBI4_WAIT" )
|
|
REGISTER_PASS_CALL_LAST_PREP(FALSE)
|
|
state = DPS_REGISTER_PASS_CALL_AND_QUIT
|
|
ELSE
|
|
ADD_PED_FOR_DIALOGUE(s_conversation_peds, 0, NULL, "MICHAEL")
|
|
IF PLAYER_MAKE_CONFERENCE_CALL(s_conversation_peds, GET_CONTACT_TO_CALL(), GET_CURRENT_PLAYER_PED_ENUM(), "FBIPRAU", GET_PASS_CALL_FOR_PLAYER_CHAR(), CONV_PRIORITY_VERY_HIGH)
|
|
sPhoneUpdateString = GET_UPDATE_STRING_FOR_PREP(FALSE)
|
|
CPRINTLN(DEBUG_MISSION, "All Preps complete BUT Docks heist NOT complete, Player is NOT MIKE update string = ", sPhoneUpdateString, " Normal conversation is = ", GET_PASS_CALL_FOR_PLAYER_CHAR() )
|
|
state = DPS_CONV_STARTED
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "All preps not complete just a normal call, register and pass mission")
|
|
REGISTER_PASS_CALL()
|
|
state = DPS_REGISTER_PASS_CALL_AND_QUIT
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE DPS_CONV_STARTED
|
|
IF IS_CELLPHONE_CONVERSATION_PLAYING()
|
|
CPRINTLN(DEBUG_MISSION, "Call going on script line is = ", GET_CURRENT_SCRIPTED_CONVERSATION_LINE())
|
|
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 0
|
|
CPRINTLN(DEBUG_MISSION, "Setting dynamic line = ", sPhoneUpdateString)
|
|
SET_DYNAMIC_BRANCH_FOR_ONGOING_CALL("FBIPRAU", sPhoneUpdateString)
|
|
PLAY_DYNAMIC_BRANCH()
|
|
state = DPS_WAITING_LAST_LINE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "SET call interupted = DPS_WAITING_LAST_LINE") #ENDIF
|
|
state = DPS_WAITING_LAST_LINE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE DPS_UPDATE_LINE
|
|
|
|
BREAK
|
|
|
|
CASE DPS_WAITING_LAST_LINE
|
|
CPRINTLN(DEBUG_MISSION, "Waiting for the line to finish")
|
|
IF NOT IS_CELLPHONE_CONVERSATION_PLAYING()
|
|
IF NOT IS_PHONE_ONSCREEN()
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_ASSASSIN_1)
|
|
AND ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
Execute_Code_ID(CID_TEXT_ASS1_REMINDER)
|
|
CPRINTLN(DEBUG_MISSION, "Execute_Code_ID from script - ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
CPRINTLN(DEBUG_MISSION, "Mobile call isnt going on after waiting for the line to finish")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE DPS_REGISTER_PASS_CALL_AND_QUIT
|
|
CPRINTLN(DEBUG_MISSION, "DPS_REGISTER_PASS_CALL_AND_QUIT - returning true to end mission call has been registered")
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC MONITOR_ENTERING_ANY_VALID_VEHICLE(VEHICLE_INDEX &StealVeh)
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
VEHICLE_INDEX viVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
IF viVeh != StealVeh
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF GET_ENTITY_MODEL(viVeh) = GET_PREP_VEHICLE_VALID_MODEL(MISSION_FLOW_GET_RUNNING_MISSION())
|
|
|
|
// IF GET_PREP_VEHICLE_VALID_MODEL(MISSION_FLOW_GET_RUNNING_MISSION()) = GAUNTLET
|
|
// IF IS_VEHICLE_PLAYER_BOUGHT(viVeh)
|
|
// EXIT
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
SAFE_RELEASE_VEHICLE(StealVeh)
|
|
StealVeh = viVeh
|
|
SET_VEHICLE_AS_RESTRICTED(StealVeh, 1)
|
|
SET_ENTITY_AS_MISSION_ENTITY(StealVeh, TRUE, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC MONITOR_ENTERING_ANY_TRUCK(VEHICLE_INDEX &vehSteal, VEHICLE_INDEX &Anyveh)
|
|
IF NOT bJumpSkip
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
VEHICLE_INDEX viVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
|
|
IF viVeh != vehSteal
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
MODEL_NAMES mod = GET_ENTITY_MODEL(viVeh)
|
|
IF mod = TRASH
|
|
Anyveh = vehSteal
|
|
SAFE_RELEASE_VEHICLE(vehSteal)
|
|
vehSteal = viVeh
|
|
SET_VEHICLE_AS_RESTRICTED(vehSteal, 1)
|
|
SET_VEHICLE_AS_RESTRICTED(Anyveh, 3)
|
|
IF NOT IS_ENTITY_A_MISSION_ENTITY(vehSteal)
|
|
SET_ENTITY_AS_MISSION_ENTITY(vehSteal, TRUE, TRUE)
|
|
ENDIF
|
|
ELIF mod = TOWTRUCK
|
|
ENTITY_INDEX ent = GET_ENTITY_ATTACHED_TO_TOW_TRUCK (GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
IF IS_ENTITY_ALIVE(ent)
|
|
viVeh = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(ent)
|
|
IF GET_ENTITY_MODEL(viVeh) = TRASH
|
|
Anyveh = vehSteal
|
|
SAFE_RELEASE_VEHICLE(vehSteal)
|
|
vehSteal = viVeh
|
|
SET_VEHICLE_AS_RESTRICTED(vehSteal, 1)
|
|
SET_VEHICLE_AS_RESTRICTED(Anyveh, 3)
|
|
IF NOT IS_ENTITY_A_MISSION_ENTITY(vehSteal)
|
|
SET_ENTITY_AS_MISSION_ENTITY(vehSteal, TRUE, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// veh -
|
|
/// State -
|
|
/// Vehblip -
|
|
/// blip -
|
|
/// pos -
|
|
PROC MONITOR_IN_STEAL_CAR(VEHICLE_INDEX &vehSteal, VEHICLE_INDEX &vehAny, IN_STEAL_CAR_MONITOR &State, BLIP_INDEX &Vehblip, BLIP_INDEX &blip, VECTOR pos, VEHICLE_INDEX vehMission = NULL, BOOL bSecondObj = FALSE, FLOAT fDropoffDist = 8.0)
|
|
IF IS_VEHICLE_OK(vehSteal)
|
|
SWITCH State
|
|
CASE ISCM_NOT_IN_VEHICLE //wait for player to be in the truck
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehSteal)
|
|
SAFE_REMOVE_BLIP(Vehblip)
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
IF vehSteal = vehMission
|
|
State = ISCM_IN_VEHICLE
|
|
ELSE
|
|
State = ISCM_IN_ANY_VEHICLE
|
|
ENDIF
|
|
ELIF IS_PLAYER_TOWING_VEHICLE(vehSteal)
|
|
OR IS_PLAYER_FLYING_WITH_ATTACHED_VEHICLE(vehSteal)
|
|
SAFE_REMOVE_BLIP(Vehblip)
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
State = ISCM_IS_TOWING_VEHICLE
|
|
ELSE
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION(), bSecondObj))
|
|
CLEAR_THIS_PRINT(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION(), bSecondObj))
|
|
ENDIF
|
|
|
|
IF MISSION_FLOW_GET_RUNNING_MISSION() != SP_MISSION_FBI_4_PREP_1
|
|
MONITOR_ENTERING_ANY_VALID_VEHICLE(vehSteal)
|
|
ELSE
|
|
MONITOR_ENTERING_ANY_TRUCK(vehSteal, vehAny)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ISCM_IN_ANY_VEHICLE
|
|
FALLTHRU
|
|
CASE ISCM_IN_VEHICLE //watch for player to be in the truck
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehSteal)
|
|
AND NOT IS_PLAYER_TOWING_VEHICLE(vehSteal)
|
|
AND NOT IS_PLAYER_FLYING_WITH_ATTACHED_VEHICLE(vehSteal)
|
|
SAFE_REMOVE_BLIP(blip)
|
|
IF NOT IS_ENTITY_AT_COORD(vehSteal, pos, <<fDropoffDist, fDropoffDist, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_IN_VEHICLE)
|
|
ADD_SAFE_BLIP_TO_VEHICLE(Vehblip, vehSteal, TRUE)
|
|
ENDIF
|
|
State = ISCM_NOT_IN_VEHICLE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ISCM_IS_TOWING_VEHICLE
|
|
IF NOT IS_PLAYER_TOWING_VEHICLE(vehSteal)
|
|
AND NOT IS_PLAYER_FLYING_WITH_ATTACHED_VEHICLE(vehSteal)
|
|
SAFE_REMOVE_BLIP(blip)
|
|
IF NOT IS_ENTITY_AT_COORD(vehSteal, pos, <<fDropoffDist, fDropoffDist, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_IN_VEHICLE)
|
|
ADD_SAFE_BLIP_TO_VEHICLE(Vehblip, vehSteal, TRUE)
|
|
ENDIF
|
|
State = ISCM_NOT_IN_VEHICLE
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ELSE
|
|
IF MISSION_FLOW_GET_RUNNING_MISSION() != SP_MISSION_FBI_4_PREP_1
|
|
MONITOR_ENTERING_ANY_VALID_VEHICLE(vehSteal)
|
|
ELSE
|
|
MONITOR_ENTERING_ANY_TRUCK(vehSteal, vehAny)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// blip -
|
|
/// pos -
|
|
/// state -
|
|
/// inCarState -
|
|
/// bObj -
|
|
/// expireReturn -
|
|
PROC MONITER_PLAYER_WANTED(BLIP_INDEX &blip, VECTOR pos, COP_MONITOR &state, IN_STEAL_CAR_MONITOR inCarState, BOOL &bObj, BOOL &expireReturnWant)
|
|
SWITCH state
|
|
CASE CM_MONITER
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0
|
|
state = CM_INIT_WANTED
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CM_INIT_WANTED
|
|
SAFE_REMOVE_BLIP(blip)
|
|
IF inCarState = ISCM_IN_VEHICLE
|
|
OR inCarState = ISCM_IN_ANY_VEHICLE
|
|
OR inCarState = ISCM_IS_TOWING_VEHICLE
|
|
CLEAR_PRINTS()
|
|
PRINT_NOW("LOSE_WANTED", DEFAULT_GOD_TEXT_TIME, 0)
|
|
state = CM_LOSING_WANTED
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CM_LOSING_WANTED
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) = 0
|
|
CLEAR_PRINTS()
|
|
IF inCarState = ISCM_IN_VEHICLE
|
|
OR inCarState = ISCM_IN_ANY_VEHICLE
|
|
OR inCarState = ISCM_IS_TOWING_VEHICLE
|
|
PRINT_OBJ(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), bObj)
|
|
ADD_BLIP_LOCATION(blip, pos)
|
|
ELIF inCarState = ISCM_NOT_IN_VEHICLE
|
|
AND NOT expireReturnWant
|
|
PRINT_NOW(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), DEFAULT_GOD_TEXT_TIME, 0)
|
|
expireReturnWant = TRUE
|
|
ENDIF
|
|
state = CM_MONITER
|
|
// ELSE
|
|
// IF inCarState = ISCM_NOT_IN_VEHICLE
|
|
// AND NOT expireReturnWant
|
|
// CLEAR_PRINTS()
|
|
// PRINT_NOW(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), DEFAULT_GOD_TEXT_TIME, 0)
|
|
// expireReturnWant = TRUE
|
|
// ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// veh -
|
|
/// pos -
|
|
/// blip -
|
|
/// bObj -
|
|
/// state -
|
|
/// inCarState -
|
|
/// expireReturnVeh -
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL RETURN_STOLEN_VEHICLE(VEHICLE_INDEX veh, VECTOR pos, BLIP_INDEX &blip, COP_MONITOR state, IN_STEAL_CAR_MONITOR inCarState, BOOL &bObj, BOOL &expireReturnVeh, BOOL bSecondObj = FALSE, BOOL bUsePlayerCheck = FALSE, FLOAT fDropoff = LOCATE_SIZE_ANY_MEANS)
|
|
IF inCarState = ISCM_IN_VEHICLE
|
|
OR inCarState = ISCM_IN_ANY_VEHICLE
|
|
OR inCarState = ISCM_IS_TOWING_VEHICLE
|
|
IF state = CM_MONITER
|
|
ADD_BLIP_LOCATION(blip, pos)
|
|
IF NOT bUsePlayerCheck
|
|
IF IS_VEHICLE_OK(veh)
|
|
IF IS_ENTITY_AT_COORD(veh, pos, <<fDropoff, fDropoff, LOCATE_SIZE_HEIGHT>>, TRUE, TRUE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), pos, <<fDropoff, fDropoff, LOCATE_SIZE_HEIGHT>>, TRUE, TRUE, TM_IN_VEHICLE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
|
|
IF NOT IS_PLAYER_IN_ANY_SHOP()
|
|
PRINT_OBJ(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION(), bSecondObj), bObj)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF state = CM_MONITER
|
|
IF NOT expireReturnVeh
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
PRINT_NOW(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), DEFAULT_GOD_TEXT_TIME, 0)
|
|
expireReturnVeh = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// veh -
|
|
/// pos -
|
|
/// blip -
|
|
/// inCarstate -
|
|
/// copState -
|
|
/// forceStop -
|
|
/// expireReturnVeh -
|
|
/// callTimerDelay -
|
|
/// callTimer -
|
|
/// bObj -
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL LEAVE_VEHICLE_STEAL(VEHICLE_INDEX veh, VECTOR pos, BLIP_INDEX &blip, IN_STEAL_CAR_MONITOR inCarstate, COP_MONITOR copState, BOOL &forceStop, BOOL &expireReturnVeh, INT &callTimerDelay, BOOL &callTimer, BOOL &bObj, FLOAT fDropoff = 8.0)
|
|
IF inCarstate = ISCM_IN_VEHICLE
|
|
OR inCarState = ISCM_IN_ANY_VEHICLE
|
|
OR inCarState = ISCM_IS_TOWING_VEHICLE
|
|
IF copState = CM_MONITER
|
|
IF IS_VEHICLE_OK(veh)
|
|
IF NOT IS_ENTITY_UPSIDEDOWN(veh)
|
|
PRINT_OBJ(GET_PREP_LEAVE_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), bObj)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), pos, <<fDropoff, fDropoff, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_IN_VEHICLE)
|
|
IS_ENTITY_AT_COORD(PLAYER_PED_ID(), pos, <<fDropoff, fDropoff, LOCATE_SIZE_HEIGHT>>, TRUE, TRUE, TM_IN_VEHICLE)
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_LEAVE_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_LEAVE_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
|
|
forceStop = TRUE
|
|
ADD_BLIP_LOCATION(blip, pos)
|
|
ELSE
|
|
IF forceStop
|
|
FLOAT StopDist = fDropoff/2
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), pos, StopDist)
|
|
forceStop = FALSE
|
|
STOP_MY_VEHICLE()
|
|
ENDIF
|
|
ENDIF
|
|
SAFE_REMOVE_BLIP(blip)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_ENTITY_AT_COORD(veh, pos, <<fDropoff, fDropoff, LOCATE_SIZE_HEIGHT>>, FALSE, TRUE, TM_IN_VEHICLE)
|
|
IF callTimerDelay = -1
|
|
SET_VEHICLE_DOORS_LOCKED(veh, VEHICLELOCK_LOCKED)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT callTimer
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_LEAVE_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
callTimerDelay = GET_GAME_TIMER()
|
|
callTimer = TRUE
|
|
SET_VEHICLE_DOORS_LOCKED(veh, VEHICLELOCK_LOCKED)
|
|
ELSE
|
|
IF (GET_GAME_TIMER() - callTimerDelay) > 3000
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_VEHICLE_DOOR_LOCK_STATUS(veh) = VEHICLELOCK_LOCKED
|
|
SET_VEHICLE_DOORS_LOCKED(veh, VEHICLELOCK_UNLOCKED)
|
|
ENDIF
|
|
|
|
IF NOT expireReturnVeh
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
CLEAR_THIS_PRINT(GET_PREP_TAKE_VEHICLE_BACK_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
ENDIF
|
|
IF NOT IS_THIS_PRINT_BEING_DISPLAYED(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()))
|
|
PRINT_NOW(GET_PREP_RETURN_TO_VEHICLE_OBJ(MISSION_FLOW_GET_RUNNING_MISSION()), DEFAULT_GOD_TEXT_TIME, 0)
|
|
expireReturnVeh = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
forceStop = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC CLOSE_MASK_SHOP_ON_OTHER_PREP()
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_4_PREP_4)
|
|
SET_SHOP_IS_AVAILABLE(CLOTHES_SHOP_A_01_VB, FALSE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC OPEN_MASK_SHOP_ON_OTHER_PREP()
|
|
SET_SHOP_IS_AVAILABLE(CLOTHES_SHOP_A_01_VB, TRUE)
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_CAR_STUCK(VEHICLE_INDEX veh)
|
|
IF IS_VEHICLE_OK(veh)
|
|
IF IS_VEHICLE_STUCK_TIMER_UP(veh, VEH_STUCK_ON_ROOF, ROOF_TIME)
|
|
OR IS_VEHICLE_STUCK_TIMER_UP(veh, VEH_STUCK_JAMMED, JAMMED_TIME)
|
|
OR IS_VEHICLE_STUCK_TIMER_UP(veh, VEH_STUCK_HUNG_UP, HUNG_UP_TIME)
|
|
OR IS_VEHICLE_STUCK_TIMER_UP(veh, VEH_STUCK_ON_SIDE, SIDE_TIME)
|
|
RETURN TRUE
|
|
ELSE
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC INT GET_REQUIRED_CASH_FOR_ITEM(enumBankAccountName ePlayerAccount, INT iAmountNeeded)
|
|
INT iCash
|
|
iCash = GET_ACCOUNT_BALANCE(ePlayerAccount) - iAmountNeeded
|
|
RETURN iCash
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_PLAYER_HAVE_THE_CASH(BOOL bPlayerBoughtThing, INT iAmountNeeded)
|
|
IF NOT bPlayerBoughtThing
|
|
enumBankAccountName ePlayerAccount
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
ePlayerAccount = BANK_ACCOUNT_MICHAEL
|
|
BREAK
|
|
|
|
CASE CHAR_FRANKLIN
|
|
ePlayerAccount = BANK_ACCOUNT_FRANKLIN
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
ePlayerAccount = BANK_ACCOUNT_TREVOR
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF GET_REQUIRED_CASH_FOR_ITEM(ePlayerAccount, iAmountNeeded) < 0
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
PROC ADD_CURRENT_PLAYER_FOR_DIALOGUE(structPedsForConversation &s_conversation_peds)
|
|
INT i
|
|
STRING voice
|
|
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
i = 0
|
|
voice = "MICHAEL"
|
|
BREAK
|
|
|
|
CASE CHAR_FRANKLIN
|
|
i = 1
|
|
voice = "FRANKLIN"
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
i = 2
|
|
voice = "TREVOR"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ADD_PED_FOR_DIALOGUE(s_conversation_peds, i, PLAYER_PED_ID(), voice)
|
|
ENDPROC
|
|
|