Files
2025-09-29 00:52:08 +02:00

751 lines
22 KiB
Python
Executable File

#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_path.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_physics.sch"
USING "commands_decorator.sch"
USING "model_enums.sch"
// Data for the plane
STRUCT PlaneVehicleData
VEHICLE_INDEX vindex
PED_INDEX pindex
ENDSTRUCT
PlaneVehicleData vehicleData[10]
int iSpawnedPlanes = 0
FLOAT fPlaneHeight = 20.0
FLOAT fPlaneSpeed = 20.0
FLOAT fPlaneRadius = 20.0
FLOAT fOrientation = -1.0
BOOL bSpawn = FALSE
bool bDelete = FALSE
BOOL bTeleport = FALSE
bool bTaskChasePlayer = FALSE
bool bTaskChasePlane = FALSE
bool bTaskGotoPlayer = FALSE
BOOL bGotoPlayerAnyMeans = FALSE
bool bTaskPlaneLand = FALSE
bool bPlaneAttack = FALSE
bool bPlaneSequence = FALSE
bool bPlaneDriveOnGround = FALSE
bool bFleePlayer = FALSE
bool bLandingGear = true
bool bPreviousLandingGear = true
BOOL bExecute = TRUE
int iSpawnPlaneType = 0
int iPlaneMinHeightAboveTerrain = 20
int iPreviousPlaneMinHeightAboveTerrain = 20
int iSelectedPlane = 0
int iPreviousSelectedPlane = 20
int iChasePlane = 0
int iPreviousChasePlane = 20
SEQUENCE_INDEX seqPlaneLeave
PROC GENERATE_PLANE_LOCATION(VECTOR& planePosition)
// 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>>
planePosition = playerPosition + ( playerForward * fPlaneRadius ) + (g_up * fPlaneHeight)
ENDPROC // GENERATE_HELI_LOCATION
PROC DELETE_PLANES()
CLEAR_SEQUENCE_TASK(seqPlaneLeave)
INT i
FOR i = 0 to iSpawnedPlanes
IF DOES_ENTITY_EXIST(vehicleData[i].vindex)
DELETE_VEHICLE(vehicleData[i].vindex)
ENDIF
IF DOES_ENTITY_EXIST(vehicleData[i].pindex)
DELETE_PED(vehicleData[i].pindex)
ENDIF
ENDFOR
iSpawnedPlanes = 0
ENDPROC
PROC CREATE_PLANE()
MODEL_NAMES model = CARGOPLANE
IF iSpawnPlaneType = 1
model = CUBAN800
ELIF iSpawnPlaneType = 2
model = DUSTER
ELIF iSpawnPlaneType = 3
model = JET
ELIF iSpawnPlaneType = 4
model = LAZER
ELIF iSpawnPlaneType = 5
model = LUXOR
ELIF iSpawnPlaneType = 6
model = MAMMATUS
ELIF iSpawnPlaneType = 7
model = SHAMAL
ELIF iSpawnPlaneType = 8
model = STUNT
ELIF iSpawnPlaneType = 9
model = TITAN
ELIF iSpawnPlaneType = 10
model = VELUM
ENDIF
MODEL_NAMES pilot = S_M_Y_MARINE_01 //S_M_M_Pilot_02
REQUEST_MODEL(model)
REQUEST_MODEL(pilot)
while not (HAS_MODEL_LOADED(model) and HAS_MODEL_LOADED(pilot))
WAIT(0)
ENDWHILE
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 planeHeading = (playerHeading + 180 ) % 360
VECTOR planePosition
GENERATE_PLANE_LOCATION(planePosition)
// make the car and put in a driver
vehicleData[iSpawnedplanes].vindex = CREATE_VEHICLE(
model,
planePosition,
planeHeading )
IF DOES_ENTITY_EXIST(vehicleData[iSpawnedPlanes].vindex)
SET_ENTITY_VISIBLE(vehicleData[iSpawnedPlanes].vindex, TRUE)
FREEZE_ENTITY_POSITION(vehicleData[iSpawnedPlanes].vindex, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehicleData[iSpawnedPlanes].vindex, FALSE)
vehicleData[iSpawnedPlanes].pindex = CREATE_PED_INSIDE_VEHICLE(vehicleData[iSpawnedPlanes].vindex,PEDTYPE_MISSION,pilot,VS_DRIVER)
iSelectedPlane = iSpawnedPlanes
iSpawnedPlanes++
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TELEPORT_PLANE()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
playerPosition.z += fPlaneHeight
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
SET_ENTITY_COORDS_NO_OFFSET(vehicleData[iSelectedPlane].vindex, playerPosition)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TASK_PLANE_GOTO_PLAYER
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
playerPosition.z += fPlaneHeight
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
IF fPlaneHeight > 2
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
ENDIF
//TASK_GO_TO_COORD_ANY_MEANS(vehicleData[iSelectedPlane].pindex,playerPosition,PEDMOVEBLENDRATIO_RUN,GET_VEHICLE_PED_IS_IN(vehicleData[iSelectedPlane].pindex))
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_PLANE_MISSION(vehicleData[iSelectedPlane].pindex, vehicleData[iSelectedPlane].vindex
, NULL, NULL, playerPosition
, MISSION_GOTO, fPlaneSpeed, -1, fOrientation, iPlaneMinHeightAboveTerrain, iPreviousPlaneMinHeightAboveTerrain)
/*
TASK_VEHICLE_DRIVE_TO_COORD(vehicleData[iSelectedPlane].pindex
, vehicleData[iSelectedPlane].vindex
, playerPosition
, fPlaneSpeed
, DRIVINGSTYLE_NORMAL
, GET_ENTITY_MODEL(vehicleData[iSelectedPlane].vindex)
, DRIVINGMODE_PLOUGHTHROUGH
, -1
, -1 )
*/
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TASK_PLANE_GOTO_PLAYER_ANY_MEANS
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
playerPosition.z += fPlaneHeight
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
IF fPlaneHeight > 2
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
ENDIF
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_GO_TO_COORD_ANY_MEANS(vehicleData[iSelectedPlane].pindex,playerPosition,PEDMOVEBLENDRATIO_RUN,GET_VEHICLE_PED_IS_IN(vehicleData[iSelectedPlane].pindex))
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TASK_PLANE_CHASE_PLAYER
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_PLANE_CHASE(vehicleData[iSelectedPlane].pindex, GET_PLAYER_PED(GET_PLAYER_INDEX()), <<0,-20, 20>> )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TASK_PLANE_CHASE_PLANE
IF DOES_ENTITY_EXIST(vehicleData[iChasePlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iChasePlane].pindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_PLANE_CHASE(vehicleData[iSelectedPlane].pindex, vehicleData[iChasePlane].pindex, <<0,-20, 20>> )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TEST_TASK_PLANE_ATTACK
IF DOES_ENTITY_EXIST(vehicleData[iChasePlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iChasePlane].pindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
IF ( iChasePlane <> iSelectedPlane )
TASK_PLANE_MISSION(vehicleData[iSelectedPlane].pindex, vehicleData[iSelectedPlane].vindex
, vehicleData[iChasePlane].vindex, vehicleData[iChasePlane].pindex, GET_ENTITY_COORDS(vehicleData[iChasePlane].pindex)
, MISSION_ATTACK, fPlaneSpeed, -1, 30.0, 500, 50)
ELSE
TASK_PLANE_MISSION(vehicleData[iSelectedPlane].pindex, vehicleData[iSelectedPlane].vindex
, NULL, GET_PLAYER_PED(GET_PLAYER_INDEX()), GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
, MISSION_ATTACK, fPlaneSpeed, -1, 30.0, 500, 50)
ENDIF
//TASK_PLANE_CHASE(vehicleData[iSelectedPlane].pindex, vehicleData[iChasePlane].pindex, <<0,-20, 20>> )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TEST_TASK_PLANE_FLEE_PLAYER()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_PLANE_MISSION(vehicleData[iSelectedPlane].pindex, vehicleData[iSelectedPlane].vindex
, NULL, GET_PLAYER_PED(GET_PLAYER_INDEX()), GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
, MISSION_FLEE, fPlaneSpeed, -1, 30.0, 500, 500)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TEST_TASK_PLANE_LAND()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
TASK_PLANE_LAND(vehicleData[iSelectedPlane].pindex, vehicleData[iSelectedPlane].vindex, <<1061.6,3071.7, 41.0>>, <<1703.5,3261.8,40.9>> )
//TASK_PLANE_MISSION(vehicleData.pindex,vehicleData.vindex,NULL,NULL,<<1600,3211,40.5>>,MISSION_LAND_AND_WAIT,30,5,294,40,0)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TEST_TASK_PLANE_DRIVE_ON_GROUND()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
IF IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
TASK_VEHICLE_DRIVE_TO_COORD(vehicleData[iSelectedPlane].pindex
, vehicleData[iSelectedPlane].vindex
, playerPosition
, fPlaneSpeed
, DRIVINGSTYLE_NORMAL
, GET_ENTITY_MODEL(vehicleData[iSelectedPlane].vindex)
, DF_PlaneTaxiMode | DF_PreferNavmeshRoute | DF_PreventBackgroundPathfinding
, 2
, 40 )
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC TEST_TASK_PLANE_SEQUENCE()
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].vindex)
if IS_VEHICLE_DRIVEABLE(vehicleData[iSelectedPlane].vindex)
IF DOES_ENTITY_EXIST(vehicleData[iSelectedPlane].pindex)
IF NOT IS_PED_INJURED(vehicleData[iSelectedPlane].pindex)
FREEZE_ENTITY_POSITION(vehicleData[iSelectedPlane].vindex, FALSE)
SET_ENTITY_DYNAMIC(vehicleData[iSelectedPlane].vindex, TRUE)
ACTIVATE_PHYSICS(vehicleData[iSelectedPlane].vindex)
SET_VEHICLE_FORWARD_SPEED(vehicleData[iSelectedPlane].vindex, fPlaneSpeed)
SET_VEHICLE_ENGINE_ON(vehicleData[iSelectedPlane].vindex, TRUE, TRUE)
SET_HELI_BLADES_FULL_SPEED(vehicleData[iSelectedPlane].vindex)
VECTOR playerPosition = GET_ENTITY_COORDS(GET_PLAYER_PED(GET_PLAYER_INDEX()))
playerPosition.z += fPlaneHeight
OPEN_SEQUENCE_TASK(seqPlaneLeave)
TASK_VEHICLE_DRIVE_TO_COORD(NULL, vehicleData[iSelectedPlane].vindex
, playerPosition, fPlaneSpeed
, DRIVINGSTYLE_NORMAL
, GET_ENTITY_MODEL(vehicleData[iSelectedPlane].vindex)
, DRIVINGMODE_PLOUGHTHROUGH
, 17.5
, -1)
TASK_VEHICLE_DRIVE_WANDER(NULL, vehicleData[iSelectedPlane].vindex, fPlaneSpeed, DRIVINGMODE_PLOUGHTHROUGH) //TASK_VEHICLE_TEMP_ACTION(NULL, NET_TO_VEH(serverBD.CrateDropData.PlaneData.Plane.niVeh), TEMPACT_GOFORWARD, 999999)
CLOSE_SEQUENCE_TASK(seqPlaneLeave)
TASK_PERFORM_SEQUENCE(vehicleData[iSelectedPlane].pindex, seqPlaneLeave)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC CREATE_WIDGETS()
START_WIDGET_GROUP ("gtest_airplane")
ADD_WIDGET_INT_SLIDER("Selected Plane", iSelectedPlane, 0, 10, 1)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("CARGOPLANE")
ADD_TO_WIDGET_COMBO ("CUBAN800")
ADD_TO_WIDGET_COMBO ("DUSTER")
ADD_TO_WIDGET_COMBO ("JET")
ADD_TO_WIDGET_COMBO ("LAZER")
ADD_TO_WIDGET_COMBO ("LUXOR")
ADD_TO_WIDGET_COMBO ("MAMMATUS")
ADD_TO_WIDGET_COMBO ("SHAMAL")
ADD_TO_WIDGET_COMBO ("STUNT")
ADD_TO_WIDGET_COMBO ("TITAN")
ADD_TO_WIDGET_COMBO ("VELUM")
STOP_WIDGET_COMBO("Plane Type", iSpawnPlaneType)
ADD_WIDGET_BOOL ("Spawn", bSpawn)
ADD_WIDGET_BOOL ("Delete", bDelete)
ADD_WIDGET_BOOL ("Teleport", bTeleport)
ADD_WIDGET_BOOL ("TaskGotoPlayer", bTaskGotoPlayer)
ADD_WIDGET_BOOL ("TaskGotoPlayerAnyMeans", bGotoPlayerAnyMeans)
ADD_WIDGET_BOOL ("TaskChasePlane", bTaskChasePlane)
ADD_WIDGET_INT_SLIDER("Selected Plane", iChasePlane, 0, 10, 1)
ADD_WIDGET_BOOL ("TaskChasePlayer", bTaskChasePlayer)
ADD_WIDGET_BOOL ("TaskPlaneLand", bTaskPlaneLand)
ADD_WIDGET_BOOL ("PlaneAttack", bPlaneAttack)
ADD_WIDGET_BOOL ("PlaneSequence", bPlaneSequence)
ADD_WIDGET_BOOL ("PlaneDriveOnGround", bPlaneDriveOnGround)
ADD_WIDGET_BOOL ("FleePlayer", bFleePlayer)
ADD_WIDGET_BOOL ("LandingGear", bLandingGear)
ADD_WIDGET_FLOAT_SLIDER("PlaneHeight", fPlaneHeight, 0.0, 100.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("PlaneSpeed", fPlaneSpeed, 0.0, 200.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("fOrientation", fOrientation, -1.0, 360.0, 1.0)
ADD_WIDGET_INT_SLIDER("MinHeightAboveTerrain", iPlaneMinHeightAboveTerrain, -100, 100, 1)
STOP_WIDGET_GROUP()
ENDPROC
PROC PROCESS_WIDGETS()
IF bSpawn
bSpawn = FALSE
CREATE_PLANE()
ENDIF
IF bDelete
bDelete = FALSE
DELETE_PLANES()
ENDIF
IF bTeleport
bTeleport = FALSE
TELEPORT_PLANE()
ENDIF
IF bTaskGotoPlayer
bTaskGotoPlayer = FALSE
TASK_PLANE_GOTO_PLAYER()
ENDIF
IF bGotoPlayerAnyMeans
bGotoPlayerAnyMeans = FALSE
TASK_PLANE_GOTO_PLAYER_ANY_MEANS()
ENDIF
IF bTaskChasePlayer
bTaskChasePlayer = FALSE
TASK_PLANE_CHASE_PLAYER()
ENDIF
IF bTaskChasePlane
bTaskChasePlane = FALSE
TASK_PLANE_CHASE_PLANE()
ENDIF
IF bTaskPlaneLand
bTaskPlaneLand = FALSE
TEST_TASK_PLANE_LAND()
ENDIF
IF bPlaneAttack
bPlaneAttack = FALSE
TEST_TASK_PLANE_ATTACK()
ENDIF
IF bPlaneSequence
bPlaneSequence = FALSE
TEST_TASK_PLANE_SEQUENCE()
ENDIF
IF bPlaneDriveOnGround
bPlaneDriveOnGround = FALSE
TEST_TASK_PLANE_DRIVE_ON_GROUND()
ENDIF
IF bFleePlayer
bFleePlayer = FALSE
TEST_TASK_PLANE_FLEE_PLAYER()
ENDIF
if bLandingGear <> bPreviousLandingGear
bPreviousLandingGear = bLandingGear
if bLandingGear
CONTROL_LANDING_GEAR(vehicleData[iSelectedPlane].vindex, LGC_DEPLOY)
else
CONTROL_LANDING_GEAR(vehicleData[iSelectedPlane].vindex, LGC_RETRACT)
endif
Endif
if iSelectedPlane <> iPreviousSelectedPlane
IF iSelectedPlane >= iSpawnedPlanes
iSelectedPlane = iSpawnedPlanes-1
ENDIF
IF iSelectedPlane < 0
iSelectedPlane = 0
ENDIF
iPreviousSelectedPlane = iSelectedPlane
ENDIF
if iChasePlane <> iPreviousChasePlane
IF iChasePlane >= iSpawnedPlanes
iChasePlane = iSpawnedPlanes-1
ENDIF
IF iChasePlane = iSelectedPlane
iChasePlane = iSelectedPlane-1
ENDIF
IF iChasePlane < 0
iChasePlane = 0
ENDIF
iPreviousChasePlane = iChasePlane
ENDIF
if iPlaneMinHeightAboveTerrain<> iPreviousPlaneMinHeightAboveTerrain
iPreviousPlaneMinHeightAboveTerrain = iPlaneMinHeightAboveTerrain
INT i
FOR i = 0 to iSpawnedPlanes
IF DOES_ENTITY_EXIST(vehicleData[i].vindex)
IF IS_VEHICLE_DRIVEABLE(vehicleData[i].vindex)
SET_TASK_VEHICLE_GOTO_PLANE_MIN_HEIGHT_ABOVE_TERRAIN(vehicleData[i].vindex, iPlaneMinHeightAboveTerrain )
ENDIF
ENDIF
ENDFOR
ENDIF
ENDPROC
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()
WAIT(0)
ENDWHILE
DELETE_PLANES()
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD