5402 lines
198 KiB
XML
Executable File
5402 lines
198 KiB
XML
Executable File
USING "respawn_location_private.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "flow_mission_trigger_public.sch"
|
|
USING "RC_helper_functions.sch"
|
|
USING "friends_private.sch"
|
|
|
|
CONST_INT MAX_INVALIDMODS 10
|
|
CONST_FLOAT MAX_STREAM_IN_DIST 100.0 // Distance at which the scene loads and is created.
|
|
CONST_INT MAX_RESTRICTED_AREAS 32
|
|
CONST_INT MAX_RESTRICTED_ZONES 13
|
|
CONST_INT MAX_HELP_BITFIELDS 2
|
|
|
|
ENUM GETAWAY_ID
|
|
FIB4_GETAWAY,
|
|
AGENCY_GETAWAY,
|
|
FIN_GETAWAY
|
|
ENDENUM
|
|
|
|
ENUM MISSION_STATE
|
|
MS_PLACE_FIRST_ITEM = 0,
|
|
MS_DROP_OFF_AGENCY_CAR,
|
|
MS_MONITOR_GETAWAY_AREA,
|
|
MS_WAIT_ON_MISSION,
|
|
MS_DISPLAYING_SPLASH,
|
|
MS_DONE
|
|
ENDENUM
|
|
|
|
ENUM COP_MONITOR
|
|
CM_MONITER,
|
|
CM_INIT_WANTED,
|
|
CM_LOSING_WANTED
|
|
ENDENUM
|
|
|
|
ENUM HELP_TEXT_STATES
|
|
HTS_WAITING_HELP,
|
|
HTS_DISPLAY,
|
|
HTS_WAIT_DISPLAY,
|
|
HTS_DISPLAYING,
|
|
HTS_FINISHED
|
|
ENDENUM
|
|
|
|
ENUM PHONE_CALL_STATE
|
|
PCS_NULL,
|
|
PCS_CONV_STARTED,
|
|
PCS_UPDATE_LINE,
|
|
PCS_WAITING_LAST_LINE,
|
|
PCS_WAITING_PHONE_AWAY,
|
|
PCS_DO_EXITED_VEHICLE_LINE
|
|
ENDENUM
|
|
|
|
ENUM RESTRICTION_TYPE
|
|
RT_PUBLIC_AREA= 0,
|
|
RT_RESIDENTAL_AREA,
|
|
RT_LAW_ENFORCEMENT,
|
|
RT_INACCESSIBLE,
|
|
RT_NO_RESTRICTION,
|
|
NUM_AREA_TYPES
|
|
ENDENUM
|
|
|
|
ENUM RESTRICTED_AREA_MONITOR_STATES
|
|
RAMS_SLEEPING,
|
|
RAMS_CHECK_IF_AREAS_IN_RANGE
|
|
ENDENUM
|
|
|
|
ENUM GETAWAY_FLOW_FLAGS
|
|
GFF_IS_CAR_VALID = 0, //0
|
|
GFF_IS_HIDING_POS_VALID, //1
|
|
GFF_IS_PLAYER_NEAR_GETAWAY_AREA, //2
|
|
GFF_IN_FIB_VEHICLE_BEFORE_COMPLETE, //3
|
|
GFF_SHOULD_LOAD_TEXT, //4
|
|
GFF_TEXT_IS_LOADED, //5
|
|
GFF_CAR_INFO_GRABBED, //6
|
|
GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED, //7
|
|
GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE, //8
|
|
GFF_DO_EXIT_VEHICLE_CALL, //9
|
|
GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION, //10
|
|
GFF_ALT_CONTACT_SET, //11
|
|
GFF_DONE_LAST_PREP_REMINDER, //12
|
|
GFF_PLAYER_ENTERED_MOD_SHOP, //13
|
|
GFF_VEHICLE_PLACED, //14
|
|
GFF_SCRIPT_CLEARED_HELP, //15
|
|
GFF_PLAYER_IS_TREV_AGENCY, //16
|
|
GFF_CHECK_FIRST_HELP_BIT, //17
|
|
GFF_CREATED_BLIP_SHOWED_HELP_FIN, //18
|
|
GFF_GIVEN_BIGSCORE_SPECIFIC_CAR_HELP, //19
|
|
GFF_TIME_OUT_HIDING_PLACE
|
|
ENDENUM
|
|
|
|
ENUM RESULTS_SCREEN_STATES
|
|
RSS_INIT,
|
|
RSS_LOAD,
|
|
RSS_UPDATE,
|
|
RSS_CLEANUP
|
|
ENDENUM
|
|
|
|
//Need to be kept in order of priority
|
|
ENUM HELP_TEXT_ENUMS
|
|
HTE_ON_MISSION = 0, ///0
|
|
HTE_ON_FRIEND_ACT, ///1
|
|
HTE_ON_TAXI_MISSION, ///2
|
|
HTE_WANTED_LOSE, ///3
|
|
HTE_DROP_AT_CAR_PARK, ///4
|
|
HTE_LEFT_CAR, ///5
|
|
HTE_HEALTH_VEH,
|
|
HTE_LOC_SUITABLEFT, ///6
|
|
HTE_LOC_SUITABLEM, ///7
|
|
HTE_LOC_FIRST_BIGSCORE,
|
|
HTE_PICK_CAR_FRANK_TREV, ///8
|
|
HTE_PICK_CAR_MIKE, ///9
|
|
HTE_PICK_NEW_LOC_FRANK_TREV, ///10
|
|
HTE_PICK_NEW_LOC_MIKE, ///11
|
|
HTE_UNSUITABLE_VEH, ///12
|
|
HTE_UNSUITABLE_VEH_SEATS, ///13
|
|
HTE_CARGOBOBBED_VEH, ///14
|
|
HTE_VEH_CAN_BE_USED_FRANK_TREV, ///15
|
|
HTE_VEH_CAN_BE_USED_MIKE, ///16
|
|
HTE_LOC_PLAN_BOARD,
|
|
HTE_LOC_INACC, ///17
|
|
HTE_LOC_PUBLIC_AREA, ///18
|
|
HTE_LOC_LAW, ///19
|
|
HTE_LOC_RESIDENTIAL, ///20
|
|
HTE_VEH_STOP, ///21
|
|
HTE_VEH_OWNED_MIKE, ///22
|
|
HTE_VEH_OWNED_FRANK, ///23
|
|
HTE_VEH_OWNED_TREV, ///24
|
|
HTE_LOC_SEC_ROUTE, ///25
|
|
HTE_LOC_FIB_LOC, ///26
|
|
HTE_LOC_LEST_HOUSE, ///27
|
|
HTE_LOC_AGENCY_BUILDING, ///28
|
|
HTE_LOC_SAFEHOUSE_M, ///29
|
|
HTE_LOC_SAFEHOUSE_F, ///30
|
|
HTE_LOC_SAFEHOUSE_T, ///31
|
|
|
|
///overflow
|
|
HTE_LOC_PUBLIC, ///32
|
|
HTE_LOC_WATER, ///33
|
|
HTE_LOC_OBSTRUCTED, ///34
|
|
HTE_LOC_OBSTRUCTED_VEH, ///35
|
|
HTE_VEH_UPSIDEDOWN, ///36
|
|
HTE_VEH_NEAR_ROAD, ///37
|
|
HTE_VEH_ON_ROAD, ///38
|
|
HTE_LOC_STEEP, ///39
|
|
HTE_LOC_UNEVEN, ///40
|
|
HTE_PLACEMENT_REMINDER, ///41
|
|
HTE_PLACEMENT_REMINDER_BIG, ///42
|
|
|
|
NUM_HELP
|
|
ENDENUM
|
|
|
|
STRUCT PLAYER_PHONE_CALL_STRUCT
|
|
INT iPlayerVoice
|
|
STRING sPlayerVoice
|
|
|
|
INT iOtherVoice
|
|
STRING sOtherVoice
|
|
|
|
STRING sConv
|
|
STRING sResponse
|
|
|
|
STRING sZoneName
|
|
STRING sZoneConvLable
|
|
|
|
enumCharacterList eContact
|
|
ENDSTRUCT
|
|
|
|
STRUCT RESTRICTED_AREA
|
|
STRING sZone
|
|
VECTOR vPos1
|
|
VECTOR vPos2
|
|
FLOAT fWidth
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT RESTRICTED_AREA_LIST
|
|
RESTRICTED_AREA mRestrictedArea[MAX_RESTRICTED_AREAS]
|
|
INT iNumAreas
|
|
INT iAreasToCheckBit = 0
|
|
INT iTimeDelay = 0
|
|
RESTRICTION_TYPE eType
|
|
ENDSTRUCT
|
|
|
|
MISSION_STATE eMissionState = MS_PLACE_FIRST_ITEM
|
|
COP_MONITOR eCopMonitor = CM_MONITER
|
|
HELP_TEXT_STATES eHelpTextState = HTS_WAITING_HELP
|
|
PHONE_CALL_STATE ePhoneCallState = PCS_NULL
|
|
RESULTS_SCREEN_STATES eResultScreenState = RSS_INIT
|
|
GETAWAY_ID eGetawayID
|
|
|
|
enumCharacterList eHighlighted = NO_CHARACTER
|
|
|
|
PLAYER_PHONE_CALL_STRUCT mPlayerPhoneCallSettings
|
|
|
|
|
|
//help and flow
|
|
STRING sHelpLables[NUM_HELP]
|
|
INT iHelpToDisplay = -1
|
|
INT iHelpTextBit[MAX_HELP_BITFIELDS]
|
|
FLOAT fHelpDisplayedFor = 0.0
|
|
|
|
INT iGetawayFlowFlag = 0
|
|
|
|
//Hiding vars
|
|
VECTOR vPotentialHidingPos = <<0,0,0>>
|
|
|
|
//Vehicle
|
|
VEHICLE_INDEX viVeh
|
|
VECTOR vCarPosition = <<0,0,0>>
|
|
FLOAT fCarHeading = 0.0
|
|
VEHICLE_SETUP_STRUCT mDroppedOffCarStruct
|
|
MODEL_NAMES mnInvalidModels[MAX_INVALIDMODS]
|
|
|
|
//restricted
|
|
RESTRICTED_AREA_MONITOR_STATES eRestrictedAreaMonitor = RAMS_CHECK_IF_AREAS_IN_RANGE
|
|
RESTRICTED_AREA_LIST mRestrictedAreaList[RT_NO_RESTRICTION]
|
|
STRING sRestrictedZoneList[MAX_RESTRICTED_ZONES]
|
|
STRING sCurrentZone = ""
|
|
INT iAreaBeingChecked = 0
|
|
INT iAreaTypeBeingChecked = 0
|
|
INT iRestrictedAreaCheckDelay = -1
|
|
|
|
//result screen
|
|
SCALEFORM_INDEX splash
|
|
INT iTimeSplashEnd
|
|
|
|
INT iReminderTimer = -1
|
|
INT iReminderCount = 0
|
|
|
|
INT iHighlightWindow = -1
|
|
|
|
STRING sTextblockConvs
|
|
|
|
structPedsForConversation s_conversation_peds //conversation struct
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID iGetawayWid
|
|
BOOL bDisplayRestricedZone[4]
|
|
BOOL bZoneDebug = FALSE
|
|
BOOL bAddNewArea = FALSE
|
|
BOOL bPrintNewArea = FALSE
|
|
VECTOR vNewAreaPos1, vNewAreaPos2
|
|
FLOAT fNewAreaWidth
|
|
|
|
/// PURPOSE:
|
|
/// Deletes the mission widget
|
|
PROC CLEANUP_OBJECT_WIDGETS()
|
|
IF DOES_WIDGET_GROUP_EXIST(iGetawayWid)
|
|
DELETE_WIDGET_GROUP(iGetawayWid)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Sets up getaway vehicle widget
|
|
PROC SET_UP_RAG_WIDGETS()
|
|
CLEANUP_OBJECT_WIDGETS()
|
|
|
|
iGetawayWid = START_WIDGET_GROUP("Getaway Vehicle")
|
|
|
|
ADD_WIDGET_BOOL("Toggle Zone debug print out", bZoneDebug)
|
|
|
|
START_WIDGET_GROUP("Public Restricted Zones")
|
|
ADD_WIDGET_BOOL("Display current public restricted zones", bDisplayRestricedZone[0])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Law enforcement Restricted Zones")
|
|
ADD_WIDGET_BOOL("Display current Law enforcement restricted zones", bDisplayRestricedZone[1])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Residential Restricted Zones")
|
|
ADD_WIDGET_BOOL("Display current Residential restricted zones", bDisplayRestricedZone[2])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Inaccessible Restricted Zones")
|
|
ADD_WIDGET_BOOL("Display current Inaccessible restricted zones", bDisplayRestricedZone[3])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Create new area")
|
|
ADD_WIDGET_BOOL("Activate new area creation", bAddNewArea)
|
|
ADD_WIDGET_BOOL("Print new area out to temp debug file", bPrintNewArea)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER("New Area Width", fNewAreaWidth, -99999, 99999, 0.1)
|
|
//mod z height
|
|
ADD_WIDGET_VECTOR_SLIDER("Area pos 1 - LMB", vNewAreaPos1, -99999, 99999, 0.1)
|
|
ADD_WIDGET_VECTOR_SLIDER("Area pos 2 - RMB", vNewAreaPos2, -99999, 99999, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Getaway flow flags")
|
|
ADD_BIT_FIELD_WIDGET("State flow flags", iGetawayFlowFlag)
|
|
ADD_BIT_FIELD_WIDGET("Help text flags", iHelpTextBit[0])
|
|
ADD_BIT_FIELD_WIDGET("Help text flags", iHelpTextBit[1])
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Draws an angled area
|
|
/// PARAMS:
|
|
/// vec1 - first point of the area
|
|
/// vec2 - second point of the area
|
|
/// width - the width of the area
|
|
PROC DRAW_DEBUG_LOCATE_SPECIAL(VECTOR vec1, VECTOR vec2, FLOAT width)
|
|
|
|
VECTOR vBottom[2]
|
|
VECTOR vTop[2]
|
|
|
|
vBottom[0] = vec1
|
|
vBottom[1] = vec2
|
|
|
|
vTop[0] = vec1
|
|
vTop[1] = vec2
|
|
|
|
IF vec1.z > vec2.z
|
|
vBottom[0].z = vec2.z
|
|
vBottom[1].z = vec2.z
|
|
vTop[0].z = vec1.z
|
|
vTop[1].z = vec1.z
|
|
ELSE
|
|
vBottom[0].z = vec1.z
|
|
vBottom[1].z = vec1.z
|
|
vTop[0].z = vec2.z
|
|
vTop[1].z = vec2.z
|
|
ENDIF
|
|
|
|
VECTOR fwd = NORMALISE_VECTOR(vBottom[1] - vBottom[0]) // normalize to get distance
|
|
VECTOR side = <<-fwd.y, fwd.x, fwd.z>>
|
|
VECTOR w = side * (width / 2.0)
|
|
|
|
// Bottom points
|
|
VECTOR c1 = vBottom[0] - w // base left
|
|
VECTOR c2 = vBottom[0] + w // base right
|
|
VECTOR c3 = vBottom[1] + w // top rt
|
|
VECTOR c4 = vBottom[1] - w // top lt
|
|
|
|
// Top points
|
|
VECTOR d1 = vTop[0] - w // base left
|
|
VECTOR d2 = vTop[0] + w // base right
|
|
VECTOR d3 = vTop[1] + w // top rt
|
|
VECTOR d4 = vTop[1] - w // top lt
|
|
|
|
// Draw bottom lines
|
|
DRAW_DEBUG_LINE(c1, c2, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c2, c3, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c3, c4, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c4, c1, 128, 0, 128)
|
|
// Draw top lines
|
|
DRAW_DEBUG_LINE(d1, d2, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(d2, d3, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(d3, d4, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(d4, d1, 128, 0, 128)
|
|
// Draw uprights
|
|
DRAW_DEBUG_LINE(c1, d1, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c2, d2, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c3, d3, 128, 0, 128)
|
|
DRAW_DEBUG_LINE(c4, d4, 128, 0, 128)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// PARAMS:
|
|
/// t -
|
|
PROC DRAW_RESTRICTED_ZONE(RESTRICTION_TYPE t)
|
|
INT z
|
|
FOR z=0 TO (mRestrictedAreaList[t].iNumAreas-1)
|
|
IF IS_BIT_SET(mRestrictedAreaList[t].iAreasToCheckBit, z)
|
|
DRAW_DEBUG_LOCATE_SPECIAL(mRestrictedAreaList[t].mRestrictedArea[z].vPos1, mRestrictedAreaList[t].mRestrictedArea[z].vPos2, mRestrictedAreaList[t].mRestrictedArea[z].fWidth)
|
|
ENDIF
|
|
ENDFOR
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// If we are adding a new restricted area monitor pressing the correct
|
|
/// mouse buttons
|
|
/// Or if we want to print out the values for the new area
|
|
PROC MANAGE_NEW_AREA_CREATION()
|
|
IF bAddNewArea
|
|
IF IS_MOUSE_BUTTON_PRESSED(MB_RIGHT_BTN)
|
|
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_LEFT_BTN)
|
|
vNewAreaPos2 = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
ELSE
|
|
IF IS_MOUSE_BUTTON_JUST_PRESSED(MB_LEFT_BTN)
|
|
vNewAreaPos1 = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
DRAW_DEBUG_LOCATE_SPECIAL(vNewAreaPos1, vNewAreaPos2, fNewAreaWidth)
|
|
|
|
IF bPrintNewArea
|
|
//FILL_RESTRICTED_AREA("MTCHIL", <<0,0,0>>, <<0,0,0>>, 0)
|
|
SAVE_STRING_TO_DEBUG_FILE("FILL_RESTRICTED_AREA(\"")
|
|
SAVE_STRING_TO_DEBUG_FILE(GET_NAME_OF_ZONE(vNewAreaPos1))
|
|
SAVE_STRING_TO_DEBUG_FILE("\", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vNewAreaPos1)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vNewAreaPos2)
|
|
SAVE_STRING_TO_DEBUG_FILE(", ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fNewAreaWidth)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
bPrintNewArea = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Update the rag widget drawing the restricted areas if the tick boxes are ticked
|
|
PROC UPDATE_WIDGET()
|
|
INT i
|
|
FOR i=0 TO 2
|
|
IF bDisplayRestricedZone[0]
|
|
DRAW_RESTRICTED_ZONE(RT_PUBLIC_AREA)
|
|
ENDIF
|
|
IF bDisplayRestricedZone[1]
|
|
DRAW_RESTRICTED_ZONE(RT_LAW_ENFORCEMENT)
|
|
ENDIF
|
|
IF bDisplayRestricedZone[2]
|
|
DRAW_RESTRICTED_ZONE(RT_RESIDENTAL_AREA)
|
|
ENDIF
|
|
IF bDisplayRestricedZone[3]
|
|
DRAW_RESTRICTED_ZONE(RT_INACCESSIBLE)
|
|
ENDIF
|
|
ENDFOR
|
|
MANAGE_NEW_AREA_CREATION()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// doesnt nothing
|
|
PROC UPDATE_DEBUG_PASS()
|
|
|
|
|
|
ENDPROC
|
|
|
|
BOOL bShowDebugText = TRUE
|
|
// INT iOnMissionTimerCheck = -1
|
|
INT iGenericPrintTimer = -1
|
|
/// PURPOSE:
|
|
/// Prints a string to a TTY Channel
|
|
/// PARAMS:
|
|
/// s - The string to print
|
|
/// ddc - The debug channel to print to
|
|
PROC SK_PRINT(String s, DEBUG_CHANNELS ddc = DEBUG_MISSION)
|
|
IF bShowDebugText
|
|
CPRINTLN(ddc, s)
|
|
PRINTNL()
|
|
PRINTNL()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Prints a string and an int to a TTY Channel
|
|
/// PARAMS:
|
|
/// s - The string to print
|
|
/// i - the int to print
|
|
/// ddc - the debug channel to print to
|
|
PROC SK_PRINT_INT(String s, INT i, DEBUG_CHANNELS ddc = DEBUG_MISSION)
|
|
IF bShowDebugText
|
|
CPRINTLN(ddc, s,i)
|
|
PRINTNL()
|
|
PRINTNL()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Prints a string and a Float to a TTY Channel
|
|
/// PARAMS:
|
|
/// s - the string to print
|
|
/// f - the float to print
|
|
/// ddc - the debug channel
|
|
PROC SK_PRINT_FLOAT(String s, FLOAT f, DEBUG_CHANNELS ddc = DEBUG_MISSION)
|
|
IF bShowDebugText
|
|
CPRINTLN(ddc, s,f)
|
|
PRINTNL()
|
|
PRINTNL()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
///******************************************************************************************************
|
|
/// Flow STUFF ****** Flow STUFF
|
|
///******************************************************************************************************
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Cleans up mission entities, releases the entity to be cleaned up by population
|
|
/// and will give a suitable task to the peds before clean up
|
|
PROC Script_Cleanup(e_g_Restore_Launched_ScriptBits removeRelaunch, BOOL bGoingToMP = FALSE)
|
|
#IF IS_DEBUG_BUILD
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE (FALSE)
|
|
CLEANUP_OBJECT_WIDGETS()
|
|
#ENDIF
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
ENDIF
|
|
|
|
IF NOT bGoingToMP
|
|
REMOVE_SCRIPT_FROM_RELAUNCH_LIST(removeRelaunch)//LAUNCH_BIT_FBI4_PREP3)
|
|
ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Function updates the global INT used to save the state the script is in
|
|
/// Requests an auto save as well
|
|
/// PARAMS:
|
|
/// state - The mission state to switch to
|
|
/// bJustUpdate - Should we just update the save global without requesting an auto save
|
|
PROC UPDATE_SAVED_STATE(MISSION_STATE state, BOOL bJustUpdate = FALSE)
|
|
g_savedGlobals.sAmbient.iGetawayState = ENUM_TO_INT(state)
|
|
|
|
eMissionState = state
|
|
IF bJustUpdate
|
|
EXIT
|
|
ENDIF
|
|
|
|
MAKE_AUTOSAVE_REQUEST()
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
FUNC STRING SUB_HELP_USABLE(HELP_TEXT_ENUMS eLable)
|
|
STRING sLable
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
IF eLable = HTE_VEH_CAN_BE_USED_FRANK_TREV
|
|
sLable = "PRC_USEFT"//This vehicle can be used as a getaway vehicle. Hide it in a discreet location. Select the "Mark Getaway Location" option when phoning Franklin or Trevor.
|
|
|
|
ELIF eLable = HTE_VEH_CAN_BE_USED_MIKE
|
|
sLable = "PRC_USEM"//This vehicle can be used as a getaway vehicle. Hide it in a discreet location. Select the "Mark Getaway Location" option when phoning Michael.
|
|
|
|
ELIF eLable = HTE_PICK_CAR_FRANK_TREV
|
|
sLable = "PRC_PICKCARTF"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Location" option when phoning Franklin or Trevor.
|
|
|
|
ELIF eLable = HTE_PICK_CAR_MIKE
|
|
sLable = "PRC_PICKCARM"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Location" option when phoning Michael.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_MIKE
|
|
sLable = "PRC_PICKNEWM"//Pick a new location for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_FRANK_TREV
|
|
sLable = "PRC_PICKNEWTF"//Pick a new location for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Franklin or Trevor.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEFT
|
|
sLable = "PRC_LOCSUITFT"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Franklin or Trevor.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEM
|
|
sLable = "PRC_LOCSUITM"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael.
|
|
|
|
ELIF eLable = HTE_LOC_INACC
|
|
sLable = "PRC_INACC"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael.
|
|
ENDIF
|
|
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
IF eLable = HTE_VEH_CAN_BE_USED_FRANK_TREV
|
|
sLable = "PRC_USEFL"//This vehicle can be used as a getaway vehicle. Hide it in a discreet location. Select the "Mark Getaway Location" option when phoning Franklin or Lester.
|
|
|
|
ELIF eLable = HTE_VEH_CAN_BE_USED_MIKE
|
|
sLable = "PRC_USEML"//This vehicle can be used as a getaway vehicle. Hide it in a discreet location. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
|
|
ELIF eLable = HTE_PICK_CAR_FRANK_TREV
|
|
sLable = "PRC_PICKCRFL"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Location" option when phoning Franklin or Lester.
|
|
|
|
ELIF eLable = HTE_PICK_CAR_MIKE
|
|
sLable = "PRC_PICKCRML"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_MIKE
|
|
sLable = "PRC_PICKNEWML"//Pick a new location for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_FRANK_TREV
|
|
sLable = "PRC_PICKNEWFL"//Pick a new location for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Franklin or Lester.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEFT
|
|
sLable = "PRC_LOCSUITFL"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Franklin or Lester.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEM
|
|
sLable = "PRC_LOCSUITML"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
|
|
ELIF eLable = HTE_LOC_INACC
|
|
sLable = "PRC_INACCF"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
|
|
ENDIF
|
|
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
IF eLable = HTE_VEH_CAN_BE_USED_FRANK_TREV
|
|
sLable = "PRC_USEL"//This vehicle can be used as a getaway vehicle. Select the "Mark Getaway Vehicle" option when phoning Lester.
|
|
|
|
ELIF eLable = HTE_VEH_CAN_BE_USED_MIKE
|
|
sLable = "PRC_USEL"//This vehicle can be used as a getaway vehicle. Select the "Mark Getaway Vehicle" option when phoning Lester.
|
|
|
|
|
|
ELIF eLable = HTE_PICK_CAR_FRANK_TREV
|
|
sLable = "PRC_PICKCARL"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Vehicle" option when phoning Lester.
|
|
|
|
ELIF eLable = HTE_PICK_CAR_MIKE
|
|
sLable = "PRC_PICKCARL"//The getaway vehicle has been destroyed, find a new one. Select the "Mark Getaway Vehicle" option when phoning Lester.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_MIKE
|
|
sLable = "PRC_PICKNEWL"//Getaway vehicle has been moved. Select the "Mark Getaway Vehicle" when phoning Lester, in a suitable vehicle to mark a new one.
|
|
|
|
ELIF eLable = HTE_PICK_NEW_LOC_FRANK_TREV
|
|
sLable = "PRC_PICKNEWL"//Getaway vehicle has been moved. Select the "Mark Getaway Vehicle" when phoning Lester, in a suitable vehicle to mark a new one.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEFT
|
|
sLable = "PRC_LOCSUITFT"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Franklin or Trevor.
|
|
|
|
ELIF eLable = HTE_LOC_SUITABLEM
|
|
sLable = "PRC_LOCSUITM"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael.
|
|
|
|
ELIF eLable = HTE_LOC_INACC
|
|
sLable = "PRC_INACCF"//This location can be used for the getaway vehicle. Select the "Mark Getaway Location" option when phoning Michael or Lester.
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN sLable
|
|
ENDFUNC
|
|
|
|
|
|
|
|
///******************************************************************************************************
|
|
/// HELP TEXT BITS ****** HELP TEXT BITS
|
|
///******************************************************************************************************
|
|
|
|
/// PURPOSE:
|
|
/// assigns text lable to the correct slot in sHelpLables[NUM_HELP]
|
|
PROC POPULATE_HELP()
|
|
sHelpLables[HTE_ON_MISSION] = "AM_H_FBIC1A"
|
|
sHelpLables[HTE_ON_FRIEND_ACT] = "AM_H_FBIC1B"
|
|
sHelpLables[HTE_ON_TAXI_MISSION] = "AM_H_FBIC1C"
|
|
sHelpLables[HTE_WANTED_LOSE] = "PRC_WANT"
|
|
sHelpLables[HTE_DROP_AT_CAR_PARK] = "PRC_DROPOFF"
|
|
sHelpLables[HTE_LEFT_CAR] = "PRC_INVALVEH"
|
|
sHelpLables[HTE_HEALTH_VEH] = "PRC_HEALTH"
|
|
sHelpLables[HTE_LOC_SUITABLEFT] = SUB_HELP_USABLE(HTE_LOC_SUITABLEFT)
|
|
sHelpLables[HTE_LOC_SUITABLEM] = SUB_HELP_USABLE(HTE_LOC_SUITABLEM)
|
|
sHelpLables[HTE_LOC_FIRST_BIGSCORE] = "PRC_USEFIRST"
|
|
sHelpLables[HTE_PICK_CAR_FRANK_TREV] = SUB_HELP_USABLE(HTE_PICK_CAR_FRANK_TREV)
|
|
sHelpLables[HTE_PICK_CAR_MIKE] = SUB_HELP_USABLE(HTE_PICK_CAR_MIKE)
|
|
sHelpLables[HTE_PICK_NEW_LOC_MIKE] = SUB_HELP_USABLE(HTE_PICK_NEW_LOC_MIKE)
|
|
sHelpLables[HTE_PICK_NEW_LOC_FRANK_TREV] = SUB_HELP_USABLE(HTE_PICK_NEW_LOC_FRANK_TREV)
|
|
sHelpLables[HTE_UNSUITABLE_VEH] = "PRC_UNUSE"
|
|
sHelpLables[HTE_UNSUITABLE_VEH_SEATS] = "PRC_SEATS"
|
|
sHelpLables[HTE_CARGOBOBBED_VEH] = "PRC_CBOBVAL"
|
|
sHelpLables[HTE_VEH_CAN_BE_USED_FRANK_TREV] = SUB_HELP_USABLE(HTE_VEH_CAN_BE_USED_FRANK_TREV)
|
|
sHelpLables[HTE_VEH_CAN_BE_USED_MIKE] = SUB_HELP_USABLE(HTE_VEH_CAN_BE_USED_MIKE)
|
|
sHelpLables[HTE_LOC_INACC] = SUB_HELP_USABLE(HTE_LOC_INACC)
|
|
sHelpLables[HTE_LOC_PUBLIC_AREA] = "PRC_PUBAREA"
|
|
sHelpLables[HTE_LOC_LAW] = "PRC_LAWAREA"
|
|
sHelpLables[HTE_LOC_RESIDENTIAL] = "PRC_RESAREA"
|
|
sHelpLables[HTE_VEH_STOP] = "PRC_STOP"
|
|
sHelpLables[HTE_VEH_OWNED_MIKE] = "PRC_OWNEDM"
|
|
sHelpLables[HTE_VEH_OWNED_FRANK] = "PRC_OWNEDF"
|
|
sHelpLables[HTE_VEH_OWNED_TREV] = "PRC_OWNEDT"
|
|
sHelpLables[HTE_LOC_SEC_ROUTE] = "PRC_SECROUTE"
|
|
sHelpLables[HTE_LOC_FIB_LOC] = "PRC_CLOSELOT"
|
|
sHelpLables[HTE_LOC_LEST_HOUSE] = "PRC_CLOSELES"
|
|
sHelpLables[HTE_LOC_AGENCY_BUILDING] = "PRC_CLSAGNT"
|
|
sHelpLables[HTE_LOC_SAFEHOUSE_M] = "PRC_CLOSESAFE_M"
|
|
sHelpLables[HTE_LOC_SAFEHOUSE_F] = "PRC_CLOSESAFE_F"
|
|
sHelpLables[HTE_LOC_SAFEHOUSE_T] = "PRC_CLOSESAFE_T"
|
|
sHelpLables[HTE_LOC_PUBLIC] = "PRC_PEDS"
|
|
sHelpLables[HTE_LOC_WATER] = "PRC_WATER"
|
|
sHelpLables[HTE_LOC_OBSTRUCTED] = "PRC_OBST"
|
|
sHelpLables[HTE_LOC_OBSTRUCTED_VEH] = "PRC_OBSTVEH"
|
|
sHelpLables[HTE_VEH_UPSIDEDOWN] = "PRC_UPDWN"
|
|
sHelpLables[HTE_VEH_NEAR_ROAD] = "PRC_NEARROAD"
|
|
sHelpLables[HTE_VEH_ON_ROAD] = "PRC_ONROAD"
|
|
sHelpLables[HTE_LOC_PLAN_BOARD] = "PRC_PLAN"
|
|
|
|
sHelpLables[HTE_LOC_STEEP] = "PRC_TOOSTEEP"
|
|
sHelpLables[HTE_LOC_UNEVEN] = "PRC_UNEVEN"
|
|
sHelpLables[HTE_PLACEMENT_REMINDER] = "PRC_REMIND"
|
|
sHelpLables[HTE_PLACEMENT_REMINDER_BIG] = "PRC_REMINDA"
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Used for the overflow help text bit
|
|
/// Pass in an enum using ENUM_TO_INT if its over 31 in value
|
|
/// we take it away from 32 to give the value of the overflow help bitfield
|
|
/// PARAMS:
|
|
/// i - the value of the enum we want to convert
|
|
/// RETURNS:
|
|
/// the converted value of i or just returns i if no
|
|
/// converstion needed
|
|
FUNC INT CONVERT_FOR_OVER_FLOW_BIT(INT i)
|
|
IF i > 31
|
|
RETURN i - 32
|
|
ENDIF
|
|
|
|
RETURN i
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Gets the index of the help text bitfield we need from the enum value passed in
|
|
/// enum value is ENUM_TO_INT conversion
|
|
/// PARAMS:
|
|
/// i - the enum value
|
|
/// RETURNS:
|
|
/// the index of the help bitfield where the enum is meant
|
|
/// to be stored
|
|
FUNC INT GET_HELP_BIT_ID(INT i)
|
|
INT iReturnVal
|
|
//if i is less then 32 we want it the first help bitfield
|
|
IF i < 32
|
|
iReturnVal = 0
|
|
ELSE
|
|
//if i is greater then 32 we want it the overflow help bitfield
|
|
iReturnVal = 1
|
|
ENDIF
|
|
|
|
RETURN iReturnVal
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Gets the string stored in the help lable array based off the
|
|
/// enum value (ENUM_TO_INT)
|
|
/// PARAMS:
|
|
/// i - the enum value (ENUM_TO_INT)
|
|
/// RETURNS:
|
|
/// The string stored at sHelpLables[i]
|
|
FUNC STRING GET_HELP_LABLE_FROM_BIT(INT i)
|
|
RETURN sHelpLables[i]
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets a help text bit to display some help text
|
|
/// Sets the bShouldHelpUpdate flag to true
|
|
/// PARAMS:
|
|
/// HelpToShow - The help text enum to show
|
|
PROC SET_HELP_TEXT_BIT(HELP_TEXT_ENUMS HelpToShow)
|
|
INT iHelp = CONVERT_FOR_OVER_FLOW_BIT(ENUM_TO_INT(HelpToShow))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION,"Setting help bit == ", GET_STRING_FROM_TEXT_FILE(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HelpToShow))) ) #ENDIF
|
|
SET_BIT(iHelpTextBit[GET_HELP_BIT_ID(ENUM_TO_INT(HelpToShow))], iHelp)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Clears a help text bit
|
|
/// PARAMS:
|
|
/// HelpToCLEAR - the help text blip to clear
|
|
PROC CLEAR_HELP_TEXT_BIT(HELP_TEXT_ENUMS HelpToCLEAR)
|
|
INT iHelp = CONVERT_FOR_OVER_FLOW_BIT(ENUM_TO_INT(HelpToCLEAR))
|
|
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION,"Clearing help bit == ", GET_STRING_FROM_TEXT_FILE(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HelpToCLEAR)) )) #ENDIF
|
|
|
|
CLEAR_BIT(iHelpTextBit[GET_HELP_BIT_ID(ENUM_TO_INT(HelpToCLEAR))], iHelp)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Clears two help bits and if either one of them is being displayed we clear the
|
|
/// help text
|
|
/// PARAMS:
|
|
/// HelpToCLEAR - The first help bit to clear
|
|
/// HelpToCLEAR2 - the second help bit to clear
|
|
PROC CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT(HELP_TEXT_ENUMS HelpToCLEAR, HELP_TEXT_ENUMS HelpToCLEAR2 = NUM_HELP)
|
|
CLEAR_HELP_TEXT_BIT(HelpToCLEAR)
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HelpToCLEAR)))
|
|
CLEAR_HELP()
|
|
CPRINTLN(DEBUG_MISSION,"CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT() cleared help 1")
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
ENDIF
|
|
|
|
IF HelpToCLEAR2 != NUM_HELP
|
|
CLEAR_HELP_TEXT_BIT(HelpToCLEAR2)
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HelpToCLEAR2)))
|
|
CLEAR_HELP()
|
|
CPRINTLN(DEBUG_MISSION,"CLEAR_DISPLAYING_HELP_AND_CLEAR_BIT() cleared help 2")
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Iterates through all help bits and clears them
|
|
/// PARAMS:
|
|
/// Exclusion - The bit to exclude from clear up
|
|
PROC CLEAR_ALL_HELP_BITS(HELP_TEXT_ENUMS Exclusion, BOOL bClearHelp = FALSE)
|
|
INT i
|
|
|
|
// IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sHelpLables[Exclusion])
|
|
// #IF IS_DEBUG_BUILD SK_PRINT_INT("Clearing help -> not being displayed", ENUM_TO_INT(Exclusion) ) #ENDIF
|
|
// CLEAR_HELP()
|
|
// ENDIF
|
|
|
|
FOR i=0 TO (ENUM_TO_INT(NUM_HELP)-1)
|
|
IF Exclusion != INT_TO_ENUM(HELP_TEXT_ENUMS, i)
|
|
AND Exclusion != NUM_HELP
|
|
CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, i))
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF Exclusion != NUM_HELP
|
|
CPRINTLN(DEBUG_MISSION,"Excluding this bit == ", GET_STRING_FROM_TEXT_FILE(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(Exclusion)) ))
|
|
ENDIF
|
|
#ENDIF
|
|
IF bClearHelp
|
|
IF Exclusion != NUM_HELP
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(Exclusion)))
|
|
AND NOT g_bFlowHelpDisplaying
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CPRINTLN(DEBUG_MISSION,"CLEAR_ALL_HELP_BITS() cleared help 1")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
ELSE
|
|
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
AND NOT g_bFlowHelpDisplaying
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CPRINTLN(DEBUG_MISSION,"CLEAR_ALL_HELP_BITS() cleared help 2")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
///******************************************************************************************************
|
|
/// COP STUFF ****** COP STUFF
|
|
///******************************************************************************************************
|
|
PROC MONITER_PLAYER_WANTED()
|
|
IF eMissionState = MS_PLACE_FIRST_ITEM
|
|
OR eMissionState = MS_DROP_OFF_AGENCY_CAR
|
|
SWITCH eCopMonitor
|
|
CASE CM_MONITER
|
|
|
|
IF IS_THIS_PRINT_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_WANTED_LOSE)))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CLEAR_HELP()
|
|
CPRINTLN(DEBUG_MISSION,"MONITER_PLAYER_WANTED() cleared help 1")
|
|
ENDIF
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0
|
|
#IF IS_DEBUG_BUILD SK_PRINT("eCopMonitor = CM_INIT_WANTED") #ENDIF
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_LOC_SUITABLEFT)))
|
|
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_LOC_SUITABLEM)))
|
|
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_PICK_CAR_FRANK_TREV)))
|
|
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_PICK_CAR_MIKE)))
|
|
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_PICK_NEW_LOC_FRANK_TREV)))
|
|
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_PICK_NEW_LOC_MIKE)))
|
|
AND NOT IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
AND NOT g_bFlowHelpDisplaying
|
|
CPRINTLN(DEBUG_MISSION, "1 Clearing wanted level help text - ", GET_THIS_SCRIPT_NAME())
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CLEAR_HELP()
|
|
CPRINTLN(DEBUG_MISSION,"MONITER_PLAYER_WANTED() cleared help 2")
|
|
ENDIF
|
|
eCopMonitor = CM_INIT_WANTED
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CM_INIT_WANTED
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF eGetawayID = FIN_GETAWAY
|
|
IF eMissionState = MS_DROP_OFF_AGENCY_CAR
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_HELP_TEXT_BIT(HTE_WANTED_LOSE)
|
|
CLEAR_ALL_HELP_BITS(HTE_WANTED_LOSE, TRUE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Fin Getaway car valid lose wanted level") #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eCopMonitor = CM_LOSING_WANTED
|
|
ELSE
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_HELP_TEXT_BIT(HTE_WANTED_LOSE)
|
|
CLEAR_ALL_HELP_BITS(HTE_WANTED_LOSE, TRUE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Car valid Lose wanted level") #ENDIF
|
|
ENDIF
|
|
eCopMonitor = CM_LOSING_WANTED
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Car not valid Getaway lose wanted level") #ENDIF
|
|
eCopMonitor = CM_LOSING_WANTED
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE CM_LOSING_WANTED
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) = 0
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_WANTED_LOSE)))
|
|
CPRINTLN(DEBUG_MISSION, "2 Clearing wanted level help text - ", GET_THIS_SCRIPT_NAME())
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("MONITER_PLAYER_WANTED - eCopMonitor = CM_MONITER") #ENDIF
|
|
eCopMonitor = CM_MONITER
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
///******************************************************************************************************
|
|
/// HELP TEXT MONITOR ****** HELP TEXT MONITOR
|
|
///******************************************************************************************************
|
|
|
|
/// PURPOSE:
|
|
/// -***** Dont think this is used *****-
|
|
/// Uses the flow help queue to garentee help is displayed
|
|
/// PARAMS:
|
|
/// HelpText - the help lable to display
|
|
/// priority - the priority of the help if high it will try and display right away
|
|
/// delay - the delay before the help is displayed
|
|
/// expire - time before the help will stop trying to be displayed
|
|
/// display - time to display the help for
|
|
/// RETURNS:
|
|
/// TRUE when the help has been displayed
|
|
FUNC BOOL DO_MISSION_FLOW_HELP(STRING HelpText, FlowHelpPriority priority = FHP_HIGH, INT delay = 0, INT expire = FLOW_HELP_NEVER_EXPIRES, INT display = DEFAULT_HELP_TEXT_TIME)
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("DO_MISSION_FLOW_HELP - START") #ENDIF
|
|
SWITCH GET_FLOW_HELP_MESSAGE_STATUS(HelpText)
|
|
CASE FHS_EXPIRED
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ADD_HELP_TO_FLOW_QUEUE ") #ENDIF
|
|
ADD_HELP_TO_FLOW_QUEUE(HelpText, priority, delay, expire, display)
|
|
BREAK
|
|
CASE FHS_DISPLAYED
|
|
#IF IS_DEBUG_BUILD SK_PRINT("DO_MISSION_FLOW_HELP - END") #ENDIF
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC FLOW_FLAG_IDS GET_FLOW_FLAG()
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN FLOWFLAG_MISSION_FBI_4_PREP_3_COMPLETED
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN FLOWFLAG_HEIST_AGENCY_PREP_2_DONE
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN FLOWFLAG_HEIST_FINALE_PREPE_DONE
|
|
ENDIF
|
|
|
|
RETURN FLOWFLAG_NONE
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_NUM_PREPS_COMPLETE_CHECK(SP_MISSIONS startMis, SP_MISSIONS endMis)
|
|
INT iCount = 0
|
|
INT iPrepMission
|
|
|
|
FOR iPrepMission = ENUM_TO_INT(startMis) TO ENUM_TO_INT(endMis)
|
|
CPRINTLN(DEBUG_MISSION, "PREP MISSION = = ", iPrepMission)
|
|
IF GET_MISSION_COMPLETE_STATE(INT_TO_ENUM(SP_MISSIONS, iPrepMission))
|
|
iCount++
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF GET_MISSION_FLOW_FLAG_STATE(GET_FLOW_FLAG())
|
|
iCount++
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_MISSION, "iCount = = ", iCount)
|
|
RETURN iCount
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Runs through all the FIB 4 prep missions using the SP_ enum
|
|
/// Checks their flow flags if they are complete add to the internal function count
|
|
/// Special case for FIB 4 prep 3 checks the flow flag and not its completion state
|
|
/// RETURNS:
|
|
/// TRUE if the internal count is greater or equal to 5
|
|
FUNC BOOL ARE_ALL_OTHER_PREPS_COMPLETE_FIB()
|
|
|
|
IF GET_NUM_PREPS_COMPLETE_CHECK(SP_MISSION_FBI_4_PREP_1, SP_MISSION_FBI_4_PREP_5) >= 4
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Runs through all the Agency prep missions using the SP_ enum
|
|
/// Checks their flow flags if they are complete add to the internal function count
|
|
/// Special case for Agency prep 2 checks the flow flag and not its completion state
|
|
/// RETURNS:
|
|
/// TRUE if the internal count is greater or equal to 2
|
|
FUNC BOOL ARE_ALL_OTHER_PREPS_COMPLETE_AGENCY()
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_AGENCY_PREP_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Runs through all the Finale prep missions using the SP_ enum
|
|
/// Checks their flow flags if they are complete add to the internal function count
|
|
/// Special case for Finale prep E checks the flow flag and not its completion state
|
|
/// RETURNS:
|
|
/// TRUE if the internal count is greater or equal to 5
|
|
FUNC BOOL ARE_ALL_OTHER_PREPS_COMPLETE_FIN()
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_FINALE_PREP_B)
|
|
AND GET_MISSION_COMPLETE_STATE(SP_HEIST_FINALE_PREP_D)
|
|
AND GET_MISSION_FLOW_FLAG_STATE(GET_FLOW_FLAG())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// RETURNS:
|
|
/// TRUE if preps done
|
|
FUNC BOOL ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN ARE_ALL_OTHER_PREPS_COMPLETE_FIB()
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN ARE_ALL_OTHER_PREPS_COMPLETE_AGENCY()
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN ARE_ALL_OTHER_PREPS_COMPLETE_FIN()
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Monitor the reminder timer
|
|
/// if the player hasn't seen any getaway vehicle help text for 8 minutes and the
|
|
/// vehicle hasnt been placed the reminder help is displayed but it has the lowest priority so if there is another
|
|
/// help message set at the same time this isn;t displayed
|
|
/// Reminder is only displayed once
|
|
PROC MONITOR_GETAWAY_REMINDER()
|
|
IF NOT GET_MISSION_FLOW_FLAG_STATE(GET_FLOW_FLAG())
|
|
AND NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_PLACING_CAR)
|
|
AND NOT DOES_PLAYER_HAVE_END_OF_MISSION_CALL_QUEUED(GET_CURRENT_PLAYER_PED_ENUM())
|
|
AND NOT Is_Player_Timetable_Scene_In_Progress()
|
|
AND NOT IS_CELLPHONE_CONVERSATION_PLAYING()
|
|
IF iReminderCount < 2
|
|
AND (GET_GAME_TIMER() - iReminderTimer) > 480000 //8 mins
|
|
IF eGetawayID != FIN_GETAWAY
|
|
SET_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER_BIG)
|
|
ENDIF
|
|
iReminderCount++
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("Set reminder help bit reminder count is = ", iReminderCount) #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Displays the getaway reminder if the player comes off mission and the getaway vehicle hasnt been placed
|
|
/// and the other preps are complete
|
|
PROC MONITOR_COMING_OFF_MISSION()
|
|
IF NOT GET_MISSION_FLOW_FLAG_STATE(GET_FLOW_FLAG())
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_DONE_LAST_PREP_REMINDER))
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF eGetawayID != FIN_GETAWAY
|
|
SET_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER_BIG)
|
|
ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_DONE_LAST_PREP_REMINDER))
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Set reminder help bit as last prep has been completed") #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if a help bit in a help bitfield has been set then kicks off the displaying help state machine
|
|
/// PARAMS:
|
|
/// bitField - The bitfield to check the bit against
|
|
/// i - the bit to check in the bitfield
|
|
PROC CHECK_HELP_BITS(INT bitField, INT &i)
|
|
INT iHelpIncrement = CONVERT_FOR_OVER_FLOW_BIT(i)
|
|
|
|
IF IS_BIT_SET(bitField, iHelpIncrement)
|
|
//Check to see that the player hasnt entered a garbage or tow truck before the completing the preps
|
|
//if they havent do the normal help
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IN_FIB_VEHICLE_BEFORE_COMPLETE))
|
|
//the bit was set
|
|
iHelpToDisplay = i
|
|
eHelpTextState = HTS_DISPLAY
|
|
fHelpDisplayedFor = 0.0
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "Help text bit set setting state to display and breaking ")
|
|
CPRINTLN(DEBUG_MISSION, "Help bit set text is == ", GET_STRING_FROM_TEXT_FILE(GET_HELP_LABLE_FROM_BIT(iHelpToDisplay)))
|
|
CPRINTLN(DEBUG_MISSION, "Help bit set index is == ", iHelpToDisplay)
|
|
#ENDIF
|
|
|
|
//Clear the reminder bit as there is about to be some getaway related help displayed
|
|
CLEAR_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER)
|
|
CLEAR_HELP_TEXT_BIT(HTE_PLACEMENT_REMINDER_BIG)
|
|
//reset the timer as well
|
|
iReminderTimer = GET_GAME_TIMER()
|
|
|
|
//break so that i will = the lable we want to display
|
|
i = ENUM_TO_INT(NUM_HELP)
|
|
|
|
ELSE //if they have entered one of the prep vehicles and teh preps arent done done display the text as the mission will trigger
|
|
|
|
IF ENUM_TO_INT(HTE_UNSUITABLE_VEH) = iHelpIncrement
|
|
#IF IS_DEBUG_BUILD SK_PRINT(" Unsuitable help string to display when in a Tow or Garbage truck before completeing the prep ") #ENDIF
|
|
CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, iHelpIncrement) )
|
|
i = ENUM_TO_INT(NUM_HELP)
|
|
ELSE
|
|
//hmm this should probably just break out and clear the help bits but its been
|
|
//working for over 4 months
|
|
iHelpToDisplay = i
|
|
eHelpTextState = HTS_DISPLAY
|
|
fHelpDisplayedFor = 0.0
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "Help text bit set we are in a tow truck or garbage truck but the help isnt unsuitable vehicle ")
|
|
CPRINTLN(DEBUG_MISSION, "Help bit set text is == ", GET_STRING_FROM_TEXT_FILE(sHelpLables[iHelpToDisplay]))
|
|
CPRINTLN(DEBUG_MISSION, "Help bit set index is == ", iHelpToDisplay)
|
|
#ENDIF
|
|
|
|
//break so that i will = the lable we want to display
|
|
i = ENUM_TO_INT(NUM_HELP)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC DO_HELP_DISPLAYING_STATES(HELP_TEXT_ENUMS eHelpToShow, BOOL bOffMission = FALSE)
|
|
SWITCH eHelpTextState
|
|
CASE HTS_DISPLAY
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
AND NOT DOES_PLAYER_HAVE_END_OF_MISSION_CALL_QUEUED(GET_CURRENT_PLAYER_PED_ENUM())
|
|
AND NOT Is_Player_Timetable_Scene_In_Progress()
|
|
CPRINTLN(DEBUG_MISSION, "There is not any help being displayed = HTS_DISPLAY")
|
|
PRINT_HELP(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)), 15000)
|
|
|
|
eHelpTextState = HTS_WAIT_DISPLAY
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "Some help is being displayed dont display help = HTS_DISPLAY")
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE HTS_WAIT_DISPLAY
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
CPRINTLN(DEBUG_MISSION, "help is being displayed change state = HTS_DISPLAYING")
|
|
fHelpDisplayedFor = 0.0
|
|
eHelpTextState = HTS_DISPLAYING
|
|
ELSE
|
|
fHelpDisplayedFor += GET_FRAME_TIME()
|
|
IF fHelpDisplayedFor >= 20.0
|
|
CPRINTLN(DEBUG_MISSION, "help Hasn't been displayed for 20s breaking out to try again = ", GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
eHelpTextState = HTS_FINISHED
|
|
ELIF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed change state = HTS_FINISHED")
|
|
CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, eHelpToShow) )
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
eHelpTextState = HTS_FINISHED
|
|
ENDIF
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed stay in this state = HTS_WAIT_DISPLAY = ", GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE HTS_DISPLAYING
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed")
|
|
CPRINTLN(DEBUG_MISSION, "fHelpDisplayedFor = = ", fHelpDisplayedFor)
|
|
IF fHelpDisplayedFor >= 7.5
|
|
OR IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed change state = HTS_FINISHED")
|
|
CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, eHelpToShow) )
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
eHelpTextState = HTS_FINISHED
|
|
ELSE
|
|
IF bOffMission
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed change state = HTS_WAITING_HELP")
|
|
eHelpTextState = HTS_WAITING_HELP
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "help is not being displayed change state = HTS_DISPLAY")
|
|
eHelpTextState = HTS_DISPLAY
|
|
fHelpDisplayedFor = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
fHelpDisplayedFor += GET_FRAME_TIME()
|
|
CPRINTLN(DEBUG_MISSION, "Help is being displayed stay in this state = HTS_DISPLAYING")
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE HTS_FINISHED
|
|
CPRINTLN(DEBUG_MISSION, "help has been displayed reset help manger no more help required for now = HTS_WAITING_HELP")
|
|
fHelpDisplayedFor = 0.0
|
|
eHelpTextState = HTS_WAITING_HELP
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Monitors for help bits being set.
|
|
/// Then displays they via a state machine
|
|
/// the normal checks only run when the mission state is off mission
|
|
/// when text is loaded and there isnt anything else happening that would get in the way
|
|
/// If we have had to go in to sleep mode then the monitor displayes the
|
|
/// find a more discreet location for the vehicle help then resets to wait to come back off mission
|
|
PROC MONITER_HELP_TEXT()
|
|
IF (g_OnMissionState = MISSION_TYPE_OFF_MISSION
|
|
AND eMissionState != MS_WAIT_ON_MISSION
|
|
AND IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
AND NOT IS_MISSION_LEADIN_ACTIVE()
|
|
AND g_iOffMissionCutsceneRequestActive = NULL_OFFMISSION_CUTSCENE_REQUEST)
|
|
AND NOT IS_RESULT_SCREEN_DISPLAYING()
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME)
|
|
OR GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_PLACING_CAR) //if we arent on the prep e "mission"
|
|
MONITOR_GETAWAY_REMINDER()
|
|
MONITER_PLAYER_WANTED()
|
|
SWITCH eHelpTextState
|
|
CASE HTS_WAITING_HELP
|
|
INT iHelpIncrement
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_FIRST_HELP_BIT))
|
|
iHelpIncrement = -1
|
|
WHILE iHelpIncrement < (ENUM_TO_INT(HTE_LOC_WATER)-1)
|
|
iHelpIncrement++
|
|
IF iHelpIncrement != ENUM_TO_INT(NUM_HELP)
|
|
CHECK_HELP_BITS(iHelpTextBit[0], iHelpIncrement)
|
|
ENDIF
|
|
ENDWHILE
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_FIRST_HELP_BIT))
|
|
ELSE
|
|
iHelpIncrement = 31
|
|
WHILE iHelpIncrement < (ENUM_TO_INT(NUM_HELP)-1)
|
|
iHelpIncrement++
|
|
IF iHelpIncrement != ENUM_TO_INT(NUM_HELP)
|
|
CHECK_HELP_BITS(iHelpTextBit[1], iHelpIncrement)
|
|
ENDIF
|
|
ENDWHILE
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_FIRST_HELP_BIT))
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE HTS_DISPLAY
|
|
FALLTHRU
|
|
CASE HTS_WAIT_DISPLAY
|
|
FALLTHRU
|
|
CASE HTS_DISPLAYING
|
|
FALLTHRU
|
|
CASE HTS_FINISHED
|
|
DO_HELP_DISPLAYING_STATES(INT_TO_ENUM(HELP_TEXT_ENUMS, iHelpToDisplay), TRUE)
|
|
BREAK
|
|
// //if there isnt a help message already on screen display the help message
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP(GET_HELP_LABLE_FROM_BIT(iHelpToDisplay), DEFAULT_HELP_TEXT_TIME)
|
|
// eHelpTextState = HTS_WAIT_DISPLAY
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_WAIT_DISPLAY
|
|
// //when the message is being displayed move state to wait for it to finish
|
|
// IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(iHelpToDisplay))
|
|
// eHelpTextState = HTS_DISPLAYING
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_DISPLAYING
|
|
// //the help message has finished displaying for whatever reason
|
|
// IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(iHelpToDisplay))
|
|
// eHelpTextState = HTS_FINISHED
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_FINISHED
|
|
// //message has fininshed displaying clear the help bit and reset the state machine
|
|
// CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, iHelpToDisplay) )
|
|
// iHelpToDisplay = -1
|
|
// eHelpTextState = HTS_WAITING_HELP
|
|
// BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
IF g_OnMissionState != MISSION_TYPE_OFF_MISSION
|
|
OR g_OnMissionState != MISSION_TYPE_STORY
|
|
OR g_OnMissionState != MISSION_TYPE_STORY_PREP
|
|
OR g_OnMissionState != MISSION_TYPE_RANDOM_CHAR
|
|
OR g_OnMissionState != MISSION_TYPE_SWITCH
|
|
OR IS_MISSION_LEADIN_ACTIVE()
|
|
OR g_iOffMissionCutsceneRequestActive = NULL_OFFMISSION_CUTSCENE_REQUEST
|
|
OR g_bTaxiProceduralRunning
|
|
// CPRINTLN(DEBUG_MISSION, "Try and display On mission help - This will loop")
|
|
HELP_TEXT_ENUMS eHelpToShow = HTE_ON_MISSION
|
|
IF IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
eHelpToShow = HTE_ON_FRIEND_ACT
|
|
ELIF g_bTaxiProceduralRunning
|
|
eHelpToShow = HTE_ON_TAXI_MISSION
|
|
ENDIF
|
|
IF IS_BIT_SET(iHelpTextBit[GET_HELP_BIT_ID(ENUM_TO_INT(eHelpToShow))], ENUM_TO_INT(eHelpToShow))
|
|
DO_HELP_DISPLAYING_STATES(eHelpToShow, FALSE)
|
|
// CPRINTLN(DEBUG_MISSION, "On mission help bit set")
|
|
// SWITCH eHelpTextState
|
|
// CASE HTS_DISPLAY
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// CPRINTLN(DEBUG_MISSION, "There is not any help being displayed while off mission display On Mission help = HTS_DISPLAY")
|
|
// PRINT_HELP(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)), DEFAULT_HELP_TEXT_TIME)
|
|
// eHelpTextState = HTS_WAIT_DISPLAY
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "Some help is being displayed while off mission dont display On Mission help = HTS_DISPLAY")
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_WAIT_DISPLAY
|
|
// IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
// CPRINTLN(DEBUG_MISSION, "On Mission help is being displayed change state = HTS_DISPLAYING")
|
|
// eHelpTextState = HTS_DISPLAYING
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "On Mission help is not being displayed stay in this state = HTS_WAIT_DISPLAY")
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_DISPLAYING
|
|
// IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(eHelpToShow)))
|
|
// CPRINTLN(DEBUG_MISSION, "On Mission help is not being displayed change state = HTS_FINISHED")
|
|
// eHelpTextState = HTS_FINISHED
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "On Mission help is being displayed stay in this state = HTS_DISPLAYING")
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE HTS_FINISHED
|
|
// CPRINTLN(DEBUG_MISSION, "On Mission help has been displayed reset help manger no more help required for now = HTS_FINISHED")
|
|
// CLEAR_HELP_TEXT_BIT(INT_TO_ENUM(HELP_TEXT_ENUMS, eHelpToShow) )
|
|
// eHelpTextState = HTS_WAITING_HELP
|
|
// BREAK
|
|
// ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
///******************************************************************************************************
|
|
/// RESTRICTED AREA STUFF ****** RESTRICTED AREA STUFF
|
|
///******************************************************************************************************
|
|
|
|
/// PURPOSE:
|
|
/// Fill out a new restricted area struct
|
|
/// PARAMS:
|
|
/// zone - The name of the zone this area is in
|
|
/// pos1 - one of the positions that defines the area
|
|
/// pos2 - another postion that defines the area
|
|
/// width - the width of the area
|
|
/// RETURNS:
|
|
/// A new restricted area
|
|
FUNC RESTRICTED_AREA FILL_RESTRICTED_AREA(STRING zone, VECTOR pos1, VECTOR pos2, FLOAT width)
|
|
RESTRICTED_AREA temp
|
|
|
|
temp.sZone = zone
|
|
temp.vPos1 = pos1
|
|
temp.vPos2 = pos2
|
|
temp.fWidth = width
|
|
RETURN temp
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// populates the restricted area data
|
|
PROC POPULATE_RESTRICTED_AREAS()
|
|
sRestrictedZoneList[0] = "ARMYB"
|
|
sRestrictedZoneList[1] = "AIRP"
|
|
sRestrictedZoneList[2] = "STAD"
|
|
sRestrictedZoneList[3] = "TERMINA"
|
|
sRestrictedZoneList[4] = "MOVIE"
|
|
sRestrictedZoneList[5] = "JAIL"
|
|
sRestrictedZoneList[6] = "OCEANA"
|
|
sRestrictedZoneList[7] = "GOLF"
|
|
sRestrictedZoneList[8] = "HORS"
|
|
sRestrictedZoneList[9] = "MTCHIL"
|
|
sRestrictedZoneList[10] = "MTGORDO"
|
|
sRestrictedZoneList[11] = "SANCHIA"
|
|
sRestrictedZoneList[12] = "TATAMO"
|
|
|
|
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[0] = FILL_RESTRICTED_AREA("DELBE", <<-1615.25745, -952.59436, 20.01716>>, <<-2160.70581, -423.00000, -1.28679>>, 327.8) //Beach 1
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[1] = FILL_RESTRICTED_AREA("DELBE", <<-1521.71631, -914.56757, 20.17247>>, <<-1855.71484, -1325.78406, -44.79295>>, 254.80) //peir
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[2] = FILL_RESTRICTED_AREA("BEACH", <<-1162.36987, -1815.00842, 15.33822>>, <<-1553.20715, -1098.68494, 0.46467>>, 253.91)//beach 2
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[3] = FILL_RESTRICTED_AREA("BEACH", <<-1464.21851, -1136.78284, 0.32167>>, <<-2241.56641, -358.88486, 20.32481>>, 282.21)//beach 2
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[4] = FILL_RESTRICTED_AREA("PBOX", <<156.41087, -1042.64124, 22.31273>>, <<238.63815, -821.12170, 35.10069>>, 176.96) //that square next to the FIB building where a barry mission is
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[5] = FILL_RESTRICTED_AREA("CHIL", <<883.11212, 534.72833, 115.72503>>, <<559.74249, 644.60199, 150.59714>>, 301.08) //Lester 1B stadium Opera
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[6] = FILL_RESTRICTED_AREA("EAST_V", <<941.45306, -329.42560, 60.77003>>, <<727.76514, -200.95193, 75.59085>>, 88.89) //Broker park
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[7] = FILL_RESTRICTED_AREA("EAST_V", <<689.11768, -273.14056, 60.21559>>, <<834.73260, -352.16550, 50.92442>>, 81.23) //Broker park
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[8] = FILL_RESTRICTED_AREA("MIRR", <<1048.49854, -357.03320, 60.92149>>, <<1401.58081, -783.89752, 75.7477>>, 325.93) //Mirror park
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[9] = FILL_RESTRICTED_AREA("MIRR", <<892.28357, -461.57523, 70.86029>>, <<1161.30066, -829.82990, 45.90131>>, 184.12) //Mirror park
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[10] = FILL_RESTRICTED_AREA("VCANA", <<-1161.36060, -1143.71631, -5.71593>>, <<-864.97137, -981.12573, 21.09691>>, 328.65) //Canals
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[11] = FILL_RESTRICTED_AREA("BAYTRE", <<251.40108, 1068.34717, 280.66629>>, <<189.60123, 1272.35217, 143.80351>>, 160.32) //Concert place
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[13] = FILL_RESTRICTED_AREA("OBSERV", <<-450.98346, 1048.40845, 252.94498>>, <<-389.56403, 1244.50391, 370.24692>>, 199.93) //Observatory
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[14] = FILL_RESTRICTED_AREA("AIRP", <<0,0,0>>, <<0,0,0>>, 0)//Airport
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[15] = FILL_RESTRICTED_AREA("TERMINA", <<0,0,0>>, <<0,0,0>>, 0) //Terminal
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[16] = FILL_RESTRICTED_AREA("STAD", <<0,0,0>>, <<0,0,0>>, 0) //Fame or shame stadium
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[17] = FILL_RESTRICTED_AREA("MOVIE", <<0,0,0>>, <<0,0,0>>, 0)//Movie lot
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[18] = FILL_RESTRICTED_AREA("GOLF", <<0,0,0>>, <<0,0,0>>, 0)//golf place
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[19] = FILL_RESTRICTED_AREA("HORS", <<0,0,0>>, <<0,0,0>>, 0) //Horse racetrack
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[20] = FILL_RESTRICTED_AREA("PBOX", <<-28.39781, -1071.24487, 50.21438>>, <<-49.83520, -1131.27661, 20.02555>>, 55.12) //Simeon's car dealership
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[21] = FILL_RESTRICTED_AREA("LOSSF", <<843.19617, 25.93548, 65.16061>>, <<1138.68652, 363.05872, 105.41279>>, 61.11) //Los santos freeway - by horse track
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[22] = FILL_RESTRICTED_AREA("ROCKF", <<-992.56384, -199.76730, 30.74956>>, <<-687.99042, -43.23445, 80.93306>>, 80.53) //rockford hils
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[23] = FILL_RESTRICTED_AREA("ROCKF", <<-251.8548, -446.2141, 29.5887>>, <<-362.6850, -434.7425, 90.9310>>, 50.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[24] = FILL_RESTRICTED_AREA("ALTA", <<180.2637, -404.9771, 40.1713>>, <<289.9432, -445.1485, 124.3793>>, 100.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[25] = FILL_RESTRICTED_AREA("ALTA", <<343.8481, -323.1273, 80.7749>>, <<427.0800, -361.0469, 45.3411>>, 85.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[26] = FILL_RESTRICTED_AREA("RANCHO", <<414.5057, -2092.0999, 19.8533>>, <<350.8093, -2158.3950, 12.3916>>, 55.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[27] = FILL_RESTRICTED_AREA("RANCHO", <<283.7474, -2103.9177, 12.9242>>, <<391.8871, -1983.2037, 33.0042>>, 100.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[28] = FILL_RESTRICTED_AREA("PBOX", <<85.0380, -670.3274, 42.8642>>, <<227.8234, -722.2458, 274.0000>>, 175.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[29] = FILL_RESTRICTED_AREA("PBOX", <<-107.2516, -906.3600, 28.2051>>, <<-49.9007, -752.9250, 330.0000>>, 125.0000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[30] = FILL_RESTRICTED_AREA("TEXTI", <<456.8563, -683.8335, 32.2903>>, <<457.5504, -819.4669, 25.9553>>, 14.4000)
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].mRestrictedArea[31] = FILL_RESTRICTED_AREA("ROCKF", <<-699.7205, -227.3646, 67.8180>>, <<-645.1068, -332.5107, 30.9132>>, 127.1000)
|
|
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].eType = RT_PUBLIC_AREA
|
|
mRestrictedAreaList[RT_PUBLIC_AREA].iNumAreas = 32
|
|
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[0] = FILL_RESTRICTED_AREA("PBOX", <<-25.50944, -932.38464, 20.41711>>, <<119.94056, -523.43976, 33.07988>>, 363.40) //FIB
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[1] = FILL_RESTRICTED_AREA("DOWNT", <<-25.50944, -932.38464, 20.41711>>, <<119.94056, -523.43976, 33.07988>>, 363.40) //FIB
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[2] = FILL_RESTRICTED_AREA("COSI", <<1426.93445, 1225.11511, 90.76305>>, <<1429.98230, 1006.83069, 120.66425>>, 259.89) //Martins ranch
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[3] = FILL_RESTRICTED_AREA("COSI", <<3503.56030, 3546.40259, 20.18748>>, <<3513.95459, 3875.79517, 72.948060>>, 393.78) //drug fac
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[4] = FILL_RESTRICTED_AREA("SKID", <<403.54044, -864.46936, 20.33799>>, <<396.34406, -1127.32471, 35.49262>>, 325.93) //police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[5] = FILL_RESTRICTED_AREA("STRAW", <<543.86035, -1548.04297, 10.24609>>, <<361.65848, -1236.38416, 60.50910>>, 372.57) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[6] = FILL_RESTRICTED_AREA("RANCHO", <<543.86035, -1548.04297, 20.24609>>, <<361.65848, -1236.38416, 70.50910>>, 400) //Too close to hospital and police precinct - big score prep A station
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[7] = FILL_RESTRICTED_AREA("RANCHO", <<384.81558, -1933.41052, 16.59966>>, <<390.61108, -1932.07544, 30.60899>>, 70.52) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[8] = FILL_RESTRICTED_AREA("RANCHO", <<330.72287, -1889.69373, 20.92559>>, <<423.02939, -1792.35583, 35.78436>>, 102.07) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[9] = FILL_RESTRICTED_AREA("RANCHO", <<245.16766, -1949.12012, 18.20034>>, <<292.74945, -1896.08887, 35.93622>>, 22.10) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[10] = FILL_RESTRICTED_AREA("RANCHO", <<126.69929, -1836.23828, 33.35957>>, <<210.85199, -1903.31995, 18.27101>>, 47.98) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[11] = FILL_RESTRICTED_AREA("DAVIS", <<324.78290, -1925.65112, 30.02256>>, <<216.05585, -2048.78345, 10.22765>>, 41.97) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[12] = FILL_RESTRICTED_AREA("DAVIS", <<-120.61917, -1751.84375, 35.11157>>, <<152.19200, -1981.76868, 10.24828>>, 105.61) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[13] = FILL_RESTRICTED_AREA("PELUFF", <<1178.12878, 24.67330, 91.10038>>, <<938.56110, 176.20265, 69.35879>>, 575.71) //Too close to hospital and police precinct
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[14] = FILL_RESTRICTED_AREA("SANDY", <<1733.21399, 3622.21484, 40.87701>>, <<1938.26807, 3745.34009, 31.32682>>, 239.19) //Police Sandy
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[5] = FILL_RESTRICTED_AREA("JAIL", <<0,0,0>>, <<0,0,0>>, 0)//Prison
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[6] = FILL_RESTRICTED_AREA("ARMYB", <<0,0,0>>, <<0,0,0>>, 0)//Army base
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[17] = FILL_RESTRICTED_AREA("DAVIS", <<253.32857, -1567.82080, 28.22939>>, <<392.00284, -1684.73340, 70.04888>>, 288.30)//Too close to hospital and police precinct - big score prep A station
|
|
// mRestrictedAreaList[RT_LAW_ENFORCEMENT].mRestrictedArea[18] = FILL_RESTRICTED_AREA("RANCHO", <<253.32857, -1567.82080, 28.22939>>, <<392.00284, -1684.73340, 70.04888>>, 288.30)//Too close to hospital and police precinct - big score prep A station
|
|
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].eType = RT_LAW_ENFORCEMENT
|
|
mRestrictedAreaList[RT_LAW_ENFORCEMENT].iNumAreas = 7
|
|
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[0] = FILL_RESTRICTED_AREA("PALETO", <<-422.86185, 6068.39893, 20.34662>>, <<-282.74524, 6206.32422, 50.46586>>, 196.61) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[1] = FILL_RESTRICTED_AREA("ROCKF", <<-755.25061, 147.42661, 75.41048>>, <<-1079.03320, 169.38055, 50.46801>>, 179.12) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[2] = FILL_RESTRICTED_AREA("ROCKF", <<-752.36743, 90.76733, 65.51710>>, <<-938.79803, -15.91457, 35.48347>>, 205.78) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[3] = FILL_RESTRICTED_AREA("ROCKF", <<-890.49988, 431.14490, 90.29848>>, <<-875.35760, 232.32660, 60.20724>>, 263.82) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[4] = FILL_RESTRICTED_AREA("ROCKF", <<-752.36743, 90.76733, 65.51710>>, <<-938.79803, -15.91457, 35.48347>>, 205.78) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[5] = FILL_RESTRICTED_AREA("ROCKF", <<-1198.18262, 638.63666, 115.10664>>, <<-444.50900, 750.93768, 198.29713>>, 473.88) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[6] = FILL_RESTRICTED_AREA("ROCKF", <<-844.40753, 400.94131, 80.43300>>, <<-109.53111, 420.50140, 120.20880>>, 256.03) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[7] = FILL_RESTRICTED_AREA("ROCKF", <<-518.62134, 648.82654, 130.93524>>, <<-64.07090, 582.45044, 215.30841>>, 162.72) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[8] = FILL_RESTRICTED_AREA("RICHM", <<-934.98016, 349.61014, 85.77298>>, <<-1432.45093, 269.98038, 50.73030>>, 185.03) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[9] = FILL_RESTRICTED_AREA("RICHM", <<-1633.81335, -69.53224, 65.10236>>, <<-1446.82288, 69.71544, 48.23926>>, 214.92) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[10] = FILL_RESTRICTED_AREA("RICHM", <<-1732.25806, 444.13525, 130.12581>>, <<-2065.69043, 412.21207, 98.09863>>, 175.17)
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[11] = FILL_RESTRICTED_AREA("RICHM", <<-1618.03625, 50.95197, 70.95364>>, <<-1396.51428, 221.10040, 50.84464>>, 161.61) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[12] = FILL_RESTRICTED_AREA("RICHM", <<-1801.28503, 106.87860, 72.12892>>, <<-1541.74011, 263.37378, 50.44112>>, 155.88) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[13] = FILL_RESTRICTED_AREA("PELUFF", <<-2208.56274, 146.41006, 150.93246>>, <<-2350.12231, 486.60657, 200.59520>>, 299.18) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[14] = FILL_RESTRICTED_AREA("PELUFF", <<-1852.32629, 134.41718, 70.06226>>, <<-1994.38721, 299.62833, 100.96516>>, 182.04) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[15] = FILL_RESTRICTED_AREA("CHIL", <<-1982.66968, 505.96481, 100.93644>>, <<-1918.84265, 713.63818, 150.73953>>, 168.9) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[16] = FILL_RESTRICTED_AREA("CHIL", <<-1455.75061, 887.33508, 191.97572>>, <<-1663.20728, 767.36841, 160.81076>>, 239.65) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[17] = FILL_RESTRICTED_AREA("CHIL", <<-1570.22180, 508.20563, 140.38838>>, <<-808.95325, 526.43335, 90.18556>>, 238.43) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[18] = FILL_RESTRICTED_AREA("CHIL", <<242.62039, 583.59045, 159.40428>>, <<268.04242, 827.44940, 201.69531>>, 105.09) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[19] = FILL_RESTRICTED_AREA("CHIL", <<-21.10285, 706.86481, 150.72626>>, <<-210.43822, 1056.27551, 280.31825>>, 290.15) //Concert place
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[20] = FILL_RESTRICTED_AREA("RGLEN", <<-1837.53833, 774.29840, 120.56287>>, <<-1765.84192, 831.00439, 160.35838>>, 68.09) //
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].mRestrictedArea[21] = FILL_RESTRICTED_AREA("DIVINE", <<-372.08490, 372.71826, 100.60433>>, <<390.21979, 532.51672, 180.53801>>, 305.88) //
|
|
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].eType = RT_RESIDENTAL_AREA
|
|
mRestrictedAreaList[RT_RESIDENTAL_AREA].iNumAreas = 22
|
|
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[0] = FILL_RESTRICTED_AREA("MTCHIL", <<0,0,0>>, <<0,0,0>>, 0) //Mount Chiliad
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[1] = FILL_RESTRICTED_AREA("MTGORDO", <<0,0,0>>, <<0,0,0>>, 0) //Mount Gordo
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[2] = FILL_RESTRICTED_AREA("SANCHIA", <<0,0,0>>, <<0,0,0>>, 0) //Mountain Range
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[3] = FILL_RESTRICTED_AREA("TATAMO", <<0,0,0>>, <<0,0,0>>, 0) //Mountain Range
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[4] = FILL_RESTRICTED_AREA("ELYSIAN", <<531.2397, -3019.2666, 50.0000>>, <<530.1656, -3393.6226, -22.4165>>, 210.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[5] = FILL_RESTRICTED_AREA("ELYSIAN", <<569.1023, -2913.0181, 15.8910>>, <<420.8226, -2912.7749, -15.0372>>, 25.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[6] = FILL_RESTRICTED_AREA("ELYSIAN", <<495.1012, -2833.1753, 5.1640>>, <<460.1983, -2813.5283, 0.4269>>, 12.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[7] = FILL_RESTRICTED_AREA("ELYSIAN", <<675.2973, -2747.4504, 4.9520>>, <<689.2358, -2747.3955, 10.9001>>, 4.3000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[8] = FILL_RESTRICTED_AREA("CYPRE", <<533.4370, -2693.2793, 17.4952>>, <<588.6345, -2693.4624, 5.3007>>, 15.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[9] = FILL_RESTRICTED_AREA("CYPRE", <<534.9656, -2699.1365, 4.9004>>, <<560.1779, -2662.1921, 9.0007>>, 15.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[10] = FILL_RESTRICTED_AREA("CYPRE", <<583.9030, -2689.2068, 16.9771>>, <<549.8469, -2665.3176, 3.9007>>, 17.3000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[11] = FILL_RESTRICTED_AREA("CYPRE", <<683.4280, -2635.1343, 9.3367>>, <<694.4725, -2679.6597, 4.7815>>, 10.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[12] = FILL_RESTRICTED_AREA("CYPRE", <<695.2171, -2694.7688, 5.9815>>, <<695.5035, -2679.1677, 4.8365>>, 10.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[13] = FILL_RESTRICTED_AREA("CYPRE", <<731.7991, -2659.5796, 4.7713>>, <<732.5307, -2678.4001, 10.5065>>, 25.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[14] = FILL_RESTRICTED_AREA("ELYSIAN", <<86.1885, -2430.6963, -0.1888>>, <<119.1515, -2453.1211, 2.8614>>, 13.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[15] = FILL_RESTRICTED_AREA("ELYSIAN", <<260.3166, -2426.7773, 21.2819>>, <<313.7871, -2433.6558, 6.5609>>, 20.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[16] = FILL_RESTRICTED_AREA("ELYSIAN", <<260.3166, -2426.7773, 21.2819>>, <<313.7871, -2433.6558, 6.5609>>, 20.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[17] = FILL_RESTRICTED_AREA("ELYSIAN", <<283.1514, -2456.7773, 19.4609>>, <<290.2325, -2403.6113, 4.2465>>, 20.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[18] = FILL_RESTRICTED_AREA("ELYSIAN", <<266.0341, -2446.7241, 19.4623>>, <<308.3783, -2414.5442, 4.5423>>, 20.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[19] = FILL_RESTRICTED_AREA("ELYSIAN", <<303.5269, -2451.4456, 19.4091>>, <<270.9798, -2409.4517, 4.4609>>, 20.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[20] = FILL_RESTRICTED_AREA("RANCHO", <<515.0260, -1653.5404, 37.2615>>, <<582.5710, -1577.8248, 26.3365>>, 100.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[21] = FILL_RESTRICTED_AREA("BURTON", <<-150.7403, -419.0541, 28.6163>>, <<-52.8669, -453.5552, 39.4051>>, 100.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[22] = FILL_RESTRICTED_AREA("SanAnd", <<50.2035, -470.7132, 36.9003>>, <<102.0394, -322.0089, 115.0000>>, 130.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[23] = FILL_RESTRICTED_AREA("ALTA", <<499.1769, -241.2495, 47.3462>>, <<393.5317, -205.7358, 79.3132>>, 120.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[24] = FILL_RESTRICTED_AREA("DTVINE", <<422.3247, 62.1180, 113.2905>>, <<478.4940, 43.3220, 83.4541>>, 80.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[25] = FILL_RESTRICTED_AREA("DTVINE", <<385.4908, 56.1423, 159.5800>>, <<332.4580, -87.6805, 63.3657>>, 80.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[26] = FILL_RESTRICTED_AREA("DTVINE", <<213.6192, 90.2228, 98.9357>>, <<203.3067, 61.8088, 86.9197>>, 60.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[27] = FILL_RESTRICTED_AREA("DTVINE", <<192.8130, -14.9451, 85.3158>>, <<149.2689, 0.6803, 67.0343>>, 40.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[28] = FILL_RESTRICTED_AREA("WVINE", <<16.1659, 61.8685, 70.8467>>, <<-17.1751, 74.3771, 76.8800>>, 4.5000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[29] = FILL_RESTRICTED_AREA("WVINE", <<-86.5425, 84.8701, 80.2147>>, <<-50.4826, 67.7335, 70.2970>>, 20.0000)
|
|
mRestrictedAreaList[RT_INACCESSIBLE].mRestrictedArea[30] = FILL_RESTRICTED_AREA("ELGORL", <<3449.8391, 5173.9814, 0.0662>>, <<3412.3091, 5166.8896, 14.8342>>, 33.7000)
|
|
|
|
mRestrictedAreaList[RT_INACCESSIBLE].eType = RT_INACCESSIBLE
|
|
mRestrictedAreaList[RT_INACCESSIBLE].iNumAreas = 31
|
|
|
|
IF IS_PED_UNINJURED(PLAYER_PED_ID())
|
|
sCurrentZone = GET_NAME_OF_ZONE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Adds restricted zones to the restricted zone check.
|
|
/// The players zone is checked every 200ms and each zone type has a 200ms delay on iterating through its members
|
|
/// If the restricted zone type has an areas that is in the current player zone the areas is added to the
|
|
/// restricted zone type check bit
|
|
/// Check all the areas then sleep the monitor
|
|
PROC MONITOR_RESTRICTED_AREAS()
|
|
SWITCH eRestrictedAreaMonitor
|
|
CASE RAMS_SLEEPING
|
|
//sleep the checking for areas to add to the check list
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF (GET_GAME_TIMER() - iRestrictedAreaCheckDelay) > 500
|
|
//set current zone to zone player is in now
|
|
sCurrentZone = GET_NAME_OF_ZONE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
#IF IS_DEBUG_BUILD
|
|
IF bZoneDebug
|
|
CPRINTLN(DEBUG_MISSION, "sCurrentZone = ", sCurrentZone)
|
|
ENDIF
|
|
#ENDIF
|
|
eRestrictedAreaMonitor = RAMS_CHECK_IF_AREAS_IN_RANGE
|
|
ELIF iRestrictedAreaCheckDelay = -1
|
|
iRestrictedAreaCheckDelay = GET_GAME_TIMER()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE RAMS_CHECK_IF_AREAS_IN_RANGE
|
|
|
|
IF (GET_GAME_TIMER() - mRestrictedAreaList[iAreaTypeBeingChecked].iTimeDelay) > 500 //wait for the individual restricted zone type to expire so we arent iterating through them all at once
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sCurrentZone)
|
|
AND NOT IS_STRING_NULL_OR_EMPTY(mRestrictedAreaList[iAreaTypeBeingChecked].mRestrictedArea[iAreaBeingChecked].sZone)
|
|
IF ARE_STRINGS_EQUAL(sCurrentZone, mRestrictedAreaList[iAreaTypeBeingChecked].mRestrictedArea[iAreaBeingChecked].sZone)
|
|
#IF IS_DEBUG_BUILD
|
|
// CPRINTLN(DEBUG_MISSION," ADDED AREA = mRestrictedAreaList[", iAreaTypeBeingChecked, "].mRestrictedArea[", p, "]")
|
|
#ENDIF
|
|
//player is in the Zone this area is in add it to the area to check bit
|
|
SET_BIT(mRestrictedAreaList[iAreaTypeBeingChecked].iAreasToCheckBit, iAreaBeingChecked)
|
|
ELSE
|
|
//player isnt in this Areas zone anymore remove it from the check bit
|
|
CLEAR_BIT(mRestrictedAreaList[iAreaTypeBeingChecked].iAreasToCheckBit, iAreaBeingChecked)
|
|
ENDIF
|
|
ELSE
|
|
//if current zone string is null update it
|
|
sCurrentZone = GET_NAME_OF_ZONE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
|
|
iAreaBeingChecked++
|
|
IF iAreaBeingChecked >= (mRestrictedAreaList[iAreaTypeBeingChecked].iNumAreas - 1)
|
|
iAreaBeingChecked = 0
|
|
//after checking all areas in Zone type list reset timer
|
|
mRestrictedAreaList[iAreaTypeBeingChecked].iTimeDelay = GET_GAME_TIMER()
|
|
//increment Zone type list being add
|
|
iAreaTypeBeingChecked++
|
|
//Have we checke dall the areas?
|
|
IF iAreaTypeBeingChecked >= ENUM_TO_INT(RT_NO_RESTRICTION)
|
|
//yes all areas checked reset areas to check
|
|
iAreaTypeBeingChecked = 0
|
|
//reset sleep delay
|
|
iRestrictedAreaCheckDelay = GET_GAME_TIMER()
|
|
//sleep the state macjone
|
|
eRestrictedAreaMonitor = RAMS_SLEEPING
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// checks to see if the player is in a restricted Zone from the restricted list
|
|
/// PARAMS:
|
|
/// zoneName - the name of the zone to check against the restricted list
|
|
/// RETURNS:
|
|
/// False if the player is not in the correct zone
|
|
FUNC BOOL IS_PLAYER_IN_RESTRICTED_ZONE(STRING zoneName)
|
|
IF IS_STRING_NULL_OR_EMPTY(zoneName)
|
|
//string is null so cant exist in the list
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
INT i
|
|
FOR i=0 TO (MAX_RESTRICTED_ZONES-1)
|
|
IF NOT IS_STRING_NULL(sRestrictedZoneList[i])
|
|
//check the list for a matching entry
|
|
IF ARE_STRINGS_EQUAL(sRestrictedZoneList[i], zoneName)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Uses is entity in angeled area to determine if the player in in the coords of an areas
|
|
/// PARAMS:
|
|
/// Area - the area to use as the basis of the check
|
|
/// RETURNS:
|
|
/// true if the player is in the area
|
|
FUNC BOOL IS_PLAYER_IN_RESTRICTED_AREA(RESTRICTED_AREA &Area)
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), Area.vPos1, Area.vPos2, Area.fWidth)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if the contact list is on screen
|
|
/// But checks if the phone is on screen first
|
|
/// RETURNS:
|
|
/// If the contact list is on screen
|
|
FUNC BOOL SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
IF IS_PHONE_ONSCREEN()
|
|
AND IS_CONTACTS_LIST_ON_SCREEN()
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is in any restricted area iterates through all the areas
|
|
/// if the player is in one of the areas the type of the area is returned via referance
|
|
/// PARAMS:
|
|
/// type - Varaible the type of area the player is in is written to
|
|
/// RETURNS:
|
|
/// true if the player is in any restricted area
|
|
FUNC BOOL IS_PLAYER_IN_ANY_RESTRICTED_AREA()
|
|
|
|
INT i,p
|
|
FOR i=0 TO (ENUM_TO_INT(RT_NO_RESTRICTION)-1)
|
|
FOR p=0 TO (mRestrictedAreaList[i].iNumAreas-1)
|
|
IF IS_BIT_SET(mRestrictedAreaList[i].iAreasToCheckBit, p) //if the bit is set in the area type bit to check then the player is in the same zone as this area
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "PLAYER IN ZONE == ", mRestrictedAreaList[i].mRestrictedArea[p].sZone, " CHECKING AREA ", p, " IN ZONE CHECK BIT")
|
|
#ENDIF
|
|
IF IS_PLAYER_IN_RESTRICTED_ZONE(sCurrentZone)
|
|
IF mRestrictedAreaList[i].eType = RT_PUBLIC_AREA
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_PUBLIC_AREA)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_LAW_ENFORCEMENT
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_LAW)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_RESIDENTAL_AREA
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_RESIDENTIAL)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_INACCESSIBLE
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_INACC)
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "The player is in a restricted area ")
|
|
#ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_IN_RESTRICTED_AREA(mRestrictedAreaList[i].mRestrictedArea[p])
|
|
IF mRestrictedAreaList[i].eType = RT_PUBLIC_AREA
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_PUBLIC_AREA)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_LAW_ENFORCEMENT
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_LAW)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_RESIDENTAL_AREA
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_RESIDENTIAL)
|
|
ENDIF
|
|
ELIF mRestrictedAreaList[i].eType = RT_INACCESSIBLE
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_INACC)
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "The player is in a restricted area ")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDFOR
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
///******************************************************************************************************
|
|
/// PHONE CALL STUFF ****** PHONE CALL STUFF
|
|
///******************************************************************************************************
|
|
|
|
/// PURPOSE:
|
|
/// Gets the zone conversation lable from the taxi dialogue
|
|
/// PARAMS:
|
|
/// ePlayer - which player the player is that the time to
|
|
/// set the conversation lable
|
|
PROC GET_ZONE_CONV_LABLE(enumCharacterList ePlayer)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(mPlayerPhoneCallSettings.sZoneName)
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "SanAnd") //San Andreas
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M77"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F78"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T78"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Alamo")//Alamo Sea
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M101"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F1"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T1"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Alta") // Alta
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M1"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F2"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T2"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Airp") //Los Santos International Airport
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M48"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F49"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T49"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ArmyB") // Fort Zancudo
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M28"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F29"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T29"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "BhamCa")//Banham Canyon
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M2"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F3"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T3"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Banning")//Banning
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M3"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F4"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T4"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Baytre")//Baytree Canyon
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M4"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F5"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T5"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Beach")//Vespucci Beach
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M93"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F94"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T94"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "BradT")//Braddock Tunnel
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M7"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F8"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T8"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "BradP")//Braddock Pass
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M6"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F7"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T7"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Burton")//Burton
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M8"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F9"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T9"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CANNY")//Raton Canyon
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M70"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F71"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T71"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CCreak")//Cassidy Creek
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M10"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F11"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T11"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CalafB")//Calafia Bridge
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M9"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F10"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T10"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ChamH")//Chamberlain Hills
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M11"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F12"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T12"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CHU")//Chumash
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M13"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F14"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T14"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CHIL")//Vinewood Hills
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M96"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F97"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T97"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "COSI")//Countryside
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M14"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F15"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T15"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "CMSW")//Chiliad Mountain State Wilderness
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M12"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F13"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T13"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Cypre")//Cypress Flats
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M15"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F16"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T16"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Davis")//Davis
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M16"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F17"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T17"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Desrt")//Grand Senora Desert
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M32"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F33"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T33"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "DelBe")//Del Perro Beach
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M19"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F20"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T20"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "DelPe")//Del Perro
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M18"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F19"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T19"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "DelSol")//La Puerta
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M41"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F42"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T42"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Downt")//Downtown
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M20"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F21"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T21"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "DTVine")//Downtown Vinewood
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M21"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F22"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T22"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Eclips")//Eclipse
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M24"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F25"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T25"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ELSant")//East Los Santos
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M22"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F23"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T23"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "EBuro")//El Burro Heights
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M25"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F26"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T26"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ELGorl")//El Gordo Lighthouse
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M26"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F27"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T27"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Elysian")//Elysian Island
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M27"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F28"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T28"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Galli")//Galileo Park
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M31"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F32"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T32"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Galfish")//Galilee
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M29"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F30"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T30"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Greatc")//Great Chaparral
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M34"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F35"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T35"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Golf")//GWC and Golfing Society
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M35"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F36"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T36"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "GrapeS")//Grapeseed
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M33"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F34"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T34"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Hawick")//Hawick
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M37"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F38"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T38"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Harmo")//Harmony
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M36"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F37"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T37"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Heart")//Heart Attacks Beach
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M38"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F39"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T39"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "HumLab")//Humane Labs and Research
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M39"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F40"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T40"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "HORS")//Vinewood Racetrack
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M97"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F98"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T98"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Koreat")//Little Seoul
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M46"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F47"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T47"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Jail")//Bolingbroke Penitentiary
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M5"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F6"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T6"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LAct")//Land Act Reservoir
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M45"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F46"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T46"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LDam")//Land Act Dam
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M44"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F45"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T45"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Lago")//Lago Zancudo
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M43"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F44"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T44"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LegSqu")//Legion Square
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LosSF")//Los Santos Freeway
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M47"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F48"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T48"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LMesa")//La Mesa
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M40"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F41"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T41"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LosPuer")//La Puerta
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M41"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F42"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T42"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LosPFy")//La Puerta Fwy
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M42"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F43"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T43"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "LOSTMC")//Lost MC
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Mirr")//Mirror Park
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M50"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F51"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T51"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Morn")//Morningwood
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M52"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F53"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T53"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Murri")//Murrieta Heights
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M56"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F57"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T57"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "MTChil")//Mount Chiliad
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M53"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F54"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T54"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "MTJose")//Mount Josiah
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M55"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F56"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T56"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "MTGordo")//Mount Gordo
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M54"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F55"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T55"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Movie")//Richards Majestic
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M72"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F73"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T73"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "NCHU")//North Chumash
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M57"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F58"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T58"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Noose")//N.O.O.S.E - Tataviam Mountains B*2022344
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M84"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F85"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T85"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Oceana")//Pacific Ocean
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M60"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F61"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T61"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Observ")//Galileo Observatory
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M30"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F31"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T31"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Palmpow")//Palmer-Taylor Power Station
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M64"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F65"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T65"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "PBOX")//Pillbox Hill
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M66"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F67"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T67"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "PBluff")//Pacific Bluffs
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M59"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F60"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T60"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Paleto")//Paleto Bay
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M61"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F62"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T62"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "PalCov")//Paleto Cove
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M62"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F63"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T63"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "PalFor")//Paleto Forest
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M63"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F64"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T64"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "PalHigh")//Palomino Highlands
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M65"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F66"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T66"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ProcoB")//Procopio Beach
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M68"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F69"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T69"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Prol")//North Yankton
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M58"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F59"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T59"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "RTRAK")//Redwood Lights Track
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M71"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F72"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T72"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Rancho")//Rancho
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M69"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F70"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T70"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "RGLEN")//Richman Glen
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M74"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F75"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T75"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Richm")//Richman
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M73"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F74"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T74"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Rockf")//Rockford Hills
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M75"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F76"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T76"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "SANDY")//Sandy Shores
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M79"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F80"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T80"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "TongvaH")//Tongva Hills
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M87"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F88"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T88"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "TongvaV")//Tongva Valley
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M88"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F89"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T89"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "East_V")//East Vinewood
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M23"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F24"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T24"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Zenora")//Senora Freeway
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M80"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F81"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T81"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Slab")//Stab City
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M81"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F82"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T82"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "SKID")//Mission Row
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M51"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F52"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T52"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "SLSant")//South Los Santos
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M82"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F83"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T83"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Stad")//Maze Bank Arena
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M49"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F50"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T50"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Tatamo")//Tataviam Mountains
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M84"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F85"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T85"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Termina")//Terminal
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M85"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F86"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T86"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "TEXTI")//Textile City
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M86"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F87"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T87"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "WVine")//West Vinewood
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M99"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F100"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T100"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "UtopiaG")//Utopia Gardens
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M89"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F90"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T90"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Vesp")//Vespucci
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M92"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F93"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T93"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "VCana")//Vespucci Canals
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M94"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F95"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T95"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Vine")//Vinewood
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M95"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F96"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T96"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "WMirror")//West Mirror Drive
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M98"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F99"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T99"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "WindF")//Ron Alternates Wind Farm
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M76"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F77"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T77"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "Zancudo")//Zancudo River
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M100"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F101"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T101"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "SanChia")//San Chianski Mountain Range
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M78"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F79"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T79"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "STRAW")//Strawberry
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M83"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F84"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T84"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "zQ_UAR")//Davis Quartz
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M17"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F18"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T18"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(mPlayerPhoneCallSettings.sZoneName, "ZP_ORT")//Port of South Los Santos
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M67"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F68"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T68"
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ENDIF
|
|
ELSE
|
|
//Use moved lines
|
|
IF ePlayer = CHAR_MICHAEL
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_M"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_F"
|
|
ELSE
|
|
mPlayerPhoneCallSettings.sZoneConvLable = "LOC_T"
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// uses the accessor function to set the correct lable to update the phone conversation
|
|
/// PARAMS:
|
|
/// ePlayer - the player char the player is
|
|
PROC GET_ZONE_NAME_AND_LABLE(enumCharacterList ePlayer)
|
|
mPlayerPhoneCallSettings.sZoneName = GET_NAME_OF_ZONE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ZONE NAME = ===== = = = = = = = = ") #ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT(mPlayerPhoneCallSettings.sZoneName) #ENDIF
|
|
GET_ZONE_CONV_LABLE(ePlayer)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Used to setup the phone call for the end fone call
|
|
/// assignes voices and indices also sets zone update lable
|
|
/// sets the char conferance contact
|
|
/// PARAMS:
|
|
/// ePlayer - the player char the player is
|
|
/// sConvo - the conversation to do
|
|
PROC SETUP_PHONE_CALL_STRUCT(enumCharacterList ePlayer, STRING sConvo)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 13") #ENDIF
|
|
SWITCH ePlayer
|
|
CASE CHAR_MICHAEL
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 14") #ENDIF
|
|
mPlayerPhoneCallSettings.iPlayerVoice = 0
|
|
mPlayerPhoneCallSettings.sPlayerVoice = "MICHAEL"
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
mPlayerPhoneCallSettings.iOtherVoice = 1
|
|
mPlayerPhoneCallSettings.sOtherVoice = "FRANKLIN"
|
|
mPlayerPhoneCallSettings.eContact = CHAR_FRANK_TREV_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.iOtherVoice = 3
|
|
mPlayerPhoneCallSettings.sOtherVoice = "LESTER"
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LEST_FRANK_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LESTER
|
|
ENDIF
|
|
ENDIF
|
|
|
|
mPlayerPhoneCallSettings.sResponse = "FBI_3_FRESP"//can potentially remove this from teh struct
|
|
GET_ZONE_NAME_AND_LABLE(ePlayer)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 15") #ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_FRANKLIN
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 16") #ENDIF
|
|
mPlayerPhoneCallSettings.iPlayerVoice = 1
|
|
mPlayerPhoneCallSettings.sPlayerVoice = "FRANKLIN"
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
mPlayerPhoneCallSettings.iOtherVoice = 0
|
|
mPlayerPhoneCallSettings.sOtherVoice = "MICHAEL"
|
|
mPlayerPhoneCallSettings.eContact = CHAR_MIKE_TREV_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.iOtherVoice = 3
|
|
mPlayerPhoneCallSettings.sOtherVoice = "LESTER"
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LEST_MIKE_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LESTER
|
|
ENDIF
|
|
ENDIF
|
|
|
|
mPlayerPhoneCallSettings.sResponse = "FBI_3_MRESP"
|
|
GET_ZONE_NAME_AND_LABLE(ePlayer)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 17") #ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 18") #ENDIF
|
|
mPlayerPhoneCallSettings.iPlayerVoice = 2
|
|
mPlayerPhoneCallSettings.sPlayerVoice = "TREVOR"
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
mPlayerPhoneCallSettings.iOtherVoice = 0
|
|
mPlayerPhoneCallSettings.sOtherVoice = "MICHAEL"
|
|
mPlayerPhoneCallSettings.eContact = CHAR_MIKE_FRANK_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.iOtherVoice = 3
|
|
mPlayerPhoneCallSettings.sOtherVoice = "LESTER"
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LEST_MIKE_CONF
|
|
ELSE
|
|
mPlayerPhoneCallSettings.eContact = CHAR_LESTER
|
|
ENDIF
|
|
ENDIF
|
|
|
|
mPlayerPhoneCallSettings.sResponse = "FBI_3_MRESP"
|
|
GET_ZONE_NAME_AND_LABLE(ePlayer)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 19") #ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
enumPhoneBookPresence ePhonebook
|
|
IF ePlayer = CHAR_MICHAEL
|
|
ePhonebook = MICHAEL_BOOK
|
|
ELSE
|
|
ePhonebook = FRANKLIN_BOOK
|
|
ENDIF
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK(mPlayerPhoneCallSettings.eContact, ePhonebook, FALSE)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 20") #ENDIF
|
|
ADD_PED_FOR_DIALOGUE(s_conversation_peds, mPlayerPhoneCallSettings.iPlayerVoice, PLAYER_PED_ID(), mPlayerPhoneCallSettings.sPlayerVoice)
|
|
ADD_PED_FOR_DIALOGUE(s_conversation_peds, mPlayerPhoneCallSettings.iOtherVoice, NULL, mPlayerPhoneCallSettings.sOtherVoice)
|
|
mPlayerPhoneCallSettings.sConv = sConvo
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 21") #ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// triggers a conference call for the placing the vehicle
|
|
/// RETURNS:
|
|
/// true when the conference call goes through
|
|
FUNC BOOL DO_CONF_CALL()
|
|
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 25") #ENDIF
|
|
IF PLAYER_CALL_CHAR_CELLPHONE(s_conversation_peds, mPlayerPhoneCallSettings.eContact, sTextblockConvs, mPlayerPhoneCallSettings.sConv, CONV_PRIORITY_VERY_HIGH)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 26") #ENDIF
|
|
ePhoneCallState = PCS_CONV_STARTED
|
|
TS_SET_BLIP_COORD(STATIC_BLIP_MISSION_FBI_OFFICERS4_P3, GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 27") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Turns the secondary option for the contacts on and off
|
|
/// PARAMS:
|
|
/// bOn - If true the secondary contact option is set
|
|
/// if false the secondary contact option is removed
|
|
PROC CONTACT_WATCH(BOOL bOn)
|
|
IF bOn
|
|
STRING sLable = "PRC_MARK"
|
|
//Player can only ring lester
|
|
IF eGetawayID = FIN_GETAWAY
|
|
sLable = "PRC_MARKVEH"
|
|
SET_LESTER_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
//All three player chars involved
|
|
ELIF eGetawayID = FIB4_GETAWAY
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
SET_FRANKLIN_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
SET_TREVOR_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
SET_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
ELSE
|
|
SET_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
ENDIF
|
|
//can ring lester
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
//If mike - can ring frank and lester
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
SET_FRANKLIN_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
SET_LESTER_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
//If frank - can ring Mike and lester
|
|
ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
SET_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
SET_LESTER_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
ELSE
|
|
//If Trev - Can ring Mike and lester
|
|
SET_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
SET_LESTER_SECONDARY_CONTACT_LIST_FUNCTION_AVAILABLE(sLable)
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("CONTACT_WATCH - ON") #ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_ALT_CONTACT_SET))
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_ALT_CONTACT_SET))
|
|
REMOVE_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
REMOVE_FRANKLIN_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
REMOVE_TREVOR_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
REMOVE_LESTER_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_ALT_CONTACT_SET))
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC STRING GET_MARK_PHONE_CALL(enumCharacterList ePlayer)
|
|
STRING sConv
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
sTextblockConvs = "FBIPRAU"
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
sTextblockConvs = "AHFAUD"
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
sTextblockConvs = "FHFAUD"
|
|
ENDIF
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
IF ePlayer = CHAR_MICHAEL
|
|
sConv = "FBI_3_MDRPC"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
sConv = "FBI_3_FDRPC"
|
|
ELIF ePlayer = CHAR_TREVOR
|
|
sConv = "FBI_3_TDRPC"
|
|
ENDIF
|
|
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
IF ePlayer = CHAR_MICHAEL
|
|
sConv = "AH_MDRPC"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
sConv = "AH_FDRPC"
|
|
ELIF ePlayer = CHAR_TREVOR
|
|
sConv = "AH_TDRPC"
|
|
ENDIF
|
|
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
IF ePlayer = CHAR_MICHAEL
|
|
sConv = "FHP_PICKCM"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
sConv = "FHP_PICKCF"
|
|
ELIF ePlayer = CHAR_TREVOR
|
|
sConv = "FHP_PICKCT"
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
sTextblockConvs = "FHFAUD"
|
|
IF ePlayer = CHAR_MICHAEL
|
|
sConv = "FHP_MOVEM"
|
|
ELIF ePlayer = CHAR_FRANKLIN
|
|
sConv = "FHP_MOVEF"
|
|
ELIF ePlayer = CHAR_TREVOR
|
|
sConv = "FHP_MOVET"
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN sConv
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets up the phone call with the correct inital root
|
|
/// the rest of the phone call stuff is setup from this function as well
|
|
PROC POP_PLACED_CONV()
|
|
enumCharacterList ePlayer = GET_CURRENT_PLAYER_PED_ENUM()
|
|
SETUP_PHONE_CALL_STRUCT(ePlayer, GET_MARK_PHONE_CALL(ePlayer))
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// All phone call set up functions are called from here
|
|
/// and the conference call is triggered
|
|
/// !!!!!! could make this function faster
|
|
/// !!!!!! it calls the conversation setup functions every frame that the call isnt
|
|
/// !!!!!! setup. this probably quite slow
|
|
/// PARAMS:
|
|
/// eNextState - the state variable to write back to
|
|
/// RETURNS:
|
|
/// TRUE when the player conference call has gone through
|
|
FUNC BOOL PICK_PHONE_CALL_AND_NEXT_STATE(MISSION_STATE &eNextState)
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
POP_PLACED_CONV()
|
|
IF DO_CONF_CALL()
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 28") #ENDIF
|
|
|
|
STRING scriptName = GET_THIS_SCRIPT_NAME()
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(scriptName)
|
|
IF eGetawayID = FIN_GETAWAY
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "The script is = ", scriptName) #ENDIF
|
|
eNextState = MS_DROP_OFF_AGENCY_CAR
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "The script is = ", scriptName) #ENDIF
|
|
eNextState = MS_DISPLAYING_SPLASH
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
///******************************************************************************************************
|
|
/// HIDING POS CHECKS ****** HIDING POS CHECKS
|
|
///******************************************************************************************************
|
|
|
|
FUNC VECTOR GET_RC_POSITION(g_eRC_MissionIDs RC)
|
|
VECTOR vReturn
|
|
|
|
//Abigail Strand
|
|
IF RC = RC_ABIGAIL_1
|
|
vReturn = << -1604.668, 5239.10, 3.01 >>
|
|
ELIF RC = RC_ABIGAIL_2
|
|
vReturn = << -1592.84, 5214.04, 3.01 >>
|
|
|
|
//Barry Strand
|
|
ELIF RC = RC_BARRY_1
|
|
vReturn = << 190.26, -956.35, 29.63 >>
|
|
ELIF RC = RC_BARRY_2
|
|
vReturn = << 190.26, -956.35, 29.63 >>
|
|
ELIF RC = RC_BARRY_3
|
|
vReturn = << 414.00, -761.00, 29.00 >>
|
|
ELIF RC = RC_BARRY_3A
|
|
vReturn = << 1199.27, -1255.63, 34.23 >>
|
|
ELIF RC = RC_BARRY_3C
|
|
vReturn = << -468.90, -1713.06, 18.21 >>
|
|
ELIF RC = RC_BARRY_4
|
|
vReturn = << 237.65, -385.41, 44.40 >>
|
|
|
|
//Dreyfuss strand
|
|
ELIF RC = RC_DREYFUSS_1
|
|
vReturn = << -1458.97, 485.99, 115.38 >>
|
|
|
|
//Epsilonism strand
|
|
ELIF RC = RC_EPSILON_1
|
|
vReturn = << -1622.89, 4204.87, 83.30 >>
|
|
ELIF RC = RC_EPSILON_2
|
|
vReturn = << 242.70, 362.70, 104.74 >>
|
|
ELIF RC = RC_EPSILON_3
|
|
vReturn = << 1835.53, 4705.86, 38.1 >>
|
|
ELIF RC = RC_EPSILON_4
|
|
vReturn = << 1826.13, 4698.88, 38.92 >>
|
|
ELIF RC = RC_EPSILON_5
|
|
vReturn = << 637.02, 119.7093, 89.50 >>
|
|
ELIF RC = RC_EPSILON_6
|
|
vReturn = <<-2892.93, 3192.37, 11.66>>
|
|
ELIF RC = RC_EPSILON_7
|
|
vReturn = << 524.43, 3079.82, 39.48 >>
|
|
ELIF RC = RC_EPSILON_8
|
|
vReturn = << -697.75, 45.38, 43.03 >>
|
|
|
|
//Extreme strand
|
|
ELIF RC = RC_EXTREME_1
|
|
vReturn = << -188.22, 1296.10, 302.86 >>
|
|
ELIF RC = RC_EXTREME_2
|
|
vReturn = << -954.19, -2760.05, 14.64 >>
|
|
ELIF RC = RC_EXTREME_3
|
|
vReturn = << -63.8, -809.5, 321.8 >>
|
|
ELIF RC = RC_EXTREME_4
|
|
vReturn = << 1731.41, 96.96, 170.39 >>
|
|
|
|
//Fanatic strand
|
|
ELIF RC = RC_FANATIC_1
|
|
vReturn = << -1877.82, -440.649, 45.05>>
|
|
ELIF RC = RC_FANATIC_2
|
|
vReturn = << 809.66, 1279.76, 360.49 >>
|
|
ELIF RC = RC_FANATIC_3
|
|
vReturn = << -915.6, 6139.2, 5.5 >>
|
|
|
|
//HAO
|
|
ELIF RC = RC_HAO_1
|
|
vReturn = <<-72.29, -1260.63, 28.14>>
|
|
|
|
|
|
//Hunting
|
|
ELIF RC = RC_HUNTING_1
|
|
vReturn = << 1804.32, 3931.33, 32.82 >>
|
|
ELIF RC = RC_HUNTING_2
|
|
vReturn = <<-684.17, 5839.16, 16.09 >>
|
|
|
|
//Josh strand
|
|
ELIF RC = RC_JOSH_1
|
|
vReturn = << -1104.93, 291.25, 64.30 >>
|
|
ELIF RC = RC_JOSH_2
|
|
vReturn = << 565.39, -1772.88, 29.77 >>
|
|
ELIF RC = RC_JOSH_3
|
|
vReturn = << 565.39, -1772.88, 29.77 >>
|
|
ELIF RC = RC_JOSH_4
|
|
vReturn = << -1104.93, 291.25, 64.30 >>
|
|
|
|
//Maude
|
|
ELIF RC = RC_MAUDE_1
|
|
vReturn = << 2726.1, 4145, 44.3 >>
|
|
|
|
//Minute Man Blues Strand
|
|
ELIF RC = RC_MINUTE_1
|
|
vReturn = << 327.85, 3405.70, 35.73 >>
|
|
ELIF RC = RC_MINUTE_2
|
|
vReturn = << 18.00, 4527.00, 105.00 >>
|
|
ELIF RC = RC_MINUTE_3
|
|
vReturn = <<-303.82,6211.29,31.05>>
|
|
|
|
//Mrs. Philips strand
|
|
ELIF RC = RC_MRS_PHILIPS_1
|
|
vReturn = <<1972.59, 3816.43, 32.42>>
|
|
ELIF RC = RC_MRS_PHILIPS_2
|
|
vReturn = <<0, 0, 0>>
|
|
|
|
//Nigel strand
|
|
ELIF RC = RC_NIGEL_1
|
|
vReturn = << -1097.16, 790.01, 164.52 >>
|
|
ELIF RC = RC_NIGEL_1A
|
|
vReturn = << -558.65, 284.49, 90.86 >>
|
|
ELIF RC = RC_NIGEL_1B
|
|
vReturn = << -1034.15, 366.08, 80.11 >>
|
|
ELIF RC = RC_NIGEL_1C
|
|
vReturn = << -623.91, -266.17, 37.76 >>
|
|
ELIF RC = RC_NIGEL_1D
|
|
vReturn = << -1096.85, 67.68, 52.95 >>
|
|
ELIF RC = RC_NIGEL_2
|
|
vReturn = << -1310.70, -640.22, 26.54 >>
|
|
ELIF RC = RC_NIGEL_3
|
|
vReturn = << -44.75, -1288.67, 28.21 >>
|
|
|
|
//Omega strand
|
|
ELIF RC = RC_OMEGA_1
|
|
vReturn = << 2468.51, 3437.39, 49.90 >>
|
|
ELIF RC = RC_OMEGA_2
|
|
vReturn = << 2319.44, 2583.58, 46.76 >>
|
|
|
|
//Pap strand
|
|
ELIF RC = RC_PAPARAZZO_1
|
|
vReturn = << -149.75, 285.81, 93.67 >>
|
|
ELIF RC = RC_PAPARAZZO_2
|
|
vReturn = << -70.71, 301.43, 106.79>>
|
|
ELIF RC = RC_PAPARAZZO_3
|
|
vReturn = << -257.22, 292.85, 90.63 >>
|
|
ELIF RC = RC_PAPARAZZO_3A
|
|
vReturn = << 305.52, 157.19, 102.94>>
|
|
ELIF RC = RC_PAPARAZZO_3B
|
|
vReturn = << 1040.96, -534.42, 60.17 >>
|
|
ELIF RC = RC_PAPARAZZO_4
|
|
vReturn = << -484.20, 229.68, 82.21 >>
|
|
|
|
//Rampages
|
|
ELIF RC = RC_RAMPAGE_1
|
|
vReturn = << 908.00, 3643.70, 32.20 >>
|
|
ELIF RC = RC_RAMPAGE_3
|
|
vReturn = << 465.10, -1849.30, 27.80 >>
|
|
ELIF RC = RC_RAMPAGE_4
|
|
vReturn = << -161.00, -1669.70, 33.00 >>
|
|
ELIF RC = RC_RAMPAGE_5
|
|
vReturn = << -1298.20, 2504.14, 21.09 >>
|
|
ELIF RC = RC_RAMPAGE_2
|
|
vReturn = << 1181.50, -400.10, 67.50 >>
|
|
|
|
//The Squatch
|
|
ELIF RC = RC_THELASTONE
|
|
vReturn = << -1298.98, 4640.16, 105.67>>
|
|
|
|
//Tonya strand
|
|
ELIF RC = RC_TONYA_1
|
|
OR RC = RC_TONYA_2
|
|
OR RC = RC_TONYA_5
|
|
vReturn = <<-14.39, -1472.69, 29.58>>
|
|
ELIF RC = RC_TONYA_3
|
|
vReturn = <<0, 0, 0>>
|
|
ELIF RC = RC_TONYA_4
|
|
vReturn = <<0, 0, 0>>
|
|
ENDIF
|
|
|
|
RETURN vReturn
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL IS_POSITION_NEAR_RC_TRIGGER(VECTOR vPos, g_eRC_MissionIDs RCtoCheck)
|
|
FLOAT fDist = VDIST2(vPos, GET_RC_POSITION(RCtoCheck))
|
|
IF fDist <= (25*25)
|
|
CPRINTLN(DEBUG_MISSION, "RC NEAR BY = ", GET_RC_MISSION_DISPLAY_STRING_FROM_ID(RCtoCheck))
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL ARE_ANY_RC_MISSIONS_NEAR(VECTOR vPos)
|
|
//Need to check the unlock thing for all the RC's
|
|
|
|
//Check strands first
|
|
//Abigail strand
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_ABIGAIL_2)
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_ABIGAIL_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_ABIGAIL_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_ABIGAIL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Barry strand
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_BARRY_4)
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_BARRY_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_BARRY_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_BARRY_3A)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_BARRY_3C)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_BARRY_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_BARRY_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
//Drefuss
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_DREYFUSS_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_DREYFUSS_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Epsilon
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_8)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_8)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_7)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_7)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_6)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_6)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_5)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_5)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EPSILON_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EPSILON_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Extreme
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EXTREME_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EXTREME_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EXTREME_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EXTREME_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EXTREME_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EXTREME_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_EXTREME_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_EXTREME_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Fanatic - mike
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_FANATIC_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_FANATIC_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Fanatic - Trev
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_FANATIC_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_FANATIC_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Fanatic - Frank
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_FANATIC_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_FANATIC_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//HAO - frank
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_HAO_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_HAO_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Hunting - trev
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_HUNTING_2)
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_HUNTING_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_HUNTING_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_HUNTING_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Josh
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_JOSH_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_JOSH_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_JOSH_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_JOSH_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_JOSH_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_JOSH_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_JOSH_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_JOSH_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Maude
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MAUDE_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MAUDE_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//minute man
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MINUTE_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MINUTE_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MINUTE_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MINUTE_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MINUTE_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MINUTE_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Mrs Philips
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MRS_PHILIPS_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MRS_PHILIPS_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_MRS_PHILIPS_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_MRS_PHILIPS_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Nigel
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1A)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1B)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1C)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1D)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_NIGEL_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_NIGEL_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Omega
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_OMEGA_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_OMEGA_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_OMEGA_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_OMEGA_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Paparazzo
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_3A)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_3A)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_3B)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_3B)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_PAPARAZZO_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_PAPARAZZO_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Rampage - has a messed up order
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_RAMPAGE_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_RAMPAGE_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_RAMPAGE_5)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_RAMPAGE_5)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_RAMPAGE_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_RAMPAGE_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_RAMPAGE_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_RAMPAGE_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_RAMPAGE_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_RAMPAGE_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_THELASTONE)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_THELASTONE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//Tonya
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_5)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_TONYA_5)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_4)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_TONYA_4)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_3)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_TONYA_3)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_2)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_TONYA_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF NOT IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_TONYA_1)
|
|
IF IS_POSITION_NEAR_RC_TRIGGER(vPos, RC_TONYA_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Determins which of the safe house help to display based on which safe house is passed in
|
|
/// PARAMS:
|
|
/// eSafeHouse - the safe house enum to use in the checks
|
|
#if USE_CLF_DLC
|
|
PROC PICK_SAFE_HOUSE_WARNINGCLF(SAVEHOUSE_NAME_ENUM eSafeHouse)
|
|
IF eSafeHouse = SAVEHOUSEclf_MICHAEL_BH
|
|
OR eSafeHouse = SAVEHOUSEclf_MICHAEL_CS
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_M)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Michael house" )
|
|
// Franklins
|
|
ELIF eSafeHouse = SAVEHOUSEclf_FRANKLIN_SC
|
|
OR eSafeHouse = SAVEHOUSEclf_FRANKLIN_VH
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_F)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Franklin house" )
|
|
// Trevors
|
|
ELIF eSafeHouse = SAVEHOUSEclf_TREVOR_CS
|
|
OR eSafeHouse = SAVEHOUSEclf_TREVOR_VB
|
|
OR eSafeHouse = SAVEHOUSEclf_TREVOR_SC
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_T)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Trevors house" )
|
|
ENDIF
|
|
ENDPROC
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
PROC PICK_SAFE_HOUSE_WARNINGNRM(SAVEHOUSE_NAME_ENUM eSafeHouse)
|
|
IF eSafeHouse = SAVEHOUSENRM_BH
|
|
OR eSafeHouse = SAVEHOUSENRM_CHATEAU
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_M)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Michael house" )
|
|
ENDIF
|
|
ENDPROC
|
|
#endif
|
|
PROC PICK_SAFE_HOUSE_WARNING(SAVEHOUSE_NAME_ENUM eSafeHouse)
|
|
|
|
#if USE_CLF_DLC
|
|
PICK_SAFE_HOUSE_WARNINGCLF(eSafeHouse)
|
|
exit
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
PICK_SAFE_HOUSE_WARNINGNRM(eSafeHouse)
|
|
exit
|
|
#endif
|
|
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
IF eSafeHouse = SAVEHOUSE_MICHAEL_BH
|
|
OR eSafeHouse = SAVEHOUSE_MICHAEL_CS
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_M)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Michael house" )
|
|
// Franklins
|
|
ELIF eSafeHouse = SAVEHOUSE_FRANKLIN_SC
|
|
OR eSafeHouse = SAVEHOUSE_FRANKLIN_VH
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_F)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Franklin house" )
|
|
// Trevors
|
|
ELIF eSafeHouse = SAVEHOUSE_TREVOR_CS
|
|
OR eSafeHouse = SAVEHOUSE_TREVOR_VB
|
|
OR eSafeHouse = SAVEHOUSE_TREVOR_SC
|
|
SET_HELP_TEXT_BIT(HTE_LOC_SAFEHOUSE_T)//This location is too close to a safe house.
|
|
CPRINTLN(DEBUG_MISSION, " Its Trevors house" )
|
|
ENDIF
|
|
#endif
|
|
#endif
|
|
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Performs a check to see if the player is trying to park a vehicle within 200m of
|
|
/// a save house
|
|
/// RETURNS:
|
|
/// TRUE if the player is within range
|
|
FUNC BOOL IS_SAFE_HOUSE_TOO_CLOSE()
|
|
SAVEHOUSE_NAME_ENUM eSafeHouse = GET_CLOSEST_SAVEHOUSE(GET_ENTITY_COORDS(PLAYER_PED_ID()), NO_CHARACTER, TRUE)
|
|
FLOAT dist = VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), g_sSavehouses[eSafeHouse].vSpawnCoords)
|
|
IF ( dist <= 100*100)
|
|
CPRINTLN(DEBUG_MISSION, "Is safe house too close() returned TRUE the distance to the safe house is == ", dist)
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
PICK_SAFE_HOUSE_WARNING(eSafeHouse)
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if two entities are at similar heights
|
|
/// PARAMS:
|
|
/// e1 - the coords of the first entity passed in
|
|
/// e2 - the coords of the second entity passed in
|
|
/// RETURNS:
|
|
/// TRUE is the entities heights are within the defined tolerance
|
|
FUNC BOOL ARE_COORDS_AT_SAME_HEIGHT(VECTOR v1, VECTOR v2)
|
|
FLOAT fDiff = ABSF(v1.z - v2.z)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "The difference in height is: ", fDiff)
|
|
#ENDIF
|
|
|
|
IF fDiff <= 5
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_HEAD_SPACE_CLEAR(VECTOR vPos)
|
|
FLOAT Zcoord, fFloorZ
|
|
|
|
VECTOR vPosAbove = vPos + <<0,0, 3.2>>//garbage truck height
|
|
IF GET_GROUND_Z_FOR_3D_COORD(vPosAbove, Zcoord)
|
|
AND GET_GROUND_Z_FOR_3D_COORD(vPos, fFloorZ)
|
|
IF ABSF(Zcoord - fFloorZ) < 0.9
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "The difference in height is: ", ABSF( Zcoord - fFloorZ))
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "! The difference in height is: ", ABSF(Zcoord - fFloorZ))
|
|
#ENDIF
|
|
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_OBSTRUCTED)
|
|
ENDIF
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks that the player isnt one of the nearby peds.
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL ARE_THERE_ANY_NEAR_PEDS()
|
|
PED_INDEX peds[5]
|
|
GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), peds)
|
|
INT i
|
|
FOR i=0 TO 4
|
|
IF IS_PED_UNINJURED(peds[i])
|
|
AND peds[i] != PLAYER_PED_ID()
|
|
IF VDIST2(vPotentialHidingPos, GET_ENTITY_COORDS(peds[i])) <= 4*4
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("VDIST2(vPotentialHidingPos, GET_ENTITY_COORDS(peds[i])) <= 4*4 ped at = ", i) #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ARE_THERE_ANY_NEAR_PEDS(): FALSE ") #ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Runs checks to see if the getaway vehicle is obstructed by a vehicle or by a ped
|
|
/// PARAMS:
|
|
/// veh - the vehicle to check an area around
|
|
/// RETURNS:
|
|
/// TRUE if this area is blocked
|
|
FUNC BOOL IS_AREA_CLEAR_AROUND_LOCATION_VEHICLE(VEHICLE_INDEX veh )
|
|
INT iAreaClearCounter = 0
|
|
IF veh != NULL
|
|
IF IS_VEHICLE_OK(veh)
|
|
VECTOR vMin, vMax
|
|
GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(veh), vMin, vMax)
|
|
|
|
vMin += <<-2,-1,-1>>
|
|
vMax += <<2,1,1>>
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bShowDebugText
|
|
AND g_bTriggerDebugOn
|
|
DRAW_DEBUG_CROSS(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(veh, vMin), 0,0,255, 255)
|
|
DRAW_DEBUG_CROSS(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(veh, vMax), 0,0,255, 255)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
//Is area clear of vehicles
|
|
IF NOT IS_AREA_OCCUPIED(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(veh, vMin), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(veh, vMax), FALSE, TRUE, FALSE, FALSE, FALSE, veh) //need to do this properly
|
|
iAreaClearCounter++
|
|
CDEBUG3LN(DEBUG_MISSION, "IS_AREA_CLEAR_AROUND_LOCATION_VEHICLE - Is area clear of vehicles - iAreaClearCounter++ ", iAreaClearCounter)
|
|
|
|
ELSE
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_OBSTRUCTED_VEH)//The getaway vehicle can not be placed here, the location is obstructed by a vehicle.
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Is area clear of peds
|
|
IF NOT ARE_THERE_ANY_NEAR_PEDS()
|
|
iAreaClearCounter++
|
|
CDEBUG3LN(DEBUG_MISSION, "IS_AREA_CLEAR_AROUND_LOCATION_VEHICLE - Is area clear of peds - iAreaClearCounter++ ", iAreaClearCounter)
|
|
ELSE
|
|
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_PUBLIC)//The getaway vehicle needs to be placed out of sight of witnesses.
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//if both checks are true then we cant use this location
|
|
IF iAreaClearCounter = 2
|
|
IF IS_HEAD_SPACE_CLEAR(GET_ENTITY_COORDS(veh))
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if the vehicle is upright, in water, on a slant or both of the entry points are blocked
|
|
/// PARAMS:
|
|
/// veh - the vehicle to use when performing the checks
|
|
/// RETURNS:
|
|
/// TRUE if the vehicle is in a sutable position
|
|
FUNC BOOL IS_VEHICLE_UPRIGHT_AND_LEVEL(VEHICLE_INDEX veh)
|
|
IF IS_ENTITY_UPSIDEDOWN(veh)
|
|
SET_HELP_TEXT_BIT(HTE_VEH_UPSIDEDOWN)//The vehicle is upsidedown.
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "IS_VEHICLE_STUCK_ON_ROOF ====== FALSE")
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("IS_VEHICLE_UPRIGHT_AND_LEVEL - START") #ENDIF
|
|
IF NOT IS_ENTRY_POINT_FOR_SEAT_CLEAR(PLAYER_PED_ID(), veh, VS_DRIVER) //find a better way
|
|
AND NOT IS_ENTRY_POINT_FOR_SEAT_CLEAR(PLAYER_PED_ID(), veh, VS_FRONT_RIGHT) //find a better way
|
|
SET_HELP_TEXT_BIT(HTE_LOC_OBSTRUCTED)//This location is obstructed.
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "IS_ENTRY_POINT_FOR_SEAT_CLEAR ====== FALSE")
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_IN_WATER(veh)
|
|
SET_HELP_TEXT_BIT(HTE_LOC_WATER)//This location is in water.
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "IS_ENTITY_IN_WATER() ====== FALSE")
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
VECTOR vCarRot = GET_ENTITY_ROTATION(veh)
|
|
IF vCarRot.x >= 10
|
|
OR vCarRot.x <= -10
|
|
SET_HELP_TEXT_BIT(HTE_LOC_STEEP)//This location is too steep..
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "ON FLAT GROUND ====== FALSE")
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ELIF vCarRot.y >= 15
|
|
OR vCarRot.y <= -15
|
|
SET_HELP_TEXT_BIT(HTE_LOC_UNEVEN)//This location is too uneven..
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "ON FLAT GROUND ====== FALSE")
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "ON FLAT GROUND ====== TRUE ==== ", vCarRot)
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD SK_PRINT("IS_VEHICLE_UPRIGHT_AND_LEVEL - END") #ENDIF
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL IS_FOUR_DOOR_VEHICLE(VEHICLE_INDEX Veh)
|
|
INT i = GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(Veh)
|
|
IF i >= 3
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("enough seats = ", i) #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
SET_HELP_TEXT_BIT(HTE_UNSUITABLE_VEH_SEATS)//seats
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("NOT enough seats = ", i) #ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_VEHICLE_NEAR_ON_ROAD(VECTOR vPos)
|
|
VECTOR vRoadNode
|
|
IF GET_CLOSEST_VEHICLE_NODE(vPos, vRoadNode, NF_NONE)
|
|
#IF IS_DEBUG_BUILD
|
|
IF bShowDebugText
|
|
AND g_bTriggerDebugOn
|
|
DRAW_DEBUG_SPHERE(vRoadNode, 4, 255)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
FLOAT fDist = VDIST2(vPos, vRoadNode)
|
|
IF ( fDist >= 20*20)
|
|
OR NOT ARE_COORDS_AT_SAME_HEIGHT(vPos, vRoadNode)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "( VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), vRoadNode) >= 20*20) ======== TRUE ", VDIST2(vPos, vRoadNode))
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ELSE
|
|
IF ( fDist < 20)
|
|
AND ( fDist > 6)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "(VDIST2(vPos, vRoadNode) >= 10*10 ) ======== FALSE ", VDIST2(vPos, vRoadNode))
|
|
#ENDIF
|
|
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_VEH_NEAR_ROAD)//This location is to close to a road
|
|
ENDIF
|
|
RETURN TRUE
|
|
ELSE
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_VEH_ON_ROAD)//This location is to on a road
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, GET_THIS_SCRIPT_NAME(), " ==== There isnt a road node near return TRUE") #ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_TOO_CLOSE_TO_HOSPITAL(VECTOR vPos)
|
|
FLOAT fDist = VDIST2(vPos, g_sHospitals[GET_CLOSEST_HOSPITAL(vPos)].vSpawnCoords)
|
|
IF ( fDist <= 200*200)
|
|
CPRINTLN(DEBUG_MISSION, "The player near a hospital ", GET_THIS_SCRIPT_NAME())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_TOO_CLOSE_TO_PRECINCT(VECTOR vPos)
|
|
FLOAT fDist = VDIST2(vPos, g_sPoliceStations[GET_CLOSEST_POLICE_STATION(vPos)].vSpawnCoords)
|
|
IF ( fDist <= 200*200)
|
|
CPRINTLN(DEBUG_MISSION, "The player near a police station ", GET_THIS_SCRIPT_NAME())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL IS_TOO_CLOSE_TO_HOSPITAL_OR_PRECINCT(VECTOR vPos)
|
|
IF IS_TOO_CLOSE_TO_HOSPITAL(vPos)
|
|
OR IS_TOO_CLOSE_TO_PRECINCT(vPos)
|
|
IF SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
SET_HELP_TEXT_BIT(HTE_LOC_LAW)
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_NEAR_GARAGE_RESPAWN(VECTOR vPos)
|
|
IF vPos.z < -90.0
|
|
CPRINTLN(DEBUG_MISSION, "The player IN a player garage vec ", GET_THIS_SCRIPT_NAME())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF ( VDIST2(vPos, <<-89.3770, 92.6583, 71.2349>>) <= 20*20)
|
|
OR ( VDIST2(vPos, <<-62.0307, -1839.8585, 25.6787>>) <= 20*20)
|
|
OR ( VDIST2(vPos, <<-234.7648, -1150.3105, 21.9224>>) <= 20*20)
|
|
CPRINTLN(DEBUG_MISSION, "The player near a player garage respawn vec ", GET_THIS_SCRIPT_NAME())
|
|
SET_HELP_TEXT_BIT(HTE_LOC_PUBLIC_AREA)
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the vehicle is near any road nodes, near a safe house, in a restricted zone
|
|
/// PARAMS:
|
|
/// vPos - the position to use in the checks
|
|
/// RETURNS:
|
|
/// TRUE if the position is in a suitable location
|
|
FUNC BOOL IS_AREA_QUIET(VECTOR vPos)
|
|
|
|
IF NOT IS_SAFE_HOUSE_TOO_CLOSE()
|
|
AND NOT IS_NEAR_GARAGE_RESPAWN(vPos)
|
|
// IF NOT IS_PLAYER_TO_CLOSE_TO_FBI_LOCS() //not generic
|
|
IF NOT IS_PLAYER_IN_ANY_RESTRICTED_AREA()
|
|
IF NOT ARE_ANY_RC_MISSIONS_NEAR(vPos)
|
|
IF NOT IS_VEHICLE_NEAR_ON_ROAD(vPos)
|
|
AND NOT IS_TOO_CLOSE_TO_HOSPITAL_OR_PRECINCT(vPos)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_ON_MISSION)
|
|
ENDIF
|
|
ENDIF
|
|
//ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
///******************************************************************************************************
|
|
///
|
|
///
|
|
/// HIDING POS CHECKS ****** HIDING POS CHECKS
|
|
///
|
|
///
|
|
///******************************************************************************************************
|
|
|
|
///******************************************************************************************************
|
|
/// CAR CHECKS ****** CAR CHECKS
|
|
///******************************************************************************************************
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the vehicle is a car
|
|
/// Cant use a bike, plane, heli, horse, boat or police vehicle
|
|
/// RETURNS:
|
|
/// TRUE if the vehicle is none of the above
|
|
FUNC BOOL IS_VEHICLE_ROAD_VEHICLE()
|
|
IF IS_PED_IN_ANY_BOAT(PLAYER_PED_ID())
|
|
OR IS_PED_IN_FLYING_VEHICLE(PLAYER_PED_ID())
|
|
OR IS_PED_ON_MOUNT(PLAYER_PED_ID())
|
|
OR IS_PED_IN_ANY_POLICE_VEHICLE(PLAYER_PED_ID())
|
|
OR IS_PED_IN_ANY_TRAIN(PLAYER_PED_ID())
|
|
SET_HELP_TEXT_BIT(HTE_UNSUITABLE_VEH)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to make sure the vehicle's model is not on the invalid list
|
|
/// PARAMS:
|
|
/// Name - The name of the model to check
|
|
/// RETURNS:
|
|
/// TRUE if the model being checked is on the invalid list
|
|
FUNC BOOL DOES_CURRENT_MODEL_EQUAL_INVALID(MODEL_NAMES Name)
|
|
INT i
|
|
FOR i=0 TO (MAX_INVALIDMODS-1)
|
|
IF mnInvalidModels[i] = Name
|
|
|
|
IF i = 0
|
|
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_4_PREP_1)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IN_FIB_VEHICLE_BEFORE_COMPLETE))
|
|
ELIF i = 1
|
|
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_4_PREP_2)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IN_FIB_VEHICLE_BEFORE_COMPLETE))
|
|
ELSE
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IN_FIB_VEHICLE_BEFORE_COMPLETE))
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the vehicles stats are with in a certain level
|
|
/// And performs the DOES_CURRENT_MODEL_EQUAL_INVALID
|
|
/// Acceleration needs to be over 0.165
|
|
/// Max est speed needs to be above 31
|
|
/// RETURNS:
|
|
/// TRUE if all the checks are passed ie model acceleration and top speed
|
|
FUNC BOOL IS_VEHICLE_MODEL_SUITABLE(VEHICLE_INDEX Veh)
|
|
MODEL_NAMES mnTemp = GET_ENTITY_MODEL(Veh)
|
|
|
|
IF NOT DOES_CURRENT_MODEL_EQUAL_INVALID(mnTemp)
|
|
IF GET_VEHICLE_MODEL_ACCELERATION(mnTemp) > 0.165
|
|
AND GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED(mnTemp) > 31
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "GET_VEHICLE_MODEL_ACCELERATION == ", GET_VEHICLE_MODEL_ACCELERATION(mnTemp))
|
|
CPRINTLN(DEBUG_MISSION, "GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED == ", GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED(mnTemp))
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "GET_VEHICLE_MODEL_ACCELERATION == ", GET_VEHICLE_MODEL_ACCELERATION(mnTemp))
|
|
CPRINTLN(DEBUG_MISSION, "GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED == ", GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED(mnTemp))
|
|
#ENDIF
|
|
SET_HELP_TEXT_BIT(HTE_UNSUITABLE_VEH)
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is in any of the preset vehicle setups for a character
|
|
/// eg: Michaels tailgater etc.
|
|
/// RETURNS:
|
|
/// TRUE if the player is in a vehicle that matches the setup details of
|
|
/// one of the player cars
|
|
FUNC BOOL IS_PLAYER_IN_ANY_PLAYER_VEHICLE(VEHICLE_INDEX Veh)
|
|
enumCharacterList playercar = GET_PLAYER_PED_PERSONAL_VEHICLE_BELONGS_TO(Veh)
|
|
|
|
|
|
IF playercar = CHAR_MICHAEL
|
|
SET_HELP_TEXT_BIT(HTE_VEH_OWNED_MIKE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Vehicle is owned by Mike") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF playercar = CHAR_FRANKLIN
|
|
SET_HELP_TEXT_BIT(HTE_VEH_OWNED_FRANK)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Vehicle is owned by Frank") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF playercar = CHAR_TREVOR
|
|
SET_HELP_TEXT_BIT(HTE_VEH_OWNED_TREV)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Vehicle is owned by Trev") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_VEHICLE_IN_TEMP_NPC_VEHICLE_ID_LIST(Veh)
|
|
SET_HELP_TEXT_BIT(HTE_UNSUITABLE_VEH)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Vehicle is owned by an NPC") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if the player is a passenger in a taxi
|
|
/// RETURNS:
|
|
/// TRUE if the player is a passenger in a taxi
|
|
FUNC BOOL IS_PLAYER_PASSENGER_IN_TAXI()
|
|
IF IS_PED_IN_ANY_TAXI(PLAYER_PED_ID())
|
|
IF GET_PED_IN_VEHICLE_SEAT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT) = PLAYER_PED_ID()
|
|
OR GET_PED_IN_VEHICLE_SEAT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT) = PLAYER_PED_ID()
|
|
OR GET_PED_IN_VEHICLE_SEAT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT) = PLAYER_PED_ID()
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_GETAWAY_VEHICLE_HEALTHY(VEHICLE_INDEX veh)
|
|
IF GET_ENTITY_HEALTH(veh) < 300
|
|
OR GET_VEHICLE_ENGINE_HEALTH(veh) < 300
|
|
SET_HELP_TEXT_BIT(HTE_HEALTH_VEH)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Performs checks to determine if the vehicle the player is in could
|
|
/// be used in the getaway
|
|
/// RETURNS:
|
|
/// TRUE if the vehicle the player is in can be used in the getaway
|
|
FUNC BOOL DO_VALID_GETAWAY_CAR_CHECK(VEHICLE_INDEX Veh)
|
|
IF IS_VEHICLE_MODEL_SUITABLE(Veh)
|
|
AND NOT IS_PLAYER_IN_ANY_PLAYER_VEHICLE(Veh)
|
|
AND IS_GETAWAY_VEHICLE_HEALTHY(Veh)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is using a cargo bob to transport the vehicle
|
|
/// RETURNS:
|
|
/// TRUE if the player is using a cargo bob to transport the vehicle
|
|
/// or if the decor exists and is set to true
|
|
FUNC BOOL MONITOR_PLAYER_CARGO_BOBBING_CAR()
|
|
VEHICLE_INDEX Veh
|
|
IF IS_PLAYER_FLYING_WITH_ANY_ATTACHED_VEHICLE(Veh)
|
|
IF NOT DECOR_EXIST_ON(Veh, "Getaway_Winched")
|
|
DECOR_SET_BOOL(Veh, "Getaway_Winched", TRUE)
|
|
SET_HELP_TEXT_BIT(HTE_CARGOBOBBED_VEH)
|
|
RETURN TRUE
|
|
ELSE
|
|
IF DECOR_GET_BOOL(Veh, "Getaway_Winched")
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL HAS_VEHICLE_BEEN_CHECKED_BEFORE(VEHICLE_INDEX veh)
|
|
IF DECOR_EXIST_ON(veh, "GetawayVehicleValid")
|
|
#IF IS_DEBUG_BUILD SK_PRINT("decor - Exists on vehicle its already been checked once") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_PREVIOUSLY_CHECKED_VEHICLE_VALID(VEHICLE_INDEX veh)
|
|
IF DECOR_EXIST_ON(veh, "GetawayVehicleValid")
|
|
IF DECOR_GET_BOOL(veh, "GetawayVehicleValid")
|
|
#IF IS_DEBUG_BUILD SK_PRINT("decor - Exists on vehicle and is true so vehicle is valid") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Clears the car valid flag, the vehicle check flag and teh return to vehicle flag
|
|
PROC CLEAR_CAR_RELATED_BITS()
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Gets the root of the conversation to play after teh phone call after dropping off the vehicle
|
|
/// RETURNS:
|
|
/// returns a string for teh root of the conversation
|
|
FUNC STRING GET_EXITED_VEHICLE_ROOT()
|
|
enumCharacterList ePlayer = GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
SWITCH ePlayer
|
|
|
|
CASE CHAR_MICHAEL
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN "FBI_3_MEXIT"
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN "AH_MEXIT"
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN "FHP_EXTCARM"
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_FRANKLIN
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN "FBI_3_FEXIT"
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN "AH_FEXIT"
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN "FHP_EXTCARF"
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_TREVOR
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN "FBI_3_TEXIT"
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN "AH_TEXIT"
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN "FHP_EXTCART"
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the story missions that unlock the FIB 4 mission
|
|
/// RETURNS:
|
|
/// TRUE if the required story missions are complete
|
|
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
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Used to get the correct update conversation for if FIB 4 is unlocked or the player will have to
|
|
/// complete more missions
|
|
/// PARAMS:
|
|
/// bMissionAvailable - Is FIB 4 Available
|
|
/// RETURNS:
|
|
/// the string to use for the update conversation
|
|
FUNC TEXT_LABEL_15 GET_UPDATE_STRING_FOR_PREP_FIB(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:
|
|
/// Used to get the correct update conversation for if FIB 4 is unlocked or the player will have to
|
|
/// complete more missions
|
|
/// PARAMS:
|
|
/// bMissionAvailable - Is FIB 4 Available
|
|
/// RETURNS:
|
|
/// the string to use for the update conversation
|
|
FUNC TEXT_LABEL_15 GET_UPDATE_STRING_FOR_PREP_AGENCY(BOOL bMissionAvailable)
|
|
TEXT_LABEL_15 sString
|
|
IF bMissionAvailable
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
CASE CHAR_FRANKLIN
|
|
sString = "AHF_C8"
|
|
BREAK
|
|
|
|
CASE CHAR_MICHAEL
|
|
sString = "AHF_C5"
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
CASE CHAR_FRANKLIN
|
|
sString = "AHF_C9"
|
|
BREAK
|
|
|
|
CASE CHAR_MICHAEL
|
|
sString = "AHF_C6"
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN sString
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Used to update conversation if the player is Franklin or Trevor
|
|
/// PARAMS:
|
|
/// sConv - the current conversation need to monitor that the conversation is at the right line to be updated
|
|
/// bMissionAvailable - Is FIB 4 Available
|
|
PROC UPDATE_PHONE_CONV_F_T(TEXT_LABEL_23 sConv, BOOL bMissionAvailable)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sConv)
|
|
IF ARE_STRINGS_EQUAL(sConv, mPlayerPhoneCallSettings.sZoneConvLable)
|
|
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 0
|
|
TEXT_LABEL_15 sUpdateString
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
sUpdateString = GET_UPDATE_STRING_FOR_PREP_FIB(bMissionAvailable)
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_UNLOCKED_FROM_PREP, TRUE)
|
|
SET_DYNAMIC_BRANCH_FOR_ONGOING_CALL(sTextblockConvs, sUpdateString)
|
|
PLAY_DYNAMIC_BRANCH()
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
sUpdateString = GET_UPDATE_STRING_FOR_PREP_AGENCY(bMissionAvailable)
|
|
SET_DYNAMIC_BRANCH_FOR_ONGOING_CALL(sTextblockConvs, sUpdateString)
|
|
PLAY_DYNAMIC_BRANCH()
|
|
ENDIF
|
|
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// If the player is michael he rings steve and this function registers the call to flow
|
|
/// PARAMS:
|
|
/// bMissionAvailable - Is FIB 4 Available
|
|
PROC REGISTER_PASS_CALL_LAST_PREP_M(BOOL bMissionAvailable)
|
|
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,VID_BLANK)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL DO_MISSION_AVAILABLE_CHECKS()
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
IF (GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)
|
|
OR GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)) //probaly wrong but kinda makes sense testing needed
|
|
AND ARE_OTHER_STORY_MISSIONS_COMPLETE()
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_AGENCY_PREP_1)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC DO_FIB4_UPDATE_LINE(TEXT_LABEL_23 sConv)
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF DO_MISSION_AVAILABLE_CHECKS()
|
|
//Mission available
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
UPDATE_PHONE_CONV_F_T(sConv, TRUE)
|
|
ELSE
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
ELSE
|
|
//mission not availabe
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
|
|
UPDATE_PHONE_CONV_F_T(sConv, FALSE)
|
|
ELSE
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DO_AGENCY_UPDATE_LINE(TEXT_LABEL_23 sConv)
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
UPDATE_PHONE_CONV_F_T(sConv, TRUE)
|
|
ELSE
|
|
UPDATE_PHONE_CONV_F_T(sConv, FALSE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC UPDATE_LINE(TEXT_LABEL_23 sConv)
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
DO_FIB4_UPDATE_LINE(sConv)
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
DO_AGENCY_UPDATE_LINE(sConv)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// State machine for updating the phone call
|
|
/// lots happens in here
|
|
PROC MONITOR_PHONE_CALL()
|
|
IF ePhoneCallState != PCS_NULL
|
|
TEXT_LABEL_23 sConv
|
|
sConv = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("GET_CURRENT_SCRIPTED_CONVERSATION_LINE() === ", GET_CURRENT_SCRIPTED_CONVERSATION_LINE()) #ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT(sConv) #ENDIF
|
|
SWITCH ePhoneCallState
|
|
CASE PCS_CONV_STARTED
|
|
IF eGetawayID != FIN_GETAWAY
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sConv)
|
|
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() > 0
|
|
SET_DYNAMIC_BRANCH_FOR_ONGOING_CALL("LOCAUD", mPlayerPhoneCallSettings.sZoneConvLable)
|
|
PLAY_DYNAMIC_BRANCH()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("SET = PCS_UPDATE_LINE ") #ENDIF
|
|
ePhoneCallState = PCS_UPDATE_LINE
|
|
ELIF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
AND GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 0
|
|
SET_DYNAMIC_BRANCH_FOR_ONGOING_CALL("LOCAUD", mPlayerPhoneCallSettings.sZoneConvLable)
|
|
PLAY_DYNAMIC_BRANCH()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("SET = PCS_UPDATE_LINE ") #ENDIF
|
|
ePhoneCallState = PCS_UPDATE_LINE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
ePhoneCallState = PCS_NULL
|
|
ENDIF
|
|
IF WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("SET call interupted = PCS_WAITING_PHONE_AWAY") #ENDIF
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PCS_UPDATE_LINE
|
|
IF WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("SET call interupted = PCS_WAITING_PHONE_AWAY") #ENDIF
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 0
|
|
UPDATE_LINE(sConv)
|
|
ENDIF
|
|
ELSE
|
|
ePhoneCallState = PCS_WAITING_LAST_LINE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PCS_WAITING_LAST_LINE
|
|
IF NOT IS_CELLPHONE_CONVERSATION_PLAYING()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ePhoneCallState = PCS_WAITING_PHONE_AWAY ") #ENDIF
|
|
ePhoneCallState = PCS_WAITING_PHONE_AWAY
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PCS_WAITING_PHONE_AWAY
|
|
IF NOT IS_PHONE_ONSCREEN()
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ePhoneCallState = PCS_DO_EXITED_VEHICLE_LINE ") #ENDIF
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(mPlayerPhoneCallSettings.eContact)
|
|
ENDIF
|
|
ePhoneCallState = PCS_DO_EXITED_VEHICLE_LINE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PCS_DO_EXITED_VEHICLE_LINE
|
|
// IF CREATE_CONVERSATION(s_conversation_peds, sTextblockConvs, GET_EXITED_VEHICLE_ROOT(), CONV_PRIORITY_MEDIUM)
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
IF eGetawayID = FIB4_GETAWAY ///will need to be removed and the below functions updated to return the correct calls
|
|
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 IS_DEBUG_BUILD SK_PRINT("Mission available call steve ") #ENDIF
|
|
REGISTER_PASS_CALL_LAST_PREP_M(TRUE)
|
|
ePhoneCallState = PCS_NULL
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Mission IS NOT available call steve ") #ENDIF
|
|
REGISTER_PASS_CALL_LAST_PREP_M(FALSE)
|
|
ePhoneCallState = PCS_NULL
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD SK_PRINT("All other preps returned FALSE = PCS_NULL ") #ENDIF
|
|
ePhoneCallState = PCS_NULL
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD SK_PRINT_INT("Getaway id doesnt = FIB = PCS_NULL Getaway id = ", ENUM_TO_INT(eGetawayID)) #ENDIF
|
|
ePhoneCallState = PCS_NULL
|
|
ENDIF
|
|
ELSE
|
|
IF eGetawayID = FIB4_GETAWAY ///will need to be removed and the below functions updated to return the correct calls
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_ASSASSIN_1)
|
|
Execute_Code_ID(CID_TEXT_ASS1_REMINDER)
|
|
CPRINTLN(DEBUG_MISSION, "Execute_Code_ID from script - ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD SK_PRINT("player ped isn't Michael = PCS_NULL ") #ENDIF
|
|
ePhoneCallState = PCS_NULL
|
|
ENDIF
|
|
// ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// If the the car is valid and the hiding place is valid
|
|
/// update the correct contacts' secondary function
|
|
PROC MONITOR_CONTACTS()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
AND IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_ALT_CONTACT_SET))
|
|
#IF IS_DEBUG_BUILD SK_PRINT("GFF_ALT_CONTACT_SET bit is not set, setting secondary function") #ENDIF
|
|
CONTACT_WATCH(TRUE)
|
|
// ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF (GET_GAME_TIMER() - iGenericPrintTimer) > 1500
|
|
// AND (GET_GAME_TIMER() - iGenericPrintTimer) < 1900
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Contact flag set ")
|
|
// ENDIF
|
|
// #ENDIF
|
|
ENDIF
|
|
ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF (GET_GAME_TIMER() - iGenericPrintTimer) > 1500
|
|
// AND (GET_GAME_TIMER() - iGenericPrintTimer) < 1900
|
|
// IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Car isnt valid not setting contact secondary function")
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Car is valid")
|
|
// ENDIF
|
|
// IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Hiding position is not valid not setting secondary function")
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Hiding position is valid")
|
|
// ENDIF
|
|
// ENDIF
|
|
// #ENDIF
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_ALT_CONTACT_SET))
|
|
#IF IS_DEBUG_BUILD SK_PRINT("GFF_ALT_CONTACT_SET bit is set, but one of the conditions") #ENDIF
|
|
CONTACT_WATCH(FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Resets the script back to MS_PLACE_FIRST_ITEM state
|
|
/// clears the flow blips and unsets the mission flow flag
|
|
/// it also picks the correct help text to display
|
|
/// PARAMS:
|
|
/// bCarDead - did the player destroy the car
|
|
PROC RESET(BOOL bCarDead = FALSE)
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " RESETTING GETAWAY CAR !!!!!!!!!!!!!!!!!!!!!!!!!! Dead:",bCarDead) #ENDIF
|
|
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "HTE_PICK_NEW_LOC_FRANK_TREV MONITER_PLAYER_MOVING_CAR == eTriggerState = TS_PLACE_FIRST_ITEM") #ENDIF
|
|
IF bCarDead
|
|
SET_HELP_TEXT_BIT(HTE_PICK_CAR_FRANK_TREV)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_PICK_NEW_LOC_FRANK_TREV)
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " HTE_PICK_NEW_LOC_MIKE MONITER_PLAYER_MOVING_CAR == eTriggerState = TS_PLACE_FIRST_ITEM") #ENDIF
|
|
IF bCarDead
|
|
SET_HELP_TEXT_BIT(HTE_PICK_CAR_MIKE)
|
|
ELSE
|
|
SET_HELP_TEXT_BIT(HTE_PICK_NEW_LOC_MIKE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_PREP_3_COMPLETED, FALSE)
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_AGENCY_PREP_2_DONE, FALSE)
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_DONE, FALSE)
|
|
ENDIF
|
|
|
|
IF eGetawayID != FIN_GETAWAY
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
ENDIF
|
|
|
|
ePhoneCallState = PCS_NULL
|
|
eResultScreenState = RSS_INIT
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CAR_INFO_GRABBED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_DONE_LAST_PREP_REMINDER))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
|
|
IF eMissionState = MS_DISPLAYING_SPLASH
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " reset result screens") #ENDIF
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(splash)
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(splash)
|
|
ENDIF
|
|
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
|
|
ENDIF
|
|
|
|
UPDATE_SAVED_STATE(MS_PLACE_FIRST_ITEM)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Monitors the player moving the vehicle away from the set vehicle position after teh vheicle is placed
|
|
PROC MONITER_PLAYER_MOVING_CAR()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
AND IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(), viVeh, 10)
|
|
IF ( VDIST2(GET_ENTITY_COORDS(viVeh), vCarPosition) >= 10*10)
|
|
RESET()
|
|
ENDIF
|
|
ELSE
|
|
|
|
ENDIF
|
|
ELSE
|
|
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG(viVeh, FALSE)
|
|
ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " ~NOT IS_VEHICLE_OK(GET_VEHICLE_GEN_VEHICLE_INDEX == eTriggerState = TS_PLACE_FIRST_ITEM") #ENDIF
|
|
RESET(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL COMPARE_GETAWAY_VEH_SETUP_WITH_VEHICLE(VEHICLE_INDEX vi)
|
|
|
|
IF IS_VEHICLE_OK(vi)
|
|
VEHICLE_SETUP_STRUCT setup
|
|
GET_VEHICLE_SETUP(vi, setup)
|
|
IF setup.iPlateIndex = mDroppedOffCarStruct.iPlateIndex
|
|
AND setup.eModel = mDroppedOffCarStruct.eModel
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "plate index and model are equal") #ENDIF
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(setup.tlPlateText)
|
|
AND NOT IS_STRING_NULL_OR_EMPTY(mDroppedOffCarStruct.tlPlateText)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "plate lable isnt null or empty") #ENDIF
|
|
IF ARE_STRINGS_EQUAL(setup.tlPlateText, mDroppedOffCarStruct.tlPlateText)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "Plate lables are equal") #ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is near the getaway area (100m around the placed position)
|
|
/// If the player is in the area and teh vehicle is alive from the vehicle gen then
|
|
/// we grab the vehicle and set it as a vehicle gen
|
|
PROC MAINTAIN_GETAWAY_VEHICLE()
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
IF NOT ARE_VECTORS_EQUAL(<<0,0,0>>, vCarPosition)
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vCarPosition, MAX_STREAM_IN_DIST)
|
|
AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "Player is in range of teh streaming dis") #ENDIF
|
|
IF IS_VEHICLE_OK(GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "IS_VEHICLE_OK(GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP)) == TRUE") #ENDIF
|
|
viVeh = GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP)
|
|
SET_ENTITY_AS_MISSION_ENTITY(viVeh, TRUE, TRUE)
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "IS_VEHICLE_OK(viVeh) == TRUE") #ENDIF
|
|
IF NOT DECOR_EXIST_ON(viVeh, "GetawayVehicleValid")
|
|
IF DECOR_SET_BOOL(viVeh, "GetawayVehicleValid", TRUE)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("ADDED decor - GetawayVehicleValid = TRUE ") #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
ENDIF
|
|
ELSE
|
|
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
IF NOT IS_VEHICLE_OK( GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "VEHGEN isnt available resetting the getaway vehicle") #ENDIF
|
|
RESET(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vCarPosition, MAX_STREAM_IN_DIST)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT ARE_VECTORS_EQUAL(<<0,0,0>>, vCarPosition)
|
|
IF NOT IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vCarPosition, MAX_STREAM_IN_DIST)
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), viVeh)
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(viVeh, vCarPosition, fCarHeading, VEHGEN_MISSION_VEH_FBI4_PREP, TRUE)
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " MAINTAIN_GETAWAY_VEHICLE() viVeh == RELEASED") #ENDIF
|
|
SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG(viVeh, FALSE)
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "IS_VEHICLE_OK(GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP)) == TRUE") #ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
ELSE
|
|
RESET()
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " MAINTAIN_GETAWAY_VEHICLE() Player in vehicle not passing to vehicle gen") #ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "IS_VEHICLE_OK returned false on viVeh reseting getaway") #ENDIF
|
|
RESET(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
|
|
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
IF NOT IS_VEHICLE_OK(viVeh)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "VEHGEN vehicle isnt available resetting the getaway vehicle") #ENDIF
|
|
RESET(TRUE)
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_VEHICLE_OK(viVeh)
|
|
VEHICLE_INDEX viNewVeh = GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP)
|
|
CPRINTLN(DEBUG_MISSION,"VEHGEN New vehicle detected, changing to it: ",NATIVE_TO_INT(viNewVeh))
|
|
IF IS_VEHICLE_OK(viNewVeh) AND viNewVeh <> viVeh
|
|
viVeh = viNewVeh
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
MONITER_PLAYER_MOVING_CAR()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC REG_PERCENTAGE_COMP()
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
CPRINTLN(DEBUG_MISSION, "Setting FBI4 getaway prep passed")
|
|
REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_FBI4_P3)
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
CPRINTLN(DEBUG_MISSION, "Setting agency getaway prep passed")
|
|
// REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_FBI4_P3)
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
CPRINTLN(DEBUG_MISSION, "Setting finale_heist getaway prep passed")
|
|
// REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL(CP_FBI4_P3)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_FBI4_GETAWAY_PREP_PASSED()
|
|
g_savedGlobals.sFlowCustom.iMissionsCompleted++
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
STAT_SET_INT(FL_CO_FB4P3, g_savedGlobals.sFlowCustom.iMissionsCompleted)
|
|
IF ARE_ALL_OTHER_PREPS_COMPLETE()
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2A)
|
|
OR GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_2B)
|
|
AND ARE_OTHER_STORY_MISSIONS_COMPLETE()
|
|
CPRINTLN(DEBUG_MISSION, "All other preps and story missions complete Fbi4 unlocked from Fbi prep 3")
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MISSION_FBI_4_UNLOCKED_FROM_PREP, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
REG_PERCENTAGE_COMP()
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
ENDPROC
|
|
|
|
|
|
//Placeholder quick fix - BenR.
|
|
/// PURPOSE:
|
|
/// Place holder that seems to be sticking around
|
|
/// Displays a mission passed screen doesnt have stats
|
|
/// simply to hammer home that the player has completed the getaway task
|
|
/// Uses a state machine and sets the mission passed
|
|
PROC DISPLAY_SPLASH(FLOW_FLAG_IDS CompletionFlag)
|
|
MONITOR_PHONE_CALL()
|
|
IF ePhoneCallState = PCS_NULL
|
|
SWITCH eResultScreenState
|
|
CASE RSS_INIT
|
|
SET_RESULT_SCREEN_DISPLAYING_STATE(TRUE)
|
|
splash = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE")
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> Running MISSION PASSED screen procedure.")
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP, TRUE)
|
|
iTimeSplashEnd = GET_GAME_TIMER() + 3000
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_AWARDED_PLAYER_PERCENTAGE_PASSED_MISSION))
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> Giving player percentaage.")
|
|
SET_FBI4_GETAWAY_PREP_PASSED()
|
|
ENDIF
|
|
SET_MISSION_FLOW_FLAG_STATE(CompletionFlag, TRUE)
|
|
eResultScreenState = RSS_LOAD
|
|
BREAK
|
|
|
|
CASE RSS_LOAD
|
|
IF GET_GAME_TIMER() > iTimeSplashEnd
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> loading scaleform...")
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(splash)
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> ...scaleform loaded.")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(splash, "SHOW_MISSION_PASSED_MESSAGE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("M_FB4P3_P")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("M_FB4P3")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(100) //alpha of shard
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE) //unknown needs to be here...
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) //NUMBER OF STATS LINES (FOR SETTING BACKGROUND HEIGHT)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE) //For when there is no medal text and 2nd white line
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> Starting to display screen...")
|
|
iTimeSplashEnd = GET_GAME_TIMER() + 10000
|
|
MISSION_FLOW_PLAY_END_OF_MISSION_MUSIC(FALSE)
|
|
eResultScreenState = RSS_UPDATE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE RSS_UPDATE
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(splash)
|
|
//Wait for the pass sound to be ready
|
|
AND IS_MISSION_COMPLETE_READY_FOR_UI()
|
|
IF GET_GAME_TIMER() < iTimeSplashEnd
|
|
DRAW_SCALEFORM_MOVIE( splash,0.5,
|
|
0.3,
|
|
1.0,
|
|
1.0,
|
|
255,255,255,255)
|
|
ELIF GET_GAME_TIMER() < iTimeSplashEnd + 100
|
|
//Mark pass screen for transitioning out
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(splash, "TRANSITION_OUT")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
//Advance timer to begin SF movie just once
|
|
iTimeSplashEnd -= 100
|
|
ELIF GET_GAME_TIMER() < iTimeSplashEnd + 500
|
|
//Draw transition out anim
|
|
DRAW_SCALEFORM_MOVIE( splash,0.5,
|
|
0.3,
|
|
1.0,
|
|
1.0,
|
|
255,255,255,255)
|
|
ELSE
|
|
eResultScreenState = RSS_CLEANUP
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> ...screen finished displaying.")
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE RSS_CLEANUP
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(splash)
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(splash)
|
|
ENDIF
|
|
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
|
|
CPRINTLN(DEBUG_MISSION, "<FBI4P3> Cleaned up mission passed screen.")
|
|
|
|
|
|
IF eGetawayID = FIN_GETAWAY
|
|
//This handles all the mission passed call variations with the same logic
|
|
//used by the other preps in the Finale Heist strand.
|
|
Execute_Code_ID(CID_BIG_SCORE_PREPE_COMPLETED)
|
|
ENDIF
|
|
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_VEHICLE_DOORS_LOCKED(viVeh, VEHICLELOCK_UNLOCKED)
|
|
ENDIF
|
|
|
|
SET_LAST_COMPLETED_MISSION_STAT("M_FHPE", GET_CURRENT_PLAYER_PED_BIT())
|
|
|
|
UPDATE_SAVED_STATE(MS_MONITOR_GETAWAY_AREA)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
//called at the end of the function so that when we loop back we switch state if the
|
|
//car is broken or moved
|
|
MAINTAIN_GETAWAY_VEHICLE()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if its safe to start loading the text
|
|
PROC MONITOR_TEXT_LOADED()
|
|
IF NOT IS_STREAMING_ADDITIONAL_TEXT(OBJECT_TEXT_SLOT)
|
|
// CPRINTLN(DEBUG_MISSION, "Text should load - ", GET_THIS_SCRIPT_NAME())
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SHOULD_LOAD_TEXT))
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
// IF bShouldLoadText
|
|
CPRINTLN(DEBUG_MISSION, "bShouldLoadText = FALSE 2")
|
|
// ENDIF
|
|
#ENDIF
|
|
|
|
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SHOULD_LOAD_TEXT))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is involved in a switch
|
|
PROC MONITOR_FOR_PLAYER_SWITCH()
|
|
IF IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(viVeh, vCarPosition, fCarHeading, VEHGEN_MISSION_VEH_FBI4_PREP, TRUE)
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CPRINTLN(DEBUG_MISSION, "Player switch is in progress GFF_IS_PLAYER_NEAR_GETAWAY_AREA flag set re set vehicle gen")
|
|
ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
ENDIF
|
|
CLEAR_ALL_HELP_BITS(NUM_HELP, TRUE)
|
|
CONTACT_WATCH(FALSE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Check to see if the player is in a mod shop
|
|
/// RETURNS:
|
|
/// TRUE if the player is in any of the mod shops
|
|
FUNC BOOL IS_PLAYER_BROWSING_IN_ANY_MOD_SHOP()
|
|
// Car Mod - AMB1 (v_carmod)
|
|
IF IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_01_AP)
|
|
// Car Mod - AMB2 (v_lockup)
|
|
OR IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_05_ID2)
|
|
// Car Mod - AMB3 (v_carmod)
|
|
OR IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_06_BT1)
|
|
// Car Mod - AMB4 (v_carmod3)
|
|
OR IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_07_CS1)
|
|
// Car Mod - AMB5 (v_carmod3)
|
|
OR IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_08_CS6)
|
|
// Car Mod - AMB6 (lr_supermod_int)
|
|
OR IS_PLAYER_BROWSING_ITEMS_IN_SHOP(CARMOD_SHOP_SUPERMOD)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Monitors if the player is in a mod shop
|
|
/// If they are reset the vehicle checkin flags
|
|
PROC MONITOR_PLAYER_IN_MOD_SHOP()
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_ENTERED_MOD_SHOP))
|
|
IF IS_PLAYER_BROWSING_IN_ANY_MOD_SHOP()
|
|
CPRINTLN(DEBUG_MISSION, "player is browsing in a mod shop")
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_ENTERED_MOD_SHOP))
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_PLAYER_BROWSING_IN_ANY_MOD_SHOP()
|
|
CPRINTLN(DEBUG_MISSION, "player is NOT browsing in a mod shop, Clearing bits for checked veh, valid veh and valid hiding place")
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_ENTERED_MOD_SHOP))
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SETUP_COMING_OFF_MISSION()
|
|
MONITOR_TEXT_LOADED()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_SHOULD_LOAD_TEXT))
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
// #IF IS_DEBUG_BUILD
|
|
// INT t = 1
|
|
// #ENDIF
|
|
//
|
|
REQUEST_ADDITIONAL_TEXT("GETAWY", OBJECT_TEXT_SLOT)
|
|
IF HAS_THIS_ADDITIONAL_TEXT_LOADED("GETAWY", OBJECT_TEXT_SLOT)
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF t != -1
|
|
// IF (GET_GAME_TIMER() - t) > 10000
|
|
// t = -1
|
|
// CPRINTLN(DEBUG_MISSION, "Loading Text for Getaway vehicle")
|
|
// ENDIF
|
|
// ELSE
|
|
// t = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// #ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "Text Hasn't loaded - ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
MONITOR_COMING_OFF_MISSION()
|
|
eHelpTextState = HTS_WAITING_HELP
|
|
CPRINTLN(DEBUG_MISSION, "Text has been loaded we are off mission")
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_HAS_CURRENT_VEHICLE_BEEN_CHECKED))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(GET_HELP_LABLE_FROM_BIT(ENUM_TO_INT(HTE_ON_MISSION)))
|
|
CLEAR_HELP()
|
|
CPRINTLN(DEBUG_MISSION,"SETUP_COMING_OFF_MISSION() cleared help 1")
|
|
ENDIF
|
|
CLEAR_HELP_TEXT_BIT(HTE_ON_MISSION)
|
|
eMissionState = INT_TO_ENUM(MISSION_STATE, g_savedGlobals.sAmbient.iGetawayState)
|
|
CPRINTLN(DEBUG_MISSION, "Set state to = ", g_savedGlobals.sAmbient.iGetawayState)
|
|
ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "Text loaded flag not set - ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
SK_PRINT("Player is trevor during Agency getaway")
|
|
ENDIF
|
|
#ENDIF
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
// SK_PRINT("Text bit not set 1")
|
|
// ENDIF
|
|
// #ENDIF
|
|
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, " Text should not load ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOING_ON_MISSION()
|
|
IF eMissionState != MS_DISPLAYING_SPLASH
|
|
IF eMissionState != MS_MONITOR_GETAWAY_AREA
|
|
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
AND NOT g_bFlowHelpDisplaying
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SCRIPT_CLEARED_HELP))
|
|
CPRINTLN(DEBUG_MISSION,"SETUP_GOING_ON_MISSION() cleared help 1")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG(viVeh, FALSE)
|
|
ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Car is valid but we are not off mission releasing ") #ENDIF
|
|
CLEAR_CAR_RELATED_BITS()
|
|
IF eGetawayID != FIN_GETAWAY
|
|
vPotentialHidingPos = <<0,0,0>>
|
|
ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_IF_PLAYER_RETURNS_TO_VEHICLE))
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD SK_PRINT("Car is not valid but we are not off mission releasing ") #ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
CPRINTLN(DEBUG_MISSION, "Going on mission and vehicle is valid release vehicle and pass to veh gen")
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(viVeh, vCarPosition, fCarHeading, VEHGEN_MISSION_VEH_FBI4_PREP, TRUE)
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG(viVeh, FALSE)
|
|
ENDIF
|
|
SAFE_RELEASE_VEHICLE(viVeh)
|
|
CLEAR_CAR_RELATED_BITS()
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "We have already dropped off the getaway vehicle no need to reset car and position flags")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_THIS_ADDITIONAL_TEXT_LOADED("GETAWY", OBJECT_TEXT_SLOT)
|
|
CLEAR_ADDITIONAL_TEXT(OBJECT_TEXT_SLOT, FALSE)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_MISSION, "Text is loaded but we are on mission unloading text")
|
|
#ENDIF
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SHOULD_LOAD_TEXT))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
CONTACT_WATCH(FALSE)
|
|
IF IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
CLEAR_ALL_HELP_BITS(HTE_ON_FRIEND_ACT, TRUE)
|
|
ELSE
|
|
CLEAR_ALL_HELP_BITS(HTE_ON_MISSION, TRUE)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_MISSION, "eMissionState = MS_WAIT_ON_MISSION ", GET_THIS_SCRIPT_NAME())
|
|
|
|
eMissionState = MS_WAIT_ON_MISSION
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_PLAYER_NEAR_PLANNING_BOARD(FLOAT fDist = 50.0)
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), g_sPlanningLocationData[PLN_SWEATSHOP].vPlanningLocation, fDist)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), g_sPlanningLocationData[PLN_STRIPCLUB].vPlanningLocation, fDist)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELIF eGetawayID = FIB4_GETAWAY
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), g_sPlanningLocationData[PLN_TREV_CITY].vPlanningLocation, fDist)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_PLAYER_OFF_MISSION()
|
|
// IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
// IF NOT HAS_THIS_ADDITIONAL_TEXT_LOADED("GETAWY", OBJECT_TEXT_SLOT)
|
|
// #IF IS_DEBUG_BUILD
|
|
// SCRIPT_ASSERT("Getaway vehicle thinks the text is loaded but code says no")
|
|
// #ENDIF
|
|
// CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_TEXT_IS_LOADED))
|
|
// CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_SHOULD_LOAD_TEXT))
|
|
// ENDIF
|
|
// ENDIF
|
|
IF g_OnMissionState = MISSION_TYPE_OFF_MISSION //we are off ALL mission
|
|
AND NOT IS_MISSION_LEADIN_ACTIVE()
|
|
AND g_iOffMissionCutsceneRequestActive = NULL_OFFMISSION_CUTSCENE_REQUEST
|
|
AND NOT IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
AND NOT IS_PLAYER_NEAR_PLANNING_BOARD()
|
|
AND NOT g_bTaxiProceduralRunning
|
|
// CPRINTLN(DEBUG_MISSION, "Off mission = yes ", GET_THIS_SCRIPT_NAME())
|
|
RETURN TRUE
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF (GET_GAME_TIMER() - iGenericPrintTimer) < 2000
|
|
IF g_OnMissionState != MISSION_TYPE_OFF_MISSION //we are off ALL mission
|
|
SK_PRINT_INT("Not off mission = ", ENUM_TO_INT(g_OnMissionState))
|
|
ENDIF
|
|
|
|
IF IS_MISSION_LEADIN_ACTIVE()
|
|
SK_PRINT("Mission leadin is active")
|
|
ENDIF
|
|
|
|
IF g_iOffMissionCutsceneRequestActive != NULL_OFFMISSION_CUTSCENE_REQUEST
|
|
SK_PRINT("Cutscene is being requested")
|
|
ENDIF
|
|
|
|
IF IS_FRIEND_ACTIVITY_SCRIPT_RUNNING()
|
|
SK_PRINT("Friend script is running")
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_NEAR_PLANNING_BOARD()
|
|
SK_PRINT("Player near a planning board ")
|
|
ENDIF
|
|
|
|
IF g_bTaxiProceduralRunning
|
|
SK_PRINT("g_bTaxiProceduralRunning ")
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SHOULD_GETAWAY_SLEEP()
|
|
IF eGetawayID != FIN_GETAWAY
|
|
// CPRINTLN(DEBUG_MISSION, "Not finale hiest getaway")
|
|
|
|
IF eGetawayID = AGENCY_GETAWAY
|
|
AND GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
ENDIF
|
|
// CPRINTLN(DEBUG_MISSION, "Agency getaway and player is trevor")
|
|
RETURN TRUE
|
|
ELSE
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
CLEAR_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_PLAYER_IS_TREV_AGENCY))
|
|
ENDIF
|
|
// CPRINTLN(DEBUG_MISSION, "Agency getaway and player is NOT trevor")
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_OFF_MISSION()
|
|
RETURN FALSE
|
|
ENDIF
|
|
ELSE
|
|
// CPRINTLN(DEBUG_MISSION, "IS finale hiest getaway")
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_PLACING_CAR)
|
|
// CPRINTLN(DEBUG_MISSION, "Placing finale car")
|
|
RETURN FALSE
|
|
ELSE
|
|
IF IS_PLAYER_OFF_MISSION()
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Checks to see if the player is no longer off mission
|
|
/// also monitors for leadins being active or if there is a cutscene
|
|
/// being loaded
|
|
/// If any of the above are happening the script unloads the text and puts the script in
|
|
/// a suspended state that doesnt run any checks or display help text. It does however display a message
|
|
/// saying find a more discreet location for the vehicle - only if the vehicle is valid
|
|
PROC MONITOR_ON_MISSION_STATUS()
|
|
IF NOT SHOULD_GETAWAY_SLEEP()
|
|
IF NOT IS_RESULT_SCREEN_DISPLAYING()
|
|
IF IS_SCREEN_FADED_IN()
|
|
IF NOT IS_SCREEN_FADING_IN()
|
|
SETUP_COMING_OFF_MISSION()
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "SCREEN IS FADING IN ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "SCREEN IS FADED OUT ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_MISSION, "Result screen is being displayed ", GET_THIS_SCRIPT_NAME())
|
|
ENDIF
|
|
ELSE //we are on mission
|
|
// CPRINTLN(DEBUG_MISSION, "SHOULD_GETAWAY_SLEEP() = TRUE")
|
|
|
|
IF eMissionState != MS_WAIT_ON_MISSION
|
|
SETUP_GOING_ON_MISSION()
|
|
ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// IF iOnMissionTimerCheck = -1
|
|
// iOnMissionTimerCheck = GET_GAME_TIMER()
|
|
// ELSE
|
|
// IF (GET_GAME_TIMER() - iOnMissionTimerCheck) > 20000
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "Getaway vehicle script is waiting - ", GET_THIS_SCRIPT_NAME())
|
|
// IF NOT IS_MISSION_LEADIN_ACTIVE()
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "There is not a lead in active")
|
|
// ELSE
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "There is a lead in active")
|
|
// ENDIF
|
|
// CPRINTLN(DEBUG_SHARM_STEALTH, "On mission flag is = ", ENUM_TO_INT(g_OnMissionState), " ", GET_THIS_SCRIPT_NAME())
|
|
// iOnMissionTimerCheck = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// ENDIF
|
|
// #ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
FUNC BOOL UPDATE_SECURE_MISSION_CANDIDATE_FOR_FINALE_HEIST_PREP(INT &iCandidateId)
|
|
SWITCH Request_Mission_Launch(iCandidateId, MCTID_MEET_CHARACTER, MISSION_TYPE_RANDOM_EVENT)
|
|
CASE MCRET_ACCEPTED
|
|
CPRINTLN(DEBUG_MISSION, GET_THIS_SCRIPT_NAME(), " secured a candidate ID = ", iCandidateId)
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE MCRET_DENIED
|
|
CPRINTLN(DEBUG_MISSION, GET_THIS_SCRIPT_NAME(), " Didn't secured a candidate ID .")
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_PLACING_CAR, FALSE)
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
RETURN FALSE
|
|
BREAK
|
|
CASE MCRET_PROCESSING
|
|
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_FINALE_PREPE_PLACING_CAR, TRUE)
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
FUNC SP_MISSIONS GET_MAIN_MISSION_FOR_GETAWAY()
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
RETURN SP_MISSION_FBI_4
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
RETURN SP_HEIST_AGENCY_3A
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
RETURN SP_HEIST_FINALE_2B
|
|
ENDIF
|
|
|
|
RETURN SP_MISSION_NONE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// While on mission check to see if the player has moved the getaway vehicle or
|
|
/// destroyed the vehicle
|
|
/// !!!! needs work
|
|
PROC MONITOR_PLAYER_MOVING_VEHICLE_ON_MISSION()
|
|
IF NOT ARE_VECTORS_EQUAL(vCarPosition, <<0,0,0>>)
|
|
AND MISSION_FLOW_GET_RUNNING_MISSION() != GET_MAIN_MISSION_FOR_GETAWAY()
|
|
IF IS_ENTITY_IN_RANGE_COORDS(PLAYER_PED_ID(), vCarPosition, 60)
|
|
IF IS_VEHICLE_OK(GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP))
|
|
IF ( VDIST2(GET_ENTITY_COORDS(GET_VEHICLE_GEN_VEHICLE_INDEX(VEHGEN_MISSION_VEH_FBI4_PREP)), vCarPosition) >= 10*10)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "MONITER_PLAYER_MOVING_CAR On mission move ") #ENDIF
|
|
RESET()
|
|
ENDIF
|
|
ELSE
|
|
IF NOT GET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_MISSION_VEH_FBI4_PREP, VEHGEN_S_FLAG_AVAILABLE)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "MONITER_PLAYER_MOVING_CAR Destroyed car and vehicle gen not available") #ENDIF
|
|
RESET(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
///
|
|
PROC GRAB_CAR_PLACED_INFO()
|
|
//
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 3") #ENDIF
|
|
IF NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_CAR_INFO_GRABBED))
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 4") #ENDIF
|
|
IF IS_VEHICLE_OK(viVeh)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 5") #ENDIF
|
|
vCarPosition = GET_ENTITY_COORDS(viVeh)
|
|
fCarHeading = GET_ENTITY_HEADING(viVeh)
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CAR_INFO_GRABBED))
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_PLAYER_NEAR_GETAWAY_AREA))
|
|
GET_VEHICLE_SETUP(viVeh, mDroppedOffCarStruct)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " 6") #ENDIF
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(viVeh, vCarPosition, fCarHeading, VEHGEN_MISSION_VEH_FBI4_PREP, TRUE)
|
|
#IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, " Car info grabbed") #ENDIF
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
SET_VEHICLE_IGNORED_BY_QUICK_SAVE(viVeh)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Container function that populates arrays and other setup
|
|
/// using other setup functions
|
|
PROC POPULATE_STUFF(GETAWAY_ID id)
|
|
eGetawayID = id
|
|
|
|
IF eGetawayID = FIB4_GETAWAY
|
|
sTextblockConvs = "FBIPRAU"
|
|
ELIF eGetawayID = AGENCY_GETAWAY
|
|
sTextblockConvs = "AHFAUD"
|
|
ELIF eGetawayID = FIN_GETAWAY
|
|
sTextblockConvs = "FHFAUD"
|
|
ENDIF
|
|
|
|
mnInvalidModels[0] = TRASH
|
|
mnInvalidModels[1] = TOWTRUCK
|
|
mnInvalidModels[2] = AMBULANCE
|
|
mnInvalidModels[3] = BARRACKS2
|
|
mnInvalidModels[4] = STRETCH
|
|
mnInvalidModels[5] = PHANTOM
|
|
mnInvalidModels[6] = PACKER
|
|
mnInvalidModels[7] = Blazer
|
|
mnInvalidModels[8] = Blazer2
|
|
IF eGetawayID != FIB4_GETAWAY
|
|
mnInvalidModels[9] = SENTINEL2
|
|
ELSE
|
|
mnInvalidModels[9] = DUMMY_MODEL_FOR_SCRIPT
|
|
ENDIF
|
|
|
|
POPULATE_RESTRICTED_AREAS()
|
|
POPULATE_HELP()
|
|
SET_BIT(iGetawayFlowFlag, ENUM_TO_INT(GFF_CHECK_FIRST_HELP_BIT))
|
|
iReminderTimer = GET_GAME_TIMER()
|
|
ENDPROC
|
|
|
|
PROC SAFE_MONITOR_CONTACT_HIGHLIGHT()
|
|
IF IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_CAR_VALID))
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_IS_HIDING_POS_VALID))
|
|
AND NOT IS_BIT_SET(iGetawayFlowFlag, ENUM_TO_INT(GFF_VEHICLE_PLACED))
|
|
AND SAFE_IS_CONTACT_LIST_ON_SCREEN()
|
|
IF (Is_Phone_Control_Just_Pressed(PLAYER_CONTROL, INPUT_CELLPHONE_UP)
|
|
OR Is_Phone_Control_Just_Pressed(PLAYER_CONTROL, INPUT_CELLPHONE_DOWN))
|
|
iHighlightWindow = GET_GAME_TIMER()
|
|
ENDIF
|
|
|
|
IF iHighlightWindow != -1
|
|
IF (GET_GAME_TIMER() - iHighlightWindow) < 200
|
|
eHighlighted = GET_CURRENTLY_HIGHLIGHTED_CONTACT()
|
|
// CPRINTLN(DEBUG_MISSION, "GETTING HIGHLIGHTED CHAR", eHighlighted)
|
|
ELSE
|
|
iHighlightWindow = -1
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
eHighlighted = NO_CHARACTER
|
|
iHighlightWindow = -1
|
|
ENDIF
|
|
ENDPROC
|