6805 lines
286 KiB
Scheme
Executable File
6805 lines
286 KiB
Scheme
Executable File
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : player_ped_scenes.sch //
|
|
// AUTHOR : Kenneth Ross & Alwyn Roberts //
|
|
// DESCRIPTION : Contains the players timetable and procs to set up the //
|
|
// scenes for each slot in the timetable. //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_clock.sch"
|
|
USING "player_ped_public.sch"
|
|
USING "blip_control_public.sch"
|
|
USING "selector_public.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "flow_public_core_override.sch"
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
USING "player_ped_debug.sch"
|
|
#ENDIF
|
|
|
|
#if USE_CLF_DLC
|
|
USING "player_scene_scheduleCLF.sch"
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
USING "player_scene_scheduleNRM.sch"
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
USING "player_scene_schedule.sch"
|
|
#endif
|
|
#endif
|
|
USING "player_scene_coords.sch"
|
|
USING "player_scene_vehicle.sch"
|
|
USING "player_scene_camera.sch"
|
|
USING "player_scene_objects.sch"
|
|
|
|
#if USE_CLF_DLC
|
|
USING "player_scene_compCLF.sch"
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
USING "player_scene_compNRM.sch"
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
USING "player_scene_component.sch"
|
|
#endif
|
|
#endif
|
|
|
|
USING "familySpeech_private.sch"
|
|
USING "TimeLapse.sch"
|
|
USING "commands_streaming.sch"
|
|
|
|
USING "code_control_public.sch"
|
|
USING "building_control_public.sch"
|
|
|
|
// *******************************************************************************************
|
|
// SCENE TIMETABLE
|
|
// *******************************************************************************************
|
|
|
|
|
|
FUNC BOOL get_NOT_PlayerHasStartedNewScene()
|
|
IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
OR GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_STATE() > SWITCH_STATE_JUMPCUT_DESCENT)
|
|
IF (GET_PLAYER_SWITCH_STATE() <> SWITCH_STATE_ESTABLISHING_SHOT)
|
|
RETURN FALSE
|
|
ENDIF
|
|
IF (GET_PLAYER_SWITCH_STATE() = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
IF (GET_PLAYER_SWITCH_INTERP_OUT_DURATION() > 0)
|
|
IF (GET_PLAYER_SWITCH_INTERP_OUT_CURRENT_TIME() > 0100)
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
TYPEDEF FUNC BOOL SceneGlobalFunc(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, INT iSwitchFlags)
|
|
TYPEDEF FUNC PED_SCENE_STRUCT SceneGlobalFuncIndex(PED_SCENE_STRUCT &sPedScene)
|
|
|
|
FUNC BOOL GET_PLAYER_CHAR_FOR_PED_REQUEST_SCENE(PED_REQUEST_SCENE_ENUM eScene, enumCharacterList &ePed)
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_DEAD
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sDead
|
|
sDead = "Dead eScene for player char: "
|
|
sDead += Get_String_From_Ped_Request_Scene_Enum(eScene)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, GET_THIS_SCRIPT_NAME(), ": ", sDead)
|
|
CASSERTLN(DEBUG_SWITCH, sDead)
|
|
#ENDIF
|
|
|
|
ePed = g_sPlayerPedRequest.ePed
|
|
RETURN FALSE
|
|
BREAK
|
|
CASE PR_SCENE_HOSPITAL
|
|
ePed = CHAR_MULTIPLAYER
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
//url:bugstar:1015706
|
|
CASE PR_SCENE_FTa_FRANKLIN1a FALLTHRU
|
|
// CASE PR_SCENE_FTa_FRANKLIN1b FALLTHRU
|
|
CASE PR_SCENE_FTa_FRANKLIN1c FALLTHRU
|
|
CASE PR_SCENE_FTa_FRANKLIN1d FALLTHRU
|
|
CASE PR_SCENE_FTa_FRANKLIN1e
|
|
ePed = CHAR_MULTIPLAYER
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE PR_SCENE_M_DEFAULT FALLTHRU
|
|
CASE PR_SCENE_M_OVERRIDE FALLTHRU
|
|
// CASE PR_SCENE_Ma_ARM3 FALLTHRU
|
|
CASE PR_SCENE_Ma_FAMILY1 FALLTHRU
|
|
CASE PR_SCENE_Ma_RURAL1 FALLTHRU
|
|
CASE PR_SCENE_M4_WASHFACE FALLTHRU
|
|
CASE PR_SCENE_Ma_EXILE2 FALLTHRU
|
|
CASE PR_SCENE_Ma_EXILE3 FALLTHRU
|
|
// CASE PR_SCENE_Ma_FRANKLIN2 FALLTHRU
|
|
CASE PR_SCENE_Ma_DOCKS2A FALLTHRU
|
|
CASE PR_SCENE_Ma_DOCKS2B FALLTHRU
|
|
CASE PR_SCENE_Ma_FINALE1 FALLTHRU
|
|
CASE PR_SCENE_Ma_FINALE2A FALLTHRU
|
|
CASE PR_SCENE_Ma_FINALEC FALLTHRU
|
|
CASE PR_SCENE_Ma_FINALE2B FALLTHRU
|
|
// CASE PR_SCENE_Ma_SOLOMON4 FALLTHRU
|
|
CASE PR_SCENE_Ma_FRANKLIN2 FALLTHRU
|
|
CASE PR_SCENE_Ma_FBI1end FALLTHRU
|
|
CASE PR_SCENE_Ma_TREVOR3 FALLTHRU
|
|
CASE PR_SCENE_Ma_FBI3 FALLTHRU
|
|
CASE PR_SCENE_Ma_FBI4intro FALLTHRU
|
|
CASE PR_SCENE_Ma_FBI5 FALLTHRU
|
|
// CASE PR_SCENE_Ma_MARTIN1 FALLTHRU
|
|
CASE PR_SCENE_M_MD_FBI2 FALLTHRU
|
|
CASE PR_SCENE_M2_BEDROOM FALLTHRU
|
|
CASE PR_SCENE_M2_SAVEHOUSE0_b FALLTHRU
|
|
CASE PR_SCENE_M2_SAVEHOUSE1_a FALLTHRU
|
|
CASE PR_SCENE_M2_SAVEHOUSE1_b FALLTHRU
|
|
CASE PR_SCENE_M2_SMOKINGGOLF FALLTHRU
|
|
CASE PR_SCENE_M4_WAKEUPSCREAM FALLTHRU
|
|
CASE PR_SCENE_M4_WAKESUPSCARED FALLTHRU
|
|
// CASE PR_SCENE_M4_HOUSEBED_b FALLTHRU
|
|
CASE PR_SCENE_M6_HOUSEBED FALLTHRU
|
|
CASE PR_SCENE_M4_WATCHINGTV FALLTHRU
|
|
// CASE PR_SCENE_M6_HOUSETV_b FALLTHRU
|
|
CASE PR_SCENE_M2_KIDS_TV FALLTHRU
|
|
CASE PR_SCENE_M_POOLSIDE_a FALLTHRU
|
|
CASE PR_SCENE_M_POOLSIDE_b FALLTHRU
|
|
CASE PR_SCENE_M_PIER_a FALLTHRU
|
|
CASE PR_SCENE_M_PIER_b FALLTHRU
|
|
CASE PR_SCENE_M2_WIFEEXITSCAR FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFDAU_a FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFDAU_b FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFSON_a FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFSON_b FALLTHRU
|
|
CASE PR_SCENE_M2_DRIVING_a FALLTHRU
|
|
CASE PR_SCENE_M2_DRIVING_b FALLTHRU
|
|
CASE PR_SCENE_M2_LUNCH_a FALLTHRU
|
|
// CASE PR_SCENE_M7_LUNCH_b FALLTHRU
|
|
CASE PR_SCENE_M4_EXITRESTAURANT FALLTHRU
|
|
CASE PR_SCENE_M4_LUNCH_b FALLTHRU
|
|
CASE PR_SCENE_M4_CINEMA FALLTHRU
|
|
CASE PR_SCENE_M_BENCHCALL_a FALLTHRU
|
|
CASE PR_SCENE_M_BENCHCALL_b FALLTHRU
|
|
CASE PR_SCENE_M2_CARSLEEP_a FALLTHRU
|
|
CASE PR_SCENE_M2_CARSLEEP_b FALLTHRU
|
|
CASE PR_SCENE_M_CANAL_a FALLTHRU
|
|
CASE PR_SCENE_M_CANAL_b FALLTHRU
|
|
CASE PR_SCENE_M_CANAL_c FALLTHRU
|
|
// CASE PR_SCENE_M_BAR_a FALLTHRU
|
|
// CASE PR_SCENE_M_BAR_b FALLTHRU
|
|
CASE PR_SCENE_M_VWOODPARK_a FALLTHRU
|
|
CASE PR_SCENE_M_VWOODPARK_b FALLTHRU
|
|
CASE PR_SCENE_M_PARKEDHILLS_a FALLTHRU
|
|
CASE PR_SCENE_M_PARKEDHILLS_b FALLTHRU
|
|
CASE PR_SCENE_M6_PARKEDHILLS_a FALLTHRU
|
|
CASE PR_SCENE_M6_PARKEDHILLS_b FALLTHRU
|
|
CASE PR_SCENE_M6_PARKEDHILLS_c FALLTHRU
|
|
CASE PR_SCENE_M6_PARKEDHILLS_d FALLTHRU
|
|
CASE PR_SCENE_M6_PARKEDHILLS_e FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_a FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_b FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_c FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_d FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_e FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_f FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_g FALLTHRU
|
|
CASE PR_SCENE_M6_DRIVING_h FALLTHRU
|
|
CASE PR_SCENE_M6_RONBORING FALLTHRU
|
|
CASE PR_SCENE_M2_CYCLING_a FALLTHRU
|
|
CASE PR_SCENE_M2_CYCLING_b FALLTHRU
|
|
CASE PR_SCENE_M2_CYCLING_c FALLTHRU
|
|
CASE PR_SCENE_M2_MARINA FALLTHRU
|
|
CASE PR_SCENE_M2_ARGUEWITHWIFE FALLTHRU
|
|
CASE PR_SCENE_M4_PARKEDBEACH FALLTHRU
|
|
CASE PR_SCENE_M_HOOKERMOTEL FALLTHRU
|
|
// CASE PR_SCENE_M_HOOKERCAR FALLTHRU
|
|
CASE PR_SCENE_M_COFFEE_a FALLTHRU
|
|
CASE PR_SCENE_M_COFFEE_b FALLTHRU
|
|
CASE PR_SCENE_M_COFFEE_c FALLTHRU
|
|
CASE PR_SCENE_M2_PHARMACY FALLTHRU
|
|
// CASE PR_SCENE_M4_DOORSTUMBLE FALLTHRU
|
|
CASE PR_SCENE_M_TRAFFIC_a FALLTHRU
|
|
CASE PR_SCENE_M_TRAFFIC_b FALLTHRU
|
|
CASE PR_SCENE_M_TRAFFIC_c FALLTHRU
|
|
CASE PR_SCENE_M6_MORNING_a FALLTHRU
|
|
// CASE PR_SCENE_M6_MORNING_b FALLTHRU
|
|
CASE PR_SCENE_M6_CARSLEEP FALLTHRU
|
|
CASE PR_SCENE_M6_HOUSETV_a FALLTHRU
|
|
CASE PR_SCENE_M6_SUNBATHING FALLTHRU
|
|
CASE PR_SCENE_M6_DRINKINGBEER FALLTHRU
|
|
CASE PR_SCENE_M6_ONPHONE FALLTHRU
|
|
CASE PR_SCENE_M6_DEPRESSED FALLTHRU
|
|
CASE PR_SCENE_M6_BOATING FALLTHRU
|
|
CASE PR_SCENE_M6_LIQUORSTORE FALLTHRU
|
|
CASE PR_SCENE_M7_RESTAURANT FALLTHRU
|
|
CASE PR_SCENE_M7_LOUNGECHAIRS FALLTHRU
|
|
CASE PR_SCENE_M7_BYESOLOMON_a FALLTHRU
|
|
CASE PR_SCENE_M7_BYESOLOMON_b FALLTHRU
|
|
CASE PR_SCENE_M7_WIFETENNIS FALLTHRU
|
|
CASE PR_SCENE_M7_ROUNDTABLE FALLTHRU
|
|
CASE PR_SCENE_M7_REJECTENTRY FALLTHRU
|
|
CASE PR_SCENE_M7_HOOKERS FALLTHRU
|
|
CASE PR_SCENE_M7_EXITBARBER FALLTHRU
|
|
CASE PR_SCENE_M7_EXITFANCYSHOP FALLTHRU
|
|
CASE PR_SCENE_M7_FAKEYOGA FALLTHRU
|
|
CASE PR_SCENE_M7_COFFEE FALLTHRU
|
|
CASE PR_SCENE_M7_GETSREADY FALLTHRU
|
|
// CASE PR_SCENE_M7_PARKEDHILLS FALLTHRU
|
|
CASE PR_SCENE_M7_READSCRIPT FALLTHRU
|
|
CASE PR_SCENE_M7_EMPLOYEECONVO FALLTHRU
|
|
CASE PR_SCENE_M7_TALKTOGUARD FALLTHRU
|
|
CASE PR_SCENE_M7_LOT_JIMMY FALLTHRU
|
|
CASE PR_SCENE_M7_KIDS_TV FALLTHRU
|
|
CASE PR_SCENE_M7_KIDS_GAMING FALLTHRU
|
|
CASE PR_SCENE_M7_OPENDOORFORAMA FALLTHRU
|
|
CASE PR_SCENE_M7_DROPPINGOFFJMY FALLTHRU
|
|
CASE PR_SCENE_M7_BIKINGJIMMY FALLTHRU
|
|
CASE PR_SCENE_M_S_FAMILY4 FALLTHRU
|
|
CASE PR_SCENE_M7_TRACEYEXITSCAR
|
|
ePed = CHAR_MICHAEL
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
SWITCH eScene
|
|
CASE PR_SCENE_F_DEFAULT FALLTHRU
|
|
CASE PR_SCENE_F_OVERRIDE FALLTHRU
|
|
CASE PR_SCENE_Fa_PHONECALL_ARM3 FALLTHRU
|
|
CASE PR_SCENE_Fa_PHONECALL_FAM1 FALLTHRU
|
|
CASE PR_SCENE_Fa_PHONECALL_FAM3 FALLTHRU
|
|
CASE PR_SCENE_Fa_STRIPCLUB_ARM3 FALLTHRU
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM1 FALLTHRU
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM3 FALLTHRU
|
|
CASE PR_SCENE_Fa_EXILE2 FALLTHRU
|
|
CASE PR_SCENE_Fa_EXILE3 FALLTHRU
|
|
CASE PR_SCENE_Fa_FAMILY3 FALLTHRU
|
|
CASE PR_SCENE_Fa_CARSTEAL1 FALLTHRU
|
|
CASE PR_SCENE_Fa_FBI1 FALLTHRU
|
|
CASE PR_SCENE_Fa_FBI4intro FALLTHRU
|
|
CASE PR_SCENE_Fa_FBI4 FALLTHRU
|
|
CASE PR_SCENE_Fa_FBI5 FALLTHRU
|
|
CASE PR_SCENE_Fa_AGENCY1 FALLTHRU
|
|
CASE PR_SCENE_Fa_AGENCYprep1 FALLTHRU
|
|
CASE PR_SCENE_Fa_MARTIN1 FALLTHRU
|
|
CASE PR_SCENE_Fa_AGENCY3B FALLTHRU
|
|
CASE PR_SCENE_Fa_FINALE2intro FALLTHRU
|
|
CASE PR_SCENE_Fa_RURAL2A FALLTHRU
|
|
CASE PR_SCENE_Fa_MICHAEL3 FALLTHRU
|
|
CASE PR_SCENE_Fa_DOCKS2A FALLTHRU
|
|
CASE PR_SCENE_Fa_FINALE1 FALLTHRU
|
|
CASE PR_SCENE_Fa_TREVOR3 FALLTHRU
|
|
CASE PR_SCENE_Fa_AGENCY3A FALLTHRU
|
|
CASE PR_SCENE_Fa_AGENCY2 FALLTHRU
|
|
CASE PR_SCENE_Fa_FINALEA FALLTHRU
|
|
CASE PR_SCENE_Fa_FINALEB FALLTHRU
|
|
CASE PR_SCENE_Fa_FINALEC FALLTHRU
|
|
CASE PR_SCENE_F_MD_FRANKLIN2 FALLTHRU
|
|
CASE PR_SCENE_F0_SH_ASLEEP FALLTHRU
|
|
CASE PR_SCENE_F1_SH_ASLEEP FALLTHRU
|
|
CASE PR_SCENE_F1_NAPPING FALLTHRU
|
|
CASE PR_SCENE_F1_GETTINGREADY FALLTHRU
|
|
CASE PR_SCENE_F0_SH_READING FALLTHRU
|
|
CASE PR_SCENE_F1_SH_READING FALLTHRU
|
|
CASE PR_SCENE_F0_SH_PUSHUP_a FALLTHRU
|
|
CASE PR_SCENE_F0_SH_PUSHUP_b FALLTHRU
|
|
CASE PR_SCENE_F1_SH_PUSHUP FALLTHRU
|
|
CASE PR_SCENE_F_KUSH_DOC_a FALLTHRU
|
|
CASE PR_SCENE_F_MD_KUSH_DOC FALLTHRU
|
|
CASE PR_SCENE_F_KUSH_DOC_b FALLTHRU
|
|
CASE PR_SCENE_F_KUSH_DOC_c FALLTHRU
|
|
CASE PR_SCENE_F0_GARBAGE FALLTHRU
|
|
CASE PR_SCENE_F1_GARBAGE FALLTHRU
|
|
CASE PR_SCENE_F_THROW_CUP FALLTHRU
|
|
CASE PR_SCENE_F_HIT_CUP_HAND FALLTHRU
|
|
CASE PR_SCENE_F_GYM FALLTHRU
|
|
CASE PR_SCENE_F0_WALKCHOP FALLTHRU
|
|
CASE PR_SCENE_F0_PLAYCHOP FALLTHRU
|
|
// CASE PR_SCENE_F1_WALKCHOP FALLTHRU
|
|
CASE PR_SCENE_F0_TANISHAFIGHT FALLTHRU
|
|
CASE PR_SCENE_F1_NEWHOUSE FALLTHRU
|
|
CASE PR_SCENE_F_WALKCHOP_a FALLTHRU
|
|
CASE PR_SCENE_F_WALKCHOP_b FALLTHRU
|
|
CASE PR_SCENE_F1_PLAYCHOP FALLTHRU
|
|
CASE PR_SCENE_F_TRAFFIC_a FALLTHRU
|
|
CASE PR_SCENE_F_TRAFFIC_b FALLTHRU
|
|
CASE PR_SCENE_F_TRAFFIC_c FALLTHRU
|
|
CASE PR_SCENE_F0_BIKE FALLTHRU
|
|
CASE PR_SCENE_F0_CLEANCAR FALLTHRU
|
|
CASE PR_SCENE_F1_BIKE FALLTHRU
|
|
CASE PR_SCENE_F1_CLEANCAR FALLTHRU
|
|
CASE PR_SCENE_F1_BYETAXI FALLTHRU
|
|
CASE PR_SCENE_F_BIKE_c FALLTHRU
|
|
CASE PR_SCENE_F_BIKE_d FALLTHRU
|
|
CASE PR_SCENE_F_CLUB FALLTHRU
|
|
CASE PR_SCENE_F_CS_CHECKSHOE FALLTHRU
|
|
CASE PR_SCENE_F_CS_WIPEHANDS FALLTHRU
|
|
CASE PR_SCENE_F_CS_WIPERIGHT FALLTHRU
|
|
CASE PR_SCENE_F_BAR_a_01 FALLTHRU
|
|
CASE PR_SCENE_F_BAR_b_01 FALLTHRU
|
|
CASE PR_SCENE_F_BAR_c_02 FALLTHRU
|
|
CASE PR_SCENE_F_BAR_d_02 FALLTHRU
|
|
CASE PR_SCENE_F_BAR_e_01 FALLTHRU
|
|
CASE PR_SCENE_F_LAMTAUNT_P1 FALLTHRU
|
|
CASE PR_SCENE_F_LAMTAUNT_P3 FALLTHRU
|
|
CASE PR_SCENE_F_LAMTAUNT_P5 FALLTHRU
|
|
CASE PR_SCENE_F_LAMTAUNT_NIGHT FALLTHRU
|
|
CASE PR_SCENE_F1_POOLSIDE_a FALLTHRU
|
|
CASE PR_SCENE_F1_POOLSIDE_b FALLTHRU
|
|
CASE PR_SCENE_F1_CLEANINGAPT FALLTHRU
|
|
CASE PR_SCENE_F1_ONCELL FALLTHRU
|
|
CASE PR_SCENE_F1_SNACKING FALLTHRU
|
|
CASE PR_SCENE_F1_ONLAPTOP FALLTHRU
|
|
CASE PR_SCENE_F1_IRONING FALLTHRU
|
|
// CASE PR_SCENE_F0_WATCHINGTV FALLTHRU
|
|
CASE PR_SCENE_F1_WATCHINGTV FALLTHRU
|
|
CASE PR_SCENE_F_S_AGENCY_2A_a FALLTHRU
|
|
CASE PR_SCENE_F_S_AGENCY_2A_b FALLTHRU
|
|
// CASE PR_SCENE_F_S_FBI1end FALLTHRU
|
|
CASE PR_SCENE_F_S_EXILE2 //FALLTHRU
|
|
ePed = CHAR_FRANKLIN
|
|
RETURN TRUE
|
|
BREAK
|
|
CASE PR_SCENE_T_DEFAULT FALLTHRU
|
|
CASE PR_SCENE_T_OVERRIDE FALLTHRU
|
|
CASE PR_SCENE_Ta_CARSTEAL1 FALLTHRU
|
|
CASE PR_SCENE_Ta_CARSTEAL2 FALLTHRU
|
|
CASE PR_SCENE_Ta_FAMILY4 FALLTHRU
|
|
CASE PR_SCENE_Ta_FINALEC FALLTHRU
|
|
CASE PR_SCENE_Ta_FBI2 FALLTHRU
|
|
CASE PR_SCENE_Ta_RURAL2A FALLTHRU
|
|
CASE PR_SCENE_Ta_RC_MRSP2 FALLTHRU
|
|
CASE PR_SCENE_Ta_FINALE1 FALLTHRU
|
|
CASE PR_SCENE_Ta_CARSTEAL4 FALLTHRU
|
|
CASE PR_SCENE_Ta_FINALE2intro FALLTHRU
|
|
CASE PR_SCENE_Ta_MICHAEL3 FALLTHRU
|
|
// CASE PR_SCENE_Ta_MARTIN1 FALLTHRU
|
|
CASE PR_SCENE_Ta_FRANKLIN2 FALLTHRU
|
|
CASE PR_SCENE_Ta_FINALE2A FALLTHRU
|
|
CASE PR_SCENE_Ta_FINALE2B FALLTHRU
|
|
CASE PR_SCENE_T_SC_MOCKLAPDANCE FALLTHRU
|
|
CASE PR_SCENE_T_SC_BAR FALLTHRU
|
|
CASE PR_SCENE_T_SC_CHASE FALLTHRU
|
|
CASE PR_SCENE_T_STRIPCLUB_out FALLTHRU
|
|
CASE PR_SCENE_T_ESCORTED_OUT FALLTHRU
|
|
CASE PR_SCENE_T_CN_CHATEAU_b FALLTHRU
|
|
CASE PR_SCENE_T_CN_CHATEAU_c FALLTHRU
|
|
CASE PR_SCENE_T_CR_CHATEAU_d FALLTHRU
|
|
CASE PR_SCENE_T_GARBAGE_FOOD FALLTHRU
|
|
CASE PR_SCENE_T_THROW_FOOD FALLTHRU
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE PR_SCENE_T_SHIT FALLTHRU
|
|
CASE PR_SCENE_T_JERKOFF FALLTHRU
|
|
#ENDIF
|
|
CASE PR_SCENE_T_HEADINSINK FALLTHRU
|
|
CASE PR_SCENE_T_SMOKEMETH FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTBBUILD FALLTHRU
|
|
CASE PR_SCENE_T_ANNOYSUNBATHERS FALLTHRU
|
|
CASE PR_SCENE_T_CR_BLOCK_CAMERA FALLTHRU
|
|
CASE PR_SCENE_T_GUITARBEATDOWN FALLTHRU
|
|
CASE PR_SCENE_T_DOCKS_a FALLTHRU
|
|
CASE PR_SCENE_T_DOCKS_b FALLTHRU
|
|
CASE PR_SCENE_T_DOCKS_c FALLTHRU
|
|
CASE PR_SCENE_T_DOCKS_d FALLTHRU
|
|
CASE PR_SCENE_T_CR_LINGERIE FALLTHRU
|
|
CASE PR_SCENE_T_CR_FUNERAL FALLTHRU
|
|
CASE PR_SCENE_T_CR_DUMPSTER FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKETRASH_b FALLTHRU
|
|
CASE PR_SCENE_T_CR_WAKEBEACH FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKEBARN FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKETRAIN FALLTHRU
|
|
CASE PR_SCENE_T_CR_WAKEROOFTOP FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKEMOUNTAIN FALLTHRU
|
|
CASE PR_SCENE_T_CR_ALLEYDRUNK FALLTHRU
|
|
CASE PR_SCENE_T_SC_ALLEYDRUNK FALLTHRU
|
|
CASE PR_SCENE_T_PUKEINTOFOUNT FALLTHRU
|
|
CASE PR_SCENE_T_CN_PARK_b FALLTHRU
|
|
// CASE PR_SCENE_T_CN_PARK_c FALLTHRU
|
|
CASE PR_SCENE_T_CR_POLICE_a FALLTHRU
|
|
CASE PR_SCENE_T_CN_POLICE_b FALLTHRU
|
|
CASE PR_SCENE_T_CN_POLICE_c FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_BRIDGE FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_GARDEN FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_ISLAND FALLTHRU
|
|
CASE PR_SCENE_T_CR_CHASECAR_a FALLTHRU
|
|
CASE PR_SCENE_T_CN_CHASECAR_b FALLTHRU
|
|
CASE PR_SCENE_T_CR_CHASEBIKE FALLTHRU
|
|
CASE PR_SCENE_T_CR_CHASESCOOTER FALLTHRU
|
|
CASE PR_SCENE_T_CR_BRIDGEDROP FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTBAR_a FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTBAR_b FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTBAR_c FALLTHRU
|
|
CASE PR_SCENE_T_YELLATDOORMAN FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTYAUCLUB_b FALLTHRU
|
|
CASE PR_SCENE_T_FIGHTCASINO FALLTHRU
|
|
CASE PR_SCENE_T_CR_RUDEATCAFE FALLTHRU
|
|
CASE PR_SCENE_T_CR_RAND_TEMPLE FALLTHRU
|
|
CASE PR_SCENE_T_UNDERPIER FALLTHRU
|
|
CASE PR_SCENE_T_KONEIGHBOUR FALLTHRU
|
|
CASE PR_SCENE_T_SCARETRAMP FALLTHRU
|
|
CASE PR_SCENE_T_DRUNKHOWLING FALLTHRU
|
|
CASE PR_SCENE_T_SC_DRUNKHOWLING FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDSAVEHOUSE FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDSPOON_A FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDSPOON_B FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDSPOON_B2 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDSPOON_A2 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDCRYING_A FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDCRYING_E0 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDCRYING_E1 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDCRYING_E2 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDCRYING_E3 FALLTHRU
|
|
CASE PR_SCENE_T_FLOYD_BEAR FALLTHRU
|
|
CASE PR_SCENE_T_FLOYD_DOLL FALLTHRU
|
|
CASE PR_SCENE_T_FLOYDPINEAPPLE FALLTHRU
|
|
CASE PR_SCENE_T6_SMOKECRYSTAL FALLTHRU
|
|
// CASE PR_SCENE_T6_BLOWSHITUP FALLTHRU
|
|
// CASE PR_SCENE_T6_EVENING FALLTHRU
|
|
CASE PR_SCENE_T6_METHLAB FALLTHRU
|
|
CASE PR_SCENE_T6_HUNTING1 FALLTHRU
|
|
CASE PR_SCENE_T6_HUNTING2 FALLTHRU
|
|
CASE PR_SCENE_T6_HUNTING3 FALLTHRU
|
|
CASE PR_SCENE_T6_TRAF_AIR FALLTHRU
|
|
// CASE PR_SCENE_T6_DISPOSEBODY_A FALLTHRU
|
|
CASE PR_SCENE_T6_DIGGING FALLTHRU
|
|
CASE PR_SCENE_T6_FLUSHESFOOT FALLTHRU
|
|
CASE PR_SCENE_T_CN_PIER FALLTHRU
|
|
CASE PR_SCENE_T6_LAKE FALLTHRU
|
|
CASE PR_SCENE_T_FLYING_PLANE
|
|
ePed = CHAR_TREVOR
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sInvalid
|
|
sInvalid = "invalid eScene for player char: "
|
|
sInvalid += Get_String_From_Ped_Request_Scene_Enum(eScene)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, GET_THIS_SCRIPT_NAME(), ": ", sInvalid)
|
|
CASSERTLN(DEBUG_SWITCH, sInvalid)
|
|
#ENDIF
|
|
|
|
ePed = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(g_sPlayerPedRequest.sSelectorPeds.eNewSelectorPed)
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
// *******************************************************************************************
|
|
// SCENE PROCESS FUNCS
|
|
// *******************************************************************************************
|
|
|
|
|
|
FUNC BOOL SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PED_REQUEST_SCENE_ENUM eScene, TEXT_LABEL_31 &sPlayerTimetableAdditional_script)
|
|
|
|
SWITCH eScene
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_ARM3 sPlayerTimetableAdditional_script = "player_scene_f_stripclub" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM1 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_Fa_STRIPCLUB_ARM3, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM3 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_Fa_STRIPCLUB_ARM3, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
// CASE PR_SCENE_Fa_FAMILY1 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Fa_FAMILY3 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Fa_FBI1 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Fa_FBI4 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_Fa_AGENCY1 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Ma_FAMILY4 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Ma_CARSTEAL1 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Fa_RURAL2A RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_Ta_RURAL2A RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_POLICE_a, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
CASE PR_SCENE_FTa_FRANKLIN1a sPlayerTimetableAdditional_script = "player_scene_ft_franklin1" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_FTa_FRANKLIN1b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_FTa_FRANKLIN1a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_FTa_FRANKLIN1c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_FTa_FRANKLIN1a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_FTa_FRANKLIN1d RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_FTa_FRANKLIN1a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_FTa_FRANKLIN1e RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_FTa_FRANKLIN1a, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
CASE PR_SCENE_M_MD_FBI2 sPlayerTimetableAdditional_script = "player_scene_m_fbi2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_MD_FRANKLIN2 sPlayerTimetableAdditional_script = "player_scene_m_fbi2" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M_TRAFFIC_a sPlayerTimetableAdditional_script = "player_scene_mf_traffic" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_TRAFFIC_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M_TRAFFIC_c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
CASE PR_SCENE_M2_WIFEEXITSCAR sPlayerTimetableAdditional_script = "player_scene_m_shopping" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_DROPOFFDAU_a RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M2_DROPOFFDAU_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M2_DROPOFFSON_a RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M2_DROPOFFSON_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M7_OPENDOORFORAMA RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M7_DROPPINGOFFJMY RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M7_TRACEYEXITSCAR RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M2_WIFEEXITSCAR, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
CASE PR_SCENE_M_VWOODPARK_a sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_VWOODPARK_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M_VWOODPARK_a, sPlayerTimetableAdditional_script) BREAK
|
|
|
|
|
|
CASE PR_SCENE_M7_REJECTENTRY sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_TALKTOGUARD sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_EMPLOYEECONVO sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M4_CINEMA sPlayerTimetableAdditional_script = "player_scene_m_cinema" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_HOOKERS RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_M4_CINEMA, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_M2_KIDS_TV sPlayerTimetableAdditional_script = "player_scene_m_kids" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_KIDS_TV sPlayerTimetableAdditional_script = "player_scene_m_kids" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_BIKINGJIMMY sPlayerTimetableAdditional_script = "player_scene_m_kids" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_ROUNDTABLE sPlayerTimetableAdditional_script = "player_scene_m_kids" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M2_LUNCH_a sPlayerTimetableAdditional_script = "player_scene_m_shopping" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_RESTAURANT sPlayerTimetableAdditional_script = "player_scene_m_shopping" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_LOUNGECHAIRS sPlayerTimetableAdditional_script = "player_scene_m_shopping" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_WASHFACE sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
|
|
// CASE PR_SCENE_F_GYM sPlayerTimetableAdditional_script = "player_scene_f_gym" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_a sPlayerTimetableAdditional_script = "player_scene_mf_traffic" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_F_LAMGRAFF sPlayerTimetableAdditional_script = "player_scene_f_lamgraff" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_F_CLUB sPlayerTimetableAdditional_script = "player_scene_f_club" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_F_TAUNT RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_LAMTAUNT_P1, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F_LAMTAUNT_P1 sPlayerTimetableAdditional_script = "player_scene_f_lamtaunt" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_F_LAMTAUNT_P2 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_LAMTAUNT_P1, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F_LAMTAUNT_P3 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_LAMTAUNT_P1, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F_LAMTAUNT_P5 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_LAMTAUNT_P1, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F_LAMTAUNT_NIGHT RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_F_LAMTAUNT_P1, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_F1_BYETAXI sPlayerTimetableAdditional_script = "player_scene_f_taxi" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F0_TANISHAFIGHT sPlayerTimetableAdditional_script = "player_scene_f_taxi" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_T_SC_MOCKLAPDANCE sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_T_ESCORTED_OUT sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_ANNOYSUNBATHERS sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_T_CR_FUNERAL sPlayerTimetableAdditional_script = "player_scene_t_funeral" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_T_CR_THEATRE sPlayerTimetableAdditional_script = "player_scene_t_theatre" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_CHASECAR_a sPlayerTimetableAdditional_script = "player_scene_t_chasecar" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_CHASECAR_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_CHASECAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_CR_CHASEBIKE RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_CHASECAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_CR_CHASESCOOTER RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_CHASECAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_CR_POLICE_a RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_CHASECAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_CN_POLICE_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_POLICE_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_CN_POLICE_c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_CR_POLICE_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_PUKEINTOFOUNT sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_SMOKEMETH sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_RC_MRSP2 RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_SMOKEMETH, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T6_DIGGING sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T6_FLUSHESFOOT sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_HEADINSINK sPlayerTimetableAdditional_script = "player_scene_t_park" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_PARK_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_PUKEINTOFOUNT, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_T_CN_PARK_c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_PUKEINTOFOUNT, sPlayerTimetableAdditional_script) BREAK
|
|
// CASE PR_SCENE_T_CR_BRIDGEDROP sPlayerTimetableAdditional_script = "player_scene_t_bridrop" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_RUDEATCAFE sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_UNDERPIER sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_NAKED_ISLAND sPlayerTimetableAdditional_script = "player_scene_t_tie" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_BRIDGEDROP sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBBUILD sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_a sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_FIGHTBAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_c RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_FIGHTBAR_a, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_YELLATDOORMAN sPlayerTimetableAdditional_script = "player_scene_t_bbfight" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTYAUCLUB_b RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_YELLATDOORMAN, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_FIGHTCASINO RETURN SETUP_TIMETABLE_SCRIPT_FOR_SCENE(PR_SCENE_T_YELLATDOORMAN, sPlayerTimetableAdditional_script) BREAK
|
|
CASE PR_SCENE_T_SCARETRAMP sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_THROW_FOOD sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_T_SC_CHASE sPlayerTimetableAdditional_script = "player_scene_t_insult" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_WAKETRAIN sPlayerTimetableAdditional_script = "player_scene_ft_franklin1" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_F_S_FBI1end sPlayerTimetableAdditional_script = "player_scene_ft_franklin1" RETURN TRUE BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC TEXT_LABEL CreateRandomSpeechLabel(STRING sSceneSpeechLabel, INT iRANGE = 3)
|
|
TEXT_LABEL tSceneSpeechLabel = sSceneSpeechLabel
|
|
|
|
SWITCH GET_RANDOM_INT_IN_RANGE(0,iRANGE)
|
|
CASE 0 tSceneSpeechLabel += "a" BREAK
|
|
CASE 1 tSceneSpeechLabel += "b" BREAK
|
|
CASE 2 tSceneSpeechLabel += "c" BREAK
|
|
|
|
DEFAULT tSceneSpeechLabel += "X" BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN tSceneSpeechLabel
|
|
ENDFUNC
|
|
FUNC BOOL SETUP_TIMETABLE_SPEECH_FOR_SCENE(PED_REQUEST_SCENE_ENUM eScene,
|
|
TEXT_LABEL &tVoiceID,
|
|
TEXT_LABEL &tBuddyVoiceID,
|
|
TEXT_LABEL &tSceneSpeechBlock,
|
|
TEXT_LABEL &tSceneSpeechLabel,
|
|
FLOAT &fSceneSpeechPhase)
|
|
|
|
tSceneSpeechBlock = "PRSAUD"
|
|
tBuddyVoiceID = ""
|
|
fSceneSpeechPhase = 0.0
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_Fa_STRIPCLUB_ARM3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_D" tBuddyVoiceID = "TANISHA" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_PHONECALL_ARM3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_A" tBuddyVoiceID = "LAMAR" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ma_ARM3 tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS_ARM3" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM1 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_D" tBuddyVoiceID = "TANISHA" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_PHONECALL_FAM1 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_B" tBuddyVoiceID = "LAMAR" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Fa_STRIPCLUB_FAM3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_D" tBuddyVoiceID = "TANISHA" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_PHONECALL_FAM3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_ARM3_C" tBuddyVoiceID = "LAMAR" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_FAMILY3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FAM3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FBI2 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FBI2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_FAMILY1 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FAM1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_FBI4intro tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FBI4_0" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_FBI4intro tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FBI4_0" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ma_FBI5 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FBI5" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_FBI3 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FBI3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_FBI4 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FBI4" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_FBI5 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FBI5" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FAMILY4 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FAM4" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ta_FINALEC tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FINC" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_Fa_AGENCY1 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_AGE1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_AGENCYprep1 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_AGEp" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Fa_AGENCY3B tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_AGE3b" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_Ma_FRANKLIN2 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FRA2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FRANKLIN2 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FRA2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_FBI1end tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FBIend" RETURN TRUE BREAK
|
|
|
|
// CASE PR_SCENE_Ma_MARTIN1 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_MAR1" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ta_MARTIN1 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_MAR1" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_Fa_CARSTEAL1 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_CARST1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_CARSTEAL1 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CARST1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_AGENCY2 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_AGE2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_CARSTEAL2 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CARST2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_RURAL2A tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_RUR2A" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ta_RURAL2A tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_RUR2A" fSceneSpeechPhase = 0.60 RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_RURAL1 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_RUR1" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Ma_EXILE2 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_EXILE2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_EXILE2 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_EXILE2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_EXILE3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FBI5b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_EXILE3 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_EXILE3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_WASHFACE tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_MIC2" RETURN TRUE BREAK
|
|
|
|
// CASE PR_SCENE_Fa_MICHAEL3 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_MIC3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_MICHAEL3 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_MIC3b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_DOCKS2A tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_DOC2A" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_DOCKS2A tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_DOC2A" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_DOCKS2B tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_DOC2B" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_Ma_FINALE1 tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FIN1" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_Fa_AGENCY3A tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_AGE3A" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FINALE2A tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIN2A" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ma_FINALE2B tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_FIN2B" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FINALE2B tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIN2B" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_RC_MRSP2 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_MRSP" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_Ta_FINALE1 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIN1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_CARSTEAL4
|
|
tSceneSpeechBlock = "MIFLAUD"
|
|
tSceneSpeechLabel = "MIFL_CALL3"
|
|
tVoiceID = "TREVOR"
|
|
tBuddyVoiceID = "LESTER"
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_Fa_FINALE2intro tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_FIN2i" RETURN TRUE BREAK
|
|
CASE PR_SCENE_Ta_FINALE2intro tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIN2i" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M2_LUNCH_a
|
|
tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "AMANDA"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS1_IG_4")
|
|
RETURN TRUE
|
|
BREAK
|
|
CASE PR_SCENE_M2_WIFEEXITSCAR tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_5" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_BENCHCALL_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_9a" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_BENCHCALL_b tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_9b" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M_PIER_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS_BEACH" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M_TRAFFIC_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_7" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_TRAFFIC_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_M_TRAFFIC_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_M_TRAFFIC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
|
|
CASE PR_SCENE_M_VWOODPARK_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_8" fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_VWOODPARK_b tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_8b" fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_PHARMACY tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_11" fSceneSpeechPhase = 0.15 tBuddyVoiceID = "AMANDA" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_MARINA tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS1_IG_16" fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_ARGUEWITHWIFE tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "AMANDA"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS1_IG_18")
|
|
fSceneSpeechPhase = 0.0
|
|
IF ARE_STRINGS_EQUAL(tSceneSpeechLabel, "MICS1_IG_18a")
|
|
//You are really pathetic, Michael. Pathetic.
|
|
fSceneSpeechPhase = 0.05
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(tSceneSpeechLabel, "MICS1_IG_18b")
|
|
//I'm tired of your bullshit, Michael. Tired.
|
|
fSceneSpeechPhase = 0.05
|
|
ENDIF
|
|
IF ARE_STRINGS_EQUAL(tSceneSpeechLabel, "MICS1_IG_18c")
|
|
//Just leave us all alone, Michael. Please.
|
|
fSceneSpeechPhase = 0.05
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
// CASE PR_SCENE_F0_TANISHAFIGHT tVoiceID = "FRANKLIN"
|
|
// tBuddyVoiceID = "TANISHA"
|
|
// tSceneSpeechLabel = "PSF_TANISHA"
|
|
// RETURN TRUE
|
|
// BREAK
|
|
CASE PR_SCENE_F1_NEWHOUSE tVoiceID = "FRANKLIN"
|
|
tBuddyVoiceID = "LESTER"
|
|
tSceneSpeechLabel = "FRAS2_IG_12"
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE PR_SCENE_M4_EXITRESTAURANT
|
|
IF NOT g_bMagDemoActive
|
|
tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_4REST"
|
|
fSceneSpeechPhase = 0.20 RETURN TRUE
|
|
ENDIF
|
|
|
|
BREAK
|
|
CASE PR_SCENE_M4_LUNCH_b tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_4LUNCHb" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_CINEMA tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_4LUNCHc" fSceneSpeechPhase = 0.45 RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M_HOOKERMOTEL
|
|
tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_HOOKM"
|
|
fSceneSpeechPhase = 0.25 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M6_HOUSEBED
|
|
tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS_DESERT"
|
|
fSceneSpeechPhase = 0.5 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_RESTAURANT tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_7LUNCHa" tBuddyVoiceID = "AMANDA" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_LOUNGECHAIRS tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "AMANDA"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_9")
|
|
RETURN TRUE
|
|
CASE PR_SCENE_M7_BYESOLOMON_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_5a" fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_BYESOLOMON_b tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_5b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_WIFETENNIS tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_18" tBuddyVoiceID = "AMANDA" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_M7_ROUNDTABLE_DOUCH tVoiceID = "MICHAEL"
|
|
// tBuddyVoiceID = "TRACEY"
|
|
// tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_12")
|
|
// RETURN TRUE BREAK
|
|
// CASE PR_SCENE_M7_ROUNDTABLE tVoiceID = "MICHAEL"
|
|
// tBuddyVoiceID = "TRACEY"
|
|
// tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_12")
|
|
// RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_REJECTENTRY tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_6" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_HOOKERS tVoiceID = "MICHAEL"
|
|
|
|
// tSceneSpeechLabel = "PSM_7HOOKER" fSceneSpeechPhase = 0.20
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_7HOOKER") tBuddyVoiceID = "HOOKER"
|
|
|
|
RETURN TRUE BREAK
|
|
// CASE PR_SCENE_M7_EXITBARBER tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_7HAIR" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_FAKEYOGA tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_13" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M_COFFEE_a tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM2_COFFEE" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M_COFFEE_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_M_COFFEE_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_M_COFFEE_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_M_COFFEE_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_M7_COFFEE tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM7_COFFEE" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M7_GETSREADY tVoiceID = "MICHAEL" tSceneSpeechLabel = "PSM_7SVHOUSE" fSceneSpeechPhase = 0.50 RETURN TRUE BREAK
|
|
// CASE PR_SCENE_M7_EMPLOYEECONVO
|
|
// tVoiceID = "MICHAEL"
|
|
// tBuddyVoiceID = "PREMPLOYEE"
|
|
// tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_2")
|
|
// fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_TALKTOGUARD tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_LOT_JIMMY tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "JIMMY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_7LOT_C")
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_WATCHINGTV tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS2_IG_2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_KIDS_TV
|
|
tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS3_IG_15"
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_KIDS_GAMING tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "JIMMY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_11")
|
|
fSceneSpeechPhase = 0.20 RETURN TRUE
|
|
CASE PR_SCENE_M7_OPENDOORFORAMA tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "AMANDA"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_17")
|
|
RETURN TRUE
|
|
CASE PR_SCENE_M7_DROPPINGOFFJMY tVoiceID = "MICHAEL" tBuddyVoiceID = "JIMMY"
|
|
tSceneSpeechLabel = "PSM_7SHOPb" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
// CASE PR_SCENE_M7_BIKINGJIMMY tVoiceID = "MICHAEL"
|
|
// tBuddyVoiceID = "JIMMY"
|
|
// tSceneSpeechLabel = "MICS3_IG_10" fSceneSpeechPhase = 0.20 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_TRACEYEXITSCAR tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "TRACEY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("MICS3_IG_21")
|
|
fSceneSpeechPhase = 0.25
|
|
RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_F0_SH_ASLEEP tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_SH_ASLEEP RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_SH_ASLEEP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F0_SH_PUSHUP_a tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_1c" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F0_SH_PUSHUP_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_SH_PUSHUP_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F1_SH_PUSHUP RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_SH_PUSHUP_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F0_SH_READING tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_1b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_SH_READING RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_SH_READING, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
|
|
CASE PR_SCENE_F_LAMTAUNT_P5
|
|
tVoiceID = "FRANKLIN"
|
|
tBuddyVoiceID = "LAMAR"
|
|
tSceneSpeechLabel = "FRAS_IG_6_P5" RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_F_KUSH_DOC_a tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_KUSH_DOC_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_KUSH_DOC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_KUSH_DOC_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_KUSH_DOC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F0_BIKE tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSF_BIKEa" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_BIKE RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_BIKE, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_BIKE_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_BIKE, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_BIKE_d RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_BIKE, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F0_GARBAGE tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_3" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_GARBAGE tVoiceID = "FRANKLIN" tSceneSpeechLabel = "PSM_TRASH" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_CLUB tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_8" fSceneSpeechPhase = 0.35 RETURN TRUE BREAK
|
|
// CASE PR_SCENE_F_CLUB tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_IG_8" fSceneSpeechPhase = 0.35 RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_a tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_TRAFF" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_TRAFFIC_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_TRAFFIC_a, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
|
|
CASE PR_SCENE_F0_WALKCHOP tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS2_IG_9" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F0_PLAYCHOP RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_WALKCHOP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
// CASE PR_SCENE_F1_WALKCHOP RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_WALKCHOP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_WALKCHOP_a RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_WALKCHOP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_WALKCHOP_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_WALKCHOP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F1_PLAYCHOP RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F0_WALKCHOP, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
|
|
CASE PR_SCENE_F_BAR_a_01 tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_BAR" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F_BAR_b_01 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_BAR_a_01, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_BAR_c_02 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_BAR_a_01, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_BAR_d_02 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_BAR_a_01, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_F_BAR_e_01 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_F_BAR_a_01, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
|
|
// CASE PR_SCENE_T_STRIPCLUB_a tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_28a" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_SC_MOCKLAPDANCE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_28b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_ESCORTED_OUT tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_12a" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_CHATEAU_b tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_12b" fSceneSpeechPhase = 0.25 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_CHATEAU_c tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_12c" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_CHATEAU_d tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_12d" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBBUILD
|
|
tVoiceID = "TREVOR"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("TRVS_IG_5")
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_ANNOYSUNBATHERS tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_6" fSceneSpeechPhase = 0.45 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_BRIDGEDROP tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_29" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_NAKED_BRIDGE tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_BRDGEWKa" fSceneSpeechPhase = 0.25 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_NAKED_GARDEN tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_BRDGEWKb" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_NAKED_ISLAND
|
|
tVoiceID = "TREVOR"
|
|
|
|
IF NOT g_bMagDemoActive
|
|
tSceneSpeechLabel = "PST_BRDGEWKc"
|
|
ELSE
|
|
tSceneSpeechLabel = "PST_MAGDEMO"
|
|
ENDIF
|
|
|
|
fSceneSpeechPhase = 0.39
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_SC_ALLEYDRUNK tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WSTRIP" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_WAKETRASH_b tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHb" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_WAKEBEACH tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHc" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_WAKEBARN tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHd" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_WAKETRAIN tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHe" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_WAKEROOFTOP tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHf" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_WAKEMOUNTAIN tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_WTRASHg" fSceneSpeechPhase = 0.39 RETURN TRUE BREAK
|
|
// CASE PR_SCENE_T_SC_CHASE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_35" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_FUNERAL tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_11" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_CHASECAR_b tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CHSCRb" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_BLOCK_CAMERA tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_7" fSceneSpeechPhase = 0.25 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_GUITARBEATDOWN tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_8" fSceneSpeechPhase = 0.25 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_CHASECAR_a tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CHSCRa" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_CHASEBIKE tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CHSCRc" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_CHASESCOOTER tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_CHSCRd" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_POLICE_a tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_POLa" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_POLICE_b tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_POLb" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_POLICE_c tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_POLc" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_PUKEINTOFOUNT tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_PARK" fSceneSpeechPhase = 0.50 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_PARK_b RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_T_PUKEINTOFOUNT, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
// CASE PR_SCENE_T_CN_PARK_c RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_T_PUKEINTOFOUNT, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_T_CR_LINGERIE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_9" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
// CASE PR_SCENE_T_CR_MACHINE tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_MACHINE" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_a tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIBARa" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_b tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIBARb" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTBAR_c tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIBARc" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_YELLATDOORMAN tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_21" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTYAUCLUB_b tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIYAUGHb" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FIGHTCASINO tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FIYAUGHc" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_RUDEATCAFE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_23" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_UNDERPIER tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_22" fSceneSpeechPhase = 0.30 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_KONEIGHBOUR tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_19" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_SCARETRAMP tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_20" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_DRUNKHOWLING tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_18" fSceneSpeechPhase = 0.2140 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_SC_DRUNKHOWLING tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_HSTRIP" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_A tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_30a" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_B tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_30b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_B2 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_30c" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_A2 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_30d" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDCRYING_A tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_34a" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDCRYING_E0 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_34b" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDCRYING_E1 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_34c" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDCRYING_E2 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_34d" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDCRYING_E3 tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_34e" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYD_BEAR tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_31" tBuddyVoiceID = "FLOYD" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYD_DOLL tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_32" tBuddyVoiceID = "FLOYD" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDPINEAPPLE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_33" tBuddyVoiceID = "FLOYD" RETURN TRUE BREAK
|
|
// CASE PR_SCENE_T6_SMOKECRYSTAL tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_MORN" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T6_METHLAB tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_METH" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T6_HUNTING1 tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_HUNT" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T6_HUNTING2 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_T6_HUNTING1, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_T6_HUNTING3 RETURN SETUP_TIMETABLE_SPEECH_FOR_SCENE(PR_SCENE_T6_HUNTING1, tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel, fSceneSpeechPhase) BREAK
|
|
CASE PR_SCENE_T6_TRAF_AIR tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_ARMS" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CN_PIER tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_PIER" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLYING_PLANE tVoiceID = "TREVOR" tSceneSpeechLabel = "PST_FLY" RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_WAKEUPSCREAM tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS2_IG_1" fSceneSpeechPhase = 0.15 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M4_WAKESUPSCARED tVoiceID = "MICHAEL" tSceneSpeechLabel = "MICS2_IG_1" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_ONCELL tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS2_IG_2" RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_CR_RAND_TEMPLE tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_24" RETURN TRUE BREAK
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE PR_SCENE_T_JERKOFF tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_2c" RETURN TRUE BREAK
|
|
#ENDIF
|
|
CASE PR_SCENE_T6_FLUSHESFOOT tVoiceID = "TREVOR" tSceneSpeechLabel = "TRVS_IG_27" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_BYETAXI tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS2_IG_7" tBuddyVoiceID = "PRLADY" RETURN TRUE BREAK
|
|
CASE PR_SCENE_F1_SNACKING tVoiceID = "FRANKLIN" tSceneSpeechLabel = "FRAS_CRISP" fSceneSpeechPhase = 0.75 RETURN TRUE BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_M2_DROPOFFDAU_a tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "TRACEY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_SHOPb_")
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_DROPOFFDAU_b tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "TRACEY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_SHOPc_")
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_DROPOFFSON_a tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "JIMMY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_SHOPd_")
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M2_DROPOFFSON_b tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = "JIMMY"
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel("PSM_SHOPe_")
|
|
RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M6_ONPHONE
|
|
tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = ""
|
|
tSceneSpeechBlock = "FMTAUD" //Family Member - Trevors events!
|
|
|
|
// INT iPhoneSpeechBit
|
|
tSceneSpeechLabel = "MIC_IG_4" //Get_SpeechLabel_From_FamilyEvent(FE_T0_MICHAEL_on_phone_to_therapist, iPhoneSpeechBit)
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel(tSceneSpeechLabel)
|
|
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M6_DEPRESSED
|
|
tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = ""
|
|
tSceneSpeechBlock = "FMTAUD" //Family Member - Trevors events!
|
|
|
|
// INT iPhoneSpeechBit
|
|
tSceneSpeechLabel = "MIC_IG_4" //Get_SpeechLabel_From_FamilyEvent(FE_T0_MICHAEL_on_phone_to_therapist, iPhoneSpeechBit)
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel(tSceneSpeechLabel)
|
|
|
|
RETURN TRUE BREAK
|
|
CASE PR_SCENE_M6_SUNBATHING
|
|
tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = ""
|
|
tSceneSpeechBlock = "FMTAUD" //Family Member - Trevors events!
|
|
|
|
INT iPhoneSpeechCount, iPhoneSpeechBit, iPlayerBitset
|
|
tSceneSpeechLabel = Get_SpeechLabel_From_FamilyEvent(FE_T0_MICHAEL_sunbathing, iPhoneSpeechCount, iPhoneSpeechBit, iPlayerBitset)
|
|
|
|
RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_F_S_AGENCY_2A_b tVoiceID = "FRANKLIN"
|
|
tSceneSpeechBlock = "FB3aAUD"
|
|
tSceneSpeechLabel = "F3A_INTRO"
|
|
RETURN TRUE BREAK
|
|
BREAK
|
|
CASE PR_SCENE_M6_RONBORING tVoiceID = "MICHAEL"
|
|
tBuddyVoiceID = Get_VoiceID_From_FamilyMember(FM_TREVOR_0_RON)
|
|
tSceneSpeechBlock = "FMTAUD" //Family Member - Trevors events!
|
|
|
|
// INT iPhoneSpeechBit
|
|
tSceneSpeechLabel = "RONEX_IG_5" //Get_SpeechLabel_From_FamilyEvent(FE_T0_MICHAEL_on_phone_to_therapist, iPhoneSpeechBit)
|
|
tSceneSpeechLabel = CreateRandomSpeechLabel(tSceneSpeechLabel, 2)
|
|
|
|
RETURN TRUE BREAK
|
|
BREAK
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE PR_SCENE_T_SHIT tVoiceID = "TREVOR"
|
|
tSceneSpeechBlock = "FMTAUD" //Family Member - Trevors events!
|
|
|
|
// INT iPhoneSpeechBit
|
|
tSceneSpeechLabel = "TRV_IG_4" //Get_SpeechLabel_From_FamilyEvent(FE_T0_MICHAEL_on_phone_to_therapist, iPhoneSpeechBit)
|
|
|
|
RETURN TRUE BREAK
|
|
BREAK
|
|
#ENDIF
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sMissing
|
|
sMissing = "no speech for eScene: "
|
|
sMissing += Get_String_From_Ped_Request_Scene_Enum(eScene)
|
|
|
|
CDEBUG3LN(DEBUG_SWITCH, GET_THIS_SCRIPT_NAME(), ": ", sMissing)
|
|
/* CASSERTLN(DEBUG_SWITCH, sMissing) */
|
|
#ENDIF
|
|
|
|
tVoiceID = "null"
|
|
tSceneSpeechBlock = "null"
|
|
tSceneSpeechLabel = "null"
|
|
fSceneSpeechPhase = -1.0
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SETUP_TIMETABLE_CONTEXT_FOR_SCENE(PED_REQUEST_SCENE_ENUM eScene,
|
|
TEXT_LABEL_31 &tContext,
|
|
FLOAT &fSceneSpeechPhase,
|
|
BOOL &bPlayerSpeaks)
|
|
|
|
bPlayerSpeaks = TRUE
|
|
|
|
SWITCH eScene
|
|
// CASE PR_SCENE_F1_SNACKING tContext = "GENERIC_EAT" fSceneSpeechPhase = 0.75 RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_KONEIGHBOUR tContext = "GENERIC_INSULT_HIGH" fSceneSpeechPhase = 0.9 RETURN TRUE BREAK
|
|
CASE PR_SCENE_M7_HOOKERS tContext = "HOOKER_DECLINED" fSceneSpeechPhase = 0.9 bPlayerSpeaks = FALSE RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_T_CR_BLOCK_CAMERA tContext = "GENERIC_INSULT_MED" fSceneSpeechPhase = 0.9 bPlayerSpeaks = FALSE RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_F_GYM tContext = "WORKOUT_FINISHED" fSceneSpeechPhase = 0.9 RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_T_FLOYDSPOON_A tContext = "MURMERING" fSceneSpeechPhase = 0.9 bPlayerSpeaks = FALSE RETURN TRUE BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_A2 RETURN SETUP_TIMETABLE_CONTEXT_FOR_SCENE(PR_SCENE_T_FLOYDSPOON_A, tContext, fSceneSpeechPhase, bPlayerSpeaks) BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_B RETURN SETUP_TIMETABLE_CONTEXT_FOR_SCENE(PR_SCENE_T_FLOYDSPOON_A, tContext, fSceneSpeechPhase, bPlayerSpeaks) BREAK
|
|
CASE PR_SCENE_T_FLOYDSPOON_B2 RETURN SETUP_TIMETABLE_CONTEXT_FOR_SCENE(PR_SCENE_T_FLOYDSPOON_A, tContext, fSceneSpeechPhase, bPlayerSpeaks) BREAK
|
|
|
|
CASE PR_SCENE_M2_KIDS_TV tContext = "AIMED_AT_BY_PLAYER" fSceneSpeechPhase = 0.9 bPlayerSpeaks = FALSE RETURN TRUE BREAK
|
|
|
|
CASE PR_SCENE_M7_TALKTOGUARD tContext = "GENERIC_BYE" fSceneSpeechPhase = 0.9 bPlayerSpeaks = FALSE RETURN TRUE BREAK
|
|
ENDSWITCH
|
|
|
|
tContext = "null"
|
|
fSceneSpeechPhase = -1.0
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SHAKE_PLAYER_TIMETABLE_DRUNK_CAM(PED_REQUEST_SCENE_ENUM eScene,
|
|
FLOAT ¶mStrength, FLOAT &litudeScalar, BOOL &bCountsForPubClubVisit)
|
|
SWITCH eScene
|
|
CASE PR_SCENE_M6_LIQUORSTORE
|
|
paramStrength = 1.0 //0.05
|
|
amplitudeScalar = 1.0 //0.05
|
|
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
CASE PR_SCENE_T_SC_BAR FALLTHRU
|
|
CASE PR_SCENE_T_DRUNKHOWLING FALLTHRU
|
|
CASE PR_SCENE_T_SC_DRUNKHOWLING FALLTHRU
|
|
CASE PR_SCENE_T_CR_ALLEYDRUNK FALLTHRU
|
|
CASE PR_SCENE_T_SC_ALLEYDRUNK FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_BRIDGE FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_GARDEN FALLTHRU
|
|
CASE PR_SCENE_T_NAKED_ISLAND FALLTHRU
|
|
CASE PR_SCENE_T_CN_CHATEAU_b FALLTHRU
|
|
CASE PR_SCENE_T_CN_CHATEAU_c FALLTHRU
|
|
CASE PR_SCENE_T_CR_CHATEAU_d FALLTHRU
|
|
|
|
CASE PR_SCENE_T_CN_WAKETRASH_b FALLTHRU
|
|
CASE PR_SCENE_T_CR_WAKEBEACH FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKEBARN FALLTHRU
|
|
CASE PR_SCENE_T_CN_WAKETRAIN FALLTHRU
|
|
// CASE PR_SCENE_T_CN_WAKEMOUNTAIN FALLTHRU //1463185
|
|
CASE PR_SCENE_T_CR_WAKEROOFTOP
|
|
|
|
IF g_bMagDemoActive
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
paramStrength = 0.5 //0.05
|
|
amplitudeScalar = 0.5 //0.05
|
|
|
|
IF (eScene = PR_SCENE_T_NAKED_BRIDGE)
|
|
OR (eScene = PR_SCENE_T_NAKED_GARDEN)
|
|
OR (eScene = PR_SCENE_T_NAKED_ISLAND)
|
|
OR (eScene = PR_SCENE_T_CR_ALLEYDRUNK)
|
|
bCountsForPubClubVisit = FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE PR_SCENE_T_SMOKEMETH FALLTHRU
|
|
CASE PR_SCENE_Ta_RC_MRSP2
|
|
paramStrength = 0.1
|
|
amplitudeScalar = 0.1
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL CONTROL_PLAYER_HAVING_A_LIE_IN(PED_REQUEST_SCENE_ENUM eScene)
|
|
|
|
eScene = eScene
|
|
// SWITCH eScene
|
|
// CASE PR_SCENE_M2_BEDROOM FALLTHRU
|
|
// CASE PR_SCENE_M2_SAVEHOUSE0_b FALLTHRU
|
|
// CASE PR_SCENE_M2_SAVEHOUSE1_a FALLTHRU
|
|
// CASE PR_SCENE_M4_WAKEUPSCREAM FALLTHRU
|
|
// CASE PR_SCENE_M4_WAKESUPSCARED FALLTHRU
|
|
// CASE PR_SCENE_M4_HOUSEBED_b FALLTHRU
|
|
// CASE PR_SCENE_M6_HOUSEBED FALLTHRU
|
|
// CASE PR_SCENE_M_POOLSIDE_a FALLTHRU
|
|
// CASE PR_SCENE_M_POOLSIDE_b FALLTHRU
|
|
// CASE PR_SCENE_M_PARKEDHILLS_a FALLTHRU
|
|
// CASE PR_SCENE_M_PARKEDHILLS_b FALLTHRU
|
|
// CASE PR_SCENE_M6_PARKEDHILLS_a FALLTHRU
|
|
// CASE PR_SCENE_M6_PARKEDHILLS_b FALLTHRU
|
|
// CASE PR_SCENE_M6_PARKEDHILLS_c FALLTHRU
|
|
// CASE PR_SCENE_M6_PARKEDHILLS_d FALLTHRU
|
|
// CASE PR_SCENE_M6_PARKEDHILLS_e FALLTHRU
|
|
// CASE PR_SCENE_M2_CARSLEEP_a FALLTHRU
|
|
// CASE PR_SCENE_M2_CARSLEEP_b FALLTHRU
|
|
// CASE PR_SCENE_M6_CARSLEEP FALLTHRU
|
|
|
|
// CASE PR_SCENE_F0_SH_ASLEEP FALLTHRU
|
|
// CASE PR_SCENE_F1_SH_ASLEEP FALLTHRU
|
|
// CASE PR_SCENE_F1_POOLSIDE_a FALLTHRU
|
|
// CASE PR_SCENE_F1_POOLSIDE_b FALLTHRU
|
|
|
|
// CASE PR_SCENE_T_SMOKEMETH FALLTHRU
|
|
// CASE PR_SCENE_T_CR_DUMPSTER FALLTHRU
|
|
// CASE PR_SCENE_T_FLOYDSAVEHOUSE FALLTHRU
|
|
// CASE PR_SCENE_T_FLOYDSPOON_A FALLTHRU
|
|
// CASE PR_SCENE_T_FLOYDSPOON_B FALLTHRU
|
|
// CASE PR_SCENE_T_FLOYDSPOON_C FALLTHRU
|
|
// CASE PR_SCENE_T_FLOYDSPOON_D FALLTHRU
|
|
// CASE PR_SCENE_T_CN_WAKETRASH_b FALLTHRU
|
|
// CASE PR_SCENE_T_CR_WAKEBEACH FALLTHRU
|
|
// CASE PR_SCENE_T_CN_WAKEBARN FALLTHRU
|
|
// CASE PR_SCENE_T_CN_WAKETRAIN FALLTHRU
|
|
// CASE PR_SCENE_T_CR_WAKEROOFTOP FALLTHRU
|
|
// CASE PR_SCENE_T_CN_WAKEMOUNTAIN
|
|
//
|
|
// #IF IS_DEBUG_BUILD
|
|
// TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
// IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
// TEXT_LABEL_63 tScene, tAssert
|
|
// tScene = Get_String_From_Ped_Request_Scene_Enum(eScene)
|
|
// tAssert = GET_STRING_FROM_STRING(tScene,
|
|
// GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
// GET_LENGTH_OF_LITERAL_STRING(tScene))
|
|
// tAssert += " uses synch scene cam, cannot use lie in"
|
|
// CASSERTLN(DEBUG_SWITCH, tAssert)
|
|
//
|
|
// RETURN FALSE
|
|
// ENDIF
|
|
// #ENDIF
|
|
//
|
|
// RETURN TRUE
|
|
// BREAK
|
|
//
|
|
// ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Michael's House SE_MICHAELS_HOUSE_RADIO -806.3952 177.7196 72.6604
|
|
/// Franklin's Auntie House SE_FRANKLIN_AUNT_HOUSE_RADIO_01 -17.4724 -1441.13 31.8273
|
|
/// Franklin Hills Safehouse SE_FRANKLIN_HILLS_HOUSE_RADIO_01 3.5171 527.6619 175.6338
|
|
/// Trevor Trailer SE_TREVOR_TRAILER_RADIO_01 1976.3448 3820.95 33.5331
|
|
/// Trevor's Apartment TREVOR_APARTMENT_RADIO -1156.3032 -1522.38 11.9615
|
|
FUNC BOOL SET_SCENE_RADIO_EMITTER_ENABLED(PED_REQUEST_SCENE_ENUM eScene, TEXT_LABEL_63 &EmitterName, FLOAT &fTurnOffRadioPhase)
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_F0_SH_ASLEEP
|
|
CASE PR_SCENE_F0_TANISHAFIGHT
|
|
IF SET_SCENE_RADIO_EMITTER_ENABLED(PR_SCENE_F1_SH_ASLEEP, EmitterName, fTurnOffRadioPhase)
|
|
EmitterName = "SE_FRANKLIN_AUNT_HOUSE_RADIO_01"
|
|
RETURN TRUE BREAK
|
|
ENDIF
|
|
BREAK
|
|
CASE PR_SCENE_F1_SH_ASLEEP
|
|
EmitterName = "SE_FRANKLIN_HILLS_HOUSE_RADIO_01"
|
|
fTurnOffRadioPhase = 0.0
|
|
RETURN TRUE BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
EmitterName = ""
|
|
fTurnOffRadioPhase = -1
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL CONTROL_PLAYER_IS_ON_THE_PHONE(PED_REQUEST_SCENE_ENUM eScene)
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_M_BENCHCALL_a FALLTHRU
|
|
CASE PR_SCENE_M_BENCHCALL_b FALLTHRU
|
|
CASE PR_SCENE_M6_ONPHONE FALLTHRU
|
|
CASE PR_SCENE_M6_DEPRESSED
|
|
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL CONTROL_PLAYER_PROCEDURAL_CONV_INSTANT(PED_REQUEST_SCENE_ENUM eScene)
|
|
|
|
SWITCH eScene
|
|
CASE PR_SCENE_M2_DROPOFFDAU_a FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFDAU_b FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFSON_a FALLTHRU
|
|
CASE PR_SCENE_M2_DROPOFFSON_b FALLTHRU
|
|
|
|
CASE PR_SCENE_M_BENCHCALL_a FALLTHRU
|
|
CASE PR_SCENE_M_BENCHCALL_b FALLTHRU
|
|
CASE PR_SCENE_M6_ONPHONE FALLTHRU
|
|
CASE PR_SCENE_M6_DEPRESSED
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC PRIVATE_SetDefaultPlayerPedAttributes(SELECTOR_PED_STRUCT &selectorPeds)
|
|
|
|
IF NOT IS_PED_INJURED(selectorPeds.pedID[selectorPeds.ePreviousSelectorPed])
|
|
SET_PED_CAN_BE_TARGETTED(selectorPeds.pedID[selectorPeds.ePreviousSelectorPed], FALSE)
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(selectorPeds.pedID[selectorPeds.ePreviousSelectorPed], RELGROUPHASH_PLAYER)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
FUNC BOOL FORCE_ROOM_FOR_SCENE_SELECTOR_PED(PED_SCENE_STRUCT &sPedScene)
|
|
|
|
IF sPedScene.roomInterior <> NULL
|
|
STRING RoomKeyHash
|
|
|
|
SWITCH sPedScene.eScene
|
|
// CASE PR_SCENE_F1_SH_ASLEEP RoomKeyHash = "BedRoom" BREAK // #593993
|
|
CASE PR_SCENE_F1_ONCELL FALLTHRU
|
|
|
|
DEFAULT
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "FORCE_ROOM_FOR_SCENE_SELECTOR_PED(", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), ") - no defined RoomKeyHash")
|
|
#ENDIF
|
|
|
|
RoomKeyHash = ""
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
FORCE_ROOM_FOR_ENTITY(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed],
|
|
sPedScene.roomInterior,
|
|
GET_HASH_KEY(RoomKeyHash))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "FORCE_ROOM_FOR_SCENE_SELECTOR_PED(", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), ") - defined RoomKeyHash: \"", RoomKeyHash, "\"")
|
|
#ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "FORCE_ROOM_FOR_SCENE_SELECTOR_PED(", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), ") - roomInterior is null??")
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
PROC GetSplineCamFromPlayerToPedParams(PED_SCENE_STRUCT &sPedScene, BOOL &bCreateReplacementForPlayer, BOOL &bKeepTasks, SWITCH_TYPE &eSwitchType,
|
|
FLOAT &gameplayCamPitch, FLOAT &gameplayCamHeading, BOOL &bPauseBeforePan, BOOL &bPauseBeforeOutro, INT &iSwitchFlags)
|
|
|
|
bCreateReplacementForPlayer = TRUE
|
|
bKeepTasks = FALSE
|
|
eSwitchType = SWITCH_TYPE_AUTO
|
|
|
|
IF (sPedScene.sSelectorPeds.ePreviousSelectorPed < SELECTOR_PED_MULTIPLAYER)
|
|
AND (sPedScene.sSelectorPeds.eCurrentSelectorPed < SELECTOR_PED_MULTIPLAYER)
|
|
|
|
IF (sPedScene.sSelectorPeds.ePreviousSelectorPed <> sPedScene.sSelectorPeds.eCurrentSelectorPed)
|
|
enumCharacterList ePreviousChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.sSelectorPeds.ePreviousSelectorPed)
|
|
enumCharacterList eCurrentChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.sSelectorPeds.eCurrentSelectorPed)
|
|
|
|
#if USE_CLF_DLC
|
|
VECTOR vPreviousChar = g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[ePreviousChar]
|
|
VECTOR vCurrentChar = g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[eCurrentChar]
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
VECTOR vPreviousChar = g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[ePreviousChar]
|
|
VECTOR vCurrentChar = g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[eCurrentChar]
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
VECTOR vPreviousChar = g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePreviousChar]
|
|
VECTOR vCurrentChar = g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[eCurrentChar]
|
|
#endif
|
|
#endif
|
|
|
|
IF (VDIST2(vPreviousChar, vCurrentChar) < (150.0*150.0))
|
|
// bCreateReplacementForPlayer = TRUE
|
|
bKeepTasks = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Fix for bug #329674 - Copy of MP character left in singleplayer.
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = NO_CHARACTER
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
//Fix for bug #688176 - Copy of old player char left after debug menu switch
|
|
IF g_bWarpDebugPlayerCharScene
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
//No need to create replacement copy for long-rane ambient switches during the magdemo
|
|
IF g_bMagDemoActive
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
|
|
//delete if descent only (switching to the same ped!)
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
|
|
IF NOT IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_DESCENT)
|
|
SET_BITMASK_AS_ENUM(iSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_DESCENT)
|
|
ENDIF
|
|
|
|
eSwitchType = SWITCH_TYPE_MEDIUM
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_S_FAMILY4) //1436271
|
|
OR (sPedScene.eScene = PR_SCENE_F_S_AGENCY_2A_a) //1033625
|
|
OR (sPedScene.eScene = PR_SCENE_F_S_AGENCY_2A_b) //1033625
|
|
OR (sPedScene.eScene = PR_SCENE_F_S_EXILE2) //1271904
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO) //1373010
|
|
eSwitchType = SWITCH_TYPE_LONG
|
|
ENDIF
|
|
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
|
|
IF g_bSPInitialisedThroughSwitch
|
|
bCreateReplacementForPlayer = FALSE
|
|
ENDIF
|
|
|
|
IF NOT ((sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
//#1249706
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_bWarpDebugPlayerCharScene
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO)
|
|
eSwitchType = SWITCH_TYPE_LONG
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO) //#1544164 & 1589279
|
|
eSwitchType = SWITCH_TYPE_LONG
|
|
ENDIF
|
|
ELSE
|
|
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO)
|
|
PED_INDEX pedFrom = sPedScene.sSelectorCam.pedFrom
|
|
IF NOT DOES_ENTITY_EXIST(pedFrom)
|
|
pedFrom = PLAYER_PED_ID()
|
|
ENDIF
|
|
|
|
IF GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) = SWITCH_TYPE_SHORT
|
|
|
|
//#1587763
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO)
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorCam.pedTo)
|
|
IF NOT HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorCam.pedTo)
|
|
eSwitchType = SWITCH_TYPE_MEDIUM
|
|
CASSERTLN(DEBUG_SWITCH, "#1587763 - force medium range switch for peds waiting on preload")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//#1587145
|
|
IF (eSwitchType = SWITCH_TYPE_AUTO)
|
|
INT interiorGroupID1 = 0, interiorGroupID2 = 0
|
|
INTERIOR_INSTANCE_INDEX interiorID1 = GET_INTERIOR_FROM_ENTITY(pedFrom)
|
|
IF IS_VALID_INTERIOR(interiorID1)
|
|
interiorGroupID1 = GET_INTERIOR_GROUP_ID(interiorID1)
|
|
ENDIF
|
|
IF IS_VALID_INTERIOR(sPedScene.roomInterior)
|
|
interiorGroupID2 = GET_INTERIOR_GROUP_ID(sPedScene.roomInterior)
|
|
ENDIF
|
|
|
|
IF (interiorGroupID1 <> interiorGroupID2)
|
|
eSwitchType = SWITCH_TYPE_MEDIUM
|
|
ELSE
|
|
IF (interiorGroupID1 <> 0)
|
|
CPRINTLN(DEBUG_SWITCH, "interiorGroupID1 is non-null ", interiorGroupID1)
|
|
ENDIF
|
|
IF (interiorGroupID2 <> 0)
|
|
CPRINTLN(DEBUG_SWITCH, "interiorGroupID2 is non-null ", interiorGroupID2)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
FLOAT gameplayCamSmoothRate
|
|
IF NOT SETUP_RELATIVE_GAMEPLAY_CAM_PITCH_SCENE(sPedScene.eScene,
|
|
gameplayCamPitch, gameplayCamSmoothRate, gameplayCamHeading)
|
|
ENDIF
|
|
|
|
bPauseBeforePan = FALSE
|
|
|
|
bPauseBeforeOutro = FALSE
|
|
IF g_iPauseOnOutro > 0
|
|
bPauseBeforeOutro = TRUE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
USING "player_scene_assets.sch"
|
|
USING "player_scene_anim.sch"
|
|
|
|
PROC SAFE_STORE_PLAYER_PED_INFOCLF(PED_INDEX pedIndex, BOOL bOnlyOnPavement)
|
|
STORE_PLAYER_PED_INFO(pedIndex)
|
|
STORE_PLAYER_PED_VARIATIONS(pedIndex)
|
|
|
|
// Grab the ped enum
|
|
enumCharacterList ePed = GET_PLAYER_PED_ENUMCLF(pedIndex)
|
|
IF IS_PLAYER_PED_PLAYABLE(ePed)
|
|
AND NOT IS_PED_INJURED(pedIndex)
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(pedIndex)
|
|
VECTOR vSafePedCoord
|
|
IF GET_SAFE_COORD_FOR_PED(g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[ePed], bOnlyOnPavement, vSafePedCoord, GSC_FLAG_ONLY_NETWORK_SPAWN)
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[ePed] = vSafePedCoord
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
PROC SAFE_STORE_PLAYER_PED_INFONRM(PED_INDEX pedIndex, BOOL bOnlyOnPavement)
|
|
STORE_PLAYER_PED_INFO(pedIndex)
|
|
STORE_PLAYER_PED_VARIATIONS(pedIndex)
|
|
|
|
// Grab the ped enum
|
|
enumCharacterList ePed = GET_PLAYER_PED_ENUMNRM(pedIndex)
|
|
IF IS_PLAYER_PED_PLAYABLE(ePed)
|
|
AND NOT IS_PED_INJURED(pedIndex)
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(pedIndex)
|
|
VECTOR vSafePedCoord
|
|
IF GET_SAFE_COORD_FOR_PED(g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[ePed], bOnlyOnPavement, vSafePedCoord, GSC_FLAG_ONLY_NETWORK_SPAWN)
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[ePed] = vSafePedCoord
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
PROC SAFE_STORE_PLAYER_PED_INFO(PED_INDEX pedIndex, BOOL bOnlyOnPavement)
|
|
#if USE_CLF_DLC
|
|
if g_bLoadedClifford
|
|
SAFE_STORE_PLAYER_PED_INFOCLF(pedIndex,bOnlyOnPavement)
|
|
exit
|
|
endif
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
if g_bLoadedNorman
|
|
SAFE_STORE_PLAYER_PED_INFONRM(pedIndex,bOnlyOnPavement)
|
|
exit
|
|
endif
|
|
#endif
|
|
|
|
STORE_PLAYER_PED_INFO(pedIndex)
|
|
STORE_PLAYER_PED_VARIATIONS(pedIndex)
|
|
|
|
// Grab the ped enum
|
|
enumCharacterList ePed = GET_PLAYER_PED_ENUM(pedIndex)
|
|
IF IS_PLAYER_PED_PLAYABLE(ePed)
|
|
AND NOT IS_PED_INJURED(pedIndex)
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(pedIndex)
|
|
VECTOR vSafePedCoord
|
|
IF GET_SAFE_COORD_FOR_PED(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed], bOnlyOnPavement, vSafePedCoord, GSC_FLAG_ONLY_NETWORK_SPAWN)
|
|
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed] = vSafePedCoord
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
ENUM enumBlockedPedCoordZone
|
|
BPCZ_0_DJBooth,
|
|
BPCZ_1_Bar,
|
|
BPCZ_2_impound,
|
|
BPCZ_3_mineshaft,
|
|
BPCZ_4_hospital,
|
|
BPCZ_5_janitor,
|
|
BPCZ_6_arena_a,
|
|
BPCZ_7_arena_b,
|
|
BPCZ_8_omegagarage,
|
|
|
|
BPCZ_NULL = -1
|
|
ENDENUM
|
|
|
|
FUNC BOOL Is_Ped_Last_Known_Coords_In_Blocked_Zone(VECTOR vLastKnownCoords, VECTOR &vCreateCoords, FLOAT &fCreateHead, enumBlockedPedCoordZone &eZone)
|
|
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-254.8389, -2026.9094, 29.0359>>, <<-394.2681, -1909.8342, 48.9460>>, 122.5000)
|
|
VECTOR vTestDefaultPedToCoors1 = <<-254.8389, -2026.9094, 29.0359>>
|
|
VECTOR vTestDefaultPedToCoors2 = <<-394.2681, -1909.8342, 48.9460>>
|
|
FLOAT fTestDefaultPedToDistance = 122.5000
|
|
|
|
VECTOR vBuyMidPos = ((vTestDefaultPedToCoors1*1.0)+(vTestDefaultPedToCoors2*1.0))/2.0
|
|
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(),
|
|
vTestDefaultPedToCoors1,
|
|
<<vBuyMidPos.x, vBuyMidPos.y, vTestDefaultPedToCoors2.z>>,
|
|
fTestDefaultPedToDistance)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //arena - A")
|
|
vCreateCoords = <<-231.1906, -1995.7928, 28.9460>>
|
|
fCreateHead = 256.7039
|
|
eZone = BPCZ_6_arena_a
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(),
|
|
<<vBuyMidPos.x, vBuyMidPos.y, vTestDefaultPedToCoors1.z>>,
|
|
vTestDefaultPedToCoors2,
|
|
fTestDefaultPedToDistance)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //arena - B")
|
|
vCreateCoords = <<-342.9800, -1879.6520, 28.9463>>
|
|
fCreateHead = 353.8719
|
|
eZone = BPCZ_7_arena_b
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //arena - ourside?")
|
|
vCreateCoords = <<-342.9800, -1879.6520, 28.9463>>
|
|
fCreateHead = 353.8719
|
|
eZone = BPCZ_6_arena_a
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
INT iPlayerHashKey = GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID())
|
|
SWITCH iPlayerHashKey
|
|
CASE HASH("strp3mainrm") //stripclub
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<127.180801,-1277.321533,28.330606>>, <<120.222549,-1281.544556,31.230530>>, 4.000000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"strp3mainrm\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //DJ Booth")
|
|
|
|
vCreateCoords = <<118.3254, -1284.7686, 27.2739>>
|
|
fCreateHead = 16.7668
|
|
eZone = BPCZ_0_DJBooth
|
|
RETURN TRUE
|
|
ElIF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<132.836960,-1287.936401,28.269539>>, <<127.832428,-1279.579102,31.019539>>, 4.000000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"strp3mainrm\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //Bar")
|
|
|
|
vCreateCoords = <<127.1327, -1283.6587, 28.2788>>
|
|
fCreateHead = 255.9372
|
|
eZone = BPCZ_1_Bar
|
|
RETURN TRUE
|
|
ELSE
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"strp3mainrm\"): vLastKnownCoords ", vLastKnownCoords, " not inside any zone...")
|
|
ENDIF
|
|
BREAK
|
|
// mine shaft
|
|
CASE HASH("GtaMloRoom001")
|
|
CASE HASH("GtaMloRoom002")
|
|
CASE HASH("GtaMloRoom003")
|
|
CASE HASH("GtaMloRoom004")
|
|
CASE HASH("GtaMloRoom005")
|
|
CASE HASH("GtaMloRoom006")
|
|
CASE HASH("GtaMloRoom007")
|
|
CASE HASH("GtaMloRoom008")
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-415.436462, 2068.288574, 113.300171>>, <<-564.951599, 1884.702515, 134.040344>>, 258.750000)
|
|
OR IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-596.470581, 2089.920898, 125.412750>>, <<-581.213440, 2036.256104, 136.283630>>, 9.500000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //mine shaft")
|
|
|
|
vCreateCoords = <<-598.9213, 2096.5286, 129.8140>>
|
|
fCreateHead = 25.7278
|
|
eZone = BPCZ_3_mineshaft
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
CASE 262728566
|
|
CASE HASH("JanitorRoom")
|
|
CASE HASH("v_janitor")
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-112.713043,-14.207236,69.519592>>, <<-109.529243,-5.697598,72.421684>>, 6.000000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"v_janitor\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //janitor")
|
|
|
|
vCreateCoords = <<-105.0006, -8.0130, 69.5234>>
|
|
fCreateHead = 247.4701
|
|
eZone = BPCZ_5_janitor
|
|
RETURN TRUE
|
|
ELSE
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"v_janitor\"): vLastKnownCoords ", vLastKnownCoords, " not inside any zone...")
|
|
ENDIF
|
|
BREAK
|
|
CASE -696774531
|
|
CASE HASH("v_hospital")
|
|
CASE HASH("V_40_Room1")
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<357.031708,-590.516602,27.898069>>, <<300.431946,-569.354431,51.659721>>, 28.500000)
|
|
OR IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<299.740100,-584.831900,27.898069>>, <<328.305800,-595.862100,51.659721>>, 28.500000)
|
|
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"v_hospital\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //hospital")
|
|
|
|
vCreateCoords = <<360.4663, -585.1340, 27.8231>>
|
|
fCreateHead = 254.2763
|
|
eZone = BPCZ_4_hospital
|
|
RETURN TRUE
|
|
ELSE
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"v_hospital\"): vLastKnownCoords ", vLastKnownCoords, " not inside any zone...")
|
|
ENDIF
|
|
BREAK
|
|
CASE 0
|
|
CASE HASH("") //non-interior
|
|
IF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<428.292847,-996.683411,24.488642>>, <<439.543823,-996.711365,28.103334>>, 8.687500)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //impound")
|
|
|
|
vCreateCoords = <<433.8454, -1011.9464, 27.7057>>
|
|
fCreateHead = 196.3176
|
|
eZone = BPCZ_2_impound
|
|
RETURN TRUE
|
|
ELIF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<2331.647461,2575.777100,45.667671>>, <<2326.452148,2564.805908,49.703575>>, 5.000000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //omega garage")
|
|
|
|
vCreateCoords = <<2332.6953, 2577.6816, 45.6677>>
|
|
fCreateHead = 321.4395
|
|
eZone = BPCZ_8_omegagarage
|
|
RETURN TRUE
|
|
// mine shaft in case the interior hasn't loaded in
|
|
ELIF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-415.436462, 2068.288574, 113.300171>>, <<-564.951599, 1884.702515, 134.040344>>, 258.750000)
|
|
OR IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-596.470581, 2089.920898, 125.412750>>, <<-581.213440, 2036.256104, 136.283630>>, 9.500000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //mine shaft")
|
|
|
|
vCreateCoords = <<-598.9213, 2096.5286, 129.8140>>
|
|
fCreateHead = 25.7278
|
|
eZone = BPCZ_3_mineshaft
|
|
RETURN TRUE
|
|
ELIF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<357.031708,-590.516602,27.898069>>, <<300.431946,-569.354431,51.659721>>, 28.500000)
|
|
OR IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<299.740100,-584.831900,27.898069>>, <<328.305800,-595.862100,51.659721>>, 28.500000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //hospital")
|
|
|
|
vCreateCoords = <<360.4663, -585.1340, 27.8231>>
|
|
fCreateHead = 254.2763
|
|
eZone = BPCZ_4_hospital
|
|
RETURN TRUE
|
|
ELIF IS_POINT_IN_ANGLED_AREA(vLastKnownCoords, <<-112.713043,-14.207236,69.519592>>, <<-109.529243,-5.697598,72.421684>>, 6.000000)
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " inside blocked zone //janitor")
|
|
|
|
vCreateCoords = <<-105.0006, -8.0130, 69.5234>>
|
|
fCreateHead = 247.4701
|
|
eZone = BPCZ_5_janitor
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"\"): vLastKnownCoords ", vLastKnownCoords, " not inside any zone...")
|
|
eZone = BPCZ_NULL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
DEFAULT
|
|
PRINTLN("Is_Ped_Last_Known_Coords_In_Blocked_Zone(\"", DEBUG_get_string_room_hash_key(iPlayerHashKey), "\"): vLastKnownCoords ", vLastKnownCoords, " not inside a specified zone...")
|
|
eZone = BPCZ_NULL
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
eZone = BPCZ_NULL
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_Should_Default_PedTo_Coord_Move(PED_SCENE_STRUCT &sPedScene, VECTOR &vCreateCoords, FLOAT &fCreateHead)
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
|
|
enumCharacterList eSelectorChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.eSelectorPed)
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
//
|
|
ELSE
|
|
#if USE_CLF_DLC
|
|
VECTOR vLastKnownCoords = g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[eSelectorChar]
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobalsClifford.sPlayerData.sInfo.sLastTimeActive[eSelectorChar]
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
VECTOR vLastKnownCoords = g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[eSelectorChar]
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobalsnorman.sPlayerData.sInfo.sLastTimeActive[eSelectorChar]
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
VECTOR vLastKnownCoords = g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[eSelectorChar]
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[eSelectorChar]
|
|
#endif
|
|
#endif
|
|
|
|
VECTOR vTestCreateCoords
|
|
FLOAT fTestCreateHead
|
|
enumBlockedPedCoordZone eTestCreateZone
|
|
IF Is_Ped_Last_Known_Coords_In_Blocked_Zone(vLastKnownCoords, vTestCreateCoords, fTestCreateHead, eTestCreateZone)
|
|
#IF NOT IS_NEXTGEN_BUILD
|
|
PRINTLN("PRIVATE_Should_Default_PedTo_Coord_Move: vLastKnownCoords ", vLastKnownCoords, " inside invalid zone \"", eTestCreateZone, "\", move to ", vTestCreateCoords, ", dist: ", VDIST(vCreateCoords, vTestCreateCoords), "m")
|
|
#ENDIF
|
|
#IF IS_NEXTGEN_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "PRIVATE_Should_Default_PedTo_Coord_Move: vLastKnownCoords ", vLastKnownCoords, " inside invalid \"", eTestCreateZone, "\", move to ", vTestCreateCoords, ", dist: ", VDIST(vCreateCoords, vTestCreateCoords), "m")
|
|
#ENDIF
|
|
vCreateCoords = vTestCreateCoords
|
|
fCreateHead = fTestCreateHead
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
|
|
|
|
FLOAT fCreateDistMultiplier
|
|
SWITCH PRIVATE_GetRoamingLastKnownSwitchStage(eSelectorChar, sLastTimeActive, fCreateDistMultiplier)
|
|
CASE 0
|
|
//
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 0.1 - as was (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 0.1 - as was (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN FALSE
|
|
BREAK
|
|
CASE 1
|
|
IF g_ePlayerLastVehState[eSelectorChar] = PTVS_0_noVehicle
|
|
OR g_ePlayerLastVehState[eSelectorChar] = PTVS_1_playerWithVehicle
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_a, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_a
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fWalkHead_a
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 0.33 - walk A (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 0.33 - walk A (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_a, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_a
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fVehicleHead_a
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 0.33 - vehicle A (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 0.33 - vehicle A (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
IF g_ePlayerLastVehState[eSelectorChar] = PTVS_0_noVehicle
|
|
OR g_ePlayerLastVehState[eSelectorChar] = PTVS_1_playerWithVehicle
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_b, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_b
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fWalkHead_b
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 0.66 - walk B (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 0.66 - walk B (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_b, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_b
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fVehicleHead_b
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 0.66 - vehicle B (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 0.66 - vehicle B (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE 3
|
|
IF g_ePlayerLastVehState[eSelectorChar] = PTVS_0_noVehicle
|
|
OR g_ePlayerLastVehState[eSelectorChar] = PTVS_1_playerWithVehicle
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_c, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vWalkCoord_c
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fWalkHead_c
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 1.0 - walk C (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 1.0 - walk C (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_c, <<0,0,0>>, 1.5)
|
|
vCreateCoords = g_sDefaultPlayerSwitchState[eSelectorChar].vVehicleCoord_c
|
|
fCreateHead = g_sDefaultPlayerSwitchState[eSelectorChar].fVehicleHead_c
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("fCreateDistMultiplier < 1.0 - vehicle C (phase:")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateDistMultiplier)
|
|
SAVE_STRING_TO_DEBUG_FILE(")")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "fCreateDistMultiplier < 1.0 - vehicle C (phase:", fCreateDistMultiplier, ")")
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
DEFAULT
|
|
CASSERTLN(DEBUG_SWITCH, "unknown PRIVATE_GetRoamingLastKnownSwitchStage")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "fallen through PRIVATE_Should_Default_PedTo_Coord_Move(phase:", fCreateDistMultiplier, ", PTVS_", ENUM_TO_INT(g_ePlayerLastVehState[eSelectorChar]), "_something)???")
|
|
RETURN FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_Should_PedTo_Be_Created(PED_SCENE_STRUCT &sPedScene, BOOL InHereAsNoCHARACTER = FALSE)
|
|
|
|
enumCharacterList eSelectorChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.eSelectorPed)
|
|
|
|
|
|
|
|
|
|
IF IS_PED_INJURED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
CPRINTLN(DEBUG_SWITCH, "Should_PedTo_Be_Created [SELECTOR_", GET_PLAYER_PED_STRING(eSelectorChar), "] ", "- exists")
|
|
ELSE
|
|
MODEL_NAMES model = GET_PLAYER_PED_MODEL(sPedScene.ePed)
|
|
IF HAS_MODEL_LOADED(model)
|
|
CPRINTLN(DEBUG_SWITCH, "Should_PedTo_Be_Created [SELECTOR_", GET_PLAYER_PED_STRING(eSelectorChar), "] ", "- doesnt exist [", sPedScene.vCreateCoords, "] model \"", GET_MODEL_NAME_FOR_DEBUG(model), "\" loaded")
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "Should_PedTo_Be_Created [SELECTOR_", GET_PLAYER_PED_STRING(eSelectorChar), "] ", "- doesnt exist [", sPedScene.vCreateCoords, "] model \"", GET_MODEL_NAME_FOR_DEBUG(model), "\" NOT loaded!!!")
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
//
|
|
ELSE
|
|
|
|
#if USE_CLF_DLC
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobalsClifford.sPlayerData.sInfo.sLastTimeActive[sPedScene.eSelectorPed]
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobalsnorman.sPlayerData.sInfo.sLastTimeActive[sPedScene.eSelectorPed]
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[sPedScene.eSelectorPed]
|
|
#endif
|
|
#endif
|
|
|
|
IF NOT IS_SPHERE_VISIBLE(sPedScene.vCreateCoords, 3.0)
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "vCreateCoords [", sPedScene.vCreateCoords)
|
|
|
|
|
|
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
|
|
INT iSeconds, iMinutes, iHours, iDays, iMonths, iYears
|
|
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(sLastTimeActive, iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
|
|
|
|
FLOAT fCreateDistMultiplier = -1
|
|
|
|
IF HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, g_iCONST_GAME_HOURS_FOR_DEFAULT_SWITCH)
|
|
CPRINTLN(DEBUG_SWITCH, " HasNumOfHoursPassedSincePedTimeStruct (", iHours, "hr ", iMinutes, "min ", iSeconds, "sec ", iDays, "/", iMonths, "/", iYears, ")")
|
|
|
|
fCreateDistMultiplier = 1.0
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, " NOT HasNumOfHoursPassedSincePedTimeStruct (", iHours, "hr ", iMinutes, "min ", iSeconds, "sec ", iDays, "/", iMonths, "/", iYears, ")")
|
|
|
|
fCreateDistMultiplier = TO_FLOAT(iSeconds+(iMinutes*60)+(iHours*60*60)) / 3600.0
|
|
|
|
IF (fCreateDistMultiplier < 0.0) fCreateDistMultiplier = 0.0 ENDIF
|
|
IF (fCreateDistMultiplier > 1.0) fCreateDistMultiplier = 1.0 ENDIF
|
|
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_SWITCH, " fMult: ", fCreateDistMultiplier)
|
|
|
|
CONST_FLOAT fMinDist 10.0
|
|
CONST_FLOAT fMaxDist 100.0
|
|
|
|
FLOAT fCreateDistRadius =((fMaxDist-fMinDist)*fCreateDistMultiplier)+fMinDist
|
|
|
|
CPRINTLN(DEBUG_SWITCH, " fRadius: ", fCreateDistRadius)
|
|
|
|
INT iSafeCoordCount = 0
|
|
WHILE iSafeCoordCount < 5
|
|
|
|
DRAW_DEBUG_SPHERE(sPedScene.vCreateCoords, fCreateDistRadius, 255, 0, 0, 064)
|
|
|
|
VECTOR vRandomCreateCoords = GET_RANDOM_POINT_IN_DISC(sPedScene.vCreateCoords, fCreateDistRadius, 0)
|
|
VECTOR vSafeCreateCoords = vRandomCreateCoords
|
|
|
|
IF GET_SAFE_COORD_FOR_PED(vRandomCreateCoords, FALSE, vSafeCreateCoords, GSC_FLAG_ONLY_NETWORK_SPAWN)
|
|
|
|
IF NOT IS_SPHERE_VISIBLE(vSafeCreateCoords, 3.0)
|
|
FLOAT fSafeCreateCoord_groundZ = 0.0
|
|
IF GET_GROUND_Z_FOR_3D_COORD(vSafeCreateCoords, fSafeCreateCoord_groundZ)
|
|
DRAW_DEBUG_SPHERE(vSafeCreateCoords, 0.5, 255, 0, 255, 255)
|
|
|
|
vSafeCreateCoords.z = fSafeCreateCoord_groundZ
|
|
|
|
VECTOR vCreateCoordDiff = sPedScene.vCreateCoords - vSafeCreateCoords
|
|
sPedScene.vCreateCoords = vSafeCreateCoords
|
|
sPedScene.fCreateHead = GET_HEADING_FROM_VECTOR_2D(vCreateCoordDiff.x, vCreateCoordDiff.y)
|
|
|
|
|
|
|
|
iSafeCoordCount = 99
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "vCreateCoords = vSafeCreateCoords??")
|
|
ENDIF
|
|
ELSE
|
|
DRAW_DEBUG_SPHERE(vSafeCreateCoords, 0.5, 255, 0, 255, 255)
|
|
ENDIF
|
|
|
|
ELSE
|
|
DRAW_DEBUG_SPHERE(vRandomCreateCoords, 0.5, 0, 255, 255, 255)
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "iSafeCoordCount: ", iSafeCoordCount)
|
|
|
|
iSafeCoordCount++
|
|
ENDWHILE
|
|
|
|
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, " NOT Is_TIMEOFDAY_Valid")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
CPRINTLN(DEBUG_SWITCH, "")
|
|
|
|
ENDIF
|
|
|
|
IF InHereAsNoCHARACTER = TRUE
|
|
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), sPedScene.vCreateCoords, FALSE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "[SCENEWARP] PRIVATE_Should_PedTo_Be_Created - InHereAsNoCHARACTER = TRUE Player is still the NO_CHARACTER ped. Moving the player to be close to the scene. ", sPedScene.vCreateCoords, " ")
|
|
#ENDIF
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "[SCENEWARP] PRIVATE_Should_PedTo_Be_Created - InHereAsNoCHARACTER = FALSE ", sPedScene.vCreateCoords, " ")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "NOT Should_PedTo_Be_Created [SELECTOR_", GET_PLAYER_PED_STRING(eSelectorChar), "]")
|
|
#ENDIF
|
|
|
|
STORE_VEH_DATA_FROM_PED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed],
|
|
g_sPlayerLastVeh[eSelectorChar],
|
|
g_vPlayerLastVehCoord[eSelectorChar],
|
|
g_fPlayerLastVehHead[eSelectorChar],
|
|
g_ePlayerLastVehState[eSelectorChar]
|
|
#IF USE_TU_CHANGES , g_ePlayerLastVehGen[eSelectorChar] #ENDIF )
|
|
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_Should_straightInterp_Be_Used(PED_SCENE_STRUCT &sPedScene)
|
|
|
|
VECTOR vPedPos = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)
|
|
VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
FLOAT fPedDist2D = GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vPedPos, FALSE)
|
|
FLOAT fPedDist3D = GET_DISTANCE_BETWEEN_COORDS(vPlayerPos, vPedPos, TRUE)
|
|
|
|
// // Determine what type of cam we will use
|
|
// IF eInterpType = SELECTOR_CAM_DEFAULT
|
|
IF fPedDist3D < 8.0
|
|
RETURN TRUE //sPedScene.sSelectorCam.camType = SELECTOR_CAM_STRAIGHT_INTERP
|
|
ELIF fPedDist2D < 30.0
|
|
RETURN FALSE //sPedScene.sSelectorCam.camType = SELECTOR_CAM_SHORT_SPLINE
|
|
ELSE
|
|
RETURN FALSE //sPedScene.sSelectorCam.camType = SELECTOR_CAM_LONG_SPLINE
|
|
ENDIF
|
|
// ELSE
|
|
// sPedScene.sSelectorCam.camType = eInterpType
|
|
// ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_SetPlayerPedWanted(PED_SCENE_STRUCT &sPedScene)
|
|
|
|
IF NOT IS_PLAYER_PLAYING(PLAYER_ID())
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
UPDATE_WANTED_POSITION_THIS_FRAME(PLAYER_ID())
|
|
|
|
SWITCH sPedScene.eScene
|
|
CASE PR_SCENE_M_DEFAULT
|
|
CASE PR_SCENE_F_DEFAULT
|
|
CASE PR_SCENE_T_DEFAULT
|
|
RESTORE_PLAYER_PED_WANTED(PLAYER_PED_ID())
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
CASE PR_SCENE_T_CR_POLICE_a
|
|
CASE PR_SCENE_T_CN_POLICE_b
|
|
CASE PR_SCENE_T_CN_POLICE_c
|
|
CONST_INT iSCENE_WANTED_LEVEL 2 //3
|
|
|
|
SET_PLAYER_WANTED_LEVEL_NO_DROP(PLAYER_ID(), iSCENE_WANTED_LEVEL)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "<player_ped_scenes> * set wanted level on players vehicle")
|
|
|
|
RETURN TRUE
|
|
BREAK
|
|
|
|
DEFAULT
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_PED_INJURED(PLAYER_PED_ID())
|
|
TEXT_LABEL_63 sDead
|
|
sDead = "PRIVATE_SetPlayerPedWanted: "
|
|
sDead += Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
sDead += " health: "
|
|
sDead += GET_ENTITY_HEALTH(PLAYER_PED_ID())
|
|
|
|
CASSERTLN(DEBUG_SWITCH, sDead)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
CLEAR_PLAYER_WANTED_LEVEL(PLAYER_ID())
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
VECTOR vTOD_cam_from = <<0,0,0>>, vTOD_cam_to = <<0,0,0>>
|
|
INT iTOD_cam_gametime = -1
|
|
FUNC BOOL PRIVATE_SetPhaseTimeForNewSwitchCam(PED_SCENE_STRUCT &sPedScene, FLOAT &fSwitchPhase)
|
|
|
|
VECTOR vPedFrom_coord = vTOD_cam_from
|
|
VECTOR vPedTo_coord = vTOD_cam_to
|
|
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorCam.pedFrom)
|
|
vTOD_cam_from = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom)
|
|
vPedFrom_coord = vTOD_cam_from
|
|
ENDIF
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorCam.pedTo)
|
|
vTOD_cam_to = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)
|
|
vPedTo_coord = vTOD_cam_to
|
|
ENDIF
|
|
|
|
VECTOR vRendering_coord = GET_FINAL_RENDERED_CAM_COORD() //GET_CAM_COORD(GET_RENDERING_CAM())
|
|
|
|
FLOAT fFromTo_dist = GET_DISTANCE_BETWEEN_COORDS(vPedFrom_coord, vPedTo_coord, FALSE)
|
|
FLOAT fFromRend_dist = GET_DISTANCE_BETWEEN_COORDS(vPedFrom_coord, vRendering_coord, FALSE)
|
|
|
|
fSwitchPhase = fFromRend_dist / fFromTo_dist
|
|
|
|
IF fSwitchPhase < 0
|
|
fSwitchPhase = 0
|
|
ENDIF
|
|
IF fSwitchPhase > 1
|
|
fSwitchPhase = 1
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
FUNC BOOL PRIVATE_SetPhaseTimeForMpSwitchCam(FLOAT &fSwitchPhase, FLOAT time = 5.0)
|
|
|
|
INT iGameTime = GET_GAME_TIMER()
|
|
IF iTOD_cam_gametime = -1
|
|
iTOD_cam_gametime = iGameTime
|
|
ENDIF
|
|
|
|
INT iGameTimeDiff = iGameTime - iTOD_cam_gametime
|
|
|
|
fSwitchPhase = TO_FLOAT(iGameTimeDiff) / (time*1000.0)
|
|
|
|
IF fSwitchPhase < 0
|
|
fSwitchPhase = 0
|
|
ENDIF
|
|
IF fSwitchPhase > 1
|
|
fSwitchPhase = 1
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_SetClockTimeForSwitchScene(PED_SCENE_STRUCT &sPedScene)
|
|
#if USE_CLF_DLC
|
|
UNUSED_PARAMETER(sPedScene)
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
UNUSED_PARAMETER(sPedScene)
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
|
|
PED_REQUEST_SCENE_ENUM eScene = sPedScene.eScene
|
|
sPedScene.sTimelapse.splineCamera = sPedScene.sSelectorCam.camID
|
|
|
|
FLOAT fForceCameraPhase
|
|
|
|
SWITCH eScene
|
|
#IF NOT IS_JAPANESE_BUILD
|
|
CASE PR_SCENE_T_SHIT
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(19, 0, "EXTRASUNNY", "Cirrus", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
#ENDIF
|
|
CASE PR_SCENE_F_MD_KUSH_DOC
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(9, 0, "Overcast", "RAIN", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE PR_SCENE_M_MD_FBI2
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(19, 45, "SMOG", "Wispy", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PR_SCENE_M4_EXITRESTAURANT
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(22, 0, "SMOG", "", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE PR_SCENE_T_NAKED_ISLAND
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(18, 0, "SMOG", "", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE PR_SCENE_F_MD_FRANKLIN2
|
|
IF g_bMagDemoActive
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(22, 0, "SMOG", "", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PR_SCENE_M_S_FAMILY4
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
INT iLapseStartHour, iLapseEndHour
|
|
GET_SP_MISSION_TOD_WINDOW_TIME(SP_MISSION_FAMILY_4, iLapseEndHour, iLapseStartHour)
|
|
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(iLapseStartHour, 0, "", "", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
BREAK
|
|
CASE PR_SCENE_F_S_EXILE2
|
|
IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
INT iLapseStartHour, iLapseEndHour
|
|
GET_SP_MISSION_TOD_WINDOW_TIME(SP_MISSION_EXILE_2, iLapseEndHour, iLapseStartHour)
|
|
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(iLapseStartHour, 0, "", "", sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
BREAK
|
|
// CASE PR_SCENE_F_S_AGENCY_2A
|
|
// IF PRIVATE_SetPhaseTimeForNewSwitchCam(sPedScene, fForceCameraPhase)
|
|
// RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(9, 0, "", "", sPedScene.sTimelapse.iTimelapseCut)
|
|
// ENDIF
|
|
// BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF IS_TIMEOFDAY_VALID(g_sMultiplayerTransitionTOD)
|
|
INT iHour = GET_TIMEOFDAY_HOUR(g_sMultiplayerTransitionTOD)
|
|
INT iMinute = GET_TIMEOFDAY_MINUTE(g_sMultiplayerTransitionTOD)
|
|
|
|
STRING tWeatherType = ""
|
|
STRING tCloudHat = ""
|
|
IF NOT IS_WEATHER_SAFE_FOR_SP()
|
|
CASSERTLN(DEBUG_SWITCH, "PRIVATE_SetClockTimeForSwitchScene - unsafe weather for MP transition!!!")
|
|
tWeatherType = "SMOG"
|
|
ENDIF
|
|
|
|
IF PRIVATE_SetPhaseTimeForMpSwitchCam(fForceCameraPhase, 5.0)
|
|
RETURN SKIP_TO_TIME_DURING_SPLINE_CAMERA(iHour, iMinute, tWeatherType, tCloudHat, sPedScene.sTimelapse, fForceCameraPhase, DEFAULT, DEFAULT, 5.0)
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_WEATHER_SAFE_FOR_SP()
|
|
CASSERTLN(DEBUG_SWITCH, "PRIVATE_SetClockTimeForSwitchScene - unsafe weather for SP transition???")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#endif
|
|
#endif
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
FUNC BOOL PRIVATE_UpdateDrunkenPeds()
|
|
Make_Ped_Sober(PLAYER_PED_ID())
|
|
Quit_Drunk_Camera_Immediately()
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
FUNC BOOL PRIVATE_UpdateLastSceneQueueCLF(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eScene)
|
|
|
|
INT iRevQueue = g_iCOUNT_OF_LAST_SCENE_QUEUE-1
|
|
WHILE (iRevQueue > 0)
|
|
g_savedGlobalsClifford.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue] = g_savedGlobalsClifford.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue-1]
|
|
iRevQueue--
|
|
ENDWHILE
|
|
|
|
g_savedGlobalsClifford.sPlayerSceneData.g_eLastSceneQueue[ePed][0] = eScene
|
|
|
|
INT iOneOffBit
|
|
IF GET_ONE_OFF_BIT_FOR_PED_REQUEST_SCENE(eScene, iOneOffBit)
|
|
SET_BIT(g_savedGlobalsClifford.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
FUNC BOOL PRIVATE_UpdateLastSceneQueueNRM(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eScene)
|
|
|
|
INT iRevQueue = g_iCOUNT_OF_LAST_SCENE_QUEUE-1
|
|
WHILE (iRevQueue > 0)
|
|
g_savedGlobalsnorman.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue] = g_savedGlobalsnorman.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue-1]
|
|
iRevQueue--
|
|
ENDWHILE
|
|
|
|
g_savedGlobalsnorman.sPlayerSceneData.g_eLastSceneQueue[ePed][0] = eScene
|
|
|
|
INT iOneOffBit
|
|
IF GET_ONE_OFF_BIT_FOR_PED_REQUEST_SCENE(eScene, iOneOffBit)
|
|
SET_BIT(g_savedGlobalsnorman.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
FUNC BOOL PRIVATE_UpdateLastSceneQueue(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eScene)
|
|
#if USE_CLF_DLC
|
|
if g_bLoadedClifford
|
|
return PRIVATE_UpdateLastSceneQueueCLF(ePed,eScene)
|
|
endif
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
if g_bLoadedNorman
|
|
return PRIVATE_UpdateLastSceneQueueNRM(ePed,eScene)
|
|
endif
|
|
#endif
|
|
|
|
INT iRevQueue = g_iCOUNT_OF_LAST_SCENE_QUEUE-1
|
|
WHILE (iRevQueue > 0)
|
|
g_SavedGlobals.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue] = g_SavedGlobals.sPlayerSceneData.g_eLastSceneQueue[ePed][iRevQueue-1]
|
|
iRevQueue--
|
|
ENDWHILE
|
|
|
|
g_SavedGlobals.sPlayerSceneData.g_eLastSceneQueue[ePed][0] = eScene
|
|
|
|
INT iOneOffBit
|
|
IF GET_ONE_OFF_BIT_FOR_PED_REQUEST_SCENE(eScene, iOneOffBit)
|
|
SET_BIT(g_SavedGlobals.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_UpdateChainedPostMissionSwitch(enumCharacterList ePed)
|
|
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FAMILY6)
|
|
UpdatePostMissionInfo(g_savedGlobals.sPlayerData.sInfo, CHAR_MICHAEL, PR_SCENE_Ma_FAMILY6)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALEC)
|
|
UpdatePostMissionInfo(g_savedGlobals.sPlayerData.sInfo, CHAR_MICHAEL, PR_SCENE_Ma_FINALEC)
|
|
UpdatePostMissionInfo(g_savedGlobals.sPlayerData.sInfo, CHAR_FRANKLIN, PR_SCENE_Fa_FINALEC)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_UpdatePostMissionSwitch(enumCharacterList ePed)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_STRIPCLUB_ARM3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_ARM3)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_ARM3)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_STRIPCLUB_FAM1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_FAM1)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_STRIPCLUB_FAM3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_FAM3)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FAMILY1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FAMILY3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI1)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FBI2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FAMILY1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI4intro)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FBI4intro)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI4)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FBI4)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FBI5)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FBI3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI4)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI5)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FBI5)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FAMILY4_a)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FAMILY4_b)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FAMILY4)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_NICE1B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_AGENCY1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_AGENCYprep1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_AGENCY3B)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_AGENCY2A)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_AGENCY3A)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_CARSTEAL1)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_CARSTEAL1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_CARSTEAL1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_CARSTEAL1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_AGENCY2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_CARSTEAL2)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_CARSTEAL4)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FBI2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FBI4)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_DOCKS2B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FAMILY6)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALEprepD)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FAMILY6)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_MARTIN1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_TREVOR3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_TREVOR3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FRANKLIN2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FRANKLIN2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FBI1end)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_MARTIN1)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_MARTIN1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_RURAL2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_RURAL2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_RC_MRSP2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_RURAL1)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_NICE2B)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_NICE2B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_FTa_FRANKLIN1a)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_FTa_FRANKLIN1b)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_FTa_FRANKLIN1c)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_FTa_FRANKLIN1d)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_FTa_FRANKLIN1e)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FRANKLIN2)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FRANKLIN2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_EXILE2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_EXILE2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_EXILE3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_EXILE3)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_MICHAEL2)
|
|
// OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_MICHAEL2)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_MICHAEL3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_MICHAEL3)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_DOCKS2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_DOCKS2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FINALE1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALE1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_CARSTEAL4)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FINALE2intro)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALE2intro)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_DOCKS2B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FINALE1)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_AGENCY3A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FINALE2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALE2A)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FINALE2B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALE2B)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FINALEA)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FINALEB)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ma_FINALEC)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_FINALEC)
|
|
OR (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Ta_FINALEC)
|
|
|
|
|
|
// TREVOR 3
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_TREVOR3)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_TREVOR3)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_TREVOR3)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_TREVOR3)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FRANKLIN 2
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FRANKLIN2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FRANKLIN2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FRANKLIN2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FRANKLIN2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// EXILE 2
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_EXILE2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_EXILE2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_EXILE2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_EXILE2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// CAR STEAL 1
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_CARSTEAL1)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_CARSTEAL1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_CARSTEAL1)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_CARSTEAL1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FRANKLIN 1
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1a
|
|
// OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1b
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1c
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1d
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1e)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1a
|
|
// OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1b
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1c
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1d
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1e)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1a
|
|
// OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1b
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1c
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1d
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_FTa_FRANKLIN1e)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1a
|
|
// OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1b
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1c
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1d
|
|
OR g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_FTa_FRANKLIN1e)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FBI 4 intro
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI4intro)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FBI4intro)
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FBI4intro)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI4intro)
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FBI 4
|
|
IF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FBI4)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI4)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI4)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FBI4)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FBI 5
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FBI5)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI5)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI5)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FBI5)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// RURAL HEIST 2A
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_RURAL2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_RURAL2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_RURAL2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_RURAL2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FBI 2
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FBI2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FBI2)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FBI2)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FINALE HEIST 2 intro
|
|
IF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALE2intro)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2intro)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2intro)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALE2intro)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FINALE HEIST 2A
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALE2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALE2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FINALE HEIST 2B
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALE2B)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2B)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE2B)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALE2B)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FINALE C
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALEC)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALEC)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALEC)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_FINALEC)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// MICHAEL 3
|
|
IF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_MICHAEL3)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_MICHAEL3)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_MICHAEL3)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_MICHAEL3)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// DOCKS 2a
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_DOCKS2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_DOCKS2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_DOCKS2A)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_DOCKS2A)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// DOCKS 2b
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_DOCKS2B)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_DOCKS2B)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_DOCKS2B)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_DOCKS2B)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// FINALE 1
|
|
IF (ePed = CHAR_MICHAEL)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_MA_FINALE1)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_FRANKLIN)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALE1)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_MA_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ElIF (ePed = CHAR_TREVOR)
|
|
AND (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_TREVOR] = PR_SCENE_Ta_FINALE1)
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_MA_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_INVALID
|
|
ENDIF
|
|
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_Fa_FINALE1)
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN])
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_FRANKLIN] = PR_SCENE_INVALID
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_ePostFranklin1Switch = POST_FRANKLIN1_NULL
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
g_ePostFranklin1Switch = POST_FRANKLIN1_NULL
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL RequestAnimDictForTimetableExitSceneCam(PED_REQUEST_SCENE_ENUM ePedScene)
|
|
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(ePedScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
|
|
TEXT_LABEL_63 tPlayerAnimDict, tPlayerAnimLoop, tPlayerAnimOut
|
|
ANIMATION_FLAGS playerAnimLoopFlag, playerAnimOutFlag
|
|
//enumPlayerSceneAnimProgress ePlayerSceneAnimProgress
|
|
|
|
IF GET_PLAYER_ANIM_FOR_TIMETABLE_SCENE(ePedScene,
|
|
tPlayerAnimDict, tPlayerAnimLoop, tPlayerAnimOut,
|
|
playerAnimLoopFlag, playerAnimOutFlag)// , ePlayerSceneAnimProgress)
|
|
|
|
REQUEST_ANIM_DICT(tPlayerAnimDict)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
FUNC BOOL RemoveAnimDictForTimetableExitSceneCam(PED_REQUEST_SCENE_ENUM ePedScene)
|
|
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(ePedScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
|
|
TEXT_LABEL_63 tPlayerAnimDict, tPlayerAnimLoop, tPlayerAnimOut
|
|
ANIMATION_FLAGS playerAnimLoopFlag, playerAnimOutFlag
|
|
//enumPlayerSceneAnimProgress ePlayerSceneAnimProgress
|
|
|
|
IF GET_PLAYER_ANIM_FOR_TIMETABLE_SCENE(ePedScene,
|
|
tPlayerAnimDict, tPlayerAnimLoop, tPlayerAnimOut,
|
|
playerAnimLoopFlag, playerAnimOutFlag) //, ePlayerSceneAnimProgress)
|
|
|
|
REMOVE_ANIM_DICT(tPlayerAnimDict)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
FUNC BOOL PRIVATE_UpdateSwitchFriendTimer(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene)
|
|
|
|
IF SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
|
|
enumCharacterList ePlayerPed = sPedScene.ePed
|
|
enumCharacterList eFriendPed = sPassedScene.eSceneBuddy
|
|
|
|
IF eFriendPed < CHAR_BLANK_ENTRY
|
|
|
|
IF ARE_CHARS_FRIENDS(ePlayerPed, eFriendPed)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "reset switch friend face timer(", GetLabel_enumFriend(GET_FRIEND_FROM_CHAR(ePlayerPed)), ", ", GetLabel_enumFriend(GET_FRIEND_FROM_CHAR(eFriendPed)), ")")
|
|
#ENDIF
|
|
|
|
enumFriendContactType contactType = FRIEND_CONTACT_FACE
|
|
RESET_FRIEND_LAST_CONTACT_TIMER(ePlayerPed, eFriendPed, contactType)
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
ELSE
|
|
TEXT_LABEL tVoiceID
|
|
TEXT_LABEL tBuddyVoiceID
|
|
TEXT_LABEL tSceneSpeechBlock
|
|
TEXT_LABEL tSceneSpeechLabel
|
|
FLOAT fSceneSpeechPhase
|
|
|
|
IF SETUP_TIMETABLE_SPEECH_FOR_SCENE(sPedScene.eScene,
|
|
tVoiceID, tBuddyVoiceID, tSceneSpeechBlock, tSceneSpeechLabel,
|
|
fSceneSpeechPhase)
|
|
|
|
SWITCH GET_HASH_KEY(tBuddyVoiceID)
|
|
CASE HASH("AMANDA") eFriendPed = CHAR_AMANDA BREAK
|
|
CASE HASH("LAMAR") eFriendPed = CHAR_LAMAR BREAK
|
|
|
|
DEFAULT
|
|
RETURN FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF ARE_CHARS_FRIENDS(ePlayerPed, eFriendPed)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "reset switch friend phone timer(", GetLabel_enumFriend(GET_FRIEND_FROM_CHAR(ePlayerPed)), ", ", GetLabel_enumFriend(GET_FRIEND_FROM_CHAR(eFriendPed)), ")")
|
|
#ENDIF
|
|
|
|
enumFriendContactType contactType = FRIEND_CONTACT_PHONE
|
|
RESET_FRIEND_LAST_CONTACT_TIMER(ePlayerPed, eFriendPed, contactType)
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL PRIVATE_PlayerHasStartedNewScene(PED_SCENE_STRUCT &sPedScene)
|
|
|
|
|
|
IF NOT get_NOT_PlayerHasStartedNewScene()
|
|
//
|
|
ELSE
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
|
|
FLOAT fSelectorCamSplinePhase = -1
|
|
IF (GET_PLAYER_SWITCH_TYPE() <> SWITCH_TYPE_SHORT)
|
|
#IF NOT USE_TU_CHANGES
|
|
fSelectorCamSplinePhase = GET_CAM_SPLINE_PHASE(sPedScene.sSelectorCam.camID)
|
|
#ENDIF
|
|
#IF USE_TU_CHANGES
|
|
fSelectorCamSplinePhase = TO_FLOAT(ENUM_TO_INT(GET_PLAYER_SWITCH_STATE())) / TO_FLOAT(ENUM_TO_INT(SWITCH_STATE_OUTRO))
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
//
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE: ", tPlayerSceneSyncAnimCam, ", camID phase: ", fSelectorCamSplinePhase)
|
|
#ENDIF
|
|
|
|
IF fSelectorCamSplinePhase >= 1.0
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDIF
|
|
//
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "sPedScene.sSelectorCam.camID phase: ", fSelectorCamSplinePhase)
|
|
#ENDIF
|
|
|
|
IF fSelectorCamSplinePhase >= 0.95
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC PRIVATE_SET_Pause_Outro_Count(INT iNewPauseOnOutro)
|
|
CPRINTLN(DEBUG_SWITCH, "PRIVATE_SET_Pause_Outro_Count: ", iNewPauseOnOutro, " (current:", g_iPauseOnOutro, ")")
|
|
g_iPauseOnOutro = iNewPauseOnOutro
|
|
ENDPROC
|
|
PROC INCRAMENT_Pause_Outro_Count()
|
|
PRIVATE_SET_Pause_Outro_Count(g_iPauseOnOutro+1)
|
|
ENDPROC
|
|
PROC DECRAMENT_Pause_Outro_Count()
|
|
PRIVATE_SET_Pause_Outro_Count(g_iPauseOnOutro-1)
|
|
ENDPROC
|
|
PROC CLEAR_Pause_Outro_Count()
|
|
PRIVATE_SET_Pause_Outro_Count(0)
|
|
ENDPROC
|
|
|
|
INT iRequestSwitchInterior_count = 0
|
|
|
|
/// PURPOSE: Processes the basic ped scene.
|
|
/// This involves setting up a ped at the scene and then hotswapping to this ped.
|
|
|
|
FUNC BOOL GENERIC_PED_SCENECLF(PED_SCENE_STRUCT &sPedScene,
|
|
SceneGlobalFuncIndex customSetupSelectorCam,
|
|
SceneGlobalFunc customSetupScript, INT iSwitchFlags = 0)
|
|
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) //#582163
|
|
ENDIF
|
|
|
|
//Is the global wait timer at 0?
|
|
INT iGameTime = GET_GAME_TIMER()
|
|
IF iGameTime >= g_iGlobalWaitTime - 1000
|
|
ADD_GLOBAL_COMMUNICATION_DELAY(CC_DELAY_POST_AMBIENT_SWITCH / 3)
|
|
ENDIF
|
|
|
|
CONST_INT CONST_SWITCH_0_requestSwitch 0
|
|
CONST_INT CONST_SWITCH_1_initialiseSwitch 1
|
|
CONST_INT CONST_SWITCH_2_waitForInterior 2
|
|
CONST_INT CONST_SWITCH_3_setupPedTo 3
|
|
CONST_INT CONST_SWITCH_4_runCodeCam 4
|
|
CONST_INT CONST_TEST_SWITCH_5 5
|
|
CONST_INT CONST_TEST_SWITCH_6 6
|
|
|
|
PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
|
|
|
|
VECTOR vPedAreaOffset = <<5,5,4>>
|
|
|
|
// // // // //
|
|
// stage 0: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_0_requestSwitch)
|
|
m_enumMissionCandidateReturnValue eLaunchRequest
|
|
eLaunchRequest = Request_Mission_Launch(sPedScene.iMissionID,
|
|
MCTID_MUST_LAUNCH,
|
|
MISSION_TYPE_SWITCH, TRUE)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SWITCH eLaunchRequest
|
|
CASE MCRET_DENIED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "DENIED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_ACCEPTED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "ACCEPTED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_PROCESSING
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "PROCESSING", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", ENUM_TO_INT(eLaunchRequest), "_unknown", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
ENDSWITCH
|
|
#ENDIF
|
|
|
|
IF (eLaunchRequest = MCRET_ACCEPTED)
|
|
STAT_INCREMENT(SP_AMBIENT_SWITCH_COUNT, 1)
|
|
sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch
|
|
ENDIF
|
|
|
|
IF NOT (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
IF NOT (g_eRunningMission = SP_MISSION_NONE)
|
|
IF ARE_STRINGS_EQUAL(g_sMissionStaticData[g_eRunningMission].scriptName, GET_THIS_SCRIPT_NAME())
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName = GET_THIS_SCRIPT_NAME()")
|
|
|
|
sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName <> GET_THIS_SCRIPT_NAME()")
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_eRunningMission = SP_MISSION_NONE")
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 1: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
sPedScene.sTimelapse.iTimelapseCut = 0
|
|
sPedScene.sTimelapse.iTimeSkipStage = 0
|
|
CLEAR_Pause_Outro_Count()
|
|
|
|
sPedScene.eSelectorPed = GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(sPedScene.ePed)
|
|
IF GET_PLAYER_PED_POSITION_FOR_SCENE(sPedScene.eScene, sPedScene.vCreateCoords, sPedScene.fCreateHead, sPedScene.tCreateRoom)
|
|
DISABLE_CELLPHONE(TRUE)
|
|
|
|
VECTOR vCreateCoords
|
|
FLOAT fCreateHead
|
|
IF PRIVATE_Should_Default_PedTo_Coord_Move(sPedScene, vCreateCoords, fCreateHead)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("updated sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" old sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(sPedScene.vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(sPedScene.fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" older vLastKnownCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(", fLastKnownHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vVehCoordsOffset
|
|
vVehCoordsOffset = g_vPlayerLastVehCoord[sPedScene.ePed] - g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed]
|
|
#ENDIF
|
|
|
|
sPedScene.vCreateCoords = vCreateCoords
|
|
sPedScene.fCreateHead = fCreateHead
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD g_vPlayerLastVehCoord: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(" - ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = vCreateCoords
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = fCreateHead
|
|
|
|
|
|
IF g_ePlayerLastVehState[sPedScene.ePed] = PTVS_2_playerInVehicle
|
|
g_vPlayerLastVehCoord[sPedScene.ePed] = vCreateCoords
|
|
g_fPlayerLastVehHead[sPedScene.ePed] = fCreateHead
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" NEWER vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_STRING_TO_DEBUG_FILE(" + ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
g_eSelectedPlayerCharScene = (sPedScene.eScene)
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
IF NOT IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ELSE
|
|
sPedScene.roomInterior = NULL
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", NONE")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (sPedScene.roomInterior <> NULL)
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_CS_CHECKSHOE)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPEHANDS)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPERIGHT)
|
|
SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, FALSE)
|
|
ENDIF
|
|
|
|
RequestAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
VECTOR vecCamEndPos, vecCamEndRot
|
|
FLOAT vecCamEndFov
|
|
IF SETUP_PLAYER_CAMERA_FOR_SCENE(sPedScene.eScene, vecCamEndPos, vecCamEndRot, vecCamEndFov)
|
|
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
|
|
TEXT_LABEL tRecording_name
|
|
INT iRecording_num
|
|
FLOAT fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
OR GET_PLAYER_VEH_RECORDING_FOR_SCENE(sPedScene.eScene, tRecording_name, iRecording_num,
|
|
fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit)
|
|
OR SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.sSelectorCam.camTo = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
|
|
SET_CAM_COORD(sPedScene.sSelectorCam.camTo, vecCamEndPos)
|
|
SET_CAM_ROT(sPedScene.sSelectorCam.camTo, vecCamEndRot)
|
|
SET_CAM_FOV(sPedScene.sSelectorCam.camTo, vecCamEndFov)
|
|
// SET_CAM_FAR_CLIP(sPedScene.sSelectorCam.camTo, 800.0)
|
|
|
|
SET_PED_NON_CREATION_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
sPedScene.scenarioBlockID = ADD_SCENARIO_BLOCKING_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
|
|
CLEAR_AREA(vecCamEndPos, VMAG(vPedAreaOffset), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INCRAMENT_Pause_Outro_Count() //for "player_timetable_scene"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENECLF - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
INCRAMENT_Pause_Outro_Count() //for sPlayerTimetableAdditional_script
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENECLF - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" addition")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
// Found a suitable scene
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "\n GENERIC_PED_SCENECLF - Scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is suitable")
|
|
|
|
SaveSuitablePedSceneStructToSwitchLog(sPedScene)
|
|
#ENDIF
|
|
|
|
g_eRecentlySelectedScene = sPedScene.eScene
|
|
|
|
enumCharacterList eCurrentPlayerPedEnum
|
|
eCurrentPlayerPedEnum = GET_CURRENT_PLAYER_PED_ENUMCLF()
|
|
IF eCurrentPlayerPedEnum != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
FLOAT fPlayerLastVehEngineHealth, fPlayerLastVehPetrolTankHealth
|
|
fPlayerLastVehEngineHealth = GET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
fPlayerLastVehPetrolTankHealth = GET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
|
|
CONST_FLOAT fCONST_VEH_EXPLODE_HEALTH -1000.0
|
|
IF fPlayerLastVehEngineHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
IF fPlayerLastVehPetrolTankHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
STORE_VEH_DATA_FROM_PEDCLF(PLAYER_PED_ID(),
|
|
g_sPlayerLastVeh[eCurrentPlayerPedEnum],
|
|
g_vPlayerLastVehCoord[eCurrentPlayerPedEnum],
|
|
g_fPlayerLastVehHead[eCurrentPlayerPedEnum],
|
|
g_ePlayerLastVehState[eCurrentPlayerPedEnum] #IF USE_TU_CHANGES , g_ePlayerLastVehGen[eCurrentPlayerPedEnum] #ENDIF )
|
|
SAFE_STORE_PLAYER_PED_INFOCLF(PLAYER_PED_ID(), FALSE)
|
|
|
|
STORE_DEFAULT_PLAYER_SWITCH_STATE(PLAYER_PED_ID())
|
|
ENDIF
|
|
|
|
PRIVATE_ClearPrioritySwitchFlag(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
g_iLastSuccessfulAmbientLaunchTime = GET_GAME_TIMER()
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 10.0)
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODELCLF(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene)
|
|
WAIT(0)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
ELSE
|
|
// Can't find suitable scene so bail out
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is not suitable")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 2: Wait For Interior
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_2_waitForInterior)
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
iRequestSwitchInterior_count++
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODELCLF(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" isn't using new load scene [", iRequestSwitchInterior_count, "]...")
|
|
#ENDIF
|
|
|
|
// Make sure any interior is pinned before we proceed
|
|
IF sPedScene.roomInterior <> NULL
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
sPedScene.iStage = CONST_SWITCH_2_waitForInterior
|
|
|
|
IF iRequestSwitchInterior_count > 150
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" timeout waiting for a non-null interior to be ready", " //roomInterior:", NATIVE_TO_INT(sPedScene.roomInterior), ", iWaitCount:", iRequestSwitchInterior_count)
|
|
|
|
TEXT_LABEL_63 tScene, tAssert
|
|
tScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
tAssert = GET_STRING_FROM_STRING(tScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(tScene))
|
|
tAssert += " - timeout waiting for a non-null interior to be ready"
|
|
CASSERTLN(DEBUG_SWITCH, tAssert)
|
|
#ENDIF
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", NONE")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 3: Setup Ped To
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_3_setupPedTo)
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
|
|
enumCharacterList eSelectorChar
|
|
eSelectorChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.eSelectorPed)
|
|
|
|
#IF USE_TU_CHANGES
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
#ENDIF
|
|
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
SET_PED_AS_NO_LONGER_NEEDED(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
#IF USE_TU_CHANGES
|
|
#IF IS_DEBUG_BUILD
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] is dead??? #1816254")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
|
|
sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed] = NULL
|
|
sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
ENDIF
|
|
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene)
|
|
|
|
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// CPRINTLN(DEBUG_SWITCH, "MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 25.0)")
|
|
//
|
|
// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 25.0)
|
|
// ENDIF
|
|
|
|
// Make a dummy ped so we can run cam spline to them
|
|
|
|
PED_VARIATION_STRUCT SVARIATIONS = g_savedGlobalsClifford.SPLAYERDATA.SINFO.SVARIATIONS[SPEDSCENE.ESELECTORPED]
|
|
|
|
|
|
IF CREATE_PLAYER_PED_ON_FOOTCLF(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], sPedScene.ePed, sPedScene.vCreateCoords, sPedScene.fCreateHead)
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) != SWITCH_TYPE_SHORT
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.sVariations[sPedScene.eSelectorPed] = sVariations
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRELOAD_STORED_PLAYER_PED_VARIATIONCLF(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
// Set invisible to avoid any popping issues
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
enumCreateState eCreateState
|
|
IF SafeToCreatePlayerAmbientPedAtLastKnownLocation(sPedScene.ePed, eCreateState)
|
|
CPRINTLN(DEBUG_SWITCH, "safe to create")
|
|
ELSE
|
|
|
|
SWITCH eCreateState
|
|
CASE eCS_3_SWITCH_IN_PROGRESS CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_3_SWITCH_IN_PROGRESS") BREAK
|
|
CASE eCS_5_TOO_MANY_HOURS_PASSED CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_5_TOO_MANY_HOURS_PASSED") BREAK
|
|
CASE eCS_7_TOO_FAR_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_7_TOO_FAR_TO_CREATE") BREAK
|
|
CASE eCS_8_TOO_CLOSE_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_8_TOO_CLOSE_TO_CREATE") BREAK
|
|
CASE eCS_9_SPHERE_VISIBLE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_9_SPHERE_VISIBLE") BREAK
|
|
|
|
// CASE eCS_4_INVALID_LAST_TIME_ACTIVE FALLTHRU
|
|
// CASE eCS_6_INVALID_LAST_KNOWN_COORDS
|
|
// EXIT
|
|
// BREAK
|
|
|
|
CASE eCS_10_POST_MISSION_SWITCH CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_10_POST_MISSION_SWITCH") BREAK
|
|
CASE eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY") BREAK
|
|
CASE eCS_12_NEAR_MISSION_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_12_NEAR_MISSION_TRIGGER") BREAK
|
|
CASE eCS_13_LEADIN_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_13_LEADIN_TRIGGER") BREAK
|
|
CASE eCS_14_DIRECTOR_MODE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_14_DIRECTOR_MODE") BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "DON'T create ", ENUM_TO_INT(eCreateState))
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
#ENDIF
|
|
ELSE
|
|
SET_ENTITY_VISIBLE(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], FALSE)
|
|
ENDIF
|
|
|
|
|
|
// Freeze to avoid falling through the world
|
|
FREEZE_ENTITY_POSITION(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], TRUE)
|
|
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
FORCE_ROOM_FOR_SCENE_SELECTOR_PED(sPedScene)
|
|
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - created player ped on foot for scene \"")
|
|
CPRINTLN(DEBUG_SWITCH, Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" ", sPedScene.vCreateCoords)
|
|
#ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) = SWITCH_TYPE_SHORT
|
|
INT iPreloadGametime
|
|
IF NOT HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
iPreloadGametime = GET_GAME_TIMER()
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - start waiting for preload var")
|
|
|
|
WHILE (iPreloadGametime+0500) < GET_GAME_TIMER()
|
|
AND iPreloadGametime > 0
|
|
IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
iPreloadGametime = -1
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - gave up waiting for preload var")
|
|
ENDIF
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
IF NOT (iPreloadGametime = -1)
|
|
CASSERTLN(DEBUG_SWITCH, "wait for ped var preload")
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - finished waiting for preload var (", iPreloadGametime, ", ", GET_GAME_TIMER(), ")")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
sPedScene.iStage = CONST_SWITCH_4_runCodeCam
|
|
ENDIF
|
|
ELSE
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
IF sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID() //#1565907
|
|
SET_ENTITY_AS_MISSION_ENTITY(sPedScene.sSelectorCam.pedTo, TRUE, TRUE)
|
|
ENDIF
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
CLEAR_AREA_OF_PROJECTILES(sPedScene.vCreateCoords, 10.0)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vPedToCoord = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - use global ped for scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"", vPedToCoord)
|
|
#ENDIF
|
|
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo), 5.0)
|
|
AND NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, <<0,0,0>>, 5.0)
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
//
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, " pedTo(", vPedToCoord, ") nowhere near vCreateCoords(", sPedScene.vCreateCoords, "): dist:", VDIST(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)))
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "\n\n\n pedTo nowhere near vCreateCoords??\n\n\n")
|
|
|
|
SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, sPedScene.vCreateCoords)
|
|
SET_ENTITY_HEADING(sPedScene.sSelectorCam.pedTo, sPedScene.fCreateHead)
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
sPedScene.iStage = CONST_SWITCH_4_runCodeCam
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 4: Run Code Cam
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_4_runCodeCam)
|
|
BOOL bCreateReplacementForPlayer, bKeepTasks
|
|
bCreateReplacementForPlayer = FALSE
|
|
bKeepTasks = FALSE
|
|
|
|
SWITCH_TYPE eSwitchType
|
|
eSwitchType = SWITCH_TYPE_AUTO
|
|
|
|
FLOAT fGameplayCamPitch, fGameplayCamHeading
|
|
fGameplayCamPitch = 0.0
|
|
fGameplayCamHeading = 0.0
|
|
|
|
BOOL bPauseBeforePan, bPauseBeforeOutro
|
|
bPauseBeforePan = FALSE
|
|
bPauseBeforeOutro = FALSE
|
|
|
|
GetSplineCamFromPlayerToPedParams(sPedScene,
|
|
bCreateReplacementForPlayer, bKeepTasks, eSwitchType,
|
|
fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, iSwitchFlags)
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sLiteral
|
|
sLiteral = ""
|
|
|
|
STRING sScene
|
|
sScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
|
|
HUD_COLOURS eHudColour
|
|
eHudColour = HUD_COLOUR_PURE_WHITE
|
|
#ENDIF
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.tCreateRoom = tPlayerSceneProceduralCam
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_S_EXILE2)
|
|
IF NOT bPauseBeforePan
|
|
CPRINTLN(DEBUG_SWITCH, "force pause on pan for exile2")
|
|
bPauseBeforePan = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// Use a long spline so we can delete the current character and dont see the new character pop into place
|
|
BOOL bRunning_switch_cam_from_player
|
|
bRunning_switch_cam_from_player = FALSE
|
|
IF NOT DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sPedScene.sSelectorCam,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, sPedScene.tCreateRoom)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to ped [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ELSE
|
|
// IF (g_fCamToPhase < 0)
|
|
// g_fCamToPhase = 0
|
|
// ENDIF
|
|
|
|
TEXT_LABEL_63 tEstabShot
|
|
tEstabShot = sPedScene.tCreateRoom
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tEstabShot)
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tPlayerSceneEstabShotSuffix)
|
|
tEstabShot += tPlayerSceneEstabShotSuffix
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_CAM(sPedScene.sSelectorCam,
|
|
sPedScene.sSelectorCam.camTo,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, tEstabShot)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to cam [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_bDrawLiteralSceneString
|
|
SET_TEXT_SCALE(0.4, 0.4)
|
|
SET_TEXT_HUD_COLOUR(eHudColour, 127)
|
|
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
|
|
SET_TEXT_OUTLINE()
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.925 - 0.03, "STRING", sLiteral)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
IF bRunning_switch_cam_from_player
|
|
SWITCH_STATE eSwitchState, eSETUP_SCRIPT_SWITCH_STATE, eTAKE_CONTROL_SCRIPT_SWITCH_STATE
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_ASCENT //SWITCH_STATE_JUMPCUT_DESCENT
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_DESCENT
|
|
IF g_bMagDemoActive
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() <> SWITCH_TYPE_SHORT)
|
|
eSwitchState = GET_PLAYER_SWITCH_STATE()
|
|
|
|
|
|
IF (eSwitchState = SWITCH_STATE_JUMPCUT_DESCENT) OR (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
|
|
#IF USE_TU_CHANGES
|
|
OR (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT
|
|
AND NOT (sPedScene.eScene = PR_SCENE_M_DEFAULT OR sPedScene.eScene = PR_SCENE_F_DEFAULT OR sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
#ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 0)
|
|
IF (g_iPauseOnOutro > 0)
|
|
IF (g_iPausedOnOutroGametime < 0)
|
|
g_iPausedOnOutroGametime = GET_GAME_TIMER()
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "<CLF> g_iPausedOnOutroGametime: ", GET_GAME_TIMER() - g_iPausedOnOutroGametime, " [g_iPauseOnOutro: ", g_iPauseOnOutro, "] ", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
|
|
INT iMAX_PAUSED_ON_OUTRO_WAIT
|
|
#IF NOT IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 10000
|
|
#ENDIF
|
|
#IF IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 15000
|
|
#ENDIF
|
|
|
|
IF (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.5)
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.5)
|
|
ENDIF
|
|
|
|
IF GET_GAME_TIMER() > (g_iPausedOnOutroGametime+iMAX_PAUSED_ON_OUTRO_WAIT)
|
|
|
|
DECRAMENT_Pause_Outro_Count()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> ar_ALLOW_PLAYER_SWITCH_OUTRO(", Get_String_From_Ped_Request_Scene_Enum(g_eRecentlySelectedScene), ") //g_iPauseOnOutro:", g_iPauseOnOutro)
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT)
|
|
//CASSERTLN(DEBUG_SWITCH, "fix for bug #1817876")
|
|
ELSE
|
|
TEXT_LABEL_63 sBroke
|
|
sBroke = GET_STRING_FROM_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene),
|
|
GET_LENGTH_OF_LITERAL_STRING("PS_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)))
|
|
sBroke += " broke - held on jumpcut descent for "
|
|
sBroke += iMAX_PAUSED_ON_OUTRO_WAIT/1000
|
|
sBroke += "sec!"
|
|
|
|
CASSERTLN(DEBUG_SWITCH, sBroke)
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
ALLOW_PLAYER_SWITCH_OUTRO()
|
|
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//short range,
|
|
eSwitchState = eSETUP_SCRIPT_SWITCH_STATE
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = eSETUP_SCRIPT_SWITCH_STATE
|
|
ENDIF
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
IF (eSwitchState <> SWITCH_STATE_PREP_DESCENT)
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_INIT, "player_controller.sc is fading in the screen as we are starting a descent switch scene after a load.")
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_DESCENT)
|
|
IF (eSwitchState = SWITCH_STATE_PREP_DESCENT)
|
|
CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (eSwitchState >= eSETUP_SCRIPT_SWITCH_STATE)
|
|
IF CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
IF sPedScene.sSelectorCam.bOKToSwitchPed
|
|
AND (eSwitchState >= eTAKE_CONTROL_SCRIPT_SWITCH_STATE)
|
|
|
|
BOOL bTakenControl = FALSE
|
|
|
|
// IF IS_BIT_SET(g_iSwitchTriggerStateBitset, SWITCH_TRIG_BLOCK_CHAR_SWITCH)
|
|
// AND ((sPedScene.eScene = PR_SCENE_M_DEFAULT) OR (sPedScene.eScene = PR_SCENE_F_DEFAULT) OR (sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, "<")
|
|
// CPRINTLN(DEBUG_SWITCH, GET_THIS_SCRIPT_NAME())
|
|
// CPRINTLN(DEBUG_SWITCH, "> dont take control, SWITCH_TRIG_BLOCK_CHAR_SWITCH is set.")
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, DEBUG_TRIGGER, "<SWITCH-TRIG> Skipping character switch and warping player to lead-in instead.")
|
|
// SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, sPedScene.vCreateCoords)
|
|
//
|
|
// bTakenControl = TRUE
|
|
// ELSE
|
|
IF TAKE_CONTROL_OF_SELECTOR_PED(sPedScene.sSelectorPeds, bCreateReplacementForPlayer, bKeepTasks)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> take control, switch trigger null")
|
|
|
|
bTakenControl = TRUE
|
|
ENDIF
|
|
// ENDIF
|
|
|
|
IF bTakenControl
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
ENDIF
|
|
|
|
PRIVATE_SetDefaultPlayerPedAttributes(sPedScene.sSelectorPeds)
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
PRIVATE_UpdateDrunkenPeds()
|
|
|
|
/* //#1189748
|
|
Set_Leave_Area_Flag_For_All_Blipped_Missions() //#1176160
|
|
*/
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
g_sPlayerPedRequest.sSelectorPeds = sPedScene.sSelectorPeds
|
|
sPedScene.sSelectorCam.bPedSwitched = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF (eSwitchState >= SWITCH_STATE_JUMPCUT_ASCENT)
|
|
SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED(FALSE)
|
|
ENDIF
|
|
|
|
IF g_b_NOT_PlayerHasStartedNewScene
|
|
IF sPedScene.sSelectorCam.bPedSwitched
|
|
|
|
IF PRIVATE_PlayerHasStartedNewScene(sPedScene)
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//
|
|
sPedScene.iStage = CONST_TEST_SWITCH_5
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_5)
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_ACTIVE(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_INTERPOLATING(sPedScene.sSelectorCam.camTo)
|
|
//g_fCamToPhase = GET_CAM_SPLINE_PHASE(sPedScene.sSelectorCam.camTo)
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
|
|
REMOVE_SCENARIO_BLOCKING_AREA(sPedScene.scenarioBlockID)
|
|
CLEAR_PED_NON_CREATION_AREA()
|
|
ELSE
|
|
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camID)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camID)
|
|
ENDIF
|
|
|
|
IF sPedScene.sSelectorCam.iInterpCams > 0
|
|
INT iCamCount
|
|
FOR iCamCount = 0 TO sPedScene.sSelectorCam.iInterpCams-1
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(sPedScene.sSelectorCam.bIsPhoneDisabled)
|
|
ENDIF
|
|
|
|
// Reset all the camera values incase they have to be used again
|
|
sPedScene.sSelectorCam.bSplineCreated = FALSE
|
|
sPedScene.sSelectorCam.bSplineActive = FALSE
|
|
sPedScene.sSelectorCam.bSplineComplete = FALSE
|
|
sPedScene.sSelectorCam.bOKToSwitchPed = FALSE
|
|
sPedScene.sSelectorCam.bPedSwitched = FALSE
|
|
sPedScene.sSelectorCam.bRun = FALSE
|
|
sPedScene.sSelectorCam.iInterpCams = 0
|
|
|
|
// Set the relative heading/pitch if the calling scipt used a custom camera
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(gameplayCamHeading)
|
|
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(gameplayCamPitch)
|
|
IF NOT (g_drunkCameraActive)
|
|
STOP_GAMEPLAY_CAM_SHAKING(TRUE)
|
|
SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE(0)
|
|
SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE(0)
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 1000)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_PLAYER_INVINCIBLE(PLAYER_ID(), FALSE)
|
|
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
|
SET_PED_CAN_BE_TARGETTED(PLAYER_PED_ID(), TRUE)
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
SET_ENTITY_COLLISION(PLAYER_PED_ID(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_SKYSWOOP_STAGE(SKYSWOOP_NONE)
|
|
|
|
// If we didnt switch players then reset the proofs
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, FALSE)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedTo)
|
|
SET_ENTITY_INVINCIBLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
IF (sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID())
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
sPedScene.iStage = CONST_TEST_SWITCH_6
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_6)
|
|
IF sPedScene.roomInterior <> NULL
|
|
UNPIN_INTERIOR(sPedScene.roomInterior)
|
|
ENDIF
|
|
|
|
// FADE_UP_PED_LIGHT(4.0)
|
|
|
|
CLEAR_FOCUS()
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODELCLF(sPedScene.ePed))
|
|
|
|
enumCharacterList eCurrentPed
|
|
eCurrentPed = GET_CURRENT_PLAYER_PED_ENUMCLF()
|
|
|
|
IF eCurrentPed != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPed])
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_vPlayerVeh[eCurrentPed])
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_vPlayerVeh[eCurrentPed])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(g_vPlayerVeh[eCurrentPed], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - g_vPlayerVeh[", GET_PLAYER_PED_STRING(eCurrentPed), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
MODEL_NAMES ePlayerLastVehModel
|
|
ePlayerLastVehModel = g_sPlayerLastVeh[eCurrentPed].model
|
|
IF (ePlayerLastVehModel <> DUMMY_MODEL_FOR_SCRIPT)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(ePlayerLastVehModel)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRIVATE_UpdateChainedPostMissionSwitch(sPedScene.ePed)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_M_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_DEFAULT)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_M_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_OVERRIDE)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_HOSPITAL)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
g_iSelectedDebugPlayerCharScene = ENUM_TO_INT(sPedScene.eScene)
|
|
#ENDIF
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[sPedScene.ePed] = sPedScene.eScene
|
|
PRIVATE_UpdateLastSceneQueue(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
ENDIF
|
|
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
ResetLastKnownPedInfo(g_savedGlobalsClifford.sPlayerData.sInfo, SP_MISSION_NONE)
|
|
ENDIF
|
|
|
|
PRIVATE_UpdatePostMissionSwitch(sPedScene.ePed)
|
|
PRIVATE_UpdateSwitchFriendTimer(sPedScene, sPassedScene)
|
|
PRIVATE_SetPlayerPedWanted(sPedScene)
|
|
|
|
RemoveAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
CLEAR_TIMEOFDAY(g_sMultiplayerTransitionTOD)
|
|
CLEAR_TIMEOFDAY(g_savedGlobalsClifford.sPlayerData.sInfo.sLastTimeActive[sPedScene.ePed])
|
|
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("TOD_SHIFT_SCENE")
|
|
STOP_SOUND(sPedScene.sTimelapse.iSplineStageSound)
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK("TIME_LAPSE")
|
|
STOP_AUDIO_SCENE("TOD_SHIFT_SCENE")
|
|
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_SYSTEM, "<TOD> Audio scene \"TOD_SHIFT_SCENE\" active in ", GET_THIS_SCRIPT_NAME(), ".")
|
|
|
|
// CASSERTLN(DEBUG_SWITCH, "Audio scene \"TOD_SHIFT_SCENE\" active")
|
|
ENDIF
|
|
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = <<0,0,0>>
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = 0.0
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.iLastKnownRoomKey[sPedScene.ePed] = 0
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownVelocity[sPedScene.ePed] = <<0,0,0>>
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
IF IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene,
|
|
tPlayerSceneProceduralCam)
|
|
//
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" outside and non-null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" inside and null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// PRIVATE_ResetLeaveAreaForPreMissionSwitch(sPedScene)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENECLF - reset g_iLastSuccessfulAmbientLaunchTime \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
//g_fCamToPhase = -1
|
|
//g_bSwitchSplineCamInProgress = FALSE //play final stage of anim
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Mission_Over(sPedScene.iMissionID)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(FALSE)
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
FUNC BOOL GENERIC_PED_SCENENRM(PED_SCENE_STRUCT &sPedScene, SceneGlobalFuncIndex customSetupSelectorCam,SceneGlobalFunc customSetupScript, INT iSwitchFlags = 0)
|
|
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) //#582163
|
|
ENDIF
|
|
|
|
//Is the global wait timer at 0?
|
|
INT iGameTime = GET_GAME_TIMER()
|
|
IF iGameTime >= g_iGlobalWaitTime - 1000
|
|
ADD_GLOBAL_COMMUNICATION_DELAY(CC_DELAY_POST_AMBIENT_SWITCH / 3)
|
|
ENDIF
|
|
|
|
CONST_INT CONST_SWITCH_0_requestSwitch 0
|
|
CONST_INT CONST_SWITCH_1_initialiseSwitch 1
|
|
CONST_INT CONST_SWITCH_2_waitForInterior 2
|
|
CONST_INT CONST_SWITCH_3_setupPedTo 3
|
|
CONST_INT CONST_SWITCH_4_runCodeCam 4
|
|
CONST_INT CONST_TEST_SWITCH_5 5
|
|
CONST_INT CONST_TEST_SWITCH_6 6
|
|
|
|
PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
|
|
|
|
VECTOR vPedAreaOffset = <<5,5,4>>
|
|
|
|
// // // // //
|
|
// stage 0: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_0_requestSwitch)
|
|
m_enumMissionCandidateReturnValue eLaunchRequest
|
|
eLaunchRequest = Request_Mission_Launch(sPedScene.iMissionID,
|
|
MCTID_MUST_LAUNCH,
|
|
MISSION_TYPE_SWITCH, TRUE)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SWITCH eLaunchRequest
|
|
CASE MCRET_DENIED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "DENIED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_ACCEPTED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "ACCEPTED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_PROCESSING
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "PROCESSING", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", ENUM_TO_INT(eLaunchRequest), "_unknown", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
ENDSWITCH
|
|
#ENDIF
|
|
|
|
IF (eLaunchRequest = MCRET_ACCEPTED)
|
|
STAT_INCREMENT(SP_AMBIENT_SWITCH_COUNT, 1)
|
|
sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch
|
|
ENDIF
|
|
|
|
IF NOT (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
IF NOT (g_eRunningMission = SP_MISSION_NONE)
|
|
IF ARE_STRINGS_EQUAL(g_sMissionStaticData[g_eRunningMission].scriptName, GET_THIS_SCRIPT_NAME())
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName = GET_THIS_SCRIPT_NAME()")
|
|
|
|
sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName <> GET_THIS_SCRIPT_NAME()")
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_eRunningMission = SP_MISSION_NONE")
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 1: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
sPedScene.sTimelapse.iTimelapseCut = 0
|
|
sPedScene.sTimelapse.iTimeSkipStage = 0
|
|
CLEAR_Pause_Outro_Count()
|
|
|
|
sPedScene.eSelectorPed = GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(sPedScene.ePed)
|
|
IF GET_PLAYER_PED_POSITION_FOR_SCENE(sPedScene.eScene, sPedScene.vCreateCoords, sPedScene.fCreateHead, sPedScene.tCreateRoom)
|
|
DISABLE_CELLPHONE(TRUE)
|
|
|
|
VECTOR vCreateCoords
|
|
FLOAT fCreateHead
|
|
IF PRIVATE_Should_Default_PedTo_Coord_Move(sPedScene, vCreateCoords, fCreateHead)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("updated sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" old sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(sPedScene.vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(sPedScene.fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" older vLastKnownCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(", fLastKnownHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vVehCoordsOffset
|
|
|
|
vVehCoordsOffset = g_vPlayerLastVehCoord[sPedScene.ePed] - g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed]
|
|
#ENDIF
|
|
|
|
sPedScene.vCreateCoords = vCreateCoords
|
|
sPedScene.fCreateHead = fCreateHead
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD g_vPlayerLastVehCoord: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(" - ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = vCreateCoords
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = fCreateHead
|
|
|
|
IF g_ePlayerLastVehState[sPedScene.ePed] = PTVS_2_playerInVehicle
|
|
g_vPlayerLastVehCoord[sPedScene.ePed] = vCreateCoords
|
|
g_fPlayerLastVehHead[sPedScene.ePed] = fCreateHead
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" NEWER vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_STRING_TO_DEBUG_FILE(" + ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
g_eSelectedPlayerCharScene = (sPedScene.eScene)
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
#ENDIF
|
|
|
|
IF (sPedScene.roomInterior <> NULL)
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_CS_CHECKSHOE)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPEHANDS)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPERIGHT)
|
|
SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, FALSE)
|
|
ENDIF
|
|
|
|
RequestAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
VECTOR vecCamEndPos, vecCamEndRot
|
|
FLOAT vecCamEndFov
|
|
IF SETUP_PLAYER_CAMERA_FOR_SCENE(sPedScene.eScene, vecCamEndPos, vecCamEndRot, vecCamEndFov)
|
|
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
|
|
TEXT_LABEL tRecording_name
|
|
INT iRecording_num
|
|
FLOAT fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
OR GET_PLAYER_VEH_RECORDING_FOR_SCENE(sPedScene.eScene, tRecording_name, iRecording_num,
|
|
fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit)
|
|
OR SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.sSelectorCam.camTo = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
|
|
SET_CAM_COORD(sPedScene.sSelectorCam.camTo, vecCamEndPos)
|
|
SET_CAM_ROT(sPedScene.sSelectorCam.camTo, vecCamEndRot)
|
|
SET_CAM_FOV(sPedScene.sSelectorCam.camTo, vecCamEndFov)
|
|
// SET_CAM_FAR_CLIP(sPedScene.sSelectorCam.camTo, 800.0)
|
|
|
|
SET_PED_NON_CREATION_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
sPedScene.scenarioBlockID = ADD_SCENARIO_BLOCKING_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
|
|
CLEAR_AREA(vecCamEndPos, VMAG(vPedAreaOffset), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INCRAMENT_Pause_Outro_Count() //for "player_timetable_scene"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENENRM - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
INCRAMENT_Pause_Outro_Count() //for sPlayerTimetableAdditional_script
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENENRM - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" addition")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
// Found a suitable scene
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "\n GENERIC_PED_SCENENRM - Scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is suitable")
|
|
|
|
SaveSuitablePedSceneStructToSwitchLog(sPedScene)
|
|
#ENDIF
|
|
|
|
g_eRecentlySelectedScene = sPedScene.eScene
|
|
|
|
enumCharacterList eCurrentPlayerPedEnum
|
|
eCurrentPlayerPedEnum = GET_CURRENT_PLAYER_PED_ENUMNRM()
|
|
IF eCurrentPlayerPedEnum != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
FLOAT fPlayerLastVehEngineHealth, fPlayerLastVehPetrolTankHealth
|
|
fPlayerLastVehEngineHealth = GET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
fPlayerLastVehPetrolTankHealth = GET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
|
|
CONST_FLOAT fCONST_VEH_EXPLODE_HEALTH -1000.0
|
|
IF fPlayerLastVehEngineHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
IF fPlayerLastVehPetrolTankHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
STORE_VEH_DATA_FROM_PEDNRM(PLAYER_PED_ID(),
|
|
g_sPlayerLastVeh[eCurrentPlayerPedEnum],
|
|
g_vPlayerLastVehCoord[eCurrentPlayerPedEnum],
|
|
g_fPlayerLastVehHead[eCurrentPlayerPedEnum],
|
|
g_ePlayerLastVehState[eCurrentPlayerPedEnum] #IF USE_TU_CHANGES , g_ePlayerLastVehGen[eCurrentPlayerPedEnum] #ENDIF )
|
|
SAFE_STORE_PLAYER_PED_INFONRM(PLAYER_PED_ID(), FALSE)
|
|
|
|
STORE_DEFAULT_PLAYER_SWITCH_STATE(PLAYER_PED_ID())
|
|
ENDIF
|
|
|
|
PRIVATE_ClearPrioritySwitchFlag(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
g_iLastSuccessfulAmbientLaunchTime = GET_GAME_TIMER()
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 10.0)
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODELNRM(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene)
|
|
WAIT(0)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
ELSE
|
|
// Can't find suitable scene so bail out
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is not suitable")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 2: Wait For Interior
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_2_waitForInterior)
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
iRequestSwitchInterior_count++
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODELNRM(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" isn't using new load scene [", iRequestSwitchInterior_count, "]...")
|
|
#ENDIF
|
|
|
|
// Make sure any interior is pinned before we proceed
|
|
IF sPedScene.roomInterior <> NULL
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
sPedScene.iStage = CONST_SWITCH_2_waitForInterior
|
|
|
|
IF iRequestSwitchInterior_count > 150
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" timeout waiting for a non-null interior to be ready", NATIVE_TO_INT(sPedScene.roomInterior), ", iWaitCount:", iRequestSwitchInterior_count)
|
|
|
|
TEXT_LABEL_63 tScene, tAssert
|
|
tScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
tAssert = GET_STRING_FROM_STRING(tScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(tScene))
|
|
tAssert += " - timeout waiting for a non-null interior to be ready"
|
|
CASSERTLN(DEBUG_SWITCH, tAssert)
|
|
#ENDIF
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
#ENDIF
|
|
|
|
sPedScene.iStage = CONST_SWITCH_3_setupPedTo
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 3: Setup Ped To
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_3_setupPedTo)
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
|
|
enumCharacterList eSelectorChar
|
|
eSelectorChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.eSelectorPed)
|
|
|
|
#IF USE_TU_CHANGES
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
#ENDIF
|
|
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
SET_PED_AS_NO_LONGER_NEEDED(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
#IF USE_TU_CHANGES
|
|
#IF IS_DEBUG_BUILD
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] is dead??? #1816254")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
|
|
sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed] = NULL
|
|
sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
ENDIF
|
|
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene)
|
|
|
|
|
|
PED_VARIATION_STRUCT SVARIATIONS = g_savedglobalsnorman.splayerdata.sinfo.svariations[spedscene.eselectorped]
|
|
|
|
IF CREATE_PLAYER_PED_ON_FOOTNRM(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], sPedScene.ePed, sPedScene.vCreateCoords, sPedScene.fCreateHead)
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) != SWITCH_TYPE_SHORT
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.sVariations[sPedScene.eSelectorPed] = sVariations
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRELOAD_STORED_PLAYER_PED_VARIATIONNRM(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
// Set invisible to avoid any popping issues
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
enumCreateState eCreateState
|
|
IF SafeToCreatePlayerAmbientPedAtLastKnownLocation(sPedScene.ePed, eCreateState)
|
|
CPRINTLN(DEBUG_SWITCH, "safe to create")
|
|
ELSE
|
|
|
|
SWITCH eCreateState
|
|
CASE eCS_3_SWITCH_IN_PROGRESS CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_3_SWITCH_IN_PROGRESS") BREAK
|
|
CASE eCS_5_TOO_MANY_HOURS_PASSED CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_5_TOO_MANY_HOURS_PASSED") BREAK
|
|
CASE eCS_7_TOO_FAR_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_7_TOO_FAR_TO_CREATE") BREAK
|
|
CASE eCS_8_TOO_CLOSE_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_8_TOO_CLOSE_TO_CREATE") BREAK
|
|
CASE eCS_9_SPHERE_VISIBLE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_9_SPHERE_VISIBLE") BREAK
|
|
|
|
// CASE eCS_4_INVALID_LAST_TIME_ACTIVE FALLTHRU
|
|
// CASE eCS_6_INVALID_LAST_KNOWN_COORDS
|
|
// EXIT
|
|
// BREAK
|
|
|
|
CASE eCS_10_POST_MISSION_SWITCH CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_10_POST_MISSION_SWITCH") BREAK
|
|
CASE eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY") BREAK
|
|
CASE eCS_12_NEAR_MISSION_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_12_NEAR_MISSION_TRIGGER") BREAK
|
|
CASE eCS_13_LEADIN_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_13_LEADIN_TRIGGER") BREAK
|
|
CASE eCS_14_DIRECTOR_MODE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_14_DIRECTOR_MODE") BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "DON'T create ")
|
|
CPRINTLN(DEBUG_SWITCH, ENUM_TO_INT(eCreateState))
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
ELSE
|
|
SET_ENTITY_VISIBLE(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], FALSE)
|
|
ENDIF
|
|
|
|
|
|
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// CPRINTLN(DEBUG_SWITCH, "MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 100.0)")
|
|
//
|
|
// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 100.0)
|
|
// ENDIF
|
|
|
|
// Freeze to avoid falling through the world
|
|
FREEZE_ENTITY_POSITION(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], TRUE)
|
|
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
FORCE_ROOM_FOR_SCENE_SELECTOR_PED(sPedScene)
|
|
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - created player ped on foot for scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" ", sPedScene.vCreateCoords)
|
|
#ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) = SWITCH_TYPE_SHORT
|
|
INT iPreloadGametime
|
|
IF NOT HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
iPreloadGametime = GET_GAME_TIMER()
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - start waiting for preload var")
|
|
|
|
WHILE (iPreloadGametime+0500) < GET_GAME_TIMER()
|
|
AND iPreloadGametime > 0
|
|
IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
iPreloadGametime = -1
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - gave up waiting for preload var")
|
|
ENDIF
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
IF NOT (iPreloadGametime = -1)
|
|
CASSERTLN(DEBUG_SWITCH, "wait for ped var preload")
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - finished waiting for preload var (", iPreloadGametime, ", ", GET_GAME_TIMER(), ")")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
sPedScene.iStage = CONST_SWITCH_4_runCodeCam
|
|
ENDIF
|
|
ELSE
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
IF sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID() //#1565907
|
|
SET_ENTITY_AS_MISSION_ENTITY(sPedScene.sSelectorCam.pedTo, TRUE, TRUE)
|
|
ENDIF
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
CLEAR_AREA_OF_PROJECTILES(sPedScene.vCreateCoords, 10.0)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vpedToCoords = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - use global ped for scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"", vpedToCoords)
|
|
#ENDIF
|
|
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo), 5.0)
|
|
AND NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, <<0,0,0>>, 5.0)
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
//
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
CPRINTLN(DEBUG_SWITCH, " pedTo(", vpedToCoords, ") nowhere near vCreateCoords(", "): dist:", VDIST(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)))
|
|
CPRINTLN(DEBUG_SWITCH, "\n\n\n pedTo nowhere near vCreateCoords??\n\n\n")
|
|
|
|
SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, sPedScene.vCreateCoords)
|
|
SET_ENTITY_HEADING(sPedScene.sSelectorCam.pedTo, sPedScene.fCreateHead)
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
sPedScene.iStage = CONST_SWITCH_4_runCodeCam
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 4: Run Code Cam
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_4_runCodeCam)
|
|
BOOL bCreateReplacementForPlayer, bKeepTasks
|
|
bCreateReplacementForPlayer = FALSE
|
|
bKeepTasks = FALSE
|
|
|
|
SWITCH_TYPE eSwitchType
|
|
eSwitchType = SWITCH_TYPE_AUTO
|
|
|
|
FLOAT fGameplayCamPitch, fGameplayCamHeading
|
|
fGameplayCamPitch = 0.0
|
|
fGameplayCamHeading = 0.0
|
|
|
|
BOOL bPauseBeforePan, bPauseBeforeOutro
|
|
bPauseBeforePan = FALSE
|
|
bPauseBeforeOutro = FALSE
|
|
|
|
GetSplineCamFromPlayerToPedParams(sPedScene,
|
|
bCreateReplacementForPlayer, bKeepTasks, eSwitchType,
|
|
fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, iSwitchFlags)
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sLiteral
|
|
sLiteral = ""
|
|
|
|
STRING sScene
|
|
sScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
|
|
HUD_COLOURS eHudColour
|
|
eHudColour = HUD_COLOUR_PURE_WHITE
|
|
#ENDIF
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.tCreateRoom = tPlayerSceneProceduralCam
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_S_EXILE2)
|
|
IF NOT bPauseBeforePan
|
|
CPRINTLN(DEBUG_SWITCH, "force pause on pan for exile2")
|
|
bPauseBeforePan = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// Use a long spline so we can delete the current character and dont see the new character pop into place
|
|
BOOL bRunning_switch_cam_from_player
|
|
bRunning_switch_cam_from_player = FALSE
|
|
IF NOT DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sPedScene.sSelectorCam,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, sPedScene.tCreateRoom)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to ped [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ELSE
|
|
// IF (g_fCamToPhase < 0)
|
|
// g_fCamToPhase = 0
|
|
// ENDIF
|
|
|
|
TEXT_LABEL_63 tEstabShot
|
|
tEstabShot = sPedScene.tCreateRoom
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tEstabShot)
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tPlayerSceneEstabShotSuffix)
|
|
tEstabShot += tPlayerSceneEstabShotSuffix
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_CAM(sPedScene.sSelectorCam,
|
|
sPedScene.sSelectorCam.camTo,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, tEstabShot)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to cam [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_bDrawLiteralSceneString
|
|
SET_TEXT_SCALE(0.4, 0.4)
|
|
SET_TEXT_HUD_COLOUR(eHudColour, 127)
|
|
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
|
|
SET_TEXT_OUTLINE()
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.925 - 0.03, "STRING", sLiteral)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
IF bRunning_switch_cam_from_player
|
|
SWITCH_STATE eSwitchState, eSETUP_SCRIPT_SWITCH_STATE, eTAKE_CONTROL_SCRIPT_SWITCH_STATE
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_ASCENT //SWITCH_STATE_JUMPCUT_DESCENT
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_DESCENT
|
|
IF g_bMagDemoActive
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() <> SWITCH_TYPE_SHORT)
|
|
eSwitchState = GET_PLAYER_SWITCH_STATE()
|
|
|
|
|
|
IF (eSwitchState = SWITCH_STATE_JUMPCUT_DESCENT) OR (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
|
|
#IF USE_TU_CHANGES
|
|
OR (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT
|
|
AND NOT (sPedScene.eScene = PR_SCENE_M_DEFAULT OR sPedScene.eScene = PR_SCENE_F_DEFAULT OR sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
#ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 0)
|
|
IF (g_iPauseOnOutro > 0)
|
|
IF (g_iPausedOnOutroGametime < 0)
|
|
g_iPausedOnOutroGametime = GET_GAME_TIMER()
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "<NRM> g_iPausedOnOutroGametime: ", GET_GAME_TIMER() - g_iPausedOnOutroGametime, " [g_iPauseOnOutro: ", g_iPauseOnOutro, "]", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
|
|
INT iMAX_PAUSED_ON_OUTRO_WAIT
|
|
#IF NOT IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 10000
|
|
#ENDIF
|
|
#IF IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 12500
|
|
#ENDIF
|
|
|
|
IF (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.5)
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.5)
|
|
ENDIF
|
|
|
|
IF GET_GAME_TIMER() > (g_iPausedOnOutroGametime+iMAX_PAUSED_ON_OUTRO_WAIT)
|
|
|
|
DECRAMENT_Pause_Outro_Count()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> ar_ALLOW_PLAYER_SWITCH_OUTRO(", Get_String_From_Ped_Request_Scene_Enum(g_eRecentlySelectedScene), ") //g_iPauseOnOutro:", g_iPauseOnOutro)
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT)
|
|
//CASSERTLN(DEBUG_SWITCH, "fix for bug #1817876")
|
|
ELSE
|
|
TEXT_LABEL_63 sBroke
|
|
sBroke = GET_STRING_FROM_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene),
|
|
GET_LENGTH_OF_LITERAL_STRING("PS_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)))
|
|
sBroke += " broke - held on jumpcut descent for "
|
|
sBroke += iMAX_PAUSED_ON_OUTRO_WAIT/1000
|
|
sBroke += "sec!"
|
|
|
|
CASSERTLN(DEBUG_SWITCH, sBroke)
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
ALLOW_PLAYER_SWITCH_OUTRO()
|
|
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//short range,
|
|
eSwitchState = eSETUP_SCRIPT_SWITCH_STATE
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = eSETUP_SCRIPT_SWITCH_STATE
|
|
ENDIF
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
IF (eSwitchState <> SWITCH_STATE_PREP_DESCENT)
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_INIT, "player_controller.sc is fading in the screen as we are starting a descent switch scene after a load.")
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_DESCENT)
|
|
IF (eSwitchState = SWITCH_STATE_PREP_DESCENT)
|
|
CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (eSwitchState >= eSETUP_SCRIPT_SWITCH_STATE)
|
|
IF CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
IF sPedScene.sSelectorCam.bOKToSwitchPed
|
|
AND (eSwitchState >= eTAKE_CONTROL_SCRIPT_SWITCH_STATE)
|
|
|
|
BOOL bTakenControl = FALSE
|
|
|
|
// IF IS_BIT_SET(g_iSwitchTriggerStateBitset, SWITCH_TRIG_BLOCK_CHAR_SWITCH)
|
|
// AND ((sPedScene.eScene = PR_SCENE_M_DEFAULT) OR (sPedScene.eScene = PR_SCENE_F_DEFAULT) OR (sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> dont take control, SWITCH_TRIG_BLOCK_CHAR_SWITCH is set.")
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, DEBUG_TRIGGER, "<SWITCH-TRIG> Skipping character switch and warping player to lead-in instead.")
|
|
// SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, sPedScene.vCreateCoords)
|
|
//
|
|
// bTakenControl = TRUE
|
|
// ELSE
|
|
IF TAKE_CONTROL_OF_SELECTOR_PED(sPedScene.sSelectorPeds, bCreateReplacementForPlayer, bKeepTasks)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> take control, switch trigger null")
|
|
|
|
bTakenControl = TRUE
|
|
ENDIF
|
|
// ENDIF
|
|
|
|
IF bTakenControl
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
ENDIF
|
|
|
|
PRIVATE_SetDefaultPlayerPedAttributes(sPedScene.sSelectorPeds)
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
PRIVATE_UpdateDrunkenPeds()
|
|
|
|
/* //#1189748
|
|
Set_Leave_Area_Flag_For_All_Blipped_Missions() //#1176160
|
|
*/
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
g_sPlayerPedRequest.sSelectorPeds = sPedScene.sSelectorPeds
|
|
sPedScene.sSelectorCam.bPedSwitched = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF (eSwitchState >= SWITCH_STATE_JUMPCUT_ASCENT)
|
|
SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED(FALSE)
|
|
ENDIF
|
|
|
|
IF g_b_NOT_PlayerHasStartedNewScene
|
|
IF sPedScene.sSelectorCam.bPedSwitched
|
|
|
|
IF PRIVATE_PlayerHasStartedNewScene(sPedScene)
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//
|
|
sPedScene.iStage = CONST_TEST_SWITCH_5
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_5)
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_ACTIVE(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_INTERPOLATING(sPedScene.sSelectorCam.camTo)
|
|
//g_fCamToPhase = GET_CAM_SPLINE_PHASE(sPedScene.sSelectorCam.camTo)
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
|
|
REMOVE_SCENARIO_BLOCKING_AREA(sPedScene.scenarioBlockID)
|
|
CLEAR_PED_NON_CREATION_AREA()
|
|
ELSE
|
|
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camID)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camID)
|
|
ENDIF
|
|
|
|
IF sPedScene.sSelectorCam.iInterpCams > 0
|
|
INT iCamCount
|
|
FOR iCamCount = 0 TO sPedScene.sSelectorCam.iInterpCams-1
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(sPedScene.sSelectorCam.bIsPhoneDisabled)
|
|
ENDIF
|
|
|
|
// Reset all the camera values incase they have to be used again
|
|
sPedScene.sSelectorCam.bSplineCreated = FALSE
|
|
sPedScene.sSelectorCam.bSplineActive = FALSE
|
|
sPedScene.sSelectorCam.bSplineComplete = FALSE
|
|
sPedScene.sSelectorCam.bOKToSwitchPed = FALSE
|
|
sPedScene.sSelectorCam.bPedSwitched = FALSE
|
|
sPedScene.sSelectorCam.bRun = FALSE
|
|
sPedScene.sSelectorCam.iInterpCams = 0
|
|
|
|
// Set the relative heading/pitch if the calling scipt used a custom camera
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(gameplayCamHeading)
|
|
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(gameplayCamPitch)
|
|
IF NOT (g_drunkCameraActive)
|
|
STOP_GAMEPLAY_CAM_SHAKING(TRUE)
|
|
SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE(0)
|
|
SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE(0)
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 1000)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_PLAYER_INVINCIBLE(PLAYER_ID(), FALSE)
|
|
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
|
SET_PED_CAN_BE_TARGETTED(PLAYER_PED_ID(), TRUE)
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
SET_ENTITY_COLLISION(PLAYER_PED_ID(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_SKYSWOOP_STAGE(SKYSWOOP_NONE)
|
|
|
|
// If we didnt switch players then reset the proofs
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, FALSE)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedTo)
|
|
SET_ENTITY_INVINCIBLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
IF (sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID())
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
sPedScene.iStage = CONST_TEST_SWITCH_6
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_6)
|
|
IF sPedScene.roomInterior <> NULL
|
|
UNPIN_INTERIOR(sPedScene.roomInterior)
|
|
ENDIF
|
|
|
|
// FADE_UP_PED_LIGHT(4.0)
|
|
|
|
CLEAR_FOCUS()
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODELNRM(sPedScene.ePed))
|
|
|
|
enumCharacterList eCurrentPed
|
|
eCurrentPed = GET_CURRENT_PLAYER_PED_ENUMNRM()
|
|
|
|
IF eCurrentPed != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPed])
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_vPlayerVeh[eCurrentPed])
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_vPlayerVeh[eCurrentPed])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(g_vPlayerVeh[eCurrentPed], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - g_vPlayerVeh[", GET_PLAYER_PED_STRING(eCurrentPed), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
MODEL_NAMES ePlayerLastVehModel
|
|
ePlayerLastVehModel = g_sPlayerLastVeh[eCurrentPed].model
|
|
IF (ePlayerLastVehModel <> DUMMY_MODEL_FOR_SCRIPT)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(ePlayerLastVehModel)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRIVATE_UpdateChainedPostMissionSwitch(sPedScene.ePed)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_M_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_DEFAULT)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_M_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_OVERRIDE)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_HOSPITAL)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
g_iSelectedDebugPlayerCharScene = ENUM_TO_INT(sPedScene.eScene)
|
|
#ENDIF
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[sPedScene.ePed] = sPedScene.eScene
|
|
PRIVATE_UpdateLastSceneQueue(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
ENDIF
|
|
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
ResetLastKnownPedInfo(g_savedGlobalsnorman.sPlayerData.sInfo, SP_MISSION_NONE)
|
|
ENDIF
|
|
|
|
PRIVATE_UpdatePostMissionSwitch(sPedScene.ePed)
|
|
PRIVATE_UpdateSwitchFriendTimer(sPedScene, sPassedScene)
|
|
PRIVATE_SetPlayerPedWanted(sPedScene)
|
|
|
|
RemoveAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
CLEAR_TIMEOFDAY(g_sMultiplayerTransitionTOD)
|
|
CLEAR_TIMEOFDAY(g_savedGlobalsnorman.sPlayerData.sInfo.sLastTimeActive[sPedScene.ePed])
|
|
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("TOD_SHIFT_SCENE")
|
|
STOP_SOUND(sPedScene.sTimelapse.iSplineStageSound)
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK("TIME_LAPSE")
|
|
STOP_AUDIO_SCENE("TOD_SHIFT_SCENE")
|
|
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_SYSTEM, "<TOD> Audio scene \"TOD_SHIFT_SCENE\" active in ", GET_THIS_SCRIPT_NAME(), ".")
|
|
|
|
// CASSERTLN(DEBUG_SWITCH, "Audio scene \"TOD_SHIFT_SCENE\" active")
|
|
ENDIF
|
|
|
|
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = <<0,0,0>>
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = 0.0
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.iLastKnownRoomKey[sPedScene.ePed] = 0
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownVelocity[sPedScene.ePed] = <<0,0,0>>
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
IF IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene,
|
|
tPlayerSceneProceduralCam)
|
|
//
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" outside and non-null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" inside and null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// PRIVATE_ResetLeaveAreaForPreMissionSwitch(sPedScene)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENENRM - reset g_iLastSuccessfulAmbientLaunchTime \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
//g_fCamToPhase = -1
|
|
//g_bSwitchSplineCamInProgress = FALSE //play final stage of anim
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Mission_Over(sPedScene.iMissionID)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(FALSE)
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_GENERIC_PED_SCENE_STAGE_STRING(INT iStage)
|
|
STRING sStage = "NULL"
|
|
SWITCH iStage
|
|
CASE 0 sStage = "CONST_SWITCH_0_requestSwitch" BREAK
|
|
CASE 1 sStage = "CONST_SWITCH_1_initialiseSwitch" BREAK
|
|
CASE 2 sStage = "CONST_SWITCH_2_waitForInterior" BREAK
|
|
CASE 3 sStage = "CONST_SWITCH_3_setupPedTo" BREAK
|
|
CASE 4 sStage = "CONST_SWITCH_4_runCodeCam" BREAK
|
|
CASE 5 sStage = "CONST_TEST_SWITCH_5" BREAK
|
|
CASE 6 sStage = "CONST_TEST_SWITCH_6" BREAK
|
|
ENDSWITCH
|
|
RETURN sStage
|
|
ENDFUNC
|
|
|
|
PROC SET_GENERIC_PED_SCENE_STAGE(PED_SCENE_STRUCT &sPedScene, INT iStage)
|
|
IF (sPedScene.iStage != iStage)
|
|
sPedScene.iStage = iStage
|
|
PRINTLN("GENERIC_PED_SCENE - SET_GENERIC_PED_SCENE_STAGE - Setting sPedScene.iStage: ", GET_GENERIC_PED_SCENE_STAGE_STRING(iStage))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL GENERIC_PED_SCENE(PED_SCENE_STRUCT &sPedScene,
|
|
SceneGlobalFuncIndex customSetupSelectorCam,
|
|
SceneGlobalFunc customSetupScript, INT iSwitchFlags = 0)
|
|
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) //#582163
|
|
ENDIF
|
|
|
|
//Is the global wait timer at 0?
|
|
INT iGameTime = GET_GAME_TIMER()
|
|
IF iGameTime >= g_iGlobalWaitTime - 1000
|
|
ADD_GLOBAL_COMMUNICATION_DELAY(CC_DELAY_POST_AMBIENT_SWITCH / 3)
|
|
ENDIF
|
|
|
|
// Update GET_GENERIC_PED_SCENE_STAGE_STRING if changed
|
|
CONST_INT CONST_SWITCH_0_requestSwitch 0
|
|
CONST_INT CONST_SWITCH_1_initialiseSwitch 1
|
|
CONST_INT CONST_SWITCH_2_waitForInterior 2
|
|
CONST_INT CONST_SWITCH_3_setupPedTo 3
|
|
CONST_INT CONST_SWITCH_4_runCodeCam 4
|
|
CONST_INT CONST_TEST_SWITCH_5 5
|
|
CONST_INT CONST_TEST_SWITCH_6 6
|
|
|
|
PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
|
|
|
|
VECTOR vPedAreaOffset = <<5,5,4>>
|
|
|
|
// // // // //
|
|
// stage 0: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_0_requestSwitch)
|
|
m_enumMissionCandidateReturnValue eLaunchRequest
|
|
eLaunchRequest = Request_Mission_Launch(sPedScene.iMissionID,
|
|
MCTID_MUST_LAUNCH,
|
|
MISSION_TYPE_SWITCH, TRUE)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SWITCH eLaunchRequest
|
|
CASE MCRET_DENIED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "DENIED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_ACCEPTED
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "ACCEPTED", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
CASE MCRET_PROCESSING
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", "PROCESSING", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" eLaunchRequest MCRET_", ENUM_TO_INT(eLaunchRequest), "_unknown", "\" //", sPedScene.iMissionID)
|
|
BREAK
|
|
ENDSWITCH
|
|
#ENDIF
|
|
|
|
IF (eLaunchRequest = MCRET_ACCEPTED)
|
|
STAT_INCREMENT(SP_AMBIENT_SWITCH_COUNT, 1)
|
|
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_1_initialiseSwitch)
|
|
ENDIF
|
|
|
|
IF NOT (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
IF NOT (g_eRunningMission = SP_MISSION_NONE)
|
|
IF ARE_STRINGS_EQUAL(g_sMissionStaticData[g_eRunningMission].scriptName, GET_THIS_SCRIPT_NAME())
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName = GET_THIS_SCRIPT_NAME()")
|
|
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_1_initialiseSwitch)
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_sMissionStaticData[g_eRunningMission].scriptName <> GET_THIS_SCRIPT_NAME()")
|
|
ENDIF
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
ELIF Get_RC_MissionID_For_This_Script() = RC_MRS_PHILIPS_2
|
|
CPRINTLN(DEBUG_SWITCH, "Get_RC_MissionID_For_This_Script() = RC_MRS_PHILIPS_2")
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_1_initialiseSwitch)
|
|
#endif
|
|
#endif
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_eRunningMission = SP_MISSION_NONE")
|
|
ENDIF
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 1: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_1_initialiseSwitch)
|
|
sPedScene.sTimelapse.iTimelapseCut = 0
|
|
sPedScene.sTimelapse.iTimeSkipStage = 0
|
|
CLEAR_Pause_Outro_Count()
|
|
|
|
sPedScene.eSelectorPed = GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(sPedScene.ePed)
|
|
IF GET_PLAYER_PED_POSITION_FOR_SCENE(sPedScene.eScene, sPedScene.vCreateCoords, sPedScene.fCreateHead, sPedScene.tCreateRoom)
|
|
DISABLE_CELLPHONE(TRUE)
|
|
|
|
VECTOR vCreateCoords
|
|
FLOAT fCreateHead
|
|
IF PRIVATE_Should_Default_PedTo_Coord_Move(sPedScene, vCreateCoords, fCreateHead)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE("updated sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" old sPedScene.vCreateCoords: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(sPedScene.vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(", fCreateHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(sPedScene.fCreateHead)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" older vLastKnownCoords: ")
|
|
#if USE_CLF_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(", fLastKnownHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed])
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(", fLastKnownHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed])
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(", fLastKnownHead: ")
|
|
SAVE_FLOAT_TO_DEBUG_FILE(g_savedGlobals.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed])
|
|
#endif
|
|
#endif
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vVehCoordsOffset
|
|
#if USE_CLF_DLC
|
|
vVehCoordsOffset = g_vPlayerLastVehCoord[sPedScene.ePed] - g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed]
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
vVehCoordsOffset = g_vPlayerLastVehCoord[sPedScene.ePed] - g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed]
|
|
#endif
|
|
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
vVehCoordsOffset = g_vPlayerLastVehCoord[sPedScene.ePed] - g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed]
|
|
#endif
|
|
#endif
|
|
#ENDIF
|
|
|
|
sPedScene.vCreateCoords = vCreateCoords
|
|
sPedScene.fCreateHead = fCreateHead
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD g_vPlayerLastVehCoord: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
SAVE_STRING_TO_DEBUG_FILE(" OLD vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_STRING_TO_DEBUG_FILE(" - ")
|
|
#if USE_CLF_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed])
|
|
#endif
|
|
#endif
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
#if USE_CLF_DLC
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = vCreateCoords
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = fCreateHead
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = vCreateCoords
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = fCreateHead
|
|
#endif
|
|
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = vCreateCoords
|
|
g_savedGlobals.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = fCreateHead
|
|
#endif
|
|
#endif
|
|
|
|
|
|
IF g_ePlayerLastVehState[sPedScene.ePed] = PTVS_2_playerInVehicle
|
|
g_vPlayerLastVehCoord[sPedScene.ePed] = vCreateCoords
|
|
g_fPlayerLastVehHead[sPedScene.ePed] = fCreateHead
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
SAVE_STRING_TO_DEBUG_FILE(" NEWER vVehCoordsOffset: ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vVehCoordsOffset)
|
|
SAVE_STRING_TO_DEBUG_FILE(" + ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(vCreateCoords)
|
|
SAVE_STRING_TO_DEBUG_FILE(" = ")
|
|
SAVE_VECTOR_TO_DEBUG_FILE(g_vPlayerLastVehCoord[sPedScene.ePed])
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
#ENDIF
|
|
|
|
|
|
//CASSERTLN(DEBUG_SWITCH, "Should_Default_PedTo_Coord_Move")
|
|
ENDIF
|
|
|
|
g_eSelectedPlayerCharScene = (sPedScene.eScene)
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
IF NOT IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ELSE
|
|
sPedScene.roomInterior = NULL
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", NONE")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (sPedScene.roomInterior <> NULL)
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_CS_CHECKSHOE)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPEHANDS)
|
|
OR (sPedScene.eScene = PR_SCENE_F_CS_WIPERIGHT)
|
|
SET_INTERIOR_CAPPED(INTERIOR_V_CHOPSHOP, FALSE)
|
|
ENDIF
|
|
|
|
RequestAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
VECTOR vecCamEndPos, vecCamEndRot
|
|
FLOAT vecCamEndFov
|
|
IF SETUP_PLAYER_CAMERA_FOR_SCENE(sPedScene.eScene, vecCamEndPos, vecCamEndRot, vecCamEndFov)
|
|
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
|
|
TEXT_LABEL tRecording_name
|
|
INT iRecording_num
|
|
FLOAT fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
|
|
IF GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
OR GET_PLAYER_VEH_RECORDING_FOR_SCENE(sPedScene.eScene, tRecording_name, iRecording_num,
|
|
fRecording_start, fRecording_skip, fRecording_stop, fSpeed_switch, fSpeed_exit)
|
|
OR SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.sSelectorCam.camTo = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
|
|
SET_CAM_COORD(sPedScene.sSelectorCam.camTo, vecCamEndPos)
|
|
SET_CAM_ROT(sPedScene.sSelectorCam.camTo, vecCamEndRot)
|
|
SET_CAM_FOV(sPedScene.sSelectorCam.camTo, vecCamEndFov)
|
|
// SET_CAM_FAR_CLIP(sPedScene.sSelectorCam.camTo, 800.0)
|
|
|
|
SET_PED_NON_CREATION_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
sPedScene.scenarioBlockID = ADD_SCENARIO_BLOCKING_AREA(vecCamEndPos-vPedAreaOffset, vecCamEndPos+vPedAreaOffset)
|
|
|
|
CLEAR_AREA(vecCamEndPos, VMAG(vPedAreaOffset), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INCRAMENT_Pause_Outro_Count() //for "player_timetable_scene"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENE - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
INCRAMENT_Pause_Outro_Count() //for sPlayerTimetableAdditional_script
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> GENERIC_PED_SCENE - g_iPauseOnOutro: \"", g_iPauseOnOutro, " for \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" addition")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
// Found a suitable scene
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "\n GENERIC_PED_SCENE - Scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is suitable")
|
|
|
|
SaveSuitablePedSceneStructToSwitchLog(sPedScene)
|
|
#ENDIF
|
|
|
|
g_eRecentlySelectedScene = sPedScene.eScene
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL WasNoCharacterBefore = FALSE
|
|
#ENDIF
|
|
enumCharacterList eCurrentPlayerPedEnum
|
|
eCurrentPlayerPedEnum = GET_CURRENT_PLAYER_PED_ENUM()
|
|
IF eCurrentPlayerPedEnum != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
FLOAT fPlayerLastVehEngineHealth, fPlayerLastVehPetrolTankHealth
|
|
fPlayerLastVehEngineHealth = GET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
fPlayerLastVehPetrolTankHealth = GET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum])
|
|
|
|
CONST_FLOAT fCONST_VEH_EXPLODE_HEALTH -1000.0
|
|
IF fPlayerLastVehEngineHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_ENGINE_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
IF fPlayerLastVehPetrolTankHealth < (fCONST_VEH_EXPLODE_HEALTH*0.75)
|
|
SET_VEHICLE_PETROL_TANK_HEALTH(g_vPlayerVeh[eCurrentPlayerPedEnum], fCONST_VEH_EXPLODE_HEALTH*0.25)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
STORE_VEH_DATA_FROM_PED(PLAYER_PED_ID(),
|
|
g_sPlayerLastVeh[eCurrentPlayerPedEnum],
|
|
g_vPlayerLastVehCoord[eCurrentPlayerPedEnum],
|
|
g_fPlayerLastVehHead[eCurrentPlayerPedEnum],
|
|
g_ePlayerLastVehState[eCurrentPlayerPedEnum] #IF USE_TU_CHANGES , g_ePlayerLastVehGen[eCurrentPlayerPedEnum] #ENDIF )
|
|
|
|
SAFE_STORE_PLAYER_PED_INFO(PLAYER_PED_ID(), FALSE)
|
|
|
|
STORE_DEFAULT_PLAYER_SWITCH_STATE(PLAYER_PED_ID())
|
|
|
|
ELSE
|
|
//2496918: BC: player is still MP character. Move them to the scene's location roughly. So when the failsafe comes in it won't move the player miles away.
|
|
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vecCamEndPos, FALSE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
|
|
#IF IS_DEBUG_BUILD
|
|
WasNoCharacterBefore = TRUE
|
|
#ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "[SCENEWARP] GENERIC_PED_SCENE - Player is still the NO_CHARACTER ped. Moving the player to be close to the scene. ", vecCamEndPos, " ")
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRIVATE_ClearPrioritySwitchFlag(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
g_iLastSuccessfulAmbientLaunchTime = GET_GAME_TIMER()
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 10.0)
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODEL(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene, WasNoCharacterBefore)
|
|
WAIT(0)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_3_setupPedTo)
|
|
ELSE
|
|
// Can't find suitable scene so bail out
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" is not suitable")
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 2: Wait For Interior
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_2_waitForInterior)
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_3_setupPedTo)
|
|
iRequestSwitchInterior_count++
|
|
|
|
REQUEST_MODEL(GET_PLAYER_PED_MODEL(sPedScene.ePed))
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" isn't using new load scene [", iRequestSwitchInterior_count, "]...")
|
|
#ENDIF
|
|
|
|
// Make sure any interior is pinned before we proceed
|
|
IF sPedScene.roomInterior <> NULL
|
|
IF NOT IS_INTERIOR_READY(sPedScene.roomInterior)
|
|
PIN_INTERIOR_IN_MEMORY(sPedScene.roomInterior)
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_2_waitForInterior)
|
|
|
|
IF iRequestSwitchInterior_count > 150
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" timeout waiting for a non-null interior to be ready", " //roomInterior:", NATIVE_TO_INT(sPedScene.roomInterior), ", iWaitCount:", iRequestSwitchInterior_count)
|
|
|
|
TEXT_LABEL_63 tScene, tAssert
|
|
tScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
tAssert = GET_STRING_FROM_STRING(tScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(tScene))
|
|
tAssert += " - timeout waiting for a non-null interior to be ready"
|
|
CASSERTLN(DEBUG_SWITCH, tAssert)
|
|
#ENDIF
|
|
|
|
iRequestSwitchInterior_count = 0
|
|
|
|
// Pin the interior into memory so the ped doesnt fall through the ground
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS_WITH_TYPE(sPedScene.vCreateCoords, sPedScene.tCreateRoom)
|
|
ELSE
|
|
sPedScene.roomInterior = GET_INTERIOR_AT_COORDS(sPedScene.vCreateCoords)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", \"", sPedScene.tCreateRoom, "\"")
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" has room interior ", NATIVE_TO_INT(sPedScene.roomInterior), " //", sPedScene.vCreateCoords, ", NONE")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_3_setupPedTo)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 3: Setup Ped To
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_3_setupPedTo)
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
|
|
enumCharacterList eSelectorChar
|
|
eSelectorChar = GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sPedScene.eSelectorPed)
|
|
|
|
#IF USE_TU_CHANGES
|
|
IF NOT IS_ENTITY_DEAD(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
#ENDIF
|
|
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
SET_PED_AS_NO_LONGER_NEEDED(sPedScene.sSelectorPeds.pedID[eSelectorChar])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(sPedScene.sSelectorPeds.pedID[eSelectorChar], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
#IF USE_TU_CHANGES
|
|
#IF IS_DEBUG_BUILD
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - pedID[", GET_PLAYER_PED_STRING(eSelectorChar), "] is dead??? #1816254")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
|
|
sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed] = NULL
|
|
sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
ENDIF
|
|
|
|
IF PRIVATE_Should_PedTo_Be_Created(sPedScene)
|
|
|
|
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// CPRINTLN(DEBUG_SWITCH, "MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 25.0)")
|
|
//
|
|
// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 25.0)
|
|
// ENDIF
|
|
|
|
// Make a dummy ped so we can run cam spline to them
|
|
|
|
#IF USE_CLF_DLC
|
|
PED_VARIATION_STRUCT SVARIATIONS = g_savedGlobalsClifford.SPLAYERDATA.SINFO.SVARIATIONS[SPEDSCENE.ESELECTORPED]
|
|
#ENDIF
|
|
#IF USE_NRM_DLC
|
|
PED_VARIATION_STRUCT SVARIATIONS = G_SAVEDGLOBALSnorman.SPLAYERDATA.SINFO.SVARIATIONS[SPEDSCENE.ESELECTORPED]
|
|
#ENDIF
|
|
|
|
#IF NOT USE_CLF_DLC
|
|
#IF NOT USE_NRM_DLC
|
|
PED_VARIATION_STRUCT SVARIATIONS = G_SAVEDGLOBALS.SPLAYERDATA.SINFO.SVARIATIONS[SPEDSCENE.ESELECTORPED]
|
|
#ENDIF
|
|
#endif
|
|
|
|
BOOL bIgnoreUnderwearcheck = FALSE
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
bIgnoreUnderwearcheck = TRUE
|
|
ENDIF
|
|
|
|
IF CREATE_PLAYER_PED_ON_FOOT(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], sPedScene.ePed, sPedScene.vCreateCoords, sPedScene.fCreateHead, DEFAULT, DEFAULT, bIgnoreUnderwearcheck)
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) != SWITCH_TYPE_SHORT
|
|
g_savedGlobals.sPlayerData.sInfo.sVariations[sPedScene.eSelectorPed] = sVariations
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
PRELOAD_STORED_PLAYER_PED_VARIATION(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
|
|
|
|
// Set invisible to avoid any popping issues
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
enumCreateState eCreateState
|
|
IF SafeToCreatePlayerAmbientPedAtLastKnownLocation(sPedScene.ePed, eCreateState)
|
|
CPRINTLN(DEBUG_SWITCH, "safe to create")
|
|
ELSE
|
|
|
|
SWITCH eCreateState
|
|
CASE eCS_3_SWITCH_IN_PROGRESS CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_3_SWITCH_IN_PROGRESS") BREAK
|
|
CASE eCS_5_TOO_MANY_HOURS_PASSED CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_5_TOO_MANY_HOURS_PASSED") BREAK
|
|
CASE eCS_7_TOO_FAR_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_7_TOO_FAR_TO_CREATE") BREAK
|
|
CASE eCS_8_TOO_CLOSE_TO_CREATE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_8_TOO_CLOSE_TO_CREATE") BREAK
|
|
CASE eCS_9_SPHERE_VISIBLE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_9_SPHERE_VISIBLE") BREAK
|
|
|
|
// CASE eCS_4_INVALID_LAST_TIME_ACTIVE FALLTHRU
|
|
// CASE eCS_6_INVALID_LAST_KNOWN_COORDS
|
|
// EXIT
|
|
// BREAK
|
|
|
|
CASE eCS_10_POST_MISSION_SWITCH CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_10_POST_MISSION_SWITCH") BREAK
|
|
CASE eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_11_SUPRESSED_FOR_FRIEND_ACTIVITY") BREAK
|
|
CASE eCS_12_NEAR_MISSION_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_12_NEAR_MISSION_TRIGGER") BREAK
|
|
CASE eCS_13_LEADIN_TRIGGER CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_13_LEADIN_TRIGGER") BREAK
|
|
CASE eCS_14_DIRECTOR_MODE CPRINTLN(DEBUG_SWITCH, "DON'T create - eCS_14_DIRECTOR_MODE") BREAK
|
|
DEFAULT
|
|
CPRINTLN(DEBUG_SWITCH, "DON'T create ", ENUM_TO_INT(eCreateState))
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
ELSE
|
|
SET_ENTITY_VISIBLE(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], FALSE)
|
|
ENDIF
|
|
|
|
|
|
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// CPRINTLN(DEBUG_SWITCH, "MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 100.0)")
|
|
//
|
|
// MODIFY_VEHICLE_TOP_SPEED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 100.0)
|
|
// ENDIF
|
|
|
|
// Freeze to avoid falling through the world
|
|
FREEZE_ENTITY_POSITION(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed], TRUE)
|
|
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
FORCE_ROOM_FOR_SCENE_SELECTOR_PED(sPedScene)
|
|
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - created player ped on foot for scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\" ", sPedScene.vCreateCoords)
|
|
#ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
AND DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedTo)
|
|
AND GET_IDEAL_PLAYER_SWITCH_TYPE(GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, FALSE), GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, FALSE)) = SWITCH_TYPE_SHORT
|
|
INT iPreloadGametime
|
|
IF NOT HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
|
|
iPreloadGametime = GET_GAME_TIMER()
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - start waiting for preload var")
|
|
|
|
WHILE (iPreloadGametime+0500) < GET_GAME_TIMER()
|
|
AND iPreloadGametime > 0
|
|
IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
iPreloadGametime = -1
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - gave up waiting for preload var")
|
|
ENDIF
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
IF NOT (iPreloadGametime = -1)
|
|
CASSERTLN(DEBUG_SWITCH, "wait for ped var preload")
|
|
ENDIF
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - finished waiting for preload var (", iPreloadGametime, ", ", GET_GAME_TIMER(), ")")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_4_runCodeCam)
|
|
ENDIF
|
|
ELSE
|
|
sPedScene.sSelectorPeds.bInitialised = TRUE
|
|
sPedScene.sSelectorPeds.eNewSelectorPed = sPedScene.eSelectorPed
|
|
sPedScene.sSelectorCam.pedTo = sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed]
|
|
|
|
IF sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID() //#1565907
|
|
SET_ENTITY_AS_MISSION_ENTITY(sPedScene.sSelectorCam.pedTo, TRUE, TRUE)
|
|
ENDIF
|
|
// IF SET_PED_VARIATIONS_FOR_SCENE(sPedScene.eScene, sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// STORE_PLAYER_PED_VARIATIONS(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
// ENDIF
|
|
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
|
|
CLEAR_AREA_OF_PROJECTILES(sPedScene.vCreateCoords, 10.0)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vPedToCoord = GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - use global ped for scene \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"", vPedToCoord)
|
|
#ENDIF
|
|
|
|
IF NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo), 5.0)
|
|
AND NOT ARE_VECTORS_ALMOST_EQUAL(sPedScene.vCreateCoords, <<0,0,0>>, 5.0)
|
|
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
|
|
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
|
|
//
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, " pedTo(", vPedToCoord, ") nowhere near vCreateCoords(", sPedScene.vCreateCoords, "): dist:", VDIST(sPedScene.vCreateCoords, GET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo)))
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "\n\n\n pedTo nowhere near vCreateCoords??\n\n\n")
|
|
|
|
SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedTo, sPedScene.vCreateCoords)
|
|
SET_ENTITY_HEADING(sPedScene.sSelectorCam.pedTo, sPedScene.fCreateHead)
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Preload_SpecialMissionAssets(sPedScene.eScene)
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(sPedScene.sSelectorPeds.pedID[sPedScene.eSelectorPed])
|
|
sPedScene = CALL customSetupSelectorCam(sPedScene)
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_SWITCH_4_runCodeCam)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage 4: Run Code Cam
|
|
//
|
|
IF (sPedScene.iStage = CONST_SWITCH_4_runCodeCam)
|
|
BOOL bCreateReplacementForPlayer, bKeepTasks
|
|
bCreateReplacementForPlayer = FALSE
|
|
bKeepTasks = FALSE
|
|
|
|
SWITCH_TYPE eSwitchType
|
|
eSwitchType = SWITCH_TYPE_AUTO
|
|
|
|
FLOAT fGameplayCamPitch, fGameplayCamHeading
|
|
fGameplayCamPitch = 0.0
|
|
fGameplayCamHeading = 0.0
|
|
|
|
BOOL bPauseBeforePan, bPauseBeforeOutro
|
|
bPauseBeforePan = FALSE
|
|
bPauseBeforeOutro = FALSE
|
|
|
|
GetSplineCamFromPlayerToPedParams(sPedScene,
|
|
bCreateReplacementForPlayer, bKeepTasks, eSwitchType,
|
|
fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, iSwitchFlags)
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
TEXT_LABEL_63 sLiteral
|
|
sLiteral = ""
|
|
|
|
STRING sScene
|
|
sScene = Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)
|
|
|
|
HUD_COLOURS eHudColour
|
|
eHudColour = HUD_COLOUR_PURE_WHITE
|
|
#ENDIF
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene, tPlayerSceneProceduralCam)
|
|
sPedScene.tCreateRoom = tPlayerSceneProceduralCam
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene = PR_SCENE_F_S_EXILE2)
|
|
IF NOT bPauseBeforePan
|
|
CPRINTLN(DEBUG_SWITCH, "force pause on pan for exile2")
|
|
bPauseBeforePan = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE ")
|
|
|
|
// Use a long spline so we can delete the current character and dont see the new character pop into place
|
|
BOOL bRunning_switch_cam_from_player
|
|
bRunning_switch_cam_from_player = FALSE
|
|
IF NOT DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Querying RUN_SWITCH_CAM_FROM_PLAYER_TO_PED... (1)")
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sPedScene.sSelectorCam,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, sPedScene.tCreateRoom)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to ped [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Setting bRunning_switch_cam_from_player to TRUE (1)")
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ELSE
|
|
// IF (g_fCamToPhase < 0)
|
|
// g_fCamToPhase = 0
|
|
// ENDIF
|
|
|
|
TEXT_LABEL_63 tEstabShot
|
|
tEstabShot = sPedScene.tCreateRoom
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tEstabShot)
|
|
TEXT_LABEL_63 tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix
|
|
GET_SYNCHRONIZED_CAM_FOR_TIMETABLE_EXIT_SCENE(sPedScene.eScene, tPlayerSceneSyncAnimCam, tPlayerSceneEstabShotSuffix)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(tPlayerSceneEstabShotSuffix)
|
|
tEstabShot += tPlayerSceneEstabShotSuffix
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Querying RUN_SWITCH_CAM_FROM_PLAYER_TO_PED... (2)")
|
|
IF RUN_SWITCH_CAM_FROM_PLAYER_TO_CAM(sPedScene.sSelectorCam,
|
|
sPedScene.sSelectorCam.camTo,
|
|
eSwitchType, iSwitchFlags, fGameplayCamPitch, fGameplayCamHeading,
|
|
bPauseBeforePan, bPauseBeforeOutro, tEstabShot)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
sLiteral += ("switch cam \"")
|
|
sLiteral += GET_STRING_FROM_STRING(sScene,
|
|
GET_LENGTH_OF_LITERAL_STRING("PR_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(sScene))
|
|
sLiteral += ("\" from player to cam [g_iOutro:")
|
|
sLiteral += (g_iPauseOnOutro)
|
|
sLiteral += ("]")
|
|
#ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Setting bRunning_switch_cam_from_player to TRUE (2)")
|
|
bRunning_switch_cam_from_player = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF g_bDrawLiteralSceneString
|
|
SET_TEXT_SCALE(0.4, 0.4)
|
|
SET_TEXT_HUD_COLOUR(eHudColour, 127)
|
|
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
|
|
SET_TEXT_OUTLINE()
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.925 - 0.03, "STRING", sLiteral)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
IF bRunning_switch_cam_from_player
|
|
PRINTLN("GENERIC_PED_SCENE - bRunning_switch_cam_from_player is TRUE")
|
|
|
|
SWITCH_STATE eSwitchState, eSETUP_SCRIPT_SWITCH_STATE, eTAKE_CONTROL_SCRIPT_SWITCH_STATE
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_ASCENT //SWITCH_STATE_JUMPCUT_DESCENT
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_JUMPCUT_DESCENT
|
|
IF g_bMagDemoActive
|
|
eSETUP_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = SWITCH_STATE_PAN
|
|
ENDIF
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() <> SWITCH_TYPE_SHORT)
|
|
eSwitchState = GET_PLAYER_SWITCH_STATE()
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - (1) eSwitchState: ", Get_String_From_Switch_State(eSwitchState))
|
|
PRINTLN("GENERIC_PED_SCENE - GET_PLAYER_SWITCH_TYPE(): ", Get_String_From_Switch_Type(GET_PLAYER_SWITCH_TYPE()))
|
|
PRINTLN("GENERIC_PED_SCENE - sPedScene.eScene: ", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
|
|
IF (eSwitchState = SWITCH_STATE_JUMPCUT_DESCENT) OR (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
#IF USE_TU_CHANGES
|
|
OR (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT
|
|
AND NOT (sPedScene.eScene = PR_SCENE_M_DEFAULT OR sPedScene.eScene = PR_SCENE_F_DEFAULT OR sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
#ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - GET_PLAYER_SWITCH_JUMP_CUT_INDEX(): ", GET_PLAYER_SWITCH_JUMP_CUT_INDEX())
|
|
PRINTLN("GENERIC_PED_SCENE - g_iPauseOnOutro: ", g_iPauseOnOutro)
|
|
|
|
IF (GET_PLAYER_SWITCH_JUMP_CUT_INDEX() = 0)
|
|
IF (g_iPauseOnOutro > 0)
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - (1) g_iPausedOnOutroGametime: ", g_iPausedOnOutroGametime)
|
|
|
|
IF (g_iPausedOnOutroGametime < 0)
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - (2) g_iPausedOnOutroGametime: ", g_iPausedOnOutroGametime)
|
|
|
|
g_iPausedOnOutroGametime = GET_GAME_TIMER()
|
|
ELSE
|
|
CPRINTLN(DEBUG_SWITCH, "g_iPausedOnOutroGametime: ", GET_GAME_TIMER() - g_iPausedOnOutroGametime, " [g_iPauseOnOutro: ", g_iPauseOnOutro, "]", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
|
|
INT iMAX_PAUSED_ON_OUTRO_WAIT
|
|
#IF NOT IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 10000
|
|
#ENDIF
|
|
#IF IS_NEXTGEN_BUILD
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = 12500
|
|
#ENDIF
|
|
|
|
IF (eSwitchState = SWITCH_STATE_ESTABLISHING_SHOT)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.75)
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
iMAX_PAUSED_ON_OUTRO_WAIT = ROUND(TO_FLOAT(iMAX_PAUSED_ON_OUTRO_WAIT)*1.75)
|
|
ENDIF
|
|
|
|
IF GET_GAME_TIMER() > (g_iPausedOnOutroGametime+iMAX_PAUSED_ON_OUTRO_WAIT)
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - GET_GAME_TIMER(): ", GET_GAME_TIMER(), " > g_iPausedOnOutroGametime+iMAX_PAUSED_ON_OUTRO_WAIT: ", g_iPausedOnOutroGametime+iMAX_PAUSED_ON_OUTRO_WAIT)
|
|
|
|
DECRAMENT_Pause_Outro_Count()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> ar_ALLOW_PLAYER_SWITCH_OUTRO(", Get_String_From_Ped_Request_Scene_Enum(g_eRecentlySelectedScene), ") //g_iPauseOnOutro:", g_iPauseOnOutro)
|
|
|
|
IF (GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_MEDIUM AND eSwitchState = SWITCH_STATE_JUMPCUT_ASCENT)
|
|
//CASSERTLN(DEBUG_SWITCH, "fix for bug #1817876")
|
|
ELSE
|
|
TEXT_LABEL_63 sBroke
|
|
sBroke = GET_STRING_FROM_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene),
|
|
GET_LENGTH_OF_LITERAL_STRING("PS_SCENE_"),
|
|
GET_LENGTH_OF_LITERAL_STRING(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene)))
|
|
sBroke += " broke - held on jumpcut descent for "
|
|
sBroke += iMAX_PAUSED_ON_OUTRO_WAIT/1000
|
|
sBroke += "sec!"
|
|
|
|
CASSERTLN(DEBUG_SWITCH, sBroke)
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
ALLOW_PLAYER_SWITCH_OUTRO()
|
|
|
|
|
|
g_iPausedOnOutroGametime = -1
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT")
|
|
|
|
//short range,
|
|
eSwitchState = eSETUP_SCRIPT_SWITCH_STATE
|
|
eTAKE_CONTROL_SCRIPT_SWITCH_STATE = eSETUP_SCRIPT_SWITCH_STATE
|
|
ENDIF
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
IF (eSwitchState <> SWITCH_STATE_PREP_DESCENT)
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_INIT, "player_controller.sc is fading in the screen as we are starting a descent switch scene after a load.")
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_DESCENT)
|
|
IF (eSwitchState = SWITCH_STATE_PREP_DESCENT)
|
|
CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - (2) eSwitchState: ", Get_String_From_Switch_State(eSwitchState))
|
|
PRINTLN("GENERIC_PED_SCENE - (2) eSETUP_SCRIPT_SWITCH_STATE: ", Get_String_From_Switch_State(eSETUP_SCRIPT_SWITCH_STATE))
|
|
PRINTLN("GENERIC_PED_SCENE - (2) eTAKE_CONTROL_SCRIPT_SWITCH_STATE: ", Get_String_From_Switch_State(eTAKE_CONTROL_SCRIPT_SWITCH_STATE))
|
|
|
|
IF (eSwitchState >= eSETUP_SCRIPT_SWITCH_STATE)
|
|
PRINTLN("GENERIC_PED_SCENE - Progress 1")
|
|
|
|
IF CALL customSetupScript(sPedScene, sPassedScene, iSwitchFlags)
|
|
PRINTLN("GENERIC_PED_SCENE - Progress 2")
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
DEBUG_PRINTCALLSTACK()
|
|
#ENDIF
|
|
|
|
IF NOT sPedScene.sSelectorCam.bPedSwitched
|
|
PRINTLN("GENERIC_PED_SCENE - Progress 3")
|
|
PRINTLN("GENERIC_PED_SCENE - sPedScene.sSelectorCam.bOKToSwitchPed: ", sPedScene.sSelectorCam.bOKToSwitchPed)
|
|
|
|
IF sPedScene.sSelectorCam.bOKToSwitchPed
|
|
AND (eSwitchState >= eTAKE_CONTROL_SCRIPT_SWITCH_STATE)
|
|
PRINTLN("GENERIC_PED_SCENE - Progress 4")
|
|
|
|
BOOL bTakenControl = FALSE
|
|
|
|
// IF IS_BIT_SET(g_iSwitchTriggerStateBitset, SWITCH_TRIG_BLOCK_CHAR_SWITCH)
|
|
// AND ((sPedScene.eScene = PR_SCENE_M_DEFAULT) OR (sPedScene.eScene = PR_SCENE_F_DEFAULT) OR (sPedScene.eScene = PR_SCENE_T_DEFAULT))
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, "<")
|
|
// CPRINTLN(DEBUG_SWITCH, GET_THIS_SCRIPT_NAME())
|
|
// CPRINTLN(DEBUG_SWITCH, "> dont take control, SWITCH_TRIG_BLOCK_CHAR_SWITCH is set.")
|
|
//
|
|
// CPRINTLN(DEBUG_SWITCH, DEBUG_TRIGGER, "<SWITCH-TRIG> Skipping character switch and warping player to lead-in instead.")
|
|
// SET_ENTITY_COORDS(sPedScene.sSelectorCam.pedFrom, sPedScene.vCreateCoords)
|
|
//
|
|
// bTakenControl = TRUE
|
|
// ELSE
|
|
PRINTLN("GENERIC_PED_SCENE - Calling: TAKE_CONTROL_OF_SELECTOR_PED")
|
|
|
|
IF TAKE_CONTROL_OF_SELECTOR_PED(sPedScene.sSelectorPeds, bCreateReplacementForPlayer, bKeepTasks)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> take control, switch trigger null")
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Setting bTakenControl to TRUE")
|
|
|
|
bTakenControl = TRUE
|
|
ENDIF
|
|
// ENDIF
|
|
|
|
IF bTakenControl
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - bTakenControl is TRUE")
|
|
|
|
IF DOES_ENTITY_EXIST(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
ENDIF
|
|
|
|
PRIVATE_SetDefaultPlayerPedAttributes(sPedScene.sSelectorPeds)
|
|
PRIVATE_SetClockTimeForSwitchScene(sPedScene)
|
|
|
|
PRIVATE_UpdateDrunkenPeds()
|
|
|
|
/* //#1189748
|
|
Set_Leave_Area_Flag_For_All_Blipped_Missions() //#1176160
|
|
*/
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
g_sPlayerPedRequest.sSelectorPeds = sPedScene.sSelectorPeds
|
|
sPedScene.sSelectorCam.bPedSwitched = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF (eSwitchState >= SWITCH_STATE_JUMPCUT_ASCENT)
|
|
SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED(FALSE)
|
|
ENDIF
|
|
|
|
IF g_b_NOT_PlayerHasStartedNewScene
|
|
PRINTLN("GENERIC_PED_SCENE - g_b_NOT_PlayerHasStartedNewScene is TRUE")
|
|
|
|
IF sPedScene.sSelectorCam.bPedSwitched
|
|
PRINTLN("GENERIC_PED_SCENE - sPedScene.sSelectorCam.bPedSwitched is TRUE")
|
|
|
|
IF PRIVATE_PlayerHasStartedNewScene(sPedScene)
|
|
PRINTLN("GENERIC_PED_SCENE - Setting g_b_NOT_PlayerHasStartedNewScene to FALSE")
|
|
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_TEST_SWITCH_5)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_5)
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_ACTIVE(sPedScene.sSelectorCam.camTo)
|
|
IF IS_CAM_INTERPOLATING(sPedScene.sSelectorCam.camTo)
|
|
//g_fCamToPhase = GET_CAM_SPLINE_PHASE(sPedScene.sSelectorCam.camTo)
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
ELSE
|
|
// //
|
|
|
|
SET_CAM_ACTIVE(sPedScene.sSelectorCam.camTo, FALSE)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camTo)
|
|
ENDIF
|
|
|
|
REMOVE_SCENARIO_BLOCKING_AREA(sPedScene.scenarioBlockID)
|
|
CLEAR_PED_NON_CREATION_AREA()
|
|
ELSE
|
|
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camID)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camID)
|
|
ENDIF
|
|
|
|
IF sPedScene.sSelectorCam.iInterpCams > 0
|
|
INT iCamCount
|
|
FOR iCamCount = 0 TO sPedScene.sSelectorCam.iInterpCams-1
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camInterpIDs[iCamCount])
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(sPedScene.sSelectorCam.bIsPhoneDisabled)
|
|
ENDIF
|
|
|
|
// Reset all the camera values incase they have to be used again
|
|
sPedScene.sSelectorCam.bSplineCreated = FALSE
|
|
sPedScene.sSelectorCam.bSplineActive = FALSE
|
|
sPedScene.sSelectorCam.bSplineComplete = FALSE
|
|
sPedScene.sSelectorCam.bOKToSwitchPed = FALSE
|
|
sPedScene.sSelectorCam.bPedSwitched = FALSE
|
|
sPedScene.sSelectorCam.bRun = FALSE
|
|
sPedScene.sSelectorCam.iInterpCams = 0
|
|
|
|
// Set the relative heading/pitch if the calling scipt used a custom camera
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(gameplayCamHeading)
|
|
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(gameplayCamPitch)
|
|
IF NOT (g_drunkCameraActive)
|
|
STOP_GAMEPLAY_CAM_SHAKING(TRUE)
|
|
SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE(0)
|
|
SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE(0)
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(FALSE, TRUE, 1000)
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_PLAYER_INVINCIBLE(PLAYER_ID(), FALSE)
|
|
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
|
SET_PED_CAN_BE_TARGETTED(PLAYER_PED_ID(), TRUE)
|
|
|
|
SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE(PLAYER_ID(), 1.0)
|
|
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
SET_ENTITY_COLLISION(PLAYER_PED_ID(), TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_SKYSWOOP_STAGE(SKYSWOOP_NONE)
|
|
|
|
// If we didnt switch players then reset the proofs
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedFrom)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedFrom, FALSE)
|
|
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(sPedScene.sSelectorCam.pedFrom, TRUE)
|
|
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sPedScene.sSelectorCam.pedTo)
|
|
SET_ENTITY_INVINCIBLE(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE(sPedScene.sSelectorCam.pedTo, TRUE)
|
|
|
|
IF (sPedScene.sSelectorCam.pedTo != PLAYER_PED_ID())
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(sPedScene.sSelectorCam.pedTo, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_GENERIC_PED_SCENE_STAGE(sPedScene, CONST_TEST_SWITCH_6)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// // // // //
|
|
// stage xx: Request Switch
|
|
//
|
|
IF (sPedScene.iStage = CONST_TEST_SWITCH_6)
|
|
IF sPedScene.roomInterior <> NULL
|
|
UNPIN_INTERIOR(sPedScene.roomInterior)
|
|
ENDIF
|
|
|
|
// FADE_UP_PED_LIGHT(4.0)
|
|
|
|
CLEAR_FOCUS()
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(sPedScene.ePed))
|
|
|
|
enumCharacterList eCurrentPed
|
|
eCurrentPed = GET_CURRENT_PLAYER_PED_ENUM()
|
|
|
|
IF eCurrentPed != NO_CHARACTER
|
|
IF NOT IS_ENTITY_DEAD(g_vPlayerVeh[eCurrentPed])
|
|
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_vPlayerVeh[eCurrentPed])
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(g_vPlayerVeh[eCurrentPed])
|
|
ELSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
STRING InstanceScript
|
|
INT InstanceId
|
|
InstanceScript = GET_ENTITY_SCRIPT(g_vPlayerVeh[eCurrentPed], InstanceId)
|
|
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - g_vPlayerVeh[", GET_PLAYER_PED_STRING(eCurrentPed), "] belongs to \"", InstanceScript, "\" [", InstanceId, "]")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
MODEL_NAMES ePlayerLastVehModel
|
|
ePlayerLastVehModel = g_sPlayerLastVeh[eCurrentPed].model
|
|
IF (ePlayerLastVehModel <> DUMMY_MODEL_FOR_SCRIPT)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(ePlayerLastVehModel)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRIVATE_UpdateChainedPostMissionSwitch(sPedScene.ePed)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_M_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_DEFAULT)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_DEFAULT)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_M_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_F_OVERRIDE)
|
|
AND (sPedScene.eScene <> PR_SCENE_T_OVERRIDE)
|
|
|
|
AND (sPedScene.eScene <> PR_SCENE_HOSPITAL)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
g_iSelectedDebugPlayerCharScene = ENUM_TO_INT(sPedScene.eScene)
|
|
#ENDIF
|
|
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[sPedScene.ePed] = sPedScene.eScene
|
|
PRIVATE_UpdateLastSceneQueue(sPedScene.ePed, sPedScene.eScene)
|
|
|
|
ENDIF
|
|
|
|
IF sPedScene.eScene = PR_SCENE_HOSPITAL
|
|
#if USE_CLF_DLC
|
|
ResetLastKnownPedInfo(g_savedGlobalsClifford.sPlayerData.sInfo, SP_MISSION_NONE)
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
ResetLastKnownPedInfo(g_savedGlobalsnorman.sPlayerData.sInfo, SP_MISSION_NONE)
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
ResetLastKnownPedInfo(g_savedGlobals.sPlayerData.sInfo, SP_MISSION_NONE)
|
|
#endif
|
|
#endif
|
|
ENDIF
|
|
|
|
PRIVATE_UpdatePostMissionSwitch(sPedScene.ePed)
|
|
PRIVATE_UpdateSwitchFriendTimer(sPedScene, sPassedScene)
|
|
PRIVATE_SetPlayerPedWanted(sPedScene)
|
|
|
|
RemoveAnimDictForTimetableExitSceneCam(sPedScene.eScene)
|
|
|
|
CLEAR_TIMEOFDAY(g_sMultiplayerTransitionTOD)
|
|
|
|
#if USE_CLF_DLC
|
|
CLEAR_TIMEOFDAY(g_savedGlobalsClifford.sPlayerData.sInfo.sLastTimeActive[sPedScene.ePed])
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
CLEAR_TIMEOFDAY(g_savedGlobalsnorman.sPlayerData.sInfo.sLastTimeActive[sPedScene.ePed])
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not use_NRM_DLC
|
|
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[sPedScene.ePed])
|
|
#endif
|
|
#endif
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("TOD_SHIFT_SCENE")
|
|
STOP_SOUND(sPedScene.sTimelapse.iSplineStageSound)
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK("TIME_LAPSE")
|
|
STOP_AUDIO_SCENE("TOD_SHIFT_SCENE")
|
|
|
|
CPRINTLN(DEBUG_SWITCH, DEBUG_SYSTEM, "<TOD> Audio scene \"TOD_SHIFT_SCENE\" active in ", GET_THIS_SCRIPT_NAME(), ".")
|
|
|
|
// CASSERTLN(DEBUG_SWITCH, "Audio scene \"TOD_SHIFT_SCENE\" active")
|
|
ENDIF
|
|
|
|
#if USE_CLF_DLC
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = <<0,0,0>>
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = 0.0
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.iLastKnownRoomKey[sPedScene.ePed] = 0
|
|
g_savedGlobalsClifford.sPlayerData.sInfo.vLastKnownVelocity[sPedScene.ePed] = <<0,0,0>>
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = <<0,0,0>>
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = 0.0
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.iLastKnownRoomKey[sPedScene.ePed] = 0
|
|
g_savedGlobalsnorman.sPlayerData.sInfo.vLastKnownVelocity[sPedScene.ePed] = <<0,0,0>>
|
|
#endif
|
|
#if not USE_CLF_DLC
|
|
#if not USE_NRM_DLC
|
|
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[sPedScene.ePed] = <<0,0,0>>
|
|
g_savedGlobals.sPlayerData.sInfo.fLastKnownHead[sPedScene.ePed] = 0.0
|
|
g_savedGlobals.sPlayerData.sInfo.iLastKnownRoomKey[sPedScene.ePed] = 0
|
|
g_savedGlobals.sPlayerData.sInfo.vLastKnownVelocity[sPedScene.ePed] = <<0,0,0>>
|
|
#endif
|
|
#endif
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sPedScene.tCreateRoom)
|
|
IF IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
|
|
TEXT_LABEL_23 tPlayerSceneProceduralCam
|
|
IF SETUP_PROCEDURAL_CAMERA_FOR_SCENE(sPedScene.eScene,
|
|
tPlayerSceneProceduralCam)
|
|
//
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" outside and non-null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_COLLISION_MARKED_OUTSIDE(sPedScene.vCreateCoords+<<0,0,0.5>>)
|
|
SAVE_STRING_TO_DEBUG_FILE(" ! scene ")
|
|
SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
SAVE_STRING_TO_DEBUG_FILE(".tCreateRoom = \"")
|
|
SAVE_STRING_TO_DEBUG_FILE(sPedScene.tCreateRoom)
|
|
SAVE_STRING_TO_DEBUG_FILE("\" inside and null")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// PRIVATE_ResetLeaveAreaForPreMissionSwitch(sPedScene)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "GENERIC_PED_SCENE - reset g_iLastSuccessfulAmbientLaunchTime \"", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), "\"")
|
|
#ENDIF
|
|
|
|
//g_fCamToPhase = -1
|
|
//g_bSwitchSplineCamInProgress = FALSE //play final stage of anim
|
|
g_b_NOT_PlayerHasStartedNewScene = FALSE
|
|
g_iPausedOnOutroGametime = -1
|
|
|
|
Mission_Over(sPedScene.iMissionID)
|
|
|
|
IF (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_ARM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM1)
|
|
AND (sPedScene.eScene <> PR_SCENE_Fa_PHONECALL_FAM3)
|
|
AND (sPedScene.eScene <> PR_SCENE_Ta_CARSTEAL4)
|
|
DISABLE_CELLPHONE(FALSE)
|
|
ENDIF
|
|
|
|
PRINTLN("GENERIC_PED_SCENE - Returning TRUE")
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC PED_SCENE_STRUCT SceneSetupSelectorCam_DEFAULT(PED_SCENE_STRUCT &sPedScene)
|
|
RETURN sPedScene
|
|
ENDFUNC
|
|
FUNC PED_SCENE_STRUCT SCENE_CUSTOM_SCRIPT_REQUEST(PED_SCENE_STRUCT &sPedScene)
|
|
TEXT_LABEL_31 sPlayerTimetableScene_script = "player_timetable_scene"
|
|
REQUEST_SCRIPT(sPlayerTimetableScene_script)
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableAdditional_script)
|
|
ENDIF
|
|
|
|
//g_bSwitchSplineCamInProgress = TRUE
|
|
g_b_NOT_PlayerHasStartedNewScene = TRUE
|
|
|
|
RETURN sPedScene
|
|
ENDFUNC
|
|
FUNC PED_SCENE_STRUCT SCENE_CUSTOM_SELECTOR_CAM_SETUP(PED_SCENE_STRUCT &sPedScene)
|
|
sPedScene = SCENE_CUSTOM_SCRIPT_REQUEST(sPedScene)
|
|
|
|
// IF NOT SETUP_PED_SCENE_SELECTOR_CAM(sPedScene, SELECTOR_CAM_LONG_SPLINE) // Returns FALSE when the camera spline is complete
|
|
// Destory previous cam spline
|
|
IF DOES_CAM_EXIST(sPedScene.sSelectorCam.camID)
|
|
DESTROY_CAM(sPedScene.sSelectorCam.camID)
|
|
ENDIF
|
|
|
|
sPedScene.sSelectorCam.iInterpCams = 0
|
|
sPedScene.sSelectorCam.bSplineCreated = FALSE
|
|
// ENDIF
|
|
|
|
RETURN sPedScene
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SceneSetupScript_DEFAULT(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene)
|
|
IF (sPedScene.iStage = 0)
|
|
ENDIF
|
|
|
|
sPassedScene.eSceneBuddy = sPassedScene.eSceneBuddy
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
FUNC BOOL SCENE_CUSTOM_SCRIPT_SETUPCLF(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, INT iSwitchFlags)
|
|
BOOL bHaveSetupSceneCustomScript = TRUE
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableScene_script = "player_timetableCLF"
|
|
|
|
CONST_INT iSCENE_STACK_SIZE MULTIPLAYER_MISSION_STACK_SIZE //SHOP_STACK_SIZE //FRIEND_STACK_SIZE //bug 381398
|
|
CONST_INT iADSCENE_STACK_SIZE FRIEND_STACK_SIZE //bug 381398
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableScene_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable scene script \"", sPlayerTimetableScene_script, "\" //", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableScene_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableScene_script)
|
|
ELSE
|
|
SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
|
|
sPassedScene.bDescentOnly = TRUE
|
|
ENDIF
|
|
|
|
START_NEW_SCRIPT_WITH_ARGS(sPlayerTimetableScene_script,
|
|
sPassedScene, SIZE_OF(PLAYER_TIMETABLE_SCENE_STRUCT),
|
|
iSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableScene_script)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableAdditional_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable additional script \"", sPlayerTimetableAdditional_script, "\"...")
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableAdditional_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableAdditional_script)
|
|
ELSE
|
|
START_NEW_SCRIPT(sPlayerTimetableAdditional_script,
|
|
iADSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableAdditional_script)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN bHaveSetupSceneCustomScript
|
|
ENDFUNC
|
|
FUNC BOOL SCENE_CUSTOM_SCRIPT_SETUPNRM(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, INT iSwitchFlags)
|
|
BOOL bHaveSetupSceneCustomScript = TRUE
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableScene_script = "player_timetableNRM"
|
|
|
|
CONST_INT iSCENE_STACK_SIZE MULTIPLAYER_MISSION_STACK_SIZE //SHOP_STACK_SIZE //FRIEND_STACK_SIZE //bug 381398
|
|
CONST_INT iADSCENE_STACK_SIZE FRIEND_STACK_SIZE //bug 381398
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableScene_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable scene script \"", sPlayerTimetableScene_script, "\" //", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableScene_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableScene_script)
|
|
ELSE
|
|
SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
|
|
sPassedScene.bDescentOnly = TRUE
|
|
ENDIF
|
|
|
|
START_NEW_SCRIPT_WITH_ARGS(sPlayerTimetableScene_script,
|
|
sPassedScene, SIZE_OF(PLAYER_TIMETABLE_SCENE_STRUCT),
|
|
iSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableScene_script)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableAdditional_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable additional script \"", sPlayerTimetableAdditional_script, "\"...")
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableAdditional_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableAdditional_script)
|
|
ELSE
|
|
START_NEW_SCRIPT(sPlayerTimetableAdditional_script,
|
|
iADSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableAdditional_script)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN bHaveSetupSceneCustomScript
|
|
ENDFUNC
|
|
FUNC BOOL SCENE_CUSTOM_SCRIPT_SETUP(PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, INT iSwitchFlags)
|
|
|
|
#IF USE_CLF_DLC
|
|
IF g_bLoadedClifford
|
|
RETURN SCENE_CUSTOM_SCRIPT_SETUPCLF(sPedScene,sPassedScene,iSwitchFlags)
|
|
ENDIF
|
|
#ENDIF
|
|
#IF USE_NRM_DLC
|
|
IF g_bLoadedNorman
|
|
RETURN SCENE_CUSTOM_SCRIPT_SETUPNRM(sPedScene,sPassedScene,iSwitchFlags)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
BOOL bHaveSetupSceneCustomScript = TRUE
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableScene_script = "player_timetable_scene"
|
|
|
|
CONST_INT iSCENE_STACK_SIZE MULTIPLAYER_MISSION_STACK_SIZE //SHOP_STACK_SIZE //FRIEND_STACK_SIZE //bug 381398
|
|
CONST_INT iADSCENE_STACK_SIZE FRIEND_STACK_SIZE //bug 381398
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableScene_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable scene script \"", sPlayerTimetableScene_script, "\" //", Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene))
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableScene_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableScene_script)
|
|
ELSE
|
|
SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
|
|
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
|
|
sPassedScene.bDescentOnly = TRUE
|
|
ENDIF
|
|
|
|
START_NEW_SCRIPT_WITH_ARGS(sPlayerTimetableScene_script,
|
|
sPassedScene, SIZE_OF(PLAYER_TIMETABLE_SCENE_STRUCT),
|
|
iSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableScene_script)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
TEXT_LABEL_31 sPlayerTimetableAdditional_script
|
|
IF SETUP_TIMETABLE_SCRIPT_FOR_SCENE(sPedScene.eScene, sPlayerTimetableAdditional_script)
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY(sPlayerTimetableAdditional_script)) <= 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "waiting for player timetable additional script \"", sPlayerTimetableAdditional_script, "\"...")
|
|
#ENDIF
|
|
|
|
bHaveSetupSceneCustomScript = FALSE
|
|
|
|
IF NOT HAS_SCRIPT_LOADED(sPlayerTimetableAdditional_script)
|
|
REQUEST_SCRIPT(sPlayerTimetableAdditional_script)
|
|
ELSE
|
|
START_NEW_SCRIPT(sPlayerTimetableAdditional_script,
|
|
iADSCENE_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED(sPlayerTimetableAdditional_script)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN bHaveSetupSceneCustomScript
|
|
ENDFUNC
|
|
|
|
/// PURPOSE: Calls the approproate func to process the stored scene ID
|
|
/// NOTE: Returns TRUE when the scene is complete.
|
|
FUNC BOOL PROCESS_PLAYER_PED_SCENECLF(PED_SCENE_STRUCT &sPedScene, INT iSwitchFlags = 0)
|
|
RETURN GENERIC_PED_SCENECLF(sPedScene,
|
|
&SCENE_CUSTOM_SCRIPT_REQUEST,
|
|
&SCENE_CUSTOM_SCRIPT_SETUPCLF, iSwitchFlags)
|
|
ENDFUNC
|
|
FUNC BOOL PROCESS_PLAYER_PED_SCENENRM(PED_SCENE_STRUCT &sPedScene, INT iSwitchFlags = 0)
|
|
RETURN GENERIC_PED_SCENENRM(sPedScene,
|
|
&SCENE_CUSTOM_SCRIPT_REQUEST,
|
|
&SCENE_CUSTOM_SCRIPT_SETUPNRM, iSwitchFlags)
|
|
ENDFUNC
|
|
FUNC BOOL PROCESS_PLAYER_PED_SCENE(PED_SCENE_STRUCT &sPedScene, INT iSwitchFlags = 0)
|
|
#if USE_CLF_DLC
|
|
return PROCESS_PLAYER_PED_SCENECLF(sPedScene,iSwitchFlags)
|
|
#endif
|
|
#if USE_NRM_DLC
|
|
return PROCESS_PLAYER_PED_SCENENRM(sPedScene,iSwitchFlags)
|
|
#endif
|
|
|
|
RETURN GENERIC_PED_SCENE(sPedScene,
|
|
&SCENE_CUSTOM_SCRIPT_REQUEST,
|
|
&SCENE_CUSTOM_SCRIPT_SETUP, iSwitchFlags)
|
|
ENDFUNC
|
|
|
|
/// PURPOSE: Calls the approproate func to process the stored scene ID
|
|
/// NOTE: Returns TRUE when the scene is complete.
|
|
PROC Trigger_Specific_Switch_And_Wait(PED_REQUEST_SCENE_ENUM eReqScene, INT iSwitchFlags = 0)
|
|
|
|
|
|
|
|
//for bug 884228
|
|
PED_SCENE_STRUCT sSceneData
|
|
sSceneData.sSelectorPeds.ePreviousSelectorPed = SELECTOR_PED_MICHAEL
|
|
sSceneData.sSelectorPeds.eCurrentSelectorPed = SELECTOR_PED_MICHAEL
|
|
|
|
sSceneData.iStage = 0
|
|
sSceneData.eScene = eReqScene //INT_TO_ENUM(PED_REQUEST_SCENE_ENUM, g_iSelectedDebugPlayerCharScene)
|
|
sSceneData.sSelectorCam.bSplineCreated = FALSE
|
|
|
|
GET_PLAYER_CHAR_FOR_PED_REQUEST_SCENE(sSceneData.eScene, sSceneData.ePed)
|
|
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF IS_BITMASK_AS_ENUM_SET(iSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
|
|
DO_PLAYER_WARP_WITH_LOAD_AND_PAUSE(g_sPedSceneData[eReqScene].vCreateCoords)
|
|
|
|
//#1567006
|
|
IF NOT IS_PED_THE_CURRENT_PLAYER_PED(sSceneData.ePed)
|
|
SELECTOR_SLOTS_ENUM eSlot = GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(sSceneData.ePed)
|
|
WHILE NOT SET_CURRENT_SELECTOR_PED(eSlot)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BOOL bPerformingGenericPedScene = TRUE
|
|
WHILE IS_PLAYER_PLAYING(PLAYER_ID())
|
|
AND bPerformingGenericPedScene
|
|
IF NOT PROCESS_PLAYER_PED_SCENE(sSceneData, iSwitchFlags)
|
|
// iTempRecentlySelectedScene = ENUM_TO_INT(g_eRecentlySelectedScene)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_SWITCH, "<", GET_THIS_SCRIPT_NAME(), "> sSceneData.iStage: ", sSceneData.iStage)
|
|
#ENDIF
|
|
ELSE
|
|
bPerformingGenericPedScene = FALSE
|
|
ENDIF
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
///
|
|
/// RETURNS:
|
|
/// RETURN FALSE //No, I need the trigger to start right away
|
|
/// RETURN TRUE //yeah its cool to prevent the start after switch
|
|
FUNC BOOL PREVENT_MISSION_TRIGGER_DUE_TO_SWITCH_COOLDOWN(enumCharacterList ePed)
|
|
|
|
PED_REQUEST_SCENE_ENUM eReqScene
|
|
FLOAT fScenePercent
|
|
PED_SCENE_STRUCT sPedScene
|
|
PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
|
|
IF GET_PLAYER_PED_SCENE_FOR_CURRENT_TIME(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene)
|
|
|
|
IF (eReqScene = PR_SCENE_F_S_EXILE2)
|
|
OR (eReqScene = PR_SCENE_M_S_FAMILY4)
|
|
OR (eReqScene = PR_SCENE_F_S_AGENCY_2A_a)
|
|
OR (eReqScene = PR_SCENE_F_S_AGENCY_2A_b)
|
|
// OR (eReqScene = PR_SCENE_F_S_AGENCY_2B)
|
|
// OR (eReqScene = PR_SCENE_F_S_AGENCY_2C)
|
|
// OR (eReqScene = PR_SCENE_F_S_FBI1end)
|
|
RETURN FALSE //No, I need the trigger to start right away
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN TRUE //yeah its cool to prevent the start after switch
|
|
ENDFUNC
|