1715 lines
67 KiB
Python
Executable File
1715 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"
|
|
|
|
//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/TestGeneralmenu"
|
|
//VECTOR gvMapOffset //offset all coords from the origin by the psoition of the mapin world coords
|
|
|
|
//Ped Vars
|
|
CONST_INT MAX_NUMBER_OF_PEDS 10
|
|
|
|
peds_struct TestPeds [MAX_NUMBER_OF_PEDS]
|
|
|
|
//Vehicle Vars
|
|
CONST_INT MAX_NUMBER_OF_VEHICLES 10
|
|
|
|
vehicle_struct TestVehicles[MAX_NUMBER_OF_VEHICLES]
|
|
|
|
//Route Vars
|
|
CONST_INT MAX_NUMBER_OF_NODES 7
|
|
|
|
RouteStruct Route[MAX_NUMBER_OF_NODES]
|
|
|
|
//Camera Vars
|
|
CONST_INT MAX_NUMBER_OF_CAMERAS 2
|
|
CONST_INT FixedCamera 0
|
|
CONST_INT TrackingCamera 1
|
|
|
|
StCameraData TestCams[MAX_NUMBER_OF_CAMERAS]
|
|
|
|
|
|
BOOL bStartedTasks = FALSE
|
|
BOOL bStartedAnim1 = FALSE
|
|
BOOL bStartedAnim2 = FALSE
|
|
|
|
BOOL gAllowDebugging = TRUE
|
|
|
|
//Test
|
|
//ENUM Test_Scenario
|
|
// InitialiseScenarioData,
|
|
// CreateScenarioEntities,
|
|
// SetScenarioEntities,
|
|
// RunScenario,
|
|
// CleanupScenario
|
|
//ENDENUM
|
|
//
|
|
//Test_Scenario TestScenarioAStatus = InitialiseScenarioData
|
|
|
|
//Functions: WIDGETS
|
|
|
|
FLOAT DYNAMIC_MOVE_BLEND_RATIO
|
|
FLOAT SlideSpeed = 1.0
|
|
FLOAT BlendSpeed = 8.0
|
|
BOOL bLoopAnim = FALSE, bExtractbackwardvel = TRUE, bExtractsidevel = TRUE, bholdlastframe = FALSE
|
|
Int seatindex = -1
|
|
|
|
|
|
SEQUENCE_INDEX TEST_SEQ
|
|
int gtime = 1000
|
|
|
|
bool testprint = FALSE
|
|
bool flushFile = FALSE
|
|
|
|
//Vehicle damage
|
|
VECTOR vLocalDamage = <<0.0, 0.0, 0.0>>
|
|
FLOAT fDamage = 0
|
|
FLOAT fDeformation = 0
|
|
BOOL bLocalDamage = true
|
|
BOOL ApplyDamage = FALSE
|
|
|
|
FLOAT fTestDivingAwayFromVehiclePedHeading = 180.0
|
|
FLOAT fTestDivingAwayFromVehicleHorizontalOffset = 0.0
|
|
FLOAT fTestDivingAwayFromVehicleDistanceOffset = 40.0
|
|
BOOL bTestDivingAwayFromVehicleAlwaysSee = TRUE
|
|
BOOL bTestDivingAwayFromVehicleCanDiveAway = TRUE
|
|
BOOL bTestDivingAwayFromVehicleApplyChanges = FALSE
|
|
|
|
PROC CREATE_TEST_WIDGET ()
|
|
START_WIDGET_GROUP("General Tests")
|
|
SETUP_WIDGET ()
|
|
START_WIDGET_GROUP ("Vehicle Damage")
|
|
ADD_WIDGET_BOOL ("Apply damage", ApplyDamage)
|
|
ADD_WIDGET_FLOAT_SLIDER ("VehicleDamgePos.x",vLocalDamage.x, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("VehicleDamgePos.y",vLocalDamage.y, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("VehicleDamgePos.z",vLocalDamage.z, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Damage",fDamage, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("fDeformation",fDeformation, -2000, 2000, 0.5)
|
|
ADD_WIDGET_BOOL ("LocalDamage", bLocalDamage)
|
|
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_BOOL ("Test print", testprint)
|
|
ADD_WIDGET_BOOL ("flushFilet", flushFile)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.x",gPedcoords.x, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.y",gPedcoords.y, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Start_Coord.z",gPedcoords.z, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Start_Heading",gPedheading, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.x",DynamicTargetPos.x, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.y",DynamicTargetPos.y, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Target_Coord.z",DynamicTargetPos.z, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Target_heading",DynamicTargetHeading, -2000, 2000, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Slide speed",SlideSpeed, -2000, 2000, 0.5)
|
|
ADD_WIDGET_INT_SLIDER ("time", gtime ,-2, 100000, 1 )
|
|
ADD_WIDGET_INT_SLIDER ("seat", seatindex ,-2, 2, 1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("Move Blend Ratio", DYNAMIC_MOVE_BLEND_RATIO, PEDMOVEBLENDRATIO_STILL, PEDMOVEBLENDRATIO_SPRINT, 0.1 )
|
|
START_WIDGET_GROUP ("Anim")
|
|
ADD_WIDGET_BOOL ("loop anim", bLoopAnim )
|
|
ADD_WIDGET_BOOL ("Extract y vel", bExtractbackwardvel )
|
|
ADD_WIDGET_BOOL ("Extract x vel ", bExtractsidevel )
|
|
ADD_WIDGET_BOOL ("Hold ladt frame ", bholdlastframe )
|
|
ADD_WIDGET_FLOAT_SLIDER ("blend",BlendSpeed, -2000, 2000, 0.5)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP ("Ped setup")
|
|
ADD_WIDGET_INT_SLIDER ("Ped_index", gTestPedsIndex ,0, 9, 1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.x",gPedcoords.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.y",gPedcoords.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Ped_Coord.z",gPedcoords.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Ped_Heading",gPedheading, -2000, 2000, 0.5)
|
|
START_NEW_WIDGET_COMBO()
|
|
ADD_TO_WIDGET_COMBO ("S_M_Y_COP_01")
|
|
ADD_TO_WIDGET_COMBO ("M_Y_HARLEM_01")
|
|
STOP_WIDGET_COMBO("Ped", PedIdentifier)
|
|
ADD_WIDGET_BOOL ("Create ped", gCreatePed)
|
|
ADD_WIDGET_BOOL ("Delete ped", gdeletePed)
|
|
ADD_WIDGET_INT_SLIDER ("Set Ped rel grp", gpedrelgrp ,1, 4, 1 )
|
|
START_NEW_WIDGET_COMBO()
|
|
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_UNARMED")
|
|
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_PISTOL")
|
|
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_ASSAULTRIFLE")
|
|
ADD_TO_WIDGET_COMBO ("WEAPONTYPE_M4")
|
|
STOP_WIDGET_COMBO("weapon", WeaponIdentifier)
|
|
ADD_WIDGET_BOOL ("Swap current peds weapon", gSwapPedWeapons)
|
|
ADD_WIDGET_BOOL ("print ped info", Bprint_ped_info)
|
|
ADD_WIDGET_BOOL ("activate def area",gPedDefAActive)
|
|
STOP_WIDGET_GROUP ()
|
|
START_WIDGET_GROUP ("Route Builder")
|
|
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.x",gRoutePoint.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.y",gRoutePoint.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("RoutePoint.z",gRoutePoint.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_INT_SLIDER ("Route Node", gRouteNode, 0, 7, 1 )
|
|
ADD_WIDGET_BOOL ("Register Node", BSetNode)
|
|
ADD_WIDGET_BOOL ("copy cam pos", BCopyCamCoords )
|
|
STOP_WIDGET_GROUP ()
|
|
START_WIDGET_GROUP ("Test Diving Away From Vehicle")
|
|
ADD_WIDGET_FLOAT_SLIDER ("Ped Heading", fTestDivingAwayFromVehiclePedHeading, 0.0, 360.0, 1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Vehicle Horizontal Offset", fTestDivingAwayFromVehicleHorizontalOffset, -2.0, 2.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Vehicle Distance Offset", fTestDivingAwayFromVehicleDistanceOffset, 0.0, 50.0, 1.0)
|
|
ADD_WIDGET_BOOL ("Always See", bTestDivingAwayFromVehicleAlwaysSee)
|
|
ADD_WIDGET_BOOL ("Can Dive Away", bTestDivingAwayFromVehicleCanDiveAway)
|
|
ADD_WIDGET_BOOL ("Apply Changes", bTestDivingAwayFromVehicleApplyChanges)
|
|
STOP_WIDGET_GROUP ()
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
// Functions end: WIDGET
|
|
|
|
//Mission flow House keeping
|
|
|
|
|
|
//PUPROSE: REmoves all the scenarios and resets all the relationships
|
|
PROC Cleanup_Scenario_Entities ()
|
|
int index = 0
|
|
for index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
CLEAN_UP_PED_ENTITIES (TestPeds[index].ped)
|
|
ENDFOR
|
|
|
|
for index = 0 to MAX_NUMBER_OF_VEHICLES -1
|
|
CLEAN_UP_VEHICLE_ENTITIES (TestVehicles[index].Vehicle )
|
|
ENDFOR
|
|
|
|
Set_Gang_Relationships (FALSE)
|
|
ENDPROC
|
|
|
|
PROC Terminate_test_script ()
|
|
if IS_KEYBOARD_KEY_JUST_PRESSED (KEY_S)
|
|
CLEAR_PRINTS ()
|
|
CLEAR_HELP ()
|
|
Cleanup_Scenario_Entities ()
|
|
Temp_cleanup_scenario_cams ()
|
|
SET_PLAYER_COLISION(scplayer, true)
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, GET_PLAYER_START_POS () )
|
|
ENDIF
|
|
|
|
TERMINATE_THIS_THREAD ()
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//END: House Keeping
|
|
|
|
//Test Specific Functions:
|
|
|
|
//FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading)
|
|
// SEQUENCE_INDEX TEST_SEQUENCE
|
|
// OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
// TASK_FOLLOW_NAV_MESH_AND_SLIDE_TO_COORD (NULL, L_Target_Pos, INT_TO_ENUM (PEDMOVESTATE , (DYNAMIC_MOVE_TYPE + 2) ), -2, 0.25, L_Target_heading)
|
|
// CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
//
|
|
// RETURN TEST_SEQUENCE
|
|
//ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX SLIDE_TO_COORD_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_PED_SLIDE_TO_COORD (NULL, L_Target_Pos, L_Target_heading, SlideSpeed)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX SLIDE_TO_COORD_AND_PLAY_ANIM_SEQ ( VECTOR L_Target_Pos, FLOAT L_Target_heading, string animName, string AnimDict)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_PED_SLIDE_TO_COORD_AND_PLAY_ANIM (NULL, L_Target_Pos, L_Target_heading, SlideSpeed, animName, AnimDict, BlendSpeed, bLoopAnim, bExtractbackwardvel, bExtractsidevel, bholdlastframe, 0)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_TASK_OPEN_VEHICLE_DOOR(VEHICLE_INDEX vehicle, int time = -2)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_OPEN_VEHICLE_DOOR (NULL, vehicle, time,INT_TO_ENUM (VEHICLE_SEAT, seatindex ) )
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_TASK_PLAY_ANIM(string anim)
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_PLAY_ANIM (NULL, "misstest_anim",anim, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
|
|
FUNC SEQUENCE_INDEX FOLLOW_ROUTE( RouteStruct &TargetRoute[])
|
|
int index
|
|
BOOL BHaveValidNode = FALSE
|
|
VECTOR TempNode
|
|
|
|
//This allows us to pass a sequnce to a ped using 7 points for maximun testing. Iess than 7 nodes can be used, and the last valid node is copied into the remaining array elements.
|
|
//Note all nodes must be in order there can be no gaps between them ie node 1 valid, 2 valid, 3 invalid is ok but not 1 valid, 2 invalid, 3 valid
|
|
//search our node array until we find a invalid array point
|
|
for index = 0 to MAX_NUMBER_OF_NODES -1
|
|
IF TargetRoute[index].RouteNodeState = FALSE
|
|
IF index <> 0
|
|
TempNode = TargetRoute[index - 1].RouteNode //grab the previous point which is valid assuming that all nodes are sequential
|
|
BHaveValidNode = TRUE
|
|
ELSE
|
|
SCRIPT_ASSERT ("Passed in sequnce with no valid nodes ")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//copy this valid node into the remaing array elements
|
|
IF (BHaveValidNode)
|
|
TargetRoute[index].RouteNode = TempNode
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[0].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[1].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[2].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[3].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[4].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[5].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[6].routenode, DYNAMIC_MOVE_BLEND_RATIO, -2, 1)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_TASK_STAND_STILL(int time)
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
// TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[0].routenode, INT_TO_ENUM (PEDMOVESTATE , (DYNAMIC_MOVE_TYPE + 2)), -1, 1)
|
|
// TASK_LOOK_AT_COORD (null,TargetRoute[1].routenode, time )
|
|
// TASK_PAUSE (NULL, time)
|
|
// TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[1].routenode, INT_TO_ENUM (PEDMOVESTATE , (DYNAMIC_MOVE_TYPE + 2)), -2, 1)
|
|
TASK_GO_TO_ENTITY (null, TestVehicles[0].Vehicle, time, 0.25)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX FOLLOW_PATROL_ROUTE ( STRING RouteName, PATROL_ALERT_STATE alert_state )
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_PATROL (null, RouteName, alert_state, true )
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
WEAPON_TYPE PedsWeapon
|
|
int NumberOfBullets = 0
|
|
vector vTempImpactPos
|
|
|
|
STRUCT SHOT_IMPACT
|
|
Bool bImpact
|
|
Vector vImpactPos
|
|
ENDSTRUCT
|
|
|
|
SHOT_IMPACT WEAPON_IMPACTS[50]
|
|
|
|
PROC CLEAR_SHOTS_STRUCT(SHOT_IMPACT &shots[])
|
|
int ArraySize = (COUNT_OF(shots) - 1)
|
|
int index
|
|
|
|
for index = 0 to ArraySize
|
|
shots[index].bImpact = FALSE
|
|
shots[index].vImpactPos = <<0.0, 0.0, 0.0>>
|
|
ENDFOR
|
|
ENDPROC
|
|
|
|
PROC DRAW_IMPACT_POINTS(SHOT_IMPACT &shots[])
|
|
int ArraySize = (COUNT_OF(shots) - 1)
|
|
int index
|
|
|
|
for index = 0 to ArraySize
|
|
IF shots[index].bImpact
|
|
DRAW_DEBUG_SPHERE (shots[index].vImpactPos, 0.04 )
|
|
ENDIF
|
|
ENDFOR
|
|
ENDPROC
|
|
|
|
//pistol - distance, 50m
|
|
|
|
|
|
PROC SET_CAMERA(VECTOR vPos, VECTOR vRot)
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_COORD (TestCams[FixedCamera].cam , vPos)
|
|
SET_CAM_ROT (TestCams[FixedCamera].cam , vRot )
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, TRUE )
|
|
ELSE
|
|
TestCams[FixedCamera].cam = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", vPos, vRot, 60.0, TRUE )
|
|
RENDER_SCRIPT_CAMS (TRUE, FALSE)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, TRUE )
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
STRING PATHNAME = "X:/jimmy/"
|
|
STRING FileName = "Mytest.xml"
|
|
string mystring
|
|
|
|
PROC ADD_STUFF_TO_debug ()
|
|
OPEN_NAMED_DEBUG_FILE (PATHNAME , FileName )
|
|
SAVE_INT_TO_NAMED_DEBUG_FILE (10, PATHNAME, FileName)
|
|
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE (PATHNAME, FileName)
|
|
SAVE_FLOAT_TO_NAMED_DEBUG_FILE (2820982309.555, PATHNAME, FileName)
|
|
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE (PATHNAME, FileName)
|
|
SAVE_STRING_TO_NAMED_DEBUG_FILE (mystring, PATHNAME, FileName)
|
|
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE (PATHNAME, FileName)
|
|
CLOSE_DEBUG_FILE ()
|
|
|
|
OPEN_DEBUG_FILE ( )
|
|
SAVE_INT_TO_DEBUG_FILE (10)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE ()
|
|
SAVE_FLOAT_TO_DEBUG_FILE (2820982309.555)
|
|
SAVE_NEWLINE_TO_DEBUG_FILE ()
|
|
SAVE_STRING_TO_DEBUG_FILE ("Test string")
|
|
SAVE_NEWLINE_TO_DEBUG_FILE ()
|
|
CLOSE_DEBUG_FILE ()
|
|
|
|
ENDPROC
|
|
|
|
//SET UP
|
|
PROC SETUP_PATROL_ROUTES ()
|
|
|
|
OPEN_PATROL_ROUTE ("miss_guard_loop_1")
|
|
ADD_PATROL_ROUTE_NODE ( 1, "StandGuard", <<-32.04, 40.83, 6.35>> , <<0.0, 0.0, 0.0>> )
|
|
ADD_PATROL_ROUTE_NODE ( 2, "StandGuard", <<-35.22, 8.20, 6.35>> , <<0.0, 0.0, 0.0>> )
|
|
ADD_PATROL_ROUTE_NODE ( 3, "StandGuard", <<-18.09, 20.60, 6.35>> , <<0.0, 0.0, 0.0>> )
|
|
|
|
ADD_PATROL_ROUTE_LINK (1, 2)
|
|
ADD_PATROL_ROUTE_LINK (2, 3)
|
|
ADD_PATROL_ROUTE_LINK (3, 1)
|
|
|
|
CLOSE_PATROL_ROUTE ()
|
|
CREATE_PATROL_ROUTE ()
|
|
|
|
OPEN_PATROL_ROUTE ("miss_guard_loop_2")
|
|
ADD_PATROL_ROUTE_NODE ( 1, "StandGuard", <<-41.18, 21.60, 6.35>> , <<0.0, 0.0, 0.0>> )
|
|
ADD_PATROL_ROUTE_NODE ( 2, "StandGuard", <<-15.27, 27.30, 6.35>>, <<0.0, 0.0, 0.0>> )
|
|
|
|
ADD_PATROL_ROUTE_LINK (1, 2)
|
|
ADD_PATROL_ROUTE_LINK (2, 1)
|
|
|
|
CLOSE_PATROL_ROUTE ()
|
|
CREATE_PATROL_ROUTE ()
|
|
|
|
ENDPROC
|
|
|
|
//End Test Specific Functions
|
|
|
|
//These enums must match with the testNavmenu.xml
|
|
|
|
ENUM WeaponImpactFlags
|
|
SetupWeaponImpacts,
|
|
GetWeaponImpacts,
|
|
DrawWeaponImpacts
|
|
ENDENUM
|
|
WeaponImpactFlags TestWeaponImpactPosStatus = SetupWeaponImpacts
|
|
|
|
ENUM SearchPedFlags
|
|
SearchPedSetup,
|
|
SearchRunSearch
|
|
ENDENUM
|
|
|
|
SearchPedFlags SearchPedStatus = SearchPedSetup
|
|
|
|
ENUM TestReactionsStates
|
|
TestReactionsSetup,
|
|
TestReactionsWait,
|
|
TestReactionsShoot,
|
|
TestReactionsRun
|
|
ENDENUM
|
|
|
|
INT iReactDirection = 1
|
|
|
|
TestReactionsStates TestReactionsStatus = TestReactionsSetup
|
|
|
|
PROC INITALISE_TEST_STATE()
|
|
SingleTaskStatus = startSingleTask
|
|
TestWeaponImpactPosStatus = SetupWeaponImpacts
|
|
SearchPedStatus = SearchPedSetup
|
|
TestReactionsStatus = TestReactionsSetup
|
|
|
|
ENDPROC
|
|
|
|
ENUM Scenarios
|
|
TestSetup =0,
|
|
CurrentBug = 1,
|
|
ListeningGadgetTest = 2,
|
|
CameraGadgetTest = 3,
|
|
TestShotSpread =4,
|
|
BugGetClosestped =5 ,
|
|
TestReactions = 6,
|
|
TestGuardChat = 7,
|
|
TestReact1 = 8,
|
|
TestInterruptableGetup = 9,
|
|
TestGuardsSpotDeadPeds = 10,
|
|
TestUnidentifiedPed = 11,
|
|
SeekCoverOnlyTest =12 ,
|
|
SurrenderTest =13,
|
|
ClimbKillTest = 14,
|
|
TaskChatTest= 15,
|
|
Whistlingtest = 16,
|
|
GuardFindingADeadPedTest = 17,
|
|
MopAndBucketTest = 18,
|
|
SyncMapObject = 19,
|
|
TestDivingAwayFromVehicle = 20,
|
|
TestLeaningForwardsScenario = 21,
|
|
TestLeaningScenario = 22,
|
|
TestBenchScenario = 23,
|
|
DefaultTest = 1000
|
|
ENDENUM
|
|
|
|
OBJECT_INDEX mop = NULL
|
|
OBJECT_INDEX bucket = NULL
|
|
OBJECT_INDEX bench = NULL
|
|
PED_INDEX randomScenarioPed = NULL
|
|
ENTITY_INDEX randomScenarioEntity = NULL
|
|
|
|
// END_SCENARIO: SquadOfPedsMovingBetweenVehicles
|
|
PROC SETUP_TEST_DATA ()
|
|
|
|
SWITCH int_to_enum (scenarios, gcurrentselection)
|
|
CASE TestSetup
|
|
CASE MopAndBucketTest
|
|
REQUEST_ANIM_DICT("missfam5")
|
|
|
|
TestPeds[0].PedsCoords = <<-4.62, 87.21, 6.35>>
|
|
TestPeds[0].PedHeading = -84.10
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
BREAK
|
|
|
|
CASE CurrentBug
|
|
case SyncMapObject
|
|
PlayerStartPos = <<-49.35, 24.07, 7.5>>
|
|
BREAK
|
|
|
|
CASE TestDivingAwayFromVehicle
|
|
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
PlayerStartPos = <<-2.9,67.0,8.8>>
|
|
|
|
TestPeds[0].PedsCoords = <<-2.81, 93.63, 7.36>>
|
|
TestPeds[0].PedHeading = fTestDivingAwayFromVehiclePedHeading
|
|
TestPeds[0].Pedrelgrp = 0
|
|
TestPeds[0].PedModel = S_F_M_MAID_01
|
|
|
|
TestVehicles[0].VehicleCoords = TestPeds[0].PedsCoords + <<fTestDivingAwayFromVehicleHorizontalOffset, -fTestDivingAwayFromVehicleDistanceOffset, 0.0>>
|
|
TestVehicles[0].VehicleHeading = 0.0
|
|
TestVehicles[0].Vehiclemodel = TAILGATER
|
|
|
|
BREAK
|
|
|
|
CASE ListeningGadgetTest
|
|
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
GIVE_WEAPON_TO_PED(scplayer, WEAPONTYPE_ASSAULTRIFLE, 0, TRUE)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CameraGadgetTest
|
|
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestShotSpread
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, <<62, 0.0, 2.0>>)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BugGetClosestped
|
|
TestPeds[0].PedsCoords = << -2.4167, -1.4273, 1.1959>>
|
|
TestPeds[0].PedHeading = 359.6439
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
BREAK
|
|
|
|
CASE TestReactions
|
|
TestPeds[0].PedsCoords = <<8.33, 3.53, 6.35>>
|
|
TestPeds[0].PedHeading = -84.10
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<8.38, -0.18, 6.35>>
|
|
TestPeds[1].PedHeading = 8.05
|
|
TestPeds[1].Pedrelgrp = 2
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestGuardChat
|
|
TestPeds[0].PedsCoords = <<-32.04, 40.83, 6.35>>
|
|
TestPeds[0].PedHeading = -84.10
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-41.18, 21.60, 6.35>>
|
|
TestPeds[1].PedHeading = 8.05
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestReact1
|
|
TestPeds[0].PedsCoords = <<-32.05, -16.00, 6.35>>
|
|
TestPeds[0].PedHeading = -71.55
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-38.63, -2.44, 6.35>>
|
|
TestPeds[1].PedHeading = 86.51
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[2].PedsCoords = <<-57.18, -6.54, 6.35>>
|
|
TestPeds[2].PedHeading = 86.51
|
|
TestPeds[2].Pedrelgrp = 2
|
|
TestPeds[2].PedModel = S_M_Y_COP_01
|
|
TestPeds[2].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestInterruptableGetup
|
|
RENDER_SCRIPT_CAMS (FALSE, FALSE)
|
|
BREAK
|
|
|
|
CASE TestGuardsSpotDeadPeds
|
|
// Dead ped
|
|
TestPeds[0].PedsCoords = <<-31.33, -18.38, 6.35>>
|
|
TestPeds[0].PedHeading = -71.55
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-40.86, -7.63, 6.35>>
|
|
TestPeds[1].PedHeading = 86.51
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestUnidentifiedPed
|
|
TestPeds[0].PedsCoords = <<-37.31, -52.82, 6.35>>
|
|
TestPeds[0].PedHeading = 178.33
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-34.49, -24.42, 6.35>>
|
|
TestPeds[1].PedHeading = 86.51
|
|
TestPeds[1].Pedrelgrp = 2
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE SeekCoverOnlyTest
|
|
PlayerStartPos = <<22.35, 30.82, 6.35>>
|
|
|
|
TestPeds[0].PedsCoords = <<-31.54, -6.90, 6.35>>
|
|
TestPeds[0].PedHeading = -65
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-22.40, -3.79, 6.35>>
|
|
TestPeds[1].PedHeading = 105
|
|
TestPeds[1].Pedrelgrp = 2
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE SurrenderTest
|
|
|
|
TestPeds[0].PedsCoords = <<19.23, 35.64, 6.35>>
|
|
TestPeds[0].PedHeading = -65
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<26.92, 47.09, 6.35>>
|
|
TestPeds[1].PedHeading = -36.34
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
// SET_PED_RELATIONSHIP_GROUP ( scplayer, RELGROUP_MISSION2 )
|
|
// SET_RELATIONSHIP_BETWEEN_REL_GROUPS ( ACQUAINTANCE_TYPE_PED_HATE, RELGROUP_MISSION1, RELGROUP_MISSION2 )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ClimbKillTest
|
|
|
|
TestPeds[0].PedsCoords = <<-65.81, 159.72, 11.35>>
|
|
TestPeds[0].PedHeading = -178.07
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-64.87, 150.60, 11.35>>
|
|
TestPeds[1].PedHeading = -107.30
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
// SET_PED_RELATIONSHIP_GROUP ( scplayer, RELGROUP_MISSION2 )
|
|
// SET_RELATIONSHIP_BETWEEN_REL_GROUPS ( ACQUAINTANCE_TYPE_PED_HATE, RELGROUP_MISSION1, RELGROUP_MISSION2 )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TaskChatTest
|
|
TestPeds[0].PedsCoords = <<5.22, 46.52, 6.35>>
|
|
TestPeds[0].PedHeading = -125.97
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<20.66, 53.51, 6.35>>
|
|
TestPeds[1].PedHeading = -84.58
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
BREAK
|
|
|
|
CASE Whistlingtest
|
|
bStartedTasks = FALSE
|
|
gAllowDebugging = FALSE // Don't trigger debug when going into stealth
|
|
|
|
TestPeds[0].PedsCoords = <<-35.82, -12.80, 6.35>>
|
|
TestPeds[0].PedHeading = -176.44
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
// SET_PED_RELATIONSHIP_GROUP ( scplayer, RELGROUP_MISSION2 )
|
|
// SET_RELATIONSHIP_BETWEEN_REL_GROUPS ( ACQUAINTANCE_TYPE_PED_HATE, RELGROUP_MISSION1, RELGROUP_MISSION2 )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE GuardFindingADeadPedTest
|
|
|
|
TestPeds[0].PedsCoords = <<-45.51, -29.78, 6.35>>
|
|
TestPeds[0].PedHeading = -176.44
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_Y_COP_01
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[1].PedsCoords = <<-52.81, -21.54, 6.35>>
|
|
TestPeds[1].PedHeading = -176.44
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
TestPeds[2].PedsCoords = <<-49.50, -25.58, 6.35>>
|
|
TestPeds[2].PedHeading = -176.44
|
|
TestPeds[2].Pedrelgrp = 1
|
|
TestPeds[2].PedModel = S_M_Y_COP_01
|
|
TestPeds[2].PedsWeapon = WEAPONTYPE_ASSAULTRIFLE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
// SET_PED_RELATIONSHIP_GROUP ( scplayer, RELGROUP_MISSION2 )
|
|
// SET_RELATIONSHIP_BETWEEN_REL_GROUPS ( ACQUAINTANCE_TYPE_PED_HATE, RELGROUP_MISSION1, RELGROUP_MISSION2 )
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestLeaningForwardsScenario
|
|
|
|
PlayerStartPos = <<9.645, 129.645, 8.396>>
|
|
|
|
randomScenarioPed = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, <<3.92, 129.763, 8.328>>, 270)
|
|
randomScenarioEntity = GET_ENTITY_FROM_PED_OR_VEHICLE(randomScenarioPed)
|
|
|
|
BREAK
|
|
|
|
CASE TestLeaningScenario
|
|
|
|
PlayerStartPos = <<9.645, 129.645, 8.396>>
|
|
|
|
randomScenarioPed = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, <<3.92, 129.763, 8.328>>, 270)
|
|
randomScenarioEntity = GET_ENTITY_FROM_PED_OR_VEHICLE(randomScenarioPed)
|
|
|
|
|
|
|
|
BREAK
|
|
|
|
CASE TestBenchScenario
|
|
|
|
PlayerStartPos = <<10.364, 128.887, 7.36>>
|
|
|
|
randomScenarioPed = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, <<0.364, 128.887, 7.36>>, 270)
|
|
randomScenarioEntity = GET_ENTITY_FROM_PED_OR_VEHICLE(randomScenarioPed)
|
|
|
|
REQUEST_MODEL(prop_bench_09)
|
|
WHILE NOT HAS_MODEL_LOADED(prop_bench_09)
|
|
WAIT(0)
|
|
REQUEST_MODEL(prop_bench_09)
|
|
ENDWHILE
|
|
|
|
bench = CREATE_OBJECT(prop_bench_09, <<5.9, 132.313, 6.4>>)
|
|
|
|
SET_ENTITY_ROTATION(bench, <<0, 0, 90>>)
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PED_INDEX testped = NULL
|
|
int sceneId = -1
|
|
|
|
PROC PRE_RUN_TEST ()
|
|
|
|
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
|
|
|
|
CASE TestDivingAwayFromVehicle
|
|
|
|
IF bTestDivingAwayFromVehicleApplyChanges
|
|
|
|
//Set up the test data again.
|
|
SETUP_TEST_DATA()
|
|
|
|
//Reset the current scenario.
|
|
gResetCombatScenario = TRUE
|
|
|
|
//Clean up the current scenario.
|
|
TestScenarioAStatus = CleanupScenario
|
|
|
|
//Clear the flag.
|
|
bTestDivingAwayFromVehicleApplyChanges = FALSE
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC RUN_TEST ()
|
|
|
|
int index = 0
|
|
VECTOR vCamPos
|
|
VECTOR vCamRot
|
|
vector ScenePos = <<-51.05, 26.41, 7.53>>
|
|
|
|
|
|
|
|
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
|
|
//setup scenario
|
|
CASE TestSetup
|
|
if not IS_PED_INJURED(scplayer)
|
|
GIVE_WEAPON_TO_PED(scplayer, GADGETTYPE_PARACHUTE, 1)
|
|
SET_ENTITY_COORDS(scplayer, <<0, 0, 1500 >> )
|
|
Set_Test_State_To_Default()
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CurrentBug
|
|
PRINTSTRING("CurrentBug")
|
|
PRINTNL()
|
|
|
|
|
|
// SET_DEFAULT_VEHICLE_FOR_VEHICLE_FACTORY_WIDGET(POLICE)
|
|
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE SyncMapObject
|
|
REQUEST_ANIM_DICT("amb@newspaper")
|
|
REQUEST_ANIM_DICT("map_objects")
|
|
|
|
|
|
if (HAS_ANIM_DICT_LOADED("map_objects") and HAS_ANIM_DICT_LOADED("amb@newspaper") )
|
|
|
|
|
|
if not IS_SYNCHRONIZED_SCENE_RUNNING(sceneId)
|
|
|
|
sceneId = CREATE_SYNCHRONIZED_SCENE_AT_MAP_OBJECT ( ScenePos , 5.0 , Prop_news_disp_02a_S )
|
|
|
|
PLAY_SYNCHRONIZED_MAP_ENTITY_ANIM (ScenePos , 5.0 , Prop_news_disp_02a_S, SceneId, "newspaperdispense_machine", "map_objects", INSTANT_BLEND_IN )
|
|
if not IS_PED_INJURED(scplayer)
|
|
TASK_SYNCHRONIZED_SCENE(scplayer, SceneId, "amb@newspaper" , "newspaperdispense_customer", INSTANT_BLEND_IN, INSTANT_BLEND_OUT)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(sceneId) = 1
|
|
STOP_SYNCHRONIZED_MAP_ENTITY_ANIM ( ScenePos,5.0, Prop_news_disp_02a_S, INSTANT_BLEND_OUT )
|
|
if not IS_PED_INJURED(scplayer)
|
|
STOP_SYNCHRONIZED_ENTITY_ANIM( scplayer, NORMAL_BLEND_OUT, true)
|
|
CLEAR_PED_TASKS(scplayer)
|
|
ENDIF
|
|
Set_Test_State_To_Default()
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE TestDivingAwayFromVehicle
|
|
|
|
//Check if the player is not in a vehicle.
|
|
GET_THE_PLAYER()
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(scplayer)
|
|
|
|
//Put the player in the vehicle.
|
|
SET_VEHICLE_ENGINE_ON(TestVehicles[0].Vehicle, TRUE, TRUE)
|
|
SET_VEHICLE_UNDRIVEABLE(TestVehicles[0].Vehicle, FALSE)
|
|
SET_PED_INTO_VEHICLE(scplayer, TestVehicles[0].Vehicle, VS_DRIVER)
|
|
|
|
//We want the ped to react to events.
|
|
Block_Peds_Temp_Events(TestPeds[0], FALSE)
|
|
|
|
//Set the ped config flags.
|
|
SET_PED_CONFIG_FLAG(TestPeds[0].Ped, PCF_AlwaysSeeApproachingVehicles, bTestDivingAwayFromVehicleAlwaysSee)
|
|
SET_PED_CONFIG_FLAG(TestPeds[0].Ped, PCF_CanDiveAwayFromApproachingVehicles, bTestDivingAwayFromVehicleCanDiveAway)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE MopAndBucketTest
|
|
|
|
if not IS_ENTITY_DEAD(scplayer)
|
|
IF HAS_ANIM_SET_LOADED("move_ped_wpn_mop")
|
|
|
|
if IS_BUTTON_JUST_PRESSED(PAD1, RIGHTSHOULDER1)
|
|
FORCE_WEAPON_MOVEMENT_ANIM_GROUP(scplayer, "move_ped_wpn_mop")
|
|
SET_PED_ANIM_GROUP(scplayer, "move_ped_mop")
|
|
if not IS_ENTITY_ATTACHED(mop)
|
|
ATTACH_ENTITY_TO_ENTITY(mop, scplayer, get_ped_bone_index(scplayer, BONETAG_PH_R_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>) //bonetag_root
|
|
endif
|
|
if IS_ENTITY_ATTACHED(bucket)
|
|
DETACH_ENTITY(bucket)
|
|
endif
|
|
ENDIF
|
|
|
|
if IS_BUTTON_JUST_PRESSED(PAD1, LEFTSHOULDER1)
|
|
FORCE_WEAPON_MOVEMENT_ANIM_GROUP(scplayer, "move_ped_wpn_bucket")
|
|
SET_PED_ANIM_GROUP(scplayer, "move_ped_bucket")
|
|
if not IS_ENTITY_ATTACHED(mop)
|
|
ATTACH_ENTITY_TO_ENTITY(mop, scplayer, get_ped_bone_index(scplayer, BONETAG_PH_R_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>) //bonetag_root
|
|
endif
|
|
|
|
if not IS_ENTITY_ATTACHED(bucket)
|
|
ATTACH_ENTITY_TO_ENTITY(bucket, scplayer, get_ped_bone_index(scplayer, BONETAG_PH_L_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
endif
|
|
ENDIF
|
|
|
|
if IS_BUTTON_JUST_PRESSED(PAD1, CIRCLE)
|
|
RESET_WEAPON_MOVEMENT_ANIM_GROUP(scplayer)
|
|
RESET_PED_ANIM_GROUP(scplayer)
|
|
if IS_ENTITY_ATTACHED(mop)
|
|
DETACH_ENTITY(mop)
|
|
endif
|
|
if IS_ENTITY_ATTACHED(bucket)
|
|
DETACH_ENTITY(bucket)
|
|
endif
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE DefaultTest
|
|
|
|
BREAK
|
|
|
|
CASE ListeningGadgetTest
|
|
|
|
BREAK
|
|
|
|
CASE CameraGadgetTest
|
|
|
|
BREAK
|
|
|
|
CASE TestShotSpread
|
|
SWITCH TestWeaponImpactPosStatus
|
|
|
|
CASE SetupWeaponImpacts
|
|
|
|
CLEAR_SHOTS_STRUCT(WEAPON_IMPACTS)
|
|
TestWeaponImpactPosStatus = GetWeaponImpacts
|
|
BREAK
|
|
|
|
CASE GetWeaponImpacts
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
IF GET_CURRENT_PED_WEAPON(scplayer, PedsWeapon)
|
|
IF GET_AMMO_IN_CLIP(scplayer, PedsWeapon, NumberOfBullets)
|
|
IF GET_PED_LAST_WEAPON_IMPACT_COORD (scplayer, vTempImpactPos)
|
|
IF NumberOfBullets > 0
|
|
FOR INDEX = 0 TO 49
|
|
IF not WEAPON_IMPACTS[index].bImpact
|
|
WEAPON_IMPACTS[index].vImpactPos = vTempImpactPos
|
|
WEAPON_IMPACTS[index].bImpact = TRUE
|
|
INDEX = 50
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
ELSE
|
|
SETTIMERA(0)
|
|
TestWeaponImpactPosStatus = DrawWeaponImpacts
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
DRAW_IMPACT_POINTS(WEAPON_IMPACTS)
|
|
|
|
BREAK
|
|
|
|
CASE DrawWeaponImpacts
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
IF TIMERA() > 500
|
|
IF IS_PED_SHOOTING (scplayer)
|
|
TestWeaponImpactPosStatus = SetupWeaponImpacts
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
DRAW_IMPACT_POINTS(WEAPON_IMPACTS)
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE BugGetClosestped
|
|
SWITCH SearchPedStatus
|
|
CASE SearchPedSetup
|
|
// START_PED_SEARCH_CRITERIA ()
|
|
SearchPedStatus = SearchRunSearch
|
|
|
|
BREAK
|
|
|
|
|
|
CASE SearchRunSearch
|
|
|
|
if GET_CLOSEST_PED ( <<1.0, 1.0, 1.0>>, 50, FALSE, true, testped)
|
|
PRINTSTRING ("found a ped")
|
|
PRINTNL()
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (testped)
|
|
SET_PED_COORDS_KEEP_VEHICLE(testped, <<TestPeds[0].PedsCoords.x, TestPeds[0].PedsCoords.y, TestPeds[0].PedsCoords.z+ 5.0>>)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
BREAK
|
|
|
|
CASE TestReactions
|
|
|
|
SWITCH TestReactionsStatus
|
|
|
|
CASE TestReactionsSetup
|
|
vCamPos = <<-0.998314,3.204185,11.797215>>
|
|
vCamRot = <<-27.763252,-0.000040,-87.243950>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
SWITCH (iReactDirection)
|
|
CASE 1 // Left
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<5.39, 9.09, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-1.58)
|
|
BREAK
|
|
CASE 2 // Top Left
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<17.18, 11.97, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-51.16)
|
|
BREAK
|
|
CASE 3 // Forward
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<19.14, 4.40, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-88.36)
|
|
BREAK
|
|
CASE 4 // Top right
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<15.79, -1.78, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-174.66)
|
|
BREAK
|
|
CASE 5 // Right
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<6.13, -1.47, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-174.66)
|
|
BREAK
|
|
CASE 6 // Bottom right
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<2.99, -0.60, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,-174.66)
|
|
BREAK
|
|
CASE 7 // Back
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<4.49, 3.33, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,90.06)
|
|
BREAK
|
|
DEFAULT // Bottom left
|
|
SET_PED_COORDS_KEEP_VEHICLE(TestPeds[1].ped,<<5.78, 7.58, 6.35>>)
|
|
SET_ENTITY_HEADING(TestPeds[1].ped,28.40)
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, <<2.13, -8.26, 6.35>>)
|
|
ENDIF
|
|
|
|
TASK_STAND_GUARD(TestPeds[0].Ped,TestPeds[0].PedsCoords,TestPeds[0].PedHeading,"Scenario_Stand_Guard")
|
|
|
|
TestReactionsStatus = TestReactionsWait
|
|
BREAK
|
|
|
|
CASE TestReactionsWait
|
|
|
|
// Let the guard stream in reaction anims
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
WAIT(2000)
|
|
|
|
TestReactionsStatus = TestReactionsShoot
|
|
BREAK
|
|
|
|
CASE TestReactionsShoot
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (Testpeds[1].Ped)
|
|
SWITCH (iReactDirection)
|
|
CASE 1 // Left
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<9.70, 13.99, 6.350>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 2 // Top Left
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<20.57, 16.26, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 3 // Forward
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<30.73, 4.68, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 4 // Top right
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<21.53, -6.71, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 5 // Right
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<9.69, -6.10, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 6 // Bottom right
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<3.42, -1.19, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
CASE 7 // Back
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<1.68, 3.14, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
DEFAULT // Bottom left
|
|
TASK_SHOOT_AT_COORD(Testpeds[1].Ped,<<4.49, 10.33, 6.35>>, 1000, FIRING_TYPE_1_BURST)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
iReactDirection = iReactDirection + 1
|
|
|
|
IF (iReactDirection > 8)
|
|
iReactDirection = 0
|
|
ENDIF
|
|
|
|
TestReactionsStatus = TestReactionsRun
|
|
BREAK
|
|
|
|
CASE TestReactionsRun
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDFOR
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
BREAK
|
|
|
|
CASE TestGuardChat
|
|
|
|
vCamPos = <<-17.535797,18.522385,11.388047>>
|
|
vCamRot = <<-13.469737,-0.000063,59.216499>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
Block_Peds_Temp_Events(TestPeds[index], FALSE )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, <<2.13, -8.26, 6.35>>)
|
|
ENDIF
|
|
|
|
SETUP_PATROL_ROUTES ()
|
|
|
|
TEST_SEQ = FOLLOW_PATROL_ROUTE ("miss_guard_loop_1", PAS_ALERT)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
|
|
TEST_SEQ = FOLLOW_PATROL_ROUTE ("miss_guard_loop_2", PAS_ALERT)
|
|
PedPerformsSequence (TestPeds[1].ped, TEST_SEQ)
|
|
//TASK_CHAT_TO_PED(TestPeds[0].ped, TestPeds[1].ped, TRUE, TRUE)
|
|
//TASK_CHAT_TO_PED(TestPeds[1].ped, TestPeds[0].ped, FALSE, TRUE)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TestReact1
|
|
vCamPos = <<-22.147865,-5.238187,14.972472>>
|
|
vCamRot = <<-27.736015,0.000001,96.991623>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
Block_Peds_Temp_Events(TestPeds[index], FALSE )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, <<2.13, -8.26, 6.35>>)
|
|
ENDIF
|
|
|
|
TASK_GO_STRAIGHT_TO_COORD(TestPeds[2].ped, <<-57.35, -1.46, 6.35>>, PEDMOVE_WALK)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TestInterruptableGetup
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[FixedCamera].cam, FALSE )
|
|
ENDIF
|
|
|
|
IF DOES_CAM_EXIST (TestCams[TrackingCamera].cam)
|
|
SET_CAM_ACTIVE (TestCams[TrackingCamera].cam, TRUE )
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer, <<-20.33, -32.74, 20.81>>)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TestGuardsSpotDeadPeds
|
|
vCamPos = <<-22.321243,-3.941307,11.792035>>
|
|
vCamRot = <<-11.021407,0.000016,118.724594>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
Block_Peds_Temp_Events(TestPeds[index], FALSE )
|
|
ENDFOR
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_ENTITY_HEALTH(TestPeds[0].Ped, 30)
|
|
TASK_GO_TO_COORD_ANY_MEANS(TestPeds[1].Ped,TestPeds[0].PedsCoords,PEDMOVE_WALK,NULL)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TestUnidentifiedPed
|
|
vCamPos = <<-35.433872,-21.467800,9.368533>>
|
|
vCamRot = <<-9.972842,-0.000011,179.938751>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
Block_Peds_Temp_Events(TestPeds[index], FALSE )
|
|
ENDFOR
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_PED_STEALTH_ATTRIBUTES(TestPeds[0].Ped,SA_TREATED_AS_ACTING_SUSPCIOUSLY,TRUE)
|
|
SET_PED_ID_RANGE(TestPeds[1].Ped,10.0)
|
|
SET_PED_SEEING_RANGE(TestPeds[1].Ped,20.0)
|
|
TASK_GO_TO_COORD_ANY_MEANS(TestPeds[1].Ped,TestPeds[0].PedsCoords,PEDMOVE_WALK,NULL)
|
|
SET_PED_ID_RANGE(TestPeds[0].Ped,10.0)
|
|
SET_PED_SEEING_RANGE(TestPeds[0].Ped,20.0)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
|
|
CASE SeekCoverOnlyTest
|
|
|
|
vCamPos = <<-18.666416,-1.125346,9.091416>>
|
|
vCamRot = <<-21.607365,-0.112191,113.084755>>
|
|
|
|
SET_CAMERA(vCamPos,vCamRot)
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
Block_Peds_Temp_Events(TestPeds[index], FALSE )
|
|
ENDFOR
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
//IF NOT IS_PED_INJURED(scplayer)
|
|
// SET_PED_COORDS_KEEP_VEHICLE(scplayer,<<-20.40, 0.61, 6.35>>)
|
|
//ENDIF
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[0].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[0].Ped,CA_JUST_SEEK_COVER,TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[0].Ped,CA_BLIND_FIRE_IN_COVER,TRUE)
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[1].Ped,CA_IS_A_GUARD,TRUE)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE SurrenderTest
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_PLAY_REACTION_ANIMS,FALSE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_IS_A_GUARD,TRUE)
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer,<<22.35, 30.82, 6.35>>)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE ClimbKillTest
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_CAN_INVESTIGATE,TRUE)
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer,<<-65.40, 161.27, 6.35>>)
|
|
SET_ENTITY_HEADING(scplayer, -142.85)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TaskChatTest
|
|
|
|
// Initialise test once
|
|
IF NOT bStartedTasks
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer,<<14.39, 62.89, 6.35>>)
|
|
SET_ENTITY_HEADING(scplayer, -167.25)
|
|
ENDIF
|
|
|
|
TASK_CHAT_TO_PED( Testpeds[0].Ped, Testpeds[1].Ped, CF_GO_TO_SPECIFIC_POS + CF_USE_CUSTOM_HEADING , <<10.11, 54.15, 6.35>>, -60.26, 0.5)
|
|
TASK_CHAT_TO_PED( Testpeds[1].Ped, Testpeds[0].Ped, CF_GO_TO_SPECIFIC_POS + CF_USE_CUSTOM_HEADING, <<14.18, 55.79, 6.35>>, -1.63, 0.5)
|
|
|
|
bStartedTasks = TRUE
|
|
ENDIF
|
|
|
|
// Repeat the code below
|
|
|
|
// This code makes each ped play anims in turn
|
|
|
|
// If ped0 hasn't started an anim and is in position and ped1 isn't playing an anim, make him play it
|
|
IF NOT bStartedAnim1
|
|
IF NOT IS_PED_INJURED(Testpeds[0].Ped)
|
|
AND IS_CHATTING_PED_IN_POSITION (Testpeds[0].Ped)
|
|
AND NOT IS_CHATTING_PED_PLAYING_ANIM(Testpeds[0].Ped)
|
|
AND NOT IS_CHATTING_PED_PLAYING_ANIM(Testpeds[1].Ped)
|
|
MAKE_CHATTING_PED_PLAY_ANIM(Testpeds[0].Ped, "r_civi", "hands_up", NORMAL_BLEND_IN, 5000, AF_LOOPING)
|
|
bStartedAnim1 = TRUE
|
|
bStartedAnim2 = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// If ped0 has started the anim and has finished and ped1 isn't playing an anim, start our anim
|
|
IF bStartedAnim1
|
|
AND NOT bStartedAnim2
|
|
IF NOT IS_PED_INJURED(Testpeds[1].Ped)
|
|
AND IS_CHATTING_PED_IN_POSITION (Testpeds[1].Ped)
|
|
AND NOT IS_CHATTING_PED_PLAYING_ANIM(Testpeds[0].Ped)
|
|
AND NOT IS_CHATTING_PED_PLAYING_ANIM(Testpeds[1].Ped)
|
|
MAKE_CHATTING_PED_PLAY_ANIM(Testpeds[1].Ped, "r_civi", "cover_ears", NORMAL_BLEND_IN, 3000, AF_LOOPING)
|
|
bStartedAnim1 = FALSE
|
|
bStartedAnim2 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE Whistlingtest
|
|
|
|
IF NOT bStartedTasks
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_CAN_INVESTIGATE,TRUE)
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED(scplayer)
|
|
SET_PED_COORDS_KEEP_VEHICLE(scplayer,<<-36.85, -3.55, 6.35>>)
|
|
SET_ENTITY_HEADING(scplayer, -83.89)
|
|
ENDIF
|
|
|
|
bStartedTasks = TRUE
|
|
ENDIF
|
|
|
|
IF NOT bStartedAnim1
|
|
IF IS_PED_INVESTIGATING_WHISTLING_EVENT(TestPeds[0].Ped)
|
|
SET_INVESTIGATION_POSITION(TestPeds[0].Ped,<<-46.79, -3.39, 6.35>>)
|
|
bStartedAnim1 = TRUE
|
|
Set_Test_State_To_Default()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE GuardFindingADeadPedTest
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
IF NOT IS_PED_INJURED (Testpeds[index].Ped)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_IS_A_GUARD,TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(TestPeds[index].Ped,CA_CAN_INVESTIGATE,TRUE)
|
|
Block_Peds_Temp_Events (Testpeds[index], FALSE)
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
SET_ENTITY_HEALTH(TestPeds[0].Ped,50)
|
|
|
|
TASK_GO_TO_COORD_ANY_MEANS(TestPeds[1].Ped, <<-45.56, -27.07, 6.35>>, PEDMOVE_WALK, NULL)
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
|
|
CASE TestLeaningForwardsScenario
|
|
IF NOT IS_PED_INJURED(randomScenarioPed)
|
|
TASK_START_SCENARIO_IN_PLACE(randomScenarioPed, "WORLD_HUMAN_LEANING_FORWARDS", 0, TRUE)
|
|
SET_ENTITY_AS_NO_LONGER_NEEDED(randomScenarioEntity)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
|
|
BREAK
|
|
|
|
CASE TestLeaningScenario
|
|
IF NOT IS_PED_INJURED(randomScenarioPed)
|
|
TASK_START_SCENARIO_IN_PLACE(randomScenarioPed, "WORLD_HUMAN_LEANING", 0, TRUE)
|
|
SET_ENTITY_AS_NO_LONGER_NEEDED(randomScenarioEntity)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
CASE TestBenchScenario
|
|
IF NOT IS_PED_INJURED(randomScenarioPed)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(randomScenarioPed, FALSE)
|
|
TASK_USE_NEAREST_SCENARIO_TO_COORD(randomScenarioPed, <<2.645, 129.645, 8.396>>, 10.0)
|
|
SET_ENTITY_AS_NO_LONGER_NEEDED(randomScenarioEntity)
|
|
ENDIF
|
|
|
|
Set_Test_State_To_Default()
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
//Purpose: Runs the main scenarios
|
|
PROC Run_Test_Scenario ()
|
|
int index = 0
|
|
|
|
SWITCH TestScenarioAStatus
|
|
//setps up all the data for the sceanrio, this is only called once or if selected in widget
|
|
CASE InitialiseScenarioData
|
|
PlayerStartPos = GET_PLAYER_START_POS() //sets the players start coords at the default
|
|
Bscenario_running = FALSE
|
|
INITIALISE_PED_DATA (Testpeds)
|
|
INITIALISE_VEHICLE_DATA (TestVehicles)
|
|
INITIALISE_CAM_DATA(TestCams )
|
|
SETUP_TEST_DATA ()
|
|
|
|
HELP_TEXT_STATE = HTF_SCENARIO_SELECTED_NOT_STARTED
|
|
TestScenarioAStatus = CreateScenarioEntities
|
|
|
|
Temp_Update_Player_With_Scenario(TestCams, scplayer, FALSE, PlayerStartPos) //sets the
|
|
|
|
BREAK
|
|
|
|
// Creates all the scenario data
|
|
CASE CreateScenarioEntities
|
|
Bscenario_running = FALSE
|
|
|
|
Set_Gang_Relationships (TRUE)
|
|
|
|
Temp_Update_Player_With_Scenario(TestCams, scplayer, true, PlayerStartPos)
|
|
|
|
//peds
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
ADD_RELATIONSHIP_GROUP_TO_STRUCT (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
//TestVehicles
|
|
FOR Index = 0 to MAX_NUMBER_OF_VEHICLES -1
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
ENDFOR
|
|
|
|
//TestCams
|
|
for index = 0 to MAX_NUMBER_OF_CAMERAS -1
|
|
CREATE_CAM_ENTITY (TestCams[index])
|
|
ENDFOR
|
|
|
|
TestScenarioAStatus = SetScenarioEntities
|
|
BREAK
|
|
|
|
CASE SetScenarioEntities
|
|
|
|
Temp_Update_Player_With_Scenario(TestCams, scplayer, true, PlayerStartPos)
|
|
|
|
Start_And_Reset_Test ()
|
|
|
|
PRE_RUN_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
|