4625 lines
152 KiB
Python
Executable File
4625 lines
152 KiB
Python
Executable File
USING "rage_builtins.sch"
|
|
USING "script_xml.sch"
|
|
USING "commands_ped.sch"
|
|
USING "commands_task.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "commands_graphics.sch"
|
|
USING "commands_debug.sch"
|
|
USING "test_tools.sch"
|
|
USING "commands_vehicle.sch"
|
|
USING "commands_camera.sch"
|
|
USING "commands_player.sch"
|
|
USING "commands_fire.sch"
|
|
USING "commands_clock.sch"
|
|
|
|
USING "buildtype.sch"
|
|
|
|
//PURPOSE: Returns the offset to the origin of a specific map
|
|
VECTOR GET_MAP_OFFSET=<<0.0, 0.0, 6.127>>
|
|
|
|
//Notes: This is script is to allow easy setup of test scenarios for the code department. It works in conjunction with test_tools.sch
|
|
//It is a data driven system
|
|
|
|
//Defaults values when the test is reset to factory the standard values are used
|
|
STRING XMLMenu = "Testbed/TestNmmenu"
|
|
|
|
WEAPON_TYPE HELD_WEAPON = WEAPONTYPE_PISTOL
|
|
|
|
//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]
|
|
|
|
//objects
|
|
CONST_INT MAX_NUMBER_OF_OBJECTS 1
|
|
|
|
OBJECT_INDEX oHook
|
|
VECTOR vHookPos
|
|
VECTOR vHookVelocity = <<0.0, 0.0, 0.0>>
|
|
|
|
VECTOR vCarriedPos = <<0.176,0.108,-0.124>>
|
|
VECTOR vCarriedRot = <<4.320,174.240,23.040>>
|
|
|
|
VECTOR vAgainstWallPedsCoords = << 17.5, -6.61, 0.0>>
|
|
float fPedWallDist = 0.4
|
|
|
|
Object_struct TestObject[MAX_NUMBER_OF_OBJECTS]
|
|
|
|
// Shot_2 variables
|
|
FLOAT gShot2Distance = 4.0
|
|
FLOAT gShot2OrientationOffset = 0.0
|
|
FLOAT gShot2LastDistance = 4.0
|
|
FLOAT gShot2LastOrientationOffset = 0.0
|
|
FLOAT SHOT_2_DYNAMIC_MOVE_TYPE = 1.0
|
|
FLOAT gShot2MovementDistance = 10.0
|
|
INT gFramesToCleanup
|
|
INT deadPedTimer
|
|
INT gShot2PedType = 0
|
|
bool shot2PedInitialized = FALSE
|
|
bool gShot2bForward = FALSE
|
|
bool gShot2bLeft = FALSE
|
|
bool gShot2bRight = FALSE
|
|
bool gShot2bBackward = FALSE
|
|
bool gShot2bWasForward = FALSE
|
|
bool gShot2bWasLeft = FALSE
|
|
bool gShot2bWasRight = FALSE
|
|
bool gShot2bWasBackward = FALSE
|
|
bool gShot2Crouch = FALSE
|
|
bool gShot2WasCrouch = FALSE
|
|
bool gPositionOnCliff = FALSE
|
|
bool gPositionOnCliffLast = FALSE
|
|
VECTOR vFallFromCliffPlayerStartPos = << 44.0, 38.6, 21.1 >>
|
|
VECTOR vFallFromCliffFixedCamPos = << 38.6, 34.6, 22.4 >>
|
|
float vFallFromCliffPlayerStartHeading = 90.0
|
|
|
|
bool gGrabVehicleDoorLockDoor = TRUE
|
|
|
|
//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 bAutoSwitchToTrackCam = FALSE
|
|
|
|
float gMinZoom = 0.5
|
|
float gMaxZoom = 15
|
|
float gZoomspeed = 0.15
|
|
float gCamzoom =4.5
|
|
float gCamPan = 270
|
|
float gCamPitch = -72
|
|
|
|
float gCamZoomMIn = 0.5
|
|
float gCamZoomMax = 20.0
|
|
|
|
INT PedComp
|
|
|
|
//TASK
|
|
SEQUENCE_INDEX TEST_SEQ
|
|
|
|
//Functions: WIDGETS
|
|
|
|
FLOAT BUMP_PLAYER_DYNAMIC_MOVE_TYPE = 2.0
|
|
FLOAT RUN_SHOT_DYNAMIC_MOVE_TYPE = 2.0
|
|
FLOAT WALK_DOWN_HILL_DYNAMIC_MOVE_TYPE = 1.0
|
|
|
|
|
|
int PedComponent = 0
|
|
|
|
bool gbshootPed = FALSE
|
|
bool gStartedDangle = FALSE
|
|
|
|
float gVehicleAttachBone = 49.0
|
|
VECTOR gVehicleAttachPositionOffset = <<0.0,- 0.4, 0.0>>
|
|
VECTOR gVehicleAttachRotationOffset = <<0.0, 0.0, 0.0>>
|
|
|
|
VECTOR CurrentPedPos
|
|
float gVehicleSpeed = 1.0
|
|
|
|
float gVehicleMoveDistance = 10.0
|
|
VECTOR gVehBumpPlayerPlayerStartPos = << 0.9, 1.0, 7.1 >>
|
|
VECTOR gVehBumpPlayerCarStartOffset = << -2.0, 0.0, 0.0 >>
|
|
float gVehBumpPlayerPlayerStartHeading = 90.0
|
|
float gVehBumpPlayerCarStartHeading = 180.0
|
|
bool gVehBumpPlayerInitialized = FALSE
|
|
bool gVehBumpPlayerReversing = FALSE
|
|
bool gVehBumpPlayerForceFallOff = FALSE
|
|
bool gStopVehicleIfPlayerRagdolls = FALSE
|
|
|
|
// fall
|
|
VECTOR gInitialFallVelocity = <<0.0, 0.0, 0.0>>
|
|
|
|
float gtestPan = 270, gtestPitch = -72 , gtestZoom = 3.25
|
|
//float gvehicleZoom = 3.25, gVehiclePitch = -90, gVehiclepan = 270
|
|
|
|
//Punch
|
|
//float gTestPedheading = 0.0
|
|
|
|
//NM Explosion
|
|
int ExplosionTag
|
|
float ExplosionScale= 1.0
|
|
FLOAT fExplosionDistance
|
|
bool bNoExplosionEffects = FALSE
|
|
bool bTestVehicleExplosion = FALSE
|
|
bool bWasTestVehicleExplosion = TRUE
|
|
int giPedHealth = 200
|
|
//NM relax
|
|
Float NM_Relaxation = 50.0
|
|
Bool bHoldPose = FALSE
|
|
|
|
//NM Teeter
|
|
VECTOR vImpulseTeeter
|
|
VECTOR vOffsetTeeter = <<0.0, 0.0, 0.0>>
|
|
FLOAT fPedEdgeDist = 0.25
|
|
//PED_RAGDOLL_COMPONENTS PedComp
|
|
|
|
//NM flinch
|
|
bool bNM_FLINCH_RIGHT_HANDED = FALSE
|
|
bool bNM_FLINCH_LEFT_HANDED = FALSE
|
|
float fNM_FLINCH_HAND_DIST_LEFTRIGHT = 0.1
|
|
float fNM_FLINCH_HAND_DIST_FRONTBACK = 0.1
|
|
float fNM_FLINCH_HAND_DIST_VERTICAL = 0.1
|
|
float fNM_FLINCH_BODY_STIFFNESS = 12.0
|
|
float fNM_FLINCH_BODY_DAMPING = 1.0
|
|
float fNM_FLINCH_BACK_BEND = -0.55
|
|
bool bNM_FLINCH_USE_LEFT_ARM = TRUE
|
|
bool bNM_FLINCH_USE_RIGHT_ARM = TRUE
|
|
float fNM_FLINCH_NOISE_SCALE = 0.1
|
|
bool bNM_FLINCH_NEW_HIT = TRUE
|
|
INT iNM_FLINCH_TURN_TOWARDS = 1
|
|
|
|
INT MIN_TASK_TIME = 1000, MAX_TASK_TIME = 2000
|
|
|
|
//NM Grab
|
|
BOOL bNM_GRAB_A_LINE = FALSE
|
|
BOOL bNM_GRAB_BRACE_ONLY = FALSE
|
|
BOOL bNM_GRAB_SURFACE = FALSE
|
|
BOOL bNM_GRAB_USE_LEFT = TRUE
|
|
BOOL bNM_GRAB_USE_RIGHT = true
|
|
BOOL bNM_GRAB_DONT_LET_GO = FALSE
|
|
|
|
int iNM_GRAB_INSTANCE_INDEX = -1
|
|
//int iNM_GRAB_INSTANCE_PART_INDEX = 0
|
|
|
|
//VECTOR vPos1
|
|
//VECTOR vPos2
|
|
//VECTOR vPos3
|
|
//VECTOR vPos4
|
|
|
|
VECTOR vImpulse = <<0.0, 0.0, -20>>
|
|
VECTOR vOffset, vOffsetVec1 = <<-1.75, -0.1, 0.95>>, vOffsetVec2 = <<1.5, -0.1, 0.95>>, vOffsetVec3 = <<1.5, -0.1, 0.85>>, vOffsetVec4 = <<-1.75, -0.1, 0.85>>
|
|
int gGrabType = 0
|
|
|
|
FLOAT fNM_GRAB_STRENGTH = -1.0
|
|
FLOAT fNM_GRAB_BODY_STIFFNESS = 11.0
|
|
FLOAT fNM_GRAB_REACH_ANGLE = 2.8
|
|
FLOAT fNM_GRAB_ONE_SIDE_REACH_ANGLE = 1.4
|
|
FLOAT fNM_GRAB_DISTANCE = 0.45
|
|
FLOAT fNM_GRAB_PULLUP_TIMER = 1.0
|
|
FLOAT fNM_GRAB_HOLD_MAX_TIMER = 1.00
|
|
FLOAT fNM_GRAB_PULLUP_STRENGTH_LEFT = 0.0
|
|
FLOAT fNM_GRAB_PULLUP_STRENGTH_RIGHT = 0.0
|
|
|
|
float gdistance_to_grab = 0.7
|
|
//bool ENABLE_MOVE_OFFSET = false
|
|
bool gresetoffsets = FALSE
|
|
//Vector VehiclePos[4],vPos3,vPos4
|
|
|
|
//VECTOR vCarOffset
|
|
|
|
int nVehicleIdentifier
|
|
ENUM eSelectedVehicleType
|
|
SELECTED_VEHICLE_TYPE_CAR,
|
|
SELECTED_VEHICLE_TYPE_LORRY,
|
|
SELECTED_VEHICLE_TYPE_HELICOPTER,
|
|
SELECTED_VEHICLE_TYPE_AEROPLANE
|
|
ENDENUM
|
|
|
|
// NM bind pose.
|
|
BOOL bDO_BLEND_FROM_NM = FALSE
|
|
BOOL bNM_BINDPOSE_FIRST_TIME = TRUE
|
|
|
|
// NM Shooting while attached:
|
|
int iNM_SHOOTINGWHILEATTACHED_INSTANCE_PART_INDEX = 15
|
|
//bool bNM_RAGDOLL_COLLIDES_WITH_VAN = FALSE
|
|
bool bNM_ANIMPOSE_DEBUGANIMMATCH = FALSE
|
|
|
|
// NM Skiing down slope.
|
|
VECTOR vTopOfSkiSlope = <<-141.32, -592.01, 157.18>>
|
|
VECTOR vBottomOfSkiSlope = << -149.54, -168.81, 7.49 >>
|
|
FLOAT fLateralMin = -150.0 // Min lateral extent of ski route control points.
|
|
FLOAT fLateralMax = -125.0 // Max " " " " " " "
|
|
|
|
// NM truck bed
|
|
BOOL bFlatbedTruck = FALSE
|
|
|
|
// NM cover
|
|
INT nElectrocuteWaitTime = 2000
|
|
INT nElectrocuteTime = 65534
|
|
BOOL bRagdollOnCollision = FALSE
|
|
BOOL bCheckShouldSeekCover = FALSE
|
|
|
|
FLOAT fOldBottomOfSkiRoute = vBottomOfSkiSlope.y
|
|
VECTOR vSkiRoute[7]
|
|
BOOL bResetSkiRouteStraight = FALSE
|
|
BOOL bResetSkiRouteSlalom = TRUE
|
|
|
|
//weapon type
|
|
int gWeapon = 4
|
|
int gLastWeapon = 4
|
|
BOOL bAimWeapon = FALSE
|
|
BOOL bInvulnerableTestPed = FALSE
|
|
BOOL bGetInCarMode = FALSE
|
|
BOOL bWasAimingWeapon = FALSE
|
|
BOOL bBlockTempAIEvents = FALSE
|
|
BOOL bLastBlockTempAIEvents = FALSE
|
|
|
|
|
|
/// PURPOSE: Creates a valid vehicle of the specified type
|
|
///
|
|
/// RETURNS:
|
|
///
|
|
FUNC MODEL_NAMES NMVehicleModelSelection()
|
|
MODEL_NAMES current_model
|
|
|
|
SWITCH INT_TO_ENUM(eSelectedVehicleType, nVehicleIdentifier)
|
|
CASE SELECTED_VEHICLE_TYPE_CAR
|
|
current_model = INFERNUS
|
|
BREAK
|
|
|
|
CASE SELECTED_VEHICLE_TYPE_LORRY
|
|
current_model = BENSON
|
|
BREAK
|
|
|
|
CASE SELECTED_VEHICLE_TYPE_HELICOPTER
|
|
current_model= BUZZARD
|
|
BREAK
|
|
|
|
CASE SELECTED_VEHICLE_TYPE_AEROPLANE
|
|
current_model= CUBAN800
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN current_model
|
|
|
|
ENDFUNC
|
|
|
|
PROC CYCLE_WEAPON()
|
|
SWITCH HELD_WEAPON
|
|
CASE WEAPONTYPE_PISTOL
|
|
HELD_WEAPON = WEAPONTYPE_SMG
|
|
BREAK
|
|
CASE WEAPONTYPE_SMG
|
|
HELD_WEAPON = WEAPONTYPE_ASSAULTRIFLE
|
|
BREAK
|
|
CASE WEAPONTYPE_ASSAULTRIFLE
|
|
HELD_WEAPON = WEAPONTYPE_PUMPSHOTGUN
|
|
BREAK
|
|
CASE WEAPONTYPE_PUMPSHOTGUN
|
|
HELD_WEAPON = WEAPONTYPE_SNIPERRIFLE
|
|
BREAK
|
|
CASE WEAPONTYPE_SNIPERRIFLE
|
|
HELD_WEAPON = WEAPONTYPE_GRENADELAUNCHER
|
|
BREAK
|
|
CASE WEAPONTYPE_GRENADELAUNCHER
|
|
HELD_WEAPON = WEAPONTYPE_UNARMED
|
|
BREAK
|
|
DEFAULT
|
|
HELD_WEAPON = WEAPONTYPE_PISTOL
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Purpose: Reset the ski route control points.
|
|
PROC RESET_NM_SKI_TEST_ROUTE()
|
|
FLOAT fTopOfRoute = vTopOfSkiSlope.y
|
|
FLOAT fBottomOfRoute = vBottomOfSkiSlope.y
|
|
FLOAT fCentreLine = fLateralMin + ((fLateralMax - fLateralMin) / 2.0)
|
|
// Compute increments between control points in y-direction.
|
|
FLOAT fDeltaY = ABSF(fBottomOfRoute-fTopOfRoute) / 7.0
|
|
FLOAT fGroundZ, fYCoord
|
|
|
|
IF bResetSkiRouteStraight = TRUE
|
|
INT i
|
|
FOR i = 0 TO 6
|
|
fGroundZ = 160.0
|
|
fYCoord = fTopOfRoute + i*fDeltaY
|
|
GET_GROUND_Z_FOR_3D_COORD(<<fCentreLine, fYCoord, fGroundZ>>, fGroundZ)
|
|
vSkiRoute[i] = <<fCentreLine, fYCoord, fGroundZ>>
|
|
ENDFOR
|
|
bResetSkiRouteStraight = FALSE
|
|
ENDIF
|
|
IF bResetSkiRouteSlalom = TRUE
|
|
vSkiRoute[0] = vTopOfSkiSlope
|
|
INT i
|
|
FOR i = 1 TO 5 STEP 2
|
|
fGroundZ = 160.0
|
|
fYCoord = fTopOfRoute + i*fDeltaY
|
|
GET_GROUND_Z_FOR_3D_COORD(<<fLateralMin, fYCoord, fGroundZ>>, fGroundZ)
|
|
vSkiRoute[i] = <<fLateralMin, fYCoord, fGroundZ>>
|
|
fGroundZ = 160.0
|
|
fYCoord = fTopOfRoute + (i+1)*fDeltaY
|
|
GET_GROUND_Z_FOR_3D_COORD(<<fLateralMax, fYCoord, fGroundZ>>, fGroundZ)
|
|
vSkiRoute[i+1] = <<fLateralMax, fYCoord, fGroundZ>>
|
|
ENDFOR
|
|
vSkiRoute[6] = vBottomOfSkiSlope
|
|
bResetSkiRouteSlalom = FALSE
|
|
ENDIF
|
|
|
|
// If the length has been altered by a widget, we want to reflect that interactively too.
|
|
IF(fOldBottomOfSkiRoute != fBottomOfRoute)
|
|
INT i
|
|
FOR i = 0 TO 6
|
|
fYCoord = fTopOfRoute + i*fDeltaY
|
|
vSkiRoute[i].y = fYCoord
|
|
fGroundZ = 160.0
|
|
GET_GROUND_Z_FOR_3D_COORD(<<vSkiRoute[i].x, fYCoord, fGroundZ>>, fGroundZ)
|
|
vSkiRoute[i].z = fGroundZ
|
|
ENDFOR
|
|
fOldBottomOfSkiRoute = fBottomOfRoute
|
|
ENDIF
|
|
|
|
|
|
// If we are using the Route structure function/
|
|
INT i
|
|
FOR i = 0 TO 6
|
|
Route[i].RouteNode = vSkiRoute[i]
|
|
Route[i].RouteNodeState = TRUE
|
|
ENDFOR
|
|
ENDPROC
|
|
PROC DRAW_DEBUG_SKI_ROUTE()
|
|
INT i
|
|
FOR i = 0 to 6
|
|
DRAW_DEBUG_SPHERE(<<vSkiRoute[i].x, vSkiRoute[i].y, vSkiRoute[i].z+3.0>>, 0.1, 0, 0, 255, 255)
|
|
ENDFOR
|
|
|
|
FOR i = 0 to 5
|
|
DRAW_DEBUG_LINE(<<vSkiRoute[i].x, vSkiRoute[i].y, vSkiRoute[i].z+3.0>>, <<vSkiRoute[i+1].x, vSkiRoute[i+1].y, vSkiRoute[i+1].z+3.0>>, 0, 0, 255, 255)
|
|
ENDFOR
|
|
ENDPROC
|
|
PROC CREATE_TEST_WIDGET ()
|
|
START_WIDGET_GROUP("Tests")
|
|
SETUP_WIDGET ()
|
|
START_WIDGET_GROUP("NM")
|
|
START_WIDGET_GROUP ("NM Ped Selection")
|
|
START_NEW_WIDGET_COMBO()
|
|
ADD_TO_WIDGET_COMBO ("Male")
|
|
ADD_TO_WIDGET_COMBO ("Female")
|
|
STOP_WIDGET_COMBO("Ped", PedIdentifier)
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP ("NM Vehicle selection")
|
|
START_NEW_WIDGET_COMBO()
|
|
// Must match order from ENUM eSelectedVehicleType defined above!
|
|
ADD_TO_WIDGET_COMBO("Car")
|
|
ADD_TO_WIDGET_COMBO("Lorry")
|
|
ADD_TO_WIDGET_COMBO("Helicopter")
|
|
ADD_TO_WIDGET_COMBO("Aeroplane")
|
|
STOP_WIDGET_COMBO("Vehicle", nVehicleIdentifier)
|
|
STOP_WIDGET_GROUP() // "NM Vehicle selection"
|
|
|
|
START_WIDGET_GROUP ("NM Shot")
|
|
ADD_WIDGET_BOOL ("Position on cliff", gPositionOnCliff)
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("Man")
|
|
ADD_TO_WIDGET_COMBO ("Woman")
|
|
ADD_TO_WIDGET_COMBO ("Large Man")
|
|
ADD_TO_WIDGET_COMBO ("Cop")
|
|
ADD_TO_WIDGET_COMBO ("Swat")
|
|
ADD_TO_WIDGET_COMBO ("Animal")
|
|
STOP_WIDGET_COMBO("Ped Type", gShot2PedType)
|
|
ADD_WIDGET_INT_SLIDER("Frames To Cleanup", gFramesToCleanup, 0, 500, 60)
|
|
ADD_WIDGET_FLOAT_SLIDER("Distance", gShot2Distance, -20.0, 100.0, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER("Rotation Offset", gShot2OrientationOffset, 0.0, 360.0, 0.01)
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("Pistol")
|
|
ADD_TO_WIDGET_COMBO ("AK47")
|
|
ADD_TO_WIDGET_COMBO ("Shotgun")
|
|
ADD_TO_WIDGET_COMBO ("RubberGun")
|
|
ADD_TO_WIDGET_COMBO ("Unarmed")
|
|
STOP_WIDGET_COMBO("Weapon Type", gWeapon)
|
|
ADD_WIDGET_BOOL ("Aim Weapon", bAimWeapon)
|
|
ADD_WIDGET_BOOL ("Don't deal damage", bInvulnerableTestPed)
|
|
ADD_WIDGET_BOOL ("Get in car mode (will stop aiming after getting shot if Block Temp AI Events is true)", bGetInCarMode)
|
|
ADD_WIDGET_BOOL ("Block Temp AI Events", bBlockTempAIEvents)
|
|
ADD_WIDGET_FLOAT_SLIDER("Movement Speed", SHOT_2_DYNAMIC_MOVE_TYPE, 1.0, 3.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Movement Distance", gShot2MovementDistance, 1.0, 100.0, 0.5)
|
|
ADD_WIDGET_BOOL ("Move Forward", gShot2bForward)
|
|
ADD_WIDGET_BOOL ("Move Left", gShot2bLeft)
|
|
ADD_WIDGET_BOOL ("Move Right", gShot2bRight)
|
|
ADD_WIDGET_BOOL ("Move Backward", gShot2bBackward)
|
|
ADD_WIDGET_BOOL ("Crouch", gShot2Crouch)
|
|
STOP_WIDGET_GROUP() // "NM Shot"
|
|
|
|
START_WIDGET_GROUP ("NM Shot Unit Test")
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("L foot")
|
|
ADD_TO_WIDGET_COMBO ("R foot")
|
|
ADD_TO_WIDGET_COMBO ("Left knee")
|
|
ADD_TO_WIDGET_COMBO ("Right knee")
|
|
ADD_TO_WIDGET_COMBO ("L Hand")
|
|
ADD_TO_WIDGET_COMBO ("R Hand")
|
|
ADD_TO_WIDGET_COMBO ("Pelvis")
|
|
ADD_TO_WIDGET_COMBO ("chest")
|
|
ADD_TO_WIDGET_COMBO ("Left shoulder")
|
|
ADD_TO_WIDGET_COMBO ("right shoulder")
|
|
ADD_TO_WIDGET_COMBO ("head")
|
|
STOP_WIDGET_COMBO("ped component", pedComponent)
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("Pistol")
|
|
ADD_TO_WIDGET_COMBO ("AK47")
|
|
ADD_TO_WIDGET_COMBO ("Shotgun")
|
|
ADD_TO_WIDGET_COMBO ("RubberGun")
|
|
STOP_WIDGET_COMBO("weapon type", gWeapon)
|
|
STOP_WIDGET_GROUP() // "NM Shot"
|
|
|
|
START_WIDGET_GROUP ("NM Run Shot")
|
|
ADD_WIDGET_FLOAT_SLIDER("movement speed", RUN_SHOT_DYNAMIC_MOVE_TYPE, 1.0, 3.0, 0.01)
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("Pistol")
|
|
ADD_TO_WIDGET_COMBO ("AK47")
|
|
ADD_TO_WIDGET_COMBO ("Shotgun")
|
|
ADD_TO_WIDGET_COMBO ("RubberGun")
|
|
STOP_WIDGET_COMBO("weapon type", gWeapon)
|
|
STOP_WIDGET_GROUP() // "NM Run Shot"
|
|
|
|
START_WIDGET_GROUP ("NM Bump player")
|
|
ADD_WIDGET_FLOAT_SLIDER("movement speed", BUMP_PLAYER_DYNAMIC_MOVE_TYPE, 1.0, 3.0, 0.01)
|
|
STOP_WIDGET_GROUP() // "NM Bump player"
|
|
|
|
START_WIDGET_GROUP ("NM player bumped by vehicle")
|
|
ADD_WIDGET_BOOL ("Stop vehicle when the player ragdolls", gStopVehicleIfPlayerRagdolls)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Vehicle speed", gVehicleSpeed, 0, 20, 1.0 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("Vehicle movement distance", gVehicleMoveDistance, 0, 50, 1.0 )
|
|
ADD_WIDGET_BOOL ("Force enemy ped fall off", gVehBumpPlayerForceFallOff)
|
|
STOP_WIDGET_GROUP() // "NM player bumped by vehicle"
|
|
|
|
START_WIDGET_GROUP ("NM Fall")
|
|
ADD_WIDGET_FLOAT_SLIDER ("ped height",CurrentPedPos.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("initial velocity x", gInitialFallVelocity.x, -50, 50, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER ("initial velocity y", gInitialFallVelocity.y, -50, 50, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER ("initial velocity z", gInitialFallVelocity.z, -50, 50, 0.1)
|
|
STOP_WIDGET_GROUP() // "NM Fall"
|
|
|
|
START_WIDGET_GROUP ("NM grab vehicle door")
|
|
ADD_WIDGET_BOOL ("Lock vehicle door", gGrabVehicleDoorLockDoor)
|
|
STOP_WIDGET_GROUP() // "NM grab vehicle door"
|
|
|
|
START_WIDGET_GROUP ("NM Vehicle Balance")
|
|
ADD_WIDGET_FLOAT_SLIDER ("vehicle speed", gVehicleSpeed, 0, 2000, 1.0 )
|
|
STOP_WIDGET_GROUP() // "NM Vehicle Balance"
|
|
|
|
START_WIDGET_GROUP("NM Jump from vehicle")
|
|
ADD_WIDGET_FLOAT_SLIDER ("vehicle speed",gVehicleSpeed, 0, 100, 1.0 )
|
|
STOP_WIDGET_GROUP() // "NM Jump from vehicle"
|
|
|
|
START_WIDGET_GROUP("NM shooting while attached")
|
|
ADD_WIDGET_FLOAT_SLIDER ("vehicle attach bone",gVehicleAttachBone, 0, 100, 1.0 )
|
|
START_WIDGET_GROUP("Attach offset position")
|
|
ADD_WIDGET_FLOAT_SLIDER ("x",gVehicleAttachPositionOffset.x, -10, 10, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER ("y",gVehicleAttachPositionOffset.y, -10, 10, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER ("z",gVehicleAttachPositionOffset.z, -10, 10, 0.001)
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP("Attach offset rotation")
|
|
ADD_WIDGET_FLOAT_SLIDER ("x",gVehicleAttachRotationOffset.x, -10, 10, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER ("y",gVehicleAttachRotationOffset.y, -10, 10, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER ("z",gVehicleAttachRotationOffset.z, -10, 10, 0.001)
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP() // "NM Jump from vehicle"
|
|
|
|
START_WIDGET_GROUP("NM Explosion")
|
|
START_NEW_WIDGET_COMBO()
|
|
ADD_TO_WIDGET_COMBO ("ROCKET")
|
|
ADD_TO_WIDGET_COMBO ("GRENADE")
|
|
ADD_TO_WIDGET_COMBO ("MOLOTOV")
|
|
STOP_WIDGET_COMBO("Explosion", ExplosionTag)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Explosion Scale",ExplosionScale, 0, 1.0, 0.01 )
|
|
ADD_WIDGET_BOOL ("No Explosion effects",bNoExplosionEffects)
|
|
ADD_WIDGET_BOOL ("Test vehicles instead of humans",bTestVehicleExplosion)
|
|
ADD_WIDGET_FLOAT_READ_ONLY ("Explosion Distance", fExplosionDistance )
|
|
ADD_WIDGET_INT_SLIDER ("Ped Health", giPedHealth, 100, 1000, 1)
|
|
STOP_WIDGET_GROUP() // "NM Explosion"
|
|
|
|
START_WIDGET_GROUP("NM_Body_Relax")
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_Relaxation", NM_Relaxation, 0, 100.0, 1.0 )
|
|
ADD_WIDGET_BOOL ("Hold pose",bHoldPose)
|
|
STOP_WIDGET_GROUP() // "NM_Body_Relax"
|
|
|
|
START_WIDGET_GROUP("NM_Flinch")
|
|
ADD_WIDGET_BOOL ("NM_FLINCH_RIGHT_HANDED", bNM_FLINCH_RIGHT_HANDED)
|
|
ADD_WIDGET_BOOL ("NM_FLINCH_LEFT_HANDED", bNM_FLINCH_LEFT_HANDED)
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_HAND_DIST_LEFTRIGHT", fNM_FLINCH_HAND_DIST_LEFTRIGHT, 0, 1.0, 0.01 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_HAND_DIST_FRONTBACK", fNM_FLINCH_HAND_DIST_FRONTBACK, 0, 1.0, 0.01 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_HAND_DIST_VERTICAL", fNM_FLINCH_HAND_DIST_VERTICAL, 0, 1.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_BODY_STIFFNESS", fNM_FLINCH_BODY_STIFFNESS, 6.0, 16.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_BODY_DAMPING", fNM_FLINCH_BODY_DAMPING, 0, 1.5, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_BACK_BEND", fNM_FLINCH_BACK_BEND, -1.0, 1.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("NM_FLINCH_NOISE_SCALE", fNM_FLINCH_NOISE_SCALE, 0.0, 1.0, 0.1 )
|
|
ADD_WIDGET_BOOL ("NM_FLINCH_USE_LEFT_ARM", bNM_FLINCH_USE_LEFT_ARM)
|
|
ADD_WIDGET_BOOL ("NM_FLINCH_USE_RIGHT_ARM", bNM_FLINCH_USE_RIGHT_ARM)
|
|
ADD_WIDGET_BOOL ("NM_FLINCH_NEW_HIT", bNM_FLINCH_NEW_HIT)
|
|
ADD_WIDGET_INT_SLIDER ("NM_FLINCH_TURN_TOWARDS", iNM_FLINCH_TURN_TOWARDS, 0, 10, 1 )
|
|
ADD_WIDGET_INT_SLIDER ("Min ragdoll time", MIN_TASK_TIME, 1, 10000, 100 )
|
|
ADD_WIDGET_INT_SLIDER ("Max ragdoll time", MAX_TASK_TIME, 1, 10000, 100 )
|
|
STOP_WIDGET_GROUP() // "NM_Flinch"
|
|
|
|
START_WIDGET_GROUP("NM Grab")
|
|
START_NEW_WIDGET_COMBO ( )
|
|
ADD_TO_WIDGET_COMBO ("Line grab")
|
|
ADD_TO_WIDGET_COMBO ("Surface grab")
|
|
ADD_TO_WIDGET_COMBO ("setup")
|
|
STOP_WIDGET_COMBO("Grab type", gGrabType)
|
|
ADD_WIDGET_BOOL("Reset to default", gresetoffsets)
|
|
START_WIDGET_GROUP("Slope catch forces applied to ped")
|
|
ADD_WIDGET_FLOAT_SLIDER ("Force.x",vImpulse.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Force.y",vImpulse.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Force.z",vImpulse.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Force vOffset.x",vOffset.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("Force vOffset.y",vOffset.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER (" Force vOffset.z",vOffset.z, -2000, 2000, 0.25)
|
|
STOP_WIDGET_GROUP()
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset1.x (Red) ",vOffsetVec1.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset1.y (Red)",vOffsetVec1.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset1.z (Red)",vOffsetVec1.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset2.x (Green)",vOffsetVec2.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset2.y (Green)",vOffsetVec2.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset2.z (Green)",vOffsetVec2.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset3.x (blue) surface",vOffsetVec3.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset3.y (blue) surface",vOffsetVec3.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset3.z (blue) surface",vOffsetVec3.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset4.x (white) surface",vOffsetVec4.x, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset4.y (white) surface",vOffsetVec4.y, -2000, 2000, 0.25)
|
|
ADD_WIDGET_FLOAT_SLIDER ("vOffset4.z (white) surface",vOffsetVec4.z, -2000, 2000, 0.25)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_A_LINE", bNM_GRAB_A_LINE)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_BRACE_ONLY", bNM_GRAB_BRACE_ONLY)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_SURFACE", bNM_GRAB_SURFACE)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_USE_LEFT", bNM_GRAB_USE_LEFT)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_USE_RIGHT", bNM_GRAB_USE_RIGHT)
|
|
ADD_WIDGET_BOOL ("bNM_GRAB_DONT_LET_GO", bNM_GRAB_DONT_LET_GO)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_STRENGTH", fNM_GRAB_STRENGTH, -1.0, 100.0, 0.01 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_BODY_STIFFNESS", fNM_GRAB_BODY_STIFFNESS, 6, 16.0, 0.01 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_REACH_ANGLE", fNM_GRAB_REACH_ANGLE, 0, 10.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_ONE_SIDE_REACH_ANGLE", fNM_GRAB_ONE_SIDE_REACH_ANGLE, 0.0, 10.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_DISTANCE", fNM_GRAB_DISTANCE, 0, 1, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_PULLUP_TIMER", fNM_GRAB_PULLUP_TIMER, 0, 1.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_HOLD_MAX_TIMER", fNM_GRAB_HOLD_MAX_TIMER, 0.0, 1.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_PULLUP_STRENGTH_LEFT", fNM_GRAB_PULLUP_STRENGTH_LEFT, 0.0, 10.0, 0.1 )
|
|
ADD_WIDGET_FLOAT_SLIDER ("fNM_GRAB_PULLUP_STRENGTH_RIGHT", fNM_GRAB_PULLUP_STRENGTH_RIGHT, 0.0, 10.0, 0.1 )
|
|
|
|
ADD_WIDGET_INT_SLIDER ("iNM_GRAB_INSTANCE_INDEX", iNM_GRAB_INSTANCE_INDEX, -1, 10, 1 )
|
|
ADD_WIDGET_INT_SLIDER ("iNM_GRAB_INSTANCE_INDEX", iNM_GRAB_INSTANCE_INDEX, -1, 10, 1 )
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("distance b4 grab", gdistance_to_grab, -720.0, 720.0, 0.1 )
|
|
//ADD_WIDGET_BOOL ("ENABLE_MOVE_OFFSET", ENABLE_MOVE_OFFSET)
|
|
|
|
//ADD_WIDGET_FLOAT_SLIDER ("gtestZoom", gtestZoom, 0.0, 100.0, 0.1 )
|
|
//ADD_WIDGET_FLOAT_SLIDER ("gtestPitch", gtestPitch, -360, 360.0, 0.1 )
|
|
// ADD_WIDGET_FLOAT_SLIDER ("gtestPan", gtestPan, -720.0, 720.0, 0.1 )
|
|
// ADD_WIDGET_FLOAT_SLIDER ("gVehicleZoom", gVehicleZoom, 0.0, 100.0, 0.1 )
|
|
// ADD_WIDGET_FLOAT_SLIDER ("gVehiclePitch", gVehiclePitch, -360, 360.0, 0.1 )
|
|
// ADD_WIDGET_FLOAT_SLIDER ("gVehiclePan", gVehiclePan, -720.0, 720.0, 0.1 )
|
|
|
|
ADD_WIDGET_INT_SLIDER ("Min ragdoll time", MIN_TASK_TIME, 1, 10000, 100 )
|
|
ADD_WIDGET_INT_SLIDER ("Max ragdoll time", MAX_TASK_TIME, 1, 10000, 100 )
|
|
|
|
STOP_WIDGET_GROUP() // "NM_Grab"
|
|
|
|
START_WIDGET_GROUP("NM_Balance")
|
|
ADD_WIDGET_INT_SLIDER ("Min ragdoll time", MIN_TASK_TIME, 1, 10000, 100 )
|
|
ADD_WIDGET_INT_SLIDER ("Max ragdoll time", MAX_TASK_TIME, 1, 10000, 100 )
|
|
STOP_WIDGET_GROUP() // "NM_Balance"
|
|
|
|
START_WIDGET_GROUP("NM Bind pose transition")
|
|
ADD_WIDGET_BOOL("Blend back to animation", bDO_BLEND_FROM_NM)
|
|
STOP_WIDGET_GROUP() // "NM Bind pose transition"
|
|
|
|
START_WIDGET_GROUP("NM Shooting while attached")
|
|
ADD_WIDGET_INT_SLIDER("iNM_SHOOTINGWHILEATTACHED_INSTANCE_PART_INDEX", iNM_SHOOTINGWHILEATTACHED_INSTANCE_PART_INDEX, 0, 50, 1 )
|
|
//ADD_WIDGET_BOOL("Ragdoll collides with van?", bNM_RAGDOLL_COLLIDES_WITH_VAN)
|
|
ADD_WIDGET_BOOL("animPose: show anim accuracy", bNM_ANIMPOSE_DEBUGANIMMATCH)
|
|
STOP_WIDGET_GROUP() // "NM Shooting while attached"
|
|
START_WIDGET_GROUP("NM Walking down hill")
|
|
ADD_WIDGET_FLOAT_SLIDER("movement speed", WALK_DOWN_HILL_DYNAMIC_MOVE_TYPE, 1.0, 3.0, 0.01)
|
|
STOP_WIDGET_GROUP() // "NM Walking down hill"
|
|
|
|
START_WIDGET_GROUP("NM Teeter")
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped's distance to edge", fPedEdgeDist, 0.0, 3.0, 0.1)
|
|
STOP_WIDGET_GROUP() // "NM Teeter"
|
|
|
|
START_WIDGET_GROUP("NM Slide")
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped heading", gShot2OrientationOffset, 0.0, 360.0, 0.01)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("NM Dangle")
|
|
ADD_WIDGET_FLOAT_SLIDER("Hook Velocity x", vHookVelocity.x, -1.0, 1.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Hook Velocity y", vHookVelocity.y, -1.0, 1.0, 0.1)
|
|
ADD_WIDGET_FLOAT_SLIDER("Hook Velocity z", vHookVelocity.z, -1.0, 1.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
|
|
START_WIDGET_GROUP("Shot Against Wall")
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped's distance from wall", fPedWallDist, 0.0, 2.0, 0.01)
|
|
STOP_WIDGET_GROUP() // "Shot Against Wall"
|
|
|
|
START_WIDGET_GROUP("Slung Over Shoulder")
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedPos.x", vCarriedPos.x, -1.0, 1.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedPos.y", vCarriedPos.y, -1.0, 1.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedPos.z", vCarriedPos.z, -1.0, 1.0, 0.01)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedRot.x", vCarriedRot.x, -360.0, 360.0, 1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedRot.y", vCarriedRot.y, -360.0, 360.0, 1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("vCarriedRot.z", vCarriedRot.z, -360.0, 360.0, 1.0)
|
|
STOP_WIDGET_GROUP() // "Slung Over Shoulder"
|
|
|
|
START_WIDGET_GROUP("NM Truck Bed")
|
|
ADD_WIDGET_FLOAT_SLIDER("Vehicle speed", gVehicleSpeed, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset X", vOffset.x, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset Y", vOffset.y, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset Z", vOffset.z, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_BOOL("Use flatbed truck", bFlatbedTruck)
|
|
STOP_WIDGET_GROUP() // "NM Truck Bed"
|
|
|
|
START_WIDGET_GROUP("NM Cover")
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset X", vOffset.x, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset Y", vOffset.y, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped offset Z", vOffset.z, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped ragdoll offset X", vOffsetVec1.x, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped ragdoll offset Y", vOffsetVec1.y, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped ragdoll offset Z", vOffsetVec1.z, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped target offset X", vOffsetVec2.x, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped target offset Y", vOffsetVec2.y, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ped target offset Z", vOffsetVec2.z, -50.0, 50.0, 0.01)
|
|
ADD_WIDGET_INT_SLIDER("Electrocute time (milliseconds)", nElectrocuteTime, 0, 65534, 10)
|
|
ADD_WIDGET_INT_SLIDER("Wait time (milliseconds) between electrocute and cover", nElectrocuteWaitTime, 0, 100000, 10)
|
|
ADD_WIDGET_BOOL("Ragdoll on collision", bRagdollOnCollision)
|
|
STOP_WIDGET_GROUP() // "NM Cover"
|
|
|
|
//create widget in here
|
|
|
|
|
|
STOP_WIDGET_GROUP() // "NM"
|
|
STOP_WIDGET_GROUP() // "Tests"
|
|
ENDPROC
|
|
|
|
FUNC Model_Names PED_MODEL_SELECTOR()
|
|
MODEL_NAMES gPedModel
|
|
|
|
SWITCH(pedidentifier)
|
|
CASE 0
|
|
gPedModel = S_M_M_DOCKWORK_01
|
|
BREAK
|
|
|
|
CASE 1
|
|
gPedModel = S_F_M_SWEATSHOP_01
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
return gPedModel
|
|
ENDFUNC
|
|
|
|
FUNC Model_Names PED_MODEL_SELECTOR_SHOT_2(INT pedType)
|
|
MODEL_NAMES gPedModel
|
|
|
|
SWITCH(pedType)
|
|
CASE 0
|
|
gPedModel = S_M_M_DOCKWORK_01
|
|
BREAK
|
|
|
|
CASE 1
|
|
gPedModel = S_F_M_SWEATSHOP_01
|
|
BREAK
|
|
|
|
CASE 2
|
|
gPedModel = S_M_M_CHEMSEC_01
|
|
BREAK
|
|
|
|
CASE 3
|
|
gPedModel = S_M_Y_COP_01
|
|
BREAK
|
|
|
|
CASE 4
|
|
gPedModel = S_M_Y_SWAT_01
|
|
BREAK
|
|
|
|
CASE 5
|
|
gPedModel = A_C_ROTTWEILER
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
return gPedModel
|
|
ENDFUNC
|
|
|
|
|
|
|
|
FUNC WEAPON_TYPE SELECT_WEAPON_TYPE ()
|
|
weapon_type current_weapon = WEAPONTYPE_PISTOL
|
|
SWITCH(gWeapon)
|
|
CASE 0
|
|
current_weapon = WEAPONTYPE_PISTOL
|
|
BREAK
|
|
|
|
CASE 1
|
|
current_weapon = WEAPONTYPE_ASSAULTRIFLE
|
|
BREAK
|
|
|
|
CASE 2
|
|
current_weapon = WEAPONTYPE_PUMPSHOTGUN
|
|
BREAK
|
|
|
|
CASE 3
|
|
current_weapon = WEAPONTYPE_STUNGUN
|
|
BREAK
|
|
|
|
CASE 4
|
|
current_weapon = WEAPONTYPE_UNARMED
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
return current_weapon
|
|
|
|
ENDFUNC
|
|
|
|
PROC NM_TempControlSkiCam(peds_struct &peds_l[], CAMERA_INDEX cam)
|
|
|
|
vector camera_pos
|
|
|
|
if DOES_CAM_EXIST(cam)
|
|
IF IS_CAM_ACTIVE (cam)
|
|
int stick_left_x, stick_right_x, stick_left_y, stick_right_y
|
|
|
|
GET_POSITION_OF_ANALOGUE_STICKS (PAD1, stick_left_x, stick_left_y, stick_right_x, stick_right_y )
|
|
IF NOT IS_PED_INJURED(peds_l[camped].ped )
|
|
IF NOT IS_PED_RAGDOLL (peds_l[camped].ped )
|
|
if not IS_PED_GETTING_UP(peds_l[camped].ped )
|
|
POINT_CAM_AT_ENTITY(cam, peds_l[camped].ped, <<0.0, 0.0, 0.0>> )
|
|
|
|
IF (stick_right_x >= -128) AND (stick_right_x < 0)
|
|
gCamPan -= 2
|
|
ENDIF
|
|
|
|
IF (stick_right_x <= 128) AND (stick_right_x > 0)
|
|
gCamPan += 2
|
|
ENDIF
|
|
|
|
IF (stick_right_y >= -128) AND (stick_right_y < 0)
|
|
IF gCamPitch < -3
|
|
gCamPitch += 2
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF (stick_right_y <= 128) AND (stick_right_y > 0)
|
|
IF gCamPitch > -178
|
|
gCamPitch -= 2
|
|
ENDIF
|
|
ENDIf
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, LEFTSHOULDER2)
|
|
if gCamzoom > gCamZoomMIn
|
|
gCamzoom -= 0.15
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, RIGHTSHOULDER2)
|
|
IF gCamzoom < gCamZoomMax
|
|
gCamzoom += 0.15
|
|
ENDIF
|
|
ENDIf
|
|
|
|
IF NOT IS_PED_INJURED(peds_l[camped].ped )
|
|
IF NOT IS_PED_RAGDOLL (peds_l[camped].ped )
|
|
POINT_CAM_AT_ENTITY(cam, peds_l[camped].ped, <<0.0, 0.0, 0.0>> )
|
|
camera_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS (peds_l[camped].ped, SphericalCamCoords (gCamzoom, gCamPitch, gCamPan))
|
|
SET_CAM_COORD (cam, camera_pos)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
|
|
ENUM CAM_FLAGS
|
|
SELECT_PED_TO_LOOK_AT,
|
|
CREATE_TRACKING_CAM,
|
|
POINT_TRACKING_CAM_AT_PED,
|
|
ACTIVATE_FIXED_CAM,
|
|
DEACTIVATE_PED_CAM,
|
|
WAIT_FOR_CAM_INPUT
|
|
ENDENUM
|
|
|
|
CAM_FLAGS CAM_STATUS = WAIT_FOR_CAM_INPUT
|
|
|
|
PROC CAM_MANAGER (CAMERA_INDEX &pedcam, CAMERA_INDEX &fixedcam,int number_of_peds, peds_struct &peds_l[] )
|
|
|
|
bool SearchingForPeds = TRUE, found_ped = FALSE
|
|
int FallOutOfLoop = 0
|
|
|
|
IF bAutoSwitchToTrackCam
|
|
CAM_STATUS = SELECT_PED_TO_LOOK_AT
|
|
ENDIF
|
|
|
|
IF (IS_BUTTON_JUST_PRESSED (Pad1, DPADUP) )
|
|
//swap between the fised and ped cam
|
|
IF DOES_CAM_EXIST(fixedcam)
|
|
IF IS_CAM_RENDERING (fixedcam)
|
|
CAM_STATUS = SELECT_PED_TO_LOOK_AT
|
|
ELSE
|
|
CAM_STATUS = ACTIVATE_FIXED_CAM
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_CAM_EXIST(pedCam )
|
|
IF IS_CAM_RENDERING (pedCam)
|
|
CAM_STATUS = DEACTIVATE_PED_CAM
|
|
ELSE
|
|
CAM_STATUS = SELECT_PED_TO_LOOK_AT
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
SWITCH CAM_STATUS
|
|
CASE SELECT_PED_TO_LOOK_AT
|
|
bAutoSwitchToTrackCam = FALSE
|
|
|
|
WHILE SearchingForPeds
|
|
FallOutOfLoop+= 1
|
|
|
|
//this terminates the while loop if there are no valid peds.
|
|
IF FallOutOfLoop = number_of_peds
|
|
SearchingForPeds = FALSE
|
|
ENDIF
|
|
|
|
IF camped = number_of_peds -1
|
|
camped = 0
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(peds_l[camped].ped )
|
|
found_ped = true
|
|
SearchingForPeds = FALSE
|
|
ELSE
|
|
camped += 1
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
//no valid ped was found bail out here
|
|
IF NOT found_ped
|
|
CAM_STATUS = WAIT_FOR_CAM_INPUT
|
|
ELSE
|
|
CAM_STATUS = CREATE_TRACKING_CAM
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
CASE CREATE_TRACKING_CAM
|
|
IF NOT DOES_CAM_EXIST (pedcam )
|
|
pedcam = CREATE_CAM ("DEFAULT_SCRIPTED_CAMERA")
|
|
IF NOT IS_PED_INJURED(peds_l[camped].ped )
|
|
//IF NOT IS_PED_RAGDOLL (peds_l[camped].ped )
|
|
POINT_CAM_AT_ENTITY(pedcam, peds_l[camped].ped, <<0.0, 0.0, 0.0>> )
|
|
SET_CAM_COORD (pedcam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS (peds_l[camped].ped, SphericalCamCoords (gCamzoom, gCamPitch, gCamPan)))
|
|
//ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_CAM_ACTIVE (pedcam, true)
|
|
|
|
IF camscope = 0
|
|
RENDER_SCRIPT_CAMS (TRUE, FALSE)
|
|
camscope += 1
|
|
ENDIF
|
|
|
|
IF DOES_CAM_EXIST (Fixedcam)
|
|
SET_CAM_ACTIVE (Fixedcam, FALSE)
|
|
ENDIF
|
|
|
|
CAM_STATUS = POINT_TRACKING_CAM_AT_PED
|
|
BREAK
|
|
|
|
CASE POINT_TRACKING_CAM_AT_PED
|
|
IF Bscenario_running
|
|
NM_TempControlSkiCam( peds_l, pedcam)
|
|
ELSE
|
|
CAM_STATUS = WAIT_FOR_CAM_INPUT
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE ACTIVATE_FIXED_CAM
|
|
SET_CAM_ACTIVE(fixedcam, true)
|
|
IF camscope = 0
|
|
RENDER_SCRIPT_CAMS (TRUE, FALSE)
|
|
camscope += 1
|
|
ENDIF
|
|
|
|
IF DOES_CAM_EXIST (pedcam)
|
|
SET_CAM_ACTIVE (pedcam, FALSE)
|
|
ENDIF
|
|
|
|
CAM_STATUS = WAIT_FOR_CAM_INPUT
|
|
BREAK
|
|
|
|
|
|
CASE DEACTIVATE_PED_CAM
|
|
IF camscope = 1
|
|
RENDER_SCRIPT_CAMS (FALSE, FALSE)
|
|
camscope -= 1
|
|
ENDIF
|
|
|
|
SET_CAM_ACTIVE(pedcam, FALSE)
|
|
|
|
CAM_STATUS = WAIT_FOR_CAM_INPUT
|
|
BREAK
|
|
|
|
CASE WAIT_FOR_CAM_INPUT
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
FUNC EXPLOSION_TAG SELECT_EXPLOSION_TYPE()
|
|
EXPLOSION_TAG Current_Explosions
|
|
|
|
SWITCH ExplosionTag
|
|
CASE 0
|
|
Current_Explosions = EXP_TAG_ROCKET
|
|
BREAK
|
|
|
|
CASE 1
|
|
Current_Explosions = EXP_TAG_GRENADE
|
|
BREAK
|
|
|
|
CASE 2
|
|
Current_Explosions = EXP_TAG_MOLOTOV
|
|
BREAK
|
|
|
|
/*
|
|
CASE 3
|
|
Current_Explosions = EXP_TAG_HI_OCTANE
|
|
BREAK
|
|
|
|
CASE 4
|
|
Current_Explosions = EXP_TAG_VEHICLE
|
|
BREAK
|
|
|
|
CASE 5
|
|
Current_Explosions = EXP_TAG_PLANE
|
|
BREAK
|
|
|
|
CASE 6
|
|
Current_Explosions = EXP_TAG_PETROL_PUMP
|
|
BREAK
|
|
*/
|
|
ENDSWITCH
|
|
|
|
RETURN Current_Explosions
|
|
|
|
ENDFUNC
|
|
|
|
// Functions end: WIDGET
|
|
|
|
//Mission flow House keeping
|
|
|
|
//PUPROSE: REmoves all the scenarios and resets all the relationships
|
|
PROC Cleanup_Scenario_Entities ()
|
|
|
|
STOP_FIRE_IN_RANGE( PlayerStartPos, 100)
|
|
|
|
if not IS_PED_INJURED(scplayer)
|
|
IF IS_PED_SITTING_IN_ANY_VEHICLE (scplayer)
|
|
SET_ENTITY_COORDS (scplayer, PlayerStartPos, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
int index = 0
|
|
for index = 0 to MAX_NUMBER_OF_PEDS -1
|
|
REMOVE_BLIP(TestPeds[index].PedBlip)
|
|
|
|
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(TestObject[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_ENTITY_COORDS (scplayer, GET_PLAYER_START_POS () )
|
|
ENDIF
|
|
|
|
//TERMINATE_THIS_THREAD ()
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
//copies the current selection from the xml menu into a new var. gCurrent selction is then set to 1000 so that the it forces the test state into the default state
|
|
|
|
//END: House Keeping
|
|
|
|
CONST_INT LEFT_FOOT 0
|
|
CONST_INT RIGHT_FOOT 1
|
|
|
|
CONST_INT LEFT_KNEE 2
|
|
CONST_INT RIGHT_KNEE 3
|
|
|
|
CONST_INT LEFT_HAND 4
|
|
CONST_INT RIGHT_HAND 5
|
|
|
|
CONST_INT STOMACH 6
|
|
CONST_INT CHEST 7
|
|
|
|
CONST_INT LEFT_SHOULDER 8
|
|
CONST_INT RIGHT_SHOULDER 9
|
|
CONST_INT HEAD 10
|
|
|
|
//Test Specific Functions:
|
|
FUNC VECTOR SELECT_PED_COMPONENT (PED_INDEX ped)
|
|
VECTOR ped_offset = <<0.0, 0.0, 0.0>>
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (pad1, CIRCLE )
|
|
PedComponent++
|
|
IF PedComponent > 10
|
|
PedComponent = 0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (pad1, TRIANGLE )
|
|
PedComponent--
|
|
IF PedComponent < 0
|
|
PedComponent = 10
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (ped)
|
|
SWITCH PedComponent
|
|
CASE LEFT_KNEE
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_L_CALF, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE RIGHT_KNEE
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_R_CALF, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE LEFT_SHOULDER
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_L_UPPERARM, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE RIGHT_SHOULDER
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_R_UPPERARM, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE HEAD
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_HEAD, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE STOMACH
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_PELVIS, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE CHEST
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_SPINE2, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE RIGHT_FOOT
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_R_FOOT, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE LEFT_FOOT
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_L_FOOT, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE RIGHT_HAND
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_R_HAND, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
CASE LEFT_HAND
|
|
ped_offset = GET_PED_BONE_COORDS (ped, BONETAG_L_HAND, <<0.0, 0.0, 0.0>>)
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN ped_offset
|
|
|
|
ENDFUNC
|
|
//SHOT RUN
|
|
FUNC SEQUENCE_INDEX FOLLOW_ROUTE( RouteStruct &TargetRoute[], int NumberofPointsInRoute, int DYNAMIC_MOVE_TYPE)
|
|
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
|
|
|
|
if ((NumberofPointsInRoute <= 7) and (NumberofPointsInRoute > 0) )
|
|
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
for index = 0 to NumberofPointsInRoute-1
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[index].routenode, DYNAMIC_MOVE_TYPE, -1, 1)
|
|
ENDFOR
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
ELSE
|
|
SCRIPT_ASSERT ("max number of routes is 7 or has none making a route with one point to the origin")
|
|
TargetRoute[0].routenode = <<1.0, 1.0, 1.0>>
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, TargetRoute[0].routenode, DYNAMIC_MOVE_TYPE, -1, 1)
|
|
ENDIF
|
|
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_ROUTE_SHOT_2 (float MOVE_BLEND_RATIO, bool bForward, bool bLeft, bool bRight, bool bBackward, float moveDistance )
|
|
|
|
// // strafing and backpedaling require aiming an equipped weapon
|
|
// IF bLeft OR bRight OR bBackward
|
|
// IF gWeapon >= 4
|
|
// gWeapon = 1
|
|
// gLastWeapon = gWeapon
|
|
// GIVE_WEAPON_TO_PED(TestPeds[0].ped, SELECT_WEAPON_TYPE(), 300, TRUE)
|
|
// ENDIF
|
|
// IF NOT bAimWeapon
|
|
// bAimWeapon = TRUE
|
|
// bWasAimingWeapon = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
VECTOR front
|
|
VECTOR side
|
|
VECTOR up
|
|
VECTOR pos
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
GET_ENTITY_MATRIX(TestPeds[0].ped, front, side, up, pos)
|
|
ENDIF
|
|
IF bForward
|
|
pos = pos + front * moveDistance
|
|
ENDIF
|
|
IF bLeft
|
|
pos = pos + side * moveDistance
|
|
ENDIF
|
|
IF bRight
|
|
pos = pos - side * moveDistance
|
|
ENDIF
|
|
IF bBackward
|
|
pos = pos - front * moveDistance
|
|
ENDIF
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
IF bAimWeapon AND gWeapon < 4
|
|
VECTOR aimCoords
|
|
aimCoords = pos + front * 100.0
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, pos, aimCoords, MOVE_BLEND_RATIO, TRUE)
|
|
ELSE
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, pos, MOVE_BLEND_RATIO, -1)
|
|
ENDIF
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
return TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_ROUTE_ACTIVE_OPPONENT (float MOVE_BLEND_RATIO)
|
|
VECTOR MOVE_TARGET_1=<<-4.75, -30.63, 0.0>>
|
|
VECTOR MOVE_TARGET_2=<<-4.75, -22.63, 0.0>>
|
|
VECTOR MOVE_TARGET_3=<<-12.75, -22.63, 0.0>>
|
|
VECTOR MOVE_TARGET_4=<<-12.75, -30.63, 0.0>>
|
|
VECTOR SHOOT_TARGET=<<-4.75, 0.63, 0.0>>
|
|
FLOAT TARGET_DISTANCE = 0.0
|
|
FLOAT SLOW_DISTANCE = 0.0
|
|
INT NUM_LOOPS = 3
|
|
INT index = 0
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
FOR index = 0 to NUM_LOOPS - 1
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, MOVE_TARGET_1, SHOOT_TARGET, MOVE_BLEND_RATIO, TRUE, TARGET_DISTANCE, SLOW_DISTANCE)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, MOVE_TARGET_2, SHOOT_TARGET, MOVE_BLEND_RATIO, TRUE, TARGET_DISTANCE, SLOW_DISTANCE)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, MOVE_TARGET_3, SHOOT_TARGET, MOVE_BLEND_RATIO, TRUE, TARGET_DISTANCE, SLOW_DISTANCE)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, MOVE_TARGET_4, SHOOT_TARGET, MOVE_BLEND_RATIO , TRUE, TARGET_DISTANCE, SLOW_DISTANCE)
|
|
ENDFOR
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
return TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX TEST_ROUTE (float MOVE_BLEND_RATIO)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
//TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, <<-4.75, -30.63, 6.13>>, INT_TO_ENUM (PEDMOVESTATE , (DYNAMIC_MOVE_TYPE + 2)), -1, 1 )
|
|
//TASK_FOLLOW_NAV_MESH_TO_COORD (NULL, <<-2.69, 4.20, 6.13>> , INT_TO_ENUM (PEDMOVESTATE , (DYNAMIC_MOVE_TYPE + 2)), -1)
|
|
TASK_GO_STRAIGHT_TO_COORD (NULL, Route[1].RouteNode, MOVE_BLEND_RATIO, -1)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
return TEST_SEQUENCE
|
|
ENDFUNC
|
|
// Like TEST_ROUTE(), but for skiing. Allows slalom routes to be set up via RAG widgets.
|
|
FUNC SEQUENCE_INDEX SKI_TEST_ROUTE(VECTOR& vRoute[], float MOVE_BLEND_RATIO)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[1], MOVE_BLEND_RATIO, -1)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[2], MOVE_BLEND_RATIO, -1)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[3], MOVE_BLEND_RATIO, -1)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[4], MOVE_BLEND_RATIO, -1)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[5], MOVE_BLEND_RATIO, -1)
|
|
TASK_GO_STRAIGHT_TO_COORD(NULL, vRoute[6], MOVE_BLEND_RATIO, -1)
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
return TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
//Player bump
|
|
FUNC SEQUENCE_INDEX FOLLOW_NAVMESH_TO_COORD_SEQ ( VECTOR L_Target_Pos, float MOVE_BLEND_RATIO)
|
|
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_GO_STRAIGHT_TO_COORD (NULL, L_Target_Pos, MOVE_BLEND_RATIO )
|
|
CLOSE_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
FUNC SEQUENCE_INDEX DRIVE_TO_POINT_SEQUENCE ( VEHICLE_INDEX veh, vector target, float speed)
|
|
SEQUENCE_INDEX TEST_SEQUENCE
|
|
|
|
OPEN_SEQUENCE_TASK (TEST_SEQUENCE)
|
|
TASK_FLUSH_ROUTE()
|
|
TASK_EXTEND_ROUTE(target )
|
|
TASK_DRIVE_POINT_ROUTE_ADVANCED(NULL, veh, speed, DRIVINGSTYLE_STRAIGHTLINE, DUMMY_MODEL_FOR_SCRIPT, DRIVINGMODE_PLOUGHTHROUGH )
|
|
TASK_DRIVE_POINT_ROUTE (NULL, veh, speed )
|
|
CLOSE_SEQUENCE_TASK(TEST_SEQUENCE)
|
|
|
|
RETURN TEST_SEQUENCE
|
|
ENDFUNC
|
|
|
|
PROC createDebugVehicle(MODEL_NAMES model, vehicle_index &veh )
|
|
|
|
VECTOR vehiclePosition
|
|
FLOAT vehicleHeading
|
|
BOOL playerWasInCar = FALSE
|
|
|
|
IF IS_MODEL_IN_CDIMAGE(model)
|
|
REQUEST_MODEL(model)
|
|
WHILE NOT HAS_MODEL_LOADED(model)
|
|
WAIT(0)
|
|
REQUEST_MODEL(model)
|
|
ENDWHILE
|
|
|
|
IF IS_PLAYER_PLAYING(theplayerindex)
|
|
|
|
IF DOES_ENTITY_EXIST(veh)
|
|
|
|
IF NOT IS_ENTITY_DEAD(veh)
|
|
IF IS_PED_IN_VEHICLE(scplayer, veh)
|
|
vehiclePosition = GET_ENTITY_COORDS(veh)
|
|
vehicleHeading = GET_ENTITY_HEADING(veh)
|
|
SET_ENTITY_COORDS(scplayer, <<vehiclePosition.x, vehiclePosition.y, vehiclePosition.z+4.0>>, FALSE)
|
|
playerWasInCar = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
DELETE_VEHICLE(veh)
|
|
ENDIF
|
|
|
|
IF NOT playerWasInCar
|
|
vehiclePosition = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(scplayer, << 0.0, 3.5, 0.0 >>)
|
|
vehicleHeading = (GET_ENTITY_HEADING(scplayer) + 90.0)
|
|
ENDIF
|
|
|
|
veh = CREATE_VEHICLE(model, vehiclePosition, vehicleHeading)
|
|
SET_VEHICLE_NEEDS_TO_BE_HOTWIRED(veh, FALSE)
|
|
SET_VEHICLE_ENGINE_ON (veh, true, true)
|
|
IF playerWasInCar
|
|
SET_PED_INTO_VEHICLE(scplayer, veh, VS_DRIVER)
|
|
ENDIF
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(model)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC UPDATE_VECTOR_FROM_INPUT ( float &zoom, float &pitch , float &pan, bool update_pan = true , bool update_pitch = true,bool update_zoom = true )
|
|
int stick_left_x, stick_right_x, stick_left_y, stick_right_y
|
|
|
|
|
|
GET_POSITION_OF_ANALOGUE_STICKS (PAD1, stick_left_x, stick_left_y, stick_right_x, stick_right_y )
|
|
|
|
if update_pan
|
|
IF (stick_left_x >= -128) AND (stick_left_x < 0)
|
|
pan -= 2
|
|
ENDIF
|
|
|
|
IF (stick_left_x <= 128) AND (stick_left_x > 0)
|
|
pan += 2
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF update_pitch
|
|
IF (stick_left_y >= -128) AND (stick_left_y < 0)
|
|
IF pitch< -3
|
|
pitch += 2
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF (stick_left_y <= 128) AND (stick_left_y > 0)
|
|
IF pitch > -178
|
|
pitch -= 2
|
|
ENDIF
|
|
ENDIf
|
|
ENDIF
|
|
|
|
IF update_zoom
|
|
IF IS_BUTTON_PRESSED (PAD1, LEFTSHOULDER1)
|
|
if zoom> gMinZoom
|
|
zoom -= gZoomspeed
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, RIGHTSHOULDER1)
|
|
IF zoom < gMaxZoom
|
|
zoom += gZoomspeed
|
|
ENDIF
|
|
ENDIf
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC VECTOR GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (PED_INDEX ped, float &zoom, float &pitch, float &pan, bool bUseinput = true, bool update_pan = true , bool update_pitch = true,bool update_zoom = true )
|
|
|
|
vector world_pos = <<0.0, 0.0, 0.0>>
|
|
|
|
if bUseinput
|
|
UPDATE_VECTOR_FROM_INPUT ( zoom, pitch, pan, update_pan , update_pitch , update_zoom)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST (ped)
|
|
IF NOT IS_PED_INJURED(ped)
|
|
world_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS (ped, SphericalCamCoords (zoom, pitch, pan))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
return world_pos
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR GET_POINT_AROUND_VEHICLE_IN_SPHERICAL_COORDS (VEHICLE_INDEX veh, float &zoom, float &pitch, float &pan, bool bUseinput = true, bool update_pan = true , bool update_pitch = true,bool update_zoom = true )
|
|
|
|
vector world_pos = <<0.0, 0.0, 0.0>>
|
|
if bUseinput
|
|
UPDATE_VECTOR_FROM_INPUT ( zoom, pitch, pan, update_pan , update_pitch , update_zoom)
|
|
ENDIF
|
|
|
|
if DOES_ENTITY_EXIST (veh)
|
|
IF IS_VEHICLE_DRIVEABLE (veh)
|
|
world_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS (veh, SphericalCamCoords (zoom, pitch, pan))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
return world_pos
|
|
ENDFUNC
|
|
|
|
|
|
//These enums must match with the TestNmMenu.xml
|
|
|
|
ENUM Scenarios
|
|
NM_SHOT_2 = 0,
|
|
NM_RUN_SHOT = 1,
|
|
NM_SHOT_UNDERWATER = 3,
|
|
NM_BUMPED_BY_PLAYER = 4,
|
|
NM_BUMPED_BY_VEHICLE = 5,
|
|
NM_FALLING_FROM_HEIGHT = 6,
|
|
NM_STANDING_ON_MOVING_VEHICLE = 7,
|
|
NM_JUMPING_FROM_VEHICLE = 8,
|
|
NM_GRAB_VEHICLE_DOOR = 9,
|
|
NM_EXPLOSION = 10,
|
|
NM_ON_FIRE = 11,
|
|
NM_SHOCK_EVENT_REACTION,
|
|
NM_WATER_CANON,
|
|
NM_RELAX_TEST,
|
|
NM_DYING,
|
|
NM_FLINCH,
|
|
NM_SHOT_BUILDING_LEDGE_RAIL_5M,
|
|
NM_SHOT_BUILDING_LEDGE_RAIL_10M,
|
|
NM_SHOT_BUILDING_LEDGE_RAIL_15M,
|
|
NM_SHOT_BUILDING_LEDGE_RAIL_20M,
|
|
NM_SHOT_BUILDING_LEDGE_2M,
|
|
NM_SHOT_BUILDING_LEDGE_5M,
|
|
NM_SHOT_BUILDING_LEDGE_10M,
|
|
NM_SHOT_BUILDING_LEDGE_15M,
|
|
NM_SHOT_BUILDING_LEDGE_20M,
|
|
NM_SLOPE,
|
|
NM_SLOPE_CATCH = 27,
|
|
NM_BALANCE_TEST = 28,
|
|
NM_BINDPOSE_TEST = 29,
|
|
NM_WALKING_DOWN_HILL = 36,
|
|
NM_TEETER_20M = 38,
|
|
NM_ATTACH_IDLE = 39,
|
|
NM_ATTACH_UNDERNEATH= 40,
|
|
NM_PUNCHED_LOW_HEALTH = 41,
|
|
NM_SHOT_BUILDING_LEDGE_RAIL_2M = 42,
|
|
NM_DANGLE_FROM_MEATHOOK = 43,
|
|
NM_SLUNG_OVER_SHOULDER = 44,
|
|
NM_SHOT_AGAINST_WALL = 45,
|
|
NM_SLIDE_TEST = 47,
|
|
NM_WARP_TO_INTERIOR = 48,
|
|
NM_PLAYER_BUMPED_BY_VEHICLE = 49,
|
|
NM_TRUCK_BED = 50,
|
|
NM_COVER = 51,
|
|
NM_QUIT = 52,
|
|
DefaultTest = 1000 //do not add below here
|
|
ENDENUM
|
|
|
|
bool bIsTestRunning = FALSE
|
|
|
|
PROC RUN_LOCAL_HELP_TEXT ()
|
|
SWITCH int_to_enum (scenarios, gcurrentselection)
|
|
CASE NM_SHOT_UNDERWATER
|
|
CASE NM_RUN_SHOT
|
|
CASE NM_DANGLE_FROM_MEATHOOK
|
|
CASE NM_SLUNG_OVER_SHOULDER
|
|
case NM_SHOT_AGAINST_WALL
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_2M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_5M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_10M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_15M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_20M
|
|
CASE NM_SHOT_BUILDING_LEDGE_2M
|
|
CASE NM_SHOT_BUILDING_LEDGE_5M
|
|
CASE NM_SHOT_BUILDING_LEDGE_10M
|
|
CASE NM_SHOT_BUILDING_LEDGE_15M
|
|
CASE NM_SHOT_BUILDING_LEDGE_20M
|
|
CASE NM_TEETER_20M
|
|
CASE NM_SLOPE
|
|
CASE NM_DYING
|
|
CASE NM_WALKING_DOWN_HILL
|
|
CASE NM_FALLING_FROM_HEIGHT
|
|
FORMAT_HELP_TEXT ("tstdbg17")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_STANDING_ON_MOVING_VEHICLE
|
|
FORMAT_HELP_TEXT ("tstdbg18")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_EXPLOSION
|
|
FORMAT_HELP_TEXT ("tstdbg19")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_ON_FIRE
|
|
CASE NM_RELAX_TEST
|
|
FORMAT_HELP_TEXT ("tstdbg20")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_PLAYER_BUMPED_BY_VEHICLE
|
|
CASE NM_BUMPED_BY_PLAYER
|
|
CASE NM_BUMPED_BY_VEHICLE
|
|
CASE NM_SHOT_2
|
|
//FORMAT_HELP_TEXT ("tstdbg18")
|
|
//gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_FLINCH
|
|
FORMAT_HELP_TEXT ("tstdbg21")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_PUNCHED_LOW_HEALTH
|
|
FORMAT_HELP_TEXT ("tstdbg22")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_JUMPING_FROM_VEHICLE
|
|
FORMAT_HELP_TEXT ("tstdbg23")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
CASE NM_GRAB_VEHICLE_DOOR
|
|
CASE NM_SLOPE_CATCH
|
|
CASE NM_ATTACH_IDLE
|
|
CASE NM_ATTACH_UNDERNEATH
|
|
CASE NM_TRUCK_BED
|
|
CASE NM_COVER
|
|
FORMAT_HELP_TEXT ("tstdbg24")
|
|
gbPrintGlobalText = FALSE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// END_SCENARIO: SquadOfPedsMovingBetweenVehicles
|
|
|
|
|
|
PROC SETUP_TEST_DATA ()
|
|
|
|
|
|
|
|
//Camera zoom around target
|
|
gCamzoom =4.5
|
|
gCamPan = 270
|
|
gCamPitch = -90
|
|
gCamZoomMIn = 0.5
|
|
gCamZoomMax = 20.0
|
|
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
RUN_LOCAL_HELP_TEXT ()
|
|
|
|
SWITCH int_to_enum (scenarios, gcurrentselection)
|
|
CASE NM_DYING
|
|
CASE NM_BALANCE_TEST
|
|
CASE NM_BINDPOSE_TEST
|
|
|
|
CASE NM_DANGLE_FROM_MEATHOOK
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 1.00>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_M_DOCKWORK_01
|
|
|
|
vHookPos = TestPeds[0].PedsCoords + <<0.0, 0.0, 3.0>>
|
|
oHook = CREATE_OBJECT_NO_OFFSET(Prop_LD_hook, vHookPos)
|
|
|
|
REQUEST_ANIM_DICT("misswiphanging")
|
|
LOAD_ALL_OBJECTS_NOW()
|
|
wait(40)
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
gStartedDangle = FALSE
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLUNG_OVER_SHOULDER
|
|
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
//TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
//TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
//TestCams[FixedCamera].cam_fov = 45.00
|
|
//TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_M_DOCKWORK_01
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
REQUEST_ANIM_DICT("NM")
|
|
|
|
WHILE NOT HAS_ANIM_DICT_LOADED("NM")
|
|
WAIT (0)
|
|
ENDWHILE
|
|
|
|
BREAK
|
|
|
|
|
|
CASE NM_SHOT_UNDERWATER
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos =<< -201.0, 46.0, -26.0 >>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -201.0, 36.0, -30.0 >>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = S_M_M_DOCKWORK_01
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_2M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<24.028452,-17.157396,6.391581>>
|
|
TestCams[FixedCamera].cam_rot = <<-28.410831,-0.000000,88.959137>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 16.6000, -16.8800, 2.0044>>
|
|
Testpeds[0].PedHeading = 270.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_BUMPED_BY_VEHICLE
|
|
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
deadPedTimer = 0
|
|
shot2PedInitialized = FALSE
|
|
|
|
gFramesToCleanup = 60
|
|
gShot2Distance = 4.0
|
|
gShot2OrientationOffset = 0.0
|
|
gShot2LastDistance = gShot2Distance
|
|
gShot2LastOrientationOffset = gShot2OrientationOffset
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
TestVehicles [0 ].vehicleCoords = <<-7.05, 5.01, 0.0>>
|
|
TestVehicles [0 ].vehicleHeading = 90.0001
|
|
TestVehicles [0 ].vehiclemodel = NMVehicleModelSelection ( )
|
|
|
|
BREAK
|
|
|
|
CASE NM_BUMPED_BY_PLAYER
|
|
CASE NM_SHOT_2
|
|
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
deadPedTimer = 0
|
|
shot2PedInitialized = FALSE
|
|
|
|
gFramesToCleanup = 60
|
|
gShot2Distance = 4.0
|
|
gShot2OrientationOffset = 0.0
|
|
gShot2LastDistance = gShot2Distance
|
|
gShot2LastOrientationOffset = gShot2OrientationOffset
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_AGAINST_WALL
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
|
|
TestCams[FixedCamera].cam_pos = <<20.30,-6.57,2.5>>
|
|
TestCams[FixedCamera].cam_rot = <<-12.00,0.000000,91.48>>
|
|
TestCams[FixedCamera].cam_fov = 50.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
Testpeds[0].PedsCoords = vAgainstWallPedsCoords
|
|
Testpeds[0].PedsCoords.x = Testpeds[0].PedsCoords.x + fPedWallDist
|
|
Testpeds[0].PedHeading = -90
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_5M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<27.152411,-6.538266,8.959295>>
|
|
TestCams[FixedCamera].cam_rot = <<-26.662188,0.000006,89.960609>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 15.8500, -6.8800, 5.0044>>
|
|
Testpeds[0].PedHeading = 270.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_10M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<32.760582,6.777083,13.965983>>
|
|
TestCams[FixedCamera].cam_rot = <<-23.199821,0.000014,87.236572>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 17.1000, 7.8700, 10.2544>>
|
|
Testpeds[0].PedHeading = 270.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_15M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<37.031815,23.234030,20.426088>>
|
|
TestCams[FixedCamera].cam_rot = <<-27.883694,0.000024,91.675102>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 16.6000, 22.3700, 15.0044>>
|
|
Testpeds[0].PedHeading = 270.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_20M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<2.328152,39.680660,24.140524>>
|
|
TestCams[FixedCamera].cam_rot = <<-21.252611,0.000018,-90.651260>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 10.3500, 39.6200, 20.0044>>
|
|
Testpeds[0].PedHeading = 90.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
BREAK
|
|
|
|
CASE NM_TEETER_20M
|
|
TestCams[FixedCamera].cam_pos = <<37.241039,39.461372,23.894213>>
|
|
TestCams[FixedCamera].cam_rot = <<-22.673187,0.000042,91.172180>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = <<25.77, 42.00-fPedEdgeDist, 20.0044>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -50
|
|
gtestZoom = 1.0
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_20M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<37.241039,39.461372,23.894213>>
|
|
TestCams[FixedCamera].cam_rot = <<-22.673187,0.000042,91.172180>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 28.8500, 39.8700, 20.0044>>
|
|
Testpeds[0].PedHeading = 270.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_15M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos = <<29.099384,40.207008,18.317476>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.551497,0.000040,-87.900055>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 40.6000, 39.6200, 15.0044>>
|
|
Testpeds[0].PedHeading = 90.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_10M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
TestCams[FixedCamera].cam_pos =<<31.737461,25.261326,12.880817>>
|
|
TestCams[FixedCamera].cam_rot = <<-14.158609,0.000039,-89.433922>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 40.3500, 24.8700, 10.0044>>
|
|
Testpeds[0].PedHeading = 90.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_5M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
|
|
TestCams[FixedCamera].cam_pos = <<31.226727,10.951522,7.784438>>
|
|
TestCams[FixedCamera].cam_rot = <<-11.589794,0.000036,-91.120361>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 40.8500, 10.8700, 5.0044>>
|
|
Testpeds[0].PedHeading = 90.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_BUILDING_LEDGE_2M
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
|
|
TestCams[FixedCamera].cam_pos = <<42.099998,-3.159755,4.395028>>
|
|
TestCams[FixedCamera].cam_rot = <<-17.999569,0.000000,0.000000>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 42.1000, 1.1200, 2.0044>>
|
|
Testpeds[0].PedHeading = 180.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLOPE
|
|
TestCams[FixedCamera].cam_pos = <<23.337534,-36.423306,12.903880>>
|
|
TestCams[FixedCamera].cam_rot = <<-22.232384,-0.000015,-88.650375>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << 37.1000, -36.1300, 10.0045>>
|
|
Testpeds[0].PedHeading = 90.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLOPE_CATCH
|
|
|
|
vOffsetVec1 = <<-1.75, -0.1, 0.95>>
|
|
vOffsetVec2 = <<1.5, -0.1, 0.95>>
|
|
vOffsetVec3 = <<1.5, -0.1, 0.85>>
|
|
vOffsetVec4 = <<-1.75, -0.1, 0.85>>
|
|
|
|
TestCams[FixedCamera].cam_pos = <<27.053932,27.167685,14.977894>>
|
|
TestCams[FixedCamera].cam_rot =<<4.736102,0.000004,-0.675041>>
|
|
TestCams[FixedCamera].cam_fov = 70.000000
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = <<26.93, 37.59, 20.00>>
|
|
Testpeds[0].PedHeading = 180.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
TestObject[0].ObjectModel = PROP_BOMB_01
|
|
TestObject[0].ObjectCoords = <<27.32, 32.20, 14.08>>
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
CASE NM_RUN_SHOT
|
|
TestCams[FixedCamera].cam_pos =<<-2.945364,10.007973,3.775786>>
|
|
TestCams[FixedCamera].cam_rot = <<-12.014372,-0.000005,178.104584>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
IF gWeapon = 4
|
|
gWeapon = 0
|
|
ENDIF
|
|
|
|
Testpeds[0].PedsCoords = <<-4.75, -30.63, 0.0>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -90
|
|
gtestZoom = 3.25
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
Route[0].RouteNode = <<-4.75, -30.63, 6.13>>
|
|
Route[0].RouteNodeState = true
|
|
|
|
Route[1].RouteNode = <<-2.69, 4.20, 6.13>>
|
|
Route[1].RouteNodeState = true
|
|
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
CASE NM_PLAYER_BUMPED_BY_VEHICLE
|
|
|
|
gVehBumpPlayerInitialized = FALSE
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
gVehBumpPlayerReversing = FALSE
|
|
gVehBumpPlayerForceFallOff = FALSE
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -72
|
|
gtestZoom = 3.25
|
|
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
TestVehicles [0].vehicleCoords = gVehBumpPlayerPlayerStartPos + gVehBumpPlayerCarStartOffset
|
|
TestVehicles [0].vehicleHeading = gVehBumpPlayerCarStartHeading
|
|
TestVehicles [0].vehiclemodel = NMVehicleModelSelection ()
|
|
|
|
BREAK
|
|
|
|
CASE NM_FALLING_FROM_HEIGHT
|
|
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
CurrentPedPos = Testpeds[0].PedsCoords
|
|
|
|
BREAK
|
|
|
|
CASE NM_STANDING_ON_MOVING_VEHICLE
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
TestVehicles [0].vehicleCoords = << -10.8500, 13.9800, 0.0041>>
|
|
TestVehicles [0].vehicleHeading = 89.7811
|
|
TestVehicles [0].vehiclemodel = NMVehicleModelSelection ( )
|
|
|
|
gVehicleSpeed = 3
|
|
|
|
BREAK
|
|
|
|
CASE NM_JUMPING_FROM_VEHICLE
|
|
gVehicleSpeed = 15.0
|
|
|
|
BREAK
|
|
|
|
|
|
CASE NM_GRAB_VEHICLE_DOOR
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
// TestCams[FixedCamera].cam_pos =<<-2.784771,14.860714,5.900194>>
|
|
// TestCams[FixedCamera].cam_rot = <<-19.199753,-0.000005,178.104584>>
|
|
// TestCams[FixedCamera].cam_fov = 45.00
|
|
// TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
// gvehicleZoom = 1.0
|
|
// gVehiclePitch = -62
|
|
// gVehiclepan = 180
|
|
|
|
gtestPan = 360
|
|
gtestPitch = -90
|
|
gtestZoom = 0.95
|
|
gZoomspeed = 0.1
|
|
|
|
TestPeds[0].PedsCoords = << -4.5052, 1.7486, 0.1483>>
|
|
TestPeds[0].PedHeading = 182.0000
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_UNARMED
|
|
|
|
TestVehicles [0].vehicleCoords = << -4.0256, 0.4923, 1.6070>>
|
|
TestVehicles [0].vehicleHeading = 89.8333
|
|
TestVehicles [0].vehiclemodel = POLICE
|
|
|
|
vOffsetVec1 = <<0.9, -1.05, 0.9>>
|
|
vOffsetVec2 = <<0.9, -1.05, 0.4>>
|
|
vOffsetVec3 = <<0.9, 0.5, 0.4>>
|
|
vOffsetVec4 = <<0.9, 0.5, 0.9>>
|
|
|
|
BREAK
|
|
|
|
CASE NM_ATTACH_UNDERNEATH
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
// TestCams[FixedCamera].cam_pos =<<-2.784771,14.860714,5.900194>>
|
|
// TestCams[FixedCamera].cam_rot = <<-19.199753,-0.000005,178.104584>>
|
|
// TestCams[FixedCamera].cam_fov = 45.00
|
|
// TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
// gvehicleZoom = 1.0
|
|
// gVehiclePitch = -62
|
|
// gVehiclepan = 180
|
|
|
|
gtestPan = 360
|
|
gtestPitch = -90
|
|
gtestZoom = 0.95
|
|
gZoomspeed = 0.1
|
|
|
|
TestPeds[0].PedsCoords = <<-8.11, -4.50, 0.0>>
|
|
TestPeds[0].PedHeading = 182.0000
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_UNARMED //WEAPONTYPE_SMG_SKORPION
|
|
|
|
TestVehicles [0].vehicleCoords = <<-7.91, 3.32, 0.0>>
|
|
TestVehicles [0].vehicleHeading = 89.8333
|
|
TestVehicles [0].vehiclemodel = BARRACKS //NMVehicleModelSelection ( )
|
|
|
|
vOffsetVec1 = <<0.9, -1.05, 0.9>>
|
|
vOffsetVec2 = <<0.9, -1.05, 0.4>>
|
|
vOffsetVec3 = <<0.9, 0.5, 0.4>>
|
|
vOffsetVec4 = <<0.9, 0.5, 0.9>>
|
|
|
|
bIsTestRunning = FALSE
|
|
|
|
PRINTSTRING(" requesting NM_ATTACH_IDLE Anim dict loaded ")
|
|
PRINTNL()
|
|
|
|
REQUEST_ANIM_DICT("NM")
|
|
|
|
WHILE NOT HAS_ANIM_DICT_LOADED("NM")
|
|
WAIT (0)
|
|
ENDWHILE
|
|
|
|
PRINTSTRING("NM_ATTACH_IDLE Anim dict loaded ")
|
|
PRINTNL()
|
|
BREAK
|
|
|
|
CASE NM_ATTACH_IDLE
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
// TestCams[FixedCamera].cam_pos =<<-2.784771,14.860714,5.900194>>
|
|
// TestCams[FixedCamera].cam_rot = <<-19.199753,-0.000005,178.104584>>
|
|
// TestCams[FixedCamera].cam_fov = 45.00
|
|
// TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
// gvehicleZoom = 1.0
|
|
// gVehiclePitch = -62
|
|
// gVehiclepan = 180
|
|
|
|
gtestPan = 360
|
|
gtestPitch = -90
|
|
gtestZoom = 0.95
|
|
gZoomspeed = 0.1
|
|
|
|
TestPeds[0].PedsCoords = <<-8.11, -4.50, 0.0>>
|
|
TestPeds[0].PedHeading = 182.0000
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_UNARMED //WEAPONTYPE_SMG_SKORPION
|
|
|
|
TestVehicles [0].vehicleCoords = <<-7.91, 3.32, 0.0>>
|
|
TestVehicles [0].vehicleHeading = 89.8333
|
|
TestVehicles [0].vehiclemodel = FIRETRUK //VehicleModelSelection ( )
|
|
|
|
vOffsetVec1 = <<0.9, -1.05, 0.9>>
|
|
vOffsetVec2 = <<0.9, -1.05, 0.4>>
|
|
vOffsetVec3 = <<0.9, 0.5, 0.4>>
|
|
vOffsetVec4 = <<0.9, 0.5, 0.9>>
|
|
|
|
bIsTestRunning = FALSE
|
|
|
|
PRINTSTRING(" requesting NM_ATTACH_IDLE Anim dict loaded ")
|
|
PRINTNL()
|
|
|
|
REQUEST_ANIM_DICT("NM")
|
|
|
|
WHILE NOT HAS_ANIM_DICT_LOADED("NM")
|
|
WAIT (0)
|
|
ENDWHILE
|
|
|
|
PRINTSTRING("NM_ATTACH_IDLE Anim dict loaded ")
|
|
PRINTNL()
|
|
BREAK
|
|
|
|
CASE NM_RELAX_TEST
|
|
CASE NM_FLINCH
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
BREAK
|
|
|
|
CASE NM_EXPLOSION
|
|
CASE NM_ON_FIRE
|
|
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
bAutoSwitchToTrackCam = true
|
|
|
|
BREAK
|
|
|
|
CASE NM_PUNCHED_LOW_HEALTH
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
gtestPan = 270
|
|
gtestPitch = -90
|
|
gtestZoom = 1.5
|
|
|
|
gCamzoom = 2.6
|
|
|
|
gCamZoomMIn = 2.5
|
|
|
|
gMinZoom = 0.65
|
|
gMaxZoom = 2.0
|
|
gZoomspeed = 0.01
|
|
|
|
TestCams[FixedCamera].cam_pos =<<-19.655760,23.159075,3.672047>>
|
|
TestCams[FixedCamera].cam_rot = <<-15.097453,-0.000049,179.572372>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = << -19.8500, 13.9800, 0.0041>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
BREAK
|
|
|
|
CASE NM_WALKING_DOWN_HILL
|
|
TestCams[FixedCamera].cam_pos = <<-145.0, -587.00, 160.00>>
|
|
TestCams[FixedCamera].cam_rot = <<-12.014372,-0.000005,178.104584>>
|
|
TestCams[FixedCamera].cam_fov = 45.00
|
|
TestCams[FixedCamera].bActivateCam = TRUE
|
|
|
|
Testpeds[0].PedsCoords = <<-141.32, -592.01, 157.18>>
|
|
Testpeds[0].PedHeading = 0.0
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
Testpeds[0].PedsCoords -= GET_MAP_OFFSET // Because this will be added on later for *all* objects.
|
|
|
|
gtestPan = 90
|
|
gtestPitch = -90
|
|
gtestZoom = 3.25
|
|
gMinZoom = 0.5
|
|
gMaxZoom = 15
|
|
gZoomspeed = 0.1
|
|
|
|
Route[0].RouteNode = <<-141.32, -592.01, 157.18>>
|
|
Route[0].RouteNodeState = true
|
|
|
|
Route[1].RouteNode = << -149.54, -168.81, 7.49 >>
|
|
Route[1].RouteNodeState = true
|
|
|
|
bAutoSwitchToTrackCam = true
|
|
BREAK
|
|
|
|
CASE NM_TRUCK_BED
|
|
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
gtestPan = 360
|
|
gtestPitch = -90
|
|
gtestZoom = 0.95
|
|
gZoomspeed = 0.1
|
|
gVehicleSpeed = -10.0
|
|
|
|
TestPeds[0].PedsCoords = << -4.0052, -19.2514, 2.1483>>
|
|
TestPeds[0].PedHeading = 182.0000
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_UNARMED
|
|
|
|
TestVehicles[0].VehicleCoords = <<-4.0256, -20.4923, 1.6070>>
|
|
TestVehicles[0].VehicleHeading = 180
|
|
TestVehicles[0].VehicleModel = BODHI2
|
|
|
|
TestVehicles[1].VehicleCoords = <<-4.0256, -10.4923, 1.6070>>
|
|
TestVehicles[1].VehicleHeading = 180
|
|
TestVehicles[1].VehicleModel = TRFLAT
|
|
BREAK
|
|
|
|
CASE NM_COVER
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
gtestPan = 360
|
|
gtestPitch = -90
|
|
gtestZoom = 0.95
|
|
gZoomspeed = 0.1
|
|
gVehicleSpeed = -10.0
|
|
|
|
vOffset = <<0.0, 0.0, -6.1>>
|
|
vOffsetVec1 = <<-1.0, -1.0, 0.0>>
|
|
vOffsetVec2 = <<0.0, 0.0, 0.0>>
|
|
|
|
TestPeds[0].PedsCoords = <<-36.8, -15.1, 7.1>>
|
|
TestPeds[0].PedHeading = 180.0000
|
|
TestPeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
TestPeds[0].PedsWeapon = WEAPONTYPE_UNARMED
|
|
|
|
TestPeds[1].PedsCoords = <<-36.8, -17.4, 7.1>>
|
|
TestPeds[1].PedHeading = 0.0
|
|
TestPeds[1].Pedrelgrp = 1
|
|
TestPeds[1].PedModel = S_M_Y_COP_01
|
|
TestPeds[1].PedsWeapon = WEAPONTYPE_PISTOL
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLIDE_TEST
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
SET_ENTITY_COORDS(scplayer, <<18.86, -272.20, 21.68>>)
|
|
SET_ENTITY_HEADING(scplayer, gShot2OrientationOffset)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_WARP_TO_INTERIOR
|
|
gbPlayerShouldBeAtCamPos = FALSE
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
SET_ENTITY_COORDS(scplayer, <<152.644, -132.157, 29.47>>)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
// Offset all fixed coordinates defined above to account for changing map offsets.
|
|
|
|
Testpeds[0].PedsCoords += GET_MAP_OFFSET
|
|
TestCams[FixedCamera].cam_pos += GET_MAP_OFFSET
|
|
TestObject[0].ObjectCoords += GET_MAP_OFFSET
|
|
TestVehicles[0].vehicleCoords += GET_MAP_OFFSET
|
|
|
|
ENDPROC
|
|
|
|
//ENUMS Run Shot
|
|
ENUM NRS_FLAGS
|
|
NRS_GivePedTask,
|
|
NRS_ShootPed
|
|
ENDENUM
|
|
|
|
NRS_FLAGS NRS_Status = NRS_GivePedTask
|
|
|
|
ENUM NFFH_Flags
|
|
NFFH_SetPedPos,
|
|
NFFH_SetDropPed
|
|
ENDENUM
|
|
|
|
NFFH_Flags NFFH_STATUS = NFFH_SetPedPos
|
|
|
|
ENUM NJFV_FLAGS
|
|
NJFV_Setup,
|
|
NJFV_Run,
|
|
NJFV_Wait
|
|
ENDENUM
|
|
|
|
NJFV_FLAGS NJFV_Status = NJFV_Setup
|
|
|
|
PROC INITALISE_TEST_STATE()
|
|
SingleTaskStatus = startSingleTask
|
|
NRS_Status = NRS_GivePedTask
|
|
NFFH_STATUS = NFFH_SetPedPos
|
|
NJFV_Status = NJFV_Setup
|
|
ENDPROC
|
|
|
|
|
|
//bool bDrawSecondPoint = FALSE
|
|
//VECTOR gTargetPos
|
|
VECTOR vBehaviourTextScreenPos = <<0.45, 0.055, 0.0>>
|
|
PROC RUN_TEST ()
|
|
vector GunPos, TargetPos, secondtargetPos
|
|
int index
|
|
bool distanceChanged = FALSE
|
|
bool orientationChanged = FALSE
|
|
VECTOR aimCoords
|
|
VECTOR cFallenPedCoords
|
|
VECTOR vehBumpBackPoint = gVehBumpPlayerPlayerStartPos + gVehBumpPlayerCarStartOffset + <<0.0, gVehicleMoveDistance / 2.0, 0.0>>
|
|
VECTOR vehBumpFrontPoint = gVehBumpPlayerPlayerStartPos + gVehBumpPlayerCarStartOffset - <<0.0, gVehicleMoveDistance / 2.0, 0.0>>
|
|
VECTOR vehPos
|
|
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE (true)
|
|
|
|
SWITCH int_to_enum (scenarios, gcurrentselection) // the ENUM corresponds to the values from the XML file
|
|
//setup scenario
|
|
CASE NM_SHOT_UNDERWATER
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_2M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_5M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_10M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_15M
|
|
CASE NM_SHOT_BUILDING_LEDGE_RAIL_20M
|
|
CASE NM_SHOT_BUILDING_LEDGE_2M
|
|
CASE NM_SHOT_BUILDING_LEDGE_5M
|
|
CASE NM_SHOT_BUILDING_LEDGE_10M
|
|
CASE NM_SHOT_BUILDING_LEDGE_15M
|
|
CASE NM_SHOT_BUILDING_LEDGE_20M
|
|
CASE NM_SLOPE
|
|
DRAW_DEBUG_TEXT_2D ("Shot Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
SHOOT_SINGLE_BULLET_BETWEEN_COORDS (GunPos, secondtargetPos, 0, true, SELECT_WEAPON_TYPE() )
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_SHOT_AGAINST_WALL
|
|
DRAW_DEBUG_TEXT_2D ("Shot Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
TestPeds[0].PedsCoords.x = vAgainstWallPedsCoords.x
|
|
TestPeds[0].PedsCoords.x = TestPeds[0].PedsCoords.x + fPedWallDist
|
|
|
|
SET_ENTITY_HEALTH(TestPeds[0].ped, GET_PED_MAX_HEALTH(TestPeds[0].ped))
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
SHOOT_SINGLE_BULLET_BETWEEN_COORDS (GunPos, secondtargetPos, 300, true, SELECT_WEAPON_TYPE() )
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_DANGLE_FROM_MEATHOOK
|
|
DRAW_DEBUG_TEXT_2D ("Dangle from Meathook", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE) OR !gStartedDangle
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
wait(40)
|
|
|
|
// Reset the hook
|
|
vHookPos = TestPeds[0].PedsCoords + <<0.0, 0.0, 3.0>>
|
|
DELETE_OBJECT(oHook)
|
|
oHook = CREATE_OBJECT_NO_OFFSET(Prop_LD_hook, vHookPos)
|
|
LOAD_ALL_OBJECTS_NOW()
|
|
wait(40)
|
|
|
|
SET_OBJECT_PHYSICS_PARAMS(oHook, 400.0, -1.0,<<-1.0,-1.0, -1.0>>, <<-1.0,-1.0, -1.0>>)
|
|
SET_ENTITY_DYNAMIC(oHook, TRUE)
|
|
|
|
SET_ENTITY_COORDS_NO_OFFSET(oHook, vHookPos)
|
|
SET_ENTITY_ROTATION(oHook, <<0.0, 0.0, 180.0>>)
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = S_M_M_DOCKWORK_01
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
wait(40)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
//Attach Michael to hook
|
|
ATTACH_ENTITY_TO_ENTITY(TestPeds[0].Ped, oHook, 0, <<-0.025, -0.05, -2.1>>, <<0.0, 0.0, 180.0>>)
|
|
WAIT(0)
|
|
|
|
// Check for injury here (again) because the wait() call appears to be resetting the bCheckedForDead flag
|
|
IF IS_PED_HURT (TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
TASK_PLAY_ANIM(TestPeds[0].Ped, "misswiphanging", "idle", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE | AF_FORCE_START)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(TestPeds[0].Ped)
|
|
WAIT(0)
|
|
|
|
// Check for injury here (again) because the wait() call appears to be resetting the bCheckedForDead flag
|
|
IF IS_PED_HURT (TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
// Make the ped dangle
|
|
FREEZE_ENTITY_POSITION(oHook, FALSE)
|
|
DETACH_ENTITY(TestPeds[0].ped)
|
|
DANGLE_FROM_MEATHOOK(TRUE, TestPeds[0].ped, oHook, vHookPos, FALSE, 1.0, 1000, 60000, TRUE, -0.3, -0.3, -0.3, 0.3, 0.3, 0.3)
|
|
|
|
// Add ankle cuffs
|
|
SET_ENABLE_BOUND_ANKLES(TestPeds[0].ped, TRUE)
|
|
|
|
// Pin the ankle to the bottom of the hook
|
|
ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(TestPeds[0].ped, oHook, GET_PED_BONE_INDEX(TestPeds[0].ped, BONETAG_L_FOOT), -1, <<-0.075, -0.1, -0.85>>, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>, -1.0, TRUE, FALSE, FALSE, FALSE)
|
|
ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(TestPeds[0].ped, oHook, GET_PED_BONE_INDEX(TestPeds[0].ped, BONETAG_R_FOOT), -1, <<0.075, -0.1, -0.85>>, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>, -1.0, TRUE, FALSE, FALSE, FALSE)
|
|
|
|
gStartedDangle = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF gStartedDangle
|
|
vHookPos = vHookPos + ((vHookVelocity)*GET_FRAME_TIME())
|
|
DANGLE_FROM_MEATHOOK(FALSE, TestPeds[0].ped, oHook, vHookPos, FALSE, 1.0, 100000, 100000, TRUE, -0.3, -0.3, -0.3, 0.3, 0.3, 0.3)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
|
|
DETACH_ENTITY(TestPeds[0].ped)
|
|
SET_ENABLE_BOUND_ANKLES(TestPeds[0].ped, FALSE)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_BUMPED_BY_PLAYER
|
|
CASE NM_BUMPED_BY_VEHICLE
|
|
CASE NM_SHOT_2
|
|
DRAW_DEBUG_TEXT_2D ("Shot 2", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
|
|
IF NOT shot2PedInitialized OR IS_PED_INJURED (TestPeds[0].ped) OR IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
|
|
IF shot2PedInitialized
|
|
deadPedTimer = deadPedTimer + 1
|
|
ENDIF
|
|
|
|
IF deadPedTimer > gFramesToCleanup OR NOT shot2PedInitialized OR IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
DELETE_SCENARIO_PED(TestPeds[index])
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR_SHOT_2(gShot2PedType)
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], bBlockTempAIEvents)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF IS_PED_INJURED (TestPeds[0].ped)
|
|
ENDIF
|
|
IF IS_PED_INJURED (scplayer)
|
|
ENDIF
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
ENDIF
|
|
|
|
IF int_to_enum(scenarios, gcurrentselection) = NM_BUMPED_BY_VEHICLE
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
FOR Index = 0 to MAX_NUMBER_OF_VEHICLES -1
|
|
TestVehicles[0].VehicleModel = NMVehicleModelSelection ( )
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
TestVehicles [0].vehicleCoords = GET_ENTITY_COORDS(scplayer)
|
|
TestVehicles [0].vehicleHeading = GET_ENTITY_HEADING(scplayer)
|
|
|
|
CLEAR_PED_TASKS (scplayer)
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles [0].vehicleCoords)
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles [0].vehicleHeading)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
wait(0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
RENDER_SCRIPT_CAMS (FALSE, FALSE)
|
|
|
|
IF IS_PED_INJURED (TestPeds[0].ped)
|
|
ENDIF
|
|
IF IS_PED_INJURED (scplayer)
|
|
ENDIF
|
|
|
|
IF gPositionOnCliff
|
|
SET_ENTITY_COORDS (scplayer, vFallFromCliffPlayerStartPos)
|
|
SET_ENTITY_HEADING (scplayer, vFallFromCliffPlayerStartHeading)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
|
|
ENDIF
|
|
|
|
VECTOR front
|
|
VECTOR side
|
|
VECTOR up
|
|
VECTOR pos
|
|
GET_ENTITY_MATRIX(scplayer, front, side, up, pos)
|
|
FLOAT playerHeading
|
|
playerHeading = GET_ENTITY_HEADING(scplayer) + 180.0
|
|
IF playerHeading > 360.0
|
|
playerHeading = playerHeading - 360.0
|
|
ENDIF
|
|
playerHeading = playerHeading + gShot2OrientationOffset
|
|
|
|
if IS_PED_IN_ANY_VEHICLE(scplayer)
|
|
pos = GET_ENTITY_COORDS(GET_VEHICLE_PED_IS_IN(scplayer))
|
|
ENDIF
|
|
|
|
Testpeds[0].PedsCoords = pos + front * gShot2Distance
|
|
FLOAT adjust
|
|
adjust = GET_ENTITY_HEIGHT_ABOVE_GROUND(Testpeds[0].Ped)
|
|
Testpeds[0].PedsCoords.z = Testpeds[0].PedsCoords.z - adjust
|
|
Testpeds[0].PedHeading = playerHeading
|
|
Testpeds[0].Pedrelgrp = 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
GIVE_WEAPON_TO_PED(TestPeds[0].ped, SELECT_WEAPON_TYPE(), 300, TRUE)
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
SET_PED_DUCKING(TestPeds[0].ped, gShot2Crouch)
|
|
|
|
IF bAimWeapon
|
|
GET_ENTITY_MATRIX(TestPeds[0].ped, front, side, up, pos)
|
|
aimCoords = pos + front * 100.0
|
|
TASK_AIM_GUN_AT_COORD( TestPeds[0].ped, aimCoords, -1 )
|
|
ENDIF
|
|
|
|
IF gShot2bForward OR gShot2bLeft OR gShot2bRight OR gShot2bBackward
|
|
TEST_SEQ = TEST_ROUTE_SHOT_2 (SHOT_2_DYNAMIC_MOVE_TYPE, gShot2bForward, gShot2bLeft, gShot2bRight, gShot2bBackward, gShot2MovementDistance)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
ENDIF
|
|
|
|
deadPedTimer = 0
|
|
IF NOT shot2PedInitialized
|
|
shot2PedInitialized = TRUE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF shot2PedInitialized AND NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
IF IS_PED_INJURED (TestPeds[0].ped)
|
|
ENDIF
|
|
IF IS_PED_INJURED (scplayer)
|
|
ENDIF
|
|
|
|
IF bBlockTempAIEvents != bLastBlockTempAIEvents
|
|
Block_Peds_Temp_Events (Testpeds[0], bBlockTempAIEvents)
|
|
bLastBlockTempAIEvents = bBlockTempAIEvents
|
|
ENDIF
|
|
|
|
IF gPositionOnCliff != gPositionOnCliffLast
|
|
IF gPositionOnCliff
|
|
// Force a restart
|
|
gShot2Distance = 4.0
|
|
gShot2LastDistance = 4.0
|
|
shot2PedInitialized = FALSE
|
|
ELSE
|
|
RENDER_SCRIPT_CAMS (FALSE, FALSE)
|
|
ENDIF
|
|
gPositionOnCliffLast = gPositionOnCliff
|
|
ENDIF
|
|
|
|
IF gWeapon != gLastWeapon
|
|
GIVE_WEAPON_TO_PED(TestPeds[0].ped, SELECT_WEAPON_TYPE(), 300, TRUE)
|
|
IF gLastWeapon >= 4
|
|
bWasAimingWeapon = FALSE
|
|
ENDIF
|
|
gLastWeapon = gWeapon
|
|
ENDIF
|
|
|
|
BOOL resetAimAndMovement
|
|
IF bGetInCarMode
|
|
resetAimAndMovement = bAimWeapon AND NOT GET_PED_CONFIG_FLAG(TestPeds[0].ped, PCF_IsAimingGun) AND IS_PED_IN_ANY_VEHICLE(TestPeds[0].ped)
|
|
ELSE
|
|
resetAimAndMovement = bAimWeapon AND NOT GET_PED_CONFIG_FLAG(TestPeds[0].ped, PCF_IsAimingGun)
|
|
ENDIF
|
|
resetAimAndMovement = resetAimAndMovement OR bAimWeapon != bWasAimingWeapon
|
|
|
|
IF resetAimAndMovement
|
|
VECTOR playerCoords
|
|
playerCoords = GET_ENTITY_COORDS(scplayer)
|
|
IF bAimWeapon
|
|
VECTOR front
|
|
VECTOR side
|
|
VECTOR up
|
|
VECTOR pos
|
|
GET_ENTITY_MATRIX(TestPeds[0].ped, front, side, up, pos)
|
|
aimCoords = pos + front * 100.0
|
|
TASK_AIM_GUN_AT_COORD( TestPeds[0].ped, aimCoords, -1 )
|
|
ELSE
|
|
TASK_AIM_GUN_AT_COORD( TestPeds[0].ped, playerCoords, 0 )
|
|
ENDIF
|
|
IF gShot2bForward OR gShot2bLeft OR gShot2bRight OR gShot2bBackward
|
|
TEST_SEQ = TEST_ROUTE_SHOT_2 (SHOT_2_DYNAMIC_MOVE_TYPE, gShot2bForward, gShot2bLeft, gShot2bRight, gShot2bBackward, gShot2MovementDistance)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
ENDIF
|
|
bWasAimingWeapon = bAimWeapon
|
|
ENDIF
|
|
|
|
IF gShot2Distance != gShot2LastDistance
|
|
gShot2LastDistance = gShot2Distance
|
|
distanceChanged = TRUE
|
|
ENDIF
|
|
IF gShot2OrientationOffset != gShot2LastOrientationOffset
|
|
gShot2LastOrientationOffset = gShot2OrientationOffset
|
|
orientationChanged = TRUE
|
|
ENDIF
|
|
|
|
IF distanceChanged OR orientationChanged
|
|
|
|
VECTOR front
|
|
VECTOR side
|
|
VECTOR up
|
|
VECTOR pos
|
|
GET_ENTITY_MATRIX(scplayer, front, side, up, pos)
|
|
FLOAT playerHeading
|
|
playerHeading = GET_ENTITY_HEADING(scplayer) + 180.0
|
|
IF playerHeading > 360.0
|
|
playerHeading = playerHeading - 360.0
|
|
ENDIF
|
|
playerHeading = playerHeading + gShot2OrientationOffset
|
|
|
|
Testpeds[0].PedsCoords = pos + front * gShot2Distance
|
|
FLOAT adjust
|
|
adjust = GET_ENTITY_HEIGHT_ABOVE_GROUND(Testpeds[0].Ped)
|
|
Testpeds[0].PedsCoords.z = Testpeds[0].PedsCoords.z - adjust
|
|
Testpeds[0].PedHeading = playerHeading
|
|
|
|
IF distanceChanged
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
ENDIF
|
|
IF orientationChanged
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
IF bAimWeapon
|
|
GET_ENTITY_MATRIX(TestPeds[0].ped, front, side, up, pos)
|
|
aimCoords = pos + front * 100.0
|
|
TASK_AIM_GUN_AT_COORD( TestPeds[0].ped, aimCoords, -1 )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF gShot2bForward != gShot2bWasForward OR gShot2bLeft != gShot2bWasLeft OR gShot2bRight != gShot2bWasRight OR gShot2bBackward != gShot2bWasBackward
|
|
TEST_SEQ = TEST_ROUTE_SHOT_2 (SHOT_2_DYNAMIC_MOVE_TYPE, gShot2bForward, gShot2bLeft, gShot2bRight, gShot2bBackward, gShot2MovementDistance)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
gShot2bWasForward = gShot2bForward
|
|
gShot2bWasLeft = gShot2bLeft
|
|
gShot2bWasRight = gShot2bRight
|
|
gShot2bWasBackward = gShot2bBackward
|
|
ENDIF
|
|
|
|
IF gShot2Crouch != gShot2WasCrouch
|
|
SET_PED_DUCKING(TestPeds[0].ped, gShot2Crouch)
|
|
gShot2WasCrouch = gShot2Crouch
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// Switch to fall cam if the victim falls
|
|
IF shot2PedInitialized AND gPositionOnCliff
|
|
|
|
cFallenPedCoords = GET_ENTITY_COORDS(TestPeds[0].ped, FALSE)
|
|
IF vFallFromCliffPlayerStartPos.z - cFallenPedCoords.z > 0.1 OR cFallenPedCoords.x < 39.4
|
|
|
|
IF NOT IS_PED_RAGDOLL(TestPeds[0].ped)
|
|
shot2PedInitialized = FALSE
|
|
ENDIF
|
|
|
|
IF NOT DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
TestCams[FixedCamera].cam = CREATE_CAM_WITH_PARAMS ("DEFAULT_SCRIPTED_CAMERA", vFallFromCliffFixedCamPos, <<0.0,0.0,0.0>>, 50.00, true)
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS (TRUE, TRUE, 600)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bInvulnerableTestPed AND NOT IS_PED_FATALLY_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_HEALTH(TestPeds[0].ped, GET_PED_MAX_HEALTH(TestPeds[0].ped))
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLUNG_OVER_SHOULDER
|
|
DRAW_DEBUG_TEXT_2D ("Slung Over Shoulder", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE) OR IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].Ped)
|
|
CLEAR_PED_TASKS(scplayer)
|
|
CLEAR_PED_TASKS_IMMEDIATELY(TestPeds[0].Ped)
|
|
ATTACH_ENTITY_TO_ENTITY(TestPeds[0].Ped, scplayer, GET_PED_BONE_INDEX(scplayer, BONETAG_L_CLAVICLE), vCarriedPos, vCarriedRot, FALSE, FALSE, FALSE, TRUE)
|
|
TASK_PLAY_ANIM_ADVANCED(TestPeds[0].Ped, "nm", "firemans_carry", <<0,0,0>>, <<0,0,0>>, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_HOLD_LAST_FRAME|AF_NOT_INTERRUPTABLE, 1.0)
|
|
FORCE_PED_AI_AND_ANIMATION_UPDATE(TestPeds[0].Ped)
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
WAIT(0) //REQUIRED: need to wait at least a frame to give animations time to pose the ped.
|
|
// Make the ped dangle
|
|
IF NOT IS_ENTITY_DEAD(TestPeds[0].Ped) AND NOT IS_ENTITY_DEAD(scplayer)
|
|
SLUNG_OVER_SHOULDER(TestPeds[0].ped, scplayer, 100000, 100000)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_TEETER_20M
|
|
DRAW_DEBUG_TEXT_2D ("Teeter Behaviour", vBehaviourTextScreenPos)
|
|
PedComponent = STOMACH
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
TestPeds[0].PedsCoords.y = 42.00-fPedEdgeDist
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
// Apply a force to the ped's root to push them towards the edge. Scale the force depending on
|
|
// the length of the line showing the direction.
|
|
IF NOT IS_PED_INJURED(TestPeds[0].ped)
|
|
vImpulseTeeter.x = (TargetPos.x - GunPos.x)*0.4
|
|
vImpulseTeeter.y = (TargetPos.y - GunPos.y)*0.4
|
|
vImpulseTeeter.z = (TargetPos.z - GunPos.z)*0.4
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_PED_TO_RAGDOLL(TestPeds[0].ped, 2000, 10000, TASK_NM_BALANCE)
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
PedComp = ENUM_TO_INT(RAGDOLL_PELVIS)
|
|
APPLY_FORCE_TO_ENTITY(TestPeds[0].ped, APPLY_TYPE_IMPULSE, vImpulseTeeter, vOffsetTeeter, PedComp, FALSE, FALSE, true )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_SLOPE_CATCH
|
|
DRAW_DEBUG_TEXT_2D ("Grab Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_OBJECTS -1
|
|
CREATE_OBJECT_ENTITY(testobject[index])
|
|
ENDFOR
|
|
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//draw the relevant debug info
|
|
IF DOES_ENTITY_EXIST (TestObject[0].Object)
|
|
|
|
SWITCH (gGrabType)
|
|
CASE 0
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1 ), 0.1, 255, 0, 0)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 0.1, 0, 255, 0)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 255, 0, 0)
|
|
BREAK
|
|
|
|
CASE 1
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1 ), 0.1, 255, 0, 0)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 0.1, 0, 255, 0)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3 ), 0.1, 0, 0, 255)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4 ), 0.1, 255, 255, 255)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 255, 0, 0)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3 ), 0, 255, 0)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4 ), 0, 0, 255)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1 ), 255, 255, 255)
|
|
BREAK
|
|
|
|
CASE 2
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1 ), 0.1, 255, 0, 0)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 0.1, 0, 255, 0)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3 ), 0.1, 0, 0, 255)
|
|
DRAW_DEBUG_SPHERE (GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4 ), 0.1, 255, 255, 255)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2 ), 255, 0, 0)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec2) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3 ), 0, 255, 0)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec3) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4 ), 0, 0, 255)
|
|
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec4) , GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS ( TestObject[0].Object, vOffsetVec1 ), 255, 255, 255)
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
FREEZE_ENTITY_POSITION(TestObject[0].Object, true)
|
|
|
|
SET_ENTITY_VISIBLE (TestObject[0].object, FALSE)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
SWITCH (gGrabType)
|
|
CASE 0
|
|
bNM_GRAB_SURFACE = FALSE
|
|
bNM_GRAB_A_LINE = true
|
|
bNM_GRAB_DONT_LET_GO = true
|
|
if gresetoffsets
|
|
vOffsetVec1 = <<-1.0, -0.1, 0.95>>
|
|
vOffsetVec2 = <<0.0, -0.1, 0.95>>
|
|
gresetoffsets = FALSE
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 1
|
|
bNM_GRAB_A_LINE = FALSE
|
|
bNM_GRAB_SURFACE = TRUE
|
|
bNM_GRAB_DONT_LET_GO = true
|
|
if gresetoffsets
|
|
vOffsetVec1 = <<-1.75, -0.1, 0.95>>
|
|
vOffsetVec2 = <<1.5, -0.1, 0.95>>
|
|
vOffsetVec3 = <<1.5, -0.1, 0.85>>
|
|
vOffsetVec4 = <<-1.75, -0.1, 0.85>>
|
|
gresetoffsets = FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_PED_TO_RAGDOLL (TestPeds[0].ped, 0, 0, TASK_NM_SCRIPT)
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_BALANCE_MSG)
|
|
GIVE_PED_NM_MESSAGE (TestPeds[0].ped)
|
|
|
|
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_GRAB_MSG)
|
|
SET_NM_MESSAGE_INSTANCE_INDEX(NM_GRAB_INSTANCE_INDEX, NULL, null, TestObject[0].object)
|
|
SET_NM_MESSAGE_VEC3(NM_GRAB_POS2_VEC3, vOffsetVec1)
|
|
SET_NM_MESSAGE_VEC3(NM_GRAB_POS1_VEC3, vOffsetVec2)
|
|
|
|
SET_NM_MESSAGE_VEC3(NM_GRAB_POS3_VEC3, vOffsetVec3)
|
|
SET_NM_MESSAGE_VEC3(NM_GRAB_POS4_VEC3, vOffsetVec4)
|
|
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_A_LINE, bNM_GRAB_A_LINE)
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_BRACE_ONLY , bNM_GRAB_BRACE_ONLY)
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_SURFACE ,bNM_GRAB_SURFACE)
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_USE_LEFT , bNM_GRAB_USE_LEFT)
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_USE_RIGHT , bNM_GRAB_USE_RIGHT)
|
|
SET_NM_MESSAGE_BOOL (NM_GRAB_DONT_LET_GO , bNM_GRAB_DONT_LET_GO)
|
|
|
|
// SET_NM_MESSAGE_INT(NM_GRAB_INSTANCE_INDEX, iNM_GRAB_INSTANCE_INDEX)
|
|
// SET_NM_MESSAGE_INT(NM_GRAB_INSTANCE_PART_INDEX, iNM_GRAB_INSTANCE_PART_INDEX)
|
|
|
|
|
|
// SET_NM_MESSAGE_VEC3(NM_GRAB_NORM_L_VEC3, vNormalR )
|
|
// SET_NM_MESSAGE_VEC3(NM_GRAB_NORM_R_VEC3, vNormalL )
|
|
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_STRENGTH , fNM_GRAB_STRENGTH)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_BODY_STIFFNESS , fNM_GRAB_BODY_STIFFNESS)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_REACH_ANGLE , fNM_GRAB_REACH_ANGLE)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_DISTANCE , fNM_GRAB_DISTANCE)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_ONE_SIDE_REACH_ANGLE , fNM_GRAB_ONE_SIDE_REACH_ANGLE)
|
|
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_PULLUP_TIMER , fNM_GRAB_PULLUP_TIMER)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_HOLD_MAX_TIMER , fNM_GRAB_HOLD_MAX_TIMER)
|
|
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_PULLUP_STRENGTH_LEFT , fNM_GRAB_PULLUP_STRENGTH_LEFT)
|
|
SET_NM_MESSAGE_FLOAT (NM_GRAB_PULLUP_STRENGTH_RIGHT , fNM_GRAB_PULLUP_STRENGTH_RIGHT)
|
|
GIVE_PED_NM_MESSAGE(TestPeds[0].ped)
|
|
|
|
ENDIF
|
|
|
|
IF (gbshootPed)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
PedComp = ENUM_TO_INT(RAGDOLL_PELVIS)
|
|
APPLY_FORCE_TO_ENTITY(TestPeds[0].ped, APPLY_TYPE_IMPULSE, vImpulse, vOffset, PedComp, true, FALSE, true )
|
|
ENDIF
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
CASE NM_DYING
|
|
DRAW_DEBUG_TEXT_2D ("Death Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
SET_ENTITY_HEALTH (TestPeds[0].ped, 101)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
SHOOT_SINGLE_BULLET_BETWEEN_COORDS (GunPos, TargetPos, 10, true )
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
CASE NM_RUN_SHOT
|
|
DRAW_DEBUG_TEXT_2D ("Run Shot Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
SWITCH NRS_Status
|
|
CASE NRS_GivePedTask
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
TEST_SEQ = TEST_ROUTE (RUN_SHOT_DYNAMIC_MOVE_TYPE)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
ENDIF
|
|
NRS_Status = NRS_ShootPed
|
|
BREAK
|
|
|
|
CASE NRS_ShootPed
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
CLEAR_PED_TASKS(TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
NRS_Status = NRS_GivePedTask
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
SHOOT_SINGLE_BULLET_BETWEEN_COORDS (GunPos, secondtargetPos, 0, true, SELECT_WEAPON_TYPE() )
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
|
|
CASE NM_PLAYER_BUMPED_BY_VEHICLE
|
|
DRAW_DEBUG_TEXT_2D ("Player bumped by vehicle", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE) OR NOT gVehBumpPlayerInitialized
|
|
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
TestVehicles[0].Vehicle = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(scplayer), 100.0, DUMMY_MODEL_FOR_SCRIPT, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
|
|
|
|
IF NOT DOES_ENTITY_EXIST (TestVehicles[0].Vehicle)
|
|
TestVehicles[0].VehicleModel = NMVehicleModelSelection ( )
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[0] )
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, gVehBumpPlayerPlayerStartPos + gVehBumpPlayerCarStartOffset + <<0.0, gVehicleMoveDistance / 2.0, 0.0>>)
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, gVehBumpPlayerCarStartHeading)
|
|
|
|
IF IS_PED_INJURED (scplayer)
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (scplayer, gVehBumpPlayerPlayerStartPos)
|
|
SET_ENTITY_HEADING (scplayer, gVehBumpPlayerPlayerStartHeading)
|
|
|
|
gVehBumpPlayerInitialized = TRUE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF gStopVehicleIfPlayerRagdolls AND IS_PED_RAGDOLL(scplayer)
|
|
gVehicleSpeed = gVehicleSpeed * 0.5
|
|
IF gVehicleSpeed < 0.01
|
|
gVehicleSpeed = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(TestVehicles[0].Vehicle) AND IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
|
|
vehPos = GET_ENTITY_COORDS(TestVehicles[0].Vehicle)
|
|
|
|
IF vehPos.y < vehBumpFrontPoint.y
|
|
gVehBumpPlayerReversing = TRUE
|
|
ELIF vehPos.y > vehBumpBackPoint.y
|
|
gVehBumpPlayerReversing = FALSE
|
|
ENDIF
|
|
|
|
IF gVehBumpPlayerReversing
|
|
SET_VEHICLE_FORWARD_SPEED (TestVehicles[0].Vehicle, -gVehicleSpeed)
|
|
ELSE
|
|
SET_VEHICLE_FORWARD_SPEED (TestVehicles[0].Vehicle, gVehicleSpeed)
|
|
ENDIF
|
|
|
|
SET_ENEMY_PEDS_FORCE_FALL_OFF_THIS_VEHICLE (TestVehicles[0].Vehicle, gVehBumpPlayerForceFallOff)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_FALLING_FROM_HEIGHT
|
|
DRAW_DEBUG_TEXT_2D ("High Fall Behaviour", vBehaviourTextScreenPos)
|
|
Vector tempoffset
|
|
tempoffset = GET_MAP_OFFSET
|
|
int stick_left_x, stick_right_x, stick_left_y, stick_right_y
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
IF IS_CAM_ACTIVE(TestCams[FixedCamera].cam)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SWITCH NFFH_STATUS
|
|
CASE NFFH_SetPedPos
|
|
IF not IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(TestPeds[0].Ped, TRUE)
|
|
SET_PED_GRAVITY(TestPeds[0].Ped, FALSE)
|
|
GET_POSITION_OF_ANALOGUE_STICKS (PAD1, stick_left_x, stick_left_y, stick_right_x, stick_right_y )
|
|
|
|
IF (stick_left_y >= -128) AND (stick_left_y < 0)
|
|
CurrentPedPos.z += 0.25
|
|
ENDIF
|
|
|
|
IF (stick_left_y <= 128) AND (stick_left_y > 0)
|
|
CurrentPedPos.z -= 0.25
|
|
ENDIf
|
|
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, <<CurrentPedPos.x, CurrentPedPos.y, (CurrentPedPos.z + tempoffset.z)>>)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
NFFH_STATUS = NFFH_SetDropPed
|
|
SET_ENTITY_VELOCITY(TestPeds[0].Ped, gInitialFallVelocity)
|
|
ENDIF
|
|
ELSE
|
|
NFFH_STATUS = NFFH_SetDropPed
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE NFFH_SetDropPed
|
|
IF !IS_PED_INJURED(TestPeds[0].ped)
|
|
SET_PED_GRAVITY(TestPeds[0].Ped, TRUE)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(TestPeds[0].Ped, FALSE)
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOr
|
|
|
|
NFFH_STATUS = NFFH_SetPedPos
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE NM_STANDING_ON_MOVING_VEHICLE
|
|
DRAW_DEBUG_TEXT_2D ("Balance Behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
IF IS_CAM_ACTIVE(TestCams[FixedCamera].cam)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
MODEL_NAMES CurrentVehicleModel
|
|
vector vModelMin, vModelMax, vVehicleCoords
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_VEHICLES -1
|
|
TestVehicles[0].VehicleModel = NMVehicleModelSelection ( )
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
ENDFOR
|
|
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
ENDIF
|
|
wait(0)
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
|
|
CurrentVehicleModel = GET_ENTITY_MODEL (TestVehicles[0].Vehicle)
|
|
GET_MODEL_DIMENSIONS (CurrentVehicleModel, vModelMin, vModelMax)
|
|
vVehicleCoords = GET_ENTITY_COORDS (TestVehicles[0].Vehicle )
|
|
|
|
vVehicleCoords.z += vModelMax.z //set the ped on the roof of the vehicle assuming the roof is above the root bone
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, vVehicleCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
|
|
CurrentVehicleModel = GET_ENTITY_MODEL (TestVehicles[0].Vehicle)
|
|
GET_MODEL_DIMENSIONS (CurrentVehicleModel, vModelMin, vModelMax)
|
|
vVehicleCoords = GET_ENTITY_COORDS (TestVehicles[0].Vehicle )
|
|
|
|
vVehicleCoords.z += vModelMax.z //set the ped on the roof of the vehicle assuming the roof is above the root bone
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, vVehicleCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
|
|
CLEAR_PED_TASKS (scplayer)
|
|
|
|
TEST_SEQ = DRIVE_TO_POINT_SEQUENCE (TestVehicles[0].vehicle, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS (TestVehicles[0].vehicle, <<0.0, 20.0, 0.0>> ), gVehicleSpeed)
|
|
|
|
ENDIF
|
|
|
|
PedPerformsSequence (scplayer, TEST_SEQ)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_PUNCHED_LOW_HEALTH
|
|
DRAW_DEBUG_TEXT_2D ("Balance / FLinch Behaviour", vBehaviourTextScreenPos)
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
IF IS_CAM_ACTIVE(TestCams[FixedCamera].cam)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
IF NOT IS_BUTTON_PRESSED (PAD1, LEFTSHOULDER2)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan, TRUE, TRUE, FALSE)
|
|
|
|
gtestPan += 180
|
|
|
|
TargetPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan, TRUE, TRUE, FALSE)
|
|
|
|
gtestPan -= 180
|
|
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05 )
|
|
DRAW_LINE (GunPos, TargetPos)
|
|
|
|
//gTestPedheading = (GET_HEADING_FROM_VECTOR_2D (GunPos.x, TargetPos.y) )
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_ENTITY_COORDS(scplayer, <<GunPos.x, GunPos.y, GunPos.z-1>> )
|
|
SET_ENTITY_HEADING (scplayer, gtestPan -90 )
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
IF NOT IS_BUTTON_PRESSED (PAD1, LEFTSHOULDER2)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
BLOCK_PEDS_TEMP_EVENTS (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
|
|
IF NOT IS_PED_INJURED(TestPeds[0].ped)
|
|
SET_ENTITY_HEALTH(TestPeds[0].ped, 200)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_JUMPING_FROM_VEHICLE
|
|
DRAW_DEBUG_TEXT_2D ("Jump roll from road vehicle", vBehaviourTextScreenPos)
|
|
|
|
MODEL_NAMES current_model
|
|
|
|
SWITCH NJFV_Status
|
|
CASE NJFV_Setup
|
|
current_model = NMVehicleModelSelection ()
|
|
|
|
createDebugVehicle(current_model, TestVehicles[0].Vehicle )
|
|
NJFV_Status = NJFV_Run
|
|
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer , TestVehicles[0].Vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer , TestVehicles[0].Vehicle)
|
|
ENDIF
|
|
SET_ENTITY_COORDS (TestVehicles[0].Vehicle, <<-19, 43.78, 6.13>> )
|
|
SET_ENTITY_HEADING (TestVehicles[0].Vehicle, 180)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NJFV_Run
|
|
IF IS_VEHICLE_DRIVEABLE (TestVehicles[0].Vehicle)
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
SET_VEHICLE_FORWARD_SPEED (TestVehicles[0].Vehicle, gVehicleSpeed)
|
|
ENDIF
|
|
|
|
if IS_PED_RAGDOLL (scplayer)
|
|
NJFV_Status = NJFV_WAIT
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
NJFV_Status = NJFV_Setup
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NJFV_WAIT
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
NJFV_Status = NJFV_Setup
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE NM_GRAB_VEHICLE_DOOR
|
|
DRAW_DEBUG_TEXT_2D ("Grab behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ELSE
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
FOR Index = 0 to MAX_NUMBER_OF_VEHICLES -1
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles[0].VehicleCoords )
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles[0].VehicleHeading )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
|
|
IF NOT IS_PED_INJURED (scplayer) AND NOT IS_PED_INJURED(TestPeds[0].ped)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles[0].VehicleCoords )
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles[0].VehicleHeading )
|
|
|
|
TASK_ENTER_VEHICLE(TestPeds[0].Ped, TestVehicles[0].Vehicle, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER, PEDMOVEBLENDRATIO_RUN, ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_JACK_ANYONE )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF gGrabVehicleDoorLockDoor
|
|
SET_VEHICLE_DOORS_LOCKED(TestVehicles[0].Vehicle, VEHICLELOCK_LOCKED)
|
|
ELSE
|
|
SET_VEHICLE_DOORS_LOCKED(TestVehicles[0].Vehicle, VEHICLELOCK_NONE)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_EXPLOSION
|
|
|
|
DRAW_DEBUG_TEXT_2D ("Roll up, Writhe, Windmill and Flinch behaviour", vBehaviourTextScreenPos)
|
|
vector vExplosionPos, vPedPos
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE) OR (bTestVehicleExplosion != bWasTestVehicleExplosion)
|
|
bWasTestVehicleExplosion = bTestVehicleExplosion
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
SET_ENTITY_HEALTH (TestPeds[0].ped , giPedHealth )
|
|
ENDIF
|
|
|
|
IF (bTestVehicleExplosion)
|
|
TestVehicles[0].VehicleModel = NMVehicleModelSelection ( )
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[0] )
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (TestPeds[0].ped, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (TestPeds[0].ped, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//track ped with cam
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
IF IS_CAM_ACTIVE(TestCams[FixedCamera].cam)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// IF (bTestVehicleExplosion)
|
|
// IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle)
|
|
// IF NOT HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT(TestVehicles[0].Vehicle)
|
|
// vExplosionPos = GET_POINT_AROUND_VEHICLE_IN_SPHERICAL_COORDS (TestVehicles[0].Vehicle,gtestZoom, gtestPitch, gtestPan )
|
|
// vPedPos = GET_ENTITY_COORDS (TestVehicles[0].Vehicle )
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
vExplosionPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped,gtestZoom, gtestPitch, gtestPan )
|
|
vPedPos = GET_ENTITY_COORDS (TestPeds[0].ped )
|
|
SET_PED_CAN_EVASIVE_DIVE (TestPeds[0].ped, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
//ENDIF
|
|
|
|
DRAW_DEBUG_SPHERE (vExplosionPos, 0.05 )
|
|
DRAW_LINE (vExplosionPos, vPedPos)
|
|
|
|
fExplosionDistance = VDIST2 (vPedPos, vExplosionPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
ADD_EXPLOSION (vExplosionPos, SELECT_EXPLOSION_TYPE(), ExplosionScale, true, bNoExplosionEffects )
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_ON_FIRE
|
|
DRAW_DEBUG_TEXT_2D ("Writhe behaviour", vBehaviourTextScreenPos)
|
|
IF DOES_CAM_EXIST (TestCams[FixedCamera].cam)
|
|
IF IS_CAM_ACTIVE(TestCams[FixedCamera].cam)
|
|
POINT_CAM_AT_ENTITY(TestCams[FixedCamera].cam, TestPeds[0].ped, <<0.0, 0.0, 0.0>>)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
START_ENTITY_FIRE (TestPeds[0].ped)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
// IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
// SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
// SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
// ELSE
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
// ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_RELAX_TEST
|
|
DRAW_DEBUG_TEXT_2D ("Relax behaviour", vBehaviourTextScreenPos)
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_RELAX_MSG)
|
|
SET_NM_MESSAGE_FLOAT (NM_RELAX_RELAXATION, NM_Relaxation)
|
|
SET_NM_MESSAGE_BOOL (NM_RELAX_HOLD_POSE,bHoldPose )
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_PED_TO_RAGDOLL (TestPeds[0].ped, 4000, 10000, TASK_NM_SCRIPT)
|
|
GIVE_PED_NM_MESSAGE (TestPeds[0].ped)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_FLINCH
|
|
VECTOR vImpactPos
|
|
DRAW_DEBUG_TEXT_2D ("Flinch behaviour", vBehaviourTextScreenPos)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
vImpactPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped , gtestZoom, gtestPitch, gtestPan)
|
|
vPedPos = GET_ENTITY_COORDS (TestPeds[0].ped )
|
|
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped )
|
|
DRAW_DEBUG_SPHERE (vImpactPos, 0.05 )
|
|
DRAW_LINE (vImpactPos, vPedPos)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_FLINCH_MSG)
|
|
SET_NM_MESSAGE_BOOL (NM_FLINCH_RIGHT_HANDED, bNM_FLINCH_RIGHT_HANDED)
|
|
SET_NM_MESSAGE_BOOL (NM_FLINCH_LEFT_HANDED, bNM_FLINCH_LEFT_HANDED)
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_HAND_DIST_LEFTRIGHT, fNM_FLINCH_HAND_DIST_LEFTRIGHT)
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_HAND_DIST_FRONTBACK, fNM_FLINCH_HAND_DIST_FRONTBACK )
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_HAND_DIST_VERTICAL, fNM_FLINCH_HAND_DIST_VERTICAL )
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_BODY_STIFFNESS, fNM_FLINCH_BODY_STIFFNESS )
|
|
SET_NM_MESSAGE_VEC3(NM_FLINCH_POS_VEC3, vImpactPos )
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_BODY_DAMPING, fNM_FLINCH_BODY_DAMPING )
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_BACK_BEND, fNM_FLINCH_BACK_BEND )
|
|
SET_NM_MESSAGE_BOOL (NM_FLINCH_USE_LEFT_ARM, bNM_FLINCH_USE_LEFT_ARM)
|
|
SET_NM_MESSAGE_BOOL (NM_FLINCH_USE_RIGHT_ARM, bNM_FLINCH_USE_RIGHT_ARM)
|
|
SET_NM_MESSAGE_FLOAT(NM_FLINCH_NOISE_SCALE, fNM_FLINCH_NOISE_SCALE )
|
|
SET_NM_MESSAGE_BOOL (NM_FLINCH_NEW_HIT, bNM_FLINCH_NEW_HIT)
|
|
SET_NM_MESSAGE_INT (NM_FLINCH_TURN_TOWARDS, iNM_FLINCH_TURN_TOWARDS)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_PED_TO_RAGDOLL (TestPeds[0].ped, MIN_TASK_TIME, MAX_TASK_TIME, TASK_NM_SCRIPT)
|
|
GIVE_PED_NM_MESSAGE (TestPeds[0].ped)
|
|
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_BALANCE_MSG)
|
|
GIVE_PED_NM_MESSAGE (TestPeds[0].ped)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_BALANCE_TEST
|
|
DRAW_DEBUG_TEXT_2D ("Balance behaviour", vBehaviourTextScreenPos)
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
CREATE_NM_MESSAGE (NM_START_START, NM_BALANCE_MSG)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_PED_TO_RAGDOLL (TestPeds[0].ped, MIN_TASK_TIME, MAX_TASK_TIME, TASK_NM_SCRIPT)
|
|
GIVE_PED_NM_MESSAGE (TestPeds[0].ped)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_BINDPOSE_TEST
|
|
DRAW_DEBUG_TEXT_2D ("BindPose transition behaviour", vBehaviourTextScreenPos)
|
|
|
|
IF(bNM_BINDPOSE_FIRST_TIME)
|
|
TASK_BIND_POSE(TestPeds[0].Ped, bDO_BLEND_FROM_NM)
|
|
bNM_BINDPOSE_FIRST_TIME = FALSE
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
TOGGLE_NM_BINDPOSE_TASK(TestPeds[0].ped, bDO_BLEND_FROM_NM)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
bNM_BINDPOSE_FIRST_TIME = TRUE
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
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 (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_ATTACH_UNDERNEATH
|
|
DRAW_DEBUG_TEXT_2D("Attach underneath test", vBehaviourTextScreenPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT bIsTestRunning
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles[0].VehicleCoords )
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles[0].VehicleHeading )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle)
|
|
SET_ENTITY_INVINCIBLE(TestPeds[0].ped, true)
|
|
TASK_NM_ATTACH_PED_TO_ENTITY(TestPeds[0].ped, TestVehicles[0].Vehicle, 0, <<0.0, -0.5, 0.0>>, <<0.0, 0.0, 0.0>>, NAC_LEFT_FOOT | NAC_RIGHT_FOOT| NAC_LEFT_HAND| NAC_RIGHT_HAND
|
|
| NAC_LEFT_FOREARM | NAC_RIGHT_FOREARM | NAC_LEFT_SHIN | NAC_RIGHT_SHIN
|
|
| NAC_LEFT_THIGH | NAC_RIGHT_THIGH, "nm", "hang_truck_geton", "hang_truck_idle" )
|
|
SET_ENTITY_COLLISION(TestPeds[0].ped, FALSE)
|
|
bIsTestRunning = true
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
IF bIsTestRunning
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COLLISION(TestPeds[0].ped, TRUE)
|
|
CLEAR_PED_TASKS(TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
bIsTestRunning = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_ATTACH_IDLE
|
|
DRAW_DEBUG_TEXT_2D("Attach idle test", vBehaviourTextScreenPos)
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT bIsTestRunning
|
|
IF NOT IS_PED_INJURED (scplayer)
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
IF NOT IS_PED_SITTING_IN_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle )
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles[0].VehicleCoords )
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles[0].VehicleHeading )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
if IS_VEHICLE_DRIVEABLE(TestVehicles[0].Vehicle)
|
|
|
|
SET_ENTITY_INVINCIBLE(TestPeds[0].ped, true)
|
|
SET_ENTITY_COLLISION(TestPeds[0].ped, FALSE)
|
|
//TASK_NM_ATTACH_PED_TO_ENTITY(TestPeds[0].ped, TestVehicles[0].Vehicle, 1, /*<<0.5, 2.0, 2.5>>*/ <<0.0,- 0.35, 0.0>>, <<0.0, 0.0, 0.0>>, NAC_LEFT_FOOT | NAC_RIGHT_FOOT| NAC_LEFT_HAND| NAC_RIGHT_HAND, "nm", "stand_truck_getin", "stand_truck_loop" )
|
|
|
|
TASK_ENTER_VEHICLE(TestPeds[0].ped, TestVehicles[0].Vehicle, 1, VS_EXTRA_LEFT_1, 0.0, ECF_WARP_PED )
|
|
|
|
bIsTestRunning = true
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
IF bIsTestRunning
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
SET_ENTITY_COLLISION(TestPeds[0].ped, TRUE)
|
|
CLEAR_PED_TASKS(TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
ENDIF
|
|
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index] )
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
bIsTestRunning = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NM_WALKING_DOWN_HILL
|
|
DRAW_DEBUG_TEXT_2D ("Walking down ski route", vBehaviourTextScreenPos)
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
REQUEST_RAGDOLL_BOUNDS_UPDATE(TestPeds[0].ped)
|
|
ENDIF
|
|
|
|
SWITCH NRS_Status
|
|
CASE NRS_GivePedTask
|
|
IF NOT IS_PED_INJURED(TestPeds[0].ped)
|
|
TEST_SEQ = TEST_ROUTE(WALK_DOWN_HILL_DYNAMIC_MOVE_TYPE)
|
|
PedPerformsSequence (TestPeds[0].ped, TEST_SEQ)
|
|
ENDIF
|
|
NRS_Status = NRS_ShootPed
|
|
BREAK
|
|
|
|
CASE NRS_ShootPed
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
//ADD_RELATIONSHIP_GROUP (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
CLEAR_PED_TASKS(TestPeds[0].ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, Route[0].RouteNode)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
NRS_Status = NRS_GivePedTask
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED (TestPeds[0].ped)
|
|
|
|
GunPos = GET_POINT_AROUND_PED_IN_SPHERICAL_COORDS (TestPeds[0].ped, gtestZoom, gtestPitch, gtestPan)
|
|
TargetPos = SELECT_PED_COMPONENT (TestPeds[0].ped) // GET_OFFSET_FROM_PED_IN_WORLD_COORDS (TestPeds[0].ped, SELECT_PED_COMPONENT (TestPeds[0].ped) )
|
|
|
|
secondtargetPos = (GunPos + 2.0*( TargetPos - GunPos ))
|
|
|
|
IF NOT IS_PED_RAGDOLL (TestPeds[0].ped)
|
|
DRAW_DEBUG_SPHERE (GunPos, 0.05, 0, 0, 255,255 )
|
|
DRAW_DEBUG_SPHERE (TargetPos, 0.05, 255, 0,0,255 )
|
|
DRAW_DEBUG_LINE_WITH_TWO_COLOURS (GunPos, secondtargetPos, 0,0,255, 255, 255, 0, 0, 255 )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
gbshootPed = true
|
|
|
|
IF (gbshootPed)
|
|
SHOOT_SINGLE_BULLET_BETWEEN_COORDS (GunPos, secondtargetPos, 0, true )
|
|
gbshootPed = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE NM_TRUCK_BED
|
|
DRAW_DEBUG_TEXT_2D ("Truck Bed", vBehaviourTextScreenPos)
|
|
|
|
SWITCH NJFV_Status
|
|
|
|
CASE NJFV_Setup
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index] )
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS(Testpeds[index] )
|
|
ENDFOR
|
|
|
|
SET_ENTITY_COORDS (TestPeds[0].ped, TestPeds[0].PedsCoords + vOffset)
|
|
SET_ENTITY_HEADING (TestPeds[0].ped, TestPeds[0].PedHeading)
|
|
|
|
IF bFlatbedTruck = TRUE
|
|
TestVehicles[0].VehicleModel = PHANTOM
|
|
TestVehicles[1].VehicleModel = TRFLAT
|
|
ELSE
|
|
TestVehicles[0].VehicleModel = BODHI2
|
|
TestVehicles[1].VehicleModel = DUMMY_MODEL_FOR_SCRIPT
|
|
ENDIF
|
|
|
|
FOR index = 0 to MAX_NUMBER_OF_VEHICLES - 1
|
|
CREATE_VEHICLE_ENTITY (TestVehicles[index])
|
|
ENDFOR
|
|
|
|
CLEAR_PED_TASKS (scplayer)
|
|
IF IS_VEHICLE_DRIVEABLE(TestVehicles[0].vehicle)
|
|
SET_ENTITY_COORDS (TestVehicles[0].vehicle, TestVehicles[0].VehicleCoords)
|
|
SET_ENTITY_HEADING (TestVehicles[0].vehicle, TestVehicles[0].VehicleHeading)
|
|
SET_PED_INTO_VEHICLE (scplayer, TestVehicles[0].vehicle)
|
|
SET_VEHICLE_NEEDS_TO_BE_HOTWIRED (TestVehicles[0].vehicle, FALSE)
|
|
SET_VEHICLE_ENGINE_ON (TestVehicles[0].vehicle, TRUE, TRUE)
|
|
|
|
IF DOES_ENTITY_EXIST(TestVehicles[1].Vehicle) AND NOT IS_VEHICLE_ATTACHED_TO_TRAILER(TestVehicles[0].Vehicle)
|
|
ATTACH_VEHICLE_TO_TRAILER(TestVehicles[0].Vehicle, TestVehicles[1].Vehicle)
|
|
ENDIF
|
|
ENDIF
|
|
WAIT(0)
|
|
|
|
NJFV_Status = NJFV_Run
|
|
BREAK
|
|
|
|
CASE NJFV_Run
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
NJFV_Status = NJFV_Wait
|
|
ELIF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
NJFV_Status = NJFV_Setup
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE NJFV_Wait
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
NJFV_Status = NJFV_Setup
|
|
ENDIF
|
|
|
|
SET_VEHICLE_FORWARD_SPEED (TestVehicles[0].Vehicle, gVehicleSpeed)
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE NM_COVER
|
|
DRAW_DEBUG_TEXT_2D ("Cover", vBehaviourTextScreenPos)
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, CROSS)
|
|
IF NOT IS_PED_INJURED (TestPeds[1].Ped)
|
|
ELECTROCUTE_PED (TestPeds[1].Ped, nElectrocuteTime, nElectrocuteTime)
|
|
ENDIF
|
|
|
|
SET_PED_RAGDOLL_ON_COLLISION (TestPeds[0].Ped, bRagdollOnCollision)
|
|
|
|
SETTIMERA(0)
|
|
bCheckShouldSeekCover = TRUE
|
|
ENDIF
|
|
|
|
IF TIMERA() > nElectrocuteWaitTime AND bCheckShouldSeekCover = TRUE
|
|
IF NOT IS_PED_INJURED (TestPeds[0].Ped)
|
|
TASK_SEEK_COVER_FROM_PED (TestPeds[0].Ped, scplayer, -1)
|
|
ENDIF
|
|
|
|
bCheckShouldSeekCover = FALSE
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, DPADDOWN)
|
|
IF NOT IS_PED_INJURED (TestPeds[0].Ped)
|
|
SET_PED_TO_RAGDOLL (TestPeds[0].Ped, nElectrocuteTime, nElectrocuteTime, TASK_RELAX)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED (PAD1, SQUARE)
|
|
Cleanup_Scenario_Entities ()
|
|
TestPeds[0].PedModel = PED_MODEL_SELECTOR()
|
|
FOR index = 0 to MAX_NUMBER_OF_PEDS - 1
|
|
CREATE_PED_ENTITY(Testpeds[index])
|
|
GiveBlipsToPedsGrps (Testpeds[index])
|
|
ALTER_COMBAT_STATS (Testpeds[index])
|
|
SWAP_PED_WEAPONS (Testpeds[index])
|
|
Block_Peds_Temp_Events (Testpeds[index], TRUE)
|
|
SET_PED_DEFENSIVE_AREAS (Testpeds[index])
|
|
ENDFOR
|
|
IF NOT IS_PED_INJURED (TestPeds[0].Ped)
|
|
SET_ENTITY_COORDS (TestPeds[0].Ped, TestPeds[0].PedsCoords + vOffset)
|
|
SET_ENTITY_HEADING (TestPeds[0].Ped, TestPeds[0].PedHeading)
|
|
SET_PED_RAGDOLL_ON_COLLISION (TestPeds[0].Ped, FALSE)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED (TestPeds[1].Ped)
|
|
SET_ENTITY_COORDS (TestPeds[1].Ped, TestPeds[1].PedsCoords + vOffsetVec1)
|
|
SET_ENTITY_HEADING (TestPeds[1].Ped, TestPeds[1].PedHeading)
|
|
SET_PED_CONFIG_FLAG (TestPeds[1].Ped, PCF_AllowNearbyCoverUsage, TRUE)
|
|
ENDIF
|
|
|
|
CLEAR_PED_TASKS (scplayer)
|
|
SET_ENTITY_COORDS (scplayer, <<-36.8, -26.1, 7.1>> + vOffsetVec2)
|
|
SET_ENTITY_HEADING (scplayer, 0.0)
|
|
|
|
bCheckShouldSeekCover = FALSE
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_SLIDE_TEST
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer) AND IS_BUTTON_JUST_PRESSED(PAD1, CROSS)
|
|
SET_ENTITY_COORDS(scplayer, <<18.86, -272.20, 21.68>>)
|
|
SET_ENTITY_HEADING(scplayer, gShot2OrientationOffset)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE NM_WARP_TO_INTERIOR
|
|
|
|
IF NOT IS_ENTITY_DEAD(scplayer)
|
|
SET_ENTITY_COORDS(scplayer, <<152.644, -132.157, 29.47>>)
|
|
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
|
|
gbPlayerShouldBeAtCamPos = TRUE
|
|
gbPrintGlobalText = TRUE
|
|
bAutoSwitchToTrackCam = FALSE
|
|
|
|
INITIALISE_PED_DATA (Testpeds)
|
|
INITIALISE_VEHICLE_DATA (TestVehicles)
|
|
INITIALISE_CAM_DATA(TestCams )
|
|
INITIALISE_OBJECT_DATA (TestObject)
|
|
|
|
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 (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
|
|
|
|
for index = 0 to MAX_NUMBER_OF_OBJECTS -1
|
|
CREATE_OBJECT_ENTITY(TestObject[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
|
|
CAM_MANAGER (TestCams[TrackingCamera].cam, TestCams[FixedCamera].cam, MAX_NUMBER_OF_PEDS, TestPeds)
|
|
|
|
//NM_Temp_Run_Scenario_Tracking_Cam (TestPeds, MAX_NUMBER_OF_PEDS, TestCams[TrackingCamera].cam, bAutoSwitchToTrackCam)
|
|
|
|
//bAutoSwitchToTrackCam = FALSE
|
|
|
|
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
|
|
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, TRUE)
|
|
ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE)
|
|
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE)
|
|
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE)
|
|
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE)
|
|
|
|
SET_DEBUG_ACTIVE (TRUE)
|
|
|
|
SETUP_MISSION_XML_MENU (XMLMenu, KEY_Q)
|
|
|
|
SETUP_AREA_FOR_MISSION (<<0.0, 0.0, 0.0>>)
|
|
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
SET_PLAYER_COLISION(scplayer, true)
|
|
|
|
SET_ENTITY_INVINCIBLE(scplayer, TRUE)
|
|
|
|
// Make sure the ski route control points contain valid data before creating the RAG widgets.
|
|
RESET_NM_SKI_TEST_ROUTE()
|
|
//Sets the test widget for this script
|
|
CREATE_TEST_WIDGET ()
|
|
|
|
SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY")
|
|
WHILE TRUE
|
|
|
|
IF NOT DOES_ENTITY_EXIST(scplayer)
|
|
//Gets a reference to the player
|
|
Get_The_Player ()
|
|
|
|
SET_PLAYER_COLISION(scplayer, true)
|
|
ENDIF
|
|
|
|
// Don't want it getting dark in debug level.
|
|
SET_CLOCK_TIME(12, 00, 00)
|
|
|
|
// controls the help text hides if xml menu is active
|
|
TEXT_CONTROLLER ()
|
|
|
|
// Can set all scenario peds invincible from the widget
|
|
Set_Scenario_Peds_Invincible (TestPeds, MAX_NUMBER_OF_PEDS, gsetpedsinvincible )
|
|
|
|
//User can create a debug cam for setting sceanrios
|
|
Temp_Create_Debug_Cam (TestCams[FixedCamera])
|
|
|
|
//Runs the selected option from the XML menu
|
|
Run_Selection_From_XML_input ()
|
|
//Checks that a valid selection has been input and runs the scenario
|
|
IF (gcurrentselection <> InvalidSelection)
|
|
|
|
Draw_Debug_Info ( )
|
|
|
|
//Sets the test scenario into debug mode
|
|
Set_To_Debug ()
|
|
|
|
if (gRun_debuggig)
|
|
Temp_Debug_Scenario (TestPeds, TestVehicles, Route, TestCams[FixedCamera].cam, TestVehicles[0].VehicleModel) //Allows the entities in the scenario to be adjusted
|
|
Print_Scenario_Data (TestPeds, TestVehicles, Route, TestCams)
|
|
ENDIF
|
|
|
|
Run_Test_Scenario ()
|
|
|
|
NM_PRINT_ACTIVE_TEST (Bscenario_running, gRun_debuggig, TestCams[TrackingCamera].cam,TestCams[FixedCamera].cam )
|
|
ENDIF
|
|
|
|
WAIT (0)
|
|
|
|
Terminate_test_script ()
|
|
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|