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

706 lines
25 KiB
Python
Executable File

USING "rage_builtins.sch"
USING "globals.sch"
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
USING "commands_camera.sch"
USING "commands_streaming.sch"
USING "script_player.sch"
USING "commands_clock.sch"
USING "selector_public.sch"
USING "select_mission_stage.sch"
USING "commands_interiors.sch"
USING "flow_reset_GAME.sch"
CONST_INT numlocation 15
CONST_INT camera_rotate_speed 20
INT index, settle_time, average_repeat, ii
VECTOR FPSlocation[numlocation], vehicles_coords, vMin, vMax
STRING FPSlocationName[numlocation]
//VECTOR v_car_destination[numlocation]
FLOAT car_heading[numlocation]
FLOAT new_heading
FLOAT camera_pan_mod
FLOAT camera_pitch_mod
VEHICLE_INDEX veh_car
MODEL_NAMES model_car = ZENTORNO
CONST_INT TEST_Docks_Terminal 0
CONST_INT TEST_Pershing_Square 1
CONST_INT TEST_Vinewood_Hills 2
CONST_INT TEST_Sandy_Shore 3
CONST_INT TEST_Paleto_Bay 4
CONST_INT TEST_Downtown_Day 5
CONST_INT TEST_Downtown_Night 6
CONST_INT TEST_Bean_Machine 7
CONST_INT TEST_Pine_Forest 8
CONST_INT TEST_Interior_Life_Invaders 9
CONST_INT TEST_Streaming_Vinewood 10
CONST_INT TEST_Streaming_freeway 11
CONST_INT TEST_Physics_gunfight 12
CONST_INT TEST_Physics_gunfight_5Star 13
CONST_INT TEST_Physics_Vehicles 14
CONST_INT TEST_MAX 15
MissionStageMenuTextStruct sSkipMenu[TEST_MAX]
INT iSkipToThisStage = -1
//AI test vars
CONST_INT numgangpeds 5
VECTOR GangStartPos[numgangpeds], CopStartPos[numgangpeds]
FLOAT GangStartHead[numgangpeds], CopStartHead[numgangpeds]
PED_INDEX pedCop[numgangpeds], pedCriminal[numgangpeds]
REL_GROUP_HASH relGroupCop, relGroupCrim
INT i
BOOL FIveStarAlwayOn, explosion_triggered
CONST_INT num_vehs 5
FLOAT offsetVehicleDist
VEHICLE_INDEX veh[num_vehs][num_vehs]
FLOAT fMiddle = TO_FLOAT(num_vehs)/2
ENUM FPS_TEST_STAGE
CHOOSE_SETUP,
SETUP,
WARP_TO_LOCATION,
WAIT_TO_SETTLE,
CAMERA_PITCH,
CAMERA_ROTATE,
CAR_DRIVE,
CAR_SMASH,
CLEANUP_ZONE,
FPS_RESULTS
ENDENUM
FPS_TEST_STAGE FPSlocationStage = CHOOSE_SETUP
PROC CLEANUP_SCRIPT()
SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
// METRICS_ZONE_STOP()
// METRICS_ZONE_SAVE()
// PRINTLN("FPS TEST METRICS_ZONE_SAVE")
// METRICS_ZONES_CLEAR()
// METRICS_ZONES_HIDE()
PRINTLN("FPS TEST SCRIPT TERMINATING")
TERMINATE_THIS_THREAD()
ENDPROC
PROC SETUP_GUNFIGHT()
REQUEST_MODEL(S_M_Y_COP_01)
REQUEST_MODEL(A_M_Y_MEXTHUG_01)
LOAD_ALL_OBJECTS_NOW()
CopStartPos[0] = << -579.2419, -1656.8274, 18.7912 >>
CopStartHead[0] = 118
CopStartPos[1] = << -572.1108, -1662.7108, 18.2502 >>
CopStartHead[1] = 94
CopStartPos[2] = << -581.9711, -1671.4646, 18.2560 >>
CopStartHead[2] = 94
CopStartPos[3] = << -566.4862, -1671.4352, 18.2296 >>
CopStartHead[3] = 87
CopStartPos[4] = << -571.9099, -1675.8474, 18.7016 >>
CopStartHead[4] = 48
REPEAT numgangpeds i
pedCop[i] = CREATE_PED(PEDTYPE_COP, S_M_Y_COP_01, CopStartPos[i])
SET_PED_HEADING_AND_PITCH(pedCop[i], CopStartHead[i], 0)
SET_PED_COMBAT_MOVEMENT(pedCop[i], CM_DEFENSIVE )
SET_PED_FLEE_ATTRIBUTES(pedCop[i], FA_USE_COVER, TRUE)
SET_PED_COMBAT_ATTRIBUTES(pedCop[i], CA_CAN_CAPTURE_ENEMY_PEDS, FALSE)
SET_ENTITY_PROOFS(pedCop[i], TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedCop[i], relGroupCop)
GIVE_WEAPON_TO_PED(pedCop[i], WEAPONTYPE_PISTOL, INFINITE_AMMO, TRUE, TRUE)
SET_CURRENT_PED_WEAPON(pedCop[i], WEAPONTYPE_PISTOL, TRUE)
ENDREPEAT
GangStartPos[0] = << -601.7824, -1674.6423, 18.5608 >>
GangStartHead[0] = 285
GangStartPos[1] = << -600.7036, -1669.3536, 18.5807 >>
GangStartHead[1] = 285
GangStartPos[2] = << -606.2323, -1669.1875, 18.8904 >>
GangStartHead[2] = 274
GangStartPos[3] = << -605.7510, -1678.3025, 18.6469 >>
GangStartHead[3] = 289
GangStartPos[4] = << -596.6554, -1674.1642, 18.4122 >>
GangStartHead[4] = 286
REPEAT numgangpeds i
pedCriminal[i] = CREATE_PED(PEDTYPE_MISSION, A_M_Y_MEXTHUG_01, GangStartPos[i])
SET_PED_HEADING_AND_PITCH(pedCriminal[i], GangStartHead[i], 0)
SET_PED_COMBAT_MOVEMENT(pedCriminal[i], CM_DEFENSIVE )
SET_PED_FLEE_ATTRIBUTES(pedCriminal[i], FA_USE_COVER, TRUE)
SET_ENTITY_PROOFS(pedCriminal[i], TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedCriminal[i], relGroupCrim)
GIVE_WEAPON_TO_PED(pedCriminal[i], WEAPONTYPE_PISTOL, INFINITE_AMMO, TRUE, TRUE)
SET_CURRENT_PED_WEAPON(pedCriminal[i], WEAPONTYPE_PISTOL, TRUE)
ENDREPEAT
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, relGroupCrim, relGroupCop)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, relGroupCop, relGroupCrim)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE, relGroupCop, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE, relGroupCrim, RELGROUPHASH_PLAYER)
REPEAT numgangpeds i
REGISTER_HATED_TARGETS_IN_AREA(pedCop[i], CopStartPos[i], 200)
TASK_TURN_PED_TO_FACE_ENTITY(pedCop[i], pedCriminal[i])
ENDREPEAT
REPEAT numgangpeds i
REGISTER_HATED_TARGETS_IN_AREA(pedCriminal[i], GangStartPos[i], 200)
TASK_TURN_PED_TO_FACE_ENTITY(pedCriminal[i], pedCop[i])
ENDREPEAT
ENDPROC
PROC CREATE_CAR_FOR_REC()
PRINTSTRING("...Create car")
PRINTNL()
IF NOT DOES_ENTITY_EXIST(veh_car)
REQUEST_MODEL(model_car)
WHILE NOT HAS_MODEL_LOADED(model_car)
WAIT(0)
PRINTSTRING("...Car loading")
ENDWHILE
CLEAR_AREA(FPSlocation[index], 20, TRUE)
veh_car = CREATE_VEHICLE(model_car, FPSlocation[index], car_heading[index])
ENDIF
IF IS_VEHICLE_DRIVEABLE(veh_car)
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), veh_car)
SET_ENTITY_COORDS(veh_car, FPSlocation[index])
SET_ENTITY_HEADING(veh_car, car_heading[index])
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_ENTITY_INVINCIBLE(veh_car, TRUE)
IF index = TEST_Streaming_Vinewood
REQUEST_VEHICLE_RECORDING(1, "zentorno_streamingV")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "zentorno_streamingV")
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(veh_car)
START_PLAYBACK_RECORDED_VEHICLE(veh_car, 1, "zentorno_streamingV")
ENDIF
ELIF index = TEST_Streaming_freeway
REQUEST_VEHICLE_RECORDING(1, "zentorno_streamingF")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(1, "zentorno_streamingF")
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(veh_car)
START_PLAYBACK_RECORDED_VEHICLE(veh_car, 1, "zentorno_streamingF")
SET_PLAYBACK_SPEED(veh_car, 1.08)
ENDIF
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(model_car)
ENDIF
ENDIF
ENDPROC
PROC SETUP_VEHICLE_TEST()
offsetVehicleDist = 25
REQUEST_MODEL(A_M_Y_MEXTHUG_01)
REQUEST_MODEL(model_car)
WHILE NOT HAS_MODEL_LOADED(A_M_Y_MEXTHUG_01)
OR NOT HAS_MODEL_LOADED(model_car)
WAIT(0)
ENDWHILE
GET_MODEL_DIMENSIONS(model_car, vMin, vMax)
REPEAT num_vehs i
REPEAT num_vehs ii
veh[i][ii] = CREATE_VEHICLE(model_car, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(FPSlocation[TEST_Physics_Vehicles], 0.0, <<(3*vMax.x)*i, (3*vMax.y)*ii, 0>>), 0.0)
SET_VEHICLE_FORWARD_SPEED(veh[i][ii], 20)
ENDREPEAT
ENDREPEAT
veh_car = CREATE_VEHICLE(model_car, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(FPSlocation[TEST_Physics_Vehicles], 0.0, <<(2*vMax.x)*(fMiddle), -offsetVehicleDist, 0>>), 0.0)
SET_VEHICLE_FORWARD_SPEED(veh_car, 20)
SET_MODEL_AS_NO_LONGER_NEEDED(model_car)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MEXTHUG_01)
ENDPROC
PROC CLEANUP_ASSETS()
IF DOES_ENTITY_EXIST(veh_car)
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh_car)
ENDIF
REPEAT num_vehs i
REPEAT num_vehs ii
IF DOES_ENTITY_EXIST(veh[i][ii])
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh[i][ii])
ENDIF
ENDREPEAT
ENDREPEAT
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS)
ENDIF
RUN_GENERAL_SCRIPT_CLEANUP()
RESET_GAMEFLOW()
PRINTLN("FLOW SHUTDOWN")
sSkipMenu[TEST_Docks_Terminal ].sTxtLabel = "Docks Terminal"
sSkipMenu[TEST_Pershing_Square ].sTxtLabel = "Pershing Square"
sSkipMenu[TEST_Vinewood_Hills ].sTxtLabel = "Vinewood Hills"
sSkipMenu[TEST_Sandy_Shore ].sTxtLabel = "Sandy Shore"
sSkipMenu[TEST_Paleto_Bay ].sTxtLabel = "Paleto Bay"
sSkipMenu[TEST_Downtown_Day ].sTxtLabel = "Downtown Day"
sSkipMenu[TEST_Downtown_Night ].sTxtLabel = "Downtown Night"
sSkipMenu[TEST_Bean_Machine ].sTxtLabel = "Bean Machine"
sSkipMenu[TEST_Pine_Forest ].sTxtLabel = "Pine Forest"
sSkipMenu[TEST_Interior_Life_Invaders].sTxtLabel = "Interior - Life Invaders"
sSkipMenu[TEST_Streaming_Vinewood ].sTxtLabel = "Streaming - Vinewood"
sSkipMenu[TEST_Streaming_freeway ].sTxtLabel = "Streaming - country freeway"
sSkipMenu[TEST_Physics_gunfight ].sTxtLabel = "Physics - gunfight"
sSkipMenu[TEST_Physics_gunfight_5Star].sTxtLabel = "Physics - gunfight 5Star"
sSkipMenu[TEST_Physics_Vehicles ].sTxtLabel = "Physics - Vehicles"
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
PRINTLN("FPS TEST SCRIPT MAPONLY STARTING")
ELSE
PRINTLN("FPS TEST SCRIPT STARTING")
ENDIF
index = 0
average_repeat = 0
ADD_RELATIONSHIP_GROUP("RE_ARREST_COP", relGroupCop)
ADD_RELATIONSHIP_GROUP("RE_ARREST_CRIM", relGroupCrim)
SET_RANDOM_SEED(1)
SET_FOLLOW_VEHICLE_CAM_VIEW_MODE(CAM_VIEW_MODE_THIRD_PERSON_MEDIUM)
SET_FOLLOW_PED_CAM_VIEW_MODE(CAM_VIEW_MODE_THIRD_PERSON_MEDIUM)
WHILE TRUE
WAIT(0)
IF IS_PLAYER_PLAYING(PLAYER_ID())
SWITCH FPSlocationStage
CASE CHOOSE_SETUP
camera_pitch_mod = 1.0
camera_pan_mod = 0.3
settle_time = 4000
FPSlocationStage = SETUP
// PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", "Press Numpad 1 for location test. Press Numpad 2 for magdemo locations ", 1000, 1)
BREAK
CASE SETUP
FPSlocation[TEST_Docks_Terminal ] = << 814.5111, -3050.1453, 4.7421 >> // DOCKS
FPSlocation[TEST_Pershing_Square ] = << 132.5859, -985.7192, 28.3605 >> // PERSHING
FPSlocation[TEST_Vinewood_Hills ] = << -307.9470, 383.8104, 109.3216 >> // VINEWOOD HILLS
FPSlocation[TEST_Sandy_Shore ] = << 1933.5807, 3780.2559, 31.3052 >> // SANDY SHORE
FPSlocation[TEST_Paleto_Bay ] = << -148.8289, 6245.2271, 30.1799 >> // PALETO BAY
FPSlocation[TEST_Downtown_Day ] = << -68.898770,-1100.900024,26.0 >> // Downton Day
FPSlocation[TEST_Downtown_Night ] = << -68.898770,-1100.900024,26.0 >> // Downtown Night
FPSlocation[TEST_Bean_Machine ] = << -664.31,240.41,82.41 >> // Bean Machine
FPSlocation[TEST_Pine_Forest ] = << -663.69, 5560.35, 39.42 >> // Pine Forest
FPSlocation[TEST_Interior_Life_Invaders] = <<-1057.0321, -244.981, 44.9 >> // Life invaders Interior
FPSlocation[TEST_Streaming_Vinewood ] = << -1426.3285, -11.6231, 52.0029 >> // Streaming test Vinewood blvd
FPSlocation[TEST_Streaming_freeway ] = << 1818.4769, 2010.4287, 75.8026 >> // Streaming test country freeway
FPSlocation[TEST_Physics_gunfight ] = << -592.5580, -1652.5548, 23.4580 >> // Physics test
FPSlocation[TEST_Physics_gunfight_5Star] = <<-592.5580, -1652.5548, 23.4580 >> // Physics test with wanted level
FPSlocation[TEST_Physics_Vehicles ] = << 1148.8738, 125.4214, 81.0134 >> // Physics test with vehicles
IF NOT IS_XBOX360_VERSION()
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
FPSlocationName[TEST_Docks_Terminal ] = "mc_Docks_Terminal_maponly"
FPSlocationName[TEST_Pershing_Square ] = "mc_Pershing_Square_maponly"
FPSlocationName[TEST_Vinewood_Hills ] = "mc_Vinewood_Hills_maponly"
FPSlocationName[TEST_Sandy_Shore ] = "mc_Sandy_Shore_maponly"
FPSlocationName[TEST_Paleto_Bay ] = "mc_Paleto_Bay_maponly"
FPSlocationName[TEST_Downtown_Day ] = "mc_Downtown_day_maponly"
FPSlocationName[TEST_Downtown_Night ] = "mc_Downtown_night_maponly"
FPSlocationName[TEST_Bean_Machine ] = "mc_Bean_machine_mapony"
FPSlocationName[TEST_Pine_Forest ] = "mc_Pine_forest_maponly"
FPSlocationName[TEST_Interior_Life_Invaders] = "mc_interior_maponly"
FPSlocationName[TEST_Streaming_Vinewood ] = "mc_StreamingVine_maponly"
FPSlocationName[TEST_Streaming_freeway ] = "mc_StreamingFreeway_maponly"
FPSlocationName[TEST_Physics_gunfight ] = "mc_Physics_maponly"
FPSlocationName[TEST_Physics_gunfight_5Star] = "mc_Physics5Star_maponly"
FPSlocationName[TEST_Physics_Vehicles ] = "mc_PhysicsVehicle_maponly"
ELSE
FPSlocationName[TEST_Docks_Terminal ] = "mc_Docks_Terminal"
FPSlocationName[TEST_Pershing_Square ] = "mc_Pershing_Square"
FPSlocationName[TEST_Vinewood_Hills ] = "mc_Vinewood_Hills"
FPSlocationName[TEST_Sandy_Shore ] = "mc_Sandy_Shore"
FPSlocationName[TEST_Paleto_Bay ] = "mc_Paleto_Bay"
FPSlocationName[TEST_Downtown_Day ] = "mc_Downtown_day"
FPSlocationName[TEST_Downtown_Night ] = "mc_Downtown_night"
FPSlocationName[TEST_Bean_Machine ] = "mc_Bean_machine"
FPSlocationName[TEST_Pine_Forest ] = "mc_Pine_forest"
FPSlocationName[TEST_Interior_Life_Invaders] = "mc_interior"
FPSlocationName[TEST_Streaming_Vinewood ] = "mc_StreamingVine"
FPSlocationName[TEST_Streaming_freeway ] = "mc_StreamingFreeway"
FPSlocationName[TEST_Physics_gunfight ] = "mc_Physics"
FPSlocationName[TEST_Physics_gunfight_5Star] = "mc_Physics5Star"
FPSlocationName[TEST_Physics_Vehicles ] = "mc_PhysicsVehicle"
ENDIF
ELSE
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
FPSlocationName[TEST_Docks_Terminal ] = "mc_Docks_Terminal_maponly_XBOX"
FPSlocationName[TEST_Pershing_Square ] = "mc_Pershing_Square_maponly_XBOX"
FPSlocationName[TEST_Vinewood_Hills ] = "mc_Vinewood_Hills_maponly_XBOX"
FPSlocationName[TEST_Sandy_Shore ] = "mc_Sandy_Shore_maponly_XBOX"
FPSlocationName[TEST_Paleto_Bay ] = "mc_Paleto_Bay_maponly_XBOX"
FPSlocationName[TEST_Downtown_Day ] = "mc_Downtown_day_maponly_XBOX"
FPSlocationName[TEST_Downtown_Night ] = "mc_Downtown_night_maponly_XBOX"
FPSlocationName[TEST_Bean_Machine ] = "mc_Bean_machine_mapony_XBOX"
FPSlocationName[TEST_Pine_Forest ] = "mc_Pine_forest_maponly_XBOX"
FPSlocationName[TEST_Interior_Life_Invaders] = "mc_interior_maponly_XBOX"
FPSlocationName[TEST_Streaming_Vinewood ] = "mc_StreamingVine_maponly_XBOX"
FPSlocationName[TEST_Streaming_freeway ] = "mc_StreamingFreeway_maponly_XBOX"
FPSlocationName[TEST_Physics_gunfight ] = "mc_Physics_maponly_XBOX"
FPSlocationName[TEST_Physics_gunfight_5Star] = "mc_Physics5Star_maponly_XBOX"
FPSlocationName[TEST_Physics_Vehicles ] = "mc_PhysicsVehicle_maponly_XBOX"
ELSE
FPSlocationName[TEST_Docks_Terminal ] = "mc_Docks_Terminal_XBOX"
FPSlocationName[TEST_Pershing_Square ] = "mc_Pershing_Square_XBOX"
FPSlocationName[TEST_Vinewood_Hills ] = "mc_Vinewood_Hills_XBOX"
FPSlocationName[TEST_Sandy_Shore ] = "mc_Sandy_Shore_XBOX"
FPSlocationName[TEST_Paleto_Bay ] = "mc_Paleto_Bay_XBOX"
FPSlocationName[TEST_Downtown_Day ] = "mc_Downtown_day_XBOX"
FPSlocationName[TEST_Downtown_Night ] = "mc_Downtown_night_XBOX"
FPSlocationName[TEST_Bean_Machine ] = "mc_Bean_machine_XBOX"
FPSlocationName[TEST_Pine_Forest ] = "mc_Pine_forest_XBOX"
FPSlocationName[TEST_Interior_Life_Invaders] = "mc_interior_XBOX"
FPSlocationName[TEST_Streaming_Vinewood ] = "mc_StreamingVine_XBOX"
FPSlocationName[TEST_Streaming_freeway ] = "mc_StreamingFreeway_XBOX"
FPSlocationName[TEST_Physics_gunfight ] = "mc_Physics_XBOX"
FPSlocationName[TEST_Physics_gunfight_5Star] = "mc_Physics5Star_XBOX"
FPSlocationName[TEST_Physics_Vehicles ] = "mc_PhysicsVehicle_XBOX"
ENDIF
ENDIF
METRICS_ZONES_CLEAR()
PRINTLN("FPS TEST METRICS_ZONES_CLEAR")
// METRICS_ZONES_SHOW()
SET_ENTITY_PROOFS(PLAYER_PED_ID(), TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
CLEAR_PLAYER_WANTED_LEVEL(PLAYER_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
CLEAR_PED_SECONDARY_TASK(PLAYER_PED_ID())
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
DISABLE_AIM_CAM_THIS_UPDATE()
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, 0, TRUE)
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL)
WAIT(0)
PRINTLN("SETTING PED TO DEFAULT")
ENDWHILE
SET_PED_DEFAULT_COMPONENT_VARIATION(PLAYER_PED_ID())
FPSlocationStage = WARP_TO_LOCATION
// Fade the screen in
IF NOT IS_SCREEN_FADED_IN()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(500)
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("fps_SkipToStreaming")
OR GET_COMMANDLINE_PARAM_EXISTS("SkipLocationTests")
index = TEST_Streaming_Vinewood
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("fps_SkipToPhysics")
index = TEST_Physics_gunfight
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("fps_FiveStar")
FIveStarAlwayOn = TRUE
ENDIF
BREAK
CASE WARP_TO_LOCATION
SET_MAX_WANTED_LEVEL(0)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
IF index = TEST_Physics_gunfight_5Star
OR FIveStarAlwayOn = TRUE
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL_NO_DROP(PLAYER_ID(), 5)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
ENABLE_DISPATCH_SERVICE(DT_POLICE_ROAD_BLOCK,TRUE)
ENDIF
REPEAT numgangpeds i
IF DOES_ENTITY_EXIST(pedCop[i])
SET_PED_AS_NO_LONGER_NEEDED(pedCop[i])
ENDIF
ENDREPEAT
REPEAT numgangpeds i
IF DOES_ENTITY_EXIST(pedCriminal[i])
SET_PED_AS_NO_LONGER_NEEDED(pedCriminal[i])
ENDIF
ENDREPEAT
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_COP_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MEXTHUG_01)
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_ENTITY_COORDS(PLAYER_PED_ID(), FPSlocation[index])
SET_ENTITY_HEADING(PLAYER_PED_ID(), 0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
new_heading = -90
SET_GAMEPLAY_CAM_RELATIVE_PITCH(new_heading)
CLEAR_AREA(FPSlocation[index], 2000, TRUE)
IF index = TEST_Interior_Life_Invaders
SET_BUILDING_STATE(BUILDINGNAME_IPL_INVADER_OFFICE_INTERIOR, BUILDINGSTATE_DESTROYED)
ENDIF
LOAD_SCENE(FPSlocation[index])
LOAD_ALL_OBJECTS_NOW()
INSTANTLY_FILL_PED_POPULATION()
INSTANTLY_FILL_VEHICLE_POPULATION()
IF index = TEST_Downtown_Night
SET_CLOCK_TIME(0, 0, 0)
ELSE
SET_CLOCK_TIME(17, 0, 0)
ENDIF
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
SETTIMERA(0)
IF index = TEST_Physics_Vehicles
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1177.5040, 138.1767, 79.8866>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 61)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
ENDIF
FPSlocationStage = WAIT_TO_SETTLE
BREAK
CASE WAIT_TO_SETTLE
IF index = TEST_Interior_Life_Invaders
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
ENDIF
IF TIMERA() > settle_time
IF average_repeat = 0
METRICS_ZONE_START(FPSlocationName[index])
PRINTLN("FPS TEST METRICS_ZONE_START")
ENDIF
SETTIMERA(0)
IF index = TEST_Interior_Life_Invaders
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
ENDIF
IF index = TEST_Streaming_Vinewood OR index = TEST_Streaming_freeway
CREATE_CAR_FOR_REC()
FPSlocationStage = CAR_DRIVE
ELIF index = TEST_Physics_gunfight or index = TEST_Physics_gunfight_5Star
SETUP_GUNFIGHT()
FPSlocationStage = CAMERA_PITCH
ELIF index = TEST_Physics_Vehicles
SETUP_VEHICLE_TEST()
FPSlocationStage = CAR_SMASH
ELSE
FPSlocationStage = CAMERA_PITCH
ENDIF
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_ENTITY_HEADING(PLAYER_PED_ID(), 0)
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
BREAK
CASE CAMERA_PITCH
IF TIMERA() > camera_rotate_speed
SETTIMERA(0)
new_heading = new_heading + camera_pitch_mod
IF new_heading < 0
SET_GAMEPLAY_CAM_RELATIVE_PITCH(new_heading)
ELSE
new_heading = 0
FPSlocationStage = CAMERA_ROTATE
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
BREAK
CASE CAMERA_ROTATE
IF TIMERA() > camera_rotate_speed
SETTIMERA(0)
new_heading = new_heading + camera_pan_mod
IF new_heading < 360
SET_GAMEPLAY_CAM_RELATIVE_HEADING(new_heading)
ELSE
IF average_repeat < 2
new_heading = 0
average_repeat ++
ELSE
FPSlocationStage = CLEANUP_ZONE
ENDIF
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
BREAK
CASE CAR_DRIVE
IF IS_VEHICLE_DRIVEABLE(veh_car) AND NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(veh_car)
SETTIMERA(0)
CLEANUP_ASSETS()
FPSlocationStage = CLEANUP_ZONE
ENDIF
IF NOT GET_COMMANDLINE_PARAM_EXISTS("fps_DontEatCars")
IF TIMERA() > 180
vehicles_coords = GET_ENTITY_COORDS(PLAYER_PED_ID())
CLEAR_AREA(vehicles_coords, 16, TRUE)
SETTIMERA(0)
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
BREAK
CASE CAR_SMASH
IF NOT explosion_triggered
IF TIMERA() > 6000
ADD_EXPLOSION(GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(<<1159, 151, 82>>, 0, <<0,0,0>>), EXP_TAG_PETROL_PUMP, 1)
explosion_triggered = TRUE
ENDIF
ELSE
IF TIMERA() > 18000
CLEANUP_ASSETS()
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(settle_time)
FPSlocationStage = CLEANUP_ZONE
ENDIF
BREAK
CASE CLEANUP_ZONE
IF TIMERA() > settle_time
METRICS_ZONE_STOP()
PRINTLN("FPS TEST METRICS_ZONE_STOP")
WAIT(100)
METRICS_ZONES_SHOW()
METRICS_ZONE_SAVE_TO_FILE(FPSlocationName[index])
METRICS_ZONE_SAVE_TELEMETRY()
WAIT(2000)
METRICS_ZONES_CLEAR()
WAIT(0)
METRICS_ZONES_HIDE()
IF NOT IS_PC_VERSION()
SET_DISPLAY_STREAM_GRAPH(TRUE)
WAIT(2000)
SAVE_SCREENSHOT(FPSlocationName[index])
WAIT(500)
SET_DISPLAY_STREAM_GRAPH(FALSE)
WAIT(0)
ENDIF
new_heading = 0
average_repeat = 0
index ++
IF index < numlocation
CLEANUP_ASSETS()
FPSlocationStage = WARP_TO_LOCATION
ELSE
SETTIMERA(0)
FPSlocationStage = FPS_RESULTS
ENDIF
ENDIF
BREAK
CASE FPS_RESULTS
//Gives time to view results before cleaning up
IF TIMERA() > 2000
CLEANUP_SCRIPT()
ENDIF
BREAK
ENDSWITCH
INVALIDATE_IDLE_CAM()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
OR IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
CLEANUP_SCRIPT()
ENDIF
IF LAUNCH_MISSION_STAGE_MENU(sSkipMenu, iSkipToThisStage)
index = iSkipToThisStage
new_heading = 0
average_repeat = 0
CLEANUP_ASSETS()
FPSlocationStage = WARP_TO_LOCATION
ENDIF
ENDIF
ENDWHILE
ENDSCRIPT
#ENDIF