//// ***************************************************************************************** //// ***************************************************************************************** //// ***************************************************************************************** //// //// 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_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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>, 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, <>) // // 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, <>, 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, <>, 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