11310 lines
474 KiB
Python
Executable File
11310 lines
474 KiB
Python
Executable File
//// *****************************************************************************************
|
|
//// *****************************************************************************************
|
|
//// *****************************************************************************************
|
|
////
|
|
//// MISSION NAME : Docks Prep 2b
|
|
//// AUTHOR : Ben Barclay
|
|
//// DESCRIPTION : Michael has to steal a CargoBob heli.
|
|
////
|
|
//// *****************************************************************************************
|
|
//// *****************************************************************************************
|
|
//// *****************************************************************************************
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_camera.sch"
|
|
USING "commands_pad.sch"
|
|
USING "commands_script.sch"
|
|
USING "flow_public_core_override.sch"
|
|
USING "commands_fire.sch"
|
|
USING "replay_public.sch"
|
|
USING "selector_public.sch"
|
|
USING "mission_stat_public.sch"
|
|
USING "cutscene_public.sch"
|
|
USING "commands_cutscene.sch"
|
|
USING "script_player.sch"
|
|
USING "CompletionPercentage_public.sch"
|
|
USING "flow_public_GAME.sch"
|
|
USING "Clearmissionarea.sch"
|
|
USING "script_ped.sch"
|
|
USING "commands_object.sch"
|
|
USING "building_control_public.sch"
|
|
USING "locates_public.sch"
|
|
USING "area_checks.sch"
|
|
USING "battlebuddy_public.sch"
|
|
USING "commands_recording.sch"
|
|
|
|
/////══════════════════════════════════════╡ DEBUG VARIABLES ╞════════════════════════════════════════
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
USING "select_mission_stage.sch"
|
|
|
|
CONST_INT MAX_SKIP_MENU_LENGTH 4 // number of stages in mission + 2 (for menu )
|
|
INT iReturnStage // mission stage to jump to
|
|
|
|
MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH] // struct containing the debug menu
|
|
|
|
#ENDIF
|
|
|
|
// ___________________________________ ENUMS ______________________________________________
|
|
ENUM MISSION_FLOW
|
|
STAGE_OPENING_CUTSCENE,
|
|
STAGE_INIT_MISSION,
|
|
STAGE_STEAL_CARGOBOB,
|
|
STAGE_ESCAPE_MILITARY,
|
|
STAGE_FLY_CARGOBOB_TO_HANGER,
|
|
STAGE_END_CUTSCENE,
|
|
STAGE_MISSION_FAILED
|
|
ENDENUM
|
|
MISSION_FLOW missionStage = STAGE_OPENING_CUTSCENE
|
|
|
|
ENUM FAIL_REASON
|
|
FAIL_DEFAULT,
|
|
FAIL_HELI_DESTROYED,
|
|
FAIL_HELI_ABANDONED,
|
|
FAIL_HELI_STUCK
|
|
ENDENUM
|
|
FAIL_REASON eFailReason = FAIL_DEFAULT
|
|
|
|
//ENUM ROCKET_LINE_UP_STATE
|
|
// LINE_UP_DONT_FIRE_TOO_FAR_AWAY,
|
|
// LINE_UP_DONT_FIRE_BAD_ANGLE,
|
|
// LINE_UP_FIRE_MISS_LEFT_SIDE,
|
|
// LINE_UP_FIRE_MISS_RIGHT_SIDE,
|
|
// LINE_UP_FIRE_LEFT_SIDE,
|
|
// LINE_UP_FIRE_RIGHT_SIDE
|
|
//ENDENUM
|
|
//
|
|
//ENUM ROCKET_ANIM_STATE
|
|
// ROCKET_ANIM_USING_AI,
|
|
// ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM,
|
|
// ROCKET_ANIM_PUT_LAUNCHER_AWAY,
|
|
// ROCKET_ANIM_GET_CLOSER_THEN_AIM,
|
|
// ROCKET_ANIM_RELOAD_THEN_AIM,
|
|
// ROCKET_ANIM_AIMING
|
|
//ENDENUM
|
|
//ROCKET_ANIM_STATE e_rocket_anim_state = ROCKET_ANIM_USING_AI
|
|
//
|
|
ENUM ENEMY_HELI_ATTACK_STATE
|
|
ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT,
|
|
ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW,
|
|
ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH,
|
|
ENEMY_HELI_BACK_OFF_PLAYER,
|
|
ENEMY_HELI_FLEE
|
|
ENDENUM
|
|
ENEMY_HELI_ATTACK_STATE EnemyHeliState
|
|
|
|
//ENUM ENEMY_PED_ATTACK_STATE
|
|
// PLAYER_CLOSE_RANGE,
|
|
// PLAYER_FAR_RANGE,
|
|
// PLAYER_NEAR_HELI_PEDS_FAR,
|
|
// PLAYER_NEAR_HELI_PEDS_NEAR
|
|
//ENDENUM
|
|
//ENEMY_PED_ATTACK_STATE EnemyPedState[13]
|
|
|
|
//STRUCT ROCKET_DATA
|
|
// OBJECT_INDEX obj
|
|
// ENTITY_INDEX entity_owner
|
|
// VEHICLE_INDEX veh_target
|
|
// VECTOR v_dir
|
|
// VECTOR v_start
|
|
// VECTOR v_rot
|
|
// VECTOR v_offset
|
|
// VECTOR v_vel
|
|
// VECTOR v_prev_pos
|
|
// BOOL b_reached_target
|
|
// BOOL b_add_entity_speed
|
|
// BOOL b_rocket_belongs_to_player
|
|
// INT i_explode_timer
|
|
// FLOAT f_speed_multiplier
|
|
// PTFX_ID ptfx
|
|
//ENDSTRUCT
|
|
//
|
|
//ROCKET_DATA s_rockets[4]
|
|
|
|
// ===========================================================================================================
|
|
// Variables
|
|
// ===========================================================================================================
|
|
|
|
//TEST PROCEDURE
|
|
//VEHICLE_INDEX testCargoBob
|
|
//CAMERA_INDEX testCam
|
|
|
|
//INDEXES
|
|
//Peds
|
|
PED_INDEX EnemyHeliPilot[1]
|
|
PED_INDEX MarineCop[13]
|
|
//PED_INDEX hBuddyMichael, hBuddyFranklin, hBuddyTrevor
|
|
//PED_INDEX InvisiblePed
|
|
|
|
//Vehicles
|
|
VEHICLE_INDEX buddyCar
|
|
VEHICLE_INDEX HeliToSteal
|
|
VEHICLE_INDEX EnemyHeli[1]
|
|
VEHICLE_INDEX GetAwayCar[1]
|
|
VEHICLE_INDEX ArmyJet1, ArmyJet2
|
|
VEHICLE_INDEX PlayerCar
|
|
|
|
//Cameras
|
|
CAMERA_INDEX RocketCam
|
|
CAMERA_INDEX EndSceneCam
|
|
|
|
//Objects
|
|
OBJECT_INDEX obj_lesters_rpg
|
|
OBJECT_INDEX obj_single_rocket
|
|
|
|
//Seats
|
|
//VEHICLE_SEAT VS_buddyMichael_seat, VS_buddyFranklin_seat, VS_buddyTrevor_seat
|
|
|
|
//Groups
|
|
REL_GROUP_HASH MARINE_GROUP_HASH
|
|
|
|
//Blips
|
|
BLIP_INDEX HeliToStealBlip
|
|
BLIP_INDEX HangerBlip
|
|
//BLIP_INDEX BuddyBlip
|
|
BLIP_INDEX EnemyHeliPilotBlip[1]
|
|
BLIP_INDEX ArmyJet1Blip, ArmyJet2Blip
|
|
|
|
//Strings
|
|
//STRING str_anim_rockets = "missbigscore2big_5"
|
|
//STRING str_anim_rocket_reload = "missbigscore2big_6"
|
|
//STRING str_anim_rocket_signal = "missbigscore2big_7_p2"
|
|
|
|
SCENARIO_BLOCKING_INDEX RemoveHeliBlockingArea, RemoveHeliBlockingArea2, RemoveHeliBlockingArea3 //RemoveFrontGuardBlockingArea
|
|
|
|
AI_BLIP_STRUCT MarineCopBlip[13]
|
|
|
|
//Integers
|
|
INT iControlFlag = 0
|
|
INT icount
|
|
INT iArmyChatTimer
|
|
INT iCutsceneSkipStage
|
|
INT iArmyPedCount2
|
|
INT iArmyPedCount
|
|
INT iRandomInt2
|
|
//INT iRocketControlFlag
|
|
//INT iRocketFired
|
|
//INT i_player_rocket_event = 0
|
|
//INT i_lester_rocket_anim_event = 0
|
|
//INT i_current_lester_target = 0
|
|
//INT i_rocket_timer
|
|
//INT i_rocket_line_up_dialogue_timer
|
|
//INT i_hBuddy_rocket_sync_scene
|
|
//INT iPlayerNotInAnyVehicleTimer = 0
|
|
INT iAlarmTimer
|
|
INT iGodTextTimer = 0
|
|
INT iAlarmStartCount = 0
|
|
INT iFireCount = 0
|
|
INT iChat58Timer = 0
|
|
INT iChat57Timer = 0
|
|
INT iEnemyPilotAccuracyTimer = 0
|
|
INT iGetBackinTimer = 0
|
|
INT iGetTohangerTextTimer = 0
|
|
INT iBecomeHostileTimer = 0
|
|
INT iGuardCount
|
|
INT iGuard2Count
|
|
INT iWeaponStillEquipedTimer
|
|
INT iRandomInt
|
|
//INT iAlarmChatTimer
|
|
|
|
|
|
//Flags
|
|
BOOL MissionStageBeingSkippedTo
|
|
BOOL missionCanFail
|
|
BOOL DoneStealCargobobText
|
|
BOOL DoneGetToHangerText
|
|
BOOL HeliToStealDestroyed
|
|
//BOOL LongDistanceCamRequired
|
|
//BOOL MichaelAITaskGiven
|
|
//BOOL TrevorAITaskGiven
|
|
//BOOL FranklinAITaskGiven
|
|
BOOL SetupMilitaryCops
|
|
//BOOL MichaelSwitchAvailable
|
|
//BOOL TrevorSwitchAvailable
|
|
//BOOL FranklinSwitchAvailable
|
|
BOOL EnemyHeliPilotTaskGiven[2]
|
|
BOOL Heli0RocketsEquipped
|
|
//BOOL Heli1RocketsEquipped
|
|
//BOOL FranklinIsNeeded
|
|
//BOOL TrevorIsNeeded
|
|
//BOOL MichaelIsNeeded
|
|
BOOL EnemyHeliDown[2]
|
|
BOOL godTextUpdtaed
|
|
//BOOL militaryFriendlyTaskGiven
|
|
BOOL playerIsInBase
|
|
//BOOL BuddyMichaelDrivingHeli
|
|
//BOOL BuddyTrevorDrivingHeli
|
|
//BOOL BuddyFranklinDrivingHeli
|
|
//BOOL BuddyMichaelDrivingAnyVehicle
|
|
//BOOL BuddyTrevorDrivingAnyVehicle
|
|
//BOOL BuddyFranklinDrivingAnyVehicle
|
|
//BOOL BuddyMichaelReadyToBeReleased
|
|
//BOOL BuddyTrevorReadyToBeReleased
|
|
//BOOL BuddyFranklinReadyToBeReleased
|
|
//BOOL TaskToStopVehicle
|
|
//BOOL nodesRequested
|
|
//BOOL RocketReadyToBeFired
|
|
BOOL AlarmStarted
|
|
//BOOL BuddyMichaelReadyToFireRockets
|
|
//BOOL BuddyTrevorReadyToFireRockets
|
|
//BOOL BuddyFranklinReadyToFireRockets
|
|
//BOOL BuddyMichaelRocketOveride
|
|
//BOOL BuddyTrevorRocketOveride
|
|
//BOOL BuddyFranklinRocketOveride
|
|
//BOOL BuddyMichaelDriverOveride
|
|
//BOOL BuddyTrevorDriverOveride
|
|
//BOOL BuddyFranklinDriverOveride
|
|
//BOOL PlayerNotInAVehicleTimerStarted
|
|
//BOOL BuddyMichaelReadyToDriveBy
|
|
//BOOL BuddyTrevorReadyToDriveBy
|
|
//BOOL BuddyFranklinReadyToDriveBy
|
|
BOOL playerIsNearHeli
|
|
//BOOL buddyMichaelCombatFlagSet
|
|
//BOOL buddyTrevorCombatFlagSet
|
|
//BOOL buddyFranklinCombatFlagSet
|
|
//BOOL FranklinAddedForChat
|
|
//BOOL MichaelAddedForChat
|
|
BOOL TrevorAddedForChat
|
|
//BOOL doneChat[50]
|
|
//BOOL EnemyHeliSpottedChatDone
|
|
//BOOL FoundRocketChatDone
|
|
//BOOL TakingAShotChatDone
|
|
//BOOL ReloadingChatDone
|
|
//BOOL RocketMissChatDone
|
|
//BOOL RocketHitChatDone
|
|
BOOL EndCarsCreated
|
|
//BOOL DoneEndCutChat
|
|
BOOL TaskNeedsUpdated[1]
|
|
//BOOL relGroupsSetup
|
|
BOOL militaryPNHPNTasksGiven[13]
|
|
BOOL militaryPNHPFTasksGiven[13]
|
|
BOOL militaryPCRTasksGiven[13]
|
|
BOOL militaryPFRTasksGiven[13]
|
|
//BOOL NoBuddysAvailable
|
|
BOOL doneChat53
|
|
BOOL doneChat54
|
|
BOOL MarineCopSetup[13]
|
|
BOOL playerSpottedFiringAiming
|
|
BOOL doneChat55
|
|
BOOL doneChat56
|
|
BOOL AimTaskGiven[2]
|
|
BOOL TaskToSlowDownGiven
|
|
BOOL Accuracy0
|
|
BOOL Accuracy100
|
|
BOOL FiringTypeBullet
|
|
BOOL FiringTypeRocket
|
|
BOOL doneGetBackInText
|
|
BOOL cutsceneSkipped
|
|
BOOL playerWaitedTooLongToLeaveGate
|
|
BOOL hostileTimerSet
|
|
BOOL doneChat59
|
|
BOOL doneHelp4
|
|
BOOL TimerResetOnce
|
|
BOOL weaponTimerStarted
|
|
BOOL checkpointSet
|
|
BOOL donePhoneCall
|
|
BOOL doneArmyWrn1aChat
|
|
|
|
|
|
|
|
//Vectors
|
|
VECTOR vHeliCoords = << -2145.4856, 3018.2944, 31.8100 >>
|
|
VECTOR vHanger = << 1744.3083, 3270.6731, 40.2076 >>
|
|
//VECTOR vMilitaryBaseEntrance = <<-1560.8121, 2768.4988, 16.4692>>
|
|
//VECTOR vMichaelsCoords
|
|
//VECTOR vFranklinsCoords
|
|
//VECTOR vTrevorsCoords
|
|
VECTOR vEnemyHeli0Coords
|
|
//VECTOR vEnemyHeli1Coords
|
|
VECTOR vPlayerCoords
|
|
//VECTOR vDriveToHeliCoords
|
|
//VECTOR vbuddyCoords
|
|
//VECTOR RocketCamCoords
|
|
|
|
//Floats
|
|
FLOAT fHeliHeading = 330.4836
|
|
//FLOAT fMilitaryBaseEntranceHeading = 45.0943
|
|
//FLOAT fGroundzCoord
|
|
//FLOAT fCamNewDirectionZCoord
|
|
//FLOAT fCamNewDirectionYCoord
|
|
//FLOAT fEnemyHeliDistance[2]
|
|
|
|
//Strings
|
|
STRING sFailReason
|
|
|
|
//Groups
|
|
//REL_GROUP_HASH invisibleGroup
|
|
//REL_GROUP_HASH SecGuardGroup
|
|
|
|
//Structs
|
|
SELECTOR_PED_STRUCT sSelectorPeds
|
|
SELECTOR_CAM_STRUCT sCamDetails
|
|
structPedsForConversation MyLocalPedStruct
|
|
|
|
//Camera Index
|
|
CAMERA_INDEX NodeCam[3]
|
|
|
|
//Sequences
|
|
SEQUENCE_INDEX seq
|
|
|
|
|
|
//PURPOSE: Stops dispatch types from spawning.
|
|
PROC ALLOW_DISPATCH(DISPATCH_TYPE dispatchType, BOOL bAllow)
|
|
|
|
BLOCK_DISPATCH_SERVICE_RESOURCE_CREATION(dispatchType, (NOT bAllow))
|
|
enable_dispatch_service(dispatchType, bAllow)
|
|
|
|
ENDPROC
|
|
|
|
//
|
|
//PROC SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_STATE e_new_state)
|
|
// e_rocket_anim_state = e_new_state
|
|
// i_lester_rocket_anim_event = 0
|
|
//ENDPROC
|
|
//
|
|
////PURPOSE: Creates a rocket aimed at a vehicle target
|
|
//FUNC BOOL FIRE_ROCKET(VECTOR v_start, VEHICLE_INDEX veh_target, ENTITY_INDEX entity_owner, VECTOR v_offset, BOOL b_enemy_rocket = FALSE, BOOL b_track_target_speed = FALSE, FLOAT f_rocket_speed_multiplier = 1.0)
|
|
// INT i = 0
|
|
// INT i_rocket_index = -1
|
|
//
|
|
// REPEAT COUNT_OF(s_rockets) i
|
|
// IF NOT DOES_ENTITY_EXIST(s_rockets[i].obj)
|
|
// i_rocket_index = i
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
//
|
|
// REQUEST_MODEL(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
// REQUEST_PTFX_ASSET()
|
|
//
|
|
// IF HAS_MODEL_LOADED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
// AND HAS_PTFX_ASSET_LOADED()
|
|
// AND i_rocket_index > -1
|
|
// s_rockets[i_rocket_index].obj = CREATE_OBJECT_NO_OFFSET(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG), v_start)
|
|
// s_rockets[i_rocket_index].entity_owner = entity_owner
|
|
// s_rockets[i_rocket_index].v_start = v_start
|
|
// s_rockets[i_rocket_index].veh_target = veh_target
|
|
// s_rockets[i_rocket_index].v_offset = v_offset
|
|
// s_rockets[i_rocket_index].v_prev_pos = <<0.0, 0.0, 0.0>>
|
|
// s_rockets[i_rocket_index].b_reached_target = FALSE
|
|
// s_rockets[i_rocket_index].b_add_entity_speed = b_track_target_speed
|
|
// s_rockets[i_rocket_index].b_rocket_belongs_to_player = NOT b_enemy_rocket
|
|
// s_rockets[i_rocket_index].f_speed_multiplier = f_rocket_speed_multiplier
|
|
// s_rockets[i_rocket_index].ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_bigscore_rpg_trail", s_rockets[i_rocket_index].obj, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
//
|
|
// SET_ENTITY_LOD_DIST(s_rockets[i_rocket_index].obj, 500)
|
|
// SET_ENTITY_RECORDS_COLLISIONS(s_rockets[i_rocket_index].obj, TRUE)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(s_rockets[i_rocket_index].obj, TRUE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
//
|
|
//// IF NOT b_enemy_rocket
|
|
//// i_rocket_timer = 0 //When the timer = 0 no more rockets are allowed for the player.
|
|
//// ENDIF
|
|
//
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
//
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
//
|
|
//
|
|
////PURPOSE: This goes through my array of rockets and updates them each frame.
|
|
//PROC UPDATE_ROCKETS()
|
|
// CONST_FLOAT ROCKET_SPEED 60.0
|
|
// CONST_FLOAT MAX_ROCKET_SPEED 79.0
|
|
//
|
|
// INT i = 0
|
|
// REPEAT COUNT_OF(s_rockets) i
|
|
// IF DOES_ENTITY_EXIST(s_rockets[i].obj)
|
|
// BOOL b_force_blow_up = FALSE
|
|
// VECTOR v_current_pos = GET_ENTITY_COORDS(s_rockets[i].obj)
|
|
//
|
|
// //Update direction to home into offset, this lets us control how close the missile is to the target.
|
|
// IF NOT s_rockets[i].b_reached_target
|
|
// AND NOT IS_ENTITY_DEAD(s_rockets[i].veh_target)
|
|
// VECTOR v_dest = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_rockets[i].veh_target, s_rockets[i].v_offset)
|
|
// s_rockets[i].v_dir = (v_dest - v_current_pos) / VMAG(v_dest - v_current_pos)
|
|
//
|
|
// //Detect when rockets hit (or when they've missed and are flying away).
|
|
// IF s_rockets[i].v_prev_pos.x != 0.0
|
|
// FLOAT f_dist_from_target = VDIST2(v_current_pos, v_dest)
|
|
// //FLOAT f_prev_dist_from_target = VDIST2(s_rockets[i].v_prev_pos, v_dest)
|
|
//
|
|
// IF s_rockets[i].v_offset.x = 0.0 AND s_rockets[i].v_offset.y = 0.0 s_rockets[i].v_offset.z = 0.0
|
|
// //The rocket is meant to be on target, once it gets close blow it up
|
|
// IF f_dist_from_target < 25.0
|
|
// b_force_blow_up = TRUE
|
|
// s_rockets[i].b_reached_target = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF f_dist_from_target < 100.0
|
|
// //IF f_prev_dist_from_target < f_dist_from_target //The rocket is moving away from the target.
|
|
// s_rockets[i].b_reached_target = TRUE
|
|
//
|
|
// //If the missed rocket was one the player fired then play some near-miss dialogue.
|
|
// IF s_rockets[i].b_rocket_belongs_to_player
|
|
// //i_time_since_last_rocket_missed = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// //ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF s_rockets[i].b_reached_target
|
|
// s_rockets[i].i_explode_timer = GET_GAME_TIMER()
|
|
//
|
|
// //Start the timer for the player's next rocket.
|
|
// IF i_rocket_timer = 0
|
|
// AND s_rockets[i].b_rocket_belongs_to_player
|
|
// //b_played_line_up_dialogue = FALSE
|
|
// i_rocket_timer = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// s_rockets[i].v_vel = s_rockets[i].v_dir * ROCKET_SPEED * s_rockets[i].f_speed_multiplier
|
|
//
|
|
// IF s_rockets[i].b_add_entity_speed
|
|
// s_rockets[i].v_vel = s_rockets[i].v_vel + GET_ENTITY_VELOCITY(s_rockets[i].veh_target)
|
|
// ENDIF
|
|
//
|
|
// //Fix for B*550927: check the velocity to make sure it cannot go over the max amount.
|
|
// IF VMAG(s_rockets[i].v_vel) > MAX_ROCKET_SPEED
|
|
// s_rockets[i].v_vel = (s_rockets[i].v_vel / VMAG(s_rockets[i].v_vel)) * MAX_ROCKET_SPEED
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Update rotation to match the direction of movement.
|
|
// s_rockets[i].v_rot = <<0.0, 0.0, 0.0>>
|
|
// s_rockets[i].v_rot.x = ATAN2(s_rockets[i].v_dir.z, VMAG(<<s_rockets[i].v_dir.x, s_rockets[i].v_dir.y, 0.0>>))
|
|
// s_rockets[i].v_rot.z = ATAN2(s_rockets[i].v_dir.y, s_rockets[i].v_dir.x) - 90.0
|
|
//
|
|
// //SET_ENTITY_COORDS(s_rockets[i].obj, v_current_pos +@ (s_rockets[i].v_dir * ROCKET_SPEED))
|
|
// SET_ENTITY_VELOCITY(s_rockets[i].obj, s_rockets[i].v_vel)
|
|
// SET_ENTITY_ROTATION(s_rockets[i].obj, s_rockets[i].v_rot)
|
|
//
|
|
//// PRINTSTRING("Rocket velocity = ") PRINTVECTOR(s_rockets[i].v_vel) PRINTNL()
|
|
//
|
|
//// #IF IS_DEBUG_BUILD
|
|
////// IF b_debug_draw_debug
|
|
//// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
//// DRAW_DEBUG_SPHERE(GET_ENTITY_COORDS(s_rockets[i].obj), 0.3)
|
|
////// ENDIF
|
|
//// #ENDIF
|
|
//
|
|
// //Explode on contact or if scripted to hit
|
|
// IF (s_rockets[i].b_reached_target AND GET_GAME_TIMER() - s_rockets[i].i_explode_timer > 3000)
|
|
// OR HAS_ENTITY_COLLIDED_WITH_ANYTHING(s_rockets[i].obj) AND NOT IS_ENTITY_TOUCHING_ENTITY(s_rockets[i].obj, s_rockets[i].entity_owner)
|
|
// OR b_force_blow_up
|
|
// IF NOT IS_ENTITY_DEAD(s_rockets[i].veh_target)
|
|
// IF IS_ENTITY_TOUCHING_ENTITY(s_rockets[i].obj, s_rockets[i].veh_target)
|
|
// OR b_force_blow_up
|
|
//
|
|
// EXPLODE_VEHICLE(s_rockets[i].veh_target)
|
|
// SET_VEHICLE_PETROL_TANK_HEALTH(s_rockets[i].veh_target, -100.0)
|
|
// //i_time_since_last_chopper_exploded = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ADD_EXPLOSION(v_current_pos, EXP_TAG_ROCKET, 1.0)
|
|
//
|
|
// IF s_rockets[i].ptfx != NULL
|
|
// STOP_PARTICLE_FX_LOOPED(s_rockets[i].ptfx)
|
|
// s_rockets[i].ptfx = NULL
|
|
// ENDIF
|
|
//
|
|
// DELETE_OBJECT(s_rockets[i].obj)
|
|
// ENDIF
|
|
//
|
|
// s_rockets[i].v_prev_pos = v_current_pos
|
|
// ENDIF
|
|
// ENDREPEAT
|
|
//ENDPROC
|
|
//
|
|
////PURPOSE: Updates rocket anims during the chase: Buddy has a number of different states he can be in, these states link together different anims.
|
|
//PROC UPDATE_BUDDY_ROCKET_ANIMS(PED_INDEX hbuddy)
|
|
// REQUEST_ANIM_DICT(str_anim_rockets)
|
|
// REQUEST_ANIM_DICT(str_anim_rocket_signal)
|
|
// REQUEST_ANIM_DICT(str_anim_rocket_reload)
|
|
//
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// AND NOT IS_PED_INJURED(hbuddy)
|
|
// AND HAS_ANIM_DICT_LOADED(str_anim_rockets)
|
|
// AND HAS_ANIM_DICT_LOADED(str_anim_rocket_signal)
|
|
// AND HAS_ANIM_DICT_LOADED(str_anim_rocket_reload)
|
|
// IF NOT DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// REQUEST_MODEL(GET_WEAPONTYPE_MODEL(WEAPONTYPE_RPG))
|
|
// REQUEST_MODEL(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
//
|
|
// IF HAS_MODEL_LOADED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_RPG))
|
|
// AND HAS_MODEL_LOADED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
// obj_lesters_rpg = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_RPG), GET_ENTITY_COORDS(hBuddy))
|
|
// ATTACH_ENTITY_TO_ENTITY(obj_lesters_rpg, hBuddy, GET_PED_BONE_INDEX(hBuddy, BONETAG_PH_L_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// SET_ENTITY_VISIBLE(obj_lesters_rpg, FALSE)
|
|
//
|
|
// obj_single_rocket = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_RPG), GET_ENTITY_COORDS(hBuddy))
|
|
// ATTACH_ENTITY_TO_ENTITY(obj_single_rocket, hBuddy, GET_PED_BONE_INDEX(hBuddy, BONETAG_PH_R_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// SET_ENTITY_VISIBLE(obj_single_rocket, FALSE)
|
|
// SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(obj_single_rocket, FALSE)
|
|
//
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_RPG))
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(GET_WEAPONTYPE_MODEL(WEAPONTYPE_AMMO_RPG))
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// SWITCH e_rocket_anim_state
|
|
// CASE ROCKET_ANIM_USING_AI
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_USING_AI") PRINTNL()
|
|
// BREAK
|
|
// CASE ROCKET_ANIM_AIMING
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_AIMING") PRINTNL()
|
|
// BREAK
|
|
// CASE ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM") PRINTNL()
|
|
//
|
|
// IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// IF NOT IS_ENTITY_VISIBLE(obj_lesters_rpg)
|
|
// SET_ENTITY_VISIBLE(obj_lesters_rpg, TRUE)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF i_lester_rocket_anim_event = 0
|
|
// IF IS_ENTITY_ATTACHED(hBuddy)
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddy)
|
|
// DETACH_ENTITY(hBuddy)
|
|
// ENDIF
|
|
//
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "idle_to_leansit", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ELIF i_lester_rocket_anim_event = 1
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "intro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 2
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "sweep_medium", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, TRUE)
|
|
// SET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene, 0.98)
|
|
// SET_SYNCHRONIZED_SCENE_RATE(i_hBuddy_rocket_sync_scene, 0.0)
|
|
//
|
|
// e_rocket_anim_state = ROCKET_ANIM_AIMING
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE ROCKET_ANIM_PUT_LAUNCHER_AWAY
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_PUT_LAUNCHER_AWAY") PRINTNL()
|
|
// IF i_lester_rocket_anim_event = 0
|
|
// IF IS_ENTITY_ATTACHED(hBuddy)
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddy)
|
|
// DETACH_ENTITY(hBuddy)
|
|
// ENDIF
|
|
//
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "outro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ELIF i_lester_rocket_anim_event = 1
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "leansit_to_idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 2
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// SET_ENTITY_VISIBLE(obj_lesters_rpg, FALSE)
|
|
// ENDIF
|
|
//
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, TRUE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 3
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// STOP_SYNCHRONIZED_ENTITY_ANIM(hBuddy, NORMAL_BLEND_OUT, TRUE)
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddy)
|
|
//
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// SET_PED_INTO_VEHICLE(hBuddy, HeliToSteal, VS_BACK_LEFT)
|
|
// ENDIF
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE ROCKET_ANIM_GET_CLOSER_THEN_AIM
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_GET_CLOSER_THEN_AIM") PRINTNL()
|
|
// IF i_lester_rocket_anim_event = 0
|
|
// IF IS_ENTITY_ATTACHED(hBuddy)
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddy)
|
|
// DETACH_ENTITY(hBuddy)
|
|
// ENDIF
|
|
//
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "outro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ELIF i_lester_rocket_anim_event = 1
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rocket_signal, "signal_forward", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 2
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "intro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 3
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "sweep_medium", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, TRUE)
|
|
// SET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene, 0.98)
|
|
// SET_SYNCHRONIZED_SCENE_RATE(i_hBuddy_rocket_sync_scene, 0.0)
|
|
//
|
|
// e_rocket_anim_state = ROCKET_ANIM_AIMING
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE ROCKET_ANIM_RELOAD_THEN_AIM
|
|
//// PRINTSTRING("e_rocket_anim_state = ROCKET_ANIM_RELOAD_THEN_AIM") PRINTNL()
|
|
// IF i_lester_rocket_anim_event = 0
|
|
// IF IS_ENTITY_ATTACHED(hBuddy)
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddy)
|
|
// DETACH_ENTITY(hBuddy)
|
|
// ENDIF
|
|
//
|
|
// IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
// SET_ENTITY_VISIBLE(obj_single_rocket, TRUE)
|
|
// ENDIF
|
|
//
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "outro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ELIF i_lester_rocket_anim_event = 1
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rocket_reload, "reload_rocket_a", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 2
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "intro_90r", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, FALSE)
|
|
//
|
|
// i_lester_rocket_anim_event++
|
|
// ENDIF
|
|
// ELIF i_lester_rocket_anim_event = 3
|
|
// IF IS_SYNCHRONIZED_SCENE_RUNNING(i_hBuddy_rocket_sync_scene)
|
|
// AND GET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene) > 0.99
|
|
// i_hBuddy_rocket_sync_scene = CREATE_SYNCHRONIZED_SCENE(<<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(i_hBuddy_rocket_sync_scene, HeliToSteal, GET_ENTITY_BONE_INDEX_BY_NAME(HeliToSteal, "seat_dside_r"))
|
|
// TASK_SYNCHRONIZED_SCENE(hBuddy, i_hBuddy_rocket_sync_scene, str_anim_rockets, "sweep_medium", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,
|
|
// SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_WATER_JET)
|
|
// SET_SYNCHRONIZED_SCENE_LOOPED(i_hBuddy_rocket_sync_scene, TRUE)
|
|
// SET_SYNCHRONIZED_SCENE_PHASE(i_hBuddy_rocket_sync_scene, 0.98)
|
|
// SET_SYNCHRONIZED_SCENE_RATE(i_hBuddy_rocket_sync_scene, 0.0)
|
|
//
|
|
// IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
// SET_ENTITY_VISIBLE(obj_single_rocket, FALSE)
|
|
// ENDIF
|
|
//
|
|
// e_rocket_anim_state = ROCKET_ANIM_AIMING
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// ENDSWITCH
|
|
// ENDIF
|
|
//ENDPROC
|
|
//
|
|
////PURPOSE: Checks if players buddy is in the driver seat of a vehicle the player is in.
|
|
//FUNC BOOL IS_BUDDY_IN_DRIVER_SEAT(PED_INDEX hPed)
|
|
//
|
|
// //Check if player is in any vehicle and if his buddy is in that vehicle's driving seat.
|
|
// IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
// AND IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF NOT IS_PED_INJURED(hPed)
|
|
// IF IS_PED_IN_VEHICLE(hPed, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// AND GET_PED_IN_VEHICLE_SEAT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_DRIVER) = hPed
|
|
//
|
|
// //Check if player and buddy are in the helicopter
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(hPed, HeliToSteal)
|
|
// AND GET_PED_IN_VEHICLE_SEAT(HeliToSteal, VS_DRIVER) = hPed
|
|
// AND NOT IS_ENTITY_AT_COORD(HeliToSteal, vHanger, <<8,8,4>>)
|
|
//
|
|
// IF hPed = hBuddyMichael
|
|
// buddyMichaelDrivingHeli = TRUE
|
|
// buddyMichaelDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
// IF hPed = hBuddyTrevor
|
|
// BuddyTrevorDrivingHeli = TRUE
|
|
// BuddyTrevorDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
// IF hPed = hBuddyFranklin
|
|
// BuddyFranklinDrivingHeli = TRUE
|
|
// BuddyFranklinDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
//
|
|
// RETURN TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check if player and buddy are in any other vehicle
|
|
// IF GET_ENTITY_MODEL(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) <> CARGOBOB
|
|
// IF IS_THIS_MODEL_A_CAR(GET_ENTITY_MODEL(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())))
|
|
// OR IS_THIS_MODEL_A_BIKE(GET_ENTITY_MODEL(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())))
|
|
// OR IS_THIS_MODEL_A_QUADBIKE(GET_ENTITY_MODEL(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())))
|
|
//
|
|
// IF hPed = hBuddyMichael
|
|
// BuddyMichaelDrivingHeli = FALSE
|
|
// BuddyMichaelDrivingAnyVehicle = TRUE
|
|
// ENDIF
|
|
// IF hPed = hBuddyTrevor
|
|
// BuddyTrevorDrivingHeli = FALSE
|
|
// BuddyTrevorDrivingAnyVehicle = TRUE
|
|
// ENDIF
|
|
// IF hPed = hBuddyFranklin
|
|
// BuddyFranklinDrivingHeli = FALSE
|
|
// BuddyFranklinDrivingAnyVehicle = TRUE
|
|
// ENDIF
|
|
//
|
|
// RETURN TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF hPed = hBuddyMichael
|
|
// BuddyMichaelDrivingHeli = FALSE
|
|
// BuddyMichaelDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
// IF hPed = hBuddyTrevor
|
|
// BuddyTrevorDrivingHeli = FALSE
|
|
// BuddyTrevorDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
// IF hPed = hBuddyFranklin
|
|
// BuddyFranklinDrivingHeli = FALSE
|
|
// BuddyFranklinDrivingAnyVehicle = FALSE
|
|
// ENDIF
|
|
//
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
//
|
|
////PURPOSE: Checks if players buddy is in the driver seat of a vehicle the player is in.
|
|
//FUNC BOOL IS_BUDDY_IN_BACK_SEAT(PED_INDEX hPed)
|
|
//
|
|
// //Check if player is in any vehicle and if his buddy is in that vehicle's driving seat.
|
|
// IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
// AND IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF NOT IS_PED_INJURED(hPed)
|
|
// IF IS_PED_IN_VEHICLE(hPed, HeliToSteal)
|
|
// IF GET_PED_IN_VEHICLE_SEAT(HeliToSteal, VS_BACK_LEFT) = hPed
|
|
// IF GET_ENTITY_HEIGHT_ABOVE_GROUND(HeliToSteal) > 20
|
|
// IF hPed = hBuddyMichael
|
|
// VS_buddyMichael_seat = VS_BACK_LEFT
|
|
// ENDIF
|
|
// IF hPed = hBuddyTrevor
|
|
// VS_buddyTrevor_seat = VS_BACK_LEFT
|
|
// ENDIF
|
|
// IF hPed = hBuddyFranklin
|
|
// VS_buddyFranklin_seat = VS_BACK_LEFT
|
|
// ENDIF
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF GET_PED_IN_VEHICLE_SEAT(HeliToSteal, VS_BACK_RIGHT) = hPed
|
|
// IF GET_ENTITY_HEIGHT_ABOVE_GROUND(HeliToSteal) > 20
|
|
// IF hPed = hBuddyMichael
|
|
// VS_buddyMichael_seat = VS_BACK_RIGHT
|
|
// ENDIF
|
|
// IF hPed = hBuddyTrevor
|
|
// VS_buddyTrevor_seat = VS_BACK_RIGHT
|
|
// ENDIF
|
|
// IF hPed = hBuddyFranklin
|
|
// VS_buddyFranklin_seat = VS_BACK_RIGHT
|
|
// ENDIF
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
//
|
|
////PURPOSE: Handles the player firing rockets from the heli rear passenger seats
|
|
//PROC DO_PLAYER_ROCKET_FIRE_FROM_HELI_SIDE()
|
|
//
|
|
// IF iRocketControlFlag = 0
|
|
//
|
|
// RocketCam = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
|
|
// REQUEST_MODEL(PROP_LD_W_LR_RPG)
|
|
//
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF DOES_CAM_EXIST(RocketCam)
|
|
// ATTACH_CAM_TO_ENTITY(RocketCam, HeliToSteal, << -1.40739, 4.40528, 0.236747 >>)
|
|
// POINT_CAM_AT_COORD(RocketCam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, << -10, 2.25834, -0.21304 >>))
|
|
// SET_CAM_ACTIVE(RocketCam, TRUE)
|
|
// SET_CAM_FOV(RocketCam, 50)
|
|
// DISPLAY_RADAR(FALSE)
|
|
// RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
//// SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
|
// fCamNewDirectionZCoord = -0.21304
|
|
// fCamNewDirectionYCoord = 2.25834
|
|
// RocketReadyToBeFired = TRUE
|
|
// iRocketControlFlag = 1
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF iRocketControlFlag = 1
|
|
//
|
|
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON)
|
|
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON)
|
|
//
|
|
//// SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE)
|
|
// //Get the hash INT for the RPG weapon through RAG -> UI -> HUD widget -> Reticle Override
|
|
// SET_RETICULE_OVERRIDE_THIS_FRAME(-1312131151)
|
|
//// DISPLAY_SNIPER_SCOPE_THIS_FRAME()
|
|
//
|
|
// // UP AND DOWN CONTROL CAMERA MOVEMENT
|
|
// IF (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_UP_ONLY) AND NOT IS_LOOK_INVERTED())
|
|
// OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_DOWN_ONLY) AND IS_LOOK_INVERTED())
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord + 0.25)
|
|
// ELSE
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord + 0.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_DOWN_ONLY) AND NOT IS_LOOK_INVERTED())
|
|
// OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_UP_ONLY) AND IS_LOOK_INVERTED())
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord - 0.25)
|
|
// ELSE
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord - 0.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF fCamNewDirectionZCoord > 4.5
|
|
// fCamNewDirectionZCoord = 4.5
|
|
// ENDIF
|
|
// IF fCamNewDirectionZCoord < -4.5
|
|
// fCamNewDirectionZCoord = -4.5
|
|
// ENDIF
|
|
//
|
|
//
|
|
// // LEFT AND RIGHT CONTROL CAMERA MOVEMENT
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_LEFT_ONLY)
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord - 0.75)
|
|
// ELSE
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord - 1.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_RIGHT_ONLY)
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord + 0.75)
|
|
// ELSE
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord + 1.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF fCamNewDirectionYCoord > 30
|
|
// fCamNewDirectionYCoord = 30
|
|
// ENDIF
|
|
// IF fCamNewDirectionYCoord < -30
|
|
// fCamNewDirectionYCoord = -30
|
|
// ENDIF
|
|
//
|
|
// POINT_CAM_AT_COORD(RocketCam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, << -10, fCamNewDirectionYCoord, fCamNewDirectionZCoord >>))
|
|
//
|
|
// //Zoom in if aim is pressed.
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// SET_CAM_FOV(RocketCam, 37)
|
|
// ELSE
|
|
// SET_CAM_FOV(RocketCam, 50)
|
|
// ENDIF
|
|
//
|
|
// RocketCamCoords = GET_CAM_COORD(RocketCam)
|
|
//
|
|
//// PRINTSTRING("RocketCamCoords = ") PRINTVECTOR(RocketCamCoords) PRINTNL()
|
|
//// PRINTSTRING("VecEndCoords = ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, << -10, fCamNewDirectionYCoord, fCamNewDirectionZCoord >>)) PRINTNL()
|
|
//
|
|
// //Fire rocket if control is pressed/
|
|
// IF RocketReadyToBeFired = TRUE
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_ATTACK)
|
|
// //Have a safety check as a temp fix for bug 1151740 until propper camera is implemented
|
|
// IF RocketCamCoords.x > 3000
|
|
// RocketCamCoords.x = 3000
|
|
// ENDIF
|
|
// IF RocketCamCoords.y > 3000
|
|
// RocketCamCoords.y = 3000
|
|
// ENDIF
|
|
// IF RocketCamCoords.z > 800
|
|
// RocketCamCoords.z = 800
|
|
// ENDIF
|
|
// SHOOT_SINGLE_BULLET_BETWEEN_COORDS(RocketCamCoords, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, << -10, fCamNewDirectionYCoord, fCamNewDirectionZCoord >>), 50, FALSE, WEAPONTYPE_RPG)
|
|
// iRocketFired = GET_GAME_TIMER()
|
|
// RocketReadyToBeFired = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF RocketReadyToBeFired = FALSE
|
|
// IF GET_GAME_TIMER() > iRocketFired + 5000
|
|
// RocketReadyToBeFired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// IF HAS_ANY_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds)
|
|
//// DISPLAY_RADAR(TRUE)
|
|
//// RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
//// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
//PURPOSE: Handles the mission stats system
|
|
PROC STATS_CONTROL()
|
|
|
|
|
|
ENDPROC
|
|
|
|
//
|
|
//FUNC ROCKET_LINE_UP_STATE GET_ROCKET_LINE_UP_STATE(VEHICLE_INDEX veh_target, VEHICLE_INDEX veh_player)
|
|
// VECTOR v_offset
|
|
// FLOAT f_vertical_angle, f_horizontal_angle, f_dist
|
|
// ROCKET_LINE_UP_STATE e_rocket_state = LINE_UP_DONT_FIRE_TOO_FAR_AWAY
|
|
//
|
|
// IF NOT IS_ENTITY_DEAD(veh_target)
|
|
// AND NOT IS_ENTITY_DEAD(veh_player)
|
|
// //Rules:
|
|
// // - If the player is too far away, don't fire at all.
|
|
// // - If the player is on the wrong side, don't fire at all.
|
|
// // - If the the player is on the right side but the angle is too tight, then fire but miss.
|
|
// f_dist = VDIST2(GET_ENTITY_COORDS(veh_target), GET_ENTITY_COORDS(veh_player))
|
|
//
|
|
// IF f_dist < 10000.0
|
|
// v_offset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(veh_player, GET_ENTITY_COORDS(veh_target))
|
|
// f_vertical_angle = ABSF(ATAN2(ABSF(v_offset.x), ABSF(v_offset.z)))
|
|
// f_horizontal_angle = ABSF(ATAN2(ABSF(v_offset.x), ABSF(v_offset.y)))
|
|
//
|
|
// IF f_vertical_angle > 20.0 AND f_horizontal_angle > 5.0
|
|
// IF v_offset.x < 0.0
|
|
// e_rocket_state = LINE_UP_FIRE_LEFT_SIDE
|
|
//// PRINTSTRING("e_rocket_state = LINE_UP_FIRE_LEFT_SIDE") PRINTNL()
|
|
// ELSE
|
|
//// PRINTSTRING("e_rocket_state = LINE_UP_FIRE_RIGHT_SIDE") PRINTNL()
|
|
// e_rocket_state = LINE_UP_FIRE_RIGHT_SIDE
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("e_rocket_state = LINE_UP_DONT_FIRE_BAD_ANGLE") PRINTNL()
|
|
// e_rocket_state = LINE_UP_DONT_FIRE_BAD_ANGLE
|
|
// /*IF v_offset.x < 0.0
|
|
// e_rocket_state = LINE_UP_FIRE_MISS_LEFT_SIDE
|
|
// ELSE
|
|
// e_rocket_state = LINE_UP_FIRE_MISS_RIGHT_SIDE
|
|
// ENDIF*/
|
|
// ENDIF
|
|
// ELSE
|
|
// e_rocket_state = LINE_UP_DONT_FIRE_TOO_FAR_AWAY
|
|
//// PRINTSTRING("e_rocket_state = LINE_UP_DONT_FIRE_TOO_FAR_AWAY") PRINTNL()
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// #IF IS_DEBUG_BUILD
|
|
// //PRINTLN(f_dist, " ", v_offset, " ", f_vertical_angle, " ", f_horizontal_angle)
|
|
// #ENDIF
|
|
//
|
|
// RETURN e_rocket_state
|
|
//ENDFUNC
|
|
//
|
|
//PROC UPDATE_TARGET_HELI()
|
|
//
|
|
// //Change target if current target is destroyed
|
|
// IF i_current_lester_target = 0
|
|
// IF DOES_ENTITY_EXIST(enemyheli[0])
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(enemyheli[0])
|
|
// IF DOES_ENTITY_EXIST(enemyheli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(enemyheli[1])
|
|
// i_current_lester_target = 1
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(enemyheli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(enemyheli[1])
|
|
// i_current_lester_target = 1
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF i_current_lester_target = 1
|
|
// IF DOES_ENTITY_EXIST(enemyheli[1])
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(enemyheli[1])
|
|
// IF DOES_ENTITY_EXIST(enemyheli[0])
|
|
// IF IS_VEHICLE_DRIVEABLE(enemyheli[0])
|
|
// i_current_lester_target = 0
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(enemyheli[0])
|
|
// IF IS_VEHICLE_DRIVEABLE(enemyheli[0])
|
|
// i_current_lester_target = 0
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
//
|
|
//PROC HANDLE_BUDDY_FIRING_ROCKETS(PED_INDEX hBuddyPed)
|
|
//
|
|
//// PRINTSTRING("current heli target = ") PRINTINT(i_current_lester_target) PRINTNL()
|
|
//// PRINTSTRING("rocket timer = ") PRINTINT(i_rocket_timer) PRINTNL()
|
|
//
|
|
// //Lester rockets: don't do any of this stuff if we're in the military choppers.
|
|
// ROCKET_LINE_UP_STATE e_rocket_state
|
|
// FLOAT f_speed_multiplier = 1
|
|
//
|
|
// //Rockets: come from buddies, and later on enemies.
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
// OR DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
//
|
|
//
|
|
// UPDATE_BUDDY_ROCKET_ANIMS(hBuddyPed)
|
|
//
|
|
// UPDATE_ROCKETS()
|
|
//
|
|
//// PRINTSTRING("i_player_rocket_event = ") PRINTINT(i_player_rocket_event) PRINTNL()
|
|
//
|
|
// //Sequence of events for buddy rockets:
|
|
// // - Waits for the player to get into position.
|
|
// // - Fires the rocket.
|
|
// // - Reloads.
|
|
// // - If the rocket missed then repeat, otherwise pick a new target.
|
|
// SWITCH i_player_rocket_event
|
|
// CASE 0 //Lester gets the rocket launcher out.
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_USING_AI)
|
|
//
|
|
// //Move stage on if either heli is close to hbuddy
|
|
// fEnemyHeliDistance[0] = GET_DISTANCE_BETWEEN_ENTITIES(EnemyHeli[0], hBuddyPed)
|
|
// fEnemyHeliDistance[1] = GET_DISTANCE_BETWEEN_ENTITIES(EnemyHeli[1], hBuddyPed)
|
|
//
|
|
// //Check if heli 0 is closer than heli 1 and is under 300m's from hbuddy
|
|
// IF fEnemyHeliDistance[0] < fEnemyHeliDistance[1]
|
|
// AND fEnemyHeliDistance[0] < 300
|
|
//// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(s_locates_data, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
|
|
//// IF CREATE_CONVERSATION(s_conversation_peds, str_dialogue_block, "BS2B_TREVOR", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM)
|
|
//// PRINTSTRING("SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM) ***** i_current_lester_target = 0") PRINTNL()
|
|
//
|
|
// i_current_lester_target = 0
|
|
// i_player_rocket_event++
|
|
//// ENDIF
|
|
//// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check if heli 1 is closer than heli 0 and is under 300m's from hbuddy
|
|
// IF fEnemyHeliDistance[1] < fEnemyHeliDistance[0]
|
|
// AND fEnemyHeliDistance[1] < 300
|
|
//// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(s_locates_data, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
|
|
//// IF CREATE_CONVERSATION(s_conversation_peds, str_dialogue_block, "BS2B_TREVOR", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM)
|
|
//// PRINTSTRING("SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_LAUNCHER_OUT_THEN_AIM) ***** i_current_lester_target = 1") PRINTNL()
|
|
//
|
|
// i_current_lester_target = 1
|
|
// i_player_rocket_event++
|
|
//// ENDIF
|
|
//// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE 1 //Lester waits for the player to get into a good position, then fires.
|
|
//
|
|
// //Do help text to tell player ~s~Help Lester target the choppers by flying close to Merryweather and keeping level.~s~
|
|
//// IF NOT HAS_LABEL_BEEN_TRIGGERED("F3B_ROCHELP")
|
|
//// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(s_locates_data)
|
|
//// PRINT_HELP("F3B_ROCHELP")
|
|
//// SET_LABEL_AS_TRIGGERED("F3B_ROCHELP", TRUE)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//
|
|
//// //Play reloading dialogue.
|
|
// IF e_rocket_anim_state = ROCKET_ANIM_RELOAD_THEN_AIM
|
|
// IF ReloadingChatDone = FALSE
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT41", CONV_PRIORITY_MEDIUM)
|
|
// //Reloading!
|
|
// ReloadingChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT40", CONV_PRIORITY_MEDIUM)
|
|
// //Reloading!
|
|
// ReloadingChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT42", CONV_PRIORITY_MEDIUM)
|
|
// //Reloading!
|
|
// ReloadingChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// IF f_playback_time > f_min_time_to_shoot AND f_playback_time < f_max_time_to_shoot
|
|
//
|
|
// //Update the target heli here
|
|
// UPDATE_TARGET_HELI()
|
|
//
|
|
// e_rocket_state = GET_ROCKET_LINE_UP_STATE(EnemyHeli[i_current_lester_target], HeliToSteal)
|
|
//
|
|
// IF GET_GAME_TIMER() - i_rocket_timer > 3000 //Guarantee some time between rockets.
|
|
// IF e_rocket_state = LINE_UP_DONT_FIRE_TOO_FAR_AWAY
|
|
// IF GET_GAME_TIMER() - i_rocket_line_up_dialogue_timer > 0
|
|
// //Do some random dialogue for being too far away
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT26", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //I'm not hitting anything from this distance!
|
|
// //You need to get closer, I can't hit anything from here!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT25", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //I'm not hitting anything from this distance!
|
|
// //You need to get closer, I can't hit anything from here!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT27", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //You need to get closer, I can't hit anything from here!
|
|
// //I'm not hitting anything from this distance!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF e_rocket_state = LINE_UP_DONT_FIRE_BAD_ANGLE
|
|
// IF GET_GAME_TIMER() - i_rocket_line_up_dialogue_timer > 0
|
|
// //Do some random dialogue for being too far away
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT29", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //The angle's too tight, I can't get a shot!
|
|
// //Move over, I need a better angle!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT28", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //The angle's too tight, I can't get a shot!
|
|
// //Move over, I need a better angle!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT30", CONV_PRIORITY_MEDIUM)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_GET_CLOSER_THEN_AIM)
|
|
// i_rocket_line_up_dialogue_timer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(8000, 10000)
|
|
// //The angle's too tight, I can't get a shot!
|
|
// //Move over, I need a better angle!
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF NOT IS_ENTITY_DEAD(EnemyHeli[i_current_lester_target])
|
|
// AND e_rocket_anim_state = ROCKET_ANIM_AIMING
|
|
//
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF TakingAShotChatDone = FALSE
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT32", CONV_PRIORITY_MEDIUM)
|
|
// //I'm going for it, keep us steady!
|
|
// //Going for a shot!
|
|
// TakingAShotChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT31", CONV_PRIORITY_MEDIUM)
|
|
// //I'm going for it, keep us steady!
|
|
// //Going for a shot!
|
|
// TakingAShotChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT33", CONV_PRIORITY_MEDIUM)
|
|
// //I'm going for it, keep us steady!
|
|
// //Going for a shot!
|
|
// TakingAShotChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // PRINTSTRING("e_rocket_state = ROCKET_ANIM_AIMING") PRINTNL()
|
|
// VECTOR v_start_pos, v_end_offset
|
|
//
|
|
// IF e_rocket_state = LINE_UP_FIRE_LEFT_SIDE
|
|
// v_start_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, <<-1.2, 2.0, 1.2>>)
|
|
// v_end_offset = <<0.0, 0.0, 0.0>>
|
|
// ELIF e_rocket_state = LINE_UP_FIRE_RIGHT_SIDE
|
|
// v_start_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, <<1.2, 2.0, 1.2>>)
|
|
// v_end_offset = <<0.0, 0.0, 0.0>>
|
|
// ELIF e_rocket_state = LINE_UP_FIRE_MISS_LEFT_SIDE
|
|
// v_start_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, <<-1.2, 2.0, 1.2>>)
|
|
// v_end_offset = <<5.0, -5.0, -5.0>>
|
|
// ELIF e_rocket_state = LINE_UP_FIRE_MISS_RIGHT_SIDE
|
|
// v_start_pos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal,<<1.2, 2.0, 1.2>>)
|
|
// v_end_offset = <<5.0, -5.0, -5.0>>
|
|
// ENDIF
|
|
//
|
|
// IF FIRE_ROCKET(v_start_pos, EnemyHeli[i_current_lester_target], HeliToSteal, v_end_offset, FALSE, FALSE, f_speed_multiplier)
|
|
// // PRINTSTRING("FIRE_ROCKET RETURNING TRUE") PRINTNL()
|
|
// // SET_LABEL_AS_TRIGGERED("BS2B_RELOAD", FALSE)
|
|
// SET_LESTER_ROCKET_ANIM_STATE(ROCKET_ANIM_RELOAD_THEN_AIM)
|
|
// i_player_rocket_event++
|
|
// ELSE
|
|
// // PRINTSTRING("FIRE_ROCKET RETURNING FALSE") PRINTNL()
|
|
// ENDIF
|
|
// ELSE
|
|
// IF IS_ENTITY_DEAD(EnemyHeli[i_current_lester_target])
|
|
// i_player_rocket_event++
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//// ENDIF
|
|
// BREAK
|
|
//
|
|
// CASE 2 //Reload and update target if they were hit.
|
|
// IF i_rocket_timer != 0
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(EnemyHeli[i_current_lester_target]) //Chopper was blown up.
|
|
// //Do some chat for hitting the heli
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF RocketHitChatDone = FALSE
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT38", CONV_PRIORITY_MEDIUM)
|
|
// //Gotcha!
|
|
// //Boom!
|
|
// //Hell yeah!
|
|
// //Burn you fuckers!
|
|
// RocketHitChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT37", CONV_PRIORITY_MEDIUM)
|
|
// //Gotcha!
|
|
// //Boom!
|
|
// //Hell yeah!
|
|
// //Burn you fuckers!
|
|
// RocketHitChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT39", CONV_PRIORITY_MEDIUM)
|
|
// //Gotcha!
|
|
// //Boom!
|
|
// //Hell yeah!
|
|
// //Burn you fuckers!
|
|
// RocketHitChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// PRINTSTRING("CHOPPER WAS BLOWN UP") PRINTNL()
|
|
// i_rocket_timer = GET_GAME_TIMER()
|
|
//
|
|
// //Change targets if the other heli is still alive and go back a stage
|
|
// IF i_current_lester_target = 0
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// i_current_lester_target = 1
|
|
// i_player_rocket_event--
|
|
// ELSE
|
|
// i_player_rocket_event = 100 //All targets are dead.
|
|
// ENDIF
|
|
// ELIF i_current_lester_target = 1
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
// i_current_lester_target = 0
|
|
// i_player_rocket_event--
|
|
// ELSE
|
|
// i_player_rocket_event = 100 //All targets are dead.
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("CHOPPER WASN'T BLOWN UP") PRINTNL()
|
|
//
|
|
// //Do some chat for missing the heli
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF RocketMissChatDone = FALSE
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// IF FoundRocketChatDone = TRUE
|
|
// //Check which buddy is firing the rockets for the correct line of dialogue
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT35", CONV_PRIORITY_MEDIUM)
|
|
// //Dammit!
|
|
// //Shit!
|
|
// //Fuck!
|
|
// RocketMissChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT34", CONV_PRIORITY_MEDIUM)
|
|
// //Dammit!
|
|
// //Shit!
|
|
// //Fuck!
|
|
// RocketMissChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT36", CONV_PRIORITY_MEDIUM)
|
|
// //Dammit!
|
|
// //Shit!
|
|
// //Fuck!
|
|
// RocketMissChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// i_rocket_timer = GET_GAME_TIMER()
|
|
// i_player_rocket_event--
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("STUCK COS i_rocket_timer = 0") PRINTNL()
|
|
// ENDIF
|
|
// IF i_player_rocket_event != 2
|
|
// TakingAShotChatDone = FALSE
|
|
// RocketMissChatDone = FALSE
|
|
// RocketHitChatDone = FALSE
|
|
// ENDIF
|
|
// BREAK
|
|
// ENDSWITCH
|
|
//
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyReadyToFireRockets = FALSE") PRINTNL()
|
|
// BuddyMichaelReadyToFireRockets = FALSE
|
|
// BuddyTrevorReadyToFireRockets = FALSE
|
|
// BuddyFranklinReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
//
|
|
////PURPOSE: Reset's or deletes everything if no battle buddy is overridden.
|
|
//PROC RESET_OR_DELETE_EVERYTHING_FOR_BATTLEBUDDY()
|
|
//
|
|
// //Delete the rocket 1st person cam if active
|
|
// IF DOES_CAM_EXIST(RocketCam)
|
|
// DISPLAY_RADAR(TRUE)
|
|
// RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
// DESTROY_CAM(RocketCam)
|
|
// iRocketControlFlag = 0
|
|
// ENDIF
|
|
//
|
|
// //Flags
|
|
// PlayerNotInAVehicleTimerStarted = FALSE
|
|
//
|
|
// iRocketControlFlag = 0
|
|
//
|
|
// //release the rode nodes if they were requested
|
|
// IF nodesRequested = TRUE
|
|
// //RELEASE_PATH_NODES()
|
|
// nodesRequested = FALSE
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
|
|
////Handles the battle buddies
|
|
//PROC MONITOR_BATTLE_BUDDIES()
|
|
//
|
|
// hBuddyMichael = GET_BATTLEBUDDY_PED(CHAR_MICHAEL)
|
|
// hBuddyFranklin = GET_BATTLEBUDDY_PED(CHAR_FRANKLIN)
|
|
// hBuddyTrevor = GET_BATTLEBUDDY_PED(CHAR_TREVOR)
|
|
//
|
|
// //Handle Battle Buddy Michael if he's available
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF NOT IS_PED_INJURED(hBuddyMichael)
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyMichael)
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = FALSE") PRINTNL()
|
|
//
|
|
// //Reset delete anything that shouldn't be there if no buddies are overridden
|
|
// RESET_OR_DELETE_EVERYTHING_FOR_BATTLEBUDDY()
|
|
//
|
|
// //Set buddy to take cover at the cargobob if near it and player is on foot
|
|
// IF missionStage = STAGE_STEAL_CARGOBOB
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(hBuddyMichael, HeliToSteal) < 20
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_BATTLEBUDDY_BEHAVIOUR_REQUESTED(BBF_CombatDefendCargobobArea)
|
|
// IF buddyMichaelCombatFlagSet = FALSE
|
|
// SET_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyMichaelCombatFlagSet = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyMichaelCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyMichaelCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyMichaelCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyMichaelCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Dont take control of battle buddy until switch cam has finished.
|
|
// IF NOT IS_SELECTOR_CAM_ACTIVE()
|
|
//
|
|
// //HAVE CHECKS FOR CASES WHEREBY BATTLE BUDDY WILL NEED TO BE OVERRIDDEN HERE
|
|
//
|
|
// // Is buddy driving the players vehicle
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyMichael)
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE") PRINTNL()
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyMichael, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyMichael, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyMichael, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyMichael)
|
|
// BuddyMichaelReadyToBeReleased = FALSE
|
|
// BuddyMichaelRocketOveride = FALSE
|
|
// BuddyMichaelDriverOveride = TRUE
|
|
// BuddyMichaelReadyToDriveBy = FALSE
|
|
// BuddyMichaelReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script need to take control of buddy to fire rockets at enemychoppers
|
|
// IF missionStage = STAGE_ESCAPE_MILITARY
|
|
// IF EnemyHeliDown[0] = FALSE
|
|
// OR EnemyHeliDown[1] = FALSE
|
|
// IF IS_BUDDY_IN_BACK_SEAT(hBuddyMichael)
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyMichael, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyMichael, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyMichael, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyMichael)
|
|
// IF VS_buddyMichael_seat = VS_BACK_LEFT
|
|
// i_player_rocket_event = 0
|
|
// BuddyMichaelReadyToFireRockets = TRUE
|
|
// BuddyMichaelRocketOveride = TRUE
|
|
// BuddyMichaelReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// IF VS_buddyMichael_seat = VS_BACK_RIGHT
|
|
// BuddyMichaelReadyToDriveBy = TRUE
|
|
// BuddyMichaelRocketOveride = FALSE
|
|
// BuddyMichaelReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// BuddyMichaelReadyToBeReleased = FALSE
|
|
// BuddyMichaelDriverOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = TRUE") PRINTNL()
|
|
//
|
|
// //GENERAL RULES THAT SHOULD ALWAYS ALLOW BUDDY TO BE RELEASED
|
|
// //If player is not in the buddy's vehicle after 5 seconds release battle buddy
|
|
// IF BuddyMichaelReadyToBeReleased = FALSE
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF PlayerNotInAVehicleTimerStarted = FALSE
|
|
// iPlayerNotInAnyVehicleTimer = GET_GAME_TIMER()
|
|
// PlayerNotInAVehicleTimerStarted = TRUE
|
|
// ELSE
|
|
// IF GET_GAME_TIMER() > (iPlayerNotInAnyVehicleTimer + 5000)
|
|
//// PRINTSTRING("BuddyMichaelReadyToBeReleased 1 = TRUE") PRINTNL()
|
|
// BuddyMichaelReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check to make sure the player is in the same vehicle as the buddy, if not release the battle buddy.
|
|
// IF IS_PED_IN_ANY_VEHICLE(hBuddyMichael)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// //Reset flag for if player gets back in the vehicle under 5 seconds
|
|
// PlayerNotInAVehicleTimerStarted = FALSE
|
|
// ELSE
|
|
// BuddyMichaelReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If player switches then release all battle buddies
|
|
// IF BuddyMichaelReadyToBeReleased = FALSE
|
|
// IF IS_SELECTOR_CAM_ACTIVE()
|
|
//// PRINTSTRING("BuddyMichaelReadyToBeReleased 2 = TRUE") PRINTNL()
|
|
// BuddyMichaelReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is firing rockets from side of heli, with player driving
|
|
// IF BuddyMichaelRocketOveride = TRUE
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyMichael)
|
|
// AND BuddyMichaelReadyToBeReleased = FALSE
|
|
// IF BuddyMichaelReadyToFireRockets = TRUE
|
|
// HANDLE_BUDDY_FIRING_ROCKETS(hBuddyMichael)
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyMichaelReadyToBeReleased 4 = TRUE") PRINTNL()
|
|
// BuddyMichaelReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF BuddyMichaelReadyToBeReleased = TRUE
|
|
// IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// DELETE_OBJECT(obj_lesters_rpg)
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
// DELETE_OBJECT(obj_single_rocket)
|
|
// ENDIF
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddyMichael)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF NOT IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// SET_PED_INTO_VEHICLE(hBuddyMichael, HeliToSteal, VS_buddyMichael_seat)
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyMichael)
|
|
// BuddyMichaelRocketOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is ready to drive by in the heli's back right seat.
|
|
// IF BuddyMichaelReadyToDriveBy = TRUE
|
|
// // Does script still need to take control of buddy to do drive by?
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyMichael)
|
|
// AND BuddyMichaelReadyToBeReleased = FALSE
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// TASK_DRIVE_BY(hBuddyMichael, NULL, EnemyHeli[0], <<0,0,0>>, 10000, 100)
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyMichael, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyMichael, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyMichael)
|
|
// BuddyMichaelReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is driving heli with player firing rockets from the side.
|
|
// IF BuddyMichaelDriverOveride = TRUE
|
|
//
|
|
//// PRINTSTRING("BuddyMichaelDriverOveride = TRUE") PRINTNL()
|
|
//
|
|
// //Handle player firing rockets from side of heli here as buddy will be overridden to fly the heli at this point.
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) = VS_BACK_LEFT
|
|
// DO_PLAYER_ROCKET_FIRE_FROM_HELI_SIDE()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script still need to take control of buddy and drive to dest?
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyMichael)
|
|
// AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyMichael)
|
|
// AND BuddyMichaelReadyToBeReleased = FALSE
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE...AND..DOES_ENTITY_BELONG_TO_THIS_SCRIPT = TRUE") PRINTNL()
|
|
//
|
|
// // Give buddy task to fly heli to hanger
|
|
// IF BuddyMichaelDrivingHeli = TRUE
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyMichael)
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vbuddyCoords.x,vbuddyCoords.y, (vbuddyCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 20, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 5, 1, -1, 0, 0)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyMichael, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//
|
|
// //Give buddy task to drive the car to the heli
|
|
// IF BuddyMichaelDrivingAnyVehicle = TRUE
|
|
// vDriveToHeliCoords = GET_ENTITY_COORDS(heliToSteal)
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyMichael)
|
|
// REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = TRUE") PRINTNL()
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyMichael, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF ARE_NODES_LOADED_FOR_AREA(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
// TASK_VEHICLE_MISSION_COORS_TARGET(hBuddyMichael, GET_VEHICLE_PED_IS_IN(hBuddyMichael), vDriveToHeliCoords, MISSION_GOTO, 40.0, DRIVINGMODE_PLOUGHTHROUGH|DRIVINGMODE_AVOIDCARS_RECKLESS, 10.0, 10.0)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = FALSE") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// //Run a check for player being driven to the heli by a buddy. Dont allow release of buddy till player is out of the car.
|
|
// //Bring the car to a halt once close enough to the helicopter.
|
|
//// IF IS_ENTITY_IN_ANGLED_AREA(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), <<-2115.419434,3038.640137,30.809973>>, <<-2144.749512,3055.938232,36.309971>>, 16.750000)
|
|
//// PRINTSTRING("Players vehicle is in the area where it should be brought to a halt") PRINTNL()
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(heliToSteal), GET_ENTITY_COORDS(hBuddyMichael)) < 15
|
|
// IF NOT IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
//// PRINTSTRING("Vehicle is not stopped") PRINTNL()
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF NOT IS_PLAYER_IN_VEH_SEAT(PLAYER_ID(), VS_DRIVER)
|
|
//// PRINTSTRING("BRING_VEHICLE_TO_HALT is being called") PRINTNL()
|
|
// BRING_VEHICLE_TO_HALT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 7, 10)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TaskToStopVehicle = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("Players vehicle is NOT in the area where it should be brought to a halt") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// IF TaskToStopVehicle = TRUE
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(hBuddyMichael))
|
|
// CLEAR_PED_TASKS(hBuddyMichael)
|
|
// REMOVE_PED_FROM_GROUP(hBuddyMichael)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyMichael, TRUE)
|
|
// SET_PED_SPHERE_DEFENSIVE_AREA(hBuddyMichael, GET_ENTITY_COORDS(hBuddyMichael), 15)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_ANY_VEHICLE(NULL)
|
|
// TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyMichael, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyMichael, CA_USE_VEHICLE, FALSE)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyMichael, CA_LEAVE_VEHICLES, TRUE)
|
|
//// PRINTSTRING("Sequence task given to buddy") PRINTNL()
|
|
// TaskToStopVehicle = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
// IF BuddyMichaelReadyToBeReleased = TRUE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = TRUE so RELEASE_BATTLEBUDY BEING CALLED") PRINTNL()
|
|
// RELEASE_BATTLEBUDDY(hBuddyMichael)
|
|
// BuddyMichaelDriverOveride = FALSE
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = FALSE") PRINTNL()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// //Some debug testing
|
|
//// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddy)
|
|
//// PRINTSTRING("Buddy is in the driver seat") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy is NOT in the driver seat") PRINTNL()
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddy)
|
|
//// PRINTSTRING("Buddy belongs to this script") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy does not belong to this script") PRINTNL()
|
|
//// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle Battle Buddy Trevor if he's available
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF NOT IS_PED_INJURED(hBuddyTrevor)
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyTrevor)
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = FALSE") PRINTNL()
|
|
//
|
|
// //Reset delete anything that shouldn't be there if no buddies are overridden
|
|
// RESET_OR_DELETE_EVERYTHING_FOR_BATTLEBUDDY()
|
|
//
|
|
// //Set buddy to take cover at the cargobob if near it and player is on foot
|
|
// IF missionStage = STAGE_STEAL_CARGOBOB
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(hBuddyMichael, HeliToSteal) < 20
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_BATTLEBUDDY_BEHAVIOUR_REQUESTED(BBF_CombatDefendCargobobArea)
|
|
// IF buddyTrevorCombatFlagSet = FALSE
|
|
// SET_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyTrevorCombatFlagSet = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyTrevorCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyTrevorCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyTrevorCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyTrevorCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Dont take control of battle buddy until switch cam has finished.
|
|
// IF NOT IS_SELECTOR_CAM_ACTIVE()
|
|
//
|
|
// //HAVE CHECKS FOR CASES WHEREBY BATTLE BUDDY WILL NEED TO BE OVERRIDDEN HERE
|
|
//
|
|
// // Is buddy driving the players vehicle
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyTrevor)
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE") PRINTNL()
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyTrevor, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyTrevor, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyTrevor, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
// BuddyTrevorReadyToBeReleased = FALSE
|
|
// BuddyTrevorRocketOveride = FALSE
|
|
// BuddyTrevorDriverOveride = TRUE
|
|
// BuddyTrevorReadyToDriveBy = FALSE
|
|
// BuddyTrevorReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script need to take control of buddy to fire rockets at enemychoppers
|
|
// IF missionStage = STAGE_ESCAPE_MILITARY
|
|
// IF EnemyHeliDown[0] = FALSE
|
|
// OR EnemyHeliDown[1] = FALSE
|
|
// IF IS_BUDDY_IN_BACK_SEAT(hBuddyTrevor)
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyTrevor, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyTrevor, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyTrevor, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
// IF VS_buddyTrevor_seat = VS_BACK_LEFT
|
|
// i_player_rocket_event = 0
|
|
// BuddyTrevorReadyToFireRockets = TRUE
|
|
// BuddyTrevorRocketOveride = TRUE
|
|
// BuddyTrevorReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// IF VS_buddyTrevor_seat = VS_BACK_RIGHT
|
|
// BuddyTrevorReadyToDriveBy = TRUE
|
|
// BuddyTrevorRocketOveride = FALSE
|
|
// BuddyTrevorReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// BuddyTrevorReadyToBeReleased = FALSE
|
|
// BuddyTrevorDriverOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = TRUE") PRINTNL()
|
|
//
|
|
// //GENERAL RULES THAT SHOULD ALWAYS ALLOW BUDDY TO BE RELEASED
|
|
// //If player is not in the buddy's vehicle after 5 seconds release battle buddy
|
|
// IF BuddyTrevorReadyToBeReleased = FALSE
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF PlayerNotInAVehicleTimerStarted = FALSE
|
|
// iPlayerNotInAnyVehicleTimer = GET_GAME_TIMER()
|
|
// PlayerNotInAVehicleTimerStarted = TRUE
|
|
// ELSE
|
|
// IF GET_GAME_TIMER() > (iPlayerNotInAnyVehicleTimer + 5000)
|
|
//// PRINTSTRING("BuddyTrevorReadyToBeReleased 1 = TRUE") PRINTNL()
|
|
// BuddyTrevorReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check to make sure the player is in the same vehicle as the buddy, if not release the battle buddy.
|
|
// IF IS_PED_IN_ANY_VEHICLE(hBuddyTrevor)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// //Reset flag for if player gets back in the vehicle under 5 seconds
|
|
// PlayerNotInAVehicleTimerStarted = FALSE
|
|
// ELSE
|
|
// BuddyTrevorReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If player switches then release all battle buddies
|
|
// IF BuddyTrevorReadyToBeReleased = FALSE
|
|
// IF IS_SELECTOR_CAM_ACTIVE()
|
|
//// PRINTSTRING("BuddyTrevorReadyToBeReleased 2 = TRUE") PRINTNL()
|
|
// BuddyTrevorReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is firing rockets from side of heli, with player driving
|
|
// IF BuddyTrevorRocketOveride = TRUE
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyTrevor)
|
|
// AND BuddyTrevorReadyToBeReleased = FALSE
|
|
// IF BuddyTrevorReadyToFireRockets = TRUE
|
|
// HANDLE_BUDDY_FIRING_ROCKETS(hBuddyTrevor)
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyTrevorReadyToBeReleased 4 = TRUE") PRINTNL()
|
|
// BuddyTrevorReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF BuddyTrevorReadyToBeReleased = TRUE
|
|
// IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// DELETE_OBJECT(obj_lesters_rpg)
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
// DELETE_OBJECT(obj_single_rocket)
|
|
// ENDIF
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddyTrevor)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF NOT IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// SET_PED_INTO_VEHICLE(hBuddyTrevor, HeliToSteal, VS_buddyTrevor_seat)
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyTrevor)
|
|
// BuddyTrevorRocketOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is ready to drive by in the heli's back right seat.
|
|
// IF BuddyTrevorReadyToDriveBy = TRUE
|
|
// // Does script still need to take control of buddy to do drive by?
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyTrevor)
|
|
// AND BuddyTrevorReadyToBeReleased = FALSE
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// TASK_DRIVE_BY(hBuddyTrevor, NULL, EnemyHeli[0], <<0,0,0>>, 10000, 100)
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyTrevor, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyTrevor, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyTrevor)
|
|
// BuddyTrevorReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is driving heli with player firing rockets from the side.
|
|
// IF BuddyTrevorDriverOveride = TRUE
|
|
//
|
|
//// PRINTSTRING("BuddyTrevorDriverOveride = TRUE") PRINTNL()
|
|
//
|
|
// //Handle player firing rockets from side of heli here as buddy will be overridden to fly the heli at this point.
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) = VS_BACK_LEFT
|
|
// DO_PLAYER_ROCKET_FIRE_FROM_HELI_SIDE()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script still need to take control of buddy and drive to dest?
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyTrevor)
|
|
// AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyTrevor)
|
|
// AND BuddyTrevorReadyToBeReleased = FALSE
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE...AND..DOES_ENTITY_BELONG_TO_THIS_SCRIPT = TRUE") PRINTNL()
|
|
//
|
|
// // Give buddy task to fly heli to hanger
|
|
// IF BuddyTrevorDrivingHeli = TRUE
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyTrevor)
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vbuddyCoords.x,vbuddyCoords.y, (vbuddyCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 20, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 5, 1, -1, 0, 0)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyTrevor, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//
|
|
// //Give buddy task to drive the car to the heli
|
|
// IF BuddyTrevorDrivingAnyVehicle = TRUE
|
|
// vDriveToHeliCoords = GET_ENTITY_COORDS(heliToSteal)
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyTrevor)
|
|
// REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = TRUE") PRINTNL()
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyTrevor, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF ARE_NODES_LOADED_FOR_AREA(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
// TASK_VEHICLE_MISSION_COORS_TARGET(hBuddyTrevor, GET_VEHICLE_PED_IS_IN(hBuddyTrevor), vDriveToHeliCoords, MISSION_GOTO, 40.0, DRIVINGMODE_PLOUGHTHROUGH|DRIVINGMODE_AVOIDCARS_RECKLESS, 10.0, 10.0)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = FALSE") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// //Run a check for player being driven to the heli by a buddy. Dont allow release of buddy till player is out of the car.
|
|
// //Bring the car to a halt once close enough to the helicopter.
|
|
//// IF IS_ENTITY_IN_ANGLED_AREA(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), <<-2115.419434,3038.640137,30.809973>>, <<-2144.749512,3055.938232,36.309971>>, 16.750000)
|
|
//// PRINTSTRING("Players vehicle is in the area where it should be brought to a halt") PRINTNL()
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(heliToSteal), GET_ENTITY_COORDS(hBuddyTrevor)) < 15
|
|
// IF NOT IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
//// PRINTSTRING("Vehicle is not stopped") PRINTNL()
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF NOT IS_PLAYER_IN_VEH_SEAT(PLAYER_ID(), VS_DRIVER)
|
|
//// PRINTSTRING("BRING_VEHICLE_TO_HALT is being called") PRINTNL()
|
|
// BRING_VEHICLE_TO_HALT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 7, 10)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TaskToStopVehicle = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("Players vehicle is NOT in the area where it should be brought to a halt") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// IF TaskToStopVehicle = TRUE
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(hBuddyTrevor))
|
|
// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
// REMOVE_PED_FROM_GROUP(hBuddyTrevor)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyTrevor, TRUE)
|
|
// SET_PED_SPHERE_DEFENSIVE_AREA(hBuddyTrevor, GET_ENTITY_COORDS(hBuddyTrevor), 15)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_ANY_VEHICLE(NULL)
|
|
// TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyTrevor, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyTrevor, CA_USE_VEHICLE, FALSE)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyTrevor, CA_LEAVE_VEHICLES, TRUE)
|
|
//// PRINTSTRING("Sequence task given to buddy") PRINTNL()
|
|
// TaskToStopVehicle = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
// IF BuddyTrevorReadyToBeReleased = TRUE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = TRUE so RELEASE_BATTLEBUDY BEING CALLED") PRINTNL()
|
|
// RELEASE_BATTLEBUDDY(hBuddyTrevor)
|
|
// BuddyTrevorDriverOveride = FALSE
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = FALSE") PRINTNL()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// //Some debug testing
|
|
//// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddy)
|
|
//// PRINTSTRING("Buddy is in the driver seat") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy is NOT in the driver seat") PRINTNL()
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddy)
|
|
//// PRINTSTRING("Buddy belongs to this script") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy does not belong to this script") PRINTNL()
|
|
//// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle Battle Buddy Franklin if he's available
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF NOT IS_PED_INJURED(hBuddyFranklin)
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyFranklin)
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = FALSE") PRINTNL()
|
|
//
|
|
// //Reset delete anything that shouldn't be there if no buddies are overridden
|
|
// RESET_OR_DELETE_EVERYTHING_FOR_BATTLEBUDDY()
|
|
//
|
|
// //Set buddy to take cover at the cargobob if near it and player is on foot
|
|
// IF missionStage = STAGE_STEAL_CARGOBOB
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(hBuddyMichael, HeliToSteal) < 20
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_BATTLEBUDDY_BEHAVIOUR_REQUESTED(BBF_CombatDefendCargobobArea)
|
|
// IF buddyFranklinCombatFlagSet = FALSE
|
|
// SET_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyFranklinCombatFlagSet = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyFranklinCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyFranklinCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF buddyFranklinCombatFlagSet = TRUE
|
|
// CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatDefendCargobobArea)
|
|
// buddyFranklinCombatFlagSet = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Dont take control of battle buddy until switch cam has finished.
|
|
// IF NOT IS_SELECTOR_CAM_ACTIVE()
|
|
//
|
|
// //HAVE CHECKS FOR CASES WHEREBY BATTLE BUDDY WILL NEED TO BE OVERRIDDEN HERE
|
|
//
|
|
// // Is buddy driving the players vehicle
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyFranklin)
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE") PRINTNL()
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyFranklin, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyFranklin, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyFranklin, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
// BuddyFranklinReadyToBeReleased = FALSE
|
|
// BuddyFranklinRocketOveride = FALSE
|
|
// BuddyFranklinDriverOveride = TRUE
|
|
// BuddyFranklinReadyToDriveBy = FALSE
|
|
// BuddyFranklinReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script need to take control of buddy to fire rockets at enemychoppers
|
|
// IF missionStage = STAGE_ESCAPE_MILITARY
|
|
// IF EnemyHeliDown[0] = FALSE
|
|
// OR EnemyHeliDown[1] = FALSE
|
|
// IF IS_BUDDY_IN_BACK_SEAT(hBuddyFranklin)
|
|
// IF OVERRIDE_BATTLEBUDDY(hBuddyFranklin, FALSE)
|
|
//// PRINTSTRING("OVERRIDE_BATTLEBUDDY has been called") PRINTNL()
|
|
// SET_ENTITY_AS_MISSION_ENTITY(hBuddyFranklin, TRUE, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyFranklin, TRUE)
|
|
// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
// IF VS_buddyFranklin_seat = VS_BACK_LEFT
|
|
// i_player_rocket_event = 0
|
|
// BuddyFranklinReadyToFireRockets = TRUE
|
|
// BuddyFranklinRocketOveride = TRUE
|
|
// BuddyFranklinReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// IF VS_buddyFranklin_seat = VS_BACK_RIGHT
|
|
// BuddyFranklinReadyToDriveBy = TRUE
|
|
// BuddyFranklinRocketOveride = FALSE
|
|
// BuddyFranklinReadyToFireRockets = FALSE
|
|
// ENDIF
|
|
// BuddyFranklinReadyToBeReleased = FALSE
|
|
// BuddyFranklinDriverOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
//// PRINTSTRING("IS_BATTLEBUDDY_OVERRIDDEN = TRUE") PRINTNL()
|
|
//
|
|
// //GENERAL RULES THAT SHOULD ALWAYS ALLOW BUDDY TO BE RELEASED
|
|
// //If player is not in the buddy's vehicle after 5 seconds release battle buddy
|
|
// IF BuddyFranklinReadyToBeReleased = FALSE
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF PlayerNotInAVehicleTimerStarted = FALSE
|
|
// iPlayerNotInAnyVehicleTimer = GET_GAME_TIMER()
|
|
// PlayerNotInAVehicleTimerStarted = TRUE
|
|
// ELSE
|
|
// IF GET_GAME_TIMER() > (iPlayerNotInAnyVehicleTimer + 5000)
|
|
//// PRINTSTRING("BuddyFranklinReadyToBeReleased 1 = TRUE") PRINTNL()
|
|
// BuddyFranklinReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check to make sure the player is in the same vehicle as the buddy, if not release the battle buddy.
|
|
// IF IS_PED_IN_ANY_VEHICLE(hBuddyFranklin)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// //Reset flag for if player gets back in the vehicle under 5 seconds
|
|
// PlayerNotInAVehicleTimerStarted = FALSE
|
|
// ELSE
|
|
// BuddyFranklinReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If player switches then release all battle buddies
|
|
// IF BuddyFranklinReadyToBeReleased = FALSE
|
|
// IF IS_SELECTOR_CAM_ACTIVE()
|
|
//// PRINTSTRING("BuddyFranklinReadyToBeReleased 2 = TRUE") PRINTNL()
|
|
// BuddyFranklinReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is firing rockets from side of heli, with player driving
|
|
// IF BuddyFranklinRocketOveride = TRUE
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyFranklin)
|
|
// AND BuddyFranklinReadyToBeReleased = FALSE
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// HANDLE_BUDDY_FIRING_ROCKETS(hBuddyFranklin)
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyFranklinReadyToBeReleased 4 = TRUE") PRINTNL()
|
|
// BuddyFranklinReadyToBeReleased = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF BuddyFranklinReadyToBeReleased = TRUE
|
|
// IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
// DELETE_OBJECT(obj_lesters_rpg)
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
// DELETE_OBJECT(obj_single_rocket)
|
|
// ENDIF
|
|
// CLEAR_PED_TASKS_IMMEDIATELY(hBuddyFranklin)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF NOT IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// SET_PED_INTO_VEHICLE(hBuddyFranklin, HeliToSteal, VS_buddyFranklin_seat)
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyFranklin)
|
|
// BuddyFranklinRocketOveride = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is ready to drive by in the heli's back right seat.
|
|
// IF BuddyFranklinReadyToDriveBy = TRUE
|
|
// // Does script still need to take control of buddy to do drive by?
|
|
// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyFranklin)
|
|
// AND BuddyFranklinReadyToBeReleased = FALSE
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// TASK_DRIVE_BY(hBuddyFranklin, NULL, EnemyHeli[0], <<0,0,0>>, 10000, 100)
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyFranklin, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// TASK_DRIVE_BY(hBuddyFranklin, NULL, EnemyHeli[1], <<0,0,0>>, 10000, 100)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RELEASE_BATTLEBUDDY(hBuddyFranklin)
|
|
// BuddyFranklinReadyToDriveBy = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Handle everything if buddy is driving heli with player firing rockets from the side.
|
|
// IF BuddyFranklinDriverOveride = TRUE
|
|
//
|
|
////// PRINTSTRING("BuddyFranklinDriverOveride = TRUE") PRINTNL()
|
|
//
|
|
// //Handle player firing rockets from side of heli here as buddy will be overridden to fly the heli at this point.
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) = VS_BACK_LEFT
|
|
// DO_PLAYER_ROCKET_FIRE_FROM_HELI_SIDE()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// // Does script still need to take control of buddy and drive to dest?
|
|
// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddyFranklin)
|
|
// AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddyFranklin)
|
|
// AND BuddyFranklinReadyToBeReleased = FALSE
|
|
//// PRINTSTRING("IS_BUDDY_IN_DRIVER_SEAT = TRUE...AND..DOES_ENTITY_BELONG_TO_THIS_SCRIPT = TRUE") PRINTNL()
|
|
//
|
|
// // Give buddy task to fly heli to hanger
|
|
// IF BuddyFranklinDrivingHeli = TRUE
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyFranklin)
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vbuddyCoords.x,vbuddyCoords.y, (vbuddyCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 20, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 5, 1, -1, 0, 0)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyFranklin, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//
|
|
// //Give buddy task to drive the car to the heli
|
|
// IF BuddyFranklinDrivingAnyVehicle = TRUE
|
|
// vDriveToHeliCoords = GET_ENTITY_COORDS(heliToSteal)
|
|
// vbuddyCoords = GET_ENTITY_COORDS(hBuddyFranklin)
|
|
// REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = TRUE") PRINTNL()
|
|
// IF GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> PERFORMING_TASK
|
|
// AND GET_SCRIPT_TASK_STATUS(hBuddyFranklin, SCRIPT_TASK_VEHICLE_MISSION) <> WAITING_TO_START_TASK
|
|
// IF ARE_NODES_LOADED_FOR_AREA(vbuddyCoords.x, vbuddyCoords.y, vDriveToHeliCoords.x, vDriveToHeliCoords.y)
|
|
// TASK_VEHICLE_MISSION_COORS_TARGET(hBuddyFranklin, GET_VEHICLE_PED_IS_IN(hBuddyFranklin), vDriveToHeliCoords, MISSION_GOTO, 40.0, DRIVINGMODE_PLOUGHTHROUGH|DRIVINGMODE_AVOIDCARS_RECKLESS, 10.0, 10.0)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("buddyDrivingAnyVehicle = FALSE") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// //Run a check for player being driven to the heli by a buddy. Dont allow release of buddy till player is out of the car.
|
|
// //Bring the car to a halt once close enough to the helicopter.
|
|
//// IF IS_ENTITY_IN_ANGLED_AREA(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), <<-2115.419434,3038.640137,30.809973>>, <<-2144.749512,3055.938232,36.309971>>, 16.750000)
|
|
//// PRINTSTRING("Players vehicle is in the area where it should be brought to a halt") PRINTNL()
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(heliToSteal), GET_ENTITY_COORDS(hBuddyFranklin)) < 15
|
|
// IF NOT IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
//// PRINTSTRING("Vehicle is not stopped") PRINTNL()
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF NOT IS_PLAYER_IN_VEH_SEAT(PLAYER_ID(), VS_DRIVER)
|
|
//// PRINTSTRING("BRING_VEHICLE_TO_HALT is being called") PRINTNL()
|
|
// BRING_VEHICLE_TO_HALT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 7, 10)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TaskToStopVehicle = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("Players vehicle is NOT in the area where it should be brought to a halt") PRINTNL()
|
|
// ENDIF
|
|
//
|
|
// IF TaskToStopVehicle = TRUE
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
|
|
// IF IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(hBuddyFranklin))
|
|
// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
// REMOVE_PED_FROM_GROUP(hBuddyFranklin)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyFranklin, TRUE)
|
|
// SET_PED_SPHERE_DEFENSIVE_AREA(hBuddyFranklin, GET_ENTITY_COORDS(hBuddyFranklin), 15)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_ANY_VEHICLE(NULL)
|
|
// TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(hBuddyFranklin, seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyFranklin, CA_USE_VEHICLE, FALSE)
|
|
// SET_PED_COMBAT_ATTRIBUTES(hBuddyFranklin, CA_LEAVE_VEHICLES, TRUE)
|
|
//// PRINTSTRING("Sequence task given to buddy") PRINTNL()
|
|
// TaskToStopVehicle = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
// IF BuddyFranklinReadyToBeReleased = TRUE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = TRUE so RELEASE_BATTLEBUDY BEING CALLED") PRINTNL()
|
|
// RELEASE_BATTLEBUDDY(hBuddyFranklin)
|
|
// BuddyFranklinDriverOveride = FALSE
|
|
// ELSE
|
|
//// PRINTSTRING("BuddyReadyToBeReleased = FALSE") PRINTNL()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//// //Some debug testing
|
|
//// IF IS_BUDDY_IN_DRIVER_SEAT(hBuddy)
|
|
//// PRINTSTRING("Buddy is in the driver seat") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy is NOT in the driver seat") PRINTNL()
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(hBuddy)
|
|
//// PRINTSTRING("Buddy belongs to this script") PRINTNL()
|
|
//// ELSE
|
|
//// PRINTSTRING("Buddy does not belong to this script") PRINTNL()
|
|
//// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
//PURPOSE: Controls any scenarios that need switched on/off throughout the mission
|
|
PROC SCENARIO_CONTROLLER()
|
|
|
|
//Switch off ARMY_HELI group to stop other cargobobs spawning around the military base
|
|
IF DOES_SCENARIO_GROUP_EXIST("ARMY_HELI")
|
|
IF IS_SCENARIO_GROUP_ENABLED("ARMY_HELI")
|
|
SET_SCENARIO_GROUP_ENABLED("ARMY_HELI",FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Checks if player is aiming at any of the peds.
|
|
FUNC BOOL IS_PLAYER_AIMING_AT_PED(PED_INDEX ePed, INT iWeaponFlags)
|
|
|
|
IF DOES_ENTITY_EXIST(ePed)
|
|
AND NOT IS_PED_INJURED(ePed)
|
|
|
|
IF IS_PED_ARMED(PLAYER_PED_ID(), iWeaponFlags)
|
|
IF IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), ePed)
|
|
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), ePed)
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//PURPOSE: Adds the players to dialogue by checking who the player is in control of.
|
|
FUNC BOOL ARE_ARMY_PEDS_ADDED_FOR_DIALOGUE()
|
|
|
|
FOR icount = 0 TO 9
|
|
IF DOES_ENTITY_EXIST(MarineCop[icount])
|
|
IF NOT IS_PED_INJURED(MarineCop[icount])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[icount]) < 25
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 3, MarineCop[icount], "ArmyPed")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//PURPOSE: Returns True when an army ped is less that 25m's from player and is alive
|
|
FUNC BOOL GET_NEAREST_ARMY_PED_READY_FOR_CHAT()
|
|
|
|
FOR iArmyPedCount = 0 TO 9
|
|
IF DOES_ENTITY_EXIST(MarineCop[iArmyPedCount])
|
|
IF NOT IS_PED_INJURED(MarineCop[iArmyPedCount])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iArmyPedCount]) < 25
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//Purpose: Returns the closest Army ped
|
|
FUNC PED_INDEX GET_NEAREST_ARMY_PED()
|
|
|
|
PED_INDEX ClosestPed
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
GET_CLOSEST_PED(GET_ENTITY_COORDS(PLAYER_PED_ID()), 30, FALSE, TRUE, ClosestPed, FALSE, TRUE)
|
|
ENDIF
|
|
|
|
FOR iArmyPedCount2 = 0 TO 9
|
|
IF DOES_ENTITY_EXIST(MarineCop[iArmyPedCount2])
|
|
IF NOT IS_PED_INJURED(MarineCop[iArmyPedCount2])
|
|
IF ClosestPed = MarineCop[iArmyPedCount2]
|
|
RETURN MarineCop[iArmyPedCount2]
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN NULL
|
|
|
|
ENDFUNC
|
|
|
|
//PURPOSE: Handles all mission dialogue
|
|
PROC MISSION_DIALOGUE_CONTROL()
|
|
|
|
// //Do alarm tannoy dialogue once the alarm has been started
|
|
// IF AlarmStarted = TRUE
|
|
// AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-2144, 3021, 34>>) < 600
|
|
// IF GET_GAME_TIMER() > (iAlarmChatTimer + 10000)
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
// ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 8, NULL, "ARMY_ANNOUNCER")
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_ANN", CONV_PRIORITY_MEDIUM, DO_NOT_DISPLAY_SUBTITLES)
|
|
// //This is a code red! I repeat, this is a code red.
|
|
// //All units, we have a confirmed security breach.
|
|
// //Security has been compromised, eliminate the target immediately.
|
|
// //Attention, we have an intruder on the base.
|
|
// //All units authorized to use lethal force!
|
|
// //All units mobilize immediately!
|
|
// //Any units still not mobilized, engage immediately.
|
|
// //We are under attack, I repeat, we are under attack.
|
|
// iAlarmChatTimer = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
//Have a control for has the player fired his weapon or aimed at anyone and has been seen or heard doing so
|
|
IF playerSpottedFiringAiming = FALSE
|
|
FOR iFireCount = 0 TO 12
|
|
IF DOES_ENTITY_EXIST(MarineCop[iFireCount])
|
|
IF NOT IS_PED_INJURED(MarineCop[iFireCount])
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iFireCount], PLAYER_PED_ID())
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(MarineCop[iFireCount], PLAYER_PED_ID()) < 40
|
|
IF IS_PED_SHOOTING(PLAYER_PED_ID())
|
|
playerSpottedFiringAiming = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(MarineCop[iFireCount], PLAYER_PED_ID()) < 25
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) <> WEAPONTYPE_UNARMED
|
|
IF IS_PLAYER_AIMING_AT_PED(MarineCop[iFireCount], WF_INCLUDE_GUN | WF_INCLUDE_PROJECTILE)
|
|
playerSpottedFiringAiming = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
//Add Trevor for dialogue
|
|
IF TrevorAddedForChat = FALSE
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 2, PLAYER_PED_ID(), "TREVOR")
|
|
TrevorAddedForChat = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//have some dialogue from the guards at front gates if they spot the player
|
|
IF playerIsInBase = FALSE
|
|
FOR iGuardCount = 0 To 1
|
|
|
|
IF DOES_ENTITY_EXIST(MarineCop[iGuardCount])
|
|
IF NOT IS_PED_INJURED(MarineCop[iGuardCount])
|
|
|
|
//Do opening chat at front gates. Dependant on if player has weapon equipped or not
|
|
//With weapon
|
|
IF doneChat55 = FALSE
|
|
AND doneChat56 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iGuardCount]) < 25
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iGuardCount], PLAYER_PED_ID())
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_PHONE_ONSCREEN()
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) <> WEAPONTYPE_UNARMED
|
|
IF DOES_ENTITY_EXIST(MarineCop[0])
|
|
IF NOT IS_PED_INJURED(MarineCop[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[0]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[0], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[1])
|
|
IF NOT IS_PED_INJURED(MarineCop[1])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[1]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[1], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1", CONV_PRIORITY_MEDIUM)
|
|
//This is a restricted area, please leave immediately!
|
|
iChat57Timer = GET_GAME_TIMER()
|
|
iChat58Timer = GET_GAME_TIMER()
|
|
doneChat55 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//Without weapon
|
|
IF doneChat56 = FALSE
|
|
AND doneChat55 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iGuardCount]) < 25
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iGuardCount], PLAYER_PED_ID())
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) = WEAPONTYPE_UNARMED
|
|
OR IS_PHONE_ONSCREEN()
|
|
IF DOES_ENTITY_EXIST(MarineCop[0])
|
|
IF NOT IS_PED_INJURED(MarineCop[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[0]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[0], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[1])
|
|
IF NOT IS_PED_INJURED(MarineCop[1])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[1]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[1], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1", CONV_PRIORITY_MEDIUM)
|
|
//This is a restricted area, please leave immediately!
|
|
iChat57Timer = GET_GAME_TIMER()
|
|
iChat58Timer = GET_GAME_TIMER()
|
|
doneChat56 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Do some random dialogue now until the player either aims, shoots or enters the base
|
|
IF doneChat55 = TRUE
|
|
OR doneChat56 = TRUE
|
|
IF playerSpottedFiringAiming = FALSE
|
|
AND playerIsInBase = FALSE
|
|
IF doneArmyWrn1aChat = FALSE
|
|
IF GET_GAME_TIMER() > (iChat58Timer + 8000)
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iGuardCount]) < 25
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iGuardCount], PLAYER_PED_ID())
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_PHONE_ONSCREEN()
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) <> WEAPONTYPE_UNARMED
|
|
IF DOES_ENTITY_EXIST(MarineCop[0])
|
|
IF NOT IS_PED_INJURED(MarineCop[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[0]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[0], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[1])
|
|
IF NOT IS_PED_INJURED(MarineCop[1])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[1]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[1], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1a", CONV_PRIORITY_MEDIUM)
|
|
//I'm not going to say this again. Leave now!
|
|
iChat58Timer = GET_GAME_TIMER()
|
|
doneArmyWrn1aChat = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF GET_GAME_TIMER() > (iChat57Timer + 8000)
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iGuardCount]) < 25
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iGuardCount], PLAYER_PED_ID())
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) = WEAPONTYPE_UNARMED
|
|
OR IS_PHONE_ONSCREEN()
|
|
IF DOES_ENTITY_EXIST(MarineCop[0])
|
|
IF NOT IS_PED_INJURED(MarineCop[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[0]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[0], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[1])
|
|
IF NOT IS_PED_INJURED(MarineCop[1])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[1]) < 30
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, MarineCop[1], "ARMY_Guard01")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF doneArmyWrn1aChat = FALSE
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1a", CONV_PRIORITY_MEDIUM)
|
|
//I'm not going to say this again. Leave now!
|
|
iChat57Timer = GET_GAME_TIMER()
|
|
doneArmyWrn1aChat = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF hostileTimerSet = FALSE
|
|
iBecomeHostileTimer = GET_GAME_TIMER()
|
|
hostileTimerSet = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
//Dialogue from Military if player has entered the base or if he's aimed at a guard or has been seen firing his weapon
|
|
IF GET_GAME_TIMER() > (iArmyChatTimer + 12000)
|
|
IF playerIsInBase = TRUE
|
|
OR playerSpottedFiringAiming = TRUE
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF ARE_ARMY_PEDS_ADDED_FOR_DIALOGUE()
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT4", CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
// //Die motherfucker.
|
|
// //You wont get out of here alive.
|
|
// //Take this guy down.
|
|
// //Shoot to kill.
|
|
// //Get this guy.
|
|
// //Don't let him escape.
|
|
// iArmyChatTimer = GET_GAME_TIMER()
|
|
// ENDIF
|
|
// ENDIF
|
|
IF GET_NEAREST_ARMY_PED_READY_FOR_CHAT()
|
|
iRandomInt2 = GET_RANDOM_INT_IN_RANGE(0, 6)
|
|
IF iRandomInt2 = 0
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "OVER_THERE", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ELIF iRandomInt2 = 1
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "PROVOKE_TRESSPASS", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ELIF iRandomInt2 = 2
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "UP_THERE", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ELIF iRandomInt2 = 3
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "suspect_spotted", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ELIF iRandomInt2 = 4
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "GENERIC_INSULT_HIGH", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ELIF iRandomInt2 = 5
|
|
PLAY_PED_AMBIENT_SPEECH(GET_NEAREST_ARMY_PED(), "GENERIC_INSULT_MED", SPEECH_PARAMS_FORCE_SHOUTED)
|
|
iArmyChatTimer = GET_GAME_TIMER()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// //Reset flags and re-add peds for chat if player switches.
|
|
// IF IS_SELECTOR_CAM_ACTIVE()
|
|
// MichaelAddedForChat = FALSE
|
|
// FranklinAddedForChat = FALSE
|
|
// TrevorAddedForChat = FALSE
|
|
// ENDIF
|
|
//
|
|
// //Add the players to the dialogue system if they are available.
|
|
// IF MichaelAddedForChat = FALSE
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
// MichaelAddedForChat = TRUE
|
|
// ELSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF NOT IS_PED_INJURED(hBuddyMichael)
|
|
// ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 0, hBuddyMichael, "MICHAEL")
|
|
// MichaelAddedForChat = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF FranklinAddedForChat = FALSE
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 1, PLAYER_PED_ID(), "FRANKLIN")
|
|
// FranklinAddedForChat = TRUE
|
|
// ELSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF NOT IS_PED_INJURED(hBuddyFranklin)
|
|
// ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 1, hBuddyFranklin, "FRANKLIN")
|
|
// FranklinAddedForChat = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
// SWITCH missionStage
|
|
//
|
|
// CASE STAGE_STEAL_CARGOBOB
|
|
//
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
//
|
|
// //If Michael and Trevor exists but no Franklin
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, TRUE)
|
|
// IF doneChat[1] = FALSE
|
|
// IF playerIsInBase = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT1", CONV_PRIORITY_MEDIUM)
|
|
// //Trevor, my man, I need your help to break into the military base.
|
|
// //Now we're talking. What you up to?
|
|
// //Just need to borrow one of those big army choppers.
|
|
// //Sounds like my kind of job. Let's go.
|
|
// doneChat[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT1", CONV_PRIORITY_MEDIUM)
|
|
// //Trevor, my man, I need your help to break into the military base.
|
|
// //Now we're talking. What you up to?
|
|
// //Just need to borrow one of those big army choppers.
|
|
// //Sounds like my kind of job. Let's go.
|
|
// doneChat[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some chat between Trevor and Michael once they're inside the base
|
|
// IF doneChat[3] = FALSE
|
|
// IF playerIsInBase = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT3", CONV_PRIORITY_MEDIUM)
|
|
// //Okay, here we go, stay alert. This is going to get messy.
|
|
// //You don't need to worry about me.
|
|
// doneChat[3] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT3", CONV_PRIORITY_MEDIUM)
|
|
// //Okay, here we go, stay alert. This is going to get messy.
|
|
// //You don't need to worry about me.
|
|
// doneChat[3] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some chat between Trevor and Michael once they're approaching the heli
|
|
// IF doneChat[2] = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT2", CONV_PRIORITY_MEDIUM)
|
|
// //There she is.
|
|
// //Think I should do the flying.
|
|
// //Whatever, let's just get it and get the fuck out of here.
|
|
// doneChat[2] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT2", CONV_PRIORITY_MEDIUM)
|
|
// //There she is.
|
|
// //Think I should do the flying.
|
|
// //Whatever, let's just get it and get the fuck out of here.
|
|
// doneChat[2] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Michael and Franklin exists but no Trevor
|
|
// IF MichaelAddedForChat = TRUE
|
|
// AND FranklinAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, TRUE)
|
|
// IF doneChat[7] = FALSE
|
|
// IF playerIsInBase = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT7", CONV_PRIORITY_MEDIUM)
|
|
// //Hey man we need to get a big chopper out the base. You game?
|
|
// //Yeah sure, let's do it.
|
|
// doneChat[7] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT7", CONV_PRIORITY_MEDIUM)
|
|
// //Hey man we need to get a big chopper out the base. You game?
|
|
// //Yeah sure, let's do it.
|
|
// doneChat[7] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Some chat as they enter the base
|
|
// IF doneChat[5] = FALSE
|
|
// IF playerIsInBase = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT5", CONV_PRIORITY_MEDIUM)
|
|
// //Okay here we go. Stay alert.
|
|
// //Let's fucking do this.
|
|
// doneChat[5] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT5", CONV_PRIORITY_MEDIUM)
|
|
// //Okay here we go. Stay alert.
|
|
// //Let's fucking do this.
|
|
// doneChat[5] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some chat as they spot the heli
|
|
// IF doneChat[10] = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT10", CONV_PRIORITY_MEDIUM)
|
|
// //There she is, let's get in it and get the fuck out of here.
|
|
// //Cool, one of us should ride up back incase any fucker needs taken out.
|
|
// doneChat[10] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT10", CONV_PRIORITY_MEDIUM)
|
|
// //There she is, let's get in it and get the fuck out of here.
|
|
// //Cool, one of us should ride up back incase any fucker needs taken out.
|
|
// doneChat[10] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Trevor and Franklin exists but no Michael
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND FranklinAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, TRUE)
|
|
// IF doneChat[11] = FALSE
|
|
// IF playerIsInBase = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT11", CONV_PRIORITY_MEDIUM)
|
|
// //Right you, we need to get a big fucking chopper from the base. Don't slow me down.
|
|
// //Cut me some slack. I'm here ain't I?
|
|
// //Maybe i will if you don't fuck this up.
|
|
// doneChat[11] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT11", CONV_PRIORITY_MEDIUM)
|
|
// //Right you, we need to get a big fucking chopper from the base. Don't slow me down.
|
|
// //Cut me some slack. I'm here ain't I?
|
|
// //Maybe i will if you don't fuck this up.
|
|
// doneChat[11] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Some chat as they enter the base
|
|
// IF doneChat[6] = FALSE
|
|
// IF playerIsInBase = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT6", CONV_PRIORITY_MEDIUM)
|
|
// //Fucking alarm. Stay close and take out any mother fucker that moves.
|
|
// //This is crazy. We're fucked.
|
|
// //Shut up, come on.
|
|
// doneChat[6] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT6", CONV_PRIORITY_MEDIUM)
|
|
// //Fucking alarm. Stay close and take out any mother fucker that moves.
|
|
// //This is crazy. We're fucked.
|
|
// //Shut up, come on.
|
|
// doneChat[6] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some chat as they spot the heli
|
|
// IF doneChat[12] = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT12", CONV_PRIORITY_MEDIUM)
|
|
// //There's the fucker. C'mon let's get it and get the fuck out of here.
|
|
// //Shit that's one big chopper.
|
|
// doneChat[12] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 15
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT12", CONV_PRIORITY_MEDIUM)
|
|
// //There's the fucker. C'mon let's get it and get the fuck out of here.
|
|
// //Shit that's one big chopper.
|
|
// doneChat[12] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If all 3 characters are there
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND FranklinAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// IF doneChat[8] = FALSE
|
|
// IF playerIsInBase = FALSE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT8", CONV_PRIORITY_MEDIUM)
|
|
// //Ok guys we're going to borrow a big chopper from these military mother fuckers.
|
|
// //I take it they don't know anything about this.
|
|
// //I always wanted a shot in one of those big army choppers.
|
|
// //You won't be getting a shot in anything bitch. I'm the pilot round here.
|
|
// //Fuck you Trevor. I'll be flying it.
|
|
// //Guys, enough. Just focus for fuck sake.
|
|
// doneChat[8] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT8", CONV_PRIORITY_MEDIUM)
|
|
// //Ok guys we're going to borrow a big chopper from these military mother fuckers.
|
|
// //I take it they don't know anything about this.
|
|
// //I always wanted a shot in one of those big army choppers.
|
|
// //You won't be getting a shot in anything bitch. I'm the pilot round here.
|
|
// //Fuck you Trevor. I'll be flying it.
|
|
// //Guys, enough. Just focus for fuck sake.
|
|
// doneChat[8] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT8", CONV_PRIORITY_MEDIUM)
|
|
// //Ok guys we're going to borrow a big chopper from these military mother fuckers.
|
|
// //I take it they don't know anything about this.
|
|
// //I always wanted a shot in one of those big army choppers.
|
|
// //You won't be getting a shot in anything bitch. I'm the pilot round here.
|
|
// //Fuck you Trevor. I'll be flying it.
|
|
// //Guys, enough. Just focus for fuck sake.
|
|
// doneChat[8] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Some chat as they see the heli
|
|
// IF doneChat[9] = FALSE
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 100
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT9", CONV_PRIORITY_MEDIUM)
|
|
// //There she is guys. Let's get in it and get the fuck out of here.
|
|
// //Two of us should sit in the back incase and fucker needs taken out.
|
|
// //You need taken out.
|
|
// //Enough!
|
|
// doneChat[9] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyMichael) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT9", CONV_PRIORITY_MEDIUM)
|
|
// //There she is guys. Let's get in it and get the fuck out of here.
|
|
// //Two of us should sit in the back incase and fucker needs taken out.
|
|
// //You need taken out.
|
|
// //Enough!
|
|
// doneChat[9] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyFranklin) < 20
|
|
// AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), hBuddyTrevor) < 20
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT9", CONV_PRIORITY_MEDIUM)
|
|
// //There she is guys. Let's get in it and get the fuck out of here.
|
|
// //Two of us should sit in the back incase and fucker needs taken out.
|
|
// //You need taken out.
|
|
// //Enough!
|
|
// doneChat[9] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// BREAK
|
|
//
|
|
// CASE STAGE_ESCAPE_MILITARY
|
|
//
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
//
|
|
// //If Michael and Trevor exists but no Franklin
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, TRUE)
|
|
// //Do some chat once they're both in the heli
|
|
// IF doneChat[16] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT16", CONV_PRIORITY_MEDIUM)
|
|
// //Ok this is bigger than i expected.
|
|
// //This is what i'm talking about. Haha
|
|
// doneChat[16] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT16", CONV_PRIORITY_MEDIUM)
|
|
// //Ok this is bigger than i expected.
|
|
// //This is what i'm talking about. Haha
|
|
// doneChat[16] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Michael and Franklin exists but no Trevor
|
|
// IF FranklinAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, TRUE)
|
|
// //Do some chat once they're both in the heli
|
|
// IF doneChat[17] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT17", CONV_PRIORITY_MEDIUM)
|
|
// //This is bigger than i expected.
|
|
// //Fucking huge, just hope we don't crash.
|
|
// doneChat[17] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT17", CONV_PRIORITY_MEDIUM)
|
|
// //This is bigger than i expected.
|
|
// //Fucking huge, just hope we don't crash.
|
|
// doneChat[17] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Trevor and Franklin exists but no Michael
|
|
// IF FranklinAddedForChat = TRUE
|
|
// AND TrevorAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, TRUE)
|
|
// //Do some chat once they're both in the heli
|
|
// IF doneChat[18] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT18", CONV_PRIORITY_MEDIUM)
|
|
// //Damn, this thing's huge.
|
|
// //This is a real machine, now let's see what she's made of.
|
|
// doneChat[18] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT18", CONV_PRIORITY_MEDIUM)
|
|
// //Damn, this thing's huge.
|
|
// //This is a real machine, now let's see what she's made of.
|
|
// doneChat[18] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Have some chat if all 3 characters are in the heli depending on who's flying.
|
|
// IF FranklinAddedForChat = TRUE
|
|
// AND TrevorAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// //If Michael is pilot
|
|
// IF doneChat[13] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT13", CONV_PRIORITY_MEDIUM)
|
|
// //Can you even fly?
|
|
// //We'll soon find out.
|
|
// //How come i don't get to fly?
|
|
// //I'm the fucking pilot here, you're going to kill us all.
|
|
// doneChat[13] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyMichael, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT13", CONV_PRIORITY_MEDIUM)
|
|
// //Can you even fly?
|
|
// //We'll soon find out.
|
|
// //How come i don't get to fly?
|
|
// //I'm the fucking pilot here, you're going to kill us all.
|
|
// doneChat[13] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyMichael, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT13", CONV_PRIORITY_MEDIUM)
|
|
// //Can you even fly?
|
|
// //We'll soon find out.
|
|
// //How come i don't get to fly?
|
|
// //I'm the fucking pilot here, you're going to kill us all.
|
|
// doneChat[13] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Franklin is pilot
|
|
// IF doneChat[15] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyFranklin, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT15", CONV_PRIORITY_MEDIUM)
|
|
// //Woohoo here we fucking go.
|
|
// //What the fuck is this idiot getting to fly for? You got a death wish?
|
|
// //Just take it easy, c'mon let's get out of here.
|
|
// doneChat[15] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT15", CONV_PRIORITY_MEDIUM)
|
|
// //Woohoo here we fucking go.
|
|
// //What the fuck is this idiot getting to fly for? You got a death wish?
|
|
// //Just take it easy, c'mon let's get out of here.
|
|
// doneChat[15] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyFranklin, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT15", CONV_PRIORITY_MEDIUM)
|
|
// //Woohoo here we fucking go.
|
|
// //What the fuck is this idiot getting to fly for? You got a death wish?
|
|
// //Just take it easy, c'mon let's get out of here.
|
|
// doneChat[15] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Trevor is pilot
|
|
// IF doneChat[14] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyTrevor, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT14", CONV_PRIORITY_MEDIUM)
|
|
// //Let's get the fuck out of here.
|
|
// //I wanted to fly.
|
|
// //Trevor's the best man for the job.
|
|
// //Yeah, Don't be a little bitch about it.
|
|
// doneChat[14] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyTrevor, HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT14", CONV_PRIORITY_MEDIUM)
|
|
// //Let's get the fuck out of here.
|
|
// //I wanted to fly.
|
|
// //Trevor's the best man for the job.
|
|
// //Yeah, Don't be a little bitch about it.
|
|
// doneChat[14] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT14", CONV_PRIORITY_MEDIUM)
|
|
// //Let's get the fuck out of here.
|
|
// //I wanted to fly.
|
|
// //Trevor's the best man for the job.
|
|
// //Yeah, Don't be a little bitch about it.
|
|
// doneChat[14] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some chat for the enemy heli's being spotted make sure at least 1 buddy is with the player and who ever is flying should say this chat
|
|
// IF EnemyHeliSpottedChatDone = FALSE
|
|
// //If Michael is flying with at least 1 buddy
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// OR FranklinAddedForChat = TRUE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT22", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck I see heli's taking off. Shit shit shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT22", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck I see heli's taking off. Shit shit shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyMichael, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT22", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck I see heli's taking off. Shit shit shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyMichael, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT22", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck I see heli's taking off. Shit shit shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Trevor is flying with at least 1 buddy
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// OR FranklinAddedForChat = TRUE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT23", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck there's choppers taking off, how the fuck are we meant to lose them in this heap of shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT23", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck there's choppers taking off, how the fuck are we meant to lose them in this heap of shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyTrevor, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT23", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck there's choppers taking off, how the fuck are we meant to lose them in this heap of shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyTrevor, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT23", CONV_PRIORITY_MEDIUM)
|
|
// //Fuck there's choppers taking off, how the fuck are we meant to lose them in this heap of shit.
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //If Franklin is flying with at least 1 buddy
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF MichaelAddedForChat = TRUE
|
|
// OR TrevorAddedForChat = TRUE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal, VS_DRIVER)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT24", CONV_PRIORITY_MEDIUM)
|
|
// //Shit we got more company, an army chopper taking off. We're fucked!
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT24", CONV_PRIORITY_MEDIUM)
|
|
// //Shit we got more company, an army chopper taking off. We're fucked!
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyFranklin, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT24", CONV_PRIORITY_MEDIUM)
|
|
// //Shit we got more company, an army chopper taking off. We're fucked!
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF IS_PED_SITTING_IN_VEHICLE_SEAT(hBuddyFranklin, HeliToSteal, VS_DRIVER)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT24", CONV_PRIORITY_MEDIUM)
|
|
// //Shit we got more company, an army chopper taking off. We're fucked!
|
|
// EnemyHeliSpottedChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Do some dialogue about finding the rocket launcher in the back. Dialogue should be spoken by the ped who is in back left seat.
|
|
// IF EnemyHeliSpottedChatDone = TRUE
|
|
// IF FoundRocketChatDone = FALSE
|
|
// //If Franklin is in left back seat in heli.
|
|
// IF FranklinAddedForChat = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF BuddyFranklinReadyToFireRockets = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT21", CONV_PRIORITY_MEDIUM)
|
|
// //Hey there's a rocket launcher back here. Let's see how they like this.
|
|
// FoundRocketChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// //If Trevor is in left back seat in heli.
|
|
// IF TrevorAddedForChat = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF BuddyTrevorReadyToFireRockets = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT20", CONV_PRIORITY_MEDIUM)
|
|
// //Now we're fucking talking, rocket launcher in the back here. Get some.
|
|
// FoundRocketChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// //If Michael is in left back seat in heli.
|
|
// IF MichaelAddedForChat = TRUE
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF BuddyMichaelReadyToFireRockets = TRUE
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT19", CONV_PRIORITY_MEDIUM)
|
|
// //Well what have we got here? Just found a rocket launcher in the back, this should help us.
|
|
// FoundRocketChatDone = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// BREAK
|
|
//
|
|
// CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
//
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
//
|
|
// //If Michael and Trevor exists but no Franklin
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, TRUE)
|
|
//
|
|
// //Do some chat between Trevor and Michael once they've taken down the enemy heli's.
|
|
// IF doneChat[45] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT45", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them.
|
|
// //Damn i was enjoying watching them blow the fuck up.
|
|
// //Why doesn't that surprise me. Let's get this bad boy back to the hanger
|
|
// doneChat[45] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT45", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them.
|
|
// //Damn i was enjoying watching them blow the fuck up.
|
|
// //Why doesn't that surprise me. Let's get this bad boy back to the hanger
|
|
// doneChat[45] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// //If Michael and Franklin exists but no Trevor
|
|
// IF FranklinAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, TRUE)
|
|
//
|
|
// //Do some chat between Trevor and Michael once they've taken down the enemy heli's.
|
|
// IF doneChat[44] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT44", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them. Let's get this back to the hanger.
|
|
// //Yeah thank fuck for that rocket launcher or we would've been screwed.
|
|
// doneChat[44] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT44", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them. Let's get this back to the hanger.
|
|
// //Yeah thank fuck for that rocket launcher or we would've been screwed.
|
|
// doneChat[44] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// //If Trevor and Franklin exists but no Michael
|
|
// IF FranklinAddedForChat = TRUE
|
|
// AND TrevorAddedForChat = TRUE
|
|
// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, TRUE)
|
|
//
|
|
// //Do some chat between Trevor and Michael once they've taken down the enemy heli's.
|
|
// IF doneChat[46] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT46", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them.
|
|
// //Fucking shame, I was enjoying that!
|
|
// //At least one of us was.
|
|
// //Ah well let's get this beast home.
|
|
// doneChat[46] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT46", CONV_PRIORITY_MEDIUM)
|
|
// //Think that was the last of them.
|
|
// //Fucking shame, I was enjoying that!
|
|
// //At least one of us was.
|
|
// //Ah well let's get this beast home.
|
|
// doneChat[46] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// //If all 3 characters are there
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND FranklinAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// IF doneChat[43] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT43", CONV_PRIORITY_MEDIUM)
|
|
// //And relax. Think that's the last of them.
|
|
// //Fucking eh.
|
|
// //Thank fuck for the rocket launcher.
|
|
// //Yeah, let's just get this bad boy back to the hanger.
|
|
// doneChat[43] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT43", CONV_PRIORITY_MEDIUM)
|
|
// //And relax. Think that's the last of them.
|
|
// //Fucking eh.
|
|
// //Thank fuck for the rocket launcher.
|
|
// //Yeah, let's just get this bad boy back to the hanger.
|
|
// doneChat[43] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELIF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
// AND IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT43", CONV_PRIORITY_MEDIUM)
|
|
// //And relax. Think that's the last of them.
|
|
// //Fucking eh.
|
|
// //Thank fuck for the rocket launcher.
|
|
// //Yeah, let's just get this bad boy back to the hanger.
|
|
// doneChat[43] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// BREAK
|
|
//
|
|
// CASE STAGE_END_CUTSCENE
|
|
//
|
|
// //If all 3 are there do chat depending on who the player is
|
|
// IF DoneEndCutChat = FALSE
|
|
// IF TrevorAddedForChat = TRUE
|
|
// AND FranklinAddedForChat = TRUE
|
|
// AND MichaelAddedForChat = TRUE
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT48", CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
// //Well here we are.
|
|
// //Yeah you boys done well, even you Franklin.
|
|
// //You feeling ok?
|
|
// //Ah fuck you, i'm outta here.
|
|
// //Fuck you too. Michael I gotta be somewhere, laters.
|
|
// DoneEndCutChat = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT47", CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
// //Well here we are.
|
|
// //Yeah you boys done well, even you Franklin.
|
|
// //You feeling ok?
|
|
// //Anyway catch up with you two later.
|
|
// //Yeah I'm out of here too.
|
|
// DoneEndCutChat = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// AND IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT49", CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
// //Well here we are.
|
|
// //Yeah you boys done well, even you Franklin.
|
|
// //You feeling ok?
|
|
// //Ah get the fuck out of here.
|
|
// //Guy's i'll leave you to it. It's been fun.
|
|
// //I'm not staying here with this asshole.
|
|
// DoneEndCutChat = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// BREAK
|
|
// ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
////PURPOSE: Controls the players buddy's AI
|
|
//PROC HANDLE_PLAYER_CHARACTERS()
|
|
//
|
|
// //Control Michael and Franklins AI if playing as Trev
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
//
|
|
// //Give Michaels AI task
|
|
// IF MichaelAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Michael is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Michael is in.
|
|
// //If Michael is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
//
|
|
// //Michael is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and Trevor are in the heli, but Franklin is not. IF they are on the ground they need to wait for Franklin to get in. Give Michael waiting task. If in the air they can go with out Franklin.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin does exist but is dead
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin doesn't exist
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Michael should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) < 15
|
|
//
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// //If heli is in the air tell Michael to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vMichaelsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Michael to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vMichaelsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael is not the driver of the heli sort out his tasks. No need to check if Franklin is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Michael is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
//
|
|
// //*********GIVE MICHAEL ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Michael should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) < 15
|
|
//
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Michael to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Michael in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF FRANKLIN EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
//
|
|
// //Michael is not in heli and Player is so tell Michael to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
//
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Give Franklin's AI task
|
|
// IF FranklinAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Franklin is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Franklin is in.
|
|
// //If Franklin is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Michael exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
//
|
|
// //Franklin is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and Trevor are in the heli, but Michael is not. IF they are on the ground they need to wait for Michael to get in. Give Franklin waiting task. If in the air they can go with out Michael.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael doesn't exist
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael doesn't exist
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Franklin should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) < 15
|
|
//
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// //If heli is in the air tell Franklin to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vFranklinsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Franklin to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vFranklinsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin is not the driver of the heli sort out his tasks. No need to check if Michael is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Franklin is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
//
|
|
// //*********GIVE FRANKLIN ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Franklin should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) < 15
|
|
//
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Franklin to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF MICHAEL EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
//
|
|
// //Franklin is not in heli and Player is so tell Franklin to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Michael exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], FALSE)
|
|
//
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// //Control Trevor and Franklins AI if playing as Michael
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
//
|
|
// //Give Trevor AI task
|
|
// IF TrevorAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Trevor is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Trevor is in.
|
|
// //If Trevor is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
//
|
|
// //Trevor is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and Trevor are in the heli, but Franklin is not. IF they are on the ground they need to wait for Franklin to get in. Give Trevor waiting task. If in the air they can go with out Franklin.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ELSE
|
|
// //If Franklin doesn't exist
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin doesn't exist
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Trevor should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) < 15
|
|
//
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// //If heli is in the air tell Trevor to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vTrevorsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Trevor to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vTrevorsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor is not the driver of the heli sort out his tasks. No need to check if Franklin is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Trevor is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
//
|
|
// //*********GIVE Trevor ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Trevor should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) < 15
|
|
//
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Trevor to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF FRANKLIN EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
//
|
|
// //Trevor is not in heli and Player is so tell Trevor to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
//
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Give Franklin's AI task
|
|
// IF FranklinAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Franklin is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Franklin is in.
|
|
// //If Franklin is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Trevor exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
//
|
|
// //Franklin is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and Michael are in the heli, but Trevor is not. IF they are on the ground they need to wait for Michael to get in. Give Franklin waiting task. If in the air they can go with out Trevor.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor doesn't exist
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor doesn't exist
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, (vFranklinsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Franklin should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) < 15
|
|
//
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// //If heli is in the air tell Franklin to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vFranklinsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Franklin to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vFranklinsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vFranklinsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vFranklinsCoords.x,vFranklinsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin is not the driver of the heli sort out his tasks. No need to check if Trevor is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Franklin is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
//
|
|
// //*********GIVE FRANKLIN ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Franklin should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]) < 15
|
|
//
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Franklin to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF TREVOR EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
//
|
|
// //Franklin is not in heli and Player is so tell Franklin to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Trevor exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Franklin from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], FALSE)
|
|
//
|
|
// //Put Franklin in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// FranklinAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
//
|
|
// //Control Trevor and Michael's AI if playing as Franklin
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
//
|
|
// //Give Trevor AI task
|
|
// IF TrevorAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Trevor is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Trevor is in.
|
|
// //If Trevor is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
//
|
|
// //Trevor is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and Trevor are in the heli, but Michael is not. IF they are on the ground they need to wait for Franklin to get in. Give Trevor waiting task. If in the air they can go with out Franklin.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin doesn't exist
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Franklin doesn't exist
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, (vTrevorsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Trevor should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) < 15
|
|
//
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// //If heli is in the air tell Trevor to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vTrevorsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Trevor to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vTrevorsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vTrevorsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vTrevorsCoords.x,vTrevorsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor is not the driver of the heli sort out his tasks. No need to check if Franklin is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Trevor is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
//
|
|
// //*********GIVE Trevor ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Trevor should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) < 15
|
|
//
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Trevor to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF FRANKLIN EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
//
|
|
// //Trevor is not in heli and Player is so tell Trevor to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Franklin exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Trevor from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Franklin and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
//
|
|
// //Put Trevor in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// TrevorAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Give Michaels AI task
|
|
// IF MichaelAITaskGiven = FALSE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//
|
|
// //Check if Michael is inside the heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
//
|
|
// //Run a check to see what seat Michael is in.
|
|
// //If Michael is flying give him flying tasks.
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal) = VS_DRIVER
|
|
//
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Check if Trevor exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
//
|
|
// //Michael is flying the heli and everyone is in the heli, give him flying tasks.
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and Franklin are in the heli, but Trevor is not. IF they are on the ground they need to wait for Trevor to get in. Give Michael waiting task. If in the air they can go with out Trevor.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor doesn't exist
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Trevor doesn't exist
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, (vMichaelsCoords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 240, 50)
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<1057, 3084, 200>>, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, vHanger, MISSION_GOTO, 30, 2, -1, 240, 50)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Michael should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) < 15
|
|
//
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// //If heli is in the air tell Michael to land it
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vMichaelsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Michael to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// vMichaelsCoords = GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// GET_GROUND_Z_FOR_3D_COORD(vMichaelsCoords, fGroundzCoord)
|
|
// TASK_HELI_MISSION(NULL, HeliToSteal, NULL, NULL, <<vMichaelsCoords.x,vMichaelsCoords.y, fGroundzCoord>>, MISSION_GOTO, 10, 1, -1, 0, 0)
|
|
// ENDIF
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael is not the driver of the heli sort out his tasks. No need to check if Trevor is alive or in the heli here.
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// //Michael is not flying the heli and everyone is in the heli, give him rocket tasks.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
//
|
|
// //*********GIVE MICHAEL ROCKET TASKS HERE*********
|
|
//
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is not in the heli, check to see how far away the player is.
|
|
// //If player is close by less than 15m Michael should just wait for the player inside the heli.
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) < 15
|
|
//
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If player is further than 15metres tell Michael to get out the heli and go to the player and help him out.
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_LEAVE_VEHICLE(NULL, HeliToSteal, ECF_DONT_CLOSE_DOOR)
|
|
// TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID())
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// ENDIF
|
|
// //Put Michael in players group
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ELSE
|
|
//
|
|
// //If Michael is not in the heli give him the following tasks
|
|
// //UPDATE TASKS FOR BUDDY'S IF PLAYER IS INSIDE THE HELI. ONLY NEED TO CHECK IF TREVOR EXISTS TO SEE IF HE IS FLYING HELI HERE.
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
//
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
//
|
|
// //Michael is not in heli and Player is so tell Michael to get in the heli. If the heli is on the ground.
|
|
// IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// TASK_GO_TO_ENTITY(NULL, HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// //Check if Trevor exists and if he is in the heli.
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
// IF GET_PED_VEHICLE_SEAT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal) = VS_DRIVER
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_ANY_PASSENGER)
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// TASK_ENTER_VEHICLE(NULL, HeliToSteal, DEFAULT_TIME_BEFORE_WARP, VS_DRIVER)
|
|
// ENDIF
|
|
// ENDIF
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// ELSE
|
|
// //Remove Michael from players group
|
|
// IF IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// REMOVE_PED_FROM_GROUP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ELSE
|
|
//
|
|
// //Michael and the Trevor are not in the heli
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
//
|
|
// //Put Michael in players group
|
|
// IF NOT IS_PED_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// ENDIF
|
|
// MichaelAITaskGiven = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
//PURPOSE:Deals with the custom camera's for switching from the player to the chosen character at close distance < 400m.
|
|
FUNC BOOL SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_SLOTS_ENUM eSelectedPed)
|
|
// PRINTSTRING("*********************** SETUP_HOTSWAP_CAM_FROM_TREVOR_TO_FRANKLIN_CLOSE IS BEING CALLED ***********************") PRINTNL()
|
|
VECTOR vGamePlayCamRot = GET_GAMEPLAY_CAM_ROT()
|
|
|
|
IF NOT sCamDetails.bSplineCreated
|
|
|
|
//Create main spline camera
|
|
IF NOT DOES_CAM_EXIST(sCamDetails.camID)
|
|
sCamDetails.camID = CREATE_CAM("DEFAULT_SPLINE_CAMERA", FALSE)
|
|
ENDIF
|
|
SET_CAM_FOV(sCamDetails.camID, SELECTOR_CAM_DEFAULT_FOV)
|
|
|
|
//Create Node Camera's
|
|
IF NOT DOES_CAM_EXIST(NodeCam[0])
|
|
NodeCam[0] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), << 0,0,20>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], PLAYER_PED_ID(), << 0,0,5>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
|
|
//The high point above Trevor
|
|
IF NOT DOES_CAM_EXIST(NodeCam[1])
|
|
NodeCam[1] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sSelectorPeds.pedID[eSelectedPed])
|
|
IF IS_PED_IN_ANY_VEHICLE(sSelectorPeds.pedID[eSelectedPed])
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], GET_VEHICLE_PED_IS_IN(sSelectorPeds.pedID[eSelectedPed]), <<0.0, 0.0, 25>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], sSelectorPeds.pedID[eSelectedPed], <<0.0, 0.0, 5>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//Add the nodes in order
|
|
ADD_CAM_SPLINE_NODE(sCamDetails.camID, GET_GAMEPLAY_CAM_COORD(), GET_GAMEPLAY_CAM_ROT(), 0, CAM_SPLINE_NODE_SMOOTH_ROT)//starting with gamecam coords and rotation
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[0], 500, CAM_SPLINE_NODE_SMOOTH_ROT)//5m's above player
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[1], 2000, CAM_SPLINE_NODE_SMOOTH_ROT)//high above player
|
|
ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME(sCamDetails.camID, 500)//Add the final camera node attached to new player model
|
|
|
|
|
|
sCamDetails.bSplineCreated = TRUE
|
|
sCamDetails.camType = SELECTOR_CAM_DEFAULT
|
|
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[eSelectedPed]
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
////PURPOSE: Handles all the switching between Trevor and Michael
|
|
//PROC HANDLE_SWITCHING()
|
|
//
|
|
// //When playing as Michael
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// TrevorSwitchAvailable = TRUE
|
|
// ELSE
|
|
// TrevorSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// TrevorSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// FranklinSwitchAvailable = TRUE
|
|
// ELSE
|
|
// FranklinSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// FranklinSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //When playing as Trevor
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// MichaelSwitchAvailable = TRUE
|
|
// ELSE
|
|
// MichaelSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// MichaelSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// FranklinSwitchAvailable = TRUE
|
|
// ELSE
|
|
// FranklinSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// FranklinSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //When playing as Franklin
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// TrevorSwitchAvailable = TRUE
|
|
// ELSE
|
|
// TrevorSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// TrevorSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// MichaelSwitchAvailable = TRUE
|
|
// ELSE
|
|
// MichaelSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// MichaelSwitchAvailable = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check for hotswapping between Michael to Trevor or franklin.
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF TrevorSwitchAvailable = TRUE
|
|
// OR FranklinSwitchAvailable = TRUE
|
|
// IF NOT sCamDetails.bRun
|
|
// IF UPDATE_SELECTOR_HUD(sSelectorPeds)
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_TREVOR)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_TREVOR)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_FRANKLIN)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_FRANKLIN)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF LongDistanceCamRequired = TRUE
|
|
// IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_LONG_RANGE(sCamDetails) // Returns FALSE when the camera spline is complete
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// AND IS_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_PRINTS()
|
|
// ENDIF
|
|
// //Move Trev into safe position if he was selected at close range
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RUN_CAM_SPLINE_FROM_PLAYER_TO_PED(sCamDetails, 370, 370, SELECTOR_CAM_DEFAULT, 0) // Returns FALSE when the camera spline is complete
|
|
//
|
|
// SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sCamDetails.pedTo)
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check for hotswapping between Trevor to Michael or franklin.
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF MichaelSwitchAvailable = TRUE
|
|
// OR FranklinSwitchAvailable = TRUE
|
|
// IF NOT sCamDetails.bRun
|
|
// IF UPDATE_SELECTOR_HUD(sSelectorPeds)
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MICHAEL)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_MICHAEL)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_FRANKLIN)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_FRANKLIN)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF LongDistanceCamRequired = TRUE
|
|
// IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_LONG_RANGE(sCamDetails) // Returns FALSE when the camera spline is complete
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// AND IS_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_PRINTS()
|
|
// ENDIF
|
|
//
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RUN_CAM_SPLINE_FROM_PLAYER_TO_PED(sCamDetails, 370, 370, SELECTOR_CAM_DEFAULT, 0) // Returns FALSE when the camera spline is complete
|
|
//
|
|
// SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sCamDetails.pedTo)
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check for hotswapping between franklin to Trevor or Michael.
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF TrevorSwitchAvailable = TRUE
|
|
// OR FranklinSwitchAvailable = TRUE
|
|
// IF NOT sCamDetails.bRun
|
|
// IF UPDATE_SELECTOR_HUD(sSelectorPeds)
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_TREVOR)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_TREVOR)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MICHAEL)
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_PED_ID()) < 400
|
|
// IF SETUP_HOTSWAP_CAM_FROM_PLAYER_CLOSE(SELECTOR_PED_MICHAEL)
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed]
|
|
// sCamDetails.bRun = TRUE
|
|
// LongDistanceCamRequired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF LongDistanceCamRequired = TRUE
|
|
// IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_LONG_RANGE(sCamDetails) // Returns FALSE when the camera spline is complete
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// AND IS_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_PRINTS()
|
|
// ENDIF
|
|
// //Move Trev into safe position if he was selected at close range
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
//
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF RUN_CAM_SPLINE_FROM_PLAYER_TO_PED(sCamDetails, 370, 370, SELECTOR_CAM_DEFAULT, 0) // Returns FALSE when the camera spline is complete
|
|
//
|
|
// SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sCamDetails.pedTo)
|
|
// IF sCamDetails.bOKToSwitchPed
|
|
// IF NOT sCamDetails.bPedSwitched
|
|
// IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
|
|
//
|
|
// //Reset flags for AI controller
|
|
// MichaelAITaskGiven = FALSE
|
|
// FranklinAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
//
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], FALSE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], 100)
|
|
// ENDIF
|
|
// SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE)
|
|
//
|
|
// sCamDetails.bPedSwitched = TRUE
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
////PURPOSE: Controls everything for player buddies. Calling / Switching / updating tasks etc
|
|
//PROC PLAYER_BUDDY_CONTRLER()
|
|
//
|
|
// HANDLE_SWITCHING()
|
|
//
|
|
// HANDLE_PLAYER_CHARACTERS()
|
|
//
|
|
// //Check who the player is first
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// //Check if he is calling Trevor
|
|
// IF IS_CALLING_CONTACT(CHAR_TREVOR)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// TrevorIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF TrevorIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// TrevorAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check if he is calling Franklin
|
|
// IF IS_CALLING_CONTACT(CHAR_FRANKLIN)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// FranklinIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF FranklinIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// FranklinAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// //Check if he is calling Michael
|
|
// IF IS_CALLING_CONTACT(CHAR_MICHAEL)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// MichaelIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF MichaelIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// MichaelAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check if he is calling Franklin
|
|
// IF IS_CALLING_CONTACT(CHAR_FRANKLIN)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// FranklinIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF FranklinIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], CHAR_FRANKLIN, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// FranklinAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// //Check if he is calling Trevor
|
|
// IF IS_CALLING_CONTACT(CHAR_TREVOR)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// TrevorIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF TrevorIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// TrevorAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Check if he is calling Michael
|
|
// IF IS_CALLING_CONTACT(CHAR_MICHAEL)
|
|
// //Do dialogue here
|
|
// //If dialogue starts flag that player has called this buddy for help so they have to come.
|
|
// MichaelIsNeeded = TRUE
|
|
// ENDIF
|
|
//
|
|
// IF MichaelIsNeeded = TRUE
|
|
// IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
// vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// //Create Trevor, check whether the player is inside a vehicle or not.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_FRONT_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<vPlayerCoords.x, vPlayerCoords.y + 2, vPlayerCoords.z>>, GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_SMG, 2000, TRUE)
|
|
// MichaelAITaskGiven = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//ENDPROC
|
|
|
|
|
|
// ===========================================================================================================
|
|
// Termination
|
|
// ===========================================================================================================
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Cleanup
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
//Removes all mission blips
|
|
PROC REMOVE_BLIPS()
|
|
|
|
IF DOES_BLIP_EXIST(HeliToStealBlip)
|
|
REMOVE_BLIP(HeliToStealBlip)
|
|
ENDIF
|
|
// IF DOES_BLIP_EXIST(BlipEnemyHeliPilot[0])
|
|
// REMOVE_BLIP(BlipEnemyHeliPilot[0])
|
|
// ENDIF
|
|
// IF DOES_BLIP_EXIST(BlipEnemyHeliPilot[1])
|
|
// REMOVE_BLIP(BlipEnemyHeliPilot[1])
|
|
// ENDIF
|
|
IF DOES_BLIP_EXIST(HangerBlip)
|
|
REMOVE_BLIP(HangerBlip)
|
|
ENDIF
|
|
// IF DOES_BLIP_EXIST(BuddyBlip)
|
|
// REMOVE_BLIP(BuddyBlip)
|
|
// ENDIF
|
|
IF DOES_BLIP_EXIST(ArmyJet1Blip)
|
|
REMOVE_BLIP(ArmyJet1Blip)
|
|
ENDIF
|
|
|
|
FOR icount = 0 TO 12
|
|
CLEANUP_AI_PED_BLIP(MarineCopBlip[icount])
|
|
ENDFOR
|
|
|
|
CLEAR_GPS_MULTI_ROUTE()
|
|
|
|
ENDPROC
|
|
|
|
PROC Mission_Cleanup()
|
|
|
|
RESET_ALL_BATTLEBUDDY_BEHAVIOUR_REQUESTS()
|
|
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(CARGOBOB, FALSE)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(BUZZARD, FALSE)
|
|
SET_POLICE_RADAR_BLIPS(TRUE)
|
|
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2195.3, 3231.1, 41.4>>, <<-2164.1, 3250.5, 29>>, TRUE)
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2050.8, 3139.5, 41>>, <<-2018.5, 3160.0, 27>>, TRUE)
|
|
// SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_BASE, FALSE)
|
|
|
|
//Set car generators back to normal.
|
|
CLEAR_VEHICLE_GENERATOR_AREA_OF_INTEREST()
|
|
|
|
REMOVE_SCENARIO_BLOCKING_AREA(RemoveHeliBlockingArea)
|
|
REMOVE_SCENARIO_BLOCKING_AREA(RemoveHeliBlockingArea2)
|
|
REMOVE_SCENARIO_BLOCKING_AREA(RemoveHeliBlockingArea3)
|
|
// REMOVE_SCENARIO_BLOCKING_AREA(RemoveFrontGuardBlockingArea)
|
|
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE, TRUE)
|
|
ALLOW_DISPATCH(DT_POLICE_HELICOPTER, TRUE)
|
|
ALLOW_DISPATCH(DT_POLICE_VEHICLE_REQUEST, TRUE)
|
|
ALLOW_DISPATCH(DT_POLICE_ROAD_BLOCK, TRUE)
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER, TRUE)
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE_WAIT_CRUISING, TRUE)
|
|
ALLOW_DISPATCH(DT_SWAT_AUTOMOBILE, TRUE)
|
|
ALLOW_DISPATCH(DT_SWAT_HELICOPTER, TRUE)
|
|
|
|
REMOVE_BLIPS()
|
|
|
|
//RELEASE_PATH_NODES()
|
|
|
|
//Disable the scenario guards
|
|
IF DOES_SCENARIO_GROUP_EXIST("ARMY_GUARD")
|
|
IF NOT IS_SCENARIO_GROUP_ENABLED("ARMY_GUARD")
|
|
SET_SCENARIO_GROUP_ENABLED("ARMY_GUARD", TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
STOP_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",TRUE)
|
|
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", FALSE, FALSE)
|
|
|
|
SET_AUDIO_FLAG("PoliceScannerDisabled", FALSE)
|
|
SET_AUDIO_FLAG("WantedMusicOnMission", FALSE)
|
|
|
|
FOR icount = 0 TO 12
|
|
CLEANUP_AI_PED_BLIP(MarineCopBlip[icount])
|
|
ENDFOR
|
|
|
|
//Re-enable the ARMY_HELI group
|
|
IF DOES_SCENARIO_GROUP_EXIST("ARMY_HELI")
|
|
IF NOT IS_SCENARIO_GROUP_ENABLED("ARMY_HELI")
|
|
SET_SCENARIO_GROUP_ENABLED("ARMY_HELI",TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
REMOVE_RELATIONSHIP_GROUP(MARINE_GROUP_HASH)
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
|
|
ENDPROC
|
|
|
|
//═════════════════════════════════╡ DEBUG ╞═══════════════════════════════════
|
|
//DEBUG STAGE SELECTOR NAMING
|
|
#IF IS_DEBUG_BUILD
|
|
PROC SET_DEBUG_STAGE_NAMES()
|
|
|
|
SkipMenuStruct[0].sTxtLabel = "STAGE_STEAL_CARGOBOB" // Stage 1 Name missionStage = STAGE_STEAL_CARGOBOB
|
|
SkipMenuStruct[1].sTxtLabel = "STAGE_ESCAPE_MILITARY" // Stage 2 Name missionStage = STAGE_ESCAPE_MILITARY
|
|
SkipMenuStruct[2].sTxtLabel = "STAGE_FLY_CARGOBOB_TO_HANGER" // Stage 3 Name missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
SkipMenuStruct[3].sTxtLabel = "STAGE_END_CUTSCENE" // Stage 4 Name missionStage = STAGE_END_CUTSCENE
|
|
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
//PURPOSE:Everything that is needed before the mission starts.
|
|
PROC SETUP_MISSION()
|
|
|
|
INIT_BATTLEBUDDY_BEHAVIOUR_FOR_MISSION(SP_HEIST_DOCKS_PREP_2B)
|
|
|
|
//Request and load text for god text.
|
|
REQUEST_ADDITIONAL_TEXT("DOCKP2B", MISSION_TEXT_SLOT)
|
|
|
|
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
|
|
PRINTSTRING("Waiting for additional text to load") PRINTNL()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(), FALSE)
|
|
ENDIF
|
|
|
|
// ADD_RELATIONSHIP_GROUP("invisiblePedGroup", invisibleGroup)
|
|
|
|
//Stop ambulances and fire engines coming.
|
|
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE)
|
|
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE)
|
|
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE)
|
|
|
|
//Switch off the vehicle generators for the 2 areas where the CARGOBOBs spawn so i can create my own ones.
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2024.2, 2968, 30.2>>, <<-2004.0, 2921.5, 37.6>>, FALSE)
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2133.3, 2993.7, 41.1>>, <<-2152.7, 3039.4, 31.6>>, FALSE)
|
|
//The area where the cargobobs are spawned needs to be clear.
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1884.6, 2827.7, 41.8>>, <<-1843.1, 2772.1, 29.9>>, FALSE)
|
|
|
|
RemoveHeliBlockingArea = ADD_SCENARIO_BLOCKING_AREA(<<-1884.6, 2827.7, 41.8>>, <<-1843.1, 2772.1, 29.9>>)
|
|
// RemoveHeliBlockingArea2 = ADD_SCENARIO_BLOCKING_AREA(<<-2505.0, 3703.2, 196.6>>, <<-1776.1, 2707.1, 53.5>>)
|
|
RemoveHeliBlockingArea3 = ADD_SCENARIO_BLOCKING_AREA(<<-2168.3, 3223.6, 52.8>>, <<-2156.2, 3205.0, 29>>)
|
|
// RemoveFrontGuardBlockingArea = ADD_SCENARIO_BLOCKING_AREA(<<-1594.7, 2788.8, 20.2>>, <<-1585.5, 2808.2, 13.3>>)
|
|
CLEAR_AREA(<<-1876.8, 2806.1, 32.3>>, 8, TRUE)
|
|
CLEAR_AREA(<<-1857.7, 2797.9, 32.4>>, 8, TRUE)
|
|
|
|
SET_AUDIO_FLAG("WantedMusicOnMission", TRUE)
|
|
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(BUZZARD, TRUE)
|
|
|
|
//To stop the buzzards from spawning in.
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2195.3, 3231.1, 41.4>>, <<-2164.1, 3250.5, 29>>, FALSE)
|
|
REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA(<<-2195.3, 3231.1, 41.4>>, <<-2164.1, 3250.5, 29>>)
|
|
|
|
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-2050.8, 3139.5, 41>>, <<-2018.5, 3160.0, 27>>, FALSE)
|
|
REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA(<<-2050.8, 3139.5, 41>>, <<-2018.5, 3160.0, 27>>)
|
|
|
|
// SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_BASE, TRUE)
|
|
|
|
//Add in the stage names for the z menu debug only
|
|
#IF IS_DEBUG_BUILD
|
|
SET_DEBUG_STAGE_NAMES()
|
|
#ENDIF
|
|
|
|
ENDPROC
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Pass
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
PROC Mission_Passed()
|
|
|
|
PRINTSTRING("...Placeholder Mission Passed")
|
|
PRINTNL()
|
|
|
|
Mission_Flow_Mission_Passed()
|
|
TRIGGER_MISSION_STATS_UI(TRUE,TRUE)
|
|
Mission_Cleanup()
|
|
|
|
ENDPROC
|
|
|
|
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
// Mission Fail
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
//PURPOSE: Sets up the scene for if the player shitskips past the last stage. The mission should end with a pass here.
|
|
PROC SET_UP_MISSION_PASSED()
|
|
|
|
missionCanFail = FALSE
|
|
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_OUT(0)
|
|
ENDIF
|
|
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1747.0403, 3267.4558, 40.2460>>)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), 229.0887)
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
DELETE_VEHICLE(HeliToSteal)
|
|
ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
REQUEST_MODEL(CARGOBOB)
|
|
WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
HeliToSteal = CREATE_VEHICLE(CARGOBOB, <<1740.8517, 3263.1614, 40.2743>>, 280.3712)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_LEFT)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_RIGHT)
|
|
SET_VEHICLE_DOORS_LOCKED(HeliToSteal, VEHICLELOCK_LOCKED)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
|
|
IF IS_SCREEN_FADED_OUT()
|
|
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
|
|
WHILE NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
PRINTSTRING("waiting on screen fading in") PRINTNL()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
Mission_Passed()
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Deletes all mission entities
|
|
PROC DELETE_ALL_ENTITIES()
|
|
|
|
// //Move player out an vehicle before calling this.
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1738.1306, 3283.3796, 40.1261>>)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), 25.3545)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Peds
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
DELETE_PED(EnemyHeliPilot[0])
|
|
ENDIF
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// DELETE_PED(EnemyHeliPilot[1])
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(InvisiblePed)
|
|
// DELETE_PED(InvisiblePed)
|
|
// ENDIF
|
|
|
|
FOR icount = 0 TO 12
|
|
IF DOES_ENTITY_EXIST(MarineCop[icount])
|
|
DELETE_PED(MarineCop[icount])
|
|
ENDIF
|
|
ENDFOR
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
ENDIF
|
|
ENDIF
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Audio
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(HeliToSteal)
|
|
// ENDIF
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(EnemyHeli[0])
|
|
ENDIF
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(EnemyHeli[1])
|
|
// ENDIF
|
|
STOP_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",TRUE)
|
|
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", FALSE, FALSE)
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENTER_CHOPPER")
|
|
STOP_AUDIO_SCENE("DH_P_2B_ENTER_CHOPPER")
|
|
ENDIF
|
|
IF IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
STOP_AUDIO_SCENE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
ENDIF
|
|
|
|
|
|
//Vehicles
|
|
IF DOES_ENTITY_EXIST(buddyCar)
|
|
DELETE_VEHICLE(buddyCar)
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(PlayerCar)
|
|
DELETE_VEHICLE(PlayerCar)
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
DELETE_VEHICLE(HeliToSteal)
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
DELETE_VEHICLE(EnemyHeli[0])
|
|
ENDIF
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// DELETE_VEHICLE(EnemyHeli[1])
|
|
// ENDIF
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[0])
|
|
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.veh[0])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[0], TRUE, TRUE)
|
|
ENDIF
|
|
DELETE_VEHICLE(g_sTriggerSceneAssets.veh[0])
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[1])
|
|
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.veh[1])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[1], TRUE, TRUE)
|
|
ENDIF
|
|
DELETE_VEHICLE(g_sTriggerSceneAssets.veh[1])
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[2])
|
|
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.veh[2])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[2], TRUE, TRUE)
|
|
ENDIF
|
|
DELETE_VEHICLE(g_sTriggerSceneAssets.veh[2])
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
DELETE_VEHICLE(GetAwayCar[0])
|
|
ENDIF
|
|
|
|
//Objects
|
|
IF DOES_ENTITY_EXIST(obj_lesters_rpg)
|
|
DELETE_OBJECT(obj_lesters_rpg)
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(obj_single_rocket)
|
|
DELETE_OBJECT(obj_single_rocket)
|
|
ENDIF
|
|
|
|
|
|
//Camera's
|
|
IF DOES_CAM_EXIST(RocketCam)
|
|
IF IS_CAM_ACTIVE(RocketCam)
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
ENDIF
|
|
DESTROY_CAM(RocketCam)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Adds the players to dialogue by checking who the player is in control of.
|
|
FUNC BOOL IS_PLAYER_AND_BUDDY_ADDED_FOR_DIALOGUE(PED_INDEX BuddyPed)
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
IF DOES_ENTITY_EXIST(BuddyPed)
|
|
IF NOT IS_PED_INJURED(BuddyPed)
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_TREVOR]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR")
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 1, sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], "FRANKLIN")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 1, PLAYER_PED_ID(), "FRANKLIN")
|
|
IF DOES_ENTITY_EXIST(BuddyPed)
|
|
IF NOT IS_PED_INJURED(BuddyPed)
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 0, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_TREVOR]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 2, PLAYER_PED_ID(), "TREVOR")
|
|
IF DOES_ENTITY_EXIST(BuddyPed)
|
|
IF NOT IS_PED_INJURED(BuddyPed)
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 0, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF BuddyPed = sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN]
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 1, sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], "FRANKLIN")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
//PURPOSE: Handles the players positioning for each stage
|
|
PROC SETUP_MILITARY_AND_COPS()
|
|
|
|
IF SetupMilitaryCops = FALSE
|
|
|
|
IF HAS_MODEL_LOADED(S_M_Y_MARINE_01)
|
|
AND HAS_MODEL_LOADED(S_M_M_PILOT_02)
|
|
// ECF_BLOCK_SEAT_SHUFFLING
|
|
//Create invisible ped for heli passenger seat to prevent anyone getting in the front seat
|
|
// IF NOT DOES_ENTITY_EXIST(InvisiblePed)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//// InvisiblePed = CREATE_PED( PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2140.7512, 3021.2112, 31.8100>>, 4.8633)
|
|
// InvisiblePed = CREATE_PED_INSIDE_VEHICLE(HeliToSteal, PEDTYPE_MISSION, S_M_Y_MARINE_01, VS_FRONT_RIGHT)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(InvisiblePed, invisibleGroup)
|
|
// SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, invisibleGroup)
|
|
// SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_AMBIENT_ARMY, invisibleGroup)
|
|
// SET_ENTITY_VISIBLE(InvisiblePed, FALSE)
|
|
// SET_PED_CAN_BE_DRAGGED_OUT(InvisiblePed, FALSE)
|
|
// SET_ENTITY_INVINCIBLE(InvisiblePed, TRUE)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(InvisiblePed, TRUE)
|
|
// SET_PED_CONFIG_FLAG(InvisiblePed, PCF_PreventAutoShuffleToDriversSeat, TRUE)
|
|
// SET_PED_CAN_BE_TARGETTED(InvisiblePed, FALSE)
|
|
//// SET_PED_COMBAT_ATTRIBUTES(InvisiblePed, CA_USE_VEHICLE, FALSE)
|
|
//// TASK_ENTER_VEHICLE(InvisiblePed, HeliToSteal, 5000, VS_FRONT_RIGHT, PEDMOVEBLENDRATIO_RUN, ECF_BLOCK_SEAT_SHUFFLING|ECF_RESUME_IF_INTERRUPTED)
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[0])
|
|
MarineCop[0] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-1590.5227, 2796.3022, 15.9184>>, 247.0896)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[1])
|
|
MarineCop[1] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2303.7996, 3387.9900, 30.0340>>, 58.5763)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[2])
|
|
MarineCop[2] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-1697.3290, 2909.9414, 31.9506>>, 245.6560)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[3])
|
|
MarineCop[3] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-1696.3693, 2905.7722, 31.9454>>, 6.3714)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[4])
|
|
MarineCop[4] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-1843.7073, 2821.6106, 31.8528>>, 271.6265)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[5])
|
|
MarineCop[5] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2006.8772, 2955.1013, 31.8103>>, 332.0101)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[6])
|
|
MarineCop[6] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2010.0220, 2956.8052, 31.8103>>, 288.1283)
|
|
ENDIF
|
|
//Don't create these 2 guys if stage is escape military.
|
|
IF missionStage <> STAGE_ESCAPE_MILITARY
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[7])
|
|
MarineCop[7] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2140.2131, 3034.6091, 31.8100>>, 302.4493)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[8])
|
|
MarineCop[8] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2136.0530, 3031.4944, 31.8100>>, 38.6856)
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[9])
|
|
MarineCop[9] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2035.4293, 3058.8765, 31.8103>>, 169.8222)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[10])
|
|
MarineCop[10] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2146.4666, 3160.7490, 31.8106>>, 356.4766)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[11])
|
|
MarineCop[11] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2280.0869, 3172.4233, 31.8103>>, 353.663)
|
|
ENDIF
|
|
IF NOT DOES_ENTITY_EXIST(MarineCop[12])
|
|
MarineCop[12] = CREATE_PED(PEDTYPE_MISSION, S_M_Y_MARINE_01, <<-2277.3762, 3177.8000, 31.8103>>, 175.0685)
|
|
ENDIF
|
|
|
|
//Create 2 pilots
|
|
IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
EnemyHeliPilot[0] = CREATE_PED(PEDTYPE_MISSION, S_M_M_PILOT_02, <<-1859.8307, 3071.7576, 31.8104>>, 139.3607)
|
|
SET_PED_PROP_INDEX(EnemyHeliPilot[0], ANCHOR_HEAD, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(EnemyHeliPilot[0], PED_COMP_SPECIAL, 0, 0)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeliPilot[0], TRUE)
|
|
GIVE_WEAPON_TO_PED(EnemyHeliPilot[0], WEAPONTYPE_ASSAULTRIFLE, 2000, TRUE)
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(EnemyHeliPilot[0], MARINE_GROUP_HASH)
|
|
SET_PED_ACCURACY(EnemyHeliPilot[0], 0)
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(EnemyHeliPilot[0], TRUE)
|
|
ADD_DEADPOOL_TRIGGER(EnemyHeliPilot[0], DH2BP_KILLS)
|
|
INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(EnemyHeliPilot[0])
|
|
ENDIF
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// EnemyHeliPilot[1] = CREATE_PED(PEDTYPE_MISSION, S_M_M_PILOT_02, <<-2222.4194, 3251.4404, 31.8103>>, 221.3115)
|
|
// SET_PED_PROP_INDEX(EnemyHeliPilot[1], ANCHOR_HEAD, 2, 0)
|
|
// SET_PED_COMPONENT_VARIATION(EnemyHeliPilot[1], PED_COMP_SPECIAL, 0, 0)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeliPilot[1], TRUE)
|
|
// GIVE_WEAPON_TO_PED(EnemyHeliPilot[1], WEAPONTYPE_ASSAULTRIFLE, 2000, TRUE)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(EnemyHeliPilot[1], RELGROUPHASH_AMBIENT_ARMY)
|
|
// SET_PED_ACCURACY(EnemyHeliPilot[1], 0)
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(EnemyHeliPilot[1], TRUE)
|
|
// ADD_DEADPOOL_TRIGGER(EnemyHeliPilot[1], DH2BP_KILLS)
|
|
// INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(EnemyHeliPilot[1])
|
|
// ENDIF
|
|
|
|
FOR icount = 0 TO 12
|
|
IF MarineCopSetup[icount] = FALSE
|
|
IF NOT IS_PED_INJURED(MarineCop[icount])
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(MarineCop[icount], TRUE)
|
|
GIVE_WEAPON_TO_PED(MarineCop[icount], WEAPONTYPE_ASSAULTRIFLE, 2000, TRUE)
|
|
SET_PED_RELATIONSHIP_GROUP_HASH(MarineCop[icount], MARINE_GROUP_HASH)
|
|
SET_PED_ACCURACY(MarineCop[icount], 10)
|
|
ADD_DEADPOOL_TRIGGER(MarineCop[icount], DH2BP_KILLS)
|
|
INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(MarineCop[icount])
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(MarineCop[icount], TRUE)
|
|
MarineCopSetup[icount] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF DOES_ENTITY_EXIST(MarineCop[0])
|
|
IF NOT IS_PED_INJURED(MarineCop[0])
|
|
TEXT_LABEL tDebugName = "MarineCop 0"
|
|
SET_PED_NAME_DEBUG(MarineCop[0], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[1])
|
|
IF NOT IS_PED_INJURED(MarineCop[1])
|
|
TEXT_LABEL tDebugName = "MarineCop 1"
|
|
SET_PED_NAME_DEBUG(MarineCop[1], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[2])
|
|
IF NOT IS_PED_INJURED(MarineCop[2])
|
|
TEXT_LABEL tDebugName = "MarineCop 2"
|
|
SET_PED_NAME_DEBUG(MarineCop[2], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[3])
|
|
IF NOT IS_PED_INJURED(MarineCop[3])
|
|
TEXT_LABEL tDebugName = "MarineCop 3"
|
|
SET_PED_NAME_DEBUG(MarineCop[3], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[4])
|
|
IF NOT IS_PED_INJURED(MarineCop[4])
|
|
TEXT_LABEL tDebugName = "MarineCop 4"
|
|
SET_PED_NAME_DEBUG(MarineCop[4], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[5])
|
|
IF NOT IS_PED_INJURED(MarineCop[5])
|
|
TEXT_LABEL tDebugName = "MarineCop 5"
|
|
SET_PED_NAME_DEBUG(MarineCop[5], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[6])
|
|
IF NOT IS_PED_INJURED(MarineCop[6])
|
|
TEXT_LABEL tDebugName = "MarineCop 6"
|
|
SET_PED_NAME_DEBUG(MarineCop[6], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[7])
|
|
IF NOT IS_PED_INJURED(MarineCop[7])
|
|
TEXT_LABEL tDebugName = "MarineCop 7"
|
|
SET_PED_NAME_DEBUG(MarineCop[7], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[8])
|
|
IF NOT IS_PED_INJURED(MarineCop[8])
|
|
TEXT_LABEL tDebugName = "MarineCop 8"
|
|
SET_PED_NAME_DEBUG(MarineCop[8], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[9])
|
|
IF NOT IS_PED_INJURED(MarineCop[9])
|
|
TEXT_LABEL tDebugName = "MarineCop 9"
|
|
SET_PED_NAME_DEBUG(MarineCop[9], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[10])
|
|
IF NOT IS_PED_INJURED(MarineCop[10])
|
|
TEXT_LABEL tDebugName = "MarineCop 10"
|
|
SET_PED_NAME_DEBUG(MarineCop[10], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[11])
|
|
IF NOT IS_PED_INJURED(MarineCop[11])
|
|
TEXT_LABEL tDebugName = "MarineCop 11"
|
|
SET_PED_NAME_DEBUG(MarineCop[11], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(MarineCop[12])
|
|
IF NOT IS_PED_INJURED(MarineCop[12])
|
|
TEXT_LABEL tDebugName = "MarineCop 12"
|
|
SET_PED_NAME_DEBUG(MarineCop[12], tDebugName)
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
PRINTSTRING("SetupMilitaryCops = TRUE") PRINTNL()
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_MARINE_01)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_PILOT_02)
|
|
SetupMilitaryCops = TRUE
|
|
ELSE
|
|
PRINTSTRING("Waitiong on model S_M_Y_MARINE_01 loading ... SetupMilitaryCops = FALSE") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC CREATE_ENTITIES_REQUIRED()
|
|
|
|
SWITCH missionStage
|
|
|
|
CASE STAGE_STEAL_CARGOBOB
|
|
|
|
CLEAR_AREA(<<-1588.1, 2794.9, 17.2>>, 20, TRUE)
|
|
// DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-1588.1, 2794.9, 17.2>>, 100)
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<-1720.5, 2568.4, 67.1>>, <<-1523.2, 3002, -70>>, 100, <<-1155.0603, 2665.9795, 17.0939>>, 219.2079, TRUE, FALSE)
|
|
CLEAR_AREA_OF_OBJECTS(<<-1588.1, 2794.9, 17.2>>, 20, CLEAROBJ_FLAG_INCLUDE_DOORS|CLEAROBJ_FLAG_FORCE)
|
|
|
|
REQUEST_MODEL(CARGOBOB)
|
|
REQUEST_MODEL(S_M_Y_MARINE_01)
|
|
REQUEST_MODEL(S_M_M_PILOT_02)
|
|
REQUEST_MODEL(BUZZARD)
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
OR NOT HAS_MODEL_LOADED(S_M_Y_MARINE_01)
|
|
OR NOT HAS_MODEL_LOADED(S_M_M_PILOT_02)
|
|
OR NOT HAS_MODEL_LOADED(BUZZARD)
|
|
PRINTSTRING("Waiting on models loading for STAGE_STEAL_CARGOBOB")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
//Request and load checkpoint vehicle if on a replay
|
|
IF IS_REPLAY_IN_PROGRESS()
|
|
IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
|
|
IF NOT IS_THIS_MODEL_A_HELI(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
|
|
AND NOT IS_THIS_MODEL_A_PLANE(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
|
|
REQUEST_REPLAY_CHECKPOINT_VEHICLE_MODEL()
|
|
WHILE NOT HAS_REPLAY_CHECKPOINT_VEHICLE_LOADED()
|
|
PRINTSTRING("Waiting for replay checkpoint vehicle loading")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Flags
|
|
SetupMilitaryCops = FALSE
|
|
|
|
FOR icount = 0 TO 12
|
|
MarineCopSetup[icount] = FALSE
|
|
ENDFOR
|
|
|
|
//Create the heli to steal
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
CLEAR_AREA(vHeliCoords, 10, TRUE)
|
|
HeliToSteal = CREATE_VEHICLE(CARGOBOB, vHeliCoords, fHeliHeading)
|
|
SET_VEHICLE_CAN_BE_TARGETTED(HeliToSteal, FALSE)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(CARGOBOB, TRUE)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
// SET_ENTITY_INVINCIBLE(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
|
|
SETUP_MILITARY_AND_COPS()
|
|
|
|
//Create the 2 enemy heli's
|
|
IF NOT DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF HAS_MODEL_LOADED(BUZZARD)
|
|
CLEAR_AREA(<<-1866.4460, 3071.3950, 31.8104>>, 10, TRUE)
|
|
EnemyHeli[0] = CREATE_VEHICLE(BUZZARD, <<-1866.4460, 3071.3950, 31.8104>>, 150.2863)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[0], TRUE)
|
|
SET_VEHICLE_CAN_BE_TARGETTED(EnemyHeli[0], TRUE)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(EnemyHeli[0])
|
|
ADD_ENTITY_TO_AUDIO_MIX_GROUP(EnemyHeli[0], "DH_P_2B_ENEMY_CHOPPERS")
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(BUZZARD)
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(EnemyHeli[0], FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Create players car and put him in it.
|
|
IF IS_REPLAY_IN_PROGRESS()
|
|
IF NOT DOES_ENTITY_EXIST(PlayerCar)
|
|
IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
|
|
IF NOT IS_THIS_MODEL_A_HELI(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
|
|
AND NOT IS_THIS_MODEL_A_PLANE(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
|
|
PlayerCar = CREATE_REPLAY_CHECKPOINT_VEHICLE(<<-1535.2094, 2744.5505, 16.6437>>, 47.9754)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
|
|
SET_VEHICLE_HAS_STRONG_AXLES(PlayerCar, TRUE)
|
|
SET_VEHICLE_STRONG(PlayerCar, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
SET_POLICE_RADAR_BLIPS(TRUE)
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_ESCAPE_MILITARY
|
|
|
|
PREPARE_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS")
|
|
|
|
WAIT(1500)
|
|
|
|
REQUEST_MODEL(CARGOBOB)
|
|
REQUEST_MODEL(BUZZARD)
|
|
REQUEST_MODEL(S_M_Y_MARINE_01)
|
|
REQUEST_MODEL(S_M_M_PILOT_02)
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
OR NOT HAS_MODEL_LOADED(BUZZARD)
|
|
OR NOT HAS_MODEL_LOADED(S_M_Y_MARINE_01)
|
|
OR NOT HAS_MODEL_LOADED(S_M_M_PILOT_02)
|
|
PRINTSTRING("Waiting on models loading for STAGE_STEAL_CARGOBOB")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
//Flags
|
|
SetupMilitaryCops = FALSE
|
|
|
|
FOR icount = 0 TO 12
|
|
MarineCopSetup[icount] = FALSE
|
|
ENDFOR
|
|
|
|
//Create the heli to steal
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
CLEAR_AREA(vHeliCoords, 10, TRUE)
|
|
HeliToSteal = CREATE_VEHICLE(CARGOBOB, vHeliCoords, fHeliHeading)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
SET_HELI_BLADES_FULL_SPEED(HeliToSteal)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(CARGOBOB, TRUE)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
// SET_ENTITY_INVINCIBLE(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
|
|
SETUP_MILITARY_AND_COPS()
|
|
|
|
//Create the 2 enemy heli's
|
|
IF NOT DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF HAS_MODEL_LOADED(BUZZARD)
|
|
CLEAR_AREA(<<-1866.4460, 3071.3950, 31.8104>>, 10, TRUE)
|
|
EnemyHeli[0] = CREATE_VEHICLE(BUZZARD, <<-1866.4460, 3071.3950, 31.8104>>, 150.2863)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[0], TRUE)
|
|
SET_VEHICLE_CAN_BE_TARGETTED(EnemyHeli[0], TRUE)
|
|
SET_VEHICLE_ON_GROUND_PROPERLY(EnemyHeli[0])
|
|
ADD_ENTITY_TO_AUDIO_MIX_GROUP(EnemyHeli[0], "DH_P_2B_ENEMY_CHOPPERS")
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(BUZZARD)
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(EnemyHeli[0], FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
EnemyHeliPilot[0] = CREATE_PED_INSIDE_VEHICLE(EnemyHeli[0], PEDTYPE_MISSION, S_M_M_PILOT_02)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_PILOT_02)
|
|
ELSE
|
|
IF NOT IS_PED_IN_VEHICLE(EnemyHeliPilot[0], EnemyHeli[0])
|
|
SET_PED_INTO_VEHICLE(EnemyHeliPilot[0], EnemyHeli[0])
|
|
ENDIF
|
|
ENDIF
|
|
|
|
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, -1)
|
|
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF HAS_MODEL_LOADED(BUZZARD)
|
|
// CLEAR_AREA(<<-2221.2722, 3245.3533, 31.8103>>, 10, TRUE)
|
|
// EnemyHeli[1] = CREATE_VEHICLE(BUZZARD, <<-2221.2722, 3245.3533, 31.8103>>, 240.2412)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[1], TRUE)
|
|
// SET_VEHICLE_CAN_BE_TARGETTED(EnemyHeli[1], TRUE)
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[1], FALSE)
|
|
// ADD_ENTITY_TO_AUDIO_MIX_GROUP(EnemyHeli[1], "DH_P_2B_ENEMY_CHOPPERS")
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(BUZZARD)
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",TRUE)
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", TRUE, TRUE)
|
|
|
|
// //Create Michael if player started mission as Trevor
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<1724.6218, 3293.3455, 40.2262>>, 283.0429)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RELGROUPHASH_PLAYER)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 100)
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_EARS, 0,0)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
// ENDIF
|
|
//
|
|
// //Buddys car
|
|
// CLEAR_AREA(vMilitaryBaseEntrance, 5, TRUE)
|
|
// WHILE NOT CREATE_PLAYER_VEHICLE(buddyCar, CHAR_MICHAEL, vMilitaryBaseEntrance, fMilitaryBaseEntranceHeading)
|
|
// PRINTSTRING("Waiting for Michaels car being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// SET_VEHICLE_ON_GROUND_PROPERLY(buddyCar)
|
|
// SET_VEHICLE_COLOURS(buddyCar, 0, 0)
|
|
// ENDIF
|
|
|
|
// //Create Trevor if player started mission as Michael
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<1724.6218, 3293.3455, 40.2262>>, 283.0429)
|
|
// PRINTSTRING("Waiting for Trevor being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], RELGROUPHASH_PLAYER)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 100)
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_EARS, 0,0)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
// ENDIF
|
|
// CLEAR_AREA(vMilitaryBaseEntrance, 5, TRUE)
|
|
// WHILE NOT CREATE_PLAYER_VEHICLE(buddyCar, CHAR_TREVOR, vMilitaryBaseEntrance, fMilitaryBaseEntranceHeading)
|
|
// PRINTSTRING("Waiting for Trevors car being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// SET_VEHICLE_ON_GROUND_PROPERLY(buddyCar)
|
|
// ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
|
|
REQUEST_MODEL(CARGOBOB)
|
|
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
PRINTSTRING("Waiting on models loading for STAGE_STEAL_CARGOBOB")
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
//Create the heli to steal
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
CLEAR_AREA(vHeliCoords, 10, TRUE)
|
|
HeliToSteal = CREATE_VEHICLE(CARGOBOB, <<-629.1677, 2871.3101, 385.0313>>, 283.1214)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(CARGOBOB, TRUE)
|
|
// SET_ENTITY_INVINCIBLE(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_ON(HeliToSteal, TRUE, TRUE)
|
|
SET_HELI_BLADES_FULL_SPEED(HeliToSteal)
|
|
SET_VEHICLE_FORWARD_SPEED(HeliToSteal, 30)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
|
|
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, -1)
|
|
|
|
// //Create Michael if player started mission as Trevor
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<1724.6218, 3293.3455, 40.2262>>, 283.0429)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RELGROUPHASH_PLAYER)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 100)
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_EARS, 0,0)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Create Trevor if player started mission as Michael
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<1724.6218, 3293.3455, 40.2262>>, 283.0429)
|
|
// PRINTSTRING("Waiting for Trevor being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], RELGROUPHASH_PLAYER)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 100)
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_EARS, 0,0)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_END_CUTSCENE
|
|
REQUEST_MODEL(CARGOBOB)
|
|
REQUEST_MODEL(SANDKING)
|
|
|
|
WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
OR NOT HAS_MODEL_LOADED(SANDKING)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
//Create the heli to steal
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
CLEAR_AREA(<<1749.6102, 3272.9497, 40.1533>>, 5, TRUE)
|
|
HeliToSteal = CREATE_VEHICLE(CARGOBOB, <<1749.6102, 3272.9497, 40.1533>>, 51.1280)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
// SET_ENTITY_INVINCIBLE(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
|
|
//Create the 2 getawaycars
|
|
IF NOT DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
GetAwayCar[0] = CREATE_VEHICLE(SANDKING, <<1754.9508, 3290.9939, 40.1176>>, 182.3970)
|
|
FREEZE_ENTITY_POSITION(GetAwayCar[0], TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(SANDKING)
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
EndCarsCreated = TRUE
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Handles the players positioning for each stage
|
|
PROC SET_PLAYER_COORDS()
|
|
|
|
SWITCH missionStage
|
|
|
|
// CASE STAGE_GET_TO_CARGOBOB
|
|
// CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
// SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
// SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
// SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1738.1306, 3283.3796, 40.1261>>)
|
|
// SET_ENTITY_HEADING(PLAYER_PED_ID(), 25.3545)
|
|
// BREAK
|
|
|
|
CASE STAGE_STEAL_CARGOBOB
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
|
|
IF DOES_ENTITY_EXIST(PlayerCar)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), PlayerCar)
|
|
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), PlayerCar)
|
|
ENDIF
|
|
ELSE
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-1565.0836, 2780.8130, 16.4022>>)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), 53.6086)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_ESCAPE_MILITARY
|
|
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
ENDIF
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_END_CUTSCENE
|
|
|
|
CLEAR_PED_TASKS(PLAYER_PED_ID())
|
|
|
|
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
////PURPOSE: Handles buddies for skipping and replays.
|
|
//PROC REPLAY_BATTLEBUDDY_SNAPSHOT()
|
|
//
|
|
//
|
|
// // start battle buddies restoring
|
|
// CPRINTLN(DEBUG_REPLAY, "Waiting for friend activity script to shut down.")
|
|
// WHILE NOT CAN_RESTORE_BATTLEBUDDY_SNAPSHOT()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// CPRINTLN(DEBUG_REPLAY, "Friend activity script is shutdown. Request battle buddies to restore in background.")
|
|
// RESTORE_BATTLEBUDDY_SNAPSHOT(g_stageSnapshot.mBattleBuddyStruct)
|
|
//
|
|
// // wait for battle buddies restore to complete
|
|
// CPRINTLN(DEBUG_REPLAY, "Waiting for battle buddies to restore.")
|
|
// WHILE NOT IS_BATTLEBUDDY_SNAPSHOT_RESTORED(g_stageSnapshot.mBattleBuddyStruct)
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// CPRINTLN(DEBUG_REPLAY, "Battle buddies are restored.")
|
|
//
|
|
// //Place buddy's into the players vehicle if he's in one.
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(GET_BATTLEBUDDY_PED(CHAR_TREVOR), FALSE)
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_TREVOR))
|
|
// SET_PED_INTO_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_TREVOR), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(GET_BATTLEBUDDY_PED(CHAR_FRANKLIN), FALSE)
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_FRANKLIN))
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// SET_PED_INTO_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_FRANKLIN), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// ELSE
|
|
// SET_PED_INTO_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_FRANKLIN), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(GET_BATTLEBUDDY_PED(CHAR_MICHAEL), FALSE)
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF NOT IS_PED_IN_ANY_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_MICHAEL))
|
|
// IF IS_VEHICLE_SEAT_FREE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// SET_PED_INTO_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_MICHAEL), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_LEFT)
|
|
// ELSE
|
|
// SET_PED_INTO_VEHICLE(GET_BATTLEBUDDY_PED(CHAR_MICHAEL), GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), VS_BACK_RIGHT)
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
|
|
//PURPOSE: Handles everything for replays, or skipping to different stages through out the mission.
|
|
PROC STAGE_SELECTOR_MISSION_SETUP()
|
|
|
|
REMOVE_BLIPS()
|
|
|
|
DELETE_ALL_ENTITIES()
|
|
|
|
CREATE_ENTITIES_REQUIRED()
|
|
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
OR IS_REPEAT_PLAY_ACTIVE()
|
|
SET_PLAYER_COORDS()
|
|
ENDIF
|
|
|
|
// REPLAY_BATTLEBUDDY_SNAPSHOT()
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the fail reason, updates the mission stage and resets iControlFlag
|
|
/// (If we've already failed the mission, it only edits the fail reason
|
|
/// - so this can be used to update fail reason after mission has faded out)
|
|
/// PARAMS:
|
|
/// eFail - the reason the player has failed the mission
|
|
PROC SET_MISSION_FAILED(FAIL_REASON eFail)
|
|
eFailReason = eFail
|
|
IF missionStage <> STAGE_MISSION_FAILED
|
|
missionStage = STAGE_MISSION_FAILED
|
|
iControlFlag = 0
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC DEBUG_KEYS()
|
|
|
|
// Check for Pass
|
|
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
|
|
Mission_Passed()
|
|
ENDIF
|
|
|
|
// Check for Fail
|
|
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
|
|
SET_MISSION_FAILED(FAIL_DEFAULT)
|
|
EXIT
|
|
ENDIF
|
|
|
|
//Check for J-Skip
|
|
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J))
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_OUT(0)
|
|
ENDIF
|
|
|
|
SWITCH missionStage
|
|
|
|
CASE STAGE_OPENING_CUTSCENE
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_STEAL_CARGOBOB
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_ESCAPE_MILITARY
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
|
|
iControlFlag = 0
|
|
SET_UP_MISSION_PASSED()
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
//Check for P-Skip
|
|
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P))
|
|
|
|
SWITCH missionStage
|
|
|
|
CASE STAGE_STEAL_CARGOBOB
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_ESCAPE_MILITARY
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
MissionStageBeingSkippedTo = TRUE
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
//PURPOSE: Runs throughout mission checking for all fail instances.
|
|
PROC FAIL_CHECKS()
|
|
|
|
//Fail mission if both CARGOBOBs are destroyed
|
|
IF missionStage = STAGE_STEAL_CARGOBOB
|
|
OR missionStage = STAGE_ESCAPE_MILITARY
|
|
OR missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF HeliToStealDestroyed = TRUE
|
|
SET_MISSION_FAILED(FAIL_HELI_DESTROYED)
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF missionStage = STAGE_STEAL_CARGOBOB
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(HeliToSteal, PLAYER_PED_ID()) > 850
|
|
SET_MISSION_FAILED(FAIL_HELI_ABANDONED)
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
OR missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(HeliToSteal, PLAYER_PED_ID()) > 100
|
|
SET_MISSION_FAILED(FAIL_HELI_ABANDONED)
|
|
EXIT
|
|
ELSE
|
|
IF IS_VEHICLE_STUCK_TIMER_UP(HeliToSteal, VEH_STUCK_JAMMED, JAMMED_TIME)
|
|
OR IS_VEHICLE_STUCK_TIMER_UP(HeliToSteal, VEH_STUCK_ON_SIDE, SIDE_TIME)
|
|
OR IS_VEHICLE_STUCK_TIMER_UP(HeliToSteal, VEH_STUCK_ON_ROOF, ROOF_TIME)
|
|
SET_MISSION_FAILED(FAIL_HELI_STUCK)
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Controls the military created by this script
|
|
PROC HANDLE_MILITARY()
|
|
|
|
//Run a check to see if player is inside the military base or not
|
|
IF playerIsInBase = FALSE
|
|
IF IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), AC_MILITARY_BASE)
|
|
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1601.513794,2794.147705,14.842220>>, <<-1587.691650,2806.101318,20.295572>>, 16.000000)
|
|
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1598.278198,2803.979736,17.017721>>, <<-1665.979614,2895.397705,34.589527>>, 14.500000)
|
|
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1648.554199,2873.739990,24.850174>>, <<-1673.864258,2889.697754,38.188564>>, 14.500000)
|
|
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1647.446045,2873.968750,24.823730>>, <<-1667.316284,2914.302002,39.394775>>, 14.500000)
|
|
PRINTSTRING("player is inside base") PRINTNL()
|
|
playerIsInBase = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF playerIsInBase = TRUE
|
|
IF NOT IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), AC_MILITARY_BASE)
|
|
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1601.513794,2794.147705,14.842220>>, <<-1587.691650,2806.101318,20.295572>>, 16.000000)
|
|
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1598.278198,2803.979736,17.017721>>, <<-1665.979614,2895.397705,34.589527>>, 14.500000)
|
|
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1648.554199,2873.739990,24.850174>>, <<-1673.864258,2889.697754,38.188564>>, 14.500000)
|
|
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1647.446045,2873.968750,24.823730>>, <<-1667.316284,2914.302002,39.394775>>, 14.500000)
|
|
PRINTSTRING("player is not inside base") PRINTNL()
|
|
playerIsInBase = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF SetupMilitaryCops = TRUE
|
|
|
|
// //Run this every frame to display blips when the enemypeds shoot.
|
|
// IF missionStage = STAGE_STEAL_CARGOBOB
|
|
// FOR icount = 0 TO 12
|
|
// PRINTSTRING("UPDATE_AI_PED_BLIP for Marine Cop ") PRINTINT(icount) PRINTNL()
|
|
// UPDATE_AI_PED_BLIP(MarineCop[icount], MarineCopBlip[icount])
|
|
// ENDFOR
|
|
// ELSE
|
|
// FOR icount = 0 TO 12
|
|
// CLEANUP_AI_PED_BLIP(MarineCopBlip[icount])
|
|
// ENDFOR
|
|
// ENDIF
|
|
|
|
//Update enemyPedState depending on what the player is doing
|
|
IF playerIsInBase = TRUE
|
|
OR playerSpottedFiringAiming = TRUE
|
|
OR playerWaitedTooLongToLeaveGate = TRUE
|
|
OR AlarmStarted = TRUE
|
|
|
|
// PRINTSTRING("Either playerIsInBase = TRUE or playerSpottedFiringAiming = TRUE or playerWaitedTooLongToLeaveGate = TRUE") PRINTNL()
|
|
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) <> 4
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 4)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
ENDIF
|
|
|
|
FOR icount = 0 TO 12
|
|
IF DOES_ENTITY_EXIST(MarineCop[icount])
|
|
IF NOT IS_PED_INJURED(MarineCop[icount])
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
OR playerIsNearHeli = TRUE
|
|
//Make peds goto the heli if player is near it
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[icount]) < 39
|
|
IF militaryPNHPNTasksGiven[icount] = FALSE
|
|
CLEAR_PED_TASKS(MarineCop[icount])
|
|
SET_PED_SPHERE_DEFENSIVE_AREA(MarineCop[icount], GET_ENTITY_COORDS(MarineCop[icount]), 50)
|
|
TASK_COMBAT_PED(MarineCop[icount], PLAYER_PED_ID())
|
|
SET_PED_COMBAT_ATTRIBUTES(MarineCop[icount], CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(MarineCop[icount], CA_SWITCH_TO_ADVANCE_IF_CANT_FIND_COVER, TRUE)
|
|
militaryPNHPFTasksGiven[icount] = FALSE
|
|
militaryPCRTasksGiven[icount] = FALSE
|
|
militaryPFRTasksGiven[icount] = FALSE
|
|
militaryPNHPNTasksGiven[icount] = TRUE
|
|
// PRINTSTRING("TASK_COMBAT_PED 1 for MarineCop ") PRINTINT(icount) PRINTSTRING(" given.") PRINTNL()
|
|
ENDIF
|
|
ELSE
|
|
IF militaryPNHPFTasksGiven[icount] = FALSE
|
|
CLEAR_PED_TASKS(MarineCop[icount])
|
|
OPEN_SEQUENCE_TASK(seq)
|
|
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, GET_ENTITY_COORDS(HeliToSteal), PEDMOVEBLENDRATIO_RUN, -1, 20)
|
|
TASK_COMBAT_PED(NULL, PLAYER_PED_ID())
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(MarineCop[icount], seq)
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
militaryPCRTasksGiven[icount] = FALSE
|
|
militaryPFRTasksGiven[icount] = FALSE
|
|
militaryPNHPNTasksGiven[icount] = FALSE
|
|
militaryPNHPFTasksGiven[icount] = TRUE
|
|
// PRINTSTRING("TASK_PERFORM_SEQUENCE for MarineCop ") PRINTINT(icount) PRINTSTRING(" given.") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//Set peds tasks dependant on how close they are to the player
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[icount]) < 39
|
|
PRINTSTRING("Distance between MarineCop ") PRINTINT(icount) PRINTSTRING(" and the player is less than 40m's.") PRINTNL()
|
|
IF militaryPCRTasksGiven[icount] = FALSE
|
|
CLEAR_PED_TASKS(MarineCop[icount])
|
|
SET_PED_SPHERE_DEFENSIVE_AREA(MarineCop[icount], GET_ENTITY_COORDS(MarineCop[icount]), 50)
|
|
TASK_COMBAT_PED(MarineCop[icount], PLAYER_PED_ID())
|
|
SET_PED_COMBAT_ATTRIBUTES(MarineCop[icount], CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(MarineCop[icount], CA_SWITCH_TO_ADVANCE_IF_CANT_FIND_COVER, TRUE)
|
|
militaryPNHPFTasksGiven[icount] = FALSE
|
|
militaryPFRTasksGiven[icount] = FALSE
|
|
militaryPNHPNTasksGiven[icount] = FALSE
|
|
militaryPCRTasksGiven[icount] = TRUE
|
|
// PRINTSTRING("TASK_COMBAT_PED 2 for MarineCop ") PRINTINT(icount) PRINTSTRING(" given.") PRINTNL()
|
|
ELSE
|
|
// PRINTSTRING("militaryPCRTasksGiven[") PRINTINT(icount) PRINTSTRING("] = TRUE") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[icount]) > 41
|
|
AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[icount]) < 400
|
|
IF militaryPFRTasksGiven[icount] = FALSE
|
|
iRandomInt = GET_RANDOM_INT_IN_RANGE(0,4)
|
|
CLEAR_PED_TASKS(MarineCop[icount])
|
|
SET_PED_SPHERE_DEFENSIVE_AREA(MarineCop[icount], GET_ENTITY_COORDS(MarineCop[icount]), 50)
|
|
OPEN_SEQUENCE_TASK(seq)
|
|
IF iRandomInt = 0
|
|
TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID(), -1, 25)
|
|
ELIF iRandomInt = 1
|
|
TASK_STAND_STILL(NULL, 500)
|
|
TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID(), -1, 25)
|
|
ELIF iRandomInt = 2
|
|
TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID(), -1, 25, PEDMOVEBLENDRATIO_SPRINT)
|
|
ELIF iRandomInt = 3
|
|
TASK_STAND_STILL(NULL, 500)
|
|
TASK_GO_TO_ENTITY(NULL, PLAYER_PED_ID(), -1, 25, PEDMOVEBLENDRATIO_SPRINT)
|
|
ENDIF
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(MarineCop[icount], seq)
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
militaryPNHPFTasksGiven[icount] = FALSE
|
|
militaryPCRTasksGiven[icount] = FALSE
|
|
militaryPNHPNTasksGiven[icount] = FALSE
|
|
militaryPFRTasksGiven[icount] = TRUE
|
|
// PRINTSTRING("TASK_GO_TO_ENTITY for MarineCop ") PRINTINT(icount) PRINTSTRING(" given.") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
//If player hasn't entered the base yet and is standing outside have the front guards deal with things
|
|
IF playerIsInBase = FALSE
|
|
AND playerSpottedFiringAiming = FALSE
|
|
AND playerWaitedTooLongToLeaveGate = FALSE
|
|
AND AlarmStarted = FALSE
|
|
|
|
FOR iGuard2Count = 0 TO 1
|
|
IF DOES_ENTITY_EXIST(MarineCop[iGuard2Count])
|
|
IF NOT IS_PED_INJURED(MarineCop[iGuard2Count])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(MarineCop[iGuard2Count], PLAYER_PED_ID()) < 25
|
|
IF AimTaskGiven[iGuard2Count] = FALSE
|
|
IF NOT IS_ENTITY_ON_SCREEN(MarineCop[iGuard2Count])
|
|
CLEAR_PED_TASKS_IMMEDIATELY(MarineCop[iGuard2Count])
|
|
ELSE
|
|
CLEAR_PED_TASKS(MarineCop[iGuard2Count])
|
|
ENDIF
|
|
TASK_AIM_GUN_AT_ENTITY(MarineCop[iGuard2Count], PLAYER_PED_ID(), -1)
|
|
AimTaskGiven[iGuard2Count] = TRUE
|
|
ENDIF
|
|
//Set the guards to hostile and start the alarm etc if player takes too long to leave the area
|
|
IF hostileTimerSet = TRUE
|
|
IF GET_GAME_TIMER() > (iBecomeHostileTimer + 20000)
|
|
playerWaitedTooLongToLeaveGate = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(MarineCop[iGuard2Count], PLAYER_PED_ID()) > 30
|
|
IF AimTaskGiven[iGuard2Count] = TRUE
|
|
IF NOT IS_ENTITY_ON_SCREEN(MarineCop[iGuard2Count])
|
|
CLEAR_PED_TASKS_IMMEDIATELY(MarineCop[iGuard2Count])
|
|
ELSE
|
|
CLEAR_PED_TASKS(MarineCop[iGuard2Count])
|
|
ENDIF
|
|
TASK_AIM_GUN_AT_ENTITY(MarineCop[iGuard2Count], PLAYER_PED_ID(), 1)
|
|
AimTaskGiven[iGuard2Count] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
//PROC SETUP_ROCKET_CONTROLLER()
|
|
//
|
|
// IF iRocketControlFlag = 0
|
|
// REQUEST_MODEL(CARGOBOB)
|
|
//
|
|
// WHILE NOT HAS_MODEL_LOADED(CARGOBOB)
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
//
|
|
// testCam = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
|
|
//
|
|
// TestCargoBob = CREATE_VEHICLE(CARGOBOB, <<-1560.2627, 2759.3958, 16.6026>>, 0.2677)
|
|
// iRocketControlFlag = 1
|
|
// ENDIF
|
|
//
|
|
// IF iRocketControlFlag = 1
|
|
//
|
|
// IF IS_BUTTON_JUST_PRESSED(pad1, select)
|
|
// PRINTSTRING("camera offset is ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(TestCargoBob, GET_CAM_COORD(GET_DEBUG_CAM())))
|
|
// ENDIF
|
|
//
|
|
// IF DOES_ENTITY_EXIST(TestCargoBob)
|
|
// IF IS_VEHICLE_DRIVEABLE(TestCargoBob)
|
|
// IF DOES_CAM_EXIST(testCam)
|
|
// ATTACH_CAM_TO_ENTITY(testCam, TestCargoBob, << -1.40739, 4.40528, 0.236747 >>)
|
|
// POINT_CAM_AT_COORD(testCam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TestCargoBob, << -10, 2.25834, -0.21304 >>))
|
|
// SET_CAM_ACTIVE(testCam, TRUE)
|
|
// SET_CAM_FOV(testCam, 50)
|
|
// DISPLAY_RADAR(FALSE)
|
|
// RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
// fCamNewDirectionZCoord = -0.21304
|
|
// fCamNewDirectionYCoord = 2.25834
|
|
// RocketReadyToBeFired = TRUE
|
|
// iRocketControlFlag = 2
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF iRocketControlFlag = 2
|
|
//
|
|
// //MAX_LEFT_LOOK_OFFSET = << -6.18786, -9.44297, 0.50376 >>
|
|
// //MAX_RIGHT_LOOK_OFFSET = << -4.30052, 16.678, 0.636055 >>
|
|
// //MAX_DOWN_LOOK_OFFSET = << -3.00419, 4.14787, -4.62308 >>
|
|
// //MAX_UP_LOOK_OFFSET = << -3.64329, 3.95352, 4.77156 >>
|
|
//
|
|
// //MIDDLE_OFFSET = << -6.17104, 4.20117, 0.285392 >>
|
|
//
|
|
// PRINTSTRING("SHOW_HUD_COMPONENT_THIS_FRAME is being called this frame")
|
|
// SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE)
|
|
//// DISPLAY_SNIPER_SCOPE_THIS_FRAME()
|
|
//
|
|
// // UP AND DOWN CONTROL CAMERA MOVEMENT
|
|
// IF (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_UP_ONLY) AND NOT IS_LOOK_INVERTED())
|
|
// OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_DOWN_ONLY) AND IS_LOOK_INVERTED())
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord + 0.25)
|
|
// ELSE
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord + 0.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_DOWN_ONLY) AND NOT IS_LOOK_INVERTED())
|
|
// OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_UP_ONLY) AND IS_LOOK_INVERTED())
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord - 0.25)
|
|
// ELSE
|
|
// fCamNewDirectionZCoord = (fCamNewDirectionZCoord - 0.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF fCamNewDirectionZCoord > 4.5
|
|
// fCamNewDirectionZCoord = 4.5
|
|
// ENDIF
|
|
// IF fCamNewDirectionZCoord < -4.5
|
|
// fCamNewDirectionZCoord = -4.5
|
|
// ENDIF
|
|
//
|
|
//
|
|
// // LEFT AND RIGHT CONTROL CAMERA MOVEMENT
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_LEFT_ONLY)
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord - 0.75)
|
|
// ELSE
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord - 1.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_RIGHT_ONLY)
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord + 0.75)
|
|
// ELSE
|
|
// fCamNewDirectionYCoord = (fCamNewDirectionYCoord + 1.5)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF fCamNewDirectionYCoord > 30
|
|
// fCamNewDirectionYCoord = 30
|
|
// ENDIF
|
|
// IF fCamNewDirectionYCoord < -30
|
|
// fCamNewDirectionYCoord = -30
|
|
// ENDIF
|
|
//
|
|
// POINT_CAM_AT_COORD(testCam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TestCargoBob, << -10, fCamNewDirectionYCoord, fCamNewDirectionZCoord >>))
|
|
//
|
|
// //Zoom in if aim is pressed.
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
// SET_CAM_FOV(testCam, 37)
|
|
// ELSE
|
|
// SET_CAM_FOV(testCam, 50)
|
|
// ENDIF
|
|
//
|
|
// //Fire rocket if control is pressed/
|
|
// IF RocketReadyToBeFired = TRUE
|
|
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_ATTACK)
|
|
// SHOOT_SINGLE_BULLET_BETWEEN_COORDS(GET_CAM_COORD(testCam), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(TestCargoBob, << -10, fCamNewDirectionYCoord, fCamNewDirectionZCoord >>), 50, FALSE, WEAPONTYPE_RPG)
|
|
// iRocketFired = GET_GAME_TIMER()
|
|
// RocketReadyToBeFired = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF RocketReadyToBeFired = FALSE
|
|
// IF GET_GAME_TIMER() > iRocketFired + 5000
|
|
// RocketReadyToBeFired = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//
|
|
//// SET_CAM_ROT(testCam, <<fCamNewDirectionXCoord,0,fCamNewDirectionZCoord>>)
|
|
//
|
|
// ENDIF
|
|
//ENDPROC
|
|
|
|
|
|
//PURPOSE: Checks to see if the CARGOBOBs are still flyable. If not mission should fail.
|
|
PROC HANDLE_BLIPS_AND_GOD_TEXT()
|
|
|
|
//Handle everything regardless of who the player is.
|
|
// IF DOES_BLIP_EXIST(BuddyBlip)
|
|
// REMOVE_BLIP(BuddyBlip)
|
|
// ENDIF
|
|
// IF DOES_BLIP_EXIST(BlipEnemyHeliPilot[0])
|
|
// REMOVE_BLIP(BlipEnemyHeliPilot[0])
|
|
// ENDIF
|
|
// IF DOES_BLIP_EXIST(BlipEnemyHeliPilot[1])
|
|
// REMOVE_BLIP(BlipEnemyHeliPilot[1])
|
|
// ENDIF
|
|
|
|
IF missionStage = STAGE_END_CUTSCENE
|
|
IF DOES_BLIP_EXIST(HeliToStealBlip)
|
|
REMOVE_BLIP(HeliToStealBlip)
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(HangerBlip)
|
|
REMOVE_BLIP(HangerBlip)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF DOES_BLIP_EXIST(HeliToStealBlip)
|
|
REMOVE_BLIP(HeliToStealBlip)
|
|
ENDIF
|
|
IF doneGetBackInText = TRUE
|
|
IF GET_GAME_TIMER() < (iGetBackinTimer + DEFAULT_GOD_TEXT_TIME)
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
ENDIF
|
|
IF missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF NOT DOES_BLIP_EXIST(HangerBlip)
|
|
HangerBlip = CREATE_BLIP_FOR_COORD(vHanger)
|
|
ENDIF
|
|
IF DoneGetToHangerText = FALSE
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
PRINT_NOW("DP_GOD4", DEFAULT_GOD_TEXT_TIME, 1)//~s~Go to the ~y~hangar.
|
|
iGetTohangerTextTimer = GET_GAME_TIMER()
|
|
DoneGetToHangerText = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
IF NOT DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
EnemyHeliPilotBlip[0] = CREATE_BLIP_FOR_ENTITY(EnemyHeliPilot[0], TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF missionStage <> STAGE_END_CUTSCENE
|
|
IF NOT DOES_BLIP_EXIST(HeliToStealBlip)
|
|
HeliToStealBlip = CREATE_BLIP_FOR_VEHICLE(HeliToSteal)
|
|
// SET_BLIP_SPRITE(HeliToStealBlip, RADAR_TRACE_HELICOPTER)
|
|
ENDIF
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
OR missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF doneGetBackInText = FALSE
|
|
CLEAR_PRINTS()
|
|
PRINT_NOW("DP_GOD6", DEFAULT_GOD_TEXT_TIME, 1)//~s~Get back in the ~b~Cargobob.
|
|
iGetBackinTimer = GET_GAME_TIMER()
|
|
doneGetBackInText = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF DOES_BLIP_EXIST(HangerBlip)
|
|
REMOVE_BLIP(HangerBlip)
|
|
ENDIF
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
ENDIF
|
|
IF missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF DoneGetToHangerText = TRUE
|
|
IF GET_GAME_TIMER() < (iGetTohangerTextTimer + DEFAULT_GOD_TEXT_TIME)
|
|
CLEAR_PRINTS()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_BLIP_EXIST(HeliToStealBlip)
|
|
REMOVE_BLIP(HeliToStealBlip)
|
|
ENDIF
|
|
IF missionCanFail = TRUE
|
|
HeliToStealDestroyed = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_BLIP_EXIST(HeliToStealBlip)
|
|
REMOVE_BLIP(HeliToStealBlip)
|
|
ENDIF
|
|
IF missionCanFail = TRUE
|
|
HeliToStealDestroyed = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE:Deals with the custom camera's for SWITCHing from Franklin to Trevor at close distance < 400m.
|
|
FUNC BOOL SETUP_HOTSWAP_CAM_FROM_MICHAEL_TO_TREVOR_CLOSE()
|
|
|
|
// PRINTSTRING("*********************** SETUP_HOTSWAP_CAM_FROM_FRANKLIN_TO_TREVOR_CLOSE IS BEING CALLED ***********************") PRINTNL()
|
|
VECTOR vGamePlayCamRot = GET_GAMEPLAY_CAM_ROT()
|
|
|
|
IF NOT sCamDetails.bSplineCreated
|
|
|
|
//Create main spline camera
|
|
IF NOT DOES_CAM_EXIST(sCamDetails.camID)
|
|
sCamDetails.camID = CREATE_CAM("DEFAULT_SPLINE_CAMERA", FALSE)
|
|
ENDIF
|
|
SET_CAM_FOV(sCamDetails.camID, SELECTOR_CAM_DEFAULT_FOV)
|
|
|
|
//Create Node Camera's
|
|
IF NOT DOES_CAM_EXIST(NodeCam[0])
|
|
NodeCam[0] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), << 0,0,20>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], PLAYER_PED_ID(), << 0,0,5>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
|
|
//The high point above Trevor
|
|
IF NOT DOES_CAM_EXIST(NodeCam[1])
|
|
NodeCam[1] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
IF IS_PED_IN_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], GET_VEHICLE_PED_IS_IN(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]), <<0.0, 0.0, 25>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<0.0, 0.0, 5>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//Add the nodes in order
|
|
ADD_CAM_SPLINE_NODE(sCamDetails.camID, GET_GAMEPLAY_CAM_COORD(), GET_GAMEPLAY_CAM_ROT(), 0, CAM_SPLINE_NODE_SMOOTH_ROT)//starting with gamecam coords and rotation
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[0], 500, CAM_SPLINE_NODE_SMOOTH_ROT)//5m's above player
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[1], 2000, CAM_SPLINE_NODE_SMOOTH_ROT)//high above player
|
|
ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME(sCamDetails.camID, 500)//Add the final camera node attached to new player model
|
|
|
|
|
|
|
|
sCamDetails.bSplineCreated = TRUE
|
|
sCamDetails.camType = SELECTOR_CAM_DEFAULT
|
|
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[SELECTOR_PED_TREVOR]
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
//PURPOSE:Deals with the custom camera's for SWITCHing from Trevor to Franklin at close distance < 400m.
|
|
FUNC BOOL SETUP_HOTSWAP_CAM_FROM_TREVOR_TO_MICHAEL_CLOSE()
|
|
|
|
// PRINTSTRING("*********************** SETUP_HOTSWAP_CAM_FROM_TREVOR_TO_FRANKLIN_CLOSE IS BEING CALLED ***********************") PRINTNL()
|
|
|
|
VECTOR vGamePlayCamRot = GET_GAMEPLAY_CAM_ROT()
|
|
|
|
IF NOT sCamDetails.bSplineCreated
|
|
|
|
//Create main spline camera
|
|
IF NOT DOES_CAM_EXIST(sCamDetails.camID)
|
|
sCamDetails.camID = CREATE_CAM("DEFAULT_SPLINE_CAMERA", FALSE)
|
|
ENDIF
|
|
SET_CAM_FOV(sCamDetails.camID, SELECTOR_CAM_DEFAULT_FOV)
|
|
|
|
//Create Node Camera's
|
|
IF NOT DOES_CAM_EXIST(NodeCam[0])
|
|
NodeCam[0] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), << 0,0,20>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[0], PLAYER_PED_ID(), << 0,0,5>>)
|
|
SET_CAM_ROT(NodeCam[0], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[0], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
|
|
//The high point above Trevor
|
|
IF NOT DOES_CAM_EXIST(NodeCam[1])
|
|
NodeCam[1] = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", true)
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
IF IS_PED_IN_ANY_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], GET_VEHICLE_PED_IS_IN(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]), <<0.0, 0.0, 25>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ELSE
|
|
ATTACH_CAM_TO_ENTITY(NodeCam[1], sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<0.0, 0.0, 5>>, TRUE)
|
|
SET_CAM_ROT(NodeCam[1], <<-88.5, 0, vGamePlayCamRot.z>>)
|
|
SET_CAM_FOV(NodeCam[1], SELECTOR_CAM_DEFAULT_FOV)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//Add the nodes in order
|
|
ADD_CAM_SPLINE_NODE(sCamDetails.camID, GET_GAMEPLAY_CAM_COORD(), GET_GAMEPLAY_CAM_ROT(), 0, CAM_SPLINE_NODE_SMOOTH_ROT)//starting with gamecam coords and rotation
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[0], 500, CAM_SPLINE_NODE_SMOOTH_ROT)//5m's above player
|
|
ADD_CAM_SPLINE_NODE_USING_CAMERA(sCamDetails.camID, NodeCam[1], 2000, CAM_SPLINE_NODE_SMOOTH_ROT)//high above player
|
|
ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME(sCamDetails.camID, 500)//Add the final camera node attached to new player model
|
|
|
|
|
|
sCamDetails.bSplineCreated = TRUE
|
|
sCamDetails.camType = SELECTOR_CAM_DEFAULT
|
|
|
|
sCamDetails.pedTo = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]
|
|
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
////PURPOSE: Handles all the help text for using the Hunter. Should only be called when the player is using the Hunter.
|
|
//PROC HANDLE_HUNTER_HELP_TEXT()
|
|
//
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF DOES_ENTITY_EXIST(BuddyHeli)
|
|
// IF IS_VEHICLE_DRIVEABLE(BuddyHeli)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), BuddyHeli)
|
|
// IF DoneHelp1 = FALSE
|
|
// PRINT_HELP("DP_HELP2")
|
|
// //Hold ~INPUT_VEH_ACCELERATE~ to fly up.
|
|
// DoneHelp1 = TRUE
|
|
// ELSE
|
|
// IF DoneHelp2 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP3")
|
|
// //Hold ~INPUT_VEH_BRAKE~ to fly down.
|
|
// DoneHelp2 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP3")
|
|
// //Hold ~INPUT_VEH_BRAKE~ to fly down.
|
|
// DoneHelp2 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp3 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP4")
|
|
// //Hold ~INPUT_VEH_FLY_YAW_LEFT~ to yaw left.
|
|
// DoneHelp3 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP4")
|
|
// //Hold ~INPUT_VEH_FLY_YAW_LEFT~ to yaw left.
|
|
// DoneHelp3 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp4 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_YAW_LEFT)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP5")
|
|
// //Hold ~INPUT_VEH_FLY_YAW_RIGHT~ to yaw right.
|
|
// DoneHelp4 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP5")
|
|
// //Hold ~INPUT_VEH_FLY_YAW_RIGHT~ to yaw right.
|
|
// DoneHelp4 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp5 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_YAW_RIGHT)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP7")
|
|
// //Hold ~INPUT_VEH_FLY_PITCH_UD~ to move forward/backward.
|
|
// DoneHelp5 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP7")
|
|
// //Hold ~INPUT_VEH_FLY_PITCH_UD~ to move forward/backward.
|
|
// DoneHelp5 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp6 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_PITCH_UD)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP1")
|
|
// //Press ~INPUT_JUMP~ to toggle weapon.
|
|
// DoneHelp6 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP1")
|
|
// //Press ~INPUT_JUMP~ to toggle weapon.
|
|
// DoneHelp6 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp7 = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_JUMP)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP6")
|
|
// //Press ~INPUT_VEH_FLY_ATTACK~ to fire weapon.
|
|
// DoneHelp7 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP6")
|
|
// //Press ~INPUT_VEH_FLY_ATTACK~ to fire weapon.
|
|
// DoneHelp7 = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DoneHelp8 = FALSE
|
|
// GET_CURRENT_PED_VEHICLE_WEAPON(PLAYER_PED_ID(), PlayerVehicleWeapon)
|
|
// IF PlayerVehicleWeapon = WEAPONTYPE_VEHICLE_SPACE_ROCKET
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_ATTACK)
|
|
// CLEAR_HELP()
|
|
// PRINT_HELP("DP_HELP8")
|
|
// //Press ~INPUT_VEH_FLY_SELECT_TARGET_LEFT~ or ~INPUT_VEH_FLY_SELECT_TARGET_RIGHT~ to switch targets when using rockets.
|
|
// DoneHelp8 = TRUE
|
|
// ENDIF
|
|
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// PRINT_HELP("DP_HELP8")
|
|
// //Press ~INPUT_VEH_FLY_SELECT_TARGET_LEFT~ or ~INPUT_VEH_FLY_SELECT_TARGET_RIGHT~ to switch targets when using rockets.
|
|
// DoneHelp8 = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF ClearedFinalHelp = FALSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// AND IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_SELECT_TARGET_LEFT)
|
|
// OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_FLY_SELECT_TARGET_RIGHT)
|
|
// CLEAR_HELP()
|
|
// ClearedFinalHelp = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_HELP()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_HELP()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_HELP()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
// CLEAR_HELP()
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
PROC HANDLE_ARMY_JETS()
|
|
|
|
ArmyJet1 = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 300, LAZER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
|
|
ArmyJet2 = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 300, LAZER, VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES|VEHICLE_SEARCH_FLAG_RETURN_PLANES_ONLY)
|
|
|
|
IF DOES_ENTITY_EXIST(ArmyJet1)
|
|
AND IS_ENTITY_IN_AIR(ArmyJet1)
|
|
IF NOT DOES_BLIP_EXIST(ArmyJet1Blip)
|
|
ArmyJet1Blip = ADD_BLIP_FOR_ENTITY(ArmyJet1)
|
|
SET_BLIP_AS_FRIENDLY(ArmyJet1Blip, FALSE)
|
|
PRINTSTRING("plane 1 blipped")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(ArmyJet2)
|
|
AND IS_ENTITY_IN_AIR(ArmyJet2)
|
|
IF NOT DOES_BLIP_EXIST(ArmyJet2Blip)
|
|
ArmyJet2Blip = ADD_BLIP_FOR_ENTITY(ArmyJet2)
|
|
SET_BLIP_AS_FRIENDLY(ArmyJet2Blip, FALSE)
|
|
PRINTSTRING("plane 2 blipped")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Handles spawning of enemy helicopters.
|
|
PROC HANDLE_ENEMY_CHOPPERS()
|
|
|
|
//Update enemyhelistate depending on what the player is doing
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), EnemyHeliPilot[0]) < 600
|
|
|
|
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-75.8, -819.9, 326>>) > 1600
|
|
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-2159, 3067, 33>>) < 1000
|
|
//Check players height if in heli.
|
|
IF vPlayerCoords.z > 70
|
|
IF EnemyHeliState <> ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH
|
|
ENDIF
|
|
ELSE
|
|
IF EnemyHeliState <> ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW
|
|
ENDIF
|
|
ENDIF
|
|
IF doneChat53 = TRUE
|
|
IF doneChat54 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, NULL, "PilotDispatch")
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 5, NULL, "PilotDispatch2")
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT54", CONV_PRIORITY_MEDIUM)
|
|
//Zancudu One to base, enemy has strayed from the met area, requesting permission to engage.
|
|
//Base to Zancudu One, permission granted. Light up that son of a bitch.
|
|
//Roger that. He's going down.
|
|
doneChat54 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-75.8, -819.9, 326>>) < 1600
|
|
IF EnemyHeliState <> ENEMY_HELI_BACK_OFF_PLAYER
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER player has entered city air space") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER
|
|
ENDIF
|
|
IF doneChat53 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, NULL, "PilotDispatch")
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 5, NULL, "PilotDispatch2")
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT53", CONV_PRIORITY_MEDIUM)
|
|
//Zancudu One to base, enemy's entered met area airspace. Awaiting instructions.
|
|
//Base to Zancudu One, do not engage in met area airspace. Hold for orders. Over.
|
|
//Roger that.
|
|
doneChat53 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//If player is further than 1000metres away from the base then slow the enemy heli down so player can get away from it.
|
|
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-2159, 3067, 33>>) > 1000
|
|
IF EnemyHeliState <> ENEMY_HELI_BACK_OFF_PLAYER
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER player is further than 1000m from army base") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF EnemyHeliState <> ENEMY_HELI_FLEE
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_FLEE") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_FLEE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-75.8, -819.9, 326>>) > 1600
|
|
//Set enemy heli task to attack player on ground if out vehicle
|
|
IF EnemyHeliState <> ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT
|
|
ENDIF
|
|
IF doneChat53 = TRUE
|
|
IF doneChat54 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, NULL, "PilotDispatch")
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 5, NULL, "PilotDispatch2")
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT54", CONV_PRIORITY_MEDIUM)
|
|
//Zancudu One to base, enemy has strayed from the met area, requesting permission to engage.
|
|
//Base to Zancudu One, permission granted. Light up that son of a bitch.
|
|
//Roger that. He's going down.
|
|
doneChat54 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF EnemyHeliState <> ENEMY_HELI_BACK_OFF_PLAYER
|
|
TaskNeedsUpdated[0] = TRUE
|
|
PRINTSTRING("EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER") PRINTNL()
|
|
EnemyHeliState = ENEMY_HELI_BACK_OFF_PLAYER
|
|
ENDIF
|
|
IF doneChat53 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 4, NULL, "PilotDispatch")
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 5, NULL, "PilotDispatch2")
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT53", CONV_PRIORITY_MEDIUM)
|
|
//Zancudu One to base, enemy's entered met area airspace. Awaiting instructions.
|
|
//Base to Zancudu One, do not engage in met area airspace. Hold for orders. Over.
|
|
//Roger that.
|
|
doneChat53 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[2])
|
|
// IF IS_VEHICLE_DRIVEABLE(g_sTriggerSceneAssets.veh[2])
|
|
// SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[2], TRUE, TRUE)
|
|
// EnemyHeli[1] = g_sTriggerSceneAssets.veh[2]
|
|
// SET_VEHICLE_CAN_BE_TARGETTED(EnemyHeli[1], TRUE)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[1], TRUE)
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[1], FALSE)
|
|
// ADD_ENTITY_TO_AUDIO_MIX_GROUP(EnemyHeli[1], "DH_P_2B_ENEMY_CHOPPERS")
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
//Give the pilots their relevant tasks dependant on which stage of the mission player is in.
|
|
IF EnemyHeliPilotTaskGiven[0] = FALSE
|
|
//Tell him to attack any enemies around his area and set up his defensive zone around his heli.
|
|
IF missionStage = STAGE_STEAL_CARGOBOB
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), EnemyHeliPilot[0]) < 200
|
|
vEnemyHeli0Coords = GET_ENTITY_COORDS(EnemyHeli[0])
|
|
CLEAR_PED_TASKS(EnemyHeliPilot[0])
|
|
SET_PED_SPHERE_DEFENSIVE_AREA(EnemyHeliPilot[0], vEnemyHeli0Coords, 10)
|
|
TASK_COMBAT_HATED_TARGETS_AROUND_PED(EnemyHeliPilot[0], 250)
|
|
EnemyHeliPilotTaskGiven[0] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//Tell him to get in heli and attack now
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF NOT DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
EnemyHeliPilotBlip[0] = CREATE_BLIP_FOR_ENTITY(EnemyHeliPilot[0], TRUE)
|
|
ENDIF
|
|
vEnemyHeli0Coords = GET_ENTITY_COORDS(EnemyHeli[0])
|
|
CLEAR_PED_TASKS(EnemyHeliPilot[0])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(EnemyHeliPilot[0], TRUE)
|
|
OPEN_SEQUENCE_TASK(seq)
|
|
IF NOT IS_PED_IN_VEHICLE(EnemyHeliPilot[0],EnemyHeli[0])
|
|
TASK_ENTER_VEHICLE(NULL, EnemyHeli[0])
|
|
ENDIF
|
|
TASK_HELI_MISSION(NULL, EnemyHeli[0], NULL, NULL, <<vEnemyHeli0Coords.x,vEnemyHeli0Coords.y, (vEnemyHeli0Coords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 170, 40)
|
|
TASK_HELI_MISSION(NULL, EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 20, -1, 170, 40)
|
|
CLOSE_SEQUENCE_TASK(seq)
|
|
TASK_PERFORM_SEQUENCE(EnemyHeliPilot[0], seq)
|
|
CLEAR_SEQUENCE_TASK(seq)
|
|
EnemyHeliPilotTaskGiven[0] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//Set the heli's weapon to rockets once pilot is inside.
|
|
IF missionStage = STAGE_ESCAPE_MILITARY
|
|
|
|
//Control the enemy pilots accuracy and shooting pattern
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF IS_PED_IN_VEHICLE(EnemyHeliPilot[0],EnemyHeli[0])
|
|
//Allow for 90 seconds before upping the accuracy
|
|
IF GET_GAME_TIMER() > (iEnemyPilotAccuracyTimer + 90000)
|
|
IF Accuracy100 = FALSE
|
|
SET_PED_ACCURACY(EnemyHeliPilot[0], 100)
|
|
Accuracy0 = FALSE
|
|
Accuracy100 = TRUE
|
|
ENDIF
|
|
ELSE
|
|
//Set the enemy heli accuracy to 100 if player gets out the cargobob/
|
|
IF GET_GAME_TIMER() > (iEnemyPilotAccuracyTimer + 10000)
|
|
AND NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF Accuracy100 = FALSE
|
|
SET_PED_ACCURACY(EnemyHeliPilot[0], 100)
|
|
Accuracy0 = FALSE
|
|
Accuracy100 = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF Accuracy0 = FALSE
|
|
SET_PED_ACCURACY(EnemyHeliPilot[0], 0)
|
|
Accuracy100 = FALSE
|
|
Accuracy0 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//Only allow pilot to fire if less than 300metres away
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(EnemyHeli[0], PLAYER_PED_ID()) < 300
|
|
IF FiringTypeRocket = FALSE
|
|
SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[0], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
SET_PED_FIRING_PATTERN(EnemyHeliPilot[0], FIRING_PATTERN_BURST_FIRE_HELI)
|
|
FiringTypeBullet = FALSE
|
|
FiringTypeRocket = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF FiringTypeBullet = FALSE
|
|
SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[0], WEAPONTYPE_VEHICLE_PLAYER_BUZZARD)
|
|
SET_PED_FIRING_PATTERN(EnemyHeliPilot[0], FIRING_PATTERN_SINGLE_SHOT)
|
|
FiringTypeRocket = FALSE
|
|
FiringTypeBullet = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF Heli0RocketsEquipped = FALSE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF IS_PED_IN_VEHICLE(EnemyHeliPilot[0],EnemyHeli[0])
|
|
SET_PED_ACCURACY(EnemyHeliPilot[0], 0)
|
|
SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[0], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
Heli0RocketsEquipped = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SWITCH EnemyHeliState
|
|
CASE ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT
|
|
IF TaskNeedsUpdated[0] = TRUE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 20, 20, -1, 15, 10)
|
|
TaskNeedsUpdated[0] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW
|
|
IF TaskNeedsUpdated[0] = TRUE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 20, -1, 50, 20)
|
|
TaskNeedsUpdated[0] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH
|
|
IF TaskNeedsUpdated[0] = TRUE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 20, -1, 170, 70)
|
|
TaskNeedsUpdated[0] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE ENEMY_HELI_BACK_OFF_PLAYER
|
|
IF TaskNeedsUpdated[0] = TRUE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, NULL, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(EnemyHeli[0], <<20,0,0>>), MISSION_GOTO, 10, 10, GET_ENTITY_HEADING(EnemyHeli[0]), ROUND(GET_ENTITY_HEIGHT(EnemyHeli[0], GET_ENTITY_COORDS(EnemyHeli[0]), TRUE, TRUE)) , 100)
|
|
TaskNeedsUpdated[0] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//Slow down the heli if player is further than 1000m from the army base
|
|
IF TaskToSlowDownGiven = FALSE
|
|
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, <<-2159, 3067, 33>>) > 1000
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 20, 20, -1, 170, 70)
|
|
TaskToSlowDownGiven = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE ENEMY_HELI_FLEE
|
|
IF TaskNeedsUpdated[0] = TRUE
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_FLEE, 40, 50, -1, 200, 170)
|
|
TaskNeedsUpdated[0] = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// IF EnemyHeliPilotTaskGiven[1] = FALSE
|
|
// //Tell him to attack any enemies around his area and set up his defensive zone around his heli.
|
|
// IF missionStage = STAGE_STEAL_CARGOBOB
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// vEnemyHeli1Coords = GET_ENTITY_COORDS(EnemyHeli[1])
|
|
// CLEAR_PED_TASKS(EnemyHeliPilot[1])
|
|
// SET_PED_SPHERE_DEFENSIVE_AREA(EnemyHeliPilot[1], vEnemyHeli1Coords, 10)
|
|
// TASK_COMBAT_HATED_TARGETS_AROUND_PED(EnemyHeliPilot[1], 1000)
|
|
// EnemyHeliPilotTaskGiven[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Tell him to get in heli and attack now
|
|
// IF missionStage = STAGE_ESCAPE_MILITARY
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// IF NOT DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// EnemyHeliPilotBlip[1] = CREATE_BLIP_FOR_ENTITY(EnemyHeliPilot[1], TRUE)
|
|
// ENDIF
|
|
// vEnemyHeli1Coords = GET_ENTITY_COORDS(EnemyHeli[1])
|
|
// CLEAR_PED_TASKS(EnemyHeliPilot[1])
|
|
// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(EnemyHeliPilot[1], TRUE)
|
|
// OPEN_SEQUENCE_TASK(seq)
|
|
// IF NOT IS_PED_IN_VEHICLE(EnemyHeliPilot[1],EnemyHeli[1])
|
|
// TASK_ENTER_VEHICLE(NULL, EnemyHeli[1])
|
|
// ENDIF
|
|
// TASK_HELI_MISSION(NULL, EnemyHeli[1], NULL, NULL, <<vEnemyHeli1Coords.x,vEnemyHeli1Coords.y, (vEnemyHeli1Coords.z + 20)>>, MISSION_GOTO, 30, 10, -1, 170, 40)
|
|
// TASK_HELI_MISSION(NULL, EnemyHeli[1], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 45, -1, 190, 60)
|
|
// CLOSE_SEQUENCE_TASK(seq)
|
|
// TASK_PERFORM_SEQUENCE(EnemyHeliPilot[1], seq)
|
|
// CLEAR_SEQUENCE_TASK(seq)
|
|
// EnemyHeliPilotTaskGiven[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Set the heli's weapon to rockets once pilot is inside.
|
|
// IF missionStage = STAGE_ESCAPE_MILITARY
|
|
//
|
|
// IF Heli1RocketsEquipped = FALSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// IF IS_PED_IN_VEHICLE(EnemyHeliPilot[1],EnemyHeli[1])
|
|
// SET_PED_ACCURACY(EnemyHeliPilot[1], 0)
|
|
// SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[1], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
// Heli1RocketsEquipped = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// SWITCH EnemyHeliState
|
|
// CASE ENEMY_HELI_ATTACK_PLAYER_PED_ON_FOOT
|
|
// IF TaskNeedsUpdated[1] = TRUE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[1], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 20, 30, -1, 15, 10)
|
|
// TaskNeedsUpdated[1] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE ENEMY_HELI_ATTACK_PLAYER_VEHICLE_LOW
|
|
// IF TaskNeedsUpdated[1] = TRUE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[1], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 30, -1, 50, 20)
|
|
// TaskNeedsUpdated[1] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE ENEMY_HELI_ATTACK_PLAYER_VEHICLE_HIGH
|
|
// IF TaskNeedsUpdated[1] = TRUE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[1], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 40, 30, -1, 170, 70)
|
|
// TaskNeedsUpdated[1] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE ENEMY_HELI_BACK_OFF_PLAYER
|
|
// IF TaskNeedsUpdated[1] = TRUE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_FOLLOW, 40, 70, -1, 220, 200)
|
|
// TaskNeedsUpdated[1] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// ENDSWITCH
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
//Run checks to see if the pilots or heli's have been destroyed, to be used for moving stage on to final stage.
|
|
// If the pilot is dead
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
//If the heli is destroyed
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF NOT IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
//Or if the player is more than 500ms from the heli
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF IS_PED_IN_VEHICLE(EnemyHeliPilot[0], EnemyHeli[0])
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
SET_BLIP_SCALE(EnemyHeliPilotBlip[0], 1)
|
|
ENDIF
|
|
ENDIF
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), EnemyHeliPilot[0]) > 600
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
IF IS_ENTITY_IN_WATER(EnemyHeliPilot[0])
|
|
CLEAR_PED_TASKS(EnemyHeliPilot[0])
|
|
SET_ENTITY_HEALTH(EnemyHeliPilot[0], 0)
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
EnemyHeliDown[0] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// REMOVE_BLIP(EnemyHeliPilotBlip[1])
|
|
// ENDIF
|
|
// EnemyHeliDown[1] = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// REMOVE_BLIP(EnemyHeliPilotBlip[1])
|
|
// ENDIF
|
|
// EnemyHeliDown[1] = TRUE
|
|
// ENDIF
|
|
// IF DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// REMOVE_BLIP(EnemyHeliPilotBlip[1])
|
|
// ENDIF
|
|
// EnemyHeliDown[1] = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[1])
|
|
// REMOVE_BLIP(EnemyHeliPilotBlip[1])
|
|
// ENDIF
|
|
// EnemyHeliDown[1] = TRUE
|
|
// ENDIF
|
|
|
|
|
|
|
|
// //Do not create any enemy choppers until Michael has taken off in the Cargobob.
|
|
// IF AllowEnemyHelisToSpawn = FALSE
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// AllowEnemyHelisToSpawn = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
// IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
// AllowEnemyHelisToSpawn = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Control for spawning in enemies. Stop spawning them once the Cargobob has got close enough to the hanger.
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HeliToSteal), vHanger) < 1500
|
|
// HeliToCloseToHome = TRUE
|
|
// ELSE
|
|
// HeliToCloseToHome = FALSE
|
|
// ENDIF
|
|
// //Control police wanted level
|
|
// IF WantedLevel4Set = FALSE
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HeliToSteal), vHanger) > 2200
|
|
// SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 4)
|
|
// SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
// WantedLevel2Set = FALSE
|
|
// WantedLevel3Set = FALSE
|
|
// WantedLevel4Set = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF WantedLevel3Set = FALSE
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HeliToSteal), vHanger) < 2200
|
|
// AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HeliToSteal), vHanger) > 1800
|
|
// SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 3)
|
|
// SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
// WantedLevel2Set = FALSE
|
|
// WantedLevel4Set = FALSE
|
|
// WantedLevel3Set = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF WantedLevel2Set = FALSE
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HeliToSteal), vHanger) < 1800
|
|
// SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 2)
|
|
// SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
// WantedLevel3Set = FALSE
|
|
// WantedLevel4Set = FALSE
|
|
// WantedLevel2Set = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// vplayersCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
//
|
|
// //Create an enemy heli if there is less than 2 alive
|
|
// IF AllowEnemyHelisToSpawn = TRUE
|
|
// PRINTSTRING("AllowEnemyHelisToSpawn = TRUE") PRINTNL()
|
|
// IF HeliToCloseToHome = FALSE
|
|
// //Create 2 BUZZARD helis with pilots and give them their tasks.
|
|
// //Heli 1
|
|
// IF EnemyHeliCreated[0] = FALSE
|
|
// // PRINTSTRING("EnemyHeliCreated[0] = FALSE") PRINTNL()
|
|
// REQUEST_MODEL(BUZZARD)
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
// IF HAS_MODEL_LOADED(BUZZARD)
|
|
// EnemyHeli[0] = CREATE_VEHICLE(BUZZARD, << (vplayersCoords.x + 800), 2685, 200 >>, 91.9264)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[0], TRUE)
|
|
// SET_HELI_BLADES_FULL_SPEED(EnemyHeli[0])
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[0], TRUE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(BUZZARD)
|
|
// EnemyHeliCreated[0] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// // PRINTSTRING("EnemyHeliCreated[0] = TRUE") PRINTNL()
|
|
// REQUEST_MODEL(S_M_M_PILOT_01)
|
|
// IF EnemyHeliPilotCreated[0] = FALSE
|
|
// PRINTSTRING("EnemyHeliPilotCreated[0] = FALSE") PRINTNL()
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// IF HAS_MODEL_LOADED(S_M_M_PILOT_01)
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// EnemyHeliPilot[0] = CREATE_PED_INSIDE_VEHICLE(EnemyHeli[0], PEDTYPE_MISSION, S_M_M_PILOT_01)
|
|
// SET_PED_ACCURACY(EnemyHeliPilot[0], 5)
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[0], FALSE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_PILOT_01)
|
|
// EnemyHeliPilotCreated[0] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// // PRINTSTRING("EnemyHeliPilotCreated[0] = TRUE") PRINTNL()
|
|
// IF EnemyHeliTaskGiven[0] = FALSE
|
|
// PRINTSTRING("EnemyHeliTaskGiven[0] = FALSE") PRINTNL()
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[0], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 30, 20, -1, 170, 40)
|
|
// EnemyHeliTaskGiven[0] = TRUE
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[0], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[0], EnemyHeli[0], NULL, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<0,0,0>>, MISSION_ATTACK, 30, 20, -1, 170, 40)
|
|
// EnemyHeliTaskGiven[0] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotKilled[0] = TRUE
|
|
// ENDIF
|
|
// IF IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotKilled[0] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Heli 2
|
|
// IF EnemyHeliCreated[1] = FALSE
|
|
// REQUEST_MODEL(BUZZARD)
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// IF HAS_MODEL_LOADED(BUZZARD)
|
|
// EnemyHeli[1] = CREATE_VEHICLE(BUZZARD, << (vplayersCoords.x + 900), 2685, 200 >>, 91.9264)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[1], TRUE)
|
|
// SET_HELI_BLADES_FULL_SPEED(EnemyHeli[1])
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[1], TRUE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(BUZZARD)
|
|
// EnemyHeliCreated[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF EnemyHeliPilotCreated[1] = FALSE
|
|
// REQUEST_MODEL(S_M_M_PILOT_01)
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF HAS_MODEL_LOADED(S_M_M_PILOT_01)
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// EnemyHeliPilot[1] = CREATE_PED_INSIDE_VEHICLE(EnemyHeli[1], PEDTYPE_MISSION, S_M_M_PILOT_01)
|
|
// SET_PED_ACCURACY(EnemyHeliPilot[1], 5)
|
|
// FREEZE_ENTITY_POSITION(EnemyHeli[1], FALSE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_PILOT_01)
|
|
// EnemyHeliPilotCreated[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// IF EnemyHeliTaskGiven[1] = FALSE
|
|
// IF IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[1], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[1], NULL, PLAYER_PED_ID(), <<0,0,0>>, MISSION_ATTACK, 30, 35, -1, 180, 60)
|
|
// EnemyHeliTaskGiven[1] = TRUE
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_CURRENT_PED_VEHICLE_WEAPON(EnemyHeliPilot[1], WEAPONTYPE_VEHICLE_SPACE_ROCKET)
|
|
// TASK_HELI_MISSION(EnemyHeliPilot[1], EnemyHeli[1], NULL, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<0,0,0>>, MISSION_ATTACK, 30, 35, -1, 180, 60)
|
|
// EnemyHeliTaskGiven[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Control for creating new heli's. if one is destroyed another should be created in it's place.
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
// EnemyHeliCreated[0] = FALSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// SET_ENTITY_HEALTH(EnemyHeliPilot[0], 0)
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(EnemyHeli[0])
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// SET_ENTITY_HEALTH(EnemyHeliPilot[0], 0)
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// SET_VEHICLE_AS_NO_LONGER_NEEDED(EnemyHeli[0])
|
|
// EnemyHeliCreated[0] = FALSE
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// IF NOT IS_PED_IN_VEHICLE(EnemyHeliPilot[0], EnemyHeli[0])
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotCreated[0] = FALSE
|
|
// EnemyHeliTaskGiven[0] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeli[1])
|
|
// EnemyHeliCreated[1] = FALSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// SET_ENTITY_HEALTH(EnemyHeliPilot[1], 0)
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF NOT IS_VEHICLE_DRIVEABLE(EnemyHeli[1])
|
|
// EnemyHeliCreated[1] = FALSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// SET_ENTITY_HEALTH(EnemyHeliPilot[1], 0)
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// SET_VEHICLE_AS_NO_LONGER_NEEDED(EnemyHeli[1])
|
|
// EnemyHeliCreated[1] = FALSE
|
|
// ELSE
|
|
// IF DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// IF NOT IS_PED_IN_VEHICLE(EnemyHeliPilot[1], EnemyHeli[1])
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// ELSE
|
|
// SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotCreated[1] = FALSE
|
|
// EnemyHeliTaskGiven[1] = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
//// PRINTSTRING("HeliToCloseToHome = TRUE") PRINTNL()
|
|
// //Check for both pilots being killed for moving stage on
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotKilled[0] = TRUE
|
|
// ELSE
|
|
// IF IS_PED_INJURED(EnemyHeliPilot[0])
|
|
// EnemyHeliPilotKilled[0] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// IF NOT DOES_ENTITY_EXIST(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotKilled[1] = TRUE
|
|
// ELSE
|
|
// IF IS_PED_INJURED(EnemyHeliPilot[1])
|
|
// EnemyHeliPilotKilled[1] = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
// ELSE
|
|
// PRINTSTRING("AllowEnemyHelisToSpawn = FALSE") PRINTNL()
|
|
// ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Handles anything else that needs to be called every frame through out the mission
|
|
PROC MISC_CHECK()
|
|
|
|
//Disable the hook on the cargobob
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF IS_PED_SITTING_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF GET_PED_VEHICLE_SEAT(PLAYER_PED_ID(), HeliToSteal) = VS_DRIVER
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_FLY_ATTACK)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Runs a check if the player is in the Military base then keeps the wanted level on all the time
|
|
PROC POLICE_CHECK()
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
//Don't allow the player to lose their wanted level until last stage.
|
|
IF missionStage = STAGE_STEAL_CARGOBOB
|
|
OR missionStage = STAGE_ESCAPE_MILITARY
|
|
IF IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), AC_MILITARY_BASE, 200)
|
|
OR AlarmStarted = TRUE
|
|
REPORT_POLICE_SPOTTED_PLAYER(PLAYER_ID())
|
|
SUPPRESS_LOSING_WANTED_LEVEL_IF_HIDDEN_THIS_FRAME(PLAYER_ID())
|
|
ENDIF
|
|
ENDIF
|
|
IF missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) <> 0
|
|
AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vHeliCoords) > 1000
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
// ===========================================================================================================
|
|
// MAIN MISSION STAGES
|
|
// ===========================================================================================================
|
|
|
|
PROC DO_STAGE_OPENING_CUTSCENE()
|
|
|
|
//No cutscene at the moment so skip to next stage
|
|
IF NOT IS_REPLAY_IN_PROGRESS()
|
|
//DO OPENING CUTSCENE
|
|
IF iControlFlag = 0
|
|
//
|
|
// //Create Michael if player started mission as Trevor
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, <<1723.2087, 3296.8179, 40.2235>>, 247.3402)
|
|
// PRINTSTRING("Waiting for Michael being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// WHILE NOT CREATE_PLAYER_VEHICLE(buddyCar, CHAR_MICHAEL, vBuddyCarCoords, fBuddyCarHeading)
|
|
// PRINTSTRING("Waiting for Michaels car being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// SET_VEHICLE_ON_GROUND_PROPERLY(buddyCar)
|
|
// SET_VEHICLE_COLOURS(buddyCar, 0, 0)
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// TASK_GO_TO_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL],PLAYER_PED_ID(), -1, DEFAULT_SEEK_RADIUS, PEDMOVEBLENDRATIO_WALK)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 100)
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ANCHOR_EARS, 0,0)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
|
|
// ENDIF
|
|
//
|
|
// IF NOT DOES_BLIP_EXIST(BuddyBlip)
|
|
// BuddyBlip = CREATE_BLIP_FOR_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// ENDIF
|
|
//
|
|
// PRINT_NOW("DP_GOD5", DEFAULT_GOD_TEXT_TIME, 1)//Speak to ~b~Michael.
|
|
//
|
|
// iControlFlag = 1
|
|
// ENDIF
|
|
//
|
|
// //Create Trevor if player started mission as Michael
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// WHILE NOT CREATE_PLAYER_PED_ON_FOOT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, <<1723.2087, 3296.8179, 40.2235>>, 247.3402)
|
|
// PRINTSTRING("Waiting for Trevor being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// WHILE NOT CREATE_PLAYER_VEHICLE(buddyCar, CHAR_TREVOR, vBuddyCarCoords, fBuddyCarHeading)
|
|
// PRINTSTRING("Waiting for Trevors car being spawned") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_PED_PROP_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], ANCHOR_EARS, 0,0)
|
|
// SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], RELGROUPHASH_PLAYER)
|
|
// SET_ENTITY_PROOFS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE, FALSE, TRUE, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_MICROSMG, 2000, FALSE, FALSE)
|
|
// GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], WEAPONTYPE_CARBINERIFLE, 2000, FALSE, FALSE)
|
|
// TASK_GO_TO_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR],PLAYER_PED_ID(), -1, DEFAULT_SEEK_RADIUS, PEDMOVEBLENDRATIO_WALK)
|
|
// SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 100)
|
|
// SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE)
|
|
// ENDIF
|
|
// IF NOT DOES_BLIP_EXIST(BuddyBlip)
|
|
// BuddyBlip = CREATE_BLIP_FOR_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// ENDIF
|
|
//
|
|
// PRINT_NOW("DP_GOD6", DEFAULT_GOD_TEXT_TIME, 1)//Speak to ~b~Trevor.
|
|
//
|
|
// iControlFlag = 1
|
|
// ENDIF
|
|
//
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF iControlFlag = 1
|
|
//
|
|
// IF NOT IS_SCREEN_FADED_IN()
|
|
// DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
// ENDIF
|
|
//
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_PED_ID()) < 5
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_GROUP_ID())
|
|
// IF DOES_BLIP_EXIST(BuddyBlip)
|
|
// REMOVE_BLIP(BuddyBlip)
|
|
// ENDIF
|
|
// iControlFlag = 2
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF GET_DISTANCE_BETWEEN_ENTITIES(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_PED_ID()) < 5
|
|
// CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// SET_PED_AS_GROUP_MEMBER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PLAYER_GROUP_ID())
|
|
// IF DOES_BLIP_EXIST(BuddyBlip)
|
|
// REMOVE_BLIP(BuddyBlip)
|
|
// ENDIF
|
|
// iControlFlag = 2
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
|
|
missionStage = STAGE_INIT_MISSION
|
|
ENDIF
|
|
ELSE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_INIT_MISSION
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC DO_STAGE_INIT_MISSION()
|
|
|
|
IF iControlFlag = 0
|
|
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE, FALSE)
|
|
ALLOW_DISPATCH(DT_POLICE_HELICOPTER, FALSE)
|
|
ALLOW_DISPATCH(DT_POLICE_VEHICLE_REQUEST, FALSE)
|
|
ALLOW_DISPATCH(DT_POLICE_ROAD_BLOCK, FALSE)
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER, FALSE)
|
|
ALLOW_DISPATCH(DT_POLICE_AUTOMOBILE_WAIT_CRUISING, FALSE)
|
|
ALLOW_DISPATCH(DT_SWAT_AUTOMOBILE, FALSE)
|
|
ALLOW_DISPATCH(DT_SWAT_HELICOPTER, FALSE)
|
|
|
|
ADD_RELATIONSHIP_GROUP("MarineGroupHash", MARINE_GROUP_HASH)
|
|
|
|
//Have the marine group and army group both hate the player group
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, MARINE_GROUP_HASH, RELGROUPHASH_PLAYER)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, RELGROUPHASH_AMBIENT_ARMY, RELGROUPHASH_PLAYER)
|
|
|
|
//Have the marine, army and cop groups all like each other
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, MARINE_GROUP_HASH, RELGROUPHASH_AMBIENT_ARMY)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_AMBIENT_ARMY, MARINE_GROUP_HASH)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_COP, MARINE_GROUP_HASH)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, MARINE_GROUP_HASH, RELGROUPHASH_COP)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_COP, RELGROUPHASH_AMBIENT_ARMY)
|
|
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_AMBIENT_ARMY, RELGROUPHASH_COP)
|
|
|
|
//Check if the mission is using a replay, or a shitskip.
|
|
IF Is_Replay_In_Progress()
|
|
//Check if player chose to shitskip
|
|
IF g_bShitskipAccepted = TRUE
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 0
|
|
START_REPLAY_SETUP(vHeliCoords, fHeliHeading)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
ENDIF
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 1
|
|
START_REPLAY_SETUP(<<-629.1677, 2871.3101, 385.0313>>, 283.1214)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
ENDIF
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 2
|
|
SET_UP_MISSION_PASSED()
|
|
ENDIF
|
|
ELSE
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 0
|
|
START_REPLAY_SETUP(<<-1565.0836, 2780.8130, 16.4022>>, 53.6086)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
ENDIF
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 1
|
|
START_REPLAY_SETUP(vHeliCoords, fHeliHeading)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
ENDIF
|
|
IF GET_REPLAY_MID_MISSION_STAGE() = 2
|
|
START_REPLAY_SETUP(<<-629.1677, 2871.3101, 385.0313>>, 283.1214)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF IS_REPEAT_PLAY_ACTIVE()
|
|
START_REPLAY_SETUP(<<-1565.0836, 2780.8130, 16.4022>>, 53.6086)
|
|
MissionStageBeingSkippedTo = TRUE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
ELSE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PROC DO_STAGE_GET_TO_CARGOBOB()
|
|
//
|
|
// IF iControlFlag > 0
|
|
// HANDLE_DIALOGUE_AND_GOD_TEXT()
|
|
//
|
|
// HANDLE_SWITCHING()
|
|
//
|
|
// HANDLE_MILITARY()
|
|
//
|
|
// HANDLE_PLAYER_CHARACTERS()
|
|
// ENDIF
|
|
//
|
|
// IF iControlFlag = 0
|
|
//
|
|
// //For Stage Selector
|
|
// IF MissionStageBeingSkippedTo = TRUE
|
|
// missionCanFail = FALSE
|
|
// STAGE_SELECTOR_MISSION_SETUP()
|
|
// MissionStageBeingSkippedTo = FALSE
|
|
// ENDIF
|
|
//
|
|
// //Request models required for this stage
|
|
// REQUEST_MODEL(CARGOBOB)
|
|
// REQUEST_MODEL(HUNTER)
|
|
// REQUEST_MODEL(S_M_Y_MARINE_01)
|
|
//
|
|
// //Reset any Flags for this stage here.
|
|
// SetupMilitaryCops = FALSE
|
|
// doneChat1 = FALSE
|
|
// doneGodText1 = FALSE
|
|
// GpsRouteTurnedOn = FALSE
|
|
//
|
|
// //If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
// IF NOT IS_SCREEN_FADED_IN()
|
|
// LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
// DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
// ENDIF
|
|
//
|
|
// missionCanFail = TRUE
|
|
// iControlFlag = 1
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF iControlFlag = 1
|
|
//
|
|
// SETUP_MILITARY_AND_COPS()
|
|
//
|
|
// //Add blip and print god text for 1st objective
|
|
// IF NOT DOES_BLIP_EXIST(AirFieldBlip)
|
|
// AirFieldBlip = CREATE_BLIP_FOR_COORD(vMiddleOfAirField)
|
|
// ENDIF
|
|
//
|
|
// //Handle GPS multi route.
|
|
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
// IF GpsRouteTurnedOn = FALSE
|
|
// vplayersCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
// START_GPS_MULTI_ROUTE(HUD_COLOUR_YELLOW)
|
|
// IF vplayersCoords.x > -480
|
|
// ADD_POINT_TO_GPS_MULTI_ROUTE(<<-480.6436, 2848.6216, 32.8302>>)
|
|
// ENDIF
|
|
// IF vplayersCoords.x > -1265
|
|
// ADD_POINT_TO_GPS_MULTI_ROUTE(<<-1265.5708, 2534.6106, 17.6124>>)
|
|
// ENDIF
|
|
// ADD_POINT_TO_GPS_MULTI_ROUTE(<<-1568.1309, 2776.1069, 16.1998>>)
|
|
// SET_GPS_MULTI_ROUTE_RENDER(TRUE)
|
|
// GpsRouteTurnedOn = TRUE
|
|
// ENDIF
|
|
// ELSE
|
|
// IF GpsRouteTurnedOn = TRUE
|
|
// SET_GPS_MULTI_ROUTE_RENDER(FALSE)
|
|
// GpsRouteTurnedOn = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Create the Cargobob
|
|
// IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF HAS_MODEL_LOADED(CARGOBOB)
|
|
// CLEAR_AREA(vHeliCoords, 10, TRUE)
|
|
// HeliToSteal = CREATE_VEHICLE(CARGOBOB, vHeliCoords, fHeliHeading)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
// FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
// SET_PED_MODEL_IS_SUPPRESSED(CARGOBOB, TRUE)
|
|
// HeliToStealDestroyed = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Create your buddy heli to steal
|
|
// IF NOT DOES_ENTITY_EXIST(BuddyHeli)
|
|
// IF HAS_MODEL_LOADED(HUNTER)
|
|
// CLEAR_AREA(vBuddyHelicoords, 10, TRUE)
|
|
// BuddyHeli = CREATE_VEHICLE(HUNTER, vBuddyHelicoords, fBuddyHeliHeading)
|
|
// SET_ENTITY_LOAD_COLLISION_FLAG(BuddyHeli, TRUE)
|
|
// FREEZE_ENTITY_POSITION(BuddyHeli, TRUE)
|
|
// SET_MODEL_AS_NO_LONGER_NEEDED(HUNTER)
|
|
// SET_PED_MODEL_IS_SUPPRESSED(HUNTER, TRUE)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Move stage on if player gets in these areas
|
|
//// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-2374.519287,3155.480957,27.827360>>, <<-1900.770264,2876.654785,106.556519>>, 188.250000)
|
|
// IF IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), AC_MILITARY_BASE)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_STEAL_CARGOBOB
|
|
// ENDIF
|
|
//
|
|
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1596.788086,2789.726807,15.350899>>, <<-1583.259521,2801.135010,20.291382>>, 3.750000)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_STEAL_CARGOBOB
|
|
// ENDIF
|
|
//// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
//ENDPROC
|
|
|
|
PROC DO_STAGE_STEAL_CARGOBOB()
|
|
|
|
//Anything that needs to run every frame call here.
|
|
IF iControlFlag > 0
|
|
|
|
// SETUP_ROCKET_CONTROLLER()
|
|
|
|
HANDLE_BLIPS_AND_GOD_TEXT()
|
|
|
|
HANDLE_MILITARY()
|
|
|
|
HANDLE_ENEMY_CHOPPERS()
|
|
|
|
// IF DOES_SCENARIO_GROUP_EXIST("WORLD_VEHICLE_DRIVE_SOLO")
|
|
// PRINTSTRING("WORLD_VEHICLE_DRIVE_SOLO group exists") PRINTNL()
|
|
// ELSE
|
|
// PRINTSTRING("WORLD_VEHICLE_DRIVE_SOLO group Does NOT exist") PRINTNL()
|
|
// ENDIF
|
|
ENDIF
|
|
|
|
IF iControlFlag = 0
|
|
|
|
//For Stage Selector
|
|
IF MissionStageBeingSkippedTo = TRUE
|
|
missionCanFail = FALSE
|
|
STAGE_SELECTOR_MISSION_SETUP()
|
|
MissionStageBeingSkippedTo = FALSE
|
|
ENDIF
|
|
|
|
//Reset any Flags for this stage here.
|
|
DoneStealCargobobText = FALSE
|
|
SetupMilitaryCops = FALSE
|
|
EnemyHeliPilotTaskGiven[0] = FALSE
|
|
EnemyHeliPilotTaskGiven[1] = FALSE
|
|
// militaryFriendlyTaskGiven = FALSE
|
|
playerIsInBase = FALSE
|
|
AlarmStarted = FALSE
|
|
playerIsNearHeli = FALSE
|
|
doneChat55 = FALSE
|
|
doneChat56 = FALSE
|
|
AimTaskGiven[0] = FALSE
|
|
AimTaskGiven[1] = FALSE
|
|
playerWaitedTooLongToLeaveGate = FALSE
|
|
hostileTimerSet = FALSE
|
|
TimerResetOnce = FALSE
|
|
weaponTimerStarted = FALSE
|
|
doneArmyWrn1aChat = FALSE
|
|
// buddyMichaelCombatFlagSet = FALSE
|
|
// buddyTrevorCombatFlagSet = FALSE
|
|
// buddyFranklinCombatFlagSet = FALSE
|
|
// relGroupsSetup = FALSE
|
|
|
|
iBecomeHostileTimer = 0
|
|
// iAlarmChatTimer = GET_GAME_TIMER()
|
|
|
|
FOR icount = 0 TO 12
|
|
militaryPNHPNTasksGiven[icount] = FALSE
|
|
militaryPNHPFTasksGiven[icount] = FALSE
|
|
militaryPCRTasksGiven[icount] = FALSE
|
|
militaryPFRTasksGiven[icount] = FALSE
|
|
ENDFOR
|
|
|
|
//Set up checkpoint here
|
|
//SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "STAGE_STEAL_CARGOBOB")
|
|
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
|
|
PREPARE_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS")
|
|
iAlarmTimer = GET_GAME_TIMER()
|
|
|
|
//SHOULD BE REMOVED ONCE BUG HAS BEEN FIXED FOR REMOVING LAZER VEHICLES FROM AIRSPACE
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(LAZER, TRUE)
|
|
|
|
REQUEST_MODEL(S_M_Y_MARINE_01)
|
|
REQUEST_MODEL(S_M_M_PILOT_02)
|
|
|
|
//GRAB ALL ENTITIES FROM TRIGGER SCENE
|
|
IF NOT DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[0])
|
|
IF IS_VEHICLE_DRIVEABLE(g_sTriggerSceneAssets.veh[0])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[0], TRUE, TRUE)
|
|
HeliToSteal = g_sTriggerSceneAssets.veh[0]
|
|
SET_VEHICLE_CAN_BE_TARGETTED(HeliToSteal, FALSE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(HeliToSteal, TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(CARGOBOB)
|
|
SET_VEHICLE_MODEL_IS_SUPPRESSED(CARGOBOB, TRUE)
|
|
// SET_ENTITY_INVINCIBLE(HeliToSteal, TRUE)
|
|
SET_VEHICLE_ENGINE_CAN_DEGRADE(HeliToSteal, FALSE)
|
|
SET_VEHICLE_STRONG(HeliToSteal, TRUE)
|
|
SET_VEHICLE_AS_RESTRICTED(HeliToSteal, 0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Grab the 2 heli's from the trigger scene
|
|
IF NOT DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[1])
|
|
IF IS_VEHICLE_DRIVEABLE(g_sTriggerSceneAssets.veh[1])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[1],TRUE, TRUE)
|
|
EnemyHeli[0] = g_sTriggerSceneAssets.veh[1]
|
|
SET_VEHICLE_CAN_BE_TARGETTED(EnemyHeli[0], TRUE)
|
|
SET_ENTITY_LOAD_COLLISION_FLAG(EnemyHeli[0], TRUE)
|
|
FREEZE_ENTITY_POSITION(EnemyHeli[0], FALSE)
|
|
ADD_ENTITY_TO_AUDIO_MIX_GROUP(EnemyHeli[0], "DH_P_2B_ENEMY_CHOPPERS")
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(EnemyHeli[0], FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Set the players start car as a car gen.
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[2])
|
|
PRINTSTRING("g_sTriggerSceneAssets.veh[2] exists") PRINTNL()
|
|
IF IS_VEHICLE_DRIVEABLE(g_sTriggerSceneAssets.veh[2])
|
|
IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(g_sTriggerSceneAssets.veh[2]))
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[2], TRUE, TRUE)
|
|
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<1734.7990, 3234.8335, 40.7041>>, 321.0399)
|
|
PRINTSTRING("SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN being called as start car is a heli") PRINTNL()
|
|
ENDIF
|
|
IF IS_THIS_MODEL_A_CAR(GET_ENTITY_MODEL(g_sTriggerSceneAssets.veh[2]))
|
|
OR IS_THIS_MODEL_A_BIKE(GET_ENTITY_MODEL(g_sTriggerSceneAssets.veh[2]))
|
|
OR IS_THIS_MODEL_A_BICYCLE(GET_ENTITY_MODEL(g_sTriggerSceneAssets.veh[2]))
|
|
OR IS_THIS_MODEL_A_QUADBIKE(GET_ENTITY_MODEL(g_sTriggerSceneAssets.veh[2]))
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.veh[2], TRUE, TRUE)
|
|
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<1748.0499, 3294.7000, 40.1060>>, 204.2419)
|
|
PRINTSTRING("SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN being called for start car") PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTSTRING("g_sTriggerSceneAssets.veh[2] Doesn't exist") PRINTNL()
|
|
ENDIF
|
|
|
|
//Grab 1st 2 peds from the trigger scene. The rest will need to be created below.
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[0], TRUE, TRUE)
|
|
MarineCop[0] = g_sTriggerSceneAssets.ped[0]
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1])
|
|
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[1], TRUE, TRUE)
|
|
MarineCop[1] = g_sTriggerSceneAssets.ped[1]
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, FALSE)
|
|
ENDIF
|
|
|
|
SET_AUDIO_FLAG("PoliceScannerDisabled", TRUE)
|
|
|
|
//If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
END_REPLAY_SETUP(PlayerCar)
|
|
ENDIF
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(PLAYER_PED_ID())
|
|
|
|
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_HEIST_DOCKS_PREP_2B)
|
|
|
|
//Flags
|
|
missionCanFail = TRUE
|
|
iControlFlag = 1
|
|
|
|
ENDIF
|
|
|
|
IF iControlFlag = 1
|
|
|
|
//Disable the scenario guards
|
|
IF DOES_SCENARIO_GROUP_EXIST("ARMY_GUARD")
|
|
IF IS_SCENARIO_GROUP_ENABLED("ARMY_GUARD")
|
|
SET_SCENARIO_GROUP_ENABLED("ARMY_GUARD", FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SETUP_MILITARY_AND_COPS()
|
|
|
|
//Start alarm for any of these reasons
|
|
IF AlarmStarted = FALSE
|
|
//Allow it time to load
|
|
IF GET_GAME_TIMER() > (iAlarmTimer + 3000)
|
|
|
|
//Run a check for any one spotting the player
|
|
FOR iAlarmStartCount = 0 TO 12
|
|
|
|
IF DOES_ENTITY_EXIST(MarineCop[iAlarmStartCount])
|
|
IF NOT IS_PED_INJURED(MarineCop[iAlarmStartCount])
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), MarineCop[iAlarmStartCount]) < 40
|
|
IF CAN_PED_SEE_HATED_PED(MarineCop[iAlarmStartCount], PLAYER_PED_ID())
|
|
|
|
//Start the alarm and wanted level if player is seen to be jacking any vehicle
|
|
IF IS_PED_JACKING(PLAYER_PED_ID())
|
|
START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",FALSE)
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", TRUE, TRUE)
|
|
AlarmStarted = TRUE
|
|
ENDIF
|
|
|
|
//If player is in base start the alarm
|
|
IF playerIsInBase = TRUE
|
|
START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",FALSE)
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", TRUE, TRUE)
|
|
AlarmStarted = TRUE
|
|
ENDIF
|
|
|
|
//If player approaches with a gun equipped start the alarm
|
|
IF weaponTimerStarted = FALSE
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_PHONE_ONSCREEN()
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) <> WEAPONTYPE_UNARMED
|
|
iWeaponStillEquipedTimer = GET_GAME_TIMER()
|
|
weaponTimerStarted = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
AND NOT IS_PHONE_ONSCREEN()
|
|
IF GET_PEDS_CURRENT_WEAPON(PLAYER_PED_ID()) <> WEAPONTYPE_UNARMED
|
|
IF GET_GAME_TIMER() > (iWeaponStillEquipedTimer + 3000)
|
|
START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS",FALSE)
|
|
SET_AMBIENT_ZONE_STATE("AZ_AFB_ALARM_SPEECH", TRUE, TRUE)
|
|
AlarmStarted = TRUE
|
|
ENDIF
|
|
ELSE
|
|
//Reset timer once only
|
|
IF TimerResetOnce = FALSE
|
|
weaponTimerStarted = FALSE
|
|
TimerResetOnce = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DoneStealCargobobText = FALSE
|
|
CLEAR_PRINTS()
|
|
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
PRINT_NOW("DP_GOD2", DEFAULT_GOD_TEXT_TIME, 1)//Steal the ~b~Cargobob.
|
|
DoneStealCargobobText = TRUE
|
|
ENDIF
|
|
|
|
IF playerIsInBase = TRUE
|
|
IF NOT IS_BATTLEBUDDY_BEHAVIOUR_REQUESTED(BBF_CombatGroupSpacing)
|
|
SET_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatGroupSpacing)
|
|
ENDIF
|
|
ELSE
|
|
IF IS_BATTLEBUDDY_BEHAVIOUR_REQUESTED(BBF_CombatGroupSpacing)
|
|
CLEAR_BATTLEBUDDY_BEHAVIOUR_REQUEST(BBF_CombatGroupSpacing)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Move stage on once the player is in the heli
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), HeliToSteal) < 30
|
|
playerIsNearHeli = TRUE
|
|
ENDIF
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, -1)
|
|
iControlFlag = 0
|
|
REPLAY_RECORD_BACK_FOR_TIME(10.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// //Move stage on once all players are in the heli
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// //Check if Trevor exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
// //Check if Franklin exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check if Franklin exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check if Franklin exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Move stage on once all players are in the heli
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// //Check if Michael exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
// //Check if Franklin exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check if Franklin exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// //Move stage on once all players are in the heli
|
|
// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// //Check if Michael exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], HeliToSteal)
|
|
// //Check if Trevor exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// //Check if Trevor exists and is in heli
|
|
// IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
|
|
// IF IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], HeliToSteal)
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ELSE
|
|
// iControlFlag = 0
|
|
// missionStage = STAGE_ESCAPE_MILITARY
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: Creates and deletes end get away vehicles when required
|
|
PROC SET_UP_END_VEHICLES()
|
|
|
|
//Set up and create the end mission vehicles when player is getting close to the hanger
|
|
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vHanger) < 500
|
|
//Set up and create the end mission vehicles now
|
|
IF EndCarsCreated = FALSE
|
|
|
|
IF NOT DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
REQUEST_MODEL(SANDKING)
|
|
IF HAS_MODEL_LOADED(SANDKING)
|
|
|
|
GetAwayCar[0] = CREATE_VEHICLE(SANDKING, <<1754.9508, 3290.9939, 40.1176>>, 182.3970)
|
|
FREEZE_ENTITY_POSITION(GetAwayCar[0], TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(SANDKING)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
EndCarsCreated = TRUE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ELSE
|
|
//Delete the vehicles for memory reasons if the player flies away from this area
|
|
IF EndCarsCreated = TRUE
|
|
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vHanger) > 550
|
|
IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
DELETE_VEHICLE(GetAwayCar[0])
|
|
ENDIF
|
|
EndCarsCreated = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC DO_STAGE_ESCAPE_MILITARY()
|
|
|
|
//Anything that needs to run every frame call here.
|
|
IF iControlFlag > 0
|
|
|
|
HANDLE_BLIPS_AND_GOD_TEXT()
|
|
|
|
// HANDLE_SWITCHING()
|
|
|
|
HANDLE_MILITARY()
|
|
|
|
//Set up and create the end mission vehicles when player is getting close to the hanger
|
|
SET_UP_END_VEHICLES()
|
|
|
|
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) <> 4
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 4)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
ENDIF
|
|
|
|
// HANDLE_PLAYER_CHARACTERS()
|
|
|
|
HANDLE_ENEMY_CHOPPERS()
|
|
|
|
HANDLE_ARMY_JETS()
|
|
|
|
//Give AI blips if in the base at escape section
|
|
FOR icount = 0 TO 12
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
UPDATE_AI_PED_BLIP(MarineCop[icount], MarineCopBlip[icount])
|
|
ELSE
|
|
CLEANUP_AI_PED_BLIP(MarineCopBlip[icount])
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
IF iControlFlag = 0
|
|
|
|
//For Stage Selector
|
|
IF MissionStageBeingSkippedTo = TRUE
|
|
missionCanFail = FALSE
|
|
STAGE_SELECTOR_MISSION_SETUP()
|
|
MissionStageBeingSkippedTo = FALSE
|
|
ENDIF
|
|
|
|
//Flags
|
|
DoneGetToHangerText = FALSE
|
|
// LongDistanceCamRequired = FALSE
|
|
// MichaelAITaskGiven = FALSE
|
|
// TrevorAITaskGiven = FALSE
|
|
EnemyHeliPilotTaskGiven[0] = FALSE
|
|
EnemyHeliPilotTaskGiven[1] = FALSE
|
|
Heli0RocketsEquipped = FALSE
|
|
// Heli1RocketsEquipped = FALSE
|
|
EnemyHeliDown[0] = FALSE
|
|
EnemyHeliDown[1] = FALSE
|
|
godTextUpdtaed = FALSE
|
|
EndCarsCreated = FALSE
|
|
TaskNeedsUpdated[0] = FALSE
|
|
// TaskNeedsUpdated[1] = FALSE
|
|
doneChat53 = FALSE
|
|
doneChat54 = FALSE
|
|
TaskToSlowDownGiven = FALSE
|
|
Accuracy0 = FALSE
|
|
Accuracy100 = FALSE
|
|
FiringTypeBullet = FALSE
|
|
FiringTypeRocket = FALSE
|
|
doneGetBackInText = FALSE
|
|
|
|
// i_player_rocket_event = 0
|
|
// i_rocket_timer = GET_GAME_TIMER()
|
|
iGodTextTimer = GET_GAME_TIMER()
|
|
iEnemyPilotAccuracyTimer = GET_GAME_TIMER()
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, FALSE)
|
|
ENDIF
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "STAGE_ESCAPE_MILITARY")
|
|
|
|
//If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
END_REPLAY_SETUP(HeliToSteal)
|
|
ENDIF
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
|
|
IF NOT IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENTER_CHOPPER")
|
|
START_AUDIO_SCENE("DH_P_2B_ENTER_CHOPPER")
|
|
ENDIF
|
|
|
|
IF NOT IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
START_AUDIO_SCENE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
ENDIF
|
|
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(DH2BP_HELI_TAKEDOWN_TIME)
|
|
|
|
SET_POLICE_RADAR_BLIPS(FALSE)
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(HeliToSteal)
|
|
// ADD_ENTITY_TO_AUDIO_MIX_GROUP(HeliToSteal, "DH_P_2B_CARGOBOB")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Add in a video recording of the last 10 seconds of action involving the player getting into the heli.
|
|
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
missionCanFail = TRUE
|
|
iControlFlag = 1
|
|
|
|
ENDIF
|
|
|
|
IF iControlFlag = 1
|
|
|
|
// //Reset Trev's AI task so he will now attack the other heli.
|
|
// IF TrevorTaskReset = FALSE
|
|
// IF EnemyHeliPilotKilled[0] = TRUE
|
|
// TrevorAITaskGiven = FALSE
|
|
// TrevorTaskReset = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
//Move stage on if both pilots have been killed
|
|
IF EnemyHeliDown[0] = TRUE
|
|
IF DOES_BLIP_EXIST(EnemyHeliPilotBlip[0])
|
|
REMOVE_BLIP(EnemyHeliPilotBlip[0])
|
|
ENDIF
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(EnemyHeli[0])
|
|
ENDIF
|
|
IF IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
STOP_AUDIO_SCENE("DH_P_2B_ENEMY_CHOPPERS_ARRIVE")
|
|
ENDIF
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(TRUE, DH2BP_HELI_TAKEDOWN_TIME)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(DH2BP_HELI_TIME)
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_ENTITY_IN_ANGLED_AREA(HeliToSteal, <<1721.001465,3264.248291,38.400642>>, <<1765.508911,3276.518066,46.053852>>, 48.250000)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
iControlFlag = 0
|
|
missionStage = STAGE_END_CUTSCENE
|
|
ELSE
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
// REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(HeliToSteal)
|
|
Mission_Passed()
|
|
ENDIF
|
|
ELSE
|
|
iControlFlag = 0
|
|
missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF godTextUpdtaed = FALSE
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF GET_GAME_TIMER() > (iGodTextTimer + 10000)
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
PRINT_NOW("DP_GOD5", DEFAULT_GOD_TEXT_TIME, 1)
|
|
//~s~Lose the ~r~military chopper.
|
|
godTextUpdtaed = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC DO_STAGE_FLY_CARGOBOB_TO_HANGER()
|
|
|
|
//Anything that needs to run every frame call here.
|
|
IF iControlFlag > 0
|
|
|
|
HANDLE_BLIPS_AND_GOD_TEXT()
|
|
|
|
// HANDLE_SWITCHING()
|
|
|
|
//Set up and create the end mission vehicles when player is getting close to the hanger
|
|
SET_UP_END_VEHICLES()
|
|
|
|
// HANDLE_PLAYER_CHARACTERS()
|
|
ENDIF
|
|
|
|
IF iControlFlag = 0
|
|
|
|
//For Stage Selector
|
|
IF MissionStageBeingSkippedTo = TRUE
|
|
//Reset Flags
|
|
missionCanFail = FALSE
|
|
// MichaelAITaskGiven = FALSE
|
|
|
|
STAGE_SELECTOR_MISSION_SETUP()
|
|
MissionStageBeingSkippedTo = FALSE
|
|
ENDIF
|
|
|
|
//Flags
|
|
doneChat59 = FALSE
|
|
doneHelp4 = FALSE
|
|
checkpointSet = FALSE
|
|
donePhoneCall = FALSE
|
|
|
|
|
|
IF DOES_BLIP_EXIST(ArmyJet1Blip)
|
|
REMOVE_BLIP(ArmyJet1Blip)
|
|
ENDIF
|
|
|
|
//bug fix 1945573
|
|
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0)
|
|
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, FALSE)
|
|
ENDIF
|
|
|
|
SET_POLICE_RADAR_BLIPS(FALSE)
|
|
|
|
//Clean up previous sections
|
|
FOR icount = 0 TO 12
|
|
IF DOES_ENTITY_EXIST(MarineCop[icount])
|
|
IF NOT IS_PED_INJURED(MarineCop[icount])
|
|
SET_PED_KEEP_TASK(MarineCop[icount], TRUE)
|
|
SET_PED_AS_NO_LONGER_NEEDED(MarineCop[icount])
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF DOES_ENTITY_EXIST(EnemyHeli[0])
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(EnemyHeli[0])
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(EnemyHeliPilot[0])
|
|
SET_PED_AS_NO_LONGER_NEEDED(EnemyHeliPilot[0])
|
|
ENDIF
|
|
|
|
IF NOT IS_AUDIO_SCENE_ACTIVE("DH_P_2B_ENTER_CHOPPER")
|
|
START_AUDIO_SCENE("DH_P_2B_ENTER_CHOPPER")
|
|
ENDIF
|
|
|
|
//If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
//If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT IS_REPLAY_BEING_SET_UP()
|
|
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
END_REPLAY_SETUP(HeliToSteal)
|
|
ENDIF
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
missionCanFail = TRUE
|
|
iControlFlag = 1
|
|
|
|
ENDIF
|
|
|
|
IF iControlFlag = 1
|
|
|
|
//Set up checkpoint once player gets clear of the military base
|
|
IF checkpointSet = FALSE
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vHeliCoords) > 800
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2, "STAGE_FLY_CARGOBOB_TO_HANGER", TRUE)
|
|
checkpointSet = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Have Trev mention about Michael needing to learn to fly
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF IS_ENTITY_IN_AIR(HeliToSteal)
|
|
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vHeliCoords) > 800
|
|
IF doneChat59 = FALSE
|
|
AND DoneGetToHangerText = TRUE
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 2, PLAYER_PED_ID(), "TREVOR")
|
|
IF CREATE_CONVERSATION(MyLocalPedStruct, "DP2BAUD", "DP2B_CHAT59", CONV_PRIORITY_MEDIUM)
|
|
//Oh! She's an unwieldy thing. If Michael don't get those lessons...
|
|
//This is a big bird - Michael really better get those lessons.
|
|
doneChat59 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
//Phone call to Wade.
|
|
IF doneChat59 = TRUE
|
|
AND donePhoneCall = FALSE
|
|
IF GET_MISSION_COMPLETE_STATE(SP_HEIST_DOCKS_PREP_1) = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 3, NULL, "Wade")
|
|
IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_WADE, "DP2BAUD", "DP2B_WADEP3", CONV_PRIORITY_MEDIUM)
|
|
//Oh, hi Trevor.
|
|
//The Airforce are missing a chopper.
|
|
//They lost one. That's a shame.
|
|
//We took it, you dick. Add it to the list, and I'll tell you when we've got the rest of it.
|
|
donePhoneCall = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_MESSAGE_BEING_DISPLAYED()
|
|
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
|
|
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct, 3, NULL, "Wade")
|
|
IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_WADE, "DP2BAUD", "DP2B_WADEP4", CONV_PRIORITY_MEDIUM)
|
|
//How you doing, Trev?
|
|
//Fine... for a guy who just went into an airbase and stole a chopper. Are we ready to go on this thing?
|
|
//If it's the heavy lift chopper, then yeah. I'll get everything ready and I'll call you.
|
|
//Alright.
|
|
donePhoneCall = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//Only display this help text if Michael hasn't been to the flying school yet.
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_DONE_FLYING_LESSONS) = FALSE
|
|
IF doneHelp4 = FALSE
|
|
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
PRINT_HELP("DP_HELP4")//Michael will be flying the Cargobob during the heist. Improve Michael's flying stat by going to the pilot school.
|
|
doneHelp4 = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vHanger, <<2, 2, LOCATE_SIZE_HEIGHT>>, TRUE)
|
|
ENDIF
|
|
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1721.001465,3264.248291,38.400642>>, <<1765.508911,3276.518066,46.053852>>, 48.250000)
|
|
IF NOT IS_ENTITY_IN_AIR(HeliToSteal)
|
|
AND IS_VEHICLE_STOPPED(HeliToSteal)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(TRUE, DH2BP_HELI_TIME)
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(8.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
iControlFlag = 0
|
|
missionStage = STAGE_END_CUTSCENE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//PURPOSE: handles the player skipping the cutscene
|
|
PROC HANDLE_SKIP_CUTSCENE()
|
|
|
|
IF iControlFlag > 1
|
|
AND iControlFlag < 5
|
|
IF TIMERA() > 1500
|
|
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED()
|
|
cutsceneSkipped = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
WHILE cutsceneSkipped = TRUE
|
|
SWITCH iCutsceneSkipStage
|
|
|
|
CASE 0
|
|
DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME)
|
|
PRINTSTRING("iCutsceneSkipStage = 0") PRINTNL()
|
|
iCutsceneSkipStage++
|
|
BREAK
|
|
CASE 1
|
|
PRINTSTRING("iCutsceneSkipStage = 1") PRINTNL()
|
|
IF IS_SCREEN_FADED_OUT()
|
|
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, <<-4.29, 12.168, -1.277>>))
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), GET_ENTITY_HEADING(PLAYER_PED_ID()))
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_LEFT)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_RIGHT)
|
|
SET_VEHICLE_DOORS_LOCKED(HeliToSteal, VEHICLELOCK_LOCKED)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
SET_CAM_ACTIVE(EndSceneCam, FALSE)
|
|
DESTROY_CAM(EndSceneCam)
|
|
DISPLAY_RADAR(TRUE)
|
|
DISPLAY_HUD(TRUE)
|
|
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
SETTIMERA(0)
|
|
iCutsceneSkipStage++
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
PRINTSTRING("iCutsceneSkipStage = 2") PRINTNL()
|
|
IF TIMERA() > 2000
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
PRINTSTRING("DO_SCREEN_FADE_IN being called") PRINTNL()
|
|
ENDIF
|
|
iCutsceneSkipStage++
|
|
ENDIF
|
|
BREAK
|
|
CASE 3
|
|
PRINTSTRING("iCutsceneSkipStage = 3") PRINTNL()
|
|
IF IS_SCREEN_FADED_IN()
|
|
SETTIMERB(0)
|
|
iControlFlag = 5
|
|
cutsceneSkipped = FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// PURPOSE: End cutscene for the mission
|
|
PROC DO_STAGE_END_CUTSCENE()
|
|
|
|
// PRINTSTRING("camera offset is ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(HeliToSteal, GET_CAM_COORD(GET_DEBUG_CAM())))
|
|
|
|
HANDLE_BLIPS_AND_GOD_TEXT()
|
|
|
|
// HANDLE_SKIP_CUTSCENE()
|
|
|
|
IF Icontrolflag = 0
|
|
|
|
//For Stage Selector
|
|
IF MissionStageBeingSkippedTo = TRUE
|
|
//Reset Flags
|
|
missionCanFail = FALSE
|
|
|
|
STAGE_SELECTOR_MISSION_SETUP()
|
|
MissionStageBeingSkippedTo = FALSE
|
|
ENDIF
|
|
|
|
//Flags
|
|
// cutsceneSkipped = FALSE
|
|
// iCutsceneSkipStage = 0
|
|
// NoBuddysAvailable = FALSE
|
|
|
|
// REQUEST_VEHICLE_RECORDING(1, "BB_DP2B")
|
|
// REQUEST_VEHICLE_RECORDING(2, "BB_DP2B")
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, FALSE)
|
|
ENDIF
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(), FALSE)
|
|
ENDIF
|
|
|
|
//Delete the invisibel ped now
|
|
// IF DOES_ENTITY_EXIST(InvisiblePed)
|
|
// DELETE_PED(InvisiblePed)
|
|
// ENDIF
|
|
|
|
//If screen is faded out do a load scene at players coordinates now and then fade in the screen
|
|
IF IS_SCREEN_FADED_OUT()
|
|
LOAD_SCENE(GET_ENTITY_COORDS(PLAYER_PED_ID()))
|
|
ENDIF
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
|
|
ENDIF
|
|
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
|
|
|
|
// IF DOES_CAM_EXIST(EndSceneCam)
|
|
// DESTROY_CAM(EndSceneCam)
|
|
// ENDIF
|
|
|
|
// //Take control of the battle buddies
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
// PRINTSTRING("hBuddyMichael is avialable") PRINTNL()
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyMichael)
|
|
// PRINTSTRING("hBuddyMichael is not overriden") PRINTNL()
|
|
// WHILE NOT OVERRIDE_BATTLEBUDDY(hBuddyMichael, FALSE)
|
|
// PRINTSTRING("Waiting on overriding hBuddyMichael buddy") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
// PRINTSTRING("hBuddyTrevor is avialable") PRINTNL()
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyTrevor)
|
|
// PRINTSTRING("hBuddyTrevor is not overriden") PRINTNL()
|
|
// WHILE NOT OVERRIDE_BATTLEBUDDY(hBuddyTrevor, FALSE)
|
|
// PRINTSTRING("Waiting on overriding hBuddyTrevor buddy") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
// PRINTSTRING("hBuddyFranklin is avialable") PRINTNL()
|
|
// IF NOT IS_BATTLEBUDDY_OVERRIDDEN(hBuddyFranklin)
|
|
// PRINTSTRING("hBuddyFranklin is not overriden") PRINTNL()
|
|
// WHILE NOT OVERRIDE_BATTLEBUDDY(hBuddyFranklin, FALSE)
|
|
// PRINTSTRING("Waiting on overriding hBuddyFranklin buddy") PRINTNL()
|
|
// WAIT(0)
|
|
// ENDWHILE
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
// SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
|
|
|
|
//Make player exit vehicle
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
missionCanFail = TRUE
|
|
iControlFlag = 1
|
|
|
|
ENDIF
|
|
|
|
IF iControlFlag = 1
|
|
|
|
IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal, TRUE)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_LEFT, FALSE)
|
|
SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_RIGHT, FALSE)
|
|
SET_VEHICLE_DOORS_LOCKED(HeliToSteal, VEHICLELOCK_LOCKED)
|
|
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(HeliToSteal, FALSE)
|
|
FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
Mission_Passed()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// IF Icontrolflag = 1
|
|
//
|
|
//// IF IS_VEHICLE_DRIVEABLE(heliToSteal)
|
|
//// IF IS_BUTTON_JUST_PRESSED(pad1, select)
|
|
//// PRINTSTRING("camera offset is ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(HeliToSteal, GET_CAM_COORD(GET_DEBUG_CAM())))
|
|
//// ENDIF
|
|
//// ENDIF
|
|
////
|
|
//// PRINTSTRING("camera offset is ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(HeliToSteal, GET_CAM_COORD(GET_DEBUG_CAM())))
|
|
//
|
|
// IF NOT DOES_CAM_EXIST(EndSceneCam)
|
|
// EndSceneCam = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
|
|
// SET_CAM_COORD(EndSceneCam, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, << -4.3327, 9.96572, -0.5 >>))
|
|
// POINT_CAM_AT_ENTITY(EndSceneCam, HeliToSteal, << 0.290697, 3.39268, 0.988922 >>)
|
|
// ENDIF
|
|
//
|
|
// DISPLAY_RADAR(FALSE)
|
|
// DISPLAY_HUD(FALSE)
|
|
// RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
//
|
|
// SETTIMERA(0)
|
|
// iControlFlag = 2
|
|
//
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF icontrolFlag = 2
|
|
//
|
|
// //Give the peds in the heli tasks to leave the heli
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
//// //Make buddies exit vehicle
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyTrevor)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyTrevor, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyTrevor, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyFranklin)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyFranklin, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyFranklin, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// NoBuddysAvailable = TRUE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyMichael)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyMichael)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyMichael, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyMichael, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyFranklin)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyFranklin, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyFranklin, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// NoBuddysAvailable = TRUE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyMichael)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyMichael)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyMichael, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyMichael, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
//// REMOVE_PED_FROM_GROUP(hBuddyTrevor)
|
|
//// SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(hBuddyTrevor, TRUE)
|
|
//// TASK_LEAVE_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// PRINTSTRING("TASK_LEAVE_VEHICLE(hBuddyTrevor, HeliToSteal)") PRINTNL()
|
|
//// NoBuddysAvailable = FALSE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// AND NOT IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// NoBuddysAvailable = TRUE
|
|
//// ENDIF
|
|
//// ENDIF
|
|
// //Make player exit vehicle
|
|
// IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// TASK_LEAVE_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// PRINTSTRING("TASK_LEAVE_VEHICLE(PLAYER_PED_ID(), HeliToSteal)") PRINTNL()
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// SETTIMERB(0)
|
|
// icontrolFlag = 3
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF icontrolFlag = 3
|
|
//
|
|
//// PRINTSTRING("offset from vehicle is ") PRINTVECTOR(GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(HeliToSteal, GET_CAM_COORD(GET_DEBUG_CAM()))) PRINTNL()
|
|
//
|
|
// //Let them say some shit to each other then have the buddies walk off screen and get into parked cars ready to drive away
|
|
// IF TIMERB() > 3000
|
|
//// OR NoBuddysAvailable = TRUE
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// //Make player exit vehicle
|
|
// IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), HeliToSteal)
|
|
// TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(HeliToSteal, <<-4.29, 12.168, -1.277>>), PEDMOVE_WALK)
|
|
// ENDIF
|
|
//// //Make buddies exit vehicle
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyTrevor, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyFranklin, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyMichael, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyFranklin, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyFranklin, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyMichael, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyMichael, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyTrevor, HeliToSteal)
|
|
//// TASK_FOLLOW_NAV_MESH_TO_COORD(hBuddyTrevor, <<1744.4069, 3295.2913, 40.1062>>, PEDMOVEBLENDRATIO_WALK)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// SETTIMERB(0)
|
|
// icontrolFlag = 4
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF icontrolFlag = 4
|
|
//
|
|
// IF TIMERB() > 3500
|
|
//
|
|
//// //put the peds into the vehicles and start their playbacks
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyTrevor, GetAwayCar[0])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyTrevor, GetAwayCar[0])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[0], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 1, "BB_DP2B")
|
|
//// SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 3000)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyFranklin, GetAwayCar[1])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyFranklin, GetAwayCar[1])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[1], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1], 2, "BB_DP2B")
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyMichael, GetAwayCar[0])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyMichael, GetAwayCar[0])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[0], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 1, "BB_DP2B")
|
|
//// SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 3000)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyFranklin, GetAwayCar[1])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyFranklin, GetAwayCar[1])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[1], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1], 2, "BB_DP2B")
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyMichael, GetAwayCar[0])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyMichael, GetAwayCar[0])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[0], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 1, "BB_DP2B")
|
|
//// SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0], 3000)
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF NOT IS_PED_IN_VEHICLE(hBuddyTrevor, GetAwayCar[1])
|
|
//// SET_PED_INTO_VEHICLE(hBuddyTrevor, GetAwayCar[1])
|
|
//// FREEZE_ENTITY_POSITION(GetAwayCar[1], FALSE)
|
|
//// START_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1], 2, "BB_DP2B")
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//
|
|
// IF DOES_ENTITY_EXIST(HeliToSteal)
|
|
// IF IS_VEHICLE_DRIVEABLE(HeliToSteal)
|
|
// SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_LEFT)
|
|
// SET_VEHICLE_DOOR_SHUT(HeliToSteal, SC_DOOR_FRONT_RIGHT)
|
|
// SET_VEHICLE_DOORS_LOCKED(HeliToSteal, VEHICLELOCK_LOCKED)
|
|
// FREEZE_ENTITY_POSITION(HeliToSteal, TRUE)
|
|
// ENDIF
|
|
// ENDIF
|
|
//
|
|
// RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
// SET_CAM_ACTIVE(EndSceneCam, FALSE)
|
|
// DESTROY_CAM(EndSceneCam)
|
|
// DISPLAY_RADAR(TRUE)
|
|
// DISPLAY_HUD(TRUE)
|
|
//
|
|
// SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
|
|
// SETTIMERB(0)
|
|
// SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
|
|
// icontrolFlag = 5
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
//
|
|
// IF icontrolFlag = 5
|
|
//
|
|
// IF TIMERB() > 1000
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[0])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
//// TASK_VEHICLE_MISSION(hBuddyTrevor, GetAwayCar[0], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyTrevor, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyTrevor") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[1])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
//// TASK_VEHICLE_MISSION(hBuddyFranklin, GetAwayCar[1], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyFranklin, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyFranklin") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[0])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyMichael)
|
|
//// TASK_VEHICLE_MISSION(hBuddyMichael, GetAwayCar[0], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyMichael, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyMichael") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[1])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyFranklin, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyFranklin)
|
|
//// TASK_VEHICLE_MISSION(hBuddyFranklin, GetAwayCar[1], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyFranklin, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyFranklin") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[0])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[0])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[0])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[0])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyMichael, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyMichael)
|
|
//// TASK_VEHICLE_MISSION(hBuddyMichael, GetAwayCar[0], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyMichael, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyMichael") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// IF DOES_ENTITY_EXIST(GetAwayCar[1])
|
|
//// IF IS_VEHICLE_DRIVEABLE(GetAwayCar[1])
|
|
//// IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(GetAwayCar[1])
|
|
//// STOP_PLAYBACK_RECORDED_VEHICLE(GetAwayCar[1])
|
|
//// ENDIF
|
|
//// IF IS_BATTLEBUDDY_AVAILABLE(hBuddyTrevor, FALSE)
|
|
//// CLEAR_PED_TASKS(hBuddyTrevor)
|
|
//// TASK_VEHICLE_MISSION(hBuddyTrevor, GetAwayCar[1], HeliToSteal, MISSION_FLEE, 30, DRIVINGMODE_AVOIDCARS, -1, -1)
|
|
//// SET_PED_KEEP_TASK(hBuddyTrevor, TRUE)
|
|
//// PRINTSTRING("TASK_VEHICLE_MISSION(hBuddyTrevor") PRINTNL()
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// ENDIF
|
|
//// REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(HeliToSteal)
|
|
// Mission_Passed()
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//// PURPOSE: Sets where the player will be warped to if they accept the replay
|
|
//PROC SET_REPLAY_ACCEPTED_WARP_LOCATION()
|
|
// MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<1872.4281, 3322.7512, 42.8431>>, 100.8492)
|
|
//ENDPROC
|
|
|
|
PROC DO_STAGE_MISSION_FAILED()
|
|
|
|
SWITCH iControlFlag
|
|
|
|
CASE 0 // init
|
|
CPRINTLN(DEBUG_MISSION, "Init DO_STAGE_MISSION_FAILED")
|
|
CLEAR_PRINTS()
|
|
CLEAR_HELP()
|
|
// remove all blips here
|
|
|
|
// set fail reason
|
|
SWITCH eFailReason
|
|
CASE FAIL_DEFAULT
|
|
// no fail reason
|
|
BREAK
|
|
CASE FAIL_HELI_DESTROYED
|
|
sFailReason = "DP_FAIL1"//The Cargobob was destroyed.
|
|
BREAK
|
|
CASE FAIL_HELI_ABANDONED
|
|
sFailReason = "DP_FAIL2"//Trevor abandoned the Cargobob.
|
|
BREAK
|
|
CASE FAIL_HELI_STUCK
|
|
sFailReason = "DP_FAIL3"//The Cargobob got stuck
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
// call appropriate mission failed function
|
|
IF eFailReason = FAIL_DEFAULT
|
|
MISSION_FLOW_MISSION_FAILED()
|
|
ELSE
|
|
MISSION_FLOW_MISSION_FAILED_WITH_REASON(sFailReason)
|
|
ENDIF
|
|
|
|
iControlFlag = 1
|
|
BREAK
|
|
|
|
CASE 1 // wait for fail fade to finish
|
|
IF GET_MISSION_FLOW_SAFE_TO_CLEANUP()
|
|
|
|
// check if we need to respawn the player in a different position,
|
|
// if replay accepted, warp to short distance away from the blip position
|
|
// (far enough away so that the mission gets blipped)
|
|
IF HAS_PLAYER_ACCEPTED_REPLAY()
|
|
// SET_REPLAY_ACCEPTED_WARP_LOCATION()
|
|
ELSE
|
|
// if he rejects the replay only warp him to just outside military base if he failed inside it
|
|
// (This is a restricted area so is already handled by the replay controller)
|
|
|
|
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<-1139.1643, 2662.4648, 16.9873>>, 74.9925)
|
|
|
|
// SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(vHeliCoords, fHeliHeading)
|
|
SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<-1147.5040, 2663.1035, 17.0938>>, 40.2433)
|
|
ENDIF
|
|
|
|
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
|
|
ELSE
|
|
// fade not finished, you may want to handle dialogue or other behaviour here
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
|
|
|
|
// ===========================================================================================================
|
|
// Script Loop
|
|
// ===========================================================================================================
|
|
|
|
SCRIPT
|
|
|
|
PRINTSTRING("DOCKS HEIST PREP 2B LAUNCHED")
|
|
PRINTNL()
|
|
|
|
SET_MISSION_FLAG(TRUE)
|
|
|
|
IF (HAS_FORCE_CLEANUP_OCCURRED())
|
|
// SET_REPLAY_ACCEPTED_WARP_LOCATION()
|
|
Mission_Flow_Mission_Force_Cleanup()
|
|
Mission_Cleanup()
|
|
ENDIF
|
|
|
|
SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY", 30)
|
|
|
|
SETUP_MISSION()
|
|
|
|
IF NOT IS_REPLAY_IN_PROGRESS()
|
|
missionStage = STAGE_OPENING_CUTSCENE
|
|
ELSE
|
|
missionStage = STAGE_INIT_MISSION
|
|
ENDIF
|
|
|
|
WHILE (TRUE)
|
|
|
|
WAIT(0)
|
|
|
|
//Run a controller for player characters every frame through out the mission.
|
|
// PLAYER_BUDDY_CONTRLER()
|
|
|
|
//Controls the tasks for the battle buddies if they are driving the vehicles.
|
|
// IF missionStage <> STAGE_END_CUTSCENE
|
|
// MONITOR_BATTLE_BUDDIES()
|
|
// ENDIF
|
|
|
|
//For video recorder
|
|
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistPrep2B")
|
|
|
|
SCENARIO_CONTROLLER()
|
|
|
|
MISSION_DIALOGUE_CONTROL()
|
|
|
|
STATS_CONTROL()
|
|
|
|
POLICE_CHECK()
|
|
|
|
MISC_CHECK()
|
|
|
|
// PRINTSTRING("mission is running and missionstage = ") PRINTINT(ENUM_TO_INT(missionStage)) PRINTNL()
|
|
|
|
SWITCH missionStage
|
|
|
|
CASE STAGE_OPENING_CUTSCENE
|
|
DO_STAGE_OPENING_CUTSCENE()
|
|
BREAK
|
|
|
|
CASE STAGE_INIT_MISSION
|
|
DO_STAGE_INIT_MISSION()
|
|
BREAK
|
|
|
|
CASE STAGE_STEAL_CARGOBOB
|
|
DO_STAGE_STEAL_CARGOBOB()
|
|
BREAK
|
|
|
|
CASE STAGE_ESCAPE_MILITARY
|
|
DO_STAGE_ESCAPE_MILITARY()
|
|
BREAK
|
|
|
|
CASE STAGE_FLY_CARGOBOB_TO_HANGER
|
|
DO_STAGE_FLY_CARGOBOB_TO_HANGER()
|
|
BREAK
|
|
|
|
CASE STAGE_END_CUTSCENE
|
|
DO_STAGE_END_CUTSCENE()
|
|
BREAK
|
|
|
|
CASE STAGE_MISSION_FAILED
|
|
DO_STAGE_MISSION_FAILED()
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
// only do fail checks and debug keys if we haven't failed mission
|
|
IF missionStage <> STAGE_MISSION_FAILED
|
|
|
|
//Run fail checks throughout mission only if the mission is allowed to fail.
|
|
IF missionCanFail = TRUE
|
|
FAIL_CHECKS()
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
DEBUG_KEYS()
|
|
// DO_DEBUG_NAMES()
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
//Checks for debug keys being pressed. J-skip, S-Pass, F-Fail, P-Previous
|
|
IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iReturnStage, 0) = TRUE
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_OUT(0)
|
|
ENDIF
|
|
iControlFlag = 0
|
|
IF iReturnStage = 0
|
|
MissionStageBeingSkippedTo = TRUE
|
|
missionStage = STAGE_STEAL_CARGOBOB
|
|
ENDIF
|
|
IF iReturnStage = 1
|
|
MissionStageBeingSkippedTo = TRUE
|
|
missionStage = STAGE_ESCAPE_MILITARY
|
|
ENDIF
|
|
IF iReturnStage = 2
|
|
MissionStageBeingSkippedTo = TRUE
|
|
missionStage = STAGE_FLY_CARGOBOB_TO_HANGER
|
|
ENDIF
|
|
IF iReturnStage = 3
|
|
MissionStageBeingSkippedTo = TRUE
|
|
missionStage = STAGE_END_CUTSCENE
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
// Script should never reach here. Always terminate with cleanup function.
|
|
ENDSCRIPT
|
|
|