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

2453 lines
67 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"
USING "commands_entity.sch"
USING "commands_interiors.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/TestCutsceneMenu"
//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
CONST_INT MAX_NUMBER_OF_OBJECTS 10
Object_struct TestObjects[MAX_NUMBER_OF_OBJECTS]
StCameraData TestCams[MAX_NUMBER_OF_CAMERAS]
BOOL gAllowDebugging = TRUE
//Test
//ENUM Test_Scenario
// InitialiseScenarioData,
// CreateScenarioEntities,
// SetScenarioEntities,
// RunScenario,
// CleanupScenario
//ENDENUM
//
//Test_Scenario TestScenarioAStatus = InitialiseScenarioData
//Functions: WIDGETS
FLOAT TriggerOrient = 180
FLOAT triggerRadius = 11.0
FLOAT TriggerAngle = 90
VECTOR TriggerPos = <<0.0, 0.0, 0.0 >>
VECTOR vTestSceneOrigin
int delayinload = 70
PROC CREATE_TEST_WIDGET ()
START_WIDGET_GROUP("General Tests")
ADD_WIDGET_INT_SLIDER ("TriggerOrient",delayinload, 0, 10000, 1)
ADD_WIDGET_FLOAT_SLIDER ("TriggerOrient",TriggerOrient, 0, 360,1)
ADD_WIDGET_FLOAT_SLIDER ("triggerRadius",triggerRadius, 0, 360,1)
ADD_WIDGET_FLOAT_SLIDER ("TriggerAngle",TriggerAngle, 0, 360,1)
ADD_WIDGET_FLOAT_SLIDER ("TriggerPos.x",TriggerPos.x, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("TriggerPos.y",TriggerPos.y, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("TriggerPos.z",TriggerPos.z, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("vTestSceneOrigin.x",vTestSceneOrigin.x, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("vTestSceneOrigin.y",vTestSceneOrigin.y, -2000, 2000, 0.5)
ADD_WIDGET_FLOAT_SLIDER ("vTestSceneOrigin.z",vTestSceneOrigin.z, -2000, 2000, 0.5)
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
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: House Keeping
bool bPedSetForEnterState = FALSE
bool bPlayerSetForExitState = FALSE
ENUM CutSceneState
CutSceneStart,
CutSceneStreaming,
CutScenePlaying,
CutSceneLoading,
CutScenePlayingAgain,
CutscenePost
ENDENUM
CutSceneState CutSceneFlow = CutSceneStart
PROC INITALISE_TEST_STATE()
SingleTaskStatus = startSingleTask
CutSceneFlow = CutSceneStart
bPedSetForEnterState = FALSE
bPlayerSetForExitState = FALSE
ENDPROC
ENUM Scenarios
CutSceneStandardTest = 0,
JanSeamlessTest = 1,
SCSPlayerTest1 = 2,
SCSPlayerTest2 = 3,
SCSPlayerTest3 = 4,
SCSPlayerMeetsPed1 = 5,
SCSPlayerMeetsPed2 = 6,
SCSPlayerMeetsPed3 = 7,
SCSPlayerMeetTriggerTest = 8,
SCSVehicleTest1 = 9,
SCSVehicleTest2 = 10,
SCSVehicleTest3 = 11,
SCSPropTest1 = 12,
SCSPropTest2 = 13,
SCSPropTest3 = 14,
SCSSkinnedPropTest1 = 15,
SCSSkinnedPropTest2 = 16,
SCSSkinnedPropTest3 = 17,
JanSeamlessNonPed = 18,
SCSLowVehicleDetail = 19,
PedExitWalkState = 20,
PedExitRunState = 21,
PedExitIntoFreeFallState = 22,
PedExitIntoCoverState = 23,
VehicleDoorAndWheelTest = 24,
SCSHeliboxTest = 25,
WalkTest = 26,
WalkTestSec = 27,
VehicleTest2 = 28,
ExpressionTest = 29,
PedExitWalkStateTask = 30,
TestFailedToStreamAssetsInTime = 31,
TestFailedToStreamCutFileInTime = 32,
PedRegisteredDeadForScene = 33,
StopCutsceneViaScript = 34,
ExitSceneInVehicle = 35,
ExitWithWeapon = 36,
LoadUnloadTest = 37,
RayfireTest= 38,
OverlayTest = 39,
LoadingUnloading = 40,
offscreencrash = 41,
FamFourTest = 42,
BranchTestPart_2345 = 43,
BranchTestPart_1345 = 44,
DefaultTest = 1000
ENDENUM
string CutsceneName
// END_SCENARIO: SquadOfPedsMovingBetweenVehicles
PROC SETUP_TEST_DATA ()
SWITCH int_to_enum (scenarios, gcurrentselection)
CASE ExitWithWeapon
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
CutsceneName = "seamlessexit_wpn"
BREAK
CASE LoadUnloadTest
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
BREAK
CASE RayfireTest
PlayerStartPos = <<-115.87,6452.98,30.40 >>
CutsceneName = "cbh_helicrash"
BREAK
case FamFourTest
CutsceneName = "family_4_int"
BREAK
CASE SCSHeliboxTest
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 7.0
TriggerOrient = 105.12
TriggerAngle = 85
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
TestObjects[0].ObjectCoords = <<-3.83, 86.44, 6.35>>
ENDIF
CutsceneName = "biohiest_crate"
BREAK
CASE TestFailedToStreamAssetsInTime
CASE CutSceneStandardTest
CASE StopCutsceneViaScript
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 285.12
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
CutsceneName = "fbi_jan_sections"
delayinload = 70
BREAK
CASE TestFailedToStreamCutFileInTime
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 285.12
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
CutsceneName = "fbi_jan_sections"
delayinload = 0
BREAK
CASE WalkTest
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<0.0, 0.0, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 15.0
TriggerOrient = 0.0
TriggerAngle = 0.0
ENDIF
CutsceneName = "walk_synctest"
BREAK
CASE WalkTestSec
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<0.0, 0.0, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 15.0
TriggerOrient = 0.0
TriggerAngle = 0.0
ENDIF
CutsceneName = "walk_synctest"
BREAK
CASE SCSPlayerTest1
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 105.12
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 105.12
TriggerAngle = 85
ENDIF
CutsceneName = "Seamlesstest1"
BREAK
CASE SCSPlayerTest2
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 285.12
TriggerAngle = 152
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 285.12
TriggerAngle = 0.0
ENDIF
CutsceneName = "Seamlesstest2"
Break
CASE SCSPlayerTest3
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 285.12
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 285.12
TriggerAngle = 152
ENDIF
CutsceneName = "Seamlesstest3"
BREAK
CASE SCSPlayerMeetsPed1
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
TestPeds[0].PedsCoords = <<-3.83, 86.44, 6.35>>
TestPeds[0].PedHeading = -176.44
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 180
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
TestPeds[0].PedsCoords = <<-1210.00, -1125.08, 6.67>>
TestPeds[0].PedHeading = 112.30
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 105.84
TriggerAngle = 85
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
CutsceneName = "Seamlesstest_2_a"
BReak
CASE PedRegisteredDeadForScene
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 180
TriggerAngle = 85
ENDIF
CutsceneName = "Seamlesstest_2_a"
Break
CASE SCSPlayerMeetsPed2
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 285.12
TriggerAngle = 152
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 3.0
TriggerOrient = 110.12
TriggerAngle = 129
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
CutsceneName = "Seamlesstest_2_b"
BREAK
CASE SCSPlayerMeetsPed3
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TestPeds[0].PedsCoords = <<-1210.00, -1125.08, 6.67>>
TestPeds[0].PedHeading = 112.30
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
TestPeds[0].PedsCoords = <<-1210.00, -1125.08, 6.67>>
TestPeds[0].PedHeading = 112.30
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 180
TriggerAngle = 85
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
CutsceneName = "Seamlesstest_2_c"
BREAK
CASE SCSPlayerMeetTriggerTest
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin =<<-36.82, -8.39, 6.35>>
PlayerStartPos = <<-14.60, -6.91, 6.35>>
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
TestPeds[0].PedsCoords = vTestSceneOrigin
TestPeds[0].PedHeading = -176.44
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
BREAK
CASE JanSeamlessTest
case JanSeamlessNonPed
CutsceneName = "fbi_jan_sections"
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
TestPeds[0].PedsCoords = <<-3.83, 86.44, 6.35>>
TestPeds[0].PedHeading = -176.44
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 11.5
TriggerOrient = 180
TriggerAngle = 85
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
vTestSceneOrigin = <<-104.11, -8.25, 65.35>>
PlayerStartPos = << -75, -16, 68 >>
bPedSetForEnterState = FALSE
bPlayerSetForExitState = FALSE
TestPeds[0].PedsCoords = << -106.76, -8.78, 69.52>>
TestPeds[0].PedHeading = 62.0425
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_Janitor
TriggerRadius = 8.0
ENDIF
Break
CASE ExpressionTest
CutsceneName = "facial_combine"
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
// vTestSceneOrigin = <<0.0, 0.0, 0.0>>
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
TestPeds[0].PedsCoords = <<-3.83, 86.44, 6.35>>
TestPeds[0].PedHeading = -176.44
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = S_M_M_JANITOR
ENDIF
BREAK
CASE SCSLowVehicleDetail
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
TriggerOrient = 180
triggerRadius = 11.0
TriggerAngle = 360
TriggerPos = <<0.0, 0.0, 0.0>>
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
TestVehicles[0].VehicleCoords =<<-1210.00, -1125.08, 6.67>>
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
//TestVehicles[0].VehicleModel = SULTAN2_LO removed
TestVehicles[0].VehicleModel = TAILGATER
CutsceneName = "veh_test2"
BREAK
CASE VehicleTest2
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
TestVehicles[0].VehicleCoords =<<-1210.00, -1125.08, 6.67>>
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
TestVehicles[0].VehicleModel = TAILGATER
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "veh_test2"
BREAK
CASE SCSVehicleTest1
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
TestVehicles[0].VehicleCoords =<<-1210.00, -1125.08, 6.67>>
vTestSceneOrigin = <<-1210.00, -1125.08, 6.67>>
PlayerStartPos = <<-1234.96, -1135.65, 6.80>>
ENDIF
TestVehicles[0].VehicleModel = SULTAN
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scsveh_test1"
BREAK
CASE SCSVehicleTest2
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
TestVehicles[0].VehicleModel = SULTAN
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scsveh_test2"
BREAK
CASE SCSVehicleTest3
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
TestVehicles[0].VehicleModel = SULTAN
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scsveh_test3"
BREAK
CASE VehicleDoorAndWheelTest
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
TestVehicles[0].VehicleModel = TAILGATER
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scsveh_test3"
BREAK
CASE SCSPropTest1
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
TestObjects[0].ObjectModel= Prop_FBIBombPlant
TestObjects[0].ObjectCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scs01_igprop"
BREAK
CASE SCSPropTest2
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
TestObjects[0].ObjectModel= Prop_FBIBombPlant
TestObjects[0].ObjectCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "scs02_igprop"
Break
CASE SCSPropTest3
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
ENDIF
CutsceneName = "scs03_igprop"
Break
// CASE SCSSkinnedPropTest1
// if (GET_INDEX_OF_CURRENT_LEVEL() = testBed)
// vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
// PlayerStartPos = <<-3.83, 50.44, 6.35>>
// ENDIF
//
// TestObjects[0].ObjectModel= W_5_GLOCK38
// TestObjects[0].ObjectCoords =<<-3.83, 86.44, 6.35>>
// CutsceneName = "scs01_igsprop"
//
// BREAK
//
// CASE SCSSkinnedPropTest2
// if (GET_INDEX_OF_CURRENT_LEVEL() = testBed)
// vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
// PlayerStartPos = <<-3.83, 50.44, 6.35>>
// ENDIF
//
// TestObjects[0].ObjectModel= W_5_GLOCK38
// TestObjects[0].ObjectCoords =<<-3.83, 86.44, 6.35>>
// CutsceneName = "scs02_igsprop"
// Break
//
// CASE SCSSkinnedPropTest3
// if (GET_INDEX_OF_CURRENT_LEVEL() = testBed)
// vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
// PlayerStartPos = <<-3.83, 50.44, 6.35>>
// ENDIF
//
// TestObjects[0].ObjectModel= W_5_GLOCK38
// TestObjects[0].ObjectCoords =<<-3.83, 86.44, 6.35>>
// CutsceneName = "scs03_igsprop"
// Break
CASE PedExitIntoFreeFallState
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<21.3, -11.3, 10.35>>
PlayerStartPos = <<-1.13, 69, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 12.0
TriggerOrient = 0
TriggerAngle = 0
ENDIF
CutsceneName = "exit_jump"
BREAK
CASE PedExitRunState
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-1.13, 69, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 12.0
TriggerOrient = 0
TriggerAngle = 0
ENDIF
CutsceneName = "exit_run"
BREAK
CASE PedExitWalkState
CASE PedExitWalkStateTask
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-1.13, 69, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 12.0
TriggerOrient = 180
TriggerAngle = 0
ENDIF
CutsceneName = "exit_walk"
BREAK
//test exiting from a cutscene into cover
CASE PedExitIntoCoverState
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
vTestSceneOrigin = <<17.73, 178.80, 6.35>>
PlayerStartPos = <<-1.13, 69, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 1.5
TriggerOrient = 180
TriggerAngle = 0
ENDIF
CutsceneName = "exit_aim"
BREAK
CASE ExitSceneInVehicle
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TriggerPos = <<0.0, 0.0, 0.0>>
TriggerRadius = 1.5
TriggerOrient = 180
TriggerAngle = 0
TestVehicles[0].VehicleModel = BJXL
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
TestPeds[0].PedsCoords = <<-3.83, 90.44, 6.35>>
TestPeds[0].PedHeading = -176.44
TestPeds[0].Pedrelgrp = 1
TestPeds[0].PedModel = PLAYER_ONE
CutsceneName = "armenian_3_mcs_6"
BREAK
CASE OverlayTest
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TestObjects[0].ObjectModel = PROP_TV_TEST
TestObjects[0].ObjectCoords = <<-2.83, 86.44, 6.35>>
TestObjects[0].ObjectRotation = <<0, 0, -180>>
CutsceneName = "overlaytest"
BREAK
CASE LoadingUnloading
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
CutsceneName = "armenian_3_mcs_6"
Break
case offscreencrash
vTestSceneOrigin = <<-3.83, 86.44, 6.35>>
PlayerStartPos = <<-3.83, 50.44, 6.35>>
TestVehicles[0].VehicleModel = SEASHARK
TestVehicles[0].VehicleCoords =<<-3.83, 86.44, 6.35>>
CutsceneName = "family_2_mcs_3"
BREAK
CASE BranchTestPart_2345
CASE BranchTestPart_1345
CutsceneName = "FBI_3_INT"
PlayerStartPos = <<-3.83, 50.44, 6.35>>
BREAK
ENDSWITCH
ENDPROC
BLIP_INDEX CutSceneBlip
NAVDATA navDatah
INTERIOR_INSTANCE_INDEX CutScenInstance
PROC RUN_TEST ()
VECTOR vStreamArea = <<15.0 , 15.0 , 5.0>>
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
CASE SCSHeliboxTest
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
// SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REGISTER_ENTITY_FOR_CUTSCENE(TestObjects[0].Object, "CS_Container_02", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE()
REMOVE_BLIP(CutSceneBlip)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not HAS_CUTSCENE_FINISHED()
ELSE
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
CASE CutSceneStandardTest
SWITCH CutSceneFlow
CASE CutSceneStart
IF NOT IS_PED_INJURED(scplayer)
REQUEST_AND_START_CUTSCENE(CutsceneName)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TestFailedToStreamAssetsInTime
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
wait(delayinload)
START_CUTSCENE()
CutSceneFlow = CutScenePlaying
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE FamFourTest
SWITCH CutSceneFlow
CASE CutSceneStart
IF NOT IS_PED_INJURED(player_ped_id())
set_entity_coords(player_ped_id(), <<-822.2418, 180.9213, 70.6951>>)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutScenInstance = GET_INTERIOR_AT_COORDS_WITH_TYPE( <<-800.31, 184.80, 72.72>>, "V_Michael" )
PIN_INTERIOR_IN_MEMORY(CutScenInstance)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
if IS_INTERIOR_READY( CutScenInstance)
START_CUTSCENE()
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
UNPIN_INTERIOR (CutScenInstance )
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE TestFailedToStreamCutFileInTime
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
wait(delayinload)
START_CUTSCENE()
CutSceneFlow = CutScenePlaying
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE StopCutsceneViaScript
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
wait(delayinload)
START_CUTSCENE()
STOP_CUTSCENE()
CutSceneFlow = CutScenePlaying
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSPlayerTest1
CASE SCSPlayerTest2
CASE SCSPlayerTest3
SWITCH CutSceneFlow
CASE CutSceneStart
IF NOT IS_PED_INJURED(scplayer)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
BREAK
CASE CutSceneStreaming
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
CASE CutScenePlaying
if HAS_CUTSCENE_FINISHED()
Set_Test_State_To_Default()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE WalkTestSec
CASE WalkTest
SWITCH CutSceneFlow
CASE CutSceneStart
DRAW_DEBUG_LINE(<<0.0, 0.0, 6.38>>, <<0.0, 49.12, 6.38>>)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
DRAW_DEBUG_LINE(<<0.0, 0.0, 6.38>>, <<0.0, 49.12, 6.38>>)
if HAS_CUTSCENE_LOADED()
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
CASE CutScenePlaying
DRAW_DEBUG_LINE(<<0.0, 0.0, 6.38>>, <<0.0, 49.12, 6.38>>)
if not HAS_CUTSCENE_FINISHED()
ELSE
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ExpressionTest
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].Ped, "z_z_MAXTEST", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
CASE CutScenePlaying
if not HAS_CUTSCENE_FINISHED()
ELSE
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
//Seamless test
//player walks up to ped in world
CASE PedRegisteredDeadForScene
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE( null ,"s_m_m_janitor", CU_DONT_ANIMATE_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSPlayerMeetsPed1
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].ped, "s_m_m_janitor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped in world
CASE SCSPlayerMeetsPed2
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "s_m_m_janitor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(testpeds[0].ped)
testpeds[0].ped = GET_PED_INDEX_FROM_ENTITY_INDEX( GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("s_m_m_janitor" ))
ENDIF
DISPLAY_CUTSCENE_TRIGGER_AREA()
ELSE
if not IS_PED_INJURED(testpeds[0].ped)
TASK_FOLLOW_NAV_MESH_TO_COORD(testpeds[0].ped, <<6.10, 95.46, 6.35>>, PEDMOVE_WALK)
PRINTSTRING("told to walk")
PRINTNL()
ENDIF
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped and then the ped is deleted
CASE SCSPlayerMeetsPed3
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
PRINTNL()
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
DISPLAY_CUTSCENE_TRIGGER_AREA()
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius,TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].ped, "s_m_m_janitor", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin )
SET_PED_AS_NO_LONGER_NEEDED(TestPeds[0].ped)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not HAS_CUTSCENE_FINISHED()
ELSE
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
//Test the triggering of the cutscene
CASE SCSPlayerMeetTriggerTest
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE("Seamlesstest_2_a")
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].ped, "s_m_m_janitor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
REMOVE_BLIP(CutSceneBlip)
CutSceneFlow = CutScenePlaying
PRINTSTRING("Can Trigger cutscene" )
PRINTNL()
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not HAS_CUTSCENE_FINISHED()
DISPLAY_CUTSCENE_TRIGGER_AREA()
ELSE
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
//player walks up to ped in world
CASE JanSeamlessNonPed
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , <<30.0, 30.0, 30.0>>)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_GTA5)
if IS_ENTITY_IN_ANGLED_AREA( scplayer, <<-100.9608 , -9.5618 , 67.6090 >> , <<-97.6742 , -10.5727 , 65.3198 >> , 1.750)
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE()
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if (GET_INDEX_OF_CURRENT_LEVEL() = LEVEL_TESTBED)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , <<15.0, 15.0, 30.0>>)
REMOVE_BLIP(CutSceneBlip)
PRINTSTRING("START_CUTSCENE_AT_COORDS(vTestSceneOrigin )")
PRINTNL()
SET_CUTSCENE_TRIGGER_AREA(<<0.0, 0.0, 0.0>>, 5.0, -70.0, 360.0)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin )
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if NOT HAS_CUTSCENE_FINISHED()
IF Not IS_PED_INJURED(TestPeds[0].ped)
IF NOT bPedSetForEnterState
if CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY("s_m_m_janitor")
CLEAR_ALL_PED_PROPS( TestPeds[0].ped)
bPedSetForEnterState = TRUE
ENDIF
ENDIF
ENDIF
if not bPlayerSetForExitState
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("CS_Player")
IF Not IS_PED_INJURED(scplayer)
SET_PED_COMPONENT_VARIATION(scplayer, PED_COMP_SPECIAL2, 1, 0)
bPlayerSetForExitState = true
PRINTSTRING("made bag swap")
PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE JanSeamlessTest
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , <<30.0, 30.0, 30.0>>)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].ped, "s_m_m_janitor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE()
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
BREAK
ENDSWITCH
BREAK
//-- VEHICLES --
CASE SCSLowVehicleDetail
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle)
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(TestVehicles[0].Vehicle )
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT HAS_CUTSCENE_LOADED()
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "tailgater", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
BREAK
ENDSWITCH
BREAK
CASE VehicleTest2
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "tailgater", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSVehicleTest1
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "sultan" , CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSVehicleTest2
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "sultan", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSVehicleTest3
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea, FALSE)
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "sultan", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSPropTest1
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
REGISTER_ENTITY_FOR_CUTSCENE(TestObjects[0].Object, "Prop_FBIBombPlant", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSPropTest2
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
REGISTER_ENTITY_FOR_CUTSCENE(TestObjects[0].Object, "Prop_FBIBombPlant", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCSPropTest3
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
IF NOT IS_PED_INJURED(scplayer)
if IS_ENTITY_AT_COORD( scplayer, vTestSceneOrigin , vStreamArea)
REQUEST_CUTSCENE(CutsceneName)
REGISTER_ENTITY_FOR_CUTSCENE(null, "Prop_FBIBombPlant", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY)
CutSceneFlow = CutSceneStreaming
ENDIF
ENDIF
BREAK
CASE CutSceneStreaming
IF NOT IS_PED_INJURED(scplayer)
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
DISPLAY_CUTSCENE_TRIGGER_AREA()
if HAS_CUTSCENE_LOADED()
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
IF NOT HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(TestObjects[0].Object)
TestObjects[0].Object =GET_OBJECT_INDEX_FROM_ENTITY_INDEX( GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Prop_FBIBombPlant"))
ENDIF
ELSE
if DOES_ENTITY_EXIST(TestObjects[0].Object)
SET_ENTITY_COORDS_NO_OFFSET( TestObjects[0].Object , <<0.46, 88.97, 6.35>>)
CutSceneFlow = CutscenePost
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped in world
CASE PedExitWalkStateTask
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED(scplayer,<<-1.65, 74.35, 6.45>>, PEDMOVE_WALK, -1, 0.35, ENAV_NO_STOPPING, navDatah)
FORCE_PED_MOTION_STATE(scplayer, MS_ON_FOOT_WALK, true, FAUS_CUTSCENE_EXIT )
PRINTSTRING("TASK_FOLLOW_NAV_MESH_TO_COORD")
PRINTNL()
CutSceneFlow = CutscenePost
ENDIF
ENDIF
if not HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(testpeds[0].ped)
testpeds[0].ped = GET_PED_INDEX_FROM_ENTITY_INDEX( GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("p_m_zero" ))
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped in world
CASE PedExitWalkState
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
FORCE_PED_MOTION_STATE(scplayer, MS_ON_FOOT_WALK, true, FAUS_CUTSCENE_EXIT )
CutSceneFlow = CutscenePost
ENDIF
ENDIF
if not HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(testpeds[0].ped)
testpeds[0].ped = GET_PED_INDEX_FROM_ENTITY_INDEX (GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("p_m_zero" ))
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped in world
CASE PedExitRunState
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED(scplayer,<<16.25, 79.55, 6.45>>, PEDMOVE_RUN, -1, 0.35, ENAV_NO_STOPPING, navDatah)
FORCE_PED_MOTION_STATE(scplayer, MS_ON_FOOT_RUN, true, FAUS_CUTSCENE_EXIT )
PRINTSTRING("TASK_FOLLOW_NAV_MESH_TO_COORD")
PRINTNL()
CutSceneFlow = CutscenePost
ENDIF
ENDIF
if not HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(testpeds[0].ped)
testpeds[0].ped = GET_PED_INDEX_FROM_ENTITY_INDEX (GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("p_m_zero" ))
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE PedExitIntoFreeFallState
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
//SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
SET_PED_TO_RAGDOLL(scplayer, 1000, 3000, TASK_RELAX)
FORCE_PED_MOTION_STATE(scplayer, MS_DO_NOTHING, true, FAUS_CUTSCENE_EXIT )
CutSceneFlow = CutscenePost
ENDIF
ENDIF
if not HAS_CUTSCENE_FINISHED()
if not DOES_ENTITY_EXIST(testpeds[0].ped)
testpeds[0].ped = GET_PED_INDEX_FROM_ENTITY_INDEX (GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("p_m_zero" ))
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//player meets ped in world
CASE PedExitIntoCoverState
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
// SET_CUTSCENE_COORDS(vTestSceneOrigin)
SET_CUTSCENE_TRIGGER_AREA(TriggerPos, triggerRadius, TriggerOrient, TriggerAngle)
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
TASK_PUT_PED_DIRECTLY_INTO_COVER( scplayer, vTestSceneOrigin, -1 )
FORCE_PED_AI_AND_ANIMATION_UPDATE(scplayer)
CutSceneFlow = CutscenePost
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ExitSceneInVehicle
SWITCH CutSceneFlow
CASE CutSceneStart
IF Not DOES_BLIP_EXIST(CutSceneBlip)
CutSceneBlip = ADD_BLIP_FOR_COORD(vTestSceneOrigin)
ENDIF
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
printstring ("CutSceneStreaming")
PRINTNL()
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].vehicle, "BJXL", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
if not IS_PED_INJURED(TestPeds[0].ped)
REGISTER_ENTITY_FOR_CUTSCENE(TestPeds[0].ped, "player_one" , CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("player_one")
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
if not IS_PED_INJURED(TestPeds[0].ped)
SET_PED_INTO_VEHICLE(TestPeds[0].ped, TestVehicles[0].vehicle)
ENDIF
ENDIF
ENDIF
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
SET_PED_INTO_VEHICLE( scplayer, TestVehicles[0].vehicle, VS_BACK_RIGHT )
ENDIF
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle )
TASK_LEAVE_VEHICLE(scplayer, TestVehicles[0].vehicle )
ENDIF
wait(0)
CutSceneFlow = CutscenePost
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ExitWithWeapon
SWITCH CutSceneFlow
CASE CutSceneStart
if not IS_PED_INJURED(scplayer)
GIVE_WEAPON_TO_PED( scplayer, WEAPONTYPE_ASSAULTRIFLE, 100, FALSE )
ENDIF
wait(1000)
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
printstring ("CutSceneStreaming")
PRINTNL()
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
REMOVE_BLIP(CutSceneBlip)
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].vehicle, "BJXL", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY("Player_zero")
SET_CURRENT_PED_WEAPON( scplayer, WEAPONTYPE_ASSAULTRIFLE, FALSE )
ENDIF
//SET_WEAPON_VISIBILITY_FOR_CUTSCENE(scplayer, FALSE)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
GIVE_WEAPON_TO_PED( scplayer, WEAPONTYPE_ASSAULTRIFLE, 100, true )
FORCE_PED_AI_AND_ANIMATION_UPDATE(scplayer)
CutSceneFlow = CutscenePost
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE LoadUnloadTest
SWITCH CutSceneFlow
CASE CutSceneStart
PRINTSTRING("REQUEST_CUTSCENE(fbi_jan_sections)")
PRINTNL()
REQUEST_CUTSCENE("fbi_jan_sections")
wait(100)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
PRINTSTRING("REMOVE_CUTSCENE()")
PRINTNL()
REMOVE_CUTSCENE()
CutSceneFlow = CutSceneLoading
BREAK
CASE CutSceneLoading
PRINTSTRING("REQUEST_CUTSCENE(seamlessexit_wpn)")
PRINTNL()
if not IS_CUTSCENE_ACTIVE()
REQUEST_CUTSCENE("seamlessexit_wpn")
CutSceneFlow = CutScenePlayingAgain
ENDIF
BREAK
CASE CutScenePlayingAgain
if HAS_CUTSCENE_LOADED()
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
BREAK
CASE CutScenePlaying
if not IS_PED_INJURED(scplayer)
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Player_zero")
GIVE_WEAPON_TO_PED( scplayer, WEAPONTYPE_ASSAULTRIFLE, 100, true )
FORCE_PED_AI_AND_ANIMATION_UPDATE(scplayer)
CutSceneFlow = CutscenePost
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE RayfireTest
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE()
SETTIMERA(0)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
if (TIMERA() > 10)
STOP_CUTSCENE()
CutSceneFlow = CutscenePost
ENDIF
IF HAS_CUTSCENE_FINISHED()
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
CASE OverlayTest
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
if DOES_ENTITY_EXIST(TestObjects[0].Object)
SET_ENTITY_COORDS(TestObjects[0].Object, <<-3.00, 88.56, 7.04>>)
SET_ENTITY_ROTATION(TestObjects[0].Object, <<0, 0, 180>>)
PRINTSTRING("rotating object")
PRINTNL()
ENDIF
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
IF HAS_CUTSCENE_FINISHED()
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
CASE offscreencrash
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE(CutsceneName)
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle )
REGISTER_ENTITY_FOR_CUTSCENE(TestVehicles[0].Vehicle, "SEASHARK", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE BranchTestPart_1345
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST(CutsceneName, CS_SECTION_1 | CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 )
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE BranchTestPart_2345
SWITCH CutSceneFlow
CASE CutSceneStart
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST(CutsceneName, CS_SECTION_2 | CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 )
CutSceneFlow = CutSceneStreaming
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE LoadingUnloading
SWITCH CutSceneFlow
CASE CutSceneStart
if get_distance_between_coords(vTestSceneOrigin, get_entity_coords(player_ped_id())) < 20
request_cutscene(CutsceneName)
PRINTSTRING("request_cutscene")
PRINTNL()
else
if is_cutscene_active() or has_cutscene_loaded()
if get_distance_between_coords(vTestSceneOrigin, get_entity_coords(player_ped_id())) > 25
remove_cutscene()
PRINTSTRING("remove_cutscene")
PRINTNL()
endif
endif
endif
if has_cutscene_loaded()
printstring("loaded")
printnl()
else
printstring("not loaded")
printnl()
endif
BREAK
CASE CutSceneStreaming
if HAS_CUTSCENE_LOADED()
IF NOT IS_PED_INJURED(scplayer)
START_CUTSCENE_AT_COORDS(vTestSceneOrigin)
if DOES_ENTITY_EXIST(TestObjects[0].Object)
SET_ENTITY_COORDS(TestObjects[0].Object, <<-3.00, 88.56, 7.04>>)
SET_ENTITY_ROTATION(TestObjects[0].Object, <<0, 0, 180>>)
PRINTSTRING("rotating object")
PRINTNL()
ENDIF
CutSceneFlow = CutScenePlaying
ENDIF
ENDIF
BREAK
CASE CutScenePlaying
IF HAS_CUTSCENE_FINISHED()
CutSceneFlow = CutscenePost
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDPROC
//Purpose: Runs the main scenarios
PROC Run_Test_Scenario ()
int index = 0
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(true)
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])
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
//TestObject
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
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 ("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
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