Files
gtav-src/script/dev_ng/Code/vehicle_test.sc
T
2025-09-29 00:52:08 +02:00

1819 lines
64 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_event.sch"
USING "commands_script.sch"
USING "commands_entity.sch"
USING "commands_itemsets.sch"
USING "commands_misc.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
STRING XMLMenu = "Testbed/TestVehicleMenu"
////////////////////////////////////////////////////////////////////////////////
// These enums must match with the /build/dev/common/data/script/xml/Testbed/TestVehicleMenu.xml
ENUM Scenarios
TEST_SET_PED_IN_VEHICLE = 0,
TEST_TASK_WARP_PED_INTO_VEHICLE = 1,
TEST_MOVING_ALIGN = 2,
BUG_LEAVE_ANY_VEHICLE = 3,
TEST_ENTER_VEHICLE_NORMAL = 4,
TEST_ENTER_VEHICLE_JACK = 5,
TEST_ENTER_VEHICLE_FORCED = 6,
TEST_BRING_VEHICLE_TO_HALT = 7,
TEST_ENTER_VEHICLE_ON_SIDE = 8,
TEST_PLANE_HOMING_MISSILES = 9,
TEST_STREAM_VEHICLE_ANIMS = 10,
TEST_SET_VELOCITY = 11,
TEST_IN_VEHICLE_CONTEXT = 12,
TEST_STOCKADE_WITH_STICKY_GRENADES = 13,
TEST_DEATH_WHILST_EXITING = 14,
TEST_COLLISION_WHILE_ENTERING = 15,
TEST_COLLISION_WHILE_EXITING = 16,
TEST_DEATH_WHILE_ENTERING = 17,
TEST_DEATH_WHILE_EXITING = 18,
TEST_THROUGH_WINDSCREEN = 19,
TEST_JUMP_OUT = 20,
TEST_COLLISION_WHILE_JACKING_PED = 21,
TEST_DEATH_WHILE_JACKING_PED = 22,
TEST_OVERRIDE_ENTRY_CLIPSET = 23,
TEST_FLEE_EXIT = 24,
DefaultTest = 1000
ENDENUM
ENUM VEHICLE_LAYOUTS
VLAYOUT_BIKE_DIRT = 0,
VLAYOUT_BIKE_SPORT,
VLAYOUT_BIKE_CHOPPER,
VLAYOUT_BIKE_FREEWAY,
VLAYOUT_BIKE_SCOOTER,
VLAYOUT_BICYCLE_BMX,
VLAYOUT_BICYCLE_ROAD,
VLAYOUT_BICYCLE_MOUNTAIN,
VLAYOUT_BICYCLE_CRUISER,
VLAYOUT_VAN,
VLAYOUT_TRUCK,
VLAYOUT_STD,
VLAYOUT_LOW,
VLAYOUT_CUBAN_800,
VLAYOUT_DUSTER,
VLAYOUT_HELI,
VLAYOUT_HELI_FROGGER,
VLAYOUT_BUS,
VLAYOUT_QUAD_BIKE,
VLAYOUT_TOURBUS
ENDENUM
ENUM WEAPON_ID
PISTOL = 0,
RIFLE_AK47,
PUMPSHOTGUN,
GRENADELAUNCHER
ENDENUM
ENUM WALL_HEIGHT
ONE_METRE_HIGH_WALL = 0,
TWO_METRE_HIGH_WALL,
THREE_METRE_HIGH_WALL
ENDENUM
ENUM JUMP_HEIGHT
GROUND_LEVEL = 0,
SMALL_STEP,
LOW_WALL,
HIGH_WALL
ENDENUM
////////////////////////////////////////////////////////////////////////////////
CONST_INT MAX_NUMBER_OF_PEDS 10
CONST_INT MAX_NUMBER_OF_VEHICLES 10
CONST_INT MAX_NUMBER_OF_OBJECTS 1
CONST_INT MAX_NUMBER_OF_NODES 7
CONST_INT MAX_NUMBER_OF_CAMERAS 2
CONST_INT FixedCamera 0
CONST_INT TrackingCamera 1
peds_struct TestPeds[MAX_NUMBER_OF_PEDS]
vehicle_struct TestVehicles[MAX_NUMBER_OF_VEHICLES]
Object_struct TestObjects[MAX_NUMBER_OF_OBJECTS]
RouteStruct Route[MAX_NUMBER_OF_NODES]
StCameraData TestCams[MAX_NUMBER_OF_CAMERAS]
////////////////////////////////////////////////////////////////////////////////
// Define Widget Variables
FLOAT DYNAMIC_MOVE_BLEND_RATIO = PEDMOVEBLENDRATIO_WALK
FLOAT SlideSpeed = 1.0
FLOAT BlendSpeed = 8.0
BOOL bLoopAnim = FALSE, bExtractbackwardvel = TRUE, bExtractsidevel = TRUE, bholdlastframe = FALSE
FLOAT Ground_z
BOOL REMOVE_VEHICLE_DOOR = FALSE
BOOL WARP_TO_ENTRY_POINT = FALSE
BOOL BIKE_LEFT_SIDE = TRUE
BOOL PREFER_LEFT_ENTRY = FALSE
BOOL PREFER_RIGHT_ENTRY = FALSE
INT TimeBeforeStop = 500
INT PEDS_SEAT_INDEX = ENUM_TO_INT(VS_DRIVER)
INT VEHICLE_TEST_INDEX = ENUM_TO_INT(VLAYOUT_STD)
INT WEAPON_TYPEID = 0
INT SWIPE_TYPE = 0
INT WAIT_BEFORE_ENTER_EXIT_TIME = 2000
INT WAIT_BEFORE_VEHICLE_RAM = 2000
INT WAIT_BEFORE_FIRE_TIME = 1000
INT DEATH_TIME = 1000
FLOAT ForwardSpeed = 30.0
BOOL ENTER_EXIT_TASK_GIVEN = FALSE
BOOL SHOOT_TASK_GIVEN = FALSE
BOOL VEHICLE_RAM_TASK_GIVEN = FALSE
INT WALL_HEIGHT_TYPE = ENUM_TO_INT(ONE_METRE_HIGH_WALL)
INT JUMP_HEIGHT_TYPE = ENUM_TO_INT(GROUND_LEVEL)
FLOAT VEHICLE_SPEED = 12.0
FLOAT VEHICLE_SIDE_OFFSET = 0.0
VECTOR camera_pos
FLOAT CAM_ZOOM = 6
FLOAT CAM_PAN = -128
FLOAT CAM_PITCH = 65
BOOL JACK_FROM_PASSENGER = FALSE
STRING clipsetname = "clipset@rcmpaparazzo1ig_1_ps"
FLOAT fVehicleHaltStoppingDist = 10.5
////////////////////////////////////////////////////////////////////////////////
// Create Widgets
PROC CREATE_TEST_WIDGET ()
START_WIDGET_GROUP("Vehicle Test")
SETUP_WIDGET ()
START_WIDGET_GROUP("Tasks")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("VS_ANY_PASSENGER")
ADD_TO_WIDGET_COMBO("VS_DRIVER")
ADD_TO_WIDGET_COMBO("VS_FRONT_RIGHT")
ADD_TO_WIDGET_COMBO("VS_BACK_LEFT")
ADD_TO_WIDGET_COMBO("VS_BACK_RIGHT")
ADD_TO_WIDGET_COMBO("VS_EXTRA_LEFT_1")
ADD_TO_WIDGET_COMBO("VS_EXTRA_RIGHT_1")
ADD_TO_WIDGET_COMBO("VS_EXTRA_LEFT_2")
ADD_TO_WIDGET_COMBO("VS_EXTRA_RIGHT_2")
ADD_TO_WIDGET_COMBO("VS_EXTRA_LEFT_3")
ADD_TO_WIDGET_COMBO("VS_EXTRA_RIGHT_3")
STOP_WIDGET_COMBO("PEDS_SEAT_INDEX", PEDS_SEAT_INDEX)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("LAYOUT_BIKE_DIRT")
ADD_TO_WIDGET_COMBO("LAYOUT_BIKE_SPORT")
ADD_TO_WIDGET_COMBO("LAYOUT_BIKE_CHOPPER")
ADD_TO_WIDGET_COMBO("LAYOUT_BIKE_FREEWAY")
ADD_TO_WIDGET_COMBO("LAYOUT_BIKE_SCOOTER")
ADD_TO_WIDGET_COMBO("LAYOUT_BICYCLE_BMX")
ADD_TO_WIDGET_COMBO("LAYOUT_BICYCLE_ROAD")
ADD_TO_WIDGET_COMBO("LAYOUT_BICYCLE_MOUNTAIN")
ADD_TO_WIDGET_COMBO("LAYOUT_BICYCLE_CRUISER")
ADD_TO_WIDGET_COMBO("LAYOUT_VAN")
ADD_TO_WIDGET_COMBO("LAYOUT_TRUCK")
ADD_TO_WIDGET_COMBO("LAYOUT_STD")
ADD_TO_WIDGET_COMBO("LAYOUT_LOW")
ADD_TO_WIDGET_COMBO("LAYOUT_CUBAN_800")
ADD_TO_WIDGET_COMBO("LAYOUT_DUSTER")
ADD_TO_WIDGET_COMBO("LAYOUT_HELI")
ADD_TO_WIDGET_COMBO("LAYOUT_HELI_FROGGER")
ADD_TO_WIDGET_COMBO("LAYOUT_BUS")
ADD_TO_WIDGET_COMBO("LAYOUT_QUAD_BIKE")
ADD_TO_WIDGET_COMBO("LAYOUT_TOURBUS")
STOP_WIDGET_COMBO("VEHICLE_TO_TEST", VEHICLE_TEST_INDEX)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("ONE_METRE_HIGH_WALL")
ADD_TO_WIDGET_COMBO("TWO_METRE_HIGH_WALL")
ADD_TO_WIDGET_COMBO("THREE_METRE_HIGH_WALL")
ADD_TO_WIDGET_COMBO("VS_BACK_LEFT")
STOP_WIDGET_COMBO("WALL_HEIGHT_TYPE", WALL_HEIGHT_TYPE)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("GROUND_LEVEL")
ADD_TO_WIDGET_COMBO("SMALL_STEP")
ADD_TO_WIDGET_COMBO("LOW_WALL")
ADD_TO_WIDGET_COMBO("HIGH_WALL")
STOP_WIDGET_COMBO("JUMP_HEIGHT_TYPE", JUMP_HEIGHT_TYPE)
ADD_WIDGET_FLOAT_SLIDER ("VEHICLE_SIDE_OFFSET", VEHICLE_SIDE_OFFSET, -10.0, 10.0, 0.1)
ADD_WIDGET_BOOL ("JACK_FROM_PASSENGER", JACK_FROM_PASSENGER )
ADD_WIDGET_BOOL ("REMOVE_VEHICLE_DOOR", REMOVE_VEHICLE_DOOR )
ADD_WIDGET_BOOL ("WARP_TO_ENTRY_POINT", WARP_TO_ENTRY_POINT )
ADD_WIDGET_BOOL ("BIKE_LEFT_SIDE", BIKE_LEFT_SIDE )
ADD_WIDGET_BOOL ("PREFER_LEFT_ENTRY", PREFER_LEFT_ENTRY)
ADD_WIDGET_BOOL ("PREFER_RIGHT_ENTRY", PREFER_RIGHT_ENTRY)
ADD_WIDGET_FLOAT_SLIDER ("Forward Speed", ForwardSpeed, -100.0, 100.0, 0.1)
ADD_WIDGET_INT_SLIDER ("Time between stop", TimeBeforeStop, 0, 3000, 1)
ADD_WIDGET_INT_SLIDER ("Time to wait before vehicle ram", WAIT_BEFORE_VEHICLE_RAM, 0, 5000, 1)
ADD_WIDGET_INT_SLIDER ("Time to wait before enter/exit", WAIT_BEFORE_ENTER_EXIT_TIME, 0, 5000, 1)
ADD_WIDGET_INT_SLIDER ("Time to wait before firing", WAIT_BEFORE_FIRE_TIME, 0, 5000, 1)
ADD_WIDGET_INT_SLIDER ("Vehicle Swipe Type", SWIPE_TYPE, 0, 3, 1)
ADD_WIDGET_FLOAT_SLIDER ("VEHICLE_SPEED", VEHICLE_SPEED, 0.0, 300.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER ("CAM_ZOOM", CAM_ZOOM, -30.0, 30.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER ("CAM_PAN", CAM_PAN, -180.0, 180.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER ("CAM_PITCH", CAM_PITCH, -90.0, 90.0, 1.0)
STOP_WIDGET_GROUP()
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_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 ("GroiundZ",Ground_z, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("Slide speed",SlideSpeed, -2000, 2000, 0.5)
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_PISTOL")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_RIFLE_AK47")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_PUMPSHOTGUN")
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_GRENADELAUNCHER")
STOP_WIDGET_COMBO("weapon", WEAPON_TYPEID)
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 ()
START_WIDGET_GROUP("BRING_VEHICLE_TO_HALT")
ADD_WIDGET_FLOAT_SLIDER("Stopping distance", fVehicleHaltStoppingDist, 0.0, 20.0, 0.1)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
ENDPROC
////////////////////////////////////////////////////////////////////////////////
//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
for index = 0 to MAX_NUMBER_OF_OBJECTS -1
CLEAN_UP_OBJECT_ENTITIES (TestObjects[index].Object)
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: Mission flow House keeping
//Function: SCENARIO TASKS
//SEQUENCE_INDEX TEST_SEQ
FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_WALK_SEQ ( VECTOR L_Target_Pos)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, L_Target_Pos, PEDMOVE_WALK, -2, 0.25)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_RUN_SEQ ( VECTOR L_Target_Pos)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, L_Target_Pos, PEDMOVE_RUN, -2, 0.25)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_SPRINT_SEQ ( VECTOR L_Target_Pos)
SEQUENCE_INDEX TEST_SEQUENCE
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, L_Target_Pos, PEDMOVE_SPRINT, -2, 0.25)
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
RETURN TEST_SEQUENCE
ENDFUNC
ENUM SCENARIO_STATE_ENUM
STATE_INIT,
STATE_1,
STATE_2,
STATE_3,
STATE_4,
STATE_5
ENDENUM
PROC SET_UP_RELATIONSHIP_GROUPS ()
INT index = 0
FOR index = 0 to MAX_NUMBER_OF_PEDS -1
ADD_RELATIONSHIP_GROUP_TO_STRUCT(TestPeds[index])
ENDFOR
ENDPROC
SCENARIO_STATE_ENUM SCENARIO_STATE = STATE_INIT
////////////////////////////////////////////////////////////////////////////////
PROC SETUP_TEST_DATA ()
MODEL_NAMES testVehicleName
SWITCH int_to_enum (VEHICLE_LAYOUTS, VEHICLE_TEST_INDEX)
CASE VLAYOUT_BIKE_DIRT testVehicleName = SANCHEZ BREAK
CASE VLAYOUT_BIKE_SPORT testVehicleName = VADER BREAK
CASE VLAYOUT_BIKE_CHOPPER testVehicleName = DAEMON BREAK
CASE VLAYOUT_BIKE_FREEWAY testVehicleName = POLICEB BREAK
CASE VLAYOUT_BIKE_SCOOTER testVehicleName = FAGGIO2 BREAK
CASE VLAYOUT_BICYCLE_BMX testVehicleName = BMX BREAK
CASE VLAYOUT_BICYCLE_CRUISER testVehicleName = CRUISER BREAK
CASE VLAYOUT_BICYCLE_ROAD testVehicleName = TRIBIKE BREAK
CASE VLAYOUT_BICYCLE_MOUNTAIN testVehicleName = SCORCHER BREAK
CASE VLAYOUT_VAN testVehicleName = BURRITO BREAK
CASE VLAYOUT_TRUCK testVehicleName = PHANTOM BREAK
CASE VLAYOUT_STD testVehicleName = TAILGATER BREAK
CASE VLAYOUT_LOW testVehicleName = SENTINEL2 BREAK
CASE VLAYOUT_CUBAN_800 testVehicleName = CUBAN800 BREAK
CASE VLAYOUT_DUSTER testVehicleName = DUSTER BREAK
CASE VLAYOUT_HELI testVehicleName = POLMAV BREAK
CASE VLAYOUT_HELI_FROGGER testVehicleName = FROGGER BREAK
CASE VLAYOUT_BUS testVehicleName = BUS BREAK
CASE VLAYOUT_QUAD_BIKE testVehicleName = BLAZER BREAK
CASE VLAYOUT_TOURBUS testVehicleName = TOURBUS BREAK
ENDSWITCH
SWITCH int_to_enum (scenarios, gcurrentselection)
CASE TEST_SET_PED_IN_VEHICLE
CASE TEST_TASK_WARP_PED_INTO_VEHICLE
TestPeds[0].PedsCoords = <<-4.03, 79.15, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = S_M_M_GAFFER_01
TestVehicles[0].VehicleCoords = <<-0.95, 81.88, 6.35>>
TestVehicles[0].VehicleHeading = 90.0001
TestVehicles[0].Vehiclemodel = testVehicleName
TestCams[FixedCamera].cam_pos = <<-1.228716,75.143669,10.048866>>
TestCams[FixedCamera].cam_rot = <<-30.870243,-0.000000,0.979704>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_MOVING_ALIGN
TestPeds[0].PedsCoords = <<-4.11, 72.40, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = S_M_M_GAFFER_01
TestVehicles[0].VehicleCoords = <<-9.39, 72.62, 6.35>>
TestVehicles[0].VehicleHeading = 90.0001
TestVehicles[0].Vehiclemodel = testVehicleName
BREAK
CASE BUG_LEAVE_ANY_VEHICLE
TestPeds[0].PedsCoords = <<-4.11, 72.40, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = S_M_M_GAFFER_01
TestPeds[1].PedsCoords = <<-7.11, 72.40, 6.35>>
TestPeds[1].PedHeading = 359.6439
TestPeds[1].PedModel = S_M_M_GAFFER_01
TestPeds[2].PedsCoords = <<-11.11, 72.40, 6.35>>
TestPeds[2].PedHeading = 359.6439
TestPeds[2].PedModel = S_M_M_GAFFER_01
TestPeds[3].PedsCoords = <<-1.11, 72.40, 6.35>>
TestPeds[3].PedHeading = 359.6439
TestPeds[3].PedModel = S_M_M_GAFFER_01
TestVehicles[0].VehicleCoords = <<-9.39, 72.62, 6.35>>
TestVehicles[0].VehicleHeading = 90.0001
TestVehicles[0].Vehiclemodel = BUS
BREAK
CASE TEST_ENTER_VEHICLE_NORMAL
CASE TEST_ENTER_VEHICLE_JACK
CASE TEST_ENTER_VEHICLE_FORCED
CASE TEST_ENTER_VEHICLE_ON_SIDE
CASE TEST_DEATH_WHILST_EXITING
TestPeds[0].PedsCoords = <<-35.77, 90.64, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = PLAYER_ZERO
TestPeds[1].PedsCoords = <<-32.89, 90.66, 6.35>>
TestPeds[1].PedHeading = 359.6439
TestPeds[1].PedModel = S_M_Y_ROBBER_01
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
TestVehicles[0].VehicleCoords = <<-35.90, 94.50, 6.35>>
TestVehicles[0].VehicleHeading = 90.0001
TestVehicles[0].Vehiclemodel = testVehicleName
TestCams[FixedCamera].cam_pos = <<-35.96, 90.58, 10.84>>
TestCams[FixedCamera].cam_rot = <<-48.44, 0, -2.81>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_BRING_VEHICLE_TO_HALT
TestVehicles[0].VehicleCoords = <<-0.95, 81.88, 6.35>>
TestVehicles[0].VehicleHeading = 90.0001
TestVehicles[0].Vehiclemodel = TAILGATER
BREAK
CASE TEST_PLANE_HOMING_MISSILES
TestVehicles[0].VehicleCoords = <<642.61, 38.08, 7.36>>
TestVehicles[0].VehicleHeading = 60.0001
TestVehicles[0].Vehiclemodel = LAZER
TestVehicles[1].VehicleCoords = <<515.54, 35.07, 7.36>>
TestVehicles[1].VehicleHeading = 90.0001
TestVehicles[1].Vehiclemodel = testVehicleName
TestVehicles[2].VehicleCoords = <<463.48, 31.66, 7.36>>
TestVehicles[2].VehicleHeading = 60.0001
TestVehicles[2].Vehiclemodel = testVehicleName
TestVehicles[3].VehicleCoords = <<373.67, 19.61, 7.36>>
TestVehicles[3].VehicleHeading = 30.0001
TestVehicles[3].Vehiclemodel = testVehicleName
TestVehicles[4].VehicleCoords = <<305.03, 38.95, 7.36>>
TestVehicles[4].VehicleHeading = 15.0001
TestVehicles[4].Vehiclemodel = testVehicleName
TestVehicles[5].VehicleCoords = <<218.13, 31.83, 7.36>>
TestVehicles[5].VehicleHeading = 0.0001
TestVehicles[5].Vehiclemodel = testVehicleName
TestVehicles[6].VehicleCoords = <<121.56, 26.35, 7.36>>
TestVehicles[6].VehicleHeading = 90.0001
TestVehicles[6].Vehiclemodel = testVehicleName
BREAK
CASE TEST_STREAM_VEHICLE_ANIMS
BREAK
CASE TEST_SET_VELOCITY
TestPeds[0].PedsCoords = <<-35.77, 90.64, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = S_M_Y_ARMYMECH_01
TestVehicles[0].VehicleCoords = <<-35.90, 94.50, 6.35>>
TestVehicles[0].VehicleHeading = 0.0001
TestVehicles[0].Vehiclemodel = TAILGATER
TestCams[FixedCamera].cam_pos = <<-35.96, 90.58, 10.84>>
TestCams[FixedCamera].cam_rot = <<-48.44, 0, -2.81>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_IN_VEHICLE_CONTEXT
TestPeds[0].PedsCoords = <<-35.77, 90.64, 6.35>>
TestPeds[0].PedHeading = 359.6439
TestPeds[0].PedModel = S_M_Y_ARMYMECH_01
TestVehicles[0].VehicleCoords = <<-35.90, 94.50, 6.35>>
TestVehicles[0].VehicleHeading = 0.0001
TestVehicles[0].Vehiclemodel = BJXL
TestCams[FixedCamera].cam_pos = <<-35.96, 90.58, 10.84>>
TestCams[FixedCamera].cam_rot = <<-48.44, 0, -2.81>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_STOCKADE_WITH_STICKY_GRENADES
TestVehicles[0].VehicleCoords = <<-5.1, 81.8, 7.4>>
TestVehicles[0].VehicleHeading = 0.0001
TestVehicles[0].Vehiclemodel = STOCKADE3
BREAK
CASE TEST_COLLISION_WHILE_ENTERING
CASE TEST_COLLISION_WHILE_EXITING
TestPeds[0].PedsCoords = <<-59.55467, 142.87741, 6.35158>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = PLAYER_ONE
TestPeds[1].PedsCoords = <<-46.60886, 143.81769, 6.35158>>
TestPeds[1].PedHeading = 359.6439
TestPeds[1].PedModel = PLAYER_TWO
TestVehicles[0].Vehiclemodel = TAILGATER
TestVehicles[0].VehicleCoords = <<-60.88103, 143.33746, 6.35158>>
TestVehicles[0].VehicleHeading = 0.0
TestVehicles[1].Vehiclemodel = testVehicleName
TestVehicles[1].VehicleCoords = <<-49.16578, 144.24376, 6.35158>>
TestVehicles[1].VehicleHeading = 90.0
TestCams[FixedCamera].cam_pos = <<-59.807808,135.568634,11.596110>>
TestCams[FixedCamera].cam_rot = <<-34.370911,0.000000,2.999246>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_DEATH_WHILE_ENTERING
CASE TEST_DEATH_WHILE_EXITING
TestPeds[0].PedsCoords = <<-58.72038, 142.80356, 6.35158>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = PLAYER_ONE
TestPeds[1].PedsCoords = <<-56.30446, 143.88820, 6.35158>>
TestPeds[1].PedHeading = 92.18
TestPeds[1].PedModel = S_M_Y_ARMYMECH_01
SWITCH int_to_enum (WEAPON_ID, WEAPON_TYPEID)
CASE PISTOL
TestPeds[1].PedsWeapon = WEAPONTYPE_PISTOL
BREAK
CASE RIFLE_AK47
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
BREAK
CASE PUMPSHOTGUN
TestPeds[1].PedsWeapon = WEAPONTYPE_PUMPSHOTGUN
BREAK
CASE GRENADELAUNCHER
TestPeds[1].PedsWeapon = WEAPONTYPE_GRENADELAUNCHER
BREAK
ENDSWITCH
TestVehicles[0].Vehiclemodel = testVehicleName
TestVehicles[0].VehicleCoords = <<-60.88103, 143.33746, 6.35158>>
TestVehicles[0].VehicleHeading = 0.0
TestCams[FixedCamera].cam_pos = <<-60.539310,147.936768,7.679381>>
TestCams[FixedCamera].cam_rot = <<-7.064416,0.000000,-175.209595>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_THROUGH_WINDSCREEN
TestPeds[0].PedsCoords = <<41.54198, 192.12083, 6.35078>>
TestPeds[0].PedHeading = 90.0
TestPeds[0].PedModel = PLAYER_TWO
TestVehicles[0].Vehiclemodel = testVehicleName
TestVehicles[0].VehicleCoords = <<39.05972, 188.74785, 6.35078>>
TestVehicles[0].VehicleHeading = 0.0
TestCams[FixedCamera].cam_pos = <<32.648914,201.675476,9.892513>>
TestCams[FixedCamera].cam_rot = <<-24.138597,-0.000000,-98.526772>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_JUMP_OUT
TestPeds[0].PedsCoords = <<-62.28864, 68.22392, 6.35084>>
TestPeds[0].PedHeading = 90.0
TestPeds[0].PedModel = PLAYER_TWO
TestVehicles[0].Vehiclemodel = testVehicleName
TestVehicles[0].VehicleCoords = <<-63.43328, 68.22320, 6.35084>>
TestVehicles[0].VehicleHeading = 0.0
TestCams[FixedCamera].cam_pos = <<-63.776264,73.140923,9.245447>>
TestCams[FixedCamera].cam_rot = <<-11.765430,-0.000000,-6.115568>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_COLLISION_WHILE_JACKING_PED
TestPeds[0].PedsCoords = <<-52.66739, 145.89999, 6.35158>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = PLAYER_ZERO
TestPeds[1].PedsCoords = <<-59.55467, 142.87741, 6.35158>>
TestPeds[1].PedHeading = -1.58
TestPeds[1].PedModel = PLAYER_ONE
TestPeds[2].PedsCoords = <<-46.60886, 143.81769, 6.35158>>
TestPeds[2].PedHeading = 359.6439
TestPeds[2].PedModel = PLAYER_TWO
TestVehicles[0].Vehiclemodel = TAILGATER
TestVehicles[0].VehicleCoords = <<-60.88103, 143.33746, 6.35158>>
TestVehicles[0].VehicleHeading = 180.0
TestVehicles[1].Vehiclemodel = testVehicleName
TestVehicles[1].VehicleCoords = <<-49.16578, 144.24376, 6.35158>>
TestVehicles[1].VehicleHeading = 90.0
TestCams[FixedCamera].cam_pos = <<-59.807808,135.568634,11.596110>>
TestCams[FixedCamera].cam_rot = <<-34.370911,0.000000,2.999246>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_DEATH_WHILE_JACKING_PED
TestPeds[0].PedsCoords = <<-52.66739, 145.89999, 6.35158>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = PLAYER_ZERO
TestPeds[1].PedsCoords = <<-59.55467, 142.87741, 6.35158>>
TestPeds[1].PedHeading = -1.58
TestPeds[1].PedModel = PLAYER_ONE
TestPeds[2].PedsCoords = <<-56.87870, 143.20117, 6.35158>>
TestPeds[2].PedHeading = 359.6439
TestPeds[2].PedModel = S_M_Y_ARMYMECH_01
SWITCH int_to_enum (WEAPON_ID, WEAPON_TYPEID)
CASE PISTOL
TestPeds[2].PedsWeapon = WEAPONTYPE_PISTOL
BREAK
CASE RIFLE_AK47
TestPeds[2].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
BREAK
CASE PUMPSHOTGUN
TestPeds[2].PedsWeapon = WEAPONTYPE_PUMPSHOTGUN
BREAK
CASE GRENADELAUNCHER
TestPeds[2].PedsWeapon = WEAPONTYPE_GRENADELAUNCHER
BREAK
ENDSWITCH
TestVehicles[0].Vehiclemodel = TAILGATER
TestVehicles[0].VehicleCoords = <<-60.88103, 143.33746, 6.35158>>
TestVehicles[0].VehicleHeading = 180.0
TestVehicles[1].Vehiclemodel = testVehicleName
TestVehicles[1].VehicleCoords = <<-49.16578, 144.24376, 6.35158>>
TestVehicles[1].VehicleHeading = 90.0
TestCams[FixedCamera].cam_pos = <<-59.807808,135.568634,11.596110>>
TestCams[FixedCamera].cam_rot = <<-34.370911,0.000000,2.999246>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_OVERRIDE_ENTRY_CLIPSET
TestPeds[0].PedsCoords = <<-58.72038, 142.80356, 6.35158>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = IG_BEVERLY
TestVehicles[0].Vehiclemodel = VADER
TestVehicles[0].VehicleCoords = <<-60.88103, 143.33746, 6.35158>>
TestVehicles[0].VehicleHeading = 0.0
TestCams[FixedCamera].cam_pos = <<-60.539310,147.936768,7.679381>>
TestCams[FixedCamera].cam_rot = <<-7.064416,0.000000,-175.209595>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
CASE TEST_FLEE_EXIT
TestPeds[0].PedsCoords = <<-1.82127, 80.65820, 6.35078>>
TestPeds[0].PedHeading = -1.58
TestPeds[0].PedModel = A_F_Y_BEACH_01
TestPeds[1].PedsCoords = <<-2.36231, 77.52570, 6.35078>>
TestPeds[1].PedHeading = 19.43
TestPeds[1].PedModel = PLAYER_TWO
TestVehicles[0].Vehiclemodel = testVehicleName
TestVehicles[0].VehicleCoords = <<-6.25811, 83.23129, 6.35078>>
TestVehicles[0].VehicleHeading = 180.0
TestCams[FixedCamera].cam_pos = <<-6.418138,86.555687,10.362010>>
TestCams[FixedCamera].cam_rot = <<-44.229584,-0.000001,-151.038116>>
TestCams[FixedCamera].bActivateCam = TRUE
BREAK
ENDSWITCH
ENDPROC
////////////////////////////////////////////////////////////////////////////////
///
PROC RUN_TEST()
VECTOR vBlipPos
//INT index = 0
VECTOR vRotationEulers
IF BIKE_LEFT_SIDE
vRotationEulers = <<0.0, 90.0, 0.0>>
ELSE
vRotationEulers = <<0.0, -90.0, 0.0>>
ENDIF
ENTER_EXIT_VEHICLE_FLAGS ENTER_EXIT_FLAGS
IF WARP_TO_ENTRY_POINT
ENTER_EXIT_FLAGS |= ECF_WARP_ENTRY_POINT
ENDIF
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
CASE TEST_SET_PED_IN_VEHICLE
IS_ENTRY_POINT_FOR_SEAT_CLEAR(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_DRIVER)
SWITCH SCENARIO_STATE
CASE STATE_INIT
//INT SEAT
//SEAT = PEDS_SEAT_INDEX - 2
//IF SEAT >= ENUM_TO_INT(VS_ANY_PASSENGER) AND SEAT <= ENUM_TO_INT(VS_EXTRA_RIGHT_3)
// SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, INT_TO_ENUM(VEHICLE_SEAT, SEAT))
//ENDIF
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_ANY_PASSENGER)
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE TEST_TASK_WARP_PED_INTO_VEHICLE
SWITCH SCENARIO_STATE
CASE STATE_INIT
TASK_WARP_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_ANY_PASSENGER)
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE TEST_MOVING_ALIGN
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
TASK_WARP_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_DRIVER)
TASK_VEHICLE_MISSION_COORS_TARGET(TestPeds[0].Ped, TestVehicles[0].Vehicle, <<-4.67, 68.52, 6.35>>, MISSION_GOTO, 5.0, DRIVINGMODE_PLOUGHTHROUGH, 0.1, 5.0)
ENDIF
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE BUG_LEAVE_ANY_VEHICLE
INT Index
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
FOR Index = 0 to 3
IF NOT IS_ENTITY_DEAD(TestPeds[Index].Ped)
INT SEAT
SEAT = Index-1
TASK_WARP_PED_INTO_VEHICLE(TestPeds[Index].Ped, TestVehicles[0].Vehicle, INT_TO_ENUM(VEHICLE_SEAT, SEAT))
ENDIF
ENDFOR
ENDIF
SETTIMERA(0)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
IF TIMERA() > 1000
FOR Index = 0 to 3
IF NOT IS_ENTITY_DEAD(TestPeds[Index].Ped)
TASK_LEAVE_ANY_VEHICLE(TestPeds[Index].Ped)
ENDIF
ENDFOR
SCENARIO_STATE = STATE_2
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_ENTER_VEHICLE_NORMAL
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF REMOVE_VEHICLE_DOOR AND NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
SET_VEHICLE_DOOR_BROKEN(TestVehicles[0].Vehicle, SC_DOOR_FRONT_LEFT, TRUE)
ENDIF
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, DYNAMIC_MOVE_BLEND_RATIO, ENTER_EXIT_FLAGS)
ENDIF
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE TEST_ENTER_VEHICLE_JACK
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF REMOVE_VEHICLE_DOOR AND NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
SET_VEHICLE_DOOR_BROKEN(TestVehicles[0].Vehicle, SC_DOOR_FRONT_LEFT, TRUE)
ENDIF
IF NOT IS_ENTITY_DEAD(TestPeds[1].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
TASK_ENTER_VEHICLE(TestPeds[1].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, PEDMOVE_WALK, ECF_WARP_PED)
ENDIF
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
ENTER_EXIT_FLAGS |= ECF_JACK_ANYONE
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, DYNAMIC_MOVE_BLEND_RATIO, ENTER_EXIT_FLAGS)
ENDIF
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE TEST_ENTER_VEHICLE_FORCED
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF REMOVE_VEHICLE_DOOR AND NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
SET_VEHICLE_DOOR_BROKEN(TestVehicles[0].Vehicle, SC_DOOR_FRONT_LEFT, TRUE)
ENDIF
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
SET_VEHICLE_DOORS_LOCKED(TestVehicles[0].Vehicle, VEHICLELOCK_LOCKED_BUT_CAN_BE_DAMAGED)
ENDIF
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, DYNAMIC_MOVE_BLEND_RATIO, ECF_JACK_ANYONE)
ENDIF
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
BREAK
CASE TEST_BRING_VEHICLE_TO_HALT
SWITCH SCENARIO_STATE
CASE STATE_INIT
vBlipPos = GET_PLAYER_START_POS()
ADD_BLIP_FOR_COORD(vBlipPos)
//DRAW_CHECKPOINT_WITH_ALPHA(vBlipPos, 2.0, 255, 0, 0, 80)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
vBlipPos = GET_PLAYER_START_POS()
RENDER_FAKE_PICKUP_GLOW(vBlipPos, 2)
//DRAW_CHECKPOINT_WITH_ALPHA(vBlipPos, 2.0, 255, 255, 0, 80)
IF NOT IS_ENTITY_DEAD(scplayer)
IF IS_PED_IN_ANY_VEHICLE(scplayer)
TestVehicles[0].Vehicle = GET_VEHICLE_PED_IS_IN(scplayer)
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
IF(GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TestVehicles[0].Vehicle, FALSE), vBlipPos, FALSE) < 2.0)
// Bring car to a complete stop in 3.0m and hold it stationary for 3s.
BRING_VEHICLE_TO_HALT(TestVehicles[0].Vehicle, fVehicleHaltStoppingDist, 1)
// Once we've been caught in the trap, allow the player to get his car free.
SCENARIO_STATE = STATE_2
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE STATE_2
vBlipPos = GET_PLAYER_START_POS()
//DRAW_CHECKPOINT_WITH_ALPHA(vBlipPos, 2.0, 0, 255, 0, 80)
// Once the player gets clear of the blip again, re-enable the trap!
IF(GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(TestVehicles[0].Vehicle, FALSE), vBlipPos, FALSE) > 3.0)
SCENARIO_STATE = STATE_1
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_ENTER_VEHICLE_ON_SIDE
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
SWITCH SCENARIO_STATE
CASE STATE_INIT
SET_ENTITY_ROTATION(TestVehicles[0].Vehicle, vRotationEulers, EULER_XYZ)
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_NEVER_WARP, VS_DRIVER, DYNAMIC_MOVE_BLEND_RATIO, ECF_JACK_ANYONE)
ENDIF
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_PLANE_HOMING_MISSILES
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID()) AND NOT IS_ENTITY_DEAD( TestVehicles[0].Vehicle)
SWITCH SCENARIO_STATE
CASE STATE_INIT
// Warp player into driver seat of first vehicle
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), TestVehicles[0].Vehicle, VS_DRIVER)
SCENARIO_STATE = STATE_1
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_STREAM_VEHICLE_ANIMS
SWITCH SCENARIO_STATE
CASE STATE_INIT
REQUEST_VEHICLE_ASSET(PHANTOM)
REQUEST_VEHICLE_ASSET(SANCHEZ)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
IF HAS_VEHICLE_ASSET_LOADED(PHANTOM)
AND HAS_VEHICLE_ASSET_LOADED(SANCHEZ)
SCENARIO_STATE = STATE_2
SETTIMERA(0)
PRINTLN("GOT_HERE")
ENDIF
BREAK
CASE STATE_2
IF TIMERA() > 2000
REMOVE_VEHICLE_ASSET(PHANTOM)
REMOVE_VEHICLE_ASSET(SANCHEZ)
PRINTLN("GOT_HERE_2")
SETTIMERA(0)
REQUEST_VEHICLE_ASSET(BURRITO)
REQUEST_VEHICLE_ASSET(RHINO)
SCENARIO_STATE = STATE_3
ENDIF
BREAK
CASE STATE_3
IF TIMERA() > 2000
REMOVE_VEHICLE_ASSET(BURRITO)
REMOVE_VEHICLE_ASSET(RHINO)
PRINTLN("GOT_HERE_3")
SCENARIO_STATE = STATE_4
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_SET_VELOCITY
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
SET_PED_CONFIG_FLAG(TestPeds[0].Ped, PCF_WillFlyThroughWindscreen, TRUE)
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
SCENARIO_STATE = STATE_1
SETTIMERA(0)
PRINTLN("GOT_HERE")
ENDIF
BREAK
CASE STATE_1
IF TIMERA() > 500
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
PRINTLN("GOT_HERE_2")
SET_VEHICLE_FORWARD_SPEED(TestVehicles[0].Vehicle, ForwardSpeed)
SETTIMERA(0)
ENDIF
SCENARIO_STATE = STATE_2
ENDIF
BREAK
CASE STATE_2
IF TIMERA() > TimeBeforeStop
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
PRINTLN("GOT_HERE_3")
SET_VEHICLE_FORWARD_SPEED(TestVehicles[0].Vehicle, 0.0)
ENDIF
SETTIMERA(0)
SCENARIO_STATE = STATE_3
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_IN_VEHICLE_CONTEXT
SWITCH SCENARIO_STATE
CASE STATE_INIT
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)
SCENARIO_STATE = STATE_1
PRINTLN("GOT_HERE")
ENDIF
BREAK
CASE STATE_1
IF NOT HAS_CLIP_SET_LOADED("clipset@missarmenian3@franklin_driving")
REQUEST_CLIP_SET("clipset@missarmenian3@franklin_driving")
ELSE
PRINTLN("GOT_HERE_2")
SCENARIO_STATE = STATE_2
ENDIF
BREAK
CASE STATE_2
SET_PED_IN_VEHICLE_CONTEXT(TestPeds[0].Ped, GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"))
SETTIMERA(0)
SCENARIO_STATE = STATE_3
BREAK
CASE STATE_3
IF TIMERA() > 15000
RESET_PED_IN_VEHICLE_CONTEXT(TestPeds[0].Ped)
SCENARIO_STATE = STATE_4
ENDIF
BREAK
CASE STATE_4
REMOVE_CLIP_SET("clipset@missarmenian3@franklin_driving")
SCENARIO_STATE = STATE_5
BREAK
ENDSWITCH
BREAK
CASE TEST_STOCKADE_WITH_STICKY_GRENADES
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF NOT IS_ENTITY_DEAD( PLAYER_PED_ID() )
GIVE_WEAPON_TO_PED( PLAYER_PED_ID(), WEAPONTYPE_STICKYBOMB, 100, TRUE, TRUE )
SCENARIO_STATE = STATE_1
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_DEATH_WHILST_EXITING
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
INT SEAT
SEAT = Index-1
TASK_WARP_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, INT_TO_ENUM(VEHICLE_SEAT, SEAT))
ENDIF
ENDIF
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
ENTER_EXIT_VEHICLE_FLAGS flags
IF PREFER_LEFT_ENTRY
flags = ECF_USE_LEFT_ENTRY
ELIF PREFER_RIGHT_ENTRY
flags = ECF_USE_RIGHT_ENTRY
ENDIF
TASK_LEAVE_ANY_VEHICLE(TestPeds[0].Ped, 0, flags)
ENDIF
SETTIMERA(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF TIMERA() > DEATH_TIME
//SET_PED_ACCURACY(TestPeds[1].Ped, 100)
//SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped, CA_PERFECT_ACCURACY, TRUE)
//TASK_SHOOT_AT_ENTITY(TestPeds[1].Ped, TestPeds[0].Ped, -1, FIRING_TYPE_CONTINUOUS)
SCENARIO_STATE = STATE_3
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TEST_COLLISION_WHILE_ENTERING
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestVehicles[1].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-59.01208, 138.36926, 7.77247>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 0.0)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-49.16578, 144.24376, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 90.0)
ELIF SWIPE_TYPE = 2
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.44479, 151.69591, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 180.0)
ENDIF
SET_PED_INTO_VEHICLE(TestPeds[1].Ped, TestVehicles[1].Vehicle)
TASK_VEHICLE_TEMP_ACTION(TestPeds[1].Ped, TestVehicles[1].Vehicle, TEMPACT_GOFORWARD, 3000)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SETTIMERA(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
SCENARIO_STATE = STATE_3
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_COLLISION_WHILE_EXITING
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestVehicles[1].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(scplayer)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-59.01208, 138.36926, 7.77247>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 0.0)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-48.99829, 143.08881, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 90.0)
ELIF SWIPE_TYPE = 2
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.44479, 151.69591, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 180.0)
ENDIF
TASK_WARP_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(TestPeds[1].Ped, TestVehicles[1].Vehicle)
TASK_VEHICLE_TEMP_ACTION(TestPeds[1].Ped, TestVehicles[1].Vehicle, TEMPACT_GOFORWARD, 3000)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
TASK_LEAVE_ANY_VEHICLE(TestPeds[0].Ped, WAIT_BEFORE_ENTER_EXIT_TIME)
SCENARIO_STATE = STATE_2
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_DEATH_WHILE_ENTERING
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
ENTER_EXIT_TASK_GIVEN = FALSE
SHOOT_TASK_GIVEN = FALSE
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<-60.88103, 143.33746, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 0.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-60.539310,147.936768,7.679381>>,<<-7.064416,0.000000,-175.209595>>,65.000000)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<-60.88103, 143.33746, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 180.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-58.738190,138.826096,8.312482>>,<<-22.549648,0.000000,12.793562>>,65.000000)
ENDIF
SET_ENTITY_HEALTH(TestPeds[0].Ped, 101)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SETTIMERA(0)
SETTIMERB(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF NOT ENTER_EXIT_TASK_GIVEN AND TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
ENTER_EXIT_TASK_GIVEN = TRUE
ENDIF
IF NOT SHOOT_TASK_GIVEN AND TIMERB() > WAIT_BEFORE_FIRE_TIME
SET_PED_ACCURACY(TestPeds[1].Ped, 100)
SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped, CA_PERFECT_ACCURACY, TRUE)
TASK_SHOOT_AT_ENTITY(TestPeds[1].Ped, TestPeds[0].Ped, -1, FIRING_TYPE_CONTINUOUS)
SHOOT_TASK_GIVEN = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_DEATH_WHILE_EXITING
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
ENTER_EXIT_TASK_GIVEN = FALSE
SHOOT_TASK_GIVEN = FALSE
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<-60.88103, 143.33746, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 0.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-58.738190,138.826096,8.312482>>,<<-22.549648,0.000000,12.793562>>,65.000000)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<-60.88103, 143.33746, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 180.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-58.738190,138.826096,8.312482>>,<<-22.549648,0.000000,12.793562>>,65.000000)
ENDIF
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
SET_ENTITY_HEALTH(TestPeds[0].Ped, 101)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SETTIMERA(0)
SETTIMERB(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF NOT ENTER_EXIT_TASK_GIVEN AND TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_LEAVE_ANY_VEHICLE(TestPeds[0].Ped, 0)
ENTER_EXIT_TASK_GIVEN = TRUE
ENDIF
IF NOT SHOOT_TASK_GIVEN AND TIMERB() > WAIT_BEFORE_FIRE_TIME
SET_PED_ACCURACY(TestPeds[1].Ped, 100)
SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped, CA_PERFECT_ACCURACY, TRUE)
TASK_SHOOT_AT_ENTITY(TestPeds[1].Ped, TestPeds[0].Ped, -1, FIRING_TYPE_CONTINUOUS)
SHOOT_TASK_GIVEN = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_THROUGH_WINDSCREEN
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF WALL_HEIGHT_TYPE = ENUM_TO_INT(ONE_METRE_HIGH_WALL)
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<39.05972, 188.74785, 6.35078>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 0.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<35.180328,202.122940,7.617620>>,<<0.946441,-0.000000,-92.923889>>,65.000000)
ELIF WALL_HEIGHT_TYPE = ENUM_TO_INT(TWO_METRE_HIGH_WALL)
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<44.47080, 192.04300, 6.35078>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 0.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<40.557129,201.848328,7.710519>>,<<-3.626902,0.000000,-92.923889>>,65.000000)
ELIF WALL_HEIGHT_TYPE = ENUM_TO_INT(THREE_METRE_HIGH_WALL)
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<51.56202, 191.70973, 6.35078>> )
SET_ENTITY_HEADING(TestVehicles[0].Vehicle, 0.0)
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<46.430065,201.413742,8.109383>>,<<-2.345681,0.000000,-92.327446>>,65.000000)
ENDIF
SET_PED_CONFIG_FLAG(TestPeds[0].Ped, PCF_WillFlyThroughWindscreen, TRUE)
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SET_ENTITY_VELOCITY(TestVehicles[0].Vehicle, <<0.0,VEHICLE_SPEED, 0.0>>)
TASK_VEHICLE_TEMP_ACTION(TestPeds[0].Ped, TestVehicles[0].Vehicle, TEMPACT_GOFORWARD, 3000)
SCENARIO_STATE = STATE_2
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_JUMP_OUT
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
SET_PED_RESET_FLAG(TestPeds[0].Ped, PRF_PreventGoingIntoStillInVehicleState, TRUE)
IF DOES_CAM_EXIST(TestCams[TrackingCamera].cam)
POINT_CAM_AT_ENTITY(TestCams[TrackingCamera].cam, TestVehicles[0].Vehicle, <<0.0, 0.0, 0.0>>)
camera_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TestVehicles[0].Vehicle, SphericalCamCoords (CAM_ZOOM, CAM_PITCH, CAM_PAN))
SET_CAM_COORD (TestCams[TrackingCamera].cam, camera_pos)
ENDIF
SWITCH SCENARIO_STATE
CASE STATE_INIT
IF DOES_CAM_EXIST(TestCams[TrackingCamera].cam)
DESTROY_CAM(TestCams[TrackingCamera].cam)
ENDIF
TestCams[TrackingCamera].cam = CREATE_CAM ("DEFAULT_SCRIPTED_CAMERA")
SET_CAM_ACTIVE(TestCams[TrackingCamera].cam, TRUE )
SET_VEHICLE_ENGINE_ON(TestVehicles[0].Vehicle, TRUE, TRUE)
SET_ENTITY_COORDS(TestVehicles[0].Vehicle, <<-63.43328 + VEHICLE_SIDE_OFFSET, 68.22320, 6.35084>>)
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SET_ENTITY_VELOCITY(TestVehicles[0].Vehicle, <<0.0,VEHICLE_SPEED, 0.0>>)
TASK_VEHICLE_TEMP_ACTION(TestPeds[0].Ped, TestVehicles[0].Vehicle, TEMPACT_GOFORWARD, 3000)
SETTIMERA(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_LEAVE_ANY_VEHICLE(TestPeds[0].Ped, 0, ECF_JUMP_OUT)
SCENARIO_STATE = STATE_3
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_COLLISION_WHILE_JACKING_PED
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestVehicles[1].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[2].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
ENTER_EXIT_TASK_GIVEN = FALSE
SHOOT_TASK_GIVEN = FALSE
VEHICLE_RAM_TASK_GIVEN = FALSE
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.83489, 137.52158, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 0.0)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-48.99829, 143.08881, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 90.0)
ELIF SWIPE_TYPE = 2
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.44479, 151.69591, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 180.0)
ENDIF
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-58.738190,138.826096,8.312482>>,<<-22.549648,0.000000,12.793562>>,65.000000)
VEHICLE_SEAT PLAYER_ZERO_SEAT
PLAYER_ZERO_SEAT = VS_DRIVER
IF JACK_FROM_PASSENGER
PLAYER_ZERO_SEAT = VS_FRONT_RIGHT
ENDIF
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, PLAYER_ZERO_SEAT)
SET_ENTITY_HEALTH(TestPeds[0].Ped, 101)
SET_PED_INTO_VEHICLE(TestPeds[2].Ped, TestVehicles[1].Vehicle, VS_DRIVER)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SETTIMERA(0)
SETTIMERB(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF NOT ENTER_EXIT_TASK_GIVEN AND TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_ENTER_VEHICLE(TestPeds[1].Ped, TestVehicles[0].Vehicle, -1, VS_DRIVER, PEDMOVEBLENDRATIO_RUN, ECF_JACK_ANYONE)
ENTER_EXIT_TASK_GIVEN = TRUE
ENDIF
IF NOT VEHICLE_RAM_TASK_GIVEN AND TIMERB() > WAIT_BEFORE_VEHICLE_RAM
TASK_VEHICLE_TEMP_ACTION(TestPeds[2].Ped, TestVehicles[1].Vehicle, TEMPACT_GOFORWARD, 3000)
VEHICLE_RAM_TASK_GIVEN = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_DEATH_WHILE_JACKING_PED
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestVehicles[1].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[2].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
ENTER_EXIT_TASK_GIVEN = FALSE
SHOOT_TASK_GIVEN = FALSE
VEHICLE_RAM_TASK_GIVEN = FALSE
IF SWIPE_TYPE = 0
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.83489, 137.52158, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 0.0)
ELIF SWIPE_TYPE = 1
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-48.99829, 143.08881, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 90.0)
ELIF SWIPE_TYPE = 2
SET_ENTITY_COORDS(TestVehicles[1].Vehicle, <<-58.44479, 151.69591, 6.35158>> )
SET_ENTITY_HEADING(TestVehicles[1].Vehicle, 180.0)
ENDIF
SET_CAM_PARAMS(TestCams[FixedCamera].cam,<<-58.738190,138.826096,8.312482>>,<<-22.549648,0.000000,12.793562>>,65.000000)
VEHICLE_SEAT PLAYER_ZERO_SEAT
PLAYER_ZERO_SEAT = VS_DRIVER
IF JACK_FROM_PASSENGER
PLAYER_ZERO_SEAT = VS_FRONT_RIGHT
ENDIF
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, PLAYER_ZERO_SEAT)
SET_ENTITY_HEALTH(TestPeds[0].Ped, 101)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
SETTIMERA(0)
SETTIMERB(0)
SCENARIO_STATE = STATE_2
BREAK
CASE STATE_2
IF NOT ENTER_EXIT_TASK_GIVEN AND TIMERA() > WAIT_BEFORE_ENTER_EXIT_TIME
TASK_ENTER_VEHICLE(TestPeds[1].Ped, TestVehicles[0].Vehicle, -1, VS_DRIVER, PEDMOVEBLENDRATIO_RUN, ECF_JACK_ANYONE)
ENTER_EXIT_TASK_GIVEN = TRUE
ENDIF
IF NOT SHOOT_TASK_GIVEN AND TIMERB() > WAIT_BEFORE_FIRE_TIME
SET_PED_ACCURACY(TestPeds[2].Ped, 100)
SET_PED_COMBAT_ATTRIBUTES(TestPeds[2].Ped, CA_PERFECT_ACCURACY, TRUE)
TASK_SHOOT_AT_ENTITY(TestPeds[2].Ped, TestPeds[1].Ped, -1, FIRING_TYPE_CONTINUOUS)
SHOOT_TASK_GIVEN = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_OVERRIDE_ENTRY_CLIPSET
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
REQUEST_CLIP_SET(clipsetname)
IF HAS_CLIP_SET_LOADED(clipsetname)
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, -1, VS_FRONT_RIGHT, PEDMOVEBLENDRATIO_WALK, ECF_JACK_ANYONE, clipsetname)
SCENARIO_STATE = STATE_1
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE TEST_FLEE_EXIT
IF NOT IS_ENTITY_DEAD(TestVehicles[0].Vehicle)
AND NOT IS_ENTITY_DEAD(TestPeds[0].Ped)
AND NOT IS_ENTITY_DEAD(TestPeds[1].Ped)
SWITCH SCENARIO_STATE
CASE STATE_INIT
SET_PED_COMBAT_ATTRIBUTES(TestPeds[0].Ped, CA_USE_VEHICLE, FALSE)
SET_PED_FLEE_ATTRIBUTES(TestPeds[0].Ped, FA_USE_VEHICLE, FALSE)
SET_PED_INTO_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, VS_DRIVER)
SCENARIO_STATE = STATE_1
BREAK
CASE STATE_1
TASK_SMART_FLEE_PED(TestPeds[0].Ped, TestPeds[1].Ped, 50.0, -1)
SCENARIO_STATE = STATE_2
BREAK
ENDSWITCH
ENDIF
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 )
INITIALISE_OBJECT_DATA(TestObjects)
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])
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
//TestObjects
FOR Index = 0 to MAX_NUMBER_OF_OBJECTS -1
CREATE_OBJECT_ENTITY (TestObjects[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
SCENARIO_STATE = STATE_INIT
REMOVE_CLIP_SET(clipsetname)
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)
SETUP_MISSION_XML_MENU (XMLMenu, KEY_Q )
SETUP_AREA_FOR_MISSION (<<0.0, 0.0, 2.0>>)
//Gets a reference to the player
Get_The_Player ()
CREATE_TEST_WIDGET ()
//set the player ready for the script
SET_PLAYER_COLISION(scplayer, true)
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
Terminate_test_script ()
WAIT (0)
ENDWHILE
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD