//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 "commands_vehicle.sch" USING "commands_path.sch" USING "flow_public_core_override.sch" USING "commands_ped.sch" USING "commands_task.sch" USING "selector_public.sch" using "dialogue_public.sch" USING "commands_audio.sch" USING "commands_graphics.sch" USING "script_blips.sch" USING "script_ped.sch" USING "replay_public.sch" USING "select_mission_stage.sch" USING "mission_stat_public.sch" USING "clearMissionArea.sch" USING "locates_public.sch" USING "net_include.sch" using "rGeneral_include.sch" using "usefulCommands.sch" USING "building_control_public.sch" USING "script_blips.sch" USING "taxi_functions.sch" USING "commands_recording.sch" string remlastConv USING "ped_player_reactions.sch" //USING "AI_Sweep.sch" #IF IS_DEBUG_BUILD USING "scripted_cam_editor_public.sch" #ENDIF vehicle_index cutscene_player_vehicle // ================================ preset flag values ====================== CONST_INT TAO_EVENT_ANIM_PLAYING 900 CONST_INT MAX_TRAIL_POINTS 61 USING "gas_trails.sch" // ================================================ DATA FOR PEDS =============================================== CONST_INT MAX_PEDS 26 int iNextPedVariation CONST_INT ped_taos_translator 10 CONST_INT ped_tao 11 CONST_INT ped_janet 12 CONST_INT ped_oldMan1 13 CONST_INT ped_oldMan2 14 vector vehicleSpeed enum enumClenup CLEANUP_PASS, CLEANUP_FAIL, CLEANUP_FAIL_DEATH, //to make sure peds are not deleted on death fail CLEANUP_SKIP endenum ENUM enumAction action_none, // 0 action_spawn, // 1 action_roll_barrels, // 2 action_roll_barrels_at_front_of_house, action_shoot_cans, // 3 action_balcony_guard_patrol, // 4 action_balcony_guard_chat, // 5 action_chatting, // 6 action_guarding, // 7 action_patrol, // 8 action_respond_to_dead_ped, // 9 action_respond_to_bullet, // 10 action_alert_buddies, // 11 action_looking_about, // 12 action_smoke, // 13 action_binoculars, action_drinking, action_pissing, action_move_inside_house, action_chicken, // 14 action_respond_to_nearby_alerted_ped, // 15 action_respond_to_adjacent_alerted_ped, // 16 action_alerted, // 17 action_advance_on_hill, //18 action_wait_on_player_advance_to_house, //19 action_sit, //21 action_combat, action_flee, action_cooking, action_drugs, action_meth_lab, action_meth_lab_respond_to_player, action_hum, action_get_in_car ENDENUM ENUM enumRole role_chicken, role_guard_outside, role_guard_house, role_worker, role_cook, role_innocent ENDENUM enum enumPlacement pos_balcony_far_left, pos_balcony_doorway, pos_balcony_veranda_walk, pos_porch, pos_barrels_1, pos_barrels_2, pos_garden_chat_1, pos_garden_chat_2, pos_shooting_bottle_1, pos_shooting_bottle_2, pos_inside_right_window, pos_inside_utility_room, pos_inside_seated1, pos_inside_seated2, pos_inside_seated3, pos_inside_cards1, pos_inside_cards2, pos_inside_cards3, pos_inside_kitchen1, pos_inside_kitchen2, pos_inside_bystairs1, pos_inside_bystairs2, pos_innocent_chef, pos_innocent_drugden, pos_emergency_attacker, pos_none ENDENUM struct structPedData ped_index id enumRole role enumPlacement placement enumAction action enumAction lastAction int actionFlag = 0 vector vpos, vPosB float floatA, floatB int intA, intB, pedOfInterest bool nearbyreactingPed WEAPON_TYPE weapon = DUMMY_MODEL_FOR_SCRIPT BLIP_INDEX blip OBJECT_INDEX obj bool sniped bool alerted bool registeredKilled REL_GROUP_HASH rel AI_BLIP_STRUCT aiBlip // enum_state myState = STATE_SPAWN ENDSTRUCT structPedData zPED[max_peds] int iStagger //relationship groups REL_GROUP_HASH HASH_FRIEND_GROUP REL_GROUP_HASH HASH_FOE_GROUP REL_GROUP_HASH HASH_IGNORE_GROUP REL_GROUP_HASH taorelgroup // ped reactions //ped reaction stuff structCheckState pedReactionState[MAX_PEDS] diaData diAlertAllSeen, diAlertAllUnseen, diSeePlayer, diHearPlayer,diHearPlayerAgain, diLostPlayer, diBullet, diDeadBody, diExplosion, diFoundPlayer vector vDefAreas[21] string convBlock = "CHI2AUD" // final cutscene data bool editCutscene bool resetCutscene bool cutsceneRunning bool bOutputCut struct structCamShot vector camStartPos,camStartRot vector camEndPos,camEndRot float camDuration,totalDuration float camStartFOV,camEndFOV int camPanType int flameNode = -1 endstruct struct StructcutEvent bool triggered int triggerShot float triggerTime string name int flag int timer endstruct StructcutEvent CutEvent[6] structCamShot camShot[4] float cutDurationTime int iCurrentCamShot bool bSetCamA[4],bSetCamB[4] #if is_debug_build WIDGET_GROUP_ID cutsceneWidget #endif vector basementFlames[13] int basementFlame // =================================================== vehicles ==================================================== vehicle_index vehPlayer VEHICLE_INDEX BarrelVan VEHICLE_INDEX vehBlazer VEHICLE_INDEX vehOneil //navmesh bloc INT navblockA // ============================================== MISSION STAGES ==================================================== CONST_INT MAX_SKIP_MENU_LENGTH 11 ENUM mission_stage_flag init_mission=0, intro_cut, drive_to_farm, farm_cutscene, snipe_from_hill, get_to_house, inside_house, do_petrol_trail, explosion_cut, end_mission, missionPassed, stage_null ENDENUM mission_stage_flag missionStage int stageFlag #IF IS_DEBUG_BUILD MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH] #ENDIF string sFailReason bool bFailMission // ====================================================== Data for events ============================================== enum EnumEvents events_resolve_vehicles_at_start, events_give_sniper, events_trevor_phonecall, events_trevor_rants, events_stop_and_leave_vehicle, events_spawn_house, events_reset_house_rayfire, events_release_bottle_shooting_anims, events_remove_vehicles_and_peds, events_control_dispatch, events_petrol_help, events_explode_petrol_can, events_house_explodes_rayfire, events_play_audio_stream, events_Trevor_walks_in_final_cutscene, events_kill_alerted_ped_help, events_check_petrol_trail, events_check_player_out_front, events_check_trail_burning_safe, events_check_trail_burning_fail, events_detach_barrels_from_peds, events_never_do_locates_skips, events_pin_interior, events_spawn_bottles, events_unfreeze_pallet, events_continuous_stats_tracking, events_animate_bar, events_force_farm_doors_drawing, events_set_Radio, events_fails ENDENUM struct structEvents EnumEvents event bool active int flag bool persists bool boolA int intA ENDSTRUCT CONST_INT max_events 20 CONST_INT CLEANUP -1 structEvents events[max_events] // ====================================================== DIALOGUE STUFF ========================================== enum enumConvProgress CONV_EMPTY, CONV_SEEK, CONV_PANC, CONV_PANC2 ENDENUM //enumConvProgress LAST_CONVERSATION = CONV_EMPTY //INT CONVERSATION_GAP //int random_lines_played //enumComments nextSweepCommentToPlay = COMMENT_NONE rel_group_hash relGroupBar // ======================================================== cutscenes ============================================= CAMERA_INDEX cam1 int iCamSync float fShakeValue int cutChangeTime int safeSkipTime ped_index tempPed ped_index ped_oneil1, ped_oneil2 //int sceneBOOM int iCamFlag bool bSneakyPass bool bCutsceneWasSkipped enum ENUM_CUTSCENE_FIRST_SHOT SHOT_NONE, SHOT_BASEMENT, SHOT_HOUSE_EXPLOSION, SHOT_NORMAL endenum ENUM_CUTSCENE_FIRST_SHOT CUTSCENE_FIRST_SHOT = SHOT_NONE // =================================================== Debug variables ========================================== #if IS_DEBUG_BUILD bool bExplodeHouseLoop,bExplodeHouseLoopShort bool bShowActionsA,bShowActionsB,bShowEvents,bSkipDrive,bShowFocus bool bRecordPedData int iRecordedPed bool bKillOutsidePeds bool bRecordPed int iPedToRecord bool bAllowShitskip bool bScreenConditions,bScreenActionsA,bScreenInstructions,bSshowDialogue #ENDIF // =========================================================== Fuel can ========================================== int gasInCan PICKUP_INDEX health_pickup PICKUP_INDEX piPickups[5] // ===================================== shoot cans =============================================== object_index oCans[10] // ============================================================ fire trail ====================================== int iFireIgniteSound vector vIgnitePos // ========================================================= Rayfire RAYFIRE_INDEX rfThisRayfire bool bRayfireTriggered float fSlowMoPhase // ===================================================== All other variables ========================================= PICKUP_INDEX pickup_gas int iRadSound = -1 BLIP_INDEX missionBlip //INTERIOR_INSTANCE_INDEX houseInterior INTERIOR_INSTANCE_INDEX int_farm OBJECT_INDEX oGasCan object_index obja,objb object_index obj_cellphone LOCATES_HEADER_DATA locatesData structPedsForConversation dChinese2 int iSyncStandingLoop,iSyncStandUp,iSyncCower,iStandAlternative,iGrabGun object_index objShotgun bool bBlockShooterDialogue bool bcutscenePLaying bool bForceAnimTimeA,bForceAnimTimeB, bPlayerOnHill #if IS_DEBUG_BUILD WIDGET_GROUP_ID widget_debug #ENDIF int iNavBlock=-1 //int failReason =-1 int iBarrels1,iBarrels2 int thisSnipeCount int iRandomCounter //counter for random rant lines from Trevor vector cellar_explosions[9] // ==================================================== define actions ==================================================== CONST_INT MAX_ACTIONS 20 CONST_INT MAX_CONDITIONS 27 CONST_INT MAX_INSTRUCTIONS 5 CONST_INT MAX_DIALOGUES 17 ENUM enumconditions COND_NULL, COND_GO_TO_FARM_START, COND_INITIAL_INSTRUCTIONS_PLAYED, COND_PLAYER_IN_ANY_CAR, COND_GO_TO_FARM_END, COND_START_FARM_ASSAULT, COND_BULLET_IMPACTED_BY_BARRELS, COND_SHOOTING_PED_DEAD, COND_ENEMY_PED_REACTING, COND_ALL_ENEMY_ALERTED, COND_ALL_OUTSIDE_ENEMY_DEAD, COND_PLAYER_IN_METH_LAB, COND_PLAYER_IN_HOUSE, COND_PLAYER_DOWNSTAIRS, COND_PLAYER_APPROACHING_HOUSE, COND_BASEMENT_PED_DEAD_IN_BASEMENT, COND_ATTACKERS_ALL_DEAD, COND_TREVOR_NEAR_BASEMENT, COND_TREVOR_NEAR_STAIRS, COND_TREVOR_AT_STAIRS, COND_PISSING_DIALOGUE_CAN_PLAY, COND_TREVOR_SEEN, COND_RESPOND_TO_BULLET, COND_ONE_ATTACKER_LEFT_OUTSIDE, COND_FAIL_FOR_LEAVING_FARM, COND_BARREL_ROLL_PEDS_IN_VAN, COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE, COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED, COND_START_PETROL_TRAIL, COND_PLAYER_HAS_PETROL_CAN, COND_JERRY_CAN_DESTROYED, //allows this condition to span across both mission stages COND_END_FARM_ASSAULT, COND_PLAYER_OUT_FRONT, COND_OUT_OF_GAS, COND_GAS_TRAIL_COMPLETE, COND_LAST_BLIP_POURED_ON, COND_PLAYER_POURING_GAS, COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE, COND_GAS_TRAIL_REACHED_DOORWAY, COND_GAS_TRAIL_IGNITED_INCORRECTLY, COND_TREVOR_INSIDE_HOUSE, COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK, COND_40M_FARM_WARNING, COND_60M_FARM_FAIL, COND_EXPLOSION_IN_BASEMENT, COND_END_PETROL_TRAIL, COND_FARM_LEAVE_START, COND_GET_WANTED_LEVEL, COND_PLAYER_300_FROM_FARM, COND_PLAYER_500_FROM_FARM, COND_GOT_WANTED_LEVEL, COND_BUILDING_STATE_SWAPPED, COND_FARM_LEAVE_END ENDENUM ENUM enumInstructions INS_NULL, INS_SPECIAL_ABILITY_BOOST, INS_DESTROY_METH_LAB, ins_enemy_reacting, INS_SPECIAL_ABILITY, ins_all_enemy_reacting, INS_QUICK_KILL_HELP, INS_PICK_UP_GAS_CAN, INS_USING_GAS_CAN, ins_missed_a_bit, ins_dont_abandon_farm, ins_fast_stealth, INS_GET_CLEAR_OF_FARM, INS_LOSE_WANTED_LEVEL ENDENUM enum enumDialogue DIA_NULL, //drive to meet dia_whatnow, dia_trevor_rage_comments, dia_stop_trevor_getting_to_basement, dia_cook_sees_ped_die, dia_dont_let_him_down, dia_hes_in_meth_lab, dia_trevor_see_basement_peds_leave, dia_pissing_guy, dia_trevor_spotted_outside, dia_find_trevor, dia_attacking_trevor_outside, dia_attacking_trevor_inside, DIA_RESPOND_TO_ALERT, dia_trevor_seen_inside_house, DIA_RESPOND_TO_BULLET, dia_last_man_standing, dia_trevor_approaches_house, dia_shooting_Barrels, Dia_TREVOR_SAYS_HARD_WAY, Dia_stay_in_house, DIA_PICKED_UP_JERRY_CAN, DIA_POURING_PETROL, DIA_LIGHT_FUEL, DIA_EXPLODE_HOUSE, DIA_FUEL_BURN, DIA_MISSED_A_BIT, DIA_BOOM ENDENUM enum enumActions act_null, act_get_stalls, ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE, ACT_REMOVE_BAR_PEDS, ACT_LOAD_FRUSTROM, ACT_LOAD_SOUNDSET, ACT_MAKE_BAR_PEDS_FLEE, ACT_BAR_PEDS_LOOK_AT_TREVOR, ACT_SLOW_DOWN_PLAYER_IN_CHOPPER, ACT_BLEND_OUT_OF_TREVOR_RAGE, ACT_LOAD_END_CUT_FRUSTROM, ACT_BOMB_IN_BASEMENT, act_shooting_peds_witness_impact_at_barrels, act_stat_double_kill, act_MUSIC_start_snipe, act_MUSIC_approach_house_or_alert, act_create_petrol_can_with_blip, act_stage_prep, act_snipe_cams, act_remove_initial_assets, act_outside_peds_flee, act_remove_upstairs_peds, act_MUSIC_enter_house, act_remaining_peds_flee, act_window_ped_walks_inside, act_put_player_in_action_mode, act_end_stealth_audio_Scene, act_enemy_alerted_audio_Scene, act_end_enemy_alerted_audio_Scene, act_modify_ped_seeing_range, act_spawn_blazer, ACT_PREP_PETROL_POUR, ACT_CONTROL_PETROL_BLIPS, ACT_PETROL_ASSIST_ROUTE, ACT_FUDGE_RADAR_ZOOM, ACT_MUSIC_PICKS_UP_JERRY_CAM, ACT_MUSIC_TRAIL_IGNITED, ACT_AUDIO_SCENE_WITH_CAN, ACT_PREP_EXPLOSION_AUDIO, act_remove_barrel_peds, act_player_got_to_basement_sneakily, ACT_ANIMATE_CHINESE, ACT_RADIO_SOUND, act_remove_van_peds, act_audio_scene_in_house, act_reset_bottle_shooting_ped_accuracy, act_basement_ped, ACT_WHIMPERING, ACT_GET_WANTED_LEVEL, ACT_CHANGE_BUILDING_STATE, ACT_STAT_POUR_GAS, ACT_FUDGE_GAS_AMMO, ACT_STOP_MUSIC, ACT_FIRE_AUDIO, ACT_ENABLE_TAXI, ACT_RESET_STUFF, ACT_REMOVE_SOME_ASSETS endenum ENUM enumFails FAIL_OUT_OF_GAS, FAIL_GAS_TRAIL_IGNITED_EARLY, FAIL_GAS_TRAIL_NOT_COMPLETE, fail_kill_cheng_or_translator, FAIL_ABANDONED_FARM, FAIL_JERRY_CAN_DESTROYED ENDENUM ENUM enumACTIONplayout PLAYOUT_ON_TRIGGER, PLAYOUT_ON_COND, SKIP_SET_TO_COMPLETE endenum STRUCT structactions enumActions action = ACT_NULL bool active bool ongoing bool completed bool needsCleanup bool trackCondition int flag int intA,intB float floatA ENDSTRUCT structactions actions[MAX_ACTIONS] enum andOrEnum cFORCEtrue, cIGNORE, cIF, cIFnot, cAND, cAndNOT, cOR, cWasTrueNowFalse, cORbracket endenum bool conditionsTrue bool bracketOpen struct structConditions enumconditions condition = COND_NULL bool active bool returns bool wasTrue int flag int intA,intB float floatA endstruct structConditions conditions[MAX_CONDITIONS] struct structInstructions enumInstructions ins = INS_NULL bool bCompleted int flag int intA #if IS_DEBUG_BUILD bool CONDTRUE #endif endstruct structInstructions instr[MAX_INSTRUCTIONS] struct structDialogue enumDialogue dial = DIA_NULL bool bCompleted bool bStarted int flag int intA,intB,intC #if IS_DEBUG_BUILD bool condTrue #endif endstruct structDialogue dia[MAX_DIALOGUES] struct convStoreStruct int speakerNo ped_index pedIndex string speakerLabel endstruct convStoreStruct convStore[4] bool bLastConvoWithoutSubtitles TEXT_LABEL_23 restartSubtitleLine,restartSubtitleRoot PROC SAFEWAIT(int waitDebug,bool bAllowTerminateThread=TRUE) waitDebug=waitDebug bAllowTerminateThread=bAllowTerminateThread #if IS_DEBUG_BUILD IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)) IF bAllowTerminateThread TERMINATE_THIS_THREAD() ENDIF ENDIF #endif //cprintln(debug_trevor3,"wait: ",waitDebug) WAIT(0) ENDPROC FUNC BOOL IS_VEHICLE_VALID_AND_DRIVEABLE(vehicle_INDEX vehID) IF DOES_ENTITY_EXIST(vehID) IF IS_VEHICLE_DRIVEABLE(vehID) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC // ==================================================== Prep peds ================================================== proc INIT_REL_GROUPS() ADD_RELATIONSHIP_GROUP("MYFRIEND",HASH_FRIEND_GROUP) ADD_RELATIONSHIP_GROUP("FOE",HASH_FOE_GROUP) ADD_RELATIONSHIP_GROUP("IGNORE",HASH_IGNORE_GROUP) ADD_RELATIONSHIP_GROUP("BARpeds", relGroupBar) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_DISLIKE,relGroupBar,RELGROUPHASH_PLAYER) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,GET_PED_RELATIONSHIP_GROUP_HASH(player_ped_id()),HASH_FOE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,HASH_FOE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(player_ped_id())) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_FRIEND_GROUP,HASH_IGNORE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_FOE_GROUP,HASH_IGNORE_GROUP) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_IGNORE_GROUP,GET_PED_RELATIONSHIP_GROUP_HASH(player_ped_id())) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,HASH_IGNORE_GROUP,HASH_FOE_GROUP) ENDPROC proc prep_ped(enumRole pedRole,enumAction pedAction,enumPlacement placement) int iPos = ENUM_TO_INT(placement) zPED[iPos].role = pedRole zPED[iPos].action = pedAction zPED[iPos].placement = placement zPED[iPos].actionFlag = 0 ENDPROC // shooting cans FUNC BOOL FIND_CAN_TO_HIT(int &iCanToHit) iCanToHit = 0 int iCount iCount = 0 iCanToHit = GET_RANDOM_INT_IN_RANGE(0,10) bool bFound bFound=FALSE WHILE NOT bFound IF DOES_ENTITY_EXIST(ocans[iCanToHit]) AND IS_ENTITY_IN_ANGLED_AREA( ocans[iCanToHit], <<2495.017090,4970.170410,44.218082>>, <<2493.500732,4971.556152,45.402481>>, 1.375000) RETURN TRUE ELSE iCanToHit++ iCount++ IF iCanToHit = COUNT_OF(oCans) iCanToHit = 0 ENDIF ENDIF IF iCount = 10 RETURN FALSE ENDIF ENDWHILE RETURN FALSE ENDFUNC FUNC BOOL IS_PLAYER_PRESSING_A_CONTROL_BUTTON() IF GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_LR) != 127 OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_UD) != 127 OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_ATTACK) OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_AIM) OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_LOOK_UD) != 127 OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_LOOK_LR) != 127 RETURN TRUE ENDIF RETURN FALSE ENDFUNC // ========================================================= FUEL TRAIL ======================================= PROC REMOVE_DEAD_PEDS_ON_TRAIL_ROUTE() INT i, j vector vpos REPEAT COUNT_OF(gasTrail) i IF NOT ARE_VECTORS_EQUAL(gasTrail[i].coord, <<0.0, 0.0, 0.0>>) STOP_FIRE_IN_RANGE(gasTrail[i].coord,4.0) clear_Area(gasTrail[i].coord,2.0,true) REPEAT COUNT_OF(zped) j IF DOES_ENTITY_EXIST(zped[j].id) vPos = GET_ENTITY_COORDS(zped[j].id, FALSE) IF VDIST2(vPos, gasTrail[i].coord) < 2.0 AND vPos.z > 43.9 // IF NOT IS_ENTITY_ON_SCREEN(zped[j].id) // IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zped[j].id) > 10 DELETE_PED(zped[j].id) // ENDIF // ENDIF ENDIF ENDIF ENDREPEAT ENDIF ENDREPEAT ENDPROC PROC PURGE_CONVERSATIONS(bool letConversationFinish) bLastConvoWithoutSubtitles = FALSE IF letConversationFinish KILL_FACE_TO_FACE_CONVERSATION() ELSe KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDIF ENDPROC ///INTERIOR GUBBINS /// bool INTERIOR_INSTANCE_INDEX pinnedInterior bool bPinningInterior PROC PIN_INTERIOR(vector vInterior) pinnedInterior = GET_INTERIOR_AT_COORDS(vInterior) bPinningInterior = TRUE ENDPROC PROC INTERIOR_PINNING() IF bPinningInterior IF IS_INTERIOR_READY(pinnedInterior) PIN_INTERIOR_IN_MEMORY(pinnedInterior) bPinningInterior = FALSE ENDIF ENDIF ENDPROC // ===================================== music ======================================== // music bool bNewMusicRequest,bRequiresPreload,bPreloadRequest string sMusicToPlay,sPreloadMusic proc playMusic(string musicToPlay, bool bPreload, string musicToLoadNext) bNewMusicRequest = TRUE bRequiresPreload = bPreload sMusicToPlay = musictoPlay sPreloadMusic = musicToLoadNext endproc FUNC BOOL control_music() If bNewMusicRequest If bRequiresPreload ////cprintln(debug_Trevor3,"Want to play ",sMusicToPlay," with preload") IF PREPARE_MUSIC_EVENT(sMusicToPlay) IF TRIGGER_MUSIC_EVENT(sMusicToPlay) bNewMusicRequest = FALSE bRequiresPreload = FALSE RETURN TRUE ENDIF ENDIf ELSE ////cprintln(debug_Trevor3,"Want to play ",sMusicToPlay) IF TRIGGER_MUSIC_EVENT(sMusicToPlay) bNewMusicRequest = FALSE RETURN TRUE ENDIF ENDIF ELSE If bPreloadRequest IF PREPARE_MUSIC_EVENT(sPreloadMusic) bPreloadRequest=FALSE ENDIf ENDIF ENDIF return false endfunc // ======================================================== MISC PROCS ========================================== PROC FAIL_MISSION(string thisFailReason) sFailReason = thisFailReason bFailMission = TRUE endproc func int findSeenDeadPed(int iPedLooking) int ie float fHeading int iClosest = -1 float fClosestDistance = 999999.0 float fDistance REPEAT COUNT_OF(zPED) ie if does_entity_exist(zPED[ie].id) if IS_PED_INJURED(zPED[ie].id) fHeading = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(zPED[iPedLooking].id,FALSE),GET_ENTITY_COORDS(zPED[ie].id,FALSE)) if ABSF(fHeading-GET_ENTITY_HEADING(zPED[iPedLooking].id)) < 90.0 fDistance = GET_DISTANCE_BETWEEN_ENTITIES(zPED[iPedLooking].id,zPED[ie].id) if fDistance < fClosestDistance fClosestDistance = fDistance iClosest = ie ENDIF ENDIF ENDIF ENDIF ENDREPEAT if iClosest != -1 return iClosest ENDIF return -1 ENDFUNC proc set_event_int(EnumEvents eventToAdd, int iValue) int iE REPEAT COUNT_OF(events) iE if events[iE].active = TRUE if events[iE].event = eventToAdd events[iE].intA = iValue iE = COUNT_OF(events) ENDIF ENDIF ENDREPEAT endproc FUNC bool set_event_flag(enumEvents event, int iFlagValue) int i for i = 0 to MAX_EVENTS-1 if events[i].event = event if events[i].active = true events[i].flag = iFlagValue RETURN TRUE ENDIF ENDIF ENDFOR RETURN FALSE ENDFUNC func bool add_event(EnumEvents eventToAdd, bool persists_stage_skipping=FALSE) int iE REPEAT COUNT_OF(events) iE if events[iE].active = TRUE if events[iE].event = eventToAdd return FALSE ENDIF ENDIF ENDREPEAT REPEAT COUNT_OF(events) iE if events[iE].active = FALSE events[iE].active = TRUE events[iE].event = eventToAdd events[iE].flag = 0 events[iE].persists = persists_stage_skipping events[iE].boolA = FALSE events[iE].intA = 0 return TRUE ENDIF ENDREPEAT SCRIPT_ASSERT("Ran out of script events. Increase MAX_EVENTS") return FALSE ENDFUNC FUNC BOOL kill_event(EnumEvents eventToKill, bool bLetCleanup = TRUE) int iE REPEAT COUNT_OF(events) iE IF events[iE].event = eventToKill events[iE].flag = -1 IF NOT bLetCleanup events[iE].active = FALSE ENDIF return TRUE ENDIF ENDREPEAT return FALSE endFUNC func bool is_event_active(EnumEvents eventToCheck) int iE REPEAT COUNT_OF(events) iE if events[iE].active = TRUE if events[iE].event = eventToCheck return TRUE ENDIF ENDIF ENDREPEAT return FALSE endfunc func int GET_EVENT_FLAG(EnumEvents eventToCheck) int iE REPEAT COUNT_OF(events) iE if events[iE].active = TRUE if events[iE].event = eventToCheck return events[iE].flag ENDIF ENDIF ENDREPEAT return -1 endfunc FUNC STRING GET_ROLE_STRING(int iPEd) switch zPED[iPed].role case role_chicken RETURN("role_chicken") BREAK case role_guard_outside RETURN("role_guard_outside") BREAK case role_guard_house RETURN("role_guard_house") BREAK case role_worker RETURN("role_worker") BREAK case role_cook RETURN("role_cook") BREAK case role_innocent RETURN("role_innocent") BREAK endswitch return "" ENDFUNC FUNC STRING GET_PLACEMENT_STRING(int iPed) switch zPED[iPed].placement case pos_none RETURN("pos_none") BREAK case pos_balcony_far_left RETURN "pos_balcony_far_left" BREAK case pos_balcony_doorway RETURN "pos_balcony_doorway" BREAK case pos_balcony_veranda_walk RETURN "pos_balcony_veranda_walk" BREAK case pos_porch RETURN "pos_porch" BREAK case pos_barrels_1 RETURN "pos_barrels_1" BREAK case pos_barrels_2 RETURN "pos_barrels_2" BREAK case pos_garden_chat_1 RETURN "pos_garden_chat_1" BREAK case pos_garden_chat_2 RETURN "pos_garden_chat_2" BREAK case pos_shooting_bottle_1 RETURN "pos_shooting_bottle_1" BREAK case pos_shooting_bottle_2 RETURN "pos_shooting_bottle_2" BREAK case pos_inside_right_window RETURN "pos_inside_right_window" BREAK case pos_inside_utility_room RETURN "pos_inside_utility_room" BREAK case pos_inside_seated1 RETURN "pos_inside_seated1" BREAK case pos_inside_seated2 RETURN "pos_inside_seated2" BREAK case pos_inside_seated3 RETURN "pos_inside_seated3" BREAK case pos_inside_cards1 RETURN "pos_inside_cards1" BREAK case pos_inside_cards2 RETURN "pos_inside_cards2" BREAK case pos_inside_cards3 RETURN "pos_inside_cards3" BREAK case pos_inside_kitchen1 RETURN "pos_inside_kitchen1" BREAK case pos_inside_kitchen2 RETURN "pos_inside_kitchen2" BREAK case pos_inside_bystairs1 RETURN "pos_inside_bystairs1" BREAK case pos_inside_bystairs2 RETURN "pos_inside_bystairs2" BREAK case pos_innocent_chef RETURN "pos_innocent_chef" BREAK case pos_innocent_drugden RETURN "pos_innocent_drugden" BREAK ENDSWITCH return "" ENDFUNC FUNC STRING GET_THIS_STATE_STRING(int iPED) SWITCH pedReactionState[iPED].State CASE STATE_AMBIENT RETURN("STATE_AMBIENT") BREAK CASE STATE_COMBAT RETURN("STATE_COMBAT") BREAK CASE STATE_REACT RETURN("STATE_REACT") BREAK CASE STATE_SEEK RETURN("STATE_SEEK") BREAK CASE STATE_SPAWN RETURN("STATE_SPAWN") BREAK ENDSWITCH return("") ENDFUNC FUNC STRING GET_ACTION_STRING(int iPED) switch zPED[iPed].action case action_none RETURN "action_none" BREAK // 0 case action_spawn RETURN "action_spawn" BREAK // 1 case action_roll_barrels RETURN "action_roll_barrels" BREAK // 2 case action_shoot_cans RETURN "action_shoot_cans" BREAK // 3 case action_balcony_guard_patrol RETURN "action_balcony_guard_patrol" BREAK // 4 case action_balcony_guard_chat RETURN "action_balcony_guard_chat" BREAK // 5 case action_chatting RETURN "action_chatting" BREAK // 6 case action_guarding RETURN "action_guarding" BREAK // 7 case action_patrol RETURN "action_patrol" BREAK // 8 case action_respond_to_dead_ped RETURN "action_respond_to_dead_ped" BREAK // 9 case action_respond_to_bullet RETURN "action_respond_to_bullet" BREAK // 10 case action_alert_buddies RETURN "action_alert_buddies" BREAK // 11 case action_looking_about RETURN "action_looking_about" BREAK // 12 case action_smoke RETURN "action_smoke" BREAK // 13 case action_move_inside_house RETURN "action_move_inside_house" BREAK case action_chicken RETURN "action_chicken" BREAK // 14 case action_respond_to_nearby_alerted_ped RETURN "action_respond_to_nearby_alerted_ped" BREAK // 15 case action_respond_to_adjacent_alerted_ped RETURN "action_respond_to_adjacent_alerted_ped" BREAK // 16 case action_alerted RETURN "action_alerted" BREAK // 17 case action_advance_on_hill RETURN "action_advance_on_hill" BREAK //18 case action_wait_on_player_advance_to_house RETURN "action_wait_on_player_advance_to_house" BREAK //19 case action_sit RETURN "action_sit" BREAK //21 case action_combat RETURN "action_combat" BREAK case action_flee RETURN "action_flee" BREAK case action_meth_lab RETURN "action_meth_lab" BREAK case action_meth_lab_respond_to_player RETURN "action_meth_lab_respond_to_player" BREAK CASE action_hum RETURN "action_hum" BREAK case action_get_in_car RETURN "action_get_in_carm" BREAK endswitch return "" endfunc FUNC STRING GET_THIS_EVENT_STRING(int iEvent) switch events[iEvent].event case events_resolve_vehicles_at_start RETURN "events_resolve_vehicles_at_start" BREAK case events_give_sniper RETURN "events_give_sniper" BREAK case events_trevor_phonecall RETURN "events_trevor_phonecall" BREAK case events_trevor_rants RETURN "events_trevor_rants" BREAK case events_stop_and_leave_vehicle RETURN "events_stop_and_leave_vehicle" BREAK case events_spawn_house RETURN "events_spawn_house" BREAK case events_reset_house_rayfire RETURN "events_reset_house_rayfire" BREAK case events_release_bottle_shooting_anims RETURN "events_release_bottle_shooting_anims" BREAK case events_remove_vehicles_and_peds RETURN "events_remove_vehicles_and_peds" BREAK case events_control_dispatch RETURN "events_control_dispatch" BREAK case events_petrol_help RETURN "events_petrol_help" BREAK case events_explode_petrol_can RETURN "events_explode_petrol_can" BREAK case events_house_explodes_rayfire RETURN "events_house_explodes_rayfire" BREAK case events_Trevor_walks_in_final_cutscene RETURN "events_Trevor_walks_in_final_cutscene" BREAK case events_kill_alerted_ped_help RETURN "events_kill_alerted_ped_help" BREAK case events_check_petrol_trail RETURN "events_check_petrol_trail" BREAK case events_check_player_out_front RETURN "events_check_player_out_front" BREAK case events_detach_barrels_from_peds RETURN "events_detach_barrels_from_peds" BREAK case events_never_do_locates_skips RETURN "events_never_do_locates_skips" BREAK case events_pin_interior RETURN "events_pin_interior" BREAK case events_spawn_bottles RETURN "events_spawn_bottles" BREAK case events_unfreeze_pallet RETURN "events_unfreeze_pallet" BREAK case events_force_farm_doors_drawing RETURN "events_force_farm_doors_drawing" BREAK case events_fails RETURN "events_fails" BREAK case events_animate_bar RETURN "events_animate_bar" BREAK ENDSWITCH RETURN "" ENDFUNC func int get_ped_with_action(enumAction findAction, int count=0, bool onlyReturnIfAlive=FALSE) int ie repeat COUNT_OF(zPED) ie if zPED[ie].action = findAction if count = 0 IF onlyReturnIfAlive = FALSE OR (onlyReturnIfAlive=TRUE AND NOT IS_PED_INJURED(zPED[ie].id)) return ie ENDIF ELSE IF onlyReturnIfAlive = FALSE OR (onlyReturnIfAlive=TRUE AND NOT IS_PED_INJURED(zPED[ie].id)) count-- ENDIF ENDIF ENDIF ENDREPEAT return -1 ENDFUNC func int get_ped_with_actions(enumAction findActionA, enumAction findActionB=action_none, enumAction findActionC=action_none) int ie repeat COUNT_OF(zPED) ie if zPED[ie].action = findActionA OR (zPED[ie].action = findActionB AND findActionB != action_none) OR (zPED[ie].action = findActionC AND findActionC != action_none) RETURN ie ENDIF ENDREPEAT return -1 endfunc func int get_ped_with_role(enumRole findRole, enumPlacement withPlacement=pos_none) int ie repeat COUNT_OF(zPED) ie if zPED[ie].role = findRole if withPlacement != pos_none if zPED[ie].placement = withPlacement return ie ENDIF ELSE return ie ENDIF ENDIF ENDREPEAT SCRIPT_ASSERT("get_ped_with_role(): Couldn't find ped with specified action") return -1 ENDFUNC func int get_ped_with_placement(enumPlacement placement) int iR REPEAT COUNT_OF(zPED) iR if zPED[iR].placement = placement return iR ENDIF ENDREPEAT return -1 endfunc func bool FIND_CLOSEST_PED_OF_ROLE(int &iReturnSpeaker,enumRole findRole,bool onlyReturnLivingPeds = false) int i float fRange, fClosest = 9999.0 iReturnSpeaker=-1 repeat count_of(zPED) i IF zPED[i].role = findRole IF onlyReturnLivingPeds = FALSE OR (onlyReturnLivingPeds = TRUE AND NOT IS_PED_INJURED(zPED[i].id)) fRange = GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) If fRange < fClosest fClosest = fRange iReturnSpeaker = i endif ENDIF ENDIF ENDREPEAT IF iReturnSpeaker != -1 RETURN TRUE ENDIF return FALSE endfunc PROC set_ped_action(int iPed, enumAction nextAction, int actionFlag=0, int intA = 0) IF NOT IS_PED_INJURED(zPED[iPed].id) IF iPed >= 0 zPED[iPed].lastAction = zPED[iPed].action zPED[iPed].action = nextAction zPED[iPed].actionFlag = actionFlag zPED[iPed].vpos = <<0,0,0>> zPED[iPed].vposB = <<0,0,0>> zPED[iPed].floatA = 0 zPED[iPed].floatB = 0 zPED[iPed].intA = intA zPED[iPed].intB = 0 pedReactionState[iPed].State = STATE_AMBIENT ENDIF ENDIF ENDPROC func bool IS_PED_IN_VIEWING_ARC_FROM_PED(ped_index pedViewer, PED_INDEX pedToView, float viewingArc, float viewingRange, bool includeLOScheck=FALSE) vector vPedA, vPedB if not IS_ENTITY_DEAD(pedViewer) vPedA = GET_ENTITY_COORDS(pedViewer) if IS_ENTITY_DEAD(pedToView) vPedB = /*WITH DEADCHECK=FALSE*/ GET_ENTITY_COORDS(pedToView) ELSE vPedB = GET_ENTITY_COORDS(pedToView) ENDIF if ABSF(GET_ENTITY_HEADING(pedViewer) - GET_HEADING_FROM_COORDS(vPedA,vPedB,true)) < viewingArc/2 if GET_DISTANCE_BETWEEN_COORDS(vPedB,vPedB) < viewingRange if includeLOScheck = TRUE if HAS_ENTITY_CLEAR_LOS_TO_ENTITY(pedViewer,pedToView) return true ELSE return FALSE ENDIF ELSE return TRUE ENDIF ENDIF ENDIF ENDIF return FALSE ENDFUNC /* proc check_alerted_nearby_peds(int iAlertedPed) //if zPED[iAlertedPed].actionFlag = 0 IF zPED[iAlertedPed].placement != pos_balcony_far_left AND zPED[iAlertedPed].placement != pos_porch int iR REPEAT COUNT_OF(zPED) iR if iR != iAlertedPed if DOES_ENTITY_EXIST(zPED[iR].id) IF zPED[iR].role = role_guard_outside if zPED[iR].action != action_alert_buddies and zPED[iR].action != action_alerted and zPED[iR].action != action_respond_to_bullet and zPED[iR].action != action_respond_to_dead_ped and zPED[iR].action != action_respond_to_nearby_alerted_ped and zPED[iR].action != action_respond_to_adjacent_alerted_ped if not IS_PED_INJURED(zPED[iR].id) if GET_DISTANCE_BETWEEN_ENTITIES(zPED[iAlertedPed].id,zPED[iR].id) < 3.0 set_ped_action(iR,action_respond_to_adjacent_alerted_ped) zPED[iR].intA = iAlertedPed ELIF GET_DISTANCE_BETWEEN_ENTITIES(zPED[iAlertedPed].id,zPED[iR].id) < 19.0 AND IS_PED_IN_VIEWING_ARC_FROM_PED(zPED[iR].id,zPED[iAlertedPed].id,60,19.0) vector v1,v2 if not IS_PED_INJURED(zPED[iAlertedPed].id) v1 = GET_ENTITY_COORDS(zPED[iAlertedPed].id) v2 = GET_ENTITY_COORDS(zPED[iR].id) IF absf(v1.z-v2.z) < 2.0 set_ped_action(iR,action_respond_to_nearby_alerted_ped) ENDIF ENDIF ELSE IF zPED[iAlertedPed].placement = pos_barrels_1 OR zPED[iAlertedPed].placement = pos_barrels_2 OR zPED[iAlertedPed].placement = pos_garden_chat_1 OR zPED[iAlertedPed].placement = pos_garden_chat_2 IF zPED[iR].placement = pos_barrels_1 OR zPED[iR].placement = pos_barrels_2 OR zPED[iR].placement = pos_garden_chat_1 OR zPED[iR].placement = pos_garden_chat_2 set_ped_action(iR,action_respond_to_nearby_alerted_ped) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDREPEAT ENDIF //ENDIF ENDPROC */ PROC LOOK_AT_SOMETHING(int iPed) zPED[iPed].intB += floor(timestep() * 1000 ) SWITCH zped[iPed].placement CASE pos_garden_chat_2 IF zPED[iPed].intB > 2000 AND NOT IS_BIT_SET(zPED[iPed].intA,0) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,4000) SET_BIT(zPED[iPed].intA,0) ELIF zPED[iPed].intB > 8000 AND NOT IS_BIT_SET(zPED[iPed].intA,1) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2472.2966, 4962.6865, 47.2297>>,6000) SET_BIT(zPED[iPed].intA,1) ENDIF BREAK CASE pos_barrels_2 IF zPED[iPed].intB > 3000 AND NOT IS_BIT_SET(zPED[iPed].intA,0) IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_garden_chat_1)].id) TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_garden_chat_1)].id,4000) SET_BIT(zPED[iPed].intA,0) ENDIF ELIF zPED[iPed].intB > 11000 AND NOT IS_BIT_SET(zPED[iPed].intA,1) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2494.6335, 5001.9937, 46.6624>>,7000) SET_BIT(zPED[iPed].intA,1) ELIF zPED[iPed].intB > 20000 AND NOT IS_BIT_SET(zPED[iPed].intA,2) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2477.6335, 4966.9937, 46.6624>>,7000) SET_BIT(zPED[iPed].intA,2) ENDIF BREAK CASE pos_barrels_1 cprintln(debug_Trevor3,"Time : ",zPED[iPed].intB) IF zPED[iPed].intB > 3000 AND NOT IS_BIT_SET(zPED[iPed].intA,0) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,5000) SET_BIT(zPED[iPed].intA,0) cprintln(debug_Trevor3,"LOOK A") ELIF zPED[iPed].intB > 10000 AND NOT IS_BIT_SET(zPED[iPed].intA,1) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2461.4495, 4977.4805, 51.7483>>,6000) SET_BIT(zPED[iPed].intA,1) cprintln(debug_Trevor3,"LOOK B") ELIF zPED[iPed].intB > 18000 AND NOT IS_BIT_SET(zPED[iPed].intA,2) TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,6000) SET_BIT(zPED[iPed].intA,2) ENDIF BREAK ENDSWITCH /* int iLook IF zPED[iPed].intB = 0 IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_LOOK_AT_COORD) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK zPED[iPed].intB = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,7000) ENDIF ELSE IF GET_GAME_TIMER() > zPED[iPed].intB zPED[iPed].intB = 0 iLook = GET_RANDOM_INT_IN_RANGE(0,3) SWITCH iLook CASE 0 //look left TASK_LOOK_AT_COORD(zPED[iPed].id,<<2505.6335, 4996.9937, 46.6624>>,GET_RANDOM_INT_IN_RANGE(2000,5000)) BREAK CASE 1 //look left TASK_LOOK_AT_COORD(zPED[iPed].id,<<2472.2966, 4962.6865, 47.2297>>,GET_RANDOM_INT_IN_RANGE(2000,5000)) BREAK CASE 2 //look at someone SWITCH zped[iPed].placement CASE pos_garden_chat_2 TASK_LOOK_AT_COORD(zPED[iPed].id,<<2492.4648, 4977.3994, 46.8259>>,GET_RANDOM_INT_IN_RANGE(2000,5000)) BREAK CASE pos_barrels_2 IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_garden_chat_2)].id) TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_garden_chat_2)].id,GET_RANDOM_INT_IN_RANGE(2000,5000)) ENDIF BREAK CASE pos_barrels_1 IF NOT IS_PED_INJURED(zPed[enum_to_int(pos_barrels_2)].id) TASK_LOOK_AT_ENTITY(zPED[iPed].id,zPed[enum_to_int(pos_barrels_2)].id,GET_RANDOM_INT_IN_RANGE(2000,5000)) ENDIF BREAK ENDSWITCH BREAK ENDSWITCH ENDIF ENDIF*/ ENDPROC FUNC BOOL ped_aims_at_sphere(int iPed, vector vSphere, float radius, int duration=0) WEAPON_TYPE thisWeapon GET_CURRENT_PED_WEAPON(zped[iPed].id,thisWeapon) If thisWeapon != WEAPONTYPE_UNARMED if duration !=0 if zPED[iPed].intB = 0 zPED[iPed].intB = GET_GAME_TIMER() + duration ENDIF if GET_GAME_TIMER() > zPED[iPed].intB zPED[iPed].intB = 0 return TRUE ENDIF ENDIF bool bTrue IF NOT IS_PED_INJURED(zPED[iPed].id) if GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_task_perform_sequence) = FINISHED_TASK bTrue = TRUE ENDIF IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_TASK_AIM_GUN_AT_COORD) = PERFORMING_TASK bTrue = FALSE ENDIF IF GET_SCRIPT_TASK_STATUS(zPED[iPed].id,SCRIPT_TASK_SWAP_WEAPON) != FINISHED_TASK bTrue = FALSE ENDIF IF bTrue zPED[iPed].vposB = GET_RANDOM_POINT_IN_DISC_UNIFORM(vSphere,radius,0.3) vector vtemp vTemp = get_entity_coords(zped[iped].id) zPED[iPed].vposB.z = vTemp.z + 1.0 if IS_VECTOR_ZERO(zPED[iPed].vPos) zPED[iPed].vPos = zPED[iPed].vposB ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[iped].id,zPED[iPed].vposB) < 2.0 zPED[iPed].vposB.x += 2.0 ENDIF zPED[iPed].vpos = zPED[iPed].vpos + ((zPED[iPed].vPosB - zPED[iPed].vpos) * TIMESTEP() * 2.0) TASK_AIM_GUN_AT_COORD(zPED[iPed].id,zPED[iPed].vpos,GET_RANDOM_INT_IN_RANGE(3000,5000)) ENDIF ENDIF else SET_CURRENT_PED_WEAPON(zPED[iPed].id,GET_BEST_PED_WEAPON(zPED[iPed].id),true) endif RETURN FALSE ENDFUNC FUNC BOOL PED_MOVE_AIMING_AT_SPHERE(int iPed, vector moveTo, vector vSphere, float radius) IF NOT IS_PED_INJURED(zPED[iPed].id) WEAPON_TYPE thisWeapon GET_CURRENT_PED_WEAPON(zped[iPed].id,thisWeapon) If thisWeapon != WEAPONTYPE_UNARMED if GET_SCRIPT_TASK_STATUS(zPED[iPed].id,script_task_perform_sequence) = FINISHED_TASK and get_game_timer() > zPED[iPed].intB zPED[iPed].intB = get_game_timer() + GET_RANDOM_INT_IN_RANGE(4000,5000) zPED[iPed].vpos = GET_RANDOM_POINT_IN_DISC_UNIFORM(vSphere,radius,0.3) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(zPED[iPed].id,moveTo,zPED[iPed].vpos,PEDMOVE_RUN,FALSE,0.5,2.0) ENDIF if IS_ENTITY_AT_COORD(zPED[iPed].id,moveTo,<<0.5,0.5,2.0>>) return TRUE ENDIF ELSE SET_CURRENT_PED_WEAPON(zPED[iPed].id,GET_BEST_PED_WEAPON(zPED[iPed].id),true) ENDIF ENDIF return FALSE ENDFUNC proc SET_DEFENSIVE_AREA_BETWEEN_HOUSE_AND_PLAYER(int iPed) IF NOT IS_PED_INJURED(player_ped_id()) float heading float playerDistToHouse playerDistToHouse = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.890381,4975.631836,56.160000>>,false) IF playerDistToHouse < 30.0 //player is within close range of the house IF zped[iPed].intA = 0 zped[iPed].intA = 1 heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE) heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0) SET_PED_SPHERE_DEFENSIVE_AREA(zped[iPed].id,<<2444.890381+(SIN(heading)*30.0),4975.631836+(COS(heading)*30.0),45.160000>>,5.0) endif ELSE IF IS_VECTOR_ZERO(zped[iPed].vpos) heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE) heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0) playerDistToHouse = GET_RANDOM_FLOAT_IN_RANGE(30.0,playerDistToHouse) zped[iPed].vpos = <<2444.890381+(SIN(heading)*playerDistToHouse),4975.631836+(COS(heading)*playerDistToHouse),45.160000>> SET_PED_SPHERE_DEFENSIVE_AREA(zped[iPed].id,zped[iPed].vpos,8.0) ELSE //IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.890381,4975.631836,56.160000>>,false) < GET_DISTANCE_BETWEEN_COORDS(<<2444.890381,4975.631836,56.160000>>,zped[iPed].vpos) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),zped[iPed].vpos) > 20.0 heading = GET_HEADING_FROM_COORDS(<<2444.890381,4975.631836,56.160000>>,GET_ENTITY_COORDS(player_ped_id()),FALSE) heading = GET_RANDOM_FLOAT_IN_RANGE(heading-30.0,heading+30.0) playerDistToHouse = GET_RANDOM_FLOAT_IN_RANGE(30.0,playerDistToHouse) zped[iPed].vpos = <<2444.890381+(SIN(heading)*playerDistToHouse),4975.631836+(COS(heading)*playerDistToHouse),45.160000>> endif endif endif endif endproc // ================================================== Manage Dialogue ========================================== ped_index rpedInSlot[10] structPedsForConversation CHI2CONV bool convAlreadyCalledThisFrame func PED_INDEX rped_in_slot(int slot) return rpedInSlot[slot] ENDFUNC PROC ADD_PED_FOR_DIALOGUE_EXTRA(int speakerIndex, ped_index speaker, string speakerLabel) //may be a problem if aped gets added multiple times in different slots. Fix below: int iJ repeat count_of(rpedInSlot) iJ if rpedInSlot[iJ] = speaker //there should never be more than one situation for this REMOVE_PED_FOR_DIALOGUE(CHI2CONV,iJ) rpedInSlot[iJ] = null endif endrepeat if rpedInSlot[speakerIndex] != null REMOVE_PED_FOR_DIALOGUE(CHI2CONV,speakerIndex) ENDIF //if speakerIndex = 0 //SCRIPT_ASSERT("Use a non-zero speaker index") //cos this function won't work otherwise //ENDIF ADD_PED_FOR_DIALOGUE(CHI2CONV,speakerIndex,speaker, speakerLabel) rpedInSlot[speakerIndex] = speaker ENDPROC /* PROC REMOVE_INACTIVE_SPEAKERS(string thisConv, int iSp1,int iSp2, int iSp3, int iSp4) cprintln(debug_trevor3, isp1," ",isp2," ",isp3," ",isp4) int ij IF IS_STRING_NULL_OR_EMPTY(remlastConv) OR NOT ARE_STRINGS_EQUAL(remlastConv,thisConv) remlastConv = thisConv FOR ij = 0 to 15 IF CHI2CONV.PedInfo[ij].ActiveInConversation IF ij != iSp1 AND ij != iSp2 AND ij != iSp3 AND ij != isp4 CPRINTLN(DEBUG_TREVOR3,"remove pexd at dialogue: ",Ij," label: ",CHI2CONV.PedInfo[ij].VoiceID) REMOVE_PED_FOR_DIALOGUE(CHI2CONV,ij) ENDIF ENDIF ENDFOR ENDIF ENDPROC*/ func bool PLAYER_CALL_CHAR_CELLPHONE_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null) IF NOT IS_MESSAGE_BEING_DISPLAYED() OR IS_SUBTITLE_PREFERENCE_SWITCHED_ON() if rped_in_slot(speakerOne) != pedSpeakerOne or pedSpeakerOne = null ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) ENDIF if speakerTwo != -1 if rped_in_slot(speakerTwo) != pedSpeakerTwo or pedSpeakerTwo = null ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF ENDIF if speakerThree != -1 if rped_in_slot(speakerThree) != pedSpeakerThree or pedSpeakerThree = null ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF ENDIF IF CHAR_CALL_PLAYER_CELLPHONE(CHI2CONV,CHAR_ONEIL,"CHI2AUD",Label,CONV_PRIORITY_VERY_HIGH) return TRUE ENDIF ENDIF return FALSE endfunc func bool CREATE_CONVERSATION_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT convAlreadyCalledThisFrame convAlreadyCalledThisFrame = TRUE convStore[0].speakerNo = speakerOne convStore[0].pedIndex = pedSpeakerOne convStore[0].speakerLabel = speakerOneLabel convStore[1].speakerNo = speakerTwo convStore[1].pedIndex = pedSpeakerTwo convStore[1].speakerLabel = speakerTwoLabel convStore[2].speakerNo = speakerThree convStore[2].pedIndex = pedSpeakerThree convStore[2].speakerLabel = speakerThreeLabel convStore[3].speakerNo = speakerFour convStore[3].pedIndex = pedSpeakerFour convStore[3].speakerLabel = speakerFourLabel REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF if speakerFour != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel) ENDIF IF NOT IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS() IF IS_MESSAGE_BEING_DISPLAYED() ANd IS_SUBTITLE_PREFERENCE_SWITCHED_ON() if CREATE_CONVERSATION(CHI2CONV, "CHI2AUD", Label, convPriority,DO_NOT_DISPLAY_SUBTITLES) bLastConvoWithoutSubtitles = TRUE return true ENDIF else if CREATE_CONVERSATION(CHI2CONV, "CHI2AUD", Label, convPriority) bLastConvoWithoutSubtitles = FALSE return true ENDIF endif endif ENDIF return FALSE ENDFUNC PROC ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_MEDIUM) REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER(CHI2CONV, "CHI2AUD", Label, convPriority) endproc func bool CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null,int speakerFour=-1,ped_index pedSpeakerFour=null, string speakerFourLabel = null,enumConversationPriority convPriority = CONV_PRIORITY_HIGH) IF NOT IS_MESSAGE_BEING_DISPLAYED() OR IS_SUBTITLE_PREFERENCE_SWITCHED_ON() = FALSE REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour) ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel) if speakerTwo != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel) ENDIF if speakerThree != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel) ENDIF if speakerFour != -1 ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel) ENDIF IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE(CHI2CONV, "CHI2AUD",Label,line,convPriority) RETURN TRUE ENDIF ENDIF RETURN FALSE endfunc PROC CONTROL_CONVERSATION_SUBTITLES() If bLastConvoWithoutSubtitles IF IS_STRING_NULL_OR_EMPTY(restartSubtitleRoot) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF IS_SCRIPTED_CONVERSATION_ONGOING() IF NOT IS_MESSAGE_BEING_DISPLAYED() restartSubtitleLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION() restartSubtitleRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() restartSubtitleRoot = "" ////cprintln(DEBUG_TREVOR3,restartSubtitleLine) //trying to find why ped in basement repeats his "IM NEARLY FINSHED" line if not IS_STRING_NULL_OR_EMPTY(restartSubtitleLine) AND NOT ARE_STRINGS_EQUAL(restartSubtitleLine,"NULL") restartSubtitleRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT() KILL_FACE_TO_FACE_CONVERSATION() ELSE bLastConvoWithoutSubtitles = FALSE restartSubtitleRoot = "" restartSubtitleLine = "" ENDIF ENDIF ENDIF ELSE bLastConvoWithoutSubtitles = FALSE restartSubtitleRoot = "" restartSubtitleLine = "" ENDIF ELSE IF IS_SCRIPTED_CONVERSATION_ONGOING() IF NOT IS_CONV_ROOT_PLAYING(restartSubtitleRoot) bLastConvoWithoutSubtitles = FALSE restartSubtitleRoot = "" restartSubtitleLine = "" ENDIF ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(restartSubtitleRoot) ////cprintln(DEBUG_TREVOR3,"REPLAY CONVERSATION WITH SUBS") convStore[0] = convStore[0] /* IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(restartSubtitleRoot,restartSubtitleLine,convStore[0].speakerNo,convStore[0].pedIndex,convStore[0].speakerLabel, convStore[1].speakerNo,convStore[1].pedIndex,convStore[1].speakerLabel, convStore[2].speakerNo,convStore[2].pedIndex,convStore[2].speakerLabel, convStore[3].speakerNo,convStore[3].pedIndex,convStore[3].speakerLabel) restartSubtitleRoot = "" restartSubtitleLine = "" bLastConvoWithoutSubtitles = FALSE ENDIF */ ENDIF ENDIF ENDIF ENDPROC /* PROC manage_dialogue() SWITCH AWARENESS_STATE CASE AWARE_AND_ALERTING // need bit in here to make another ped run to shout for backup if the ped doing it was killed. FALLTHRU CASE SEEKING_TREVOR enumComments currentSweepComment ped_index ped_speaking currentSweepComment = SWEEP_DIALOGUE_ALERT(ped_speaking) if currentSweepComment != COMMENT_NONE nextSweepCommentToPlay = currentSweepComment KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ENDIF if nextSweepCommentToPlay != COMMENT_NONE if not is_ped_injured(ped_speaking) switch nextSweepCommentToPlay case COMMENT_JUSTGONE if CREATE_CONVERSATION_EXTRA("FLEE",1,ped_speaking,"CHIN2goon1") nextSweepCommentToPlay = COMMENT_NONE ENDIF BREAK case COMMENT_NOT_HERE if CREATE_CONVERSATION_EXTRA("LOST",1,ped_speaking,"CHIN2goon1") nextSweepCommentToPlay = COMMENT_NONE ENDIF BREAK case COMMENT_SPOTTED if CREATE_CONVERSATION_EXTRA("SPOT",1,ped_speaking,"CHIN2goon1") nextSweepCommentToPlay = COMMENT_NONE ENDIF BREAK ENDSWITCH ELSE nextSweepCommentToPlay = COMMENT_NONE ENDIF ENDIF if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() and currentSweepComment = COMMENT_NONE if GET_GAME_TIMER() > CONVERSATION_GAP int convPed1 int convPed2 convPed1 = get_ped_with_action(action_alerted,0) convPed2 = get_ped_with_action(action_alerted,1) if convPed1 >= 0 and convPed2 >= 0 IF NOT IS_PED_INJURED(zPED[convPed1].id) AND NOT IS_PED_INJURED(zPED[convPed2].id) SWITCH LAST_CONVERSATION CASE CONV_EMPTY IF CREATE_CONVERSATION_EXTRA("SEEK",1,zPED[convPed1].id,"CHIN2goon1",2,zPED[convPed2].id,"CHIN2goon2") LAST_CONVERSATION = CONV_SEEK add_event(events_trigger_investigate_treeline) ENDIF BREAK CASE CONV_SEEK IF CREATE_CONVERSATION_EXTRA("PANC",1,zPED[convPed1].id,"CHIN2goon1",2,zPED[convPed2].id,"CHIN2goon2") LAST_CONVERSATION = CONV_PANC ENDIF BREAK CASE CONV_PANC IF CREATE_CONVERSATION_EXTRA("PANC2",1,zPED[convPed1].id,"CHIN2goon1") random_lines_played++ IF random_lines_played = 5 random_lines_played = 0 LAST_CONVERSATION = CONV_PANC2 ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ELSE CONVERSATION_GAP = GET_GAME_TIMER() + 2500 ENDIF BREAK ENDSWITCH ENDPROC */ // ===================================================== Manage Events ========================================== FUNC BOOL HAS_DIALOGUE_FINISHED(int iEntry,enumDialogue thisDia) IF dia[iEntry].dial = thisDia IF dia[iEntry].bCompleted RETURN TRUE ENDIF ELSE IF dia[iEntry].dial != DIA_NULL SCRIPT_ASSERT("HAS_DIALOGUE_FINISHED() has wrong entry value") ENDIF ENDIF RETURN FALSE ENDFUNC PROC delete_all_house() IF DOES_ENTITY_EXIST(BarrelVan) DELETE_VEHICLE(BarrelVan) ENDIF int i REPEAT count_of(zped) i IF DOES_ENTITY_EXIST(zped[i].id) delete_ped(zped[i].id) ENDIF IF DOES_ENTITY_EXIST(zped[i].obj) DELETE_OBJECT(zped[i].obj) ENDIF zPED[i].action = action_none zPED[i].lastaction = action_none zPED[i].vpos = <<0,0,0>> zPED[i].vPosB = <<0,0,0>> zPED[i].placement = pos_none zPED[i].actionFlag = 0 zPED[i].floatA = 0 zPED[i].floatB = 0 zPED[i].intA = 0 zPED[i].intB = 0 zPED[i].nearbyreactingPed = FALSE zPED[i].pedOfInterest = 0 zPED[i].sniped = FALSE zPED[i].alerted = FALSE pedReactionState[i].State = STATE_SPAWN ENDREPEAT IF DOES_PICKUP_EXIST(health_pickup) REMOVE_PICKUP(health_pickup) ENDIF REPEAT COUNT_OF(piPickups) i IF DOES_PICKUP_EXIST(piPickups[i]) REMOVE_PICKUP(piPickups[i]) ENDIF ENDREPEAT REPEAT count_of(oCans) i IF DOES_ENTITY_EXIST(oCans[i]) delete_object(oCans[i]) ENDIF ENDREPEAT RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN) ENDPROC proc do_spawn_house() //int j add_event(events_force_farm_doors_drawing) CLEAR_AREA(<<2479.874756,4980.867676,44.820522>>,60.0,TRUE) BarrelVan = CREATE_VEHICLE(BURRITO, << 2479.5789, 4980.5029, 44.8051 >>, 341.8158) SET_VEHICLE_COLOUR_COMBINATION(BarrelVan,1) SET_VEHICLE_LIVERY(BarrelVan,2) SET_VEHICLE_ON_GROUND_PROPERLY(BarrelVan) IF missionStage < get_to_house prep_ped(role_guard_outside,action_spawn,pos_barrels_1) prep_ped(role_guard_outside,action_spawn,pos_barrels_2) prep_ped(role_guard_outside,action_spawn,pos_balcony_veranda_walk) //patrolling balcony prep_ped(role_guard_outside,action_spawn,pos_balcony_doorway) //on balcony chats to patroling ped prep_ped(role_guard_outside,action_spawn,pos_garden_chat_1) prep_ped(role_guard_outside,action_spawn,pos_garden_chat_2) prep_ped(role_guard_outside,action_spawn,pos_porch) //on lower porch prep_ped(role_guard_outside,action_spawn,pos_balcony_far_left) //on balcony to left prep_ped(role_guard_outside,action_spawn,pos_shooting_bottle_1) prep_ped(role_guard_outside,action_spawn,pos_shooting_bottle_2) // prep_ped(role_guard_outside,action_spawn,pos_pissing_ped) endif if missionStage < inside_house prep_ped(role_guard_house,action_spawn,pos_inside_right_window) prep_ped(role_guard_house,action_spawn,pos_inside_utility_room) prep_ped(role_guard_house,action_spawn,pos_inside_kitchen1) prep_ped(role_guard_house,action_spawn,pos_inside_kitchen2) endif if missionStage < do_petrol_trail prep_ped(role_guard_house,action_spawn,pos_inside_seated1) prep_ped(role_guard_house,action_spawn,pos_inside_seated2) prep_ped(role_guard_house,action_spawn,pos_inside_seated3) prep_ped(role_guard_house,action_spawn,pos_inside_cards1) prep_ped(role_guard_house,action_spawn,pos_inside_cards2) prep_ped(role_guard_house,action_spawn,pos_inside_cards3) prep_ped(role_guard_house,action_spawn,pos_inside_bystairs1) // prep_ped(role_guard_house,action_spawn,pos_inside_bystairs2) prep_ped(role_innocent,action_spawn,pos_innocent_drugden) // prep_ped(role_innocent,action_spawn,pos_innocent_chef) endif if missionStage = do_petrol_trail REQUEST_ANIM_DICT("DEAD") WHILE NOT HAS_ANIM_DICT_LOADED("DEAD") safewait(323) ENDWHILE zped[15].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01, <<2436.9011, 4959.0996, 45.8106>>, 209.7559) TASK_PLAY_ANIM(zped[15].id,"DEAD","DEAD_C",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[15].id,true) DISABLE_PED_PAIN_AUDIO(zped[15].id,true) zped[16].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,<<2440.2661, 4970.7051, 45.8306>>, 15.7982) TASK_PLAY_ANIM(zped[16].id,"DEAD","DEAD_D",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[16].id,true) DISABLE_PED_PAIN_AUDIO(zped[16].id,true) zped[17].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,<<2443.4197, 4974.5234, 45.8106>>, 121.8340) TASK_PLAY_ANIM(zped[17].id,"DEAD","DEAD_E",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[17].id,true) DISABLE_PED_PAIN_AUDIO(zped[17].id,true) zped[18].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,<<2448.8877, 4971.5605, 45.8106>>, 194.7676) TASK_PLAY_ANIM(zped[18].id,"DEAD","DEAD_G",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[18].id,true) DISABLE_PED_PAIN_AUDIO(zped[18].id,true) WHILE NOT IS_ENTITY_PLAYING_ANIM(zped[15].id,"DEAD","DEAD_C") OR NOT IS_ENTITY_PLAYING_ANIM(zped[16].id,"DEAD","DEAD_D") OR NOT IS_ENTITY_PLAYING_ANIM(zped[17].id,"DEAD","DEAD_E") OR NOT IS_ENTITY_PLAYING_ANIM(zped[18].id,"DEAD","DEAD_G") safewait(54343) IF NOT IS_PED_INJURED(zped[15].id) AND NOT IS_PED_INJURED(zped[16].id) AND NOT IS_PED_INJURED(zped[17].id) AND NOT IS_PED_INJURED(zped[18].id) ENDIF ENDWHILE SET_ENTITY_HEALTH(zped[15].id,0) SET_ENTITY_HEALTH(zped[16].id,0) SET_ENTITY_HEALTH(zped[17].id,0) SET_ENTITY_HEALTH(zped[18].id,0) REMOVE_ANIM_DICT("DEAD") endif //cans //CLEAR_AREA(<<2494.6641, 4970.2280, 44.5430>>,5.0,true) add_event(events_spawn_bottles) int PlacementFlags PlacementFlags = 0 SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND)) SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_UPRIGHT)) SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_FIXED)) SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_REGENERATES)) // You might not want this? SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_ORIENT_TO_GROUND)) health_pickup = CREATE_PICKUP(PICKUP_HEALTH_STANDARD,<<2446.8962, 4990.9722, 45.5477>>,PlacementFlags) //navemsh block around NG bush IF NOT DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockA) navblockA = ADD_NAVMESH_BLOCKING_OBJECT(<<2464.956299,4990.050781,44.484150>>,<<2.500000,3.125000,2.062500>>,0) ENDIF cprintln(debug_Trevor3,"Add pickup") piPickups[0] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<2444.4974, 4975.9562, 50.5650>>, << 0,0,100 >>, PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[0], "V_8_Bed1Rm") piPickups[1] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<2443.4000, 4978.5199, 46.8107>>, << 0,0,100 >>, PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[1], "V_8_KitchnRm") piPickups[3] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, << 2441.0281, 4963.8511, 46.5605 >>, << 0, 0, -80.6 >>, PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[3], "V_8_StudyRm") piPickups[4] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, << 2435.1650, 4971.4668, 45.9100 >>, << 0, 0, -50.4 >>, PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[4], "V_8_Hall2Rm") // Set sawn-off placement flags PlacementFlags = 0 SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_REGENERATES)) // You might not want this? SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_FIXED)) SET_BIT(PlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_SNAP_TO_GROUND)) CPRINTLN(debug_trevor3,"Add pickup shotgun") piPickups[2] = CREATE_PICKUP_ROTATE(PICKUP_WEAPON_SAWNOFFSHOTGUN, <<2438.7878, 4970.7896, 50.5650>>, <<0,0,0>>, PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(piPickups[2], "V_8_Bed1Rm") ENDPROC proc manage_events() int iE REPEAT COUNT_OF(events) iE if events[iE].active = TRUE switch events[iE].event case events_resolve_vehicles_at_start switch events[iE].flag case 0 IF IS_CUTSCENE_PLAYING() events[iE].flag++ ENDIF BREAK CASE 1 ////cprintln(debug_Trevor3,"Resolve vehicles") RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1992.804077,3053.310303,45.777145>>, <<1989.681274,3055.295410,49.090008>>, 3.250000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //position where chinese peds are after cutscene RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1994.427368,3045.135986,45.340134>>, <<1981.902832,3053.235107,49.791527>>, 9.500000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //inside the bar, incase player drives bike in RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1985.403687,3075.057129,44.849529>>, <<2017.101685,3057.434814,53.718960>>, 33.000000,<<1995.2018, 3062.1565, 46.0491>>, 59.7235,<<10,20,9>>) //car park area, as per bug 1001450 vehPlayer = GET_PLAYERS_LAST_VEHICLE() IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehPlayer,<<1995.2018, 3062.1565, 46.0491>>) < 5.0 REQUEST_VEHICLE_ASSET(get_entity_model(vehPlayer)) ENDIF // CLEAR_AREA(GET_ENTITY_COORDS(player_ped_id()),15,TRUE) //this was removing player car // CLEAR_PED_TASKS_IMMEDIATELY(player_ped_id()) //removed this due to bug 1234882 events[iE].active = FALSE break endswitch break case events_trevor_phonecall IF missionStage >=farm_cutscene events[iE].flag = CLEANUP ENDIF switch events[iE].flag case CLEANUP KILL_ANY_CONVERSATION() KILL_PHONE_CONVERSATION() //////cprintln(DEBUG_TREVOR3,"KIL PHONE CALL") BREAK case 0 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) < 1300 OR IS_CALLING_CONTACT(CHAR_ONEIL) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) > 500 //If IS_MESSAGE_BEING_DISPLAYED() events[iE].flag++ ENDIF ENDIF BREAK case 1 //If not IS_MESSAGE_BEING_DISPLAYED() //need to set up speakers for this //////cprintln(DEBUG_TREVOR3,"LOADING PHONE CALL") if PLAYER_CALL_CHAR_CELLPHONE_EXTRA("PHN2",1,player_ped_id(),"Trevor",8,null,"ONEIL") //////cprintln(DEBUG_TREVOR3,"PHONE CALL PLAYING") events[iE].flag++ ENDIF //ENDIF BREAK case 2 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF CREATE_CONVERSATION_EXTRA("CHI2_ONEILPH",1,player_ped_id(),"Trevor") //CHI2_ONEILPH events[iE].active = FALSE ENDIF ENDIF break ENDSWITCH BREAK case events_trevor_rants //IF NOT is_event_active(events_trevor_phonecall) IF missionStage >=farm_cutscene events[iE].flag = CLEANUP events[iE].active = FALSE ENDIF switch events[iE].flag case 0 IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"Trevor") events[iE].flag++ ENDIF iRandomCounter = 0 events[iE].intA = GET_GAME_TIMER() + 3000 //events[iE].flag++ break CASE 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_PLAYER_IN_ANY_SHOP() IF NOT (IS_PED_IN_ANY_VEHICLE(player_ped_id())) IF GET_GAME_TIMER() > events[iE].intA IF iRandomCounter < 13 IF CREATE_CONVERSATION_EXTRA("DRI1",2,player_ped_id(),"Trevor") iRandomCounter++ events[iE].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,10000) ENDIF ELSE events[iE].active = FALSE ENDIF ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH //ENDIF break case events_stop_and_leave_vehicle if IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) VEHICLE_INDEX thisVeh thisVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) IF NOT IS_ENTITY_IN_AIR(thisVeh) if STOP_MY_VEHICLE(6,2) TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID()) events[iE].active = FALSE ENDIF ENDIF ELSE events[iE].active = FALSE ENDIF BREAK case events_spawn_house switch events[iE].flag case -20 if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) < 250.0 REQUEST_MODEL(A_M_M_Hillbilly_01) REQUEST_MODEL(PROP_PALLET_PILE_01) events[iE].flag++ endif break case -19 IF HAS_MODEL_LOADED(A_M_M_Hillbilly_01) AND HAS_MODEL_LOADED(PROP_PALLET_PILE_01) REQUEST_MODEL(A_M_M_Hillbilly_02) events[iE].flag++ ENDIF break case -18 IF HAS_MODEL_LOADED(A_M_M_Hillbilly_02) REQUEST_MODEL(BURRITO) events[iE].flag++ ENDIF BREAK CASE -17 IF HAS_MODEL_LOADED(BURRITO) REQUEST_MODEL(A_M_Y_MethHead_01) events[iE].flag++ ENDIF BREAK CASE -16 IF HAS_MODEL_LOADED(A_M_Y_MethHead_01) REQUEST_MODEL(PROP_LD_CAN_01) REQUEST_MODEL(Prop_CS_Fertilizer) REQUEST_MODEL(PROP_CS_BEER_BOT_01) REQUEST_MODEL(PROP_PHONE_ING) REQUEST_MODEL(DUBSTA) REQUEST_ANIM_DICT("misschinese2_bank5") REQUEST_ANIM_DICT("misschinese2_bank1") REQUEST_ANIM_DICT("reaction@male_stand@big_variations@b") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@left") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@right") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@backward") REQUEST_ANIM_DICT("misschinese2_barrelRoll") REQUEST_ANIM_SET("move_m@gangster@var_e") REQUEST_ANIM_SET("move_m@gangster@var_f") REQUEST_ANIM_SET("move_m@gangster@generic") events[iE].flag++ ENDIF break CASE -15 IF HAS_MODEL_LOADED(DUBSTA) add_event(events_pin_interior) add_event(events_remove_vehicles_and_peds) SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,FALSE) events[iE].flag=1 ENDIF BREAK case 0 if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) < 250.0 REQUEST_MODEL(A_M_M_Hillbilly_01) REQUEST_MODEL(A_M_M_Hillbilly_02) REQUEST_MODEL(A_M_Y_MethHead_01) request_model(PROP_LD_CAN_01) REQUEST_MODEL(Prop_CS_Fertilizer) REQUEST_MODEL(BURRITO) REQUEST_MODEL(PROP_CS_BEER_BOT_01) IF missionStage <= farm_cutscene REQUEST_MODEL(PROP_PHONE_ING) REQUEST_MODEL(DUBSTA) ENDIF REQUEST_ANIM_DICT("misschinese2_bank5") REQUEST_ANIM_DICT("misschinese2_bank1") REQUEST_ANIM_DICT("reaction@male_stand@big_variations@b") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@left") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@right") REQUEST_ANIM_DICT("reaction@male_stand@big_intro@backward") REQUEST_ANIM_DICT("misschinese2_barrelRoll") REQUEST_ANIM_SET("move_m@gangster@var_e") REQUEST_ANIM_SET("move_m@gangster@var_f") REQUEST_ANIM_SET("move_m@gangster@generic") add_event(events_pin_interior) add_event(events_remove_vehicles_and_peds) SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,FALSE) events[iE].flag++ ENDIF BREAK case 1 if HAS_MODEL_LOADED(A_M_M_Hillbilly_01) and HAS_MODEL_LOADED(A_M_M_Hillbilly_02) and HAS_MODEL_LOADED(A_M_Y_MethHead_01) and HAS_MODEL_LOADED(BURRITO) and HAS_MODEL_LOADED(Prop_CS_Fertilizer) and HAS_MODEL_LOADED(PROP_CS_BEER_BOT_01) and has_model_loaded(PROP_LD_CAN_01) and HAS_ANIM_DICT_LOADED("misschinese2_bank5") and HAS_ANIM_DICT_LOADED("misschinese2_bank1") and HAS_ANIM_DICT_LOADED("misschinese2_barrelRoll") and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_variations@b") and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@left") and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@right") and HAS_ANIM_DICT_LOADED("reaction@male_stand@big_intro@backward") and ((missionStage <= farm_cutscene AND has_model_loaded(PROP_PHONE_ING)) OR missionStage > farm_cutscene) and ((missionStage <= farm_cutscene AND has_model_loaded(DUBSTA)) OR missionStage > farm_cutscene) events[iE].flag=4 ENDIF if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) > 300.0 SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_01) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MethHead_01) SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_LD_CAN_01) REMOVE_ANIM_DICT("misschinese2_bank5") REMOVE_ANIM_DICT("misschinese2_bank1") REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward") REMOVE_ANIM_DICT("misschinese2_barrelRoll") REMOVE_ANIM_SET("move_m@gangster@var_e") REMOVE_ANIM_SET("move_m@gangster@var_f") REMOVE_ANIM_SET("move_m@gangster@generic") SET_MODEL_AS_NO_LONGER_NEEDED(PROP_PHONE_ING) SET_MODEL_AS_NO_LONGER_NEEDED(DUBSTA) SET_ROADS_IN_AREA(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>,TRUE) kill_event(events_pin_interior) kill_event(events_remove_vehicles_and_peds) IF int_farm != NULL UNPIN_INTERIOR(int_farm) int_farm = null ENDIF events[iE].flag=-20 ENDIF BREAK/* case 2 houseInterior = GET_INTERIOR_AT_COORDS(<< 2440.3916, 4967.5122, 52.3472 >>) IF IS_VALID_INTERIOR(houseInterior) //and IS_INTERIOR_READY(interior) PIN_INTERIOR_IN_MEMORY(houseInterior) events[iE].flag++ ENDIF BREAK case 3 IF IS_INTERIOR_READY(houseInterior) events[iE].flag++ endif break*/ case 4 if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< 2460.0728, 4964.1758, 46.2405 >>) > 300.0 events[iE].flag=1 ELSe IF missionStage >= farm_cutscene AND NOT is_event_active(events_pin_interior) do_spawn_house() //events[iE].active = FALSE //events[iE].flag=5 events[iE].active = FALSE ENDIF ENDIF break case 5 break ENDSWITCH BREAK case events_pin_interior //adding because of bug 499704 switch events[iE].flag CASE CLEANUP IF int_farm != null UNPIN_INTERIOR(int_farm) endif int_farm = null BREAK case 0 int_farm = GET_INTERIOR_AT_COORDS(<< 2440.4924, 4969.9482, 52.5247 >>) events[iE].flag++ break case 1 IF NOT IS_VALID_INTERIOR(int_farm) int_farm = GET_INTERIOR_AT_COORDS(<< 2440.4924, 4969.9482, 52.5247 >>) ELSE PIN_INTERIOR_IN_MEMORY(int_farm) events[iE].flag++ ENDIF break case 2 // IF IS_INTERIOR_READY(int_farm) // SET_INTERIOR_ACTIVE(int_farm, TRUE) events[iE].active = false // ENDIF break ENDSWITCH break case events_reset_house_rayfire SWITCH events[iE].flag CASE 0 SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED) events[iE].flag++ BREAK CASE 1 BREAK /* rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) //SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING) // SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING) ////cprintln(DEBUG_TREVOR3,"RESET MODEL GLASS") REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,false) REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,false) REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false) events[iE].active = FALSE endif*/ ENDSWITCH BREAK CASE events_release_bottle_shooting_anims IF events[iE].flag = 0 //so it won't run this in cleanup int iPed iPed = get_ped_with_placement(pos_shooting_bottle_1) IF iPed != -1 IF NOT IS_PED_INJURED(zped[iPed].id) IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK iPed = get_ped_with_placement(pos_shooting_bottle_2) IF iPed != -1 IF NOT IS_PED_INJURED(zped[iPed].id) IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK REMOVE_ANIM_DICT("misschinese2_bank5") events[iE].active = FALSE ENDIF ENDIF ENDIF ENDIF ELSE iPed = get_ped_with_placement(pos_shooting_bottle_2) IF iPed != -1 IF NOT IS_PED_INJURED(zped[iPed].id) IF GET_SCRIPT_TASK_STATUS(zped[iPed].id,script_TASK_SYNCHRONIZED_SCENE) = FINISHED_TASK REMOVE_ANIM_DICT("misschinese2_bank5") events[iE].active = FALSE ENDIF ELSE REMOVE_ANIM_DICT("misschinese2_bank5") ENDIF ENDIF ENDIF ENDIF ENDIf BREAK CASE events_remove_vehicles_and_peds switch events[iE].flag case -1 //cleanup REMOVE_SCENARIO_BLOCKING_AREAS() BREAK case 0 ADD_SCENARIO_BLOCKING_AREA(<<2445.654053,4972.897461,58.617897>>-<<100,100,100>>,<<2445.654053,4972.897461,58.617897>>+<<100,100,100>>) events[iE].flag++ BREAK CASE 1 IF NOT IS_PED_INJURED(player_ped_id()) if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),<<2473.061035,4981.482422,24.645840>> ) < 250.0 events[iE].flag++ ENDIF ENDIF BREAK case 2 SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0) SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0,0.0) if GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),<<2473.061035,4981.482422,24.645840>> ) > 250.0 events[iE].flag++ ENDIF BREAK ENDSWITCH BREAK CASE events_control_dispatch switch events[iE].flag case -1 //cleanup ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,TRUE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,TRUE) BREAK case 0 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(),<< 2578.5234, 4982.2837, 51.4416 >>) < 500.0 ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,FALSE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,FALSE) events[iE].flag++ endif break case 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(),<< 2578.5234, 4982.2837, 51.4416 >>) > 500.0 ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,TRUE) ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT,TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE,TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_VEHICLE_REQUEST,TRUE) events[iE].flag=0 endif break ENDSWITCH break case events_continuous_stats_tracking switch events[iE].flag CASE 0 INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(player_ped_id(),CHI2_UNMARKED) events[iE].flag++ BREAK CASE 1 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) vehicle_index aVeh aVeh = GET_VEHICLE_PED_IS_IN(player_ped_id()) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(aVeh,CHI2_CAR_DAMAGE) INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(aVeh) events[iE].flag++ ENDIF BREAK CASE 2 IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(null,CHI2_CAR_DAMAGE) INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(null) events[iE].flag=1 ENDIF BREAK ENDSWITCH break case events_petrol_help /* switch events[iE].flag case 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP("FRMPET2") events[iE].active=false endif break ENDSWITCH */ break case events_explode_petrol_can /* IF DOES_ENTITY_EXIST(oFuelCan) IF NOT IS_ENTITY_DEAD(oFuelCan) IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(oFuelCan) ADD_EXPLOSION(GET_ENTITY_COORDS(oFuelCan),EXP_TAG_HI_OCTANE) SET_ENTITY_HEALTH(oFuelCan,0) events[iE].active = false ENDIF ENDIF ENDIF*/ break case events_Trevor_walks_in_final_cutscene switch events[iE].flag case 0 #if IS_DEBUG_BUILD IF bExplodeHouseLoopShort events[iE].intA = 0 ELSE events[iE].intA = get_game_timer()+6800 ENDIF #endif #IF IS_FINAL_BUILD events[iE].intA = get_game_timer()+7000 #endif events[iE].flag++ break case 1 if get_game_timer() > events[iE].intA SET_ENTITY_COORDS(player_ped_id(),<< 2466.3850, 4953.0957, 44.1228 >>) SET_ENTITY_HEADING(player_ped_id(),221) TASK_GO_STRAIGHT_TO_COORD(player_ped_id(),<< 2475.0747, 4945.9653, 44.0228 >>,pedmove_walk) FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK) events[iE].active = false endif break ENDSWITCH break case events_play_audio_stream IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_MOLOTOV_MASTER") PLAY_STREAM_FRONTEND() events[iE].active = false ENDIF BREAK case events_house_explodes_rayfire switch events[iE].flag CASE 0 rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING) events[iE].flag++ endif break case 1 IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) = RFMO_STATE_START SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_PRIMING) events[iE].flag++ ENDIF break case 2 IF bRayfireTriggered=TRUE IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) = RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_START_ANIM) START_AUDIO_SCENE("CHI_2_RAYFIRE") CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false) events[iE].flag++ ENDIF ENDIF BREAK case 3 playmusic("CHN2_EXPLODE",TRUE,"CHN2_EXPLODE") events[iE].active=false break ENDSWITCH BREAK case events_check_petrol_trail IF events[iE].flag != CLEANUP IF NOT HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) OR NOT DOES_PICKUP_EXIST(pickup_gas) oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE) IF oGasCan != null if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan) HIDE_GAS_TRAIL() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) endif ELSE events[iE].intA = 0 HIDE_GAS_TRAIL(FALSE) if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME) IF gasInCan = 0 gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) ELSE INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE) ENDIF ENDIF IF IS_GAS_TRAIL_COMPLETE() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) events[iE].active = false add_event(events_check_player_out_front) ENDIF ENDIF break case events_check_trail_burning_safe //gas trail is burning //player is not inside house //point from fire to cellar is a complete trail BREAK case events_check_player_out_front IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2447.671387,4951.438477,43.255756>>, <<2454.663818,4957.855957,47.891174>>, 6.812500) and GET_GAME_TIMER() > events[iE].intA IF DOES_BLIP_EXIST(missionBlip) REMOVE_BLIP(missionBlip) endif events[iE].active = FALSE else switch events[iE].flag case 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT("FRMSHP",DEFAULT_GOD_TEXT_TIME,1) events[iE].intA = GET_GAME_TIMER() + 2000 missionBlip = CREATE_BLIP_FOR_COORD(<<2450,4954,45>>) events[iE].flag++ ENDIF break endswitch endif break case events_detach_barrels_from_peds //0 = does barrel 1 ped exist //1 = does barrel 2 ped exist //0 = barrel ped 1 has barrel atttached and is playing anim //1 = barrel ped 2 has barrel attached and is playing anim // IF NOT IS_BIT_SET(events[iE].intA,0) iBarrels1 = get_ped_with_placement(pos_barrels_1) If iBarrels1 != -1 set_bit(events[iE].intA,0) ENDIF ELSE IF NOT IS_BIT_SET(events[iE].intA,1) //barrel not attached IF NOT IS_PED_INJURED(zped[iBarrels1].id) AND DOES_ENTITY_EXIST(zPED[iBarrels1].obj) IF IS_ENTITY_PLAYING_ANIM(zPED[iBarrels1].id, "misschinese2_barrelroll", "barrel_roll_loop_B") AND IS_ENTITY_ATTACHED(zPED[iBarrels1].obj) set_bit(events[iE].intA,1) ENDIF ENDIF ELSE IF NOT IS_BIT_SET(events[iE].intA,2) //barrel not attached IF IS_PED_INJURED(zPED[iBarrels1].id) SET_BIT(events[iE].intA,2) ENDIF IF NOT IS_PED_INJURED(zPED[iBarrels1].id) IF NOT IS_ENTITY_PLAYING_ANIM(zPED[iBarrels1].id, "misschinese2_barrelroll", "barrel_roll_loop_B") //this alone won't work as peds are still considered playing an anim even when they're reactin SET_BIT(events[iE].intA,2) ENDIF IF GET_SCRIPT_TASK_STATUS(zPED[iBarrels1].id,script_task_play_anim) = DORMANT_TASK OR GET_SCRIPT_TASK_STATUS(zPED[iBarrels1].id,script_task_play_anim) = FINISHED_TASK SET_BIT(events[iE].intA,2) ENDIF IF IS_PED_IN_COMBAT(zPED[iBarrels1].id,player_ped_id()) OR pedReactionState[iBarrels1].state > state_ambient SET_BIT(events[iE].intA,2) ENDIF ENDIF ELSE IF DOES_ENTITY_EXIST(zPED[iBarrels1].obj) AND IS_ENTITY_ATTACHED(zPED[iBarrels1].obj) ////cprintln(debug_Trevor3,"detach barrel 1") DETACH_ENTITY(zPED[iBarrels1].obj,FALSE,FALSE) ////cprintln(debug_Trevor3,"barrel 1 detached") ENDIF ENDIF ENDIF ENDIF IF NOT IS_BIT_SET(events[iE].intA,4) iBarrels2 = get_ped_with_placement(pos_barrels_2) If iBarrels2 != -1 set_bit(events[iE].intA,4) ENDIF ELSE IF NOT IS_BIT_SET(events[iE].intA,5) //barrel not attached IF NOT IS_PED_INJURED(zped[iBarrels2].id) IF DOES_ENTITY_EXIST(zPED[iBarrels2].obj) IF IS_ENTITY_PLAYING_ANIM(zPED[iBarrels2].id, "misschinese2_barrelroll", "barrel_roll_loop_A") IF IS_ENTITY_ATTACHED(zPED[iBarrels2].obj) set_bit(events[iE].intA,5) ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_BIT_SET(events[iE].intA,6) //barrel not attached IF IS_PED_INJURED(zPED[iBarrels2].id) SET_BIT(events[iE].intA,6) ENDIF IF NOT IS_PED_INJURED(zPED[iBarrels2].id) IF NOT IS_ENTITY_PLAYING_ANIM(zPED[iBarrels2].id, "misschinese2_barrelroll", "barrel_roll_loop_A") //this alone won't work as peds are still considered playing an anim even when they're reactin SET_BIT(events[iE].intA,6) ENDIF IF GET_SCRIPT_TASK_STATUS(zPED[iBarrels2].id,script_task_play_anim) = DORMANT_TASK OR GET_SCRIPT_TASK_STATUS(zPED[iBarrels2].id,script_task_play_anim) = FINISHED_TASK SET_BIT(events[iE].intA,6) ENDIF IF IS_PED_IN_COMBAT(zPED[iBarrels2].id,player_ped_id()) OR pedReactionState[iBarrels2].state > state_ambient SET_BIT(events[iE].intA,6) ENDIF ENDIF ELSE IF DOES_ENTITY_EXIST(zPED[iBarrels2].obj) AND IS_ENTITY_ATTACHED(zPED[iBarrels2].obj) ////cprintln(debug_Trevor3,"detach barrel 2") DETACH_ENTITY(zPED[iBarrels2].obj,FALSE,FALSE) ////cprintln(debug_Trevor3,"barrel 2 detached") ENDIF ENDIF ENDIF ENDIF break case events_never_do_locates_skips #IF IS_DEBUG_BUILD DONT_DO_J_SKIP(locatesData) #endif break case events_spawn_bottles int j j=0 switch events[iE].flag case 1 oCans[0] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.4958, 4970.9160, 44.5112>>) SET_ENTITY_ROTATION(oCans[0],<<-3.4400, -0.0000, 38.8800>>) oCans[1] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.8630, 4970.5952, 44.5425>>) SET_ENTITY_ROTATION(oCans[1],<<-3.4400, -0.0000, 38.8800>>) oCans[2] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.8955, 4970.4175, 44.5475>>) SET_ENTITY_ROTATION(oCans[2],<<-3.4400, -0.0000, 38.8800>>) oCans[3] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.7954, 4970.2456, 44.5525>>) SET_ENTITY_ROTATION(oCans[3],<<-3.4400, -0.0000, 38.8800>>) oCans[4] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.2041, 4970.2690, 44.5201>>) SET_ENTITY_ROTATION(oCans[4],<<-3.4400, -0.0000, 38.8800>>) oCans[5] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.3716, 4970.7441, 44.5100>>) SET_ENTITY_ROTATION(oCans[5],<<-3.4400, -0.0000, 38.8800>>) oCans[6] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.3716, 4971.0918, 44.4987>>) SET_ENTITY_ROTATION(oCans[6],<<-3.4400, -0.0000, 38.8800>>) oCans[7] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2493.7695, 4971.0000, 44.6287>>) SET_ENTITY_ROTATION(oCans[7],<<3.9550, 0.0000, 139.6800>>) oCans[8] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2493.9797, 4971.2793, 44.6038>>) SET_ENTITY_ROTATION(oCans[8],<<3.9550, 0.0000, 139.6800>>) oCans[9] = CREATE_OBJECT_NO_OFFSET(prop_ld_can_01,<<2494.1042, 4971.4375, 44.5826>>) SET_ENTITY_ROTATION(oCans[9],<<3.9550, 0.0000, 139.6800>>) repeat count_of(oCans) j SET_ENTITY_DYNAMIC(oCans[j],TRUE) FREEZE_ENTITY_POSITION(oCans[j],TRUE) ENDREPEAT events[iE].flag++ break case 0 CPRINTLN(debug_Trevor3,"Attempt Pallets Frozen") IF NOT DOES_ENTITY_EXIST(obja) AND NOT DOES_ENTITY_EXIST(objb) IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<2493.5,4969.2,43.9>>,1.0,prop_barrel_pile_03) AND DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01) CPRINTLN(debug_Trevor3,"Pallets Frozen") obja = GET_CLOSEST_OBJECT_OF_TYPE(<<2493.5,4969.2,43.9>>,1.0,prop_barrel_pile_03) FREEZE_ENTITY_POSITION(obja,TRUE) // objb = CREATE_OBJECT_NO_OFFSET(PROP_PALLET_PILE_01,<<2493.4,4971.8,43.6>>) // GET_CLOSEST_OBJECT_OF_TYPE(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01) // FREEZE_ENTITY_POSITION(objb,TRUE) CREATE_MODEL_HIDE(<<2493.4,4971.8,43.6>>,1.0,PROP_PALLET_PILE_01,false) objb = CREATE_OBJECT (prop_pallet_pile_01, <<2493.427490,4971.728516,43.543625>>) SET_ENTITY_ROTATION (objb, <<-1.436373,0.176147,-36.660099>>) FREEZE_ENTITY_POSITION(objb,TRUE) add_event(events_unfreeze_pallet) events[iE].flag++ ENDIF ELSE cprintln(debug_Trevor3,"Recreated pallet") DELETE_OBJECT(objb) objb = CREATE_OBJECT (prop_pallet_pile_01, <<2493.427490,4971.728516,43.543625>>) SET_ENTITY_ROTATION (objb, <<-1.436373,0.176147,-36.660099>>) FREEZE_ENTITY_POSITION(objb,TRUE) add_event(events_unfreeze_pallet) events[iE].flag++ ENDIF BREAK case 2 //int counter j=0 //counter=0 repeat count_of(oCans) j IF DOES_ENTITY_EXIST(oCans[j]) //IF DOES_ENTITY_HAVE_PHYSICS(oCans[j]) FREEZE_ENTITY_POSITION(oCans[j],FALSE) // counter++ //ENDIF endif ENDREPEAT events[iE].active = FALSE //IF counter = count_of(oCans) //events[iE].flag++ events[iE].active = FALSE //ENDIF break ENDSWITCH break case events_unfreeze_pallet IF NOT IS_BIT_SET(events[iE].intA,0) IF DOES_ENTITY_EXIST(obja) IF NOT IS_PED_INJURED(player_ped_id()) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(objA,player_ped_id()) OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),objA) < 30.0 FREEZE_ENTITY_POSITION(objA,FALSE) SET_BIT(events[iE].intA,0) ENDIF ENDIF ENDIF ENDIF IF NOT IS_BIT_SET(events[iE].intA,1) IF DOES_ENTITY_EXIST(objb) IF NOT IS_PED_INJURED(player_ped_id()) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(objb,player_ped_id()) OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),objb) < 30.0 FREEZE_ENTITY_POSITION(objb,FALSE) SET_BIT(events[iE].intA,1) ENDIF ENDIF ENDIF ENDIF IF IS_BIT_SET(events[iE].intA,0) AND IS_BIT_SET(events[iE].intA,1) OR missionStage = inside_house IF DOES_ENTITY_EXIST(obja) FREEZE_ENTITY_POSITION(objA,FALSE) ENDIF IF DOES_ENTITY_EXIST(objb) FREEZE_ENTITY_POSITION(objb,FALSE) ENDIF events[iE].active = FALSE ENDIF break case events_animate_bar switch events[iE].flag CASE CLEANUP IF DOES_ENTITY_EXIST(zped[ped_janet].id) DELETE_PED(zped[ped_janet].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id) DELETE_PED(zped[ped_oldMan1].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id) DELETE_PED(zped[ped_oldMan2].id) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2) events[iE].active = FALSE BREAK CASE 0 REQUEST_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG") events[iE].flag++ BREAK CASE 1 IF HAS_ANIM_DICT_LOADED("MISSChinese2_crystalMazeMCS1_IG") IF HAS_CUTSCENE_FINISHED() OR NOT IS_CUTSCENE_PLAYING() IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id) AND NOT IS_PED_injured(zped[ped_oldMan1].id) SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1986.0602, 3051.7085, 46.2151>>) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id) AND NOT IS_PED_injured(zped[ped_oldMan2].id) SET_ENTITY_COORDS(zped[ped_oldMan2].id,<<1986.1051, 3051.6592, 46.2151>>) ENDIF events[iE].flag++ ENDIF ENDIF BREAK CASE 2 IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE) AND DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE) IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id) zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>) ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id) zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>) ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id) cprintln(debug_trevor3,"Created Janet") zped[ped_janet].id = create_ped(PEDTYPE_MISSION,IG_JANET,<<1987.231,3052.741,46.214>>) ENDIF SET_BIT(events[iE].intA,1) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1984.89, 3052.46, 46.98>>,0.3) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan2].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE) cprintln(debug_trevor3,"END B") SET_BIT(events[iE].intA,0) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1985.3221, 3053.0872, 46.98>>,0.3) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan1].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE) cprintln(debug_trevor3,"END C") IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(events[iE].intA) events[iE].intA = CREATE_SYNCHRONIZED_SCENE(<<1987.231,3052.741,46.214>>,<<0,0,57.6>>) SET_SYNCHRONIZED_SCENE_LOOPED(events[iE].intA,TRUE) ENDIF TASK_SYNCHRONIZED_SCENE(zped[ped_janet].id,events[iE].intA,"MISSChinese2_crystalMazeMCS1_IG","bar_peds_action_janet",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_janet].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_janet].id,FALSE) events[iE].intA = 0 events[iE].flag++ ENDIF BREAK /* IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man1A") OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id)) cprintln(debug_trevor3,"END C1") IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id) zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>) ENDIF IF NOT IS_PED_INJURED(zPED[ped_oldMan1].id) cprintln(debug_trevor3,"END C2") IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE) SET_BIT(events[iE].intA,0) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1984.89, 3052.46, 46.98>>,0.3) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan1].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE) cprintln(debug_trevor3,"END C") ELSE SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1986.0602, 3051.7085, 46.2151>>) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man2") OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id)) IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id) zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>) ENDIF IF NOT IS_PED_INJURED(zPED[ped_oldMan2].id) IF DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE) SET_BIT(events[iE].intA,1) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1985.3221, 3053.0872, 46.98>>,0.3) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_oldMan2].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE) cprintln(debug_trevor3,"END B") ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Janet") OR (missionStage = drive_to_farm AND NOT DOES_ENTITY_EXIST(zped[ped_janet].id)) cprintln(debug_trevor3,"Exit state hit Janet") IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id) cprintln(debug_trevor3,"Created Janet") zped[ped_janet].id = create_ped(PEDTYPE_MISSION,IG_JANET,<<1987.231,3052.741,46.214>>) ENDIF IF NOT IS_PED_INJURED(zPED[ped_janet].id) ////cprintln(debug_trevor3,"Janet tasked") IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(events[iE].intA) events[iE].intA = CREATE_SYNCHRONIZED_SCENE(<<1987.231,3052.741,46.214>>,<<0,0,57.6>>) SET_SYNCHRONIZED_SCENE_LOOPED(events[iE].intA,TRUE) ENDIF TASK_SYNCHRONIZED_SCENE(zped[ped_janet].id,events[iE].intA,"MISSChinese2_crystalMazeMCS1_IG","bar_peds_action_janet",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS) FORCE_PED_AI_AND_ANIMATION_UPDATE(zped[ped_janet].id,true,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_janet].id,FALSE) cprintln(debug_trevor3,"END A") ENDIF ENDIF IF HAS_CUTSCENE_FINISHED() OR NOT IS_CUTSCENE_PLAYING() cprintln(debug_trevor3,"cut finished") events[iE].flag++ ENDIF ENDIF BREAK*/ case 3 IF HAS_CUTSCENE_FINISHED() OR NOT IS_CUTSCENE_PLAYING() /* IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id) zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1985.8699, 3051.3889, 46.2151>>) ELSE IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) SET_ENTITY_COORDS(zped[ped_oldMan1].id,<<1985.8699, 3051.3889, 46.2151>>) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id) zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1986.9213, 3052.9172, 46.2152>>) ELSE IF NOT IS_PED_INJURED(zped[ped_oldMan2].id) SET_ENTITY_COORDS(zped[ped_oldMan2].id,<<1986.9213, 3052.9172, 46.2152>>) ENDIF ENDIF*/ ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) AND NOT IS_PED_INJURED(zped[ped_oldMan2].id) SET_PED_CONFIG_FLAG(zped[ped_oldMan1].id ,PCF_AlwaysRespondToCriesForHelp,true) SET_PED_CONFIG_FLAG(zped[ped_oldMan2].id ,PCF_AlwaysRespondToCriesForHelp,true) IF IS_BIT_SET(events[iE].intA,0) AND IS_BIT_SET(events[iE].intA,1) events[iE].flag++ ELSE IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) != PERFORMING_TASK IF DOES_SCENARIO_EXIST_IN_AREA(<<1984.89, 3052.46, 46.98>>,0.3,TRUE) SET_BIT(events[iE].intA,0) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan1].id,<<1984.89, 3052.46, 46.98>>,0.3) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan1].id,FALSE) ENDIF ELSE SET_BIT(events[iE].intA,0) ENDIF IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) != PERFORMING_TASK IF DOES_SCENARIO_EXIST_IN_AREA(<<1985.3221, 3053.0872, 46.98>>,0.3,TRUE) SET_BIT(events[iE].intA,1) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[ped_oldMan2].id,<<1985.3221, 3053.0872, 46.98>>,0.3) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_oldMan2].id,FALSE) ENDIF ELSE SET_BIT(events[iE].intA,1) ENDIF ENDIF ENDIF BREAK CASE 4/* IF NOT IS_PED_INJURED(zped[ped_janet].id) IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) != PERFORMING_TASK IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_ANY) != PERFORMING_TASK events[iE].flag=5 ENDIF ENDIF ELSE events[iE].flag=5 ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) != PERFORMING_TASK IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan1].id,SCRIPT_TASK_ANY) != PERFORMING_TASK events[iE].flag=5 ENDIF ENDIF ELSE events[iE].flag=5 ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan2].id) IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) != PERFORMING_TASK IF GET_SCRIPT_TASK_STATUS(zped[ped_oldMan2].id,SCRIPT_TASK_ANY) != PERFORMING_TASK events[iE].flag=5 ENDIF ENDIF ELSE events[iE].flag=5 ENDIF */ IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1991.4193, 3054.9150, 47.5330>>) > 150 events[iE].flag=CLEANUP ENDIF BREAK case 6 IF NOT IS_PED_INJURED(zped[ped_janet].id) TASK_SMART_FLEE_PED(zped[ped_janet].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_janet].id,TRUe) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_janet].id) ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) TASK_SMART_FLEE_PED(zped[ped_oldMan1].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_oldMan1].id,true) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan1].id) ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan2].id) TASK_SMART_FLEE_PED(zped[ped_oldMan2].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_oldMan2].id,true) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan2].id) ENDIF events[iE].flag=7 break case 7 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1991.4193, 3054.9150, 47.5330>>) > 150 events[iE].flag=CLEANUP ENDIF break ENDSWITCH break case events_force_farm_doors_drawing CREATE_FORCED_OBJECT(<<2444.176270,4974.076660,56.406605>>, 30, V_ILEV_FH_DOOR03, TRUE) CREATE_FORCED_OBJECT(<<2444.176270,4974.076660,56.406605>>, 30, V_ILEV_FH_FRNTDOOR, TRUE) events[iE].active = FALSE break case events_fails /* IF cleaningUp = FALSE IF missionStage = do_petrol_trail endif //distance fail IF missionStage >= snipe_from_hill OR missionStage = get_to_house AND ARE_VECTORS_EQUAL(GET_BLIP_COORDS(locatesData.LocationBlip),<< 2578.5234, 4982.2837, 51.4416 >>) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(), << 2460.8640, 4983.4932, 47.7573 >>,FALSE) > 350.0 // vector vfind // vfind = GET_ENTITY_COORDS(player_ped_id()) FAIL_MISSION("FRMFAR") ENDIF ENDIF IF is_event_active(events_animate_chinese) IF DOES_ENTITY_EXIST(zPED[ped_tao].id) AND DOES_ENTITY_EXIST(zPED[ped_taos_translator].id) IF IS_ENTITY_DEAD(zPED[ped_tao].id) FAIL_MISSION("FRMCHI") ENDIF IF IS_ENTITY_DEAD(zPED[ped_taos_translator].id) FAIL_MISSION("FRMCHI2") ENDIF ENDIF ENDIF ENDIF */ BREAK ENDSWITCH if events[iE].flag = CLEANUP events[iE].active = FALSE events[iE].flag = 0 events[iE].persists = FALSE events[iE].boolA = FALSE events[iE].intA = 0 ENDIF ENDIF ENDREPEAT ENDPROC FUNC bool CREATE_GANG_PED(int ind, MODEL_NAMES mGangPedModel, VECTOR vGangPedCoord, FLOAT fGangPedHead, WEAPON_TYPE wepGang, bool bSetWeaponAsCurrent=TRUE, bool bInInterior=FALSE) mGangPedModel=mGangPedModel bInInterior=bInInterior INTERIOR_INSTANCE_INDEX interior IF zped[ind].role != role_guard_outside AND zped[ind].role != role_chicken interior = GET_INTERIOR_AT_COORDS(vGangPedCoord) //PIN_INTERIOR_IN_MEMORY(interior) IF interior = null RETURN FALSE ELSE IF NOT IS_INTERIOR_READY(interior) RETURN FALSE ENDIF ENDIF ENDIF cprintln(debug_Trevor3,"Id : ",ind," variation: ",iNextPedVariation) SWITCH iNextPedVariation CASE 0 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head) SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,2), 0, 1, 0) //(hair) SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 1, 0) //(uppr) SET_PED_COMPONENT_VARIATION(zped[ind].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 1, 0) //(lowr) BREAK CASE 1 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1) BREAK CASE 2 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0) BREAK CASE 3 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,0) BREAK CASE 4 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0) BREAK CASE 5 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,2) BREAK CASE 6 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1) BREAK CASE 7 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),2,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2) BREAK CASE 8 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,0) BREAK CASE 9 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2) BREAK CASE 10 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1) BREAK CASE 11 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),2,2) BREAK CASE 12 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,2) BREAK CASE 13 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),1,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2) BREAK CASE 14 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2) BREAK CASE 15 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,2) BREAK CASE 16 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),0,1) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),1,1) BREAK CASE 17 zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_Hillbilly_02,vGangPedCoord,fGangPedHead) SET_PED_DEFAULT_COMPONENT_VARIATION(zped[ind].id) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,0),0,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,2),2,0) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,3),1,2) SET_PED_COMPONENT_VARIATION(zped[ind].id,INT_TO_ENUM(PED_COMPONENT,4),0,1) BREAK ENDSWITCH IF iNextPedVariation > 17 cprintln(debug_Trevor3,"FUCKERS") zped[ind].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,vGangPedCoord,fGangPedHead) SET_PED_RANDOM_COMPONENT_VARIATION(zped[ind].id) ENDIF iNextPedVariation++ //zped[ind].id = CREATE_PED (PEDTYPE_MISSION, mGangPedModel, vGangPedCoord, fGangPedHead ) IF zped[ind].role = role_innocent SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ind].id,TRUE) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ind].id, HASH_IGNORE_GROUP) else GIVE_WEAPON_TO_PED(zped[ind].id, wepGang, 3000, bSetWeaponAsCurrent,TRUE) //cprintln(debug_Trevor3,"Give weapon to ped: ",GET_PLACEMENT_STRING(ind)) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ind].id, HASH_FOE_GROUP) SET_ped_AS_ENEMY(zped[ind].id, TRUE) SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_WILL_SCAN_FOR_DEAD_PEDS,TRUE) SET_PED_HEARING_RANGE(zped[ind].id,120.0) SET_PED_SEEING_RANGE(zped[ind].id,22.0) SET_PED_ID_RANGE(zped[ind].id,22.0) //SET_PED_ID_RANGE(zped[ind].id,3.0) SET_PED_CONFIG_FLAG(zped[ind].id,PCF_RunFromFiresAndExplosions,false) SET_COMBAT_FLOAT(zped[ind].id,CCF_BULLET_IMPACT_DETECTION_RANGE,3.0) if zped[ind].role = role_guard_house SET_PED_ACCURACY(zped[ind].id,12) ELSE SET_PED_ACCURACY(zped[ind].id,45) endif SET_PED_DIES_WHEN_INJURED (zped[ind].id, TRUE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(zped[ind].id, TRUE) SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_CAN_USE_RADIO,FALSE) SET_PED_COMBAT_ATTRIBUTES(zped[ind].id,CA_ALWAYS_FLEE,FALSE) INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(zped[ind].id, TRUE) endif STOP_PED_WEAPON_FIRING_WHEN_DROPPED(zped[ind].id) SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(zped[ind].id,TRUE) // JR - seems safer to leave this on. //SET_PED_SHOULD_IGNORE_SCENARIO_EXIT_COLLISION_CHECKS(zped[ind].id, TRUE) SET_PED_SHOULD_PLAY_DIRECTED_NORMAL_SCENARIO_EXIT(zPED[ind].id, <<0,0,0>>) SET_PED_SHOULD_IGNORE_SCENARIO_NAV_CHECKS(zPED[ind].id, TRUE) SET_PED_SHOULD_PROBE_FOR_SCENARIO_EXITS_IN_ONE_FRAME(zPED[ind].id, TRUE) SET_ENTITY_HEALTH(zped[ind].id, 150) RETURN TRUE ENDFUNC // =================================================== NEW HANDLING OF GAME ==================================================================== FUNC BOOL SET_CONDITION_STATE(enumconditions thisCondition, bool setReturns) int j REPEAT COUNT_OF(conditions) j IF thisCondition = conditions[j].condition IF setReturns = TRUE conditions[j].returns = TRUE ELSE conditions[j].returns = FALSE ENDIF RETURN TRUE ENDIF ENDREPEAT RETURN FALSE ENDFUNC FUNC BOOL IS_CONDITION_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF iArray >= 0 AND iArray < COUNT_OF(conditions) IF conditions[iArray].condition = conditiontoCheck IF /*conditions[iArray].active AND */conditions[iArray].returns RETURN TRUE ENDIF ELSE IF conditions[iArray].condition != COND_NULL SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_CONDITION_FALSE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF iArray >= 0 AND iArray < COUNT_OF(conditions) IF conditions[iArray].condition = conditiontoCheck IF /*conditions[iArray].active AND */NOT conditions[iArray].returns RETURN TRUE ENDIF ELSE IF conditions[iArray].condition != COND_NULL SCRIPT_ASSERT("SCRIPT: IS_CONDITION_FALSE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF ENDIF ELSE RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL WAS_CONDITION_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF conditions[iArray].condition = conditiontoCheck IF /*conditions[iArray].active AND */conditions[iArray].wasTrue RETURN TRUE ENDIF ELSE SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF RETURN FALSE ENDFUNC PROC SET_CONDITION_WAS_TRUE(enumconditions conditiontoCheck) int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition) IF conditions[iArray].condition = conditiontoCheck conditions[iArray].wasTrue = TRUE ELSE SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]") ENDIF ENDPROC FUNC BOOL IS_ACTION_COMPLETE(int iEntry, enumActions actionToCheck) IF actions[iEntry].action = actionToCheck IF actions[iEntry].completed = TRUE RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC bool andOrReturns(bool &pconditionsTrue, bool &pbracketOpen, andorEnum andOr, enumconditions cond) //IF NOT pbracketOpen //OR (NOT pconditionsTrue AND pbracketOpen) SWITCH andOr CASE cFORCEtrue pconditionsTrue = TRUE BREAK CASE cIGNORE RETURN FALSE BREAK CASE cIF IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cIFnot IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_FALSE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cOR IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF BREAK CASE cORbracket IF pconditionsTrue RETURN FALSE ELSE pbracketOpen = TRUE IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond))) pconditionsTrue = TRUE ENDIF ENDIF BREAK CASE cAND IF (cond != COND_NULL AND IS_CONDITION_FALSE(cond)) pconditionsTrue = FALSE ENDIF BREAK CASE cANDNOT IF (cond != COND_NULL AND IS_CONDITION_TRUE(cond)) pconditionsTrue = FALSE ENDIF BREAK CASE cWasTrueNowFalse IF WAS_CONDITION_TRUE(cond) IF IS_CONDITION_FALSE(COND) pconditionsTrue = TRUE ELSE pconditionsTrue = FALSE ENDIF ELSE IF IS_CONDITION_TRUE(cond) SET_CONDITION_WAS_TRUE(COND) ENDIF pconditionsTrue = FALSE ENDIF BREAK ENDSWITCH RETURN TRUE ENDFUNC FUNC bool checkANDOR(andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) conditionsTrue = FALSE bracketOpen = FALSE IF andOrReturns(conditionsTrue,bracketOpen,andOr1,cond1) IF andOrReturns(conditionsTrue,bracketOpen,andOr2,cond2) IF andOrReturns(conditionsTrue,bracketOpen,andOr3,cond3) IF andOrReturns(conditionsTrue,bracketOpen,andOr4,cond4) ENDIF ENDIF ENDIF ENDIF IF conditionsTrue RETURN TRUE ENDIF RETURN FALSE ENDFUNC //conditions PROC checkConditions(enumconditions firstCondition, enumconditions lastCondition) int iLastArray = enum_to_int(lastCondition) - enum_to_int(firstCondition) IF conditions[0].condition != firstCondition AND conditions[iLastArray].condition != lastCondition int j int enumCounter = 0 REPEAT COUNT_OF(conditions) j IF j <= iLastArray conditions[j].condition = int_to_enum(enumconditions,enum_to_int(firstCondition) + enumCounter) conditions[j].active = TRUE conditions[j].returns = FALSE conditions[j].wasTrue = FALSE enumCounter++ ELSE conditions[j].active = FALSE ENDIF ENDREPEAT //reset which condition goes in to which array. ENDIF int i REPEAT COUNT_OF(conditions) i //IF conditions[i].active SWITCH conditions[i].condition CASE COND_INITIAL_INSTRUCTIONS_PLAYED IF NOT conditions[i].returns IF conditions[i].flag = 0 IF IS_THIS_PRINT_BEING_DISPLAYED("FRMCHSE_1") conditions[i].flag = 1 ENDIF ELSE IF NOT IS_THIS_PRINT_BEING_DISPLAYED("FRMCHSE_1") conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_PLAYER_IN_ANY_CAR conditions[i].returns = FALSE IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) conditions[i].returns = TRUE ENDIF BREAK CASE COND_BULLET_IMPACTED_BY_BARRELS IF NOT conditions[i].returns IF IS_CONDITION_FALSE(COND_SHOOTING_PED_DEAD) IF HAS_BULLET_IMPACTED_IN_AREA(<<2493.155029,4970.314941,43.880379>>,3.25) OR IS_BULLET_IN_AREA(<<2493.155029,4970.314941,43.880379>>,3.25) conditions[i].returns = TRUE ENDIF ELSE conditions[i].active = FALSE ENDIF ENDIF BREAK CASE COND_SHOOTING_PED_DEAD IF NOT conditions[i].returns switch conditions[i].flag CASE 0 conditions[i].intA = get_ped_with_placement(pos_shooting_bottle_1) conditions[i].intB = get_ped_with_placement(pos_shooting_bottle_2) conditions[i].flag++ break case 1 IF conditions[i].intA != -1 aND conditions[i].intB != -1 IF DOES_ENTITY_EXIST(zped[conditions[i].intA].id) AND DOES_ENTITY_EXIST(zped[conditions[i].intB].id) IF IS_PED_INJURED(zped[conditions[i].intA].id) OR IS_PED_INJURED(zped[conditions[i].intB].id) conditions[i].returns = TRUE ENDIF ENDIF endif BREAK ENDSWITCH ENDIF BREAK CASE COND_ALL_ENEMY_ALERTED IF bAlertEveryone conditions[i].returns = TRUE conditions[i].active = FALSE ENDIF BREAK CASE COND_PLAYER_IN_METH_LAB conditions[i].returns = FALSE IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("V_8_BasementRm") conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_IN_HOUSE conditions[i].returns = FALSE IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null //player inside house AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2421.330811,4954.833008,25.328293>>, <<2466.796143,4996.822266,66.070175>>, 37.187500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_DOWNSTAIRS conditions[i].returns = FALSE IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE) IF NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.884766,4981.169434,50.005180>>, <<2441.579834,4965.088379,56.240055>>, 34.312500) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_PLAYER_APPROACHING_HOUSE IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2451.5173, 4973.1221, 44.2646 >>) < 50 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_BASEMENT_PED_DEAD_IN_BASEMENT switch conditions[i].flag CASE 0 conditions[i].intA = get_ped_with_placement(pos_inside_cards3) IF conditions[i].intA != -1 conditions[i].flag++ ENDIF BREAK CASE 1 IF DOES_ENTITY_EXIST(zped[conditions[i].intA].id) IF IS_PED_INJURED(zped[conditions[i].intA].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[conditions[i].intA].id,<<2427.8506, 4964.9717, 43.1704>>) < 3.0 conditions[i].returns = TRUE conditions[i].flag++ ELSE conditions[i].active = FALSE ENDIF ENDIf ENDIF BREAK ENDSWITCH BREAK CASE COND_ATTACKERS_ALL_DEAD IF NOT conditions[i].returns switch conditions[i].flag CASE 0 IF NOT is_event_active(events_spawn_house) conditions[i].flag++ ENDIF BREAK CASE 1 int iR bool bEnemiesAreStillAlive bool bOutsideEnemiesAlive bEnemiesAreStillAlive = FALSE bOutsideEnemiesAlive = FALSE REPEAT COUNT_OF(zped) iR IF NOT IS_PED_INJURED(zped[iR].id) bEnemiesAreStillAlive = TRUE IF zped[iR].role = role_guard_outside bOutsideEnemiesAlive = TRUE iR = count_of(zped) //exit endif endif ENDREPEAT IF NOT bEnemiesAreStillAlive conditions[i].returns = TRUE else conditions[i].returns = false ENDIF IF bOutsideEnemiesAlive SET_CONDITION_STATE(COND_ALL_OUTSIDE_ENEMY_DEAD,false) else SET_CONDITION_STATE(COND_ALL_OUTSIDE_ENEMY_DEAD,true) endif BREAK ENDSWITCH ENDIF BREAK CASE COND_ONE_ATTACKER_LEFT_OUTSIDE //value for this set elsewhere in script using SET_CONDITION_STATE IF NOT conditions[i].returns IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) conditions[i].returns = true int iR int deadCount deadCount=0 REPEAT COUNT_OF(zPED) iR if zPED[iR].role = role_guard_outside IF NOT IS_PED_INJURED(zPED[iR].id) deadCount++ IF deadCount > 1 conditions[i].returns = false iR = COUNT_OF(zPED) endif ENDIF ENDIF ENDREPEAT ENDIF ENDIF BREAK CASE COND_FAIL_FOR_LEAVING_FARM switch conditions[i].flag case 0 vehicle_index aVeh IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>) < 250 ////cprintln(debug_Trevor3,"player inside 250m") conditions[i].flag++ ENDIF BREAK case 1 bool bCheckOnFoot IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) aVeh = get_vehicle_ped_is_in(player_ped_id()) IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(aVeh)) OR IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(aVeh)) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>,false) > 700 conditions[i].returns = TRUE ENDIF ELSE bCheckOnFoot = true ENDIF ELSE bCheckOnFoot = TRUE ENDIF IF bCheckOnFoot IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2446.6738, 4977.7876, 57.4583>>) > 250 ////cprintln(debug_Trevor3,"player inside 250m") conditions[i].returns = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK case COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2441.064941,4968.819336,45.830746>>) < 2.75 IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards1)].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards1)].id,<<2439.385986,4962.049316,45.904697>>) < 3 conditions[i].returns = TRUE ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards2)].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards2)].id,<<2439.385986,4962.049316,45.904697>>) < 3 conditions[i].returns = TRUE ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_inside_cards3)].id) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[ENUM_TO_INT(pos_inside_cards3)].id,<<2439.385986,4962.049316,45.904697>>) < 3 conditions[i].returns = TRUE ENDIF ENDIF conditions[i].active = FALSE ENDIF break CASE COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED SWITCH conditions[i].flag CASE 0 IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_barrels_1)].id) AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_barrels_1)].id) conditions[i].flag++ ENDIF IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_barrels_2)].id) AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_barrels_2)].id) conditions[i].flag++ ENDIF IF NOT IS_PED_INJURED(zped[ENUM_TO_INT(pos_garden_chat_2)].id) AND IS_PED_SITTING_IN_ANY_VEHICLE(zped[ENUM_TO_INT(pos_garden_chat_2)].id) conditions[i].flag++ ENDIF conditions[i].intA = GET_GAME_TIMER() + 8000 BREAK CASE 1 IF IS_VEHICLE_DRIVEABLE(BarrelVan) IF IS_POINT_VISIBLE(GET_ENTITY_COORDS(BarrelVan),5,150) conditions[i].intB += floor(timestep() * 1000) ENDIF ENDIF IF conditions[i].intB > 1500 conditions[i].returns = TRUE ENDIF IF GET_GAME_TIMER() > conditions[i].intA conditions[i].flag++ ENDIF BREAK ENDSWITCH BREAK CASE COND_JERRY_CAN_DESTROYED SWITCH conditions[i].flag CASE 0 IF DOES_PICKUP_EXIST(pickup_gas) IF DOES_PICKUP_OBJECT_EXIST(pickup_gas) conditions[i].flag++ ENDIF ENDIF BREAK CASE 1 IF DOES_PICKUP_EXIST(pickup_gas) IF NOT DOES_PICKUP_OBJECT_EXIST(pickup_gas) IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,<<2435.2524, 4966.7480, 41.3476>>,4.0) conditions[i].returns = TRUE ENDIF conditions[i].flag++ ENDIF ENDIF BREAK ENDSWITCH BREAK CASE COND_ENEMY_PED_REACTING IF bAPedIsReacting AND NOT bAlertEveryone conditions[i].returns = TRUE ENDIF BREAK CASE COND_TREVOR_NEAR_BASEMENT IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2442.818604,4970.283203,45.248096>>, <<2439.625244,4966.861816,48.145962>>, 3.437500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_TREVOR_NEAR_STAIRS IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2434.671387,4959.104492,44.851093>>, <<2440.499756,4965.188965,48.123096>>, 3.625000) conditions[i].returns = TRUE ENDIF BREAK CASE COND_TREVOR_AT_STAIRS IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2432.467285,4959.472656,44.941334>>, <<2430.796875,4961.172852,48.309013>>, 1.562500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_TREVOR_SEEN If bPlayerSeen conditions[i].returns = TRUE conditions[i].active = FALSE ENDIF BREAK //gas pouring CASE COND_PLAYER_OUT_FRONT conditions[i].returns = FALSE IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), <<2447.671387,4951.438477,43.255756>>, <<2454.663818,4957.855957,47.891174>>, 6.812500) conditions[i].returns = TRUE ENDIF BREAK CASE COND_OUT_OF_GAS SWITCH conditions[i].flag CASE 0 IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN) conditions[i].flag++ ENDIF BREAK CASE 1 IF NOT HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN) conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH // conditions[i].intA = 1 //ped has petrol can this frame // conditions[i].intB = GET_AMMO_IN_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_PETROLCAN) // // IF conditions[i].intB <= 0 // conditions[i].returns = TRUE // ENDIF //ELSE // IF conditions[i].intA = 1 // IF conditions[i].intB <= 6 // conditions[i].returns = TRUE // ELSE // conditions[i].intA = 0 // ENDIF // ENDIF BREAK CASE COND_PLAYER_HAS_PETROL_CAN conditions[i].returns = FALSE SWITCH conditions[i].intA CASE 0 IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN) conditions[i].intA = 10 ELSE conditions[i].intA = 20 ENDIF BREAK ENDSWITCH IF HAS_PED_GOT_WEAPON(player_peD_id(),WEAPONTYPE_PETROLCAN) IF conditions[i].intA = 20 // SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) //commented out. Seemed to be forcing player to equip petrol cam. Why did I even add this? ENDIF conditions[i].returns = TRUE ENDIF BREAK CASE COND_GAS_TRAIL_COMPLETE IF NOT conditions[i].returns = TRUE IF IS_GAS_TRAIL_COMPLETE() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_LAST_BLIP_POURED_ON IF gasTrail[0].bPouredOn = TRUE conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_POURING_GAS conditions[i].returns = FALSE WEAPON_TYPE wep wep = WEAPONTYPE_UNARMED IF GET_CURRENT_PED_WEAPON(player_ped_id(),wep) IF wep = WEAPONTYPE_PETROLCAN IF IS_CONTROL_PRESSED(player_control,INPUT_ATTACK) conditions[i].returns = TRUE ENDIF ENDIF ENDIF BREAK CASE COND_EXPLOSION_IN_BASEMENT IF IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000) IF NOT IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_EXTINGUISHER,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000) AND NOT IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_FLARE,<<2435.775879,4963.066895,39.342651>>, <<2428.118408,4971.287109,43.673267>>, 11.875000) conditions[i].returns = TRUE ENDIF ENDIF BREAK /* CASE COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE IF NOT IS_GAS_TRAIL_LINK_MISSING(17) IF IS_GAS_TRAIL_BURNING() IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = null vector vHere vHere = <<0,0,0>> IF GET_CLOSEST_FIRE_POS(vHere,<<2452.7, 4970.4, 45.8104>>) IF GET_DISTANCE_BETWEEN_COORDS(vHere,<<2452.7, 4970.4, 45.8104>>) < 1.5 conditions[i].returns = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF BREAK*/ CASE COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK SWITCH conditions[i].flag CASE 0 IF IS_GAS_TRAIL_BURNING_AND_CAN_THE_FIRE_BURN_OUT() int iNode iNode = GET_GAS_TRAIL_IGNITE_NODE() IF iNode <= 17 SET_CONDITION_STATE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE,TRUE) ELSE conditions[i].returns = TRUE ENDIF conditions[i].flag++ ENDIF BREAK ENDSWITCH BREAK CASE COND_GAS_TRAIL_REACHED_DOORWAY IF NOT conditions[i].returns IF IS_GAS_NODE_BURNING(17) conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_TREVOR_INSIDE_HOUSE conditions[i].returns = FALSE IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null conditions[i].returns = TRUE ENDIF BREAK CASE COND_40M_FARM_WARNING IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2439.52, 4969.67, 52.65>>) > 42.5 conditions[i].returns = TRUE ENDIF BREAK CASE COND_60M_FARM_FAIL IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2439.52, 4969.67, 52.65>>) > 60 conditions[i].returns = TRUE ENDIF BREAK CASE COND_GAS_TRAIL_IGNITED_INCORRECTLY IF IS_GAS_TRAIL_BURNING() IF NOT IS_GAS_TRAIL_BURNING_AND_CAN_THE_FIRE_BURN_OUT() conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_GET_WANTED_LEVEL SWITCH conditions[i].flag CASE 0 conditions[i].intA = GET_GAME_TIMER() + 30000 conditions[i].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > conditions[i].intA conditions[i].returns = TRUE conditions[i].flag++ ENDIF BREAK ENDSWITCH BREAK CASE COND_PLAYER_300_FROM_FARM conditions[i].returns = FALSE IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2448.25, 4974.92, 55.11>>) > 300 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_BUILDING_STATE_SWAPPED IF IS_ACTION_COMPLETE(1,ACT_CHANGE_BUILDING_STATE) conditions[i].returns = TRUE ENDIF BREAK CASE COND_PLAYER_500_FROM_FARM conditions[i].returns = FALSE IF NOT conditions[i].returns IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2448.25, 4974.92, 55.11>>) > 500 conditions[i].returns = TRUE ENDIF ENDIF BREAK CASE COND_GOT_WANTED_LEVEL conditions[i].returns = FALSE IF GET_PLAYER_WANTED_LEVEL(player_id()) > 0 conditions[i].returns = TRUE ENDIF BREAK ENDSWITCH //ENDIF ENDREPEAT ENDPROC //actions FUNC INT GET_ACTION_FLAG(int iAction, enumActions actionToCheck) IF actions[iAction].action = actionToCheck RETURN actions[iAction].flag ENDIF RETURN -1 endfunc PROC SET_ACTION_INT(int iAction, enumActions actionToSet, int iNewIntValue) IF actions[iAction].action = actionToSet actions[iAction].intA = iNewIntValue ELSE SCRIPT_ASSERT("Incorrect value passed in to GET_ACTION_INTA()") ENDIF endproc PROC FORCE_ACTION_STATE(int thisI, enumActions thisAction, bool setCompleted=TRUE, bool setOngoing = TRUE) actions[thisI].action = thisAction actions[thisI].active = TRUE actions[thisI].ongoing = setOngoing actions[thisI].completed = setCompleted actions[thisI].flag = 0 actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 actions[thisI].intB = 0 actions[thisI].trackCondition=FALSE actions[thisI].floatA = 0 ENDPROC FUNC VECTOR CONVERT_ROTATION_TO_DIRECTION_VECTOR(VECTOR vRot) RETURN <<-SIN(vRot.z) * COS(vRot.x), COS(vRot.z) * COS(vRot.x), SIN(vRot.x)>> ENDFUNC PROC ACTION(int thisI, enumActions thisAction, enumACTIONplayout playout=PLAYOUT_ON_TRIGGER, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) #if IS_DEBUG_BUILD IF thisI >= MAX_ACTIONS SCRIPT_ASSERT("SCRIPT: INCREASE MAX_ACTIONS") ENDIF #endif IF actions[thisI].action != thisAction OR actions[thisI].active = FALSE actions[thisI].action = thisAction actions[thisI].active = TRUE actions[thisI].completed = FALSE actions[thisI].flag = 0 actions[thisI].needsCleanup = FALSE actions[thisI].intA = 0 actions[thisI].intB = 0 actions[thisI].floatA = 0 ENDIF bool actionConditionCheck IF actions[thisI].ongoing AND playout = PLAYOUT_ON_TRIGGER actionConditionCheck = TRUE ELSE actionConditionCheck = checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4) ENDIF IF playout = PLAYOUT_ON_COND AND NOT actionConditionCheck actions[thisI].ongoing = FALSE ENDIF IF actions[thisI].completed = FALSE OR actions[thisI].flag = CLEANUP IF actionConditionCheck = TRUE IF NOT actions[thisI].ongoing actions[thisI].ongoing = TRUE ENDIF SWITCH actions[thisI].action //drive to alley CASE act_get_stalls /* IF NOT IS_BIT_SET(actions[thisI].intA,0) IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<1985.3221,3053.0872,46.2263>>,0.3, PROP_BAR_STOOL_01) g_sTriggerSceneAssets.object[0] = GET_CLOSEST_OBJECT_OF_TYPE(<<1985.3221,3053.0872,46.2263>>,0.3,PROP_BAR_STOOL_01,FALSE) IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[0]) int scriptID IF IS_STRING_NULL_OR_EMPTY(GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],scriptID)) g_sTriggerSceneAssets.object[0] = GET_CLOSEST_OBJECT_OF_TYPE(<<1985.3221,3053.0872,46.2263>>,0.3,PROP_BAR_STOOL_01,TRUE) //cprintln(debug_Trevor3,"chinese 2 script id: ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],scriptID)) SET_BIT(actions[thisI].intA,0) ENDIF ENDIF ENDIF ENDIF IF NOT IS_BIT_SET(actions[thisI].intA,1) IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<1984.8481,3052.4856,46.2263>>,0.3, PROP_BAR_STOOL_01) g_sTriggerSceneAssets.object[1] = GET_CLOSEST_OBJECT_OF_TYPE(<<1984.8481,3052.4856,46.2263>>,0.3,PROP_BAR_STOOL_01,FALSE) IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[1]) int scriptID IF IS_STRING_NULL_OR_EMPTY(GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[1],scriptID)) g_sTriggerSceneAssets.object[1] = GET_CLOSEST_OBJECT_OF_TYPE(<<1984.8481,3052.4856,46.2263>>,0.3,PROP_BAR_STOOL_01,TRUE) //cprintln(debug_Trevor3,"chinese 2 script id: ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[1],scriptID)) SET_BIT(actions[thisI].intA,1) ENDIF ENDIF ENDIF ENDIF */ BREAK CASE ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE SWITCH actions[thisI].flag CASE 0 START_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE") //cprintln(debug_Trevor3,"CHI_2_DRIVE_TO_FARMHOUSE called") actions[thisI].flag++ BREAK CASE 1 IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE") actions[thisI].completed = TRUE ENDIF BREAK ENDSWITCH BREAK CASE ACT_REMOVE_BAR_PEDS IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_peD_id(),<<1991.0500, 3054.2625, 46.2147>>) > 250 IF DOES_ENTITY_EXIST(zped[ped_tao].id) DELETE_PED(zped[ped_tao].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id) DELETE_PED(zped[ped_taos_translator].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_janet].id) DELETE_PED(zped[ped_janet].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id) DELETE_PED(zped[ped_oldMan1].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id) DELETE_PED(zped[ped_oldMan2].id) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet) SET_MODEL_AS_NO_LONGER_NEEDED(IG_JANET) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2) SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG) SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR) REMOVE_ANIM_DICT("misschinese2_crystalmaze") REMOVE_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG") REMOVE_ANIM_DICT("missrampageintrooutro") //DISABLE_NAVMESH_IN_AREA(<<1993.638428,3053.134033,45.214718>>, <<1989.650635,3055.619385,47.840214>>,FALSE) IF iNavBlock != -1 IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock) ENDIF ENDIf CLEAR_PED_NON_CREATION_AREA() cprintln(debug_Trevor3,"Remove bar peds") kill_event(events_animate_bar) actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_LOAD_SOUNDSET IF LOAD_STREAM("CHI_2_FARMHOUSE_INTRO","CHINESE2_FARMHOUSE_INTRODUCTION") actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_LOAD_FRUSTROM IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_peD_id(),<<2457.489746,4977.094727,50.567833>> ) < 400 add_event(events_force_farm_doors_drawing) SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) PREFETCH_SRL("chinese2_farmhouse_cutscene") actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_BAR_PEDS_LOOK_AT_TREVOR IF NOT IS_PED_INJURED(zped[ped_janet].id) AND NOT IS_PED_INJURED(zped[ped_oldMan1].id) AND NOT IS_PED_INJURED(zped[ped_oldMan2].id) IF GET_ACTION_FLAG(6,ACT_MAKE_BAR_PEDS_FLEE) < 2 IF IS_ENTITY_IN_ANGLED_AREA(player_ped_id(),<<1981.256714,3050.721191,41.089954>>, <<1984.256958,3055.542725,49.473137>>, 3.062500) IF GET_SCRIPT_TASK_STATUS(zped[ped_janet].id,SCRIPT_TASK_LOOK_AT_ENTITY) = FINISHED_TASK cprintln(debug_Trevor3,"YES") TASK_LOOK_AT_ENTITY(zped[ped_oldMan1].id,player_ped_id(),-1) TASK_LOOK_AT_ENTITY(zped[ped_oldMan2].id,player_ped_id(),-1) TASK_LOOK_AT_ENTITY(zped[ped_janet].id,player_ped_id(),-1) ENDIF ENDIF ENDIF ENDIF BREAK CASE ACT_SLOW_DOWN_PLAYER_IN_CHOPPER float fDist,fMulti,fThisSpeed fDist = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2450.2136, 4979.2080, 60.8422>>) IF fDist < 900 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) vehicle_index aVeh aVeh = GET_VEHICLE_PED_IS_IN(player_ped_id()) IF IS_VEHICLE_DRIVEABLE(aVeh) IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(aVeh)) OR IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(aVeh)) fmulti = (900 - fDist) IF fmulti < 0 fMulti = 0 endif fmulti /= 900 fmulti *= 10000 fThisSpeed = GET_ENTITY_SPEED(aVeh) fmulti *= fThisSpeed/35 IF fThisSpeed > 35 APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(aVeh,apply_type_impulse,<<0,-fmulti,0>>,0,true,false) //showfloatOnScreen(0.1,0.1,fmulti) //showfloatOnScreen(0.1,0.15,fThisSpeed) ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE ACT_BLEND_OUT_OF_TREVOR_RAGE IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro") actions[thisI].flag = 1 SET_PED_RESET_FLAG(player_ped_id(),PRF_SkipOnFootIdleIntro, TRUE) //IF GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro") > 0.75 if HAS_ANIM_EVENT_FIRED(player_ped_id(),GET_HASH_KEY("walkinterruptible")) FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_IDLE) IF IS_PLAYER_PRESSING_A_CONTROL_BUTTON() CLEAR_PED_TASKS(player_ped_id()) actions[thisI].completed = TRUE ENDIF ENDIF ELSE IF actions[thisI].flag = 1 REMOVE_ANIM_DICT("missrampageintrooutro") actions[thisI].completed = TRUE ENDIF ENDIF BREAK CASE ACT_MAKE_BAR_PEDS_FLEE switch actions[thisI].flag case 0 IF NOT IS_PED_INJURED(zped[ped_janet].id) AND NOT IS_PED_INJURED(zped[ped_oldMan1].id) AND NOT IS_PED_INJURED(zped[ped_oldMan2].id) //IF NOT IS_PED_INJURED( SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_janet].id,relGroupBar) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_oldMan1].id,relGroupBar) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_oldMan2].id,relGroupBar) SET_PED_COMBAT_ATTRIBUTES(zped[ped_janet].id,CA_ALWAYS_FLEE,TRUE) SET_PED_COMBAT_ATTRIBUTES(zped[ped_oldMan1].id,CA_ALWAYS_FLEE,TRUE) SET_PED_COMBAT_ATTRIBUTES(zped[ped_oldMan2].id,CA_ALWAYS_FLEE,TRUE) CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_janet].id) CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_oldMan1].id) CLEAR_ENTITY_LAST_DAMAGE_ENTITY(zped[ped_oldMan2].id) actions[thisI].flag++ ENDIF BREAK case 1 IF IS_PED_INJURED(zped[ped_janet].id) OR IS_PED_INJURED(zped[ped_oldMan1].id) OR IS_PED_INJURED(zped[ped_oldMan2].id) actions[thisI].flag++ ENDIF IF NOT IS_PED_INJURED(zped[ped_janet].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_janet].id) actions[thisI].flag=2 ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_oldMan1].id) actions[thisI].flag=2 ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan2].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED(zped[ped_oldMan2].id) actions[thisI].flag=2 ENDIF ENDIF break case 2 IF NOT IS_PED_INJURED(zped[ped_janet].id) TASK_SMART_FLEE_PED(zped[ped_janet].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_janet].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_janet].id) ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan1].id) TASK_SMART_FLEE_PED(zped[ped_oldMan1].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_oldMan1].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan1].id) ENDIF IF NOT IS_PED_INJURED(zped[ped_oldMan2].id) TASK_SMART_FLEE_PED(zped[ped_oldMan2].id,player_ped_id(),100,-1) SET_PED_KEEP_TASK(zped[ped_oldMan2].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[ped_oldMan2].id) actions[thisI].completed = TRUE ENDIF break ENDSWITCH BREAK CASE ACT_LOAD_END_CUT_FRUSTROM //COND_GAS_TRAIL_COMPLETE switch actions[thisI].flag case 0 PREFETCH_SRL("chinese2_explosion_cutscene") STOP_STREAM() actions[thisI].flag++ BREAK CASE 1 IF CUTSCENE_FIRST_SHOT = SHOT_BASEMENT cprintln(debug_Trevor3,"A") IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_MOLOTOV_MASTER") actions[thisI].flag++ ENDIF ENDIF IF CUTSCENE_FIRST_SHOT = SHOT_HOUSE_EXPLOSION cprintln(debug_Trevor3,"B") IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_STICKY_BOMB_MASTER") actions[thisI].flag++ ENDIF ENDIF IF CUTSCENE_FIRST_SHOT = SHOT_NORMAL cprintln(debug_Trevor3,"C") IF LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_SHOOT_GASOLINE_MASTER") actions[thisI].flag++ ENDIF ENDIF BREAK CASE 2 IF IS_SRL_LOADED() cprintln(debug_trevor3,"IS_SRL_LOADED") actions[thisI].flag = 10 ENDIF BREAK endswitch BREAK case ACT_BOMB_IN_BASEMENT switch actions[thisI].flag case 1 IF GET_GAME_TIMER() > actions[thisI].intA IF IS_VALID_INTERIOR(GET_INTERIOR_FROM_ENTITY(player_ped_id())) /*float fHEading fHeading = GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2442.7959, 4973.3228, 46.9416>>,false) float foMin, foMax foMin = fHeading - 45 foMax = fHeading + 45 //cprintln(debug_Trevor3,fHeading) fHEading = GET_RANDOM_FLOAT_IN_RANGE(foMin,foMax) //cprintln(debug_Trevor3,fHeading,"X: ",actions[thisI].floatA*sin(fHEading),"Y: ",actions[thisI].floatA*cos(fHEading)) vector vMid vMid = get_entity_coords(player_ped_id())+<> //cprintln(debug_Trevor3,vMid) */ ADD_EXPLOSION(get_entity_coords(player_ped_id())+<>,EXP_TAG_SHIP_DESTROY,1.5) actions[thisI].floatA -= 1 actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(250,520) ELSE actions[thisI].flag = 2 ENDIF ENDIF break case 2 break DEFAULT int iR REPEAT COUNT_OF(cellar_explosions) iR IF NOT IS_BIT_SET(actions[thisI].intA,iR) IF IS_EXPLOSION_IN_SPHERE(EXP_TAG_DONTCARE,cellar_explosions[iR],5) SET_BIT(actions[thisI].intA,iR) IF actions[thisI].flag = 0 actions[thisI].flag = GET_GAME_TIMER() + 1500 ENDIF ENDIF ENDIF ENDREPEAT IF GET_GAME_TIMER() > actions[thisI].intB actions[thisI].intB = 0 REPEAT COUNT_OF(cellar_explosions) iR IF NOT IS_BIT_SET(actions[thisI].intA,iR+9) AND IS_BIT_SET(actions[thisI].intA,iR) ADD_EXPLOSION(cellar_explosions[iR],EXP_TAG_SHIP_DESTROY,1.5) SET_BIT(actions[thisI].intA,iR+9) iR = 8 actions[thisI].intB = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(150,320) ENDIF ENDREPEAT ENDIF IF actions[thisI].flag != 0 IF GET_GAME_TIMER() > actions[thisI].flag actions[thisI].flag = 1 actions[thisI].intA = GET_GAME_TIMER() + 300 actions[thisI].floatA = 16 ENDIF ENDIF BREAK ENDSWITCH break CASE act_shooting_peds_witness_impact_at_barrels int peda,pedb peda = get_ped_with_placement(pos_shooting_bottle_1) pedb = get_ped_with_placement(pos_shooting_bottle_2) set_ped_action(peda,action_respond_to_nearby_alerted_ped) set_ped_action(pedb,action_respond_to_nearby_alerted_ped) actions[thisI].completed = TRUE BREAK CASE ACT_RADIO_SOUND switch actions[thisI].flag case 0 SET_INITIAL_PLAYER_STATION("RADIO_01_CLASS_ROCK") actions[thisI].flag++ BREAK CASE 1 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) IF DOES_PLAYER_VEH_HAVE_RADIO() vehPlayer = GET_VEHICLE_PED_IS_IN(player_ped_id()) IF IS_VEHICLE_DRIVEABLE(vehPlayer) IF NOT GET_IS_VEHICLE_ENGINE_RUNNING(vehPlayer) actions[thisI].flag++ ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF PREPARE_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA") actions[thisI].flag++ ENDIF BREAK // IF DOES_ENTITY_EXIST(vehPlayer) // IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) /* IF DOES_PLAYER_VEH_HAVE_RADIO() IF PREPARE_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA") actions[thisI].flag++ ENDIF ELSE actions[thisI].completed = TRUE ENDIF ELSE actions[thisI].completed = TRUE ENDIF ELSe actions[thisI].completed = TRUE ENDIF*/ BREAK CASE 3 //IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) // IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer) IF TRIGGER_MUSIC_EVENT("CHN2_TREV_RADIO_1_FRTA") actions[thisI].flag++ ENDIF // ENDIF //ENDIF BREAK CASE 4 IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer) IF GET_IS_VEHICLE_ENGINE_RUNNING(vehPlayer) actions[thisI].intA += GET_GAME_TIMER() + 7000 actions[thisI].flag++ ENDIF ENDIF ENDIF BREAK CASE 5 IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer) IF GET_GAME_TIMER() > actions[thisI].intA IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK) AND GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_OFF) iF GET_MUSIC_VOL_SLIDER() != 0 IF CREATE_CONVERSATION_EXTRA("CHI2_rad",1,player_ped_id(),"Trevor") actions[thisI].flag++ ENDIF else actions[thisI].flag++ endif ELSE actions[thisI].intA = GET_GAME_TIMER() + 5000 ENDIF ENDIF ENDIF ENDIF BREAK CASE 6 IF IS_CONV_ROOT_PLAYING("CHI2_rad") actions[thisI].flag++ ENDIF BREAK CASE 7 IF NOT IS_CONV_ROOT_PLAYING("CHI2_rad") IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer) IF NOT IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_VEH_RADIO_WHEEL) IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK) IF iRadSound = -1 iRadSound = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iRadSound,"Change_Station_Loud","Radio_Soundset") actions[thisI].flag++ ENDIF ELSE actions[thisI].flag = 9 ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 8 IF NOT IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_VEH_RADIO_WHEEL) IF TRIGGER_MUSIC_EVENT("CHN2_TREV_RADIO_2_FRTA") START_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") actions[thisI].flag++ ENDIF ENDIF BREAK CASE 9 IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) IF IS_PED_IN_VEHICLE(player_ped_id(),vehPlayer) IF GET_PLAYER_RADIO_STATION_GENRE() = enum_to_int(RADIO_GENRE_PUNK) iF GET_MUSIC_VOL_SLIDER() != 0 IF CREATE_CONVERSATION_EXTRA("CHI2_radb",1,player_ped_id(),"Trevor") actions[thisI].flag++ ENDIF else actions[thisI].flag++ endif ENDIF ENDIF ENDIF /* IF actions[thisI].flag = 9 STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") iRadSound = -1 actions[thisI].flag = 11 ENDIF*/ BREAK /* CASE 10 //in case the player changes the radio station IF GET_PLAYER_RADIO_STATION_GENRE() != enum_to_int(RADIO_GENRE_PUNK) OR NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") actions[thisI].flag++ ENDIF BREAK case 11 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) AND GET_PLAYER_RADIO_STATION_GENRE() = enum_to_int(RADIO_GENRE_PUNK) START_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") actions[thisI].flag = 10 ENDIF break*/ endswitch BREAK CASE ACT_GET_WANTED_LEVEL kill_event(events_control_dispatch) SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_PLAYER_WANTED_LEVEL(player_id(),2) SET_PLAYER_WANTED_LEVEL_NOW(player_id()) SET_MAX_WANTED_LEVEL(5) actions[thisI].completed = TRUE BREAK CASE ACT_CHANGE_BUILDING_STATE IF NOT IS_POINT_VISIBLE(<<2448.25, 4974.92, 55.11>>,20,500) OR IS_CONDITION_TRUE(COND_PLAYER_500_FROM_FARM) IF int_farm != null UNPIN_INTERIOR(int_farm) ENDIF int_farm=null SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED) actions[thisI].completed = TRUE ENDIF BREAK CASE ACT_STAT_POUR_GAS SWITCH actions[thisI].flag CASE 0 IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) actions[thisI].intA = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) actions[thisI].flag++ ENDIF BREAK CASE 1 IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) int iAmmo iAmmo = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) IF iAmmo > actions[thisI].intA cprintln(debug_Trevor3,"more ammo") actions[thisI].intA = iAmmo ELIF iAmmo < actions[thisI].intA INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,actions[thisI].intA - iAmmo,FALSE) cprintln(debug_Trevor3,"ammo added = ",actions[thisI].intA - iAmmo) actions[thisI].intA = iAmmo ENDIF ENDIF weapon_type thisWep IF GET_CURRENT_PED_WEAPON(player_ped_id(),thisWep) IF thisWep = WEAPONTYPE_PETROLCAN IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ATTACK) IF actions[thisI].intB = 0 INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME) actions[thisI].intB = 1 ENDIF ELSE IF actions[thisI].intB = 1 INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) actions[thisI].intB = 0 ENDIF ENDIF ELSE IF actions[thisI].intB = 1 INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) actions[thisI].intB = 0 ENDIF ENDIF ELSE IF actions[thisI].intB = 1 INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) actions[thisI].intB = 0 ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_FUDGE_GAS_AMMO SWITCH actions[thisI].flag CASE 0 actions[thisI].intA = -1 actions[thisI].flag++ BREAK CASE 1 weapon_type thisWep IF GET_CURRENT_PED_WEAPON(player_ped_id(),thisWep) IF thisWep = WEAPONTYPE_PETROLCAN IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ATTACK) IF actions[thisI].intA = -1 actions[thisI].intA = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) ENDIF //int maxfuel // maxFuel = floor(to_float(actions[thisI].intA) * (0.2 + (0.8* (to_float(gasNodesRemaining) / 61.0)))) IF gasNodesRemaining = 0 actions[thisI].floatA += timestep() * 2.0 ELSE IF gasNodesRemaining < 30 AND actions[thisI].floatA < 70 actions[thisI].floatA += timestep() * 1.5 ELSE actions[thisI].floatA += timestep() ENDIF ENDIF int setAmmo setAmmo = floor(actions[thisI].intA * (1.0 - (actions[thisI].floatA / 90.0))) /* IF maxfuel < setAmmo IF maxFuel < GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) SET_AMMO_IN_CLIP(player_ped_id(),thisWep,maxFuel) ENDIF ELSE*/ IF setAmmo > 0 SET_PED_AMMO(player_ped_id(),thisWep,setAmmo) Else SET_PED_AMMO(player_ped_id(),thisWep,0) // REMOVE_WEAPON_FROM_PED(player_ped_id(),thisWep) ENDIF // ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_STOP_MUSIC playmusic("CHN2_STOP_TRACK",false,NULL_STRING()) actions[thisI].completed = TRUE BREAK CASE ACT_FIRE_AUDIO SET_AMBIENT_ZONE_LIST_STATE("AZL_CHN2_METH_LAB_FARM_FIRE", TRUE, TRUE) DISABLE_TAXI_HAILING(TRUE) actions[thisI].completed = TRUE BREAK CASE ACT_ENABLE_TAXI DISABLE_TAXI_HAILING(FALSE) actions[thisI].completed = TRUE BREAK CASE ACT_RESET_STUFF SET_VEHICLE_POPULATION_BUDGET(3) SET_PED_POPULATION_BUDGET(3) actions[thisI].completed = TRUE BREAK CASE ACT_REMOVE_SOME_ASSETS switch actions[thisI].flag case 0 IF DOES_ENTITY_EXIST(zPED[enum_to_int(pos_barrels_1)].obj) SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[enum_to_int(pos_barrels_1)].obj) ENDIF IF DOES_ENTITY_EXIST(zPED[enum_to_int(pos_barrels_2)].obj) SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[enum_to_int(pos_barrels_2)].obj) ENDIF int ij repeat count_of(oCans) ij IF DOES_ENTITY_EXIST(oCans[ij]) SET_OBJECT_AS_NO_LONGER_NEEDED(oCans[ij]) ENDIF endrepeat SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_LD_CAN_01) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer) actions[thisI].flag++ BREAK CASE 1 IF IS_PED_INJURED(zPED[enum_to_int(pos_innocent_drugden)].id) IF DOES_ENTITY_EXIST(objShotgun) SET_OBJECT_AS_NO_LONGER_NEEDED(objShotgun) REMOVE_WEAPON_ASSET(WEAPONTYPE_SAWNOFFSHOTGUN) actions[thisI].completed = TRUE ENDIF ENDIF BREAK ENDSWITCH BREAK CASE ACT_WHIMPERING IF NOT IS_PED_INJURED(zped[ped_tao].id) IF NOT IS_AMBIENT_SPEECH_PLAYING(zped[ped_tao].id) IF GET_GAME_TIMER() > actions[thisI].intA IF NOT IS_PED_INJURED(zped[ped_tao].id) PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zped[ped_tao].id,"WHIMPER","WAVELOAD_PAIN_MALE","SPEECH_PARAMS_FORCE_NORMAL") actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3500,5000) ENDIF ENDIF ENDIF ENDIF BREAK //CASE ACT_ANIMATE_CHINESE_AFTER_CUTSCENE // switch actions[thisI].flag // case 0 //BREAK CASE ACT_ANIMATE_CHINESE switch actions[thisI].flag case 0 REQUEST_MODEL(IG_TAOCHENG) REQUEST_MODEL(IG_TAOSTRANSLATOR) REQUEST_ANIM_DICT("misschinese2_crystalmaze") IF iNavBlock = -1 OR (iNavBlock != -1 AND NOT DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock)) iNavBlock = ADD_NAVMESH_BLOCKING_OBJECT(<<1991.081299,3054.516602,46.714745>>,<<4,4,4>>,0,false,BLOCKING_OBJECT_WANDERPATH + BLOCKING_OBJECT_SHORTESTPATH) ENDIF actions[thisI].flag++ BREAK CASE 1 IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") AND HAS_MODEL_LOADED(IG_TAOCHENG) AND HAS_MODEL_LOADED(IG_TAOSTRANSLATOR) IF NOT DOES_ENTITY_EXIST(zped[ped_tao].id ) zped[ped_tao].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOCHENG,<< 1991.988, 3054.510, 46.215 >>) //these were commented out but don't know why I did that because when player restarts from beginning of mission this would halt progress because these peds never exist. SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE) ELSE IF NOT IS_PED_INJURED(zped[ped_tao].id) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE) ENDIF endif IF NOT DOES_ENTITY_EXIST(zped[ped_taos_translator].id ) zped[ped_taos_translator].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOSTRANSLATOR,<< 1991.988, 3054.510, 46.215 >>) //these were commented out but don't know why I did that because when player restarts from beginning of mission this would halt progress because these peds never exist. SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE) SET_PED_PROP_INDEX(zped[ped_taos_translator].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 1) ELSE IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE) ENDIF endif // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao") IF NOT IS_PED_INJURED(zPED[ped_tao].id) ////cprintln(debug_trevor3,"tao tasked") IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) ENDIF TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) ENDIF // ENDIF // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator") IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id) ////cprintln(debug_trevor3,"tao trans tasked") IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) ENDIF TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) ENDIF actions[thisI].flag++ ENDIF BREAK CASE 2 // ENDIF // IF NOT IS_CUTSCENE_PLAYING() // OR HAS_CUTSCENE_FINISHED() IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id) AND NOT IS_PED_INJURED(zPED[ped_tao].id) // zped[ped_tao].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOCHENG,<< 1991.988, 3054.510, 46.215 >>) // zped[ped_taos_translator].id = CREATE_PED(PEDTYPE_MISSION,IG_TAOSTRANSLATOR,<< 1991.988, 3054.510, 46.215 >>) SET_PED_COMPONENT_VARIATION(zPED[ped_taos_translator].id,ped_comp_head,0,0) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_tao].id,true) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zped[ped_taos_translator].id,true) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) ENDIF SET_PED_CONFIG_FLAG(zped[ped_tao].id,PCF_RunFromFiresAndExplosions,FALSE) SET_PED_CONFIG_FLAG(zped[ped_tao].id,PCF_DisableExplosionReactions,TRUE) SET_PED_CONFIG_FLAG(zped[ped_taos_translator].id,PCF_RunFromFiresAndExplosions,FALSE) SET_PED_CONFIG_FLAG(zped[ped_taos_translator].id,PCF_DisableExplosionReactions,TRUE) actions[thisI].flag=TAO_EVENT_ANIM_PLAYING endif // endif break case TAO_EVENT_ANIM_PLAYING IF NOT IS_PED_INJURED(zped[ped_tao].id) IF NOT IS_PED_RAGDOLL(zped[ped_tao].id) // IF NOT IS_BIT_SET(actions[thisI].intB,0) //this seems wrong. If the translator runs off, Cheng stops his anims IF IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) IF GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intA) = 1.0 actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) IF GET_RANDOM_INT_IN_RANGE(0,3) < 2 TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_Base_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) IF NOT IS_PED_RAGDOLL(zped[ped_taos_translator].id) IF NOT IS_BIT_SET(actions[thisI].intB,0) TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_Base_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) ENDIF ENDIF ENDIF ELSE TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) IF NOT IS_PED_RAGDOLL(zped[ped_taos_translator].id) IF NOT IS_BIT_SET(actions[thisI].intB,0) TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) ENDIF ENDIF ENDIF ENDIF ENDIF ELSE actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, actions[thisI].intA, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_EXPAND_PED_CAPSULE_FROM_SKELETON, RBF_PLAYER_IMPACT ) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(actions[thisI].intA,TRUE) ENDIF ENDIF //ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(zped[ped_taos_translator].id,player_ped_id()) OR IS_PED_RAGDOLL(zped[ped_taos_translator].id) OR IS_PED_INJURED(zped[ped_tao].id) OR ((NOT IS_PED_INJURED(zped[ped_taos_translator].id)) AND GET_SCRIPT_TASK_STATUS(zped[ped_taos_translator].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK) IF NOT IS_BIT_SET(actions[thisI].intB,0) // SET_PED_TO_RAGDOLL(zped[ped_taos_translator].id, 5000, 6000, TASK_RELAX,FALSE,TRUE,TRUE) //a year. Is that long enough for you? // SET_ENTITY_HEALTH(zped[ped_taos_translator].id,0) // SET_PED_AS_NO_LONGER_NEEDED(zped[ped_taos_translator].id) // zped[ped_taos_translator].id = null //so the fail condition for killing him won't be met CLEAR_PED_TASKS(zped[ped_taos_translator].id) startSeq() TASK_SMART_FLEE_PED(null,player_ped_id(),30,20000) TASK_COWER(null) endseq(zped[ped_taos_translator].id) SET_BIT(actions[thisI].intB,0) ENDIF ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ped_tao].id) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(zped[ped_tao].id,player_ped_id()) OR IS_PED_RAGDOLL(zped[ped_tao].id) OR IS_BIT_SET(actions[thisI].intB,1) OR ((NOT IS_PED_INJURED(zped[ped_tao].id)) AND GET_SCRIPT_TASK_STATUS(zped[ped_tao].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK) SET_ENTITY_HEALTH(zped[ped_tao].id,0) IF NOT IS_PED_RAGDOLL(zped[ped_tao].id) // SET_PED_TO_RAGDOLL(zped[ped_tao].id, 50000, 60000, TASK_RELAX,FALSE,TRUE,TRUE) // SET_BIT(actions[thisI].intB,1) ENDIF ENDIF ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 1991.988, 3054.510, 46.215 >>) > 200.0 IF DOES_ENTITY_EXIST(zped[ped_tao].id) AND DOES_ENTITY_EXIST(zped[ped_taos_translator].id) DELETE_PED(zped[ped_tao].id) DELETE_PED(zped[ped_taos_translator].id) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG) SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR) REMOVE_ANIM_DICT("misschinese2_crystalmaze") // DISABLE_NAVMESH_IN_AREA(<<1993.638428,3053.134033,45.214718>>, <<1989.650635,3055.619385,47.840214>>,FALSE) IF iNavBlock != -1 IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock) ENDIF ENDIF //cprintln(debug_trevor3,"REMOVE NAVMESH b") actions[thisI].completed = TRUE ENDIF break ENDSWITCH IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1995.1694, 3062.1624, 46.0490>>) < 7 IF NOT IS_PED_INJURED(zped[ped_tao].id) IF GET_SCRIPT_TASK_STATUS(zped[ped_tao].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK TASK_LOOK_AT_ENTITY(zped[ped_tao].id,player_ped_id(),4000,SLF_WIDEST_PITCH_LIMIT|SLF_WIDEST_YAW_LIMIT|SLF_WHILE_NOT_IN_FOV) ENDIF ENDIF IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) IF GET_SCRIPT_TASK_STATUS(zped[ped_taos_translator].id,SCRIPT_TASK_LOOK_AT_ENTITY) != PERFORMING_TASK TASK_LOOK_AT_ENTITY(zped[ped_taos_translator].id,player_ped_id(),4000,SLF_WIDEST_PITCH_LIMIT|SLF_WIDEST_YAW_LIMIT|SLF_WHILE_NOT_IN_FOV) ENDIF ENDIF ENDIF break case act_stat_double_kill int iu iu=0 thisSnipeCount = 0 repeat count_of(zped) iu IF DOES_ENTITY_EXIST(zped[iu].id) IF IS_PED_INJURED(zped[iu].id) if zPED[iu].sniped = FALSE IF GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_DLC_ASSAULTSNIPER OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_HEAVYSNIPER OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_REMOTESNIPER OR GET_PED_CAUSE_OF_DEATH(zped[iu].id) = WEAPONTYPE_SNIPERRIFLE thisSnipeCount++ ENDIF zPED[iu].sniped = TRUE ENDIF endif endif ENDREPEAT IF thisSnipeCount > 0 cprintln(debug_trevor3,"SNIPED") ENDIF IF thisSnipeCount > 1 cprintln(debug_trevor3,"SNIPED BAM") INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CHI2_ONE_SHOT_TWO_KILLS) actions[thisI].completed = true endif break case act_MUSIC_start_snipe PLAYMUSIC("CHN2_SNIPE_START",false,"CHN2_EXPLODE") REPLAY_RECORD_BACK_FOR_TIME(4.0, 15.0, REPLAY_IMPORTANCE_HIGHEST) actions[thisI].completed = true BREAK CASE act_MUSIC_approach_house_or_alert IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) PLAYMUSIC("CHN2_SPOTTED",false,"CHN2_EXPLODE") ELSE PLAYMUSIC("CHN2_TO_HOUSE",false,"CHN2_EXPLODE") ENDIF actions[thisI].completed = true BREAK case act_create_petrol_can_with_blip IF DOES_PICKUP_EXIST(pickup_gas) REMOVE_PICKUP(pickup_Gas) ENDIF int PlacementFlags PlacementFlags = 0 SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_SNAP_TO_GROUND)) SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_UPRIGHT)) SET_BIT(PlacementFlags, enum_to_int(PLACEMENT_FLAG_FIXED)) IF NOT DOES_PICKUP_EXIST(pickup_gas) pickup_gas = CREATE_PICKUP(PICKUP_WEAPON_PETROLCAN,<< 2436.7747, 4967.4868, 41.4 >>,PlacementFlags) ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(pickup_gas,"V_8_BasementRm") missionBlip = CREATE_BLIP_FOR_PICKUP(pickup_gas) SET_BLIP_NAME_FROM_TEXT_FILE(missionBlip, "FRMBLIP") ENDIF actions[thisI].completed = true break case act_stage_prep IF NOT is_event_active(events_spawn_house) DISABLE_TAXI_HAILING(TRUE) START_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH") SET_INSTANCE_PRIORITY_HINT( INSTANCE_HINT_SHOOTING ) actions[thisI].completed = true ENDIF break case act_remove_initial_assets REMOVE_ANIM_DICT("misschinese2_barrelRoll") REMOVE_ANIM_SET("move_m@gangster@var_e") REMOVE_ANIM_SET("move_m@gangster@var_f") REMOVE_ANIM_SET("move_m@gangster@generic") REMOVE_ANIM_DICT("misschinese2_bank5") actions[thisI].completed = true break case act_outside_peds_flee SWITCH actions[thisI].flag CASE 0 actions[thisI].intA = GET_GAME_TIMER() + 4000 actions[thisI].flag++ BREAK CASE 1 IF GET_GAME_TIMER() > actions[thisI].intA repeat count_of(zped) actions[thisI].intA IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) IF GET_INTERIOR_FROM_ENTITY(zped[actions[thisI].intA].id) = null zped[actions[thisI].intA].role = role_innocent pedReactionState[actions[thisI].intA].state = STATE_FLEE pedReactionState[actions[thisI].intA].actionFlag=0 pedReactionState[actions[thisI].intA].subFlag=0 set_ped_action(actions[thisI].intA,action_flee) SET_PED_RELATIONSHIP_GROUP_HASH(zped[actions[thisI].intA].id,HASH_IGNORE_GROUP) CLEANUP_AI_PED_BLIP(zped[actions[thisI].intA].aiBlip) endif endif endrepeat // actions[thisI].completed = true ENDIF BREAK ENDSWITCH BREAK case act_remove_upstairs_peds repeat count_of(zped) actions[thisI].intA IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) IF IS_ENTITY_IN_ANGLED_AREA(zped[actions[thisI].intA].id, <<2457.884766,4981.169434,50.005180>>, <<2441.579834,4965.088379,56.240055>>, 34.312500) delete_ped(zped[actions[thisI].intA].id) ENDIF ENDIF ENDREPEAT actions[thisI].completed = true break case act_MUSIC_enter_house PLAYMUSIC("CHN2_ENTER_HOUSE",false,"CHN2_EXPLODE") actions[thisI].completed = true break case act_remaining_peds_flee int iS repeat count_of(zped) iS IF NOT IS_PED_INJURED(zped[iS].id) IF GET_ROOM_KEY_FROM_ENTITY(zped[iS].id) != GET_HASH_KEY("V_8_BasementRm") set_ped_action(is,action_flee) zped[is].role = role_innocent pedReactionState[is].state = state_flee zped[is].actionFlag = 0 ENDIF ENDIF endrepeat actions[thisI].completed = true break case act_window_ped_walks_inside SWITCH actions[thisI].flag case 0 actions[thisI].intA = get_ped_with_placement(pos_inside_right_window) IF actions[thisI].intA != -1 actions[thisI].flag++ ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) set_ped_action(actions[thisI].intA,action_move_inside_house) actions[thisI].completed = true ELSE actions[thisI].completed = true ENDIF BREAK ENDSWITCH break case act_put_player_in_action_mode IF IS_PED_SHOOTING(player_ped_id()) OR IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) SET_PED_USING_ACTION_MODE(player_ped_id(),TRUE) actions[thisI].completed = true ENDIF break case act_end_stealth_audio_Scene STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH") actions[thisI].completed = true break case act_enemy_alerted_audio_Scene START_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED") actions[thisI].completed = true break case act_end_enemy_alerted_audio_Scene IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_ENEMIES_ALERTED") STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED") ENDIF actions[thisI].completed = true break case act_audio_scene_in_house IF NOT IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_IN_HOUSE") IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE) START_AUDIO_SCENE("CHI_2_SHOOTOUT_IN_HOUSE") ENDIF ELSE IF IS_CONDITION_FALSE(COND_PLAYER_IN_HOUSE) STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_IN_HOUSE") ENDIF ENDIF break case act_reset_bottle_shooting_ped_accuracy IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) OR (NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id) AND IS_PED_IN_COMBAT(zped[enum_to_int(pos_shooting_bottle_1)].id)) OR (NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_2)].id) AND IS_PED_IN_COMBAT(zped[enum_to_int(pos_shooting_bottle_2)].id)) IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id) SET_PED_ACCURACY(zped[enum_to_int(pos_shooting_bottle_1)].id,45) ENDIF IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_2)].id) SET_PED_ACCURACY(zped[enum_to_int(pos_shooting_bottle_2)].id,45) ENDIF actions[thisI].completed = true ENDIF break case act_modify_ped_seeing_range IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) repeat count_of(zped) actions[thisI].intA IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,60.0) //increased from 19 ENDIF ENDREPEAT actions[thisI].completed = TRUE ELSE switch actions[thisI].flag case 0 IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE) repeat count_of(zped) actions[thisI].intA IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) IF zped[actions[thisI].intA].role = role_guard_outside SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,5.0) ENDIF ENDIF ENDREPEAT actions[thisI].flag++ ENDIF BREAK CASe 1 IF IS_CONDITION_FALSE(COND_PLAYER_IN_HOUSE) repeat count_of(zped) actions[thisI].intA IF NOT IS_PED_INJURED(zped[actions[thisI].intA].id) IF zped[actions[thisI].intA].role = role_guard_outside SET_PED_SEEING_RANGE(zped[actions[thisI].intA].id,30.0) ENDIF ENDIF ENDREPEAT actions[thisI].flag=0 ENDIF BREAK ENDSWITCH ENDIF break case act_basement_ped switch actions[thisI].flag case 0 REQUEST_ANIM_DICT("misschinese2_crystalmaze") actions[thisI].flag++ BREAK CASE 1 IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") IF NOT IS_PED_INJURED(zped[enum_to_int(pos_innocent_drugden)].id) actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) SET_SYNCHRONIZED_SCENE_LOOPED(actions[thisI].intA,TRUE) TASK_SYNCHRONIZED_SCENE (zped[actions[thisI].intA].id, actions[thisI].intB, "misschinese2_crystalmaze", "_stand_to_aim", INSTANT_BLEND_IN, NORMAL_BLEND_OUT ) actions[thisI].flag++ ENDIF ENDIF BREAK CASE 2 BREAK ENDSWITCH break case act_spawn_blazer switch actions[thisI].flag case 0 request_model(blazer) actions[thisI].flag++ break case 1 if has_model_loaded(blazer) vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903) SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer) actions[thisI].completed=true endif break ENDSWITCH break CASE ACT_PREP_PETROL_POUR SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE) RESET_GAS_TRAIL(FALSE) REMOVE_DEAD_PEDS_ON_TRAIL_ROUTE() actions[thisI].completed=true BREAK CASE ACT_CONTROL_PETROL_BLIPS SWITCH actions[thisI].flag CASE 0 IF IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN) if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif HIDE_GAS_TRAIL(FALSE) IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC") CLEAR_PRINTS() ENDIF INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME) REPLAY_RECORD_BACK_FOR_TIME(3.0, 10.0, REPLAY_IMPORTANCE_HIGHEST) IF gasInCan = 0 gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) ENDIF actions[thisI].flag++ ENDIF BREAK CASE 1 IF NOT IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN) INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE) oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE) IF oGasCan != null if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan) HIDE_GAS_TRAIL() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) endif actions[thisI].flag=0 ENDIF BREAK ENDSWITCH IF IS_GAS_TRAIL_COMPLETE() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) actions[thisI].completed = true add_event(events_check_player_out_front) ENDIF /* IF NOT HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) OR NOT DOES_PICKUP_EXIST(pickup_gas) oGasCan = GET_CLOSEST_OBJECT_OF_TYPE(GET_ENTITY_COORDS(player_ped_id()),20.0,GET_WEAPONTYPE_MODEL(WEAPONTYPE_PETROLCAN),FALSE) IF oGasCan != null if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif missionBlip = CREATE_BLIP_FOR_OBJECT(oGasCan) HIDE_GAS_TRAIL() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) endif ELSE HIDE_GAS_TRAIL(FALSE) if does_blip_exist(missionBlip) REMOVE_BLIP(missionBlip) endif IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC") CLEAR_PRINTS() ENDIF INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CHI2_GAS_POUR_TIME) IF gasInCan = 0 gasInCan = GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) ELSE INFORM_MISSION_STATS_OF_INCREMENT(CHI2_GAS_USED,gasInCan - GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN),TRUE) ENDIF ENDIF IF IS_GAS_TRAIL_COMPLETE() INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, CHI2_GAS_POUR_TIME) actions[thisI].completed = true add_event(events_check_player_out_front) ENDIF */ BREAK CASE ACT_PETROL_ASSIST_ROUTE switch actions[thisI].flag case 0 REQUEST_WAYPOINT_RECORDING("arm2_30") actions[thisI].flag++ break case 1 IF GET_IS_WAYPOINT_RECORDING_LOADED("arm2_30") IF IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN) USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("arm2_30",TRUE) ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES("arm2_30", EASSISTED_ROUTE_ACTIVE_WHEN_STRAFING) actions[thisI].flag++ endif endif break case 2 IF NOT IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN) USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("arm2_30",FALSE) actions[thisI].flag=1 ENDIF break ENDSWITCH BREAK CASE ACT_FUDGE_RADAR_ZOOM IF NOT IS_PED_INJURED(player_ped_id()) IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = null //outside IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2451.0801, 4961.4634, 44.4392 >>) < 20.0 SET_RADAR_AS_INTERIOR_THIS_FRAME() ENDIF endif ENDIF BREAK CASE ACT_MUSIC_PICKS_UP_JERRY_CAM PlAYMUSIC("CHN2_JERRY_CAN",false,"CHN2_EXPLODE") actions[thisI].completed = TRUE BREAK CASE ACT_MUSIC_TRAIL_IGNITED playmusic("CHN2_EXIT_HOUSE",false,"CHN2_EXPLODE") //g_eFarmhouseFireState = FARMHOUSE_IGNITE_FIRE ////cprintln(DEBUG_TREVOR3,"PLay trail sound at: ",vIgnitePos) PLAY_SOUND_FROM_COORD(iFireIgniteSound,"FarmhouseFire_Ignite",vIgnitePos,"CHINESE2_SOUNDS") actions[thisI].completed = TRUE BREAK CASE ACT_AUDIO_SCENE_WITH_CAN START_AUDIO_SCENE("CHI_2_POUR_GAS") actions[thisI].completed = TRUE BREAK CASE ACT_PREP_EXPLOSION_AUDIO SWITCH actions[thisI].flag CASE 0 REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE") REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE_BG") BREAK ENDSWITCH BREAK case act_remove_barrel_peds SWITCH actions[thisI].flag CASE 0 actions[thisI].intA = get_ped_with_placement(pos_barrels_1) actions[thisI].flag++ BREAK CASE 1 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[actions[thisI].intA].id,<<2454.8953, 4950.8945, 44.1488>>) > 100 and GET_DISTANCE_BETWEEN_ENTITIES(zped[actions[thisI].intA].id,player_ped_id()) > 100 int iCleanupPEd iCleanupPEd = get_ped_with_placement(pos_barrels_1) CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip) IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id) SET_PED_KEEP_TASK(zPED[iCleanupPEd].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id) ENDIF zPED[iCleanupPEd].id = null iCleanupPEd = get_ped_with_placement(pos_barrels_2) CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip) IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id) SET_PED_KEEP_TASK(zPED[iCleanupPEd].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id) ENDIF zPED[iCleanupPEd].id = null iCleanupPEd = get_ped_with_placement(pos_garden_chat_2) IF NOT IS_PED_INJURED(zPED[iCleanupPEd].id) SET_PED_KEEP_TASK(zped[iCleanupPEd].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zped[iCleanupPEd].id) ENDIF CLEANUP_AI_PED_BLIP(zPED[iCleanupPEd].aiBlip) zPED[iCleanupPEd].id = null IF IS_VEHICLE_DRIVEABLE(BarrelVan) SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan) ENDIF actions[thisI].completed = TRUE ENDIF break ENDSWITCH BREAK case act_player_got_to_basement_sneakily // IF bPlayerSeen IF CREATE_GANG_PED(enum_to_int(pos_emergency_attacker),A_M_M_Hillbilly_01,<<2433.1226, 4960.4702, 45.8218>>,301,WEAPONTYPE_SMG,TRUE,TRUE) SET_PED_ACCURACY(zped[enum_to_int(pos_emergency_attacker)].id,100) IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards1)].id) SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards1)].id,100) ENDIF IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards2)].id) SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards2)].id,100) ENDIF IF NOT IS_PED_INJURED(zped[enum_to_int(pos_inside_cards3)].id) SET_PED_ACCURACY(zped[enum_to_int(pos_inside_cards3)].id,100) ENDIF TASK_COMBAT_PED(zped[enum_to_int(pos_emergency_attacker)].id,player_ped_id()) SET_PED_TARGET_LOSS_RESPONSE(zped[enum_to_int(pos_emergency_attacker)].id,TLR_NEVER_LOSE_TARGET) SET_ENTITY_HEALTH(zped[enum_to_int(pos_emergency_attacker)].id,200) actions[thisI].completed = TRUE ENDIF // endif break ENDSWITCH IF actions[thisI].flag = CLEANUP actions[thisI].completed = TRUE actions[thisI].flag = 0 actions[thisI].active = FALSE //////cprintln(debug_trevor3,"a3") ENDIF ENDIF ENDIF ENDPROC PROC INSTRUCTIONS(int thisI, enumInstructions eInstruction, andorEnum andOr1=cFORCEtrue, enumconditions cond1=COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2=COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3=COND_NULL) //reset if instructino is new IF instr[thisI].ins != eInstruction instr[thisI].bCompleted = FALSE instr[thisI].ins = eInstruction ENDIF #if IS_DEBUG_BUILD instr[thisI].condTrue = FALSE #endif IF NOT instr[thisI].bCompleted IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3) #if IS_DEBUG_BUILD instr[thisI].condTrue = TRUE #endif SWITCH instr[thisI].ins //drive to alley CASE INS_NULL BREAK CASE INS_SPECIAL_ABILITY_BOOST IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() // PRINT_HELP("FRMRGE") SET_SPECIAL_ABILITY_MULTIPLIER(2.0) instr[thisI].bCompleted = TRUE ENDIF BREAK CASE INS_SPECIAL_ABILITY IF IS_SPECIAL_ABILITY_METER_FULL(PLAYER_ID()) IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP("USESPEC_KM") ELSE PRINT_HELP("USESPEC") ENDIF ENDIF instr[thisI].bCompleted = TRUE BREAK CASE ins_enemy_reacting SWITCH instr[thisI].flag CASE 0 PRINT_HELP("FRMFLE") instr[thisI].bCompleted = TRUE BREAK ENDSWITCH BREAK CASE ins_all_enemy_reacting IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND NOT IS_MESSAGE_BEING_DISPLAYED() PRINT("FRMLK",DEFAULT_GOD_TEXT_TIME,1) instr[thisI].bCompleted = TRUE ENDIF BREAK CASE INS_DESTROY_METH_LAB PRINT("FRMSNP",DEFAULT_GOD_TEXT_TIME,1) instr[thisI].bCompleted = TRUE BREAK CASE ins_fast_stealth switch instr[thisI].flag case 0 IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()) instr[thisI].intA = GET_GAME_TIMER() + 1000 instr[thisI].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > instr[thisI].intA IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP("FRMSTLTH_KM") ELSE PRINT_HELP("FRMSTLTH") ENDIF instr[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH BREAK case INS_QUICK_KILL_HELP switch instr[thisI].flag case 0 IF GET_PROFILE_SETTING(PROFILE_CONTROLLER_CINEMATIC_SHOOTING) != 0 instr[thisI].intA = GET_GAME_TIMER() + 4000 instr[thisI].flag++ ENDIF break case 1 IF GET_GAME_TIMER() > instr[thisI].intA weapon_type playerWeapon playerWeapon = WEAPONTYPE_UNARMED GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),playerWeapon) if playerWeapon != WEAPONTYPE_SNIPERRIFLE and playerWeapon != WEAPONTYPE_HEAVYSNIPER and playerWeapon != WEAPONTYPE_UNARMED IF NOT IS_MESSAGE_BEING_DISPLAYED() AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) PRINT_HELP("FRMSHOT") instr[thisI].bCompleted = TRUE ENDIF ENDIF ENDIF ENDIF endif break ENDSWITCH break CASE INS_PICK_UP_GAS_CAN PRINT("FRMFLC",DEFAULT_GOD_TEXT_TIME,1) SET_BLIP_NAME_FROM_TEXT_FILE(missionBlip, "FRMBLIPB") instr[thisI].bCompleted = TRUE BREAK CASE INS_USING_GAS_CAN switch instr[thisI].flag case 0 PRINT_HELP("FRMPET2") instr[thisI].flag++ BREAK CASE 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_NOW("FRMTRL",DEFAULT_GOD_TEXT_TIME,1) instr[thisI].flag++ ENDIF BREAK case 2 WEAPON_TYPE wep wep = WEAPONTYPE_UNARMED IF GET_CURRENT_PED_WEAPON(player_ped_id(),wep) IF wep = WEAPONTYPE_PETROLCAN IF IS_CONTROL_PRESSED(player_control,INPUT_ATTACK) clear_help() ENDIF ENDIF ENDIF IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP("FRMTRL2") instr[thisI].flag++ ENDIF break case 3 IF IS_GAS_TRAIL_COMPLETE() IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null //tell player to exit house IF NOT DOES_BLIP_EXIST(missionBlip) CLEAR_PRINTS() PRINT("FRMSHP",DEFAULT_GOD_TEXT_TIME,1) missionBlip = CREATE_BLIP_FOR_COORD(<<2454.8953, 4950.8945, 44.1488>>) ENDIF ELSE IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2454.8953, 4950.8945, 44.1488>>) < 5 CLEAR_PRINTS() IF DOES_BLIP_EXIST(missionBlip) remove_blip(missionBlip) ENDIF PRINT("FRMIGN",DEFAULT_GOD_TEXT_TIME,1) //shoot the gas trail to ignite it START_AUDIO_SCENE("CHI_2_SHOOT_GAS") instr[thisI].flag++ ENDIF ENDIF ENDIF ENDIF BREAK CASE 4 IF IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) IF IS_THIS_PRINT_BEING_DISPLAYED("FRMIGN") CLEAR_PRINTS() ENDIF ENDIF IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != null instr[thisI].flag = 3 ENDIF BREAK ENDSWITCH BREAK CASE ins_missed_a_bit PRINT_HELP("FRMMISS") instr[thisI].bCompleted = TRUE BREAK case ins_dont_abandon_farm IF IS_CONDITION_TRUE(COND_GAS_TRAIL_COMPLETE) PRINT("FRMFRH",DEFAULT_GOD_TEXT_TIME,1) ELSE PRINT("FRMFRG",DEFAULT_GOD_TEXT_TIME,1) ENDIF instr[thisI].bCompleted = TRUE break case INS_GET_CLEAR_OF_FARM PRINT("FRMLEAVE",1,1) IF IS_CONDITION_TRUE(COND_PLAYER_300_FROM_FARM) CLEAR_PRINTS() instr[thisI].bCompleted = TRUE ENDIF BREAK CASE INS_LOSE_WANTED_LEVEL PRINT("LOSE_WANTED",DEFAULT_GOD_TEXT_TIME,1) BREAK ENDSWITCH ENDIF ENDIF ENDPROC PROC SET_DIALOGUE_INT(int iDia, enumDialogue dialogueToSet, int iNewIntValue) IF dia[iDia].dial = dialogueToSet dia[iDia].intA = iNewIntValue ELSE SCRIPT_ASSERT("Incorrect value passed in to SET_DIALOGUE_INT()") ENDIF endproc PROC SET_DIALOGUE_FLAG(int iDia, enumDialogue dialogueToSet, int iNewIntValue) IF dia[iDia].dial = dialogueToSet dia[iDia].flag = iNewIntValue ELSE SCRIPT_ASSERT("Incorrect value passed in to SET_DIALOGUE_FLAG()") ENDIF ENDPROC PROC FORCE_INSTRUCTION_STATE(int thisI, enumInstructions thisInstruction, bool setCompleted=TRUE) instr[thisI].bCompleted = setCompleted instr[thisI].ins = thisInstruction ENDPROC PROC FORCE_DIALOGUE_STATE(int thisI, enumDialogue thisDialogue, bool setCompleted=TRUE) dia[thisI].bCompleted = setCompleted dia[thisI].dial = thisDialogue ENDPROC PROC DIALOGUE(int thisI, enumDialogue thisDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL) IF dia[thisI].dial != thisDia dia[thisI].bCompleted = FALSE dia[thisI].dial = thisDia ENDIF #if IS_DEBUG_BUILD dia[thisI].condTrue = FALSE #endif IF NOT dia[thisI].bCompleted IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4) #if IS_DEBUG_BUILD dia[thisI].condTrue = TRUE #endif IF NOT dia[thisI].bStarted dia[thisI].bStarted=TRUE ENDIF SWITCH dia[thisI].dial CASE DIA_NULL BREAK CASE dia_whatnow IF CREATE_CONVERSATION_EXTRA("TRV_WTF",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF break case dia_trevor_rage_comments SWITCH dia[thisI].flag CASE 0 //leave a puse so spotted dialogue from AI can play out dia[thisI].intA = GET_GAME_TIMER() + 2000 dia[thisI].flag++ BREAK CASE 1 IF get_Game_timer() > dia[thisI].intA IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() dia[thisI].intA = get_Game_timer() + 2000 ELSE int iSpeaker iSpeaker = 0 IF FIND_CLOSEST_PED_OF_ROLE(iSpeaker,role_guard_house,true) IF CREATE_CONVERSATION_EXTRA("RAGE",1,player_ped_id(),"Trevor") dia[thisI].intA = get_Game_timer() + GET_RANDOM_INT_IN_RANGE(8000,14000) ENDIF ELSE dia[thisI].bCompleted=true ENDIF ENDIf ENDIF BREAK ENDSWITCH break case dia_cook_sees_ped_die dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden) IF dia[thisI].intA != -1 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("COOKSEE",3,zped[dia[thisI].intA].id,"ONEILCOOK") dia[thisI].bCompleted=true ENDIF ELSE dia[thisI].bCompleted=true ENDIF endif break case dia_stop_trevor_getting_to_basement SWITCH dia[thisI].flag CASE 0 dia[thisI].intA = get_ped_with_placement(pos_inside_cards1) dia[thisI].intB = get_ped_with_placement(pos_inside_cards2) IF dia[thisI].intA != -1 and dia[thisI].intB != -1 dia[thisI].flag++ endif BREAK CASE 1 IF IS_PED_INJURED(zped[dia[thisI].intA].id) dia[thisI].intA = dia[thisI].intB IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) dia[thisI].flag++ ELSE dia[thisI].bCompleted = TRUe ENDIF ELSE dia[thisI].flag++ ENDIF BREAK CASE 2 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("ONEILGUARD8",5,zped[dia[thisI].intA].id,"ONEILGUARD1") dia[thisI].flag++ ENDIF ELSE dia[thisI].bCompleted = TRUe ENDIF BREAK CASE 3 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("ONEILGUARD9",5,zped[dia[thisI].intA].id,"ONEILGUARD1") dia[thisI].flag++ ENDIF ELSE dia[thisI].bCompleted = TRUe ENDIF BREAK case 4 int ispeaker IF FIND_CLOSEST_PED_OF_ROLE(iSpeaker,role_guard_house,true) IF iSpeaker != dia[thisI].intA dia[thisI].intA = iSpeaker dia[thisI].flag++ ELSE dia[thisI].bCompleted = TRUe ENDIF ELSe dia[thisI].bCompleted = TRUe ENDIF break case 5 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("ONEILGUARD10",5,zped[dia[thisI].intA].id,"ONEILGUARD2") dia[thisI].bCompleted = TRUe ENDIF ELSE dia[thisI].bCompleted = TRUe ENDIf break ENDSWITCH break case dia_dont_let_him_down dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden) IF dia[thisI].intA != -1 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("ONEILGUARD11",6,zped[dia[thisI].intA].id,"ONEILGUARD2") dia[thisI].bCompleted = TRUe ENDIF ELSE dia[thisI].bCompleted = TRUe ENDIF ENDIf break case dia_hes_in_meth_lab dia[thisI].intA = get_ped_with_placement(pos_innocent_drugden) IF dia[thisI].intA != -1 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("ONEILGUARD12",6,zped[dia[thisI].intA].id,"ONEILGUARD2") dia[thisI].bCompleted = TRUe ENDIF ELSE dia[thisI].bCompleted = TRUe ENDIF ENDIF break case dia_trevor_see_basement_peds_leave IF CREATE_CONVERSATION_EXTRA("CHI2_drive",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUe ENDIF break case dia_trevor_spotted_outside //dia[thisI].intA is set elsewhere in script SWITCH dia[thisI].flag CASE 0 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) dia[thisI].flag = GET_RANDOM_INT_IN_RANGE(1,3) ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("SEETREVOR",3,zped[dia[thisI].intA].id,"CHIN2goon1") dia[thisI].bCompleted = TRUe ENDIF BREAK CASE 2 IF CREATE_CONVERSATION_EXTRA("GOON2TREV",4,zped[dia[thisI].intA].id,"CHIN2goon2") dia[thisI].bCompleted = TRUe ENDIF BREAK ENDSWITCH break CASE dia_find_trevor SWITCH dia[thisI].flag CASE 0 IF GET_GAME_TIMER() > dia[thisI].intA IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_outside,true) dia[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id) IF dia[thisI].intC < 3 IF CREATE_CONVERSATION_EXTRA("ONEILGUARD5",5,zped[dia[thisI].intB].id,"ONEILGUARD1") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF ELIF dia[thisI].intC < 6 IF CREATE_CONVERSATION_EXTRA("ONEILGUARD6",6,zped[dia[thisI].intB].id,"ONEILGUARD2") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF ELSE dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].flag=0 ENDIF BREAK ENDSWITCH BREAK case dia_attacking_trevor_outside //COOKATT oneilcook 3 (4) //GOONIN chin2goon1 3 (4) //GOON2ATTO chin2goon2 4 (4) SWITCH dia[thisI].flag CASE 0 IF GET_GAME_TIMER() > dia[thisI].intA IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_outside,true) dia[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id) SWITCH dia[thisI].intC CASE 0 FALLTHRU CASE 2 FALLTHRU CASE 5 FALLTHRU CASE 9 IF CREATE_CONVERSATION_EXTRA("COOKATT",3,zped[dia[thisI].intB].id,"oneilcook") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 1 FALLTHRU CASE 6 FALLTHRU CASE 8 FALLTHRU CASE 11 IF CREATE_CONVERSATION_EXTRA("GOONATT",3,zped[dia[thisI].intB].id,"chin2goon1") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 3 FALLTHRU CASE 4 FALLTHRU CASE 7 FALLTHRU CASE 10 IF CREATE_CONVERSATION_EXTRA("GOON2ATTO",4,zped[dia[thisI].intB].id,"chin2goon2") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7000,12000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 12 dia[thisI].bCompleted = TRUE BREAK ENDSWITCH ELSE dia[thisI].flag=0 ENDIF BREAK ENDSWITCH break case dia_attacking_trevor_inside SWITCH dia[thisI].flag CASE 0 IF GET_GAME_TIMER() > dia[thisI].intA IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intB,role_guard_house,true) dia[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(zped[dia[thisI].intB].id) SWITCH dia[thisI].intC CASE 0 FALLTHRU CASE 2 FALLTHRU CASE 5 FALLTHRU CASE 9 IF CREATE_CONVERSATION_EXTRA("GOONIN",3,zped[dia[thisI].intB].id,"chin2goon1") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 1 FALLTHRU CASE 6 FALLTHRU CASE 8 FALLTHRU CASE 11 IF CREATE_CONVERSATION_EXTRA("GOON2ATTI",4,zped[dia[thisI].intB].id,"chin2goon2") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 3 FALLTHRU CASE 4 FALLTHRU CASE 7 FALLTHRU CASE 10 IF CREATE_CONVERSATION_EXTRA("ATTACKIN",3,zped[dia[thisI].intB].id,"ONEILCOOK") dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000,10000) dia[thisI].intC++ dia[thisI].flag=0 ENDIF BREAK CASE 12 dia[thisI].bCompleted = TRUE BREAK ENDSWITCH ELSE dia[thisI].flag=0 ENDIF BREAK ENDSWITCH break case dia_trevor_seen_inside_house SWITCH dia[thisI].flag CASE 0 int ij repeat count_of(zped) ij IF zped[ij].role = role_guard_house IF NOT IS_PED_INJURED(zped[ij].id) IF IS_PED_IN_COMBAT(zped[ij].id) IF CAN_PED_IN_COMBAT_SEE_TARGET(zped[ij].id,player_ped_id()) dia[thisI].intA = ij // IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intA,role_guard_house,true) // dia[thisI].flag++ ENDIF ENDIF ENDIF ENDIF ENDREPEAT BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("G2TREVIN",4,zped[dia[thisI].intA].id,"chin2goon2") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH break case DIA_RESPOND_TO_BULLET SWITCH dia[thisI].flag CASE 0 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) //intA set elsewhere in script using SET_DIA_INT() if CREATE_CONVERSATION_EXTRA("ONEILGUARD3",5,zped[dia[thisI].intA].id,"ONEILGUARD1") dia[thisI].flag++ ENDIF ENDIF BREAK CASE 1 IF NOT IS_PED_INJURED(zped[dia[thisI].intA].id) //intA set elsewhere in script using SET_DIA_INT() if CREATE_CONVERSATION_EXTRA("ONEILGUARD1",5,zped[dia[thisI].intA].id,"ONEILGUARD1") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK ENDSWITCH break case dia_last_man_standing SWITCH dia[thisI].flag CASE 0 IF FIND_CLOSEST_PED_OF_ROLE(dia[thisI].intA,role_guard_outside,true) dia[thisI].flag++ ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("ONEILGUARD7",5,zped[dia[thisI].intA].id,"oneilguard2") dia[thisI].flag++ ENDIF BREAK case 2 IF CREATE_CONVERSATION_EXTRA("CHI2_app",1,PLAYER_PED_ID(),"Trevor") dia[thisI].bCompleted = TRUE ENDIF break ENDSWITCH break case dia_trevor_approaches_house IF CREATE_CONVERSATION_EXTRA("CHI2_app",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF break case Dia_TREVOR_SAYS_HARD_WAY SWITCH dia[thisI].flag CASE 0 IF IS_CONV_ROOT_PLAYING("ONEILGUARD4") OR IS_CONV_ROOT_PLAYING("SEETREVOR") dia[thisI].flag++ ENDIF BREAK CASE 1 IF CREATE_CONVERSATION_EXTRA("CHI2_HARD",1,player_ped_id(),"Trevor") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH break case Dia_stay_in_house SWITCH dia[thisI].flag CASE 0 IF GET_GAME_TIMER() > dia[thisI].intB int iR float fClose fclose = 999 float fRange dia[thisI].intA = -1 REPEAT COUNT_OF(zPed) iR IF zPed[iR].role = role_guard_house IF NOT IS_PED_INJURED(zPed[iR].id) fRange = GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPed[iR].id) If fRange < fClose fClose = fRange dia[thisI].intA = iR endif endif endif ENDREPEAT IF dia[thisI].intA = -1 dia[thisI].bCompleted = TRUE ELSE dia[thisI].flag++ endif endif BREAK CASE 1 IF NOT IS_PED_INJURED(zPed[dia[thisI].intA].id) IF CREATE_CONVERSATION_EXTRA("CHI2_outs",5,zPed[dia[thisI].intA].id,"Oneilguard1") dia[thisI].bCompleted = TRUE ENDIF ELSE dia[thisI].intB = GET_GAME_TIMER() + 6000 dia[thisI].flag=0 ENDIF BREAK ENDSWITCH break CASE dia_shooting_Barrels SWITCH dia[thisI].flag CASE 0 int iR REPEAT COUNT_OF(zPed) iR IF zPed[iR].placement = pos_shooting_bottle_1 dia[thisI].intA = iR ENDIF IF zPed[iR].placement = pos_shooting_bottle_2 dia[thisI].intB = iR ENDIF ENDREPEAT dia[thisI].flag++ BREAK CASE 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[dia[thisI].intA].intA) IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) > 0.15 IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) < 0.65 IF GET_DISTANCE_BETWEEN_ENTITIES(zPED[dia[thisI].intA].id,player_ped_id()) < 30 dia[thisI].flag=3 ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_PED_INJURED(zPED[dia[thisI].intA].id) // IF CREATE_CONVERSATION_EXTRA("CHI2_gncht",6,zPED[dia[thisI].intA].id,"ONEILGUARD1") // dia[thisI].flag++ // ENDIF dia[thisI].flag++ ELSE dia[thisI].flag = 1 ENDIF BREAK CASE 3 IF NOT IS_PED_INJURED(zPED[dia[thisI].intB].id) PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[dia[thisI].intB].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED") //IF CREATE_CONVERSATION_EXTRA("CHI2_gnchtb",7,zPED[dia[thisI].intB].id,"ONEILGUARD2") dia[thisI].flag++ //ENDIF ELSE dia[thisI].flag = 1 ENDIF BREAK CASE 4 IF NOT IS_PED_INJURED(zPED[dia[thisI].intA].id) If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[dia[thisI].intA].intA) IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[dia[thisI].intA].intA) > 0.75 dia[thisI].flag=1 ENDIF ENDIF ENDIF BREAK ENDSWITCH BREAK case DIA_PICKED_UP_JERRY_CAN IF CREATE_CONVERSATION_EXTRA("CHI2_find",1,player_ped_id(),"TREVOR") REPLAY_RECORD_BACK_FOR_TIME(5.0, 8.0, REPLAY_IMPORTANCE_HIGHEST) dia[thisI].bCompleted = TRUE ENDIF break CASE DIA_MISSED_A_BIT IF HAVE_TRAIL_BLIPS_BEEN_MISSED() IF CREATE_CONVERSATION_EXTRA("CHI2_pourmis",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF ENDIF BREAK CASE DIA_BOOM IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF BREAK case DIA_POURING_PETROL switch dia[thisI].flag case 0 dia[thisI].intA = 2500 dia[thisI].intB = 0 dia[thisI].flag = 1 break case 1 dia[thisI].intA -= floor(TIMESTEP()*1000) IF dia[thisI].intA <= 0 dia[thisI].flag = 2 ENDIF break case 2 If dia[thisI].intB < 14 IF CREATE_CONVERSATION_EXTRA("CHI2_pour",1,player_ped_id(),"TREVOR") dia[thisI].flag=1 dia[thisI].intA = 12000 + GET_RANDOM_INT_IN_RANGE(3000,5000) dia[thisI].intB++ ENDIF ENDIF break endswitch break case DIA_LIGHT_FUEL IF CREATE_CONVERSATION_EXTRA("CHI2_light",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_EXPLODE_HOUSE IF CREATE_CONVERSATION_EXTRA("CHI2_boom",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF BREAK CASE DIA_FUEL_BURN IF CREATE_CONVERSATION_EXTRA("CHI2_burn",1,player_ped_id(),"TREVOR") dia[thisI].bCompleted = TRUE ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDPROC PROC DIALOGUE_ON_DIALOGUE(int thisI, enumDialogue thisDia, int diaEntry, enumDialogue checkDia, andorEnum andOr1=cIGNORE, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL) IF NOT dia[thisI].bCompleted IF HAS_DIALOGUE_FINISHED(diaEntry,checkDia) DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3) ENDIF ENDIF ENDPROC // ==================================================== MISSION END ============================================== PROC RESET_CONDITIONS() int i REPEAT COUNT_OF(conditions) i conditions[i].condition = COND_NULL conditions[i].active = FALSE conditions[i].returns = FALSE conditions[i].wasTrue = FALSE conditions[i].flag = 0 conditions[i].intA = 0 ENDREPEAT ENDPROC PROC RESET_ACTIONS() int i REPEAT COUNT_OF(actions) i //tell action to play its cleanup flag IF actions[i].needsCleanup actions[i].active = TRUE actions[i].flag = CLEANUP ACTION(i,actions[i].action,PLAYOUT_ON_TRIGGER) ENDIF //reset action actions[i].action = ACT_NULL actions[i].active = FALSE actions[i].ongoing = FALSE actions[i].completed = FALSE actions[i].flag = 0 actions[i].needsCleanup = FALSE actions[i].trackCondition = FALSE actions[i].intA = 0 actions[i].intB = 0 actions[i].floatA = 0 ENDREPEAT ENDPROC PROC RESET_DIALOGUE() int i REPEAT COUNT_OF(dia) i dia[i].dial = DIA_NULL dia[i].bCompleted = FALSE dia[i].flag = 0 dia[i].bStarted = FALSE dia[i].intA = 0 dia[i].intB = 0 dia[i].intC = 0 #if IS_DEBUG_BUILD dia[i].condTrue = FALSE #endif ENDREPEAT ENDPROC PROC RESET_INSTRUCTIONS() int i REPEAT COUNT_OF(instr) i instr[i].ins = INS_NULL instr[i].bCompleted = FALSE instr[i].flag = 0 instr[i].intA = 0 ENDREPEAT ENDPROC proc delete_everything(enumClenup cleanupState) //cprintln(debug_Trevor3,"Delete everything") RESET_ACTIONS() RESET_CONDITIONS() RESET_INSTRUCTIONS() RESET_DIALOGUE() END_SRL() SET_VEHICLE_POPULATION_BUDGET(3) SET_PED_POPULATION_BUDGET(3) bLastConvoWithoutSubtitles = FALSE gasInCan = 0 iCamFlag=0 stageflag=0 iStagger=0 int i bSneakyPass = FALSE bBlockShooterDialogue = FALSE bcutscenePLaying = FALSE WHILE IS_CUTSCENE_ACTIVE() IF IS_CUTSCENE_PLAYING() STOP_CUTSCENE(TRUE) ELSE REMOVE_CUTSCENE () ENDIF SAFEWAIT(0,FALSE) ENDWHILE IF DOES_PICKUP_EXIST(health_pickup) REMOVE_PICKUP(health_pickup) ENDIF REPEAT COUNT_OF(piPickups) i IF DOES_PICKUP_EXIST(piPickups[i]) REMOVE_PICKUP(piPickups[i]) ENDIF ENDREPEAT bNewMusicRequest=FALSE bRequiresPreload=FALSe bPreloadRequest=FALSe sMusicToPlay="" sPreloadMusic="" CLEANUP_GAS_TRAILS() alertBulletFlag = 0 alertBuddyFlag = 0 alertSeenFlag = 0 SET_SPECIAL_ABILITY_MULTIPLIER(1.0) RESET_MISSION_STATS_ENTITY_WATCH() RENDER_SCRIPT_CAMS(FALSE, FALSE) DESTROY_ALL_CAMS() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) safewait(32,FALSE) ////cprintln(debug_trevor3,"HERE_f") SET_TIME_SCALE(1.0) CLEAR_PRINTS() CLEAR_MISSION_LOCATE_STUFF(locatesData,true) KILL_ANY_CONVERSATION() KILL_PHONE_CONVERSATION() //cprintln(debug_Trevor3,"Delete everything got here") //reset alert messages REMOVE_SCENARIO_BLOCKING_AREAS() SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE) SET_ROADS_BACK_TO_ORIGINAL(<<2469.9854, 4961.0449, 44.8113>>-<<100,100,100>>,<<2469.9854, 4961.0449, 44.8113>>+<<100,100,100>>) IF cleanupState = CLEANUP_PASS CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false) //SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_DESTROYED, FALSE) //removing as this was being set during the mission final stage. // Kenneth R. // Removing these calls as we dont want the player to see it pop /*SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP4, BUILDINGSTATE_DESTROYED)*/ g_bBuildingScenarioBlocksUpdateThisFrame = TRUE ENDIF SET_AMBIENT_ZONE_LIST_STATE("AZL_CHN2_METH_LAB_FARM_FIRE", FALSE, TRUE) IF cleanupState != CLEANUP_SKIP SET_SCENARIO_GROUP_ENABLED("Chinese2_Lunch",TRUE) SET_SCENARIO_GROUP_ENABLED("CHINESE2_HILLBILLIES",false) ENDIF SET_PLAYER_CONTROL(PLAYER_ID(),TRUE) IF iNavBlock != -1 IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavBlock) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock) ENDIF ENDIF IF cleanupState = CLEANUP_FAIL OR cleanupState = CLEANUP_FAIL_DEATH STORE_FAIL_WEAPON(player_ped_id(),2) ENDIF /* IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[0]) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.object[0]) // IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.object[0]) //cprintln(debug_Trevor3,"chinese 2: h set stall 0 visible") SET_ENTITY_VISIBLE(g_sTriggerSceneAssets.object[0],TRUE) SET_ENTITY_COLLISION(g_sTriggerSceneAssets.object[0],TRUE) SET_OBJECT_AS_NO_LONGER_NEEDED(g_sTriggerSceneAssets.object[0]) int blah //cprintln(debug_Trevor3,"release stall. Owner = ",GET_ENTITY_SCRIPT(g_sTriggerSceneAssets.object[0],blah)) g_sTriggerSceneAssets.object[0] = null ENDIF ENDIF IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.object[1]) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(g_sTriggerSceneAssets.object[1]) // IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.object[1]) //cprintln(debug_Trevor3,"chinese 2: i set stall 1 visible") SET_ENTITY_VISIBLE(g_sTriggerSceneAssets.object[1],TRUE) SET_ENTITY_COLLISION(g_sTriggerSceneAssets.object[1],TRUE) SET_OBJECT_AS_NO_LONGER_NEEDED(g_sTriggerSceneAssets.object[1]) g_sTriggerSceneAssets.object[1] = null ENDIF ENDIF */ REPEAT COUNT_OF(zPED) i If i = ped_oldMan2 ////cprintln(debug_Trevor3,"cleanup old man 2") endif if DOES_ENTITY_EXIST(zPED[i].id) if not is_ped_injured(zPED[i].id) IF cleanupState = CLEANUP_SKIP CLEAR_PED_TASKS_IMMEDIATELY(zPED[i].id) //to help with cleanup of sync scenes. ENDIF endif IF cleanupState = CLEANUP_PASS OR cleanupState = CLEANUP_FAIL_DEATH If i = ped_oldMan2 ////cprintln(debug_Trevor3,"set old man 2 not needed") endif if not is_ped_injured(zPED[i].id) SET_PED_KEEP_TASK(zPED[i].id,TRUE) SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id) ENDIF ELSE If i = ped_oldMan2 ////cprintln(debug_Trevor3,"set old man 2 not deleted") endif DELETE_PED(zPED[i].id) ENDIf ENDIF zPED[i].action = action_none zPED[i].lastaction = action_none zPED[i].vpos = <<0,0,0>> zPED[i].vPosB = <<0,0,0>> zPED[i].placement = pos_none zPED[i].actionFlag = 0 zPED[i].floatA = 0 zPED[i].floatB = 0 zPED[i].intA = 0 zPED[i].intB = 0 zPED[i].nearbyreactingPed = FALSE zPED[i].pedOfInterest = 0 zPED[i].sniped = FALSE zPED[i].alerted = FALSE pedReactionState[i].State = STATE_SPAWN if does_entity_exist(zPED[i].obj) DELETE_OBJECT(zPED[i].obj) ENDIF REMOVE_RELATIONSHIP_GROUP(zPED[i].rel) ENDREPEAT IF cleanupState != CLEANUP_SKIP TERMINATE_REACTIONS() ELSE RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN) ENDIF IF DOES_ENTITY_EXIST(objShotgun) DELETE_OBJECT(objShotgun) ENDIF IF cleanupState != CLEANUP_PASS AND cleanupState != CLEANUP_FAIL_DEATH CLEAR_AREA(<< 2438.4326, 4970.4155, 53.1778 >>,450.0,TRUE,FALSE) STOP_FIRE_IN_RANGE(<< 2442.6897, 4970.3477, 46.3300 >>,30.0) ENDIF REPEAT COUNT_OF(events) i if (events[i].active = TRUE and events[i].persists = FALSE) // OR cleanupState = CLEANUP_PASS) or events[i].persists = FALSE //NOTE: FIX FOR BUILD THIS VALUE IS NOT USED BY ANYTHING. //string thiosEvent = GET_THIS_EVENT_STRING(i) //active is set to false when cleanup runs events[i].flag = CLEANUP //events[i].active = FALSE events[i].boolA = FALSE events[i].intA = 0 events[i].active = false ENDIF ENDREPEAT ////cprintln(debug_trevor3,"HERE_e") manage_events() ////cprintln(debug_trevor3,"HERE_d") IF DOES_BLIP_EXIST(missionblip) remove_blip(missionblip) endif //remove petrol trail blips // LAST_CONVERSATION = CONV_EMPTY //random_lines_played = 0 int iC REPEAT COUNT_OF(oCans) iC IF DOES_ENTITY_EXIST(oCans[iC]) DELETE_OBJECT(oCans[iC]) ENDIF ENDREPEAT if DOES_ENTITY_EXIST(vehPlayer) IF cleanupState != CLEANUP_PASS AND cleanupState != CLEANUP_FAIL_DEATH IF IS_VEHICLE_DRIVEABLE(vehPlayer) IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehPlayer) IF IS_PED_INJURED(player_ped_id()) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer) ELSe SET_VEHICLE_AS_NO_LONGER_NEEDED(vehPlayer) //should only get removed if the player hasn't passed the mission ENDIF ENDIF ENDIF ENDIF ENDIF if DOES_ENTITY_EXIST(BarrelVan) IF cleanupState != CLEANUP_PASS IF IS_PED_INJURED(player_ped_id()) SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan) ELSe SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan) //should only get removed if the player hasn't passed the mission ENDIF ELSE SET_VEHICLE_AS_NO_LONGER_NEEDED(BarrelVan) ENDIF ENDIF if DOES_ENTITY_EXIST(vehBlazer) IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehBlazer) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehBlazer) ENDIF ENDIF IF DOES_PICKUP_EXIST(pickup_gas) //////cprintln(DEBUG_TREVOR3,"Remove blip for pickup B ",GET_GAME_TIMER()) REMOVE_PICKUP(pickup_gas) ENDIF IF cleanupState = CLEANUP_PASS IF DOES_ENTITY_EXIST(obja) FREEZE_ENTITY_POSITION(objA,FALSE) SET_OBJECT_AS_NO_LONGER_NEEDED(obja) ENDIF IF DOES_ENTITY_EXIST(objb) FREEZE_ENTITY_POSITION(objb,FALSE) SET_OBJECT_AS_NO_LONGER_NEEDED(objb) ENDIF ENDIF if DOES_ENTITY_EXIST(tempPed) delete_ped(tempPed) endif //remove petrol trails and data ////cprintln(debug_trevor3,"HERE_c") REMOVE_DECALS_IN_RANGE(<< 2439.6868, 4971.5405, 45.9442 >>,150.0) IF cleanupState != CLEANUP_FAIL_DEATH IF DOES_ENTITY_EXIST(zped[ped_janet].id) DELETE_PED(zped[ped_janet].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan1].id) DELETE_PED(zped[ped_oldMan1].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_oldMan2].id) DELETE_PED(zped[ped_oldMan2].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_tao].id) DELETE_PED(zped[ped_tao].id) ENDIF IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id) DELETE_PED(zped[ped_taos_translator].id) ENDIF ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_01) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer) SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO) SET_MODEL_AS_NO_LONGER_NEEDED(ig_janet) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN1A) SET_MODEL_AS_NO_LONGER_NEEDED(IG_OLD_MAN2) SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOCHENG) SET_MODEL_AS_NO_LONGER_NEEDED(IG_TAOSTRANSLATOR) SET_MODEL_AS_NO_LONGER_NEEDED(IG_JANET) //REMOVE_ANIM_DICT("gestures@male") REMOVE_ANIM_SET("move_m@gangster@var_e") REMOVE_ANIM_SET("move_m@gangster@var_f") REMOVE_ANIM_SET("move_m@gangster@generic") REMOVE_ANIM_DICT("misschinese2_barrelRoll") REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward") REMOVE_ANIM_DICT("misschinese2_bank1") REMOVE_ANIM_DICT("misschinese2_bank5") REMOVE_ANIM_DICT("misschinese2_crystalmazemcs1_ig") IF cleanupState != CLEANUP_SKIP IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_PETROLCAN) REMOVE_WEAPON_FROM_PED(PLAYER_PED_ID(),WEAPONTYPE_PETROLCAN) ENDIF ENDIF safeSkipTime=0 iNextPedVariation = 0 //clear all audio scenes IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_TO_FARMHOUSE") STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO") STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_FARMHOUSE_OVERVIEW") STOP_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_STEALTH") STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_STEALTH") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOTOUT_ENEMIES_ALERTED") STOP_AUDIO_SCENE("CHI_2_SHOOTOUT_ENEMIES_ALERTED") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_POUR_GAS") STOP_AUDIO_SCENE("CHI_2_POUR_GAS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOT_GAS") STOP_AUDIO_SCENE("CHI_2_SHOOT_GAS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_GAS_TRAIL_FIRE") STOP_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_RAYFIRE") STOP_AUDIO_SCENE("CHI_2_RAYFIRE") ENDIf ////cprintln(debug_trevor3,"HERE_A") STOP_STREAM() IF cleanupState != CLEANUP_PASS //AND cleanupState != CLEANUP_FAIL_DEATH PLAYMUSIC("CHN2_STOP_TRACK",false,NULL_STRING()) WHILE NOT control_music() SAFEWAIT(0,FALSE) endwhile ELSE // PLAYMUSIC("CHN2_MISSION_FAIL",false,NULL_STRING()) // WHILE NOT control_music() // SAFEWAIT(1) // ENDWHILE ENDIF IF cleanupState != CLEANUP_SKIP DISABLE_TAXI_HAILING(FALSE) ENDIF IF cleanupState != CLEANUP_PASS rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") IF bRayfireTriggered IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_STARTING) ENDIF bRayfireTriggered = FALSE ENDIF ENDIF ENDPROC PROC MISSION_CLEANUP(enumClenup cleanupState) delete_everything(cleanupState) CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(TRUE) SET_ALL_VEHICLE_GENERATORS_ACTIVE() SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_MAX_WANTED_LEVEL(5) ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT,true) DISABLE_CELLPHONE(FALSE) KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() CLEAR_PRINTS() //SET_VEHICLE_MODEL_IS_SUPPRESSED(bodhi2,FALSE) IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(navblockA) REMOVE_NAVMESH_BLOCKING_OBJECT(navblockA) ENDIF IF NOT IS_PED_INJURED(player_ped_id()) REMOVE_WEAPON_FROM_PED(player_ped_id(),WEAPONTYPE_PETROLCAN) CLEAR_PED_TASKS(player_ped_id()) endif //Move player outside house IF NOT IS_PED_INJURED(player_ped_id()) IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) != NULL IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2444.0984, 4977.7949, 48.9959>>) < 100 SET_ENTITY_COORDS(player_ped_id(),<<2463.8108, 4961.7471, 44.1760>>) SET_ENTITY_HEADING(player_ped_id(),20) ENDIF ENDIF ENDIF //Reset building IPLs to default IF cleanupState = CLEANUP_FAIL OR cleanupState = CLEANUP_FAIL_DEATH SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_NORMAL) ENDIF TERMINATE_THIS_THREAD() ENDPROC PROC Mission_Failed(string sFail = null) WHILE NOT TRIGGER_MUSIC_EVENT("CHN2_MISSION_FAIL") safewait(21) ENDWHILE IF NOT IS_STRING_NULL_OR_EMPTY(sFail) sFailReason = sFail ENDIF If IS_STRING_NULL(sFailReason) sFailReason = "CHFAIL" endif MISSION_FLOW_MISSION_FAILED_WITH_REASON(sFailReason) WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP() //Maintain anything that could look weird during fade out (e.g. enemies walking off). SAFEWAIT(2,FALSE) ENDWHILE // check if we need to respawn the player in a different position, // if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here Mission_Cleanup(CLEANUP_FAIL) // must only take 1 frame and terminate the thread ENDPROC PROC Mission_Passed() CLEAR_PRINTS() Mission_Flow_Mission_Passed() Mission_Cleanup(CLEANUP_PASS) ENDPROC PROC FAIL(enumFails thisFailToCheck,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL,andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL) IF checkANDOR(andOr1,cond1,andOr2,cond2) SWITCH thisFailToCheck CASE FAIL_OUT_OF_GAS Mission_Failed("CHFAIL1") BREAK CASE FAIL_GAS_TRAIL_IGNITED_EARLY Mission_Failed("FRMSOON") BREAK CASE FAIL_GAS_TRAIL_NOT_COMPLETE Mission_Failed("FRMTRAI") BREAK CASE fail_kill_cheng_or_translator IF DOES_ENTITY_EXIST(zped[ped_tao].id) IF IS_PED_INJURED(zped[ped_tao].id) Mission_Failed("FRMCHI") ENDIF ENDIF IF DOES_ENTITY_EXIST(zped[ped_taos_translator].id) IF IS_PED_INJURED(zped[ped_taos_translator].id) Mission_Failed("FRMCHI2") ENDIF ENDIF BREAK CASE FAIL_ABANDONED_FARM Mission_Failed("CHFAIL2") BREAK CASE FAIL_JERRY_CAN_DESTROYED Mission_Failed("FRMGASF") BREAK ENDSWITCH ENDIF ENDPROC PROC CONTROL_BURN_PLAYER() //front of house vector vPlayer = GET_ENTITY_COORDS(player_ped_id()) IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2432.475586,4953.241699,43.055450>>, <<2466.340088,4986.149902,57.253029>>, 14.437500) IF vPlayer.z < 50 IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2436.761719,4956.010742,44.490093>>, <<2443.379639,4962.624512,48.223301>>, 1.500000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2447.669434,4966.553711,44.951408>>, <<2452.496582,4969.824707,48.890739>>, 2.312500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2454.863037,4968.685547,44.951408>>, <<2460.504883,4974.408691,48.826408>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2459.058350,4977.545898,44.951408>>, <<2460.410645,4979.302246,48.826408>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.602051,4984.746094,44.736694>>, <<2461.976563,4989.490234,48.478436>>, 1.687500) IF NOT IS_ENTITY_ON_FIRE(player_ped_id()) START_ENTITY_FIRE(player_ped_id()) ENDIF ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2454.179199,4995.281250,44.541508>>, <<2453.095947,4993.905273,48.320435>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2449.401123,4990.354004,44.929241>>, <<2447.717041,4988.864746,48.821293>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2443.906250,4990.104004,44.444595>>, <<2439.006592,4985.271484,48.304581>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2439.601563,4982.387207,44.951412>>, <<2440.796875,4981.365234,48.826416>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2440.258789,4980.671387,44.951416>>, <<2434.768799,4975.055176,48.826416>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2432.164551,4972.585938,44.299091>>, <<2430.113770,4970.545410,48.210857>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2428.460205,4968.569336,44.815968>>, <<2426.632324,4966.602539,48.293419>>, 1.687500) IF NOT IS_ENTITY_ON_FIRE(player_ped_id()) START_ENTITY_FIRE(player_ped_id()) ENDIF ENDIF ENDIF ELIF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2455.486816,4997.566406,43.110104>>, <<2423.653320,4962.837402,57.348885>>, 14.437500) //back of house IF vPlayer.z < 50 IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2442.913086,4965.273438,50.156872>>, <<2444.489502,4967.409668,53.817825>>, 1.687500) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2445.238525,4969.070313,49.942844>>, <<2450.365234,4972.188477,54.032505>>, 2.375000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2452.331543,4971.817383,49.942825>>, <<2457.977295,4977.582520,53.880974>>, 2.375000) IF NOT IS_ENTITY_ON_FIRE(player_ped_id()) START_ENTITY_FIRE(player_ped_id()) ENDIF ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2457.620605,4978.462402,49.942825>>, <<2453.931885,4982.161133,53.817825>>, 2.375000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2452.054199,4984.156250,49.942825>>, <<2448.119873,4987.808594,53.813160>>, 2.375000) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2442.013916,4980.538574,49.942825>>, <<2435.795654,4971.944824,53.903877>>, 2.375000) IF NOT IS_ENTITY_ON_FIRE(player_ped_id()) START_ENTITY_FIRE(player_ped_id()) ENDIF ENDIF ENDIF ENDIF ENDPROC int iStoredLastReplay PROC SET_REPLAY_STAGE() switch iStoredLastReplay case 0 IF missionstage >= snipe_from_hill SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Snipe from hill") cprintln(DEBUG_TREVOR3,"Replay stage : ",1) iStoredLastReplay++ ENDIF BREAK case 1 IF missionstage >= snipe_from_hill and missionstage < do_petrol_trail //IF IS_CONDITION_TRUE(COND_ALL_ENEMY_ALERTED) //took this out as the replay setup would mean this is not true IF IS_CONDITION_TRUE(COND_PLAYER_IN_HOUSE) OR missionstage = inside_house SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House") cprintln(DEBUG_TREVOR3,"Replay stagea : ",2) iStoredLastReplay++ ENDIF else IF missionstage = do_petrol_trail IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House") cprintln(DEBUG_TREVOR3,"Replay stageb : ",2) iStoredLastReplay++ //stage must be at petrol trail ENDIF elif missionstage > do_petrol_trail SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Inside House") cprintln(DEBUG_TREVOR3,"Replay stagec : ",2) iStoredLastReplay++ endif endif BREAK CASE 2 IF missionstage >= do_petrol_trail SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Pour petrol trail") cprintln(DEBUG_TREVOR3,"Replay stage : ",3) iStoredLastReplay++ ENDIF BREAK CASE 3 IF missionstage = end_mission SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Leave the farm house",TRUE) cprintln(DEBUG_TREVOR3,"Replay stage : ",4) iStoredLastReplay++ ENDIF BREAK ENDSWITCH ENDPROC // ==================================================== DEBUGGING ============================================= PROC PREP_REPLAY(bool firstStage=false, bool letReplayPutPlayerInVehicle = FALSE, bool isRepeatPlay=FALSE) IF firstStage IF IS_REPLAY_START_VEHICLE_AVAILABLE() IF IS_REPLAY_VEHICLE_MODEL_UNDER_SIZE_LIMIT(GET_REPLAY_START_VEHICLE_MODEL(),<<10,20,9>>) REQUEST_REPLAY_START_VEHICLE_MODEL() WHILE NOT HAS_REPLAY_START_VEHICLE_LOADED() safewait(54455) ENDWHILE IF isRepeatPlay vehPlayer = CREATE_REPLAY_START_VEHICLE(<<1994.3872, 3061.9397, 46.0491>>,50) ELSE vehPlayer = CREATE_REPLAY_START_VEHICLE(<<0,0,0>>,0) ENDIF ENDIF ENDIF ELSE //cprintln(debug_Trevor3,"IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()") IF IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE() //cprintln(debug_Trevor3,"YES") REQUEST_REPLAY_CHECKPOINT_VEHICLE_MODEL() WHILE NOT HAS_REPLAY_CHECKPOINT_VEHICLE_LOADED() safewait(544) ENDWHILE vehPlayer = CREATE_REPLAY_CHECKPOINT_VEHICLE(<<0,0,0>>,0) ENDIF ENDIF IF letReplayPutPlayerInVehicle IF WAS_PLAYER_IN_VEHICLE_AT_CHECKPOINT() IF IS_VEHICLE_DRIVEABLE(vehPlayer) SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer) ENDIF ENDIF ENDIF ENDPROC proc do_skip(mission_stage_flag skipToStage, bool bIsReplay=false, bool bIsRepeatPlay=FALSE) //////cprintln(DEBUG_TREVOR3,"Start cleanup") delete_everything(CLEANUP_SKIP) add_event(events_reset_house_rayfire) #if IS_DEBUG_BUILD GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PUMPSHOTGUN, 50, FALSE,FALSE) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, 30, FALSE,FALSE) GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_SCOPE_MAX) GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_AR_SUPP_02) #endif stageFlag = 0 missionstage = skipToStage //////cprintln(DEBUG_TREVOR3,"Skip to stage : ",missionstage) switch skipToStage case init_mission BREAK case intro_cut request_model(IG_OLD_MAN2) request_model(IG_OLD_MAN1A) request_model(IG_JANET) request_model(IG_TAOCHENG) request_model(IG_TAOSTRANSLATOR) REQUEST_CUTSCENE("chinese_2_int") WHILE NOT HAS_MODEL_LOADED(IG_OLD_MAN2) OR NOT HAS_MODEL_LOADED(IG_OLD_MAN1A) OR NOT HAS_MODEL_LOADED(IG_JANET) OR NOT HAS_MODEL_LOADED(IG_TAOCHENG) OR NOT HAS_MODEL_LOADED(IG_TAOSTRANSLATOR) OR NOT HAS_CUTSCENE_LOADED() safewait(323) endwhile WHILE NOT CREATE_NPC_PED_ON_FOOT(zped[ped_tao].id,CHAR_CHENG,<<1985.6656, 3052.6606, 46.2151>>) wait(0) ENDWHILE SET_ENTITY_COORDS(PLAYER_PED_ID(),<<1992.8784, 3057.8464, 46.0568>>) SET_ENTITY_HEADING(player_ped_id(),311) SET_PED_COMPONENT_VARIATION(zped[ped_tao].id, INT_TO_ENUM(PED_COMPONENT,9), 1, 0, 0) //(task) break case drive_to_farm IF bIsReplay START_REPLAY_SETUP(<<1992.8784, 3057.8464, 46.0568>>,311.0) ELSE IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) SET_ENTITY_COORDS(vehPlayer,<<1994.3872, 3061.9397, 46.0491>>) SET_ENTITY_HEADING(vehPlayer,50.7724) ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) LOAD_SCENE(<<1992.8784, 3057.8464, 46.0568>>) ENDIF //add_event(events_animate_chinese) // set_event_flag(events_animate_chinese,150) // ////cprintln(debug_trevor3,"spawn replay vehicle") //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<< 1997.1208, 3063.6338, 46.0493 >>, 57.9218,TRUE,FALSE,TRUE,TRUE,FALSE) ADD_SCENARIO_BLOCKING_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40.000000>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,40.000000>>) SET_PED_NON_CREATION_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,0.000000>>) CLEAR_ArEA(<<1984.9971, 3052.9048, 46.8556>>,10,TRUE)//to ensure peds at bar in scenario are removed PREP_REPLAY(true,false,bIsRepeatPlay) REQUEST_MODEL(IG_TAOCHENG) REQUEST_MODEL(IG_TAOSTRANSLATOR) REQUEST_MODEL(IG_OLD_MAN1A) REQUEST_MODEL(IG_OLD_MAN2) REQUEST_MODEL(IG_JANET) REQUEST_ANIM_DICT("misschinese2_crystalmaze") WHILE NOT HAS_MODEL_LOADED(IG_TAOCHENG) OR NOT HAS_MODEL_LOADED(IG_TAOSTRANSLATOR) OR NOT HAS_MODEL_LOADED(IG_OLD_MAN1A) OR NOT HAS_MODEL_LOADED(IG_OLD_MAN2) OR NOT HAS_MODEL_LOADED(IG_JANET) OR NOT HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") safewait(3) ENDWHILE IF NOT bIsReplay IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer) SET_ENTITY_COORDS(vehPlayer,<<1994.3872, 3061.9397, 46.0491>>) SET_ENTITY_HEADING(vehPlayer,50.7724) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<<1992.8784, 3057.8464, 46.0568>>) SET_ENTITY_HEADING(player_ped_id(),311) ENDIF ENDIF safewait(85) action(2,ACT_ANIMATE_CHINESE) WHILE GET_ACTION_FLAG(2,ACT_ANIMATE_CHINESE) != TAO_EVENT_ANIM_PLAYING action(2,ACT_ANIMATE_CHINESE) safeWAIT(4) ENDWHILE add_event(events_animate_bar) // while GET_EVENT_FLAG(events_animate_bar) < 4 // manage_events() // safewait(5) // endwhile IF bIsReplay IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) END_REPLAY_SETUP(vehPlayer) ELSE END_REPLAY_SETUP() ENDIF ENDIF break case farm_cutscene IF bIsReplay START_REPLAY_SETUP(<< 2574.0486, 4981.8237, 50.4400 >>,50.0) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>,false,true) //<< 2572.0095, 4981.6782, 50.6698 >> SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) LOAD_SCENE(<< 2458.5076, 4984.5039, 52.3461 >>) safewait(323) ENDIF //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<< 2602.4050, 4950.2280, 39.0651 >>, 274.5783,FALSE,FALSE,TRUE,TRUE,FALSE) SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) // SET_VEHICLE_ON_GROUND_PROPERLY(vehPlayer) SET_WANTED_LEVEL_MULTIPLIER(0.0) PREP_REPLAY() PREFETCH_SRL("chinese2_farmhouse_cutscene") SAFEWAIT(34) add_event(events_spawn_house) while is_event_active(events_spawn_house) manage_events() safewait(5) endwhile WHILE NOT CAN_PLAYER_START_CUTSCENE() safewait(6) endwhile PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE") WHILE NOT control_music() safewait(7) ENDWHILE WHILE NOT IS_SRL_LOADED() safewait(878) endwhile IF bIsReplay END_REPLAY_SETUP() ENDIF ACTION(10,ACT_LOAD_SOUNDSET) WHILE NOT IS_ACTION_COMPLETE(10,ACT_LOAD_SOUNDSET) ACTION(10,ACT_LOAD_SOUNDSET) SAFEWAIT(234) ENDWHILE BREAK case snipe_from_hill IF bIsReplay START_REPLAY_SETUP(GET_REPLAY_CHECKPOINT_PLAYER_POSITION(),GET_REPLAY_CHECKPOINT_PLAYER_HEADING()) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>,false,true) //<< 2572.0095, 4981.6782, 50.6698 >> SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) LOAD_SCENE(<< 2570.5430, 4982.0020, 50.6795 >>) safewait(323) ENDIF //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) //TASK_TOGGLE_DUCK(player_ped_id(),TOGGLE_DUCK_ON) //SET_PED_DUCKING(player_ped_id(),TRUE) SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) PREP_REPLAY(false,true) SET_WANTED_LEVEL_MULTIPLIER(0.0) add_event(events_spawn_house) while is_event_active(events_spawn_house) manage_events() safewait(8) endwhile weapon_type aWep aWep = GET_FAIL_WEAPON(2) IF aWep != WEAPONTYPE_INVALID AND aWep != WEAPONTYPE_UNARMED IF HAS_PED_GOT_WEAPON(player_ped_Id(),aWep) SET_CURRENT_PED_WEAPON(player_ped_id(),aWep,TRUE) ENDIF ENDIF PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE") WHILE NOT control_music() safewait(9) ENDWHILE IF bIsReplay IF DOES_ENTITY_EXIST(vehplayer) AND IS_VEHICLE_DRIVEABLE(vehplayer) AND WAS_PLAYER_IN_VEHICLE_AT_CHECKPOINT() END_REPLAY_SETUP(vehplayer) IF IS_VEHICLE_DRIVEABLE(vehplayer) SET_VEHICLE_ENGINE_ON(vehplayer,true,true) IF IS_THIS_MODEL_A_PLANE(get_entity_model(vehplayer)) SET_VEHICLE_FORWARD_SPEED(vehplayer,15) ENDIF IF IS_THIS_MODEL_A_HELI(get_entity_model(vehplayer)) SET_HELI_BLADES_FULL_SPEED(vehplayer) SET_ENTITY_VELOCITY(vehplayer,<<1,1,1>>) ENDIF ENDIF ELSE END_REPLAY_SETUP() ENDIF ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_REPLAY_CHECKPOINT_PLAYER_POSITION(),<<2570.5376, 4982.0313, 50.6239>>) < 10.0 set_entity_coords(player_ped_id(),<<2570.5376, 4982.0313, 50.6239>>) set_entity_heading(player_ped_id(),98) ENDIF IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) SET_ENTITY_COORDS_GROUNDED(player_ped_id(),GET_ENTITY_COORDS(player_ped_id())) ENDIF BREAK case get_to_house //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2572.0095, 4981.6782, 50.6698 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),90.3911) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH() SET_WANTED_LEVEL_MULTIPLIER(0.0) add_event(events_spawn_house) DISABLE_TAXI_HAILING(TRUE) while is_event_active(events_spawn_house) manage_events() safewait(10) endwhile PREP_REPLAY() PLAYMUSIC("CHN2_TO_HOUSE_RESTART",false,"CHN2_EXPLODE") WHILE NOT control_music() safewait(11) ENDWHILE FORCE_DIALOGUE_STATE(0,dia_whatnow) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) break case inside_house cprintln(debug_Trevor3,"Start replay: ",get_Game_timer()) IF bIsReplay START_REPLAY_SETUP(<< 2450.8713, 4960.9985, 44.3759 >>,351.0) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2450.8713, 4960.9985, 44.3759 >>,false,true) SET_ENTITY_HEADING(PLAYER_PED_ID(),351.3911) load_scene(<< 2432.9817, 4964.8232, 41.3476 >>) safewait(325) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) ENDIF //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) PREP_REPLAY() SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) //SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PUMPSHOTGUN,TRUE) WAIT(1) add_event(events_spawn_house) DISABLE_TAXI_HAILING(TRUE) cprintln(debug_Trevor3,"wait for spawn house event: ",get_Game_timer()) while is_event_Active(events_spawn_house) manage_events() safewait(12) ENDWHILE SET_WANTED_LEVEL_MULTIPLIER(0.0) cprintln(debug_Trevor3,"completed spawn house event: ",get_Game_timer()) cprintln(debug_Trevor3,"Load music : ",get_Game_timer()) PLAYMUSIC("CHN2_ENTER_HOUSE_RESTART",false,"CHN2_EXPLODE") WHILE NOT control_music() safewait(13) ENDWHILE cprintln(debug_Trevor3,"Loaded music : ",get_Game_timer()) FORCE_DIALOGUE_STATE(0,dia_whatnow) IF bIsReplay END_REPLAY_SETUP() ENDIF IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) SET_ENTITY_COORDS_GROUNDED(player_ped_id(),GET_ENTITY_COORDS(player_ped_id())) ENDIF cprintln(debug_Trevor3,"Loaded replay : ",get_Game_timer()) break case do_petrol_trail IF bIsReplay START_REPLAY_SETUP(<<2435.3193, 4966.1528, 41.3476>>, 104.2964) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<<2435.3193, 4966.1528, 41.3476>>) SET_ENTITY_HEADING(PLAYER_PED_ID(), 104.2964) load_scene(<< 2432.9817, 4964.8232, 41.3476 >>) WAIT(1) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) ENDIF SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) DISABLE_TAXI_HAILING(TRUE) PREP_REPLAY() FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),TRUE) int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>) while not IS_VALID_INTERIOR(int_farm) int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>) SAFEWAIT(14) ENDWHILE // PIN_INTERIOR_IN_MEMORY(int_farm) WHILE NOT IS_INTERIOR_READY(int_farm) SAFEWAIT(15) ENDWHILE SET_INTERIOR_ACTIVE(int_farm, TRUE) UNPIN_INTERIOR(int_farm) int_farm = null REQUEST_WEAPON_ASSET(WEAPONTYPE_PETROLCAN) REQUEST_ANIM_DICT("misschinese2_crystalmaze") WHILE NOT HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_PETROLCAN) OR NOT HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") SAFEWAIT(16) ENDWHILE add_event(events_explode_petrol_can) FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE) add_event(events_spawn_house) while is_event_Active(events_spawn_house) manage_events() safewait(17) ENDWHILE SET_WANTED_LEVEL_MULTIPLIER(0.0) request_model(blazer) while NOT HAS_MODEL_LOADED(blazer) safewait(18) ENDWHILE FORCE_INSTRUCTION_STATE(0,INS_PICK_UP_GAS_CAN) // action(0,act_create_petrol_can_with_blip) // reset_actions() // IF NOT bIsReplay // GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_PETROLCAN,4500,true) // ELSE //IF HAS_PED_GOT_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN) //SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_PETROLCAN,TRUE) //ELSE GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_PETROLCAN,4500,true) //ENDIF // ENDIF RESET_GAS_TRAIL(FALSE) PLAYMUSIC("CHN2_PETROL_RESTART",false,"CHN2_EXPLODE") WHILE NOT control_music() safewait(19) ENDWHILE IF bIsReplay END_REPLAY_SETUP() ENDIF break case explosion_cut IF bIsReplay START_REPLAY_SETUP(<< 2453.124, 4952.071, 45.125 >>,285.0) ELSE SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2453.124, 4952.071, 45.125 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),285.8625) load_scene(<< 2453.124, 4952.071, 45.125 >>) WAIT(1) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) ENDIF PREP_REPLAY() IF NOT IS_SRL_LOADED() PREFETCH_SRL("chinese2_explosion_cutscene") ENDIF //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) SET_VEHICLE_POPULATION_BUDGET(1) SET_PED_POPULATION_BUDGET(1) request_model(blazer) while not has_model_loaded(blazer) safewait(20) ENDWHILE vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903) SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer) int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>) while not IS_VALID_INTERIOR(int_farm) int_farm = GET_INTERIOR_AT_COORDS(<< 2432.9817, 4964.8232, 41.3476 >>) safewait(21) ENDWHILE //PIN_INTERIOR_IN_MEMORY(int_farm) WHILE NOT IS_INTERIOR_READY(int_farm) safewait(22) ENDWHILE CUTSCENE_FIRST_SHOT = SHOT_NORMAL SET_INTERIOR_ACTIVE(int_farm, TRUE) UNPIN_INTERIOR(int_farm) int_farm = null while NOT HAS_MODEL_LOADED(blazer) OR NOT IS_SRL_LOADED() safewait(24) ENDWHILE IF bIsReplay END_REPLAY_SETUP() ENDIF WHILE NOT LOAD_STREAM("CHINESE2_FARMHOUSE_EXPLOSION_SHOOT_GASOLINE_MASTER") safewait(23) ENDWHILE break case end_mission IF bIsReplay START_REPLAY_SETUP(<<2472.3, 4948.1807, 44.0937>>,220.0) ELSE SET_ENTITY_COORDS(player_ped_id(), <<2472.3, 4948.1807, 44.0937>>) SET_ENTITY_HEADING(player_ped_id(), 220.8569) load_scene(<< 2453.124, 4952.071, 45.125 >>) WAIT(1) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) ENDIF kill_event(events_reset_house_rayfire,false) //CREATE_VEHICLE_FOR_REPLAY(vehPlayer,<<0,0,0>>, 0,FALSE,FALSE,TRUE,TRUE,FALSE) SET_VEHICLE_POPULATION_BUDGET(3) SET_PED_POPULATION_BUDGET(3) request_model(blazer) while not has_model_loaded(blazer) OR NOT REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE") OR NOT REQUEST_SCRIPT_AUDIO_BANK("FARMHOUSE_FIRE_BG") safewait(25) ENDWHILE vehBlazer = create_vehicle(Blazer,<<2478.5867, 4941.8032, 43.6736>>, 227.2903) SET_VEHICLE_ON_GROUND_PROPERLY(vehBlazer) PREP_REPLAY() load_scene(<< 2453.124, 4952.071, 45.125 >>) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3, BUILDINGSTATE_NORMAL) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED) rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) safewait(161) endwhile SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING) REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,false) REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,false) REMOVE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false) IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK CASE missionPassed kill_event(events_reset_house_rayfire,false) IF bIsReplay START_REPLAY_SETUP(<<2625.7759, 4802.2173, 32.5747>>,206.0) ELSE SET_ENTITY_COORDS(player_ped_id(),<<2625.7759, 4802.2173, 32.5747>>) SET_ENTITY_HEADING(player_ped_id(), 206.4254) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) LOAD_SCENE(<<2625.7759, 4802.2173, 32.5747>>) ENDIF /* this is causing mission to freeze rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) safewait(161) endwhile */ SET_VEHICLE_POPULATION_BUDGET(3) SET_PED_POPULATION_BUDGET(3) SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING) /* WHILE GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) != RFMO_STATE_END safewait(162) ENDWHILE */ SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP1,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP2,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_CLNUP3,BUILDINGSTATE_CLEANUP, FALSE) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_INTERIOR, BUILDINGSTATE_DESTROYED) SET_BUILDING_STATE(BUILDINGNAME_IPL_FARM_HOUSE_OCCLUSION, BUILDINGSTATE_DESTROYED) IF bIsReplay END_REPLAY_SETUP() ENDIF BREAK ENDSWITCH ENDPROC #if IS_DEBUG_BUILD proc debug_check_keyboard() IF IS_KEYBOARD_KEY_PRESSED(KEY_S) MISSION_PASSED() ENDIF IF IS_KEYBOARD_KEY_PRESSED(KEY_f) Mission_Failed() ENDIF IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) missionStage = INT_TO_ENUM(mission_stage_flag,enum_to_int(missionStage)+1) do_skip(missionStage) ENDIF IF NOT IS_KEYBOARD_KEY_PRESSED(KEY_J) INT iCurrentStage = ENUM_TO_INT(missionStage) int iReturnStage IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iReturnStage,iCurrentStage,TRUE) //MenuTitlePassed defaults to “Mission Stages” if NULL is passed. missionStage = INT_TO_ENUM(mission_stage_flag, iReturnStage) do_skip(missionStage) ENDIF ENDIF ENDPROC PROC PRINT_CONDITION_DATA(int iCon) string sCond enumConditions thisCond = conditions[iCon].condition SWITCH thisCond CASE COND_NULL sCond = "COND_NULL" BREAK case cond_GO_TO_FARM_START scond = "cond_GO_TO_FARM_START" BREAK case cond_INITIAL_INSTRUCTIONS_PLAYED scond = "cond_INITIAL_INSTRUCTIONS_PLAYED" BREAK case cond_PLAYER_IN_ANY_CAR scond = "cond_PLAYER_IN_ANY_CAR" BREAK case cond_GO_TO_FARM_END scond = "cond_GO_TO_FARM_END" BREAK case cond_START_FARM_ASSAULT scond = "cond_START_FARM_ASSAULT" BREAK case cond_BULLET_IMPACTED_BY_BARRELS scond = "cond_BULLET_IMPACTED_BY_BARRELS" BREAK case cond_SHOOTING_PED_DEAD scond = "cond_SHOOTING_PED_DEAD" BREAK case cond_ENEMY_PED_REACTING scond = "cond_ENEMY_PED_REACTING" BREAK case cond_ALL_ENEMY_ALERTED scond = "cond_ALL_ENEMY_ALERTED" BREAK case cond_PLAYER_IN_METH_LAB scond = "cond_PLAYER_IN_METH_LAB" BREAK case cond_PLAYER_IN_HOUSE scond = "cond_PLAYER_IN_HOUSE" BREAK case cond_PLAYER_DOWNSTAIRS scond = "cond_PLAYER_DOWNSTAIRS" BREAK case cond_PLAYER_APPROACHING_HOUSE scond = "cond_PLAYER_APPROACHING_HOUSE" BREAK case cond_BASEMENT_PED_DEAD_IN_BASEMENT scond = "cond_BASEMENT_PED_DEAD_IN_BASEMENT" BREAK case cond_ATTACKERS_ALL_DEAD scond = "cond_ATTACKERS_ALL_DEAD" BREAK case cond_TREVOR_NEAR_BASEMENT scond = "cond_TREVOR_NEAR_BASEMENT" BREAK case cond_TREVOR_NEAR_STAIRS scond = "cond_TREVOR_NEAR_STAIRS" BREAK case cond_TREVOR_AT_STAIRS scond = "cond_TREVOR_AT_STAIRS" BREAK case cond_PISSING_DIALOGUE_CAN_PLAY scond = "cond_PISSING_DIALOGUE_CAN_PLAY" BREAK case cond_TREVOR_SEEN scond = "cond_TREVOR_SEEN" BREAK case cond_RESPOND_TO_BULLET scond = "cond_RESPOND_TO_BULLET" BREAK case cond_ONE_ATTACKER_LEFT_OUTSIDE scond = "cond_ONE_ATTACKER_LEFT_OUTSIDE" BREAK case COND_FAIL_FOR_LEAVING_FARM scond = "COND_FAIL_FOR_LEAVING_FARM" BREAK case cond_START_PETROL_TRAIL scond = "cond_START_PETROL_TRAIL" BREAK case cond_JERRY_CAN_DESTROYED scond = "cond_JERRY_CAN_DESTROYED" BREAK //allows this case condition to span across both mission stages case cond_END_FARM_ASSAULT scond = "cond_END_FARM_ASSAULT" BREAK case cond_PLAYER_OUT_FRONT scond = "cond_PLAYER_OUT_FRONT" BREAK case cond_OUT_OF_GAS scond = "cond_OUT_OF_GAS" BREAK case cond_GAS_TRAIL_COMPLETE scond = "cond_GAS_TRAIL_COMPLETE" BREAK case cond_LAST_BLIP_POURED_ON scond = "cond_LAST_BLIP_POURED_ON" BREAK case cond_PLAYER_HAS_PETROL_CAN scond = "cond_PLAYER_HAS_PETROL_CAN" BREAK case cond_PLAYER_POURING_GAS scond = "cond_PLAYER_POURING_GAS" BREAK case COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE scond = "COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE" BREAK case cond_GAS_TRAIL_IGNITED_INCORRECTLY scond = "cond_GAS_TRAIL_IGNITED_INCORRECTLY" BREAK case cond_END_PETROL_TRAIL scond = "cond_END_PETROL_TRAIL" BREAK DEFAULT scond = " -NOT DEFINED-" BREAK ENDSWITCH SET_TEXT_SCALE(0.25,0.25) IF conditions[iCon].returns SET_TEXT_COLOUR(0,0,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","TRUE") ELSE SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond) SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.25,0.25) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","FALSE") ENDIF ENDPROC PROC PRINT_ACTION_DATA(int iData,bool shiftUp=FALSE) string sAct enumActions thisAct = actions[iData].action SWITCH thisAct CASE ACT_NULL sAct = "ACT_NULL" BREAK //snipe from hill CASE act_shooting_peds_witness_impact_at_barrels sAct = "act_shooting_peds_witness_impact_at_barrels" BREAK case act_stat_double_kill sAct = "act_stat_double_kill" BREAK case act_MUSIC_start_snipe sAct = "act_MUSIC_start_snipe" BREAK case act_MUSIC_approach_house_or_alert sAct = "act_MUSIC_approach_house_or_alert" BREAK case act_create_petrol_can_with_blip sAct = "act_create_petrol_can_with_blip" BREAK case act_stage_prep sAct = "act_stage_prep" BREAK case act_snipe_cams sAct = "act_snipe_cams" BREAK case act_remove_initial_assets sAct = "act_remove_initial_assets" BREAK case act_outside_peds_flee sAct = "act_outside_peds_flee" BREAK case act_remove_upstairs_peds sAct = "act_remove_upstairs_peds" BREAK case act_MUSIC_enter_house sAct = "act_MUSIC_enter_house" BREAK case act_remaining_peds_flee sAct = "act_remaining_peds_flee" BREAK case act_window_ped_walks_inside sAct = "act_window_ped_walks_inside" BREAK DEFAULT sAct = " -NOT DEFINED-" BREAK ENDSWITCH float shiftY IF shiftUp shiftY = -0.36 ENDIF IF actions[iData].ongoing SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03)+shiftY,"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03)+shiftY,"STRING","FALSE") ENDIF IF actions[iData].completed SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"STRING","FALSE") ENDIF showIntOnScreen(0.57,0.1+(iData*0.03)+shiftY,actions[iData].flag,"",0.35) showIntOnScreen(0.62,0.1+(iData*0.03)+shiftY,actions[iData].intA,"",0.35) ENDPROc PROC PRINT_INSTRUCTION_DATA(int iData) string sInst enumInstructions thisInst = instr[iData].ins SWITCH thisInst CASE INS_NULL sInst = "INS_NULL" BREAK CASE ins_enemy_reacting sInst = "ins_enemy_reacting" BREAK DEFAULT sInst = " -NOT DEFINED-" BREAK ENDSWITCH IF instr[iData].bCompleted SET_TEXT_COLOUR(255,0,0,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.39,0.1+(iData*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.39,0.1+(iData*0.03),"STRING","FALSE") ENDIF SET_TEXT_SCALE(0.35,0.35) IF instr[iData].condTrue SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iData*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iData*0.03),"STRING","FALSE") ENDIF showIntOnScreen(0.5,0.1+(iData*0.03),instr[iData].flag,"",0.35) showIntOnScreen(0.55,0.1+(iData*0.03),instr[iData].intA,"",0.35) ENDPROC PROC PRINT_DIALOGUE_DATA(int iDia) string sDia enumDialogue thisDia = dia[iDia].dial SWITCH thisDia CASE DIA_NULL sDia = "DIA_NULL" BREAK //drive to alley case dia_whatnow sDia = "dia_whatnow" BREAK case dia_trevor_rage_comments sDia = "dia_trevor_rage_comments" BREAK case dia_stop_trevor_getting_to_basement sDia = "dia_stop_trevor_getting_to_basement" BREAK case dia_cook_sees_ped_die sDia = "dia_cook_sees_ped_die" BREAK case dia_dont_let_him_down sDia = "dia_dont_let_him_down" BREAK case dia_hes_in_meth_lab sDia = "dia_hes_in_meth_lab" BREAK case dia_trevor_spotted_outside sDia = "dia_trevor_spotted_outside" BREAK case dia_find_trevor sDia = "dia_find_trevor" BREAK case dia_attacking_trevor_outside sDia = "dia_attacking_trevor_outside" BREAK case dia_attacking_trevor_inside sDia = "dia_attacking_trevor_inside" BREAK case dia_trevor_seen_inside_house sDia = "dia_trevor_seen_inside_house" BREAK case dia_RESPOND_TO_BULLET sDia = "dia_RESPOND_TO_BULLET" BREAK case dia_last_man_standing sDia = "dia_last_man_standing" BREAK DEFAULT sDia = " -NOT DEFINED-" BREAK ENDSWITCH SET_TEXT_SCALE(0.35,0.35) IF dia[iDia].bCompleted SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia) SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","FALSE") ENDIF SET_TEXT_SCALE(0.35,0.35) IF dia[iDia].bStarted SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,0,255) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iDia*0.03),"STRING","TRUE") ELSE SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_SCALE(0.35,0.35) DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iDia*0.03),"STRING","FALSE") ENDIF SET_TEXT_COLOUR(255,0,0,255) showIntOnScreen(0.5,0.1+(iDia*0.03),dia[iDia].flag,"",0.35) ENDPROC proc SHOW_DEBUG_SCRIPT_DATA() int iR IF bAllowShitskip g_savedGlobals.sFlow.missionSavedData[ENUM_TO_INT(SP_MISSION_CHINESE_2)].missionFailsNoProgress = 3 bAllowShitskip = FALSE FAIL_MISSION("") ENDIF IF bScreenConditions SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Returns") REPEAT COUNT_OF(conditions) iR // IF conditions[iR].active PRINT_CONDITION_DATA(iR) // ENDIF ENDREPEAT ENDIF IF bScreenActionsA SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.05,"STRING","Ongoing") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.05,"STRING","Complete") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.57,0.05,"STRING","Flag") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(0,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA") REPEAT COUNT_OF(actions) iR IF actions[iR].active PRINT_ACTION_DATA(iR) ENDIF ENDREPEAT ENDIF IF bScreenInstructions SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,0.05,"STRING","Complete") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.44,0.05,"STRING","Cond") REPEAT COUNT_OF(instr) iR PRINT_INSTRUCTION_DATA(iR) ENDREPEAT ENDIF IF bSshowDialogue SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.42,0.05,"STRING","Complete") SET_TEXT_SCALE(0.35,0.35) SET_TEXT_COLOUR(255,0,255,255) SET_TEXT_CENTRE(TRUE) DISPLAY_TEXT_WITH_LITERAL_STRING(0.47,0.05,"STRING","started") REPEAT COUNT_OF(dia) iR PRINT_DIALOGUE_DATA(iR) ENDREPEAT endif endproc proc manage_debug() int iR if not DOES_WIDGET_GROUP_EXIST(widget_debug) widget_debug = START_WIDGET_GROUP("Chinese 2 widget") ADD_WIDGET_BOOL("Do Shit skip",bAllowShitskip) ADD_WIDGET_BOOL("Show Conditions",bScreenConditions) ADD_WIDGET_BOOL("Show Actions 0-12",bScreenActionsA) ADD_WIDGET_BOOL("Show Instructions",bScreenInstructions) ADD_WIDGET_BOOL("Show Dialogue",bSshowDialogue) ADD_WIDGET_BOOL("TRIGGER AND LOOP HOUSE EXPLOSION",bExplodeHouseLoop) ADD_WIDGET_BOOL("TRIGGER AND LOOP HOUSE EXPLOSION SHORT",bExplodeHouseLoopShort) ADD_WIDGET_BOOL("Ped Actions 1-15",bShowActionsA) ADD_WIDGET_BOOL("Ped Actions 16-30",bShowActionsB) ADD_WIDGET_BOOL("Show Focus",bShowFocus) ADD_WIDGET_BOOL("bShowAlerts",bShowAlerts) ADD_WIDGET_BOOL("Record ped alerts...",bRecordPedData) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("none") ADD_TO_WIDGET_COMBO("balcony_far_left") ADD_TO_WIDGET_COMBO("balcony_doorway") ADD_TO_WIDGET_COMBO("balcony_veranda_walk") ADD_TO_WIDGET_COMBO("porch") ADD_TO_WIDGET_COMBO("barrels_1") ADD_TO_WIDGET_COMBO("barrels_2") ADD_TO_WIDGET_COMBO("garden_chat_1") ADD_TO_WIDGET_COMBO("garden_chat_2") ADD_TO_WIDGET_COMBO("shooting_bottle_1") ADD_TO_WIDGET_COMBO("shooting_bottle_2") ADD_TO_WIDGET_COMBO("inside_right_window") ADD_TO_WIDGET_COMBO("inside_top_window") ADD_TO_WIDGET_COMBO("inside_utility_room") ADD_TO_WIDGET_COMBO("inside_seated1") ADD_TO_WIDGET_COMBO("inside_seated2") ADD_TO_WIDGET_COMBO("inside_seated3") ADD_TO_WIDGET_COMBO("inside_cards1") ADD_TO_WIDGET_COMBO("inside_cards2") ADD_TO_WIDGET_COMBO("inside_cards3") ADD_TO_WIDGET_COMBO("inside_kitchen1") ADD_TO_WIDGET_COMBO("inside_kitchen2") ADD_TO_WIDGET_COMBO("inside_bystairs1") ADD_TO_WIDGET_COMBO("inside_bystairs2") ADD_TO_WIDGET_COMBO("innocent_chef") ADD_TO_WIDGET_COMBO("innocent_drugden") ADD_TO_WIDGET_COMBO("pissing_ped") STOP_WIDGET_COMBO("Recorded Ped", iRecordedPed) ADD_WIDGET_BOOL("Kill Outside Peds",bKillOutsidePeds) ADD_WIDGET_BOOL("Record Ped",bRecordPed) ADD_WIDGET_INT_SLIDER("Ped to rec",iPedToRecord,0,MAX_PEDS-1,1) ADD_WIDGET_BOOL("Show events",bShowEvents) ADD_WIDGET_INT_READ_ONLY("stageFlag",stageFlag) ADD_WIDGET_BOOL("Skip Drive",bSkipDrive) STOP_WIDGET_GROUP() SET_LOCATES_HEADER_WIDGET_GROUP(widget_debug) ENDIF SHOW_DEBUG_SCRIPT_DATA() if bShowActionsA and bShowActionsB bShowActionsA=false endif float fx,fy,fdist,fclosest int iClosePed IF bShowFocus SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) TEXT_LABEL_31 txtlbl REPEAT COUNT_OF(zPED) iR txtlbl = "" if DOES_ENTITY_EXIST(zPED[iR].id) txtlbl = GET_PLACEMENT_STRING(iR) DRAW_DEBUG_TEXT_ABOVE_ENTITY(zPED[iR].id,txtlbl,1.4) txtlbl = "" txtlbl = GET_ROLE_STRING(iR) DRAW_DEBUG_TEXT_ABOVE_ENTITY(zPED[iR].id,txtlbl,0.4) ENDIF ENDREPEAT ENDIF if bShowActionsA or bShowActionsB int iPedMin,iPedMax IF bShowActionsA iPedMin = 0 iPedMax = 15 else iPedMin = 16 iPedMax = 30 endif //find which ped is closest to middle of screen REPEAT COUNT_OF(zPED) iR if DOES_ENTITY_EXIST(zPED[iR].id) IF GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(zPED[ir].id,FALSE),fx,fy) fx -= 0.5 fy -= 0.5 fDist = SQRT((fx*fx)+(fy*fy)) if fDist < fClosest fClosest = fDist iClosePed = iR ENDIF ENDIF ENDIF ENDREPEAT REPEAT COUNT_OF(zPED) iR IF iR >= iPedMin and iR <= iPedMax SET_TEXT_SCALE(0.4,0.4) IF iClosePed = iR SET_TEXT_COLOUR(0,255,0,255) ELSE IF DOES_ENTITY_EXIST(zPED[iR].id) IF IS_PED_INJURED(zPED[iR].id) SET_TEXT_COLOUR(255,0,0,255) ELSE SET_TEXT_COLOUR(255,255,255,255) ENDIF ENDIF ENDIF DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.1+(iR * 0.025),"STRING",GET_PLACEMENT_STRING(iR)) SET_TEXT_SCALE(0.4,0.4) IF iClosePed = iR SET_TEXT_COLOUR(0,255,0,255) ELSE IF DOES_ENTITY_EXIST(zPED[iR].id) IF IS_PED_INJURED(zPED[iR].id) SET_TEXT_COLOUR(255,0,0,255) ELSE SET_TEXT_COLOUR(255,255,255,255) ENDIF ENDIF ENDIF DISPLAY_TEXT_WITH_LITERAL_STRING(0.24,0.1+(iR * 0.025),"STRING",GET_ACTION_STRING(iR)) IF iClosePed = iR SET_TEXT_COLOUR(0,255,0,255) ELSE IF DOES_ENTITY_EXIST(zPED[iR].id) IF IS_PED_INJURED(zPED[iR].id) SET_TEXT_COLOUR(255,0,0,255) ELSE SET_TEXT_COLOUR(255,255,255,255) ENDIF ENDIF ENDIF showIntOnScreen(0.47,0.1+(iR * 0.025),zPED[iR].actionFlag) showIntOnScreen(0.5,0.1+(iR * 0.025),zPED[iR].intA) showIntOnScreen(0.53,0.1+(iR * 0.025),enum_to_int(zPED[iR].role)) endif ENDREPEAT ENDIF IF bKillOutsidePeds bKillOutsidePeds = FALSE repeat count_of(zped) iR if zped[iR].role = role_guard_outside IF DOES_ENTITY_EXIST(zped[iR].id) IF NOT is_ped_injured(zped[iR].id) SET_ENTITY_HEALTH(zped[iR].id,0) ENDIF endif endif endrepeat ENDIF IF bRecordPed PRINTLN("Role: ",zped[iPedToRecord].role,"Pos: ",GET_PLACEMENT_STRING(iPedToRecord)," action: ",GET_ACTION_STRING(iPedToRecord)," flag: ",zped[iPedToRecord].actionFlag," int: ",zped[iPedToRecord].intA) ENDIF IF bShowEvents REPEAT COUNT_OF(events) iR SET_TEXT_SCALE(0.4,0.4) DISPLAY_TEXT_WITH_LITERAL_STRING(0.05,0.1+(iR * 0.025),"STRING",GET_THIS_EVENT_STRING(iR)) SET_TEXT_SCALE(0.4,0.4) showIntOnScreen(0.26,0.1+(iR * 0.025),events[iR].flag) SET_TEXT_SCALE(0.4,0.4) showIntOnScreen(0.29,0.1+(iR * 0.025),events[iR].intA) SET_TEXT_SCALE(0.4,0.4) IF events[iR].boolA DISPLAY_TEXT_WITH_LITERAL_STRING(0.32,0.1+(iR * 0.025),"STRING","TRUE") ELSE DISPLAY_TEXT_WITH_LITERAL_STRING(0.32,0.1+(iR * 0.025),"STRING","FALSE") ENDIF SET_TEXT_SCALE(0.4,0.4) IF events[iR].active DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,0.1+(iR * 0.025),"STRING","ACTIVE") ELSE DISPLAY_TEXT_WITH_LITERAL_STRING(0.38,0.1+(iR * 0.025),"STRING","INACTIVE") ENDIF ENDREPEAT ENDIF IF bSkipDrive bSkipDrive = FALSE IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) SET_ENTITY_COORDS(vehPlayer,<< 2622.2361, 4804.1313, 32.5715 >>) SET_ENTITY_HEADING(vehPlayer,44) ELSE REQUEST_MODEL(BODHI2) WHILE NOT HAS_MODEL_LOADED(BODHI2) safewait(26) ENDWHILE vehPlayer = CREATE_VEHICLE(BODHI2,<<2623.5288, 4804.7842, 32.6049>>,43) SET_PED_INTO_VEHICLE(player_ped_id(),vehPlayer) ENDIF ENDIF IF bExplodeHouseLoop AND bExplodeHouseLoopShort bExplodeHouseLoop = FALSE ENDIF IF bExplodeHouseLoop OR bExplodeHouseLoopShort IF missionStage != explosion_cut do_skip(explosion_cut) ENDIf ENDIF debug_check_keyboard() ENDPROC proc recordData(string debugText,int iPedCompare=-1) int iPedsDetails IF bRecordPedData iPedsDetails = get_ped_with_placement(int_to_enum(enumPlacement,iRecordedPed)) IF iPedCompare = -1 OR iPedCompare = iPedsDetails IF iRecordedPed > 0 cprintln(DEBUG_TREVOR3,debugText," State: ",GET_THIS_STATE_STRING(iPedsDetails)," Alerted: ",GET_ALERTED_STRING(iPedsDetails)," last Alert: ",GET_ALERTED_STRING(iPedsDetails,TRUE)," action Flag: ",zped[iPedsDetails].actionFlag," intA: ",zped[iPedsDetails].intA," vpos: ",zped[iPedsDetails].vpos) ENDIF ENDIF ENDIF ENDPROC #ENDIF // ================================================== Manage Peds =============================================== FUNC bool checkAllEnemyDead() int i FOR i = 0 to MAX_PEDS-1 IF DOES_BLIP_EXIST(zped[i].blip) OR zped[i].action = action_spawn RETURN FALSE ENDIF ENDFOR RETURN TRUE endfunc FUNC BOOL NAVIGATE_NEAR_TO_THIS_POINT(ped_index pedID, vector vGoto, FLOAT pedmoveSpeed = pedmove_run) IF NOT IS_PED_INJURED(pedID) IF GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != PERFORMING_TASK AND GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != WAITING_TO_START_TASK AND GET_SCRIPT_TASK_STATUS(pedID,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != DORMANT_TASK TASK_FOLLOW_NAV_MESH_TO_COORD(pedID,vGoto,pedmoveSpeed) ENDIF IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(pedID,vGoto) < 2.5 RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC PROC CONTROL_PED_ACTIONS() int i REPEAT COUNT_OF(pedReactionState) i IF (NOT IS_PED_INJURED(zped[i].id) AND NOT IS_PED_DEAD_OR_DYING(zped[i].id)) OR pedReactionState[i].State = STATE_SPAWN SWITCH pedReactionState[i].State CASE STATE_SPAWN SWITCH zPED[i].role CASE role_guard_outside SWITCH zPED[i].placement case pos_balcony_veranda_walk IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2451.8179, 4985.7041, 50.5678 >>,227.8420, WEAPONTYPE_ASSAULTRIFLE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true) set_ped_action(i,action_balcony_guard_patrol) ENDIF BREAK case pos_balcony_doorway IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2455.0850, 4974.4658, 50.5677 >>, 246.0510, WEAPONTYPE_ASSAULTRIFLE, TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true) set_ped_action(i,action_smoke) ENDIF BREAK case pos_garden_chat_1 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2461.6089, 4993.6748, 44.9821 >>, -90.0, WEAPONTYPE_ASSAULTRIFLE,TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) set_ped_action(i,action_chatting) zPED[i].lastAction = action_chatting //when action_chatting ends it reverts to last action ENDIF BREAK case pos_garden_chat_2 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2462.8872, 4993.6138, 44.9474 >>, 89.8899, WEAPONTYPE_ASSAULTRIFLE, TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) set_ped_action(i,action_chatting,1) zPED[i].lastAction = action_chatting //when action_chatting ends it reverts to last action ENDIF BREAK case pos_porch IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, <<2460.6506, 4970.8135, 45.5765>>,240.2054, WEAPONTYPE_ASSAULTRIFLE, FALSE) // 2463.9058, 4973.9673, 45.5764 >>,240.2054, WEAPONTYPE_MICROSMG, FALSE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE) set_ped_action(i,action_drinking) ENDIF BREAK case pos_balcony_far_left IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2443.1384, 4966.7090, 50.5677 >>,246.0510, WEAPONTYPE_ASSAULTRIFLE, TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,true) set_ped_action(i,action_binoculars) ENDIF BREAK case pos_barrels_1 IF missionStage = farm_cutscene IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2457.0979, 4954.2827, 44.1304>>, 316.5498,WEAPONTYPE_PISTOL,FALSE) zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, <<2460.0979, 4957.2827, 44.1304>>) zPED[i].actionFlag = 1 set_ped_action(i,action_roll_barrels_at_front_of_house) ENDIF else IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2478.3201, 4982.3247, 44.8913 >>, 49.5021,WEAPONTYPE_PISTOL,FALSE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, << 2478.4443, 4976.9214, 44.5614 >>) zPED[i].actionFlag = 1 set_ped_action(i,action_roll_barrels) ENDIF ENDIF BREAK case pos_barrels_2 IF missionStage = farm_cutscene IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2454.7527, 4951.7188, 44.1445>>, 316.5541,WEAPONTYPE_PISTOL,FALSE) zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, <<2455.7527, 4952.7188, 44.1445>>) zPED[i].actionFlag = 1 set_ped_action(i,action_roll_barrels_at_front_of_house) ENDIF ELSE IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2475.8733, 4984.4263, 45.0916 >>, 45.8993,WEAPONTYPE_PISTOL,FALSE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) zPED[i].obj = CREATE_OBJECT(Prop_CS_Fertilizer, << 2476.5815, 4978.4917, 44.5734 >>) zPED[i].actionFlag++ set_ped_action(i,action_roll_barrels) ENDIF ENDIF BREAK case pos_shooting_bottle_1 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2505.451, 4970.663, 43.548 >>, 49.5021,WEAPONTYPE_PISTOL,TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) zPED[i].intA = CREATE_SYNCHRONIZED_SCENE(<< 2505.451, 4970.663, 43.548 >>, << -0.000, -0.000, 88.725 >>) SET_PED_VISUAL_FIELD_PROPERTIES(zPED[i].id,20,5,90,-90,60) SET_AMBIENT_VOICE_NAME(zPED[i].id,"A_M_M_HillBilly_02_WHITE_MINI_02") TASK_SYNCHRONIZED_SCENE (zPED[i].id, zPED[i].intA, "misschinese2_bank5", "peds_shootcans_a", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS) SET_SYNCHRONIZED_SCENE_LOOPED(zPED[i].intA,TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) set_ped_action(i,action_shoot_cans,0,zPED[i].intA) add_event(events_release_bottle_shooting_anims) ENDIF BREAK case pos_shooting_bottle_2 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2505.451, 4970.663, 43.548 >>, 49.5021,WEAPONTYPE_PISTOL,TRUE) zPED[i].intA = CREATE_SYNCHRONIZED_SCENE(<< 2507.879, 4970.188, 43.500 >>, << -0.000, -0.000, 93.42 >>) SET_SYNCHRONIZED_SCENE_LOOPED(zPED[i].intA,TRUE) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE) TASK_SYNCHRONIZED_SCENE (zPED[i].id, zPED[i].intA, "misschinese2_bank5", "peds_shootcans_b", INSTANT_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS ) FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) set_ped_action(i,action_shoot_cans,0,zPED[i].intA) ENDIF BREAK ENDSWITCH IF DOES_ENTITY_EXIST(zPED[i].id) SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id, TRUE) SET_PED_TO_LOAD_COVER(zPED[i].id, TRUE) ENDIF BREAK case role_guard_house SWITCH zPED[i].placement case pos_inside_right_window IF missionStage < get_to_house IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2458.5696, 4987.584, 45.8107 >>,233.8420, WEAPONTYPE_PISTOL,false) set_ped_action(i,action_smoke) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE) ENDIF else IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2454.6272, 4995.7261, 45.2011 >>,233.8420, WEAPONTYPE_PISTOL,false) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE) set_ped_action(i,action_advance_on_hill) ENDIF endif BREAK case pos_inside_utility_room if missionStage < get_to_house If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2442.9937, 4985.1636, 45.8103 >>, 303.409, WEAPONTYPE_MICROSMG,false) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,TRUE) set_ped_action(i,action_smoke) ENDIF else IF CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2450.3706, 4995.1030, 44.9282 >>, 303.409, WEAPONTYPE_MICROSMG,false) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,TRUE) set_ped_action(i,action_advance_on_hill) ENDIf endif BREAK case pos_inside_seated1 If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2433.124, 4967.804, 46.293 >>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE) ENDIF break case pos_inside_seated2 If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2432.091, 4968.833, 46.298 >>, 63.7673, WEAPONTYPE_PISTOL,false,TRUE) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE) ENDIF break case pos_inside_seated3 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, <<2431.4849, 4964.7793, 45.8106>>, -137.500, WEAPONTYPE_PISTOL,false,TRUE) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,TRUE) ENDIf break case pos_inside_cards1 // If CREATE_GANG_PED(i,A_M_Y_MethHead_01, << 2439.697, 4960.996, 46.323 >>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE) If CREATE_GANG_PED(i,A_M_Y_MethHead_01, <<2440.3855, 4965.4287, 45.8106>>, 63.7673, WEAPONTYPE_PUMPSHOTGUN,false,TRUE) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true) ENDIF break case pos_inside_cards2 //IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2440.229, 4963.038, 46.323 >>, 63.7673, WEAPONTYPE_MICROSMG,false,TRUE) IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, <<2439.7410, 4964.8896, 45.8106>>, 130.3988, WEAPONTYPE_MICROSMG,false,TRUE) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true) ENDIf break case pos_inside_cards3 //IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2438.9434, 4962.6670, 45.8106 >>, 63.7673, WEAPONTYPE_PISTOL,false,TRUE) IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, <<2438.7068, 4964.0938, 45.8106>>, 127.6523, WEAPONTYPE_PISTOL,false,TRUE) SET_PED_ACCURACY(zped[i].id,5) set_ped_action(i,action_sit) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,true) ENDIf break case pos_inside_kitchen1 if missionStage < get_to_house If CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2440.9287, 4976.9214, 45.8106 >>, -130.0, WEAPONTYPE_PISTOL,false,TRUE) set_ped_action(i,action_chatting) zPED[i].lastAction = action_chatting ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE) ENDIF else If CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2452.0525, 4956.6890, 43.8957 >>, 230.7673, WEAPONTYPE_PISTOL,false,TRUE) //set_ped_action(i,action_wait_on_player_advance_to_house) set_ped_action(i,action_advance_on_hill) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE) ENDIf endif break case pos_inside_kitchen2 if missionStage < get_to_house If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2442.9260, 4975.1484, 45.8106 >>, 46.7673, WEAPONTYPE_PISTOL,false,TRUE) set_ped_action(i,action_chatting) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE) zPED[i].lastAction = action_chatting ENDIF else If CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2449.3384, 4954.1270, 43.9299 >>, 46.7673, WEAPONTYPE_PISTOL,false,TRUE) //set_ped_action(i,action_wait_on_player_advance_to_house) ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,FALSE,FALSE) set_ped_action(i,action_advance_on_hill) ENDIf endif break case pos_inside_bystairs1 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01, << 2449.1138, 4981.9839, 45.8102 >>, 130.7673, WEAPONTYPE_MICROSMG,false,TRUE) set_ped_action(i,action_chatting) zPED[i].lastAction = action_hum ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,FALSE) ENDIf break case pos_inside_bystairs2 IF CREATE_GANG_PED(i,A_M_M_Hillbilly_02, << 2447.5527, 4980.5151, 45.8096 >>, 311.7673, WEAPONTYPE_MICROSMG,false,TRUE) set_ped_action(i,action_chatting) zPED[i].lastAction = action_chatting ADD_PED_TO_REACT_ARRAY_AT_ENTRY(pedReactionState,i,zped[i].id,TRUE,FALSE) ENDIF break //setting up skip to this point BUT now we don't need it. ENDSWITCH IF NOT IS_PED_INJURED(zPED[i].id) //SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_WILL_SCAN_FOR_DEAD_PEDS,FALSE) //commented out because, why not? SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id, TRUE) ENDIF break case role_innocent SWITCH zPED[i].placement case pos_innocent_chef IF CREATE_GANG_PED(i,A_M_M_Hillbilly_01,<< 2439.2576, 4976.2007, 45.8106 >>,116.8150,WEAPONTYPE_UNARMED,false,TRUE) set_ped_action(i,action_cooking) ENDIF break case pos_innocent_drugden IF CREATE_GANG_PED(i,A_M_Y_METHHEAD_01,<< 2433.292, 4968.534, 42.348 >>,105.500,WEAPONTYPE_UNARMED,false,true) set_ped_action(i,action_meth_lab) ENDIF BREAK ENDSWITCH BREAK ENDSWITCH if NOT IS_PED_INJURED(zPED[i].id) //removed check for only entity exists due to bug 1230243 SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(zPED[i].id,TRUE) pedReactionState[i].State = STATE_AMBIENT i -= 1 //force loop to backtrack by one so ped will immediately run the ambient task ENDIF BREAK CASE STATE_AMBIENT IF pedReactionState[i].state <= STATE_AMBIENT SWITCH zPED[i].action case action_roll_barrels_at_front_of_house switch zPED[i].actionFlag case 0 cprintln(debug_trevor3,"RUN A") IF DOES_ENTITY_EXIST(zPED[i].obj) cprintln(debug_trevor3,"RUN B") IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj) AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj) ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, TRUE) zPED[i].actionFlag++ ENDIF IF DOES_ENTITY_EXIST(zPED[i].obj) IF zPED[i].placement = pos_barrels_1 TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", INSTANT_BLEND_IN, -1, -1, AF_LOOPING) ELSE TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", INSTANT_BLEND_IN, -1, -1, AF_LOOPING) ENDIF SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) zPED[i].actionFlag++ ENDIF ENDIF BREAK CASE 1 //start rolling barrels BREAK ENDSWITCH break case action_roll_barrels IF zPED[i].actionFlag < 7 UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true) ENDIF if IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B") SET_ENTITY_ANIM_SPEED(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B",1.4) ENDIF IF IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A") SET_ENTITY_ANIM_SPEED(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A",1.4) ENDIF IF DOES_ENTITY_EXIST(zPED[i].obj) IF zPED[i].actionFlag > 2 AND zPED[i].actionFlag <= 6 IF IS_ENTITY_ATTACHED(zPED[i].obj) // IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj) // AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj) zPED[i].floatA = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(zPED[i].id),zPED[i].vpos,TRUE) - GET_ENTITY_HEADING(zPED[i].id) zPED[i].floatA = CLAMP(zPED[i].floatA/4.0,-15.0,15.0) IF NOT IS_PED_RAGDOLL(zPED[i].id) SET_ENTITY_HEADING(zPED[i].id,GET_ENTITY_HEADING(zPED[i].id)+(TIMESTEP()*zPED[i].floatA)) ENDIF /*IF zPED[i].placement = pos_barrels_1 if not IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B") TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING) else if not IS_ENTITY_ATTACHED_TO_ANY_PED(zPED[i].obj) ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, FALSE) endif ENDIF ELSE if not IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A") TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING) else if not IS_ENTITY_ATTACHED_TO_ANY_PED(zPED[i].obj) ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, FALSE) endif ENDIF ENDIF */ ENDIF ENDIF ENDIF switch zPED[i].actionFlag case 0 IF DOES_ENTITY_EXIST(zPED[i].obj) IF DOES_ENTITY_HAVE_DRAWABLE(zPED[i].obj) AND DOES_ENTITY_HAVE_PHYSICS(zPED[i].obj) ATTACH_ENTITY_TO_ENTITY(zPED[i].obj, zPED[i].id, GET_PED_BONE_INDEX(zPED[i].id, BONETAG_PH_L_HAND), <<0,0,0>>, <<0,0,0>>, TRUE, TRUE) add_event(events_detach_barrels_from_peds) zPED[i].actionFlag++ ENDIF ENDIF FALLTHRU // 1999874 CASE 1 //start rolling barrels IF DOES_ENTITY_EXIST(zPED[i].obj) // if IS_POINT_VISIBLE(<< 2478.3201, 4982.3247, 44.8913 >>,3.0) if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zPED[i].id,<<2495.778564,5004.714844,43.873367>>) < 99.0 // IF zPED[i].placement = pos_barrels_1 // TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", NORMAL_BLEND_IN, -1, -1, AF_LOOPING) // ELSE // TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", NORMAL_BLEND_IN, -1, -1, AF_LOOPING) // ENDIF // 1999874 IF zPED[i].placement = pos_barrels_1 TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B", INSTANT_BLEND_IN, -1, -1, AF_LOOPING) ELSE TASK_PLAY_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A", INSTANT_BLEND_IN, -1, -1, AF_LOOPING) ENDIF FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,TRUE) zPED[i].actionFlag++ ENDIF // ENDIF ENDIF BREAK case 2 if IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_B") OR IS_ENTITY_PLAYING_ANIM(zPED[i].id,"misschinese2_barrelroll", "barrel_roll_loop_A") zPED[i].vpos = << 2466.9026, 4996.2539, 45.5443 >> zPED[i].actionFlag++ ENDIF BREAK case 3 IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>) zPED[i].vpos = << 2461.3323, 4998.9399, 45.3590 >> zPED[i].actionFlag++ ENDIF BREAK case 4 IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>) zPED[i].vpos = << 2455.9841, 4997.4043, 45.2645 >> zPED[i].actionFlag++ ENDIF BREAK case 5 IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>) if zPED[i].placement = pos_barrels_2 zPED[i].vpos = << 2452.0906, 4993.6738, 45.1404 >> zPED[i].actionFlag++ ELSe zPED[i].vpos = << 2454.0906, 4995.6738, 45.1404 >> zPED[i].actionFlag++ endif ENDIF BREAK case 6 IF IS_ENTITY_AT_COORD(zPED[i].id, zPED[i].vpos, <<1.5,1.5,2>>) IF IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B") STOP_ANIM_TASK(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_B",-1.5) ENDIF IF IS_ENTITY_PLAYING_ANIM(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A") STOP_ANIM_TASK(zPED[i].id, "misschinese2_barrelroll", "barrel_roll_loop_A",-1.5) ENDIF zPED[i].vpos = <<0,0,0>> IF DOES_ENTITY_EXIST(zPED[i].obj) DETACH_ENTITY(zPED[i].obj,FALSE,TRUE) // if zPED[i].placement = pos_barrels_1 // SET_ENTITY_COORDS (zPED[i].obj, <<2451.871582,4992.753418,45.442631>>) // ELSE // SET_ENTITY_COORDS (zPED[i].obj,<<2452.400146,4993.188965,45.454922>>) // ENDIF // SET_ENTITY_ROTATION (zPED[i].obj, <<-0.000000,-0.000000,-119.748169>>) // SET_OBJECT_AS_NO_LONGER_NEEDED(zPED[i].obj) ENDIF if IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan) if zPED[i].placement = pos_barrels_1 ////cprintln(DEBUG_TREVOR3,"NEW MOVEMENT") SET_PED_MOVEMENT_CLIPSET(zPED[i].id,"move_m@gangster@var_e") TASK_ENTER_VEHICLE(zPED[i].id, BarrelVan, -1, VS_DRIVER, pedmove_walk) set_ped_Action(get_ped_with_placement(pos_garden_chat_1),action_smoke) set_ped_action(get_ped_with_placement(pos_garden_chat_2),action_get_in_car) ELSE SET_PED_MOVEMENT_CLIPSET(zPED[i].id,"move_m@gangster@var_f") TASK_ENTER_VEHICLE(zPED[i].id, BarrelVan, -1, VS_FRONT_RIGHT, pedmove_walk) ENDIF ENDIF zPED[i].actionFlag++ zPED[i].intA = 0 zPED[i].intB = 0 ENDIF BREAK case 7 LOOK_AT_SOMETHING(i) if IS_PED_IN_ANY_VEHICLE(zPED[i].id) SET_ENTITY_LOAD_COLLISION_FLAG(zPED[i].id,FALSE) zPED[i].actionFlag++ ENDIF BREAK case 8 if IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan) if not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_DRIVER) if zPED[i].placement = pos_barrels_1 IF not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_FRONT_RIGHT) int iSeatPed iSeatPed = get_ped_with_placement(pos_barrels_2) IF iSeatPed >= 0 IF NOT IS_PED_INJURED(zPED[iSeatPed].id) IF IS_PED_SITTING_IN_ANY_VEHICLE(zPED[iSeatPed].id) startSeq() TASK_VEHICLE_DRIVE_TO_COORD(null,BarrelVan,<<2367.6677, 5098.6445, 46.8185>>,12.0,DRIVINGSTYLE_NORMAL,BURRITO,DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS,5.0,5.0) TASK_VEHICLE_DRIVE_WANDER(null,BarrelVan,19,DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) endseq(zPED[i].id) set_condition_state(COND_BARREL_ROLL_PEDS_IN_VAN,TRUE) zPED[i].actionFlag++ ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF not IS_VEHICLE_SEAT_FREE(BarrelVan,VS_FRONT_RIGHT) if zPED[i].placement = pos_barrels_2 zPED[i].actionFlag++ ENDIF ENDIF ENDIF BREAK case 9 BREAK ENDSWITCH break case action_balcony_guard_patrol switch zPED[i].actionFlag case 0 startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2459.6462, 4977.7354, 50.5678 >>,PEDMOVE_WALK) TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2456.2209, 4974.6851, 50.5678 >>,PEDMOVE_WALK) TASK_PED_SLIDE_TO_COORD(null,<< 2456.2209, 4974.6851, 50.5678 >>,92.5678) TASK_ACHIEVE_HEADING(null,92.5678) endSeq(zPED[i].id) zPED[i].actionFlag++ BREAK case 1 if GET_SCRIPT_TASK_STATUS(zPED[i].id,script_task_perform_sequence) = FINISHED_TASK set_ped_action(i,action_chatting,0,9000) int itemp itemp = enum_to_int(pos_balcony_doorway) if itemp != -1 // zPED[i].intA = itemp set_ped_action(itemp,action_chatting,0,9000) // zPED[itemp].intA = i ENDIF ENDIF BREAK case 2 startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2450.4912, 4986.8296, 50.5677 >>,PEDMOVE_WALK) TASK_ACHIEVE_HEADING(null,309.5567) TASK_PAUSE(null,2000) endSeq(zPED[i].id) zPED[i].actionFlag++ BREAK case 3 if GET_SCRIPT_TASK_STATUS(zPED[i].id,script_task_perform_sequence) = FINISHED_TASK zPED[i].actionFlag = 0 ENDIF BREAK ENDSWITCH BREAK case action_balcony_guard_chat IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = FINISHED_TASK AND zPED[i].actionFlag > 1 zPED[i].actionFlag = 0 ENDIF switch zPED[i].actionFlag case 0 SET_CURRENT_PED_WEAPON(zPED[i].id,WEAPONTYPE_UNARMED,TRUE) TASK_ACHIEVE_HEADING(zPED[i].id,219,1500) zPED[i].actionFlag++ BREAK CASE 1 IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_ACHIEVE_HEADING) = FINISHED_TASK TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_GUARD_STAND_ARMY") zPED[i].actionFlag++ ENDIF BREAK ENDSWITCH BREAK case action_hum IF NOT IS_PED_INJURED(zPED[i].id) IF zPED[i].role = role_guard_outside OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 20.0 UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true) ENDIF //make reaction if ped hears player. IF zPED[i].actionFlag < 10 // IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id) // zPED[i].actionFlag = 10 // ENDIF ENDIF switch zPED[i].actionFlag CASE 0 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_AA_SMOKE",zPED[i].intA) zPED[i].actionFlag++ BREAK case 1 IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 10.0 int iRand iRand = GET_RANDOM_INT_IN_RANGE(0,3) IF iRand = 0 PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "GENERIC_CURSE_MED", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED") ELIF iRand = 1 PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "GENERIC_INSULT_MED", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED") ELSE PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "CHAT_STATE", "A_M_M_Hillbilly_01_White_mini_03", "SPEECH_PARAMS_FORCE_SHOUTED") ENDIF zPED[i].actionFlag++ zPED[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000,10000) ENDIF break case 2 IF GET_GAME_TIMER() > zPED[i].intA zPED[i].actionFlag=1 ENDIF break case 10 //reaction for hearing player IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ zPED[i].intA = GET_GAME_TIMER() + 1000 ENDIF BREAK CASE 11 IF GET_GAME_TIMER() > zPED[i].intA TASK_TURN_PED_TO_FACE_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),5000) zPED[i].actionFlag++ zPED[i].intA = GET_GAME_TIMER() + 5000 ENDIF BREAK CASE 12 IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[i].id,<<2448.0027, 4982.3052, 45.8519>>) < 10.0 IF GET_GAME_TIMER() > zPED[i].intA - 3000 TASK_FOLLOW_NAV_MESH_TO_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),pedmove_walk) zPED[i].actionFlag=15 ENDIF ELSE IF GET_GAME_TIMER() > zPED[i].intA IF CREATE_CONVERSATION_EXTRA("CHI2_nope",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ ENDIF ENDIF ENDIF BREAK CASE 13 startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2449.1138, 4981.9839, 45.8102 >>,pedmove_walk) TASK_ACHIEVE_HEADING(null,127.6328,3000) endseq(zped[i].id) zPED[i].intA = GET_GAME_TIMER() + 3000 zPED[i].actionFlag++ BREAK CASE 14 IF GET_GAME_TIMER() > zPED[i].intA OR GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK zPED[i].actionFlag=0 ENDIF BREAK case 15 IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ ENDIF BREAK CASE 16 IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK zPED[i].intA = GET_GAME_TIMER() + 3000 zPED[i].actionFlag=12 ENDIF break ENDSWITCH endif BREAK case action_get_in_car switch zPED[i].actionFlag CASE 0 zPED[i].intA = GET_GAME_TIMER() + 3000 zPED[i].actionFlag++ BREAK CASE 1 IF GET_GAME_TIMER() > zPED[i].intA IF IS_VEHICLE_VALID_AND_DRIVEABLE(BarrelVan) TASK_ENTER_VEHICLE(zped[i].id,BarrelVan,DEFAULT_TIME_BEFORE_WARP,VS_BACK_LEFT,pedmove_walk) zPED[i].actionFlag++ zPED[i].intA = 0 zPED[i].intB = 0 ENDIF ENDIF BREAK CASE 2 LOOK_AT_SOMETHING(i) BREAK ENDSWITCH break case action_chatting //force blips on if peds set to be chatting and out side or within 20m IF zPED[i].role = role_guard_outside OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 20.0 UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true) ENDIF switch zPED[i].actionFlag CASE 0 WEAPON_TYPE wep wep = WEAPONTYPE_UNARMED IF GET_CURRENT_PED_WEAPON(zPED[i].id,wep) TASK_SWAP_WEAPON(zPED[i].id,FALSE) ENDIF zPED[i].actionFlag++ BREAK CASE 1 IF NOT GET_CURRENT_PED_WEAPON(zPED[i].id,wep) startSeq() If i = enum_to_int(pos_balcony_doorway) if not is_ped_injured(zPED[enum_to_int(pos_balcony_veranda_walk)].id) TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_balcony_veranda_walk)].id,2000) endif elif i = enum_to_int(pos_balcony_veranda_walk) if not is_ped_injured(zPED[enum_to_int(pos_balcony_doorway)].id) TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_balcony_doorway)].id,2000) endif elif i = enum_to_int(pos_garden_chat_1) if not is_ped_injured(zPED[enum_to_int(pos_garden_chat_2)].id) TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_garden_chat_2)].id,2000) endif elif i = enum_to_int(pos_garden_chat_2) if not is_ped_injured(zPED[enum_to_int(pos_garden_chat_1)].id) TASK_TURN_PED_TO_FACE_ENTITY(null,zPED[enum_to_int(pos_garden_chat_1)].id,2000) endif endif IF zPED[i].intA != 0 TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET",zPED[i].intA) ELSE TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET") ENDIF endseq(zPED[i].id) zPED[i].actionFlag++ zPED[i].intB = GET_GAME_TIMER() + 15000 ENDIF BREAK case 2 if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK OR GET_GAME_TIMER() > zPED[i].intB CLEAR_PED_TASKS(zPED[i].id) zPED[i].actionFlag++ ENDIF BREAK CASE 3 if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK if zPED[i].lastAction = action_balcony_guard_patrol TASK_SWAP_WEAPON(zPED[i].id,TRUE) zPED[i].actionFlag++ ELSE zPED[i].actionFlag++ ENDIF ENDIf BREAK CASE 4 if GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_SWAP_WEAPON) = FINISHED_TASK if zPED[i].lastAction = action_balcony_guard_patrol set_ped_action(i,zPED[i].lastAction,2) ELSE set_ped_action(i,zPED[i].lastAction) ENDIF ENDIF BREAK ENDSWITCH BREAK case action_looking_about switch zPED[i].actionFlag case 0 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_GUARD_STAND") FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) zPED[i].actionFlag++ break ENDSWITCH BREAK case action_smoke switch zPED[i].actionFlag case 0 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_AA_SMOKE") FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) //startSeq() //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) ///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //endSeq(zPED[i].id,TRUE) zPED[i].actionFlag++ BREAK case 1 IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = FINISHED_TASK zPED[i].actionFlag = 0 ENDIF break ENDSWITCH BREAK case action_binoculars switch zPED[i].actionFlag case 0 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_BINOCULARS") FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) //startSeq() //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) ///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //endSeq(zPED[i].id,TRUE) zPED[i].actionFlag++ BREAK ENDSWITCH break case action_drinking switch zPED[i].actionFlag case 0 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING") FORCE_PED_AI_AND_ANIMATION_UPDATE(zPED[i].id) //startSeq() //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_d",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_e",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) ///TASK_PLAY_ANIM(NULL, "amb@smoking@standing@male@idle_b", "idle_f",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1) //endSeq(zPED[i].id,TRUE) zPED[i].actionFlag++ BREAK ENDSWITCH break case action_pissing //make reaction if ped hears player. IF zPED[i].actionFlag < 10 IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id) zPED[i].actionFlag = 10 ENDIF ENDIF switch zPED[i].actionFlag case 0 REQUEST_ANIM_DICT("misscarsteal2peeing") zPED[i].actionFlag++ zPED[i].intA = 0 //set to -1 later on to indicate than the pissing timer has finished BREAK CASE 1 IF HAS_ANIM_DICT_LOADED("misscarsteal2peeing") TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING",0,TRUE) zPED[i].actionFlag++ ENDIF BREAK CASE 2 IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),zPED[i].id) < 21.6 TASK_PLAY_ANIM(zPED[i].id,"misscarsteal2peeing","peeing_loop",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,25000,AF_LOOPING) zPED[i].actionFlag++ zPED[i].intA = GET_GAME_TIMER() + 23000 ENDIF BREAK CASE 3 IF GET_GAME_TIMER() > zPED[i].intA zPED[i].intA = -1 TASK_START_SCENARIO_IN_PLACE(zPED[i].id,"WORLD_HUMAN_DRINKING",0,TRUE) zPED[i].actionFlag++ ENDIF BREAK /* case 10 //reaction for hearing player IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ zPED[i].intB = GET_GAME_TIMER() + 1500 ENDIF BREAK CASE 11 IF GET_GAME_TIMER() > zPED[i].intB zPED[i].actionFlag++ zPED[i].intB = GET_GAME_TIMER() + 1500 ENDIF BREAK CASE 12 IF GET_GAME_TIMER() < zPED[i].intB //keep guy pissing for 1.5 seconds then turn if he hears any more IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id) TASK_TURN_PED_TO_FACE_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),5000) zPED[i].actionFlag++ zPED[i].intB = GET_GAME_TIMER() + 5000 ENDIF ELSE zPED[i].actionFlag=20 ENDIF BREAK CASE 13 IF CAN_PED_HEAR_PLAYER(player_id(),zPED[i].id) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zped[i].id,<<2528.2170, 4986.8818, 43.8933>>) < 10.0 IF GET_GAME_TIMER() > zPED[i].intB - 3000 TASK_FOLLOW_NAV_MESH_TO_COORD(zped[i].id,GET_ENTITY_COORDS(player_ped_id()),pedmove_walk) zPED[i].actionFlag=15 ENDIF ELSE IF GET_GAME_TIMER() > zPED[i].intB zPED[i].actionFlag=20 ENDIF ENDIF BREAK case 15 IF CREATE_CONVERSATION_EXTRA("CHI2_hear",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ ENDIF BREAK CASE 16 IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK vector v1,v2 v1 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<-5,0.5,0>>) v2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<5,0.5,0>>) ////cprintln(debug_Trevor3,v1," ",v2) startSeq() TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<-5,0.5,0>>),2500) TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(zped[i].id,<<5,0.5,0>>),2500) endseq(zped[i].id) zPED[i].intB = GET_GAME_TIMER() + 5000 zPED[i].actionFlag=13 ENDIF break case 20 //return to task IF CREATE_CONVERSATION_EXTRA("CHI2_nope",8,zPED[i].id,"ONEILGUARD1") zPED[i].actionFlag++ ENDIF break CASE 21 startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<2528.2170, 4986.8818, 43.8933>>,pedmove_walk) TASK_ACHIEVE_HEADING(null,28.6328,3000) endseq(zped[i].id) zPED[i].actionFlag++ BREAK CASE 22 IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK IF zPED[i].intA != -1 zPED[i].actionFlag = 3 ELIF zPED[i].intA = 0 zPED[i].actionFlag = 2 ELSE zPED[i].actionFlag = 4 ENDIF ENDIF BREAK */ ENDSWITCH break CASE action_move_inside_house switch zPED[i].actionFlag case 0 startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<2434.8911, 4973.8638, 50.5679>>,pedmove_walk) TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_BINOCULARS") //TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET") endSeq(zPED[i].id) zPED[i].actionFlag++ BREAK ENDSWITCH BREAK case action_sit switch zPED[i].actionFlag CASE 0 //INT sceneId switch zPED[i].placement case pos_inside_seated1 //sceneId = CREATE_SYNCHRONIZED_SCENE(<< 2433.124, 4967.804, 46.293 >>, 135.043 >>) IF DOES_SCENARIO_EXIST_IN_AREA(<<2433.04, 4967.87, 46.28>>,0.8,FALSE) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2433.04, 4967.87, 46.28>>, 0.8) zPED[i].actionFlag++ ENDIF break case pos_inside_seated2 IF DOES_SCENARIO_EXIST_IN_AREA(<<2432.56, 4968.38, 46.27>>,0.8,FALSE) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2432.56, 4968.38, 46.27>>, 0.8) zPED[i].actionFlag++ ENDIF break case pos_inside_seated3 IF DOES_SCENARIO_EXIST_IN_AREA(<<2433.12, 4965.59, 46.27>>,0.8,FALSE) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2433.12, 4965.59, 46.27>>, 0.8) zPED[i].actionFlag++ ENDIF break case pos_inside_cards1 IF DOES_SCENARIO_EXIST_IN_AREA(<<2439.61, 4960.99, 46.27>>,0.4,FALSE) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<< 2439.697, 4960.996, 46.28 >>,0.4) ////cprintln(debug_trevor3,"SEATED A") zPED[i].actionFlag++ ENDIF //TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2439.697, 4960.996, 46.323 >>,-0.680) break case pos_inside_cards2 IF DOES_SCENARIO_EXIST_IN_AREA(<<2440.16, 4962.99, 46.27>>,0.4,FALSE) TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2440.16, 4962.99, 46.27>>,0.4) //<< 2440.229, 4963.038, 46.323 >>,0.4) ////cprintln(debug_trevor3,"SEATED B") zPED[i].actionFlag++ ENDIF //TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2440.229, 4963.038, 46.323 >>, 134.070) break case pos_inside_cards3 IF DOES_SCENARIO_EXIST_IN_AREA(<<2438.23, 4962.25, 46.27>>,0.4,FALSE) ////cprintln(debug_trevor3,"SEATED C") TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(zped[i].id,<<2438.23, 4962.25, 46.27>>,0.4)//<< 2438.562, 4962.325, 46.323 >>,0.4) zPED[i].actionFlag++ ENDIF //TASK_START_SCENARIO_AT_POSITION(zped[i].id,"PROP_HUMAN_SEAT_CHAIR",<< 2438.562, 4962.325, 46.323 >>, -93.960) break endswitch //TASK_SYNCHRONIZED_SCENE (zped[i].id, sceneId, "amb@sitchair@male@idle_a", "idle_b", INSTANT_BLEND_IN, INSTANT_BLEND_OUT ) break case 1 cprintln(debug_Trevor3,"Check A") IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_USE_NEAREST_SCENARIO_TO_POS) = FINISHED_TASK zPED[i].actionFlag=0 ENDIF break ENDSWITCH break case action_cooking // IF AWARENESS_STATE != UNAWARE switch zPED[i].actionFlag /* CASE 0 startSeq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) TASK_ACHIEVE_HEADING( null,288.9182) TASK_COWER(null,-1) endseq(zPED[i].id) zPED[i].actionFlag++ break*/ case 0 IF IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),zPED[i].id) OR (IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),1.0) AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2448.583252,4969.291992,45.185604>>, <<2439.538330,4978.061035,46.827618>>, 5.750000)) TASK_HANDS_UP(zPED[i].id,20000) zPED[i].actionFlag=2 ENDIF break case 2 IF CREATE_CONVERSATION_EXTRA("WRK1",1,zPED[i].id,"CHIN2Goon2") zPED[i].actionFlag++ ENDIF break case 3 IF IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),zPED[i].id) OR (IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),1.0) AND IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2448.583252,4969.291992,45.185604>>, <<2439.538330,4978.061035,46.827618>>, 5.750000)) IF CREATE_CONVERSATION_EXTRA("TRV1",1,player_ped_id(),"TREVOR") zPED[i].actionFlag++ zPED[i].intA = get_Game_timer() + 2000 ENDIF ELSE zPED[i].actionFlag++ zPED[i].intA = get_Game_timer() + 2000 ENDIF BREAK case 4 if get_Game_timer() > zPED[i].intA TASK_SMART_FLEE_PED(zPED[i].id,player_ped_id(),200,200000) SET_PED_KEEP_TASK(zPED[i].id,true) SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id) zPED[i].actionFlag++ endif break ENDSWITCH //ENDIF break case action_meth_lab IF NOT IS_PED_INJURED(zPED[i].id) IF zPED[i].actionFlag < 8 IF HAS_PED_BEEN_DAMAGED_BY_WEAPON(zPED[i].id,WEAPONTYPE_INVALID,GENERALWEAPON_TYPE_ANYWEAPON) IF NOT HAS_PED_GOT_WEAPON(zPED[i].id,WEAPONTYPE_INVALID,GENERALWEAPON_TYPE_ANYWEAPON) GIVE_WEAPON_TO_PED(zPED[i].id,WEAPONTYPE_PISTOL,-1,false,true) TASK_COMBAT_PED(zPED[i].id,player_ped_id()) KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,FALSE) TASK_COMBAT_PED(zped[i].id,player_ped_id()) SET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id,HASH_FOE_GROUP) zPED[i].actionFlag = 999 ENDIF ENDIF ENDIF ENDIF switch zPED[i].actionFlag case 0 REQUEST_ANIM_DICT("misschinese2_crystalmaze") REQUEST_WEAPON_ASSET(WEAPONTYPE_SAWNOFFSHOTGUN) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,TRUE) SET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id,HASH_FOE_GROUP) zPED[i].actionFlag++ BREAK CASE 1 IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") AND HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_SAWNOFFSHOTGUN) IF NOT IS_PED_INJURED(zPED[i].id) iSyncCower = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) SET_SYNCHRONIZED_SCENE_LOOPED(iSyncCower,TRUE) TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncCower, "misschinese2_crystalmaze", "_cower_loop", INSTANT_BLEND_IN, NORMAL_BLEND_OUT ) IF NOT DOES_ENTITY_EXIST(objShotgun) objShotgun = CREATE_WEAPON_OBJECT(WEAPONTYPE_SAWNOFFSHOTGUN,40,<<2433.59, 4969.70, 42.1854>>,true) CPRINTLN(debug_trevor3,"Created shotgun") SET_ENTITY_ROTATION(objShotgun,<<90,0,0>>) ENDIF TASK_LOOK_AT_ENTITY(zPED[i].id,player_ped_id(),-1) zped[i].actionFlag++ ENDIF ENDIF BREAK case 2 IF missionStage = snipe_from_hill OR missionStage = get_to_house OR missionstage = inside_house IF IS_CONDITION_TRUE(COND_PLAYER_IN_METH_LAB) zped[i].actionFlag++ ENDIF ENDIF IF missionstage > inside_house zped[i].actionFlag++ ENDIF break case 3 iSyncStandUp = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandUp, "misschinese2_crystalmaze", "_cower_to_stand", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) TASK_LOOK_AT_ENTITY(zPED[i].id,PLAYER_PED_ID(),-1) zped[i].actionFlag++ break case 4 IF CREATE_CONVERSATION_EXTRA("CHI2_DALE",4,zPED[i].id,"ONEIL") zped[i].actionFlag++ ENDIF //in case the dialogue can't play for some reason... IF (IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) AND GET_SYNCHRONIZED_SCENE_PHASE(iSyncStandUp) > 0.98) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) zped[i].actionFlag = 5 ENDIF break case 5 IF (IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) AND GET_SYNCHRONIZED_SCENE_PHASE(iSyncStandUp) > 0.98) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandUp) iSyncStandingLoop = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) SET_SYNCHRONIZED_SCENE_LOOPED(iSyncStandingLoop,TRUE) TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandingLoop, "misschinese2_crystalmaze", "_stand_loop", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) zped[i].actionFlag++ zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1000,2000) ENDIF break case 6 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative) OR iStandAlternative = 0 IF GET_GAME_TIMER() > zped[i].intA iStandAlternative = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) IF GET_RANDOM_INT_IN_RANGE(0,2) = 1 TASK_SYNCHRONIZED_SCENE (zPED[i].id,iStandAlternative, "misschinese2_crystalmaze", "_stand_loop_a", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) ELSE TASK_SYNCHRONIZED_SCENE (zPED[i].id,iStandAlternative, "misschinese2_crystalmaze", "_stand_loop_b", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) ENDIF // zped[i].actionFlag++ // zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000,3000) ENDIF ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(iSyncStandingLoop) OR iSyncStandingLoop = 0 IF (IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative) AND GET_SYNCHRONIZED_SCENE_PHASE(iStandAlternative) > 0.98) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iStandAlternative) iSyncStandingLoop = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) SET_SYNCHRONIZED_SCENE_LOOPED(iSyncStandingLoop,TRUE) TASK_SYNCHRONIZED_SCENE (zPED[i].id,iSyncStandingLoop, "misschinese2_crystalmaze", "_stand_loop", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1000,2000) ENDIF ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() OR (GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2430.09, 4965.93, 41.55>>) > 3.438 AND NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2427.078857,4964.970703,41.811687>>, <<2432.588867,4959.331055,48.754795>>, 3.312500)) KILL_FACE_TO_FACE_CONVERSATION() zped[i].actionFlag++ ENDIF break case 7 IF CREATE_CONVERSATION_EXTRA("CHI2_DALEG",4,zPED[i].id,"ONEIL") zped[i].actionFlag++ ENDIF break case 8 iGrabGun = CREATE_SYNCHRONIZED_SCENE(<< 2435.312, 4967.087, 41.350 >>, << -0.000, 0.000, 11.400 >>) TASK_SYNCHRONIZED_SCENE (zPED[i].id,iGrabGun, "misschinese2_crystalmaze", "_stand_to_aim", SLOW_BLEND_IN, NORMAL_BLEND_OUT ) GIVE_WEAPON_OBJECT_TO_PED(objShotgun,zPED[i].id) zped[i].actionFlag++ break case 9 IF (IS_SYNCHRONIZED_SCENE_RUNNING(iGrabGun) AND GET_SYNCHRONIZED_SCENE_PHASE(iGrabGun) > 0.98) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(iGrabGun) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) CLEAR_PED_TASKS(zPED[i].id) TASK_AIM_GUN_AT_ENTITY(zPED[i].id,player_ped_id(),-1,TRUE) zped[i].actionFlag++ ENDIF break CASE 10 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL") SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(zPED[i].id,FALSE) TASK_COMBAT_PED(zped[i].id,player_ped_id()) zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,4000) zped[i].intB=0 zped[i].actionFlag++ ENDIF ENDIF BREAK CASE 11 IF GET_GAME_TIMER() > zped[i].intA IF zped[i].intB < 4 IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL") zped[i].actionFlag++ zped[i].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,4000) zped[i].intB++ ENDIF ENDIf ENDIF BREAK case 999 IF CREATE_CONVERSATION_EXTRA("CHI2_DALEA",4,zPED[i].id,"ONEIL") zped[i].actionFlag++ ENDIF break ENDSWITCH /* IF zPED[i].actionFlag != CLEANUP int iCard3 iCard3 = get_ped_with_placement(pos_inside_cards3) If iCard3 = -1 iCard3 = 0 ENDIF IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("V_8_BasementRm") AND IS_PED_INJURED(zped[iCard3].id) OR get_ped_with_placement(pos_inside_cards3) = -1 IF zPED[i].actionFlag = 2 set_ped_action(get_ped_with_action(action_meth_lab),action_meth_lab_respond_to_player) endif endif endif*/ break case action_meth_lab_respond_to_player IF NOT IS_PED_INJURED(zPED[i].id) IF IS_BULLET_IN_AREA(GET_ENTITY_COORDS(zPED[i].id),2.0,TRUE) zPED[i].actionFlag = 5 ENDIF ENDIF switch zPED[i].actionFlag case 0 IF IS_THIS_PRINT_BEING_DISPLAYED("FRMFLC") zPED[i].actionFlag++ ENDIF BREAK CASE 1 if CREATE_CONVERSATION_EXTRA("WRK2",1,zPED[i].id,"oneilcook",2,player_ped_id(),"trevor") //////cprintln(DEBUG_TREVOR3,"REACT TO TREVOR : ",GET_GAME_TIMER()) zPED[i].actionFlag++ zPED[i].intA = get_game_timer() + 1300 endif break case 2 IF get_game_timer() > zPED[i].intA TASK_HANDS_UP(zPED[i].id,20000) zPED[i].actionFlag++ ENDIF BREAK CASE 3 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() zPED[i].actionFlag++ endif break case 4 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //////cprintln(DEBUG_TREVOR3,"Meth worker flees cos conversatonn with player over") set_ped_action(i,action_flee) ENDIF break case 5 //player shoots near cook TASK_SMART_FLEE_PED(zPED[i].id,player_ped_id(),50,1000) zPED[i].actionFlag++ break case 6 IF IS_CONV_ROOT_PLAYING("WRK2") IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 1 OR GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 5 ////cprintln(DEBUG_TREVOR3,"A") PURGE_CONVERSATIONS(FALSE) ELSE ////cprintln(DEBUG_TREVOR3,"B") PURGE_CONVERSATIONS(TRUE) ENDIF ENDIF set_ped_action(i,action_flee) break ENDSWITCH break case action_flee switch zPED[i].actionFlag CASE 0 startSeq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true) TASK_SMART_FLEE_PED(null,player_ped_id(),200.0,999999) task_cower(null,-1) endseq(zPED[i].id) SET_PED_KEEP_TASK(zPED[i].id,true) SET_PED_AS_NO_LONGER_NEEDED(zPED[i].id) IF DOES_BLIP_EXIST(zPED[i].blip) REMOVE_BLIP(zPED[i].blip) endif zPED[i].actionFlag++ break ENDSWITCH break case action_shoot_cans /* int iC REPEAT COUNT_OF(oCans) iC IF DOES_ENTITY_EXIST(oCans[iC]) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(oCans[iC],player_ped_id()) set_ped_action(i,action_alerted) ENDIF ENDIF ENDREPEAT */ IF bForceAnimTimeA = TRUE IF IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA) SET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA,0.69) ENDIF IF i = enum_to_int(pos_shooting_bottle_2) bForceAnimTimeA = FALSE ENDIF ENDIF IF bForceAnimTimeB = TRUE IF IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA) SET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA,0.0) ENDIF IF i = enum_to_int(pos_shooting_bottle_2) bForceAnimTimeB = FALSE ENDIF zPED[i].actionFlag = 0 ENDIF IF zPed[i].placement = pos_shooting_bottle_1 If IS_SYNCHRONIZED_SCENE_RUNNING(zPED[i].intA) IF zPED[i].actionFlag = 0 IF NOT is_event_active(events_spawn_bottles) OR missionStage = farm_cutscene IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = PERFORMING_TASK IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.024 AND GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) < 0.033 // IF IS_POINT_VISIBLE(GET_ENTITY_COORDS(zPED[i].id),5.0,100) //commented out because gun won't shoot if not on screen // OR IS_POINT_VISIBLE(<<2494.2041, 4970.2690, 44.5201>>,5.0,100) int iCanToHit iCanToHit = 0 IF NOT IS_PED_INJURED(zPED[i].id) weapon_type HisWep HisWep = weapontype_unarmed IF GET_CURRENT_PED_WEAPON(zPED[i].id,HisWep) SET_PED_ACCURACY(zPED[i].id,100) IF HisWep = WEAPONTYPE_PISTOL IF FIND_CAN_TO_HIT(iCanToHit) //IF HAS_PED_GOT_FIREARM(zPED[i].id) cprintln(debug_trevor3,"BANG") SET_AMMO_IN_CLIP(zPED[i].id,WEAPONTYPE_PISTOL,12) SET_PED_SHOOTS_AT_COORD(zPED[i].id,GET_ENTITY_COORDS(oCans[iCanToHit])) UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true) //SHOOT_SINGLE_BULLET_BETWEEN_COORDS(<< 2502.0161, 4970.4639, 44.9824 >>,GET_ENTITY_COORDS(oCans[iCanToHit]),5,TRUE,WEAPONTYPE_PISTOL,zped[i].id) //ENDIF zPED[i].actionFlag = 1 ELSE //IF HAS_PED_GOT_FIREARM(zPED[i].id) SET_AMMO_IN_CLIP(zPED[i].id,WEAPONTYPE_PISTOL,12) SET_PED_SHOOTS_AT_COORD(zPED[i].id,<<2493.1,4971,44.9>>) cprintln(debug_trevor3,"BANG B") UPDATE_AI_PED_BLIP(zPED[i].id,zped[i].aiBlip,-1,null,true) // SHOOT_SINGLE_BULLET_BETWEEN_COORDS(<< 2502.0161, 4970.4639, 44.9824 >>,GET_ENTITY_COORDS(oCans[0]),5,TRUE,WEAPONTYPE_PISTOL,zped[i].id) zPED[i].actionFlag = 1 //ENDIF ENDIF ENDIf ENDIF ENDIF //ELSE // zPED[i].actionFlag = 1 //ENDIF ENDIF ENDIF ENDIF ELIF zPED[i].actionFlag = 1 IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.04 //check if any more cans in area // int iAnyMore // iAnyMore = 0 // IF NOT FIND_CAN_TO_HIT(iAnyMore) // zPED[i].actionFlag = 2 // ELSE zPED[i].actionFlag = 2 IF bBlockShooterDialogue = FALSE PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[i].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_02", "SPEECH_PARAMS_FORCE_SHOUTED") ENDIF ////cprintln(debug_Trevor3,"cheer") //PLAY_PED_AMBIENT_SPEECH_NATIVE(zPED[i].id,"GENERIC_CHEER_01","SPEECH_PARAMS_FORCE_NORMAL") // ENDIF ENDIF elif zPED[i].actionFlag = 2 IF GET_SYNCHRONIZED_SCENE_PHASE(zPED[i].intA) > 0.6 zPED[i].actionFlag = 0 endif ENDIF ENDIF ENDIF IF zPED[i].actionFlag = 3 IF GET_SCRIPT_TASK_STATUS(zPED[i].id,SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = FINISHED_TASK set_ped_action(i,action_chatting) ENDIF ENDIF BREAK ENDSWITCH ENDIF BREAK case STATE_SEEK fallthru case STATE_COMBAT iF pedReactionState[i].scriptControlledCombat // IF zPED[i].placement = pos_inside_right_window // OR zPED[i].placement = pos_inside_kitchen1 // OR zPED[i].placement = pos_inside_kitchen2 // OR zPED[i].placement = pos_inside_utility_room // ////cprintln(debug_trevor3," i = ",i," act flag = ",pedReactionState[i].actionFlag) // endif switch zPED[i].placement case pos_inside_bystairs1 FALLTHRU CAse pos_inside_bystairs2 Fallthru case pos_inside_cards2 fallthru case pos_inside_seated1 fallthru case pos_inside_seated2 fallthru case pos_inside_seated3 switch pedReactionState[i].actionFlag case 1 // SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2431.704102,4961.619629,45.331356>>, <<2455.376465,4985.933594,48.685551>>, 13.562500) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE) pedReactionState[i].actionFlag++ BREAK ENDSWITCH BREAK case pos_inside_cards3 //in basement switch pedReactionState[i].actionFlag case 1 // SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2431.704102,4961.619629,45.331356>>, <<2455.376465,4985.933594,48.685551>>, 13.562500) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE) pedReactionState[i].actionFlag++ // IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK // CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id) // SET_ENTITY_COORDS(zped[i].id,<<2437.5564, 4962.0776, 45.8106>>) /* SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2429.921631,4968.741211,40.597553>>, <<2433.283203,4972.045898,43.873558>>, 5.312500) startSeq() TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 2432.2642, 4959.6460, 45.8131 >>,pedmove_walk) TASK_GO_STRAIGHT_TO_COORD(null,<< 2427.9617, 4964.3984, 42.9630 >>,pedmove_walk) TASK_COMBAT_PED(null,PLAYER_PED_ID()) endseq(zped[i].id) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE) pedReactionState[i].actionFlag++*/ // ENDIF break ENDSWITCH break case pos_inside_cards1 //behind sofa switch pedReactionState[i].actionFlag case 1 // IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK // SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2437.981934,4959.020996,45.310574>>, <<2432.929932,4961.941406,48.692562>>, 3.187500) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ // ENDIF break case 2 IF IS_CONDITION_TRUE(COND_TREVOR_NEAR_STAIRS) REMOVE_PED_DEFENSIVE_AREA(zPED[i].id) pedReactionState[i].actionFlag++ ENDIF break endswitch BREAK /* switch pedReactionState[i].actionFlag case 1 SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2447.756592,4981.289063,44.934750>>, <<2446.409180,4982.652832,48.309746>>, 2.375000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ break case 2 IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2452.965820,4985.248047,45.591969>>, <<2448.317871,4990.217773,47.936779>>, 3.500000) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2443.332520,4981.746582,45.497406>>, <<2446.810059,4978.089844,48.271076>>, 2.687500) pedReactionState[i].actionFlag++ ENDIF IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2455.334473,4970.357422,45.498104>>, <<2451.068359,4974.604492,48.247440>>, 4.625000) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2448.737061,4975.442871,44.955708>>, <<2454.806641,4969.708008,48.413578>>, 2.375000) pedReactionState[i].actionFlag++ ENDIF BREAK case 3 IF IS_ENTITY_IN_ANGLED_AREA( zped[i].id, <<2445.876709,4978.528809,44.948814>>, <<2443.826660,4980.604492,48.310200>>, 2.375000) pedReactionState[i].actionFlag++ ENDIF BREAK CASE 4 SET_PED_MAX_MOVE_BLEND_RATIO(zped[i].id,PEDMOVE_WALK) BREAK ENDSWITCH break case pos_inside_bystairs2 //goes in to bathroom switch pedReactionState[i].actionFlag case 1 SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.954590,4977.896973,45.131977>>, <<2451.540039,4976.274902,48.247337>>, 1.875000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ break case 2 IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2442.321289,4982.283203,45.497093>>, <<2446.957031,4977.627930,48.247665>>, 2.187500) OR IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2455.334473,4970.357422,45.498104>>, <<2451.068359,4974.604492,48.247440>>, 4.625000) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id,<<2445.289063,4969.894043,43.998104>>, <<2448.634521,4973.506348,48.248104>>, 6.000000) pedReactionState[i].actionFlag=3 ENDIF IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2435.310791,4986.616699,44.128063>>, <<2423.034424,4974.076172,47.449322>>, 15.875000) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2438.158936,4980.710449,44.701595>>, <<2432.191406,4974.761719,48.014095>>, 3.437500) pedReactionState[i].actionFlag=4 ENDIF BREAK case 4 IF NOT IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2435.310791,4986.616699,44.128063>>, <<2423.034424,4974.076172,47.449322>>, 15.875000) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.954590,4977.896973,45.131977>>, <<2451.540039,4976.274902,48.247337>>, 1.875000) pedReactionState[i].actionFlag=2 ENDIF break ENDSWITCH break case pos_inside_cards2 //behind wall switch pedReactionState[i].actionFlag case 1 // IF GET_SCRIPT_TASK_STATUS(zped[i].id,SCRIPT_TASK_START_SCENARIO_AT_POSITION) = PERFORMING_TASK SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2433.289307,4962.226563,44.939003>>, <<2434.555176,4960.793457,47.377789>>, 3.125000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ // ENDIF break endswitch break case pos_inside_seated1 switch pedReactionState[i].actionFlag case 1 // CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id) // SET_ENTITY_COORDS(zped[i].id,<< 2431.0010, 4965.7803, 45.8106 >>) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2432.015137,4965.860840,44.935604>>, <<2433.186523,4964.659668,47.310604>>, 1.937500) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ break ENDSWITCH break case pos_inside_seated2 switch pedReactionState[i].actionFlag case 1 // CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id) // SET_ENTITY_COORDS(zped[i].id,<< 2429.3208, 4967.4536, 45.8106 >>) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2449.900146,4971.117188,44.935604>>, <<2448.908447,4970.079590,48.310604>>, 1.25000) SET_PED_DEFENSIVE_AREA_DIRECTION(zped[i].id,<< 2571.9097, 4981.6089, 50.6529 >>) SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT(zPed[i].id) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ break case 2 IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2449.354248,4969.492676,44.748611>>, <<2454.811768,4964.115723,48.136688>>, 4.875000) startSeq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null,<< 2448.1270, 4971.7231, 45.8106 >>,player_ped_id(),pedmove_run,true,0.2,0.4) TASK_SHOOT_AT_ENTITY(null,PLAYER_PED_ID(),4000,FIRING_TYPE_CONTINUOUS) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,FALSE) endSeq(zped[i].id) pedReactionState[i].actionFlag++ ENDIF break case 3 IF GET_SCRIPT_TASK_STATUS(zped[i].id,script_TASK_PERFORM_SEQUENCE) = FINISHED_TASK OR IS_PED_IN_COMBAT(zped[i].id) SET_PED_ANGLED_DEFENSIVE_AREA(zped[i].id, <<2444.830566,4970.917480,44.935604>>, <<2447.187744,4969.138672,48.310604>>, 2.375000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) pedReactionState[i].actionFlag++ ENDIF break ENDSWITCH break //case pos_inside_seated3 // switch pedReactionState[i].actionFlag // case 0 // SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2436.569580,4960.183594,44.935604>>, <<2438.262451,4958.681152,46.827202>>, 1.625000) // pedReactionState[i].actionFlag++ // break // ENDSWITCH //br/eak case pos_inside_seated3 switch pedReactionState[i].actionFlag case 1 // CLEAR_PED_TASKS_IMMEDIATELY(zped[i].id) // set_entity_coords(zped[i].id,<< 2435.2253, 4965.4336, 45.8106 >>) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2439.414063,4972.592773,44.935604>>, <<2440.392090,4971.685547,47.373104>>, 1.625000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ break case 2 //int iSeated //iSeated = get_ped_with_placement(pos_inside_seated2) IF (IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2441.253906,4979.531738,44.935604>>, <<2449.545654,4971.246094,47.373104>>, 1.812500) AND IS_POINT_VISIBLE(<< 2443.1968, 4972.5894, 47.2911 >>,2.0)) OR IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<2448.055420,4968.519531,44.935604>>, <<2439.032715,4978.250977,47.495625>>, 2.875000) pedReactionState[i].actionFlag++ SET_PED_COMBAT_ATTRIBUTES(zped[i].id,CA_CLEAR_PRIMARY_DEFENSIVE_AREA_WHEN_REACHED,TRUE) SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2442.379883,4973.768555,44.935604>>, <<2440.732910,4975.336426,47.310604>>, 1.625000) ENDIF break endswitch break*/ case pos_inside_right_window FALLTHRU case pos_inside_kitchen1 FALLTHRU case pos_inside_kitchen2 FALLTHRU case pos_inside_utility_room switch pedReactionState[i].actionFlag case 1 ////cprintln(debug_trevor3,"peds inside to outside") TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_CAN_CHARGE,TRUE) //SET_PED_COMBAT_ATTRIBUTES(zPED[i].id,CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED,TRUE) IF iStagger = 0 REMOVE_PED_DEFENSIVE_AREA(zped[i].id) SET_PED_SPHERE_DEFENSIVE_AREA(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>,3.0) iStagger++ pedReactionState[i].actionFlag++ ELSE pedReactionState[i].actionFlag=GET_GAME_TIMER() + (iStagger * 4000) iStagger++ ENDIF zped[i].role = role_guard_outside BREAK CASE 2 IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>) < 3.0 REMOVE_PED_DEFENSIVE_AREA(zPED[i].id) pedReactionState[i].actionFlag++ ENDIF BREAK CASE 3 BREAK default IF GET_GAME_TIMER() > pedReactionState[i].actionFlag REMOVE_PED_DEFENSIVE_AREA(zped[i].id) SET_PED_SPHERE_DEFENSIVE_AREA(zPED[i].id,<<2451.6775, 4954.2515, 44.9880>>,3.0) pedReactionState[i].actionFlag=2 ENDIF break ENDSWITCH BREAK CASE pos_balcony_doorway switch pedReactionState[i].actionFlag case 1 SET_PED_ANGLED_DEFENSIVE_AREA( zPED[i].id, <<2453.083984,4969.896973,50.442852>>, <<2460.995605,4977.821777,53.380352>>, 2.937500) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ BREAK ENDSWITCH BREAK CASE pos_balcony_far_left switch pedReactionState[i].actionFlag case 1 SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2442.963379,4964.217285,50.442852>>, <<2449.250732,4970.534180,53.380352>>, 2.000000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ BREAK ENDSWITCH BREAK CASE pos_balcony_veranda_walk switch pedReactionState[i].actionFlag case 1 ////cprintln(DEBUG_TREVOR3,"pos_balcony_veranda_walk : DEF AREA SET") SET_PED_ANGLED_DEFENSIVE_AREA( zped[i].id, <<2461.362305,4976.083984,50.442852>>, <<2448.743164,4988.774414,53.601433>>, 2.000000) TASK_COMBAT_PED(zped[i].id,PLAYER_PED_ID()) SET_PED_TARGET_LOSS_RESPONSE(zPED[i].id,TLR_NEVER_LOSE_TARGET) pedReactionState[i].actionFlag++ BREAK ENDSWITCH BREAK ENDSWITCH endif break ENDSWITCH ENDIF ENDREPEAT ENDPROC proc manage_peds() IF missionStage >= farm_cutscene IF missionStage > farm_cutscene handlePedReactions(pedReactionState,vDefAreas,diHearPlayer,diHearPlayerAgain,diLostPlayer,diBullet,diSeePlayer,diFoundPlayer,diAlertAllSeen,diAlertAllUnSeen,diDeadBody,diExplosion) ENDIF //RESPOND_TO_ALERTS() CONTROL_PED_ACTIONS() ENDIF endproc // =================================================== MISSION PROGRES ===================================== proc STAGE_ENDS(mission_stage_flag nextStage = stage_null) RESET_INSTRUCTIONS() RESET_CONDITIONS() RESET_ACTIONS() RESET_DIALOGUE() IF nextStage = stage_null missionStage = int_to_enum(mission_stage_flag,ENUM_TO_INT(missionStage)+1) ELSE missionStage = nextStage ENDIF ENDPROC proc stage_init() SWITCH stageFlag case 0 #if IS_DEBUG_BUILD SkipMenuStruct[0].sTxtLabel = "init_mission" SkipMenuStruct[1].sTxtLabel = "intro_cut (chinese_2_int)" SkipMenuStruct[2].sTxtLabel = "drive_to_farm" SkipMenuStruct[3].sTxtLabel = "farm_cutscene" SkipMenuStruct[4].sTxtLabel = "snipe_from_hill" SkipMenuStruct[5].sTxtLabel = "get_to_house" SkipMenuStruct[6].sTxtLabel = "inside_house" SkipMenuStruct[7].sTxtLabel = "do_petrol_trail" SkipMenuStruct[8].sTxtLabel = "explosion_cut" SkipMenuStruct[9].sTxtLabel = "end_mission" #ENDIF REQUEST_ADDITIONAL_TEXT("FRMCHSE", MISSION_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) safewait(27) ENDWHILE ADD_PED_FOR_DIALOGUE(dChinese2, 0, PLAYER_PED_ID(), "TREVOR") ADD_PED_FOR_DIALOGUE(dChinese2, 8, NULL, "PED8") add_event(events_control_dispatch,TRUE) add_event(events_fails,TRUE) add_Event(events_never_do_locates_skips,TRUE) // add_event(events_create_bullet_collision_on_house,TRUE) INIT_REL_GROUPS() STOP_FIRE_IN_RANGE(<< 2442.6897, 4970.3477, 46.3300 >>,30.0) SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY",120) cellar_explosions[0] = <<2428.47, 4968.91, 42.11>> cellar_explosions[1] = <<2431.14, 4972.06, 42.19>> cellar_explosions[2] = <<2433.05, 4969.22, 42.26>> cellar_explosions[3] = <<2437.71, 4968.13, 42.45>> cellar_explosions[4] = <<2436.12, 4964.76, 42.19>> cellar_explosions[5] = <<2432.13, 4961.97, 41.35>> cellar_explosions[6] = <<2430.07, 4963.78, 41.35>> cellar_explosions[7] = <<2434.00, 4963.04, 41.53>> cellar_explosions[8] = <<2435.63721, 4969.69922, 42.19639>> gasTrail[0].coord = <<2450.3765, 4955.8296, 43.9394>> gasTrail[1].coord = <<2449.8149, 4956.6782, 43.9894>> gasTrail[2].coord = <<2449.6060, 4957.6753, 44.0646>> gasTrail[3].coord = <<2449.7390, 4958.7314, 44.1544>> gasTrail[4].coord = <<2450.1409, 4959.7451, 44.2487>> gasTrail[5].coord = <<2450.6851, 4960.5815, 44.3219>> gasTrail[6].coord = <<2451.4924, 4961.3330, 44.4439>> gasTrail[7].coord = <<2452.1736, 4962.0986, 44.5787>> gasTrail[8].coord = <<2452.7166, 4962.9058, 44.9141>> gasTrail[9].coord = <<2453.3499, 4963.5786, 45.3558>> gasTrail[10].coord = <<2453.7539, 4964.5654, 45.5766>> gasTrail[11].coord = <<2453.2256, 4965.5391, 45.5766>> gasTrail[12].coord = <<2452.4724, 4966.2930, 45.5766>> gasTrail[13].coord = <<2451.8691, 4967.1040, 45.5766>> gasTrail[14].coord = <<2451.5291, 4968.0825, 45.5766>> gasTrail[15].coord = <<2452.3271, 4968.7124, 45.5766>> gasTrail[16].coord = <<2452.7961, 4969.6426, 45.8107>> gasTrail[17].coord = <<2453.2607, 4970.5410, 45.8106>> gasTrail[18].coord = <<2453.5803, 4971.5483, 45.8104>> gasTrail[19].coord = <<2452.8076, 4972.2666, 45.8306>> gasTrail[20].coord = <<2452.0493, 4972.9282, 45.8306>> gasTrail[21].coord = <<2451.2407, 4973.5991, 45.8306>> gasTrail[22].coord = <<2450.2480, 4973.8887, 45.8306>> gasTrail[23].coord = <<2449.2073, 4973.7837, 45.8105>> gasTrail[24].coord = <<2448.1724, 4973.8140, 45.8106>> gasTrail[25].coord = <<2447.1526, 4973.7715, 45.8106>> gasTrail[26].coord = <<2446.1379, 4973.7241, 45.8106>> gasTrail[27].coord = <<2445.1282, 4973.6895, 45.8106>> gasTrail[28].coord = <<2444.2559, 4973.0557, 45.8106>> gasTrail[29].coord = <<2443.6694, 4972.1938, 45.8106>> gasTrail[30].coord = <<2443.1191, 4971.2749, 45.8106>> gasTrail[31].coord = <<2442.6606, 4970.3594, 45.8106>> gasTrail[32].coord = <<2442.2668, 4969.4253, 45.8106>> gasTrail[33].coord = <<2441.7085, 4968.5024, 45.8306>> gasTrail[34].coord = <<2441.2637, 4967.5337, 45.8106>> gasTrail[35].coord = <<2440.8728, 4966.5376, 45.8106>> gasTrail[36].coord = <<2440.3818, 4965.6343, 45.8106>> gasTrail[37].coord = <<2439.7104, 4964.8823, 45.8106>> gasTrail[38].coord = <<2438.9329, 4964.1455, 45.8106>> gasTrail[39].coord = <<2438.1663, 4963.5024, 45.8106>> gasTrail[40].coord = <<2437.5554, 4962.7095, 45.8106>> gasTrail[41].coord = <<2436.9011, 4961.9502, 45.8106>> gasTrail[42].coord = <<2436.0752, 4961.2573, 45.8106>> gasTrail[43].coord = <<2435.0796, 4961.0039, 45.8118>> gasTrail[44].coord = <<2434.0664, 4960.7134, 45.8181>> gasTrail[45].coord = <<2433.0449, 4960.5938, 45.8192>> gasTrail[46].coord = <<2432.0647, 4960.2495, 45.8130>> gasTrail[47].coord = <<2431.2329, 4960.8091, 45.8089>> gasTrail[48].coord = <<2430.5747, 4961.5737, 45.5917>> gasTrail[49].coord = <<2429.8887, 4962.0278, 44.9345>> gasTrail[50].coord = <<2429.2600, 4962.5947, 44.2774>> gasTrail[51].coord = <<2428.6914, 4963.2793, 43.6202>> gasTrail[52].coord = <<2428.0730, 4963.9106, 42.9631>> gasTrail[53].coord = <<2428.2388, 4964.9219, 42.9631>> gasTrail[54].coord = <<2428.9614, 4965.4546, 42.3059>> gasTrail[55].coord = <<2429.4500, 4966.2236, 41.8679>> gasTrail[56].coord = <<2430.0728, 4966.8198, 41.3476>> gasTrail[57].coord = <<2431.0969, 4967.0430, 41.3476>> gasTrail[58].coord = <<2431.8904, 4966.4028, 41.3476>> gasTrail[59].coord = <<2432.7676, 4965.9019, 41.3476>> gasTrail[60].coord = <<2433.7761, 4965.6133, 41.3476>> CutEvent[0].name = "Table Flames" CutEvent[0].triggered = FALSE CutEvent[1].name = "Table Explosion" CutEvent[1].triggered = FALSE CutEvent[2].name = "House Explosion" CutEvent[2].triggered = FALSE CutEvent[3].name = "Cam Shake" CutEvent[3].triggered = FALSE CutEvent[4].name = "Position player" CutEvent[4].triggered = FALSE CutEvent[5].name = "Slow mo" CutEvent[5].triggered = FALSE CutEvent[0].triggerShot = 2 CutEvent[0].triggerTime = 1000 CutEvent[1].triggerShot = 2 CutEvent[1].triggerTime = 4200 CutEvent[2].triggerShot = 3 CutEvent[2].triggerTime = 0 CutEvent[3].triggerShot = 3 CutEvent[3].triggerTime = 0 CutEvent[4].triggerShot = 3 CutEvent[4].triggerTime = 3200 CutEvent[5].triggerShot = 3 CutEvent[5].triggerTime = 700 camShot[0].camStartPos = << 2454.83, 4974.96, 46.4489 >> camShot[0].camStartRot = << 2.9627, 0.077, 115.874 >> camShot[0].camStartFOV = 39.702999 camShot[0].camEndPos = << 2454.41, 4974.93, 46.4691 >> camShot[0].camEndRot = << 2.6238, 0.077, 114.001 >> camShot[0].camEndFOV = 39.702999 camShot[0].camDuration = 2500 camShot[0].totalDuration = 2500 camShot[0].camPanType = 0 camShot[0].flameNode = 18 camShot[1].camStartPos = << 2435.41, 4960.94, 45.9568 >> camShot[1].camStartRot = << 6.677, 0, -49.4853 >> camShot[1].camStartFOV = 58.9114 camShot[1].camEndPos = << 2435.11, 4960.62, 45.9441 >> camShot[1].camEndRot = << 6.3596, 0, -44.8248 >> camShot[1].camEndFOV = 58.9114 camShot[1].camDuration = 3200 camShot[1].totalDuration = 1900 camShot[1].camPanType = 0 camShot[1].flameNode = 34 camShot[2].camStartPos = << 2434.77, 4969.56, 42.3654 >> camShot[2].camStartRot = << 5.2773, -0.1511, 132.167 >> camShot[2].camStartFOV = 35.1297 camShot[2].camEndPos = << 2434.66, 4969.68, 42.3657 >> camShot[2].camEndRot = << 5.2773, -0.1511, 132.167 >> camShot[2].camEndFOV = 35.1297 camShot[2].camDuration = 3500 camShot[2].totalDuration = 4500 camShot[2].camPanType = 3 camShot[2].flameNode = 49 camShot[3].camStartPos = << 2472.1, 4943.1, 45.3 >> camShot[3].camStartRot = << 6, 0, 25.3 >> camShot[3].camStartFOV = 33.1297 camShot[3].camEndPos = << 2472.1, 4943.1, 45.3 >> camShot[3].camEndRot = << 5.5, 0, 35.6 >> camShot[3].camEndFOV = 33.1297 camShot[3].camDuration = 3500 camShot[3].totalDuration = 3500 camShot[3].camPanType = 0 camShot[3].flameNode = -1 fShakeValue = 0.06 DISABLE_TAXI_HAILING(TRUE) basementFlames[0] = <<2432.74, 4963.43, 41.35>> basementFlames[1] = <<2432.02, 4962.61, 41.35>> basementFlames[2] = <<2431.06, 4961.83, 41.35>> basementFlames[3] = <<2430.84, 4961.08, 42.09>> basementFlames[4] = <<2430.53, 4962.47, 42.00>> basementFlames[5] = <<2430.81, 4961.10, 42.80>> basementFlames[6] = <<2429.74, 4961.98, 42.32>> basementFlames[7] = <<2433.50, 4966.76, 41.35>> basementFlames[8] = <<2433.24, 4967.42, 41.35>> basementFlames[9] = <<2433.15, 4967.43, 42.19>> basementFlames[10] = <<2432.53, 4967.89, 42.40>> basementFlames[11] = <<2432.48, 4969.07, 42.19>> basementFlames[12] = <<2433.36, 4969.44, 42.31>> //gasTrail[61].coord = <<2434.2747, 4965.7827, 41.3476>> vDefAreas[0] = <<2552.692383,4978.566406,45.323090>> vDefAreas[1] = <<2562.533691,5013.501953,47.463024>> vDefAreas[2] = <<2553.884766,4945.660645,47.493053>> vDefAreas[3] = <<2515.545166,4936.428223,42.883816>> vDefAreas[4] = <<2497.318359,4967.817871,43.595566>> vDefAreas[5] = <<2481.376221,4951.766113,43.998589>> vDefAreas[6] = <<2522.044434,4956.371582,43.716049>> vDefAreas[7] = <<2529.048096,4985.627441,43.868477>> vDefAreas[8] = <<2502.503418,4987.245117,46.626690>> vDefAreas[9] = <<2464.891113,4939.948730,44.256462>> vDefAreas[10] = <<2447.160156,4940.272461,44.157661>> vDefAreas[11] = <<2376.536865,4946.399414,41.772324>> vDefAreas[12] = <<2395.231934,4995.629883,44.689095>> vDefAreas[13] = <<2419.819092,4991.935547,45.369762>> vDefAreas[14] = <<2436.319336,5011.725098,45.846943>> vDefAreas[15] = <<2407.764648,5023.078613,47.770912>> vDefAreas[16] = <<2479.015869,5028.829102,42.988060>> vDefAreas[17] = <<2434.704102,5042.712891,45.344620>> vDefAreas[18] = <<2513.929932,5039.332520,51.021214>> vDefAreas[19] = <<2477.882324,4986.437012,44.995113>> vDefAreas[20] = <<2450.058105,5011.857910,44.890316>> RESET_REACT_ARRAY(pedReactionState,dChinese2,convBlock,12,<<2482.1965, 4975.3667, 44.7288>>,121,STATE_SPAWN) setReactDialogue(diAlertAllSeen,"ONEILGUARD4",5,"ONEILGUARD1") setReactDialogue(diAlertAllUnSeen,"ONEILGUARD4",5,"ONEILGUARD1") setReactDialogue(diLostPlayer,"CHI2_nope",8,"ONEILGUARD1") setReactDialogue(diSeePlayer,"SEETREVOR",3,"chin2goon1") setReactDialogue(diHearPlayer,"CHI2_hear",8,"ONEILGUARD1") setReactDialogue(diHearPlayerAgain,"CHI2_hear",8,"ONEILGUARD1") setReactDialogue(diBullet,"ONEILGUARD3",5,"ONEILGUARD1") setReactDialogue(diDeadBody,"ONEILGUARD2",5,"ONEILGUARD1") setReactDialogue(diExplosion,"ONEILGUARD4",5,"ONEILGUARD1") setReactDialogue(diFoundPlayer,"GOON2TREV",4,"CHIN2goon2") add_event(events_reset_house_rayfire,true) add_event(events_continuous_stats_tracking,true) vehPlayer = GET_LAST_DRIVEN_VEHICLE() #if IS_DEBUG_BUILD GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PUMPSHOTGUN, 50, FALSE,FALSE) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, 30, FALSE,FALSE) GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_SCOPE_MAX) GIVE_WEAPON_COMPONENT_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_SNIPERRIFLE,WEAPONCOMPONENT_AT_AR_SUPP_02) #endif SET_VEHICLE_MODEL_IS_SUPPRESSED(bodhi2, TRUE) ADD_RELATIONSHIP_GROUP("TAOGROUP",taorelgroup) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,taorelgroup,RELGROUPHASH_PLAYER) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,taorelgroup) INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL) // INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(PLAYER_PED_ID(),CHI2_UNMARKED) //INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehPlayer,CHI2_CAR_DAMAGE) //this needs to be directed at trev's truck SET_SCENARIO_GROUP_ENABLED("Chinese2_Lunch",FALSE) SET_SCENARIO_GROUP_ENABLED("CHINESE2_HILLBILLIES",false) //INFORM_MISSION_STATS_OF_MISSION_START_CHINESE_TWO() IF (Is_Replay_In_Progress()) int myStage myStage = Get_Replay_Mid_Mission_Stage() IF g_bShitskipAccepted = TRUE myStage++ ENDIF cprintln(DEBUG_TREVOR3,"replay in progress to stage : ",myStage) switch myStage case 0 do_skip(drive_to_farm,true) DO_SCREEN_FADE_IN(1000) BREAK CASE 1 IF g_bShitskipAccepted = TRUE do_skip(farm_cutscene,true) ELSE do_skip(snipe_from_hill,true) DO_SCREEN_FADE_IN(1000) ENDIF BREAK CASE 2 do_skip(inside_house,true) DO_SCREEN_FADE_IN(1000) BREAK CASE 3 do_skip(do_petrol_trail,true) DO_SCREEN_FADE_IN(1000) BREAK CASE 4 IF g_bShitskipAccepted = TRUE do_skip(explosion_cut,true) ELSE do_skip(end_mission,TRUE) DO_SCREEN_FADE_IN(1000) ENDIF BREAK CASE 5 do_skip(missionPassed,true) DO_SCREEN_FADE_IN(1000) Mission_Passed() BREAK ENDSWITCH elIF IS_REPEAT_PLAY_ACTIVE() do_skip(intro_cut,false,true) ELSE STAGE_ENDS() ENDIF BREAK ENDSWITCH ENDPROC int iFrameDelay proc stage_intro_cut() SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0,0.0) SWITCH stageFlag case 0 vehPlayer = GET_PLAYERS_LAST_VEHICLE() SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() // AND ((DOES_ENTITY_EXIST(zPED[ped_oldMan1].id) AND DOES_ENTITY_EXIST(zPED[ped_oldMan2].id)) // OR (DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1]) AND DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[2]))) REQUEST_ANIM_DICT("MISSChinese2_crystalMazeMCS1_IG") request_model(IG_OLD_MAN2) request_model(IG_OLD_MAN1A) request_model(IG_JANET) request_model(IG_TAOCHENG) request_model(IG_TAOSTRANSLATOR) REQUEST_ANIM_DICT("misschinese2_crystalmaze") REQUEST_ANIM_DICT("missrampageintrooutro") SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(),FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0]) zPED[ped_oldMan2].id = g_sTriggerSceneAssets.ped[2] zPED[ped_oldMan1].id = g_sTriggerSceneAssets.ped[1] zPED[ped_tao].id = g_sTriggerSceneAssets.ped[4] zPED[ped_taos_translator].id = g_sTriggerSceneAssets.ped[3] zPED[ped_janet].id = g_sTriggerSceneAssets.ped[0] SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_oldMan2].id,TRUE,TRUE) SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_oldMan1].id,TRUE,TRUE) SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_tao].id,TRUE,TRUE) SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_taos_translator].id,TRUE,TRUE) SET_ENTITY_AS_MISSION_ENTITY(zPED[ped_janet].id,TRUE,TRUE) IF NOT IS_PED_INJURED(zPED[ped_oldMan1].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan1].id,"Old_Man1A",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_OLD_MAN1A) ENDIF IF NOT IS_PED_INJURED(zPED[ped_oldMan2].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan2].id,"Old_Man2",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_OLD_MAN2) ENDIF IF NOT IS_PED_INJURED(zPED[ped_tao].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOCHENG) ENDIF IF NOT IS_PED_INJURED(zPED[ped_taos_translator].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_taos_translator].id,"Taos_Translator",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOSTRANSLATOR) ENDIF IF NOT IS_PED_INJURED(zPED[ped_janet].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_janet].id,"Janet",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_JANET) ENDIF ELSE //Dan H: changed to just create then just animate zped[ped_oldMan1].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN1A,<<1987.231,3052.741,46.214>>) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan1].id,"Old_Man1A",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_OLD_MAN1A) zped[ped_oldMan2].id = create_ped(PEDTYPE_MISSION,IG_OLD_MAN2,<<1987.231,3052.741,46.214>>) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_oldMan2].id,"Old_Man2",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_OLD_MAN2) IF DOES_ENTITY_EXIST(zPED[ped_tao].id) //this ped can be created during the skip IF NOT IS_PED_INJURED(zPED[ped_tao].id) REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_TAOCHENG) ENDIF ELSE REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_tao].id,"tao",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,IG_TAOCHENG) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_taos_translator].id,"Taos_Translator",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,IG_TAOSTRANSLATOR) zped[ped_janet].id = create_ped(PEDTYPE_MISSION,ig_JANET,<<1987.231,3052.741,46.214>>) //added for bug 1709355 REGISTER_ENTITY_FOR_CUTSCENE(zPED[ped_janet].id,"Janet",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,ig_JANET) ENDIF CLEAR_BLOCKED_PLAYER_FOR_LEAD_IN() START_CUTSCENE() REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) CLEAR_AREA_OF_PEDS(<<1991.219604,3054.884277,50.277412>>,87) CLEAR_AREA_OF_PROJECTILES(<<1991.219604,3054.884277,50.277412>>,87) ADD_SCENARIO_BLOCKING_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40.000000>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,40.000000>>) SET_PED_NON_CREATION_AREA(<<1991.219604,3054.884277,50.277412>>-<<40,40,40>>,<<1991.219604,3054.884277,50.277412>>+<<40,40,0.000000>>) add_event(events_resolve_vehicles_at_start) add_event(events_animate_bar) iFrameDelay = 0 stageFlag++ ENDIF BREAK case 1 IF IS_CUTSCENE_PLAYING() IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF stageFlag++ ENDIF BREAK CASE 2 IF IS_CUTSCENE_PLAYING() If iFrameDelay = 0 MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_CHINESE_2) iFrameDelay++ ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan1].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man1A") zped[ped_oldMan1].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Old_Man1A")) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_oldMan2].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Old_Man2") zped[ped_oldMan2].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Old_Man2")) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_tao].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao") zped[ped_tao].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("tao")) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_taos_translator].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator") zped[ped_taos_translator].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Taos_Translator")) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(zped[ped_janet].id) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Janet") zped[ped_janet].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Janet")) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tao") IF NOT IS_PED_INJURED(zped[ped_tao].id) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_tao].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_tao].id,FALSE) int iTempSync iTempSync = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) TASK_SYNCHRONIZED_SCENE (zped[ped_tao].id, iTempSync, "misschinese2_crystalmaze", "2int_Loop_A_TaoCheng", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, RBF_PLAYER_IMPACT ) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Taos_Translator") IF NOT IS_PED_INJURED(zped[ped_taos_translator].id) SET_PED_RELATIONSHIP_GROUP_HASH(zped[ped_taos_translator].id,taorelgroup) SET_PED_CAN_BE_TARGETTED(zped[ped_taos_translator].id,FALSE) int iTempSyncB iTempSyncB = CREATE_SYNCHRONIZED_SCENE(<< 1991.988, 3054.510, 46.215 >>, << -0.000, 0.000, 50.760 >>) TASK_SYNCHRONIZED_SCENE (zped[ped_taos_translator].id, iTempSyncB, "misschinese2_crystalmaze", "2int_Loop_A_taotranslator", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, RBF_PLAYER_IMPACT ) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") vehPlayer = GET_PLAYERS_LAST_VEHICLE() //cprintln(debug_Trevor3,"EXIT PLAYER") IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehPlayer) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehPlayer,<<1995.2018, 3062.1565, 46.0491>>) < 5.0 //IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehPlayer) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehPlayer) //1267215 FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) REMOVE_VEHICLE_ASSET(get_entity_model(vehPlayer)) //ENDIF // ////cprintln(debug_trevor3,"AH?") ELSE IF HAS_ANIM_DICT_LOADED("missrampageintrooutro") SET_ENTITY_COORDS(player_ped_id(),<<1992.1351, 3057.4666, 46.0600>>) SET_ENTITY_HEADING(player_ped_id(),325.4678) TASK_PLAY_ANIM(player_ped_id(),"missrampageintrooutro","trvram_6_1h_run_outro",instant_blend_in,SLOW_blend_out,-1,af_default,0.1) FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_id(),TRUE) ELSE SET_ENTITY_COORDS(player_ped_id(),<<1992.9188, 3057.9063, 46.0567>>) SET_ENTITY_HEADING(player_ped_id(),337.2537) FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK,FALSE,FAUS_DEFAULT) SET_PED_MIN_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_WALK) FORCE_PED_AI_AND_ANIMATION_UPDATE(player_ped_id(),TRUE) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() RESET_ADAPTATION() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) IF IS_SCREEN_FADED_OUT() LOAD_SCENE(<<1992.1351, 3057.4666, 46.0600>>) ENDIF REPLAY_STOP_EVENT() REPLAY_RECORD_BACK_FOR_TIME(0.0, 7.0) STAGE_ENDS() ENDIF BREAK ENDSWITCH ENDPROC proc stage_drive_to_farm() // float fAng // vector vplayer // vplayer = GET_ENTITY_COORDS(player_ped_id()) // fAng = GET_HEADING_FROM_COORDS(<<2458.222656,4986.041504,49.052414>>,vPLayer,true) // IF fAng > 180 fAng -= 360 endif // //cprintln(debug_Trevor3,"ang: ",fAng," rad: ",DEG_TO_RAD(fAng)) checkConditions(COND_GO_TO_FARM_START,COND_GO_TO_FARM_END) ACTION(0,ACT_AUDIO_SCENE_DRIVE_TO_FARMHOUSE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_ANY_CAR) ACTION(1,ACT_REMOVE_BAR_PEDS) ACTION(2,ACT_ANIMATE_CHINESE) action(3,ACT_RADIO_SOUND) action(4,ACT_WHIMPERING) ACTION(5,ACT_LOAD_FRUSTROM) ACTION(6,ACT_MAKE_BAR_PEDS_FLEE) ACTION(7,ACT_BAR_PEDS_LOOK_AT_TREVOR) ACTION(8,ACT_SLOW_DOWN_PLAYER_IN_CHOPPER) ACTION(9,ACT_BLEND_OUT_OF_TREVOR_RAGE) ACTION(10,ACT_LOAD_SOUNDSET) INSTRUCTIONS(0,INS_SPECIAL_ABILITY_BOOST,cIF,COND_INITIAL_INSTRUCTIONS_PLAYED) fail(fail_kill_cheng_or_translator) IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2458.222656,4986.041504,49.052414>>,FALSE) < 107.9 OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2374.441406,4930.563965,34.737843>>, <<2478.099121,5077.488281,60.632458>>, 185.000000,false,false) OR IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<2396.725830,4887.434082,33.853291>>, <<2510.539551,5003.355957,58.011837>>, 158.250000,false,false) IF DOES_BLIP_EXIST(locatesData.LocationBlip) SET_BLIP_ROUTE(locatesData.GPSBlipID, FALSE) ENDIF STAGE_ENDS() ELSE SWITCH stageFlag case 0 add_event(events_trevor_phonecall) add_Event(events_trevor_rants) add_event(events_give_sniper) add_event(events_spawn_house) set_event_flag(events_spawn_house,-20) SET_WANTED_LEVEL_MULTIPLIER(0.0) SET_MAX_WANTED_LEVEL(0) stageFlag++ BREAK case 1 if IS_PLAYER_AT_LOCATION_ANY_MEANS(locatesData,<< 2608.1511, 4949.7539, 39.4 >>,<<9,9,LOCATE_SIZE_HEIGHT>>,TRUE,"FRMCHSE_1",TRUE) REPLAY_RECORD_BACK_FOR_TIME(6.0, 6.0) stageFlag++ CLEAR_MISSION_LOCATE_STUFF(locatesData,true) kill_event(events_trevor_rants) IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_TO_FARMHOUSE") STOP_AUDIO_SCENE("CHI_2_DRIVE_TO_FARMHOUSE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO") STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") ENDIF endif break case 2 IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) VEHICLE_INDEX vehTemp vehTemp = GET_VEHICLE_PED_IS_USING(player_ped_id()) IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehTemp,10.0,2) IF GET_EVENT_FLAG(events_spawn_house) > 2 // SET_MISSION_VEHICLE_GEN_VEHICLE(vehTemp,<<0,0,0>>, 285.2500 ) stageFlag++ ENDIF endif ELSe stageFlag++ ENDIF break case 3 if IS_PLAYER_AT_LOCATION_ANY_MEANS(locatesData,<<2573.6301, 4983.6768, 50.6978>>,<<12,12,LOCATE_SIZE_HEIGHT>>,FALSE,"FRMCHSE_5",TRUE) IF IS_AUDIO_SCENE_ACTIVE("CHI_2_DRIVE_ROCK_RADIO") STOP_AUDIO_SCENE("CHI_2_DRIVE_ROCK_RADIO") ENDIF REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST) STAGE_ENDS() endif IF DOES_BLIP_EXIST(locatesData.LocationBlip) SET_BLIP_ROUTE(locatesData.GPSBlipID, FALSE) ENDIF break ENDSWITCH ENDIF ENDPROC proc stage_farm_cutscene() //ACTION(5,ACT_LOAD_FRUSTROM) SET_VEHICLE_GENERATOR_AREA_OF_INTEREST(<<2004.4471, 3076.8066, 46.6069>>,10) SET_CAR_GENERATORS_CAN_UPDATE_DURING_CUTSCENE(true) IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() and stageFlag > 0 and stageflag < 7 and get_game_timer() > safeSkipTime //SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2570.1631, 4980.8589, 50.5336 >>) stageFlag = 10 cutChangeTime = 0 bCutsceneWasSkipped = true ENDIF IF stageFlag < 10 IF IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_IN() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF IF bcutscenePLaying SET_SRL_TIME(to_float(timera())) ENDIF HIDE_HUD_AND_RADAR_THIS_FRAME() SWITCH stageFlag case 0 IF IS_SRL_LOADED() REQUEST_CUTSCENE("CHI_2_MCS_5") bBlockShooterDialogue = TRUE bCutsceneWasSkipped = FALSE SET_SRL_READAHEAD_TIMES(5, 5, 5, 5) BEGIN_SRL() CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(FALSE) bPlayerOnHill = FALSE bcutscenePLaying = TRUE //for recording, comment out from here... vector vPlayer vPLayer = get_entity_coords(player_ped_id()) float fAng fAng = GET_HEADING_FROM_COORDS(<<2458.222656,4986.041504,49.052414>>,vPLayer,true) IF fAng > 180 fAng -= 360 endif vehicle_index vehTemp IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) vehTemp = GET_VEHICLE_PED_IS_IN(player_ped_id()) ENDIF IF (IS_VEHICLE_DRIVEABLE(vehTemp) AND IS_THIS_MODEL_A_HELI(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp)) OR (IS_VEHICLE_DRIVEABLE(vehTemp) AND IS_THIS_MODEL_A_PLANE(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp)) //in air IF fAng < RAD_TO_DEG(-2.5) AND fAng > RAD_TO_DEG(0.5) stageFlag = 6 //fly south to north settimera(30000) cprintln(debug_Trevor3,"set time b:",timera()) SET_SRL_TIME(30000.0) cutChangeTime = 36000 ELSE stageFlag = 7 settimera(36000) cprintln(debug_Trevor3,"set time c:",timera()) SET_SRL_TIME(36000.0) cutChangeTime = 42000 ENDIF ELSE IF DOES_ENTITY_EXIST(vehTemp) IF IS_VEHICLE_DRIVEABLE(vehTemp) IF NOT (IS_THIS_MODEL_A_HELI(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp)) AND NOT (IS_THIS_MODEL_A_PLANE(get_entity_model(vehTemp)) AND IS_ENTITY_IN_AIR(vehTemp)) SET_VEHICLE_ON_GROUND_PROPERLY(vehTemp) ENDIF ENDIF ENDIF //on hill IF fAng < RAD_TO_DEG(-1.33) AND fAng > RAD_TO_DEG(-1.92) stageFlag = 1 //hill shots settimera(0) cprintln(debug_Trevor3,"set time d:",timera()) SET_SRL_TIME(0.0) cutChangeTime = 6000 ELSE IF fAng < RAD_TO_DEG(0.96) AND fAng > RAD_TO_DEG(-1.33) stageFlag = 2 //back right settimera(6000) cprintln(debug_Trevor3,"set time e:",timera()) SET_SRL_TIME(6000.0) cutChangeTime = 12000 ELSE IF fAng < RAD_TO_DEG(2.29) AND fAng > RAD_TO_DEG(0.96) stageFlag = 3 //orchard settimera(12000) cprintln(debug_Trevor3,"set time f:",timera()) SET_SRL_TIME(12000.0) cutChangeTime = 18000 ELSE IF fAng < RAD_TO_DEG(-2.81) OR fAng > RAD_TO_DEG(2.29) stageFlag = 4 //left settimera(18000) cprintln(debug_Trevor3,"set time g:",timera()) SET_SRL_TIME(18000.0) cutChangeTime = 24000 ELSE //front //-2.81 //-1.92 settimera(24000) cprintln(debug_Trevor3,"set time h:",timera()) SET_SRL_TIME(24000.0) cutChangeTime = 30000 stageFlag = 5 ENDIF ENDIF ENDIF ENDIF ENDIF //to here bForceAnimTimeA = TRUE DESTROY_ALL_CAMS() CLEAR_MISSION_LOCATE_STUFF(locatesData,true) IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) cutscene_player_vehicle = GET_VEHICLE_PED_IS_IN(player_ped_id()) vehicleSpeed = GET_ENTITY_VELOCITY(cutscene_player_vehicle) FREEZE_ENTITY_POSITION(cutscene_player_vehicle,TRUE) SET_ENTITY_VISIBLE(cutscene_player_vehicle,FALSE) cprintln(debug_Trevor3,"CHOPPER FROZEN") ENDIF PLAY_STREAM_FRONTEND() IF stageFlag = 1 bPlayerOnHill = TRUE RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<2559.012207,4958.518066,36.029594>>, <<2585.446777,4993.435059,64.625648>>, 48.00000,<<2594.6506, 4948.1138, 38.0899>>, 283.7287,<<22,22,15>>) IF DOES_ENTITY_EXIST(vehTemp) IF IS_VEHICLE_DRIVEABLE(vehTemp) SET_VEHICLE_ENGINE_ON(vehTemp,FALSE,TRUE) ENDIF ENDIF CLEAR_AREA(<< 2445.1387, 4978.6421, 52.1489 >>,150.0,true,true) CLEAR_AREA(<< 2578.5234, 4982.2837, 51.4416 >>,13.0,true) SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2578.4187, 4981.9014, 50.5870 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(), 49.2184) CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) SET_PED_MIN_MOVE_BLEND_RATIO(player_ped_id(),PEDMOVE_WALK) FORCE_PED_MOTION_STATE(player_ped_id(),MS_ON_FOOT_WALK) sequence_index tempSeq //SET_PED_DUCKING(PLAYER_PED_ID(),TRUE) OPEN_SEQUENCE_TASK(tempSeq) TASK_GO_STRAIGHT_TO_COORD(NULL, << 2570.5430, 4982.0020, 50.6795 >>,PEDMOVE_WALK) /*<< 2570.1631, 4980.8589, 50.5336 >>*/ TASK_ACHIEVE_HEADING(NULL, 88.7065) CLOSE_SEQUENCE_TASK(tempSeq) TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), tempSeq) CLEAR_SEQUENCE_TASK(tempSeq) //BEGIN_SRL() cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2538.6, 4976.9, 50.6>>, <<-1.8, -0.0000, 93.2>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2536.1531, 4976.7002, 50.5267>>, <<-1.8, -0.0000, 93.2>>,6000) SET_CAM_FOV(cam1,34.9) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) ELSE SWITCH stageFlag CASE 2 //back right cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2426.8,5088.3,51.2>>, <<0,0,-169>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2427.8,5087.2,51.2>>, <<0,0,-169.7>>,6000) SET_CAM_FOV(cam1,28.5) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK CASE 3 //orchard cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2326.3,4985.6,51.5>>, <<0,0,-89.1>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2328,4985.4,52.1>>, <<0,0,-89.1>>,6000) SET_CAM_FOV(cam1,28.5) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK CASE 4 //left cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2403.6,4889.7,47.5>>, <<3.4,0,-19.5>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2403.6,4889.7,47.5>>+<<0.8,2.15,0.07>>, <<3.4,0,-19.5>>,6000) SET_CAM_FOV(cam1,29.8) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK CASE 5 //front cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2493.4,4934.8,45.7>>, <<5.2,0,48>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2493.4,4934.8,45.7>>+<<-1,1,0.0>>, <<5.2,0,48>>,6000) SET_CAM_FOV(cam1,28.5) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK CASE 6 //air cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2570.6,4982,151.6>>, <<-47.9,0,88.1>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2487.8,4896.9,151.9>>, <<-47.2,0,28.8>>,15000) SET_CAM_FOV(cam1,28.5) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK CASE 7 //air cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2487.8,4896.9,151.9>>, <<-47.2,0,28.8>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2570.6,4982,151.6>>, <<-47.9,0,88.1>>,15000) SET_CAM_FOV(cam1,28.5) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) BREAK ENDSWITCH ENDIF IF stageFlag < 6 SHAKE_CAM(cam1,"Hand_shake",0.2) ELSE SHAKE_CAM(cam1,"Hand_shake",0.7) ENDIF SET_CAM_ACTIVE(cam1, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) START_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW") DISABLE_CELLPHONE(TRUE) SET_WANTED_LEVEL_MULTIPLIER(0.0) SET_MAX_WANTED_LEVEL(0) CLEAR_PRINTS() CLEAR_HELP() SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_REMOVE_PROJECTILES) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE) safeSkipTime = GET_GAME_TIMER()+1000 int iw REPEAT COUNT_OF(zped) iw IF NOT IS_PED_INJURED(zped[iw].id) STOP_PED_SPEAKING(zped[iw].id,TRUE) ENDIF ENDREPEAT //create temp ped just for cutscene tempPed = CREATE_PED(PEDTYPE_MISSION,A_M_Y_MethHead_01,<< 2460.4495, 4976.9380, 45.5765 >>, 243.4917) GIVE_WEAPON_TO_PED(tempPed,WEAPONTYPE_MICROSMG,INFINITE_AMMO,TRUE) IF NOT IS_PED_INJURED(tempPed) startSeq() TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,TRUE) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2463.0156, 4974.9702, 45.5765 >> , PEDMOVE_WALK, -1, 0.5, ENAV_NO_STOPPING) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2452.8335, 4964.7852, 45.5765 >> , PEDMOVE_WALK, -1, 0.5, ENAV_NO_STOPPING) TASK_PAUSE(NULL, 500) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << 2460.4495, 4976.9380, 45.5765 >> , PEDMOVE_WALK, -1, 0.5) endseq(tempPed,true) ENDIF vehOneil = CREATE_VEHICLE(DUBSTA,<<2479.9612,4990,45.8>>, -5.37) PLAYMUSIC("CHN2_MISSION_START",true,"CHN2_EXPLODE") stageFlag=3 //endif ENDIF break case 3 //shot of binocular guy if timera() > cutChangeTime //IF NOT IS_PED_INJURED(zped[enum_to_int(pos_shooting_bottle_1)].id) //PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(zPED[enum_to_int(pos_shooting_bottle_1)].id, "generic_cheer", "A_M_M_Hillbilly_01_White_mini_02", "SPEECH_PARAMS_FORCE_SHOUTED") //ENDIF DESTROY_ALL_CAMS() cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2445.9443, 4962.9863, 51.4782>>, <<7.9159, -0.0000, 34.5909>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2445.6843, 4963.3677, 51.6659>>, <<3.6033, 0.0000, 34.5909>>,3500) SET_CAM_FOV(cam1,34) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) SHAKE_CAM(cam1,"Hand_shake",0.5) cutChangeTime += 3500 stageFlag++ ENDIF break case 4 //barrel peds if timera() > cutChangeTime DESTROY_ALL_CAMS() cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2465.0703, 4946.6885, 45.3372>>, <<7.1461, 0.0000, 30.9281>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2466.0112, 4947.3770, 45.3509>>, <<7.1461, 0.0000, 32.3761>>,3000) SET_CAM_FOV(cam1,34) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) SHAKE_CAM(cam1,"Hand_shake",0.5) cutChangeTime += 3000 stageFlag++ ENDIF break case 5 //bottle peds bForceAnimTimeB = TRUE if timera() > cutChangeTime bForceAnimTimeB = TRUE DESTROY_ALL_CAMS() cam1 = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) ADD_CAM_SPLINE_NODE(cam1,<<2509.6912, 4971.0239, 44.1325>>, <<7.2578, 0.0000, 88.5226>>,5000) ADD_CAM_SPLINE_NODE(cam1,<<2509.4146, 4971.1631, 44.1674>>, <<6.6554, 0.0000, 89.4229>>,2500) SET_CAM_FOV(cam1,37.34) SET_CAM_SPLINE_SMOOTHING_STYLE(cam1,CAM_SPLINE_NO_SMOOTH) SHAKE_CAM(cam1,"Hand_shake",0.5) cutChangeTime += 2500 stageFlag++ ENDIF break case 6 if timera() > cutChangeTime IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() CLEAR_PRINTS() CLEAR_HELP() SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818) IF IS_VEHICLE_DRIVEABLE(vehOneil) REGISTER_ENTITY_FOR_CUTSCENE(vehOneil,"EXL_2_abandoned_car",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,DUBSTA) ENDIF START_CUTSCENE() bBlockShooterDialogue = FALSE // CLEAR_AREA(<<2493.9172, 4971.3428, 44.1748>>,3.0,true) stageFlag=11 endif endif break case 10 //do fade IF DOES_ENTITY_EXIST(cutscene_player_vehicle) AND IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle) REQUEST_VEHICLE_HIGH_DETAIL_MODEL(cutscene_player_vehicle) ENDIF IF NOT IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_OUT() DO_SCREEN_FADE_OUT(500) ENDIF IF (IS_SCREEN_FADED_OUT() AND NOT IS_CUTSCENE_PLAYING()) OR (IS_CUTSCENE_ACTIVE() and CAN_SET_EXIT_STATE_FOR_CAMERA(TRUE)) stageFlag++ ENDIF break CASE 11 IF DOES_ENTITY_EXIST(cutscene_player_vehicle) AND IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle) REQUEST_VEHICLE_HIGH_DETAIL_MODEL(cutscene_player_vehicle) ENDIF IF (IS_SCREEN_FADED_OUT() AND NOT IS_CUTSCENE_PLAYING()) OR (IS_CUTSCENE_ACTIVE() and CAN_SET_EXIT_STATE_FOR_CAMERA(TRUE)) DESTROY_ALL_CAMS() RENDER_SCRIPT_CAMS(FALSE, FALSE) //add flash back to first person IF IS_PLAYER_IN_FIRST_PERSON_CAMERA() AND NOT bCutsceneWasSkipped ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE) PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET") ENDIF REPLAY_STOP_EVENT() IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) < 15 AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) > 1 SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21) ELSE IF NOT IS_PED_IN_ANY_VEHICLE(player_ped_id()) SET_ENTITY_HEADING(PLAYER_PED_ID(),GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2458.222656,4986.041504,49.052414>>)) ENDIF ENDIF // CLEAR_AREA(<<2493.9172, 4971.3428, 44.1748>>,3.0,true) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3) SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818) //SET_PED_DUCKING(PLAYER_PED_ID(),TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) STOP_STREAM() STOP_AUDIO_SCENE("CHI_2_FARMHOUSE_OVERVIEW") CLEAR_PRINTS() CLEAR_HELP() // DESTROY_ALL_CAMS() // RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) DISABLE_CELLPHONE(FALSE) //SET_GAMEPLAY_CAM_RELATIVE_HEADING() //SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3) //SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR(6.818) IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE) //SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_SNIPERRIFLE, TRUE) IF GET_AMMO_IN_PED_WEAPON(player_ped_id(),WEAPONTYPE_SNIPERRIFLE) < 15 ADD_AMMO_TO_PED(player_ped_id(),WEAPONTYPE_SNIPERRIFLE,50) ENDIF ELSE #if IS_DEBUG_BUILD GIVE_WEAPON_TO_PED(player_ped_id(),WEAPONTYPE_SNIPERRIFLE,70,FALSE) #endif ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) IF DOES_ENTITY_EXIST(tempPed) DELETE_PED(tempPed) ENDIF iBarrels1 = get_ped_with_placement(pos_barrels_1) IF iBarrels1 != -1 //set_ped_Action(get_ped_with_placement(pos_barrels_1),action_spawn) IF NOT IS_PED_INJURED(zped[iBarrels1].id) DELETE_PED(zped[iBarrels1].id) ENDIF IF DOES_ENTITY_EXIST(zped[iBarrels1].obj) DELETE_OBJECT(zped[iBarrels1].obj) ENDIF pedReactionState[iBarrels1].state = STATE_SPAWN zPed[iBarrels1].actionFlag = 0 zPed[iBarrels1].intA = 0 zPed[iBarrels1].action = action_roll_barrels ENDIF iBarrels2 = get_ped_with_placement(pos_barrels_2) IF iBarrels2 != -1 //set_ped_Action(get_ped_with_placement(pos_barrels_1),action_spawn) IF NOT IS_PED_INJURED(zped[iBarrels2].id) DELETE_PED(zped[iBarrels2].id) ENDIF IF DOES_ENTITY_EXIST(zped[iBarrels2].obj) DELETE_OBJECT(zped[iBarrels2].obj) ENDIF pedReactionState[iBarrels2].state = STATE_SPAWN zPed[iBarrels2].actionFlag = 0 zPed[iBarrels2].intA = 0 zPed[iBarrels2].action = action_roll_barrels ENDIF kill_event(events_detach_barrels_from_peds,false) IF NOT IS_PED_INJURED(ped_oneil1) DELETE_PED(ped_oneil1) ENDIF IF NOT IS_PED_INJURED(ped_oneil2) DELETE_PED(ped_oneil2) ENDIF IF IS_VEHICLE_VALID_AND_DRIVEABLE(vehOneil) DELETE_VEHICLE(vehOneil) ENDIf IF DOES_ENTITY_EXIST(obj_cellphone) DELETE_OBJECT(obj_cellphone) ENDIF delete_all_house() iNextPedVariation=0 do_spawn_house() SET_MODEL_AS_NO_LONGER_NEEDED(PROP_PHONE_ING) SET_MODEL_AS_NO_LONGER_NEEDED(DUBSTA) int ij REPEAT COUNT_OF(zped) ij IF NOT IS_PED_INJURED(zped[ij].id) STOP_PED_SPEAKING(zped[ij].id,FALSE) ENDIF ENDREPEAT // IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 2570.5430, 4982.0020, 50.6795 >>) < 15 // SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 2570.5430, 4982.0020, 50.6795 >>) // SET_ENTITY_HEADING(PLAYER_PED_ID(),98.21) // ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6.3) cprintln(debug_trevor3,"heading: ",GET_HEADING_FROM_COORDS(get_entity_coords(player_ped_id()),<<2458.222656,4986.041504,49.052414>>,false)) IF DOES_ENTITY_EXIST(cutscene_player_vehicle) IF IS_VEHICLE_DRIVEABLE(cutscene_player_vehicle) FREEZE_ENTITY_POSITION(cutscene_player_vehicle,FALSE) IF IS_THIS_MODEL_A_PLANE(get_entity_model(cutscene_player_vehicle)) SET_ENTITY_VELOCITY(cutscene_player_vehicle,vehicleSpeed) SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle) ENDIF SET_VEHICLE_ENGINE_ON(cutscene_player_vehicle,true,true) IF IS_THIS_MODEL_A_HELI(get_entity_model(cutscene_player_vehicle)) SET_ENTITY_ROTATION(cutscene_player_vehicle,<<0,0,GET_ENTITY_HEADING(cutscene_player_vehicle)>>) SET_HELI_BLADES_FULL_SPEED(cutscene_player_vehicle) SET_ENTITY_VELOCITY(cutscene_player_vehicle,<<1,1,1>>) SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle) ENDIF IF ( bPlayerOnHill = FALSE ) SET_PED_INTO_VEHICLE(player_ped_id(),cutscene_player_vehicle) ENDIF SET_ENTITY_VISIBLE(cutscene_player_vehicle,TRUE) ENDIF ENDIF SET_ENTITY_VISIBLE(player_ped_id(),TRUE) SPECIAL_ABILITY_FILL_METER(player_id(),true) cprintln(debug_trevor3,"END CUT") END_SRL() IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(TRUE) STAGE_ENDS() ENDIF //ENDIF BREAK ENDSWITCH ENDPROC proc stage_get_to_meth_lab() checkConditions(COND_START_FARM_ASSAULT,COND_END_FARM_ASSAULT) INSTRUCTIONS(0,INS_DESTROY_METH_LAB) INSTRUCTIONS(1,ins_enemy_reacting,cIF,COND_ENEMY_PED_REACTING) INSTRUCTIONS(2,ins_all_enemy_reacting,cIF,COND_ALL_ENEMY_ALERTED) INSTRUCTIONS(3,ins_fast_stealth) INSTRUCTIONS(4,ins_special_ability,cIF,COND_PLAYER_IN_HOUSE) //INSTRUCTIONS(2,INS_QUICK_KILL_HELP,cIF,COND_ALL_ENEMY_ALERTED) action(0,act_stage_prep) //action(0,act_shooting_peds_witness_impact_at_barrels,PLAYOUT_ON_TRIGGER,cIF,COND_BULLET_IMPACTED_BY_BARRELS,cANDNOT,COND_SHOOTING_PED_DEAD) action(1,act_stat_double_kill) action(2,act_MUSIC_start_snipe) action(3,act_create_petrol_can_with_blip) action(4,act_MUSIC_approach_house_or_alert,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_APPROACHING_HOUSE,cOR,COND_ALL_ENEMY_ALERTED) //action(6,act_snipe_cams,PLAYOUT_ON_COND,cIFNOT,COND_ALL_ENEMY_ALERTED,cOR,COND_DEATH_CAM_IN_PROGRESS) //removed due to bug 968106 action(7,act_remove_initial_assets,PLAYOUT_ON_TRIGGER,cIF,COND_ALL_ENEMY_ALERTED) action(8,act_outside_peds_flee,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_ALL_ENEMY_ALERTED) action(9,act_remove_upstairs_peds,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_PLAYER_DOWNSTAIRS) action(10,act_MUSIC_enter_house,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_HOUSE) action(11,act_remaining_peds_flee,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB) action(12,act_window_ped_walks_inside,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_APPROACHING_HOUSE) // action(13,act_put_player_in_action_mode) action(5,act_end_stealth_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB,cOR,COND_ATTACKERS_ALL_DEAD,cOR,COND_ALL_ENEMY_ALERTED) action(6,act_enemy_alerted_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_ALL_ENEMY_ALERTED) action(14,act_player_got_to_basement_sneakily,PLAYOUT_ON_TRIGGER,cIF,COND_CARD_PLAYING_PEDS_STILL_NEAR_TABLE) action(13,act_remove_barrel_peds,PLAYOUT_ON_TRIGGER,cIF,COND_BARREL_ROLL_PEDS_IN_VAN) action(15,act_end_enemy_alerted_audio_Scene,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_METH_LAB,cOR,COND_ATTACKERS_ALL_DEAD) action(16,act_modify_ped_seeing_range) action(17,act_remove_van_peds) action(18,act_audio_scene_in_house,PLAYOUT_ON_TRIGGER) action(19,act_reset_bottle_shooting_ped_accuracy) dialogue(0,dia_whatnow) // dialogue(1,dia_cook_sees_ped_die,cIF,COND_BASEMENT_PED_DEAD_IN_BASEMENT) dialogue(2,dia_trevor_rage_comments,cIF,COND_TREVOR_SEEN,cAndNOT,COND_ATTACKERS_ALL_DEAD) dialogue(3,dia_stop_trevor_getting_to_basement,cIF,COND_PLAYER_IN_HOUSE,cAND,COND_TREVOR_NEAR_BASEMENT) dialogue(4,dia_dont_let_him_down,cIF,COND_TREVOR_NEAR_STAIRS) dialogue(5,dia_hes_in_meth_lab,cIF,COND_TREVOR_AT_STAIRS) dialogue(6,dia_trevor_see_basement_peds_leave,cIF,COND_BASEMENT_PEDS_LEAVING_AND_OBSERVED,cANDNOT,COND_ALL_ENEMY_ALERTED) //dialogue(6,dia_trevor_spotted_outside,cIF,COND_TREVOR_SEEN, cANDNOT, COND_PLAYER_IN_HOUSE) //this is ref'd elsewhere in script as value 6 dialogue(7,dia_find_trevor,cIF,COND_ALL_ENEMY_ALERTED,cANDNOT,COND_TREVOR_SEEN,cANDNOT,COND_PLAYER_IN_HOUSE) dialogue(8,dia_attacking_trevor_outside,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_TREVOR_SEEN,cANDNOT,COND_PLAYER_IN_HOUSE) dialogue(9,dia_trevor_seen_inside_house,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_PLAYER_IN_HOUSE) dialogue(10,dia_attacking_trevor_inside,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_PLAYER_IN_HOUSE) //dialogue(11,DIA_RESPOND_TO_BULLET,cIF,COND_RESPOND_TO_BULLET) dialogue(11,DIA_RESPOND_TO_ALERT) dialogue(12,dia_last_man_standing,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_ONE_ATTACKER_LEFT_OUTSIDE,cANDNOT,COND_PLAYER_IN_HOUSE) dialogue(13,dia_trevor_approaches_house,cIF,COND_PLAYER_APPROACHING_HOUSE,cANDNOT,COND_PLAYER_IN_HOUSE,cAND,COND_ALL_ENEMY_ALERTED) dialogue(14,dia_shooting_Barrels,cIFNOT,COND_PISSING_DIALOGUE_CAN_PLAY) DIALOGUE(15,Dia_TREVOR_SAYS_HARD_WAY) DIALOGUE(16,Dia_stay_in_house,cIF,COND_ALL_ENEMY_ALERTED,cAND,COND_ALL_OUTSIDE_ENEMY_DEAD,cAND,COND_PLAYER_APPROACHING_HOUSE,cANDNOT,COND_PLAYER_IN_HOUSE) fail(FAIL_ABANDONED_FARM,cIF,COND_FAIL_FOR_LEAVING_FARM) fail(FAIL_JERRY_CAN_DESTROYED,cIF,COND_JERRY_CAN_DESTROYED) IF IS_CONDITION_TRUE(COND_PLAYER_IN_METH_LAB) AND IS_CONDITION_TRUE(COND_PLAYER_HAS_PETROL_CAN) STAGE_ENDS(do_petrol_trail) ENDIF ENDPROC proc stage_petrol_trail() SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME() checkConditions(COND_START_PETROL_TRAIL,COND_END_PETROL_TRAIL) instructions(0,INS_PICK_UP_GAS_CAN) instructions(1,INS_USING_GAS_CAN,cIF,COND_PLAYER_HAS_PETROL_CAN) instructions(2,ins_missed_a_bit,cIF,COND_LAST_BLIP_POURED_ON,cANDNOT,COND_GAS_TRAIL_COMPLETE) instructions(3,ins_dont_abandon_farm,cIF,COND_40M_FARM_WARNING) dialogue(0,DIA_PICKED_UP_JERRY_CAN,cIF,COND_PLAYER_HAS_PETROL_CAN) dialogue(1,DIA_POURING_PETROL,cIF,COND_PLAYER_POURING_GAS,cANDNOT,COND_GAS_TRAIL_COMPLETE) dialogue(2,DIA_MISSED_A_BIT) dialogue(3,DIA_LIGHT_FUEL,cIF,COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) DIALOGUE_ON_DIALOGUE(4,DIA_FUEL_BURN,3,DIA_LIGHT_FUEL) action(0,ACT_SPAWN_BLAZER) action(1,ACT_PREP_PETROL_POUR) action(2,ACT_CONTROL_PETROL_BLIPS,PLAYOUT_ON_COND,cIFNOT,COND_GAS_TRAIL_COMPLETE) action(3,ACT_PETROL_ASSIST_ROUTE) action(4,ACT_FUDGE_RADAR_ZOOM,PLAYOUT_ON_COND,cIFNOT,COND_GAS_TRAIL_COMPLETE) action(5,ACT_MUSIC_PICKS_UP_JERRY_CAM,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_HAS_PETROL_CAN) action(6,ACT_MUSIC_TRAIL_IGNITED,PLAYOUT_ON_TRIGGER,cIF,COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) action(7,ACT_AUDIO_SCENE_WITH_CAN,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_HAS_PETROL_CAN) action(8,ACT_PREP_EXPLOSION_AUDIO) action(9,ACT_REMOVE_SOME_ASSETS) action(10,ACT_BOMB_IN_BASEMENT,PLAYOUT_ON_TRIGGER,cIF,COND_EXPLOSION_IN_BASEMENT) action(11,ACT_STAT_POUR_GAS) action(12,ACT_FUDGE_GAS_AMMO) //13 taken below fail(FAIL_OUT_OF_GAS,cIF,COND_OUT_OF_GAS,cANDNOT,COND_GAS_TRAIL_COMPLETE) fail(FAIL_ABANDONED_FARM,cIF,COND_60M_FARM_FAIL) FAIL(FAIL_GAS_TRAIL_NOT_COMPLETE,cIF,COND_GAS_TRAIL_IGNITED_INCORRECTLY) //this was commented out but not sure why IF CUTSCENE_FIRST_SHOT = SHOT_NONE IF IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) AND NOT IS_CONDITION_TRUE(COND_EXPLOSION_IN_BASEMENT) CUTSCENE_FIRST_SHOT = SHOT_NORMAL ENDIF IF IS_CONDITION_TRUE(COND_GAS_IGNITED_IN_HOUSE_WILL_BURN_OK) AND NOT IS_CONDITION_TRUE(COND_EXPLOSION_IN_BASEMENT) bSneakyPass = TRUE CUTSCENE_FIRST_SHOT = SHOT_BASEMENT ENDIF IF GET_ACTION_FLAG(10,ACT_BOMB_IN_BASEMENT) = 2 //player sticky bombed basement most likely CUTSCENE_FIRST_SHOT = SHOT_HOUSE_EXPLOSION bSneakyPass = TRUE ENDIF ENDIF action(13,ACT_LOAD_END_CUT_FRUSTROM) IF ((IS_CONDITION_TRUE(COND_GAS_TRAIL_IGNITED_FROM_OUTSIDE) AND IS_CONDITION_TRUE(COND_GAS_TRAIL_REACHED_DOORWAY)) OR bSneakyPass) AND GET_ACTION_FLAG(13,ACT_LOAD_END_CUT_FRUSTROM) = 10 AND NOT IS_CONV_ROOT_PLAYING("CHI2_light") FAIL(FAIL_GAS_TRAIL_IGNITED_EARLY,cIF,COND_TREVOR_INSIDE_HOUSE) IF DOES_BLIP_EXIST(missionBlip) REMOVE_BLIP(missionblip) ENDIF REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST) HIDE_GAS_TRAIL() STAGE_ENDS() ENDIF endproc int iLoadFXflag FUNC BOOL LOAD_FX_MODELS() SWITCH iLoadFXflag CASE 0 REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT001) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT002) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT003) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT004) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT005) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT006) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT007) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT008) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT009) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT010) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT011) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT012) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT013) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT014) REQUEST_MODEL(CS2_03_FMHSE_VFX_PARENT015) iLoadFXflag++ BREAK CASE 1 IF HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT001) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT002) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT003) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT004) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT005) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT006) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT007) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT008) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT009) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT010) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT011) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT012) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT013) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT014) AND HAS_MODEL_LOADED(CS2_03_FMHSE_VFX_PARENT015) RETURN TRUE ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC proc stage_explosion_cut() //FUDGE_FIRE_TRAIL() SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME() IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() and stageFlag > 0 and get_game_timer() > safeSkipTime WHILE NOT IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_OUT(1000) SAFEWAIT(28) ENDWHILE iLoadFXflag = 0 WHILE NOT LOAD_FX_MODELS() safewait(32322) ENDWHILE SET_ENTITY_COORDS(PLAYER_PED_ID(), << 2474.9697, 4946.0474, 44.0297 >>) SET_ENTITY_HEADING(PLAYER_PED_ID(), 230.6937) SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE) SET_PED_USING_ACTION_MODE(player_ped_id(),FALSE) SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,true) FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) DESTROY_ALL_CAMS() RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_PLAYER_CONTROL(player_id(),true) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH() CLEAR_PRINTS() DEACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE") //#if IS_DEBUG_BUILD IF NOT IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) #endif //STAGE_ENDS() //#if IS_DEBUG_BUILD endif #endif rfThisRayfire = GET_RAYFIRE_MAP_OBJECT(<<2457.15, 4968.79, 48.677>>, 45, "DES_FarmHs") // IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfThisRayfire) //SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING) //endif kill_event(events_house_explodes_rayfire) cutChangeTime=0 icamflag=icamflag icamflag=99 stageFlag = 99 iCurrentCamShot=3 cutDurationTime = 10000 ////cprintln(DEBUG_TREVOR3,"HIDE MODEL GLASS") CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_ret_fhglassfrm,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGLASSFRMSML,true) CREATE_MODEL_HIDE(<<2457.15, 4968.79, 48.677>>, 100,V_RET_FHGlassairfrm,false) STOP_STREAM() REPLAY_STOP_EVENT() bCutsceneWasSkipped = TRUE ENDIF HIDE_HUD_AND_RADAR_THIS_FRAME() SWITCH stageFlag case 0 LOAD_FX_MODELS() bCutsceneWasSkipped = FALSE //reset basement stair gas trail coords so flame will appear higher up //nodes 49 - 55 raised by 30cm int iNode for iNode = 49 to 55 CPRINTLN(debug_trevor3,"iNode b = ",iNode) gasTrail[iNode].coord += <<0,0,0.6>> ENDFOR IF IS_AUDIO_SCENE_ACTIVE("CHI_2_POUR_GAS") STOP_AUDIO_SCENE("CHI_2_POUR_GAS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("CHI_2_SHOOT_GAS") STOP_AUDIO_SCENE("CHI_2_SHOOT_GAS") ENDIF START_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE") //REQUEST_PTFX_ASSET() safeSkipTime = GET_GAME_TIMER() + 1000 CLEAR_AREA(<<2570.5300, 4982.0571, 50.6819>>,100,true) //to remove a car that player may have left in the cutscene trigger zone SET_PLAYER_CONTROL(PLAYER_ID(),false) SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_UNARMED,true) PURGE_CONVERSATIONS(FALSE) bLastConvoWithoutSubtitles = FALSE PURGE_CONVERSATIONS(TRUE) CLEAR_PRINTS() RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2467.774902,4954.414551,42.878033>>, <<2477.088867,4945.079102,46.166538>>, 4.062500,<<2486.8542, 4939.0859, 43.2578>>,230) IF IS_PED_IN_ANY_VEHICLE(player_ped_id()) //vehicle_index vehTemp //vehTemp = GET_VEHICLE_PED_IS_USING(player_ped_id()) //SET_ENTITY_AS_MISSION_ENTITY(vehTemp) //SET_ENTITY_COORDS(vehTemp,<<2471.9463, 4949.7852, 44.1375>>) //SET_ENTITY_HEADING(vehTemp,222.7150) SET_ENTITY_COORDS(player_ped_id(),<<2455.9414, 4952.8013, 44.1120>>) //SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTemp) ENDIF // add_event(events_Trevor_walks_in_final_cutscene) // add_event(events_house_explodes_rayfire) // add_event(events_play_audio_stream) SET_TIME_SCALE(1.0) //clean out memory REMOVE_ANIM_DICT("misschinese2_barrelRoll") REMOVE_ANIM_SET("move_m@gangster@var_e") REMOVE_ANIM_SET("move_m@gangster@var_f") REMOVE_ANIM_SET("move_m@gangster@generic") REMOVE_ANIM_DICT("misschinese2_bank5") REMOVE_ANIM_DICT("misschinese2_bank1") REMOVE_ANIM_DICT("reaction@male_stand@big_variations@b") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@left") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@right") REMOVE_ANIM_DICT("reaction@male_stand@big_intro@backward") SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_Hillbilly_02) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_MethHead_01) SET_MODEL_AS_NO_LONGER_NEEDED(Prop_CS_Fertilizer) SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_BEER_BOT_01) SET_PED_STEALTH_MOVEMENT(player_ped_id(),FALSE) int ij repeat count_of(zped) iJ if DOES_ENTITY_EXIST(zped[ij].id) DELETE_PED(zped[ij].id) endif IF DOES_ENTITY_EXIST(zped[ij].obj) DELETE_OBJECT(zped[ij].obj) ENDIF ENDREPEAT stageFlag++ break case 1 IF IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_IN() DO_SCREEN_FADE_IN(1000) ENDIF stageFlag++ break ENDSWITCH //--------------------------- CUTSCENE EDITOR OUTPUT ----------------------------- #if IS_DEBUG_BUILD IF NOT DOES_WIDGET_GROUP_EXIST(cutsceneWidget) int iWidget TEXT_LABEL_15 txtlbs SET_CURRENT_WIDGET_GROUP(widget_debug) cutsceneWidget = start_widget_group("Final Cutscene Edit") add_widget_bool("Edit Cutscene",editCutscene) add_widget_bool("Reset Cutscene",resetCutscene) add_widget_bool("Output Data",bOutputCut) REPEAT COUNT_OF(camShot) iWidget txtlbs = "Cut " txtlbs += iWidget start_widget_group(txtlbs) add_widget_bool("position cam start",bSetCamA[iWidget]) add_widget_bool("Position can End",bSetCamB[iWidget]) ADD_WIDGET_FLOAt_SLIDER("Cut Duration",camShot[iWidget].totalDuration,0,10000,100) ADD_WIDGET_FLOAT_SLIDER("Cam pan Duration",camShot[iWidget].camDuration,0,10000,100) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("Linear") ADD_TO_WIDGET_COMBO("Sin accel decel") ADD_TO_WIDGET_COMBO("Accel") ADD_TO_WIDGET_COMBO("Decel") STOP_WIDGET_COMBO("Pan type", camShot[iWidget].camPanType) ADD_WIDGET_INT_SLIDER("Move fire to node",camShot[iWidget].flameNode,-1,MAX_TRAIL_POINTS,1) STOP_WIDGET_GROUP() ENDREPEAT REPEAT COUNT_OF(CutEvent) iWidget start_widget_group(CutEvent[iWidget].name) ADD_WIDGET_INT_SLIDER("Trigger shot",CutEvent[iWidget].triggerShot,0,3,1) ADD_WIDGET_FLOAT_SLIDER("Trigger time",CutEvent[iWidget].triggerTime,0,10000.0,100.0) IF iWidget = 3 ADD_WIDGET_FLOAT_SLIDER("Cam shake",fShakeValue,0,1.0,0.01) ENDIF STOP_WIDGET_GROUP() ENDREPEAT STOP_WIDGET_GROUP() CLEAR_CURRENT_WIDGET_GROUP(widget_debug) ENDIF #endif int iCams IF bOutputCut bOutputCut=FALSE REPEAT COUNT_OF(camShot) icams PRINTLN("camShot[",iCams,"].camStartPos = ",camShot[iCams].camStartPos) PRINTLN("camShot[",iCams,"].camStartRot = ",camShot[iCams].camStartRot) PRINTLN("camShot[",iCams,"].camStartFOV = ",camShot[iCams].camStartFOV) PRINTLN("camShot[",iCams,"].camEndPos = ",camShot[iCams].camEndPos) PRINTLN("camShot[",iCams,"].camEndRot = ",camShot[iCams].camEndRot) PRINTLN("camShot[",iCams,"].camEndFOV = ",camShot[iCams].camEndFOV) PRINTLN("camShot[",iCams,"].camDuration = ",camShot[iCams].camDuration) PRINTLN("camShot[",iCams,"].totalDuration = ",camShot[iCams].totalDuration) PRINTLN("camShot[",iCams,"].camPanType = ",camShot[iCams].camPanType) PRINTLN("camShot[",iCams,"].flameNode = ",camShot[iCams].flameNode) ENDREPEAT REPEAT COUNT_OF(CutEvent) icams PRINTLN("CutEvent[",iCams,"].triggerShot = ",CutEvent[iCams].triggerShot) PRINTLN("CutEvent[",iCams,"].triggerTime = ",CutEvent[iCams].triggerTime) ENDREPEAT ENDIF REPEAT COUNT_OF(camShot) iCams If bSetCamA[iCams] bSetCamA[iCams]=FALSE camShot[iCams].camStartPos = GET_CAM_COORD(GET_RENDERING_CAM()) camShot[iCams].camStartRot = GET_CAM_ROT(GET_RENDERING_CAM()) camShot[iCams].camStartFOV = GET_CAM_FOV(GET_RENDERING_CAM()) ENDIF If bSetCamB[iCams] bSetCamB[iCams]=FALSE camShot[iCams].camEndPos = GET_CAM_COORD(GET_RENDERING_CAM()) camShot[iCams].camEndRot = GET_CAM_ROT(GET_RENDERING_CAM()) camShot[iCams].camEndFOV = GET_CAM_FOV(GET_RENDERING_CAM()) ENDIF ENDREPEAT IF resetCutscene resetCutscene = FALSE cutsceneRunning = FALSE bRayfireTriggered = FALSE CLEAR_AREA(<<2431.0969, 4967.0430, 41.3476>>,20,TRUE) CLEANUP_GAS_TRAILS() ENDIF IF NOT cutsceneRunning IF IS_SRL_LOADED() cprintln(debug_trevor3,"BEGIN_SRL") SET_SRL_READAHEAD_TIMES(5, 5, 5, 5) BEGIN_SRL() iCurrentCamShot = -1 DESTROY_ALL_CAMS() SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) REQUEST_ANIM_DICT("misschinese2_crystalmaze") cutsceneRunning = true CutEvent[0].triggered = FALSE CutEvent[1].triggered = FALSE CutEvent[2].triggered = FALSE CutEvent[3].triggered = FALSE CutEvent[0].flag = 0 CutEvent[0].timer = 0 CutEvent[1].flag = 0 CutEvent[1].timer = 0 CutEvent[2].flag = 0 CutEvent[2].timer = 0 CutEvent[3].flag = 0 CutEvent[3].timer = 0 add_event(events_house_explodes_rayfire) PLAY_STREAM_FRONTEND() cprintln(debug_trevor3,"PLAY EXPLOSION SOUNDS") REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) //added for NG SWITCH CUTSCENE_FIRST_SHOT CASE SHOT_NORMAL SETTIMERA(0) BREAK CASE SHOT_HOUSE_EXPLOSION CutEvent[0].triggered = TRUE CutEvent[1].triggered = TRUE SETTIMERA(10900) iCurrentCamShot=2 cutDurationTime = 10000 BREAK CASE SHOT_BASEMENT CutEvent[0].triggered = TRUE SETTIMERA(6400) iCurrentCamShot=1 cutDurationTime = 10000 BREAK ENDSWITCH basementflame = 0 ENDIF ENDIF IF cutsceneRunning cprintln(debug_trevor3,"TIMER = ",to_float(timera())) SET_SRL_TIME(to_float(timera())) ENDIF IF cutsceneRunning cutDurationTime += TIMESTEP() cprintln(debug_Trevor3,"Fire = ",bUsePetrolFlameFX) ////cprintln(debug_trevor3,"start: ",cutDurationTime," iCurrentCamShot: ",iCurrentCamShot) IF iCurrentCamShot = -1 OR (iCurrentCamShot != -1 AND iCurrentCamShot < 4 AND cutDurationTime > (camShot[iCurrentCamShot].totalDuration / 1000.0)) iCurrentCamShot++ IF iCurrentCamShot = 3 IF HAS_ANIM_DICT_LOADED("misschinese2_crystalmaze") cam1 = CREATE_CAMERA(CAMTYPE_ANIMATED,true) iCamSync = CREATE_SYNCHRONIZED_SCENE(<<2452.914,4962.096,45.585>>,<<0,0,45>>) PLAY_SYNCHRONIZED_CAM_ANIM(cam1,icamsync,"trevor_barn_walk_cam","misschinese2_crystalmaze") IF NOT IS_PED_INJURED(player_ped_id()) TASK_SYNCHRONIZED_SCENE(player_ped_id(),iCamSync,"misschinese2_crystalmaze","trevor_barn_walk",INSTANT_BLEND_IN,NORMAL_BLEND_OUT) ENDIF RENDER_SCRIPT_CAMS(TRUE, FALSE) CLEANUP_GAS_TRAILS() //remove all script fires SET_GAME_PAUSES_FOR_STREAMING(TRUE) // bug 2008155 cutDurationTime = 0 ENDIF ELIF iCurrentCamShot < 4 ////cprintln(debug_trevor3,"next cam shot") DESTROY_ALL_CAMS() cam1 = CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", camShot[iCurrentCamShot].camStartPos,camShot[iCurrentCamShot].camStartRot, camShot[iCurrentCamShot].camStartFOV, TRUE) SET_CAM_PARAMS(cam1, camShot[iCurrentCamShot].camEndPos,camShot[iCurrentCamShot].camEndRot, camShot[iCurrentCamShot].camEndFOV, FLOOR(camShot[iCurrentCamShot].camDuration), int_to_enum(CAMERA_GRAPH_TYPE,camShot[iCurrentCamShot].camPanType)) RENDER_SCRIPT_CAMS(TRUE, FALSE) IF iCurrentCamShot < 2 SET_PETROL_FLAME_TO_NODE(camShot[iCurrentCamShot].flameNode,TRUE,TRUE) ELSE SET_PETROL_FLAME_TO_NODE(camShot[iCurrentCamShot].flameNode,TRUE,FALSE) ENDIF cutDurationTime = 0 ELSE IF NOT editCutscene DESTROY_ALL_CAMS() RENDER_SCRIPT_CAMS(FALSE, FALSE) IF IS_PLAYER_IN_FIRST_PERSON_CAMERA() AND NOT bCutsceneWasSkipped ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE) PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET") ENDIF SET_PLAYER_CONTROL(player_id(),true) SET_GAME_PAUSES_FOR_STREAMING(FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH() SET_MULTIHEAD_SAFE(FALSE) STOP_AUDIO_SCENE("CHI_2_GAS_TRAIL_FIRE") //g_eFarmhouseFireState = FARMHOUSE_FIRE_BURNING SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire, RFMO_STATE_ENDING) SET_TIME_SCALE(1.0) cprintln(debug_trevor3,"END_SRL()") END_SRL() IF IS_SCREEN_FADED_OUT() WHILE GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfThisRayfire) != RFMO_STATE_END SAFEWAIT(29) ENDWHILE DO_SCREEN_FADE_IN(1000) ENDIF cprintln(debug_trevor3,"END_stage") REPLAY_STOP_EVENT() STAGE_ENDS(end_mission) ENDIF ENDIF ENDIF ////cprintln(debug_trevor3,"end: ",cutDurationTime," iCurrentCamShot: ",iCurrentCamShot) int iEvent REPEAT COUNT_OF(CutEvent) iEvent IF NOT cutEvent[iEvent].triggered IF iCurrentCamShot = cutEvent[iEvent].triggerShot AND cutDurationTime > (cutEvent[iEvent].triggerTime / 1000.0) SWITCH iEvent CASE 0 SWITCH cutEvent[iEvent].flag CASE 0 //table flames basementFlame = 0 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD(basementFlames[basementFlame],false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag++ ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+1])/2.0,false) basementFlame++ IF basementFlame >= 12 cutEvent[iEvent].flag = 10 cutEvent[iEvent].triggered = TRUE ELSe cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag=2 ENDIF ENDIF BREAK CASE 2 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD(basementFlames[basementFlame],false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 IF basementFlame = 2 cutEvent[iEvent].flag=3 ELSE cutEvent[iEvent].flag=1 ENDIF ENDIF BREAK CASE 3 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+1])/2.0,false) ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+2])/2.0,false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag=4 basementFlame=3 ENDIF BREAK CASE 4 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD(basementFlames[basementFlame],false) ADD_FLAME_AT_COORD(basementFlames[basementFlame+1],false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag=5 ENDIF BREAK CASE 5 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD((basementFlames[basementFlame] + basementFlames[basementFlame+2])/2.0,false) ADD_FLAME_AT_COORD((basementFlames[basementFlame+1] + basementFlames[basementFlame+3])/2.0,false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag=6 basementFlame=5 ENDIF BREAK CASE 6 IF GET_GAME_TIMER() > cutEvent[iEvent].timer ADD_FLAME_AT_COORD(basementFlames[basementFlame],false) ADD_FLAME_AT_COORD(basementFlames[basementFlame+1],false) cutEvent[iEvent].timer = GET_GAME_TIMER() + 200 cutEvent[iEvent].flag=2 basementFlame = 7 ENDIF BREAK ENDSWITCH BREAK CASE 1 //table explosino ADD_EXPLOSION(<<2432.5339, 4968.3828, 42.2389>>,EXP_TAG_ROCKET) cutEvent[iEvent].triggered = TRUE BREAK CASE 2 //house rayfire bRayfireTriggered = TRUE cutEvent[iEvent].triggered = TRUE BREAK CASE 3 //cam explosion shake IF DOES_CAM_EXIST(cam1) SHAKE_CAM(cam1, "LARGE_EXPLOSION_SHAKE", fShakeValue) SET_CAM_MOTION_BLUR_STRENGTH(cam1, 0.1000) cutEvent[iEvent].triggered = TRUE ENDIF BREAK CASE 4 SWITCH cutEvent[iEvent].flag CASE 0 SET_ENTITY_COORDS(PLAYER_PED_ID(), <<2473.2080, 4947.6245, 44.0664>>) SET_ENTITY_HEADING(PLAYER_PED_ID(), 223.4930) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7) //TASK_FOLLOW_NAV_MESH_TO_COORD(player_ped_id(),<<2476.3506, 4945.6670, 43.9052>>,pedmove_Walk) IF IS_PLAYER_IN_FIRST_PERSON_CAMERA() FORCE_PED_MOTION_STATE(player_ped_id(), MS_AIMING, true, FAUS_DEFAULT ) SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 3000) ELSE FORCE_PED_MOTION_STATE(player_ped_id(), MS_ON_FOOT_WALK, true, FAUS_DEFAULT ) SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 0500) ENDIF //cutEvent[iEvent].triggered = TRUE cutEvent[iEvent].flag++ cprintln(Debug_Trevor3,"Force walk triggered b") BREAK CASE 1 //FORCE_PED_MOTION_STATE(player_ped_id(), MS_AIMING, true, FAUS_DEFAULT ) //SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVEBLENDRATIO_WALK, 0500) BREAK ENDSWITCH BREAK CASE 5 SWITCH cutEvent[iEvent].flag CASE 0 fSlowMoPhase = 1.0 cutEvent[iEvent].flag++ cutEvent[iEvent].timer = GET_GAME_TIMER() + 1300 ACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE") BREAK CASE 1 fSlowMoPhase -= timestep() * 1.0 IF fSlowMoPhase < 0.2 fSlowMoPhase = 0.2 ENDIF SET_TIME_SCALE(fSlowMoPhase) IF GET_GAME_TIMER() > cutEvent[iEvent].timer cutEvent[iEvent].flag++ ENDIF BREAK CASE 2 fSlowMoPhase += timestep() * 1.0 IF fSlowMoPhase > 1.0 fSlowMoPhase = 1.0 cutEvent[iEvent].flag++ cutEvent[iEvent].triggered = TRUE ENDIF DEACTIVATE_AUDIO_SLOWMO_MODE("SLOW_MO_METH_HOUSE_RAYFIRE") SET_TIME_SCALE(fSlowMoPhase) BREAK ENDSWITCH BREAK ENDSWITCH ENDIF ENDIF ENDREPEAT endif endproc proc stage_end_mission() checkConditions(COND_FARM_LEAVE_START,COND_FARM_LEAVE_END) //action(0,ACT_GET_WANTED_LEVEL,PLAYOUT_ON_TRIGGER,cIF,COND_GET_WANTED_LEVEL) action(1,ACT_CHANGE_BUILDING_STATE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_300_FROM_FARM) action(2,ACT_STOP_MUSIC) action(3,ACT_FIRE_AUDIO) action(4,ACT_ENABLE_TAXI) action(5,ACT_RESET_STUFF) DIALOGUE(0,DIA_BOOM) INSTRUCTIONS(0,INS_GET_CLEAR_OF_FARM) //INSTRUCTIONS(1,INS_LOSE_WANTED_LEVEL,cIF,COND_BUILDING_STATE_SWAPPED,cAND,COND_GOT_WANTED_LEVEL) CONTROL_BURN_PLAYER() IF IS_ACTION_COMPLETE(1,ACT_CHANGE_BUILDING_STATE) // AND IS_CONDITION_FALSE(COND_GOT_WANTED_LEVEL) Mission_Passed() ENDIF endproc PROC conrol_mission() mission_stage_flag lastMissionStage = missionStage //track if a stage has changed SET_REPLAY_STAGE() SWITCH missionStage case init_mission stage_init() BREAK case intro_cut stage_intro_cut() BREAK case drive_to_farm stage_drive_to_farm() break case farm_cutscene stage_farm_cutscene() BREAK case snipe_from_hill stage_get_to_meth_lab() BREAK case get_to_house stage_get_to_meth_lab() break case inside_house stage_get_to_meth_lab() break case do_petrol_trail stage_petrol_trail() break case explosion_cut stage_explosion_cut() break case end_mission stage_end_mission() break ENDSWITCH if missionStage != lastMissionStage stageFlag = 0 ENDIF IF bFailMission Mission_Failed() endif ENDPROC proc updateAIBlips() int i IF missionStage >= snipe_from_hill REPEAt count_of(zped) i IF DOES_ENTITY_EXIST(zped[i].id) IF NOT zped[i].registeredKilled IF IS_PED_INJURED(zped[i].id) zped[i].registeredKilled = TRUE INFORM_MISSION_STATS_OF_INCREMENT(CHI2_KILLS) ENDIF ENDIF IF GET_PED_RELATIONSHIP_GROUP_HASH(zped[i].id) = HASH_FOE_GROUP UPDATE_AI_PED_BLIP(zped[i].id, zped[i].aiBlip,-1,null)//,IS_PLAYER_USING_TREVORS_SPECIAL_ABILITY()) ENDIF ELSE IF zped[i].id != null CLEANUP_AI_PED_BLIP(zPED[i].aiBlip) zped[i].id = null ENDIF ENDIF endrepeat ENDIF endproc SCRIPT SET_MISSION_FLAG(TRUE) IF HAS_FORCE_CLEANUP_OCCURRED() Mission_Flow_Mission_Force_Cleanup() MISSION_CLEANUP(CLEANUP_FAIL_DEATH) ENDIF fireNodeJumpTime = 160.0 WHILE (TRUE) IF NOT IS_PED_INJURED(player_peD_id()) //never used to have to do this. Something's fucked. conrol_mission() updateAIBLips() #if IS_DEBUG_BUILD manage_debug() #ENDIF IF missionStage >= do_petrol_trail CONTROL_GAS_TRAILS(#if is_debug_build widget_debug #endif) ENDIF CONTROL_CONVERSATION_SUBTITLES() manage_peds() manage_events() control_music() INTERIOR_PINNING() REPLAY_CHECK_FOR_EVENT_THIS_FRAME("m_Chinese2") ENDIF convAlreadyCalledThisFrame=FALSE #if is_Debug_build pedReactionsDebug(pedReactionState,widget_debug) #endif WAIT(0) endwhile ENDSCRIPT