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

1007 lines
33 KiB
Python
Executable File

// Do nothing in release mode
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
// Only include in debug mode
#IF IS_DEBUG_BUILD
USING "rage_builtins.sch"
USING "script_xml.sch"
USING "commands_ped.sch"
USING "commands_task.sch"
USING "commands_streaming.sch"
USING "commands_graphics.sch"
USING "commands_debug.sch"
USING "test_tools.sch"
USING "commands_vehicle.sch"
USING "commands_camera.sch"
USING "commands_player.sch"
USING "script_DEBUG.sch"
USING "commands_script.sch"
USING "commands_entity.sch"
//Notes: This is script is to allow easy setup of test scenarios for the code department. It works in conjunction with test_tools.sch
//It is a data driven system
//Defaults values when the test is reset to factory the standard values are used
//Level
STRING XMLMenu = "Testbed/TestNavmenu"
VECTOR gvMapOffset //offset all coords from the origin by the psoition of the mapin world coords
//Ped Vars
CONST_INT MAX_NUMBER_OF_PEDS 10
peds_struct TestPeds [MAX_NUMBER_OF_PEDS]
//Vehicle Vars
CONST_INT MAX_NUMBER_OF_VEHICLES 10
vehicle_struct TestVehicles[MAX_NUMBER_OF_VEHICLES]
//Route Vars
CONST_INT MAX_NUMBER_OF_NODES 7
RouteStruct Route[MAX_NUMBER_OF_NODES]
//Camera Vars
CONST_INT MAX_NUMBER_OF_CAMERAS 2
CONST_INT FixedCamera 0
CONST_INT TrackingCamera 1
StCameraData TestCams[MAX_NUMBER_OF_CAMERAS]
//Sequence
//Task Vars
SEQUENCE_INDEX TEST_SEQ
bool Blooptest = FALSE
//Main Enums
//ENUM Test_Scenario
// InitialiseScenarioData,
// CreateScenarioEntities,
// SetScenarioEntities,
// RunScenario,
// CleanupScenario
//ENDENUM
//
//Test_Scenario TestScenarioAStatus = InitialiseScenarioData
//Functions: WIDGETS
FLOAT DYNAMIC_MOVE_BLEND_RATIO
FLOAT SlideSpeed = 1.0
FLOAT BlendSpeed = 8.0
BOOL bLoopAnim = FALSE, bExtractbackwardvel = TRUE, bExtractsidevel = TRUE, bholdlastframe = FALSE
Int seatindex = -1
int gtime = 1000
PROC CREATE_TEST_WIDGET ()
START_WIDGET_GROUP("Navigation Tests")
SETUP_WIDGET ()
START_WIDGET_GROUP("Navigation")
ADD_WIDGET_BOOL ("Start scenario", gBeginCombatScenario)
ADD_WIDGET_BOOL ("Restart scenario", gResetCombatScenario)
ADD_WIDGET_BOOL ("Reset to default", gResetToDefault)
ADD_WIDGET_BOOL ("Debug scenario", gRun_debuggig)
ADD_WIDGET_BOOL ("Print all setup info", gPrintAllIinfo)
ADD_WIDGET_BOOL ("Loop test", Blooptest)
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.x",gPedcoords.x, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.y",gPedcoords.y, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.z",gPedcoords.z, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Start_Heading",gPedheading, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.x",DynamicTargetPos.x, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.y",DynamicTargetPos.y, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.z",DynamicTargetPos.z, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Target_heading",DynamicTargetHeading, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Slide speed",SlideSpeed, -2000, 2000, 0.5)
ADD_WIDGET_INT_SLIDER ("time", gtime ,-2, 5000, 1 )
ADD_WIDGET_INT_SLIDER ("seat", seatindex ,-2, 2, 1 )
ADD_WIDGET_FLOAT_SLIDER ("Move Blend Ratio", DYNAMIC_MOVE_BLEND_RATIO, PEDMOVEBLENDRATIO_STILL, PEDMOVEBLENDRATIO_SPRINT, 0.1 )
START_WIDGET_GROUP ("Anim")
ADD_WIDGET_BOOL ("loop anim", bLoopAnim )
ADD_WIDGET_BOOL ("Extract y vel", bExtractbackwardvel )
ADD_WIDGET_BOOL ("Extract x vel ", bExtractsidevel )
ADD_WIDGET_BOOL ("Hold ladt frame ", bholdlastframe )
ADD_WIDGET_FLOAT_SLIDER ("blend",BlendSpeed, -2000, 2000, 0.5)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
START_WIDGET_GROUP ("Ped setup")
ADD_WIDGET_INT_SLIDER ("Ped_index", gTestPedsIndex ,0, 9, 1 )
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.x",gPedcoords.x, -2000, 2000, 0.25)
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.y",gPedcoords.y, -2000, 2000, 0.25)
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.z",gPedcoords.z, -2000, 2000, 0.25)
ADD_WIDGET_FLOAT_SLIDER ("Ped_Heading",gPedheading, -2000, 2000, 0.5)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("S_M_Y_Cop_01")
ADD_TO_WIDGET_COMBO ("G_M_Y_DESHENCH_01")
STOP_WIDGET_COMBO("Ped", PedIdentifier)
ADD_WIDGET_BOOL ("Create ped", gCreatePed)
ADD_WIDGET_BOOL ("Delete ped", gdeletePed)
ADD_WIDGET_INT_SLIDER ("Set Ped rel grp", gpedrelgrp ,1, 4, 1 )
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_UNARMED")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_PISTOL")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_ASSAULTRIFLE")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_M4")
STOP_WIDGET_COMBO("weapon", WeaponIdentifier)
ADD_WIDGET_BOOL ("Swap current peds weapon", gSwapPedWeapons)
ADD_WIDGET_BOOL ("print ped info", Bprint_ped_info)
ADD_WIDGET_BOOL ("activate def area",gPedDefAActive)
STOP_WIDGET_GROUP ()
START_WIDGET_GROUP ("Route Builder")
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.x",gRoutePoint.x, -2000, 2000, 0.25)
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.y",gRoutePoint.y, -2000, 2000, 0.25)
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.z",gRoutePoint.z, -2000, 2000, 0.25)
ADD_WIDGET_INT_SLIDER ("Route Node", gRouteNode, 0, 7, 1 )
ADD_WIDGET_BOOL ("Register Node", BSetNode)
ADD_WIDGET_BOOL ("copy cam pos", BCopyCamCoords )
STOP_WIDGET_GROUP ()
STOP_WIDGET_GROUP()
ENDPROC
// Functions end: WIDGET
//Mission flow House keeping
//PUPROSE: REmoves all the scenarios and resets all the relationships
PROC Cleanup_Scenario_Entities ()
int index = 0
for index = 0 to MAX_NUMBER_OF_PEDS -1
CLEAN_UP_PED_ENTITIES (TestPeds[index].ped)
ENDFOR
for index = 0 to MAX_NUMBER_OF_VEHICLES -1
CLEAN_UP_VEHICLE_ENTITIES (TestVehicles[index].Vehicle )
ENDFOR
Set_Gang_Relationships (FALSE)
ENDPROC
PROC Terminate_test_script ()
if IS_KEYBOARD_KEY_JUST_PRESSED (KEY_S)
CLEAR_PRINTS ()
CLEAR_HELP ()
Cleanup_Scenario_Entities ()
Temp_cleanup_scenario_cams ()
SET_PLAYER_COLISION(scplayer, true)
IF NOT IS_PED_INJURED (scplayer)
SET_PED_COORDS_KEEP_VEHICLE(scplayer, GET_PLAYER_START_POS ())
ENDIF
TERMINATE_THIS_THREAD ()
ENDIF
ENDPROC
NAVDATA test_data
PROC SETUP_NAVDATE (FLOAT heading )
test_data.m_fSlideToCoordHeading = heading
ENDPROC
FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading)
SETUP_NAVDATE (L_Target_heading)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED (NULL, L_Target_Pos, DYNAMIC_MOVE_BLEND_RATIO, -1, 1, ENAV_ADV_SLIDE_TO_COORD_AND_ACHIEVE_HEADING_AT_END, test_data )
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX SLIDE_TO_COORD_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_PED_SLIDE_TO_COORD (NULL, L_Target_Pos, L_Target_heading, SlideSpeed)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX SLIDE_TO_COORD_AND_PLAY_ANIM_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading, string animName, string AnimDict)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_PED_SLIDE_TO_COORD_AND_PLAY_ANIM (NULL, L_Target_Pos, L_Target_heading, SlideSpeed, animName, AnimDict, BlendSpeed, bLoopAnim, bExtractbackwardvel, bExtractsidevel, bholdlastframe, 0)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_OPEN_VEHICLE_DOOR(VEHICLE_INDEX vehicle, int time = -1)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_OPEN_VEHICLE_DOOR (NULL, vehicle, time,INT_TO_ENUM (VEHICLE_SEAT, seatindex ) )
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_PLAY_ANIM(string anim)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_PLAY_ANIM (NULL, "misstest_anim",anim, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_DEFAULT)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_FOLLOW_NAVMESH_ADVANCED(VECTOR target_coord, FLOAT heading)
SETUP_NAVDATE (heading)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED (NULL, target_coord, DYNAMIC_MOVE_BLEND_RATIO, -1, 1, ENAV_ADV_SLIDE_TO_COORD_AND_ACHIEVE_HEADING_AT_END, test_data )
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_STAND_STILL(int time, RouteStruct &TargetRoute[])
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[0].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_PAUSE (NULL, time)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[1].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_ENTER_VEHICLE(VEHICLE_INDEX Vehicle, int seat )
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_ENTER_VEHICLE (NULL, Vehicle, INFINITE_TASK_TIME, INT_TO_ENUM(VEHICLE_SEAT, seat ))
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_GOTO_PED_OFFSET()
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_GOTO_ENTITY_OFFSET(NULL, scplayer, -1, 3.0, 30.0)
SET_SEQUENCE_TO_REPEAT(TEST_SEQUENCE, REPEAT_FOREVER)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX FOLLOW_ROUTE( RouteStruct &TargetRoute[])
int index
BOOL BHaveValidNode = FALSE
VECTOR TempNode
//This allows us to pass a sequnce to a ped using 7 points for maximun testing. Iess than 7 nodes can be used, and the last valid node is copied into the remaining array elements.
//Note all nodes must be in order there can be no gaps between them ie node 1 valid, 2 valid, 3 invalid is ok but not 1 valid, 2 invalid, 3 valid
//search our node array until we find a invalid array point
for index = 0 to MAX_NUMBER_OF_NODES -1
IF TargetRoute[index].RouteNodeState = FALSE
IF index <> 0
TempNode = TargetRoute[index - 1].RouteNode //grab the previous point which is valid assuming that all nodes are sequential
BHaveValidNode = TRUE
ELSE
SCRIPT_ASSERT ("Passed in sequnce with no valid nodes ")
ENDIF
ENDIF
//copy this valid node into the remaing array elements
IF (BHaveValidNode)
TargetRoute[index].RouteNode = TempNode
ENDIF
ENDFOR
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[0].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[1].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[2].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[3].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[4].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[5].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[6].routenode, DYNAMIC_MOVE_BLEND_RATIO, -1, 1)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_FOLLOW_POINT_ROUTE_SINGLE( )
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FLUSH_ROUTE()
TASK_EXTEND_ROUTE(<<-8.18, 7.32, 1.19>> + gvMapOffset)
TASK_EXTEND_ROUTE(<<5.11, 6.30, 1.19>>+ gvMapOffset)
TASK_EXTEND_ROUTE(<<-2.72, 13.41, 1.19>>+ gvMapOffset)
TASK_FOLLOW_POINT_ROUTE (NULL, PEDMOVE_WALK, TICKET_SINGLE)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX TEST_TASK_FOLLOW_POINT_ROUTE_SEASON()
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FLUSH_ROUTE()
TASK_EXTEND_ROUTE(<<-8.18, 7.32, 1.19>>+ gvMapOffset)
TASK_EXTEND_ROUTE(<<5.11, 6.30, 1.19>>+ gvMapOffset)
TASK_EXTEND_ROUTE(<<-2.72, 13.41, 1.19>>+ gvMapOffset)
TASK_FOLLOW_POINT_ROUTE (NULL, PEDMOVE_WALK, TICKET_SEASON)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
//Test Specific Functions
FUNC VECTOR GetOffsetRoundCar(VEHICLE_INDEX vehicle)
Vector temp = <<0.0, 0.0, 0.0>>, ModelMin, ModelMax
MODEL_NAMES currentmodel
IF IS_VEHICLE_DRIVEABLE (Vehicle)
currentmodel = GET_ENTITY_MODEL(TestVehicles[0].Vehicle)
GET_MODEL_DIMENSIONS (currentmodel,ModelMin, ModelMax )
While ((temp.x < ModelMax.x+1.0) and (temp.x > ModelMin.x - 1.0) )
temp.x = GET_RANDOM_FLOAT_IN_RANGE (-10.0, 10.0)
ENDWHILE
WHILE ((temp.y < ModelMax.y+1.0 ) and (temp.y > ModelMin.y -1.0) )
temp.y = GET_RANDOM_FLOAT_IN_RANGE (-15.0, 15.0)
ENDWHILE
ENDIF
return temp
ENDFUNC
//These enums must match with the testNavmenu.xml
ENUM Scenarios
TestTaskSlideToCoord,
TestTaskSlideToCoordPlayAnim,
TestTaskFollowNavmesh,
TestTaskOpenVehicleDoor,
TestTaskPlayAnim,
TestWalkToCarAnim,
TestPlayRestAtCarAnim,
TestFollowRoute,
TestFollowNavemeshAdvacnedHeading,
TestStandStill,
TestSEINOVE,
TestWINKY,
TestZ75,
TestJZ125,
TestAUTOGYRO,
TestBCHOPPER,
TestHind,
TestSKIMOBILE,
TestRHINO,
TestBOBSLEIGH,
BugTicketSingle,
BugTicketSeason,
BugGotoPedOffset,
TestEnableAssistedMovementRoute1,
TestDisableAssistedMovementRoute1,
TestEnableAssistedMovementRoute2,
TestDisableAssistedMovementRoute2,
DefaultTest = 1000
ENDENUM
// END_SCENARIO: SquadOfPedsMovingBetweenVehicles
PROC SETUP_TEST_DATA ()
SWITCH int_to_enum (scenarios, gcurrentselection)
CASE TestSEINOVE
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = FBI
BREAK
CASE TestWINKY
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = FBI
BREAK
CASE TestZ75
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = SANCHEZ
BREAK
CASE TestJZ125
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = SANCHEZ
BREAK
CASE TestAUTOGYRO
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = BUZZARD
BREAK
CASE TestTaskSlideToCoord
CASE TestTaskSlideToCoordPlayAnim
CASE TestTaskFollowNavmesh
CASE TestTaskPlayAnim
CASE TestFollowRoute
CASE TestFollowNavemeshAdvacnedHeading
CASE TestStandStill
CASE BugTicketSingle
CASE BugTicketSeason
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>> + gvMapOffset
TestPeds[0].PedHeading = 359.6439
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_Y_Cop_01
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
TestPeds[0].PedcombatMove = 2
TestPeds[0].pedcombatrange = 2
TestPeds[0].combatcover = CA_USE_COVER
TestPeds[0].bcombatcover = FALSE
//Target for the peds to move too
DynamicTargetPos = << 0.0, 5.0, 1.0 >> + gvMapOffset
DynamicTargetHeading = 90.0
Route[0].RouteNode = <<9.3092, 3.2039, 1.3341>> + gvMapOffset
Route[0].RouteNodeState = true
Route[1].RouteNode = <<17.5666, 13.1102, 1.6668>> + gvMapOffset
Route[1].RouteNodeState = true
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TestTaskOpenVehicleDoor
Testpeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_PISTOL
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -0.0012, 10.0009, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 90.0001
TestVehicles [0].vehiclemodel = FBI
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TestWalkToCarAnim
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -3.4995, 8.5499, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = FBI
DynamicTargetPos = << -3.7756, 3.4697, 1.1959>> + gvMapOffset
DynamicTargetHeading = 0.0
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TestPlayRestAtCarAnim
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 359.6439
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
Testpeds[0].PedcombatMove = 2
Testpeds[0].pedcombatrange = 2
Testpeds[0].combatcover = CA_USE_COVER
Testpeds[0].bcombatcover = FALSE
TestVehicles [0].vehicleCoords = << -3.4995, 8.5499, 1.9393>> + gvMapOffset
TestVehicles [0].vehicleHeading = 266.0000
TestVehicles [0].vehiclemodel = FBI
DynamicTargetPos = << -3.776, 6.97, 1.1959>> + gvMapOffset
DynamicTargetHeading = 0.0
TestCams[FixedCamera].cam_pos = <<-24, 14.57, 8.7>> + gvMapOffset
TestCams[FixedCamera].cam_rot = <<-15.06, 0.0,-97.7>>
TestCams[FixedCamera].cam_fov = 45.00
TestCams[FixedCamera].bActivateCam = true
BREAK
CASE BugGotoPedOffset
Testpeds[0].PedsCoords = << -3.7756, 1.0, 1.1959>> + gvMapOffset
Testpeds[0].PedHeading = 0.0
Testpeds[0].Pedrelgrp = 1
Testpeds[0].PedModel = S_M_Y_Cop_01
Testpeds[0].PedsWeapon = WEAPONTYPE_UNARMED
BREAK
ENDSWITCH
ENDPROC
//Test Specific Enums
ENUM PedEnterVehicleFlags
GIVE_TASK,
CHECK_IF_TASK_IS_COMPLETE,
SET_PED_A_NEW_POS_START_AGAIN
ENDENUM
PedEnterVehicleFlags PedEnterVehicleStatus = GIVE_TASK
PROC INITALISE_TEST_STATE()
SingleTaskStatus = startSingleTask
PedEnterVehicleStatus = GIVE_TASK
ENDPROC
PROC RUN_TEST ()
Vector vNewPedPos, vPedPos
float heading
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
//setup scenario
CASE TestTaskSlideToCoord
TEST_SEQ = SLIDE_TO_COORD_SEQ (DynamicTargetPos, DynamicTargetHeading)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestTaskSlideToCoordPlayAnim
TEST_SEQ = SLIDE_TO_COORD_AND_PLAY_ANIM_SEQ (DynamicTargetPos, DynamicTargetHeading, "stash", "misstest_anim" )
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestTaskFollowNavmesh
TEST_SEQ = FOLLOW_NAVMESH_TO_COORD_SEQ (DynamicTargetPos, DynamicTargetHeading )
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestTaskOpenVehicleDoor
IF IS_VEHICLE_DRIVEABLE (TestVehicles[gTestVehicleIndex].Vehicle )
TEST_SEQ = TEST_TASK_OPEN_VEHICLE_DOOR (TestVehicles[gTestVehicleIndex].Vehicle)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
ENDIF
BREAK
CASE TestTaskPlayAnim
TEST_SEQ = TEST_TASK_PLAY_ANIM ("stash" )
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestWalkToCarAnim
TEST_SEQ = SLIDE_TO_COORD_AND_PLAY_ANIM_SEQ (DynamicTargetPos, DynamicTargetHeading, "walk_up_to_car", "misstest_anim" )
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestPlayRestAtCarAnim
TEST_SEQ = SLIDE_TO_COORD_AND_PLAY_ANIM_SEQ (DynamicTargetPos, DynamicTargetHeading, "rest_on_car", "misstest_anim" )
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestFollowRoute
TEST_SEQ = FOLLOW_ROUTE (route)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestFollowNavemeshAdvacnedHeading
TEST_SEQ = TEST_TASK_FOLLOW_NAVMESH_ADVANCED(DynamicTargetPos, DynamicTargetHeading)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestStandStill
TEST_SEQ = TEST_TASK_STAND_STILL (gtime, route)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE BugTicketSingle
TEST_SEQ = TEST_TASK_FOLLOW_POINT_ROUTE_SINGLE ()
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE BugTicketSeason
TEST_SEQ = TEST_TASK_FOLLOW_POINT_ROUTE_SEASON ()
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE BugGotoPedOffset
TEST_SEQ = TEST_TASK_GOTO_PED_OFFSET()
PedPerformsSequence(TestPeds[0].ped, TEST_SEQ)
Set_Test_State_To_Default()
BREAK
CASE TestSEINOVE
CASE TestWINKY
CASE TestZ75
CASE TestJZ125
CASE TestAUTOGYRO
CASE TestBCHOPPER
CASE TestHind
CASE TestSKIMOBILE
CASE TestRHINO
CASE TestBOBSLEIGH
SWITCH PedEnterVehicleStatus
CASE GIVE_TASK
PRINTSTRING ("GIVE_TASK")
PRINTNL()
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
TEST_SEQ = TEST_TASK_ENTER_VEHICLE (TestVehicles[0].Vehicle, seatindex)
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
ENDIF
IF Blooptest
PedEnterVehicleStatus = CHECK_IF_TASK_IS_COMPLETE
ELSE
Set_Test_State_To_Default()
ENDIF
BREAK
CASE CHECK_IF_TASK_IS_COMPLETE
PRINTSTRING ("CHECK_IF_TASK_IS_COMPLETE")
PRINTNL()
IF NOT IS_PED_INJURED (TestPeds[0].ped )
IF IS_PED_SITTING_IN_ANY_VEHICLE (TestPeds[0].ped )
SETTIMERA(0)
PedEnterVehicleStatus = SET_PED_A_NEW_POS_START_AGAIN
ENDIF
ENDIF
BREAK
CASE SET_PED_A_NEW_POS_START_AGAIN
IF (TIMERA() > 1000)
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].vehicle )
vNewPedPos = GetOffsetRoundCar(TestVehicles[0].vehicle)
heading = GET_RANDOM_FLOAT_IN_RANGE (0, 360 )
IF NOT IS_PED_INJURED (TestPeds[0].ped )
vPedPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TestVehicles[0].vehicle, vNewPedPos)
GET_GROUND_Z_FOR_3D_COORD (vPedPos, vPedPos.z )
SET_ENTITY_COORDS(TestPeds[0].ped , vPedPos )
SET_ENTITY_HEADING( TestPeds[0].ped,heading )
ENDIF
PedEnterVehicleStatus = GIVE_TASK
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TestEnableAssistedMovementRoute1
ASSISTED_MOVEMENT_REQUEST_ROUTE("test_assist1")
BREAK
CASE TestDisableAssistedMovementRoute1
ASSISTED_MOVEMENT_REMOVE_ROUTE("test_assist1")
BREAK
CASE TestEnableAssistedMovementRoute2
ASSISTED_MOVEMENT_REQUEST_ROUTE("test_ASSist2_narrow")
BREAK
CASE TestDisableAssistedMovementRoute2
ASSISTED_MOVEMENT_REMOVE_ROUTE("test_ASSist2_narrow")
BREAK
CASE DefaultTest
BREAK
ENDSWITCH
ENDPROC
//Purpose: Runs the main scenarios
PROC Run_Test_Scenario ()
int index = 0
SWITCH TestScenarioAStatus
//setps up all the data for the sceanrio, this is only called once or if selected in widget
CASE InitialiseScenarioData
PlayerStartPos = GET_PLAYER_START_POS() //sets the players start coords at the default
INITIALISE_PED_DATA (Testpeds)
INITIALISE_VEHICLE_DATA (TestVehicles)
INITIALISE_CAM_DATA(TestCams )
SETUP_TEST_DATA ()
HELP_TEXT_STATE = HTF_SCENARIO_SELECTED_NOT_STARTED
TestScenarioAStatus = CreateScenarioEntities
Temp_Update_Player_With_Scenario(TestCams, scplayer, FALSE, PlayerStartPos) //sets the
BREAK
// Creates all the scenario data
CASE CreateScenarioEntities
Set_Gang_Relationships (TRUE)
Temp_Update_Player_With_Scenario(TestCams, scplayer, true, PlayerStartPos)
//peds
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
CREATE_PED_ENTITY(Testpeds[index])
GiveBlipsToPedsGrps (Testpeds[index])
ALTER_COMBAT_STATS (Testpeds[index] )
SWAP_PED_WEAPONS (Testpeds[index])
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
Block_Peds_Temp_Events (Testpeds[index], TRUE)
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
ENDFOR
//TestVehicles
FOR Index = 0 to MAX_NUMBER_OF_VEHICLES -1
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
ENDFOR
//TestCams
for index = 0 to MAX_NUMBER_OF_CAMERAS -1
CREATE_CAM_ENTITY (TestCams[index])
ENDFOR
TestScenarioAStatus = SetScenarioEntities
BREAK
CASE SetScenarioEntities
Temp_Update_Player_With_Scenario(TestCams, scplayer, true, PlayerStartPos)
Start_And_Reset_Test ()
IF gBeginCombatScenario
TestScenarioAStatus = RunScenario
gBeginCombatScenario = FALSE
gRun_debuggig = FALSE
INITALISE_TEST_STATE()
TEMP_ACTIVATE_CAMS (TestCams[FixedCamera].cam )
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam )
HELP_TEXT_STATE = HTF_SCENARIO_RUNNING_FIXED_CAM
ELSE
HELP_TEXT_STATE = HTF_STARTED_RUNNING_NO_CAMS
ENDIF
ENDIF
BREAK
//Runs the actual selected scenario
CASE RunScenario
Temp_Run_Scenario_Tracking_Cam (TestPeds, MAX_NUMBER_OF_PEDS, TestCams[TrackingCamera].cam)
Temp_Update_Player_With_Scenario(TestCams, scplayer, true, PlayerStartPos)
Start_And_Reset_Test ()
Check_For_Scenario_Reset ()
IF DOES_CAM_EXIST (TestCams[TrackingCamera].cam)
if IS_CAM_RENDERING (TestCams[TrackingCamera].cam)
HELP_TEXT_STATE = HTF_SCENARIO_RUNNING_TRACKING_CAM
ELSE
HELP_TEXT_STATE = HTF_SCENARIO_RUNNING_FIXED_CAM
ENDIF
ENDIF
RUN_TEST () //run the main tests
BREAK
CASE CleanupScenario
HELP_TEXT_STATE = HTF_SCENARIO_SELECTED_NOT_STARTED
Cleanup_Scenario_Entities ()
IF gResetToDefault
Temp_cleanup_scenario_cams () //here we are changing scenarios so we need to reset cams
TestScenarioAStatus = InitialiseScenarioData
gResetToDefault = FALSE
ENDIF
IF gResetCombatScenario
Temp_Update_Player_With_Scenario(TestCams, scplayer, FALSE, PlayerStartPos)
gcurrentselection = gSelection
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
ACTIVATE_CAM (TestCams[FixedCamera].cam)
ELSE
Temp_cleanup_scenario_cams ()
ENDIF
TestScenarioAStatus = CreateScenarioEntities
gResetCombatScenario = FALSE
ENDIF
BREAK
ENDSWITCH
ENDPROC
SCRIPT
SET_DEBUG_ACTIVE (TRUE)
gvMapOffset = GET_PLAYER_START_POS()
SETUP_MISSION_XML_MENU (XMLMenu, KEY_Q)
SETUP_AREA_FOR_MISSION (<<0.0, 0.0, 0.0>>)
//Gets a reference to the player
Get_The_Player ()
SET_PLAYER_COLISION(scplayer, true)
//Sets the test widget for this script
CREATE_TEST_WIDGET ()
//request the test anim bank
// REQUEST_TEST_ANIM_DICT ("misstest_anim")
WHILE TRUE
// controls the help text hides if xml menu is active
TEXT_CONTROLLER ()
// Can set all scenario peds invincible from the widget
Set_Scenario_Peds_Invincible (TestPeds, MAX_NUMBER_OF_PEDS, gsetpedsinvincible )
//User can create a debug cam for setting sceanrios
Temp_Create_Debug_Cam (TestCams[FixedCamera])
//Runs the selected option from the XML menu
Run_Selection_From_XML_input ()
//Checks that a valid selection has been input and runs the scenario
IF (gcurrentselection <> InvalidSelection)
Draw_Debug_Info ( )
//Sets the test scenario into debug mode
Set_To_Debug ()
if (gRun_debuggig)
Temp_Debug_Scenario (TestPeds, TestVehicles, Route, TestCams[FixedCamera].cam, S_M_Y_Cop_01) //Allows the entities in the scneario to be adjusted
Print_Scenario_Data (TestPeds, TestVehicles, Route, TestCams)
ENDIF
Run_Test_Scenario ()
SWITCH_BETWEEN_FIXED_AND_TRACKING (TestCams[FixedCamera].cam)
PRINT_ACTIVE_TEST (Bscenario_running, gRun_debuggig )
ENDIF
WAIT (0)
Terminate_test_script ()
ENDWHILE
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD