Files
2025-09-29 00:52:08 +02:00

1202 lines
53 KiB
Scheme
Executable File

#IF IS_DEBUG_BUILD
USING "timer_public.sch"
USING "charsheet_public.sch"
//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : player_ped_debug.sch //
// AUTHOR : Alwyn Roberts //
// DESCRIPTION : Handles all the player character related debug procs. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
FUNC STRING Get_String_From_Ped_Request_Scene_Enum(PED_REQUEST_SCENE_ENUM eScene)
SWITCH eScene
CASE PR_SCENE_DEAD RETURN "PR_SCENE_DEAD" BREAK
CASE PR_SCENE_HOSPITAL RETURN "PR_SCENE_HOSPITAL" BREAK
CASE PR_SCENE_M_OVERRIDE RETURN "PR_SCENE_M_OVERRIDE" BREAK
CASE PR_SCENE_F_OVERRIDE RETURN "PR_SCENE_F_OVERRIDE" BREAK
CASE PR_SCENE_T_OVERRIDE RETURN "PR_SCENE_T_OVERRIDE" BREAK
CASE PR_SCENE_M_DEFAULT RETURN "PR_SCENE_M_DEFAULT" BREAK
CASE PR_SCENE_F_DEFAULT RETURN "PR_SCENE_F_DEFAULT" BREAK
CASE PR_SCENE_T_DEFAULT RETURN "PR_SCENE_T_DEFAULT" BREAK
CASE PR_SCENE_Fa_PHONECALL_ARM3 RETURN "PR_SCENE_Fa_PHONECALL_ARM3" BREAK
CASE PR_SCENE_Fa_STRIPCLUB_ARM3 RETURN "PR_SCENE_Fa_STRIPCLUB_ARM3" BREAK
// CASE PR_SCENE_Ma_ARM3 RETURN "PR_SCENE_Ma_ARM3" BREAK
CASE PR_SCENE_Fa_PHONECALL_FAM1 RETURN "PR_SCENE_Fa_PHONECALL_FAM1" BREAK
// CASE PR_SCENE_Fa_STRIPCLUB_FAM1 RETURN "PR_SCENE_Fa_STRIPCLUB_FAM1" BREAK
CASE PR_SCENE_Fa_PHONECALL_FAM3 RETURN "PR_SCENE_Fa_PHONECALL_FAM3" BREAK
// CASE PR_SCENE_Fa_STRIPCLUB_FAM3 RETURN "PR_SCENE_Fa_STRIPCLUB_FAM3" BREAK
CASE PR_SCENE_Fa_FAMILY3 RETURN "PR_SCENE_Fa_FAMILY3" BREAK
CASE PR_SCENE_Fa_FBI1 RETURN "PR_SCENE_Fa_FBI1" BREAK
CASE PR_SCENE_Ta_FBI2 RETURN "PR_SCENE_Ta_FBI2" BREAK
CASE PR_SCENE_Fa_FBI4intro RETURN "PR_SCENE_Fa_FBI4intro" BREAK
CASE PR_SCENE_Ma_FBI4intro RETURN "PR_SCENE_Ma_FBI4intro" BREAK
CASE PR_SCENE_Ma_FBI3 RETURN "PR_SCENE_Ma_FBI3" BREAK
CASE PR_SCENE_Fa_FBI4 RETURN "PR_SCENE_Fa_FBI4" BREAK
CASE PR_SCENE_Fa_FBI5 RETURN "PR_SCENE_Fa_FBI5" BREAK
CASE PR_SCENE_Ma_FBI5 RETURN "PR_SCENE_Ma_FBI5" BREAK
// CASE PR_SCENE_Ma_FAMILY4_a RETURN "PR_SCENE_Ma_FAMILY4_a" BREAK
// CASE PR_SCENE_Ma_FAMILY4_b RETURN "PR_SCENE_Ma_FAMILY4_b" BREAK
CASE PR_SCENE_Ta_FAMILY4 RETURN "PR_SCENE_Ta_FAMILY4" BREAK
CASE PR_SCENE_Ta_FINALEC RETURN "PR_SCENE_Ta_FINALEC" BREAK
CASE PR_SCENE_Fa_AGENCY1 RETURN "PR_SCENE_Fa_AGENCY1" BREAK
CASE PR_SCENE_Fa_AGENCYprep1 RETURN "PR_SCENE_Fa_AGENCYprep1" BREAK
CASE PR_SCENE_Fa_AGENCY3B RETURN "PR_SCENE_Fa_AGENCY3B" BREAK
CASE PR_SCENE_Fa_CARSTEAL1 RETURN "PR_SCENE_Fa_CARSTEAL1" BREAK
CASE PR_SCENE_Fa_AGENCY2 RETURN "PR_SCENE_Fa_AGENCY2" BREAK
CASE PR_SCENE_Ta_CARSTEAL1 RETURN "PR_SCENE_Ta_CARSTEAL1" BREAK
CASE PR_SCENE_Ta_CARSTEAL2 RETURN "PR_SCENE_Ta_CARSTEAL2" BREAK
CASE PR_SCENE_Fa_FBI2 RETURN "PR_SCENE_Fa_FBI2" BREAK
CASE PR_SCENE_Ta_FBI4 RETURN "PR_SCENE_Ta_FBI4" BREAK
CASE PR_SCENE_Fa_DOCKS2B RETURN "PR_SCENE_Fa_DOCKS2B" BREAK
CASE PR_SCENE_Ta_FAMILY6 RETURN "PR_SCENE_Ta_FAMILY6" BREAK
CASE PR_SCENE_Ta_FINALEprepD RETURN "PR_SCENE_Ta_FINALEprepD" BREAK
CASE PR_SCENE_Ma_FAMILY6 RETURN "PR_SCENE_Ma_FAMILY6" BREAK
CASE PR_SCENE_Fa_MARTIN1 RETURN "PR_SCENE_Fa_MARTIN1" BREAK
CASE PR_SCENE_Ma_TREVOR3 RETURN "PR_SCENE_Ma_TREVOR3" BREAK
CASE PR_SCENE_Fa_TREVOR3 RETURN "PR_SCENE_Fa_TREVOR3" BREAK
CASE PR_SCENE_Ma_FRANKLIN2 RETURN "PR_SCENE_Ma_FRANKLIN2" BREAK
CASE PR_SCENE_Ta_FRANKLIN2 RETURN "PR_SCENE_Ta_FRANKLIN2" BREAK
CASE PR_SCENE_Ma_FBI1end RETURN "PR_SCENE_Ma_FBI1end" BREAK
// CASE PR_SCENE_Ma_MARTIN1 RETURN "PR_SCENE_Ma_MARTIN1" BREAK
// CASE PR_SCENE_Ta_MARTIN1 RETURN "PR_SCENE_Ta_MARTIN1" BREAK
CASE PR_SCENE_Fa_RURAL2A RETURN "PR_SCENE_Fa_RURAL2A" BREAK
CASE PR_SCENE_Ta_RURAL2A RETURN "PR_SCENE_Ta_RURAL2A" BREAK
CASE PR_SCENE_Ta_RC_MRSP2 RETURN "PR_SCENE_Ta_RC_MRSP2" BREAK
CASE PR_SCENE_Ma_RURAL1 RETURN "PR_SCENE_Ma_RURAL1" BREAK
CASE PR_SCENE_FTa_FRANKLIN1a RETURN "PR_SCENE_FTa_FRANKLIN1a" BREAK
// CASE PR_SCENE_FTa_FRANKLIN1b RETURN "PR_SCENE_FTa_FRANKLIN1b" BREAK
CASE PR_SCENE_FTa_FRANKLIN1c RETURN "PR_SCENE_FTa_FRANKLIN1c" BREAK
CASE PR_SCENE_FTa_FRANKLIN1d RETURN "PR_SCENE_FTa_FRANKLIN1d" BREAK
CASE PR_SCENE_FTa_FRANKLIN1e RETURN "PR_SCENE_FTa_FRANKLIN1e" BREAK
CASE PR_SCENE_Ma_FAMILY1 RETURN "PR_SCENE_Ma_FAMILY1" BREAK
CASE PR_SCENE_Ma_EXILE2 RETURN "PR_SCENE_Ma_EXILE2" BREAK
CASE PR_SCENE_Fa_EXILE2 RETURN "PR_SCENE_Fa_EXILE2" BREAK
CASE PR_SCENE_Fa_EXILE3 RETURN "PR_SCENE_Fa_EXILE3" BREAK
CASE PR_SCENE_Ma_EXILE3 RETURN "PR_SCENE_Ma_EXILE3" BREAK
CASE PR_SCENE_M4_WASHFACE RETURN "PR_SCENE_M4_WASHFACE" BREAK
CASE PR_SCENE_Fa_MICHAEL3 RETURN "PR_SCENE_Fa_MICHAEL3" BREAK
CASE PR_SCENE_Ta_MICHAEL3 RETURN "PR_SCENE_Ta_MICHAEL3" BREAK
CASE PR_SCENE_Ma_DOCKS2A RETURN "PR_SCENE_Ma_DOCKS2A" BREAK
CASE PR_SCENE_Fa_DOCKS2A RETURN "PR_SCENE_Fa_DOCKS2A" BREAK
CASE PR_SCENE_Fa_FINALE1 RETURN "PR_SCENE_Fa_FINALE1" BREAK
CASE PR_SCENE_Ta_FINALE1 RETURN "PR_SCENE_Ta_FINALE1" BREAK
CASE PR_SCENE_Ta_CARSTEAL4 RETURN "PR_SCENE_Ta_CARSTEAL4" BREAK
CASE PR_SCENE_Fa_FINALE2intro RETURN "PR_SCENE_Fa_FINALE2intro" BREAK
CASE PR_SCENE_Ta_FINALE2intro RETURN "PR_SCENE_Ta_FINALE2intro" BREAK
CASE PR_SCENE_Ma_DOCKS2B RETURN "PR_SCENE_Ma_DOCKS2B" BREAK
CASE PR_SCENE_Ma_FINALE1 RETURN "PR_SCENE_Ma_FINALE1" BREAK
CASE PR_SCENE_Fa_AGENCY3A RETURN "PR_SCENE_Fa_AGENCY3A" BREAK
CASE PR_SCENE_Ma_FINALE2A RETURN "PR_SCENE_Ma_FINALE2A" BREAK
CASE PR_SCENE_Ta_FINALE2A RETURN "PR_SCENE_Ta_FINALE2A" BREAK
CASE PR_SCENE_Ma_FINALE2B RETURN "PR_SCENE_Ma_FINALE2B" BREAK
CASE PR_SCENE_Ta_FINALE2B RETURN "PR_SCENE_Ta_FINALE2B" BREAK
CASE PR_SCENE_Fa_FINALEA RETURN "PR_SCENE_Fa_FINALEA" BREAK
CASE PR_SCENE_Fa_FINALEB RETURN "PR_SCENE_Fa_FINALEB" BREAK
CASE PR_SCENE_Ma_FINALEC RETURN "PR_SCENE_Ma_FINALEC" BREAK
CASE PR_SCENE_Fa_FINALEC RETURN "PR_SCENE_Fa_FINALEC" BREAK
#IF NOT IS_JAPANESE_BUILD
CASE PR_SCENE_T_SHIT RETURN "PR_SCENE_T_SHIT" BREAK
CASE PR_SCENE_T_JERKOFF RETURN "PR_SCENE_T_JERKOFF" BREAK
#ENDIF
CASE PR_SCENE_T_HEADINSINK RETURN "PR_SCENE_T_HEADINSINK" BREAK
CASE PR_SCENE_M_MD_FBI2 RETURN "PR_SCENE_M_MD_FBI2" BREAK
CASE PR_SCENE_F_MD_FRANKLIN2 RETURN "PR_SCENE_F_MD_FRANKLIN2" BREAK
CASE PR_SCENE_M2_BEDROOM RETURN "PR_SCENE_M2_BEDROOM" BREAK
CASE PR_SCENE_M2_SAVEHOUSE0_b RETURN "PR_SCENE_M2_SAVEHOUSE0_b" BREAK
CASE PR_SCENE_M2_SAVEHOUSE1_a RETURN "PR_SCENE_M2_SAVEHOUSE1_a" BREAK
CASE PR_SCENE_M2_SAVEHOUSE1_b RETURN "PR_SCENE_M2_SAVEHOUSE1_b" BREAK
CASE PR_SCENE_M2_SMOKINGGOLF RETURN "PR_SCENE_M2_SMOKINGGOLF" BREAK
CASE PR_SCENE_M4_WAKEUPSCREAM RETURN "PR_SCENE_M4_WAKEUPSCREAM" BREAK
CASE PR_SCENE_M4_WAKESUPSCARED RETURN "PR_SCENE_M4_WAKESUPSCARED" BREAK
// CASE PR_SCENE_M4_HOUSEBED_b RETURN "PR_SCENE_M4_HOUSEBED_b" BREAK
CASE PR_SCENE_M6_HOUSEBED RETURN "PR_SCENE_M6_HOUSEBED" BREAK
CASE PR_SCENE_M4_WATCHINGTV RETURN "PR_SCENE_M4_WATCHINGTV" BREAK
// CASE PR_SCENE_M6_HOUSETV_b RETURN "PR_SCENE_M6_HOUSETV_b" BREAK
CASE PR_SCENE_M2_KIDS_TV RETURN "PR_SCENE_M2_KIDS_TV" BREAK
CASE PR_SCENE_M_POOLSIDE_a RETURN "PR_SCENE_M_POOLSIDE_a" BREAK
CASE PR_SCENE_M_POOLSIDE_b RETURN "PR_SCENE_M_POOLSIDE_b" BREAK
CASE PR_SCENE_M2_CARSLEEP_a RETURN "PR_SCENE_M2_CARSLEEP_a" BREAK
CASE PR_SCENE_M2_CARSLEEP_b RETURN "PR_SCENE_M2_CARSLEEP_b" BREAK
CASE PR_SCENE_M_CANAL_a RETURN "PR_SCENE_M_CANAL_a" BREAK
CASE PR_SCENE_M_CANAL_b RETURN "PR_SCENE_M_CANAL_b" BREAK
CASE PR_SCENE_M_CANAL_c RETURN "PR_SCENE_M_CANAL_c" BREAK
CASE PR_SCENE_M2_LUNCH_a RETURN "PR_SCENE_M2_LUNCH_a" BREAK
// CASE PR_SCENE_M7_LUNCH_b RETURN "PR_SCENE_M7_LUNCH_b" BREAK
CASE PR_SCENE_M4_EXITRESTAURANT RETURN "PR_SCENE_M4_EXITRESTAURANT" BREAK
CASE PR_SCENE_M4_LUNCH_b RETURN "PR_SCENE_M4_LUNCH_b" BREAK
CASE PR_SCENE_M4_CINEMA RETURN "PR_SCENE_M4_CINEMA" BREAK
CASE PR_SCENE_M2_WIFEEXITSCAR RETURN "PR_SCENE_M2_WIFEEXITSCAR" BREAK
CASE PR_SCENE_M2_DROPOFFDAU_a RETURN "PR_SCENE_M2_DROPOFFDAU_a" BREAK
CASE PR_SCENE_M2_DROPOFFDAU_b RETURN "PR_SCENE_M2_DROPOFFDAU_b" BREAK
CASE PR_SCENE_M2_DROPOFFSON_a RETURN "PR_SCENE_M2_DROPOFFSON_a" BREAK
CASE PR_SCENE_M2_DROPOFFSON_b RETURN "PR_SCENE_M2_DROPOFFSON_b" BREAK
CASE PR_SCENE_M_PIER_a RETURN "PR_SCENE_M_PIER_a" BREAK
CASE PR_SCENE_M_PIER_b RETURN "PR_SCENE_M_PIER_b" BREAK
CASE PR_SCENE_M_TRAFFIC_a RETURN "PR_SCENE_M_TRAFFIC_a" BREAK
CASE PR_SCENE_M_TRAFFIC_b RETURN "PR_SCENE_M_TRAFFIC_b" BREAK
CASE PR_SCENE_M_TRAFFIC_c RETURN "PR_SCENE_M_TRAFFIC_c" BREAK
CASE PR_SCENE_M_VWOODPARK_a RETURN "PR_SCENE_M_VWOODPARK_a" BREAK
CASE PR_SCENE_M_VWOODPARK_b RETURN "PR_SCENE_M_VWOODPARK_b" BREAK
CASE PR_SCENE_M_BENCHCALL_a RETURN "PR_SCENE_M_BENCHCALL_a" BREAK
CASE PR_SCENE_M_BENCHCALL_b RETURN "PR_SCENE_M_BENCHCALL_b" BREAK
CASE PR_SCENE_M_PARKEDHILLS_a RETURN "PR_SCENE_M_PARKEDHILLS_a" BREAK
CASE PR_SCENE_M_PARKEDHILLS_b RETURN "PR_SCENE_M_PARKEDHILLS_b" BREAK
CASE PR_SCENE_M6_PARKEDHILLS_a RETURN "PR_SCENE_M6_PARKEDHILLS_a" BREAK
CASE PR_SCENE_M6_PARKEDHILLS_b RETURN "PR_SCENE_M6_PARKEDHILLS_b" BREAK
CASE PR_SCENE_M6_PARKEDHILLS_c RETURN "PR_SCENE_M6_PARKEDHILLS_c" BREAK
CASE PR_SCENE_M6_PARKEDHILLS_d RETURN "PR_SCENE_M6_PARKEDHILLS_d" BREAK
CASE PR_SCENE_M6_PARKEDHILLS_e RETURN "PR_SCENE_M6_PARKEDHILLS_e" BREAK
CASE PR_SCENE_M2_DRIVING_a RETURN "PR_SCENE_M2_DRIVING_a" BREAK
CASE PR_SCENE_M2_DRIVING_b RETURN "PR_SCENE_M2_DRIVING_b" BREAK
CASE PR_SCENE_M6_DRIVING_a RETURN "PR_SCENE_M6_DRIVING_a" BREAK
CASE PR_SCENE_M6_DRIVING_b RETURN "PR_SCENE_M6_DRIVING_b" BREAK
CASE PR_SCENE_M6_DRIVING_c RETURN "PR_SCENE_M6_DRIVING_c" BREAK
CASE PR_SCENE_M6_DRIVING_d RETURN "PR_SCENE_M6_DRIVING_d" BREAK
CASE PR_SCENE_M6_DRIVING_e RETURN "PR_SCENE_M6_DRIVING_e" BREAK
CASE PR_SCENE_M6_DRIVING_f RETURN "PR_SCENE_M6_DRIVING_f" BREAK
CASE PR_SCENE_M6_DRIVING_g RETURN "PR_SCENE_M6_DRIVING_g" BREAK
CASE PR_SCENE_M6_DRIVING_h RETURN "PR_SCENE_M6_DRIVING_h" BREAK
CASE PR_SCENE_M6_RONBORING RETURN "PR_SCENE_M6_RONBORING" BREAK
CASE PR_SCENE_M2_PHARMACY RETURN "PR_SCENE_M2_PHARMACY" BREAK
// CASE PR_SCENE_M4_DOORSTUMBLE RETURN "PR_SCENE_M4_DOORSTUMBLE" BREAK
CASE PR_SCENE_M_COFFEE_a RETURN "PR_SCENE_M_COFFEE_a" BREAK
CASE PR_SCENE_M_COFFEE_b RETURN "PR_SCENE_M_COFFEE_b" BREAK
CASE PR_SCENE_M_COFFEE_c RETURN "PR_SCENE_M_COFFEE_c" BREAK
CASE PR_SCENE_M2_CYCLING_a RETURN "PR_SCENE_M2_CYCLING_a" BREAK
CASE PR_SCENE_M2_CYCLING_b RETURN "PR_SCENE_M2_CYCLING_b" BREAK
CASE PR_SCENE_M2_CYCLING_c RETURN "PR_SCENE_M2_CYCLING_c" BREAK
// CASE PR_SCENE_M_BAR_a RETURN "PR_SCENE_M_BAR_a" BREAK
// CASE PR_SCENE_M_BAR_b RETURN "PR_SCENE_M_BAR_b" BREAK
CASE PR_SCENE_M2_MARINA RETURN "PR_SCENE_M2_MARINA" BREAK
CASE PR_SCENE_M2_ARGUEWITHWIFE RETURN "PR_SCENE_M2_ARGUEWITHWIFE" BREAK
CASE PR_SCENE_M4_PARKEDBEACH RETURN "PR_SCENE_M4_PARKEDBEACH" BREAK
CASE PR_SCENE_M_HOOKERMOTEL RETURN "PR_SCENE_M_HOOKERMOTEL" BREAK
// CASE PR_SCENE_M_HOOKERCAR RETURN "PR_SCENE_M_HOOKERCAR" BREAK
CASE PR_SCENE_M6_MORNING_a RETURN "PR_SCENE_M6_MORNING_a" BREAK
// CASE PR_SCENE_M6_MORNING_b RETURN "PR_SCENE_M6_MORNING_b" BREAK
CASE PR_SCENE_M6_CARSLEEP RETURN "PR_SCENE_M6_CARSLEEP" BREAK
CASE PR_SCENE_M6_HOUSETV_a RETURN "PR_SCENE_M6_HOUSETV_a" BREAK
CASE PR_SCENE_M6_SUNBATHING RETURN "PR_SCENE_M6_SUNBATHING" BREAK
CASE PR_SCENE_M6_DRINKINGBEER RETURN "PR_SCENE_M6_DRINKINGBEER" BREAK
CASE PR_SCENE_M6_ONPHONE RETURN "PR_SCENE_M6_ONPHONE" BREAK
CASE PR_SCENE_M6_DEPRESSED RETURN "PR_SCENE_M6_DEPRESSED" BREAK
CASE PR_SCENE_M6_BOATING RETURN "PR_SCENE_M6_BOATING" BREAK
CASE PR_SCENE_M6_LIQUORSTORE RETURN "PR_SCENE_M6_LIQUORSTORE" BREAK
// CASE PR_SCENE_M6_PILOTSCHOOL RETURN "PR_SCENE_M6_PILOTSCHOOL" BREAK
// CASE PR_SCENE_M6_TRIATHLON RETURN "PR_SCENE_M6_TRIATHLON" BREAK
CASE PR_SCENE_M7_RESTAURANT RETURN "PR_SCENE_M7_RESTAURANT" BREAK
CASE PR_SCENE_M7_LOUNGECHAIRS RETURN "PR_SCENE_M7_LOUNGECHAIRS" BREAK
CASE PR_SCENE_M7_BYESOLOMON_a RETURN "PR_SCENE_M7_BYESOLOMON_a" BREAK
CASE PR_SCENE_M7_BYESOLOMON_b RETURN "PR_SCENE_M7_BYESOLOMON_b" BREAK
CASE PR_SCENE_M7_WIFETENNIS RETURN "PR_SCENE_M7_WIFETENNIS" BREAK
CASE PR_SCENE_M7_ROUNDTABLE RETURN "PR_SCENE_M7_ROUNDTABLE" BREAK
CASE PR_SCENE_M7_REJECTENTRY RETURN "PR_SCENE_M7_REJECTENTRY" BREAK
CASE PR_SCENE_M7_HOOKERS RETURN "PR_SCENE_M7_HOOKERS" BREAK
CASE PR_SCENE_M7_EXITBARBER RETURN "PR_SCENE_M7_EXITBARBER" BREAK
CASE PR_SCENE_M7_EXITFANCYSHOP RETURN "PR_SCENE_M7_EXITFANCYSHOP" BREAK
CASE PR_SCENE_M7_FAKEYOGA RETURN "PR_SCENE_M7_FAKEYOGA" BREAK
CASE PR_SCENE_M7_COFFEE RETURN "PR_SCENE_M7_COFFEE" BREAK
CASE PR_SCENE_M7_GETSREADY RETURN "PR_SCENE_M7_GETSREADY" BREAK
// CASE PR_SCENE_M7_PARKEDHILLS RETURN "PR_SCENE_M7_PARKEDHILLS" BREAK
CASE PR_SCENE_M7_READSCRIPT RETURN "PR_SCENE_M7_READSCRIPT" BREAK
CASE PR_SCENE_M7_EMPLOYEECONVO RETURN "PR_SCENE_M7_EMPLOYEECONVO" BREAK
CASE PR_SCENE_M7_TALKTOGUARD RETURN "PR_SCENE_M7_TALKTOGUARD" BREAK
CASE PR_SCENE_M7_LOT_JIMMY RETURN "PR_SCENE_M7_LOT_JIMMY" BREAK
CASE PR_SCENE_M7_KIDS_TV RETURN "PR_SCENE_M7_KIDS_TV" BREAK
CASE PR_SCENE_M7_KIDS_GAMING RETURN "PR_SCENE_M7_KIDS_GAMING" BREAK
CASE PR_SCENE_M7_OPENDOORFORAMA RETURN "PR_SCENE_M7_OPENDOORFORAMA" BREAK
CASE PR_SCENE_M7_DROPPINGOFFJMY RETURN "PR_SCENE_M7_DROPPINGOFFJMY" BREAK
CASE PR_SCENE_M7_BIKINGJIMMY RETURN "PR_SCENE_M7_BIKINGJIMMY" BREAK
CASE PR_SCENE_M7_TRACEYEXITSCAR RETURN "PR_SCENE_M7_TRACEYEXITSCAR" BREAK
CASE PR_SCENE_M_S_FAMILY4 RETURN "PR_SCENE_M_S_FAMILY4" BREAK
ENDSWITCH
SWITCH eScene
// CASE PR_SCENE_F0_SAVEHOUSE RETURN "PR_SCENE_F0_SAVEHOUSE" BREAK
CASE PR_SCENE_F0_SH_ASLEEP RETURN "PR_SCENE_F0_SH_ASLEEP" BREAK
CASE PR_SCENE_F1_SH_ASLEEP RETURN "PR_SCENE_F1_SH_ASLEEP" BREAK
CASE PR_SCENE_F1_NAPPING RETURN "PR_SCENE_F1_NAPPING" BREAK
CASE PR_SCENE_F1_GETTINGREADY RETURN "PR_SCENE_F1_GETTINGREADY" BREAK
CASE PR_SCENE_F0_SH_READING RETURN "PR_SCENE_F0_SH_READING" BREAK
CASE PR_SCENE_F1_SH_READING RETURN "PR_SCENE_F1_SH_READING" BREAK
CASE PR_SCENE_F0_SH_PUSHUP_a RETURN "PR_SCENE_F0_SH_PUSHUP_a" BREAK
CASE PR_SCENE_F0_SH_PUSHUP_b RETURN "PR_SCENE_F0_SH_PUSHUP_b" BREAK
CASE PR_SCENE_F1_SH_PUSHUP RETURN "PR_SCENE_F1_SH_PUSHUP" BREAK
// CASE PR_SCENE_F1_SAVEHOUSE RETURN "PR_SCENE_F1_SAVEHOUSE" BREAK
CASE PR_SCENE_F1_POOLSIDE_a RETURN "PR_SCENE_F1_POOLSIDE_a" BREAK
CASE PR_SCENE_F1_POOLSIDE_b RETURN "PR_SCENE_F1_POOLSIDE_b" BREAK
CASE PR_SCENE_F1_CLEANINGAPT RETURN "PR_SCENE_F1_CLEANINGAPT" BREAK
CASE PR_SCENE_F1_ONCELL RETURN "PR_SCENE_F1_ONCELL" BREAK
CASE PR_SCENE_F1_SNACKING RETURN "PR_SCENE_F1_SNACKING" BREAK
CASE PR_SCENE_F1_ONLAPTOP RETURN "PR_SCENE_F1_ONLAPTOP" BREAK
CASE PR_SCENE_F1_IRONING RETURN "PR_SCENE_F1_IRONING" BREAK
// CASE PR_SCENE_F0_WATCHINGTV RETURN "PR_SCENE_F0_WATCHINGTV" BREAK
CASE PR_SCENE_F1_WATCHINGTV RETURN "PR_SCENE_F1_WATCHINGTV" BREAK
CASE PR_SCENE_F0_TANISHAFIGHT RETURN "PR_SCENE_F0_TANISHAFIGHT" BREAK
CASE PR_SCENE_F1_NEWHOUSE RETURN "PR_SCENE_F1_NEWHOUSE" BREAK
CASE PR_SCENE_F_MD_KUSH_DOC RETURN "PR_SCENE_F_MD_KUSH_DOC" BREAK
CASE PR_SCENE_F_KUSH_DOC_a RETURN "PR_SCENE_F_KUSH_DOC_a" BREAK
CASE PR_SCENE_F_KUSH_DOC_b RETURN "PR_SCENE_F_KUSH_DOC_b" BREAK
CASE PR_SCENE_F_KUSH_DOC_c RETURN "PR_SCENE_F_KUSH_DOC_c" BREAK
CASE PR_SCENE_F0_GARBAGE RETURN "PR_SCENE_F0_GARBAGE" BREAK
CASE PR_SCENE_F1_GARBAGE RETURN "PR_SCENE_F1_GARBAGE" BREAK
CASE PR_SCENE_F_THROW_CUP RETURN "PR_SCENE_F_THROW_CUP" BREAK
CASE PR_SCENE_F_HIT_CUP_HAND RETURN "PR_SCENE_F_HIT_CUP_HAND" BREAK
CASE PR_SCENE_F_GYM RETURN "PR_SCENE_F_GYM" BREAK
CASE PR_SCENE_F0_WALKCHOP RETURN "PR_SCENE_F0_WALKCHOP" BREAK
CASE PR_SCENE_F0_PLAYCHOP RETURN "PR_SCENE_F0_PLAYCHOP" BREAK
// CASE PR_SCENE_F1_WALKCHOP RETURN "PR_SCENE_F1_WALKCHOP" BREAK
CASE PR_SCENE_F1_PLAYCHOP RETURN "PR_SCENE_F1_PLAYCHOP" BREAK
CASE PR_SCENE_F_WALKCHOP_a RETURN "PR_SCENE_F_WALKCHOP_a" BREAK
CASE PR_SCENE_F_WALKCHOP_b RETURN "PR_SCENE_F_WALKCHOP_b" BREAK
CASE PR_SCENE_F_TRAFFIC_a RETURN "PR_SCENE_F_TRAFFIC_a" BREAK
CASE PR_SCENE_F_TRAFFIC_b RETURN "PR_SCENE_F_TRAFFIC_b" BREAK
CASE PR_SCENE_F_TRAFFIC_c RETURN "PR_SCENE_F_TRAFFIC_c" BREAK
CASE PR_SCENE_F0_BIKE RETURN "PR_SCENE_F0_BIKE" BREAK
CASE PR_SCENE_F0_CLEANCAR RETURN "PR_SCENE_F0_CLEANCAR" BREAK
CASE PR_SCENE_F1_BIKE RETURN "PR_SCENE_F1_BIKE" BREAK
CASE PR_SCENE_F1_CLEANCAR RETURN "PR_SCENE_F1_CLEANCAR" BREAK
CASE PR_SCENE_F1_BYETAXI RETURN "PR_SCENE_F1_BYETAXI" BREAK
CASE PR_SCENE_F_BIKE_c RETURN "PR_SCENE_F_BIKE_c" BREAK
CASE PR_SCENE_F_BIKE_d RETURN "PR_SCENE_F_BIKE_d" BREAK
// CASE PR_SCENE_F_LAMGRAFF RETURN "PR_SCENE_F_LAMGRAFF" BREAK
CASE PR_SCENE_F_CLUB RETURN "PR_SCENE_F_CLUB" BREAK
CASE PR_SCENE_F_CS_CHECKSHOE RETURN "PR_SCENE_F_CS_CHECKSHOE" BREAK
CASE PR_SCENE_F_CS_WIPEHANDS RETURN "PR_SCENE_F_CS_WIPEHANDS" BREAK
CASE PR_SCENE_F_CS_WIPERIGHT RETURN "PR_SCENE_F_CS_WIPERIGHT" BREAK
// CASE PR_SCENE_F_TAUNT RETURN "PR_SCENE_F_TAUNT" BREAK
CASE PR_SCENE_F_LAMTAUNT_P1 RETURN "PR_SCENE_F_LAMTAUNT_P1" BREAK
// CASE PR_SCENE_F_LAMTAUNT_P2 RETURN "PR_SCENE_F_LAMTAUNT_P2" BREAK
CASE PR_SCENE_F_LAMTAUNT_P3 RETURN "PR_SCENE_F_LAMTAUNT_P3" BREAK
CASE PR_SCENE_F_LAMTAUNT_P5 RETURN "PR_SCENE_F_LAMTAUNT_P5" BREAK
CASE PR_SCENE_F_LAMTAUNT_NIGHT RETURN "PR_SCENE_F_LAMTAUNT_NIGHT" BREAK
CASE PR_SCENE_F_BAR_a_01 RETURN "PR_SCENE_F_BAR_a_01" BREAK
CASE PR_SCENE_F_BAR_b_01 RETURN "PR_SCENE_F_BAR_b_01" BREAK
CASE PR_SCENE_F_BAR_c_02 RETURN "PR_SCENE_F_BAR_c_02" BREAK
CASE PR_SCENE_F_BAR_d_02 RETURN "PR_SCENE_F_BAR_d_02" BREAK
CASE PR_SCENE_F_BAR_e_01 RETURN "PR_SCENE_F_BAR_e_01" BREAK
CASE PR_SCENE_F_S_EXILE2 RETURN "PR_SCENE_F_S_EXILE2" BREAK
CASE PR_SCENE_F_S_AGENCY_2A_a RETURN "PR_SCENE_F_S_AGENCY_2A_a" BREAK
CASE PR_SCENE_F_S_AGENCY_2A_b RETURN "PR_SCENE_F_S_AGENCY_2A_b" BREAK
// CASE PR_SCENE_F_S_FBI1end RETURN "PR_SCENE_F_S_FBI1end" BREAK
// CASE PR_SCENE_F_S_AGENCY_2B RETURN "PR_SCENE_F_S_AGENCY_2B" BREAK
// CASE PR_SCENE_F_S_AGENCY_2C RETURN "PR_SCENE_F_S_AGENCY_2C" BREAK
// CASE PR_SCENE_T_STRIPCLUB_a RETURN "PR_SCENE_T_STRIPCLUB_a" BREAK
CASE PR_SCENE_T_SC_MOCKLAPDANCE RETURN "PR_SCENE_T_SC_MOCKLAPDANCE" BREAK
CASE PR_SCENE_T_SC_BAR RETURN "PR_SCENE_T_SC_BAR" BREAK
CASE PR_SCENE_T_SC_CHASE RETURN "PR_SCENE_T_SC_CHASE" BREAK
CASE PR_SCENE_T_STRIPCLUB_out RETURN "PR_SCENE_T_STRIPCLUB_out" BREAK
CASE PR_SCENE_T_ESCORTED_OUT RETURN "PR_SCENE_T_ESCORTED_OUT" BREAK
CASE PR_SCENE_T_CN_CHATEAU_b RETURN "PR_SCENE_T_CN_CHATEAU_b" BREAK
CASE PR_SCENE_T_CN_CHATEAU_c RETURN "PR_SCENE_T_CN_CHATEAU_c" BREAK
CASE PR_SCENE_T_CR_CHATEAU_d RETURN "PR_SCENE_T_CR_CHATEAU_d" BREAK
CASE PR_SCENE_T_GARBAGE_FOOD RETURN "PR_SCENE_T_GARBAGE_FOOD" BREAK
CASE PR_SCENE_T_THROW_FOOD RETURN "PR_SCENE_T_THROW_FOOD" BREAK
CASE PR_SCENE_T_SMOKEMETH RETURN "PR_SCENE_T_SMOKEMETH" BREAK
CASE PR_SCENE_T_FIGHTBBUILD RETURN "PR_SCENE_T_FIGHTBBUILD" BREAK
CASE PR_SCENE_T_ANNOYSUNBATHERS RETURN "PR_SCENE_T_ANNOYSUNBATHERS" BREAK
CASE PR_SCENE_T_CR_BLOCK_CAMERA RETURN "PR_SCENE_T_CR_BLOCK_CAMERA" BREAK
CASE PR_SCENE_T_GUITARBEATDOWN RETURN "PR_SCENE_T_GUITARBEATDOWN" BREAK
CASE PR_SCENE_T_DOCKS_a RETURN "PR_SCENE_T_DOCKS_a" BREAK
CASE PR_SCENE_T_DOCKS_b RETURN "PR_SCENE_T_DOCKS_b" BREAK
CASE PR_SCENE_T_DOCKS_c RETURN "PR_SCENE_T_DOCKS_c" BREAK
CASE PR_SCENE_T_DOCKS_d RETURN "PR_SCENE_T_DOCKS_d" BREAK
// CASE PR_SCENE_T_SWEATSHOP RETURN "PR_SCENE_T_SWEATSHOP" BREAK
CASE PR_SCENE_T_CR_LINGERIE RETURN "PR_SCENE_T_CR_LINGERIE" BREAK
// CASE PR_SCENE_T_CR_MACHINE RETURN "PR_SCENE_T_CR_MACHINE" BREAK
CASE PR_SCENE_T_CR_FUNERAL RETURN "PR_SCENE_T_CR_FUNERAL" BREAK
CASE PR_SCENE_T_CR_DUMPSTER RETURN "PR_SCENE_T_CR_DUMPSTER" BREAK
CASE PR_SCENE_T_CN_WAKETRASH_b RETURN "PR_SCENE_T_CN_WAKETRASH_b" BREAK
CASE PR_SCENE_T_CR_WAKEBEACH RETURN "PR_SCENE_T_CR_WAKEBEACH" BREAK
CASE PR_SCENE_T_CN_WAKEBARN RETURN "PR_SCENE_T_CN_WAKEBARN" BREAK
CASE PR_SCENE_T_CN_WAKETRAIN RETURN "PR_SCENE_T_CN_WAKETRAIN" BREAK
CASE PR_SCENE_T_CR_WAKEROOFTOP RETURN "PR_SCENE_T_CR_WAKEROOFTOP" BREAK
CASE PR_SCENE_T_CN_WAKEMOUNTAIN RETURN "PR_SCENE_T_CN_WAKEMOUNTAIN" BREAK
CASE PR_SCENE_T_CR_ALLEYDRUNK RETURN "PR_SCENE_T_CR_ALLEYDRUNK" BREAK
CASE PR_SCENE_T_SC_ALLEYDRUNK RETURN "PR_SCENE_T_SC_ALLEYDRUNK" BREAK
CASE PR_SCENE_T_PUKEINTOFOUNT RETURN "PR_SCENE_T_PUKEINTOFOUNT" BREAK
CASE PR_SCENE_T_CN_PARK_b RETURN "PR_SCENE_T_CN_PARK_b" BREAK
// CASE PR_SCENE_T_CN_PARK_c RETURN "PR_SCENE_T_CN_PARK_c" BREAK
CASE PR_SCENE_T_CR_POLICE_a RETURN "PR_SCENE_T_CR_POLICE_a" BREAK
CASE PR_SCENE_T_CN_POLICE_b RETURN "PR_SCENE_T_CN_POLICE_b" BREAK
CASE PR_SCENE_T_CN_POLICE_c RETURN "PR_SCENE_T_CN_POLICE_c" BREAK
CASE PR_SCENE_T_NAKED_BRIDGE RETURN "PR_SCENE_T_NAKED_BRIDGE" BREAK
CASE PR_SCENE_T_NAKED_GARDEN RETURN "PR_SCENE_T_NAKED_GARDEN" BREAK
CASE PR_SCENE_T_NAKED_ISLAND RETURN "PR_SCENE_T_NAKED_ISLAND" BREAK
CASE PR_SCENE_T_CR_CHASECAR_a RETURN "PR_SCENE_T_CR_CHASECAR_a" BREAK
CASE PR_SCENE_T_CN_CHASECAR_b RETURN "PR_SCENE_T_CN_CHASECAR_b" BREAK
CASE PR_SCENE_T_CR_CHASEBIKE RETURN "PR_SCENE_T_CR_CHASEBIKE" BREAK
CASE PR_SCENE_T_CR_CHASESCOOTER RETURN "PR_SCENE_T_CR_CHASESCOOTER" BREAK
CASE PR_SCENE_T_CR_BRIDGEDROP RETURN "PR_SCENE_T_CR_BRIDGEDROP" BREAK
CASE PR_SCENE_T_FIGHTBAR_a RETURN "PR_SCENE_T_FIGHTBAR_a" BREAK
CASE PR_SCENE_T_FIGHTBAR_b RETURN "PR_SCENE_T_FIGHTBAR_b" BREAK
CASE PR_SCENE_T_FIGHTBAR_c RETURN "PR_SCENE_T_FIGHTBAR_c" BREAK
CASE PR_SCENE_T_YELLATDOORMAN RETURN "PR_SCENE_T_YELLATDOORMAN" BREAK
CASE PR_SCENE_T_FIGHTYAUCLUB_b RETURN "PR_SCENE_T_FIGHTYAUCLUB_b" BREAK
CASE PR_SCENE_T_FIGHTCASINO RETURN "PR_SCENE_T_FIGHTCASINO" BREAK
CASE PR_SCENE_T_CR_RUDEATCAFE RETURN "PR_SCENE_T_CR_RUDEATCAFE" BREAK
CASE PR_SCENE_T_CR_RAND_TEMPLE RETURN "PR_SCENE_T_CR_RAND_TEMPLE" BREAK
CASE PR_SCENE_T_UNDERPIER RETURN "PR_SCENE_T_UNDERPIER" BREAK
CASE PR_SCENE_T_KONEIGHBOUR RETURN "PR_SCENE_T_KONEIGHBOUR" BREAK
CASE PR_SCENE_T_SCARETRAMP RETURN "PR_SCENE_T_SCARETRAMP" BREAK
CASE PR_SCENE_T_DRUNKHOWLING RETURN "PR_SCENE_T_DRUNKHOWLING" BREAK
CASE PR_SCENE_T_SC_DRUNKHOWLING RETURN "PR_SCENE_T_SC_DRUNKHOWLING" BREAK
CASE PR_SCENE_T_FLOYDSAVEHOUSE RETURN "PR_SCENE_T_FLOYDSAVEHOUSE" BREAK
CASE PR_SCENE_T_FLOYDSPOON_A RETURN "PR_SCENE_T_FLOYDSPOON_A" BREAK
CASE PR_SCENE_T_FLOYDSPOON_B RETURN "PR_SCENE_T_FLOYDSPOON_B" BREAK
CASE PR_SCENE_T_FLOYDSPOON_B2 RETURN "PR_SCENE_T_FLOYDSPOON_B2" BREAK
CASE PR_SCENE_T_FLOYDSPOON_A2 RETURN "PR_SCENE_T_FLOYDSPOON_A2" BREAK
CASE PR_SCENE_T_FLOYDCRYING_A RETURN "PR_SCENE_T_FLOYDCRYING_A" BREAK
CASE PR_SCENE_T_FLOYDCRYING_E0 RETURN "PR_SCENE_T_FLOYDCRYING_E0" BREAK
CASE PR_SCENE_T_FLOYDCRYING_E1 RETURN "PR_SCENE_T_FLOYDCRYING_E1" BREAK
CASE PR_SCENE_T_FLOYDCRYING_E2 RETURN "PR_SCENE_T_FLOYDCRYING_E2" BREAK
CASE PR_SCENE_T_FLOYDCRYING_E3 RETURN "PR_SCENE_T_FLOYDCRYING_E3" BREAK
CASE PR_SCENE_T_FLOYD_BEAR RETURN "PR_SCENE_T_FLOYD_BEAR" BREAK
CASE PR_SCENE_T_FLOYD_DOLL RETURN "PR_SCENE_T_FLOYD_DOLL" BREAK
CASE PR_SCENE_T_FLOYDPINEAPPLE RETURN "PR_SCENE_T_FLOYDPINEAPPLE" BREAK
CASE PR_SCENE_T6_SMOKECRYSTAL RETURN "PR_SCENE_T6_SMOKECRYSTAL" BREAK
// CASE PR_SCENE_T6_BLOWSHITUP RETURN "PR_SCENE_T6_BLOWSHITUP" BREAK
// CASE PR_SCENE_T6_EVENING RETURN "PR_SCENE_T6_EVENING" BREAK
CASE PR_SCENE_T6_METHLAB RETURN "PR_SCENE_T6_METHLAB" BREAK
CASE PR_SCENE_T6_HUNTING1 RETURN "PR_SCENE_T6_HUNTING1" BREAK
CASE PR_SCENE_T6_HUNTING2 RETURN "PR_SCENE_T6_HUNTING2" BREAK
CASE PR_SCENE_T6_HUNTING3 RETURN "PR_SCENE_T6_HUNTING3" BREAK
CASE PR_SCENE_T6_TRAF_AIR RETURN "PR_SCENE_T6_TRAF_AIR" BREAK
// CASE PR_SCENE_T6_DISPOSEBODY_A RETURN "PR_SCENE_T6_DISPOSEBODY_A" BREAK
CASE PR_SCENE_T6_DIGGING RETURN "PR_SCENE_T6_DIGGING" BREAK
CASE PR_SCENE_T6_FLUSHESFOOT RETURN "PR_SCENE_T6_FLUSHESFOOT" BREAK
CASE PR_SCENE_T_CN_PIER RETURN "PR_SCENE_T_CN_PIER" BREAK
CASE PR_SCENE_T6_LAKE RETURN "PR_SCENE_T6_LAKE" BREAK
CASE PR_SCENE_T_FLYING_PLANE RETURN "PR_SCENE_T_FLYING_PLANE" BREAK
CASE NUM_OF_PED_REQUEST_SCENES RETURN "NUM_OF_PED_REQUEST_SCENES" BREAK
CASE PR_SCENE_INVALID RETURN "PR_SCENE_INVALID" BREAK
ENDSWITCH
TEXT_LABEL_63 str = "PR_SCENE_X_"
str += ENUM_TO_INT(eScene)
RETURN GET_STRING_FROM_STRING(str, 0, GET_LENGTH_OF_LITERAL_STRING(str))
ENDFUNC
FUNC STRING Get_String_From_Switch_State(SWITCH_STATE eSwitchState)
SWITCH eSwitchState
CASE SWITCH_STATE_INTRO RETURN "SWITCH_STATE_INTRO" BREAK
CASE SWITCH_STATE_PREP_DESCENT RETURN "SWITCH_STATE_PREP_DESCENT" BREAK
CASE SWITCH_STATE_PREP_FOR_CUT RETURN "SWITCH_STATE_PREP_FOR_CUT" BREAK
CASE SWITCH_STATE_JUMPCUT_ASCENT RETURN "SWITCH_STATE_JUMPCUT_ASCENT" BREAK
CASE SWITCH_STATE_WAITFORINPUT_INTRO RETURN "SWITCH_STATE_WAITFORINPUT_INTRO" BREAK
CASE SWITCH_STATE_WAITFORINPUT RETURN "SWITCH_STATE_WAITFORINPUT" BREAK
CASE SWITCH_STATE_WAITFORINPUT_OUTRO RETURN "SWITCH_STATE_WAITFORINPUT_OUTRO" BREAK
CASE SWITCH_STATE_PAN RETURN "SWITCH_STATE_PAN" BREAK
CASE SWITCH_STATE_JUMPCUT_DESCENT RETURN "SWITCH_STATE_JUMPCUT_DESCENT" BREAK
CASE SWITCH_STATE_OUTRO_HOLD RETURN "SWITCH_STATE_OUTRO_HOLD" BREAK
CASE SWITCH_STATE_OUTRO_SWOOP RETURN "SWITCH_STATE_OUTRO_SWOOP" BREAK
CASE SWITCH_STATE_ESTABLISHING_SHOT RETURN "SWITCH_STATE_ESTABLISHING_SHOT" BREAK
CASE SWITCH_STATE_FINISHED RETURN "SWITCH_STATE_FINISHED" BREAK
// CASE SWITCH_STATE_OUTRO RETURN "SWITCH_STATE_OUTRO" BREAK
ENDSWITCH
TEXT_LABEL_63 str = "SWITCH_STATE_unknown_"
str += ENUM_TO_INT(eSwitchState)
SCRIPT_ASSERT(str)
RETURN GET_STRING_FROM_STRING(str, 0, GET_LENGTH_OF_LITERAL_STRING(str))
ENDFUNC
FUNC STRING Get_String_From_Switch_Type(SWITCH_TYPE eSwitchType)
SWITCH eSwitchType
CASE SWITCH_TYPE_AUTO RETURN "SWITCH_TYPE_AUTO" BREAK
CASE SWITCH_TYPE_LONG RETURN "SWITCH_TYPE_LONG" BREAK
CASE SWITCH_TYPE_MEDIUM RETURN "SWITCH_TYPE_MEDIUM" BREAK
CASE SWITCH_TYPE_SHORT RETURN "SWITCH_TYPE_SHORT" BREAK
ENDSWITCH
TEXT_LABEL_63 str = "SWITCH_TYPE_unknown_"
str += ENUM_TO_INT(eSwitchType)
SCRIPT_ASSERT(str)
RETURN GET_STRING_FROM_STRING(str, 0, GET_LENGTH_OF_LITERAL_STRING(str))
ENDFUNC
FUNC STRING Get_String_From_Switch_Flag(SWITCH_FLAGS eSwitchFlags)
IF (eSwitchFlags = INT_TO_ENUM(SWITCH_FLAGS, 0))
RETURN "SWITCH_FLAG_ZERO"
ENDIF
SWITCH eSwitchFlags
CASE SWITCH_FLAG_SKIP_INTRO RETURN "SKIP_INTRO" BREAK
CASE SWITCH_FLAG_SKIP_OUTRO RETURN "SKIP_OUTRO" BREAK
CASE SWITCH_FLAG_PAUSE_BEFORE_PAN RETURN "PAUSE_BEFORE_PAN" BREAK
CASE SWITCH_FLAG_PAUSE_BEFORE_OUTRO RETURN "PAUSE_BEFORE_OUTRO" BREAK
CASE SWITCH_FLAG_SKIP_PAN RETURN "SKIP_PAN" BREAK
CASE SWITCH_FLAG_UNKNOWN_DEST RETURN "UNKNOWN_DEST" BREAK
CASE SWITCH_FLAG_DESCENT_ONLY RETURN "DESCENT_ONLY" BREAK
CASE SWITCH_FLAG_START_FROM_CAMPOS RETURN "START_FROM_CAMPOS" BREAK
CASE SWITCH_FLAG_PAUSE_BEFORE_ASCENT RETURN "PAUSE_BEFORE_ASCENT" BREAK
CASE SWITCH_FLAG_PAUSE_BEFORE_DESCENT RETURN "PAUSE_BEFORE_DESCENT" BREAK
CASE SWITCH_FLAG_ALLOW_SNIPER_AIM_INTRO RETURN "ALLOW_SNIPER_AIM_INTRO" BREAK
CASE SWITCH_FLAG_ALLOW_SNIPER_AIM_OUTRO RETURN "ALLOW_SNIPER_AIM_OUTRO" BREAK
ENDSWITCH
TEXT_LABEL_63 str = "unknown_"
str += ENUM_TO_INT(eSwitchFlags)
SCRIPT_ASSERT(str)
RETURN GET_STRING_FROM_STRING(str, 0, GET_LENGTH_OF_LITERAL_STRING(str))
ENDFUNC
FUNC STRING Get_String_From_Switch_Flags(SWITCH_FLAGS eSwitchFlags)
TEXT_LABEL_63 tl63Return = ""
TEXT_LABEL_63 tl63Bitfield = DEBUG_GET_BITFIELD_TEXT_LABEL(ENUM_TO_INT(eSwitchFlags))
tl63Return += "Switch flags: "
tl63Return += tl63Bitfield
RETURN GET_STRING_FROM_STRING(tl63Return, 0, GET_LENGTH_OF_LITERAL_STRING(tl63Return))
ENDFUNC
PROC Print_Switch_Flags(SWITCH_FLAGS eSwitchFlags)
BOOL bPrinted = FALSE
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_SKIP_INTRO)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_SKIP_INTRO))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_SKIP_OUTRO)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_SKIP_OUTRO))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_PAN)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_PAUSE_BEFORE_PAN))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_PAUSE_BEFORE_OUTRO)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_PAUSE_BEFORE_OUTRO))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_SKIP_PAN)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_SKIP_PAN))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_UNKNOWN_DEST)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_UNKNOWN_DEST))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_DESCENT_ONLY)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_DESCENT_ONLY))
bPrinted = TRUE
ENDIF
IF IS_BITMASK_ENUM_AS_ENUM_SET(eSwitchFlags, SWITCH_FLAG_START_FROM_CAMPOS)
IF bPrinted
PRINTSTRING("|")
ENDIF
PRINTSTRING(Get_String_From_Switch_Flag(SWITCH_FLAG_START_FROM_CAMPOS))
bPrinted = TRUE
ENDIF
IF NOT bPrinted
PRINTSTRING(Get_String_From_Switch_Flag(eSwitchFlags))
ENDIF
ENDPROC
FUNC STRING Get_String_From_Script_Task_Name(SCRIPT_TASK_NAME eScriptTaskName)
SWITCH eScriptTaskName
CASE SCRIPT_TASK_PLAY_ANIM RETURN "SCRIPT_TASK_PLAY_ANIM" BREAK
CASE SCRIPT_TASK_SYNCHRONIZED_SCENE RETURN "SCRIPT_TASK_SYNCHRONIZED_SCENE" BREAK
CASE SCRIPT_TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING RETURN "SCRIPT_TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING" BREAK
CASE SCRIPT_TASK_STAND_STILL RETURN "SCRIPT_TASK_STAND_STILL" BREAK
CASE SCRIPT_TASK_GO_STRAIGHT_TO_COORD RETURN "SCRIPT_TASK_GO_STRAIGHT_TO_COORD" BREAK
CASE SCRIPT_TASK_AIM_GUN_AT_ENTITY RETURN "SCRIPT_TASK_AIM_GUN_AT_ENTITY" BREAK
CASE SCRIPT_TASK_ENTER_VEHICLE RETURN "SCRIPT_TASK_ENTER_VEHICLE" BREAK
CASE SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD RETURN "SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD" BREAK
CASE SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_COVER RETURN "SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_COVER" BREAK
CASE SCRIPT_TASK_USE_MOBILE_PHONE RETURN "SCRIPT_TASK_USE_MOBILE_PHONE" BREAK
CASE SCRIPT_TASK_WANDER_STANDARD RETURN "SCRIPT_TASK_WANDER_STANDARD" BREAK
CASE SCRIPT_TASK_WANDER_IN_AREA RETURN "SCRIPT_TASK_WANDER_IN_AREA" BREAK
CASE SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD RETURN "SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD" BREAK
ENDSWITCH
TEXT_LABEL_63 str = "SCRIPT_TASK_"
str += ENUM_TO_INT(eScriptTaskName)
RETURN GET_STRING_FROM_STRING(str, 0, GET_LENGTH_OF_LITERAL_STRING(str))
ENDFUNC
FUNC DAY_OF_WEEK Get_DAY_OF_WEEK_From_TIMEOFDAY(TIMEOFDAY sThisTimeOfDay)
/* Sakamoto's algorithm
int dow(int y, int m, int d)
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
*/
int y = GET_TIMEOFDAY_YEAR(sThisTimeOfDay)
int m = ENUM_TO_INT(GET_TIMEOFDAY_MONTH(sThisTimeOfDay))
int d = GET_TIMEOFDAY_DAY(sThisTimeOfDay)
int t[12]
t[JANUARY] = 0
t[FEBRUARY] = 3
t[MARCH] = 2
t[APRIL] = 5
t[MAY] = 0
t[JUNE] = 3
t[JULY] = 5
t[AUGUST] = 1
t[SEPTEMBER] = 4
t[OCTOBER] = 6
t[NOVEMBER] = 2
t[DECEMBER] = 4
y -= ((14 - (m+1)) / 12) //(m+1) < 3
int dow = (y + (y/4) - (y/100) + (y/400) + t[m] + d + 7) % 7
// IF (dow <> ENUM_TO_INT(GET_CLOCK_DAY_OF_WEEK()))
//
// SAVE_STRING_TO_DEBUG_FILE("dow: ")
// SAVE_INT_TO_DEBUG_FILE(dow)
//
// SAVE_STRING_TO_DEBUG_FILE(", ")
// SAVE_INT_TO_DEBUG_FILE(ENUM_TO_INT(GET_CLOCK_DAY_OF_WEEK()))
//
// SAVE_NEWLINE_TO_DEBUG_FILE()
//
// SCRIPT_ASSERT("inconsistent DOW in Get_DAY_OF_WEEK_From_TIMEOFDAY()")
//
// ENDIF
return INT_TO_ENUM(DAY_OF_WEEK, dow)
ENDFUNC
FUNC STRING Get_String_From_TIMEOFDAY(TIMEOFDAY sLastTimeActive)
IF NOT Is_TimeOfDay_Valid(sLastTimeActive)
RETURN "null"
ENDIF
TEXT_LABEL_63 tContTimeText
// # Sat Jul 23 02:16:57 2005
//day
SWITCH Get_DAY_OF_WEEK_From_TIMEOFDAY(sLastTimeActive)
CASE SUNDAY
tContTimeText += "Sun"
BREAK
CASE MONDAY
tContTimeText += "Mon"
BREAK
CASE TUESDAY
tContTimeText += "Tue"
BREAK
CASE WEDNESDAY
tContTimeText += "Wed"
BREAK
CASE THURSDAY
tContTimeText += "Thu"
BREAK
CASE FRIDAY
tContTimeText += "Fri"
BREAK
CASE SATURDAY
tContTimeText += "Sat"
BREAK
DEFAULT
tContTimeText += "day"
tContTimeText += ENUM_TO_INT(Get_DAY_OF_WEEK_From_TIMEOFDAY(sLastTimeActive))
BREAK
ENDSWITCH
tContTimeText += " "
//month
SWITCH INT_TO_ENUM(MONTH_OF_YEAR, GET_TIMEOFDAY_MONTH(sLastTimeActive))
CASE JANUARY
tContTimeText += "Jan"
BREAK
CASE FEBRUARY
tContTimeText += "Feb"
BREAK
CASE MARCH
tContTimeText += "Mar"
BREAK
CASE APRIL
tContTimeText += "Apr"
BREAK
CASE MAY
tContTimeText += "May"
BREAK
CASE JUNE
tContTimeText += "Jun"
BREAK
CASE JULY
tContTimeText += "Jul"
BREAK
CASE AUGUST
tContTimeText += "Aug"
BREAK
CASE SEPTEMBER
tContTimeText += "Sep"
BREAK
CASE OCTOBER
tContTimeText += "Oct"
BREAK
CASE NOVEMBER
tContTimeText += "Nov"
BREAK
CASE DECEMBER
tContTimeText += "Dec"
BREAK
DEFAULT
tContTimeText += "month"
tContTimeText += ENUM_TO_INT(GET_TIMEOFDAY_MONTH(sLastTimeActive))
BREAK
ENDSWITCH
tContTimeText += " "
//day of month
tContTimeText += GET_TIMEOFDAY_DAY(sLastTimeActive)
tContTimeText += " "
//hour
IF GET_TIMEOFDAY_HOUR(sLastTimeActive) < 10
tContTimeText += "0"
ENDIF
tContTimeText += GET_TIMEOFDAY_HOUR(sLastTimeActive)
//minute
tContTimeText += ":"
IF GET_TIMEOFDAY_MINUTE(sLastTimeActive) < 10
tContTimeText += "0"
ENDIF
tContTimeText += GET_TIMEOFDAY_MINUTE(sLastTimeActive)
//second
tContTimeText += ":"
IF GET_TIMEOFDAY_SECOND(sLastTimeActive) < 10
tContTimeText += "0"
ENDIF
tContTimeText += GET_TIMEOFDAY_SECOND(sLastTimeActive)
//iYear
tContTimeText += " "
tContTimeText += GET_TIMEOFDAY_YEAR(sLastTimeActive)
RETURN GET_STRING_FROM_STRING(tContTimeText, 0, GET_LENGTH_OF_LITERAL_STRING(tContTimeText))
ENDFUNC
FUNC STRING GET_STRING_FROM_TIMEOFDAY_DIFFERENCE(INT iSeconds, INT iMinutes, INT iHours, INT iDays, INT iMonths, INT iYears)
INT iTimeMentioned = 0
TEXT_LABEL_63 str
IF iYears > 0
IF iTimeMentioned < 3
str += iYears
str += " years, "
iTimeMentioned++
ENDIF
ENDIF
IF iMonths > 0
IF iTimeMentioned < 3
str += iMonths
str += " months, "
iTimeMentioned++
ENDIF
ENDIF
IF iDays > 0
IF iTimeMentioned < 3
str += iDays
str += " days, "
iTimeMentioned++
ENDIF
ENDIF
IF iHours > 0
IF iTimeMentioned < 3
str += iHours
str += " hours, "
iTimeMentioned++
ENDIF
ENDIF
IF iMinutes > 0
IF iTimeMentioned < 3
str += iMinutes
str += " minutes, "
iTimeMentioned++
ENDIF
ENDIF
IF iSeconds > 0
IF iTimeMentioned < 3
str += iSeconds
str += " seconds, "
iTimeMentioned++
ENDIF
ENDIF
INT iStrLength = GET_LENGTH_OF_LITERAL_STRING(str)
IF iStrLength <= 0
RETURN ""
ENDIF
RETURN GET_STRING_FROM_STRING(str, 0 , iStrLength)
ENDFUNC
FUNC STRING DEBUG_get_string_room_hash_key(iNT iPlayerHashKey)
SWITCH iPlayerHashKey
CASE HASH("") RETURN "" BREAK
CASE 0 RETURN "0" BREAK
CASE HASH("0") RETURN "0" BREAK
CASE HASH("strp3mainrm") RETURN "strp3mainrm" BREAK
CASE HASH("PH_MUSTER_ROOM") RETURN "PH_MUSTER_ROOM" BREAK
CASE HASH("V_51_ShopFloorRm") RETURN "V_51_ShopFloorRm" BREAK
CASE HASH("V_ClothesMidRm") RETURN "V_ClothesMidRm" BREAK
CASE HASH("MainRoom") RETURN "MainRoom" BREAK
CASE HASH("V_7_GunShopRm") RETURN "V_7_GunShopRm" BREAK
CASE HASH("V_22_GunShopRm") RETURN "V_22_GunShopRm" BREAK
ENDSWITCH
TEXT_LABEL_31 sPlayerRoomName = "iRoomHash:"
sPlayerRoomName += iPlayerHashKey
RETURN GET_STRING_FROM_STRING(sPlayerRoomName, 0, GET_LENGTH_OF_LITERAL_STRING(sPlayerRoomName))
ENDFUNC
PROC SaveNewGameToSwitchLog()
IF g_bMagDemoActive
EXIT
ENDIF
STRING sFile = "player_switch_scene.log"
STRING sPath = "debug:\\" //"X:/gta5/build/dev/"
// OPEN_NAMED_DEBUG_FILE(sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("NEW GAME - ", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("<", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("output_v", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_GAME_VERSION_NAME(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(">", sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
// CLOSE_DEBUG_FILE()
ENDPROC
/// PURPOSE: Returns the ped enum equivalent to selector slot enum
PROC SAVE_SELECTOR_SLOT_TO_NAMED_DEBUG_FILE(SELECTOR_SLOTS_ENUM eSlot, string sPath, string sFile)
IF eSlot = SELECTOR_PED_MICHAEL
SAVE_STRING_TO_NAMED_DEBUG_FILE("Michael", sPath, sFile)
ELIF eSlot = SELECTOR_PED_TREVOR
SAVE_STRING_TO_NAMED_DEBUG_FILE("Trevor", sPath, sFile)
ELIF eSlot = SELECTOR_PED_FRANKLIN
SAVE_STRING_TO_NAMED_DEBUG_FILE("Franklin", sPath, sFile)
ELIF eSlot = SELECTOR_PED_MULTIPLAYER
SAVE_STRING_TO_NAMED_DEBUG_FILE("Multiplayer", sPath, sFile)
ELSE
SAVE_STRING_TO_NAMED_DEBUG_FILE("NUMBER_OF_SELECTOR_PEDS", sPath, sFile)
ENDIF
ENDPROC
PROC SaveSuitablePedSceneStructToSwitchLog(PED_SCENE_STRUCT &sPedScene)
IF g_bMagDemoActive
EXIT
ENDIF
STRING sFile = "player_switch_scene.log"
STRING sPath = "debug:\\" //"X:/gta5/build/dev/"
// OPEN_NAMED_DEBUG_FILE(sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("\"", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_THIS_SCRIPT_NAME(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(".sc\": \" ", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(sPedScene.eScene), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" \" ", sPath, sFile)
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
OR (sPedScene.eScene = PR_SCENE_F_DEFAULT)
OR (sPedScene.eScene = PR_SCENE_T_DEFAULT)
OR (sPedScene.eScene = PR_SCENE_HOSPITAL)
OR (sPedScene.eScene = PR_SCENE_M_OVERRIDE)
OR (sPedScene.eScene = PR_SCENE_F_OVERRIDE)
OR (sPedScene.eScene = PR_SCENE_T_OVERRIDE)
SAVE_VECTOR_TO_NAMED_DEBUG_FILE(sPedScene.vCreateCoords, sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ", sPath, sFile)
IF (sPedScene.eScene = PR_SCENE_M_DEFAULT)
IF (g_sPlayerLastVeh[CHAR_MICHAEL].model <> DUMMY_MODEL_FOR_SCRIPT)
SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_MODEL_NAME_FOR_DEBUG(g_sPlayerLastVeh[CHAR_MICHAEL].model), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ", sPath, sFile)
ENDIF
ELIF (sPedScene.eScene = PR_SCENE_F_DEFAULT)
IF (g_sPlayerLastVeh[CHAR_FRANKLIN].model <> DUMMY_MODEL_FOR_SCRIPT)
SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_MODEL_NAME_FOR_DEBUG(g_sPlayerLastVeh[CHAR_FRANKLIN].model), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ", sPath, sFile)
ENDIF
ELIF (sPedScene.eScene = PR_SCENE_T_DEFAULT)
IF (g_sPlayerLastVeh[CHAR_TREVOR].model <> DUMMY_MODEL_FOR_SCRIPT)
SAVE_STRING_TO_NAMED_DEBUG_FILE(GET_MODEL_NAME_FOR_DEBUG(g_sPlayerLastVeh[CHAR_TREVOR].model), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ", sPath, sFile)
ENDIF
ENDIF
ENDIF
SAVE_STRING_TO_NAMED_DEBUG_FILE("is suitable", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" [ ", sPath, sFile)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_CLOCK_HOURS(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(":", sPath, sFile)
IF (GET_CLOCK_MINUTES() < 10) SAVE_STRING_TO_NAMED_DEBUG_FILE("0", sPath, sFile) ENDIF SAVE_INT_TO_NAMED_DEBUG_FILE(GET_CLOCK_MINUTES(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ", sPath, sFile)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_CLOCK_DAY_OF_MONTH(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("/", sPath, sFile)
SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(GET_CLOCK_MONTH())+1, sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("/", sPath, sFile)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_CLOCK_YEAR(), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" ]", sPath, sFile)
// SAVE_STRING_TO_NAMED_DEBUG_FILE(", prev \"", sPath, sFile)
// SAVE_SELECTOR_SLOT_TO_NAMED_DEBUG_FILE(sPedScene.sSelectorPeds.ePreviousSelectorPed, sPath, sFile)
// SAVE_STRING_TO_NAMED_DEBUG_FILE("\"", sPath, sFile)
//
// SAVE_STRING_TO_NAMED_DEBUG_FILE(", current \"", sPath, sFile)
// SAVE_SELECTOR_SLOT_TO_NAMED_DEBUG_FILE(sPedScene.sSelectorPeds.eCurrentSelectorPed, sPath, sFile)
// SAVE_STRING_TO_NAMED_DEBUG_FILE("\"", sPath, sFile)
//
// SAVE_STRING_TO_NAMED_DEBUG_FILE(", new \"", sPath, sFile)
// SAVE_SELECTOR_SLOT_TO_NAMED_DEBUG_FILE(sPedScene.sSelectorPeds.eNewSelectorPed, sPath, sFile)
// SAVE_STRING_TO_NAMED_DEBUG_FILE("\"", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" g_bPlayerTriggeredPrioritySwitch[M:", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_MICHAEL][TS_NIGHT], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_MICHAEL][TS_MORNING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_MICHAEL][TS_AFTERNOON], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_MICHAEL][TS_EVENING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" - F:", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_FRANKLIN][TS_NIGHT], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_FRANKLIN][TS_MORNING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_FRANKLIN][TS_AFTERNOON], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_FRANKLIN][TS_EVENING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(" - T:", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_TREVOR][TS_NIGHT], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_TREVOR][TS_MORNING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_TREVOR][TS_AFTERNOON], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_BOOL_TO_NAMED_DEBUG_FILE(g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[CHAR_TREVOR][TS_EVENING], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE("]", sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
// CLOSE_DEBUG_FILE()
ENDPROC
PROC DrawLiteralSceneString(STRING sLiteral, INT iColumn, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
IF NOT g_bDrawLiteralSceneString
EXIT
ENDIF
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eColour, red, green, blue, alpha_value)
SET_TEXT_SCALE(0.45, 0.45)
SET_TEXT_COLOUR(red, green, blue, ROUND(TO_FLOAT(alpha_value) * fAlphaMult))
DISPLAY_TEXT_WITH_LITERAL_STRING(0.7795, 0.0305*TO_FLOAT(iColumn+1), "STRING", sLiteral)
ENDPROC
PROC DrawLiteralSceneStringInt(STRING sLiteral, INT sInt, INT iColumn, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
TEXT_LABEL_63 sNewLiteral = sLiteral
sNewLiteral += sInt
DrawLiteralSceneString(sNewLiteral, iColumn, eColour, fAlphaMult)
ENDPROC
PROC DrawLiteralSceneStringFloat(STRING sLiteral, FLOAT sFloat, INT iColumn, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
TEXT_LABEL_63 sNewLiteral = sLiteral
sNewLiteral += GET_STRING_FROM_FLOAT(sFloat)
DrawLiteralSceneString(sNewLiteral, iColumn, eColour, fAlphaMult)
ENDPROC
PROC DrawLiteralSceneStringTimer(STRING sLiteral, structTimer sTimer, INT iColumn, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
TEXT_LABEL_63 sNewLiteral = sLiteral
FLOAT fTimer = GET_TIMER_IN_SECONDS(sTimer)
sNewLiteral += GET_STRING_FROM_FLOAT(fTimer)
DrawLiteralSceneString(sNewLiteral, iColumn, eColour, fAlphaMult)
ENDPROC
PROC DisplayControllerText(STRING sContText, INT eRow, HUD_COLOURS textColour, FLOAT fRect_CentreX, FLOAT fRect_CentreY, FLOAT fRect_Width, FLOAT fRect_Height)
CONST_FLOAT fText_Scale 0.5000
FLOAT fText_CentreX = fRect_CentreX - (fRect_Width*0.5) //0.7610
FLOAT fText_CentreY = fRect_CentreY - (fRect_Height*0.5) //0.0480
FLOAT fText_LineY = 0.035 //0.05
SET_TEXT_SCALE(fText_Scale, fText_Scale)
INT iTextRed, iTextGreen, iTextBlue, iTextAlpha
GET_HUD_COLOUR(textColour, iTextRed, iTextGreen, iTextBlue, iTextAlpha)
SET_TEXT_COLOUR(iTextRed, iTextGreen, iTextBlue, iTextAlpha)
SET_TEXT_CENTRE(FALSE)
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
SET_TEXT_EDGE(0, 0, 0, 0, 0)
DISPLAY_TEXT_WITH_LITERAL_STRING(fText_CentreX, fText_CentreY+(fText_LineY*TO_FLOAT(ENUM_TO_INT(eRow))), "STRING", sContText)
ENDPROC
PROC DisplayControllerTimeText(INT eRow, FLOAT fRect_CentreX, FLOAT fRect_CentreY, FLOAT fRect_Width, FLOAT fRect_Height)
TIMEOFDAY sLastTimeActive = GET_CURRENT_TIMEOFDAY()
TEXT_LABEL_63 tContTimeText = Get_String_From_TIMEOFDAY(sLastTimeActive)
HUD_COLOURS textColour = HUD_COLOUR_PURE_WHITE
FLOAT fWrapMin = fRect_CentreX-(fRect_Width*0.5)
FLOAT fWrapMax = fRect_CentreX+(fRect_Width*0.5)
SET_TEXT_RIGHT_JUSTIFY(TRUE)
SET_TEXT_WRAP(fWrapMin,fWrapMax)
DisplayControllerText(tContTimeText, eRow, textColour, fRect_CentreX, fRect_CentreY, fRect_Width, fRect_Height)
ENDPROC
PROC DisplayPlayerLocationText(enumCharacterList eChar, PED_REQUEST_SCENE_ENUM eScene, FLOAT fRect_CentreX, FLOAT fRect_CentreY, FLOAT fRect_Width, FLOAT fRect_Height)
CONST_INT iCharRowOffset 1
HUD_COLOURS textColour = HUD_COLOUR_GREY
IF (g_savedGlobals.sPlayerData.sInfo.eCurrentPed = eChar)
textColour = HUD_COLOUR_REDLIGHT
ENDIF
TEXT_LABEL_63 tContText = GET_STRING_FROM_TEXT_FILE(GLOBAL_CHARACTER_SHEET_GET_LABEL(eChar) )
tContText += ": "
TEXT_LABEL_63 tSceneHead = "PR_SCENE_"
TEXT_LABEL_63 tSceneText = Get_String_From_Ped_Request_Scene_Enum(eScene)
tContText += GET_STRING_FROM_STRING(tSceneText,
GET_LENGTH_OF_LITERAL_STRING(tSceneHead), GET_LENGTH_OF_LITERAL_STRING(tSceneText))
DisplayControllerText(tContText, ENUM_TO_INT(eChar)+iCharRowOffset, textColour,
fRect_CentreX, fRect_CentreY, fRect_Width, fRect_Height)
ENDPROC
FUNC BOOL DrawDebugSceneLineBetweenCoords(VECTOR VecCoorsFirst, VECTOR VecCoorsSecond, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
IF g_bDrawLiteralSceneString
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eColour, red, green, blue, alpha_value)
DRAW_DEBUG_LINE(VecCoorsFirst, VecCoorsSecond, red, green, blue, ROUND(TO_FLOAT(alpha_value) * fAlphaMult))
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL DrawDebugSceneLineBetweenEntities(ENTITY_INDEX FirstEntity, ENTITY_INDEX SecondEntity, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE)
IF g_bDrawLiteralSceneString
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eColour, red, green, blue, alpha_value)
FLOAT fAlphaMult = 1.0
VECTOR VecCoorsFirst, VecCoorsSecond
IF NOT IS_ENTITY_DEAD(FirstEntity)
VecCoorsFirst = GET_ENTITY_COORDS(FirstEntity)
ELSE
VecCoorsFirst = GET_ENTITY_COORDS(FirstEntity, FALSE)
fAlphaMult = 0.5
ENDIF
IF NOT IS_ENTITY_DEAD(SecondEntity)
VecCoorsSecond = GET_ENTITY_COORDS(SecondEntity)
ELSE
VecCoorsSecond = GET_ENTITY_COORDS(SecondEntity, FALSE)
fAlphaMult = 0.5
ENDIF
RETURN DrawDebugSceneLineBetweenCoords(VecCoorsFirst, VecCoorsSecond, eColour, fAlphaMult)
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL DrawDebugSceneTextWithOffset(STRING text, VECTOR VecCoors, FLOAT Offset_y, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
IF g_bDrawLiteralSceneString
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
CONST_INT iTestXY 10
INT iOffset_y = ROUND(Offset_y * TO_FLOAT(iTestXY))
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eColour, red, green, blue, alpha_value)
DRAW_DEBUG_TEXT_WITH_OFFSET(text, VecCoors, 0, iOffset_y, red, green, blue, ROUND(TO_FLOAT(alpha_value) * fAlphaMult))
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL DrawDebugSceneSphere(VECTOR VecCoors, FLOAT Range, HUD_COLOURS eColour = HUD_COLOUR_PURE_WHITE, FLOAT fAlphaMult = 1.0)
IF g_bDrawLiteralSceneString
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eColour, red, green, blue, alpha_value)
DRAW_DEBUG_SPHERE(VecCoors, Range, red, green, blue, ROUND(TO_FLOAT(alpha_value) * fAlphaMult))
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC DrawDefaultPlayerSwitchState(enumCharacterList ePed, STRING sName, VECTOR vCoord, VECTOR vPrevCoord, FLOAT fHeading, FLOAT fSpeed, FLOAT fRange, HUD_COLOURS eHudColour, BOOL bOnFoot)
INT red, green, blue, alpha_value
GET_HUD_COLOUR(eHudColour, red, green, blue, alpha_value)
IF ARE_VECTORS_EQUAL(vCoord, <<0,0,0>>)
red = 0
green = 0
blue = 0
alpha_value /= 2
ENDIF
vCoord += <<0,0,fRange>>
SWITCH ePed
CASE CHAR_MICHAEL
DRAW_DEBUG_TEXT_WITH_OFFSET("CHAR_MICHAEL", vCoord, 0, -10, red, green, blue, alpha_value)
BREAK
CASE CHAR_FRANKLIN
DRAW_DEBUG_TEXT_WITH_OFFSET("CHAR_FRANKLIN", vCoord, 0, -10, red, green, blue, alpha_value)
BREAK
CASE CHAR_TREVOR
DRAW_DEBUG_TEXT_WITH_OFFSET("CHAR_TREVOR", vCoord, 0, -10, red, green, blue, alpha_value)
BREAK
ENDSWITCH
DRAW_DEBUG_SPHERE(vCoord, fRange, red, green, blue, alpha_value)
DRAW_DEBUG_LINE(vPrevCoord, vCoord, red, green, blue, alpha_value)
DRAW_DEBUG_TEXT_WITH_OFFSET(sName, vCoord, 0, 00, red, green, blue, alpha_value)
TEXT_LABEL_63 tCoord = "vCoord: <", tHeading = "fHeading: ", tTravDist = "fTravDist: ", tDetail = ""
tCoord += GET_STRING_FROM_FLOAT(vCoord.x)
tCoord += ", "
tCoord += GET_STRING_FROM_FLOAT(vCoord.y)
tCoord += ", "
tCoord += GET_STRING_FROM_FLOAT(vCoord.z)
tCoord += ">"
tHeading += GET_STRING_FROM_FLOAT(fHeading)
IF fSpeed >= 0
tHeading += ", fSpeed: "
tHeading += GET_STRING_FROM_FLOAT(fSpeed)
ENDIF
tTravDist += GET_STRING_FROM_FLOAT(CALCULATE_TRAVEL_DISTANCE_BETWEEN_POINTS(vPrevCoord, vCoord))
IF bOnFoot
tDetail = "bOnFoot: "
ELSE
tDetail = "bInVeh: "
ENDIF
DRAW_DEBUG_TEXT_WITH_OFFSET(tCoord, vCoord, 0, 10, red, green, blue, alpha_value)
DRAW_DEBUG_TEXT_WITH_OFFSET(tHeading, vCoord, 0, 20, red, green, blue, alpha_value)
DRAW_DEBUG_TEXT_WITH_OFFSET(tTravDist, vCoord, 0, 30, red, green, blue, alpha_value)
DRAW_DEBUG_TEXT_WITH_OFFSET(tDetail, vCoord, 0, 40, red, green, blue, alpha_value)
VECTOR vOffset = GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(vCoord, fHeading, <<0,fRange*10.0,0>>)
DRAW_DEBUG_SPHERE(vOffset, fRange, red, green, blue, alpha_value)
DRAW_DEBUG_LINE(vCoord, vOffset, red, green, blue, alpha_value)
ENDPROC
PROC ar_DISPLAY_PLAYBACK_RECORDED_VEHICLE(VEHICLE_INDEX VehicleIndex, PLAYBACKDISPLAYMODE DisplayMode)
EXIT
DISPLAY_PLAYBACK_RECORDED_VEHICLE(VehicleIndex, DisplayMode)
ENDPROC
#ENDIF