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

1086 lines
35 KiB
Python
Executable File

//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : test_helicopter.sc //
// AUTHOR : Justin Wheelock //
// DESCRIPTION : This is a test script to test the functionality of a //
// helicopter in persuit of a player. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_path.sch"
USING "commands_ped.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_physics.sch"
USING "commands_decorator.sch"
USING "model_enums.sch"
USING "rgeneral_include.sch"
// Data for the setup
// -the heli to be used
// -the driver to go into said car
STRUCT HeliVehicleData
VEHICLE_INDEX vindex
PED_INDEX pindex[5]
ENDSTRUCT
HeliVehicleData vehicleData[10]
int iSpawnedHelis = 0
int iSelectedHeli = 0
int iDriverIndex = 0
int iNumPassengers = 0
//WIDGET_GROUP_ID WidgetID
VECTOR VecTestingAreaLocation = <<1600, 3211, 40.5>>
//FLOAT zHeight = 20.0
FLOAT fHeliSpeed = 20.0
FLOAT fRadius = 15.0
FLOAT fHeight = 0.0
FLOAT fTurbulence = 1.0
FLOAT fPrevioudTurbulence = 1.0
BOOL bDriveBy = FALSE
BOOL bGotoPlayer = FALSE
BOOL bGotoPlayerAndLand = FALSE
BOOL bCombatPlayer = FALSE
BOOL bFleePlayer = FALSE
BOOL bFollowPlayer = FALSE
BOOL bCirclePlayer = FALSE
BOOL bAttackPlayer = FALSE
BOOL bEscortPlayer = FALSE
BOOL bAttackCoord = FALSE
BOOL bProtectPlayer = FALSE
BOOL bTeleportAllToTestingArea = FALSE
BOOL bToggleRockets = FALSE
BOOL bUseRockets = FALSE
BOOL bUseSearchLight = FALSE
BOOL bUseSearchLightPreviousValue = FALSE
BOOL bSearchLightAlwaysOn = FALSE
BOOL bToggleHeightMapFollowing = FALSE
BOOL bDisableHeightMap = TRUE
BOOL bSpawn = FALSE
BOOL bDelete = FALSE
BOOL bExecute = TRUE
BOOL bQueryMissionType = FALSE
MODEL_NAMES eDriverModel = S_M_M_Pilot_02
MODEL_NAMES ePassengerModel = S_F_Y_STRIPPER_01
int iSelectedHelicopter = 0
//
//
PROC SET_HELI_PED_COMBAT_AI(PED_INDEX pedId)
GIVE_DELAYED_WEAPON_TO_PED(pedId, WEAPONTYPE_SNIPERRIFLE, 300, TRUE)
SET_PED_COMBAT_ATTRIBUTES(pedId, CA_ALWAYS_FIGHT, TRUE)
SET_PED_COMBAT_ATTRIBUTES(pedId, CA_ALWAYS_FIGHT, FALSE)
SET_PED_COMBAT_ATTRIBUTES(pedId, CA_CAN_FIGHT_ARMED_PEDS_WHEN_NOT_ARMED, true)
SET_PED_COMBAT_MOVEMENT(pedId, CM_WILLADVANCE)
SET_PED_COMBAT_ABILITY(pedId, CAL_AVERAGE)
SET_PED_COMBAT_RANGE(pedId, CR_FAR)
SET_PED_TARGET_LOSS_RESPONSE(pedId, TLR_NEVER_LOSE_TARGET)
SET_PED_HIGHLY_PERCEPTIVE(pedId, TRUE)
SET_PED_CAN_BE_TARGETTED(pedId, TRUE)
SET_PED_SEEING_RANGE(pedId, 300+100.0)
// SET_PED_VISUAL_FIELD_MIN_ANGLE(pedId, -90.0)
// SET_PED_VISUAL_FIELD_MAX_ANGLE(pedId, 90.0)
// SET_PED_VISUAL_FIELD_MIN_ELEVATION_ANGLE(pedId, -90.0)
// SET_PED_VISUAL_FIELD_MAX_ELEVATION_ANGLE(pedId, 90.0)
SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE(pedId, 400.0)
SET_COMBAT_FLOAT(pedId, CCF_HELI_SENSES_RANGE, 400.0)
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(pedId, true)
// Make peds a bit tougher.
SET_ENTITY_MAX_HEALTH(pedId, 250)
SET_ENTITY_HEALTH(pedId, 250)
SET_PED_ARMOUR(pedId, 250)
SET_PED_RELATIONSHIP_GROUP_HASH(pedId, RELGROUPHASH_PLAYER)
ENDPROC
PROC DELETE_HELIS()
INT i
FOR i = 0 to iSpawnedHelis
IF DOES_ENTITY_EXIST(vehicleData[i].vindex)
DELETE_VEHICLE(vehicleData[i].vindex)
ENDIF
int k
FOR k = 0 TO 5 - 1
IF DOES_ENTITY_EXIST(vehicleData[i].pindex[k])
DELETE_PED(vehicleData[i].pindex[k])
ENDIF
ENDFOR
ENDFOR
iSpawnedHelis = 0
ENDPROC
PROC GENERATE_HELI_LOCATION(VECTOR& heliPosition)
// grab the player's position for offsetting the scenario
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
VECTOR playerForward = GET_ENTITY_FORWARD_VECTOR(GET_PLAYER_PED(GET_PLAYER_INDEX()))
Vector g_up = <<0, 0, 1.0>>
heliPosition = playerPosition + ( playerForward * fRadius ) + (g_up * fHeight)
ENDPROC // GENERATE_HELI_LOCATION
PROC CREATE_HELI()
MODEL_NAMES eHeliModel = ANNIHILATOR
IF iSelectedHelicopter = 1
eHeliModel = BUZZARD
ELIF iSelectedHelicopter = 2
eHeliModel = BUZZARD
elif iSelectedHelicopter = 3
eHeliModel = CARGOBOB
ENDIF
// grab the car model
REQUEST_MODEL(eHeliModel)
// grab the driver model
REQUEST_MODEL(eDriverModel)
REQUEST_MODEL(ePassengerModel)
// load them
WHILE NOT (HAS_MODEL_LOADED(eHeliModel) AND HAS_MODEL_LOADED(eDriverModel) AND HAS_MODEL_LOADED(ePassengerModel))
WAIT(0)
ENDWHILE // models loaded
// better have a player at this point
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
FLOAT playerHeading = GET_ENTITY_HEADING(GET_PLAYER_PED(GET_PLAYER_INDEX()))
FLOAT heliHeading = (playerHeading + 180 ) % 360
VECTOR heliPosition
GENERATE_HELI_LOCATION(heliPosition)
// make the car and put in a driver
vehicleData[iSpawnedHelis].vindex = CREATE_VEHICLE(
eHeliModel,
heliPosition,
heliHeading )
IF DOES_ENTITY_EXIST(vehicleData[iSpawnedHelis].vindex)
SET_ENTITY_VISIBLE(vehicleData[iSpawnedHelis].vindex, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehicleData[iSpawnedHelis].vindex, FALSE)
vehicleData[iSpawnedHelis].pindex[iDriverIndex] = CREATE_PED_INSIDE_VEHICLE(
vehicleData[iSpawnedHelis].vindex,
PEDTYPE_MISSION,
eDriverModel,
VS_DRIVER )
int i = 0
FOR i = 0 TO iNumPassengers - 1
int passengerIndex = i + 1
VEHICLE_SEAT seatIndex = INT_TO_ENUM(VEHICLE_SEAT, ENUM_TO_INT(VS_DRIVER)+ passengerIndex)
IF IS_VEHICLE_SEAT_FREE(vehicleData[iSpawnedHelis].vindex, seatIndex )
vehicleData[iSpawnedHelis].pindex[passengerIndex] = CREATE_PED_INSIDE_VEHICLE(
vehicleData[iSpawnedHelis].vindex,
PEDTYPE_MISSION,
ePassengerModel,
seatIndex )
//SET_HELI_PED_COMBAT_AI(vehicleData[iSpawnedHelis].pindex[passengerIndex])
ENDIF
ENDFOR
iSelectedHeli = iSpawnedHelis
iSpawnedHelis++
ENDIF // car and driver set up
ENDIF // player uninjured
ENDIF // player exists
ENDPROC // CREATE_HELI
PROC TASK_HELI_COMBAT_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
/*
int k
FOR k = 0 TO 5 - 1
IF DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[k])
TASK_COMBAT_PED(vehicleData[iSelectedHeli].pindex[k], PLAYER_PED_ID())
ENDIF
ENDFOR
*/
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
Vector g_up = <<0, 0, 1.0>>
VECTOR targetPosition = playerPosition + (g_up * fHeight)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, NULL, targetPosition,
MISSION_GOTO, 5.0, 0.1, GET_HEADING_FROM_ENTITIES(vehicleData[iSelectedHeli].vindex, PLAYER_PED_ID()), 33, 3)
//TASK_DRIVE_BY(vehicleData[iSelectedHeli].pindex[iDriverIndex], PLAYER_PED_ID(), null, <<0,0,0>>, 5000, 100, TRUE, FIRING_PATTERN_BURST_FIRE_HELI)
//TASK_HELI_MISSION(sLocalData.niPed[0], sLocalData.niCutSceneChopper, NULL, NULL, <<356.0887, 1918.2512, 100.0761>>, MISSION_GOTO, 15.0, 100.0, -1, 100, 50)
//TASK_HELI_COMBAT_PLAYER()(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, PLAYER_PED_ID(), <<0.0,0.0,0.0>>, MISSION_GOTO, 20.0, 30.0, -1.0, 40, 40)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_GOTO_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
Vector g_up = <<0, 0, 1.0>>
VECTOR targetPosition = playerPosition + (g_up * fHeight)
//TASK_HELI_MISSION(ped[ped_pilot].id, vehicle[vehChopper].id,null,null,<<-1315.0525, -238.1505, 59.0535>>,MISSION_GOTO,4,3,-54,20,20)
//TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex,null,null,<<-1315.0525, -238.1505, 59.0535>>,MISSION_GOTO,4,3,-54,20,20)
// TASK_GO_TO_COORD_ANY_MEANS(vehicleData[iSelectedHeli].pindex[iDriverIndex], targetPosition, 20.0, vehicleData[iSelectedHeli].vindex)
//TASK_GO_TO_COORD_ANY_MEANS(vehicleData[iSelectedHeli].pindex[iDriverIndex], targetPosition, 20.0, NULL)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, NULL, targetPosition, MISSION_GOTO, 20.0, 30.0, -1.0, 0, 0)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_GOTO_PLAYER_AND_LAND()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
Vector g_up = <<0, 0, 1.0>>
VECTOR targetPosition = playerPosition + (g_up * fHeight)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, NULL, targetPosition, MISSION_LAND, 30.0, 30.0, -1.0, 30, 30)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_PROTECT_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, PLAYER_PED_ID(), <<0.0,0.0,0.0>>, MISSION_PROTECT, 30.0, fRadius, -1.0, CEIL(fHeight), CEIL(fHeight))
//TASK_HELI_MISSION(pedPilot, vehChopper, NULL, PLAYER_PED_ID(), (<<0.0,0.0,0.0>>), MISSION_PROTECT, 30.0, 25, -1.0, CEIL(35), CEIL(35))
//TASK_VEHICLE_HELI_PROTECT(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, PLAYER_PED_ID(), fHeliSpeed, DF_SteerAroundObjects, fRadius, CEIL(fHeight))
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(vehicleData[iSelectedHeli].pindex[iDriverIndex], true)
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehicleData[iSelectedHeli].vindex, true)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID()), RELGROUPHASH_COP )
int k
FOR k = 1 TO 5 - 1
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[k]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[k]))
IF NOT IS_PED_IN_COMBAT(vehicleData[iSelectedHeli].pindex[k])
TASK_COMBAT_HATED_TARGETS_IN_AREA(vehicleData[iSelectedHeli].pindex[k], GET_ENTITY_COORDS(vehicleData[iSelectedHeli].pindex[k]), 299.0)
ENDIF
ENDIF
ENDFOR
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_ESCORT_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, PLAYER_PED_ID(), <<0.0,0.0,0.0>>, MISSION_ESCORT_REAR, 20.0, fHeight, -1.0, CEIL(fHeight), 10)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_FLEE_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
// run over the bystander!!!
//SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedHeli].vindex, fHeliSpeed)
//VECTOR offset = <<0.0, 0.0, 0.0>>
//TASK_HELI_CHASE(vehicleData[iSelectedHeli].pindex[iDriverIndex], GET_PLAYER_PED(GET_PLAYER_INDEX()), offset)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, NULL, <<256.0887, 2918.2512, 42.0761>>, MISSION_FLEE, 25.0, 200.0, -1, 100, 50)
//TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, PLAYER_PED_ID(), <<0.0,fRadius,fHeight>>, MISSION_FOLLOW, 50.0, 30.0, -1.0, FLOOR(fHeight), FLOOR(fHeight))
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_CHASE_PLAYER()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
// run over the bystander!!!
//SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedHeli].vindex, fHeliSpeed)
//VECTOR offset = <<0.0, 0.0, 0.0>>
//TASK_HELI_CHASE(vehicleData[iSelectedHeli].pindex[iDriverIndex], GET_PLAYER_PED(GET_PLAYER_INDEX()), offset)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, PLAYER_PED_ID(), <<0.0,fRadius,fHeight>>, MISSION_FOLLOW, 50.0, 30.0, -1.0, FLOOR(fHeight), FLOOR(fHeight))
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC // TASK_chase player
PROC TASK_HELI_MISSION_CIRCLE()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, GET_PLAYER_PED(GET_PLAYER_INDEX()), <<0,0,25>>, MISSION_CIRCLE, 20, 25, -1, 280, 10)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC // TASK_HELI_MISSION_CIRCLE
PROC TOGGLE_HEIGHTMAP_FOLLOWING()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_DISABLE_HEIGHT_MAP_AVOIDANCE(vehicleData[iSelectedHeli].vindex, bDisableHeightMap)
bDisableHeightMap = !bDisableHeightMap
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TOGGLE_HELI_SEARCHLIGHT()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_SEARCHLIGHT(vehicleData[iSelectedHeli].vindex, bUseSearchLight, bUseSearchLight)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TOGGLE_HELI_ROCKETS()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
IF bUseRockets
SET_CURRENT_PED_VEHICLE_WEAPON(vehicleData[iSelectedHeli].pindex[iDriverIndex], WEAPONTYPE_VEHICLE_PLAYER_BULLET)
ELIF
SET_CURRENT_PED_VEHICLE_WEAPON(vehicleData[iSelectedHeli].pindex[iDriverIndex], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
ENDIF
bUseRockets = !bUseRockets
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_MISSION_ATTACK()
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
SET_PED_ACCURACY(vehicleData[iSelectedHeli].pindex[iDriverIndex], 0)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(vehicleData[iSelectedHeli].pindex[iDriverIndex], TRUE)
TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, GET_VEHICLE_PED_IS_IN(GET_PLAYER_PED(GET_PLAYER_INDEX())), GET_PLAYER_PED(GET_PLAYER_INDEX()), <<0,0,0>>, MISSION_ATTACK, 50, 50, -1, 10, 10)
//TASK_HELI_MISSION(driver[7].ped,mission_veh[23].veh,mission_veh[0].veh,NULL,<<0,0,0>>,MISSION_ATTACK,25,50,-1,70,60)
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC // TASK_HELI_MISSION_CIRCLE
PROC TASK_HELI_ATTACK_COORD
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
SET_PED_ACCURACY(vehicleData[iSelectedHeli].pindex[iDriverIndex], 0)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(vehicleData[iSelectedHeli].pindex[iDriverIndex], TRUE)
//TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, GET_VEHICLE_PED_IS_IN(GET_PLAYER_PED(GET_PLAYER_INDEX())), GET_PLAYER_PED(GET_PLAYER_INDEX()), <<0,0,0>>, MISSION_ATTACK, 50, 50, -1, 10, 10)
//TASK_HELI_MISSION(driver[7].ped,mission_veh[23].veh,mission_veh[0].veh,NULL,<<0,0,0>>,MISSION_ATTACK,25,50,-1,70,60)
//TASK_HELI_MISSION(vehicleData[iSelectedHeli].pindex[iDriverIndex], vehicleData[iSelectedHeli].vindex, NULL, MIKE_PED_ID(), (<<0,0,0>>), MISSION_ATTACK, 25,50,-1,70,60 )
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TASK_HELI_DRIVEBY_PLAYER
// need a player, but could possibly be taken out?
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
/*
//FREEZE_ENTITY_POSITION(vehicleData[iSelectedHeli].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedHeli].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedHeli].vindex)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedHeli].vindex, TRUE, TRUE)
IF IS_PED_IN_FLYING_VEHICLE(vehicleData[iSelectedHeli].pindex[iDriverIndex])
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedHeli].vindex)
ENDIF // vehicle is a plane/helicopter
// run over the bystander!!!
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedHeli].vindex, fHeliSpeed)
VECTOR offset = <<0.0, 0.0, 0.0>>
TASK_HELI_CHASE(vehicleData[iSelectedHeli].pindex[iDriverIndex], GET_PLAYER_PED(GET_PLAYER_INDEX()), offset)
*/
//IF NOT IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK(vehicleData[iSelectedHeli].pindex[iDriverIndex])
TASK_DRIVE_BY(vehicleData[iSelectedHeli].pindex[iDriverIndex], PLAYER_PED_ID(), null, <<0,0,0>>, 5000, 100, TRUE, FIRING_PATTERN_BURST_FIRE_HELI)
//TASK_DRIVE_BY(vehicleData[iSelectedHeli].pindex[iDriverIndex], GET_PLAYER_PED(GET_PLAYER_INDEX()), NULL, <<0,0.0,0>>, 1000.0, 100, TRUE, FIRING_PATTERN_FULL_AUTO)
//ENDIF
ENDIF // vehicle is drivable
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC
PROC TELEPORT_TO_TESTING_AREA()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
SET_ENTITY_COORDS_NO_OFFSET(GET_PLAYER_PED(GET_PLAYER_INDEX()), VecTestingAreaLocation)
VECTOR heliPosition
GENERATE_HELI_LOCATION(heliPosition)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex)
SET_ENTITY_COORDS_NO_OFFSET(vehicleData[iSelectedHeli].vindex, heliPosition)
ENDIF // vehicle exists
ENDIF // player is uninjured
ENDIF // player exists
ENDPROC // TELEPORT_TO_TESTING_AREA
PROC CREATE_WIDGETS()
#IF IS_DEBUG_BUILD
// create the widget
//WidgetID =
START_WIDGET_GROUP ("gtest_helicopter")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("ANNIHILATOR")
ADD_TO_WIDGET_COMBO ("BUZZARD")
ADD_TO_WIDGET_COMBO ("HUNTER")
ADD_TO_WIDGET_COMBO ("CARGOBOB")
STOP_WIDGET_COMBO("Helicopter Type", iSelectedHelicopter)
ADD_WIDGET_BOOL ("Spawn Helicopter", bSpawn)
ADD_WIDGET_BOOL ("Clean Up", bDelete)
ADD_WIDGET_BOOL ("Teleport to Testing Area", bTeleportAllToTestingArea)
ADD_WIDGET_BOOL ("Goto Player Location", bGotoPlayer)
ADD_WIDGET_BOOL ("Goto Player And Land", bGotoPlayerAndLand)
ADD_WIDGET_BOOL ("Combat Player", bCombatPlayer )
ADD_WIDGET_BOOL ("Flee Player", bFleePlayer)
ADD_WIDGET_BOOL ("Follow Player", bFollowPlayer)
ADD_WIDGET_BOOL ("Circle Player", bCirclePlayer)
ADD_WIDGET_BOOL ("Attack Player", bAttackPlayer)
ADD_WIDGET_BOOL ("Attack Coord", bAttackCoord)
ADD_WIDGET_BOOL ("Escort Player", bEscortPlayer)
ADD_WIDGET_BOOL ("Protect Player", bProtectPlayer)
ADD_WIDGET_BOOL ("Drive By", bDriveBy)
ADD_WIDGET_FLOAT_SLIDER("Heli Speed", fHeliSpeed, 0.0, 200.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("Distance to Player", fRadius, 0.0, 200.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("Heli Height", fHeight, 0.0, 100.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("Heli Turbulence", fTurbulence, 0.0, 10.0, 0.1)
ADD_WIDGET_INT_SLIDER("Num Passengers", iNumPassengers, 0, 4, 1)
ADD_WIDGET_BOOL ("Toggle Rockets", bToggleRockets)
ADD_WIDGET_BOOL ("Toggle HeightMap Following", bToggleHeightMapFollowing)
ADD_WIDGET_BOOL ("Use Search Light", bUseSearchLight )
ADD_WIDGET_BOOL ("Searchlight Always on", bSearchLightAlwaysOn)
ADD_WIDGET_BOOL ("Check mission type", bQueryMissionType)
STOP_WIDGET_GROUP()
#ENDIF
ENDPROC //CREATE_WIDGETS
PROC PROCESS_WIDGETS()
IF bSpawn
bSpawn = FALSE
CREATE_HELI()
ENDIF
IF bDelete
bDelete = FALSE
DELETE_HELIS()
ENDIF
IF bTeleportAllToTestingArea
bTeleportAllToTestingArea = FALSE
TELEPORT_TO_TESTING_AREA()
ENDIF
IF bGotoPlayer
bGotoPlayer = FALSE
TASK_HELI_GOTO_PLAYER()
ENDIF
IF bGotoPlayerAndLand
bGotoPlayerAndLand = FALSE
TASK_HELI_GOTO_PLAYER_AND_LAND()
ENDIF
IF bCombatPlayer
bCombatPlayer = FALSE
TASK_HELI_COMBAT_PLAYER()
ENDIF
IF bFollowPlayer
bFollowPlayer = FALSE
TASK_HELI_CHASE_PLAYER()
ENDIF
IF bFleePlayer
bFleePlayer = FALSE
TASK_HELI_FLEE_PLAYER()
ENDIF
IF bCirclePlayer
bCirclePlayer = FALSE
TASK_HELI_MISSION_CIRCLE()
ENDIF
IF bDriveBy
bDriveBy = FALSE
TASK_HELI_DRIVEBY_PLAYER()
ENDIF
IF bAttackPlayer
bAttackPlayer = FALSE
TASK_HELI_MISSION_ATTACK()
ENDIF
IF bAttackCoord
bAttackCoord = FALSE
TASK_HELI_ATTACK_COORD()
ENDIF
IF bEscortPlayer
bEscortPlayer = FALSE
TASK_HELI_ESCORT_PLAYER()
ENDIF
IF bProtectPlayer
bProtectPlayer = FALSE
TASK_HELI_PROTECT_PLAYER()
ENDIF
if bToggleHeightMapFollowing
bToggleHeightMapFollowing = FALSE
TOGGLE_HEIGHTMAP_FOLLOWING()
ENDIF
IF bToggleRockets
bToggleRockets = FALSE
TOGGLE_HELI_ROCKETS()
ENDIF
IF bUseSearchLight <> bUseSearchLightPreviousValue
bUseSearchLightPreviousValue = bUseSearchLight
TOGGLE_HELI_SEARCHLIGHT()
ENDIF
IF bQueryMissionType
bQueryMissionType = FALSE
GET_ACTIVE_VEHICLE_MISSION_TYPE(vehicleData[iSelectedHeli].vindex)
ENDIF
IF fTurbulence<> fPrevioudTurbulence
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
fPrevioudTurbulence = fTurbulence
SET_HELI_TURBULENCE_SCALAR(vehicleData[iSelectedHeli].vindex, fTurbulence)
ENDIF
ENDIF
ENDIF
ENDPROC //PROCESS_WIDGETS
PROC PROCESS_DECORATORS()
bExecute = FALSE
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DECOR_EXIST_ON(GET_PLAYER_PED(GET_PLAYER_INDEX()), "rsne_testscript_active")
bExecute = DECOR_GET_BOOL(GET_PLAYER_PED(GET_PLAYER_INDEX()),"rsne_testscript_active")
ENDIF
ENDIF
ENDIF
ENDPROC
SCRIPT
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
CREATE_WIDGETS()
WHILE bExecute
PROCESS_DECORATORS()
PROCESS_WIDGETS()
// do we have a vehicle?
IF (DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].vindex) AND DOES_ENTITY_EXIST(vehicleData[iSelectedHeli].pindex[iDriverIndex]) AND NOT IS_PED_INJURED(vehicleData[iSelectedHeli].pindex[iDriverIndex]))
// can it go fast-a?
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedHeli].vindex)
IS_HELI_LANDING_AREA_BLOCKED(vehicleData[iSelectedHeli].vindex)
ENDIF
ENDIF
WAIT(0)
ENDWHILE
// Cleanup
DELETE_HELIS()
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD