Files
gtav-src/script/dev_ng/singleplayer/scripts/debug/smoketest.sc
T
2025-09-29 00:52:08 +02:00

763 lines
28 KiB
Python
Executable File

USING "rage_builtins.sch"
USING "globals.sch"
#IF IS_DEBUG_OR_PROFILE_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"
CONST_INT Z_SKIP_TEST_00 0
CONST_INT Z_SKIP_TEST_01 1
CONST_INT Z_SKIP_TEST_02 2
CONST_INT Z_SKIP_TEST_03 3
CONST_INT Z_SKIP_TEST_MAX 4
CONST_INT iCONST_NUM_PED_MODELS 4
CONST_INT iCONST_NUM_LOCATIONS 12
CONST_INT iCONST_NUM_AMBIENTS 8
CONST_INT iCONST_SETTLE_TIME 5000
CONST_FLOAT flCONST_CAMERA_PITCH_MOD 1.0
CONST_FLOAT flCONST_CAMERA_PAN_MOD 0.3
STRUCT FPS_LOCATION_DATA
VECTOR vPos // Teleport Location
FLOAT flHeading // Teleport Heading
//STRING strLocationName // Location name
TEXT_LABEL_63 txtLabelName
VECTOR vCarDestination
FLOAT flCarHeading
MODEL_NAMES mnPedModel[iCONST_NUM_PED_MODELS] // Ped Models
MODEL_NAMES mnVehModel // Vehicle Model
ENDSTRUCT
FPS_LOCATION_DATA m_locationData[iCONST_NUM_LOCATIONS]
ENUM FPS_TEST_STAGE
CHOOSE_SETUP,
SETUP,
WARP_TO_LOCATION,
WAIT_TO_SETTLE,
CAMERA_PITCH,
CAMERA_ROTATE,
CREATE_CAR,
CAR_DRIVE,
CLEANUP_ZONE,
FPS_DONE
ENDENUM
FPS_TEST_STAGE eFPSlocationStage = CHOOSE_SETUP
ENUM FPS_RESULTS_SCREEN
RS_START,
RS_WAIT_FOR_SMOKETEST_SHOW,
RS_WAIT_FOR_GRAPH,
RS_DONE
ENDENUM
FPS_RESULTS_SCREEN eResultsScreen = RS_START
INT iCurrentLocationIndex, iAverageRepeat
FLOAT flNewHeading
BOOL bProceed
VECTOR vehicles_coords
//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
BOOL AI_SETUP_DONE
INT GANGPED
VEHICLE_INDEX veh_car
MODEL_NAMES model_car = NINEF2
//TIMER tmrResultsScreen
PROC RESET_ALL_LOCATION_MODELS()
INT i, j
FOR i = 0 TO iCONST_NUM_LOCATIONS - 1
FOR j = 0 TO iCONST_NUM_PED_MODELS - 1
m_locationData[i].mnPedModel[j] = DUMMY_MODEL_FOR_SCRIPT
ENDFOR
m_locationData[i].mnVehModel = DUMMY_MODEL_FOR_SCRIPT
ENDFOR
ENDPROC
PROC INIT_ALL_LOCATION_DATA()
FLOAT fHeading
RESET_ALL_LOCATION_MODELS()
// Area #0 - DOCKS
m_locationData[0].txtLabelName = "DOCKSTERMINAL"
m_locationData[0].vPos = << 814.5111, -3050.1453, 4.7421 >>
m_locationData[0].flHeading = fHeading
// Area #1 - PERSHING
m_locationData[1].txtLabelName = "PERSHINGSQUARE"
m_locationData[1].vPos = << 132.5859, -985.7192, 28.3605 >>
m_locationData[1].flHeading = fHeading
// Area #2 - VINEWOOD HILLS
m_locationData[2].txtLabelName = "VINEWOODHILLS"
m_locationData[2].vPos = << -307.9470, 383.8104, 109.3216 >>
m_locationData[2].flHeading = fHeading
// Area #3 - SANDY SHORE
m_locationData[3].txtLabelName = "SANDYSHORE"
m_locationData[3].vPos = << 1933.5807, 3780.2559, 31.3052 >>
m_locationData[3].flHeading = fHeading
// Area #4 - PALETO BAY
m_locationData[4].txtLabelName = "PALETOBAY"
m_locationData[4].vPos = << 1933.5807, 3780.2559, 31.3052 >>
m_locationData[4].flHeading = fHeading
// Area #5 - Downton Day
m_locationData[5].txtLabelName = "DOWNTOWNDAY"
m_locationData[5].vPos = << -68.898770,-1100.900024,26.0 >>
m_locationData[5].flHeading = fHeading
// Area #6 - Downtown Night
m_locationData[6].txtLabelName = "DOWNTOWNNIGHT"
m_locationData[6].vPos = << -68.898770,-1100.900024,26.0 >>
m_locationData[6].flHeading = fHeading
// Area #7 - Life invaders Interior
m_locationData[7].txtLabelName = "INTERIOR"
m_locationData[7].vPos = <<-1063.7321, -243.4981, 43.5213>>
m_locationData[7].flHeading = fHeading
// Area #8 - Streaming test
m_locationData[8].txtLabelName = "STREAMING"
m_locationData[8].vPos = << -217.45, -685.04, 33.31 >>
m_locationData[8].flHeading = fHeading
m_locationData[8].vCarDestination = << 542.70, -853.72, 40.36 >>
m_locationData[8].flCarHeading = -162.7
// Area #9 - Streaming test with wanted level
m_locationData[9].txtLabelName = "STREAMING5STAR"
m_locationData[9].vPos = << -217.45, -685.04, 33.31 >>
m_locationData[9].flHeading = fHeading
m_locationData[9].vCarDestination = << 542.70, -853.72, 40.36 >>
m_locationData[9].flCarHeading = -162.7
// Area #10 - Physics test
m_locationData[10].txtLabelName = "PHYSICS"
m_locationData[10].vPos = << -592.5580, -1652.5548, 23.4580 >>
m_locationData[10].flHeading = fHeading
// Area #11 - Physics test with wanted level
m_locationData[11].txtLabelName = "PHYSICS5STAR"
m_locationData[11].vPos = << -592.5580, -1652.5548, 23.4580 >>
m_locationData[11].flHeading = fHeading
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
INT i
FOR i = 0 TO iCONST_NUM_LOCATIONS - 1
m_locationData[i].txtLabelName += "_maponly"
ENDFOR
ENDIF
ENDPROC
//PROC CREATE_AND_TASK_VEHICLE_TO_COORD(VEHICLE_INDEX &veh, PED_INDEX &pedDriver, VECTOR vPos, FLOAT flHeading, VECTOR vDestPos)
// pedDriver = CREATE_PED_WITH_DEFAULTS(PEDTYPE_MISSION, m_locationData[iCurrentLocationIndex].mnPedModel[0], (<<0,0,0>>), 0.0)
// veh = CREATE_VEHICLE(m_locationData[iCurrentLocationIndex].mnVehModel, vPos, flHeading)
// IF NOT IS_VEHICLE_FUCKED(veh)
// AND IS_PED_ACTIVE(pedDriver)
// SET_PED_INTO_VEHICLE(pedDriver, veh)
// TASK_VEHICLE_DRIVE_TO_COORD(pedDriver, veh, vDestPos, 1, DRIVINGSTYLE_NORMAL,DUMMY_MODEL_FOR_SCRIPT, DRIVINGMODE_PLOUGHTHROUGH, 1, 1)
// //TASK_VEHICLE_DRIVE_WANDER(pedDriver, veh, 3, DRIVINGMODE_PLOUGHTHROUGH)
// ENDIF
//ENDPROC
//
//PROC CREATE_AND_TASK_PED_TO_COORD(INT index, VECTOR vPos, VECTOR vDest, MODEL_NAMES mnModel)
// m_pedAmbients[index] = CREATE_PED_WITH_DEFAULTS(PEDTYPE_MISSION, mnModel, vPos, 0.0)
// IF IS_PED_ACTIVE(m_pedAmbients[index])
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(m_pedAmbients[index], TRUE)
// TASK_FOLLOW_NAV_MESH_TO_COORD(m_pedAmbients[index], vDest, PEDMOVE_WALK, -1)
// ENDIF
//ENDPROC
//PROC POPULATE_CURRENT_LOCATION()
// SWITCH m_locationData[iCurrentLocationIndex].regLocation
// CASE REGION_GRZ_ADLERRANCH
// // Vehicles
// // Nothing here
//
// // Peds
// CREATE_AND_TASK_PED_TO_COORD(0, (<<-945.41516, 1518.37170, 200.43372>>), (<<-910.72601, 1522.98840, 201.51256>>), m_locationData[0].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(1, (<<-945.58911, 1516.54956, 200.44449>>), (<<-914.44611, 1514.11523, 200.33000>>), m_locationData[0].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(2, (<<-941.24860, 1512.61914, 200.05653>>), (<<-909.05963, 1475.11292, 198.93240>>), m_locationData[0].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(3, (<<-941.35022, 1507.84741, 199.76065>>), (<<-914.58392, 1492.19983, 200.63724>>), m_locationData[0].mnPedModel[3])
// CREATE_AND_TASK_PED_TO_COORD(4, (<<-943.24561, 1509.28345, 200.13329>>), (<<-968.51776, 1562.39075, 205.91476>>), m_locationData[0].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(5, (<<-955.24506, 1521.39795, 200.53381>>), (<<-1004.80542, 1518.51685, 200.04126>>), m_locationData[0].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(6, (<<-957.16968, 1517.73914, 200.26569>>), (<<-1020.19604, 1540.85400, 204.52209>>), m_locationData[0].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(7, (<<-959.58856, 1512.04370, 199.99704>>), (<<-1008.03790, 1548.15198, 206.20193>>), m_locationData[0].mnPedModel[3])
// BREAK
//
// CASE REGION_ROA_ANNESBURG
// // Vehicle
// CREATE_AND_TASK_VEHICLE_TO_COORD(m_vehWagon1, m_pedDriver1, (<<2948.17822, 1395.11938, 43.24228>>), 156.10, (<<2913.4, 1256.6, 47.6>>))
//
// // Peds
// CREATE_AND_TASK_PED_TO_COORD(0, (<<2923.28833, 1371.12878, 43.46996>>), (<<2865.73853, 1370.62451, 63.94314>>), m_locationData[1].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(1, (<<2923.57007, 1373.89490, 43.46996>>), (<<2876.66016, 1385.03333, 65.95869>>), m_locationData[1].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(2, (<<2941.05933, 1358.62305, 43.47213>>), (<<2924.64966, 1280.06946, 43.56168>>), m_locationData[1].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(3, (<<2942.38770, 1360.42944, 43.50419>>), (<<2924.64966, 1280.06946, 43.56168>>), m_locationData[1].mnPedModel[3])
// CREATE_AND_TASK_PED_TO_COORD(4, (<<2944.68433, 1368.12598, 43.58495>>), (<<2924.64966, 1280.06946, 43.56168>>), m_locationData[1].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(5, (<<2928.64697, 1353.89282, 43.49571>>), (<<2944.10278, 1425.77319, 45.02636>>), m_locationData[1].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(6, (<<2928.52783, 1343.93799, 43.53968>>), (<<2944.10278, 1425.77319, 45.02636>>), m_locationData[1].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(7, (<<2919.33960, 1372.75903, 43.59244>>), (<<2944.10278, 1425.77319, 45.02636>>), m_locationData[1].mnPedModel[3])
// BREAK
//
// CASE REGION_BAY_NEWBORDEAUX
// // Vehicle
// CREATE_AND_TASK_VEHICLE_TO_COORD(m_vehWagon1, m_pedDriver1, (<<2610.93530, -1206.73608, 52.13085>>), 150.31, (<<2638.4, -1320.8, 52.8>>))
//
// // Peds
// CREATE_AND_TASK_PED_TO_COORD(0, (<<2546.05908, -1219.45850, 52.25940>>), (<<2544.73389, -1114.34436, 43.44470>>), m_locationData[2].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(1, (<<2558.38086, -1196.30945, 52.26160>>), (<<2463.70654, -1243.48572, 51.67789>>), m_locationData[2].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(2, (<<2558.21729, -1203.56189, 52.17490>>), (<<2686.86328, -1210.76208, 51.23523>>), m_locationData[2].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(3, (<<2614.71802, -1194.78577, 52.12616>>), (<<2634.43115, -1316.03638, 47.43451>>), m_locationData[2].mnPedModel[3])
// CREATE_AND_TASK_PED_TO_COORD(4, (<<2610.94702, -1282.26807, 51.30997>>), (<<2656.96216, -1142.20410, 52.09549>>), m_locationData[2].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(5, (<<2596.39014, -1236.24707, 52.24875>>), (<<2474.08105, -1196.18640, 50.95575>>), m_locationData[2].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(6, (<<2636.37329, -1183.99426, 52.30649>>), (<<2567.89014, -1313.15955, 49.69562>>), m_locationData[2].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(7, (<<2601.21045, -1198.88635, 52.24863>>), (<<2546.24219, -1204.64380, 52.69946>>), m_locationData[2].mnPedModel[3])
// BREAK
//
// CASE REGION_HRT_VALENTINE
// // Vehicle
// CREATE_AND_TASK_VEHICLE_TO_COORD(m_vehWagon1, m_pedDriver1, (<<-290.22406, 790.63641, 117.46346>>), 98.86, (<<-368.9, 771, 117.5>>))
//
// // Peds
// CREATE_AND_TASK_PED_TO_COORD(0, (<<-283.65869, 796.69177, 117.60806>>), (<<-378.18396, 781.88116, 115.22844>>), m_locationData[3].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(1, (<<-294.41443, 794.19464, 117.67975>>), (<<-378.18396, 781.88116, 115.22844>>), m_locationData[3].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(2, (<<-279.20795, 786.62927, 117.64545>>), (<<-378.14630, 768.52130, 115.22289>>), m_locationData[3].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(3, (<<-282.54456, 785.91278, 118.13098>>), (<<-378.14630, 768.52130, 115.22289>>), m_locationData[3].mnPedModel[3])
// CREATE_AND_TASK_PED_TO_COORD(4, (<<-272.18863, 801.80414, 118.27293>>), (<<-280.76630, 857.42059, 119.32507>>), m_locationData[3].mnPedModel[0])
// CREATE_AND_TASK_PED_TO_COORD(5, (<<-258.73929, 803.40765, 118.87163>>), (<<-270.48480, 856.29504, 120.12206>>), m_locationData[3].mnPedModel[1])
// CREATE_AND_TASK_PED_TO_COORD(6, (<<-269.23090, 784.29565, 117.61450>>), (<<-226.23019, 691.12341, 113.04720>>), m_locationData[3].mnPedModel[2])
// CREATE_AND_TASK_PED_TO_COORD(7, (<<-258.09464, 793.60693, 118.10144>>), (<<-206.42035, 693.08063, 113.23892>>), m_locationData[3].mnPedModel[3])
// BREAK
//
// ENDSWITCH
//ENDPROC
FUNC BOOL IS_RESULTS_SCREEN_FINISHED()
SWITCH eResultsScreen
CASE RS_START
METRICS_SMOKETEST_STOP()
PRINTLN("SMOKETEST METRICS_SMOKETEST_STOP")
METRICS_SMOKETEST_SAVE_TO_FILE(m_locationData[iCurrentLocationIndex].txtLabelName)
//RESTART_TIMER_NOW(tmrResultsScreen)
eResultsScreen = RS_WAIT_FOR_SMOKETEST_SHOW
BREAK
CASE RS_WAIT_FOR_SMOKETEST_SHOW
//IF GET_TIMER_IN_SECONDS(tmrResultsScreen) >= 2.0
METRICS_SMOKETEST_CLEAR()
//RESTART_TIMER_NOW(tmrResultsScreen)
eResultsScreen = RS_WAIT_FOR_GRAPH
//ENDIF
BREAK
CASE RS_WAIT_FOR_GRAPH
//IF GET_TIMER_IN_SECONDS(tmrResultsScreen) >= 2.0
eResultsScreen = RS_DONE
//ENDIF
BREAK
CASE RS_DONE
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC CLEANUP_PEDS_AND_VEHICLES()
// CLEANUP_PED(m_pedDriver1)
// CLEANUP_PED(m_pedDriver2)
// CLEANUP_PED_ARRAY(m_pedAmbients)
//DELETE_VEHICLE(m_vehWagon1)
//DELETE_VEHICLE(m_vehWagon2)
ENDPROC
PROC CLEANUP_SCRIPT()
SET_STREAMING(TRUE)
//INT i
// FOR i = 0 TO iCONST_NUM_LOCATIONS - 1
// RESET_CLEARED_AREA_AND_ROADS_BACK_TO_ORIGINAL( m_locationData[i].sbiBlocker, m_locationData[i].vScenarioBlockMin, m_locationData[i].vScenarioBlockMax, 0.0, TRUE )
// ENDFOR
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_SMOKETEST_STOP()
PRINTLN("SMOKETEST METRICS_SMOKETEST_SAVE")
METRICS_SMOKETEST_CLEAR()
METRICS_SMOKETEST_HIDE()
PRINTLN("SMOKETEST SCRIPT TERMINATING")
CLEANUP_PEDS_AND_VEHICLES()
TERMINATE_THIS_THREAD()
ENDPROC
FUNC BOOL ARE_LOCATION_MODELS_LOADED()
INT i
FOR i = 0 TO iCONST_NUM_PED_MODELS - 1
IF m_locationData[iCurrentLocationIndex].mnPedModel[i] != DUMMY_MODEL_FOR_SCRIPT
IF NOT HAS_MODEL_LOADED(m_locationData[iCurrentLocationIndex].mnPedModel[i])
RETURN FALSE
ENDIF
ENDIF
ENDFOR
IF m_locationData[iCurrentLocationIndex].mnVehModel != DUMMY_MODEL_FOR_SCRIPT
IF NOT HAS_MODEL_LOADED(m_locationData[iCurrentLocationIndex].mnVehModel)
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
PROC RELEASE_LOCATION_MODELS()
INT i
FOR i = 0 TO iCONST_NUM_PED_MODELS - 1
IF m_locationData[iCurrentLocationIndex].mnPedModel[i] != DUMMY_MODEL_FOR_SCRIPT
SET_MODEL_AS_NO_LONGER_NEEDED(m_locationData[iCurrentLocationIndex].mnPedModel[i])
ENDIF
ENDFOR
IF m_locationData[iCurrentLocationIndex].mnVehModel != DUMMY_MODEL_FOR_SCRIPT
SET_MODEL_AS_NO_LONGER_NEEDED(m_locationData[iCurrentLocationIndex].mnVehModel)
ENDIF
ENDPROC
PROC REQUEST_LOCATION_MODELS()
INT i
FOR i = 0 TO iCONST_NUM_PED_MODELS - 1
IF m_locationData[iCurrentLocationIndex].mnPedModel[i] != DUMMY_MODEL_FOR_SCRIPT
REQUEST_MODEL(m_locationData[iCurrentLocationIndex].mnPedModel[i])
ENDIF
ENDFOR
IF m_locationData[iCurrentLocationIndex].mnVehModel != DUMMY_MODEL_FOR_SCRIPT
REQUEST_MODEL(m_locationData[iCurrentLocationIndex].mnVehModel)
ENDIF
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 GANGPED
pedCop[GANGPED] = CREATE_PED(PEDTYPE_COP, S_M_Y_COP_01, CopStartPos[GANGPED])
SET_PED_HEADING_AND_PITCH(pedCop[GANGPED], CopStartHead[GANGPED], 0)
SET_PED_COMBAT_MOVEMENT(pedCop[GANGPED], CM_DEFENSIVE )
SET_PED_FLEE_ATTRIBUTES(pedCop[GANGPED], FA_USE_COVER, TRUE)
SET_PED_COMBAT_ATTRIBUTES(pedCop[GANGPED], CA_CAN_CAPTURE_ENEMY_PEDS, FALSE)
SET_ENTITY_PROOFS(pedCop[GANGPED], TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedCop[GANGPED], relGroupCop)
GIVE_WEAPON_TO_PED(pedCop[GANGPED], WEAPONTYPE_PISTOL, INFINITE_AMMO, TRUE, TRUE)
SET_CURRENT_PED_WEAPON(pedCop[GANGPED], 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 GANGPED
pedCriminal[GANGPED] = CREATE_PED(PEDTYPE_MISSION, A_M_Y_MEXTHUG_01, GangStartPos[GANGPED])
SET_PED_HEADING_AND_PITCH(pedCriminal[GANGPED], GangStartHead[GANGPED], 0)
SET_PED_COMBAT_MOVEMENT(pedCriminal[GANGPED], CM_DEFENSIVE )
SET_PED_FLEE_ATTRIBUTES(pedCriminal[GANGPED], FA_USE_COVER, TRUE)
SET_ENTITY_PROOFS(pedCriminal[GANGPED], TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedCriminal[GANGPED], relGroupCrim)
GIVE_WEAPON_TO_PED(pedCriminal[GANGPED], WEAPONTYPE_PISTOL, INFINITE_AMMO, TRUE, TRUE)
SET_CURRENT_PED_WEAPON(pedCriminal[GANGPED], 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 GANGPED
REGISTER_HATED_TARGETS_IN_AREA(pedCop[GANGPED], CopStartPos[GANGPED], 200)
TASK_TURN_PED_TO_FACE_ENTITY(pedCop[GANGPED], pedCriminal[GANGPED])
ENDREPEAT
REPEAT numgangpeds GANGPED
REGISTER_HATED_TARGETS_IN_AREA(pedCriminal[GANGPED], GangStartPos[GANGPED], 200)
TASK_TURN_PED_TO_FACE_ENTITY(pedCriminal[GANGPED], pedCop[GANGPED])
ENDREPEAT
AI_SETUP_DONE = TRUE
ENDPROC
#ENDIF // IS_DEBUG_OR_PROFILE_BUILD
SCRIPT
#IF IS_DEBUG_OR_PROFILE_BUILD
IF HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS)
ENDIF
g_savedGlobals.sFlow.isGameflowActive = false
WAIT(20000)
g_savedGlobals.sFlow.isGameflowActive = false
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
PRINTLN("SMOKETEST SCRIPT MAPONLY STARTING")
ELSE
PRINTLN("SMOKETEST SCRIPT STARTING")
ENDIF
iCurrentLocationIndex = 0
iAverageRepeat = 0
eResultsScreen = RS_START
eFPSlocationStage = CHOOSE_SETUP
ADD_RELATIONSHIP_GROUP("RE_ARREST_COP", relGroupCop)
ADD_RELATIONSHIP_GROUP("RE_ARREST_CRIM", relGroupCrim)
WHILE TRUE
WAIT(0)
IF IS_PLAYER_PLAYING(PLAYER_ID())
SWITCH eFPSlocationStage
CASE CHOOSE_SETUP
SET_MAX_WANTED_LEVEL(0)
//FLUSH_ENTIRE_SCENE()
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
eFPSlocationStage = SETUP
BREAK
CASE SETUP
INIT_ALL_LOCATION_DATA()
bProceed = FALSE
METRICS_SMOKETEST_CLEAR()
PRINTLN("SMOKETEST METRICS_SMOKETEST_CLEAR")
SET_ENTITY_PROOFS(PLAYER_PED_ID(), TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_CAN_RAGDOLL(PLAYER_PED_ID(), TRUE)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
eFPSlocationStage = WARP_TO_LOCATION
// Fade the screen in
IF NOT IS_SCREEN_FADED_IN()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(500)
PRINTLN("FPS TEST DO_SCREEN_FADE_IN")
ENDIF
BREAK
CASE WARP_TO_LOCATION
PRINTLN("WARP_TO_LOCATION")
SET_MAX_WANTED_LEVEL(0)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
IF iCurrentLocationIndex = 9
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,FALSE)
ENDIF
IF iCurrentLocationIndex = 11
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 GANGPED
IF DOES_ENTITY_EXIST(pedCop[GANGPED])
SET_PED_AS_NO_LONGER_NEEDED(pedCop[GANGPED])
ENDIF
ENDREPEAT
REPEAT numgangpeds GANGPED
IF DOES_ENTITY_EXIST(pedCriminal[GANGPED])
SET_PED_AS_NO_LONGER_NEEDED(pedCriminal[GANGPED])
ENDIF
ENDREPEAT
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_COP_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MEXTHUG_01)
AI_SETUP_DONE = FALSE
SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL)
SET_ENTITY_COORDS(PLAYER_PED_ID(), m_locationData[iCurrentLocationIndex].vPos)
SET_ENTITY_HEADING(PLAYER_PED_ID(), m_locationData[iCurrentLocationIndex].flHeading)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
flNewHeading = -90
SET_GAMEPLAY_CAM_RELATIVE_PITCH(flNewHeading)
CLEAR_AREA(m_locationData[iCurrentLocationIndex].vPos, 2000, TRUE)
LOAD_SCENE(m_locationData[iCurrentLocationIndex].vPos)
LOAD_ALL_OBJECTS_NOW()
INSTANTLY_FILL_PED_POPULATION()
INSTANTLY_FILL_VEHICLE_POPULATION()
//m_locationData[iCurrentLocationIndex].sbiBlocker = CLEAR_AREA_OF_ALL_OBJECTS_AND_DISABLE_ROADS( m_locationData[iCurrentLocationIndex].vScenarioBlockMin, m_locationData[iCurrentLocationIndex].vScenarioBlockMax, m_locationData[iCurrentLocationIndex].vPos, 1000.0, 0.0, TRUE )
// Only request ped models if we're not running with -maponly
IF iCurrentLocationIndex = 6
SET_CLOCK_TIME(0, 0, 0)
NETWORK_OVERRIDE_CLOCK_TIME(0, 0, 0)
ELSE
SET_CLOCK_TIME(17, 0, 0)
NETWORK_OVERRIDE_CLOCK_TIME(17, 0, 0)
ENDIF
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
IF NOT GET_COMMANDLINE_PARAM_EXISTS("maponly")
REQUEST_LOCATION_MODELS()
ENDIF
SETTIMERA(0)
bProceed = FALSE
eFPSlocationStage = WAIT_TO_SETTLE
BREAK
CASE WAIT_TO_SETTLE
IF iCurrentLocationIndex = 7
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
ENDIF
// If we're running with -maponly, we just wanna wait for the timer, otherwise, also wait for the models to load in
IF GET_COMMANDLINE_PARAM_EXISTS("maponly")
IF TIMERA() > iCONST_SETTLE_TIME
bProceed = TRUE
ENDIF
ELSE
IF TIMERA() > iCONST_SETTLE_TIME
AND ARE_LOCATION_MODELS_LOADED()
bProceed = TRUE
ELSE
CPRINTLN(DEBUG_MISSION, "WAIT_TO_SETTLE - Waiting on ped models to load")
ENDIF
ENDIF
IF bProceed
IF iAverageRepeat = 0
METRICS_SMOKETEST_START(m_locationData[iCurrentLocationIndex].txtLabelName)
PRINTLN("SMOKETEST METRICS_SMOKETEST_START")
ENDIF
SETTIMERA(0)
IF iCurrentLocationIndex = 7
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
ENDIF
// //Only populate the world if we're not running with -maponly
// IF NOT GET_COMMANDLINE_PARAM_EXISTS("maponly")
// POPULATE_CURRENT_LOCATION()
// ENDIF
eFPSlocationStage = CAMERA_PITCH
IF iCurrentLocationIndex = 8 OR iCurrentLocationIndex = 9
eFPSlocationStage = CREATE_CAR
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(5000)
eFPSlocationStage = CLEANUP_ZONE
ENDIF
#ENDIF // IS_DEBUG_BUILD
BREAK
CASE CAMERA_PITCH
IF iCurrentLocationIndex = 10 or iCurrentLocationIndex = 11
IF NOT AI_SETUP_DONE
SETUP_GUNFIGHT()
ENDIF
ENDIF
IF TIMERA() > 30
SETTIMERA(0)
flNewHeading += flCONST_CAMERA_PITCH_MOD
IF flNewHeading < 0
SET_GAMEPLAY_CAM_RELATIVE_PITCH(flNewHeading)
ELSE
flNewHeading = 0
eFPSlocationStage = CAMERA_ROTATE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(5000)
eFPSlocationStage = CLEANUP_ZONE
ENDIF
#ENDIF // IS_DEBUG_BUILD
BREAK
CASE CAMERA_ROTATE
IF TIMERA() > 30
SETTIMERA(0)
flNewHeading += flCONST_CAMERA_PAN_MOD
IF flNewHeading < 360
SET_GAMEPLAY_CAM_RELATIVE_HEADING(flNewHeading)
ELSE
flNewHeading = 0
IF iAverageRepeat < 2
iAverageRepeat ++
SETTIMERA(iCONST_SETTLE_TIME)
//eFPSlocationStage = WAIT_TO_SETTLE
ELSE
eFPSlocationStage = CLEANUP_ZONE
SET_STREAMING(FALSE)
ENDIF
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(5000)
eFPSlocationStage = CLEANUP_ZONE
ENDIF
#ENDIF // IS_DEBUG_BUILD
BREAK
CASE CREATE_CAR
PRINTSTRING("...Create car")
PRINTNL()
IF NOT DOES_ENTITY_EXIST(veh_car)
model_car = NINEF2
REQUEST_MODEL(model_car)
IF HAS_MODEL_LOADED(model_car)
CLEAR_AREA(m_locationData[iCurrentLocationIndex].vPos, 20, TRUE)
veh_car = CREATE_VEHICLE(model_car, m_locationData[iCurrentLocationIndex].vPos,
m_locationData[iCurrentLocationIndex].flCarHeading, FALSE)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(veh_car)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), veh_car)
SET_ENTITY_COORDS(veh_car, m_locationData[iCurrentLocationIndex].vPos)
SET_ENTITY_HEADING(veh_car, m_locationData[iCurrentLocationIndex].flCarHeading)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_ENTITY_INVINCIBLE(veh_car, TRUE)
TASK_VEHICLE_DRIVE_TO_COORD(PLAYER_PED_ID(),veh_car, m_locationData[iCurrentLocationIndex].vCarDestination,20.0,DRIVINGSTYLE_ACCURATE,model_car,DRIVINGMODE_PLOUGHTHROUGH,7.0,1.0)
SET_MODEL_AS_NO_LONGER_NEEDED(model_car)
ENDIF
eFPSlocationStage = CAR_DRIVE
ENDIF
BREAK
CASE CAR_DRIVE
IF IS_VEHICLE_DRIVEABLE(veh_car) AND FINISHED_TASK = GET_SCRIPT_TASK_STATUS( PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_TO_COORD )
SETTIMERA(0)
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh_car)
// IF average_repeat < 2
// average_repeat ++
// METRICS_ZONE_STOP()
// METRICS_ZONES_SHOW()
// FPSlocationStage = WAIT_TO_SETTLE
// ELSE
eFPSlocationStage = CLEANUP_ZONE
// ENDIF
ENDIF
IF TIMERA() > 250
vehicles_coords = GET_ENTITY_COORDS(PLAYER_PED_ID())
CLEAR_AREA(vehicles_coords, 12, TRUE)
SETTIMERA(0)
ENDIF
#IF IS_DEBUG_BUILD
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) //Debug skip camera rotate
SETTIMERA(5000)
eFPSlocationStage = CLEANUP_ZONE
ENDIF
#ENDIF // IS_DEBUG_BUILD
BREAK
CASE CLEANUP_ZONE
IF TIMERA() > iCONST_SETTLE_TIME
IF IS_RESULTS_SCREEN_FINISHED()
SET_STREAMING(TRUE)
IF NOT GET_COMMANDLINE_PARAM_EXISTS("maponly")
CLEANUP_PEDS_AND_VEHICLES()
RELEASE_LOCATION_MODELS()
ENDIF
flNewHeading = 0
iAverageRepeat = 0
//RESET_CLEARED_AREA_AND_ROADS_BACK_TO_ORIGINAL( m_locationData[iCurrentLocationIndex].sbiBlocker, m_locationData[iCurrentLocationIndex].vScenarioBlockMin, m_locationData[iCurrentLocationIndex].vScenarioBlockMax, 0.0, TRUE )
iCurrentLocationIndex ++
//FLUSH_ENTIRE_SCENE()
eResultsScreen = RS_START
IF iCurrentLocationIndex < iCONST_NUM_LOCATIONS
eFPSlocationStage = WARP_TO_LOCATION
ELSE
eFPSlocationStage = FPS_DONE
ENDIF
ENDIF
ENDIF
BREAK
CASE FPS_DONE
CLEANUP_SCRIPT()
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
OR IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
CLEANUP_SCRIPT()
ENDIF
#ENDIF // IS_DEBUG_BUILD
ENDIF
ENDWHILE
#ENDIF // IS_DEBUG_OR_PROFILE_BUILD
ENDSCRIPT