847 lines
27 KiB
Python
Executable File
847 lines
27 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_cutscene.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"
|
|
|
|
//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
|
|
|
|
//vector gvMapOffset
|
|
|
|
//Level menu
|
|
STRING XMLMenu = "Testbed/TestVehicleAiMenu"
|
|
|
|
//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]
|
|
|
|
//FLOAT fCarBootAngleRatio
|
|
|
|
VECTOR PlaneTargetCoord = << 150.0000 , 40.0000 , 10.9393 >>
|
|
VECTOR PlaneTargetCoord1 = << 600.3486, 40.0000 , 60.9393 >>
|
|
VECTOR PlaneTargetCoord2 = << 10000.3486, 40.0000 , 60.9393 >>
|
|
|
|
VECTOR HeliTargetCoord = << 50.3486, 100.0366, 30.8365 >>
|
|
VECTOR HeliTargetCoord1 = << 50.3486, 180.0366,30.8365 >>
|
|
VECTOR HeliTargetCoord2 = << -44.3486, 241.0366, 30.8365 >>
|
|
VECTOR HeliTargetCoord3 = << -100.3486, 156.0366, 30.8365 >>
|
|
VECTOR HeliTargetCoord4 = << 8.3486, 35.0366, 10.8365 >>
|
|
BOOL gAnimPlayed = FALSE
|
|
|
|
BOOL gAllowDebugging = TRUE
|
|
|
|
SEQUENCE_INDEX TEST_SEQ
|
|
|
|
//OBJECT_INDEX Object
|
|
|
|
//bool gBootOpen = TRUE
|
|
|
|
bool testprint = FALSE
|
|
bool flushFile = FALSE
|
|
PROC CREATE_TEST_WIDGET ()
|
|
START_WIDGET_GROUP("General 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 ("Test print", testprint)
|
|
ADD_WIDGET_BOOL ("flushFilet", flushFile)
|
|
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
|
|
//END: House Keeping
|
|
|
|
//Test Specific Functions:
|
|
|
|
//EXAMPLE OF IMPLEMTING A SEQUENCE
|
|
FUNC SEQUENCE_INDEX TEST_TASK_OPEN_VEHICLE_DOOR(VEHICLE_INDEX vehicle, int time = -2)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_OPEN_VEHICLE_DOOR (NULL, vehicle, time )
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
|
|
PROC SET_CAMERA(VECTOR vPos, VECTOR vRot)
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_COORD (TestCams[FixedCamera].cam , vPos)
|
|
SET_CAM_ROT (TestCams[FixedCamera].cam , vRot )
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, TRUE )
|
|
ELSE
|
|
TestCams[FixedCamera].cam = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", vPos, vRot, 60.0, TRUE )
|
|
RENDER_SCRIPT_CAMS (TRUE, FALSE)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, TRUE )
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
//point route test
|
|
PROC DRIVE_TO_POINT_SEQUENCE (PED_INDEX ped, VEHICLE_INDEX veh)
|
|
SEQUENCE_INDEX SEQ
|
|
OPEN_SEQUENCE_TASK (SEQ)
|
|
|
|
|
|
TASK_FLUSH_ROUTE()
|
|
TASK_EXTEND_ROUTE(<< -0.0012, 40.0009, 7.9393>>)
|
|
TASK_EXTEND_ROUTE(<<20.0012, 40.0009, 7.9393 >>)
|
|
TASK_EXTEND_ROUTE(<<20.0012, 10.0009, 7.9393>>)
|
|
TASK_EXTEND_ROUTE(<<-0.0012, 10.0009, 7.9393>>)
|
|
TASK_DRIVE_POINT_ROUTE (NULL, veh, 5.0 )
|
|
|
|
|
|
SET_SEQUENCE_TO_REPEAT(seq, REPEAT_FOREVER)
|
|
CLOSE_SEQUENCE_TASK(SEQ)
|
|
|
|
IF NOT IS_PED_INJURED (ped)
|
|
TASK_PERFORM_SEQUENCE (ped, seq)
|
|
|
|
CLEAR_SEQUENCE_TASK (seq)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//End Test Specific Functions
|
|
|
|
//These enums must match with the testNavmenu.xml
|
|
|
|
|
|
|
|
PROC INITALISE_TEST_STATE()
|
|
SingleTaskStatus = startSingleTask
|
|
ENDPROC
|
|
|
|
ENUM Scenarios
|
|
TestExample,
|
|
PointRouteTest,
|
|
HeliStrafe,
|
|
CarSetTempAction,
|
|
CarDrive,
|
|
CarDriveWander,
|
|
PlaneTest,
|
|
TrainTest,
|
|
PlaneDriveBy,
|
|
HeliDriveBy,
|
|
DefaultTest = 1000
|
|
ENDENUM
|
|
|
|
|
|
// END_SCENARIO: SquadOfPedsMovingBetweenVehicles
|
|
PROC SETUP_TEST_DATA ()
|
|
SWITCH int_to_enum (scenarios, gcurrentselection)
|
|
CASE TestExample
|
|
|
|
CASE CarSetTempAction
|
|
CASE CarDrive
|
|
|
|
//fCarBootAngleRatio = 1.0
|
|
|
|
//Create a vehicle
|
|
TestVehicles [0].vehicleCoords = << 80.0012, 66.0009, 1.9393>>
|
|
TestVehicles [0].vehicleHeading = 90.0001
|
|
TestVehicles [0].vehiclemodel = SANCHEZ
|
|
gAnimPlayed = FALSE
|
|
|
|
|
|
//Create a ped
|
|
TestPeds[0].PedsCoords = << 80.0000 , 57.0000, 10.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
|
|
Break
|
|
|
|
CASE CarDriveWander
|
|
//Create a vehicle
|
|
TestVehicles [0].vehicleCoords = << 34.0012, 66.0009, 1.9393>>
|
|
TestVehicles [0].vehicleHeading = 90.0001
|
|
TestVehicles [0].vehiclemodel = TAILGATER
|
|
|
|
TestVehicles [1].vehicleCoords = << 34.0000 , 66.0000 , 1.9393>>
|
|
TestVehicles [1].vehicleHeading = 90.0001
|
|
TestVehicles [1].vehiclemodel = TOWTRUCK
|
|
|
|
//Create a ped
|
|
TestPeds[0].PedsCoords = << 30.4167, 66.4273, 8.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
|
|
Break
|
|
|
|
CASE PointRouteTest
|
|
//Create a vehicle
|
|
TestVehicles [0].vehicleCoords = << 0.0000 , 61.0000 , 8 >>
|
|
TestVehicles [0].vehicleHeading = 90
|
|
TestVehicles [0].vehiclemodel = PACKER
|
|
|
|
TestVehicles [1].vehicleCoords = << 14.0000 , 60.0000 , 8 >>
|
|
TestVehicles [1].vehicleHeading = 90
|
|
TestVehicles [1].vehiclemodel = TRAILERS
|
|
|
|
//Create a ped
|
|
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
|
|
Break
|
|
|
|
CASE HeliStrafe
|
|
//create heli for strafing
|
|
TestVehicles [0].vehicleCoords = << 0.0000 , 30.0000 , 1.9393 >>
|
|
TestVehicles [0].vehicleHeading = 90.0
|
|
TestVehicles [0].vehiclemodel = BUZZARD
|
|
|
|
//Create a ped
|
|
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
|
|
Break
|
|
|
|
CASE PlaneTest
|
|
|
|
//create plane for strafing
|
|
TestVehicles [0].vehicleCoords = << 100.0000 , 40.0000 , 12.9393 >>
|
|
TestVehicles [0].vehicleHeading = -93.0
|
|
TestVehicles [0].vehiclemodel = TITAN
|
|
|
|
SET_VEHICLE_DOOR_OPEN(TestVehicles [0].Vehicle, SC_DOOR_BOOT)
|
|
|
|
TestVehicles [1].vehicleCoords = << 80.0000 , 40.0000 , 9.9393 >>
|
|
TestVehicles [1].vehicleHeading = -93.0
|
|
TestVehicles [1].vehiclemodel = FELTZER2
|
|
|
|
//REQUEST_VEHICLE_RECORDING(1, "titan")
|
|
|
|
//Create a ped
|
|
TestPeds[0].PedsCoords = << 80.0000 , 57.0000, 10.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_PISTOL
|
|
Break
|
|
|
|
CASE TrainTest
|
|
TestVehicles [0].vehicleCoords = << 20.0000 , 30.0000 , 10.9393 >>
|
|
TestVehicles [0].vehicleHeading = 0.0
|
|
TestVehicles [0].vehiclemodel = FREIGHT
|
|
BREAK
|
|
|
|
CASE PlaneDriveBy
|
|
PlayerStartPos = <<664.56,48.84,7.36>>
|
|
|
|
TestPeds[0].PedsCoords = <<642.49, 49.29, 7.36>>
|
|
TestPeds[0].PedHeading = 60.0001
|
|
TestPeds[0].PedModel = S_M_M_GAFFER_01
|
|
|
|
TestVehicles[0].VehicleCoords = <<642.61, 38.08, 7.36>>
|
|
TestVehicles[0].VehicleHeading = 0.0
|
|
TestVehicles[0].Vehiclemodel = LAZER // VULKAN // This test will probably no longer work correctly as the LAZER is not a VTOL vehicle
|
|
|
|
TestVehicles[1].VehicleCoords = <<373.67, 19.61, 7.36>>
|
|
TestVehicles[1].VehicleHeading = 30.0001
|
|
TestVehicles[1].Vehiclemodel = TAILGATER
|
|
|
|
TestVehicles[2].VehicleCoords = <<373.67, 29.61, 7.36>>
|
|
TestVehicles[2].VehicleHeading = 30.0001
|
|
TestVehicles[2].Vehiclemodel = TAILGATER
|
|
BREAK
|
|
|
|
CASE HeliDriveBy
|
|
PlayerStartPos = <<664.56,48.84,7.36>>
|
|
|
|
TestPeds[0].PedsCoords = <<642.49, 49.29, 7.36>>
|
|
TestPeds[0].PedHeading = 60.0001
|
|
TestPeds[0].PedModel = S_M_M_GAFFER_01
|
|
|
|
TestVehicles[0].VehicleCoords = <<642.61, 38.08, 7.36>>
|
|
TestVehicles[0].VehicleHeading = 0.0
|
|
TestVehicles[0].Vehiclemodel = BUZZARD
|
|
|
|
TestVehicles[1].VehicleCoords = <<373.67, 19.61, 7.36>>
|
|
TestVehicles[1].VehicleHeading = 30.0001
|
|
TestVehicles[1].Vehiclemodel = TAILGATER
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC RUN_TEST ()
|
|
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
|
|
//setup scenario
|
|
CASE TestExample
|
|
//Here we add some test cases
|
|
IF NOT IS_PED_INJURED(TestPeds[0].ped)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle)
|
|
TEST_SEQ = TEST_TASK_OPEN_VEHICLE_DOOR (TestVehicles[0].vehicle, 0)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
Set_Test_State_To_Default()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PointRouteTest
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
//IF IS_VEHICLE_DRIVEABLE (TestVehicles [0].Vehicle)
|
|
//IF IS_VEHICLE_DRIVEABLE (TestVehicles [1].Vehicle)
|
|
//SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
//DRIVE_TO_POINT_SEQUENCE (TestPeds[0].ped, TestVehicles [0].Vehicle)
|
|
|
|
|
|
|
|
// Load the models
|
|
//REQUEST_MODEL(PACKER)
|
|
//REQUEST_MODEL(TRAILERS)
|
|
//REQUEST_PTFX_ASSET("script")
|
|
|
|
//LOAD_ALL_OBJECTS_NOW()
|
|
|
|
//WHILE NOT HAS_MODEL_LOADED(PACKER)
|
|
//OR NOT HAS_MODEL_LOADED(TR3)
|
|
//ENDWHILE
|
|
|
|
//DISPLAY_RADAR(TRUE)
|
|
//DISPLAY_HUD(TRUE)
|
|
|
|
// IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
// SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
// SET_PED_COORDS_KEEP_VEHICLE(player_ped_id(), <<717.3974, -979.5804, 23.0563>>)
|
|
// SET_ENTITY_HEADING(player_ped_id(), 257.9481)
|
|
// ENDIF
|
|
|
|
//TestVehicles [0].Vehicle = CREATE_VEHICLE(PACKER, << 0.0000 , 61.0000 , 8 >> , 15)
|
|
|
|
//TestVehicles [1].Vehicle = CREATE_VEHICLE(TRAILERS, << 14.0000 , 60.0000 , 8 >> , 30)
|
|
|
|
|
|
ATTACH_VEHICLE_TO_TRAILER(TestVehicles [0].Vehicle, TestVehicles [1].Vehicle)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(TestVehicles [0].Vehicle)
|
|
//ENDIF
|
|
//ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE CarSetTempAction
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles [0].Vehicle)
|
|
//Block_Peds_Temp_Events (TestPeds[0], TRUE)
|
|
SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
//TASK_VEHICLE_TEMP_ACTION (TestPeds[0].ped, TestVehicles [0].Vehicle, TEMPACT_REVERSE,2000)
|
|
ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE CarDrive
|
|
|
|
//SET_VEHICLE_DOOR_CONTROL(TestVehicles [0].Vehicle, SC_DOOR_BOOT, DT_DOOR_INTACT, 1.25)
|
|
|
|
//fAbilityGunCarBootAngle = GET_VEHICLE_DOOR_ANGLE_RATIO(AbilityGunCarID, SC_DOOR_BOOT)
|
|
/*
|
|
SET_VEHICLE_DOOR_OPEN(TestVehicles [0].Vehicle, SC_DOOR_FRONT_LEFT)
|
|
|
|
SET_VEHICLE_TYRE_FIXED(TestVehicles [0].Vehicle, SC_WHEEL_CAR_FRONT_LEFT)
|
|
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_S)
|
|
gBootOpen = !gBootOpen
|
|
ENDIF
|
|
|
|
IF gBootOpen
|
|
SET_VEHICLE_DOOR_OPEN(TestVehicles [0].Vehicle, SC_DOOR_BOOT)
|
|
ELSE
|
|
SET_VEHICLE_DOOR_SHUT(TestVehicles [0].Vehicle, SC_DOOR_BOOT)
|
|
ENDIF
|
|
*/
|
|
//DrawLiteralStringFloat("fCarBootAngleRatio ", fCarBootAngleRatio, 2, HUD_COLOUR_BLUE)
|
|
//DrawLiteralStringFloat("fAbilityGunCarBootAngle ", fAbilityGunCarBootAngle, 3, HUD_COLOUR_BLUE)
|
|
//TASK_VEHICLE_DRIVE_TO_COORD(TestPeds[0].ped,TestVehicles [0].Vehicle,HeliTargetCoord,30.0,DRIVINGSTYLE_NORMAL,SQUALO,DRIVINGMODE_PLOUGHTHROUGH,10.0,10)
|
|
|
|
//SET_VEHICLE_DOOR_CONTROL(TestVehicles [0].Vehicle, SC_DOOR_BOOT, DT_DOOR_SWINGING_FREE, 0.05)
|
|
|
|
IF GET_CONVERTIBLE_ROOF_STATE( TestVehicles[0].Vehicle ) = CRS_LOWERED
|
|
RAISE_CONVERTIBLE_ROOF( TestVehicles[0].Vehicle)
|
|
ENDIF
|
|
|
|
IF NOT gAnimPlayed
|
|
LOWER_CONVERTIBLE_ROOF( TestVehicles[0].Vehicle, TRUE )
|
|
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF( TestVehicles [0].Vehicle, SC_DOOR_BONNET, FALSE )
|
|
|
|
gAnimPlayed = TRUE
|
|
/*IF HAS_ANIM_DICT_LOADED("FELTZER2")
|
|
|
|
TASK_VEHICLE_PLAY_ANIM( TestVehicles[0].Vehicle, "FELTZER2", "FELTZER2_ROOF" )
|
|
|
|
ENDIF*/
|
|
//SET_VEHICLE_DIGGER_ARM_POSITION(TestVehicles[0].Vehicle, 1.0)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE CarDriveWander
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles [1].Vehicle)
|
|
//Block_Peds_Temp_Events (TestPeds[0], TRUE)
|
|
//SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
//TASK_VEHICLE_TEMP_ACTION (TestPeds[0].ped, TestVehicles [0].Vehicle, TEMPACT_REVERSE,2000)
|
|
//TASK_VEHICLE_DRIVE_WANDER(TestPeds[0].ped, TestVehicles [0].Vehicle, 5, DRIVINGMODE_STOPFORCARS )
|
|
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, RIGHTSHOULDER1)
|
|
SET_VEHICLE_TOW_TRUCK_ARM_POSITION(TestVehicles [1].Vehicle, 1.0)
|
|
ENDIF
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, LEFTSHOULDER1)
|
|
SET_VEHICLE_TOW_TRUCK_ARM_POSITION(TestVehicles [1].Vehicle, 0.5)
|
|
ENDIF
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, RIGHTSHOULDER2)
|
|
SET_VEHICLE_TOW_TRUCK_ARM_POSITION(TestVehicles [1].Vehicle, 0.0)
|
|
ENDIF
|
|
SET_VEHICLE_TOW_TRUCK_ARM_POSITION(TestVehicles [1].Vehicle, 0.0)
|
|
//IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_3)
|
|
//ATTACH_VEHICLE_TO_TOW_TRUCK(TestVehicles [1].Vehicle, TestVehicles [0].Vehicle, GET_ENTITY_BONE_INDEX_BY_NAME(TestVehicles [0].Vehicle,"overheat"), <<0.5,0,0>> )
|
|
//ENDIF
|
|
|
|
//IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_4)
|
|
// DETACH_VEHICLE_FROM_TOW_TRUCK(TestVehicles [1].Vehicle, TestVehicles [0].Vehicle)
|
|
//ENDIF
|
|
|
|
|
|
|
|
//ATTACH_VEHICLE_TO_TOW_TRUCK(vehTowtruck, vehTowed, GET_ENTITY_BONE_INDEX_BY_NAME(vehTowed,"overheat"), <<0.5,0,0>>)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
|
|
|
|
CASE HeliStrafe
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles [0].Vehicle)
|
|
Block_Peds_Temp_Events (TestPeds[0], TRUE)
|
|
SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, HeliTargetCoord, MISSION_GOTO, 120.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, HeliTargetCoord1, MISSION_GOTO, 120.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, HeliTargetCoord2, MISSION_GOTO, 120.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, HeliTargetCoord3, MISSION_GOTO, 120.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, HeliTargetCoord4, MISSION_GOTO, 120.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
|
|
CLOSE_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
TASK_PERFORM_SEQUENCE(TestPeds[0].ped, TEST_SEQUENCE)
|
|
CLEAR_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
// TASK_VEHICLE_DRIVE_TO_COORD(TestPeds[0].ped,TestVehicles [0].Vehicle,HeliTargetCoord,30.0,DRIVINGSTYLE_NORMAL,BUZZARD,DRIVINGMODE_PLOUGHTHROUGH,10.0,10)
|
|
// SET_PED_KEEP_TASK(TestPeds[0].ped,TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE PlaneTest
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles [0].Vehicle)
|
|
SET_VEHICLE_DOOR_OPEN(TestVehicles [0].Vehicle, SC_DOOR_BOOT)
|
|
Block_Peds_Temp_Events (TestPeds[0], TRUE)
|
|
SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer , << 92.0000 , 40.0000, 9.1959>>)
|
|
|
|
//SET_PED_INTO_VEHICLE (scplayer, TestVehicles [1].Vehicle )
|
|
//SET_VEHICLE_FORWARD_SPEED(TestVehicles [0].Vehicle, 0.0)
|
|
|
|
|
|
//POP_OUT_VEHICLE_WINDSCREEN(TestVehicles [1].Vehicle)
|
|
|
|
//Object = CREATE_OBJECT (Prop_BoxPile_03A , << 95.0000 , 40.0000 , 7.9393 >> )
|
|
|
|
//SET_ACTIVATE_OBJECT_PHYSICS_AS_SOON_AS_IT_IS_UNFROZEN(Object, TRUE)
|
|
//FREEZE_ENTITY_POSITION( Object, FALSE)
|
|
//APPLY_FORCE_TO_ENTITY(Object, APPLY_TYPE_FORCE, <<0.0, -0.1, 0.0>>, <<0.0, 0.0, 0.0>>, 0, FALSE, TRUE, TRUE)
|
|
|
|
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord, MISSION_GOTO, 1.0, DRIVINGMODE_PLOUGHTHROUGH, 20, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord1, MISSION_GOTO, 60.0, DRIVINGMODE_PLOUGHTHROUGH, 100, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord2, MISSION_GOTO, 60.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
CLOSE_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
TASK_PERFORM_SEQUENCE(TestPeds[0].ped, TEST_SEQUENCE)
|
|
CLEAR_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TrainTest
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles [0].Vehicle)
|
|
Block_Peds_Temp_Events (TestPeds[0], TRUE)
|
|
SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles [0].Vehicle )
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
SET_VEHICLE_FORWARD_SPEED(TestVehicles [0].Vehicle, 10.0)
|
|
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord, MISSION_GOTO, 60.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord1, MISSION_GOTO, 60.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
TASK_VEHICLE_MISSION_COORS_TARGET(NULL, TestVehicles [0].Vehicle, PlaneTargetCoord2, MISSION_GOTO, 60.0, DRIVINGMODE_PLOUGHTHROUGH, 50, -1)
|
|
CLOSE_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
TASK_PERFORM_SEQUENCE(TestPeds[0].ped, TEST_SEQUENCE)
|
|
CLEAR_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE PlaneDriveBy
|
|
|
|
// Warp ped into driver seat of first vehicle
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
|
|
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_DRIVER)
|
|
WAIT(100)
|
|
ENDIF
|
|
|
|
// Fly plane to designated coord
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
|
|
PlaneTargetCoord = <<444.45,24.65,17.05>>
|
|
TASK_PLANE_GOTO_PRECISE_VTOL(TestPeds[0].Ped, TestVehicles[0].Vehicle, PlaneTargetCoord )
|
|
WAIT(100)
|
|
ENDIF
|
|
|
|
// Task with drive by
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle) AND NOT IS_ENTITY_DEAD( TestVehicles[1].Vehicle)
|
|
PlaneTargetCoord1 = <<0.0,0.0,0.0>>
|
|
TASK_DRIVE_BY( TestPeds[0].Ped, NULL, TestVehicles[1].Vehicle, PlaneTargetCoord1, 10000, 20, TRUE )
|
|
WAIT(10000)
|
|
ENDIF
|
|
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[2].Vehicle)
|
|
PlaneTargetCoord1 = <<0.0,0.0,0.0>>
|
|
SET_DRIVEBY_TASK_TARGET( TestPeds[0].Ped, NULL, TestVehicles[2].Vehicle, PlaneTargetCoord1 )
|
|
WAIT(5000)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE HeliDriveBy
|
|
|
|
// Warp ped into driver seat of first vehicle
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
|
|
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_DRIVER)
|
|
//SET_PED_FIRING_PATTERN(TestPeds[0].Ped, FIRING_PATTERN_FULL_AUTO )
|
|
WAIT(100)
|
|
ENDIF
|
|
|
|
// Task heli to attack
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle) AND NOT IS_ENTITY_DEAD( TestVehicles[1].Vehicle)
|
|
TASK_HELI_MISSION(TestPeds[0].Ped, TestVehicles[0].Vehicle, TestVehicles[1].Vehicle, NULL, <<0,0,0>>, MISSION_ATTACK, 10.0, 6.0, -1, 2, 8)
|
|
WAIT(100)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
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
|
|
Bscenario_running = FALSE
|
|
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
|
|
Bscenario_running = FALSE
|
|
|
|
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
|
|
Bscenario_running = TRUE
|
|
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 ) //defined at the top of the file
|
|
|
|
SETUP_AREA_FOR_MISSION (<<0.0, 0.0, 0.0>>)
|
|
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
//set player collios
|
|
SET_PLAYER_COLISION(scplayer, true)
|
|
|
|
//Sets the test widget from the test tools
|
|
CREATE_TEST_WIDGET ()
|
|
|
|
//request the test anim bank
|
|
//REQUEST_TEST_ANIM_DICT ("FELTZER2")
|
|
|
|
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
|
|
IF (gAllowDebugging)
|
|
Set_To_Debug ()
|
|
ENDIF
|
|
|
|
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
|
|
|
|
Terminate_test_script ()
|
|
|
|
WAIT (0)
|
|
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|
|
|
|
|
|
#ENDIF // IS_DEBUG_BUILD
|
|
|