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

16854 lines
503 KiB
Python
Executable File

//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
CONST_INT TOTAL_NUMBER_OF_TRAFFIC_CARS 80
CONST_INT TOTAL_NUMBER_OF_PARKED_CARS 4
CONST_INT TOTAL_NUMBER_OF_SET_PIECE_CARS 95 //12
CONST_INT MAX_NUMBER_OF_TRAFFIC_CARS_PLAYING_BACK 13 //6 12
CONST_INT MAX_NUMBER_OF_SET_PIECE_CARS_PLAYING_BACK 20 //12
CONST_INT MAX_NUMBER_OF_PARKED_CARS_PLAYING_BACK 4
const_int MAX_SKIP_MENU_LENGTH 6
const_int max_number_of_cylinders 5
const_int total_number_of_ambient_peds 26
USING "rage_builtins.sch"
USING "globals.sch"
using "script_heist.sch"
USING "flow_public_core_override.sch"
using "commands_misc.sch"
using "commands_pad.sch"
using "commands_script.sch"
using "commands_player.sch"
using "commands_streaming.sch"
using "commands_vehicle.sch"
using "commands_camera.sch"
using "commands_path.sch"
using "commands_fire.sch"
using "commands_graphics.sch"
using "commands_object.sch"
using "commands_misc.sch"
using "commands_recording.sch"
using "script_player.sch"
using "script_debug.sch"
using "streamed_scripts.sch"
using "model_enums.sch"
using "cellphone_public.sch"
using "selector_public.sch"
using "dialogue_public.sch"
using "player_ped_public.sch"
using "chase_hint_cam.sch"
using "locates_public.sch"
using "script_blips.sch"
using "traffic.sch"
using "select_mission_stage.sch"
using "replay_public.sch"
using "commands_cutscene.sch"
using "mission_stat_public.sch"
using "cutscene_public.sch"
using "shop_public.sch"
USING "CompletionPercentage_public.sch"
using "vehicle_gen_public.sch"
using "timelapse.sch"
using "clearmissionarea.sch"
using "taxi_functions.sch"
using "emergency_call.sch"
using "player_scene_private.sch"
using "achievement_public.sch"
using "cheat_controller_public.sch"
struct ped_structure
ped_index ped
model_names model
blip_index blip
vector pos
vector run_to_pos
float heading
int health
int scene_id
bool damaged_by_player
bool allow_body_armour
bool created
weapon_type weapon
text_label name
endstruct
struct vehicle_struct
vehicle_index veh
model_names model
blip_index blip
vector pos
float heading
float speed
float skip_time
int health
float engine_health
float petrol_tank_health
int colour
int recording_number
bool been_created
endstruct
struct object_struct
object_index obj
blip_index blip
model_names model
vector pos
vector offset
vector offset_pos_2
vector rot
vector offset_rot
float heading
float scale
float health
string room_name
int time
bool been_created
endstruct
struct quaternion
float x
float y
float z
float w
endstruct
enum main_mission_flow
intro_mocap = 0,
trevor_leadin,
switching_into_michael,
get_to_the_stadium,
play_stadium_mocap,
run_after_lazlow,
stadium_cutscene,
uber_chase,
storm_drain_cutscene,
play_final_mocap,
record_uber_chase,
train_crash_cutscene_test_bed,
detach_trailer_cutscene_test_bed,
record_setpiece_cars,
load_stage_selector_assets,
mission_failed_stage
endenum
enum ambient_ped_enum
get_into_position = 0,
talk_to_partner_status,
walk_to_coords_status,
look_at_poster,
look_at_poster_status,
play_reaction_anim_during_cutscene,
play_reaction_chasing_lazlow,
flee,
do_nothing
endenum
ambient_ped_enum ambient_ped_status[total_number_of_ambient_peds]
main_mission_flow mission_flow = intro_mocap
main_mission_flow cached_mission_flow
vehicle_struct michaels_car
vehicle_struct truck
vehicle_struct trailer
vehicle_struct lazlows_car
vehicle_struct train[3]
vehicle_struct cylinder_truck
vehicle_struct parked_truck[3]
vehicle_struct parked_trailer[3]
vehicle_struct amandas_car
ped_structure lazlow
ped_structure michael
ped_structure tracey
ped_structure trevor
ped_structure ambient_ped[total_number_of_ambient_peds]
ped_structure camera_crew[2]
ped_structure truck_driver
ped_structure groopie
ped_structure security
ped_structure ambient_driver
object_struct cylinder[max_number_of_cylinders]
object_struct micro_phone
object_struct video_camera
object_struct clip_board
object_struct lazlows_jeans
SELECTOR_PED_STRUCT selector_ped
bool stop_mission_fail_checks = false
bool police_car_created = false
bool lazlow_chase_cam_active = false
bool help_text_on = false
bool reminder_help_played = false
bool train_cutscene_playing = false
bool trailer_cutscene_playing = false
//bool storm_drain_cutscene_playing = false
//bool waypoint_playback_paused = false
//bool mocap_requested = false
//bool train_crash_cutscene_fail = false
bool resume_lower_priority_conversation = false
//bool secondary_audio = false
bool force_buddy_to_run = false
bool apply_fail_wanted_level = false
bool player_arrived_in_a_vehicle = false
bool allow_switch_to_contiune = false
bool taxi_drop_off_set_for_get_to_the_stadium = false
bool trigger_switch_effect_to_trevor = false
bool trevors_vehicle_set_as_vehicle_gen = false
bool deactivate_truck_blipping_system = false
bool new_load_scene_activated_for_michaels_house = false
int original_time = 0
int truck_wanted_status = 0
int uber_speed_status = 0
//int cam_help_time = 0
int train_system_status
int cylinder_object_status[max_number_of_cylinders]
int lazlow_ai_system_status = 0
int run_after_lazlow_master_flow_system_status = 0
int michael_ai_system_status = 0
//int detach_trailer_system_status = 0
int detach_trailer_cutscene_status = 0
int deatch_trailer_dialogue_status = 0
int manual_car_recording_system_status = 0
int create_parked_vehicles_status = 0
int dialogue_status = 0
int cleanup_asset_status = 0
int intro_mocap_status = 0
int play_final_mocap_status = 0
int get_to_the_stadium_status = 0
int family_4_detach_trailer_status = 0
//int instruction_text_time
int get_to_the_stadium_dialogue_system_status = 0
int lazlow_dialogue_time
int set_piece_driver_ai_status = 0
int ambient_ped_time
int ambient_train_system_status = 0
int uber_chase_in_car_conversation = 0
int family_4_play_stadium_mocap_status = 0
int family_4_storm_drain_cutscene_status = 0
int trigger_storm_drain_cutscene_status = 0
int run_after_lazlow_dialogue_system_status = 0
int lazlow_ai_system_2_status = 0
int groupie_ai_system_status = 0
int truck_driver_ai_system_2_status = 0
int family_4_record_lazlow_status = 0
int i_triggered_text_hashes[10]
int tracey_ai_system_status = 0
//int lazlow_cam_time = 0
int dialogue_time = 0
int fail_time = 0
int detach_trailer_help_text_system_status = 0
int get_to_stadium_audio_scene_system_status = 0
int run_after_lazlow_audio_scene_system_status = 0
int uber_chase_audio_system_status = 0
int truck_driver_ai_system_status = 0
int lazlow_horn_time = 0
int run_after_lazlow_walla_system_status = 0
int storm_drain_lane = 0
int family_4_trevor_leadin_status = 0
int ambient_ped_flee_time = 0
int create_entities_outside_stadium_status = 0
int detach_trailer_time = 0
int create_vehicles_outside_stadium_status = 0
int run_after_lazlow_switch_effect_status = 0
int lazlow_cam_dialogue_counter = 0
//int camera_crew_ai_status[2]
float current_minimum_distance
float current_ideal_distance
float current_slow_down_distance
float multiplier_speed
float target_speed
float disired_playback_speed = 1.0
vector scene_pos
vector scene_rot
//reslove pos outside michaels houes
vector car_pos_outside_house = <<-868.3934, 152.2284, 62.5499>>
float car_heading_outside_house = 174.5712
#IF IS_DEBUG_BUILD
int get_to_the_stadium_skip_status = 0
int p_skip_time
int run_after_lazlo_skip_status = 0
int set_piece_recording_system_status = 0
int get_to_the_audition_room_skip_status = 0
#endif
//*****not present in initialise_mission_variables()
int launch_mission_stage_menu_status = 0
bool replay_active = false
string mission_failed_text
blip_index michaels_blip
ped_index set_piece_ped
camera_index lazlow_cam
camera_index lazlow_cam_2
camera_index camera_a
camera_index camera_b
camera_index camera_c
camera_index camera_d
camera_index camera_e
camera_index camera_f
camera_index camera_g
camera_index camera_h
camera_index spline_cam
vehicle_index temp_lazlows_car
vehicle_index ambient_train[4]
vehicle_index ambient_car
vehicle_index broken_down_cars[2]
vehicle_index ambient_car_2
vehicle_index ambient_car_3
vehicle_index ambient_car_4
vehicle_index ambient_car_5
vehicle_index cutscene_car[2]
vehicle_index set_piece_veh
//vehicle_index players_last_vehicle
vehicle_index players_vehicle
vehicle_index players_last_vehicle
structPedsForConversation scripted_speech
CHASE_HINT_CAM_STRUCT chase_hint_cam
LOCATES_HEADER_DATA locates_data
interior_instance_index stadium_interior
interior_instance_index michaels_house_interior
sequence_index seq
ptfx_id lazlows_car_ptfx
//ptfx_id truck_ptfx
//timelapse variables
structTimelapse sTimelapse
text_label_23 dialogue_root
text_label_23 specific_label
#IF IS_DEBUG_BUILD
widget_group_id family_4_widget_group
MissionStageMenuTextStruct menu_stage_selector[MAX_SKIP_MENU_LENGTH]
int menu_return_stage = 0
#endif
//****************************************LAWRENCE SDK****************************************
PROC ENABLE_STADIUM_INTERIOR()
IF IS_PLAYER_SWITCH_IN_PROGRESS()
EXIT
ENDIF
IF IS_IPL_ACTIVE("SP1_10_fake_interior")
REMOVE_IPL("SP1_10_fake_interior")
ENDIF
IF NOT IS_IPL_ACTIVE("SP1_10_real_interior")
REQUEST_IPL("SP1_10_real_interior")
ENDIF
ENDPROC
proc disable_dispatch_services()
enable_dispatch_service(dt_fire_department, false)
enable_dispatch_service(dt_police_automobile, false)
enable_dispatch_service(dt_police_helicopter, false)
enable_dispatch_service(dt_ambulance_department, false)
endproc
proc enable_dispatch_services()
enable_dispatch_service(dt_fire_department, true)
enable_dispatch_service(dt_police_automobile, true)
enable_dispatch_service(dt_police_helicopter, true)
enable_dispatch_service(dt_ambulance_department, true)
endproc
func bool start_new_cutscene_no_fade(bool clear_players_tasks = true, bool hide_weapon_for_cutscene = true, bool kill_conversation_line_immediately = true, bool ignore_can_player_start_cutscene = false)
if can_player_start_cutscene() or ignore_can_player_start_cutscene
SPECIAL_ABILITY_DEACTIVATE(player_id())
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
clear_help()
clear_prints()
if kill_conversation_line_immediately
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
else
kill_any_conversation()
endif
display_hud(false)
display_radar(false)
set_widescreen_borders(true, 500)
if clear_players_tasks
set_player_control(player_id(), false, spc_clear_tasks)
else
set_player_control(player_id(), false)
endif
if hide_weapon_for_cutscene
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), true)
else
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), false)
endif
disable_dispatch_services()
return true
endif
return false
endfunc
proc end_cutscene(bool clear_tasks = true, float interp_heading = 0.0, float interp_pitch = 0.0, bool enable_emergency_services = true)
//INFORM_MISSION_STATS_SYSTEM_OF_INengine_CUTSCENE_END()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
clear_prints()
clear_help()
kill_face_to_face_conversation()
display_hud(true)
display_radar(true)
set_widescreen_borders(false, 500)
if is_player_playing(player_id())
destroy_all_cams()
render_script_cams(false, false)
set_gameplay_cam_relative_heading(interp_heading)
set_gameplay_cam_relative_pitch(interp_pitch)
if clear_tasks
clear_ped_tasks(player_ped_id())
endif
set_player_control(player_id(), true)
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), false)
endif
if enable_emergency_services
enable_dispatch_services()
else
disable_dispatch_services()
endif
do_screen_fade_in(DEFAULT_FADE_TIME)
endproc
proc end_cutscene_no_fade(bool clear_tasks = true, bool update_game_camera = true, bool interpolate_behind_player = false, float interp_heading = 0.0, float interp_pitch = 0.0, int interp_to_game_time = 3000, bool enable_emergency_services = true)
INFORM_MISSION_STATS_SYSTEM_OF_INengine_CUTSCENE_END()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
clear_prints()
clear_help()
kill_face_to_face_conversation()
display_hud(true)
display_radar(true)
set_widescreen_borders(false, 500)
if is_player_playing(player_id())
destroy_all_cams()
if update_game_camera
if interpolate_behind_player
render_script_cams(false, true, interp_to_game_time)
set_gameplay_cam_relative_heading(interp_heading)
set_gameplay_cam_relative_pitch(interp_pitch)
else
render_script_cams(false, false)
set_gameplay_cam_relative_heading(interp_heading)
set_gameplay_cam_relative_pitch(interp_pitch)
endif
endif
if clear_tasks
clear_ped_tasks(player_ped_id())
endif
enable_special_ability(player_id(), true)
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), false)
set_player_control(player_id(), true)
endif
if enable_emergency_services
enable_dispatch_services()
else
disable_dispatch_services()
endif
endproc
func bool lk_timer(int &start_time, int time)
int current_time
current_time = get_game_timer()
if ((current_time - start_time) > time)
return true
endif
return false
endfunc
func bool is_skip_button_pressed()
return is_control_just_pressed(frontend_control, input_frontend_accept)
endfunc
func bool skip_scripted_cut(int &original_time_temp, int cutscene_skip_time)
if lk_timer(original_time_temp, cutscene_skip_time)
if is_screen_faded_in()
if IS_CUTSCENE_SKIP_BUTTON_PRESSED()
return true
endif
endif
endif
return false
endfunc
func bool mission_ped_created_and_injured(bool &mission_ped_created, ped_index &mission_ped)
if mission_ped_created
return is_ped_injured(mission_ped)
endif
return false
endfunc
func bool mission_ped_injured(ped_index &this_ped)
if DOES_ENTITY_EXIST(this_ped)
return is_ped_injured(this_ped)
endif
return false
endfunc
func bool mission_vehicle_injured(vehicle_index &this_vehicle)
if DOES_ENTITY_EXIST(this_vehicle)
if not is_vehicle_driveable(this_vehicle)
return true
endif
endif
return false
endfunc
func bool is_mission_entity_attacked(ped_index &mission_ped, bool clear_damage_entity = false)
if DOES_ENTITY_EXIST(mission_ped)
if not is_ped_injured(mission_ped)
if HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mission_ped, PLAYER_ped_ID())
if clear_damage_entity
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(mission_ped)
endif
return true
endif
else
return true
endif
endif
return false
endfunc
func bool has_char_task_finished_2(ped_index ped, script_task_name taskname)
scripttaskstatus status
status = get_script_task_status(ped, taskname)
if status = finished_task
or status = dormant_task
return true
endif
return false
endfunc
//gets the currenent car the player is in
func bool get_current_player_vehicle(vehicle_index &test_car)
if is_ped_sitting_in_any_vehicle(player_ped_id())
test_car = get_players_last_vehicle()
if DOES_ENTITY_EXIST(test_car)
if is_vehicle_driveable(test_car)
return true
endif
endif
endif
return false
endfunc
func bool is_ped_in_same_vehicle_as_player(ped_index &mission_ped_0)
vehicle_index mission_vehicle
if get_current_player_vehicle(mission_vehicle)
if not is_ped_injured(mission_ped_0)
if is_ped_sitting_in_vehicle(mission_ped_0, mission_vehicle)
return true
endif
endif
endif
return false
endfunc
PROC STOP_PLAYER_vehicle()
VEHICLE_INDEX player_car
if get_current_player_vehicle(player_car)
FLOAT player_car_speed
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
SET_ENTITY_PROOFS(player_car, true, true, true, true, true)
player_car_speed = GET_ENTITY_SPEED(player_car)
WHILE player_car_speed > 0.2
WAIT(0)
if not IS_ENTITY_DEAD(player_car)
player_car_speed = GET_ENTITY_SPEED(player_car)
endif
ENDWHILE
SET_ENTITY_PROOFS(player_car, false, false, false, false, false)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
ENDPROC
func bool add_ped_to_players_group(ped_index &this_ped, group_index &players_group)
if DOES_ENTITY_EXIST(this_ped)
if not is_ped_injured(this_ped)
players_group = get_player_group(player_id())
set_ped_as_group_member(this_ped, players_group)
return true
endif
endif
return false
endfunc
func float distance_from_player_to_ped(ped_index &mission_ped)
vector player_pos
vector mission_ped_pos
if DOES_ENTITY_EXIST(mission_ped)
if not is_ped_injured(mission_ped)
player_pos = GET_ENTITY_COORDS(player_ped_id())
mission_ped_pos = GET_ENTITY_COORDS(mission_ped)
return get_distance_between_coords(player_pos, mission_ped_pos)
endif
endif
return -1.0
endfunc
func bool has_ped_task_finished_2(ped_index ped, script_task_name taskname = script_task_perform_sequence, bool use_seq = true, int sequence_progress = -2)
scripttaskstatus status
status = get_script_task_status(ped, taskname)
if use_seq
if status = finished_task
or status = dormant_task
or get_sequence_progress(ped) = sequence_progress
return true
endif
else
if status = finished_task
or status = dormant_task
return true
endif
endif
return false
endfunc
func bool is_ped_playing_anim_at_phase(string anim_dict_name, string anim_name, float phase_target)
if IS_ENTITY_PLAYING_ANIM(player_ped_id(), anim_dict_name, anim_name)
if GET_ENTITY_ANIM_CURRENT_TIME(player_ped_id(), anim_dict_name, anim_name) > phase_target
return true
endif
endif
return false
endfunc
//The players group does not include the player himself. RELGROUPHASH_PLAYER is the player
REL_GROUP_HASH player_group
REL_GROUP_HASH enemy_group
rel_group_hash gropie_group
proc add_relationship_groups()
ADD_RELATIONSHIP_GROUP("players group", player_group)
ADD_RELATIONSHIP_GROUP("enemy group", enemy_group)
ADD_RELATIONSHIP_GROUP("gropie group", gropie_group)
endproc
proc setup_relationship_contact(ped_index &this_ped, bool block_temporary_events = false)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, player_group, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, player_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, RELGROUPHASH_PLAYER, enemy_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, player_group, enemy_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, player_group)
if DOES_ENTITY_EXIST(this_ped)
if NOT is_ped_injured(this_ped)
SET_PED_RELATIONSHIP_GROUP_HASH(this_ped, player_group)
SET_PED_TARGET_LOSS_RESPONSE(this_ped, tlr_never_lose_target)
set_entity_is_target_priority(this_ped, false)
if block_temporary_events
set_blocking_of_non_temporary_events(this_ped, true)
else
set_blocking_of_non_temporary_events(this_ped, false)
endif
endif
endif
endproc
proc setup_relationship_enemy(ped_index &this_ped, bool block_temporary_events = false)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, player_group, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, player_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, RELGROUPHASH_PLAYER, enemy_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, player_group, enemy_group)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, player_group)
if DOES_ENTITY_EXIST(this_ped)
if NOT is_ped_injured(this_ped)
SET_ped_RELATIONSHIP_GROUP_hash(this_ped, enemy_group)
set_ped_combat_attributes(this_ped, ca_will_scan_for_dead_peds, false)
SET_PED_TARGET_LOSS_RESPONSE(this_ped, tlr_never_lose_target)
set_entity_is_target_priority(this_ped, true)
if block_temporary_events
set_blocking_of_non_temporary_events(this_ped, true)
else
set_blocking_of_non_temporary_events(this_ped, false)
endif
endif
endif
endproc
proc setup_buddy_attributes(ped_index mission_ped)
set_ped_dies_when_injured(mission_ped, false)
set_ped_can_be_targetted(mission_ped, false)
set_ped_suffers_critical_hits(mission_ped, false)
set_ped_can_evasive_dive(mission_ped, false)
set_entity_is_target_priority(mission_ped, false)
set_ped_keep_task(mission_ped, true)
//set_ped_can_ragdoll(mission_ped, false)
SET_RAGDOLL_BLOCKING_FLAGS(mission_ped, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_MELEE) //buddy won't ragdoll on bullet impact player impact and melee
SET_PED_CONFIG_FLAG(mission_ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
SET_PED_CONFIG_FLAG(mission_ped, PCF_WillFlyThroughWindscreen, false)
SET_PED_CONFIG_FLAG(mission_ped, PCF_DisableExplosionReactions, true)
SET_PED_CONFIG_FLAG(mission_ped, PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(mission_ped, PCF_DisableHurt, true)
set_ped_seeing_range(mission_ped, 250.00)
set_ped_hearing_range(mission_ped, 250.00)
set_ped_id_range(mission_ped, 250.00)
endproc
proc setup_enemy(ped_structure &enemy)
clear_area(enemy.pos, 2.0, true)
enemy.ped = create_ped(pedtype_mission, enemy.model, enemy.pos, enemy.heading)
set_ped_random_component_variation(enemy.ped)
set_ped_dies_when_injured(enemy.ped, true)
set_ped_as_enemy(enemy.ped, true)
set_entity_is_target_priority(enemy.ped, true)
set_ped_keep_task(enemy.ped, true)
SET_PED_CONFIG_FLAG(enemy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
give_weapon_to_ped(enemy.ped, enemy.weapon, infinite_ammo, true)
SET_ENTITY_HEALTH(enemy.ped, enemy.health)
set_ped_max_health(enemy.ped, enemy.health)
if enemy.damaged_by_player
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(enemy.ped, true)
endif
if enemy.allow_body_armour
add_armour_to_ped(enemy.ped, 100)
endif
enemy.created = true
set_ped_name_debug(enemy.ped, enemy.name)
set_ped_seeing_range(enemy.ped, 250.00)
set_ped_hearing_range(enemy.ped, 250.00)
set_ped_id_range(enemy.ped, 250.00)
enemy.blip = ADD_BLIP_FOR_ENTITY(enemy.ped)
set_blip_display(enemy.blip, DISPLAY_BLIP)
set_ped_can_evasive_dive(enemy.ped, true)
set_blocking_of_non_temporary_events(enemy.ped, true)
endproc
proc setup_buddy(ped_structure &mission_buddy)
clear_area(mission_buddy.pos, 4.0, true)
mission_buddy.ped = create_ped(pedtype_mission, mission_buddy.model, mission_buddy.pos, mission_buddy.heading)
set_entity_health(mission_buddy.ped, mission_buddy.health)
set_ped_dies_when_injured(mission_buddy.ped, false)
set_ped_can_be_targetted(mission_buddy.ped, false)
set_ped_suffers_critical_hits(mission_buddy.ped, false)
set_ped_can_evasive_dive(mission_buddy.ped, false)
set_entity_is_target_priority(mission_buddy.ped, false)
set_ped_keep_task(mission_buddy.ped, true)
SET_PED_CONFIG_FLAG(mission_buddy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
SET_PED_CONFIG_FLAG(mission_buddy.ped, PCF_WillFlyThroughWindscreen, false)
set_ped_can_ragdoll(mission_buddy.ped, false)
give_weapon_to_ped(mission_buddy.ped, mission_buddy.weapon, infinite_ammo, false)
set_ped_seeing_range(mission_buddy.ped, 250.00)
set_ped_hearing_range(mission_buddy.ped, 250.00)
set_ped_id_range(mission_buddy.ped, 250.00)
setup_relationship_contact(mission_buddy.ped, true)
endproc
proc setup_enemy_in_vehicle(ped_structure &enemy, vehicle_index &mission_veh, vehicle_seat veh_seat = vs_driver)
clear_area(enemy.pos, 2.0, true)
enemy.ped = create_ped_inside_vehicle(mission_veh, pedtype_mission, enemy.model, veh_seat)
set_ped_random_component_variation(enemy.ped)
set_ped_dies_when_injured(enemy.ped, true)
set_ped_as_enemy(enemy.ped, true)
set_entity_is_target_priority(enemy.ped, true)
set_ped_keep_task(enemy.ped, true)
SET_PED_CONFIG_FLAG(enemy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
give_weapon_to_ped(enemy.ped, enemy.weapon, infinite_ammo, true)
SET_ENTITY_HEALTH(enemy.ped, enemy.health)
set_ped_max_health(enemy.ped, enemy.health)
if enemy.damaged_by_player
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(enemy.ped, true)
endif
if enemy.allow_body_armour
add_armour_to_ped(enemy.ped, 100)
endif
enemy.created = true
set_ped_name_debug(enemy.ped, enemy.name)
set_ped_hearing_range(enemy.ped, 250.00)
set_ped_seeing_range(enemy.ped, 250.00)
enemy.blip = ADD_BLIP_FOR_ENTITY(enemy.ped)
set_blip_display(enemy.blip, DISPLAY_BLIP)
set_ped_can_evasive_dive(enemy.ped, true)
set_blocking_of_non_temporary_events(enemy.ped, true)
endproc
func bool ped_structure_are_all_enemies_dead(ped_structure &enemy_array[], bool set_ped_no_longer_needed = true)
int i = 0
int peds_dead
for i = 0 to (count_of(enemy_array) - 1)
if DOES_ENTITY_EXIST(enemy_array[i].ped)
if is_ped_injured(enemy_array[i].ped)
if set_ped_no_longer_needed
SET_PED_AS_NO_LONGER_NEEDED(enemy_array[i].ped)
endif
if does_blip_exist(enemy_array[i].blip)
REMOVE_BLIP(enemy_array[i].blip)
endif
peds_dead ++
endif
else
if enemy_array[i].created
peds_dead ++
endif
endif
endfor
if peds_dead = count_of(enemy_array)
return TRUE
endif
return FALSE
endfunc
//*****call this function underneath ped_structure_are_all_enemies_dead
func bool ped_structure_are_specific_number_enemies_dead(ped_structure &enemy_array[], int number_of_dead_peds)
int i = 0
int peds_dead = 0
for i = 0 to count_of(enemy_array) - 1
if enemy_array[i].created
if is_ped_injured(enemy_array[i].ped)
peds_dead++
endif
endif
endfor
if peds_dead >= number_of_dead_peds
return TRUE
endif
return FALSE
endfunc
func int ped_structure_get_total_number_of_enemies_dead(ped_structure &enemy_array[])
int i = 0
int peds_dead = 0
for i = 0 to count_of(enemy_array) - 1
if enemy_array[i].created
if is_ped_injured(enemy_array[i].ped)
peds_dead++
endif
endif
endfor
return peds_dead
endfunc
func bool is_coord_in_area_2d(vector test_coord, vector top_left, vector bottom_right)
vector tl
vector br
if top_left.x < bottom_right.x
tl.x = top_left.x
br.x = bottom_right.x
else
tl.x = bottom_right.x
br.x = top_left.x
endif
if top_left.y < bottom_right.y
tl.y = top_left.y
br.y = bottom_right.y
else
tl.y = bottom_right.y
br.y = top_left.y
endif
if (test_coord.x > tl.x) and (test_coord.x < br.x)
if (test_coord.y > tl.y) and (test_coord.y < br.y)
return true
endif
endif
return false
endfunc
func bool has_ped_been_harmed(ped_index &mission_ped, int &original_health)
int current_health
if DOES_ENTITY_EXIST(mission_ped)
if not is_ped_injured(mission_ped)
current_health = GET_ENTITY_HEALTH(mission_ped)
if HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mission_ped , player_ped_id())
or (current_health < original_health)
or is_ped_responding_to_event(mission_ped, EVENT_DAMAGE)
return true
endif
else
return true
endif
endif
return false
endfunc
func bool has_peds_been_harmed(ped_structure &ped_struct[])
int i = 0
for i = 0 to (count_of(ped_struct) - 1)
if has_ped_been_harmed(ped_struct[i].ped, ped_struct[i].health)
return true
endif
endfor
return false
endfunc
func bool has_player_antagonised_ped(ped_index &mission_ped, float distance, bool distance_check_on = true)
if not is_ped_injured(mission_ped)
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(mission_ped)) < distance
//if has_char_spotted_char(this_ped, player_char_id())
if CAN_PED_SEE_HATED_PED(mission_ped, PLAYER_PED_ID())
IF IS_ped_ARMED(PLAYER_ped_ID(), WF_INCLUDE_MELEE|WF_INCLUDE_PROJECTILE|WF_INCLUDE_GUN)
if IS_PLAYER_TARGETTING_ENTITY(player_id(), mission_ped)
return TRUE
endif
if is_player_free_aiming_at_entity(player_id(), mission_ped)
return TRUE
endif
endif
endif
if is_ped_shooting(player_ped_id())
return true
endif
endif
if is_bullet_in_area(get_entity_coords(mission_ped), 4.0)
return true
endif
if distance_check_on
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(mission_ped)) < 1.5
return true
endif
endif
endif
return FALSE
endfunc
func bool has_vehicle_been_harmed(vehicle_index &mission_vehicle, int &original_car_health)
int vehicle_health
if DOES_ENTITY_EXIST(mission_vehicle)
if is_vehicle_driveable(mission_vehicle)
vehicle_health = GET_ENTITY_HEALTH(mission_vehicle)
if get_vehicle_petrol_tank_health(mission_vehicle) < original_car_health
or get_vehicle_engine_health(mission_vehicle) < original_car_health
or /*HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED*/ HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(mission_vehicle, player_ped_id())
or vehicle_health < original_car_health
return true
endif
else
return true
endif
endif
return false
endfunc
func bool has_vehicles_been_harmed(vehicle_struct &veh_struct[])
int i = 0
for i = 0 to (count_of(veh_struct) - 1)
if has_vehicle_been_harmed(veh_struct[i].veh, veh_struct[i].health)
return true
endif
endfor
return false
endfunc
func bool is_ped_at_coords(ped_index &mission_ped, vector pos, vector locate_size)
if not is_ped_injured(mission_ped)
if IS_ENTITY_AT_COORD(mission_ped, pos, locate_size)
return true
endif
endif
return false
endfunc
func quaternion build_quaternion_from_euler_angles(float fPitch, float fRoll, float fHeading)
quaternion quat
float fltPitch2
float fltYaw2
float fltRoll2
fltPitch2 = fPitch * 0.5
fltYaw2 = fRoll * 0.5
fltRoll2 = fHeading * 0.5
float cosY2 = Cos(fltYaw2)
float sinY2 = Sin(fltYaw2)
float cosP2 = Cos(fltPitch2)
float sinP2 = Sin(fltPitch2)
float cosR2 = Cos(fltRoll2)
float sinR2 = Sin(fltRoll2)
Quat.x = cosR2 * sinP2 * cosY2 + sinR2 * cosP2 * sinY2
Quat.y = cosR2 * cosP2 * sinY2 - sinR2 * sinP2 * cosY2
Quat.y *= -1.0
Quat.z = sinR2 * cosP2 * cosY2 - cosR2 * sinP2 * sinY2
Quat.w = cosR2 * cosP2 * cosY2 + sinR2 * sinP2 * sinY2
return quat
endfunc
func bool are_vectors_alomost_equal(vector vector_a, vector vector_b, vector unit_vector_x_multiplier)
//vec b is the target vector
//vec a is the current positon of the object
//unit_vector_x_multiplier is the unitvector * frame time * multiplier
vector vector_ba
vector future_vector
vector_ba = vector_b - vector_a
if (vmag(vector_ba) < 0.2)
return true
endif
future_vector = (vector_b - (vector_a + unit_vector_x_multiplier))
if (vmag(future_vector) > vmag(vector_ba))
return true
endif
return false
endfunc
func bool is_ped_in_front_of_ped(ped_index mission_ped_0, ped_index mission_ped_1)
if DOES_ENTITY_EXIST(mission_ped_0)
if DOES_ENTITY_EXIST(mission_ped_1)
if not is_ped_injured(mission_ped_0)
if not is_ped_injured(mission_ped_1)
vector pos_a
vector pos_b
vector vec_BA
vector ped_1_forward_vector
pos_a = GET_ENTITY_COORDS(mission_ped_0)
pos_b = GET_ENTITY_COORDS(mission_ped_1)
vec_BA = pos_b - pos_a
ped_1_forward_vector = get_offset_from_entity_in_world_coords(mission_ped_1, <<0.0, 0.5, 0.0>>) - pos_b
if dot_product(vec_BA, ped_1_forward_vector) < 0.0
return (true)
endif
endif
endif
endif
endif
return false
endfunc
func bool is_ped_within_range_of_target_heading(ped_index miss_ped, float target_heading, float heading_range)
float heading_dif
heading_dif = (target_heading - get_entity_heading(miss_ped))
if heading_dif > 180
heading_dif -= 360
endif
if heading_dif < -180
heading_dif += 360
endif
if absf(heading_dif) <= heading_range
return true
endif
return false
endfunc
func bool is_vehicle_stuck_every_check(vehicle_index &vehicle)
if DOES_ENTITY_EXIST(vehicle)
if is_vehicle_driveable(vehicle)
if is_vehicle_stuck_timer_up(vehicle, VEH_STUCK_ON_ROOF, ROOF_TIME)
or is_vehicle_stuck_timer_up(vehicle, VEH_STUCK_JAMMED, JAMMED_TIME)
or is_vehicle_stuck_timer_up(vehicle, VEH_STUCK_HUNG_UP, HUNG_UP_TIME)
or is_vehicle_stuck_timer_up(vehicle, VEH_STUCK_ON_SIDE, SIDE_TIME)
return true
endif
endif
endif
return false
endfunc
func bool is_ped_inside_interior(ped_index mission_ped, vector interior_pos)
interior_instance_index interior
interior_instance_index mission_ped_interior
interior = get_interior_at_coords(interior_pos)
mission_ped_interior = GET_INTERIOR_FROM_ENTITY(mission_ped)
if not (mission_ped_interior = null)
if (mission_ped_interior = interior)
return true
endif
endif
return false
endfunc
func bool is_ped_inside_interior_with_name(ped_index mission_ped, vector interior_pos, string interior_name)
interior_instance_index interior
interior_instance_index mission_ped_interior
interior = get_interior_at_coords_with_type(interior_pos, interior_name)
mission_ped_interior = GET_INTERIOR_FROM_ENTITY(mission_ped)
if not (mission_ped_interior = null)
if (mission_ped_interior = interior)
return true
endif
endif
return false
endfunc
func bool is_ped_in_specific_room(ped_index mission_ped, vector interior_pos, string room_name)
interior_instance_index interior
interior_instance_index ped_current_interior
int ped_current_room_hash_key
int room_hash_key
if not is_ped_injured(mission_ped)
interior = get_interior_at_coords(interior_pos)
ped_current_interior = GET_INTERIOR_FROM_ENTITY(mission_ped)
if not (interior = null)
if (interior = ped_current_interior)
ped_current_room_hash_key = GET_KEY_FOR_ENTITY_IN_ROOM(mission_ped)
room_hash_key = get_hash_key(room_name)
if (ped_current_room_hash_key != 0)
if ped_current_room_hash_key = room_hash_key
return true
endif
endif
endif
endif
endif
return false
endfunc
proc equip_player_strongest_weapon()
if has_ped_got_weapon (player_ped_id(), WEAPONTYPE_ASSAULTRIFLE)
set_current_ped_weapon(player_ped_id(), WEAPONTYPE_ASSAULTRIFLE,true)
elif has_ped_got_weapon (player_ped_id(), weapontype_smg)
set_current_ped_weapon(player_ped_id(), weapontype_smg,true)
elif has_ped_got_weapon (player_ped_id(), WEAPONTYPE_PUMPSHOTGUN)
set_current_ped_weapon(player_ped_id(), WEAPONTYPE_PUMPSHOTGUN,true)
elif has_ped_got_weapon (player_ped_id(), weapontype_pistol)
set_current_ped_weapon(player_ped_id(), weapontype_pistol,true)
endif
endproc
func bool activate_vehicle_tracking_cam(vehicle_index &mission_car)
// function check if player is pressing the button to access the camera from cops pov
// only lets you do so if certan other requirments are met
interior_instance_index current_interior
// if does_blip_exist(lazlow.blip) //player inside specific vehicle - using locates header check for mission entitites during chase.
// if is_control_just_pressed(player_control, input_veh_cin_cam)
// if not lazlow_chase_cam_active
// lazlow_chase_cam_active = true
// else
// lazlow_chase_cam_active = false
// endif
// endif
// endif
//
// if is_control_pressed(player_control, input_veh_cin_cam)
// if lazlow_cam_time = 0
// lazlow_cam_time = get_game_timer()
// endif
// else
//
// if not (lazlow_cam_time = 0)
// if lk_timer(lazlow_cam_time, 1500)
// lazlow_chase_cam_active = false
// endif
// endif
//
// lazlow_cam_time = 0
//
// endif
if does_blip_exist(lazlow.blip)
if SHOULD_CONTROL_CHASE_HINT_CAM(chase_hint_cam,true,false,true)
lazlow_chase_cam_active = true
else
lazlow_chase_cam_active = false
endif
endif
// if IS_VEHICLE_ON_ALL_WHEELS
// vehicle_on_all_wheels_time = get_gamet_timer()
// endif
if lazlow_chase_cam_active
if is_vehicle_driveable(mission_car)
if does_blip_exist(lazlow.blip) //synched up the locates function.
and is_playback_going_on_for_vehicle(mission_car)
if not is_phone_onscreen()
current_interior = GET_INTERIOR_FROM_ENTITY(player_ped_id())
//tunnel on the route. Every other interior is banned.
if (current_interior = null)
or is_ped_inside_interior_with_name(player_ped_id(), <<249.3368, -622.8621, 29.6647>>, "dt1_rd1_tun")
or is_ped_inside_interior_with_name(player_ped_id(), <<132.835007,-577.426636,33.010033>>, "dt1_rd1_tun2")
or is_ped_inside_interior_with_name(player_ped_id(), <<287.4,-641.1,30.510033>>, "dt1_rd1_tun3")
// if is_vehicle_on_all_wheels()
// or (not is_vehicle_on_all_wheels()) and (not lk_timer(vehicle_on_all_wheels_time, 5000))
vector truck_rot
truck_rot = get_entity_rotation(truck.veh)
printstring("truck_rot.x: ")
printfloat(absf(truck_rot.x))
printnl()
printstring("truck_rot.y: ")
printfloat(absf(truck_rot.y))
printnl()
if absf(truck_rot.x) < 45.0
and absf(truck_rot.y) < 45.0
return true
endif
endif
endif
endif
endif
endif
return false
endfunc
func bool allow_dialogue_to_continue(ped_index &mission_ped, int instruct_text_time, bool allow_wanted_level_check = false)
if not is_ped_injured(mission_ped)
if is_ped_in_group(mission_ped)
if allow_wanted_level_check
if is_player_wanted_level_greater(player_id(), 0)
instruct_text_time = get_game_timer()
return false
endif
//if you get a wanted level and the god text renders. If you then lose the wanted level and get
//instruction text this ensures the instruction text is rendered for 3 seconds before the
//dialogue is unpaused
if not lk_timer(instruct_text_time, 3000)
return false
endif
endif
if (is_ped_on_foot(mission_ped) and is_ped_on_foot(player_ped_id()))
return true
endif
if (is_ped_sitting_in_any_vehicle(mission_ped) and is_ped_sitting_in_any_vehicle(player_ped_id()))
return true
endif
endif
endif
return false
endfunc
FUNC INT GET_TRAFFIC_VEHICLE_SEARCH_FLAGS()
RETURN (VEHICLE_SEARCH_FLAG_ALLOW_VEHICLE_OCCUPANTS_TO_BE_PERFORMING_A_SCRIPTED_TASK |
VEHICLE_SEARCH_FLAG_RETURN_MISSION_VEHICLES |
VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES |
VEHICLE_SEARCH_FLAG_RETURN_VEHICLES_CONTAINING_A_DEAD_OR_DYING_PED)
ENDFUNC
proc repostion_players_last_vehicle(vehicle_index &mission_veh, vector area_pos_check, vector area_dimensions, vector veh_pos, float veh_heading)
mission_veh = get_players_last_vehicle()
if does_entity_exist(mission_veh)
if is_vehicle_driveable(mission_veh)
if not is_big_vehicle(mission_veh)
if not (get_entity_model(mission_veh) = taxi)
if is_entity_at_coord(mission_veh, area_pos_check, area_dimensions)
if not is_entity_a_mission_entity(mission_veh)
set_entity_as_mission_entity(mission_veh)
else
if not DOES_ENTITY_BELONG_TO_THIS_SCRIPT(mission_veh, false)
set_entity_as_mission_entity(mission_veh, true, true)
endif
endif
if not is_vehicle_in_players_garage(mission_veh, get_current_player_ped_enum(), false)
clear_area(veh_pos, 10.0, true)
set_entity_coords(mission_veh, veh_pos)
set_entity_heading(mission_veh, veh_heading)
set_vehicle_on_ground_properly(mission_veh)
endif
endif
endif
endif
endif
endif
endproc
proc kill_ped_on_certain_damage(ped_structure &miss_ped)
if not is_ped_injured(miss_ped.ped)
IF HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(miss_ped.ped, WEAPONTYPE_GRENADE)
OR HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(miss_ped.ped, WEAPONTYPE_GRENADELAUNCHER)
OR HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(miss_ped.ped, WEAPONTYPE_STICKYBOMB)
OR HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON(miss_ped.ped, WEAPONTYPE_RPG)
if is_synchronized_scene_running(miss_ped.scene_id)
stop_synchronized_entity_anim(miss_ped.ped, normal_blend_out, true)
endif
set_ped_can_ragdoll(miss_ped.ped, true)
set_entity_health(miss_ped.ped, 1)
endif
endif
endproc
/// PURPOSE: repositions the players last vehicle if it exists via calling GET_PLAYERS_LAST_VEHICLE()
// and sets the vehicle as a mission entity so that clear area will not clear it. Remember to set the
// vehicle as no longer needed in the mocap cleanup
// sets the vehicle as a vehicle gen. The vehicle gen controller sets the vehicle as a mission entity bellonging
//to it. If the player walks 200m away from the car and the vehicle gen position passed in. It will reposition
//the car to those coords.
proc set_players_last_vehicle_to_vehicle_gen(vector car_pos, float car_heading)
vehicle_index players_last_car
players_last_car = GET_PLAYERS_LAST_VEHICLE()
if does_entity_exist(players_last_car)
if is_vehicle_driveable(players_last_car)
SET_MISSION_VEHICLE_GEN_VEHICLE(players_last_car, car_pos, car_heading)
endif
endif
endproc
func bool is_players_last_vehicle_present_and_acceptable(vehicle_index player_vehicle, vector pos, int number_of_seats, vector secondary_pos, float secondary_heading, bool allow_helicopter = true)
model_names player_vehicle_model
if does_entity_exist(player_vehicle)
if is_vehicle_driveable(player_vehicle)
if is_entity_at_coord(player_vehicle, pos, <<10.0, 10.0, 10.0>>, false)
player_vehicle_model = get_entity_model(player_vehicle)
if is_this_model_a_heli(player_vehicle_model)
if allow_helicopter
if get_vehicle_max_number_of_passengers(player_vehicle) >= number_of_seats
return true
else
clear_area(secondary_pos, 10.0, true)
set_entity_coords(player_vehicle, secondary_pos)
set_entity_heading(player_vehicle, secondary_heading)
set_vehicle_on_ground_properly(player_vehicle)
//set_vehicle_as_no_longer_needed(player_vehicle)
set_players_last_vehicle_to_vehicle_gen(secondary_pos, secondary_heading)
endif
endif
else
if get_vehicle_max_number_of_passengers(player_vehicle) >= number_of_seats
return true
else
//delete_vehicle(player_vehicle)
clear_area(secondary_pos, 10.0, true)
set_entity_coords(player_vehicle, secondary_pos)
set_entity_heading(player_vehicle, secondary_heading)
set_vehicle_on_ground_properly(player_vehicle)
//set_vehicle_as_no_longer_needed(player_vehicle)
set_players_last_vehicle_to_vehicle_gen(secondary_pos, secondary_heading)
endif
endif
endif
endif
endif
return false
endfunc
proc clear_players_task_on_control_input(script_task_name script_task = script_task_perform_sequence)//script_task_name task_name)
if get_script_task_status(player_ped_id(), script_task) = performing_task
int left_stick_x
int left_stick_y
int right_stick_x
int right_stick_y
int stick_dead_zone = 28
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
IF NOT IS_LOOK_INVERTED()
right_stick_y *= -1
ENDIF
// invert the vertical
IF (left_stick_y > STICK_DEAD_ZONE)
OR (left_stick_y < (STICK_DEAD_ZONE * -1))
or (left_stick_x > STICK_DEAD_ZONE)
OR (left_stick_x < (STICK_DEAD_ZONE * -1))
or is_control_pressed(player_control, input_sprint)
OR is_control_pressed(player_control, INPUT_VEH_EXIT)
or is_control_pressed(player_control, INPUT_JUMP)
or is_control_pressed(player_control, INPUT_ENTER)
or is_control_pressed(player_control, INPUT_ATTACK)
clear_ped_tasks(player_ped_id())
endif
endif
endproc
//proc clear_players_task_on_control_input(script_task_name task_name)
//
// if get_script_task_status(player_ped_id(), task_name) = performing_task
//
// int left_stick_x
// int left_stick_y
// int right_stick_x
// int right_stick_y
// int stick_dead_zone = 28
//
// GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
//
// IF NOT IS_LOOK_INVERTED()
// right_stick_y *= -1
// ENDIF
//
// // invert the vertical
// IF (left_stick_y > STICK_DEAD_ZONE)
// OR (left_stick_y < (STICK_DEAD_ZONE * -1))
// or (left_stick_x > STICK_DEAD_ZONE)
// OR (left_stick_x < (STICK_DEAD_ZONE * -1))
// //or is_control_pressed(player_control, input_sprint)
//
// clear_ped_tasks(player_ped_id())
//
// endif
//
// endif
//
//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
/// PURPOSE:
/// Sorts the triggered label array such that all the empty elements are at the end.
PROC REMOVE_LABEL_ARRAY_SPACES()
INT k = 0
REPEAT (COUNT_OF(i_triggered_text_hashes) - 1) k
IF i_triggered_text_hashes[k] = 0
IF i_triggered_text_hashes[k+1] != 0
i_triggered_text_hashes[k] = i_triggered_text_hashes[k+1]
i_triggered_text_hashes[k+1] = 0
ENDIF
ENDIF
ENDREPEAT
ENDPROC
/// PURPOSE:
/// Finds the array index of a particular triggered label, or -1 if the label hasn't been added.
FUNC INT GET_LABEL_INDEX(INT i_label_hash)
INT k = 0
REPEAT COUNT_OF(i_triggered_text_hashes) k
IF i_triggered_text_hashes[k] = 0 //We've reached the end of the filled section of the array, no need to continue.
RETURN -1
ELIF i_triggered_text_hashes[k] = i_label_hash
RETURN k
ENDIF
ENDREPEAT
RETURN -1
ENDFUNC
/// PURPOSE:
/// Returns TRUE if the given label has been triggered.
FUNC BOOL HAS_LABEL_BEEN_TRIGGERED(STRING str_label)
RETURN (GET_LABEL_INDEX(GET_HASH_KEY(str_label)) != -1)
ENDFUNC
/// PURPOSE:
/// Adds/removes a text label to/from the list of labels that have been triggered.
PROC SET_LABEL_AS_TRIGGERED(STRING str_label, BOOL b_trigger)
INT i_hash = GET_HASH_KEY(str_label)
INT k = 0
IF b_trigger
BOOL b_added = FALSE
WHILE NOT b_added AND k < COUNT_OF(i_triggered_text_hashes)
IF i_triggered_text_hashes[k] = i_hash //The label is already in the array, don't add it again.
b_added = TRUE
ELIF i_triggered_text_hashes[k] = 0
i_triggered_text_hashes[k] = i_hash
b_added = TRUE
ENDIF
k++
ENDWHILE
#IF IS_DEBUG_BUILD
IF NOT b_added
SCRIPT_ASSERT("SET_LABEL_AS_TRIGGERED: Failed to add label, array is full.")
ENDIF
#ENDIF
ELSE
INT i_index = GET_LABEL_INDEX(i_hash)
IF i_index != -1
i_triggered_text_hashes[i_index] = 0
REMOVE_LABEL_ARRAY_SPACES()
ENDIF
ENDIF
ENDPROC
PROC CLEAR_TRIGGERED_LABELS()
INT k = 0
REPEAT COUNT_OF(i_triggered_text_hashes) k
i_triggered_text_hashes[k] = 0
ENDREPEAT
ENDPROC
func bool is_player_interacting_with_controller()//is_direction_stick_pushed()
int left_stick_x
int left_stick_y
int right_stick_x
int right_stick_y
int stick_dead_zone = 28//127
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
IF NOT IS_LOOK_INVERTED()
right_stick_y *= -1
ENDIF
IF (left_stick_y > (STICK_DEAD_ZONE + 28))
OR (left_stick_y < (STICK_DEAD_ZONE - 28))
or is_control_pressed(player_control, input_sprint)
or is_control_pressed(player_control, input_jump)
OR is_control_pressed(player_control, INPUT_VEH_EXIT)
or is_control_pressed(player_control, input_reload)
or is_control_pressed(player_control, INPUT_MELEE_ATTACK_LIGHT)
//or is_control_pressed(PLAYER_CONTROL, INPUT_MELEE_ATTACK_ALTERNATE)
or is_control_pressed(player_control, INPUT_MELEE_ATTACK_HEAVY)
or is_control_pressed(player_control, input_aim)
or is_control_pressed(player_control, INPUT_VEH_ACCELERATE)
return true
endif
return false
endfunc
func bool is_players_last_car_present()
vehicle_index players_last_veh = get_players_last_vehicle()
printstring("last car 0")
printnl()
if does_entity_exist(players_last_veh)
printstring("last car 1")
printnl()
if is_vehicle_driveable(players_last_veh)
printstring("last car 2")
printnl()
//if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(players_last_veh, false)) < 150.00
IF IS_VEHICLE_MODEL(players_last_veh, TAXI)
IF GET_PED_IN_VEHICLE_SEAT(players_last_veh, VS_DRIVER) = player_ped_id()
or GET_PED_IN_VEHICLE_SEAT(players_last_veh, VS_DRIVER) = NULL //no driver - player must have took the car and parked it
TRACK_VEHICLE_FOR_IMPOUND(players_last_veh)//adds players car to inpound so when clear area is called it gets deleted then it gets stored there.
if not is_entity_a_mission_entity(players_last_veh)
set_entity_as_mission_entity(players_last_veh, true, true)
endif
delete_vehicle(players_last_veh)
return true
endif
else
TRACK_VEHICLE_FOR_IMPOUND(players_last_veh)//adds players car to inpound so when clear area is called it gets deleted then it gets stored there.
if not is_entity_a_mission_entity(players_last_veh)
set_entity_as_mission_entity(players_last_veh, true, true)
endif
delete_vehicle(players_last_veh)
return true
endif
//endif
endif
else
printstring("last car 4")
printnl()
endif
return false
endfunc
proc setup_ped_proofs(ped_index &this_ped)
if does_entity_exist(this_ped)
if not is_ped_injured(this_ped)
set_entity_proofs(this_ped, true, true, true, true, true)
endif
endif
endproc
proc deactivate_ped_proofs(ped_index &this_ped)
int ped_health
if does_entity_exist(this_ped)
if not is_ped_injured(this_ped)
ped_health = get_entity_health(this_ped)
if ped_health < 110
set_entity_health(this_ped, 120)
else
set_entity_health(this_ped, ped_health)
endif
set_entity_proofs(this_ped, false, false, false, false, false)
endif
endif
endproc
proc setup_vehicle_proofs(vehicle_index &this_vehicle)
if does_entity_exist(this_vehicle)
if is_vehicle_driveable(this_vehicle)
if get_entity_health(this_vehicle) < 500
set_entity_health(this_vehicle, 500)
endif
if get_vehicle_engine_health(this_vehicle) < 500
set_vehicle_engine_health(this_vehicle, 500.00)
endif
if get_vehicle_petrol_tank_health(this_vehicle) < 500.00
set_vehicle_petrol_tank_health(this_vehicle, 500.00)
endif
set_entity_proofs(this_vehicle, true, true, true, true, true)
endif
endif
endproc
proc restore_vehicle_health(vehicle_index &mission_vehicle)
if does_entity_exist(mission_vehicle)
if is_vehicle_driveable(mission_vehicle)
if get_entity_health(mission_vehicle) < 500
set_entity_health(mission_vehicle, 500)
endif
if get_vehicle_engine_health(mission_vehicle) < 500
set_vehicle_engine_health(mission_vehicle, 500.00)
endif
if get_vehicle_petrol_tank_health(mission_vehicle) < 500.00
set_vehicle_petrol_tank_health(mission_vehicle, 500.00)
endif
endif
endif
endproc
proc deactivate_vehicle_proofs(vehicle_index &this_vehicle)
if does_entity_exist(this_vehicle)
if is_vehicle_driveable(this_vehicle)
set_entity_proofs(this_vehicle, false, false, false, false, false)
restore_vehicle_health(this_vehicle)
endif
endif
endproc
proc setup_mission_ped_and_vehicle_proofs(ped_index &mission_ped, vehicle_index &mission_car)
setup_ped_proofs(mission_ped)
setup_vehicle_proofs(mission_car)
endproc
func bool HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(ped_index miss_ped)
if does_entity_exist(miss_ped)
if not is_ped_injured(miss_ped)
if HAVE_ALL_STREAMING_REQUESTS_COMPLETED(miss_ped)
return true
endif
endif
endif
return false
endfunc
//****************************************END OF LAWRENCE SDK****************************************
//**************************************** WIDGETS****************************************
#IF IS_DEBUG_BUILD
bool widget_reset_cutscene = false
bool widget_create_object = false
bool widget_modify = false
bool widget_entity_camera_active = false
bool widget_vehicle_colour_active = false
bool widget_reset_recording = false
bool widget_vehicle_schafter2
bool widget_vehicle_sentinel
bool widget_vehicle_manana
bool widget_vehicle_speedo
bool widget_vehicle_Mule
bool widget_add_scenario_area
int widget_colour_0
int widget_colour_1
int widget_blip_alpha
float widget_temp_width
float widget_temp_height
float widget_temp_depth
float widget_angled_length
float widget_anim_speed = 1.0
float widget_heading
float widget_fov = 45.00
float widget_blip_scale
float widget_time_a
float widget_time_b
vector widget_offset_bl
vector widget_offset_br
vector widget_bl
vector widget_br
vector widget_object_pos
vector widget_object_rot
vector widget_object_pos_2
vector widget_object_rot_2
vector widget_cam_attach_offset
vector widget_cam_point_offset
vector widget_blip_pos
camera_index widget_camera
scenario_blocking_index widget_scenario_index
proc locate_widget()
vector widget_player_pos
widget_player_pos = GET_ENTITY_COORDS(player_ped_id())
IS_ENTITY_AT_COORD(player_ped_id(), widget_player_pos, <<widget_temp_width, widget_temp_depth, widget_temp_height>>, false, true)
endproc
proc angled_area_locate_widget()
widget_bl = get_offset_from_entity_in_world_coords(player_ped_id(), widget_offset_bl)
widget_br = get_offset_from_entity_in_world_coords(player_ped_id(), widget_offset_br)
IS_ENTITY_IN_ANGLED_AREA(player_ped_id(), widget_bl, widget_br, widget_angled_length, false, TRUE)
if widget_offset_br.z > 0.0
SET_ENTITY_HEADING(player_ped_id(), widget_heading)
endif
endproc
proc attach_object_to_ped_and_move(ped_index mission_ped, object_index &mission_object)
if DOES_ENTITY_EXIST(mission_ped)
if not is_ped_injured(mission_ped)
if DOES_ENTITY_EXIST(mission_object)
ATTACH_ENTITY_TO_ENTITY(mission_object, mission_ped, bonetag_ph_r_hand, widget_object_pos, widget_object_rot)
endif
endif
endif
endproc
proc set_the_ped_anim_speed(ped_index mission_ped, string dict_name, string anim_name, float anim_speed)
if DOES_ENTITY_EXIST(mission_ped)
if not is_ped_injured(mission_ped)
if IS_ENTITY_PLAYING_ANIM(mission_ped, dict_name, anim_name)
SET_ENTITY_ANIM_SPEED(mission_ped, dict_name, anim_name, anim_speed)
endif
endif
endif
endproc
proc create_and_move_object(object_index &mission_object)
if DOES_ENTITY_EXIST(mission_object)
SET_ENTITY_COORDS_NO_OFFSET(mission_object, widget_object_pos)
SET_ENTITY_ROTATION(mission_object, widget_object_rot)
endif
endproc
proc create_and_move_object_2(object_index &mission_object)
if DOES_ENTITY_EXIST(mission_object)
SET_ENTITY_COORDS_NO_OFFSET(mission_object, widget_object_pos_2)
SET_ENTITY_ROTATION(mission_object, widget_object_rot_2)
endif
endproc
proc attach_object_to_object_and_move(object_index &parent_object, object_index &mission_object)
if DOES_ENTITY_EXIST(parent_object)
if DOES_ENTITY_EXIST(mission_object)
ATTACH_ENTITY_TO_ENTITY(mission_object, parent_object, -1, widget_object_pos_2, widget_object_rot_2)
endif
endif
endproc
proc create_and_move_pickup_widget(pickup_index &widget_mission_pickup, pickup_type pick_type, vector &pos, vector &rot)
if widget_create_object
if not widget_modify
widget_mission_pickup = create_pickup_rotate(pick_type, pos, rot, true)
widget_object_pos.x = pos.x
widget_object_pos.y = pos.y
widget_object_pos.z = pos.z
widget_object_rot.x = rot.x
widget_object_rot.y = rot.y
widget_object_rot.z = rot.z
widget_modify = true
else
if lk_timer(original_time, 500)
if does_pickup_exist(widget_mission_pickup)
remove_pickup(widget_mission_pickup)
else
widget_mission_pickup = create_pickup_rotate(pick_type, widget_object_pos, widget_object_rot, true)
endif
original_time = get_game_timer()
endif
endif
endif
endproc
proc camera_attached_to_entity_widget(entity_index mission_entity)
if widget_entity_camera_active
if not does_cam_exist(widget_camera)
widget_camera = create_cam("default_scripted_camera", false)
ATTACH_CAM_TO_ENTITY(widget_camera, mission_entity, widget_cam_attach_offset)
POINT_CAM_AT_ENTITY(widget_camera, mission_entity, widget_cam_point_offset)
set_cam_active(widget_camera, true)
render_script_cams(true, false)
else
ATTACH_CAM_TO_ENTITY(widget_camera, mission_entity, widget_cam_attach_offset)
POINT_CAM_AT_ENTITY(widget_camera, mission_entity, widget_cam_point_offset)
set_cam_fov(widget_camera, widget_fov)
endif
endif
endproc
proc blip_pos_scale_and_alpha_widget(blip_index &mission_blip)
if does_blip_exist(mission_blip)
set_blip_coords(mission_blip, widget_blip_pos)
set_blip_scale(mission_blip, widget_blip_scale)
set_blip_alpha(mission_blip, widget_blip_alpha)
else
mission_blip = add_blip_for_coord(widget_blip_pos)
set_blip_as_friendly(mission_blip, true)
endif
endproc
proc vehicle_colour_widget(vehicle_index mission_car)
if widget_vehicle_colour_active
if DOES_ENTITY_EXIST(mission_car)
if is_vehicle_driveable(mission_car)
set_vehicle_colours(mission_car, widget_colour_0, widget_colour_1)
endif
endif
endif
endproc
proc attach_entity_to_entity_widget(entity_index entity_0, entity_index entity_1, int bone)
if does_entity_exist(entity_0)
if does_entity_exist(entity_1)
ATTACH_ENTITY_TO_ENTITY(entity_0, entity_1, bone, widget_object_pos, widget_object_rot, FALSE)
endif
endif
endproc
PROC SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(VEHICLE_INDEX &veh, FLOAT fTime)
IF NOT IS_ENTITY_DEAD(veh)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(veh)
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(veh, fTime - GET_TIME_POSITION_IN_RECORDING(veh))
ENDIF
ENDIF
ENDPROC
proc add_scenario_blocking_area_widget()
if widget_add_scenario_area
remove_scenario_blocking_area(widget_scenario_index)
widget_scenario_index = add_scenario_blocking_area(widget_offset_bl, widget_offset_br)
widget_add_scenario_area = false
endif
endproc
//**************************************************WIDGETS**************************************************
proc load_lk_widgets()
family_4_widget_group = start_widget_group("family_4")
start_widget_group("locate widget")
add_widget_float_slider("width", widget_temp_width, -4000.0, 4000.0, 0.1)
add_widget_float_slider("depth", widget_temp_depth, -4000.0, 4000.0, 0.1)
add_widget_float_slider("height", widget_temp_height, -4000.0, 4000.0, 0.1)
stop_widget_group()
start_widget_group("angled_area")
add_widget_float_slider("left offset x", widget_offset_bl.x, -4000.0, 4000.0, 0.1)
add_widget_float_slider("left offset y", widget_offset_bl.y, -4000.0, 4000.0, 0.1)
add_widget_float_slider("left offset z", widget_offset_bl.z, -4000.0, 4000.0, 0.1)
add_widget_float_slider("right offset x", widget_offset_br.x, -4000.0, 4000.0, 0.1)
add_widget_float_slider("right offset y", widget_offset_br.y, -4000.0, 4000.0, 0.1)
add_widget_float_slider("right offset z", widget_offset_br.z, -4000.0, 4000.0, 0.1)
add_widget_float_slider("angled area length", widget_angled_length, -4000.0, 4000.0, 0.1)
add_widget_float_slider("heading", widget_heading, -4000.0, 4000.0, 0.1)
add_widget_float_read_only("widget_bl x", widget_bl.x)
add_widget_float_read_only("widget_bl y", widget_bl.y)
add_widget_float_read_only("widget_bl z", widget_bl.z)
add_widget_float_read_only("widget_br x", widget_br.x)
add_widget_float_read_only("widget_br y", widget_br.y)
add_widget_float_read_only("widget_br z", widget_br.z)
stop_widget_group()
start_widget_group("object attach to ped widget")
add_widget_float_slider("pos offset x", widget_object_pos.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos offset y", widget_object_pos.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos offset z", widget_object_pos.z, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot offset x", widget_object_rot.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot offset y", widget_object_rot.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot offset z", widget_object_rot.z, -3000.0, 3000.0, 0.01)
stop_widget_group()
start_widget_group("anim speed widget")
add_widget_float_slider("anim speed", widget_anim_speed, 0.1, 10.0, 0.01)
stop_widget_group()
start_widget_group("reset cutscene widget")
add_widget_bool("reset cutscene", widget_reset_cutscene)
stop_widget_group()
start_widget_group("object pos and rot widget")
add_widget_float_slider("pos x", widget_object_pos.x, -4000.0, 4000.0, 0.01)
add_widget_float_slider("pos y", widget_object_pos.y, -4000.0, 4000.0, 0.01)
add_widget_float_slider("pos z", widget_object_pos.z, -4000.0, 4000.0, 0.01)
add_widget_float_slider("rot x", widget_object_rot.x, -4000.0, 4000.0, 0.01)
add_widget_float_slider("rot y", widget_object_rot.y, -4000.0, 4000.0, 0.01)
add_widget_float_slider("rot z", widget_object_rot.z, -4000.0, 4000.0, 0.01)
stop_widget_group()
start_widget_group("object pos and rot widget 2")
add_widget_float_slider("pos x", widget_object_pos_2.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos y", widget_object_pos_2.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos z", widget_object_pos_2.z, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot x", widget_object_rot_2.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot y", widget_object_rot_2.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot z", widget_object_rot_2.z, -3000.0, 3000.0, 0.01)
stop_widget_group()
start_widget_group("attach object to object pos and rot widget")
add_widget_float_slider("pos x", widget_object_pos_2.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos y", widget_object_pos_2.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("pos z", widget_object_pos_2.z, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot x", widget_object_rot_2.x, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot y", widget_object_rot_2.y, -3000.0, 3000.0, 0.01)
add_widget_float_slider("rot z", widget_object_rot_2.z, -3000.0, 3000.0, 0.01)
stop_widget_group()
start_widget_group("create and move PICKUP inside interior")
ADD_WIDGET_bool("create_object", widget_create_object)
ADD_WIDGET_FLOAT_SLIDER("object pos x", widget_object_pos.x, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("object pos y", widget_object_pos.y, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("object pos z", widget_object_pos.z, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("object rotation x", widget_object_rot.x, 0.0, 360.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("object rotation y", widget_object_rot.y, 0.0, 360.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("object rotation z", widget_object_rot.z, 0.0, 360.0, 0.1)
stop_widget_group()
start_widget_group("camaera attached to entity widget")
add_widget_bool("create camera", widget_entity_camera_active)
ADD_WIDGET_FLOAT_SLIDER("pos x", widget_cam_attach_offset.x, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("pos y", widget_cam_attach_offset.y, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("pos z", widget_cam_attach_offset.z, -3000.0, 3000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("point offset x", widget_cam_point_offset.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("point offset y", widget_cam_point_offset.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("point offset z", widget_cam_point_offset.z, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("FOV", widget_fov, -3000.0, 3000.0, 0.1)
stop_widget_group()
start_widget_group("blip position, scale and alpha widget")
ADD_WIDGET_FLOAT_SLIDER("pos x", widget_blip_pos.x, -4000.0, 4000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("pos y", widget_blip_pos.y, -4000.0, 4000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("pos z", widget_blip_pos.z, -4000.0, 4000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("scale", widget_blip_scale, -1.0, 40.0, 0.01)
ADD_WIDGET_int_SLIDER("alpha", widget_blip_alpha, -1, 400, 1)
stop_widget_group()
start_widget_group("reset recording widget")
add_widget_bool("reset recording", widget_reset_recording)
stop_widget_group()
start_WIDGET_GROUP("vehicle colour")
ADD_WIDGET_bool("activate car colour", widget_vehicle_colour_active)
ADD_WIDGET_int_SLIDER("colour 0:", widget_colour_0, -50, 550, 1)
ADD_WIDGET_int_SLIDER("colour 1", widget_colour_1, -50, 550, 1)
stop_widget_group()
start_WIDGET_GROUP("attach entity to entity")
ADD_WIDGET_float_SLIDER("entity 0 pos.x:", widget_object_pos.x, -50.0, 350.0, 0.1)
ADD_WIDGET_float_SLIDER("entity 0 pos.y:", widget_object_pos.y, -50.0, 350.0, 0.1)
ADD_WIDGET_float_SLIDER("entity 0 pos.z:", widget_object_pos.z, -50.0, 350.0, 0.1)
ADD_WIDGET_float_SLIDER("entity 0 rot.x:", widget_object_rot.x, 0.0, 360.00, 0.1)
ADD_WIDGET_float_SLIDER("entity 0 rot.y:", widget_object_rot.y, 0.0, 360.00, 0.1)
ADD_WIDGET_float_SLIDER("entity 0 rot.z:", widget_object_rot.z, 0.0, 360.00, 0.1)
stop_widget_group()
start_WIDGET_GROUP("uber distances")
ADD_WIDGET_FLOAT_READ_ONLY("current_minimum_distance", current_minimum_distance)
ADD_WIDGET_FLOAT_READ_ONLY("current_ideal_distance", current_ideal_distance)
ADD_WIDGET_FLOAT_READ_ONLY("current_slow_down_distance", current_slow_down_distance)
ADD_WIDGET_int_READ_ONLY("current_slow_down_distance", uber_speed_status)
stop_widget_group()
start_WIDGET_GROUP("update vehicle recording times")
ADD_WIDGET_float_SLIDER("old recording time", widget_time_a, -50.0, 5000000.0, 100)
ADD_WIDGET_float_SLIDER("new recording time", widget_time_b, -50.0, 5000000.0, 100)
stop_widget_group()
start_WIDGET_GROUP("create vehicles")
ADD_WIDGET_bool("schafter2", widget_vehicle_schafter2)
ADD_WIDGET_bool("sentinel", widget_vehicle_sentinel)
ADD_WIDGET_bool("manana", widget_vehicle_manana)
ADD_WIDGET_bool("speedo", widget_vehicle_speedo)
ADD_WIDGET_bool("Mule", widget_vehicle_Mule)
stop_widget_group()
start_WIDGET_GROUP("scenario_blocking_area_widget")
add_widget_float_slider("scenario x", widget_offset_bl.x, -7000.0, 7000.0, 0.1)
add_widget_float_slider("scenario y", widget_offset_bl.y, -7000.0, 7000.0, 0.1)
add_widget_float_slider("scenario z", widget_offset_bl.z, -7000.0, 7000.0, 0.1)
add_widget_float_slider("scenario x", widget_offset_br.x, -7000.0, 7000.0, 0.1)
add_widget_float_slider("scenario y", widget_offset_br.y, -7000.0, 7000.0, 0.1)
add_widget_float_slider("scenario z", widget_offset_br.z, -7000.0, 7000.0, 0.1)
add_widget_bool("add scenario blocking area", widget_add_scenario_area)
stop_widget_group()
start_WIDGET_GROUP("dialogue staus debug")
ADD_WIDGET_int_READ_ONLY("dialogue_status", dialogue_status)
ADD_WIDGET_int_READ_ONLY("uber_chase_in_car_conversation", uber_chase_in_car_conversation)
stop_widget_group()
start_WIDGET_GROUP("status int's")
ADD_WIDGET_int_READ_ONLY("get_to_the_stadium_dialogue_system_status", get_to_the_stadium_dialogue_system_status)
ADD_WIDGET_int_READ_ONLY("get_to_the_stadium_status", get_to_the_stadium_status)
stop_widget_group()
stop_widget_group()
endproc
#endif
////****************************************VEHICLE FORCE WIDGET VARIABLES****************************************
#IF IS_DEBUG_BUILD
bool reset_vehicle_position = false
bool create_veh = false
bool apply_force_position = false
bool update_vehicle = false
bool original_creation = false
bool output_data = false
int force_status = 0
float force_multiplier = 1.0
float vehicle_rot
vector force_vec_a
vector force_vec_b
vector force_vec_ba
vector force_offset = <<0.0, 0.0, 0.0>>
vector angular_impulse
vehicle_index current_car
TEXT_WIDGET_ID widget_model_name
model_names vehicle_model
proc load_vehicle_force_widget_data()
set_current_widget_group(family_4_widget_group)
start_widget_group("vehicle force widget")
add_widget_bool("create_vehicle", create_veh)
add_widget_bool("reset vehicle position", reset_vehicle_position)
add_widget_bool("update vehicle model", update_vehicle)
widget_model_name = ADD_TEXT_WIDGET("Vehicle Model")
SET_CONTENTS_OF_TEXT_WIDGET(widget_model_name, "sultan")
ADD_WIDGET_FLOAT_SLIDER("vehicle pos.x", force_vec_a.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle pos.y", force_vec_a.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle pos.z", force_vec_a.z, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle rot", vehicle_rot, 0, 360, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle target pos.x", force_vec_b.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle target pos.y", force_vec_b.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle target pos.z", force_vec_b.z, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle force offset.x", force_offset.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle force offset.y", force_offset.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vehicle force offset.z", force_offset.z, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("angular force.x", angular_impulse.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("angular force.y", angular_impulse.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("angular force.z", angular_impulse.z, -3000.0, 3000.0, 0.1)
add_widget_float_slider("force multiplier", force_multiplier, 0.0, 200, 0.1)
add_widget_bool("apply force to vehicle", apply_force_position)
add_widget_bool("Output data to temp_debug.txt", output_data)
add_widget_string("")
add_widget_string("Data to input into function apply_force_to_car()")
ADD_WIDGET_FLOAT_SLIDER("vforce.x", force_vec_ba.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vforce.y", force_vec_ba.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("vforce.z", force_vec_ba.z, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("voffset.x", force_offset.x, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("voffset.y", force_offset.y, -3000.0, 3000.0, 0.1)
ADD_WIDGET_FLOAT_SLIDER("voffset.z", force_offset.z, -3000.0, 3000.0, 0.1)
stop_widget_group()
clear_current_widget_group(family_4_widget_group)
endproc
proc vehicle_force_system()
if reset_vehicle_position
force_status = 0
create_veh = true
update_vehicle = false
reset_vehicle_position = false
STOP_RECORDING_ALL_VEHICLES()
if DOES_ENTITY_EXIST(current_car)
DELETE_VEHICLE(current_car)
endif
clear_area(force_vec_a, 100, true)
endif
// if update_vehicle or mission_vehicle_injured(current_car)
// set_vehicle_as_no_longer_needed(current_car)
// DELETE_VEHICLE(current_car)
// create_veh = true
// force_status = 0
// update_vehicle = false
// endif
if output_data
OPEN_DEBUG_FILE()
save_string_to_debug_file("vForce = ")
SAVE_FLOAT_TO_DEBUG_FILE(force_vec_ba.x)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(force_vec_ba.y)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(force_vec_ba.z)
SAVE_NEWLINE_TO_DEBUG_FILE()
save_string_to_debug_file("vOffset = ")
SAVE_FLOAT_TO_DEBUG_FILE(force_offset.x)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(force_offset.y)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(force_offset.z)
SAVE_NEWLINE_TO_DEBUG_FILE()
CLOSE_DEBUG_FILE()
output_data = false
endif
//check script / draw debug lines and sphers
DRAW_MARKER(MARKER_CYLINDER, force_vec_b, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>, <<0.5, 0.5, 0.5>>, 255, 0, 128, 178)
switch force_status
case 0
if create_veh
vehicle_model = INT_TO_ENUM(model_names, GET_HASH_KEY(GET_CONTENTS_OF_TEXT_WIDGET(widget_model_name)))
IF NOT IS_MODEL_IN_CDIMAGE(vehicle_model)
SCRIPT_ASSERT("Vehicle model does not exist!")
else
if not has_model_loaded(vehicle_model)
request_model(vehicle_model)
else
if DOES_ENTITY_EXIST(current_car)
if is_vehicle_driveable(current_car)
SET_ENTITY_COORDS(current_car, force_vec_a)
SET_ENTITY_HEADING(current_car, vehicle_rot)
force_status++
endif
else
if not original_creation
if not is_ped_injured(player_ped_id())
force_vec_a = get_offset_from_entity_in_world_coords(player_ped_id(), <<0.0, 4.0, 2.5>>)
force_vec_b = get_offset_from_entity_in_world_coords(player_ped_id(), <<-1.0, 4.0, 0.0>>)
original_creation = true
endif
endif
current_car = create_vehicle(vehicle_model, force_vec_a, vehicle_rot)
set_model_as_no_longer_needed(vehicle_model)
SET_ENTITY_PROOFS(current_car, true, true, true, true, true)
force_status++
endif
endif
endif
endif
break
case 1
if apply_force_position
if START_RECORDING_VEHICLE(current_car, 0, "lkfamily4", true)
//get_car_coordinates(current_car, force_vec_a.x, force_vec_a.y, force_vec_a.z)
force_vec_ba = force_vec_b - force_vec_a
normalise_vector(force_vec_ba)
force_vec_ba.x *= force_multiplier
force_vec_ba.y *= force_multiplier
force_vec_ba.z *= force_multiplier
//*****TEMP WAIT TILL JACK COMES BACK AND GET HIM TO UPDATE CODE
// angular_impulse.x *= 60
// angular_impulse.y *= 60
// angular_impulse.z *= 60
APPLY_FORCE_TO_ENTITY(current_car, APPLY_TYPE_EXTERNAL_IMPULSE, force_vec_ba, force_offset, 0, false, true, true)
//APPLY_FORCE_TO_ENTITY(current_car, APPLY_TYPE_IMPULSE, force_vec_ba, force_offset, 0, false, true, true)
APPLY_FORCE_TO_ENTITY(current_car, APPLY_TYPE_ANGULAR_IMPULSE, angular_impulse, <<0.0, 0.0, 0.0>>, 0, TRUE, TRUE, TRUE)
apply_force_position = false
force_status++
endif
else
SET_ENTITY_HEADING(current_car, vehicle_rot)
SET_ENTITY_COORDS_NO_OFFSET(current_car, force_vec_a)
endif
break
case 3
break
endswitch
endproc
proc create_uber_vehicles_widget()
if widget_vehicle_schafter2
vehicle_model = schafter2
endif
if widget_vehicle_sentinel
vehicle_model = sentinel
endif
if widget_vehicle_manana
vehicle_model = manana
endif
if widget_vehicle_speedo
vehicle_model = speedo
endif
if widget_vehicle_Mule
vehicle_model = Mule
endif
if widget_vehicle_schafter2
or widget_vehicle_sentinel
or widget_vehicle_manana
or widget_vehicle_speedo
or widget_vehicle_Mule
request_model(vehicle_model)
if has_model_loaded(vehicle_model)
vehicle_index temp_vehicle
clear_ped_tasks_immediately(player_ped_id())
clear_area(get_entity_coords(player_ped_id()), 100, true)
temp_vehicle = create_vehicle(vehicle_model, get_offset_from_entity_in_world_coords(player_ped_id(), <<0.0, 5.0, 1.0>>))
set_ped_into_vehicle(player_ped_id(), temp_vehicle)
set_vehicle_as_no_longer_needed(temp_vehicle)
set_model_as_no_longer_needed(vehicle_model)
widget_vehicle_schafter2 = false
widget_vehicle_sentinel = false
widget_vehicle_manana = false
widget_vehicle_speedo = false
widget_vehicle_Mule = false
endif
endif
endproc
#endif
//**************************************** END VEHICLE FORCE WIDGET ****************************************
//**************************************************LOCAL MISSION FUNCTIONS**************************************************
proc remove_vehicle_recordings()
remove_vehicle_recording(001, "lkfamily4")
remove_vehicle_recording(002, "lkfamily4")
remove_vehicle_recording(003, "lkfamily4")
remove_vehicle_recording(004, "lkfamily4")
remove_vehicle_recording(005, "lkfamily4")
remove_vehicle_recording(006, "lkfamily4")
remove_vehicle_recording(007, "lkfamily4")
remove_vehicle_recording(008, "lkfamily4")
remove_vehicle_recording(009, "lkfamily4")
remove_vehicle_recording(010, "lkfamily4")
remove_vehicle_recording(011, "lkfamily4")
remove_vehicle_recording(012, "lkfamily4")
remove_vehicle_recording(013, "lkfamily4")
remove_vehicle_recording(014, "lkfamily4")
remove_vehicle_recording(015, "lkfamily4")
remove_vehicle_recording(016, "lkfamily4")
remove_vehicle_recording(017, "lkfamily4")
remove_vehicle_recording(018, "lkfamily4")
remove_vehicle_recording(019, "lkfamily4")
remove_vehicle_recording(020, "lkfamily4")
remove_vehicle_recording(021, "lkfamily4")
remove_vehicle_recording(022, "lkfamily4")
remove_vehicle_recording(023, "lkfamily4")
remove_vehicle_recording(024, "lkfamily4")
// remove_vehicle_recording(025, "lkfamily4")
remove_vehicle_recording(026, "lkfamily4")
remove_vehicle_recording(027, "lkfamily4")
remove_vehicle_recording(028, "lkfamily4")
remove_vehicle_recording(029, "lkfamily4")
remove_vehicle_recording(030, "lkfamily4")
remove_vehicle_recording(031, "lkfamily4")
remove_vehicle_recording(032, "lkfamily4")
remove_vehicle_recording(033, "lkfamily4")
remove_vehicle_recording(034, "lkfamily4")
remove_vehicle_recording(035, "lkfamily4")
remove_vehicle_recording(036, "lkfamily4")
remove_vehicle_recording(037, "lkfamily4")
remove_vehicle_recording(038, "lkfamily4")
remove_vehicle_recording(039, "lkfamily4")
remove_vehicle_recording(040, "lkfamily4")
remove_vehicle_recording(041, "lkfamily4")
remove_vehicle_recording(042, "lkfamily4")
remove_vehicle_recording(043, "lkfamily4")
// remove_vehicle_recording(044, "lkfamily4")
remove_vehicle_recording(045, "lkfamily4")
remove_vehicle_recording(046, "lkfamily4")
remove_vehicle_recording(047, "lkfamily4")
remove_vehicle_recording(048, "lkfamily4")
remove_vehicle_recording(049, "lkfamily4")
remove_vehicle_recording(050, "lkfamily4")
remove_vehicle_recording(051, "lkfamily4")
remove_vehicle_recording(052, "lkfamily4")
remove_vehicle_recording(053, "lkfamily4")
remove_vehicle_recording(054, "lkfamily4")
remove_vehicle_recording(055, "lkfamily4")
remove_vehicle_recording(056, "lkfamily4")
remove_vehicle_recording(057, "lkfamily4")
remove_vehicle_recording(058, "lkfamily4")
remove_vehicle_recording(059, "lkfamily4")
remove_vehicle_recording(060, "lkfamily4")
remove_vehicle_recording(061, "lkfamily4")
remove_vehicle_recording(062, "lkfamily4")
remove_vehicle_recording(063, "lkfamily4")
remove_vehicle_recording(064, "lkfamily4")
remove_vehicle_recording(065, "lkfamily4")
remove_vehicle_recording(066, "lkfamily4")
// remove_vehicle_recording(067, "lkfamily4")
// remove_vehicle_recording(068, "lkfamily4")
remove_vehicle_recording(069, "lkfamily4")
remove_vehicle_recording(070, "lkfamily4")
remove_vehicle_recording(071, "lkfamily4")
remove_vehicle_recording(072, "lkfamily4")
remove_vehicle_recording(073, "lkfamily4")
remove_vehicle_recording(074, "lkfamily4")
remove_vehicle_recording(075, "lkfamily4")
remove_vehicle_recording(076, "lkfamily4")
remove_vehicle_recording(077, "lkfamily4")
// remove_vehicle_recording(078, "lkfamily4")
// remove_vehicle_recording(079, "lkfamily4")
remove_vehicle_recording(080, "lkfamily4")
remove_vehicle_recording(081, "lkfamily4")
remove_vehicle_recording(082, "lkfamily4")
remove_vehicle_recording(083, "lkfamily4")
remove_vehicle_recording(084, "lkfamily4")
remove_vehicle_recording(085, "lkfamily4")
remove_vehicle_recording(086, "lkfamily4")
remove_vehicle_recording(087, "lkfamily4")
remove_vehicle_recording(088, "lkfamily4")
remove_vehicle_recording(089, "lkfamily4")
remove_vehicle_recording(090, "lkfamily4")
remove_vehicle_recording(091, "lkfamily4")
remove_vehicle_recording(092, "lkfamily4")
remove_vehicle_recording(093, "lkfamily4")
remove_vehicle_recording(094, "lkfamily4")
remove_vehicle_recording(095, "lkfamily4")
remove_vehicle_recording(096, "lkfamily4")
remove_vehicle_recording(097, "lkfamily4")
remove_vehicle_recording(098, "lkfamily4")
remove_vehicle_recording(099, "lkfamily4")
remove_vehicle_recording(100, "lkfamily4")
remove_vehicle_recording(101, "lkfamily4")
remove_vehicle_recording(102, "lkfamily4")
remove_vehicle_recording(103, "lkfamily4")
remove_vehicle_recording(104, "lkfamily4")
remove_vehicle_recording(105, "lkfamily4")
remove_vehicle_recording(106, "lkfamily4")
remove_vehicle_recording(107, "lkfamily4")
remove_vehicle_recording(108, "lkfamily4")
remove_vehicle_recording(109, "lkfamily4")
remove_vehicle_recording(110, "lkfamily4")
remove_vehicle_recording(111, "lkfamily4")
remove_vehicle_recording(112, "lkfamily4")
remove_vehicle_recording(113, "lkfamily4")
remove_vehicle_recording(114, "lkfamily4")
remove_vehicle_recording(115, "lkfamily4")
remove_vehicle_recording(116, "lkfamily4")
remove_vehicle_recording(117, "lkfamily4")
remove_vehicle_recording(118, "lkfamily4")
remove_vehicle_recording(119, "lkfamily4")
remove_vehicle_recording(120, "lkfamily4")
remove_vehicle_recording(121, "lkfamily4")
remove_vehicle_recording(122, "lkfamily4")
remove_vehicle_recording(123, "lkfamily4")
remove_vehicle_recording(124, "lkfamily4")
remove_vehicle_recording(125, "lkfamily4")
remove_vehicle_recording(126, "lkfamily4")
remove_vehicle_recording(127, "lkfamily4")
remove_vehicle_recording(128, "lkfamily4")
remove_vehicle_recording(129, "lkfamily4")
remove_vehicle_recording(130, "lkfamily4")
remove_vehicle_recording(131, "lkfamily4")
remove_vehicle_recording(132, "lkfamily4")
remove_vehicle_recording(133, "lkfamily4")
remove_vehicle_recording(134, "lkfamily4")
remove_vehicle_recording(135, "lkfamily4")
remove_vehicle_recording(136, "lkfamily4")
remove_vehicle_recording(137, "lkfamily4")
remove_vehicle_recording(138, "lkfamily4")
remove_vehicle_recording(139, "lkfamily4")
remove_vehicle_recording(140, "lkfamily4")
remove_vehicle_recording(301, "lkfamily4")
remove_vehicle_recording(302, "lkfamily4")
remove_vehicle_recording(401, "lkfamily4")
remove_vehicle_recording(402, "lkfamily4")
endproc
PROC REMOVE_VEHICLE(VEHICLE_INDEX &veh, BOOL b_force_delete = FALSE)
IF DOES_ENTITY_EXIST(veh)
IF IS_VEHICLE_DRIVEABLE(veh)
IF IS_ENTITY_ATTACHED(veh)
DETACH_ENTITY(veh)
ENDIF
ENDIF
IF IS_ENTITY_A_MISSION_ENTITY(veh) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(veh, false)
if is_player_playing(player_id())
if is_vehicle_driveable(veh)
if not is_ped_sitting_in_vehicle(player_ped_id(), veh)
IF b_force_delete
DELETE_VEHICLE(veh)
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
ENDIF
else
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
endif
else
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
endif
else
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh) //can't delete vehicle with player in it. Fail system requires player to be in car can't use clear_ped_tasks_immediaely()
endif
endif
ENDIF
ENDPROC
proc remove_all_vehicles()
int i = 0
REMOVE_VEHICLE(michaels_car.veh)
REMOVE_VEHICLE(lazlows_car.veh)
REMOVE_VEHICLE(temp_lazlows_car)
REMOVE_VEHICLE(truck.veh)
REMOVE_VEHICLE(trailer.veh)
for i = 0 to count_of(parked_truck) - 1
REMOVE_VEHICLE(parked_truck[i].veh)
REMOVE_VEHICLE(parked_trailer[i].veh)
endfor
REMOVE_VEHICLE(ambient_car, true)
REMOVE_VEHICLE(ambient_car_2)
REMOVE_VEHICLE(ambient_car_3)
REMOVE_VEHICLE(ambient_car_4)
REMOVE_VEHICLE(ambient_car_5)
for i = 0 to count_of(broken_down_cars) - 1
REMOVE_VEHICLE(broken_down_cars[i])
endfor
endproc
proc remove_all_mission_assets()
int i = 0
SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE)
if IS_CUTSCENE_PLAYING()
STOP_CUTSCENE()
else
REMOVE_CUTSCENE()
endif
while is_cutscene_active()
wait(0)
endwhile
REMOVE_CUTSCENE()
if does_cam_exist(lazlow_cam)
destroy_cam(lazlow_cam)
render_script_cams(false, false)
endif
kill_chase_hint_cam(chase_hint_cam)
clear_ped_tasks_immediately(player_ped_id())
clear_player_wanted_level(player_id())
clear_mission_locate_stuff(locates_data)
//CLEAR_ADDITIONAL_TEXT()
remove_ped_for_dialogue(scripted_speech, 0)
remove_ped_for_dialogue(scripted_speech, 2)
remove_ped_for_dialogue(scripted_speech, 4)
RELEASE_MISSION_AUDIO_BANK()
stop_audio_scenes()
trigger_music_event("FAM4_MISSION_FAIL")
REPLAY_CANCEL_EVENT()
cleanup_uber_playback(true)
remove_all_vehicles()
if does_blip_exist(michaels_blip)
remove_blip(michaels_blip)
endif
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
delete_ped(selector_ped.pedID[selector_ped_michael])
endif
set_model_as_no_longer_needed(michael.model)
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
delete_ped(selector_ped.pedID[selector_ped_trevor])
endif
set_model_as_no_longer_needed(trevor.model)
if does_entity_exist(lazlow.ped)
delete_ped(lazlow.ped)
endif
set_model_as_no_longer_needed(lazlow.model)
if does_particle_fx_looped_exist(lazlows_car_ptfx)
stop_particle_fx_looped(lazlows_car_ptfx)
endif
// if does_particle_fx_looped_exist(truck_ptfx)
// stop_particle_fx_looped(truck_ptfx)
// endif
if does_entity_exist(tracey.ped)
DELETE_ped(tracey.ped)
endif
set_model_as_no_longer_needed(tracey.model)
if does_entity_exist(michaels_car.veh)
if not DOES_ENTITY_BELONG_TO_THIS_SCRIPT(michaels_car.veh, false)
set_entity_as_mission_entity(michaels_car.veh, true, true)
endif
delete_vehicle(michaels_car.veh)
endif
if does_entity_exist(truck.veh)
DELETE_VEHICLE(truck.veh)
endif
set_model_as_no_longer_needed(truck.model)
if does_entity_exist(trailer.veh)
DELETE_VEHICLE(trailer.veh)
endif
set_model_as_no_longer_needed(trailer.model)
for i = 0 to count_of(parked_truck) - 1
if does_entity_exist(parked_truck[i].veh)
DELETE_VEHICLE(parked_truck[i].veh)
endif
if does_entity_exist(parked_trailer[i].veh)
DELETE_VEHICLE(parked_trailer[i].veh)
endif
endfor
if does_entity_exist(ambient_car)
DELETE_VEHICLE(ambient_car)
endif
if does_entity_exist(ambient_car_2)
DELETE_VEHICLE(ambient_car_2)
endif
if does_entity_exist(ambient_car_3)
DELETE_VEHICLE(ambient_car_3)
endif
if does_entity_exist(ambient_car_4)
DELETE_VEHICLE(ambient_car_4)
endif
if does_entity_exist(ambient_car_5)
DELETE_VEHICLE(ambient_car_5)
endif
for i = 0 to count_of(ambient_ped) - 1
delete_ped(ambient_ped[i].ped)
set_model_as_no_longer_needed(ambient_ped[i].model)
REMOVE_FORCED_OBJECT(ambient_ped[i].pos, 0.5, V_ILev_Chair02_ped)
endfor
if does_entity_exist(ambient_driver.ped)
delete_ped(ambient_driver.ped)
endif
set_model_as_no_longer_needed(ambient_driver.model)
if does_entity_exist(truck_driver.ped)
delete_ped(truck_driver.ped)
set_model_as_no_longer_needed(truck_driver.model)
endif
if does_entity_exist(groopie.ped)
delete_ped(groopie.ped)
set_model_as_no_longer_needed(groopie.model)
endif
if does_entity_exist(cylinder_truck.veh)
DELETE_VEHICLE(cylinder_truck.veh)
set_model_as_no_longer_needed(cylinder_truck.model)
endif
if does_entity_exist(clip_board.obj)
set_model_as_no_longer_needed(clip_board.model)
delete_object(clip_board.obj)
endif
delete_all_trains()
for i = 0 to count_of(broken_down_cars) - 1
if does_entity_exist(broken_down_cars[i])
DELETE_VEHICLE(broken_down_cars[i])
endif
endfor
if is_valid_interior(stadium_interior)
unpin_interior(stadium_interior)
endif
if is_valid_interior(michaels_house_interior)
unpin_interior(michaels_house_interior)
endif
set_model_as_no_longer_needed(towtruck)
set_model_as_no_longer_needed(sentinel)
set_model_as_no_longer_needed(schafter2)
set_model_as_no_longer_needed(manana)
remove_anim_dict("veh@truck@ds@idle_panic")
remove_vehicle_recordings()
SET_PED_WALLA_DENSITY(0,0)
endproc
proc delete_all_mission_assets()
int i = 0
clear_ped_tasks_immediately(player_ped_id())
clear_mission_locate_stuff(locates_data)
cleanup_uber_playback(true)
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
delete_ped(selector_ped.pedID[selector_ped_michael])
endif
set_model_as_no_longer_needed(michael.model)
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
delete_ped(selector_ped.pedID[selector_ped_trevor])
endif
set_model_as_no_longer_needed(trevor.model)
if does_entity_exist(lazlow.ped)
delete_ped(lazlow.ped)
endif
set_model_as_no_longer_needed(lazlow.model)
if does_entity_exist(tracey.ped)
DELETE_ped(tracey.ped)
endif
set_model_as_no_longer_needed(tracey.model)
for i = 0 to count_of(ambient_ped) - 1
SET_PED_AS_NO_LONGER_NEEDED(ambient_ped[i].ped)
set_model_as_no_longer_needed(ambient_ped[i].model)
REMOVE_FORCED_OBJECT(ambient_ped[i].pos, 0.5, V_ILev_Chair02_ped)
endfor
if does_entity_exist(truck_driver.ped)
delete_ped(truck_driver.ped)
endif
if does_entity_exist(clip_board.obj)
delete_object(clip_board.obj)
endif
if does_entity_exist(groopie.ped)
delete_ped(groopie.ped)
endif
remove_all_vehicles()
set_model_as_no_longer_needed(lazlows_car.model)
set_model_as_no_longer_needed(truck.model)
set_model_as_no_longer_needed(trailer.model)
set_model_as_no_longer_needed(towtruck)
if does_particle_fx_looped_exist(lazlows_car_ptfx)
stop_particle_fx_looped(lazlows_car_ptfx)
endif
// if does_particle_fx_looped_exist(truck_ptfx)
// stop_particle_fx_looped(truck_ptfx)
// endif
delete_all_trains()
if does_blip_exist(michaels_blip)
remove_blip(michaels_blip)
endif
endproc
proc mission_cleanup()
kill_any_conversation()
set_fake_wanted_level(0)
set_max_wanted_level(6)
set_create_random_cops(true)
set_wanted_level_multiplier(1.0)
SET_STATIC_EMITTER_ENABLED("SE_MICHAELS_HOUSE_RADIO", true)//enabling radio after disabling it for mocap
RELEASE_SUPPRESSED_EMERGENCY_CALLS()
SET_ALL_RANDOM_PEDS_FLEE(player_id(), false)
DISABLE_CHEAT(CHEAT_TYPE_FAST_RUN, FALSE)
if DOES_ENTITY_EXIST(truck.veh)
if is_vehicle_driveable(truck.veh)
set_vehicle_tyres_can_burst(truck.veh, true)
endif
endif
if DOES_ENTITY_EXIST(trailer.veh)
if is_vehicle_driveable(trailer.veh)
set_vehicle_tyres_can_burst(trailer.veh, true)
endif
endif
set_vehicle_model_is_suppressed(truck.model, false)
set_vehicle_model_is_suppressed(trailer.model, false)
if does_cam_exist(lazlow_cam)
destroy_cam(lazlow_cam)
render_script_cams(false, false)
endif
kill_chase_hint_cam(chase_hint_cam)
REMOVE_WAYPOINT_RECORDING("family4_0")
REMOVE_WAYPOINT_RECORDING("family4_1")
remove_waypoint_recording("family4_2")
ASSISTED_MOVEMENT_remove_ROUTE("fame1")
SET_CINEMATIC_BUTTON_ACTIVE(true)
SET_VEHICLE_POPULATION_BUDGET(3)
#if is_debug_build
STOP_RECORDING_ALL_VEHICLES()
#endif
set_time_scale(1.0)
SET_RANDOM_TRAINS(true)
cleanup_uber_playback(false)
clear_mission_locate_stuff(locates_data, true)
enable_dispatch_services()
SET_SHOP_IS_TEMPORARILY_UNAVAILABLE(HAIRDO_SHOP_02_SC, false)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-365.5, -2063.4, 100.00>>, <<-141.4, -1837.0, -100.00>>, true)
trigger_music_event("FAM4_MISSION_FAIL")
// if does_entity_exist(selector_ped.pedID[selector_ped_franklin])
// if not is_ped_injured(selector_ped.pedID[selector_ped_franklin])
// set_ped_can_ragdoll(selector_ped.pedID[selector_ped_franklin], true)
// endif
// endif
//SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(v_62_aud_door02, <<-242.6, -2005.5, 24.8>>, false, 0)
//SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(v_62_aud_door01, <<-243.1, -2007.8, 24.8>>, false, 0)
SET_BUILDING_STATE(BUILDINGNAME_IPL_STADIUM_INTERIOR, BUILDINGSTATE_NORMAL, true)
SET_PED_WALLA_DENSITY(0,0)
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_DEFAULT)
terminate_this_thread()
endproc
proc mission_passed()
Mission_Flow_Mission_Passed()
clear_player_wanted_level(player_id())
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, FALSE)
AWARD_ACHIEVEMENT_FOR_MISSION(ACH01) // Who needs enemies
mission_cleanup()
endproc
proc mission_failed()
delete_all_mission_assets()
MISSION_CLEANUP()
endproc
proc initialise_mission_variables()
int i = 0
#IF IS_DEBUG_BUILD
menu_stage_selector[0].sTxtLabel = "Family 4 start of mission"
menu_stage_selector[1].sTxtLabel = "outside stadium - family_4_mcs_2"
menu_stage_selector[2].sTxtLabel = "run after lazlow"
menu_stage_selector[3].sTxtLabel = "Chase truck"
menu_stage_selector[4].sTxtLabel = "half way through chase"
menu_stage_selector[5].sTxtLabel = "Final Mocap - Family_4_MCS_3_concat"
#endif
stop_mission_fail_checks = false
police_car_created = false
lazlow_chase_cam_active = false
help_text_on = false
reminder_help_played = false
train_cutscene_playing = false
trailer_cutscene_playing = false
//storm_drain_cutscene_playing = false
//waypoint_playback_paused = false
//mocap_requested = false
resume_lower_priority_conversation = false
force_buddy_to_run = false
apply_fail_wanted_level = false
player_arrived_in_a_vehicle = false
allow_switch_to_contiune = false
taxi_drop_off_set_for_get_to_the_stadium = false
trigger_switch_effect_to_trevor = false
deactivate_truck_blipping_system = false
new_load_scene_activated_for_michaels_house = false
original_time = 0
truck_wanted_status = 0
uber_speed_status = 0
//cam_help_time = 0
train_system_status = 0
lazlow_ai_system_status = 0
run_after_lazlow_master_flow_system_status = 0
michael_ai_system_status = 0
//detach_trailer_system_status = 0
detach_trailer_cutscene_status = 0
deatch_trailer_dialogue_status = 0
manual_car_recording_system_status = 0
create_parked_vehicles_status = 0
dialogue_status = 0
cleanup_asset_status = 0
intro_mocap_status = 0
play_final_mocap_status = 0
get_to_the_stadium_status = 0
family_4_detach_trailer_status = 0
get_to_the_stadium_dialogue_system_status = 0
set_piece_driver_ai_status = 0
ambient_train_system_status = 0
uber_chase_in_car_conversation = 0
family_4_play_stadium_mocap_status = 0
family_4_storm_drain_cutscene_status = 0
trigger_storm_drain_cutscene_status = 0
run_after_lazlow_dialogue_system_status = 0
lazlow_ai_system_2_status = 0
groupie_ai_system_status = 0
truck_driver_ai_system_2_status = 0
family_4_record_lazlow_status = 0
tracey_ai_system_status = 0
//lazlow_cam_time = 0
dialogue_time = 0
fail_time = 0
detach_trailer_help_text_system_status = 0
get_to_stadium_audio_scene_system_status = 0
run_after_lazlow_audio_scene_system_status = 0
uber_chase_audio_system_status = 0
truck_driver_ai_system_status = 0
lazlow_horn_time = 0
run_after_lazlow_walla_system_status = 0
storm_drain_lane = 0
family_4_trevor_leadin_status = 0
ambient_ped_flee_time = 0
create_entities_outside_stadium_status = 0
detach_trailer_time = 0
create_vehicles_outside_stadium_status = 0
run_after_lazlow_switch_effect_status = 0
lazlow_cam_dialogue_counter = 0
disired_playback_speed = 1.0
#IF IS_DEBUG_BUILD
get_to_the_stadium_skip_status = 0
set_piece_recording_system_status = 0
run_after_lazlo_skip_status = 0
#endif
michaels_car.model = get_player_veh_model(char_michael)
michaels_car.pos = <<-823.5428, 181.3025, 70.6662>>
michaels_car.heading = 142.8150
amandas_car.model = GET_NPC_VEH_MODEL(char_amanda)
amandas_car.pos = <<-814.9363, 159.0206, 70.1653>>
amandas_car.heading = 111.4780
tracey.model = get_npc_ped_model(char_tracey)
tracey.pos = <<-235.6421, -2002.9620, 23.7019>>
tracey.heading = 346.8777
trevor.model = get_player_ped_model(char_trevor)
trevor.pos = <<-821.6787, 177.1601, 70.4371>>
trevor.heading = 60.5512
lazlow.model = get_npc_ped_model(char_lazlow)
lazlow.pos = <<-251.9397, -2015.8335, 29.1458>>//<<-255.1706, -2000.8589, 29.1458>> //<<-244.12, -2003.60, 23.69>>
lazlow.heading = 179.1901//209.1077//347.1136
michael.model = get_player_ped_model(char_michael)
michael.pos = <<-818.2477, 177.6348, 71.2278>>
michael.heading = 55.00
groopie.model = a_m_y_bevhills_02
groopie.pos = <<-225.6118, -2036.6278, 26.7552>>
groopie.heading = 234.7701
groopie.health = 200
groopie.weapon = weapontype_unarmed
groopie.created = false
clip_board.model = P_CS_Clipboard
camera_crew[0].pos = <<-238.6681, -1999.3461, 23.6856>>
camera_crew[0].heading = 228.3978
camera_crew[0].model = A_M_Y_BevHills_02
camera_crew[0].health = 200
camera_crew[0].weapon = weapontype_unarmed
camera_crew[1].pos = <<-239.6867, -2000.6594, 23.6857>>
camera_crew[1].heading = 291.4120
camera_crew[1].model = A_M_Y_BevHills_02
camera_crew[1].health = 200
camera_crew[1].weapon = weapontype_unarmed
truck_driver.model = A_M_Y_Hipster_03
truck_driver.created = false
ambient_driver.model = A_M_Y_Hipster_03
ambient_driver.created = false
micro_phone.model = Prop_V_BMike_01
video_camera.model = Prop_V_Cam_01
lazlows_car.pos = <<-228.9739, -2048.9016, 26.6199>>
lazlows_car.heading = 237.5635
lazlows_car.model = dilettante
truck.pos = <<-236.0620, -2061.1475, 26.6199>>
truck.heading = 312.1216
truck.model = phantom //phantom hauler
truck.health = 1500
truck.engine_health = 1500
truck.petrol_tank_health = 1500
trailer.pos = <<-236.0620, -2061.1475, 36.7554>>
trailer.heading = 312.1205
trailer.model = tvtrailer//docktrailer//trailers
trailer.health = 1500
trailer.engine_health = 1500
trailer.petrol_tank_health = 1500
parked_truck[0].pos = <<-201.8963, -2032.4478, 26.6203>>//<<-193.5531, -1979.4688, 26.6207>>
parked_truck[0].heading = 337.8227//180.8506
parked_truck[0].model = phantom //phantom hauler
parked_truck[1].pos = <<-182.2236, -2037.1106, 26.6207>>
parked_truck[1].heading = 159.8179
parked_truck[1].model = phantom //phantom hauler
parked_truck[2].pos = <<-194.6085, -2059.6265, 26.6199>>
parked_truck[2].heading = 323.6319
parked_truck[2].model = phantom //phantom hauler
parked_trailer[0].pos = <<-201.8963, -2032.4478, 26.6203>>//<<-193.5531, -1979.4688, 36.6204>>
parked_trailer[0].heading = 337.8227//180.8506
parked_trailer[0].model = tvtrailer//docktrailer//trailers
parked_trailer[1].pos = <<-182.2236, -2037.1106, 26.6207>>
parked_trailer[1].heading = 159.8179
parked_trailer[1].model = tvtrailer//tvtrailer//docktrailer//trailers
parked_trailer[2].pos = <<-194.6085, -2059.6265, 26.6199>>
parked_trailer[2].heading = 323.6319
parked_trailer[2].model = tvtrailer//tvtrailer//docktrailer//trailers
ambient_ped[0].pos = <<-251.91357, -2009.55750, 29.77090>>//<<-247.1424, -2013.0612, 29.1457>>
ambient_ped[0].heading = 7.2320
ambient_ped[0].model = A_M_Y_Hipster_03
ambient_ped[0].health = 200
ambient_ped[0].name = "ambient 0"
ambient_ped[1].pos = <<-253.35614, -2009.17676, 29.61563>>
ambient_ped[1].heading = 157.1295
ambient_ped[1].model = A_F_Y_Hipster_03
ambient_ped[1].health = 200
ambient_ped[1].name = "ambient 1"
ambient_ped[2].pos = <<-254.06537, -2008.93652, 29.61491>>
ambient_ped[2].heading = 346.0804
ambient_ped[2].model = A_M_Y_Hipster_03
ambient_ped[2].health = 200
ambient_ped[2].name = "ambient 2"
ambient_ped[3].pos = <<-252.69810, -2011.39661, 29.61507>>
ambient_ped[3].heading = 190.8480
ambient_ped[3].model = A_F_Y_Hipster_03
ambient_ped[3].health = 200
ambient_ped[3].name = "ambient 3"
ambient_ped[4].pos = <<-254.08226, -2010.93152, 29.61472>>
ambient_ped[4].heading = 137.1725
ambient_ped[4].model = A_M_Y_Hipster_03
ambient_ped[4].health = 200
ambient_ped[4].name = "ambient 4"
ambient_ped[5].pos = <<-256.99323, -2011.69604, 29.61485>>
ambient_ped[5].heading = 25.3523
ambient_ped[5].model = A_M_Y_Hipster_03
ambient_ped[5].health = 200
ambient_ped[5].run_to_pos = <<-264.8563, -2026.9689, 29.1457>>
ambient_ped[5].name = "ambient 5"
ambient_ped[6].pos = <<-254.78746, -2015.16748, 29.61569>>
ambient_ped[6].heading = 55.1177
ambient_ped[6].model = A_F_Y_Hipster_03
ambient_ped[6].health = 200
ambient_ped[6].run_to_pos = <<-267.6687, -2026.7245, 29.1457>>
ambient_ped[6].name = "ambient 6"
ambient_ped[7].pos = <<-256.78110, -2016.88977, 29.61457>>
ambient_ped[7].heading = 61.2313
ambient_ped[7].model = A_F_Y_Hipster_03
ambient_ped[7].run_to_pos = <<-262.9180, -2015.7728, 29.1457>>
ambient_ped[7].health = 200
ambient_ped[7].name = "ambient 7"
ambient_ped[8].pos = <<-256.91928, -2019.32251, 29.61442>>
ambient_ped[8].heading = 53.5010
ambient_ped[8].model = A_F_Y_Hipster_03
ambient_ped[8].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[8].health = 200
ambient_ped[8].name = "ambient 8"
ambient_ped[9].pos = <<-261.9, -2012.4, 30.4>>
ambient_ped[9].heading = 53.5010
ambient_ped[9].model = A_M_Y_Hipster_03
ambient_ped[9].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[9].health = 200
ambient_ped[9].name = "ambient 9" //ATM
ambient_ped[10].pos = <<-253.39073, -2011.14832, 29.61450>>
ambient_ped[10].heading = 53.5010
ambient_ped[10].model = A_M_Y_Hipster_03
ambient_ped[10].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[10].health = 200
ambient_ped[10].name = "ambient 10"
ambient_ped[11].pos = <<-253.18893, -2013.81421, 29.61418>>
ambient_ped[11].heading = 53.5010
ambient_ped[11].model = A_F_Y_Hipster_03
ambient_ped[11].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[11].health = 200
ambient_ped[11].name = "ambient 11"
ambient_ped[12].pos = <<-254.51971, -2013.18542, 29.61651>>
ambient_ped[12].heading = 53.5010
ambient_ped[12].model = A_F_Y_Hipster_03
ambient_ped[12].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[12].health = 200
ambient_ped[12].name = "ambient 12"
ambient_ped[13].pos = <<-255.71133, -2012.37500, 29.61684>>
ambient_ped[13].heading = 53.5010
ambient_ped[13].model = A_M_Y_Hipster_03
ambient_ped[13].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[13].health = 200
ambient_ped[13].name = "ambient 13"
ambient_ped[14].pos = <<-256.03769, -2014.47168, 29.61486>>
ambient_ped[14].heading = 53.5010
ambient_ped[14].model = A_M_Y_Hipster_03
ambient_ped[14].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[14].health = 200
ambient_ped[14].name = "ambient 14"
ambient_ped[15].pos = <<-258.00876, -2018.37549, 29.61538>>
ambient_ped[15].heading = 53.5010
ambient_ped[15].model = A_F_Y_Hipster_03
ambient_ped[15].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[15].health = 200
ambient_ped[15].name = "ambient 15"
ambient_ped[16].pos = <<-258.58649, -2017.88989, 29.61535>>
ambient_ped[16].heading = 53.5010
ambient_ped[16].model = A_M_Y_Hipster_03
ambient_ped[16].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[16].health = 200
ambient_ped[16].name = "ambient 16"
ambient_ped[17].pos = <<-259.07278, -2017.37207, 29.61586>>
ambient_ped[17].heading = 53.5010
ambient_ped[17].model = A_F_Y_Hipster_03
ambient_ped[17].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[17].health = 200
ambient_ped[17].name = "ambient 17"
ambient_ped[18].pos = <<-259.38562, -2021.03564, 29.61567>>
ambient_ped[18].heading = 53.5010
ambient_ped[18].model = A_M_Y_Hipster_03
ambient_ped[18].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[18].health = 200
ambient_ped[18].name = "ambient 18"
ambient_ped[19].pos = <<-260.50043, -2020.14050, 29.61454>>
ambient_ped[19].heading = 53.5010
ambient_ped[19].model = A_M_Y_Hipster_03
ambient_ped[19].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[19].health = 200
ambient_ped[19].name = "ambient 19"
ambient_ped[20].pos = <<-260.61868, -2022.49890, 29.61511>>
ambient_ped[20].heading = 53.5010
ambient_ped[20].model = A_M_Y_Hipster_03
ambient_ped[20].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[20].health = 200
ambient_ped[20].name = "ambient 20"
ambient_ped[21].pos = <<-261.72968, -2021.56665, 29.61508>>
ambient_ped[21].heading = 53.5010
ambient_ped[21].model = A_F_Y_Hipster_03
ambient_ped[21].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[21].health = 200
ambient_ped[21].name = "ambient 21"
ambient_ped[22].pos = <<-262.80533, -2020.64758, 29.61561>>
ambient_ped[22].heading = 53.5010
ambient_ped[22].model = A_M_Y_Hipster_03
ambient_ped[22].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[22].health = 200
ambient_ped[22].name = "ambient 22"
ambient_ped[23].pos = <<-261.82846, -2023.94946, 29.61547>>
ambient_ped[23].heading = 53.5010
ambient_ped[23].model = A_F_Y_Hipster_03
ambient_ped[23].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[23].health = 200
ambient_ped[23].name = "ambient 23"
ambient_ped[24].pos = <<-262.92258, -2023.05359, 29.61676>>
ambient_ped[24].heading = 53.5010
ambient_ped[24].model = A_M_Y_Hipster_03
ambient_ped[24].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[24].health = 200
ambient_ped[24].name = "ambient 24"
ambient_ped[25].pos = <<-263.04446, -2025.40100, 29.61566>>
ambient_ped[25].heading = 53.5010
ambient_ped[25].model = A_M_Y_Hipster_03
ambient_ped[25].run_to_pos = <<-261.5929, -2013.7483, 29.1457>>
ambient_ped[25].health = 200
ambient_ped[25].name = "ambient 25"
security.model = s_m_y_doorman_01
train[0].pos = <<473.57, -1204.89, 29.3429>>
train[0].heading = 270.0
train[0].model = metrotrain//FREIGHT
train[0].recording_number = 4
train[1].pos = <<497.61, -1206.0, 29.0>>
train[1].heading = 322.00
train[1].model = TANKERCAR
train[2].pos = <<440.77, -1201.98, 33.0>>
train[2].model = FREIGHT
cylinder_truck.model = biff
cylinder_truck.pos = <<497.5658, -1094.8477, 28.0248>>
cylinder_truck.heading = 179.3035
cylinder_truck.recording_number = 7
cylinder[0].pos = <<458.3, -1084.37, 29.94>>
cylinder[0].model = PROP_GASCYL_01A //PROP_BARREL_01A //prop_gascyl_01a//Prop_barrel_Exp_01A//P_LD_Conc_Cyl_01
cylinder[0].offset = <<0.0, -2.53, 0.66>>
cylinder[0].offset_rot = <<0.0, 0.0, 90.00>>
cylinder[0].scale = 194000//19100.000000
cylinder[1].pos = <<458.3, -1084.37, 30.94>>
cylinder[1].model = prop_gascyl_01a//P_LD_Conc_Cyl_01
cylinder[1].offset = <<0.0, -1.740, 0.66>>
cylinder[1].offset_rot = <<0.0, 0.0, 90.00>>
cylinder[1].scale = 19700.000000
cylinder[2].pos = <<458.3, -1084.37, 31.94>>
cylinder[2].model = prop_gascyl_01a//Prop_barrel_Exp_01A//P_LD_Conc_Cyl_01
cylinder[2].offset = <<0.0, -0.910, 0.66>>
cylinder[2].offset_rot = <<0.0, 0.0, 90.00>>
cylinder[2].scale = 20000.000000
cylinder[3].pos = <<458.3, -1084.37, 32.94>>
cylinder[3].model = prop_gascyl_01a//Prop_barrel_Exp_01A//P_LD_Conc_Cyl_01
cylinder[3].offset = <<0.0, -0.1, 0.66>>
cylinder[3].offset_rot = <<0.0, 0.0, 90.00>>
cylinder[3].scale = 20300.000000
cylinder[4].pos = <<458.3, -1084.37, 33.94>>
cylinder[4].model = prop_gascyl_01a//Prop_barrel_Exp_01A//P_LD_Conc_Cyl_01
cylinder[4].offset = <<0.0, 0.72, 0.66>>
cylinder[4].offset_rot = <<0.0, 0.0, 90.00>>
cylinder[4].scale = 20600.000000
lazlows_jeans.model = P_Laz_J02_S
// cylinder[0].pos = <<458.3, -1084.37, 29.94>>
// cylinder[0].model = P_LD_Conc_Cyl_01
// cylinder[0].offset = <<0.0, 0.72, 0.66>>
// cylinder[0].offset_rot = <<0.0, 0.0, 90.00>>
// cylinder[0].scale = 20600.000000
//
// cylinder[1].pos = <<458.3, -1084.37, 30.94>>
// cylinder[1].model = P_LD_Conc_Cyl_01
// cylinder[1].offset = <<0.0, -0.1, 0.66>>
// cylinder[1].offset_rot = <<0.0, 0.0, 90.00>>
// cylinder[1].scale = 20300.000000
//
// cylinder[2].pos = <<458.3, -1084.37, 31.94>>
// cylinder[2].model = P_LD_Conc_Cyl_01
// cylinder[2].offset = <<0.0, -0.910, 0.66>>
// cylinder[2].offset_rot = <<0.0, 0.0, 90.00>>
// cylinder[2].scale = 20000.000000
//
// cylinder[3].pos = <<458.3, -1084.37, 32.94>>
// cylinder[3].model = P_LD_Conc_Cyl_01
// cylinder[3].offset = <<0.0, -1.740, 0.66>>
// cylinder[3].offset_rot = <<0.0, 0.0, 90.00>>
// cylinder[3].scale = 19700.000000
//
// cylinder[4].pos = <<458.3, -1084.37, 33.94>>
// cylinder[4].model = P_LD_Conc_Cyl_01
// cylinder[4].offset = <<0.0, -2.53, 0.66>>
// cylinder[4].offset_rot = <<0.0, 0.0, 90.00>>
// cylinder[4].scale = 19400.000000
for i = 0 to count_of(cylinder) - 1
cylinder_object_status[i] = 0
endfor
for i = 0 to count_of(ambient_ped_status) - 1
ambient_ped_status[i] = play_reaction_anim_during_cutscene//get_into_position
ambient_ped[i].created = false
endfor
// for i = 0 to count_of(camera_crew) - 1
// camera_crew_ai_status[i] = 0
// endfor
endproc
proc load_text_and_dialogue()
register_script_with_audio()
if not has_this_additional_text_loaded("fam4aud", mission_dialogue_text_slot)
request_additional_text("fam4aud", mission_dialogue_text_slot)
endif
if not has_this_additional_text_loaded("family4", mission_text_slot)
request_additional_text("family4", mission_text_slot)
endif
while not has_additional_text_loaded(mission_text_slot)
or not has_additional_text_loaded(mission_dialogue_text_slot)
wait(0)
endwhile
endproc
//new time addition = (new time - old time) 6800 - 6000 = 800 add 800 onto setpiece car time
// 20000 - 18000 = -2000 remove 2000 to get the car to trigger earlier
proc load_uber_data()
// **** UBER RECORDED SET PIECE CARS ****
// TrafficCarPos[0] = <<-164.4686, -2056.1094, 23.8370>>
// TrafficCarQuatX[0] = -0.0710
// TrafficCarQuatY[0] = 0.0019
// TrafficCarQuatZ[0] = -0.1413
// TrafficCarQuatW[0] = 0.9874
// TrafficCarRecording[0] = 80
// TrafficCarStartime[0] = 3500.0000
// TrafficCarModel[0] = schafter2
// **** UBER RECORDED TRAFFIC ****
TrafficCarPos[0] = <<-206.0217, -1880.7305, 27.4747>>
TrafficCarQuatX[0] = -0.0032
TrafficCarQuatY[0] = -0.0196
TrafficCarQuatZ[0] = 0.9262
TrafficCarQuatW[0] = -0.3766
TrafficCarRecording[0] = 2
TrafficCarStartime[0] = 6000.0000
TrafficCarModel[0] = sentinel
TrafficCarPos[1] = <<-243.0447, -1852.2184, 28.4643>>
TrafficCarQuatX[1] = -0.0366
TrafficCarQuatY[1] = -0.0132
TrafficCarQuatZ[1] = 0.9692
TrafficCarQuatW[1] = -0.2433
TrafficCarRecording[1] = 3
TrafficCarStartime[1] = 7000.0000
TrafficCarModel[1] = manana
TrafficCarPos[2] = <<-276.6977, -1841.8983, 26.6822>>
TrafficCarQuatX[2] = 0.0378
TrafficCarQuatY[2] = -0.0052
TrafficCarQuatZ[2] = -0.6626
TrafficCarQuatW[2] = 0.7480
TrafficCarRecording[2] = 4
TrafficCarStartime[2] = 9500.0000
TrafficCarModel[2] = schafter2
TrafficCarPos[3] = <<-263.7085, -1834.5907, 27.6854>>
TrafficCarQuatX[3] = 0.0243
TrafficCarQuatY[3] = -0.0221
TrafficCarQuatZ[3] = -0.5941
TrafficCarQuatW[3] = 0.8037
TrafficCarRecording[3] = 72
TrafficCarStartime[3] = 10000.0000
TrafficCarModel[3] = schafter2
TrafficCarPos[4] = <<-293.1659, -1838.3026, 25.6359>>
TrafficCarQuatX[4] = 0.0270
TrafficCarQuatY[4] = -0.0221
TrafficCarQuatZ[4] = -0.6649
TrafficCarQuatW[4] = 0.7461
TrafficCarRecording[4] = 5
TrafficCarStartime[4] = 12000.0000
TrafficCarModel[4] = manana
TrafficCarPos[5] = <<-291.3370, -1843.3103, 25.4949>>
TrafficCarQuatX[5] = 0.0439
TrafficCarQuatY[5] = -0.0029
TrafficCarQuatZ[5] = -0.6870
TrafficCarQuatW[5] = 0.7253
TrafficCarRecording[5] = 6
TrafficCarStartime[5] = 12000.0000
TrafficCarModel[5] = sentinel
TrafficCarPos[6] = <<-338.9504, -1830.9271, 23.1457>>
TrafficCarQuatX[6] = -0.0179
TrafficCarQuatY[6] = 0.0108
TrafficCarQuatZ[6] = 0.7347
TrafficCarQuatW[6] = -0.6781
TrafficCarRecording[6] = 7
TrafficCarStartime[6] = 13000.0000
TrafficCarModel[6] = schafter2
TrafficCarPos[7] = <<-153.5809, -1718.4812, 29.8741>>
TrafficCarQuatX[7] = -0.0115
TrafficCarQuatY[7] = -0.0252
TrafficCarQuatZ[7] = 0.9155
TrafficCarQuatW[7] = -0.4014
TrafficCarRecording[7] = 8
TrafficCarStartime[7] = 13250.0000
TrafficCarModel[7] = speedo
TrafficCarPos[8] = <<-120.4816, -1714.1544, 29.1332>>
TrafficCarQuatX[8] = 0.0088
TrafficCarQuatY[8] = 0.0254
TrafficCarQuatZ[8] = 0.9429
TrafficCarQuatW[8] = 0.3320
TrafficCarRecording[8] = 9
TrafficCarStartime[8] = 15000.0000
TrafficCarModel[8] = sentinel
TrafficCarPos[9] = <<-212.9735, -1810.0007, 29.4217>>
TrafficCarQuatX[9] = -0.0018
TrafficCarQuatY[9] = -0.0041
TrafficCarQuatZ[9] = -0.4979
TrafficCarQuatW[9] = 0.8672
TrafficCarRecording[9] = 69
TrafficCarStartime[9] = 15000.0000
TrafficCarModel[9] = manana
TrafficCarPos[10] = <<-72.3315, -1654.2415, 28.8377>>
TrafficCarQuatX[10] = 0.0003
TrafficCarQuatY[10] = 0.0006
TrafficCarQuatZ[10] = 0.9405
TrafficCarQuatW[10] = 0.3397
TrafficCarRecording[10] = 73
TrafficCarStartime[10] = 17000.0000
TrafficCarModel[10] = manana
TrafficCarPos[11] = <<-53.5047, -1623.8011, 28.6285>>
TrafficCarQuatX[11] = -0.0239
TrafficCarQuatY[11] = 0.0097
TrafficCarQuatZ[11] = 0.9455
TrafficCarQuatW[11] = 0.3246
TrafficCarRecording[11] = 74
TrafficCarStartime[11] = 17100.0000
TrafficCarModel[11] = sentinel
TrafficCarPos[12] = <<-14.4963, -1698.9298, 28.8408>>
TrafficCarQuatX[12] = 0.0013
TrafficCarQuatY[12] = 0.0006
TrafficCarQuatZ[12] = 0.8138
TrafficCarQuatW[12] = 0.5812
TrafficCarRecording[12] = 10
TrafficCarStartime[12] = 18000.0000
TrafficCarModel[12] = manana
TrafficCarPos[13] = <<-81.5279, -1756.8303, 29.3488>>
TrafficCarQuatX[13] = -0.0096
TrafficCarQuatY[13] = -0.0131
TrafficCarQuatZ[13] = -0.1676
TrafficCarQuatW[13] = 0.9857
TrafficCarRecording[13] = 71
TrafficCarStartime[13] = 20500.0000
TrafficCarModel[13] = speedo
TrafficCarPos[14] = <<2.0713, -1646.3097, 28.8887>>
TrafficCarQuatX[14] = -0.0161
TrafficCarQuatY[14] = -0.0094
TrafficCarQuatZ[14] = 0.9179
TrafficCarQuatW[14] = -0.3963
TrafficCarRecording[14] = 11
TrafficCarStartime[14] = 22000.0000
TrafficCarModel[14] = schafter2
TrafficCarPos[15] = <<-34.5467, -1718.3431, 28.8460>>
TrafficCarQuatX[15] = 0.0102
TrafficCarQuatY[15] = 0.0177
TrafficCarQuatZ[15] = -0.5537
TrafficCarQuatW[15] = 0.8325
TrafficCarRecording[15] = 12
TrafficCarStartime[15] = 22000.0000
TrafficCarModel[15] = schafter2
TrafficCarPos[16] = <<108.9714, -1704.7122, 28.6355>>
TrafficCarQuatX[16] = -0.0080
TrafficCarQuatY[16] = 0.0172
TrafficCarQuatZ[16] = 0.4206
TrafficCarQuatW[16] = 0.9070
TrafficCarRecording[16] = 62
TrafficCarStartime[16] = 24500.0000
TrafficCarModel[16] = manana
TrafficCarPos[17] = <<217.4134, -1616.3182, 28.8266>>
TrafficCarQuatX[17] = -0.0075
TrafficCarQuatY[17] = 0.0182
TrafficCarQuatZ[17] = 0.4621
TrafficCarQuatW[17] = 0.8866
TrafficCarRecording[17] = 63
TrafficCarStartime[17] = 25500.0000
TrafficCarModel[17] = schafter2
TrafficCarPos[18] = <<-5.5010, -1694.9628, 28.8337>>
TrafficCarQuatX[18] = -0.0037
TrafficCarQuatY[18] = -0.0040
TrafficCarQuatZ[18] = 0.8342
TrafficCarQuatW[18] = 0.5514
TrafficCarRecording[18] = 83
TrafficCarStartime[18] = 25900.0000
TrafficCarModel[18] = manana
TrafficCarPos[19] = <<157.9259, -1603.9789, 29.0520>>
TrafficCarQuatX[19] = -0.0020
TrafficCarQuatY[19] = -0.0002
TrafficCarQuatZ[19] = 0.8672
TrafficCarQuatW[19] = 0.4979
TrafficCarRecording[19] = 14
TrafficCarStartime[19] = 26000.0000
TrafficCarModel[19] = speedo
TrafficCarPos[20] = <<297.3597, -1518.5847, 28.6524>>
TrafficCarQuatX[20] = -0.0133
TrafficCarQuatY[20] = 0.0080
TrafficCarQuatZ[20] = 0.8617
TrafficCarQuatW[20] = 0.5071
TrafficCarRecording[20] = 64
TrafficCarStartime[20] = 27500.0000
TrafficCarModel[20] = sentinel
TrafficCarPos[21] = <<235.9646, -1635.4471, 28.7485>>
TrafficCarQuatX[21] = -0.0094
TrafficCarQuatY[21] = 0.0210
TrafficCarQuatZ[21] = 0.4102
TrafficCarQuatW[21] = 0.9117
TrafficCarRecording[21] = 15
TrafficCarStartime[21] = 28000.0000
TrafficCarModel[21] = manana
TrafficCarPos[22] = <<188.7709, -1558.2264, 28.5961>>
TrafficCarQuatX[22] = -0.0025
TrafficCarQuatY[22] = 0.0043
TrafficCarQuatZ[22] = 0.9477
TrafficCarQuatW[22] = -0.3190
TrafficCarRecording[22] = 16
TrafficCarStartime[22] = 29000.0000
TrafficCarModel[22] = sentinel
TrafficCarPos[23] = <<277.7000, -1491.5587, 29.0148>>
TrafficCarQuatX[23] = -0.0140
TrafficCarQuatY[23] = -0.0069
TrafficCarQuatZ[23] = 0.9238
TrafficCarQuatW[23] = -0.3825
TrafficCarRecording[23] = 65
TrafficCarStartime[23] = 31000.0000
TrafficCarModel[23] = speedo
TrafficCarPos[24] = <<381.9591, -1474.3505, 28.7077>>
TrafficCarQuatX[24] = -0.0003
TrafficCarQuatY[24] = 0.0011
TrafficCarQuatZ[24] = 0.8734
TrafficCarQuatW[24] = 0.4870
TrafficCarRecording[24] = 66
TrafficCarStartime[24] = 33000.0000
TrafficCarModel[24] = sentinel
TrafficCarPos[25] = <<338.1085, -1464.6277, 29.0680>>
TrafficCarQuatX[25] = 0.0073
TrafficCarQuatY[25] = -0.0125
TrafficCarQuatZ[25] = 0.9359
TrafficCarQuatW[25] = -0.3519
TrafficCarRecording[25] = 68
TrafficCarStartime[25] = 33000.0000
TrafficCarModel[25] = manana
TrafficCarPos[26] = <<412.8397, -1456.0123, 28.9169>>
TrafficCarQuatX[26] = -0.0006
TrafficCarQuatY[26] = 0.0005
TrafficCarQuatZ[26] = 0.8832
TrafficCarQuatW[26] = 0.4689
TrafficCarRecording[26] = 17
TrafficCarStartime[26] = 34000.0000
TrafficCarModel[26] = schafter2
TrafficCarPos[27] = <<433.0769, -1418.8912, 28.6627>>
TrafficCarQuatX[27] = -0.0150
TrafficCarQuatY[27] = -0.0062
TrafficCarQuatZ[27] = 0.9995
TrafficCarQuatW[27] = -0.0262
TrafficCarRecording[27] = 18
TrafficCarStartime[27] = 36000.0000
TrafficCarModel[27] = sentinel
TrafficCarPos[28] = <<268.1830, -1477.3182, 28.9245>>
TrafficCarQuatX[28] = -0.0002
TrafficCarQuatY[28] = -0.0006
TrafficCarQuatZ[28] = 0.9097
TrafficCarQuatW[28] = -0.4152
TrafficCarRecording[28] = 67
TrafficCarStartime[28] = 36700.0000
TrafficCarModel[28] = schafter2
TrafficCarPos[29] = <<412.7635, -1395.7159, 29.0825>>
TrafficCarQuatX[29] = 0.0050
TrafficCarQuatY[29] = -0.0104
TrafficCarQuatZ[29] = 0.9080
TrafficCarQuatW[29] = -0.4188
TrafficCarRecording[29] = 76
TrafficCarStartime[29] = 37500.0000
TrafficCarModel[29] = schafter2
TrafficCarPos[30] = <<533.9572, -1398.3364, 28.7811>>
TrafficCarQuatX[30] = -0.0186
TrafficCarQuatY[30] = 0.0001
TrafficCarQuatZ[30] = 0.9985
TrafficCarQuatW[30] = 0.0517
TrafficCarRecording[30] = 19
TrafficCarStartime[30] = 38500.0000
TrafficCarModel[30] = manana
TrafficCarPos[31] = <<528.0538, -1428.0734, 28.7182>>
TrafficCarQuatX[31] = -0.0005
TrafficCarQuatY[31] = -0.0001
TrafficCarQuatZ[31] = 0.6927
TrafficCarQuatW[31] = 0.7212
TrafficCarRecording[31] = 75
TrafficCarStartime[31] = 40100.0000
TrafficCarModel[31] = sentinel
TrafficCarPos[32] = <<472.6559, -1260.8285, 29.6180>>
TrafficCarQuatX[32] = -0.0105
TrafficCarQuatY[32] = 0.0036
TrafficCarQuatZ[32] = -0.6968
TrafficCarQuatW[32] = 0.7172
TrafficCarRecording[32] = 21
TrafficCarStartime[32] = 47500.0000
TrafficCarModel[32] = Mule
TrafficCarPos[33] = <<500.1397, -1274.9419, 28.8656>>
TrafficCarQuatX[33] = -0.0159
TrafficCarQuatY[33] = 0.0001
TrafficCarQuatZ[33] = 0.9992
TrafficCarQuatW[33] = -0.0378
TrafficCarRecording[33] = 20
TrafficCarStartime[33] = 48500.0000
TrafficCarModel[33] = schafter2
TrafficCarPos[34] = <<498.5310, -1126.8260, 28.7957>>
TrafficCarQuatX[34] = -0.0130
TrafficCarQuatY[34] = 0.0020
TrafficCarQuatZ[34] = 0.9999
TrafficCarQuatW[34] = -0.0026
TrafficCarRecording[34] = 22
TrafficCarStartime[34] = 49000.0000
TrafficCarModel[34] = sentinel
TrafficCarPos[35] = <<502.8969, -737.7939, 24.4451>>
TrafficCarQuatX[35] = -0.0153
TrafficCarQuatY[35] = -0.0009
TrafficCarQuatZ[35] = 0.9991
TrafficCarQuatW[35] = 0.0390
TrafficCarRecording[35] = 23
TrafficCarStartime[35] = 62000.0000
TrafficCarModel[35] = schafter2
TrafficCarPos[36] = <<466.5153, -679.8666, 26.6178>>
TrafficCarQuatX[36] = 0.0065
TrafficCarQuatY[36] = -0.0422
TrafficCarQuatZ[36] = 0.7491
TrafficCarQuatW[36] = -0.6610
TrafficCarRecording[36] = 24
TrafficCarStartime[36] = 63500.0000
TrafficCarModel[36] = manana
TrafficCarPos[37] = <<406.9349, -710.4351, 28.6729>>
TrafficCarQuatX[37] = 0.0005
TrafficCarQuatY[37] = 0.0125
TrafficCarQuatZ[37] = -0.0197
TrafficCarQuatW[37] = 0.9997
TrafficCarRecording[37] = 25
TrafficCarStartime[37] = 68500.0000
TrafficCarModel[37] = sentinel
TrafficCarPos[38] = <<335.3656, -738.0789, 28.8257>>
TrafficCarQuatX[38] = 0.0009
TrafficCarQuatY[38] = 0.0002
TrafficCarQuatZ[38] = -0.1776
TrafficCarQuatW[38] = 0.9841
TrafficCarRecording[38] = 26
TrafficCarStartime[38] = 71500.0000
TrafficCarModel[38] = manana
TrafficCarPos[39] = <<372.9934, -611.9315, 28.2991>>
TrafficCarQuatX[39] = -0.0142
TrafficCarQuatY[39] = 0.0084
TrafficCarQuatZ[39] = 0.9689
TrafficCarQuatW[39] = 0.2470
TrafficCarRecording[39] = 27
TrafficCarStartime[39] = 71700.0000
TrafficCarModel[39] = sentinel
TrafficCarPos[40] = <<366.9933, -632.9999, 28.6681>>
TrafficCarQuatX[40] = 0.0013
TrafficCarQuatY[40] = 0.0090
TrafficCarQuatZ[40] = 0.9814
TrafficCarQuatW[40] = 0.1915
TrafficCarRecording[40] = 28
TrafficCarStartime[40] = 72000.0000
TrafficCarModel[40] = schafter2
TrafficCarPos[41] = <<390.9968, -591.7441, 28.3359>>
TrafficCarQuatX[41] = -0.0010
TrafficCarQuatY[41] = 0.0075
TrafficCarQuatZ[41] = 0.9487
TrafficCarQuatW[41] = 0.3159
TrafficCarRecording[41] = 29
TrafficCarStartime[41] = 72500.0000
TrafficCarModel[41] = schafter2
TrafficCarPos[42] = <<212.6834, -606.1230, 28.5511>>
TrafficCarQuatX[42] = -0.0064
TrafficCarQuatY[42] = -0.0164
TrafficCarQuatZ[42] = 0.8544
TrafficCarQuatW[42] = -0.5194
TrafficCarRecording[42] = 30
TrafficCarStartime[42] = 73000.0000
TrafficCarModel[42] = manana
TrafficCarPos[43] = <<109.3219, -593.4142, 31.3559>>
TrafficCarQuatX[43] = 0.0013
TrafficCarQuatY[43] = 0.0075
TrafficCarQuatZ[43] = -0.1903
TrafficCarQuatW[43] = 0.9817
TrafficCarRecording[43] = 31
TrafficCarStartime[43] = 74500.0000
TrafficCarModel[43] = speedo
TrafficCarPos[44] = <<102.9036, -596.8571, 31.1318>>
TrafficCarQuatX[44] = 0.0005
TrafficCarQuatY[44] = -0.0020
TrafficCarQuatZ[44] = -0.1782
TrafficCarQuatW[44] = 0.9840
TrafficCarRecording[44] = 32
TrafficCarStartime[44] = 79000.0000
TrafficCarModel[44] = manana
TrafficCarPos[45] = <<-23.0533, -549.3762, 38.6333>>
TrafficCarQuatX[45] = -0.0020
TrafficCarQuatY[45] = -0.0357
TrafficCarQuatZ[45] = 0.7315
TrafficCarQuatW[45] = -0.6809
TrafficCarRecording[45] = 33
TrafficCarStartime[45] = 80000.0000
TrafficCarModel[45] = sentinel
TrafficCarPos[46] = <<-60.2264, -570.8044, 37.5655>>
TrafficCarQuatX[46] = 0.0763
TrafficCarQuatY[46] = 0.0013
TrafficCarQuatZ[46] = -0.1846
TrafficCarQuatW[46] = 0.9798
TrafficCarRecording[46] = 34
TrafficCarStartime[46] = 81500.0000
TrafficCarModel[46] = schafter2
TrafficCarPos[47] = <<-68.8900, -584.9039, 35.8065>>
TrafficCarQuatX[47] = 0.0228
TrafficCarQuatY[47] = -0.0029
TrafficCarQuatZ[47] = -0.1597
TrafficCarQuatW[47] = 0.9869
TrafficCarRecording[47] = 35
TrafficCarStartime[47] = 84000.0000
TrafficCarModel[47] = sentinel
TrafficCarPos[48] = <<5.5875, -324.5258, 44.1159>>
TrafficCarQuatX[48] = -0.0045
TrafficCarQuatY[48] = -0.0484
TrafficCarQuatZ[48] = 0.9805
TrafficCarQuatW[48] = 0.1906
TrafficCarRecording[48] = 37
TrafficCarStartime[48] = 85200.0000
TrafficCarModel[48] = schafter2
TrafficCarPos[49] = <<-5.0009, -276.8104, 46.5723>>
TrafficCarQuatX[49] = -0.0178
TrafficCarQuatY[49] = -0.0006
TrafficCarQuatZ[49] = 0.9544
TrafficCarQuatW[49] = -0.2980
TrafficCarRecording[49] = 38
TrafficCarStartime[49] = 90000.0000
TrafficCarModel[49] = sentinel
TrafficCarPos[50] = <<45.5980, -165.0067, 54.8493>>
TrafficCarQuatX[50] = -0.0080
TrafficCarQuatY[50] = -0.0223
TrafficCarQuatZ[50] = 0.8178
TrafficCarQuatW[50] = -0.5749
TrafficCarRecording[50] = 40
TrafficCarStartime[50] = 95000.0000
TrafficCarModel[50] = speedo
TrafficCarPos[51] = <<54.4349, -301.0910, 46.7789>>
TrafficCarQuatX[51] = -0.0185
TrafficCarQuatY[51] = -0.0310
TrafficCarQuatZ[51] = 0.8226
TrafficCarQuatW[51] = -0.5674
TrafficCarRecording[51] = 42
TrafficCarStartime[51] = 100000.0000
TrafficCarModel[51] = manana
TrafficCarPos[52] = <<186.4678, -334.2580, 43.6281>>
TrafficCarQuatX[52] = -0.0010
TrafficCarQuatY[52] = 0.0010
TrafficCarQuatZ[52] = 0.5602
TrafficCarQuatW[52] = 0.8283
TrafficCarRecording[52] = 43
TrafficCarStartime[52] = 101000.0000
TrafficCarModel[52] = schafter2
TrafficCarPos[53] = <<337.9920, -391.9135, 44.7304>>
TrafficCarQuatX[53] = 0.0021
TrafficCarQuatY[53] = 0.0021
TrafficCarQuatZ[53] = 0.5651
TrafficCarQuatW[53] = 0.8250
TrafficCarRecording[53] = 48
TrafficCarStartime[53] = 104000.0000
TrafficCarModel[53] = manana
TrafficCarPos[54] = <<196.7375, -313.3328, 43.7309>>
TrafficCarQuatX[54] = -0.0055
TrafficCarQuatY[54] = -0.0176
TrafficCarQuatZ[54] = 0.9897
TrafficCarQuatW[54] = 0.1420
TrafficCarRecording[54] = 46
TrafficCarStartime[54] = 106000.0000
TrafficCarModel[54] = schafter2
TrafficCarPos[55] = <<250.8725, -365.2076, 44.1542>>
TrafficCarQuatX[55] = -0.0174
TrafficCarQuatY[55] = -0.0052
TrafficCarQuatZ[55] = 0.8039
TrafficCarQuatW[55] = -0.5944
TrafficCarRecording[55] = 50
TrafficCarStartime[55] = 106000.0000
TrafficCarModel[55] = schafter2
TrafficCarPos[56] = <<319.1082, -346.9253, 45.8237>>
TrafficCarQuatX[56] = -0.0191
TrafficCarQuatY[56] = -0.0550
TrafficCarQuatZ[56] = 0.9719
TrafficCarQuatW[56] = 0.2282
TrafficCarRecording[56] = 47
TrafficCarStartime[56] = 106100.0000
TrafficCarModel[56] = sentinel
TrafficCarPos[57] = <<324.4210, -342.9175, 46.7807>>
TrafficCarQuatX[57] = -0.0172
TrafficCarQuatY[57] = -0.0711
TrafficCarQuatZ[57] = 0.9864
TrafficCarQuatW[57] = 0.1474
TrafficCarRecording[57] = 49
TrafficCarStartime[57] = 108000.0000
TrafficCarModel[57] = manana
TrafficCarPos[58] = <<451.9781, -337.0199, 47.2480>>
TrafficCarQuatX[58] = 0.0068
TrafficCarQuatY[58] = 0.0028
TrafficCarQuatZ[58] = 0.9618
TrafficCarQuatW[58] = 0.2738
TrafficCarRecording[58] = 52
TrafficCarStartime[58] = 111000.0000
TrafficCarModel[58] = speedo
TrafficCarPos[59] = <<423.7515, -307.0238, 49.6123>>
TrafficCarQuatX[59] = 0.0044
TrafficCarQuatY[59] = -0.0397
TrafficCarQuatZ[59] = 0.8441
TrafficCarQuatW[59] = -0.5346
TrafficCarRecording[59] = 53
TrafficCarStartime[59] = 111100.0000
TrafficCarModel[59] = manana
TrafficCarPos[60] = <<440.5575, -303.2848, 48.7468>>
TrafficCarQuatX[60] = 0.0190
TrafficCarQuatY[60] = -0.0290
TrafficCarQuatZ[60] = 0.8561
TrafficCarQuatW[60] = -0.5157
TrafficCarRecording[60] = 54
TrafficCarStartime[60] = 113100.0000
TrafficCarModel[60] = manana
TrafficCarPos[61] = <<438.0004, -307.1298, 48.8818>>
TrafficCarQuatX[61] = 0.0188
TrafficCarQuatY[61] = -0.0296
TrafficCarQuatZ[61] = 0.8477
TrafficCarQuatW[61] = -0.5293
TrafficCarRecording[61] = 55
TrafficCarStartime[61] = 115100.0000
TrafficCarModel[61] = schafter2
TrafficCarPos[62] = <<639.7904, -383.6028, 42.3535>>
TrafficCarQuatX[62] = 0.0190
TrafficCarQuatY[62] = -0.0018
TrafficCarQuatZ[62] = 0.5239
TrafficCarQuatW[62] = 0.8516
TrafficCarRecording[62] = 58
TrafficCarStartime[62] = 116000.0000
TrafficCarModel[62] = sentinel
TrafficCarPos[63] = <<690.0759, -415.4828, 40.4451>>
TrafficCarQuatX[63] = 0.0262
TrafficCarQuatY[63] = 0.0264
TrafficCarQuatZ[63] = 0.4536
TrafficCarQuatW[63] = 0.8904
TrafficCarRecording[63] = 59
TrafficCarStartime[63] = 120000.0000
TrafficCarModel[63] = schafter2
TrafficCarPos[64] = <<725.4980, -450.7779, 37.6910>>
TrafficCarQuatX[64] = 0.0197
TrafficCarQuatY[64] = 0.0206
TrafficCarQuatZ[64] = 0.4235
TrafficCarQuatW[64] = 0.9055
TrafficCarRecording[64] = 60
TrafficCarStartime[64] = 121000.0000
TrafficCarModel[64] = sentinel
TrafficCarPos[65] = <<717.0089, -436.9935, 38.4648>>
TrafficCarQuatX[65] = 0.0177
TrafficCarQuatY[65] = 0.0240
TrafficCarQuatZ[65] = 0.4359
TrafficCarQuatW[65] = 0.8995
TrafficCarRecording[65] = 61
TrafficCarStartime[65] = 121000.0000
TrafficCarModel[65] = manana
// **** UBER RECORDED PARKED CARS ****
ParkedCarPos[0] = <<25.7395, -1708.2628, 28.7747>>
ParkedCarQuatX[0] = 0.0000
ParkedCarQuatY[0] = 0.0000
ParkedCarQuatZ[0] = 0.2217
ParkedCarQuatW[0] = 0.9751
ParkedCarModel[0] = sentinel
ParkedCarPos[1] = <<383.5260, -1452.0549, 29.0287>>
ParkedCarQuatX[1] = 0.0142
ParkedCarQuatY[1] = 0.0098
ParkedCarQuatZ[1] = 0.2300
ParkedCarQuatW[1] = 0.9730
ParkedCarModel[1] = schafter2
ParkedCarPos[2] = <<486.8542, -1167.3306, 28.9366>>
ParkedCarQuatX[2] = 0.0000
ParkedCarQuatY[2] = 0.0000
ParkedCarQuatZ[2] = 0.7338
ParkedCarQuatW[2] = -0.6794
ParkedCarModel[2] = schafter2
ParkedCarPos[3] = <<458.2476, -639.8495, 28.1547>>
ParkedCarQuatX[3] = 0.0001
ParkedCarQuatY[3] = 0.0003
ParkedCarQuatZ[3] = 0.2649
ParkedCarQuatW[3] = 0.9643
ParkedCarModel[3] = schafter2
// **** UBER RECORDED SET PIECE CARS ****
SetPieceCarPos[0] = <<494.3779, -634.8876, 24.9650>>
SetPieceCarQuatX[0] = -0.0085
SetPieceCarQuatY[0] = 0.0132
SetPieceCarQuatZ[0] = 0.6339
SetPieceCarQuatW[0] = 0.7733
SetPieceCarRecording[0] = 137
SetPieceCarStartime[0] = 91000.0000
SetPieceCarRecordingSpeed[0] = 1.0000
SetPieceCarModel[0] = Phantom
SetPieceCarPos[1] = <<-76.4095, -606.6107, 35.8049>>
SetPieceCarQuatX[1] = -0.0004
SetPieceCarQuatY[1] = 0.0000
SetPieceCarQuatZ[1] = -0.1581
SetPieceCarQuatW[1] = 0.9874
SetPieceCarRecording[1] = 36
SetPieceCarStartime[1] = 84500.0000
SetPieceCarRecordingSpeed[1] = 1.0000
SetPieceCarModel[1] = manana
SetPieceCarPos[2] = <<-40.1297, -260.0975, 45.7146>>
SetPieceCarQuatX[2] = -0.0087
SetPieceCarQuatY[2] = 0.0118
SetPieceCarQuatZ[2] = 0.8115
SetPieceCarQuatW[2] = -0.5842
SetPieceCarRecording[2] = 39
SetPieceCarStartime[2] = 96000.0000
SetPieceCarRecordingSpeed[2] = 1.0000
SetPieceCarModel[2] = schafter2
SetPieceCarPos[3] = <<84.8523, -293.1762, 46.0589>>
SetPieceCarQuatX[3] = -0.0019
SetPieceCarQuatY[3] = 0.0293
SetPieceCarQuatZ[3] = 0.5779
SetPieceCarQuatW[3] = 0.8156
SetPieceCarRecording[3] = 41
SetPieceCarStartime[3] = 97000.0000
SetPieceCarRecordingSpeed[3] = 1.0000
SetPieceCarModel[3] = manana
SetPieceCarPos[4] = <<172.4911, -375.0501, 42.2740>>
SetPieceCarQuatX[4] = 0.0282
SetPieceCarQuatY[4] = -0.0032
SetPieceCarQuatZ[4] = -0.2149
SetPieceCarQuatW[4] = 0.9762
SetPieceCarRecording[4] = 44
SetPieceCarStartime[4] = 104000.0000
SetPieceCarRecordingSpeed[4] = 1.0000
SetPieceCarModel[4] = sentinel
SetPieceCarPos[5] = <<171.7265, -390.1432, 41.6091>>
SetPieceCarQuatX[5] = 0.0283
SetPieceCarQuatY[5] = -0.0041
SetPieceCarQuatZ[5] = -0.1949
SetPieceCarQuatW[5] = 0.9804
SetPieceCarRecording[5] = 45
SetPieceCarStartime[5] = 106000.0000
SetPieceCarRecordingSpeed[5] = 1.0000
SetPieceCarModel[5] = manana
SetPieceCarPos[6] = <<333.1232, -351.4108, 45.8325>>
SetPieceCarQuatX[6] = 0.0103
SetPieceCarQuatY[6] = -0.0667
SetPieceCarQuatZ[6] = 0.9862
SetPieceCarQuatW[6] = 0.1509
SetPieceCarRecording[6] = 51
SetPieceCarStartime[6] = 109000.0000
SetPieceCarRecordingSpeed[6] = 1.0000
SetPieceCarModel[6] = sentinel
SetPieceCarPos[7] = <<504.7013, -264.2179, 46.8504>>
SetPieceCarQuatX[7] = 0.0004
SetPieceCarQuatY[7] = -0.0199
SetPieceCarQuatZ[7] = 0.9636
SetPieceCarQuatW[7] = 0.2664
SetPieceCarRecording[7] = 56
SetPieceCarStartime[7] = 116000.0000
SetPieceCarRecordingSpeed[7] = 1.0000
SetPieceCarModel[7] = sentinel
SetPieceCarPos[8] = <<617.3689, -343.3064, 42.9542>>
SetPieceCarQuatX[8] = -0.0003
SetPieceCarQuatY[8] = -0.0011
SetPieceCarQuatZ[8] = 0.9826
SetPieceCarQuatW[8] = 0.1858
SetPieceCarRecording[8] = 57
SetPieceCarStartime[8] = 118000.0000
SetPieceCarRecordingSpeed[8] = 1.0000
SetPieceCarModel[8] = manana
SetPieceCarPos[9] = <<-164.4686, -2056.1094, 23.8370>>
SetPieceCarQuatX[9] = -0.0710
SetPieceCarQuatY[9] = 0.0019
SetPieceCarQuatZ[9] = -0.1413
SetPieceCarQuatW[9] = 0.9874
SetPieceCarRecording[9] = 80
SetPieceCarStartime[9] = 3500.0000
SetPieceCarRecordingSpeed[9] = 1.0000
SetPieceCarModel[9] = schafter2
SetPieceCarPos[10] = <<-48.2772, -1712.6143, 28.8332>>
SetPieceCarQuatX[10] = -0.0030
SetPieceCarQuatY[10] = -0.0045
SetPieceCarQuatZ[10] = 0.8231
SetPieceCarQuatW[10] = 0.5679
SetPieceCarRecording[10] = 13
SetPieceCarStartime[10] = 17900.0000
SetPieceCarRecordingSpeed[10] = 1.0000
SetPieceCarModel[10] = sentinel
SetPieceCarPos[11] = <<-77.0531, -1786.7689, 27.7276>>
SetPieceCarQuatX[11] = 0.0108
SetPieceCarQuatY[11] = 0.0247
SetPieceCarQuatZ[11] = 0.3258
SetPieceCarQuatW[11] = 0.9451
SetPieceCarRecording[11] = 82
SetPieceCarStartime[11] = 20000.0000
SetPieceCarRecordingSpeed[11] = 1.0000
SetPieceCarModel[11] = sentinel
SetPieceCarPos[12] = <<625.6348, -1433.3500, 29.9579>>
SetPieceCarQuatX[12] = -0.0056
SetPieceCarQuatY[12] = -0.0043
SetPieceCarQuatZ[12] = 0.7058
SetPieceCarQuatW[12] = 0.7084
SetPieceCarRecording[12] = 77
SetPieceCarStartime[12] = 42000.0000
SetPieceCarRecordingSpeed[12] = 1.0000
SetPieceCarModel[12] = schafter2
SetPieceCarPos[13] = <<648.6110, -1429.1584, 29.9931>>
SetPieceCarQuatX[13] = -0.0140
SetPieceCarQuatY[13] = 0.0060
SetPieceCarQuatZ[13] = 0.7031
SetPieceCarQuatW[13] = 0.7110
SetPieceCarRecording[13] = 78
SetPieceCarStartime[13] = 42200.0000
SetPieceCarRecordingSpeed[13] = 1.0000
SetPieceCarModel[13] = sentinel
SetPieceCarPos[14] = <<524.4578, -1438.7028, 28.7174>>
SetPieceCarQuatX[14] = -0.0011
SetPieceCarQuatY[14] = 0.0000
SetPieceCarQuatZ[14] = 0.7202
SetPieceCarQuatW[14] = -0.6938
SetPieceCarRecording[14] = 79
SetPieceCarStartime[14] = 41500.0000
SetPieceCarRecordingSpeed[14] = 1.0000
SetPieceCarModel[14] = sentinel
SetPieceCarPos[15] = <<559.7665, -1443.7693, 28.9727>>
SetPieceCarQuatX[15] = -0.0151
SetPieceCarQuatY[15] = -0.0034
SetPieceCarQuatZ[15] = 0.7189
SetPieceCarQuatW[15] = -0.6949
SetPieceCarRecording[15] = 83
SetPieceCarStartime[15] = 43000.0000
SetPieceCarRecordingSpeed[15] = 1.0000
SetPieceCarModel[15] = manana
SetPieceCarPos[16] = <<667.5609, -1432.7021, 30.4244>>
SetPieceCarQuatX[16] = -0.0045
SetPieceCarQuatY[16] = -0.0037
SetPieceCarQuatZ[16] = 0.7154
SetPieceCarQuatW[16] = 0.6987
SetPieceCarRecording[16] = 84
SetPieceCarStartime[16] = 43100.0000
SetPieceCarRecordingSpeed[16] = 1.0000
SetPieceCarModel[16] = manana
//start from recording number = 85
//dont use 80, 82
endproc
proc load_mission_vehicle_recordings()
request_vehicle_recording(001, "lkfamily4")
request_vehicle_recording(002, "lkfamily4")
request_vehicle_recording(003, "lkfamily4")
request_vehicle_recording(004, "lkfamily4")
request_vehicle_recording(005, "lkfamily4")
request_vehicle_recording(006, "lkfamily4")
request_vehicle_recording(007, "lkfamily4")
request_vehicle_recording(008, "lkfamily4")
request_vehicle_recording(009, "lkfamily4")
request_vehicle_recording(010, "lkfamily4")
request_vehicle_recording(011, "lkfamily4")
request_vehicle_recording(012, "lkfamily4")
request_vehicle_recording(013, "lkfamily4")
request_vehicle_recording(014, "lkfamily4")
request_vehicle_recording(015, "lkfamily4")
request_vehicle_recording(016, "lkfamily4")
request_vehicle_recording(017, "lkfamily4")
request_vehicle_recording(018, "lkfamily4")
request_vehicle_recording(019, "lkfamily4")
request_vehicle_recording(020, "lkfamily4")
request_vehicle_recording(021, "lkfamily4")
request_vehicle_recording(022, "lkfamily4")
request_vehicle_recording(023, "lkfamily4")
request_vehicle_recording(024, "lkfamily4")
//request_vehicle_recording(025, "lkfamily4")
request_vehicle_recording(026, "lkfamily4")
request_vehicle_recording(027, "lkfamily4")
request_vehicle_recording(028, "lkfamily4")
request_vehicle_recording(029, "lkfamily4")
request_vehicle_recording(030, "lkfamily4")
request_vehicle_recording(031, "lkfamily4")
request_vehicle_recording(032, "lkfamily4")
request_vehicle_recording(033, "lkfamily4")
request_vehicle_recording(034, "lkfamily4")
request_vehicle_recording(035, "lkfamily4")
request_vehicle_recording(036, "lkfamily4")
request_vehicle_recording(037, "lkfamily4")
request_vehicle_recording(038, "lkfamily4")
request_vehicle_recording(039, "lkfamily4")
request_vehicle_recording(040, "lkfamily4")
request_vehicle_recording(041, "lkfamily4")
request_vehicle_recording(042, "lkfamily4")
request_vehicle_recording(043, "lkfamily4")
//request_vehicle_recording(044, "lkfamily4")
request_vehicle_recording(045, "lkfamily4")
request_vehicle_recording(046, "lkfamily4")
request_vehicle_recording(047, "lkfamily4")
request_vehicle_recording(048, "lkfamily4")
request_vehicle_recording(049, "lkfamily4")
request_vehicle_recording(050, "lkfamily4")
request_vehicle_recording(051, "lkfamily4")
request_vehicle_recording(052, "lkfamily4")
request_vehicle_recording(053, "lkfamily4")
request_vehicle_recording(054, "lkfamily4")
request_vehicle_recording(055, "lkfamily4")
request_vehicle_recording(056, "lkfamily4")
request_vehicle_recording(057, "lkfamily4")
request_vehicle_recording(058, "lkfamily4")
request_vehicle_recording(059, "lkfamily4")
request_vehicle_recording(060, "lkfamily4")
request_vehicle_recording(061, "lkfamily4")
request_vehicle_recording(062, "lkfamily4")
request_vehicle_recording(063, "lkfamily4")
request_vehicle_recording(064, "lkfamily4")
request_vehicle_recording(065, "lkfamily4")
request_vehicle_recording(066, "lkfamily4")
//request_vehicle_recording(067, "lkfamily4")
//request_vehicle_recording(068, "lkfamily4")
request_vehicle_recording(069, "lkfamily4")
request_vehicle_recording(070, "lkfamily4")
request_vehicle_recording(071, "lkfamily4")
request_vehicle_recording(072, "lkfamily4")
request_vehicle_recording(073, "lkfamily4")
request_vehicle_recording(074, "lkfamily4")
request_vehicle_recording(075, "lkfamily4")
request_vehicle_recording(076, "lkfamily4")
request_vehicle_recording(077, "lkfamily4")
//request_vehicle_recording(078, "lkfamily4")
//request_vehicle_recording(079, "lkfamily4")
request_vehicle_recording(080, "lkfamily4")
request_vehicle_recording(081, "lkfamily4")
request_vehicle_recording(082, "lkfamily4")
request_vehicle_recording(083, "lkfamily4")
request_vehicle_recording(084, "lkfamily4")
request_vehicle_recording(085, "lkfamily4")
request_vehicle_recording(086, "lkfamily4")
request_vehicle_recording(087, "lkfamily4")
request_vehicle_recording(088, "lkfamily4")
request_vehicle_recording(089, "lkfamily4")
request_vehicle_recording(090, "lkfamily4")
request_vehicle_recording(091, "lkfamily4")
request_vehicle_recording(092, "lkfamily4")
request_vehicle_recording(093, "lkfamily4")
request_vehicle_recording(094, "lkfamily4")
request_vehicle_recording(095, "lkfamily4")
// request_vehicle_recording(096, "lkfamily4")
// request_vehicle_recording(097, "lkfamily4")
// request_vehicle_recording(098, "lkfamily4")
// request_vehicle_recording(099, "lkfamily4")
// request_vehicle_recording(100, "lkfamily4")
// request_vehicle_recording(101, "lkfamily4")
// request_vehicle_recording(102, "lkfamily4")
// request_vehicle_recording(103, "lkfamily4")
// request_vehicle_recording(104, "lkfamily4")
// request_vehicle_recording(105, "lkfamily4")
// request_vehicle_recording(106, "lkfamily4")
// request_vehicle_recording(107, "lkfamily4")
// request_vehicle_recording(108, "lkfamily4")
// request_vehicle_recording(109, "lkfamily4")
// request_vehicle_recording(110, "lkfamily4")
// request_vehicle_recording(111, "lkfamily4")
request_vehicle_recording(112, "lkfamily4")
// request_vehicle_recording(113, "lkfamily4")
// request_vehicle_recording(114, "lkfamily4")
// request_vehicle_recording(115, "lkfamily4")
// request_vehicle_recording(116, "lkfamily4")
// request_vehicle_recording(117, "lkfamily4")
// request_vehicle_recording(118, "lkfamily4")
// request_vehicle_recording(119, "lkfamily4")
// request_vehicle_recording(120, "lkfamily4")
// request_vehicle_recording(121, "lkfamily4")
// request_vehicle_recording(122, "lkfamily4")
// request_vehicle_recording(123, "lkfamily4")
// request_vehicle_recording(124, "lkfamily4")
// request_vehicle_recording(125, "lkfamily4")
// request_vehicle_recording(126, "lkfamily4")
// request_vehicle_recording(127, "lkfamily4")
// request_vehicle_recording(128, "lkfamily4")
// request_vehicle_recording(129, "lkfamily4")
// request_vehicle_recording(130, "lkfamily4")
// request_vehicle_recording(131, "lkfamily4")
// request_vehicle_recording(132, "lkfamily4")
// request_vehicle_recording(133, "lkfamily4")
// request_vehicle_recording(134, "lkfamily4")
// request_vehicle_recording(135, "lkfamily4")
// request_vehicle_recording(136, "lkfamily4")
request_vehicle_recording(137, "lkfamily4")
// request_vehicle_recording(138, "lkfamily4")
// request_vehicle_recording(139, "lkfamily4")
// request_vehicle_recording(140, "lkfamily4")
// request_vehicle_recording(001, "lkfamily4tr")
// request_vehicle_recording(002, "lkfamily4tr")
// request_vehicle_recording(003, "lkfamily4tr")
// request_vehicle_recording(004, "lkfamily4tr")
// request_vehicle_recording(005, "lkfamily4tr")
// request_vehicle_recording(006, "lkfamily4tr")
// request_vehicle_recording(007, "lkfamily4tr")
// request_vehicle_recording(008, "lkfamily4tr")
// request_vehicle_recording(011, "lkfamily4tr")
// request_vehicle_recording(012, "lkfamily4tr")
request_vehicle_recording(201, "lkfamily4")
request_vehicle_recording(202, "lkfamily4")
// request_vehicle_recording(203, "lkfamily4")
// request_vehicle_recording(204, "lkfamily4")
// request_vehicle_recording(205, "lkfamily4")
request_vehicle_recording(301, "lkfamily4")
request_vehicle_recording(302, "lkfamily4")
request_vehicle_recording(401, "lkfamily4")
request_vehicle_recording(402, "lkfamily4")
request_vehicle_recording(403, "lkfamily4")
request_vehicle_recording(404, "lkfamily4")
request_vehicle_recording(405, "lkfamily4")
request_vehicle_recording(406, "lkfamily4")
request_vehicle_recording(501, "lkfamily4")
request_vehicle_recording(502, "lkfamily4")
//recordings removed
// 096 - 111
// 113 = 136
// 138 - 140
endproc
func bool has_mission_vehicle_recordings_loaded()
if has_vehicle_recording_been_loaded(001, "lkfamily4")
and has_vehicle_recording_been_loaded(002, "lkfamily4")
and has_vehicle_recording_been_loaded(003, "lkfamily4")
and has_vehicle_recording_been_loaded(004, "lkfamily4")
and has_vehicle_recording_been_loaded(005, "lkfamily4")
and has_vehicle_recording_been_loaded(006, "lkfamily4")
and has_vehicle_recording_been_loaded(007, "lkfamily4")
and has_vehicle_recording_been_loaded(008, "lkfamily4")
and has_vehicle_recording_been_loaded(009, "lkfamily4")
and has_vehicle_recording_been_loaded(010, "lkfamily4")
and has_vehicle_recording_been_loaded(011, "lkfamily4")
and has_vehicle_recording_been_loaded(012, "lkfamily4")
and has_vehicle_recording_been_loaded(013, "lkfamily4")
and has_vehicle_recording_been_loaded(014, "lkfamily4")
and has_vehicle_recording_been_loaded(015, "lkfamily4")
and has_vehicle_recording_been_loaded(016, "lkfamily4")
and has_vehicle_recording_been_loaded(017, "lkfamily4")
and has_vehicle_recording_been_loaded(018, "lkfamily4")
and has_vehicle_recording_been_loaded(019, "lkfamily4")
and has_vehicle_recording_been_loaded(020, "lkfamily4")
and has_vehicle_recording_been_loaded(021, "lkfamily4")
and has_vehicle_recording_been_loaded(022, "lkfamily4")
and has_vehicle_recording_been_loaded(023, "lkfamily4")
and has_vehicle_recording_been_loaded(024, "lkfamily4")
//and has_vehicle_recording_been_loaded(025, "lkfamily4")
and has_vehicle_recording_been_loaded(026, "lkfamily4")
and has_vehicle_recording_been_loaded(027, "lkfamily4")
and has_vehicle_recording_been_loaded(028, "lkfamily4")
and has_vehicle_recording_been_loaded(029, "lkfamily4")
and has_vehicle_recording_been_loaded(030, "lkfamily4")
and has_vehicle_recording_been_loaded(031, "lkfamily4")
and has_vehicle_recording_been_loaded(032, "lkfamily4")
and has_vehicle_recording_been_loaded(033, "lkfamily4")
and has_vehicle_recording_been_loaded(034, "lkfamily4")
and has_vehicle_recording_been_loaded(035, "lkfamily4")
and has_vehicle_recording_been_loaded(036, "lkfamily4")
and has_vehicle_recording_been_loaded(037, "lkfamily4")
and has_vehicle_recording_been_loaded(038, "lkfamily4")
and has_vehicle_recording_been_loaded(039, "lkfamily4")
and has_vehicle_recording_been_loaded(040, "lkfamily4")
and has_vehicle_recording_been_loaded(041, "lkfamily4")
and has_vehicle_recording_been_loaded(042, "lkfamily4")
and has_vehicle_recording_been_loaded(043, "lkfamily4")
//and has_vehicle_recording_been_loaded(044, "lkfamily4")
and has_vehicle_recording_been_loaded(045, "lkfamily4")
and has_vehicle_recording_been_loaded(046, "lkfamily4")
and has_vehicle_recording_been_loaded(047, "lkfamily4")
and has_vehicle_recording_been_loaded(048, "lkfamily4")
and has_vehicle_recording_been_loaded(049, "lkfamily4")
and has_vehicle_recording_been_loaded(050, "lkfamily4")
and has_vehicle_recording_been_loaded(051, "lkfamily4")
and has_vehicle_recording_been_loaded(052, "lkfamily4")
and has_vehicle_recording_been_loaded(053, "lkfamily4")
and has_vehicle_recording_been_loaded(054, "lkfamily4")
and has_vehicle_recording_been_loaded(055, "lkfamily4")
and has_vehicle_recording_been_loaded(056, "lkfamily4")
and has_vehicle_recording_been_loaded(057, "lkfamily4")
and has_vehicle_recording_been_loaded(058, "lkfamily4")
and has_vehicle_recording_been_loaded(059, "lkfamily4")
and has_vehicle_recording_been_loaded(060, "lkfamily4")
and has_vehicle_recording_been_loaded(061, "lkfamily4")
and has_vehicle_recording_been_loaded(062, "lkfamily4")
and has_vehicle_recording_been_loaded(063, "lkfamily4")
and has_vehicle_recording_been_loaded(064, "lkfamily4")
and has_vehicle_recording_been_loaded(065, "lkfamily4")
and has_vehicle_recording_been_loaded(066, "lkfamily4")
//and has_vehicle_recording_been_loaded(067, "lkfamily4")
//and has_vehicle_recording_been_loaded(068, "lkfamily4")
and has_vehicle_recording_been_loaded(069, "lkfamily4")
and has_vehicle_recording_been_loaded(070, "lkfamily4")
and has_vehicle_recording_been_loaded(071, "lkfamily4")
and has_vehicle_recording_been_loaded(072, "lkfamily4")
and has_vehicle_recording_been_loaded(073, "lkfamily4")
and has_vehicle_recording_been_loaded(074, "lkfamily4")
and has_vehicle_recording_been_loaded(075, "lkfamily4")
and has_vehicle_recording_been_loaded(076, "lkfamily4")
and has_vehicle_recording_been_loaded(077, "lkfamily4")
//and has_vehicle_recording_been_loaded(078, "lkfamily4")
//and has_vehicle_recording_been_loaded(079, "lkfamily4")
and has_vehicle_recording_been_loaded(080, "lkfamily4")
and has_vehicle_recording_been_loaded(081, "lkfamily4")
and has_vehicle_recording_been_loaded(082, "lkfamily4")
and has_vehicle_recording_been_loaded(083, "lkfamily4")
and has_vehicle_recording_been_loaded(084, "lkfamily4")
and has_vehicle_recording_been_loaded(085, "lkfamily4")
and has_vehicle_recording_been_loaded(086, "lkfamily4")
and has_vehicle_recording_been_loaded(087, "lkfamily4")
and has_vehicle_recording_been_loaded(088, "lkfamily4")
and has_vehicle_recording_been_loaded(089, "lkfamily4")
and has_vehicle_recording_been_loaded(090, "lkfamily4")
and has_vehicle_recording_been_loaded(091, "lkfamily4")
and has_vehicle_recording_been_loaded(092, "lkfamily4")
and has_vehicle_recording_been_loaded(093, "lkfamily4")
and has_vehicle_recording_been_loaded(094, "lkfamily4")
and has_vehicle_recording_been_loaded(095, "lkfamily4")
// and has_vehicle_recording_been_loaded(096, "lkfamily4")
// and has_vehicle_recording_been_loaded(097, "lkfamily4")
// and has_vehicle_recording_been_loaded(098, "lkfamily4")
// and has_vehicle_recording_been_loaded(099, "lkfamily4")
// and has_vehicle_recording_been_loaded(100, "lkfamily4")
// and has_vehicle_recording_been_loaded(101, "lkfamily4")
// and has_vehicle_recording_been_loaded(102, "lkfamily4")
// and has_vehicle_recording_been_loaded(103, "lkfamily4")
// and has_vehicle_recording_been_loaded(104, "lkfamily4")
// and has_vehicle_recording_been_loaded(105, "lkfamily4")
// and has_vehicle_recording_been_loaded(106, "lkfamily4")
// and has_vehicle_recording_been_loaded(107, "lkfamily4")
// and has_vehicle_recording_been_loaded(108, "lkfamily4")
// and has_vehicle_recording_been_loaded(109, "lkfamily4")
// and has_vehicle_recording_been_loaded(110, "lkfamily4")
// and has_vehicle_recording_been_loaded(111, "lkfamily4")
and has_vehicle_recording_been_loaded(112, "lkfamily4")
// and has_vehicle_recording_been_loaded(113, "lkfamily4")
// and has_vehicle_recording_been_loaded(114, "lkfamily4")
// and has_vehicle_recording_been_loaded(115, "lkfamily4")
// and has_vehicle_recording_been_loaded(116, "lkfamily4")
// and has_vehicle_recording_been_loaded(117, "lkfamily4")
// and has_vehicle_recording_been_loaded(118, "lkfamily4")
// and has_vehicle_recording_been_loaded(119, "lkfamily4")
// and has_vehicle_recording_been_loaded(120, "lkfamily4")
// and has_vehicle_recording_been_loaded(121, "lkfamily4")
// and has_vehicle_recording_been_loaded(122, "lkfamily4")
// and has_vehicle_recording_been_loaded(123, "lkfamily4")
// and has_vehicle_recording_been_loaded(124, "lkfamily4")
// and has_vehicle_recording_been_loaded(125, "lkfamily4")
// and has_vehicle_recording_been_loaded(126, "lkfamily4")
// and has_vehicle_recording_been_loaded(127, "lkfamily4")
// and has_vehicle_recording_been_loaded(128, "lkfamily4")
// and has_vehicle_recording_been_loaded(129, "lkfamily4")
// and has_vehicle_recording_been_loaded(130, "lkfamily4")
// and has_vehicle_recording_been_loaded(131, "lkfamily4")
// and has_vehicle_recording_been_loaded(132, "lkfamily4")
// and has_vehicle_recording_been_loaded(133, "lkfamily4")
// and has_vehicle_recording_been_loaded(134, "lkfamily4")
// and has_vehicle_recording_been_loaded(135, "lkfamily4")
// and has_vehicle_recording_been_loaded(136, "lkfamily4")
and has_vehicle_recording_been_loaded(137, "lkfamily4")
// and has_vehicle_recording_been_loaded(138, "lkfamily4")
// and has_vehicle_recording_been_loaded(139, "lkfamily4")
// and has_vehicle_recording_been_loaded(140, "lkfamily4")
// and has_vehicle_recording_been_loaded(001, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(002, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(003, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(004, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(005, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(006, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(007, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(008, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(011, "lkfamily4tr")
// and has_vehicle_recording_been_loaded(012, "lkfamily4tr")
and has_vehicle_recording_been_loaded(201, "lkfamily4")
and has_vehicle_recording_been_loaded(202, "lkfamily4")
// and has_vehicle_recording_been_loaded(203, "lkfamily4")
// and has_vehicle_recording_been_loaded(204, "lkfamily4")
// and has_vehicle_recording_been_loaded(205, "lkfamily4")
//
and has_vehicle_recording_been_loaded(301, "lkfamily4")
and has_vehicle_recording_been_loaded(302, "lkfamily4")
and has_vehicle_recording_been_loaded(401, "lkfamily4")
and has_vehicle_recording_been_loaded(402, "lkfamily4")
and has_vehicle_recording_been_loaded(403, "lkfamily4")
and has_vehicle_recording_been_loaded(404, "lkfamily4")
and has_vehicle_recording_been_loaded(405, "lkfamily4")
and has_vehicle_recording_been_loaded(406, "lkfamily4")
return true
endif
return false
endfunc
func bool create_vehicles_outside_stadium()
int i = 0
if not does_entity_exist(truck.veh)
switch create_vehicles_outside_stadium_status
case 0
if get_distance_between_coords(get_entity_coords(player_ped_id()), truck.pos) < 550.00
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
if has_model_loaded(truck.model)
and has_model_loaded(trailer.model)
and has_model_loaded(lazlows_car.model)
create_vehicles_outside_stadium_status++
endif
endif
break
case 1
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
if has_model_loaded(truck.model)
and has_model_loaded(trailer.model)
and has_model_loaded(lazlows_car.model)
and has_model_loaded(sentinel)
and has_model_loaded(schafter2)
clear_area(truck.pos, 10.0, true)
truck.veh = create_vehicle(truck.model, truck.pos, truck.heading)
//SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_doors_locked(truck.veh, vehiclelock_locked)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0)
set_entity_health(truck.veh, 1500)
set_vehicle_engine_health(truck.veh, 1500)
set_vehicle_petrol_tank_health(truck.veh, 1500)
//set_vehicle_dirt_level(truck.veh, 0.0)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
clear_area(trailer.pos, 10.0, true)
trailer.veh = create_vehicle(trailer.model, trailer.pos, trailer.heading)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
//truck 0 is created in TRUCK_DRIVER_AI_SYSTEM_2
for i = 1 to count_of(parked_truck) - 1
clear_area(parked_truck[i].pos, 10.0, true)
parked_truck[i].veh = create_vehicle(parked_truck[i].model, parked_truck[i].pos, parked_truck[i].heading)
set_vehicle_doors_locked(parked_truck[i].veh, vehiclelock_locked)
set_vehicle_colours(parked_truck[i].veh, (10 * i), 0)
parked_trailer[i].veh = create_vehicle(parked_trailer[i].model, parked_trailer[i].pos, parked_trailer[i].heading)
attach_vehicle_to_trailer(parked_truck[i].veh, parked_trailer[i].veh)
// set_vehicle_as_no_longer_needed(parked_truck[i].veh)
// set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
endfor
clear_area(<<-210.2187, -2015.1078, 27.1112>>, 4.0, true)
ambient_car = create_vehicle(schafter2, <<-209.6465, -2015.4807, 26.6206>>)
set_entity_heading(ambient_car, 73.3412)
set_vehicle_colours(ambient_car, 64, 0)
clear_area(<<-210.8506, -2018.3702, 26.6207>>, 4.0, true)
ambient_car_2 = create_vehicle(schafter2, <<-210.8506, -2018.3702, 26.6207>>)
set_entity_heading(ambient_car_2, 70.9631)
clear_area(<<-206.0113, -2055.3301, 26.6199>>, 4.0, true)
ambient_car_3 = create_vehicle(sentinel, <<-206.0113, -2055.3301, 26.6199>>)
set_entity_heading(ambient_car_3, 53.3779)
clear_area(<<-199.4559, -2045.2799, 26.6199>>, 4.0, true)
ambient_car_4 = create_vehicle(sentinel, <<-199.4559, -2045.2799, 26.6199>>)
set_entity_heading(ambient_car_4, 59.9934)
clear_area(<<-218.2066, -2070.0325, 26.6199>>, 4.0, true)
ambient_car_5 = create_vehicle(sentinel, <<-218.2066, -2070.0325, 26.6199>>)
set_entity_heading(ambient_car_5, 45.2218)
create_vehicles_outside_stadium_status++
return true
endif
break
endswitch
else
return true
endif
return false
endfunc
func bool create_entities_outside_stadium(bool create_truck_driver = true)
int i = 0
switch create_entities_outside_stadium_status
case 0
if not does_entity_exist(truck.veh)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
if create_truck_driver
request_model(truck_driver.model)
endif
request_anim_dict("missfam4")
request_vehicle_recording(001, "lkfamily4")
request_vehicle_recording(112, "lkfamily4")
REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
REQUEST_PTFX_ASSET()
if has_model_loaded(truck.model)
and has_model_loaded(trailer.model)
and has_model_loaded(lazlows_car.model)
and has_model_loaded(sentinel)
and has_model_loaded(schafter2)
and has_model_loaded(manana)
and (not create_truck_driver or has_model_loaded(truck_driver.model))
and has_anim_dict_loaded("missfam4")
and has_vehicle_recording_been_loaded(001, "lkfamily4")
and has_vehicle_recording_been_loaded(112, "lkfamily4")
and REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
and has_ptfx_asset_loaded()
clear_area(truck.pos, 10.0, true)
truck.veh = create_vehicle(truck.model, truck.pos, truck.heading)
SET_FORCE_HD_VEHICLE(truck.veh, true)
set_vehicle_on_ground_properly(truck.veh)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0)
set_entity_health(truck.veh, 1500)
set_vehicle_engine_health(truck.veh, 1500)
set_vehicle_petrol_tank_health(truck.veh, 1500)
//set_vehicle_dirt_level(truck.veh, 0.0)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
//set_vehicle_radio_enabled(truck.veh, false)
SET_RADIO_TO_STATION_NAME("off")
clear_area(trailer.pos, 10.0, true)
trailer.veh = create_vehicle(trailer.model, trailer.pos, trailer.heading)
set_vehicle_on_ground_properly(trailer.veh)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
SET_TRAILER_LEGS_RAISED(trailer.veh)
activate_physics(truck.veh)
activate_physics(trailer.veh)
if create_truck_driver
truck_driver.ped = create_ped_inside_vehicle(truck.veh, pedtype_mission, truck_driver.model)
set_model_as_no_longer_needed(truck_driver.model)
set_blocking_of_non_temporary_events(truck_driver.ped, true)
STOP_PED_SPEAKING(truck_driver.ped, true)
add_ped_for_dialogue(scripted_speech, 8, truck_driver.ped, "truckdriver")
endif
clear_area(lazlows_car.pos, 10.0, true)
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_entity_proofs(lazlows_car.veh, false, true, true, true, true)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
ADD_ENTITY_TO_AUDIO_MIX_GROUP(lazlows_car.veh, "FAMILY_4_LAZLOWS_CAR")
for i = 1 to count_of(parked_truck) - 1
clear_area(parked_truck[i].pos, 10.0, true)
parked_truck[i].veh = create_vehicle(parked_truck[i].model, parked_truck[i].pos, parked_truck[i].heading)
set_vehicle_doors_locked(parked_truck[i].veh, vehiclelock_locked)
set_vehicle_colours(parked_truck[i].veh, (10 * i), 0)
parked_trailer[i].veh = create_vehicle(parked_trailer[i].model, parked_trailer[i].pos, parked_trailer[i].heading)
attach_vehicle_to_trailer(parked_truck[i].veh, parked_trailer[i].veh)
// set_vehicle_as_no_longer_needed(parked_truck[i].veh)
// set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
endfor
clear_area(<<209.64, -2015.48, 26.6>>, 10.0, true)
ambient_car = create_vehicle(schafter2, <<-209.6465, -2015.4807, 26.6206>>)
set_entity_heading(ambient_car, 73.3412)
set_vehicle_colours(ambient_car, 64, 0)
clear_area(<<-210.8506, -2018.3702, 26.6207>>, 10.0, true)
ambient_car_2 = create_vehicle(schafter2, <<-210.8506, -2018.3702, 26.6207>>)
set_entity_heading(ambient_car_2, 70.9631)
clear_area(<<-206.0113, -2055.3301, 26.6199>>, 10.0, true)
ambient_car_3 = create_vehicle(sentinel, <<-206.0113, -2055.3301, 26.6199>>)
set_entity_heading(ambient_car_3, 53.3779)
clear_area(<<-199.4559, -2045.2799, 26.6199>>, 10.0, true)
ambient_car_4 = create_vehicle(sentinel, <<-199.4559, -2045.2799, 26.6199>>)
set_entity_heading(ambient_car_4, 59.9934)
clear_area(<<-218.2066, -2070.0325, 26.6199>>, 10.0, true)
ambient_car_5 = create_vehicle(sentinel, <<-218.2066, -2070.0325, 26.6199>>)
set_entity_heading(ambient_car_5, 45.2218)
create_entities_outside_stadium_status++
endif
endif
break
case 1
load_mission_vehicle_recordings()
if has_mission_vehicle_recordings_loaded()
create_entities_outside_stadium_status++
return true
endif
break
case 2
return true
break
endswitch
return false
endfunc
proc michael_ai_system()
// int player_node
// int buddy_node
// int node_diff
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
set_ped_reset_flag(selector_ped.pedID[selector_ped_michael], PRF_UseProbeSlopeStairsDetection, true)
switch michael_ai_system_status
case 0
// open_sequence_task(seq)
// TASK_FORCE_MOTION_STATE(null, enum_to_int(MS_ON_FOOT_RUN))
// TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 8, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT | EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
// close_sequence_task(seq)
// task_perform_sequence(selector_ped.pedID[selector_ped_trevor], seq)
// clear_sequence_task(seq)
//
// force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_trevor])
michael_ai_system_status++
break
case 1
if IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(selector_ped.pedID[selector_ped_michael])
if is_entity_in_angled_area(selector_ped.pedID[selector_ped_michael], <<-244.914, -2007.479, 23.691>>, <<-244.325, -2004.946, 26.191>>, 4.300)
or not is_ped_in_specific_room(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>, "GtaMloRoom001")
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(selector_ped.pedID[selector_ped_michael], 2.0)
else
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(selector_ped.pedID[selector_ped_michael], 3.0)
endif
endif
//int buddy_node
vector run_to_pos
//if has_ped_task_finished_2(selector_ped.pedID[selector_ped_michael])
//if waypoint_recording_get_closest_waypoint("family4_1", get_entity_coords(selector_ped.pedID[selector_ped_michael]), buddy_node)
waypoint_recording_get_coord("family4_1", 55, run_to_pos)
if is_entity_at_coord(selector_ped.pedID[selector_ped_michael], run_to_pos, <<1.5, 1.5, 2.0>>)
if is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
michael_ai_system_status = 2
else
SET_PED_CONFIG_FLAG(selector_ped.pedID[selector_ped_michael], PCF_ForceDirectEntry, TRUE)
open_sequence_task(seq)
task_enter_vehicle(null, truck.veh, -1, vs_front_right, pedmoveblendratio_run, ecf_jack_anyone)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
michael_ai_system_status = 3
endif
endif
break
case 2
if is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
//and not is_entity_in_angled_area(player_ped_id(), <<-251.653, -2019.017, 29.146>>, <<-261.255, -2030.541, 32.146>>, 5.5)
if is_ped_facing_ped(selector_ped.pedID[selector_ped_michael], player_ped_id(), 45)
if has_anim_dict_loaded("missfam4")
if lk_timer(original_time, 8000)
if is_ped_in_specific_room(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>, "GtaMloRoom001")
create_conversation(scripted_speech, "fam4Aud", "FAM4_LAG", conv_priority_low)
endif
open_sequence_task(seq)
task_play_anim(null, "missfam4", "say_hurry_up_a_trevor", normal_blend_in, slow_blend_out)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
original_time = get_game_timer()
endif
endif
else
if has_ped_task_finished_2(selector_ped.pedID[selector_ped_michael], SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
endif
endif
else
SET_PED_CONFIG_FLAG(selector_ped.pedID[selector_ped_michael], PCF_ForceDirectEntry, TRUE)
open_sequence_task(seq)
task_enter_vehicle(null, truck.veh, -1, vs_front_right, pedmoveblendratio_run, ecf_jack_anyone)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
michael_ai_system_status = 3
endif
break
case 3
if not is_ped_sitting_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
if not does_blip_exist(michaels_blip)
michaels_blip = create_blip_for_entity(selector_ped.pedID[selector_ped_michael])
endif
if has_ped_task_finished_2(selector_ped.pedID[selector_ped_michael])
open_sequence_task(seq)
task_enter_vehicle(null, truck.veh, -1, vs_front_right)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
endif
else
if does_blip_exist(michaels_blip)
remove_blip(michaels_blip)
endif
endif
break
case 4
break
endswitch
endif
endproc
proc tracey_ai_system()
if not is_ped_injured(tracey.ped)
switch tracey_ai_system_status
case 0
if has_anim_dict_loaded("missfam4leadinoutmcs2")
scene_pos = <<-234.834, -1999.252, 24.68>>
scene_rot = <<0.000, 0.000, -127.000>>
tracey.scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
TASK_SYNCHRONIZED_SCENE(tracey.ped, tracey.scene_id, "missfam4leadinoutmcs2", "tracy_loop", INSTANT_BLEND_IN, normal_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
set_synchronized_scene_looped(tracey.scene_id, true)
force_ped_ai_and_animation_update(tracey.ped, true)
SET_RAGDOLL_BLOCKING_FLAGS(tracey.ped, RBF_PLAYER_IMPACT)
tracey_ai_system_status++
endif
break
case 1
if not has_label_been_triggered("FAM4_CRIES")
if not is_any_text_being_displayed(locates_data)
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(tracey.ped)) < 5.0
if create_conversation(scripted_speech, "fam4aud", "FAM4_CRIES", conv_priority_low)
set_label_as_triggered("FAM4_CRIES", true)
endif
endif
endif
endif
if is_synchronized_scene_running(tracey.scene_id)
and not is_ped_ragdoll(tracey.ped)
and not IS_PED_DEAD_OR_DYING(tracey.ped)
if has_ped_task_finished_2(tracey.ped)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
task_cower(null)
close_sequence_task(seq)
task_perform_sequence(tracey.ped, seq)
clear_sequence_task(seq)
endif
endif
break
case 2
break
endswitch
endif
endproc
proc run_after_lazlow_switch_effect()
switch run_after_lazlow_switch_effect_status
case 0
if trigger_switch_effect_to_trevor
if is_screen_faded_in()
if get_cam_view_mode_for_context(cam_view_mode_context_on_foot) != cam_view_mode_first_person
ANIMPOSTFX_PLAY("SwitchSceneTrevor", 0, FALSE)
PLAY_SOUND_FRONTEND(-1, "Hit_1", "LONG_PLAYER_SWITCH_SOUNDS")
run_after_lazlow_switch_effect_status++
else
run_after_lazlow_switch_effect_status++
endif
endif
endif
break
case 1
break
endswitch
endproc
proc create_stadium_assets()
int i = 0
//puts peds into the state for chasing lazlow. Incase cutsecne was skipped.
for i = 0 to count_of(ambient_ped_status) - 1
ambient_ped_status[i] = play_reaction_chasing_lazlow
endfor
DISABLE_CHEAT(CHEAT_TYPE_FAST_RUN, true)
michaels_blip = create_blip_for_entity(selector_ped.pedID[selector_ped_michael])
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_relationship_contact(selector_ped.pedID[selector_ped_michael], true)
clear_player_wanted_level(player_id())
set_max_wanted_level(0)
set_create_random_cops(false)
if not is_ped_injured(tracey.ped)
setup_buddy_attributes(tracey.ped)
setup_relationship_contact(tracey.ped, true)
set_ped_can_ragdoll(tracey.ped, true)
add_ped_for_dialogue(scripted_speech, 4, tracey.ped, "tracey")
tracey_ai_system()
endif
DELETE_ALL_TRAINS()
SET_RANDOM_TRAINS(false)
set_vehicle_model_is_suppressed(utillitruck, true)
set_vehicle_model_is_suppressed(utillitruck2, true)
set_vehicle_model_is_suppressed(utillitruck3, true)
run_after_lazlow_switch_effect()
if is_screen_faded_out()
IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_THIRD_PERSON_FAR
end_cutscene(false, 0.0, 0, false)
else
end_cutscene(false, -60.0, 0, false)
endif
else
IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_THIRD_PERSON_FAR
end_cutscene_no_fade(false, true, false, 0.0, 0, 3000, false)
else
end_cutscene_no_fade(false, true, false, -60.0, 0, 3000, false)
endif
endif
printstring("run after lazlow 2")
printnl()
if not has_label_been_triggered("FAM4_MISSION_START")
trigger_music_event("FAM4_MISSION_START")
set_label_as_triggered("FAM4_MISSION_START", true)
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2, "run after lazlow")
mission_flow = run_after_lazlow
endproc
proc taxi_drop_off_for_get_to_the_stadium()
if does_blip_exist(locates_data.LocationBlip)
if not taxi_drop_off_set_for_get_to_the_stadium
SET_TAXI_DROPOFF_LOCATION_FOR_BLIP(locates_data.LocationBlip, <<-210.9444, -2041.7289, 26.6206>>, 100.8531)
taxi_drop_off_set_for_get_to_the_stadium = true
endif
else
taxi_drop_off_set_for_get_to_the_stadium = false
endif
endproc
proc reset_dialogue_for_future_resumption_data()
resume_lower_priority_conversation = false
dialogue_root = "null"
specific_label = "null"
endproc
//PURPOSE:
//obtains the lower priority dialogue data before a higher priority conversation overwrites the lower conversation.
//Must be called every frame whilst getting ready to trigger higher conversation.
//only needed when you have 2 priority conversation levels which can clash. e.g. medium and low.
proc get_dialogue_data_for_future_resumption()
//if not obtain_dialogue_data
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//if IS_SCRIPTED_CONVERSATION_ONGOING()
if not resume_lower_priority_conversation
//returns the string NULL by default
dialogue_root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
//dialogue_root = GET_LAST_PASSED_STANDARD_CONVERSATION_ROOT()
specific_label = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
if not are_strings_equal(dialogue_root, "null")
and not are_strings_equal(specific_label, "null")
resume_lower_priority_conversation = true
endif
printstring("stored dialogue root = ")
printstring(dialogue_root)
printnl()
printstring("stored specific_label = ")
printstring(specific_label)
printnl()
endif
//script_assert("store label")
else
printstring("family 4 - no conversation ongoing")
printnl()
endif
//obtain_dialogue_data = true
//endif
endproc
//PURPOSE:
//Checks to see if a specific conversation route should be played regardless is the player is out of the truck.
//i.e. the target_blip does not exist
//This will stop the dialogue monitoring system from pausing that specific conversation.
func bool is_conversation_root_part_of_force_trigger_list
text_label root
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
if are_strings_equal(root, "FAM4_POW")
or are_strings_equal(root, "FAM4_POW2")
return true
endif
endif
return false
endfunc
func bool allow_dialogue_to_trigger(blip_index target_blip, ped_index &buddy_ped)
if does_blip_exist(target_blip)
if not is_ped_injured(buddy_ped)
if is_ped_in_same_vehicle_as_player(buddy_ped)
or (is_ped_on_foot(player_ped_id()) and is_ped_on_foot(buddy_ped))
if not is_calling_any_contact()
and not is_player_changing_clothes()
return true
endif
endif
endif
endif
return false
endfunc
//Purpose:
//Will pause a conversation when the target blip does not exist. e.g. the player has left the vehicle or ran away from the buddy
//In the event where you want to play a specific line when you leave the car etc then DONT USE THIS and do something
//specific - see dialogue example in lawrence_gta5_sdk - (bottom of file)
func bool dialogue_monitoring_system(blip_index target_blip, ped_index &buddy_ped)
// if does_blip_exist(target_blip)
// and (is_ped_in_same_vehicle_as_player(buddy_ped) or (is_ped_on_foot(player_ped_id()) and is_ped_on_foot(buddy_ped)))
if allow_dialogue_to_trigger(target_blip, buddy_ped)
if IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(false)
endif
if resume_lower_priority_conversation //dialogue_paused
if not is_any_text_being_displayed(locates_data)
//and not lazlow_chase_cam_active
printstring("dialogue_root = ")
printstring(dialogue_root)
printnl()
printstring("specific_label = ")
printstring(specific_label)
printnl()
if create_conversation_from_specific_line(scripted_speech, "fam4aud", dialogue_root, specific_label, CONV_PRIORITY_LOW)
resume_lower_priority_conversation = false
endif
endif
endif
if not is_any_text_being_displayed(locates_data)
and not resume_lower_priority_conversation
//and not lazlow_chase_cam_active
return true
endif
else
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if not is_conversation_root_part_of_force_trigger_list()
//RESUME_INTERRUPT_CONVERSATION(false)
if not IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(true)
if is_calling_any_contact()
get_dialogue_data_for_future_resumption()
endif
endif
endif
endif
endif
return false
endfunc
proc get_to_the_stadium_dialogue_system()
switch get_to_the_stadium_dialogue_system_status
case 0
// if create_conversation(scripted_speech, "fam4Aud", "FAM4_GO", conv_priority_medium)
get_to_the_stadium_dialogue_system_status++
// endif
break
case 1
//ensures the locate header god text triggers before the dialogue
if not is_any_text_being_displayed(locates_data, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
get_to_the_stadium_dialogue_system_status++
endif
break
case 2
if not is_any_text_being_displayed(locates_data)
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_michael])
or dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_trevor])
switch get_random_int_in_range(0, 2)
case 0
if create_conversation(scripted_speech, "fam4Aud", "FAM4_B1A", conv_priority_low)
get_to_the_stadium_dialogue_system_status++
endif
break
case 1
if create_conversation(scripted_speech, "fam4Aud", "FAM4_B1A2", conv_priority_low)
get_to_the_stadium_dialogue_system_status++
endif
break
endswitch
endif
endif
break
case 3
switch get_current_player_ped_enum()
case char_michael
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_trevor])
get_to_the_stadium_dialogue_system_status = 4
endif
break
case char_trevor
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_michael])
get_to_the_stadium_dialogue_system_status = 4
endif
break
endswitch
break
case 4
if get_distance_between_coords(get_entity_coords(player_ped_id()), <<-219.5123, -2037.8512, 26.9>>) > 400
if lk_timer(dialogue_time, 30000)
switch get_current_player_ped_enum()
case char_michael
if create_conversation(scripted_speech, "fam4Aud", "FAM4_HURRY", conv_priority_low)
dialogue_time = get_game_timer()
endif
break
case char_trevor
if create_conversation(scripted_speech, "fam4Aud", "FAM4_HURRY2", conv_priority_low)
dialogue_time = get_game_timer()
endif
break
endswitch
endif
endif
if not has_label_been_triggered("FAM4_DRV2")
if get_distance_between_coords(get_entity_coords(player_ped_id()), <<-219.5123, -2037.8512, 26.9>>) < 50.00
switch get_current_player_ped_enum()
case char_michael
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_trevor])
if create_conversation(scripted_speech, "fam4Aud", "FAM4_DRV2", conv_priority_medium)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.0, REPLAY_IMPORTANCE_HIGH)
set_label_as_triggered("FAM4_DRV2", true)
endif
endif
break
case char_trevor
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_michael])
if create_conversation(scripted_speech, "fam4Aud", "FAM4_DRV2", conv_priority_medium)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.0, REPLAY_IMPORTANCE_HIGH)
set_label_as_triggered("FAM4_DRV2", true)
endif
endif
break
endswitch
endif
endif
break
case 5
switch get_current_player_ped_enum()
case char_michael
if not is_ped_sitting_in_any_vehicle(selector_ped.pedID[selector_ped_trevor])
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4Aud", "walk_stad0", conv_priority_medium)
REPLAY_RECORD_BACK_FOR_TIME(6.0, 6.0, REPLAY_IMPORTANCE_HIGH)
get_to_the_stadium_dialogue_system_status = 7
endif
endif
endif
break
case char_trevor
if not is_ped_sitting_in_any_vehicle(player_ped_id())
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4Aud", "walk_stad0", conv_priority_medium)
REPLAY_RECORD_BACK_FOR_TIME(6.0, 6.0, REPLAY_IMPORTANCE_HIGH)
get_to_the_stadium_dialogue_system_status = 7
endif
endif
endif
break
endswitch
break
case 6
switch get_current_player_ped_enum()
case char_michael
if not is_ped_sitting_in_any_vehicle(selector_ped.pedID[selector_ped_trevor])
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4Aud", "walk_stad1", conv_priority_medium)
get_to_the_stadium_dialogue_system_status = 7
endif
endif
endif
break
case char_trevor
if not is_ped_sitting_in_any_vehicle(player_ped_id())
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4Aud", "walk_stad1", conv_priority_medium)
get_to_the_stadium_dialogue_system_status = 7
endif
endif
endif
break
endswitch
break
case 7
if create_conversation(scripted_speech, "fam4Aud", "FAM4_VIP", conv_priority_medium)
get_to_the_stadium_dialogue_system_status++
endif
break
case 8
switch get_current_player_ped_enum()
case char_michael
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_trevor])
print_now("family4_god_13", default_god_text_time, 1)
get_to_the_stadium_dialogue_system_status++
endif
break
case char_trevor
if dialogue_monitoring_system(locates_data.LocationBlip, selector_ped.pedID[selector_ped_michael])
print_now("family4_god_13", default_god_text_time, 1)
get_to_the_stadium_dialogue_system_status++
endif
break
endswitch
break
case 9
break
endswitch
endproc
proc deactivate_lazlow_chase_cam()
//if lazlow_chase_cam_active
if is_cam_active(lazlow_cam)
set_cam_active(lazlow_cam_2, false)
set_cam_active(lazlow_cam, false)
render_script_cams(false, false)
//SET_CINEMATIC_BUTTON_ACTIVE(true)
if not is_ped_injured(lazlow.ped)
task_clear_look_at(lazlow.ped)
endif
//if not dialogue_paused
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
lazlow_chase_cam_active = false
kill_chase_hint_cam(chase_hint_cam) //resets the hint variables.
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_CAMERA")
stop_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_CAMERA")
endif
//lazlow_cam_time = 0
endif
endproc
proc lazlow_camera_system()
if is_vehicle_driveable(lazlows_car.veh)
if not does_cam_exist(lazlow_cam)
lazlow_cam = create_cam("default_scripted_camera", false)
set_cam_fov(lazlow_cam, 45.00)
lazlow_cam_2 = create_cam("default_scripted_camera", false)
set_cam_fov(lazlow_cam_2, 40.00)
set_cam_active(lazlow_cam, true)
lazlow_chase_cam_active = false
else
//
// if not help_text_on
// //if not is_this_print_being_displayed("GOD_8")
// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
// //if (is_entity_in_angled_area(player_ped_id(), <<-162.352, -2003.968, 21.899>>, <<-145.830, -2005.703, 32.879>>, 75.00) or get_distance_between_coords(get_entity_coords(player_ped_id()), <<-199.8088, -2003.7095, 26.6207>>) > 150.00)
// //if lk_timer(cam_help_time, 2000)
// if is_entity_in_angled_area(player_ped_id(), <<-264.563, -1828.329, 27.333>>, <<-238.324, -1817.461, 36.033>>, 41.000)
// or lk_timer(cam_help_time, 30000)
// if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 250.00
// cam_help_time = get_game_timer()
// print_help("family4_help_0")
// help_text_on = true
// endif
// endif
// endif
//
// else
//
// if not reminder_help_played
// if lk_timer(cam_help_time, 15000)
// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
// if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 250.00
// cam_help_time = get_game_timer()
// print_help("family4_help_0")
// reminder_help_played = true
// endif
// endif
// endif
// endif
// endif
//
// // check for button press and suitable conditions
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 120.00)
if activate_vehicle_tracking_cam(lazlows_car.veh)
if not is_cam_rendering(lazlow_cam)
and not is_cam_rendering(lazlow_cam_2)
if is_entity_in_angled_area(truck.veh, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-10.0, -22.0, -10.0>>), get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-0.4, -22.0, 10.0>>), 55.00, false, true)
attach_cam_to_entity(lazlow_cam, lazlows_car.veh, <<-0.68, 1.580, 0.59>>)
POINT_CAM_AT_ENTITY(lazlow_cam, lazlows_car.veh, <<2.5, -4.9, 0.2>>)
attach_cam_to_entity(lazlow_cam_2, lazlows_car.veh, <<-1.5, 1.580, 0.59>>)
POINT_CAM_AT_ENTITY(lazlow_cam_2, truck.veh, <<0.0, 0.0, 0.0>>)
task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-1.5, -10.0, 0.7>>), 2000)
elif is_entity_in_angled_area(truck.veh, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<1.4, -22.0, -10.0>>), get_offset_from_entity_in_world_coords(lazlows_car.veh, <<10.0, -22.0, 10.0>>), 55.00, false, true)
attach_cam_to_entity(lazlow_cam, lazlows_car.veh, <<0.68, 1.580, 0.590>>)
POINT_CAM_AT_ENTITY(lazlow_cam, lazlows_car.veh, <<-2.1, -4.9, 0.2>>)
attach_cam_to_entity(lazlow_cam_2, lazlows_car.veh, <<1.5, 1.580, 0.59>>)
POINT_CAM_AT_ENTITY(lazlow_cam_2, truck.veh, <<0.0, 0.0, 0.0>>)
task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<1.5, -10.0, 0.7>>), 2000)
else
attach_cam_to_entity(lazlow_cam, lazlows_car.veh, <<-0.68, 1.580, 0.59>>)
POINT_CAM_AT_ENTITY(lazlow_cam, lazlows_car.veh, <<2.5, -4.9, 0.2>>)
attach_cam_to_entity(lazlow_cam_2, lazlows_car.veh, <<-1.5, 1.580, 0.59>>)
POINT_CAM_AT_ENTITY(lazlow_cam_2, truck.veh, <<0.0, 0.0, 0.0>>)
task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-1.5, -10.0, 0.7>>), 2000)
endif
get_dialogue_data_for_future_resumption()
//create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
lazlow_dialogue_time = 0
set_cam_active(lazlow_cam, true)
set_cam_active_with_interp(lazlow_cam_2, lazlow_cam, 2900, graph_type_linear)//, graph_type_linear)
shake_cam(lazlow_cam, "ROAD_VIBRATION_SHAKE", 0.2)
shake_cam(lazlow_cam_2, "ROAD_VIBRATION_SHAKE", 0.2)
render_script_cams(true, false)
lazlow_chase_cam_active = true
// update flag to show its been used so dont need reminder
reminder_help_played = true
INFORM_MISSION_STATS_OF_INCREMENT(FAM4_LAZLOW_CAM_USE)
SET_CINEMATIC_BUTTON_ACTIVE(false)
else
disable_control_action(PLAYER_CONTROL, INPUT_VEH_ATTACK)
disable_control_action(PLAYER_CONTROL, INPUT_VEH_ATTACK2)
if lazlow_cam_dialogue_counter < 8
if lazlow_dialogue_time = 0
if create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.0, REPLAY_IMPORTANCE_HIGH)
lazlow_cam_dialogue_counter++
lazlow_dialogue_time = get_game_timer()
endif
else
if lk_timer(lazlow_dialogue_time, 5500)
if create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
lazlow_cam_dialogue_counter++
lazlow_dialogue_time = get_game_timer()
endif
endif
endif
endif
if not IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_CAMERA")
START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_CAMERA")
endif
endif
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
SET_SCENE_STREAMING_TRACKS_CAM_POS_THIS_FRAME()
else
deactivate_lazlow_chase_cam()
endif
else
deactivate_lazlow_chase_cam()
//CONTROL_PED_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, lazlow.ped)
endif
endif
else
if help_text_on or reminder_help_played
if IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("family4_help_0")
clear_help()
endif
help_text_on = false
reminder_help_played = false
endif
endif
endproc
func float calculate_cam_z_height()
float min_distance = 10
float max_distance = 80
float max_offset_height = 4.2
float min_offset_height = 4.65
float z_offset
float distance_between_vehicles = get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlows_car.veh))
if distance_between_vehicles > min_distance
z_offset = ((((distance_between_vehicles - min_distance) / (max_distance - min_distance)) * (max_offset_height - min_offset_height)) + min_offset_height)
else
z_offset = max_offset_height
endif
return z_offset
endfunc
//proc lazlow_camera_system()
//
// if is_vehicle_driveable(lazlows_car.veh)
// and is_vehicle_driveable(truck.veh)
//// if not train_cutscene_playing and not trailer_cutscene_playing and not storm_drain_cutscene_playing
// if not does_cam_exist(lazlow_cam)
//
// lazlow_cam = create_cam("default_scripted_camera", false)
// set_cam_fov(lazlow_cam, 45.00)
//
// lazlow_cam_2 = create_cam("default_scripted_camera", false)
// set_cam_fov(lazlow_cam_2, 40.00)
//
// set_cam_active(lazlow_cam, true)
//
// lazlow_chase_cam_active = false
//
// else
//
//// if not help_text_on
//// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
//// if is_entity_in_angled_area(player_ped_id(), <<-264.563, -1828.329, 27.333>>, <<-238.324, -1817.461, 36.033>>, 41.000)
//// if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 250.00
//// cam_help_time = get_game_timer()
//// print_help("family4_help_0")
//// help_text_on = true
//// endif
//// endif
//// endif
////
//// else
////
//// if not reminder_help_played
//// if lk_timer(cam_help_time, 15000)
//// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
//// if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 250.00
//// cam_help_time = get_game_timer()
//// print_help("family4_help_0")
//// reminder_help_played = true
//// endif
//// endif
//// endif
//// endif
//// endif
//
// // check for button press and suitable conditions
//
// if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 150.00)
// //and (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 5.0)
// if activate_vehicle_tracking_cam(truck.veh)
//
// float cam_attach_z = calculate_cam_z_height()
//
//// printfloat(cam_attach_z)
//// printnl()
//
// //if not lazlow_chase_cam_active
// if not is_cam_rendering(lazlow_cam)
// and not is_cam_rendering(lazlow_cam_2)
//
// if is_entity_in_angled_area(truck.veh, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-10.0, -22.0, -10.0>>), get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-0.4, -22.0, 10.0>>), 55.00, false, true)
//
// attach_cam_to_entity(lazlow_cam, truck.veh, <<-0.720, -4.28, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam, truck.veh, <<0.000, 15.800, -1.000>>)
// attach_cam_to_entity(lazlow_cam_2, truck.veh, <<-0.720, -3.980, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam_2, lazlows_car.veh, <<0.0, 0.0, 0.0>>)
//
// task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-1.5, -10.0, 0.7>>), 2000)
//
// elif is_entity_in_angled_area(truck.veh, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<1.4, -22.0, -10.0>>), get_offset_from_entity_in_world_coords(lazlows_car.veh, <<10.0, -22.0, 10.0>>), 55.00, false, true)
//
// attach_cam_to_entity(lazlow_cam, truck.veh, <<0.720, -4.28, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam, truck.veh, <<0.000, 15.800, -1.000>>)
// attach_cam_to_entity(lazlow_cam_2, truck.veh, <<0.720, -3.980, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam_2, lazlows_car.veh, <<0.0, 0.0, 0.0>>)
//
// task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<1.5, -10.0, 0.7>>), 2000)
//
// else
//
// attach_cam_to_entity(lazlow_cam, truck.veh, <<-0.720, -4.28, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam, truck.veh, <<0.000, 15.800, -1.000>>)
// attach_cam_to_entity(lazlow_cam_2, truck.veh, <<-0.720, -3.980, cam_attach_z>>)
// POINT_CAM_AT_ENTITY(lazlow_cam_2, lazlows_car.veh, <<0.0, 0.0, 0.0>>)
//
// task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-1.5, -10.0, 0.7>>), 2000)
//
// endif
//
// //get_dialogue_data_for_future_resumption()
//
// //create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
// //KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
// //lazlow_dialogue_time = 0
//
// set_cam_active(lazlow_cam, true)
// set_cam_active_with_interp(lazlow_cam_2, lazlow_cam, 2900, graph_type_linear)//, graph_type_linear)
//
// //hei
//
// shake_cam(lazlow_cam, "ROAD_VIBRATION_SHAKE", 0.2)
// shake_cam(lazlow_cam_2, "ROAD_VIBRATION_SHAKE", 0.2)
//
// render_script_cams(true, false)
// //lazlow_chase_cam_active = true
//
// // update flag to show its been used so dont need reminder
// //help_text_on = true
// reminder_help_played = true
//
// SET_CAM_CONTROLS_MINI_MAP_HEADING(lazlow_cam_2, true)
//
// SET_CINEMATIC_BUTTON_ACTIVE(false)
//
//
// else
//
// if not IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_CAMERA")
// START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_CAMERA")
// endif
////
//// if lazlow_dialogue_time = 0
////
//// if create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
//// lazlow_dialogue_time = get_game_timer()
//// endif
////
//// else
////
//// if lk_timer(lazlow_dialogue_time, 5500)
//// if create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_medium)
//// lazlow_dialogue_time = get_game_timer()
//// endif
//// endif
////
// detach_cam(lazlow_cam_2)
// attach_cam_to_entity(lazlow_cam_2, truck.veh, <<0.720, -4.28, cam_attach_z>>)
//
//// endif
//
// endif
//
// INFORM_MISSION_STATS_OF_INCREMENT(FAM4_LAZLOW_CAM_USE)
//
// else
//
// deactivate_lazlow_chase_cam()
//
// endif
//
// else
//
// deactivate_lazlow_chase_cam()
//
//// CONTROL_PED_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, lazlow.ped)
//
// endif
// endif
//// endif
//
// else
//
// if help_text_on or reminder_help_played
// if IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("family4_help_0")
// clear_help()
// endif
// help_text_on = false
// reminder_help_played = false
// endif
//
// endif
//
//endproc
func bool request_mocap_data_for_Family_4_MCS_3_concat()
REQUEST_CUTSCENE("Family_4_MCS_3_concat")
// SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("trevor", PLAYER_PED_ID())
// SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("michael", selector_ped.pedID[selector_ped_michael])
// SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Lazlow", lazlow.ped)
return true
endfunc
proc setup_ped_weapon(ped_index mission_ped, weapon_type weapon, int ammo, bool force_into_hand = false, bool equip = false)
if not has_ped_got_weapon(mission_ped, weapon)
give_weapon_to_ped(mission_ped, weapon, ammo, force_into_hand, equip)
else
if get_ammo_in_ped_weapon(player_ped_id(), weapon) < 50
set_ped_ammo(player_ped_id(), weapon, ammo)
endif
endif
endproc
proc load_stadium_assets()
request_model(lazlow.model)
set_ped_model_is_suppressed(lazlow.model, true)
request_model(tracey.model)
set_ped_model_is_suppressed(tracey.model, true)
request_anim_dict("missfam4leadinoutmcs2")
ASSISTED_MOVEMENT_REQUEST_ROUTE("fame1")
endproc
func bool has_stadium_assets_loaded()
if has_model_loaded(lazlow.model)
and has_model_loaded(tracey.model)
and has_anim_dict_loaded("missfam4leadinoutmcs2")
return true
endif
printstring("assets not loaded")
printnl()
return false
endfunc
proc load_trip_skip_0()
if replay_active
start_replay_setup(michael.pos, michael.heading)
endif
request_model(michael.model)
request_model(trevor.model)
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
michaels_car.model = GET_REPLAY_CHECKPOINT_VEHICLE_MODEL()
endif
request_model(michaels_car.model)
set_vehicle_model_is_suppressed(michaels_car.model, true)
REQUEST_WAYPOINT_RECORDING("family4_0")
REQUEST_WAYPOINT_RECORDING("family4_1")
request_waypoint_recording("family4_2")
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(michaels_car.model)
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_0")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_1")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_2")
wait(0)
endwhile
IF NOT IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
ENDIF
clear_area(michaels_car.pos, 300.00, true)
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-800.31, 184.80, 72.72>>, 300.00)
DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(char_michael)
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
michaels_car.veh = CREATE_REPLAY_CHECKPOINT_VEHICLE(michaels_car.pos, michaels_car.heading)
set_vehicle_automatically_attaches(michaels_car.veh, false)
else
CREATE_PLAYER_VEHICLE(michaels_car.veh, char_michael, michaels_car.pos, michaels_car.heading)
set_vehicle_automatically_attaches(michaels_car.veh, false)
endif
if get_current_player_ped_enum() = char_michael
printstring("player is MICHAEL")
printnl()
elif get_current_player_ped_enum() = char_trevor
printstring("player is TREVOR")
printnl()
endif
switch get_current_player_ped_enum()
case char_michael
create_player_ped_on_foot(selector_ped.pedID[selector_ped_trevor], char_trevor, trevor.pos, trevor.heading, false)
setup_buddy_attributes(selector_ped.pedID[selector_ped_trevor])
setup_ped_weapon(selector_ped.pedID[selector_ped_trevor], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_trevor], true)
add_ped_for_dialogue(scripted_speech, 2, selector_ped.pedID[selector_ped_trevor], "trevor")
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(player_ped_id())
or not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(selector_ped.pedID[selector_ped_trevor])
wait(0)
endwhile
if not is_ped_injured(selector_ped.pedID[selector_ped_trevor])
force_ped_motion_state(selector_ped.pedID[selector_ped_trevor], ms_on_foot_walk, false)//, faus_cutscene_exit)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_trevor])
endif
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
SET_PLAYER_CLOTH_PIN_FRAMES(PLAYER_ID(), 1)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id(), true)
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
break
case char_trevor
create_player_ped_on_foot(selector_ped.pedID[selector_ped_michael], char_michael, trevor.pos, trevor.heading, false)
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_ped_weapon(selector_ped.pedID[selector_ped_michael], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
IF not HAS_PED_GOT_FIREARM(selector_ped.pedID[selector_ped_michael], false)
give_weapon_to_ped(selector_ped.pedID[selector_ped_michael], weapontype_pistol, 50, false, false)
endif
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(player_ped_id())
or not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(selector_ped.pedID[selector_ped_michael])
wait(0)
endwhile
if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
force_ped_motion_state(selector_ped.pedID[selector_ped_michael], ms_on_foot_walk, false)//, faus_cutscene_exit)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id(), true)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
break
endswitch
//SET_TAXI_DROPOFF_LOCATION_FOR_BLIP(locates_data.LocationBlip, <<-219.2400, -2037.6470, 27.0>>, 57.2397)
if not replay_active
load_scene(<<-819.9973, 176.7442, 70.6074>>)
endif
end_cutscene()
SET_LOCATES_BUDDIES_TO_GET_INTO_NEAREST_CAR(locates_data, michaels_car.veh)
//set_vehicle_as_no_longer_needed(michaels_car.veh)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "start of mission")
mission_flow = get_to_the_stadium
endproc
proc groupie_ai_system(bool allow_stat_to_process = true)
if not is_ped_injured(groopie.ped)
if groupie_ai_system_status != 22
if has_ped_been_harmed(groopie.ped, groopie.health)
or has_player_antagonised_ped(groopie.ped, 30.00, false)
or is_ped_ragdoll(groopie.ped)
or (is_entity_in_angled_area(player_ped_id(), <<-175.828, -2039.052, 26.621>>, <<-276.227, -1989.866, 35.621>>, 195.700) and is_ped_shooting(player_ped_id()))
if IS_ENTITY_PLAYING_ANIM(groopie.ped, "missfam4", "base") //amb@world_human_clipboard@male@base
stop_anim_task(groopie.ped, "missfam4", "base")
endif
detach_entity(clip_board.obj)
set_model_as_no_longer_needed(clip_board.model)
set_object_as_no_longer_needed(clip_board.obj)
task_smart_flee_ped(groopie.ped, player_ped_id(), 100.00, -1)
set_ped_as_no_longer_needed(groopie.ped)
set_model_as_no_longer_needed(groopie.model)
groupie_ai_system_status = 22
endif
endif
switch groupie_ai_system_status
case 0
players_vehicle = get_players_last_vehicle()
if is_vehicle_driveable(players_vehicle)
if is_entity_in_angled_area(players_vehicle, <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 6.7)
or get_to_the_stadium_status >= 2 //fix incase car overshoots the angled area when bring_vehicle_to_halt_and_disable_controls_is_called() and is outside the angled area
switch get_current_player_ped_enum()
case char_michael
if not is_ped_sitting_in_vehicle(selector_ped.pedID[char_trevor], players_vehicle)
open_sequence_task(seq)
task_look_at_entity(null, selector_ped.pedID[char_trevor], -1)
task_turn_ped_to_face_entity(null, selector_ped.pedID[char_trevor])
close_sequence_task(seq)
task_perform_sequence(groopie.ped, seq)
clear_sequence_task(seq)
groupie_ai_system_status++
endif
break
case char_trevor
if not is_ped_sitting_in_vehicle(player_ped_id(), players_vehicle)
open_sequence_task(seq)
task_look_at_entity(null, player_ped_id(), -1)
task_turn_ped_to_face_entity(null, player_ped_id())
close_sequence_task(seq)
task_perform_sequence(groopie.ped, seq)
clear_sequence_task(seq)
groupie_ai_system_status++
endif
break
endswitch
endif
endif
break
case 1
switch get_current_player_ped_enum()
case char_michael
if (not is_ped_injured(selector_ped.pedID[char_trevor]) //added for fail system as groppie system is called within it
and get_distance_between_coords(get_entity_coords(groopie.ped), get_entity_coords(selector_ped.pedID[char_trevor])) < 20)
if not is_ped_facing_ped(groopie.ped, selector_ped.pedID[char_trevor], 40)
if has_ped_task_finished_2(groopie.ped)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, selector_ped.pedID[char_trevor])
close_sequence_task(seq)
task_perform_sequence(groopie.ped, seq)
clear_sequence_task(seq)
endif
endif
else
if not is_ped_facing_ped(groopie.ped, player_ped_id(), 40)
if has_ped_task_finished_2(groopie.ped)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
close_sequence_task(seq)
task_perform_sequence(groopie.ped, seq)
clear_sequence_task(seq)
endif
endif
endif
break
case char_trevor
if not is_ped_facing_ped(groopie.ped, player_ped_id(), 40)
if has_ped_task_finished_2(groopie.ped)
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id(), -1)
close_sequence_task(seq)
task_perform_sequence(groopie.ped, seq)
clear_sequence_task(seq)
endif
endif
break
endswitch
break
case 22
break
endswitch
else
if not groopie.created
if get_distance_between_coords(get_entity_coords(player_ped_id()), truck.pos) < 650.00
request_model(groopie.model)
request_model(clip_board.model)
request_anim_dict("missfam4")
if has_model_loaded(groopie.model)
and has_model_loaded(clip_board.model)
and has_anim_dict_loaded("missfam4")
setup_enemy(groopie)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, gropie_group, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, gropie_group, player_group)
SET_ped_RELATIONSHIP_GROUP_hash(groopie.ped, gropie_group)
set_ped_can_ragdoll(groopie.ped, true)
set_ped_config_flag(groopie.ped, PCF_DontInfluenceWantedLevel, true)
remove_blip(groopie.blip)
add_ped_for_dialogue(scripted_speech, 6, groopie.ped, "groupie1")
task_play_anim(groopie.ped, "missfam4", "base", instant_blend_in, normal_blend_out, -1, AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
force_ped_ai_and_animation_update(groopie.ped)
clip_board.obj = create_object(clip_board.model, (groopie.pos + <<0.0, 0.0, 1.0>>))
ATTACH_ENTITY_TO_ENTITY(clip_board.obj, groopie.ped, get_ped_bone_index(groopie.ped, BONETAG_PH_L_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(clip_board.obj)
endif
endif
else
if allow_stat_to_process
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FAM4_COORD_KO)
endif
endif
endif
endproc
proc play_female_reaction_anim(ped_index &miss_ped, string anim_name)
if IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@arms_folded@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@arms_folded@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@legs_crossed@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@legs_crossed@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@proper@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@proper@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@proper_skinny@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@proper_skinny@react_shock", anim_name)
else
printstring("not playing any anim")
printnl()
endif
endproc
proc play_male_reaction_anim(ped_index &miss_ped, string anim_name)
if IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@elbows_on_knees@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@elbows_on_knees@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@generic_skinny@base", anim_name)
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@generic_skinny@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@left_elbow_on_knee@base", anim_name)
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@left_elbow_on_knee@react_shock", anim_name)
else
printstring("not playing any anim")
printnl()
endif
endproc
proc play_reaction_anim(ped_index &miss_ped, string anim_name)
switch get_entity_model(miss_ped)
case A_M_Y_Hipster_03
if IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@elbows_on_knees@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@elbows_on_knees@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@generic_skinny@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@generic_skinny@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@male@left_elbow_on_knee@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@male@left_elbow_on_knee@react_shock", anim_name)
else
printstring("not playing any anim")
printnl()
endif
break
case A_F_Y_Hipster_03
if IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@arms_folded@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@arms_folded@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@legs_crossed@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@legs_crossed@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@proper@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@proper@react_shock", anim_name)
elif IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM(miss_ped, "amb@prop_human_seat_chair@female@proper_skinny@base", "base")
PLAY_ANIM_ON_RUNNING_SCENARIO(miss_ped, "amb@prop_human_seat_chair@female@proper_skinny@react_shock", anim_name)
else
printstring("not playing any anim")
printnl()
endif
break
endswitch
endproc
///PURPOSE: Makes the ambient ped by setting their ambient_ped_status[i] = flee ambient_ped_ai_system must be called in mission fail system
///
proc make_ambient_peds_flee()
int i
for i = 0 to count_of(ambient_ped) - 1
if ambient_ped_status[i] != do_nothing
and ambient_ped_status[i] != flee
ambient_ped_status[i] = flee
endif
endfor
if ambient_ped_flee_time = 0
ambient_ped_flee_time = get_game_timer()
endif
endproc
proc ambient_ped_system()
int i
if ambient_ped_status[i] != do_nothing
and ambient_ped_status[i] != flee
if (is_entity_in_angled_area(player_ped_id(), <<-175.828, -2039.052, 26.621>>, <<-276.227, -1989.866, 35.621>>, 195.700) and is_ped_shooting(player_ped_id()))
or IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-231.798, -2041.398, 26.361>>, <<-260.114, -2021.864, 34.161>>, 39.2)
or is_explosion_in_angled_area(EXP_TAG_DONTCARE, <<-252.133, -2011.385, 29.146>>, <<-269.892, -2032.251, 32.146 >>, 16.50)
//if not is_ped_in_specific_room(player_ped_id(), <<-236.6, -2002.0, 25.1>>, "GtaMloRoom004")
if not is_explosion_in_angled_area(EXP_TAG_DONTCARE, <<-251.280, -2001.547, 23.685>>, <<-221.936, -2007.784, 26.685>>, 38.000)
make_ambient_peds_flee()
endif
endif
endif
for i = 0 to count_of(ambient_ped) - 1
if not is_ped_injured(ambient_ped[i].ped)
if ambient_ped_status[i] != do_nothing
and ambient_ped_status[i] != flee
//deletes peds if the player drives off
if mission_flow = get_to_the_stadium
if get_distance_between_coords(get_entity_coords(player_ped_id()), ambient_ped[i].pos) > 100
if not DOES_SCENARIO_EXIST_IN_AREA(ambient_ped[i].pos, 0.5, true)
ambient_ped[i].created = false
delete_ped(ambient_ped[i].ped)
endif
endif
endif
// if not is_ped_using_any_scenario(ambient_ped[i].ped)
// if DOES_SCENARIO_EXIST_IN_AREA(ambient_ped[i].pos, 0.5, true)
//
// TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(ambient_ped[i].ped, ambient_ped[i].pos, 0.5)
//
// endif
// endif
if has_ped_been_harmed(ambient_ped[i].ped, ambient_ped[i].health)
or has_player_antagonised_ped(ambient_ped[i].ped, 20.00, false)
make_ambient_peds_flee()
endif
endif
switch ambient_ped_status[i]
case get_into_position
break
case play_reaction_anim_during_cutscene
if mission_flow = play_stadium_mocap
switch i
case 0
break
case 1
// if get_cutscene_time() > 3000
// play_reaction_anim(ambient_ped[i].ped, "right")
// ambient_ped_status[i] = play_reaction_chasing_lazlow
// endif
break
case 7
if get_cutscene_time() > 7000
play_reaction_anim(ambient_ped[i].ped, "back_right")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
case 8
if get_cutscene_time() > 13000
play_reaction_anim(ambient_ped[i].ped, "right")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
case 18
if get_cutscene_time() > 10000
play_reaction_anim(ambient_ped[i].ped, "forward")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
case 19
if get_cutscene_time() > 10500
play_reaction_anim(ambient_ped[i].ped, "right")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
case 21
if get_cutscene_time() > 9000
play_reaction_anim(ambient_ped[i].ped, "right")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
case 23
if get_cutscene_time() > 8000
play_reaction_anim(ambient_ped[i].ped, "right")
ambient_ped_status[i] = play_reaction_chasing_lazlow
endif
break
endswitch
endif
break
case play_reaction_chasing_lazlow
ambient_ped_status[i] = get_into_position
break
case flee
if is_ped_using_any_scenario(ambient_ped[i].ped)
switch i
case 0
case 3
case 6
case 9
TOGGLE_SCENARIO_PED_COWER_IN_PLACE(ambient_ped[i].ped, true)
//task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
ambient_ped_status[i] = do_nothing
break
case 1
case 4
case 7
//if lk_timer(ambient_ped_flee_time, 1000)
//see bug 1122820 for info
if SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT(ambient_ped[i].ped, get_offset_from_entity_in_world_coords(ambient_ped[i].ped, <<0.0, 0.5, 0.0>>))
task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
ambient_ped_status[i] = do_nothing
endif
break
case 2
case 10
case 13
if lk_timer(ambient_ped_flee_time, 4000)
//see bug 1122820 for info
if SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT(ambient_ped[i].ped, get_offset_from_entity_in_world_coords(ambient_ped[i].ped, <<0.0, 0.5, 0.0>>))
task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
ambient_ped_status[i] = do_nothing
endif
endif
break
case 5
case 8
case 11
case 16
if lk_timer(ambient_ped_flee_time, 2000)
//task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
TOGGLE_SCENARIO_PED_COWER_IN_PLACE(ambient_ped[i].ped, true)
ambient_ped_status[i] = do_nothing
endif
break
case 12
case 15
case 18
case 21
case 24
//if lk_timer(ambient_ped_flee_time, 500)
TOGGLE_SCENARIO_PED_COWER_IN_PLACE(ambient_ped[i].ped, true)
//task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
//SET_PED_PANIC_EXIT_SCENARIO(ambient_ped[i].ped, get_entity_coords(player_ped_id()))
ambient_ped_status[i] = do_nothing
//endif
break
case 14
case 17
case 20
case 23
if lk_timer(ambient_ped_flee_time, 2500)
//task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
TOGGLE_SCENARIO_PED_COWER_IN_PLACE(ambient_ped[i].ped, true)
ambient_ped_status[i] = do_nothing
endif
break
case 19
case 22
case 25
if lk_timer(ambient_ped_flee_time, 9000)
//see bug 1122820 for info
if SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT(ambient_ped[i].ped, get_offset_from_entity_in_world_coords(ambient_ped[i].ped, <<0.0, 0.5, 0.0>>))
task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
ambient_ped_status[i] = do_nothing
endif
endif
break
endswitch
else
task_smart_flee_ped(ambient_ped[i].ped, player_ped_id(), 200, -1)
ambient_ped_status[i] = do_nothing
endif
break
case do_nothing
break
endswitch
else
if not ambient_ped[i].created
//optimization as DOES_SCENARIO_EXIST_IN_AREA
if get_distance_between_coords(get_entity_coords(player_ped_id()), ambient_ped[i].pos) < 150
request_model(ambient_ped[i].model)
request_anim_dict("amb@prop_human_seat_chair@male@elbows_on_knees@react_shock")
request_anim_dict("amb@prop_human_seat_chair@male@generic_skinny@react_shock")
request_anim_dict("amb@prop_human_seat_chair@male@left_elbow_on_knee@react_shock")
request_anim_dict("amb@prop_human_seat_chair@female@arms_folded@react_shock")
request_anim_dict("amb@prop_human_seat_chair@female@legs_crossed@react_shock")
request_anim_dict("amb@prop_human_seat_chair@female@proper@react_shock")
request_anim_dict("amb@prop_human_seat_chair@female@proper_skinny@react_shock")
if has_model_loaded(ambient_ped[i].model)
// and has_anim_dict_loaded("amb@prop_human_seat_chair@male@elbows_on_knees@base")
// and has_anim_dict_loaded("amb@prop_human_seat_chair@male@generic_skinny@base")
// and has_anim_dict_loaded("amb@prop_human_seat_chair@male@left_elbow_on_knee@base")
and has_anim_dict_loaded("amb@prop_human_seat_chair@male@elbows_on_knees@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@male@generic_skinny@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@male@left_elbow_on_knee@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@female@arms_folded@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@female@legs_crossed@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@female@proper@react_shock")
and has_anim_dict_loaded("amb@prop_human_seat_chair@female@proper_skinny@react_shock")
if DOES_SCENARIO_EXIST_IN_AREA(ambient_ped[i].pos, 0.5, true)
ambient_ped[i].ped = create_ped(pedtype_mission, ambient_ped[i].model, ambient_ped[i].pos, ambient_ped[i].heading)
set_ped_keep_task(ambient_ped[i].ped, true)
set_entity_health(ambient_ped[i].ped, ambient_ped[i].health)
set_ped_random_component_variation(ambient_ped[i].ped)
set_blocking_of_non_temporary_events(ambient_ped[i].ped, true)
set_ped_name_debug(ambient_ped[i].ped, ambient_ped[i].name)
SET_PED_SHOULD_IGNORE_SCENARIO_EXIT_COLLISION_CHECKS(ambient_ped[i].ped, true)
CREATE_FORCED_OBJECT(ambient_ped[i].pos, 0.5, V_ILev_Chair02_ped, true)
//RETAIN_ENTITY_IN_INTERIOR(ambient_ped[i].ped, get_interior_at_coords_with_type(<<-251.4008, -2008.3384, 29.1458>>, "v_stadium"))
//set_entity_load_collision_flag(ambient_ped[i].ped, true)
TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP(ambient_ped[i].ped, ambient_ped[i].pos, 0.5)
force_ped_ai_and_animation_update(ambient_ped[i].ped)
ambient_ped[i].created = true
exit
endif
endif
endif
else
if ambient_ped_status[i] != do_nothing
and ambient_ped_status[i] != flee
//peds using a seated scenario will die via code when injured from being attacked.
//This is required as the is_ped_harmed_checks() will never be hit because if not is_ped_injured() will return false
if is_ped_injured(ambient_ped[i].ped)
make_ambient_peds_flee()
endif
endif
endif
endif
endfor
endproc
proc load_trip_skip_1()
if replay_active
start_replay_setup(<<-219.6464, -2037.8220, 26.6207>>, 56.6757, false)
endif
request_model(michael.model)
request_model(trevor.model)
request_model(ambient_ped[0].model)
request_model(ambient_ped[1].model)
request_model(groopie.model)
request_model(clip_board.model)
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
if IS_REPLAY_CHECKPOINT_VEHICLE_UNDER_SIZE_LIMIT(GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
michaels_car.model = GET_REPLAY_CHECKPOINT_VEHICLE_MODEL()
endif
endif
request_model(michaels_car.model)
set_vehicle_model_is_suppressed(michaels_car.model, true)
request_model(parked_truck[0].model)
set_vehicle_model_is_suppressed(parked_truck[0].model, true)
request_model(parked_trailer[0].model)
set_vehicle_model_is_suppressed(parked_trailer[0].model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
request_anim_dict("missfam4")
request_vehicle_recording(501, "lkfamily4")
request_vehicle_recording(502, "lkfamily4")
REQUEST_WAYPOINT_RECORDING("family4_0")
REQUEST_WAYPOINT_RECORDING("family4_1")
request_waypoint_recording("family4_2")
stadium_interior = get_interior_at_coords_with_type(<<-251.4008, -2008.3384, 29.1458>>, "v_stadium")
pin_interior_in_memory(stadium_interior)
ASSISTED_MOVEMENT_REQUEST_ROUTE("fame1")
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(ambient_ped[0].model)
or not has_model_loaded(ambient_ped[1].model)
or not has_model_loaded(groopie.model)
or not has_model_loaded(clip_board.model)
or not has_model_loaded(michaels_car.model)
or not has_model_loaded(parked_truck[0].model)
or not has_model_loaded(parked_trailer[0].model)
or not has_model_loaded(lazlows_car.model)
or not has_model_loaded(sentinel)
or not has_model_loaded(schafter2)
or not has_anim_dict_loaded("missfam4")
or not has_vehicle_recording_been_loaded(501, "lkfamily4")
or not has_vehicle_recording_been_loaded(502, "lkfamily4")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_0")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_1")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_2")
or not is_interior_ready(stadium_interior)
wait(0)
endwhile
clear_area(<<-219.6464, -2037.8220, 26.6207>>, 10000.00, true)
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
if IS_REPLAY_CHECKPOINT_VEHICLE_UNDER_SIZE_LIMIT(GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
michaels_car.veh = CREATE_REPLAY_CHECKPOINT_VEHICLE(<<-219.6464, -2037.8220, 26.6207>>, 56.6757)
set_vehicle_automatically_attaches(michaels_car.veh, false)
else
CREATE_PLAYER_VEHICLE(michaels_car.veh, char_michael, <<-219.6464, -2037.8220, 26.6207>>, 56.6757)
set_vehicle_automatically_attaches(michaels_car.veh, false)
endif
else
CREATE_PLAYER_VEHICLE(michaels_car.veh, char_michael, <<-219.6464, -2037.8220, 26.6207>>, 56.6757)
set_vehicle_automatically_attaches(michaels_car.veh, false)
endif
SET_FORCE_HD_VEHICLE(michaels_car.veh, true)
set_vehicle_engine_on(michaels_car.veh, true, true)
if get_current_player_ped_enum() = char_michael
set_ped_into_vehicle(player_ped_id(), michaels_car.veh)
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_trevor], char_trevor, michaels_car.veh, vs_front_right, false)
setup_buddy_attributes(selector_ped.pedID[selector_ped_trevor])
setup_relationship_contact(selector_ped.pedID[selector_ped_trevor], true)
add_ped_for_dialogue(scripted_speech, 2, selector_ped.pedID[selector_ped_trevor], "trevor")
IF not HAS_PED_GOT_FIREARM(selector_ped.pedID[selector_ped_trevor], false)
give_weapon_to_ped(selector_ped.pedID[selector_ped_trevor], weapontype_pistol, 50, false, false)
endif
else
set_ped_into_vehicle(player_ped_id(), michaels_car.veh)
add_ped_for_dialogue(scripted_speech, 2, selector_ped.pedID[selector_ped_michael], "trevor")
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, michaels_car.veh, vs_front_right, false)
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_relationship_contact(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
IF not HAS_PED_GOT_FIREARM(selector_ped.pedID[selector_ped_michael], false)
give_weapon_to_ped(selector_ped.pedID[selector_ped_michael], weapontype_pistol, 50, false, false)
endif
endif
while not create_vehicles_outside_stadium()
wait(0)
endwhile
parked_truck[0].veh = create_vehicle(parked_truck[0].model, parked_truck[0].pos, parked_truck[0].heading)
set_vehicle_doors_locked(parked_truck[0].veh, vehiclelock_locked)
set_vehicle_colours(parked_truck[0].veh, (10 * 0), 0)
parked_trailer[0].veh = create_vehicle(parked_trailer[0].model, parked_trailer[0].pos, parked_trailer[0].heading)
attach_vehicle_to_trailer(parked_truck[0].veh, parked_trailer[0].veh)
truck_driver.ped = create_ped_inside_vehicle(parked_truck[0].veh, pedtype_mission, truck_driver.model)
set_model_as_no_longer_needed(truck_driver.model)
set_blocking_of_non_temporary_events(truck_driver.ped, true)
start_playback_recorded_vehicle(parked_truck[0].veh, 501, "lkfamily4")
start_playback_recorded_vehicle(parked_trailer[0].veh, 502, "lkfamily4")
force_playback_recorded_vehicle_update(parked_truck[0].veh)
force_playback_recorded_vehicle_update(parked_trailer[0].veh)
truck_driver_ai_system_2_status = 2
groupie_ai_system()
ambient_ped_system()
while not does_entity_exist(ambient_ped[0].ped)
wait(0)
ambient_ped_system()
endwhile
if not replay_active
load_scene(<<-219.6464, -2037.8220, 26.6207>>)
endif
get_to_the_stadium_dialogue_system_status = 5
get_to_the_stadium_status = 2
end_cutscene()
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
mission_flow = get_to_the_stadium
endproc
proc load_trip_skip_2()
if replay_active
start_replay_setup(<<-239.1158, -2005.1418, 23.6855>>, 121.9928, false)
endif
request_model(get_player_ped_model(char_michael))
request_model(get_player_ped_model(char_trevor))
load_stadium_assets()
request_model(security.model)
REQUEST_WAYPOINT_RECORDING("family4_0")
REQUEST_WAYPOINT_RECORDING("family4_1")
stadium_interior = get_interior_at_coords_with_type(<<-251.4008, -2008.3384, 29.1458>>, "v_stadium")
pin_interior_in_memory(stadium_interior)
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(get_player_ped_model(char_michael))
or not has_model_loaded(get_player_ped_model(char_trevor))
or not has_stadium_assets_loaded()
or not has_model_loaded(security.model)
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_0")
or not GET_IS_WAYPOINT_RECORDING_LOADED("family4_1")
or not is_interior_ready(stadium_interior)
wait(0)
endwhile
set_current_selector_ped(selector_ped_trevor)
set_entity_coords(player_ped_id(), <<-239.1158, -2005.1418, 23.6855>>)
set_entity_heading(player_ped_id(), 121.9928)
DISABLE_CHEAT(CHEAT_TYPE_FAST_RUN, true)
clear_area(<<-239.1602, -2002.6151, 23.6856>>, 1000, true)
if not replay_active
NEW_LOAD_SCENE_START(<<-239.1602, -2002.6151, 23.6856>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 145.8395>>), 40.0)
while not IS_NEW_LOAD_SCENE_LOADED()
wait(0)
endwhile
NEW_LOAD_SCENE_STOP()
endif
set_current_selector_ped(selector_ped_trevor)
set_entity_coords(player_ped_id(), <<-238.8316, -2005.5457, 23.6855>>)
set_entity_heading(player_ped_id(), 103.8542)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
FORCE_ROOM_FOR_ENTITY(player_ped_id(), get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom004"))
create_player_ped_on_foot(selector_ped.pedID[selector_ped_michael], char_michael, <<-240.5416, -2006.2936, 23.6856>>, 85.0646)
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_relationship_contact(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
FORCE_ROOM_FOR_ENTITY(selector_ped.pedID[selector_ped_michael], get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom004"))
create_npc_ped_on_foot(lazlow.ped, CHAR_LAZLOW, lazlow.pos, lazlow.heading, false)
setup_buddy_attributes(lazlow.ped)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
lazlow.blip = create_blip_for_ped(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
FORCE_ROOM_FOR_ENTITY(lazlow.ped, get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom001"))
create_npc_ped_on_foot(tracey.ped, char_tracey, <<-235.0557, -2000.0452, 23.6854>>, 86.6000)
setup_buddy_attributes(tracey.ped)
setup_relationship_contact(tracey.ped, true)
set_ped_can_ragdoll(tracey.ped, true)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_HAIR, 4, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_TORSO, 5, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_HAND, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_FEET, 1, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_SPECIAL, 2, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_DECL, 0, 0)
SET_PED_COMPONENT_VARIATION(tracey.ped, PED_COMP_JBIB, 0, 0)
add_ped_for_dialogue(scripted_speech, 4, tracey.ped, "tracey")
FORCE_ROOM_FOR_ENTITY(tracey.ped, get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom004"))
security.ped = create_ped(pedtype_mission, security.model, <<-235.4601, -2003.0004, 23.6854>>, 86.6000)
FORCE_ROOM_FOR_ENTITY(security.ped, get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom004"))
set_entity_health(security.ped, 2)
set_ped_as_no_longer_needed(security.ped)
set_model_as_no_longer_needed(security.model)
wait(0)//wait for streaming requests to be registered.
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(player_ped_id())
or not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(selector_ped.pedID[selector_ped_michael])
or not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(lazlow.ped)
or not HAVE_ALL_STREAMING_REQUESTS_COMPLETED_for_ped(tracey.ped)
wait(0)
endwhile
if not is_ped_injured(player_ped_id())
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 5, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS, 13)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(player_ped_id(), MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(player_ped_id())
endif
if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 8, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(selector_ped.pedID[selector_ped_michael], MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
original_time = get_game_timer()
create_stadium_assets()
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2, "run after lazlow")
endproc
proc load_trip_skip_3()
clear_player_wanted_level(player_id())
set_max_wanted_level(0)
set_create_random_cops(false)
DELETE_ALL_TRAINS()
SET_RANDOM_TRAINS(false)
set_vehicle_model_is_suppressed(utillitruck, true)
set_vehicle_model_is_suppressed(utillitruck2, true)
set_vehicle_model_is_suppressed(utillitruck3, true)
if replay_active
start_replay_setup(truck.pos, truck.heading, false)
endif
request_model(michael.model)
request_model(trevor.model)
request_model(ambient_driver.model)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(lazlow.model)
set_ped_model_is_suppressed(lazlow.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
request_anim_dict("missfam4")
REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
REQUEST_PTFX_ASSET()
load_mission_vehicle_recordings()
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(ambient_driver.model)
or not has_model_loaded(truck.model)
or not has_model_loaded(trailer.model)
or not has_model_loaded(lazlows_car.model)
or not has_model_loaded(lazlow.model)
or not has_model_loaded(sentinel)
or not has_model_loaded(schafter2)
or not has_model_loaded(manana)
or not has_anim_dict_loaded("missfam4")
or not REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
or not has_ptfx_asset_loaded()
or not has_mission_vehicle_recordings_loaded()
wait(0)
endwhile
clear_area(<<-219.6464, -2037.8220, 26.6207>>, 10000.00, true)
create_entities_outside_stadium(false)
MODIFY_VEHICLE_TOP_SPEED(truck.veh, -15)
create_npc_ped_inside_vehicle(lazlow.ped, char_lazlow, lazlows_car.veh, vs_driver, false)
set_ped_can_ragdoll(lazlow.ped, false)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
set_current_selector_ped(selector_ped_trevor, false)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
set_ped_into_vehicle(player_ped_id(), truck.veh)
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, truck.veh, vs_front_right, false)
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
load_uber_data()
fUberPlaybackDensitySwitchOffRange = 200
bCreateAllWaitingCars = true
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
update_uber_playback(lazlows_car.veh, 1.0)
SET_UBER_PLAYBACK_TO_TIME_NOW(lazlows_car.veh, 3000.00)
update_uber_playback(lazlows_car.veh, 1.0)
force_playback_recorded_vehicle_update(lazlows_car.veh)
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(sentinel, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(schafter2, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(taco, 100)
if not replay_active
load_scene(get_entity_coords(player_ped_id()))
endif
start_audio_scene("FAMILY_4_CHASE_TRUCK_1")
trigger_music_event("FAM4_CHASE_RESTART")
end_cutscene()
original_time = get_game_timer()
//cam_help_time = get_game_timer()
dialogue_time = get_game_timer()
print_now("family4_god_2", 4000, 1)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3, "Chase truck")
mission_flow = uber_chase
endproc
proc load_trip_skip_4()
clear_player_wanted_level(player_id())
set_max_wanted_level(0)
set_create_random_cops(false)
DELETE_ALL_TRAINS()
SET_RANDOM_TRAINS(false)
set_vehicle_model_is_suppressed(utillitruck, true)
set_vehicle_model_is_suppressed(utillitruck2, true)
set_vehicle_model_is_suppressed(utillitruck3, true)
if replay_active
start_replay_setup(<<503.0987, -851.0613, 24.0433>>, 359.5455, false)
endif
request_model(michael.model)
request_model(trevor.model)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(lazlow.model)
set_ped_model_is_suppressed(lazlow.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
request_anim_dict("missfam4")
REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
REQUEST_PTFX_ASSET()
load_mission_vehicle_recordings()
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(truck.model)
or not has_model_loaded(trailer.model)
or not has_model_loaded(lazlows_car.model)
or not has_model_loaded(lazlow.model)
or not has_model_loaded(sentinel)
or not has_model_loaded(schafter2)
or not has_model_loaded(manana)
or not has_anim_dict_loaded("missfam4")
or not REQUEST_SCRIPT_AUDIO_BANK("SCRIPT\\FAM4_UNHITCH_TRAILER")
or not has_ptfx_asset_loaded()
or not has_mission_vehicle_recordings_loaded()
wait(0)
endwhile
SET_PED_POPULATION_BUDGET(2)
clear_area(<<502.97, -860.93, 24.15>>, 10000.00, true)
truck.veh = create_vehicle(truck.model, <<502.9799, -860.9365, 24.1538>>, 358.9030)
set_vehicle_on_ground_properly(truck.veh)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0)
set_entity_health(truck.veh, 1500)
set_vehicle_engine_health(truck.veh, 1500)
set_vehicle_petrol_tank_health(truck.veh, 1500)
//set_vehicle_dirt_level(truck.veh, 0.0)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
//set_vehicle_radio_enabled(truck.veh, false)
SET_RADIO_TO_STATION_NAME("off")
if not family4_trailer_detached
trailer.veh = create_vehicle(trailer.model, <<502.9191, -865.4985, 24.2171>>, 358.8516)
set_vehicle_on_ground_properly(trailer.veh)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
activate_physics(truck.veh)
activate_physics(trailer.veh)
endif
start_playback_recorded_vehicle(truck.veh, 201, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 7000)
force_playback_recorded_vehicle_update(truck.veh)
if does_entity_exist(trailer.veh)
start_playback_recorded_vehicle(trailer.veh, 202, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, 7000)
force_playback_recorded_vehicle_update(trailer.veh)
endif
MODIFY_VEHICLE_TOP_SPEED(truck.veh, -15)
lazlows_car.pos = get_position_of_vehicle_recording_at_time(001, 68000, "lkfamily4")
vector lazlows_car_rot
lazlows_car_rot = get_position_of_vehicle_recording_at_time(001, 68000, "lkfamily4")
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car_rot.z)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_entity_proofs(lazlows_car.veh, false, true, true, true, true)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
ADD_ENTITY_TO_AUDIO_MIX_GROUP(lazlows_car.veh, "FAMILY_4_LAZLOWS_CAR")
create_npc_ped_inside_vehicle(lazlow.ped, char_lazlow, lazlows_car.veh, vs_driver, false)
set_ped_can_ragdoll(lazlow.ped, false)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
set_current_selector_ped(selector_ped_trevor, false)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
set_ped_into_vehicle(player_ped_id(), truck.veh)
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, truck.veh, vs_front_right, false)
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
load_uber_data()
fUberPlaybackDensitySwitchOffRange = 200
bCreateAllWaitingCars = true
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
//update_uber_playback(lazlows_car.veh, 1.0)
SET_UBER_PLAYBACK_TO_TIME_NOW(lazlows_car.veh, 68000)
update_uber_playback(lazlows_car.veh, 1.0)
force_playback_recorded_vehicle_update(lazlows_car.veh)
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(sentinel, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(schafter2, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(taco, 100)
if not replay_active
load_scene(get_entity_coords(player_ped_id()))
endif
start_audio_scene("FAMILY_4_CHASE_TRUCK_1")
trigger_music_event("FAM4_CHASE_RESTART")
uber_speed_status = 3
dialogue_status = 3
uber_chase_in_car_conversation = 6 //8
cleanup_asset_status = 2
ambient_train_system_status = 5
disired_playback_speed = 1.0
lazlows_car.speed = 1.0 //forces the speed to be 1.0 and won't cause it to start from 0.0 which causes slow acceleration.
original_time = get_game_timer()
while not lk_timer(original_time, 1000)
wait(0)
update_uber_playback(lazlows_car.veh, 1.0)
endwhile
if is_vehicle_driveable(truck.veh)
if is_playback_going_on_for_vehicle(truck.veh)
stop_playback_recorded_vehicle(truck.veh)
endif
endif
if does_entity_exist(trailer.veh)
if is_vehicle_driveable(trailer.veh)
if is_playback_going_on_for_vehicle(trailer.veh)
stop_playback_recorded_vehicle(trailer.veh)
endif
endif
endif
end_cutscene()
original_time = get_game_timer()
//cam_help_time = get_game_timer()
dialogue_time = get_game_timer()
print_now("family4_god_2", 4000, 1)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4, "half way through truck chase", true)
mission_flow = uber_chase
endproc
proc load_trip_skip_5()
set_max_wanted_level(0)
set_create_random_cops(false)
DELETE_ALL_TRAINS()
SET_RANDOM_TRAINS(false)
if replay_active
start_replay_setup(<<1059.5020, -291.9928, 49.4891>>, 332.7211)
endif
request_model(michael.model)
request_model(trevor.model)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlow.model)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_vehicle_recording(001, "lkfamily4")
request_mocap_data_for_Family_4_MCS_3_concat()
if replay_active
END_REPLAY_SETUP()
endif
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(truck.model)
or not has_model_loaded(trailer.model)
or not has_model_loaded(lazlow.model)
or not has_model_loaded(lazlows_car.model)
or not has_vehicle_recording_been_loaded(001, "lkfamily4")
or not has_cutscene_loaded()
wait(0)
endwhile
clear_area(<<1059.5020, -291.9928, 49.4891>>, 1000, true)
truck.veh = create_vehicle(truck.model, <<1059.5020, -291.9928, 49.4891>>, 332.7211)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0) //73.0
trailer.veh = create_vehicle(trailer.model, <<1051.93, -304.8, 49.4891>>, 332.7211)
set_vehicle_tyres_can_burst(trailer.veh, false)
SET_ENTITY_PROOFS(trailer.veh, true, true, true, true, true)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
set_current_selector_ped(selector_ped_trevor, false)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
set_ped_into_vehicle(player_ped_id(), truck.veh)
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, truck.veh, vs_front_right, false)
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
lazlows_car.veh = create_vehicle(lazlows_car.model, get_position_of_vehicle_recording_at_time(001, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, "lkfamily4") - 3500), "lkfamily4"), 332.2)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_vehicle_colours(lazlows_car.veh, 27, 0)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
skip_to_end_and_stop_playback_recorded_vehicle(lazlows_car.veh)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
create_npc_ped_inside_vehicle(lazlow.ped, CHAR_LAZLOW, lazlows_car.veh, vs_driver, false)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
register_entity_for_cutscene(selector_ped.pedID[SELECTOR_PED_Michael], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(lazlow.ped, "Lazlow", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(lazlows_car.veh, "Lazlows_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(truck.veh, "family_4_truck", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
if does_entity_exist(trailer.veh)
register_entity_for_cutscene(trailer.veh, "Family_4_trailer", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
else
register_entity_for_cutscene(null, "Family_4_trailer", CU_DONT_ANIMATE_ENTITY, trailer.model)
endif
register_entity_for_cutscene(null, "Lazlow_Jeans", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, lazlows_jeans.model)
if not replay_active
load_scene(<<1059.5020, -291.9928, 49.4891>>)
endif
start_new_cutscene_no_fade()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
start_cutscene()
while not is_cutscene_playing()
wait(0)
endwhile
do_screen_fade_in(default_fade_time)
play_final_mocap_status = 2
mission_flow = play_final_mocap
endproc
proc load_repeat_play_assets()
request_model(get_player_ped_model(char_michael))
while not has_model_loaded(get_player_ped_model(char_michael))
wait(0)
endwhile
set_current_selector_ped(selector_ped_michael)
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-822.2418, 180.9213, 70.6951>>)
set_entity_heading(player_ped_id(), 73.8140)
NEW_LOAD_SCENE_START(<<-822.2418, 180.9213, 70.6951>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 73.8140>>), 100.0)
while not IS_NEW_LOAD_SCENE_LOADED()
wait(0)
endwhile
NEW_LOAD_SCENE_STOP()
michaels_house_interior = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-800.31, 184.80, 72.72>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(michaels_house_interior)
REQUEST_CUTSCENE("FAM_4_INT_ALT1")
while not IS_INTERIOR_READY(michaels_house_interior)
or not HAS_CUTSCENE_LOADED()
wait(0)
endwhile
switch get_current_player_ped_enum()
case char_michael
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "trevor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_trevor))
break
endswitch
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
START_CUTSCENE()
while not is_cutscene_playing()
wait(0)
endwhile
SET_STATIC_EMITTER_ENABLED("SE_MICHAELS_HOUSE_RADIO", FALSE)
SET_SRL_POST_CUTSCENE_CAMERA(michael.pos, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, michael.heading>>))
SET_SRL_READAHEAD_TIMES(5,5,5,5)
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-800.31, 184.80, 72.72>>, 300.00)
DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(char_michael)
players_last_vehicle = get_players_last_vehicle()
//---
//players last vehicle in the grounds of michaels house.
if does_entity_exist(players_last_vehicle)
if is_vehicle_driveable(players_last_vehicle)
if is_entity_in_angled_area(players_last_vehicle, <<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400)
//put vehicle ouside michaels front door
//area round michaels house covering kitchen and driveway.
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-812.943, 167.079, 69.294>>, <<-811.455, 192.135, 76.794>>, 37.000, michaels_car.pos, michaels_car.heading, <<15.0, 15.0, 15.0>>, false)
set_players_last_vehicle_to_vehicle_gen(michaels_car.pos, michaels_car.heading)
else
//put players last vehicle across the road from michaels house
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-860.221, 150.219, 62.021>>, <<-858.733, 175.275, 72.921>>, 31.500, car_pos_outside_house, car_heading_outside_house, <<15.0, 15.0, 15.0>>, false)//, false) //2.5, 5.5, 2.0
set_players_last_vehicle_to_vehicle_gen(car_pos_outside_house, car_heading_outside_house)
endif
endif
endif
clear_area(<<-800.31, 184.80, 72.72>>, 10000, true)
intro_mocap_status = 2
do_screen_fade_in(default_fade_time)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "start of mission")
g_stageSnapshot.eCharacter = char_michael //the snap shot data locks itself off once a stage is set. So the same stage can not be set again. As a result stage 0 is called at the begining automatically by flow so by calling it here will not update anything. That's why we need to override it.
endproc
/// PURPOSE: if the player as franklin switches to michael. It will set the last players vehicle
/// to the inpound.
/// This fixes the issue where the player as franklin can drive to michaels house in a
/// vehicle then performs a switch to michael leaving the vehicle when the mission starts.
///
/// The player switch cleanup the previous ped (franklin) but will not cleanup the vehicle for some reason
proc cleanup_franklins_vehicle_on_switch_to_michael()
players_last_vehicle = get_players_last_vehicle()
if does_entity_exist(players_last_vehicle)
if is_vehicle_driveable(players_last_vehicle)
set_entity_as_mission_entity(players_last_vehicle, true, true)
SEND_VEHICLE_DATA_TO_IMPOUND_USING_VEHICLE(players_last_vehicle)
delete_vehicle(players_last_vehicle)
else
set_entity_as_mission_entity(players_last_vehicle, true, true)
delete_vehicle(players_last_vehicle)
endif
endif
endproc
proc mission_setup()
#IF IS_DEBUG_BUILD
load_lk_widgets()
load_vehicle_force_widget_data()
SET_LOCATES_HEADER_WIDGET_GROUP(family_4_widget_group)
#endif
//INFORM_MISSION_STATS_OF_MISSION_START_family_four()
clear_prints()
clear_help()
initialise_mission_variables()
load_text_and_dialogue()
add_relationship_groups()
SET_ALL_RANDOM_PEDS_FLEE(player_id(), true)
set_vehicle_model_is_suppressed(truck.model, true)
set_vehicle_model_is_suppressed(trailer.model, true)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
set_vehicle_model_is_suppressed(michaels_car.model, true)
if is_player_playing(player_id())
clear_player_wanted_level(player_id())
endif
set_wanted_level_multiplier(0.5)
SUPPRESS_EMERGENCY_CALLS()
//blocks all vehicle generators in stadium car park.
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-392.1, -2114.8, 100.00>>, <<-141.4, -1837.0, -100.00>>, false)
//entrance to car park to stop scenario cars driving in
add_scenario_blocking_area(<<-193.70, -2025.00, 35.000>>, <<-145.700, -1988.000, 20.000>>)
//security guard scenarios on front of stadium
add_scenario_blocking_area(<<-267.800, -2032.000, 35.000>>, <<-246.200, -2024.000, -28.000>>)
//inside stadium
add_scenario_blocking_area(<<-260.800, -2029.000, -100.000>>, <<-333.000, -1931.000, 100.000>>)
add_scenario_blocking_area(<<-254.0, -2024.9, -100.000>>, <<-333.000, -1931.000, 100.000>>)
add_scenario_blocking_area(<<-249.700, -2016.000, -100.000>>, <<-333.000, -1931.000, 100.000>>)
//storm drain pass mocap area
add_scenario_blocking_area(<<987.000, -209.500, 0.000>>, <<1121.000, -413.000, 78.000>>)
//lock and open stadium doors
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-259.49, -2031.94, 30.52>>, true, 0.0, 0.0, 1.0)
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-257.49, -2029.56, 30.52>>, true, 0.0, 0.0, -1.0)
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-256.08, -2027.87, 30.52>>, true, 0.0, 0.0, 1.0)
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-254.09, -2025.5, 30.52>>, true, 0.0, 0.0, -1.0)
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-252.67, -2023.81, 30.52>>, true, 0.0, 0.0, 1.0)
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(V_ILev_STAD_FDOOR, <<-250.68, -2021.44, 30.52>>, true, 0.0, 0.0, -1.0)
SET_BUILDING_STATE(BUILDINGNAME_IPL_STADIUM_INTERIOR, BUILDINGSTATE_DESTROYED)
if is_replay_in_progress()
replay_active = true
if not g_bShitskipAccepted
SWITCH Get_Replay_Mid_Mission_Stage()
case 0
load_trip_skip_0() //start of mission
break
case 1
load_trip_skip_1() //outside stadium
break
case 2
load_trip_skip_2() //chase lazlow
break
case 3
load_trip_skip_3() //truck chase
break
case 4
load_trip_skip_4() //half way through chase
break
case 5
break
endswitch
else
int shit_skip_status
shit_skip_status = Get_Replay_Mid_Mission_Stage() + 1
switch shit_skip_status
case 1
load_trip_skip_1()
break
case 2
load_trip_skip_2()
break
case 3
load_trip_skip_3()
break
case 4
load_trip_skip_4()
break
case 5
load_trip_skip_5()
break
endswitch
endif
replay_active = false //this switches off propper replay funcitonality to ensure the z skips work.
else
family4_trailer_detached = false
if not is_repeat_play_active()
if not is_screen_faded_in()
if not is_screen_fading_in()
do_screen_fade_in(default_fade_time)
endif
endif
//if the player is trevor and has switched to michael the mission will start with the intro mocap
if IS_PLAYER_SWITCH_IN_PROGRESS()
if get_current_player_ped_enum() = char_michael
mission_flow = switching_into_michael
endif
cleanup_franklins_vehicle_on_switch_to_michael()
else
switch get_current_player_ped_enum()
case char_trevor
mission_flow = trevor_leadin
break
endswitch
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "start of mission")
else
load_repeat_play_assets()
endif
endif
endproc
proc create_start_of_mission_assets()
clear_area(<<-800.31, 184.80, 72.72>>, 1000, true)
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_DEFAULT)
IF NOT IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
ENDIF
SET_STATIC_EMITTER_ENABLED("SE_MICHAELS_HOUSE_RADIO", true)//enabling radio after disabling it for mocap
if is_valid_interior(michaels_house_interior)
unpin_interior(michaels_house_interior)
endif
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
CREATE_NPC_VEHICLE(amandas_car.veh, char_amanda, amandas_car.pos, amandas_car.heading)
set_vehicle_as_no_longer_needed(amandas_car.veh)
set_all_random_peds_flee(player_id(), true)
//in the event michaels car is created by setup_players_vehicle_for_return_to_gameplay()
if does_entity_exist(michaels_car.veh)
if is_entity_a_mission_entity(michaels_car.veh)
SET_MISSION_VEHICLE_GEN_VEHICLE(michaels_car.veh, michaels_car.pos, michaels_car.heading)
OVERRIDE_REPLAY_CHECKPOINT_VEHICLE(michaels_car.veh)
//set_vehicle_gen_vehicle(vehgen_michael_savehouse, michaels_car.veh)
//set_vehicle_as_no_longer_needed(michaels_car.veh)
endif
endif
set_model_as_no_longer_needed(michaels_car.model)//set model as no longer needed in the event michaels car model was not created via setup_players_vehicle_for_return_to_gameplay() as it was not needed or it has been given to the vehicle gen controller
//SET_TAXI_DROPOFF_LOCATION_FOR_BLIP(locates_data.LocationBlip, <<-219.2400, -2037.6470, 27.0>>, 57.2397)
if is_screen_faded_out()
end_cutscene()
else
end_cutscene_no_fade(false, false)
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "start of mission")
mission_flow = get_to_the_stadium
// clear_ped_tasks_immediately(player_ped_id())
// delete_ped(selector_ped.pedID[selector_ped_michael])
// DELETE_VEHICLE(truck.veh)
// DELETE_VEHICLE(trailer.veh)
// for i = 0 to count_of(parked_truck) - 1
// DELETE_VEHICLE(parked_truck[i].veh)
// DELETE_VEHICLE(parked_trailer[i].veh)
// endfor
// set_model_as_no_longer_needed(michael.model)
// set_model_as_no_longer_needed(truck.model)
// set_model_as_no_longer_needed(trailer.model)
// set_entity_collision(lazlows_car.veh, false)
//
//
// delete_ped(lazlow.ped)
// DELETE_VEHICLE(lazlows_car.veh)
// delete_ped(selector_ped.pedID[selector_ped_trevor])
// mission_flow = train_crash_cutscene_test_bed
//mission_flow = detach_trailer_cutscene_test_bed
//USE WHEN RECORDING THE MAIN CAR OR ANY OTHER SETPIECE VEHICLE.
// mission_flow = record_setpiece_cars
// //when comparing recording times between the 2 enties
// family_4_record_lazlow_status = 2
//re-recording traffic and setpiece recordings
// family_4_record_lazlow_status = 4
// delete_ped(selector_ped.pedID[selector_ped_trevor])
// mission_flow = storm_drain_cutscene
endproc
proc request_start_of_mission_assets()
request_model(michael.model)
request_model(trevor.model)
request_model(michaels_car.model)
set_vehicle_model_is_suppressed(michaels_car.model, true)
REQUEST_VEHICLE_ASSET(michaels_car.model, enum_to_int(VRF_REQUEST_ALL_ANIMS))
request_model(amandas_car.model)
set_vehicle_model_is_suppressed(amandas_car.model, true)
REQUEST_WAYPOINT_RECORDING("family4_0")
REQUEST_WAYPOINT_RECORDING("family4_1")
request_waypoint_recording("family4_2")
endproc
func bool has_start_of_mission_assets_loaded()
if not has_model_loaded(michael.model)
printstring("a")
printnl()
endif
if not has_model_loaded(trevor.model)
printstring("b")
printnl()
endif
if not has_model_loaded(michaels_car.model)
printstring("c")
printnl()
endif
if not has_vehicle_asset_loaded(michaels_car.model)
printstring("d")
printnl()
endif
if not GET_IS_WAYPOINT_RECORDING_LOADED("family4_0")
printstring("e")
printnl()
endif
if not GET_IS_WAYPOINT_RECORDING_LOADED("family4_1")
printstring("f")
printnl()
endif
if not GET_IS_WAYPOINT_RECORDING_LOADED("family4_2")
printstring("g")
printnl()
endif
if has_model_loaded(michael.model)
and has_model_loaded(trevor.model)
and has_model_loaded(michaels_car.model)
and has_vehicle_asset_loaded(michaels_car.model)
and GET_IS_WAYPOINT_RECORDING_LOADED("family4_0")
and GET_IS_WAYPOINT_RECORDING_LOADED("family4_1")
and GET_IS_WAYPOINT_RECORDING_LOADED("family4_2")
return true
endif
return false
endfunc
proc setup_players_vehicle_for_return_to_gameplay()
if not does_entity_exist(michaels_car.veh)
if has_model_loaded(michaels_car.model)
//michaels_car.veh = GET_MISSION_START_VEHICLE_INDEX() //get_players_last_vehicle() //GET_MISSION_START_VEHICLE_INDEX()
if not is_players_last_vehicle_present_and_acceptable(GET_PLAYERS_LAST_VEHICLE(), michaels_car.pos, 1, <<-822.8611, 157.7590, 69.0090>>, 87.7002)
CREATE_PLAYER_VEHICLE(michaels_car.veh, char_michael, michaels_car.pos, michaels_car.heading, false)
set_vehicle_automatically_attaches(michaels_car.veh, false)
SET_LOCATES_BUDDIES_TO_GET_INTO_NEAREST_CAR(locates_data, michaels_car.veh)
else
vehicle_index players_last_veh = GET_PLAYERS_LAST_VEHICLE()
set_vehicle_automatically_attaches(players_last_veh, false)
SET_LOCATES_BUDDIES_TO_GET_INTO_NEAREST_CAR(locates_data, players_last_veh)
endif
endif
endif
endproc
proc family_4_trevor_leadin()
switch family_4_trevor_leadin_status
case 0
start_new_cutscene_no_fade(false, true, true, true)
players_last_vehicle = get_players_last_vehicle()
//---
//players last vehicle in the grounds of michaels house.
if does_entity_exist(players_last_vehicle)
if is_vehicle_driveable(players_last_vehicle)
if is_entity_in_angled_area(players_last_vehicle, <<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400)
//area in the grounds of michaels house
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400, michaels_car.pos, michaels_car.heading, <<15.0, 15.0, 15.0>>)
set_players_last_vehicle_to_vehicle_gen(michaels_car.pos, michaels_car.heading)
set_players_last_vehicle_to_vehicle_gen(michaels_car.pos, michaels_car.heading)
trevors_vehicle_set_as_vehicle_gen = true
else
//SET_MISSION_VEHICLE_GEN_VEHICLE will set the vehicle as mission entity beloning to the
//vehicle gen controller
//It spawns the vehicle at the new coords when the distance between the player and the vehicle
//is greater than 310m and the distance between the player and the new spawn pos > 310m
//put players last vehicle across the road from michaels house
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-860.221, 150.219, 62.021>>, <<-858.733, 175.275, 72.921>>, 31.500, car_pos_outside_house, car_heading_outside_house, <<15.0, 15.0, 15.0>>, false)//, false) //2.5, 5.5, 2.0
set_players_last_vehicle_to_vehicle_gen(car_pos_outside_house, car_heading_outside_house)
trevors_vehicle_set_as_vehicle_gen = true
endif
endif
endif
clear_area(<<-868.3934, 152.2284, 62.5499>>, 1000, true)
if get_current_player_vehicle(players_vehicle)
set_entity_heading(players_vehicle, car_heading_outside_house)
set_entity_coords(players_vehicle, car_pos_outside_house)
set_vehicle_on_ground_properly(players_vehicle)
//no need to re-position car as it is done above.
else
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-870.8275, 152.0728, 62.6623>>)
set_entity_heading(player_ped_id(), 287.7694)
force_ped_ai_and_animation_update(player_ped_id(), true)
endif
task_look_at_coord(player_ped_id(), <<-831.9, 165.2, 71.3>>, 5000)
spline_cam = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
camera_a = create_cam_with_params("default_scripted_camera", <<-872.385559,148.430267,63.400925>>,<<8.263765,-0.000000,-63.055546>>,30.017197)
camera_b = create_cam_with_params("default_scripted_camera", <<-869.306824,147.817139,64.735840>>,<<9.493369,0.000000,-63.179226>>,30.017197)
ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME(spline_cam, camera_a, 0)
ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME(spline_cam, camera_b, 5000)
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
render_script_cams(true, false)
family_4_trevor_leadin_status++
break
case 1
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
if not is_cam_interpolating(spline_cam)
family_4_trevor_leadin_status++
endif
break
case 2
if DO_TIMELAPSE(SP_MISSION_FAMILY_4, sTimelapse)
mission_flow = intro_mocap
endif
break
endswitch
endproc
proc family_4_intro_mocap()
//debug code ********
// initialise_mission_variables()
// mission_flow = train_crash_cutscene_test_bed
// //mission_flow = play_final_mocap
//
// #IF IS_DEBUG_BUILD
// load_lk_widgets()
// load_vehicle_force_widget_data()
// SET_LOCATES_HEADER_WIDGET_GROUP(family_4_widget_group)
// #endif
//////
// return true
//end debug code *******
// bShowSetPieceIndices = true
//bShowTrafficIndices = true
switch intro_mocap_status
case 0
michaels_house_interior = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-800.31, 184.80, 72.72>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(michaels_house_interior)
switch get_current_player_ped_enum()
case char_michael
REQUEST_CUTSCENE("FAM_4_INT_ALT1")
break
case char_trevor
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("FAM_4_INT_ALT1", CS_SECTION_3 | CS_SECTION_4)
break
endswitch
//fix for lighting flash - bug 1574084
if not new_load_scene_activated_for_michaels_house
NEW_LOAD_SCENE_START(<<-797.4664, 185.0637, 72.6055>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 97.6005>>), 20.00)
new_load_scene_activated_for_michaels_house = true
endif
if IS_INTERIOR_READY(michaels_house_interior)
if HAS_CUTSCENE_LOADED()
switch get_current_player_ped_enum()
case char_michael
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "trevor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_trevor))
break
case char_trevor
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "michael", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_michael))
break
endswitch
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
intro_mocap_status++
endif
endif
break
case 1
if is_cutscene_playing()
if new_load_scene_activated_for_michaels_house
NEW_LOAD_SCENE_STOP()
endif
SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE)
SET_STATIC_EMITTER_ENABLED("SE_MICHAELS_HOUSE_RADIO", FALSE)
SET_SRL_POST_CUTSCENE_CAMERA(michael.pos, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, michael.heading>>))
SET_SRL_READAHEAD_TIMES(5,5,5,5)
//do not delete the vehicle gen in area if they have already been set by the trevor during lead in stage.
//this will cause trevors car parked outside to be set as no longer needed then the clear area bellow
//will delete it.
if not trevors_vehicle_set_as_vehicle_gen
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<-800.31, 184.80, 72.72>>, 300.00)
endif
DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(char_michael)
//DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(char_franklin)
players_last_vehicle = get_players_last_vehicle()
//---
//players last vehicle in the grounds of michaels house.
if does_entity_exist(players_last_vehicle)
if is_vehicle_driveable(players_last_vehicle)
if is_entity_in_angled_area(players_last_vehicle, <<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400)
//area in the grounds of michaels house
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400, michaels_car.pos, michaels_car.heading, <<15.0, 15.0, 15.0>>)
set_players_last_vehicle_to_vehicle_gen(michaels_car.pos, michaels_car.heading)
else
//put players last vehicle across the road from michaels house
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-860.221, 150.219, 62.021>>, <<-858.733, 175.275, 72.921>>, 31.500, car_pos_outside_house, car_heading_outside_house, <<15.0, 15.0, 15.0>>)//, false) //2.5, 5.5, 2.0
set_players_last_vehicle_to_vehicle_gen(car_pos_outside_house, car_heading_outside_house)
endif
endif
endif
clear_area(<<-800.31, 184.80, 72.72>>, 10000, true)
intro_mocap_status++
endif
break
case 2
request_start_of_mission_assets()
has_start_of_mission_assets_loaded()
if not WAS_CUTSCENE_SKIPPED()
if is_cutscene_active()
setup_players_vehicle_for_return_to_gameplay()
switch get_player_ped_enum(player_ped_id())
case char_michael
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor)))
selector_ped.pedID[selector_ped_trevor] = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor)))
ENDIF
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor))
if not is_ped_injured(selector_ped.pedID[selector_ped_trevor])
set_entity_coords(selector_ped.pedID[selector_ped_trevor], trevor.pos)
set_entity_heading(selector_ped.pedID[selector_ped_trevor], trevor.heading)
setup_buddy_attributes(selector_ped.pedID[selector_ped_trevor])
setup_ped_weapon(selector_ped.pedID[selector_ped_trevor], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_trevor])
add_ped_for_dialogue(scripted_speech, 2, selector_ped.pedID[selector_ped_trevor], "trevor")
if does_entity_exist(michaels_car.veh)
if is_vehicle_driveable(michaels_car.veh)
task_enter_vehicle(selector_ped.pedID[selector_ped_trevor], michaels_car.veh, 30000, vs_front_right, PEDMOVE_walk)
endif
endif
force_ped_motion_state(selector_ped.pedID[selector_ped_trevor], ms_on_foot_walk, false)//, faus_cutscene_exit)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_trevor])
endif
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id(), true)
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
endif
break
case char_trevor
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael)))
selector_ped.pedID[selector_ped_michael] = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael)))
ENDIF
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
set_entity_coords(selector_ped.pedID[selector_ped_michael], trevor.pos)
set_entity_heading(selector_ped.pedID[selector_ped_michael], trevor.heading)
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_ped_weapon(selector_ped.pedID[selector_ped_michael], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_michael])
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
if does_entity_exist(michaels_car.veh)
if is_vehicle_driveable(michaels_car.veh)
task_enter_vehicle(selector_ped.pedID[selector_ped_michael], michaels_car.veh, 30000, vs_front_right, PEDMOVE_walk)
endif
endif
force_ped_motion_state(selector_ped.pedID[selector_ped_michael], ms_on_foot_walk, false)//, faus_cutscene_exit)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor))
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id(), true)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
endif
break
endswitch
if CAN_SET_EXIT_STATE_FOR_CAMERA()
set_gameplay_cam_relative_heading(0)
set_gameplay_cam_relative_pitch(0)
endif
else
if has_start_of_mission_assets_loaded()
REPLAY_STOP_EVENT()
create_start_of_mission_assets()
endif
endif
else
SET_CUTSCENE_FADE_VALUES(false, false, true)
intro_mocap_status++
endif
break
case 3
request_start_of_mission_assets()
//if is_screen_faded_out()
if is_cutscene_active()
switch get_player_ped_enum(player_ped_id())
case char_michael
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("trevor"))
selector_ped.pedID[selector_ped_trevor] = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("trevor"))
ENDIF
break
case char_trevor
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("michael"))
selector_ped.pedID[selector_ped_michael] = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("michael"))
ENDIF
break
endswitch
else
NEW_LOAD_SCENE_START(michael.pos, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, michael.heading>>), 20.00)
while not has_start_of_mission_assets_loaded()
or not IS_NEW_LOAD_SCENE_LOADED()
wait(0)
endwhile
NEW_LOAD_SCENE_STOP()
setup_players_vehicle_for_return_to_gameplay()
switch get_player_ped_enum(player_ped_id())
case char_michael
if not is_ped_injured(selector_ped.pedID[selector_ped_trevor])
set_entity_coords(selector_ped.pedID[selector_ped_trevor], trevor.pos)
set_entity_heading(selector_ped.pedID[selector_ped_trevor], trevor.heading)
setup_buddy_attributes(selector_ped.pedID[selector_ped_trevor])
setup_ped_weapon(selector_ped.pedID[selector_ped_trevor], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_trevor])
add_ped_for_dialogue(scripted_speech, 2, selector_ped.pedID[selector_ped_trevor], "trevor")
if does_entity_exist(michaels_car.veh)
if is_vehicle_driveable(michaels_car.veh)
task_enter_vehicle(selector_ped.pedID[selector_ped_trevor], michaels_car.veh, 30000, vs_front_right, PEDMOVE_walk)
endif
endif
force_ped_motion_state(selector_ped.pedID[selector_ped_trevor], ms_on_foot_walk, false)//, faus_cutscene_exit)
//force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_trevor])
//script_assert("trevor weapon")
endif
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
//task_follow_nav_mesh_to_coord(player_ped_id(), <<-821.7558, 179.6038, 70.5790>>, pedmove_walk)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id())
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
break
case char_trevor
if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
set_entity_coords(selector_ped.pedID[selector_ped_michael], trevor.pos)
set_entity_heading(selector_ped.pedID[selector_ped_michael], trevor.heading)
setup_buddy_attributes(selector_ped.pedID[selector_ped_michael])
setup_ped_weapon(selector_ped.pedID[selector_ped_michael], weapontype_pistol, 50)
setup_relationship_contact(selector_ped.pedID[selector_ped_michael])
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
if does_entity_exist(michaels_car.veh)
if is_vehicle_driveable(michaels_car.veh)
task_enter_vehicle(selector_ped.pedID[selector_ped_michael], michaels_car.veh, 30000, vs_front_right, PEDMOVE_walk)
endif
endif
force_ped_motion_state(selector_ped.pedID[selector_ped_michael], ms_on_foot_walk, false)//, faus_cutscene_exit)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
set_entity_coords(player_ped_id(), michael.pos)
set_entity_heading(player_ped_id(), michael.heading)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id())
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
break
endswitch
create_start_of_mission_assets()
endif
//endif
break
endswitch
endproc
proc family_4_switching_into_michael()
michaels_house_interior = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-800.31, 184.80, 72.72>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(michaels_house_interior)
REQUEST_CUTSCENE("FAM_4_INT_ALT1")
SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_FORCE_COMPLETELY_OFF)//need to do this whilst loading a cutscene whilst doing a cutscene
SET_SRL_READAHEAD_TIMES(5, 5, 5, 5)
if IS_PLAYER_SWITCH_IN_PROGRESS()
SWITCH_STATE camera_switch_state
camera_switch_state = GET_PLAYER_SWITCH_STATE()
//if (camera_switch_state != SWITCH_STATE_OUTRO_SWOOP)
if (camera_switch_state != SWITCH_STATE_OUTRO_HOLD)
//alwyns code will hold on switch_state_hold in the event all the assets have not streamed in
if not allow_switch_to_contiune
IF ((camera_switch_state >= SWITCH_STATE_JUMPCUT_DESCENT) and (GET_PLAYER_SWITCH_JUMP_CUT_INDEX() < 1))
and IS_INTERIOR_READY(michaels_house_interior)
and HAS_CUTSCENE_LOADED()
ar_ALLOW_PLAYER_SWITCH_OUTRO()
allow_switch_to_contiune = true
// REGISTER_ENTITY_FOR_CUTSCENE(NULL, "trevor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_trevor))
//
// SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
//
// START_CUTSCENE()
//
// intro_mocap_status = 1
//
// mission_flow = intro_mocap
endif
endif
else
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "trevor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_trevor))
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
START_CUTSCENE()
intro_mocap_status = 1
mission_flow = intro_mocap
endif
elif has_cutscene_loaded()
if not is_cutscene_playing()
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "trevor", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, get_player_ped_model(char_trevor))
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
START_CUTSCENE()
intro_mocap_status = 1
mission_flow = intro_mocap
script_assert("SWITCH_IN_PROGRESS something gone wrong")
endif
endif
endproc
//proc family_4_get_the_truck()
//
// get_the_truck_blipping_system()
//
// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
//
// if does_blip_exist(truck.blip)
// remove_blip(truck.blip)
// endif
//
// set_max_wanted_level(4)
// clear_player_wanted_level(player_id())
// set_player_wanted_level(player_id(), 4)
// SET_PLAYER_WANTED_LEVEL_NOW(player_id())
// //RESET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER()
//
// clear_prints()
// print_now("family4_god_2", default_god_text_time, 1)
//
// original_time = get_game_timer()
//
// mission_flow = lose_the_cops
//
// endif
//
// //******TEMP
// temp_blip = add_blip_for_coord(<<-841.5194, 7.6417, 41.8163>>)
// set_blip_route(temp_blip, true)
// //******END TEMP
//
// mission_flow = lose_the_cops
//
//endproc
proc truck_blipping_system()
if not deactivate_truck_blipping_system
IS_PLAYER_AT_LOCATION_WITH_BUDDY_IN_VEHICLE(locates_data, get_entity_coords(lazlow.ped), <<0.01, 0.01, 0.01>>, false, selector_ped.pedID[selector_ped_michael], truck.veh, "", "family4_god_14", "", "family4_god_3")
if does_blip_exist(locates_data.LocationBlip)
set_blip_alpha(locates_data.LocationBlip, 0)
set_blip_route(locates_data.LocationBlip, false)
if not does_blip_exist(lazlow.blip)
lazlow.blip = create_blip_for_ped(lazlow.ped, true)
SET_BLIP_NAME_FROM_TEXT_FILE(lazlow.blip, "family4_god_17")
set_blip_scale(lazlow.blip, 1.0)
else
if is_ped_sitting_in_vehicle(lazlow.ped, lazlows_car.veh)
set_blip_scale(lazlow.blip, 1.0)
else
set_blip_scale(lazlow.blip, 0.5)
endif
endif
UPDATE_CHASE_BLIP(lazlow.blip, lazlow.ped, 200.00)
else
if does_blip_exist(lazlow.blip)
remove_blip(lazlow.blip)
endif
endif
endif
endproc
proc police_car_creation()
// vector players_offset
// vector players_pos
// vector node_face_vector
//
// float angle_dif = 0
//
//
// players_pos = get_entity_coords(player_ped_id())
// players_offset = get_offset_from_entity_in_world_coords(player_ped_id(), <<0.0, 180.00, 0.0>>)
//
// GET_NTH_CLOSEST_VEHICLE_NODE_FAVOUR_DIRECTION(players_offset, players_pos, 1, random_police_car.pos, random_police_car.heading)
//
// node_face_vector = << -SIN(random_police_car.heading), COS(random_police_car.heading), 0.0 >> // Forward vector of node
// angle_dif = GET_ANGLE_BETWEEN_2D_VECTORS(node_face_vector.x, node_face_vector.y, (players_pos.x - random_police_car.pos.x), (players_pos.y - random_police_car.pos.y))
//
// // Is node pointing away from player?
// IF angle_dif > 90.0
// random_police_car.heading += 180.0
// ENDIF
//
// random_police_car.veh = create_vehicle(random_police_car.model, random_police_car.pos, random_police_car.heading)
//
//
// for i = 0 to 1
//
// if i = 0
// random_police_man[i].ped = create_ped_inside_vehicle(random_police_car.veh, pedtype_cop, random_police_man[i].model)
// else
// random_police_man[i].ped = create_ped_inside_vehicle(random_police_car.veh, pedtype_cop, random_police_man[i].model, vs_front_right)
// endif
//
// set_ped_random_component_variation(random_police_man[i].ped)
// give_weapon_to_ped(random_police_man[i].ped, weapontype_pistol, infinite_ammo, true)
// set_current_ped_weapon(random_police_man[i].ped, weapontype_pistol, true)
// set_ped_keep_task(random_police_man[i].ped, true)
//
// endfor
//
// SET_PED_AS_NO_LONGER_NEEDED(random_police_man[0].ped)
// SET_PED_AS_NO_LONGER_NEEDED(random_police_man[1].ped)
// set_vehicle_as_no_longer_needed(random_police_car.veh)
endproc
func bool truck_wanted_level_system()
//fix for if player goes to airport with a 2 star wanted level when the airport automatically increases the
//wanted level to 4
if is_player_wanted_level_greater(player_id(), 3)
if truck_wanted_status > 0
set_max_wanted_level(4)
clear_player_wanted_level(player_id())
set_player_wanted_level(player_id(), 4)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
//RESET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER()
original_time = get_game_timer()
truck_wanted_status = 0
endif
endif
// printint(GET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER())
// printnl()
switch truck_wanted_status
case 0
if not lk_timer(original_time, 85000) //and not (GET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER() >= 7)
set_player_wanted_level(player_id(), 4)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
if not police_car_created
if lk_timer(original_time, 22000)
police_car_creation()
police_car_created = true
endif
endif
else
//RESET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER()
set_max_wanted_level(3)
set_player_wanted_level(player_id(), 3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
original_time = get_game_timer()
police_car_creation()
police_car_created = false
truck_wanted_status++
endif
break
case 1
if not lk_timer(original_time, 85000) //and not (GET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER() >= 6)
set_player_wanted_level(player_id(), 3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
if not police_car_created
if lk_timer(original_time, 22000)
police_car_creation()
police_car_created = true
endif
endif
else
//RESET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER()
set_max_wanted_level(2)
set_player_wanted_level(player_id(), 2)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
original_time = get_game_timer()
police_car_creation()
police_car_created = false
truck_wanted_status++
endif
break
case 2
if not lk_timer(original_time, 85000) //and not (GET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER() >= 5)
set_player_wanted_level(player_id(), 2)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
if not police_car_created
if lk_timer(original_time, 22000)
police_car_creation()
police_car_created = true
endif
endif
else
//RESET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER()
clear_player_wanted_level(player_id())
set_wanted_level_multiplier(0.0)
set_max_wanted_level(1)
set_player_wanted_level(player_id(), 1)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
original_time = get_game_timer()
police_car_creation()
police_car_created = false
// clear_prints()
// print_now("Y3_COPS", default_god_text_time, 1)
truck_wanted_status++
endif
break
case 3
if not is_player_wanted_level_greater(player_id(), 0) //or (GET_NO_LAW_VEHICLES_DESTROYED_BY_LOCAL_PLAYER() >= 2)
clear_player_wanted_level(player_id())
//g_allowmaxwantedlevelcheck = false
set_max_wanted_level(0)
set_create_random_cops(false)
return true
endif
break
endswitch
return false
endfunc
proc lazlow_ai_system()
switch lazlow_ai_system_status
case 0
request_anim_dict("missfamily4_fameshame")
if is_entity_at_coord(player_ped_id(), <<-252.8894, -1997.5737, 29.1458>>, <<1.5, 1.5, 1.5>>)
or is_entity_at_coord(selector_ped.pedID[selector_ped_michael], <<-252.8894, -1997.5737, 29.1458>>, <<1.5, 1.5, 1.5>>)
open_sequence_task(seq)
task_force_motion_state(null, ENUM_TO_INT(MS_ON_FOOT_RUN))
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_0", 12, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT | EWAYPOINT_START_FROM_CLOSEST_POINT)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(lazlow.ped, seq)
clear_sequence_task(seq)
force_ped_ai_and_animation_update(lazlow.ped)
lazlow_ai_system_status++
endif
break
case 1
vector target_waypoint_pos
int waypoint_node_pos
if IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(lazlow.ped)
// if is_entity_in_angled_area(lazlow.ped, <<-244.914, -2007.479, 23.691>>, <<-244.325, -2004.946, 26.191>>, 4.300)
// WAYPOINT_PLAYBACK_OVERRIDE_SPEED(lazlow.ped, 2.0)
// else
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(lazlow.ped, 3.0) //2.0 3.0
// endif
endif
if waypoint_recording_get_coord("family4_0", 48, target_waypoint_pos) //52 59
if not IS_ENTITY_AT_COORD(lazlow.ped, target_waypoint_pos, <<1.5, 1.5, 1.6>>, false, true)
if has_ped_task_finished_2(lazlow.ped, script_task_perform_sequence)
if waypoint_recording_get_closest_waypoint("family4_0", GET_ENTITY_COORDS(lazlow.ped), waypoint_node_pos)
waypoint_node_pos += 1
if waypoint_node_pos > 59
waypoint_node_pos = 59
endif
set_blocking_of_non_temporary_events(lazlow.ped, true)
clear_ped_tasks(lazlow.ped)
open_sequence_task(seq)
task_follow_waypoint_recording(null, "family4_0", waypoint_node_pos, ewaypoint_navmesh_to_initial_waypoint)
close_sequence_task(seq)
task_perform_sequence(lazlow.ped, seq)
clear_sequence_task(seq)
endif
endif
else
open_sequence_task(seq)
task_go_straight_to_coord(null, get_anim_initial_offset_position("missfamily4_fameshame", "lazlow_getincar_l", <<-228.974, -2048.902, 27.120>>, <<0.0, 0.0, -122.436>>, 0.0), pedmove_run, -1)
close_sequence_task(seq)
task_perform_sequence(lazlow.ped, seq)
clear_sequence_task(seq)
lazlow_ai_system_status++
endif
endif
break
case 2
if has_anim_dict_loaded("missfamily4_fameshame")
and does_entity_exist(lazlows_car.veh)
if is_entity_at_coord(lazlow.ped, get_anim_initial_offset_position("missfamily4_fameshame", "lazlow_getincar_l", <<-228.974, -2048.902, 27.120>>, <<0.0, 0.0, -122.436>>, 0.0), <<0.5, 0.5, 1.6>>)
or has_ped_task_finished_2(lazlow.ped, script_task_perform_sequence)
set_entity_no_collision_entity(lazlow.ped, lazlows_car.veh, false)
scene_pos = <<-228.974, -2048.902, 27.120>>
scene_rot = <<0.0, 0.0, -122.436>>
lazlow.scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
TASK_SYNCHRONIZED_SCENE(lazlow.ped, lazlow.scene_id, "missfamily4_fameshame", "lazlow_getincar_l", slow_BLEND_IN, normal_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
PLAY_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, lazlow.scene_id, "lazlow_getincar_car", "missfamily4_fameshame", INSTANT_BLEND_IN, normal_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_RATE(lazlow.scene_id, 1.15)
lazlow_ai_system_status++
endif
endif
break
case 3
if is_synchronized_scene_running(lazlow.scene_id)
if get_synchronized_scene_phase(lazlow.scene_id) > 0.93
set_blip_scale(lazlow.blip, 1.0)
STOP_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, instant_blend_in, true)
clear_ped_tasks(lazlow.ped)
set_ped_into_vehicle(lazlow.ped, lazlows_car.veh)
SET_VEHICLE_DOORS_SHUT(lazlows_car.veh, true)
SET_VEHICLE_POPULATION_BUDGET(1)
SET_PED_POPULATION_BUDGET(2)
clear_player_wanted_level(player_id())
set_max_wanted_level(0)
set_create_random_cops(false)
set_wanted_level_multiplier(0.0)
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
load_uber_data()
fUberPlaybackDensitySwitchOffRange = 200
bCreateAllWaitingCars = true
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
update_uber_playback(lazlows_car.veh, 0.7)
// SET_UBER_PLAYBACK_TO_TIME_NOW(lazlows_car.veh, 2500.00)
// update_uber_playback(lazlows_car.veh, 1.0)
force_playback_recorded_vehicle_update(lazlows_car.veh)
set_entity_proofs(lazlows_car.veh, false, true, false, true, true)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(sentinel, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(schafter2, 100)
INFORM_MISSION_STATS_OF_FINANCE_MODEL(taco, 100)
lazlow_ai_system_status++
endif
endif
break
case 4
break
endswitch
endproc
proc cleanup_run_after_lazlo_assets()
int i = 0
ASSISTED_MOVEMENT_remove_ROUTE("fame1")
delete_ped(tracey.ped)
set_model_as_no_longer_needed(tracey.model)
delete_object(video_camera.obj)
set_model_as_no_longer_needed(video_camera.model)
delete_object(micro_phone.obj)
set_model_as_no_longer_needed(micro_phone.model)
for i = 0 to count_of(camera_crew) - 1
delete_ped(camera_crew[i].ped)
set_model_as_no_longer_needed(camera_crew[i].model)
endfor
endproc
proc create_parked_vehicles_system()
switch create_parked_vehicles_status
case 0
if get_time_position_in_recording(lazlows_car.veh) > 142000.00
request_model(towtruck)
request_model(schafter2)
set_vehicle_model_is_suppressed(towtruck, true)
set_vehicle_model_is_suppressed(schafter2, true)
if has_model_loaded(towtruck) and has_model_loaded(schafter2)
broken_down_cars[0] = create_vehicle(towtruck, <<690.6760, -380.5773, 39.6706>>, 301.5845)
broken_down_cars[1] = create_vehicle(schafter2, <<685.2643, -384.7363, 39.7185>>, 312.2964)
create_parked_vehicles_status++
endif
endif
break
case 1
break
endswitch
endproc
proc dialogue_system()
if does_blip_exist(lazlow.blip)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
//secondary_audio = false
//specific dialogue which must trriger e.g. turn left / right etc
switch dialogue_status
case 0
if is_entity_in_angled_area(player_ped_id(), <<-187.434, -1998.193, 26.626>>, <<-189.068, -2012.098, 33.626>>, 5.0)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_LEF", CONV_PRIORITY_medium)
printstring("turn left dialogue")
printnl()
printstring("turn left dialogue")
printnl()
printstring("turn left dialogue")
printnl()
dialogue_status++
else
printstring("can't play dialogue")
printnl()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
endif
endif
//safety system incase player doesn't go down slope
if get_time_position_in_recording(lazlows_car.veh) > 40000.00
dialogue_status++
endif
break
case 1
if get_time_position_in_recording(lazlows_car.veh) > 47150.920 //47050.920 47350.920
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 150
or is_entity_on_screen(lazlows_car.veh))
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_LEF", CONV_PRIORITY_medium)
dialogue_status++
endif
else
dialogue_status++
endif
endif
break
case 2
if get_time_position_in_recording(lazlows_car.veh) > 56283.160
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 120
or is_entity_on_screen(lazlows_car.veh))
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "fam4_tline", CONV_PRIORITY_medium)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 4.0, REPLAY_IMPORTANCE_HIGHEST)
start_audio_scene("FAMILY_4_CHASE_TRUCK_TRACKS")
dialogue_status++
endif
else
dialogue_status++
endif
endif
break
case 3
if get_time_position_in_recording(lazlows_car.veh) > 70551.430
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 120
or is_entity_on_screen(lazlows_car.veh))
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_LEF", CONV_PRIORITY_medium)
dialogue_status++
endif
else
dialogue_status++
endif
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_TRACKS")
stop_audio_scene("FAMILY_4_CHASE_TRUCK_TRACKS")
endif
endif
break
case 4
if get_time_position_in_recording(lazlows_car.veh) > 90100.550 //90280.550
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 120)
or is_entity_on_screen(lazlows_car.veh)
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_RIG", CONV_PRIORITY_medium)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 4.0, REPLAY_IMPORTANCE_HIGHEST)
dialogue_status++
endif
else
dialogue_status++
endif
endif
break
case 5
if get_time_position_in_recording(lazlows_car.veh) > 102000.400
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 120
or is_entity_on_screen(lazlows_car.veh))
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_RIG", CONV_PRIORITY_medium)
dialogue_status++
endif
else
dialogue_status++
endif
endif
break
case 6
if get_time_position_in_recording(lazlows_car.veh) > 126768.000
if ((get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 120
or is_entity_on_screen(lazlows_car.veh))
and not lazlow_chase_cam_active)
get_dialogue_data_for_future_resumption()
if create_conversation(scripted_speech, "fam4aud", "FAM4_RIV", CONV_PRIORITY_medium)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 4.0, REPLAY_IMPORTANCE_HIGHEST)
dialogue_status++
endif
else
dialogue_status++
endif
endif
break
case 7
break
case 22
break
endswitch
if lk_timer(ambient_ped_time, 5000)
// if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//
// vehicle_index closest_vehicle = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 10.0, DUMMY_MODEL_FOR_SCRIPT, GET_TRAFFIC_VEHICLE_SEARCH_FLAGS())
//
// if closest_vehicle != lazlows_car.veh
// if not is_entity_dead(closest_vehicle)
//
// if is_entity_touching_entity(truck.veh, closest_vehicle)
//
// ped_index angry_driver = GET_PED_IN_VEHICLE_SEAT(closest_vehicle)
//
// if not is_ped_injured(angry_driver)
//
// PLAY_PED_AMBIENT_SPEECH(angry_driver, "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE_NORMAL)
// ambient_ped_time = GET_GAME_TIMER()
//
// endif
//
// endif
// endif
// endif
// endif
endif
//**********normal in car conversation which is lower priority than above specific dialogue.
// time in seconds for the turn left / right dialogue
// 47350.920
// 56283.160
// 70551.430
// 90100.550
// 102000.400
// 126768.000
//conversation dialogue
// 10000
// 25000
// 62000
// 74000
// 103000 //plays for 20s = 123000
// 122000 //removed
// 130000
if not lazlow_chase_cam_active
switch uber_chase_in_car_conversation
case 0
if not is_any_text_being_displayed(locates_data, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
if create_conversation(scripted_speech, "fam4aud", "fam4_c0", CONV_PRIORITY_low)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 5.0, REPLAY_IMPORTANCE_HIGH)
uber_chase_in_car_conversation++
endif
endif
break
case 1
if does_blip_exist(lazlow.blip)
if is_entity_in_angled_area(player_ped_id(), <<-165.656, -1985.216, 22.043>>, <<-127.556, -1985.216, 27.643>>, 4.0)
or get_time_position_in_recording(lazlows_car.veh) > 20000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C1", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 2
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
if create_conversation(scripted_speech, "fam4aud", "FAM4_WAY", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
break
case 3
if does_blip_exist(lazlow.blip)
if get_time_position_in_recording(lazlows_car.veh) > 25000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C2", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 4
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_CU2", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
break
case 5
// if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
// if get_time_position_in_recording(lazlows_car.veh) < 41000
// if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 40.00
// if create_conversation(scripted_speech, "fam4aud", "lazlo_chase", CONV_PRIORITY_low)
// uber_chase_in_car_conversation++
// endif
// endif
// else
uber_chase_in_car_conversation++
// endif
// endif
break
case 6
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
if get_time_position_in_recording(lazlows_car.veh) > 62000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C3", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 7
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
uber_chase_in_car_conversation++
endif
break
case 8
if does_blip_exist(lazlow.blip)
if get_time_position_in_recording(lazlows_car.veh) > 74000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C4", CONV_PRIORITY_low)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_1")
STOP_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_1")
endif
START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_2")
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 9
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
uber_chase_in_car_conversation++
endif
break
case 10
if does_blip_exist(lazlow.blip)
if get_time_position_in_recording(lazlows_car.veh) > 103000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C5", CONV_PRIORITY_low)
//script_assert("test 0")
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 11
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
uber_chase_in_car_conversation++
endif
break
case 12
if dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
uber_chase_in_car_conversation++
endif
break
case 13
if does_blip_exist(lazlow.blip)
if get_time_position_in_recording(lazlows_car.veh) > 131000
if not is_any_text_being_displayed(locates_data)
if create_conversation(scripted_speech, "fam4aud", "FAM4_C7", CONV_PRIORITY_low)
uber_chase_in_car_conversation++
endif
endif
endif
endif
break
case 14
if does_blip_exist(lazlow.blip)
if get_time_position_in_recording(lazlows_car.veh) > 140000
kill_any_conversation()
uber_chase_in_car_conversation++
endif
endif
dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
break
case 15
break
endswitch
endif
endif
else
dialogue_monitoring_system(lazlow.blip, selector_ped.pedID[selector_ped_michael])
get_dialogue_data_for_future_resumption()
// if not dialogue_paused
//
// if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//
// dialogue_root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
//
// IF ARE_STRINGS_EQUAL(dialogue_root, "fbi1_doc3")
//
// specific_label = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
//
// dialogue_paused = true
//
// endif
//
// endif
//
// endif
// player_leaves_vehicle_dialogue("fam4aud", "FAM4_RIG", "family4_god_3", get_back_in_veh_text_printed, secondary_audio)
endif
endproc
proc set_piece_driver_ai()
switch set_piece_driver_ai_status
case 0
// printstring("test 0")
// printnl()
if does_entity_exist(SetPieceCarID[1])
if is_vehicle_driveable(SetPieceCarID[1])
set_piece_veh = SetPieceCarID[1]
set_piece_ped = get_ped_in_vehicle_seat(SetPieceCarID[1])
if does_entity_exist(set_piece_ped)
set_piece_driver_ai_status++
endif
endif
endif
break
case 1
if is_vehicle_driveable(SetPieceCarID[1])
if is_playback_going_on_for_vehicle(set_piece_veh)
set_piece_driver_ai_status++
endif
endif
break
case 2
// if is_vehicle_driveable(set_piece_veh)
// if not is_playback_going_on_for_vehicle(set_piece_veh)
// if not is_ped_injured(set_piece_ped)
//
// set_ped_keep_task(set_piece_ped, true)
//
// open_sequence_task(seq)
// task_leave_vehicle(null, set_piece_veh)
// task_hands_up(null, 3000)
// task_vehicle_drive_wander(null, set_piece_veh, 10, DRIVINGMODE_STOPFORCARS)
// close_sequence_task(seq)
// task_perform_sequence(set_piece_ped, seq)
// clear_sequence_task(seq)
//
// set_piece_driver_ai_status++
// endif
// endif
// endif
break
case 3
break
endswitch
endproc
proc lazlow_horn_system()
if lk_timer(lazlow_horn_time, 35000)
start_vehicle_horn(lazlows_car.veh, 2500)
lazlow_horn_time = get_game_timer()
endif
endproc
proc uber_speed_system()
if is_vehicle_driveable(lazlows_car.veh)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
printfloat(current_ideal_distance)
printnl()
switch uber_speed_status
case 0
if get_time_position_in_recording(lazlows_car.veh) < 12000
if not is_entity_on_screen(lazlows_car.veh)
lazlows_car.speed = 0.3
else
calculate_new_playback_speed_from_char(lazlows_car.veh, PLAYER_ped_ID(), lazlows_car.speed, 1.0, 10.0, 20.0, 50, 2.0, 1.0, 0.7)
endif
else
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING)
//reset uber traffic flags
bCreateAllWaitingCars = false
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = false
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, 10.0, 20.0, 50, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
uber_speed_status++
endif
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 1
if get_time_position_in_recording(lazlows_car.veh) > 43521.090 //54000
current_minimum_distance = 10.0
current_ideal_distance = 20.0
current_slow_down_distance = 50.00
REPLAY_RECORD_BACK_FOR_TIME(3)
uber_speed_status++
endif
// calculate_new_playback_speed_from_char(lazlows_car.veh, PLAYER_ped_ID(), lazlows_car.speed, 1.0, 10.0, 20.0, 40.0, 2.0, 1.0, 0.7)
// update_uber_playback(lazlows_car.veh, lazlows_car.speed)
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, 10.0, 20.0, 50, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
//slow the player down via modify_vehicle_top_speed when you want lazlow to go faster.
//speak with Matt
break
case 2
if get_time_position_in_recording(lazlows_car.veh) > 52234.770
uber_speed_status++
endif
multiplier_speed = 1.2
current_minimum_distance += get_frame_time() * multiplier_speed
if current_minimum_distance > 20.00
current_minimum_distance = 20
endif
current_ideal_distance += get_frame_time() * multiplier_speed
if current_ideal_distance > 30.0
current_ideal_distance = 30.0
endif
current_slow_down_distance += get_frame_time() * multiplier_speed
if current_slow_down_distance > 60.0
current_slow_down_distance = 60.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
//when setting the current_minimum_distance = 20 in one frame then make the smoothing accel
//half the value 10 / 20 = 0.5
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed, 0.01 * 0.5)
break
case 3
if get_time_position_in_recording(lazlows_car.veh) > 66924.330
REPLAY_RECORD_BACK_FOR_TIME(3)
uber_speed_status++
endif
multiplier_speed = 1.2
current_minimum_distance -= get_frame_time() * multiplier_speed
if current_minimum_distance < 10.00
current_minimum_distance = 10
endif
current_ideal_distance -= get_frame_time() * multiplier_speed
if current_ideal_distance < 20.0
current_ideal_distance = 20.0
endif
current_slow_down_distance -= get_frame_time() * multiplier_speed
if current_slow_down_distance < 50.0
current_slow_down_distance = 50.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 4
if is_entity_in_angled_area(player_ped_id(), <<487.246, -879.994, 9.750>>, <<651.344, -879.135, 32.450>>, 4.0)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4, "half way through truck chase", true)
endif
if get_time_position_in_recording(lazlows_car.veh) > 76193.880
uber_speed_status++
endif
multiplier_speed = 1.2
current_minimum_distance += get_frame_time() * multiplier_speed
if current_minimum_distance > 20.00
current_minimum_distance = 20
endif
current_ideal_distance += get_frame_time() * multiplier_speed
if current_ideal_distance > 30.0
current_ideal_distance = 30.0
endif
current_slow_down_distance += get_frame_time() * multiplier_speed
if current_slow_down_distance > 60.0
current_slow_down_distance = 60.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 5
if get_time_position_in_recording(lazlows_car.veh) > 84967.060
REPLAY_RECORD_BACK_FOR_TIME(3)
uber_speed_status++
endif
multiplier_speed = 1.2
current_minimum_distance -= get_frame_time() * multiplier_speed
if current_minimum_distance < 10.00
current_minimum_distance = 10
endif
current_ideal_distance -= get_frame_time() * multiplier_speed
if current_ideal_distance < 20.0
current_ideal_distance = 20.0
endif
current_slow_down_distance -= get_frame_time() * multiplier_speed
if current_slow_down_distance < 50.0
current_slow_down_distance = 50.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 6
if get_time_position_in_recording(lazlows_car.veh) > 126768.000 //128070.600
REPLAY_RECORD_BACK_FOR_TIME(3)
uber_speed_status++
endif
multiplier_speed = 1.2
current_minimum_distance += get_frame_time() * multiplier_speed
if current_minimum_distance > 20.00
current_minimum_distance = 20
endif
current_ideal_distance += get_frame_time() * multiplier_speed
if current_ideal_distance > 30.0
current_ideal_distance = 30.0
endif
current_slow_down_distance += get_frame_time() * multiplier_speed
if current_slow_down_distance > 60.0
current_slow_down_distance = 60.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 7
if get_time_position_in_recording(lazlows_car.veh) > 128070.600 //134007.200
uber_speed_status++
endif
multiplier_speed = 5.0//1.2
current_minimum_distance += get_frame_time() * multiplier_speed
if current_minimum_distance > 25.00
current_minimum_distance = 25
endif
current_ideal_distance += get_frame_time() * multiplier_speed
if current_ideal_distance > 35.0
current_ideal_distance = 35.0
endif
current_slow_down_distance += get_frame_time() * multiplier_speed
if current_slow_down_distance > 65.0
current_slow_down_distance = 65.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
case 8
multiplier_speed = 8.0
current_minimum_distance += get_frame_time() * multiplier_speed
if current_minimum_distance > 180
current_minimum_distance = 180
endif
current_ideal_distance += get_frame_time() * multiplier_speed
if current_ideal_distance > 200
current_ideal_distance = 200
endif
current_slow_down_distance += get_frame_time() * multiplier_speed
if current_slow_down_distance > 235.0
current_slow_down_distance = 235.0
endif
CALCULATE_DESIRED_PLAYBACK_SPEED_FROM_TRIGGER_CAR(disired_playback_speed, truck.veh, lazlows_car.veh, current_minimum_distance, current_ideal_distance, current_slow_down_distance, 100, 30, 1.0, 0.7, 0.5, 2.0, true, 0, 15, true)
UPDATE_CURRENT_PLAYBACK_SPEED_WITH_SMOOTHING(lazlows_car.speed, disired_playback_speed)
update_uber_playback(lazlows_car.veh, lazlows_car.speed)
break
endswitch
create_parked_vehicles_system()
set_piece_driver_ai()
lazlow_horn_system()
else
// update_uber_playback(lazlows_car.veh, 1.0)
if not train_cutscene_playing and not trailer_cutscene_playing
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlows_car.veh)) < 15.00
if does_entity_exist(broken_down_cars[0])
set_vehicle_as_no_longer_needed(broken_down_cars[0])
endif
if does_entity_exist(broken_down_cars[1])
set_vehicle_as_no_longer_needed(broken_down_cars[1])
endif
set_model_as_no_longer_needed(towtruck)
//mission_flow = play_final_mocap
endif
endif
endif
endif
endproc
func bool family_4_run_after_lazlo_master_flow_system()
int i = 0
switch run_after_lazlow_master_flow_system_status
case 0
if is_entity_in_angled_area(player_ped_id(), <<-248.775, -1999.858, 25.003>>, <<-248.012, -1997.058, 31.302>>, 2.0)
delete_ped(tracey.ped)
set_model_as_no_longer_needed(tracey.model)
remove_anim_dict("missfam4leadinoutmcs2")
delete_ped(security.ped)
set_model_as_no_longer_needed(security.model)
for i = 0 to count_of(camera_crew) - 1
delete_ped(camera_crew[i].ped)
set_model_as_no_longer_needed(camera_crew[i].model)
endfor
delete_object(micro_phone.obj)
set_model_as_no_longer_needed(micro_phone.model)
delete_object(video_camera.obj)
set_model_as_no_longer_needed(video_camera.model)
if is_valid_interior(stadium_interior)
unpin_interior(stadium_interior)
endif
run_after_lazlow_master_flow_system_status++
endif
create_entities_outside_stadium()
break
case 1
create_entities_outside_stadium()
if not does_blip_exist(truck.blip)
if not is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
REPLAY_RECORD_BACK_FOR_TIME(3)
truck.blip = create_blip_for_entity(truck.veh)
endif
endif
uber_speed_system()
if does_entity_exist(truck.veh)
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
and is_ped_sitting_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
and is_playback_going_on_for_vehicle(lazlows_car.veh)
//set_player_control(player_id(), false)
CLEAR_TRIGGERED_LABELS()
reset_dialogue_for_future_resumption_data()
DISABLE_CHEAT(CHEAT_TYPE_FAST_RUN, false)
start_audio_scene("FAMILY_4_CHASE_TRUCK_1")
trigger_music_event("FAM4_CHASE_START")
if does_blip_exist(michaels_blip)
remove_blip(michaels_blip)
endif
if does_blip_exist(truck.blip)
remove_blip(truck.blip)
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3, "Chase truck", true)
return true
endif
endif
break
endswitch
return false
endfunc
proc enemy_ai_system()
endproc
//proc player_leaves_vehicle_dialogue(string dialogue_to_load, string dialogue_root, string get_back_in_text, bool &get_back_in_text_printed, bool &secondary_audio_played)
//
// if not secondary_audio_played
// if not is_ped_sitting_in_any_vehicle(player_ped_id())// and not CHECK_STUCK_TIMER(mission_vehicle, VEH_STUCK_ON_ROOF, 0)
// if create_conversation(scripted_speech, dialogue_to_load, dialogue_root, CONV_PRIORITY_medium)
// secondary_audio_played = true
// endif
// endif
//
// else
//
// if not get_back_in_text_printed
// if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
// clear_prints()
// print_now(get_back_in_text, DEFAULT_GOD_TEXT_TIME, 1)
// get_back_in_text_printed = true
// endif
// endif
// endif
//
//endproc
proc camera_crew_ai_system()
// for i = 0 to count_of(camera_crew) - 1
//
// if not is_ped_injured(camera_crew[0].ped)
//
// switch camera_crew_ai_status[i]
//
// case 0
//
// switch i
//
// case 0
//
// if has_ped_been_harmed(camera_crew[i].ped, camera_crew[i].health)
// or has_player_antagonised_ped(camera_crew[i].ped, 10, false)
//
// open_sequence_task(seq)
// task_cower(null, -1)
// close_sequence_task(seq)
// task_perform_sequence(camera_crew[i].ped, seq)
// clear_sequence_task(seq)
//
// if is_entity_attached(video_camera.obj)
// detach_entity(video_camera.obj)
// endif
//
// camera_crew_ai_status[i]++
//
// endif
//
// break
//
// case 1
//
// if has_ped_been_harmed(camera_crew[i].ped, camera_crew[i].health)
// or has_player_antagonised_ped(camera_crew[i].ped, 10, false)
//
// open_sequence_task(seq)
// task_cower(null, -1)
// close_sequence_task(seq)
// task_perform_sequence(camera_crew[i].ped, seq)
// clear_sequence_task(seq)
//
// if is_entity_attached(micro_phone.obj)
// detach_entity(micro_phone.obj)
// endif
//
// camera_crew_ai_status[i]++
//
// endif
//
// break
//
// endswitch
//
// break
//
// case 1
//
// break
//
// endswitch
//
// endif
//
// endfor
//
//
//
// camera_crew[0].ped
endproc
proc run_after_lazlow_dialogue_system()
switch run_after_lazlow_dialogue_system_status
case 0
if create_conversation(scripted_speech, "fam4Aud", "FAM4_GOHOME", CONV_PRIORITY_medium)
run_after_lazlow_dialogue_system_status++
endif
break
case 1
if create_conversation(scripted_speech, "fam4Aud", "FAM4_SHOUT", CONV_PRIORITY_medium)
run_after_lazlow_dialogue_system_status++
endif
break
case 2
if not is_any_text_being_displayed(locates_data)
print_now("family4_god_11", default_god_text_time, 1)
run_after_lazlow_dialogue_system_status++
endif
break
case 3
if not is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
if player_arrived_in_a_vehicle
if create_conversation(scripted_speech, "fam4Aud", "FAM4_TOW", CONV_PRIORITY_medium)
original_time = get_game_timer()
run_after_lazlow_dialogue_system_status++
endif
else
run_after_lazlow_dialogue_system_status++
endif
endif
break
case 4
if create_conversation(scripted_speech, "fam4Aud", "FAM4_TRU", CONV_PRIORITY_medium)
original_time = get_game_timer()
run_after_lazlow_dialogue_system_status++
endif
break
case 5
if not is_any_text_being_displayed(locates_data)
print_now("family4_god_1", default_god_text_time, 1)
run_after_lazlow_dialogue_system_status++
endif
break
case 6
// if is_ped_in_vehicle(player_ped_id(), truck.veh)
// or is_ped_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
//
// if create_conversation(scripted_speech, "fam4aud", "FAM4_NOTRU", conv_priority_medium)
// run_after_lazlow_dialogue_system_status++
// endif
//
// endif
//****************UNCOMMENT THIS DIALOGUE WHEN THE PLAYER IS PLAYING AS TREVOR ********************
if not is_any_text_being_displayed(locates_data)
// if lk_timer(original_time, 7000)
// if is_ped_sitting_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
// if not IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID())
// if create_conversation(scripted_speech, "fam4Aud", "FAM4_LAG", CONV_PRIORITY_medium)
// original_time = get_game_timer()
// endif
// endif
// endif
// endif
// if not has_label_been_triggered("FAM4_MCALLT")
// if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
// if not IS_PED_GETTING_INTO_A_VEHICLE(selector_ped.pedID[selector_ped_michael])
// if create_conversation(scripted_speech, "fam4Aud", "FAM4_MCALLT", CONV_PRIORITY_medium)
// set_label_as_triggered("FAM4_MCALLT", true)
// endif
// endif
// endif
// endif
endif
break
endswitch
endproc
proc player_enter_passenger_door_of_truck_system()
REQUEST_VEHICLE_ASSET(truck.model, enum_to_int(VRF_REQUEST_ALL_ANIMS))
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_ENTER)
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(truck.veh)) < 10
if not is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if has_ped_task_finished_2(player_ped_id(), script_task_enter_vehicle, false)
TASK_ENTER_VEHICLE(PLAYER_PED_ID(), truck.veh, -1, vs_front_right, PEDMOVEBLENDRATIO_run, ECF_DONT_JACK_ANYONE)
endif
endif
endif
endif
endproc
proc truck_driver_ai_system()
switch truck_driver_ai_system_status
case 0
if does_entity_exist(truck_driver.ped)
and does_entity_exist(truck.veh)
if not is_ped_injured(truck_driver.ped)
request_anim_dict("veh@truck@ds@idle_panic")
if is_ped_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
if has_anim_dict_loaded("veh@truck@ds@idle_panic")
if not is_entity_playing_anim(truck_driver.ped, "veh@truck@ds@idle_panic", "sit")
task_play_anim(truck_driver.ped, "veh@truck@ds@idle_panic", "sit", normal_blend_in, normal_blend_out, -1, af_looping)
endif
endif
endif
// if is_ped_sitting_in_vehicle(truck_driver.ped, truck.veh)
//
// set_ped_keep_task(truck_driver.ped, true)
//
// open_sequence_task(seq)
// task_leave_vehicle(null, truck.veh)
// task_smart_flee_ped(null, player_ped_id(), 100, -1)
// close_sequence_task(seq)
// task_perform_sequence(truck_driver.ped, seq)
// clear_sequence_task(seq)
//
//
// truck_driver_ai_system_status = 1
//
// endif
if not is_ped_sitting_in_vehicle(truck_driver.ped, truck.veh)
set_ped_keep_task(truck_driver.ped, true)
task_smart_flee_ped(truck_driver.ped, player_ped_id(), 100, -1)
//PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(truck_driver.ped, "FAM4_NOTRU", "truckdriver")
truck_driver_ai_system_status = 1
endif
endif
endif
break
case 1
if create_conversation(scripted_speech, "fam4aud", "FAM4_NOTRU", conv_priority_medium)//, do_not_display_subtitles)
set_ped_as_no_longer_needed(truck_driver.ped)
set_model_as_no_longer_needed(truck_driver.model)
remove_anim_dict("veh@truck@ds@idle_panic")
truck_driver_ai_system_status++
endif
break
case 2
break
endswitch
endproc
proc run_after_lazlo_audio_scene_system()
switch run_after_lazlow_audio_scene_system_status
case 0
START_AUDIO_SCENE("FAMILY_4_CHASE_FOOT")
run_after_lazlow_audio_scene_system_status++
break
case 1
if not is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_FOOT")
STOP_AUDIO_SCENE("FAMILY_4_CHASE_FOOT")
endif
START_AUDIO_SCENE("FAMILY_4_CHASE_FOOT_OUTSIDE")
run_after_lazlow_audio_scene_system_status++
endif
break
case 2
if get_script_task_status(player_ped_id(), script_task_enter_vehicle) = performing_task
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_FOOT_OUTSIDE")
STOP_AUDIO_SCENE("FAMILY_4_CHASE_FOOT_OUTSIDE")
endif
run_after_lazlow_audio_scene_system_status++
endif
break
case 3
break
endswitch
endproc
proc run_after_lazlow_walla_system()
switch run_after_lazlow_walla_system_status
case 0
SET_PED_WALLA_DENSITY(1,1)
run_after_lazlow_walla_system_status++
break
case 1
if is_entity_at_coord(player_ped_id(), <<-252.8894, -1997.5737, 29.1458>>, <<1.5, 1.5, 1.5>>)
or is_entity_at_coord(selector_ped.pedID[selector_ped_michael], <<-252.8894, -1997.5737, 29.1458>>, <<1.5, 1.5, 1.5>>)
FORCE_PED_PANIC_WALLA()
if not is_ped_injured(ambient_ped[0].ped)
play_pain(ambient_ped[0].ped, aud_damage_reason_scream_panic)
endif
if not is_ped_injured(ambient_ped[10].ped)
play_pain(ambient_ped[10].ped, aud_damage_reason_scream_terror)
endif
run_after_lazlow_walla_system_status++
endif
break
case 2
if not is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
SET_PED_WALLA_DENSITY(0,0)
run_after_lazlow_walla_system_status++
endif
break
endswitch
endproc
proc player_in_truck_With_michael_system()
if not has_label_been_triggered("family4_god_18")
if not is_any_text_being_displayed(locates_data)
if does_entity_exist(truck.veh)
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if not is_entity_at_coord(truck.veh, trailer.pos, <<2.0, 2.0, 2.0>>)
if not is_ped_sitting_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
and not is_ped_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
and not is_ped_getting_into_a_vehicle(selector_ped.pedID[selector_ped_michael])
REPLAY_RECORD_BACK_FOR_TIME(8.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
print_now("family4_god_18", default_god_text_time, 1)
printnl()
set_label_as_triggered("family4_god_18", true)
endif
endif
endif
endif
endif
endif
endproc
/// PURPOSE:
/// flashes lazlows blip red to let the player know they are about to fail.
proc run_after_lazlow_blip_fail_flashing()
if does_blip_exist(lazlow.blip)
if does_entity_exist(lazlows_car.veh)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if get_time_position_in_recording(lazlows_car.veh) > 7000
if not is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
UPDATE_CHASE_BLIP(lazlow.blip, lazlow.ped, 200.00, 0.6, true)
else
UPDATE_CHASE_BLIP(lazlow.blip, lazlow.ped, 200.00)
endif
endif
endif
endif
endif
endproc
func bool family_4_run_after_lazlo()
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2161276
if family_4_run_after_lazlo_master_flow_system()
//mission_flow = stadium_cutscene
mission_flow = uber_chase
return true
endif
run_after_lazlow_switch_effect()
clear_players_task_on_control_input(script_task_perform_sequence)
enemy_ai_system()
run_after_lazlow_blip_fail_flashing()
lazlow_ai_system()
ambient_ped_system()
truck_driver_ai_system()
camera_crew_ai_system()
michael_ai_system()
tracey_ai_system()
run_after_lazlow_dialogue_system()
run_after_lazlo_audio_scene_system()
run_after_lazlow_walla_system()
//has_mission_vehicle_recordings_loaded()
player_in_truck_with_michael_system()
//player_enter_passenger_door_of_truck_system()
return false
endfunc
proc family_4_get_the_truck_cutscene()
endproc
func bool uber_chase_master_flow_system()
if not is_ped_injured(lazlow.ped)
if is_vehicle_driveable(lazlows_car.veh)
if not is_playback_going_on_for_vehicle(lazlows_car.veh)
if not train_cutscene_playing
// if get_distance_between_coords(get_entity_coords(lazlow.ped), get_entity_coords(player_ped_id())) < 10.0
// or is_entity_at_coord(player_ped_id(), <<-924.9842, 16.0313, 45.0531>>, <<10.00, 10.00, 3.0>>)
//return true
endif
endif
endif
else
return true
endif
return false
endfunc
proc switch_setpiece_car_to_ai_system()
int i = 0
if does_entity_exist(trailer.veh)
for i = 0 to count_of(SetPieceCarID) - 1
if is_vehicle_driveable(SetPieceCarID[i])
if is_playback_going_on_for_vehicle(SetPieceCarID[i])
if is_entity_touching_entity(trailer.veh, SetPieceCarID[i])
SET_PLAYBACK_TO_USE_AI(SetPieceCarID[i])
MAKE_CAR_DRIVE_RANDOMLY(SetPieceCarID[i])
endif
endif
endif
endfor
endif
endproc
proc train_system()
switch train_system_status
case 0
// CREATE_MISSION_TRAIN(0,
//
// //Tanker x3
//
// SET_TRAIN_SPEED()
// SET_TRAIN_CRUISE_SPEED()
break
case 1
// SET_TRAIN_SPEED()
// SET_TRAIN_CRUISE_SPEED()
break
case 2
break
endswitch
endproc
proc reset_train_crash_cutscene()
#IF IS_DEBUG_BUILD
int i = 0
if widget_reset_cutscene
initialise_mission_variables()
for i = 0 to count_of(train) - 1
if does_entity_exist(train[i].veh)
DELETE_VEHICLE(train[i].veh)
endif
endfor
end_cutscene_no_fade()
widget_reset_cutscene = false
endif
#endif
endproc
proc cylinder_falling_system()
vector vec_a
vector vec_b
vector vec_ba
int k
int i = 0
// float cylinder_groud_z
if does_entity_exist(cylinder_truck.veh)
if is_vehicle_driveable(cylinder_truck.veh)
if is_playback_going_on_for_vehicle(cylinder_truck.veh)
for i = 0 to count_of(cylinder) - 1
switch cylinder_object_status[i]
case 0
if get_time_position_in_recording(cylinder_truck.veh) > cylinder[i].scale
if DOES_ENTITY_HAVE_PHYSICS(cylinder[i].obj)
for k = 0 to count_of(cylinder) -1
DETACH_ENTITY(cylinder[k].obj, true, false)
SET_ENTITY_COLLISION(cylinder[k].obj, true)
endfor
// if IS_ENTITY_ATTACHED(cylinder[i].obj)
// DETACH_ENTITY(cylinder[i].obj, true) //false
// endif
//
// SET_ENTITY_COLLISION(cylinder[i].obj, true)
vec_a = GET_ENTITY_COORDS(cylinder[i].obj)
//cylinders
// if i = 0
// vec_b = get_offset_from_entity_in_world_coords(cylinder_truck.veh, <<27.0, 15.5, 0.0>>) //4.5
// else
// vec_b = get_offset_from_entity_in_world_coords(cylinder_truck.veh, <<12.5, -7.5, 0.0>>) //4.5
// endif
if i = 0
vec_b = get_offset_from_entity_in_world_coords(cylinder_truck.veh, <<5.5, 12.0, 1.0>>) //4.5
else
vec_b = get_offset_from_entity_in_world_coords(cylinder_truck.veh, <<2.5, -7.5, 0.0>>) //4.5
endif
vec_ba = vec_b - vec_a
normalise_vector(vec_ba)
vec_ba.x *= 0.1 //0.3
vec_ba.y *= 0.1 //0.3
vec_ba.z *= 0.1 //0.3 object_force_multiplier
//APPLY_FORCE_TO_ENTITY(falling_object.obj, APPLY_TYPE_EXTERNAL_IMPULSE, vec_ba, <<2.0, 2.0, 0.0>>, 0, false, true, true)
APPLY_FORCE_TO_ENTITY(cylinder[i].obj, APPLY_TYPE_EXTERNAL_IMPULSE, vec_ba, <<0.0, 0.0, 0.0>>, 0, false, true, true) //<<1.0, 1.0, 0.0>>
cylinder_object_status[i] = 1
endif
endif
break
case 1
if does_entity_exist(cylinder[i].obj)
if get_entity_speed(cylinder[i].obj) < 0.2
// if does_entity_exist(cylinder[i].obj)
// SET_OBJECT_PHYSICS_PARAMS(cylinder[i].obj, -1, -1.0, <<3.0, 2.0, 3.0>>, <<3.0, 2.0, 3.0>>, -1.0, -1.0)
// //set_entity_proofs(cylinder[i].obj, false, false, false, false, false)
// endif
cylinder_object_status[i]++
endif
endif
break
case 2
break
endswitch
endfor
endif
endif
endif
endproc
proc truck_and_trailer_recording_system()
#IF IS_DEBUG_BUILD
if not widget_reset_recording
if is_vehicle_driveable(truck.veh) and is_vehicle_driveable(trailer.veh)
if not is_recording_going_on_for_vehicle(truck.veh) or not is_recording_going_on_for_vehicle(trailer.veh)
if is_control_pressed(player_control, input_veh_accelerate)
if START_RECORDING_VEHICLE(truck.veh, 901, "lkfamily4tr", true)
and START_RECORDING_VEHICLE(trailer.veh, 902, "lkfamily4tr", true)
print_now("family4_god_0", default_god_text_time, 1)
endif
endif
else
if is_control_pressed(player_control, input_jump)
print_now("family4_god_1", default_god_text_time, 1)
stop_recording_all_vehicles()
endif
endif
endif
else
request_model(truck.model)
request_model(trailer.model)
while not has_model_loaded(truck.model)
or not has_model_loaded(trailer.model)
wait(0)
endwhile
if is_recording_going_on_for_vehicle(truck.veh)
//stop_recording_all_vehicles()
stop_recording_vehicle(truck.veh)
stop_recording_vehicle(trailer.veh)
endif
// set_entity_coords(truck.veh, <<538.8203, -1404.0972, 28.2649>>)
// set_entity_heading(truck.veh, 1.3840)
// set_entity_coords(truck.veh, <<602.2477, -362.0152, 42.6390>>)
// set_entity_heading(truck.veh, 254.0559)
// set_entity_coords(truck.veh, <<529.0752, -1246.5540, 29.0265>>)
// set_entity_heading(truck.veh, 358.8973)
// set_entity_coords(truck.veh, <<-57.6500, -547.7206, 39.0133>>)
// set_entity_heading(truck.veh, 341.9844)
// set_entity_coords(truck.veh, <<548.6320, -337.7935, 42.6035>>)
// set_entity_heading(trailer.veh, 244.1964)
clear_ped_tasks_immediately(player_ped_id())
DELETE_VEHICLE(truck.veh)
DELETE_VEHICLE(trailer.veh)
//truck.veh = create_vehicle(truck.model, <<529.0752, -1246.5540, 32.0265>>, 358.8973)
//truck.veh = create_vehicle(truck.model, <<-236.0620, -2061.1475, 26.6199>>, 312.1216) //outside stadium
//truck.veh = create_vehicle(truck.model, <<936.7462, -410.2646, 40.4924>>, 286.2033) //storm drain
//truck.veh = create_vehicle(truck.model, <<-201.8963, -2032.4478, 26.6203>>, 337.8227)
//truck.veh = create_vehicle(truck.model, <<934.9937, -397.8746, 40.6275>>, 290.9926)
truck.veh = create_vehicle(truck.model, <<503.4054, -907.2874, 25.0053>>, 0.6430)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0)
set_entity_health(truck.veh, 1500)
set_vehicle_engine_health(truck.veh, 1500)
set_vehicle_petrol_tank_health(truck.veh, 1500)
//trailer.veh = create_vehicle(trailer.model, <<501, -1248.36, 32.2>>, 0.4684)
//trailer.veh = create_vehicle(trailer.model, <<-236.0620, -2061.1475, 36.7554>>, 312.1205)
//trailer.veh = create_vehicle(trailer.model, <<936.7462, -410.2646, 50.4924>>, 286.2033)
//trailer.veh = create_vehicle(trailer.model, <<-201.8963, -2032.4478, 36.6203>>, 337.8227)
//trailer.veh = create_vehicle(trailer.model, <<934.9937, -397.8746, 50.6275>>, 290.9926)
trailer.veh = create_vehicle(trailer.model, <<503.5043, -912.8253, 25.1358>>, 0.6430)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
//DISPLAY_PLAYBACK_RECORDED_VEHICLE(temp_truck, rdm_wholeline)
// set_entity_coords(
// <<538.8203, -1404.0972, 28.2649>>, 1.3840)
// SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
// set_vehicle_tyres_can_burst(truck.veh, false)
// set_vehicle_colours(truck.veh, 0, 0) //73.0
//
// trailer.veh = create_vehicle(trailer.model, <<538.8203, -1424.0972, 28.2649>>, 1.3840)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), truck.veh)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_trevor])
set_ped_into_vehicle(selector_ped.pedID[selector_ped_trevor], truck.veh, vs_front_right)
widget_reset_recording = false
endif
#endif
endproc
proc set_piece_recording_system()
#if is_debug_build
switch set_piece_recording_system_status
case 0
if is_vehicle_driveable(trailer.veh)
//if fPausePlaybackTime = 1.0
if START_RECORDING_VEHICLE(trailer.veh, 0, "lkfamily4tr", true)
set_piece_recording_system_status++
endif
endif
break
case 1
start_playback_recorded_vehicle(truck.veh, 1, "lkfamily4tr")
skip_time_in_playback_recorded_vehicle(truck.veh, 13050)
set_playback_speed(truck.veh, 0.9)
start_playback_recorded_vehicle(trailer.veh, 2, "lkfamily4tr")
skip_time_in_playback_recorded_vehicle(trailer.veh, 13050)
set_playback_speed(trailer.veh, 0.9) //remember to use original recording in family 4 train folder
train[0].veh = create_vehicle(train[0].model, train[0].pos, train[0].heading)
start_playback_recorded_vehicle(train[0].veh, 3, "lkfamily4tr")
skip_time_in_playback_recorded_vehicle(train[0].veh, 500)
set_playback_speed(train[0].veh, 2.0)
set_piece_recording_system_status++
break
case 2
if GET_TIME_POSITION_IN_RECORDING(train[0].veh) > 3818
stop_playback_recorded_vehicle(trailer.veh)
detach_entity(trailer.veh, false)
APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_EXTERNAL_IMPULSE, <<7.7144, 10.7496, -0.0529>>, <<0.0000, -3.0000, -1.0000>>, 0, false, true, true)
APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_ANGULAR_IMPULSE, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 1.0>>, 0, TRUE, TRUE, TRUE)
set_piece_recording_system_status++
endif
break
case 3
if is_control_pressed(player_control, input_jump)
STOP_RECORDING_ALL_VEHICLES()
set_piece_recording_system_status++
endif
break
case 4
break
endswitch
#endif
endproc
//proc michael_ai_system()
//
// //add michael blipping_system
//
// if does_entity_exist(selector_ped.pedID[selector_ped_michael])
//
// if not is_ped_sitting_in_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh)
//
// if has_ped_task_finished_2(selector_ped.pedID[selector_ped_michael], script_task_perform_sequence)
//
// set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
// clear_ped_tasks(selector_ped.pedID[selector_ped_michael])
//
// open_sequence_task(seq)
// task_enter_vehicle(null, truck.veh, -1, vs_front_right)
// close_sequence_task(seq)
// task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
// clear_sequence_task(seq)
//
// endif
//
// endif
//
// endif
//
//endproc
proc stop_playback_of_cutscene_car()
int i = 0
if is_vehicle_driveable(trailer.veh)
for i = 0 to count_of(cutscene_car) - 1
if is_vehicle_driveable(cutscene_car[i])
if is_playback_going_on_for_vehicle(cutscene_car[i])
if is_entity_touching_entity(trailer.veh, cutscene_car[i])
stop_playback_recorded_vehicle(cutscene_car[i])
endif
endif
endif
endfor
endif
endproc
func bool detach_trailer_cutscene_system()
// if does_entity_exist(truck.veh)
// if is_playback_going_on_for_vehicle(truck.veh)
// printfloat(get_time_position_in_recording(truck.veh))
// printnl()
// endif
// endif
// if does_entity_exist(trailer.veh)
// if is_playback_going_on_for_vehicle(trailer.veh)
// printfloat(get_time_position_in_recording(trailer.veh))
// printnl()
// endif
// endif
//**************script debug tool REMOVE
//truck_and_trailer_recording_system()
//***** end remove
switch detach_trailer_cutscene_status
case 0
//
//////**********************script debug REMOVE
// vehicle_index temp_truck
//
// temp_truck = create_vehicle(truck.model, <<-47.2755, -515.6834, 39.4660>>, 339.7119)
// set_entity_collision(temp_truck, false)
// start_playback_recorded_vehicle(temp_truck, 201, "lkfamily4")
// skip_time_in_playback_recorded_vehicle(temp_truck, (get_total_duration_of_vehicle_recording(201, "lkfamily4") - 250))
// DISPLAY_PLAYBACK_RECORDED_VEHICLE(temp_truck, rdm_wholeline)
// start_playback_recorded_vehicle(truck.veh, 201, "lkfamily4")
// start_playback_recorded_vehicle(trailer.veh, 202, "lkfamily4")
// wait(0)
// if is_vehicle_driveable(temp_truck)
// pause_playback_recorded_vehicle(temp_truck)
// endif
// if is_vehicle_driveable(truck.veh)
// if is_vehicle_driveable(trailer.veh)
// skip_time_in_playback_recorded_vehicle(truck.veh, -1000)//8700
// skip_time_in_playback_recorded_vehicle(trailer.veh, -1000)
//
// stop_playback_recorded_vehicle(truck.veh)
// stop_playback_recorded_vehicle(trailer.veh)
// endif
// endif
//
// detach_trailer_cutscene_status = 22
//
// end_cutscene_no_fade()
//
// return true
////**********************end
camera_a = create_cam_with_params("default_scripted_camera", <<-22.708345,-451.572784,41.743435>>,<<-1.770246,7.460166,144.979492>>,32.984249)
camera_b = create_cam_with_params("default_scripted_camera", <<-16.802435,-433.538116,41.621296>>,<<4.556459,7.441601,142.014786>>,32.984249)
camera_g = create_cam("default_scripted_camera", false)
ATTACH_CAM_TO_ENTITY(camera_g, truck.veh, <<6.180, 2.500, 0.490>>)
POINT_CAM_AT_ENTITY(camera_g, truck.veh, <<-0.800, -2.200, 0.600>>)
set_cam_fov(camera_g, 40.00)
camera_h = create_cam("default_scripted_camera", false)
ATTACH_CAM_TO_ENTITY(camera_h, truck.veh, <<6.180, -0.520, 0.230>>)
POINT_CAM_AT_ENTITY(camera_h, truck.veh, <<-0.800, -2.200, 0.6>>)
set_cam_fov(camera_h, 37.7)
camera_c = create_cam_with_params("default_scripted_camera", <<-20.613693,-440.846039,39.883686>>,<<0.674877,3.426711,-0.729025>>,33.299999)
camera_d = create_cam_with_params("default_scripted_camera", <<-40.991886,-441.019714,40.563812>>,<<0.401580,6.064670,-74.572281>>,30.671715)
camera_e = create_cam_with_params("default_scripted_camera", <<-39.753429,-441.033356,40.007267>>,<<2.512532,6.064665,-110.036415>>,27.355047)
camera_f = create_cam_with_params("default_scripted_camera", <<-42.095036,-458.759216,39.879986>>,<<4.366019,5.129760,-38.707199>>,26.954762)
start_playback_recorded_vehicle(truck.veh, 201, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 7500)//8700
start_playback_recorded_vehicle(trailer.veh, 202, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, (7500 - 105))//8700
wait(0)
//**********************debug
// pause_playback_recorded_vehicle(truck.veh)
// pause_playback_recorded_vehicle(trailer.veh)
//
// wait(1000)
// unpause_playback_recorded_vehicle(truck.veh)
// unpause_playback_recorded_vehicle(trailer.veh)
//***********************end debug
if is_vehicle_driveable(lazlows_car.veh)
stop_playback_recorded_vehicle(lazlows_car.veh)
set_entity_visible(lazlows_car.veh, false)
set_entity_collision(lazlows_car.veh, false)
set_entity_proofs(lazlows_car.veh, true, true, true, true, true)
endif
cleanup_uber_playback(true)
set_roads_in_area(<<-106.62, -88.47, 100.00>>, <<45.00, -780, -100>>, false)
clear_area(<<-47.2755, -515.6834, 39.4660>>, 200.00, true)
set_cam_active(camera_g, true)
set_cam_active_with_interp(camera_h, camera_g, 1500, graph_type_linear)
render_script_cams(true, false)
if is_vehicle_driveable(truck.veh)
START_PARTICLE_FX_NON_LOOPED_on_entity("scr_fam4_trailer_sparks", truck.veh, <<0.0, -1.2, 0.0>>, <<0.0, 0.0, 0.0>>, 1.0)
endif
original_time = get_game_timer()
trailer_cutscene_playing = true
detach_trailer_cutscene_status++
break
case 1
//request_vehicle_recording(001, "lkfamily4")
START_PARTICLE_FX_NON_LOOPED_on_entity("scr_fam4_trailer_sparks", truck.veh, <<0.0, -1.2, 0.0>>, <<0.0, 0.0, 0.0>>, 1.0)
detach_trailer_cutscene_status++
break
case 2
// if is_vehicle_driveable(truck.veh)
// draw_sphere(get_offset_from_entity_in_world_coords(truck.veh, <<0.0, -1.2, 0.0>>), 1.0)
// endif
if is_vehicle_driveable(truck.veh)
if is_playback_going_on_for_vehicle(truck.veh)
if get_time_position_in_recording(truck.veh) > 8500 //8000
skip_time_in_playback_recorded_vehicle(truck.veh, -100000)
skip_time_in_playback_recorded_vehicle(trailer.veh, -100000)
skip_time_in_playback_recorded_vehicle(truck.veh, 7650) //7500
skip_time_in_playback_recorded_vehicle(trailer.veh, (7650 - 105))//7500
wait(0)
set_cam_active(camera_g, false)
set_cam_active(camera_h, false)
set_cam_active(camera_a, true)
set_cam_active_with_interp(camera_b, camera_a, 2200, graph_type_linear) //3250 2750
detach_trailer_cutscene_status++
endif
endif
endif
break
case 3
if is_vehicle_driveable(truck.veh)
if is_playback_going_on_for_vehicle(truck.veh)
if get_time_position_in_recording(truck.veh) > 9000 //10500
if is_playback_going_on_for_vehicle(trailer.veh)
stop_playback_recorded_vehicle(trailer.veh)
endif
detach_entity(trailer.veh, false)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, false)
start_playback_recorded_vehicle(trailer.veh, 203, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 1800)
if has_model_loaded(sentinel)
cutscene_car[0] = create_vehicle(sentinel, <<-9.6958, -361.1301, 40.1008>>, 0)
start_playback_recorded_vehicle(cutscene_car[0], 204, "lkfamily4")
skip_time_in_playback_recorded_vehicle(cutscene_car[0], 6000)//6200
endif
if has_model_loaded(premier)
cutscene_car[1] = create_vehicle(premier, <<-40.6385, -497.1492, 39.9915>>, 0)
start_playback_recorded_vehicle(cutscene_car[1], 205, "lkfamily4")
skip_time_in_playback_recorded_vehicle(cutscene_car[1], 4250)
endif
wait(0)
set_time_scale(0.5)
set_cam_active(camera_a, false)
set_cam_active(camera_b, false)
set_cam_active(camera_c, true)
request_model(taco)
request_model(schafter2)
detach_trailer_cutscene_status++
endif
endif
endif
break
case 4
stop_playback_of_cutscene_car()
if is_playback_going_on_for_vehicle(trailer.veh)
if get_time_position_in_recording(trailer.veh) > 600
set_cam_active(camera_c, false)
if is_playback_going_on_for_vehicle(truck.veh)
pause_playback_recorded_vehicle(truck.veh)
endif
set_time_scale(0.6)
set_cam_active(camera_d, true)
set_cam_active_with_interp(camera_e, camera_d, 3000, graph_type_linear)
detach_trailer_cutscene_status++
endif
endif
break
case 5
stop_playback_of_cutscene_car()
if is_playback_going_on_for_vehicle(trailer.veh)
if get_time_position_in_recording(trailer.veh) > 1258
set_cam_active(camera_d, false)
set_cam_active(camera_e, false)
set_cam_active(camera_f, true)
detach_trailer_cutscene_status++
endif
endif
break
case 6
//***********************debug
// if is_playback_going_on_for_vehicle(trailer.veh)
// skip_time_in_playback_recorded_vehicle(trailer.veh, -100000)
// skip_time_in_playback_recorded_vehicle(trailer.veh, 400) //1300
// wait(0)
// pause_playback_recorded_vehicle(trailer.veh)
// endif
//
// set_time_scale(1.0)
//
// end_cutscene_no_fade()
//
// detach_trailer_cutscene_status++
//
// return true
//*********************end debug
stop_playback_of_cutscene_car()
if is_playback_going_on_for_vehicle(trailer.veh)
if get_time_position_in_recording(trailer.veh) > 2000
set_roads_in_area(<<-106.62, -88.47, 100.00>>, <<45.00, -780, -100>>, true)
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
load_uber_data()
fUberPlaybackDensitySwitchOffRange = 200
deactivate_SetPieceCars_up_to_time(127000)
//switch_SetPieceCar_to_ai_on_collision = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
#IF IS_DEBUG_BUILD
if not does_entity_exist(lazlows_car.veh)
lazlows_car.veh = create_vehicle(lazlows_car.model, <<529.3939, -1334.3630, 28.2729>>, 34.9842)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_vehicle_colours(lazlows_car.veh, 27, 0)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
skip_to_end_and_stop_playback_recorded_vehicle(lazlows_car.veh)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
endif
#endif
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
if is_vehicle_driveable(truck.veh)
if is_playback_going_on_for_vehicle(truck.veh)
unpause_playback_recorded_vehicle(truck.veh)
skip_time_in_playback_recorded_vehicle(truck.veh, -100000)
skip_time_in_playback_recorded_vehicle(truck.veh, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(201, "lkfamily4") - 1500))
endif
endif
update_uber_playback(lazlows_car.veh, 1.0)
wait(0)
if is_vehicle_driveable(lazlows_car.veh)
SET_UBER_PLAYBACK_TO_TIME_NOW(lazlows_car.veh, 133000)
update_uber_playback(lazlows_car.veh, 1.0)
set_entity_visible(lazlows_car.veh, true)
set_entity_collision(lazlows_car.veh, true)
set_entity_proofs(lazlows_car.veh, false, false, false, false, false)
endif
set_time_scale(1.0)
if is_vehicle_driveable(truck.veh)
stop_playback_recorded_vehicle(truck.veh)
endif
if is_vehicle_driveable(trailer.veh)
set_vehicle_tyres_can_burst(trailer.veh, true)
endif
set_vehicle_as_no_longer_needed(trailer.veh)
set_model_as_no_longer_needed(trailer.model)
end_cutscene_no_fade()
trailer_cutscene_playing = false
detach_trailer_cutscene_status++
return true
endif
endif
break
case 7
break
case 22
if is_vehicle_driveable(truck.veh)
#if is_debug_build
DISPLAY_PLAYBACK_RECORDED_VEHICLE(truck.veh, rdm_wholeline)
#endif
endif
clear_area(<<-57.6468, -547.7130, 39.0136>>, 100.00, true)
break
endswitch
// if is_vehicle_driveable(trailer.veh)
// detach_entity(trailer.veh, false)
// APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_EXTERNAL_IMPULSE, <<0.0, -5.0, 0.0>>, <<0.0, 0.0, 0.0>>, 0, true, true, true)
// APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_ANGULAR_IMPULSE, <<1.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>, 0, true, true, true)
// endif
//trailer force data
//-18.32, -428.001, 42.150
//340.700
//-35.900, -450.720, 45.8
//0.0, 0.0, 0.0
//0.0, -2.3, -1.5
//0.55
//
return false
endfunc
proc detach_trailer_from_truck()
//detach_vehicle_from_trailer()
if does_entity_exist(trailer.veh)
if not is_entity_dead(trailer.veh)
if IS_VEHICLE_ATTACHED_TO_TRAILER(truck.veh)
detach_entity(trailer.veh, false)
APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_EXTERNAL_IMPULSE, <<0.0, -5.0, 0.0>>, <<0.0, 0.0, 0.0>>, 0, true, true, true)
APPLY_FORCE_TO_ENTITY(trailer.veh, APPLY_TYPE_ANGULAR_IMPULSE, <<0.0, 0.0, -1.0>>, <<0.0, 0.0, 0.0>>, 0, true, true, true)
set_vehicle_tyres_can_burst(trailer.veh, true)
endif
endif
play_sound_from_entity(-1, "UNHITCH_TRAILER", trailer.veh, "FAM4_UNHITCH_TRAILER")
set_vehicle_as_no_longer_needed(trailer.veh)
set_model_as_no_longer_needed(trailer.model)
if is_this_help_message_being_displayed("family4_help_1")
clear_help()
endif
MODIFY_VEHICLE_TOP_SPEED(truck.veh, -10)
create_conversation(scripted_speech, "fam4aud", "FAM4_DIT2", CONV_PRIORITY_low)
family4_trailer_detached = true
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FAM4_TRUCK_UNHOOKED)
endif
endproc
proc detach_trailer_dialogue_system()
switch deatch_trailer_dialogue_status
case 0
if is_entity_in_angled_area(truck.veh, <<-264.563, -1828.329, 27.333>>, <<-238.324, -1817.461, 36.033>>, 41.000)
deatch_trailer_dialogue_status++
endif
break
case 1
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if not is_any_text_being_displayed(locates_data)
//and not within_certain_recording_time()//turn left right etc
if create_conversation(scripted_speech, "fam4aud", "trailer_det", CONV_PRIORITY_medium)
detach_trailer_time = get_game_timer()
deatch_trailer_dialogue_status++
endif
endif
endif
break
case 2
if lk_timer(detach_trailer_time, 15000)
if not is_any_text_being_displayed(locates_data)
//and not within_certain_recording_time()//turn left right etc
detach_trailer_time = get_game_timer()
endif
endif
break
case 22
break
endswitch
endproc
proc detach_trailer_help_text_system()
switch detach_trailer_help_text_system_status
case 0
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if not is_help_message_on_screen()
if is_entity_in_angled_area(player_ped_id(), <<-264.563, -1828.329, 27.333>>, <<-238.324, -1817.461, 36.033>>, 41.000)
print_help("family4_help_1")
detach_trailer_help_text_system_status++
endif
endif
endif
//if is_entity_in_angled_area(truck.veh), <<-264.563, -1828.329, 27.333>>, <<-238.324, -1817.461, 36.033>>, 41.000)
break
case 1
//possibly add remider help text after 20 s
break
case 2
break
endswitch
endproc
proc detach_trailer_system()
if does_entity_exist(trailer.veh)
if is_entity_dead(trailer.veh)
detach_trailer_from_truck()
else
detach_trailer_help_text_system()
//detach_trailer_dialogue_system()
if not IS_VEHICLE_ATTACHED_TO_TRAILER(truck.veh)
detach_trailer_from_truck()
else
if get_entity_health(trailer.veh) < 300.00
vehicle_index closest_vehicle = GET_CLOSEST_VEHICLE(GET_ENTITY_COORDS(trailer.veh), 10.0, DUMMY_MODEL_FOR_SCRIPT, GET_TRAFFIC_VEHICLE_SEARCH_FLAGS())
if closest_vehicle != lazlows_car.veh
and closest_vehicle != truck.veh
if not is_entity_dead(closest_vehicle)
if is_entity_touching_entity(truck.veh, closest_vehicle)
detach_trailer_from_truck()
endif
endif
endif
endif
endif
endif
endif
endproc
proc manual_car_recording_playback_system()
if does_entity_exist(ambient_car)
if is_vehicle_driveable(ambient_car)
if get_distance_between_coords(get_entity_coords(ambient_car), get_entity_coords(player_ped_id())) < 150
switch manual_car_recording_system_status
case 0
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if is_entity_in_angled_area(player_ped_id(), <<-216.640, -2023.141, 26.651>>, <<-176.791, -2037.643, 30.896>>, 45.50) //45
ambient_driver.ped = create_ped_inside_vehicle(ambient_car, pedtype_mission, ambient_driver.model)
set_blocking_of_non_temporary_events(ambient_driver.ped, true)
set_playback_speed(ambient_car, 1.2)
//start_playback_recorded_vehicle(ambient_car, 112, "lkfamily4")
START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(ambient_car, 112, "lkfamily4", ENUM_TO_INT(SWITCH_ON_ANY_VEHICLE_IMPACT) | ENUM_TO_INT(TURN_ON_ENGINE_INSTANTLY))
manual_car_recording_system_status++
endif
endif
break
case 1
if is_entity_touching_entity(ambient_car, truck.veh)
stop_playback_recorded_vehicle(ambient_car)
set_vehicle_as_no_longer_needed(ambient_car)
set_ped_as_no_longer_needed(ambient_driver.ped)
set_vehicle_as_no_longer_needed(ambient_car_2)
manual_car_recording_system_status++
endif
break
case 2
break
endswitch
else
set_vehicle_as_no_longer_needed(ambient_car)
set_model_as_no_longer_needed(ambient_driver.model)
endif
endif
else
printstring("ambient car does not exist")
printnl()
endif
endproc
proc cleanup_asset_system()
int i = 0
switch cleanup_asset_status
case 0
if get_distance_between_coords(get_entity_coords(player_ped_id()), <<-219.6464, -2037.8220, 26.6207>>) > 70
for i = 0 to count_of(ambient_ped) - 1
SET_PED_AS_NO_LONGER_NEEDED(ambient_ped[i].ped)
set_model_as_no_longer_needed(ambient_ped[i].model)
REMOVE_FORCED_OBJECT(ambient_ped[i].pos, 0.5, V_ILev_Chair02_ped)
endfor
for i = 0 to count_of(parked_truck) - 1
set_vehicle_as_no_longer_needed(parked_truck[i].veh)
set_model_as_no_longer_needed(parked_truck[i].model)
set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
set_model_as_no_longer_needed(parked_trailer[i].model)
endfor
if does_entity_exist(michaels_car.veh)
set_vehicle_as_no_longer_needed(michaels_car.veh)
endif
set_model_as_no_longer_needed(michaels_car.model)
if does_entity_exist(ambient_driver.ped)
delete_ped(ambient_driver.ped)
endif
set_model_as_no_longer_needed(ambient_driver.model)
set_vehicle_as_no_longer_needed(ambient_car)
set_vehicle_as_no_longer_needed(ambient_car_2)
set_vehicle_as_no_longer_needed(ambient_car_3)
set_vehicle_as_no_longer_needed(ambient_car_4)
set_vehicle_as_no_longer_needed(ambient_car_5)
// set_model_as_no_longer_needed(sentinel)
// set_model_as_no_longer_needed(schafter2)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-365.5, -2063.4, 100.00>>, <<-141.4, -1837.0, -100.00>>, false)
cleanup_asset_status++
endif
break
case 1
// if does_entity_exist(ambient_train[2])
// if is_vehicle_driveable(ambient_train[2])
// set_train_speed(ambient_train[2], 0)
// endif
// endif
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if get_time_position_in_recording(lazlows_car.veh) > 83000
for i = 0 to count_of(ambient_train) - 1
if does_entity_exist(ambient_train[i])
set_vehicle_as_no_longer_needed(ambient_train[i])
endif
endfor
set_model_as_no_longer_needed(freight)
cleanup_asset_status++
endif
endif
break
case 2
break
endswitch
endproc
proc setup_mocap()
if is_entity_at_coord(lazlow.ped, <<1063.57, -284.17, 50.6>>, <<40.0, 40.0, 10.0>>)
REQUEST_CUTSCENE("Family_4_MCS_3_concat")
endif
endproc
proc reset_storm_drain_cutscene()
#IF IS_DEBUG_BUILD
if widget_reset_cutscene
clear_ped_tasks_immediately(player_ped_id())
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
if is_playback_going_on_for_vehicle(truck.veh)
stop_playback_recorded_vehicle(truck.veh)
endif
if is_playback_going_on_for_vehicle(trailer.veh)
stop_playback_recorded_vehicle(trailer.veh)
endif
delete_ped(selector_ped.pedID[selector_ped_michael])
delete_ped(lazlow.ped)
DELETE_VEHICLE(lazlows_car.veh)
DELETE_VEHICLE(truck.veh)
DELETE_VEHICLE(trailer.veh)
destroy_all_cams()
family_4_storm_drain_cutscene_status = 0
widget_reset_cutscene = false
endif
#endif
endproc
/// PURPOSE: monitors which lane the player has driven down whilst chasing lazlow in the storm drain.
///
proc storm_drain_cutscene_lane_system()
if is_entity_in_angled_area(player_ped_id(), <<1025.122, -337.243, 47.967>>, <<1044.686, -349.899, 62.0>>, 5.0)
storm_drain_lane = 0
elif is_entity_in_angled_area(player_ped_id(), <<1014.375, -330.291, 47.867>>, <<1023.359, -336.103, 62.067>>, 5.0)
storm_drain_lane = 1
elif is_entity_in_angled_area(player_ped_id(), <<992.965, -316.440, 47.867>>, <<1012.612, -329.150, 62.067>>, 5.0)
storm_drain_lane = 2
endif
endproc
/// PURPOSE: returns the lane the player has driven down whilst chasing lazlow in the storm drain.
///
func int get_storm_drain_lane_player_entered()
return storm_drain_lane
endfunc
//int lazlows_car_scene_id
proc family_4_storm_drain_cutscene()
reset_storm_drain_cutscene()
if IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY()
family_4_storm_drain_cutscene_status = 22
endif
request_mocap_data_for_Family_4_MCS_3_concat()
switch family_4_storm_drain_cutscene_status
case 0
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(truck.veh) //to keep the truck hd to fix lod pop
//**********debug warp jump
// request_model(michael.model)
// request_model(trevor.model)
//
// request_model(truck.model)
// set_vehicle_model_is_suppressed(truck.model, true)
//
// request_model(trailer.model)
// set_vehicle_model_is_suppressed(trailer.model, true)
//
// request_model(lazlows_car.model)
// set_vehicle_model_is_suppressed(lazlows_car.model, true)
//
// request_model(lazlow.model)
// set_ped_model_is_suppressed(lazlow.model, true)
//
// request_anim_dict("missfam4mcs3")
//
// load_mission_vehicle_recordings()
//
// while not has_model_loaded(michael.model)
// or not has_model_loaded(trevor.model)
// or not has_model_loaded(truck.model)
// or not has_model_loaded(trailer.model)
// or not has_model_loaded(lazlows_car.model)
// or not has_model_loaded(lazlow.model)
// or not has_anim_dict_loaded("missfam4mcs3")
// or not has_vehicle_recording_been_loaded(401, "lkfamily4")
// or not has_vehicle_recording_been_loaded(402, "lkfamily4")
//
// wait(0)
//
// endwhile
//
// truck.veh = create_vehicle(truck.model, <<1057.9988, -279.0626, 50.3196>>, truck.heading)
// SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
// set_vehicle_tyres_can_burst(truck.veh, false)
// set_vehicle_colours(truck.veh, 0, 0)
// set_entity_health(truck.veh, 1500)
// set_vehicle_engine_health(truck.veh, 1500)
// set_vehicle_petrol_tank_health(truck.veh, 1500)
// //set_vehicle_dirt_level(truck.veh, 0.0)
// set_vehicle_strong(truck.veh, true)
//
// trailer.veh = create_vehicle(trailer.model, <<1057.9988, -279.0626, 60.3196>>, trailer.heading)
// set_vehicle_tyres_can_burst(trailer.veh, false)
// attach_vehicle_to_trailer(truck.veh, trailer.veh)
// //DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
// activate_physics(truck.veh)
// activate_physics(trailer.veh)
//
// storm_drain_lane = 2
//
//
// lazlows_car.veh = create_vehicle(lazlows_car.model, <<1067.9988, -279.0626, 50.3196>>, lazlows_car.heading)
// SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
// set_vehicle_tyres_can_burst(lazlows_car.veh, false)
// set_entity_only_damaged_by_player(lazlows_car.veh, true)
// set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
// set_vehicle_colours(lazlows_car.veh, 27, 0)
// //SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
// SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
// SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
//
//
// create_npc_ped_inside_vehicle(lazlow.ped, char_lazlow, lazlows_car.veh, vs_driver, false)
// set_ped_can_ragdoll(lazlow.ped, false)
// SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
// set_blocking_of_non_temporary_events(lazlow.ped, true)
// add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
// task_look_at_coord(lazlow.ped, get_offset_from_entity_in_world_coords(lazlows_car.veh, <<-1.5, -10.0, 0.7>>), 10000)
//
// set_current_selector_ped(selector_ped_trevor, false)
// add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
// set_ped_into_vehicle(player_ped_id(), truck.veh)
//
// create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, truck.veh, vs_front_right, false)
// set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
// set_ped_into_vehicle(player_ped_id(), truck.veh)
// add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
//**********END OF DEBUG
clear_area(<<1067.9988, -279.0626, 50.3196>>, 1000, true)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), truck.veh)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
set_ped_into_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh, vs_front_right)
switch get_storm_drain_lane_player_entered()
case 0
start_playback_recorded_vehicle(truck.veh, 401, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 10500)
force_playback_recorded_vehicle_update(truck.veh)
if does_entity_exist(trailer.veh)
if not is_entity_dead(trailer.veh)
start_playback_recorded_vehicle(trailer.veh, 402, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, 10500)
force_playback_recorded_vehicle_update(trailer.veh)
endif
endif
truck.recording_number = 401
break
case 1
start_playback_recorded_vehicle(truck.veh, 403, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 9500)
force_playback_recorded_vehicle_update(truck.veh)
if does_entity_exist(trailer.veh)
if not is_entity_dead(trailer.veh)
start_playback_recorded_vehicle(trailer.veh, 404, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, 9500)
force_playback_recorded_vehicle_update(trailer.veh)
endif
endif
truck.recording_number = 403
break
case 2
start_playback_recorded_vehicle(truck.veh, 405, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 9500)
force_playback_recorded_vehicle_update(truck.veh)
if does_entity_exist(trailer.veh)
if not is_entity_dead(trailer.veh)
start_playback_recorded_vehicle(trailer.veh, 406, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, 9500)
force_playback_recorded_vehicle_update(trailer.veh)
endif
endif
truck.recording_number = 405
break
default
start_playback_recorded_vehicle(truck.veh, 401, "lkfamily4")
skip_time_in_playback_recorded_vehicle(truck.veh, 10500)
force_playback_recorded_vehicle_update(truck.veh)
if does_entity_exist(trailer.veh)
if not is_entity_dead(trailer.veh)
start_playback_recorded_vehicle(trailer.veh, 402, "lkfamily4")
skip_time_in_playback_recorded_vehicle(trailer.veh, 10500)
force_playback_recorded_vehicle_update(trailer.veh)
endif
endif
truck.recording_number = 401
break
endswitch
if is_playback_going_on_for_vehicle(lazlows_car.veh)
stop_playback_recorded_vehicle(lazlows_car.veh)
endif
STOP_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, instant_blend_in, true)
set_entity_coords(lazlows_car.veh, <<1067.9988, -279.0626, 50.3196>>)
set_entity_heading(lazlows_car.veh, 334.6674)
set_vehicle_on_ground_properly(lazlows_car.veh)
set_vehicle_doors_shut(lazlows_car.veh, true)
setup_vehicle_proofs(lazlows_car.veh)
clear_ped_tasks_immediately(lazlow.ped)
scene_pos = get_entity_coords(lazlows_car.veh)
scene_rot = get_entity_rotation(lazlows_car.veh)
lazlow.scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
//SET_VEHICLE_DOOR_OPEN(lazlows_car.veh, sc_door_front_left) //sc_door_list
TASK_SYNCHRONIZED_SCENE(lazlow.ped, lazlow.scene_id, "missfam4mcs3", "loop_lazlow", instant_BLEND_IN, normal_BLEND_OUT)//, SYNCED_SCENE_USE_PHYSICS)
SET_SYNCHRONIZED_SCENE_LOOPED(lazlow.scene_id, true)
task_look_at_entity(lazlow.ped, player_ped_id(), -1)
// scene_pos = get_entity_coords(lazlows_car.veh)
// scene_rot = get_entity_rotation(lazlows_car.veh)
// lazlows_car_scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
//
// PLAY_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, lazlows_car_scene_id, "loop_intro_car", "missfam4mcs3", instant_BLEND_IN, normal_BLEND_OUT)
//set_synchronized_scene_phase(lazlows_car_scene_id, 0.99)
//FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(lazlows_car.veh)
camera_a = create_cam_with_params("default_scripted_camera", <<1070.399902,-276.613190,52.565422>>,<<-7.739586,2.908233,130.966339>>,31.374056)
camera_b = create_cam_with_params("default_scripted_camera", <<1070.461914,-276.590302,52.109283>>,<<-7.739586,2.908233,130.966339>>,28.281126)
// camera_c = create_cam_with_params("default_scripted_camera", <<1065.437256,-285.258972,50.535084>>,<<0.413196,2.907482,132.180130>>,29.336329)
// camera_d = create_cam_with_params("default_scripted_camera", <<1064.869873,-285.258972,50.535084>>,<<1.861601,2.907488,133.649506>>,28.515699)
camera_c = create_cam_with_params("default_scripted_camera", <<1054.241089,-292.129944,49.776012>>,<<7.170268,2.907489,-50.980068>>,28.515699)
camera_d = create_cam_with_params("default_scripted_camera", <<1054.567871,-291.851379,49.748013>>,<<7.170268,2.907489,-50.127289>>,26.945950)
set_cam_active(camera_a, true)
set_cam_active_with_interp(camera_b, camera_a, 5000, graph_type_linear)
render_script_cams(true, false)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
family_4_storm_drain_cutscene_status++
break
case 1
printfloat(get_time_position_in_recording(truck.veh))
printnl()
if get_time_position_in_recording(truck.veh) > (get_total_duration_of_vehicle_recording(truck.recording_number, "lkfamily4") - 200)
open_sequence_task(seq)
task_leave_vehicle(null, truck.veh)
task_follow_nav_mesh_to_coord(null, <<1067.9988, -279.0626, 50.3196>>, pedmove_walk, -1)
//task_go_straight_to_coord(null, <<1066.7, -274.9, 50.3196>>, pedmove_walk, -1)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
open_sequence_task(seq)
task_pause(null, 200)
task_leave_vehicle(null, truck.veh)
//task_go_straight_to_coord(null, <<1066.7, -274.9, 50.3196>>, pedmove_walk, -1)
task_follow_nav_mesh_to_coord(null, <<1067.9988, -279.0626, 50.3196>>, pedmove_walk, -1)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
original_time = get_game_timer()
family_4_storm_drain_cutscene_status++
endif
break
case 2
if not is_cam_interpolating(camera_b)
set_cam_active(camera_a, false)
set_cam_active(camera_b, false)
set_entity_coords(truck.veh, <<1057.25, -294.328, 50.4676>>)
set_entity_heading(truck.veh, 327.891846)
set_vehicle_on_ground_properly(truck.veh)
freeze_entity_position(truck.veh, true)
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<1055.86, -292.17, 49.4391>>)
set_entity_heading(player_ped_id(), 316.7899)
fORCE_PED_MOTION_STATE(player_ped_id(), MS_ON_FOOT_walk, TRUE)
task_go_straight_to_coord(player_ped_id(), <<1066.7, -274.9, 50.3196>>, pedmove_walk, -1)
set_cam_active(camera_d, true)
set_cam_active_with_interp(camera_d, camera_c, 3000, graph_type_linear)
family_4_storm_drain_cutscene_status++
endif
break
case 3
if not is_cam_interpolating(camera_d)
deactivate_vehicle_proofs(lazlows_car.veh)
freeze_entity_position(truck.veh, false)
mission_flow = play_final_mocap
endif
break
case 22
if not is_screen_faded_out()
if not is_screen_fading_out()
do_screen_fade_out(default_fade_time)
endif
else
deactivate_vehicle_proofs(lazlows_car.veh)
freeze_entity_position(truck.veh, false)
if is_playback_going_on_for_vehicle(truck.veh)
stop_playback_recorded_vehicle(truck.veh)
endif
if does_entity_exist(trailer.veh)
if is_vehicle_driveable(trailer.veh)
if is_playback_going_on_for_vehicle(trailer.veh)
stop_playback_recorded_vehicle(trailer.veh)
endif
endif
endif
set_entity_coords(truck.veh, get_position_of_vehicle_recording_at_time(401, (get_total_duration_of_vehicle_recording(401, "lkfamily4") - 50), "lkfamily4"))
set_entity_rotation(truck.veh, get_rotation_of_vehicle_recording_at_time(401, (get_total_duration_of_vehicle_recording(401, "lkfamily4") - 50), "lkfamily4"))
if does_entity_exist(trailer.veh)
if is_vehicle_driveable(trailer.veh)
set_entity_coords(trailer.veh, (get_position_of_vehicle_recording_at_time(402, (get_total_duration_of_vehicle_recording(402, "lkfamily4") - 50), "lkfamily4")) + <<0.0, 0.0, 10.00>>)
set_entity_rotation(trailer.veh, get_rotation_of_vehicle_recording_at_time(402, (get_total_duration_of_vehicle_recording(402, "lkfamily4") - 50), "lkfamily4"))
attach_vehicle_to_trailer(truck.veh, trailer.veh)
endif
endif
clear_ped_tasks_immediately(player_ped_id())
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
REPLAY_STOP_EVENT()
while not has_cutscene_loaded()
wait(0)
endwhile
mission_flow = play_final_mocap
endif
break
endswitch
endproc
func bool trigger_storm_drain_cutscene()
if trigger_storm_drain_cutscene_status > 0
storm_drain_cutscene_lane_system()
endif
switch trigger_storm_drain_cutscene_status
case 0
if is_entity_at_coord(lazlow.ped, <<1063.57, -284.17, 50.6>>, <<80.0, 80.0, 20.0>>)
request_anim_dict("missfam4mcs3")
request_mocap_data_for_Family_4_MCS_3_concat()
trigger_storm_drain_cutscene_status++
endif
break
case 1
uber_speed_system()
request_mocap_data_for_Family_4_MCS_3_concat()
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if (get_time_position_in_recording(lazlows_car.veh) + 5000) > GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, "lkfamily4")
if (get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 80)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER(scripted_speech, "fam4aud", "FAM4_POW", CONV_PRIORITY_MEDIUM)
trigger_storm_drain_cutscene_status++
endif
endif
else
if (get_distance_between_coords(get_entity_coords(lazlows_car.veh), get_entity_coords(player_ped_id())) < 80)
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
//his car had broken down.
ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER(scripted_speech, "fam4aud", "FAM4_POW2", CONV_PRIORITY_MEDIUM)
trigger_storm_drain_cutscene_status++
endif
endif
break
case 2
uber_speed_system()
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if (get_time_position_in_recording(lazlows_car.veh) + 100) > GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, "lkfamily4")//3750
stop_playback_recorded_vehicle(lazlows_car.veh)
freeze_entity_position(lazlows_car.veh, true)
freeze_entity_position(lazlows_car.veh, false)
lazlows_car_ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fam4_truck_vent", lazlows_car.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
trigger_storm_drain_cutscene_status++
endif
else
lazlows_car_ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fam4_truck_vent", lazlows_car.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
trigger_storm_drain_cutscene_status++
endif
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 45.5 //35.5
if not does_particle_fx_looped_exist(lazlows_car_ptfx)
lazlows_car_ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fam4_truck_vent", lazlows_car.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
endif
trigger_storm_drain_cutscene_status = 3
endif
break
case 3
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 40.00 //45.5
or get_distance_between_coords(get_entity_coords(truck.veh), get_entity_coords(lazlow.ped)) < 40.00 //incase player jumps out of truck full speed
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
clear_mission_locate_stuff(locates_data, true)
// if start_new_cutscene_no_fade(false, true, false)
//
// SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
//
// setup_mission_ped_and_vehicle_proofs(lazlow.ped, truck.veh)
//
// clear_mission_locate_stuff(locates_data, true)
//
// if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_2")
// START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_2")
// endif
//
// trigger_music_event("FAM4_STOP_TRACK")
//
// family_4_storm_drain_cutscene()
//
// mission_flow = storm_drain_cutscene
//
// return true
//
// endif
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_2")
stop_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_2")
endif
trigger_music_event("FAM4_STOP_TRACK")
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(truck.veh, 7)
trigger_storm_drain_cutscene_status++
else
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) < 15.00
or get_distance_between_coords(get_entity_coords(truck.veh), get_entity_coords(lazlow.ped)) < 17.00
if start_new_cutscene_no_fade(false, true, false, true)
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
setup_mission_ped_and_vehicle_proofs(lazlow.ped, truck.veh)
clear_mission_locate_stuff(locates_data, true)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_2")
START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_2")
endif
trigger_music_event("FAM4_STOP_TRACK")
mission_flow = play_final_mocap
return true
endif
endif
endif
endif
break
case 4
if BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(truck.veh, 7)
start_new_cutscene_no_fade(false, false, false)
open_sequence_task(seq)
task_follow_nav_mesh_to_coord(null, <<1067.4547, -279.3040, 50.2995>>, pedmove_walk, -1, 0.2)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
set_player_control(player_id(), false, spc_leave_camera_control_on)
original_time = get_game_timer()
deactivate_truck_blipping_system = true
trigger_storm_drain_cutscene_status++
endif
break
case 5
if lk_timer(original_time, 3000)
REPLAY_RECORD_BACK_FOR_TIME(5)
mission_flow = play_final_mocap
return true
endif
break
endswitch
return false
endfunc
proc ambient_train_system()
int i = 0
switch ambient_train_system_status
case 0
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if get_time_position_in_recording(lazlows_car.veh) > 45000
request_model(freight)
ambient_train_system_status++
endif
endif
break
case 1
if has_model_loaded(freight)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
// ambient_train[0] = create_mission_train(18, <<550.4, -1360.4, 29.00>>, false)
// set_train_cruise_speed(ambient_train[0], 10.00)
// set_train_speed(ambient_train[0], 10.0)
ambient_train[1] = CREATE_MISSION_TRAIN(18, <<534.5, -946.8, 26.5>>, false)//<<536.1702, -844.5273, 23.8658>>, false) //16
set_train_cruise_speed(ambient_train[1], 0.00)
set_train_speed(ambient_train[1], 0.00)
set_entity_proofs(ambient_train[1], true, true, true, true, true)
ambient_train[2] = CREATE_MISSION_TRAIN(18, <<517.6304, -1060.3722, 26.7011>>, false) //16
set_train_cruise_speed(ambient_train[2], 0.0)
set_train_speed(ambient_train[2], 0.0)
set_entity_proofs(ambient_train[2], true, true, true, true, true)
ambient_train[3] = create_vehicle(freight, <<522.3235, -1064.8285, 27.0030>>, 184.00)//180
freeze_entity_position(ambient_train[3], true)
set_entity_proofs(ambient_train[3], true, true, true, true, true)
ambient_train_system_status++
endif
endif
break
case 2
// if get_time_position_in_recording(lazlows_car.veh) < 64000.580
//
// if is_vehicle_driveable(ambient_train[0])
//
// float train_speed
//
// train_speed = lazlows_car.speed * 12
//
// set_train_speed(ambient_train[0], train_speed)
// set_train_cruise_speed(ambient_train[0], train_speed)
//
//// printstring("train_cruise_speed: ")
//// printnl()
//
// endif
//
// else
//
// if is_vehicle_driveable(ambient_train[0])
//
// set_train_speed(ambient_train[0], 10)
// set_train_cruise_speed(ambient_train[0], 10)
ambient_train_system_status++
// endif
// endif
break
case 3
// if does_entity_exist(ambient_train[0])
// delete_mission_train(ambient_train[0])
// endif
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if get_time_position_in_recording(lazlows_car.veh) > 65000
if is_vehicle_driveable(ambient_train[1])
start_vehicle_horn(ambient_train[1], 7000)
ambient_train_system_status++
endif
endif
endif
break
case 4
if get_time_position_in_recording(lazlows_car.veh) > 82000
for i = 1 to count_of(ambient_train) - 1
//trains proofed so can't be destroyed
if does_entity_exist(ambient_train[i])
if not is_entity_dead(ambient_train[i])
if get_distance_between_coords(get_entity_coords(ambient_train[i], false), get_entity_coords(player_ped_id())) > 50
if not is_entity_on_screen(ambient_train[i])
if i != 3
delete_mission_train(ambient_train[i])
else
delete_vehicle(ambient_train[i])
endif
endif
endif
endif
endif
endfor
endif
if not does_entity_exist(ambient_train[1])
and not does_entity_exist(ambient_train[2])
and not does_entity_exist(ambient_train[3])
set_model_as_no_longer_needed(freight)
ambient_train_system_status++
endif
break
case 5
break
endswitch
//jumps to case 3 when the train cutscene triggers
// if train_cutscene_playing
// uber_speed_status = 4
// endif
endproc
proc lazlow_ai_system_2()
// printstring("lazlow ai system 2: ")
// printint(lazlow_ai_system_2_status)
// printnl()
//
// printvector(get_entity_coords(lazlow.ped))
// printnl()
switch lazlow_ai_system_2_status
case 0
if not is_playback_going_on_for_vehicle(lazlows_car.veh)
if get_entity_speed(lazlows_car.veh) < 0.01
if has_anim_dict_loaded("missfam4mcs3")
CLEAR_PED_TASKS_IMMEDIATELY(lazlow.ped)
set_entity_no_collision_entity(lazlow.ped, lazlows_car.veh, false)
scene_pos = get_entity_coords(lazlows_car.veh)//<<-228.974, -2048.902, 27.120>>
scene_rot = get_entity_rotation(lazlows_car.veh) //<<0.0, 0.0, -122.436>>
lazlow.scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
TASK_SYNCHRONIZED_SCENE(lazlow.ped, lazlow.scene_id, "missfam4mcs3", "loop_intro_lazlow", instant_BLEND_IN, normal_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
PLAY_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, lazlow.scene_id, "loop_intro_car", "missfam4mcs3", instant_BLEND_IN, normal_BLEND_OUT)
//script_assert("start synched scene")
lazlow_ai_system_2_status++
endif
endif
endif
break
case 1
if is_synchronized_scene_running(lazlow.scene_id)
if get_synchronized_scene_phase(lazlow.scene_id) >= 1.0
STOP_SYNCHRONIZED_ENTITY_ANIM(lazlows_car.veh, instant_blend_in, true)
scene_pos = get_entity_coords(lazlows_car.veh)//<<-228.974, -2048.902, 27.120>>
scene_rot = get_entity_rotation(lazlows_car.veh) //<<0.0, 0.0, -122.436>>
lazlow.scene_id = CREATE_SYNCHRONIZED_SCENE(scene_pos, scene_rot)
task_look_at_entity(lazlow.ped, player_ped_id(), -1)
TASK_SYNCHRONIZED_SCENE(lazlow.ped, lazlow.scene_id, "missfam4mcs3", "loop_lazlow", normal_BLEND_IN, normal_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
SET_SYNCHRONIZED_SCENE_LOOPED(lazlow.scene_id, true)
lazlow_ai_system_2_status++
endif
endif
break
case 2
if not is_synchronized_scene_running(lazlow.scene_id)
and not is_ped_ragdoll(lazlow.ped)
vector lazlow_rot
lazlow.run_to_pos = get_anim_initial_offset_position("missfam4mcs3", "loop_lazlow", scene_pos, scene_rot, 0.0)
lazlow_rot = get_anim_initial_offset_rotation("missfam4mcs3", "loop_lazlow", scene_pos, scene_rot, 0.0)
lazlow.heading = lazlow_rot.z
if not is_entity_at_coord(lazlow.ped, lazlow.run_to_pos, <<0.5, 0.5, 1.6>>)
open_sequence_task(seq)
task_follow_nav_mesh_to_coord(null, lazlow.run_to_pos, pedmove_walk, -1)
close_sequence_task(seq)
task_perform_sequence(lazlow.ped, seq)
close_sequence_task(seq)
else
TASK_SYNCHRONIZED_SCENE(lazlow.ped, lazlow.scene_id, "missfam4mcs3", "loop_lazlow", normal_BLEND_IN, normal_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
SET_SYNCHRONIZED_SCENE_LOOPED(lazlow.scene_id, true)
endif
endif
break
endswitch
endproc
proc monitor_stats()
if get_distance_between_coords(get_entity_coords(lazlow.ped), get_entity_coords(player_ped_id())) > 180.00
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FAM4_GOT_TOO_FAR_FROM_LAZ)
endif
endproc
proc uber_chase_audio_scene_system()
switch uber_chase_audio_system_status
case 0
if is_entity_in_angled_area(player_ped_id(), <<291.306549,-653.226807,28.352633>>, <<297.325104,-637.227722,35.392754>>, 5.500000)
START_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_TUNNEL")
uber_chase_audio_system_status++
endif
break
case 1
if is_entity_in_angled_area(player_ped_id(), <<130.126190,-567.933960,31.024401>>, <<124.833488,-583.828430,37.622894>>, 3.250000)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_TUNNEL")
stop_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_TUNNEL")
endif
uber_chase_audio_system_status++
endif
break
case 2
if is_entity_in_angled_area(player_ped_id(), <<722.705933,-402.142151,35.358883>>, <<705.108582,-412.556213,44.903564>>, 9.000000)
or is_entity_in_angled_area(player_ped_id(), <<730.191772,-399.918793,35.374161>>, <<719.665283,-400.799957,44.312481>>, 4.250000)
start_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_JUMP")
original_time = get_game_timer()
uber_chase_audio_system_status++
endif
break
case 3
truck.pos = get_entity_coords(truck.veh)
if ((truck.pos.z > 18) and (truck.pos.z < 24)
and get_entity_height_above_ground(truck.veh) > 0.5
and IS_VEHICLE_ON_ALL_WHEELS(truck.veh))
or lk_timer(original_time, 4000)
or is_entity_in_angled_area(player_ped_id(), <<749.937622,-418.885803,17.449747>>, <<765.348877,-455.763092,28.306601>>, 78.250000)
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_CHASE_TRUCK_JUMP")
stop_AUDIO_SCENE("FAMILY_4_CHASE_TRUCK_JUMP")
endif
uber_chase_audio_system_status++
endif
break
case 4
break
endswitch
endproc
func bool family_4_uber_chase()
// if uber_chase_master_flow_system()
// return true
// endif
truck_blipping_system()
// truck_wanted_level_system()
//switch_setpiece_car_to_ai_system()
uber_speed_system()
uber_chase_audio_scene_system()
dialogue_system()
lazlow_ai_system_2()
lazlow_camera_system()
// michael_ai_system()
//
// trevor_ai_system()
cleanup_asset_system()
manual_car_recording_playback_system()
train_system()
detach_trailer_system()
//storm_drain_cutscene_system()
//train_crash_cutscene_system()
ambient_train_system()
trigger_storm_drain_cutscene()
monitor_stats()
return false
endfunc
func bool is_player_in_storm_drain()
if is_entity_in_angled_area(player_ped_id(), <<746.675, -371.534, 14.751>>, <<769.989, -490.368, 34.751>>, 110.00)
or is_entity_in_angled_area(player_ped_id(), <<847.737, -352.096, 20.22>>, <<870.975, -470.538, 77.346>>, 164.8)
return true
endif
return false
endfunc
func bool mission_fail_checks()
int i = 0
switch mission_flow
case get_to_the_stadium
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
for i = 0 to count_of(ambient_ped) - 1
if has_ped_been_harmed(ambient_ped[i].ped, ambient_ped[i].health)
or has_player_antagonised_ped(ambient_ped[i].ped, 20.00, false)
mission_failed_text = "family4_fail_11"
return true
endif
endfor
if mission_vehicle_injured(lazlows_car.veh)
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
if does_entity_exist(lazlows_car.veh)
if get_entity_health(lazlows_car.veh) < 700
or get_vehicle_petrol_tank_health(lazlows_car.veh) < 700
or get_vehicle_engine_health(lazlows_car.veh) < 700
mission_failed_text = "family4_fail_11"
return true
endif
if not is_entity_at_coord(lazlows_car.veh, lazlows_car.pos, <<2.0, 2.0, 2.0>>)
mission_failed_text = "family4_fail_11"
return true
endif
endif
if mission_vehicle_injured(truck.veh)
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
for i = 0 to count_of(parked_truck) - 1
if mission_vehicle_injured(parked_truck[i].veh)
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endfor
if mission_vehicle_injured(ambient_car)
or mission_vehicle_injured(ambient_car_2)
or mission_vehicle_injured(ambient_car_3)
or mission_vehicle_injured(ambient_car_4)
or mission_vehicle_injured(ambient_car_5)
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_trevor])) > 200.00)
mission_failed_text = "family4_fail_10"
return true
endif
endif
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 200.00)
mission_failed_text = "family4_fail_9"
return true
endif
endif
if is_ped_inside_interior(player_ped_id(), <<-260.7652, -2026.1630, 29.1458>>)
if is_ped_shooting(player_ped_id())
or get_player_wanted_level(player_id()) > 0
or is_ped_in_any_vehicle(player_ped_id())
if is_ped_shooting(player_ped_id())
make_ambient_peds_flee()
endif
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endif
//player drives car near shop doors.
vehicle_index last_players_car
last_players_car = get_players_last_vehicle()
if does_entity_exist(last_players_car)
if not is_entity_dead(last_players_car)
if is_entity_in_angled_area(last_players_car, <<-258.158, -2034.546, 27.946>>, <<-248.087, -2022.372, 31.946>>, 5.200)
make_ambient_peds_flee()
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endif
endif
//if is_entity_in_angled_area(player_ped_id(), <<-231.798, -2041.398, 26.361>>, <<-260.114, -2021.864, 34.161>>, 39.2)
if is_entity_in_angled_area(player_ped_id(), <<-175.828, -2039.052, 26.621>>, <<-276.227, -1989.866, 35.621>>, 195.700)
if is_ped_shooting(player_ped_id())
weapon_type players_weapon
if get_current_ped_weapon(player_ped_id(), players_weapon)
if GET_WEAPONTYPE_GROUP(players_weapon) != WEAPONGROUP_THROWN
make_ambient_peds_flee()
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endif
endif
vehicle_index temp_vehicle
if get_current_player_vehicle(temp_vehicle)
if get_entity_model(temp_vehicle) = firetruk
if is_control_pressed(player_control, input_veh_attack)
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endif
endif
if get_player_wanted_level(player_id()) > 0
//apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
endif
if IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-231.798, -2041.398, 26.361>>, <<-260.114, -2021.864, 34.161>>, 39.2)
or is_explosion_in_angled_area(EXP_TAG_DONTCARE, <<-252.133, -2011.385, 29.146>>, <<-269.892, -2032.251, 32.146 >>, 16.50)
make_ambient_peds_flee()
apply_fail_wanted_level = true
mission_failed_text = "family4_fail_11"
return true
endif
break
case play_stadium_mocap
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_trevor])) > 200.00)
mission_failed_text = "family4_fail_10"
return true
endif
endif
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 200.00)
mission_failed_text = "family4_fail_9"
return true
endif
endif
if (get_distance_between_coords(get_entity_coords(player_ped_id()), <<-243.6647, -2001.4718, 24.7756>>) > 200.00)
mission_failed_text = "family4_fail_12"
return true
endif
break
case run_after_lazlow
//kill_ped_on_certain_damage(lazlow)
if mission_ped_injured(tracey.ped)
mission_failed_text = "family4_fail_2"
return true
endif
if mission_ped_injured(lazlow.ped)
mission_failed_text = "family4_fail_3"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
if mission_vehicle_injured(lazlows_car.veh)
mission_failed_text = "family4_fail_5"
return true
endif
if mission_vehicle_injured(truck.veh)
or mission_vehicle_injured(trailer.veh)
mission_failed_text = "family4_god_5"
return true
endif
if does_entity_exist(lazlows_car.veh)
if is_ped_sitting_in_vehicle(lazlow.ped, lazlows_car.veh)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
if is_ped_inside_interior(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>)
if not is_ped_in_specific_room(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>, "GtaMloRoom001")
mission_failed_text = "family4_fail_6"
return true
endif
endif
if get_time_position_in_recording(lazlows_car.veh) > 11000
if not is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
mission_failed_text = "family4_fail_6"
return true
endif
endif
endif
endif
endif
switch get_current_player_ped_enum()
case char_trevor
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 200.00)
mission_failed_text = "family4_fail_9"
return true
endif
break
endswitch
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 200.00)
mission_failed_text = "family4_fail_6"
return true
endif
if lk_timer(original_time, 60000)
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 150.00)
//INFORM_STAT_FAMILY_FOUR_LAZLOW_PROXIMITY_FAILED()
mission_failed_text = "family4_fail_6"
return true
endif
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 100.00)
mission_failed_text = "family4_fail_9"
return true
endif
endif
if does_entity_exist(truck.veh)
if is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 50.00)
mission_failed_text = "family4_fail_9"
return true
endif
endif
endif
break
case stadium_cutscene
if mission_ped_injured(lazlow.ped)
mission_failed_text = "family4_fail_3"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
// if mission_vehicle_injured(michaels_car.veh)
// mission_failed_text = "family4_fail_4"
// return true
// endif
if mission_vehicle_injured(lazlows_car.veh)
mission_failed_text = "family4_fail_5"
return true
endif
if mission_vehicle_injured(truck.veh)
or mission_vehicle_injured(trailer.veh)
mission_failed_text = "family4_god_5"
return true
endif
break
case uber_chase
if mission_ped_injured(lazlow.ped)
if not is_entity_dead(lazlows_car.veh)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
stop_playback_recorded_vehicle(lazlows_car.veh)
endif
endif
mission_failed_text = "family4_fail_3"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_vehicle_injured(lazlows_car.veh)
mission_failed_text = "family4_fail_3"
add_explosion(get_entity_coords(lazlows_car.veh, false), exp_tag_grenade, 2.0)
return true
endif
if mission_vehicle_injured(truck.veh)
or mission_vehicle_injured(trailer.veh)
mission_failed_text = "family4_god_5"
return true
endif
if is_vehicle_stuck_every_check(truck.veh)
mission_failed_text = "family4_god_4"
return true
endif
//
// //failed to be in a position to trigger a train crash cutscene
// if train_crash_cutscene_fail
// mission_failed_text = "family4_fail_6"
// script_assert("test 0")
// return true
// endif
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_michael])) > 200.00)
if not is_entity_on_screen(selector_ped.pedID[selector_ped_michael])
//INFORM_STAT_FAMILY_FOUR_LAZLOW_PROXIMITY_FAILED()
mission_failed_text = "family4_fail_9"
return true
endif
endif
if not is_player_in_storm_drain()
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 250.00)
if not is_entity_on_screen(lazlow.ped)
//INFORM_STAT_FAMILY_FOUR_LAZLOW_PROXIMITY_FAILED()
mission_failed_text = "family4_fail_6"
return true
else
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 300.00
mission_failed_text = "family4_fail_6"
return true
endif
endif
endif
else
if (get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(lazlow.ped)) > 400.00)
mission_failed_text = "family4_fail_6"
return true
endif
endif
break
case storm_drain_cutscene
case play_final_mocap
if mission_ped_injured(lazlow.ped)
mission_failed_text = "family4_fail_3"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_vehicle_injured(lazlows_car.veh)
mission_failed_text = "family4_fail_3"
explode_vehicle(lazlows_car.veh)
return true
endif
if mission_vehicle_injured(truck.veh)
or mission_vehicle_injured(trailer.veh)
mission_failed_text = "family4_god_5"
return true
endif
break
case train_crash_cutscene_test_bed
if mission_vehicle_injured(truck.veh)
endif
if mission_vehicle_injured(trailer.veh)
endif
if mission_vehicle_injured(train[0].veh)
endif
if mission_vehicle_injured(lazlows_car.veh)
endif
if mission_ped_injured(lazlow.ped)
endif
break
case detach_trailer_cutscene_test_bed
if mission_ped_injured(lazlow.ped)
mission_failed_text = "family4_fail_3"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_michael])
mission_failed_text = "family4_fail_0"
return true
endif
if mission_ped_injured(selector_ped.pedID[selector_ped_trevor])
mission_failed_text = "family4_fail_1"
return true
endif
if mission_vehicle_injured(lazlows_car.veh)
mission_failed_text = "family4_fail_3"
explode_vehicle(lazlows_car.veh)
return true
endif
if mission_vehicle_injured(truck.veh)
or mission_vehicle_injured(trailer.veh)
mission_failed_text = "family4_god_5"
return true
endif
break
endswitch
return false
endfunc
proc remove_all_blips()
if does_blip_exist(lazlow.blip)
remove_blip(lazlow.blip)
endif
endproc
proc setup_mission_fail()
if apply_fail_wanted_level
set_player_wanted_level(player_id(), 1)
set_player_wanted_level_now(player_id())
fail_time = get_game_timer()
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
remove_all_blips()
MISSION_FLOW_MISSION_FAILED_WITH_REASON(mission_failed_text)
trigger_music_event("FAM4_MISSION_FAIL")
stop_mission_fail_checks = true
cached_mission_flow = mission_flow
mission_flow = mission_failed_stage
endproc
proc skip_system()
#IF IS_DEBUG_BUILD
DONT_DO_J_SKIP(locates_data)
if is_keyboard_key_just_pressed(key_j)
switch mission_flow
case intro_mocap
if is_cutscene_playing()
stop_cutscene()
endif
break
case get_to_the_stadium
if not is_cutscene_playing()
switch get_to_the_stadium_skip_status
case 0
switch get_current_player_ped_enum()
case char_michael
if does_entity_exist(michaels_car.veh)
and is_vehicle_driveable(michaels_car.veh)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), michaels_car.veh)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_trevor])
set_ped_into_vehicle(selector_ped.pedID[selector_ped_trevor], michaels_car.veh, vs_front_right)
set_entity_coords(michaels_car.veh, <<-219.2400, -2037.6470, 27.0>>)
set_entity_heading(michaels_car.veh, 57.2397)//90.00)
else
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-219.24, -2037.64, 27.0>>)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_trevor])
set_entity_coords(selector_ped.pedID[selector_ped_trevor], <<-219.24, -2037.94, 27.0>>)
endif
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
get_to_the_stadium_dialogue_system_status = 4
load_scene(<<-219.2400, -2037.6470, 27.0>>)
original_time = get_game_timer()
while not lk_timer(original_time, 1000)
wait(0)
endwhile
is_ped_injured(selector_ped.pedID[selector_ped_trevor])
get_to_the_stadium_skip_status++
break
case char_trevor
if does_entity_exist(michaels_car.veh)
and is_vehicle_driveable(michaels_car.veh)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), michaels_car.veh)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
set_ped_into_vehicle(selector_ped.pedID[selector_ped_michael], michaels_car.veh, vs_front_right)
set_entity_coords(michaels_car.veh, <<-219.2400, -2037.6470, 27.0>>)
else
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-219.24, -2037.64, 27.0>>)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
set_entity_coords(selector_ped.pedID[selector_ped_michael], <<-219.24, -2037.94, 27.0>>)
endif
load_scene(<<-219.2400, -2037.6470, 27.0>>)
original_time = get_game_timer()
while not lk_timer(original_time, 1000)
wait(0)
endwhile
is_ped_injured(selector_ped.pedID[selector_ped_michael])
get_to_the_stadium_skip_status++
break
endswitch
break
case 1
switch get_current_player_ped_enum()
case char_michael
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-253.20, -2028.19, 28.95>>)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_trevor])
set_entity_coords(selector_ped.pedID[selector_ped_trevor], <<-254.20, -2029.51, 28.95>>)
get_to_the_stadium_skip_status++
break
case char_trevor
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-253.20, -2028.19, 28.95>>)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
set_entity_coords(selector_ped.pedID[selector_ped_michael], <<-254.20, -2029.51, 28.95>>)
get_to_the_stadium_skip_status++
break
endswitch
break
endswitch
else
stop_cutscene()
endif
break
case play_stadium_mocap
switch get_to_the_audition_room_skip_status
case 0
set_entity_coords(player_ped_id(), <<-243.3, -1999.9, 25.6>>)
if is_cutscene_playing()
stop_cutscene()
endif
get_to_the_audition_room_skip_status++
break
case 1
if is_cutscene_playing()
stop_cutscene()
endif
break
endswitch
break
case run_after_lazlow
switch run_after_lazlo_skip_status
case 0
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-249.0080, -1998.2291, 26.7357>>)
run_after_lazlo_skip_status++
break
case 1
remove_all_mission_assets()
initialise_mission_variables()
load_trip_skip_2()
break
endswitch
break
case uber_chase
if is_playback_going_on_for_vehicle(truck.veh)
stop_playback_recorded_vehicle(truck.veh)
endif
if is_playback_going_on_for_vehicle(trailer.veh)
stop_playback_recorded_vehicle(trailer.veh)
endif
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), truck.veh)
clear_ped_tasks_immediately(selector_ped.pedID[selector_ped_michael])
set_ped_into_vehicle(selector_ped.pedID[selector_ped_michael], truck.veh, vs_front_right)
set_entity_coords(truck.veh, <<1056.5160, -295.4885, 49.3719>>)
set_entity_heading(truck.veh, 326.8398)
set_entity_coords(lazlows_car.veh, <<1063.57, -284.17, 50.6>>)
if is_playback_going_on_for_vehicle(lazlows_car.veh)
skip_time_in_playback_recorded_vehicle(lazlows_car.veh, -1000000)
skip_time_in_playback_recorded_vehicle(lazlows_car.veh, (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, "lkfamily4") - 2500))
force_playback_recorded_vehicle_update(lazlows_car.veh)
///if (get_time_position_in_recording(lazlows_car.veh) + 2000) > GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(001, "lkfamily4")
//stop_playback_recorded_vehicle(lazlows_car.veh)
//SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(lazlows_car.veh)
endif
cleanup_uber_playback(true)
break
case storm_drain_cutscene
if family_4_storm_drain_cutscene_status > 0
family_4_storm_drain_cutscene_status = 22
endif
break
case play_final_mocap
if is_cutscene_playing()
stop_cutscene()
endif
break
endswitch
elif is_keyboard_key_just_pressed(key_p)
switch mission_flow
case get_to_the_stadium
remove_all_mission_assets()
mission_flow = load_stage_selector_assets
launch_mission_stage_menu_status = 0
break
case play_stadium_mocap
case run_after_lazlow
remove_all_mission_assets()
mission_flow = load_stage_selector_assets
if (get_game_timer() - p_skip_time) > 3000
launch_mission_stage_menu_status = 1
else
launch_mission_stage_menu_status = 0
endif
p_skip_time = get_game_timer()
break
case uber_chase
remove_all_mission_assets()
mission_flow = load_stage_selector_assets
if (get_game_timer() - p_skip_time) > 3000
launch_mission_stage_menu_status = 2
else
launch_mission_stage_menu_status = 1
endif
p_skip_time = get_game_timer()
break
case play_final_mocap
remove_all_mission_assets()
mission_flow = load_stage_selector_assets
if (get_game_timer() - p_skip_time) > 3000
launch_mission_stage_menu_status = 3
else
launch_mission_stage_menu_status = 2
endif
p_skip_time = get_game_timer()
break
endswitch
endif
if LAUNCH_MISSION_STAGE_MENU(menu_stage_selector, menu_return_stage)
remove_all_mission_assets()
launch_mission_stage_menu_status = menu_return_stage
mission_flow = load_stage_selector_assets
endif
#endif
endproc
proc truck_driver_ai_system_2()
if does_entity_exist(parked_truck[0].veh)
and does_entity_exist(parked_trailer[0].veh)
and does_entity_exist(parked_truck[0].veh)
switch truck_driver_ai_system_2_status
case 0
if not is_entity_dead(parked_truck[0].veh) and not is_entity_dead(parked_trailer[0].veh)
if is_entity_in_angled_area(player_ped_id(), <<-140.858, -2011.314, 20.385>>, <<-170.442, -2007.734, 27.185>>, 90.00)
or is_entity_in_angled_area(player_ped_id(), <<-175.828, -2039.052, 26.621>>, <<-276.227, -1989.866, 35.621>>, 195.700)
//or get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(parked_truck[0].veh), false) < 15
start_playback_recorded_vehicle(parked_truck[0].veh, 501, "lkfamily4")
start_playback_recorded_vehicle(parked_trailer[0].veh, 502, "lkfamily4")
truck_driver_ai_system_2_status++
endif
endif
break
case 1
if is_vehicle_driveable(parked_truck[0].veh)
if not is_playback_going_on_for_vehicle(parked_truck[0].veh)
set_vehicle_engine_on(parked_truck[0].veh, false, true)
truck_driver_ai_system_2_status++
endif
endif
break
case 2
break
endswitch
else
if get_distance_between_coords(get_entity_coords(player_ped_id()), truck.pos) < 550.00
request_model(parked_truck[0].model)
set_vehicle_model_is_suppressed(parked_truck[0].model, true)
request_model(parked_trailer[0].model)
set_vehicle_model_is_suppressed(parked_trailer[0].model, true)
request_model(truck_driver.model)
request_vehicle_recording(501, "lkfamily4")
request_vehicle_recording(502, "lkfamily4")
if has_model_loaded(parked_truck[0].model)
and has_model_loaded(parked_trailer[0].model)
and has_model_loaded(truck_driver.model)
and has_vehicle_recording_been_loaded(501, "lkfamily4")
and has_vehicle_recording_been_loaded(502, "lkfamily4")
parked_truck[0].veh = create_vehicle(parked_truck[0].model, parked_truck[0].pos, parked_truck[0].heading)
set_vehicle_doors_locked(parked_truck[0].veh, vehiclelock_locked)
set_vehicle_colours(parked_truck[0].veh, (10 * 0), 0)
parked_trailer[0].veh = create_vehicle(parked_trailer[0].model, parked_trailer[0].pos, parked_trailer[0].heading)
attach_vehicle_to_trailer(parked_truck[0].veh, parked_trailer[0].veh)
truck_driver.ped = create_ped_inside_vehicle(parked_truck[0].veh, pedtype_mission, truck_driver.model)
set_model_as_no_longer_needed(truck_driver.model)
set_blocking_of_non_temporary_events(truck_driver.ped, true)
// freeze_entity_position(parked_truck[0].veh, true)
// freeze_entity_position(parked_trailer[0].veh, true)
endif
endif
endif
endproc
//PURPOSE: trevor will walk into the stadium but if the player decides to run override his move blend to run
proc force_buddy_to_run_into_stadium(ped_index &mission_ped)
if not force_buddy_to_run
if is_ped_on_foot(player_ped_id())
float moveSpeed = GET_PED_DESIRED_MOVE_BLEND_RATIO(player_ped_id())
if is_move_blend_ratio_running(moveSpeed)
or is_move_blend_ratio_sprinting(moveSpeed)
SET_PED_DESIRED_MOVE_BLEND_RATIO(mission_ped, 2.0)
force_buddy_to_run = true
endif
endif
else
SET_PED_DESIRED_MOVE_BLEND_RATIO(mission_ped, 2.0)
endif
endproc
proc request_mocap_data_for_family_4_mcs_2()
mocap_streaming_system(<<-252.6443, -2022.6317, 29.1457>>, DEFAULT_CUTSCENE_LOAD_DIST, DEFAULT_CUTSCENE_UNLOAD_DIST, "family_4_mcs_2")
//set lazlows clothes
//SET_CUTSCENE_PED_COMPONENT_VARIATION(
endproc
proc head_track_system()
switch get_current_Player_ped_enum()
case char_michael
if is_ped_in_front_of_ped(player_ped_id(), selector_ped.pedID[selector_ped_trevor])
if not is_ped_sitting_in_any_vehicle(player_ped_id())
vector offset_pos
offset_pos = get_offset_from_entity_given_world_coords(player_ped_id(), get_entity_coords(selector_ped.pedID[selector_ped_trevor]))
if offset_pos.y < 2.0
if get_script_task_status(player_Ped_id(), SCRIPT_TASK_LOOK_AT_ENTITY) > performing_task
task_clear_look_at(player_Ped_id())
endif
endif
endif
endif
break
case char_trevor
if is_ped_in_front_of_ped(player_ped_id(), selector_ped.pedID[selector_ped_trevor])
if get_script_task_status(player_Ped_id(), SCRIPT_TASK_LOOK_AT_ENTITY) > performing_task
task_clear_look_at(player_Ped_id())
endif
endif
break
endswitch
endproc
proc get_to_stadium_audio_scene_system()
switch get_to_stadium_audio_scene_system_status
case 0
if is_ped_sitting_in_any_vehicle(player_ped_id())
start_AUDIO_SCENE("FAMILY_4_DRIVE_TO_STADIUM")
get_to_stadium_audio_scene_system_status++
endif
break
case 1
if IS_AUDIO_SCENE_ACTIVE("FAMILY_4_DRIVE_TO_STADIUM")
if (is_ped_on_foot(player_ped_id()) and get_to_the_stadium_status > 0)
or is_entity_in_angled_area(player_ped_id(), <<-248.824, -2021.740, 28.944>>, <<-258.934, -2033.879, 31.958>>, 4.5)
STOP_AUDIO_SCENE("FAMILY_4_DRIVE_TO_STADIUM")
get_to_stadium_audio_scene_system_status++
endif
endif
break
endswitch
endproc
proc wanted_level_multiplier_system()
if get_distance_between_coords(get_entity_coords(player_ped_id()), <<-219.5123, -2037.8512, 26.9>>, false) < 100
set_wanted_level_multiplier(0.3)
else
set_wanted_level_multiplier(0.5)
endif
endproc
func float calculate_angled_area_width_for_vehicle_slow_down()
float min_distance = 0.5
float max_distance = 6.7
float min_velocity = 3.0
float max_velocity = 12.0
float current_velocity
float area_scale_multiplier
float area_width
vehicle_index players_car
if get_current_player_vehicle(players_car)
current_velocity = get_entity_speed(players_car)
if current_velocity < 3.0
current_velocity = 3.0
endif
area_scale_multiplier = (current_velocity - min_velocity) / (max_velocity - min_velocity)
area_width = min_distance + ((max_distance - min_distance) * area_scale_multiplier)
return area_width
endif
return 6.7
endfunc
proc family_4_get_to_the_stadium()
get_to_the_stadium_dialogue_system()
create_vehicles_outside_stadium()
groupie_ai_system()
truck_driver_ai_system_2()
ambient_ped_system()
get_to_stadium_audio_scene_system()
taxi_drop_off_for_get_to_the_stadium()
//wanted_level_multiplier_system()
//SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 3000, 53.6080)
//clear_players_task_on_control_input(SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD)
switch get_to_the_stadium_status
case 0
request_mocap_data_for_family_4_mcs_2()
float angled_area_width
angled_area_width = calculate_angled_area_width_for_vehicle_slow_down()
switch get_current_player_ped_enum()
case char_michael
IS_PLAYER_AT_LOCATION_WITH_BUDDY_any_means(locates_data, <<-219.5123, -2037.8512, 26.9>>, <<0.01, 0.01, LOCATE_SIZE_HEIGHT>>, true, selector_ped.pedID[selector_ped_trevor], "family4_god_0", "family4_god_8", true, true)
if does_blip_exist(locates_data.LocationBlip)
if is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, angled_area_width)
or (IS_PED_IN_ANY_HELI(player_ped_id()) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 6.7))
or (is_ped_in_any_vehicle(player_ped_id()) and is_ped_within_range_of_target_heading(player_ped_id(), 328.7722, 15.00) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 2.0)) //fix for bug 1833723
or (is_ped_in_any_vehicle(player_ped_id()) and is_ped_within_range_of_target_heading(player_ped_id(), 148.7722, 15.00) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 2.0))
if get_current_player_vehicle(players_vehicle)
if IS_VEHICLE_ON_ALL_WHEELS(players_vehicle)
kill_any_conversation()
get_to_the_stadium_dialogue_system_status = 5
clear_mission_locate_stuff(locates_data, true)
original_time = 0
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_vehicle)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
get_to_the_stadium_status++
endif
else
kill_any_conversation()
get_to_the_stadium_dialogue_system_status = 5
clear_mission_locate_stuff(locates_data, true)
original_time = 0
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
get_to_the_stadium_status = 2
endif
endif
endif
break
case char_trevor
IS_PLAYER_AT_LOCATION_WITH_BUDDY_any_means(locates_data, <<-219.5123, -2037.8512, 26.9>>, <<0.01, 0.01, LOCATE_SIZE_HEIGHT>>, true, selector_ped.pedID[selector_ped_michael], "family4_god_0", "family4_god_14", true, true)
if does_blip_exist(locates_data.LocationBlip)
//if is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, angled_area_width)
if is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, angled_area_width)
or (IS_PED_IN_ANY_HELI(player_ped_id()) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 6.7))
or (is_ped_in_any_vehicle(player_ped_id()) and is_ped_within_range_of_target_heading(player_ped_id(), 328.7722, 15.00) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 2.0))
or (is_ped_in_any_vehicle(player_ped_id()) and is_ped_within_range_of_target_heading(player_ped_id(), 148.7722, 15.00) and is_entity_in_angled_area(player_ped_id(), <<-221.051, -2039.714, 26.620>>, <<-217.358, -2033.186, 29.620>>, 2.0))
// if get_current_player_vehicle(players_vehicle)
//
// if IS_VEHICLE_ON_ALL_WHEELS(players_vehicle)
//
// clear_ped_tasks(selector_ped.pedID[selector_ped_michael])
// set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
//
// clear_mission_locate_stuff(locates_data, false)
//
// kill_any_conversation()
// get_to_the_stadium_dialogue_system_status = 5
// //get_to_the_stadium_dialogue_system()
//
// BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_vehicle)//5
//
// if does_entity_exist(groopie.ped)
// task_look_at_entity(player_ped_id(), groopie.ped, 8000, slf_while_not_in_fov)
// endif
//
// SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
//
// get_to_the_stadium_status++
//
// endif
//
// else
//
// clear_ped_tasks(selector_ped.pedID[selector_ped_michael])
// set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
//
// clear_mission_locate_stuff(locates_data, false)
//
// kill_any_conversation()
// get_to_the_stadium_dialogue_system_status = 5
// //get_to_the_stadium_dialogue_system()
//
// if does_entity_exist(groopie.ped)
// task_look_at_entity(player_ped_id(), groopie.ped, 8000, slf_while_not_in_fov)
// endif
//
// SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
//
// get_to_the_stadium_status++
//
// endif
clear_ped_tasks(selector_ped.pedID[selector_ped_michael])
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
clear_mission_locate_stuff(locates_data, false)
kill_any_conversation()
get_to_the_stadium_dialogue_system_status = 5
//get_to_the_stadium_dialogue_system()
if get_current_player_vehicle(players_vehicle)
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_vehicle)//5
endif
//task_leave_vehicle(player_ped_id(), players_vehicle)
if does_entity_exist(groopie.ped)
task_look_at_entity(player_ped_id(), groopie.ped, 8000, slf_while_not_in_fov)
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
get_to_the_stadium_status++
endif
endif
break
endswitch
//fix for the player by passing the parked car section and entering the stadium
if is_entity_in_angled_area(player_ped_id(), <<-248.824, -2021.740, 28.944>>, <<-258.934, -2033.879, 31.958>>, 4.5) //3.3
or is_ped_inside_interior(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>)
//if has_cutscene_loaded()
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
if start_new_cutscene_no_fade(false, true, true, true)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "outside stadium")
mission_flow = play_stadium_mocap
endif
endif
endif
break
case 1
if get_current_player_vehicle(players_vehicle)
if BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_vehicle)
switch get_current_player_ped_enum()
case char_michael
if not is_ped_injured(selector_ped.pedID[selector_ped_trevor])
clear_ped_tasks(selector_ped.pedID[selector_ped_trevor])
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_trevor], true)
//is trevor is in the right has side of box go to the right to avoid the groopie
//then walk to the else walk to the left
//if is_entity_in_angled_area(selector_ped.pedID[selector_ped_trevor], <<-219.975, -2037.298, 26.620>>, <<-217.207, -2032.201, 29.620>>)
if does_entity_exist(groopie.ped)
task_look_at_entity(selector_ped.pedID[selector_ped_trevor], groopie.ped, 8000, slf_while_not_in_fov)
endif
open_sequence_task(seq)
task_pause(null, 500)
task_leave_vehicle(null, players_vehicle)
task_follow_nav_mesh_to_coord(null, <<-253.7119, -2028.4642, 28.9458>>, pedmove_walk, -1, -1)
task_turn_ped_to_face_entity(null, player_ped_id(), -1)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_trevor], seq)
clear_sequence_task(seq)
endif
task_look_at_entity(player_ped_id(), selector_ped.pedID[selector_ped_trevor], 8000)
task_leave_vehicle(player_ped_id(), players_vehicle)
break
endswitch
get_to_the_stadium_status++
endif
else
get_to_the_stadium_status++
endif
break
case 2
request_anim_dict("missfam4")
request_mocap_data_for_family_4_mcs_2()
switch get_current_player_ped_enum()
case char_michael
force_buddy_to_run_into_stadium(selector_ped.pedID[selector_ped_trevor])
is_player_at_location_on_foot(locates_data, <<-255.13390, -2026.67908, 28.9458>>, <<0.01, 0.01, LOCATE_SIZE_HEIGHT>>, true, "", true, true, radar_trace_invalid, false)
if not is_entity_at_coord(selector_ped.pedID[selector_ped_trevor], <<-253.7119, -2028.4642, 28.9458>>, <<1.5, 1.5, 2.0>>)
if has_ped_task_finished_2(selector_ped.pedID[selector_ped_trevor])
open_sequence_task(seq)
task_follow_nav_mesh_to_coord(null, <<-253.7119, -2028.4642, 28.9458>>, pedmove_run, -1, -1)
task_turn_ped_to_face_entity(null, player_ped_id())
task_look_at_entity(null, player_ped_id(), -1)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_trevor], seq)
clear_sequence_task(seq)
endif
else
if get_distance_between_coords(get_entity_coords(selector_ped.pedID[selector_ped_trevor]), get_entity_coords(player_ped_id())) > 2
if is_ped_facing_ped(selector_ped.pedID[selector_ped_trevor], player_ped_id(), 20)
if has_anim_dict_loaded("missfam4")
if lk_timer(original_time, 8000)
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(selector_ped.pedID[selector_ped_trevor])) < 40.00
create_conversation(scripted_speech, "fam4Aud", "FAM4_LAG", conv_priority_low)
endif
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
task_play_anim(null, "missfam4", "say_hurry_up_a_trevor", slow_blend_in)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_trevor], seq)
clear_sequence_task(seq)
original_time = get_game_timer()
endif
endif
else
if has_ped_task_finished_2(selector_ped.pedID[selector_ped_trevor])
open_sequence_task(seq)
task_turn_ped_to_face_entity(null, player_ped_id())
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_trevor], seq)
clear_sequence_task(seq)
endif
endif
endif
endif
break
case char_trevor
IS_PLAYER_AT_LOCATION_WITH_BUDDY_ON_FOOT(locates_data, <<-255.13390, -2026.67908, 28.9458>>, <<0.01, 0.01, LOCATE_SIZE_HEIGHT>>, true, selector_ped.pedID[selector_ped_michael], "", "family4_god_14", true, true)
break
endswitch
head_track_system()
if does_blip_exist(locates_data.LocationBlip)
if is_entity_in_angled_area(player_ped_id(), <<-248.824, -2021.740, 28.944>>, <<-258.934, -2033.879, 31.958>>, 7.0) //4.5
or is_ped_inside_interior(player_ped_id(), <<-249.8176, -2008.0590, 29.1458>>)
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
if start_new_cutscene_no_fade(false, true, true, true)
mission_flow = play_stadium_mocap
endif
endif
endif
endif
break
endswitch
//truck_and_trailer_recording_system()
//mission_flow = storm_drain_cutscene //debug to skip to the cutscene
endproc
func bool family_4_play_stadium_mocap()
int i = 0
ambient_ped_system()
printstring("get_cutscene_time() = ")
printint(get_cutscene_time())
printnl()
switch family_4_play_stadium_mocap_status
case 0
if is_players_last_car_present()
player_arrived_in_a_vehicle = true
endif
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "lazlow", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, lazlow.model)
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Tracy", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, tracey.model)
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "judges_security", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, security.model)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 0.0, REPLAY_IMPORTANCE_HIGHEST)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
switch get_current_player_ped_enum()
case char_michael
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_trevor], true)
register_entity_for_cutscene(selector_ped.pedID[selector_ped_trevor], "trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
trigger_switch_effect_to_trevor = true
START_CUTSCENE(CUTSCENE_PLAYER_FP_FLASH_TREVOR)
break
case char_trevor
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
register_entity_for_cutscene(selector_ped.pedID[selector_ped_michael], "michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE()
break
endswitch
family_4_play_stadium_mocap_status++
break
case 1
if is_cutscene_playing()
clear_area(<<-228.2306, -2047.4192, 26.6199>>, 1000.00, true)
SET_VEHICLE_POPULATION_BUDGET(0)
//delete the players car as it has been towed. When they chase lazlow out of the stadium
// players_vehicle = get_players_last_vehicle()
//
// if does_entity_exist(players_vehicle)
// if not IS_VEHICLE_IN_PLAYERS_GARAGE(players_vehicle, GET_CURRENT_PLAYER_PED_ENUM(), TRUE)
// delete_vehicle(players_vehicle)
// endif
// endif
remove_anim_dict("missfam4")
if does_entity_exist(lazlows_car.veh)
delete_vehicle(lazlows_car.veh)
set_model_as_no_longer_needed(lazlows_car.model)
endif
if does_entity_exist(truck.veh)
delete_vehicle(truck.veh)
set_model_as_no_longer_needed(truck.model)
endif
if does_entity_exist(trailer.veh)
delete_vehicle(trailer.veh)
endif
set_model_as_no_longer_needed(trailer.model)
for i = 0 to count_of(parked_truck) - 1
if does_entity_exist(parked_truck[i].veh)
delete_vehicle(parked_truck[i].veh)
set_model_as_no_longer_needed(parked_truck[i].model)
endif
if does_entity_exist(parked_trailer[i].veh)
delete_vehicle(parked_trailer[i].veh)
endif
set_model_as_no_longer_needed(parked_trailer[i].model)
endfor
if does_entity_exist(truck_driver.ped)
delete_ped(truck_driver.ped)
endif
if does_entity_exist(ambient_car)
delete_vehicle(ambient_car)
endif
if does_entity_exist(ambient_car_2)
delete_vehicle(ambient_car_2)
endif
if does_entity_exist(ambient_car_3)
delete_vehicle(ambient_car_3)
endif
if does_entity_exist(ambient_car_4)
delete_vehicle(ambient_car_4)
endif
if does_entity_exist(ambient_car_5)
delete_vehicle(ambient_car_5)
endif
set_model_as_no_longer_needed(sentinel)
set_model_as_no_longer_needed(schafter2)
if does_entity_exist(clip_board.obj)
set_model_as_no_longer_needed(clip_board.model)
delete_object(clip_board.obj)
endif
if does_entity_exist(groopie.ped)
delete_ped(groopie.ped)
set_model_as_no_longer_needed(groopie.model)
endif
// for i = 0 to count_of(ambient_ped) - 1
// if does_entity_exist(ambient_ped[i].ped)
// delete_ped(ambient_ped[i].ped)
// endif
// set_model_as_no_longer_needed(ambient_ped[i].model)
// ambient_ped[i].created = false
// endfor
remove_vehicle_recording(501, "lkfamily4")
remove_vehicle_recording(502, "lkfamily4")
//set_state_of_closest_door_of_type(v_62_aud_door02, <<-242.6, -2005.5, 24.8>>, false, 0.0)
//set_state_of_closest_door_of_type(v_62_aud_door01, <<-243.1, -2007.8, 24.8>>, false, 0.0)
clear_mission_locate_stuff(locates_data, true)
for i = 8 to 25
if not is_ped_injured(ambient_ped[i].ped)
task_look_at_coord(ambient_ped[i].ped, <<-249.6, -2016.1, 30.8>>, 15000, slf_while_not_in_fov)
endif
endfor
family_4_play_stadium_mocap_status++
endif
break
case 2
if is_cutscene_active()
if not WAS_CUTSCENE_SKIPPED()
if get_cutscene_time() >= 40000
load_stadium_assets()
endif
if not has_label_been_triggered("FAM4_MISSION_START")
if get_cutscene_time() >= 125366
trigger_music_event("FAM4_MISSION_START")
set_label_as_triggered("FAM4_MISSION_START", true)
endif
endif
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow", lazlow.model))
lazlow.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow", lazlow.model))
ENDIF
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tracy", tracey.model))
tracey.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tracy", tracey.model))
ENDIF
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("judges_security", security.model))
security.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("judges_security", security.model))
ENDIF
switch get_current_player_ped_enum()
case char_michael
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
set_entity_coords(player_ped_id(), <<-240.5416, -2006.2936, 23.6856>>)
set_entity_heading(player_ped_id(), 85.0646)
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 8, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(player_ped_id(), MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(player_ped_id())
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor))
make_selector_ped_selection(selector_ped, SELECTOR_PED_trevor)
take_control_of_selector_ped(selector_ped, true, true)
set_entity_coords(player_ped_id(), <<-238.8316, -2005.5457, 23.6855>>)//<<-239.1158, -2005.1418, 23.6855>>)
set_entity_heading(player_ped_id(), 103.8542) //122.00
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 5, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS, 13)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(player_ped_id(), MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(player_ped_id())
endif
break
case char_trevor
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
set_entity_coords(selector_ped.pedID[selector_ped_michael], <<-240.5416, -2006.2936, 23.6856>>)
set_entity_heading(selector_ped.pedID[selector_ped_michael], 85.0646)
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 8, EWAYPOINT_START_FROM_CLOSEST_POINT| EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(selector_ped.pedID[selector_ped_michael], MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor))
set_entity_coords(player_ped_id(), <<-238.8316, -2005.5457, 23.6855>>)//<<-239.1158, -2005.1418, 23.6855>>)
set_entity_heading(player_ped_id(), 103.8542) //122.00
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 5, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS , 13)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(player_ped_id(), MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(player_ped_id())
endif
break
endswitch
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("lazlow", lazlow.model)
if not is_ped_injured(lazlow.ped)
//create_npc_ped_on_foot(lazlow.ped, CHAR_LAZLOW, lazlow.pos, lazlow.heading, false)
set_entity_coords(lazlow.ped, lazlow.pos)
set_entity_heading(lazlow.ped, lazlow.heading)
setup_buddy_attributes(lazlow.ped)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
lazlow.blip = create_blip_for_ped(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
FORCE_ROOM_FOR_ENTITY(lazlow.ped, get_interior_at_coords_with_type(<<-239.1158, -2005.1418, 23.6855>>, "v_stadium"), get_hash_key("GtaMloRoom001"))
endif
endif
// if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("tracy", tracey.model)
// if not is_ped_injured(tracey.ped)
// setup_buddy_attributes(tracey.ped)
// setup_relationship_contact(tracey.ped, true)
// set_ped_can_ragdoll(tracey.ped, true)
// add_ped_for_dialogue(scripted_speech, 4, tracey.ped, "tracey")
// endif
// endif
if can_set_exit_state_for_registered_entity("judges_security", security.model)
if not is_ped_injured(security.ped)
set_entity_health(security.ped, 2)
set_ped_as_no_longer_needed(security.ped)
set_model_as_no_longer_needed(security.model)
endif
endif
// if CAN_SET_EXIT_STATE_FOR_CAMERA()
// set_gameplay_cam_relative_heading(0)
// set_gameplay_cam_relative_pitch(0)
// endif
else
SET_CUTSCENE_FADE_VALUES(false, false, true)
family_4_play_stadium_mocap_status++
endif
else
if has_stadium_assets_loaded()
original_time = get_game_timer()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
create_stadium_assets()
REPLAY_STOP_EVENT()
return true
endif
endif
break
case 3
if is_cutscene_active()
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow", lazlow.model))
lazlow.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow", lazlow.model))
ENDIF
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tracy", tracey.model))
tracey.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tracy", tracey.model))
ENDIF
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("judges_security", security.model))
security.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("judges_security", security.model))
ENDIF
if can_set_exit_state_for_registered_entity("judges_security", security.model)
if not is_ped_injured(security.ped)
set_entity_health(security.ped, 2)
set_ped_as_no_longer_needed(security.ped)
set_model_as_no_longer_needed(security.model)
endif
endif
//can't do exit state for michael and trevor in here because new load scene needs to be called
//hard coding it in the no is_cutscene_active() state.
else
load_stadium_assets()
NEW_LOAD_SCENE_START(<<-239.1602, -2002.6151, 23.6856>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 145.8395>>), 3.0)
while not has_stadium_assets_loaded()
or not IS_NEW_LOAD_SCENE_LOADED()
//or not is_cutscene_active()
if not has_stadium_assets_loaded()
printstring("waiting on stadium_assets to load")
printnl()
endif
if not IS_NEW_LOAD_SCENE_LOADED()
printstring("waiting on new load scene")
printnl()
endif
wait(0)
endwhile
NEW_LOAD_SCENE_STOP()
if get_current_player_ped_enum() != char_trevor
make_selector_ped_selection(selector_ped, SELECTOR_PED_trevor)
take_control_of_selector_ped(selector_ped, true, true)
endif
set_entity_coords(player_ped_id(), <<-238.8316, -2005.5457, 23.6855>>)//<<-239.1158, -2005.1418, 23.6855>>)
set_entity_heading(player_ped_id(), 103.8542) //122.00
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 5, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS, 13)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(player_ped_id(), seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(player_ped_id(), MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(player_ped_id())
if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
set_entity_coords(selector_ped.pedID[selector_ped_michael], <<-240.5416, -2006.2936, 23.6856>>)
set_entity_heading(selector_ped.pedID[selector_ped_michael], 85.0646)
open_sequence_task(seq)
TASK_FOLLOW_WAYPOINT_RECORDING(null, "family4_1", 8, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_BACK_TO_WAYPOINT_IF_LEFT_ROUTE | EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)//, EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
close_sequence_task(seq)
task_perform_sequence(selector_ped.pedID[selector_ped_michael], seq)
clear_sequence_task(seq)
FORCE_ped_MOTION_STATE(selector_ped.pedID[selector_ped_michael], MS_ON_FOOT_RUN)
force_ped_ai_and_animation_update(selector_ped.pedID[selector_ped_michael])
endif
if not is_ped_injured(lazlow.ped)
//create_npc_ped_on_foot(lazlow.ped, CHAR_LAZLOW, lazlow.pos, lazlow.heading, false)
set_entity_coords(lazlow.ped, lazlow.pos)
set_entity_heading(lazlow.ped, lazlow.heading)
setup_buddy_attributes(lazlow.ped)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
lazlow.blip = create_blip_for_ped(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
endif
original_time = get_game_timer()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
create_stadium_assets()
if not is_ped_injured(security.ped)
set_entity_health(security.ped, 2)
set_ped_as_no_longer_needed(security.ped)
set_model_as_no_longer_needed(security.model)
endif
REPLAY_STOP_EVENT()
return true
endif
break
endswitch
return false
endfunc
vehicle_index dummy_lazlow_car
proc family_4_record_lazlow()
int i = 0
#IF IS_DEBUG_BUILD
if widget_reset_recording
family_4_record_lazlow_status = 0
widget_reset_recording = false
endif
#ENDIF
switch family_4_record_lazlow_status
case 0
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
load_mission_vehicle_recordings()
if has_model_loaded(lazlows_car.model)
and has_model_loaded(sentinel)
and has_model_loaded(schafter2)
and has_model_loaded(manana)
and has_mission_vehicle_recordings_loaded()
set_vehicle_population_budget(0)
if not does_entity_exist(lazlows_car.veh)
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
set_entity_collision(lazlows_car.veh, false)
set_entity_visible(lazlows_car.veh, false)
lazlows_Car.blip = create_blip_for_entity(lazlows_car.veh)
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
//load_uber_data()
bCreateAllWaitingCars = true
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
endif
if is_vehicle_driveable(lazlows_car.veh)
set_vehicle_fixed(lazlows_car.veh)
endif
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
SET_PED_AS_NO_LONGER_NEEDED(selector_ped.pedID[selector_ped_michael])
set_model_as_no_longer_needed(michael.model)
endif
if does_entity_exist(truck.veh)
set_vehicle_as_no_longer_needed(truck.veh)
set_model_as_no_longer_needed(truck.model)
endif
if does_entity_exist(trailer.veh)
set_vehicle_as_no_longer_needed(trailer.veh)
set_model_as_no_longer_needed(trailer.model)
endif
for i = 0 to count_of(parked_truck) - 1
if does_entity_exist(parked_truck[i].veh)
set_vehicle_as_no_longer_needed(parked_truck[i].veh)
set_model_as_no_longer_needed(parked_truck[i].model)
endif
if does_entity_exist(parked_trailer[i].veh)
set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
set_model_as_no_longer_needed(parked_trailer[i].model)
endif
endfor
if not does_entity_exist(dummy_lazlow_car)
dummy_lazlow_car = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_entity_proofs(dummy_lazlow_car, true, true, true, true, true)
set_vehicle_strong(dummy_lazlow_car, true)
SET_VEHICLE_HAS_STRONG_AXLES(dummy_lazlow_car, true)
set_vehicle_colours(dummy_lazlow_car, 12, 0)
MODIFY_VEHICLE_TOP_SPEED(dummy_lazlow_car, -20)
endif
if is_vehicle_driveable(dummy_lazlow_car)
set_entity_coords(dummy_lazlow_car, lazlows_car.pos)
set_entity_heading(dummy_lazlow_car, lazlows_car.heading)
set_vehicle_on_ground_properly(dummy_lazlow_car)
set_vehicle_fixed(dummy_lazlow_car)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), dummy_lazlow_car)
target_speed = -20
endif
//SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(true)
//DISPLAY_PLAYBACK_RECORDED_vehicle(lazlows_car.veh, RDM_WHOLELINE)
family_4_record_lazlow_status++
endif
break
case 1
printfloat(target_speed)
printnl()
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(true)
// DISPLAY_PLAYBACK_RECORDED_vehicle(lazlows_car.veh, RDM_WHOLELINE)
SET_TEXT_SCALE(0.0000, 1.5)
SET_TEXT_COLOUR(255, 255, 255, 255)
SET_TEXT_CENTRE(FALSE)
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
SET_TEXT_EDGE(0, 0, 0, 0, 0)
DISPLAY_TEXT_WITH_NUMBER(0.5, 0.2, "NUMBER", round(get_entity_speed(dummy_lazlow_car)))
if is_control_pressed(frontend_control, INPUT_SCRIPT_RDOWN)
if target_speed < 0
target_speed += get_frame_time() * 2.0
if target_speed >= 0
target_speed = 0
endif
MODIFY_VEHICLE_TOP_SPEED(dummy_lazlow_car, target_speed)
endif
else
if target_speed > -20
target_speed -= get_frame_time()
if target_speed <= -20
target_speed = -20
endif
MODIFY_VEHICLE_TOP_SPEED(dummy_lazlow_car, target_speed)
endif
endif
if not is_entity_dead(dummy_lazlow_car)
set_vehicle_strong(dummy_lazlow_car, true)
SET_VEHICLE_HAS_STRONG_AXLES(dummy_lazlow_car, true)
set_vehicle_fixed(dummy_lazlow_car)
set_entity_health(dummy_lazlow_car, 10000)
set_vehicle_petrol_tank_health(dummy_lazlow_car, 10000)
set_vehicle_engine_health(dummy_lazlow_car, 10000)
set_entity_proofs(dummy_lazlow_car, true, true, true, true, true)
endif
if is_vehicle_driveable(lazlows_car.veh)
set_vehicle_fixed(lazlows_car.veh)
update_uber_playback(lazlows_car.veh, 1.0)
switch_setpiece_car_to_ai_system()
create_parked_vehicles_system()
endif
break
case 2
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
load_mission_vehicle_recordings()
request_vehicle_recording(001, "lkfamily4b")
if has_model_loaded(lazlows_car.model)
and has_model_loaded(sentinel)
and has_model_loaded(schafter2)
and has_model_loaded(manana)
and has_mission_vehicle_recordings_loaded()
and has_vehicle_recording_been_loaded(001, "lkfamily4b")
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
set_entity_collision(lazlows_car.veh, false)
set_entity_visible(lazlows_car.veh, true)
lazlows_Car.blip = create_blip_for_entity(lazlows_car.veh)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4b")
dummy_lazlow_car = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_entity_proofs(dummy_lazlow_car, true, true, true, true, true)
set_vehicle_strong(dummy_lazlow_car, true)
SET_VEHICLE_HAS_STRONG_AXLES(dummy_lazlow_car, true)
set_vehicle_colours(dummy_lazlow_car, 12, 0)
MODIFY_VEHICLE_TOP_SPEED(dummy_lazlow_car, -25)
start_playback_recorded_vehicle(dummy_lazlow_car, 001, "lkfamily4")
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
SET_PED_AS_NO_LONGER_NEEDED(selector_ped.pedID[selector_ped_michael])
set_model_as_no_longer_needed(michael.model)
endif
if does_entity_exist(truck.veh)
set_vehicle_as_no_longer_needed(truck.veh)
set_model_as_no_longer_needed(truck.model)
endif
if does_entity_exist(trailer.veh)
set_vehicle_as_no_longer_needed(trailer.veh)
set_model_as_no_longer_needed(trailer.model)
endif
for i = 0 to count_of(parked_truck) - 1
if does_entity_exist(parked_truck[i].veh)
set_vehicle_as_no_longer_needed(parked_truck[i].veh)
set_model_as_no_longer_needed(parked_truck[i].model)
endif
if does_entity_exist(parked_trailer[i].veh)
set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
set_model_as_no_longer_needed(parked_trailer[i].model)
endif
endfor
if not does_entity_exist(dummy_lazlow_car)
dummy_lazlow_car = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_entity_proofs(dummy_lazlow_car, true, true, true, true, true)
set_vehicle_strong(dummy_lazlow_car, true)
SET_VEHICLE_HAS_STRONG_AXLES(dummy_lazlow_car, true)
set_vehicle_colours(dummy_lazlow_car, 12, 0)
MODIFY_VEHICLE_TOP_SPEED(dummy_lazlow_car, -25)
endif
if is_vehicle_driveable(dummy_lazlow_car)
set_entity_coords(dummy_lazlow_car, lazlows_car.pos)
set_entity_heading(dummy_lazlow_car, lazlows_car.heading)
set_vehicle_on_ground_properly(dummy_lazlow_car)
set_vehicle_fixed(dummy_lazlow_car)
clear_ped_tasks_immediately(player_ped_id())
set_ped_into_vehicle(player_ped_id(), dummy_lazlow_car)
endif
family_4_record_lazlow_status++
endif
break
case 3
#IF IS_DEBUG_BUILD
//old
SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(lazlows_car.veh, widget_time_a)
//new
SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(dummy_lazlow_car, widget_time_b)
#endif
break
case 4
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(sentinel)
request_model(schafter2)
request_model(manana)
load_mission_vehicle_recordings()
if has_model_loaded(lazlows_car.model)
and has_model_loaded(sentinel)
and has_model_loaded(schafter2)
and has_model_loaded(manana)
and has_mission_vehicle_recordings_loaded()
set_vehicle_population_budget(0)
if not does_entity_exist(lazlows_car.veh)
lazlows_car.veh = create_vehicle(lazlows_car.model, lazlows_car.pos, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_lockout_player_only)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
set_entity_collision(lazlows_car.veh, false)
set_entity_visible(lazlows_car.veh, true)
lazlows_Car.blip = create_blip_for_entity(lazlows_car.veh)
#IF IS_DEBUG_BUILD
set_uber_parent_widget_group(family_4_widget_group)
#endif
INITIALISE_UBER_PLAYBACK("lkfamily4", 001, true)
load_uber_data()
fUberPlaybackDensitySwitchOffRange = 200
bCreateAllWaitingCars = true
bPlayTrafficRecordingEvenIfPlayerIsAheadOfChase = true
allow_veh_to_stop_on_any_veh_impact = true
// bTrafficDontCleanupRecordingFiles = true
allow_trailer_touching_check = true
traffic_block_vehicle_colour(true, traffic_red, traffic_orange)
start_playback_recorded_vehicle(lazlows_car.veh, 001, "lkfamily4")
endif
if is_vehicle_driveable(lazlows_car.veh)
set_vehicle_fixed(lazlows_car.veh)
endif
if does_entity_exist(selector_ped.pedID[selector_ped_michael])
SET_PED_AS_NO_LONGER_NEEDED(selector_ped.pedID[selector_ped_michael])
set_model_as_no_longer_needed(michael.model)
endif
if does_entity_exist(truck.veh)
set_vehicle_as_no_longer_needed(truck.veh)
set_model_as_no_longer_needed(truck.model)
endif
if does_entity_exist(trailer.veh)
set_vehicle_as_no_longer_needed(trailer.veh)
set_model_as_no_longer_needed(trailer.model)
endif
for i = 0 to count_of(parked_truck) - 1
if does_entity_exist(parked_truck[i].veh)
set_vehicle_as_no_longer_needed(parked_truck[i].veh)
set_model_as_no_longer_needed(parked_truck[i].model)
endif
if does_entity_exist(parked_trailer[i].veh)
set_vehicle_as_no_longer_needed(parked_trailer[i].veh)
set_model_as_no_longer_needed(parked_trailer[i].model)
endif
endfor
clear_ped_tasks_immediately(player_ped_id())
set_entity_coords(player_ped_id(), <<-234.7623, -2046.0051, 26.7555>>)
set_entity_heading(player_ped_id(), 216.8192)
// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(true)
// DISPLAY_PLAYBACK_RECORDED_vehicle(lazlows_car.veh, RDM_WHOLELINE)
family_4_record_lazlow_status++
endif
break
case 5
#if is_debug_build
create_uber_vehicles_widget()
#endif
update_uber_playback(lazlows_car.veh, 1.0)
// switch_setpiece_car_to_ai_system()
//
// create_parked_vehicles_system()
break
endswitch
//draw_sphere(get_offset_from_entity_in_world_coords(lazlows_car.veh, <<0.00, 0.0, 0.0>>), 2.5)
endproc
proc family_4_deatch_trailer_cutscene_test_bed()
switch family_4_detach_trailer_status
case 0
request_vehicle_recording(001, "lkfamily4")
request_vehicle_recording(201, "lkfamily4")
request_vehicle_recording(202, "lkfamily4")
request_vehicle_recording(203, "lkfamily4")
request_vehicle_recording(204, "lkfamily4")
request_vehicle_recording(205, "lkfamily4")
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(premier)
request_model(sentinel)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
while not has_model_loaded(trailer.model)
or not has_model_loaded(truck.model)
or not has_model_loaded(premier)
or not has_model_loaded(sentinel)
or not has_model_loaded(lazlows_car.model)
or not has_vehicle_recording_been_loaded(001, "lkfamily4")
or not has_vehicle_recording_been_loaded(201, "lkfamily4")
or not has_vehicle_recording_been_loaded(202, "lkfamily4")
or not has_vehicle_recording_been_loaded(203, "lkfamily4")
or not has_vehicle_recording_been_loaded(204, "lkfamily4")
or not has_vehicle_recording_been_loaded(205, "lkfamily4")
//
wait(0)
endwhile
truck.veh = create_vehicle(truck.model, <<-57.6468, -547.7130, 39.0136>>, 341.9843)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 73, 0)
trailer.veh = create_vehicle(trailer.model, <<-47.6468, -547.7130, 39.0136>>, 341.9843)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//
set_ped_into_vehicle(player_ped_id(), truck.veh)
load_scene(<<-47.2755, -515.6834, 39.4660>>)
//hack fix for weird time delay via jumping to cutscene
original_time = get_game_timer()
while not lk_timer(original_time, 5000)
wait(0)
endwhile
family_4_detach_trailer_status++
break
case 1
detach_trailer_cutscene_system()
break
case 2
break
endswitch
endproc
proc load_final_mocap()
clear_area(<<1063.57, -284.17, 50.6>>, 200.00, true)
clear_player_wanted_level(player_id())
set_max_wanted_level(0)
set_create_random_cops(false)
DELETE_ALL_TRAINS()
SET_RANDOM_TRAINS(false)
set_vehicle_model_is_suppressed(utillitruck, true)
set_vehicle_model_is_suppressed(utillitruck2, true)
set_vehicle_model_is_suppressed(utillitruck3, true)
request_model(michael.model)
request_model(trevor.model)
request_model(truck.model)
set_vehicle_model_is_suppressed(truck.model, true)
request_model(trailer.model)
set_vehicle_model_is_suppressed(trailer.model, true)
request_model(lazlows_car.model)
set_vehicle_model_is_suppressed(lazlows_car.model, true)
request_model(lazlow.model)
set_ped_model_is_suppressed(lazlow.model, true)
request_vehicle_recording(401, "lkfamily4")
request_vehicle_recording(402, "lkfamily4")
REQUEST_CUTSCENE("Family_4_MCS_3_concat")
request_mocap_data_for_Family_4_MCS_3_concat()
request_ptfx_asset()
// while not CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
// wait(0)
// endwhile
while not has_model_loaded(michael.model)
or not has_model_loaded(trevor.model)
or not has_model_loaded(truck.model)
or not has_model_loaded(trailer.model)
or not has_model_loaded(lazlows_car.model)
or not has_model_loaded(lazlow.model)
or not request_mocap_data_for_Family_4_MCS_3_concat()
or not has_cutscene_loaded()
or not has_vehicle_recording_been_loaded(401, "lkfamily4")
or not has_vehicle_recording_been_loaded(402, "lkfamily4")
or not has_ptfx_asset_loaded()
wait(0)
endwhile
clear_area(<<-219.6464, -2037.8220, 26.6207>>, 300.00, true)
truck.veh = create_vehicle(truck.model, <<1054.1014, -298.7344, 49.2696>>, 330.2198)
SET_VEHICLE_ENGINE_ON(truck.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(truck.veh, false)
set_vehicle_colours(truck.veh, 0, 0)
set_entity_health(truck.veh, 1500)
set_vehicle_engine_health(truck.veh, 1500)
set_vehicle_petrol_tank_health(truck.veh, 1500)
//set_vehicle_dirt_level(truck.veh, 0.0)
set_vehicle_strong(truck.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(truck.veh, true)
//truck_ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fam4_truck_vent", truck.veh, <<0.0, 1.0, 0.0>>, <<0.0, 0.0, 0.0>>)
trailer.veh = create_vehicle(trailer.model, <<1042.4807, -292.3749, 48.8504>>, 330.00)
set_vehicle_tyres_can_burst(trailer.veh, false)
attach_vehicle_to_trailer(truck.veh, trailer.veh)
//DISABLE_TRAILER_BREAKING_FROM_VEHICLE(trailer.veh, true)
set_current_selector_ped(selector_ped_trevor, false)
add_ped_for_dialogue(scripted_speech, 2, player_ped_id(), "trevor")
set_ped_into_vehicle(player_ped_id(), truck.veh)
create_player_ped_inside_vehicle(selector_ped.pedID[selector_ped_michael], char_michael, truck.veh, vs_front_right, false)
set_blocking_of_non_temporary_events(selector_ped.pedID[selector_ped_michael], true)
add_ped_for_dialogue(scripted_speech, 0, selector_ped.pedID[selector_ped_michael], "michael")
lazlows_car.veh = create_vehicle(lazlows_car.model, <<1063.57, -284.17, 50.6>>, lazlows_car.heading)
set_vehicle_strong(lazlows_car.veh, true)
SET_VEHICLE_HAS_STRONG_AXLES(lazlows_car.veh, true)
SET_VEHICLE_ENGINE_ON(lazlows_car.veh, TRUE, TRUE)
set_vehicle_tyres_can_burst(lazlows_car.veh, false)
set_entity_only_damaged_by_player(lazlows_car.veh, true)
set_vehicle_colours(lazlows_car.veh, 27, 0)
//SET_ENTITY_LOAD_COLLISION_FLAG(lazlows_car.veh, true)
SET_VEHICLE_CAN_LEAK_OIL(lazlows_car.veh, false)
SET_VEHICLE_CAN_LEAK_PETROL(lazlows_car.veh, false)
lazlows_car_ptfx = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fam4_truck_vent", lazlows_car.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
create_npc_ped_inside_vehicle(lazlow.ped, char_lazlow, lazlows_car.veh, vs_driver, false)
set_ped_can_ragdoll(lazlow.ped, false)
SET_PED_COMBAT_ATTRIBUTES(lazlow.ped, ca_leave_vehicles, false)
set_blocking_of_non_temporary_events(lazlow.ped, true)
add_ped_for_dialogue(scripted_speech, 5, lazlow.ped, "lazlow")
load_scene(get_entity_coords(player_ped_id()))
mission_flow = play_final_mocap
end_cutscene()
endproc
proc family_4_load_stage_selector_assets()
initialise_mission_variables()
switch launch_mission_stage_menu_status
case 0
load_trip_skip_0()
break
case 1
load_trip_skip_1()
break
case 2
load_trip_skip_2()
break
case 3
load_trip_skip_3()
break
case 4
load_trip_skip_4()
break
case 5
load_trip_skip_5()
break
endswitch
endproc
proc family_4_play_final_mocap()
switch play_final_mocap_status
case 0
request_mocap_data_for_Family_4_MCS_3_concat()
//if has_cutscene_loaded()
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
clear_mission_locate_stuff(locates_data, true) //cleans up locate data to fix assert where the locates was thinking the player was still trevor and therefore clearing michael who at the end of the mission was the player as clear_locates is called in mission_cleanup after the switch on exit state. Must clear it before the switch on exit state takes place
if not is_screen_faded_in()
do_screen_fade_in(default_fade_time) //if skipped previous cutscene.
endif
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(lazlows_car.veh)
register_entity_for_cutscene(selector_ped.pedID[SELECTOR_PED_Michael], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(lazlow.ped, "Lazlow", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(lazlows_car.veh, "Lazlows_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
register_entity_for_cutscene(truck.veh, "family_4_truck", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)//CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
if does_entity_exist(trailer.veh)
register_entity_for_cutscene(trailer.veh, "Family_4_trailer", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)//CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
else
register_entity_for_cutscene(null, "Family_4_trailer", CU_DONT_ANIMATE_ENTITY, trailer.model)
endif
register_entity_for_cutscene(null, "Lazlow_Jeans", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, lazlows_jeans.model)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
start_cutscene(CUTSCENE_PLAYER_FP_FLASH_MICHAEL)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
play_final_mocap_status++
endif
break
case 1
if is_cutscene_playing()
//stops cutscene cams
destroy_all_cams()
render_script_cams(false, false)
clear_area(<<1059.5020, -291.9928, 49.4891>>, 1000, true)
set_vehicle_doors_locked(lazlows_car.veh, vehiclelock_unlocked)
SET_VEHICLE_UNDRIVEABLE(lazlows_car.veh, true)
play_final_mocap_status++
endif
break
case 2
if is_cutscene_active()
if not was_cutscene_skipped()
printint(get_cutscene_time())
printnl()
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow_Jeans", lazlows_jeans.model))
lazlows_jeans.obj = GET_object_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow_Jeans", lazlows_jeans.model))
ENDIF
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("trevor", GET_PLAYER_PED_MODEL(char_trevor))
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
make_selector_ped_selection(selector_ped, selector_ped_michael)
take_control_of_selector_ped(selector_ped, true, false)
force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 2000)
force_ped_ai_and_animation_update(player_ped_id())
endif
if get_current_player_ped_enum() = char_trevor
SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(selector_ped.pedID[selector_ped_michael])
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
//added for seamless blend beacuse player_ped_id() is trevor on camera exit state and camera is blending to michael
SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(selector_ped.pedID[selector_ped_michael])
set_gameplay_cam_relative_heading(0)
set_gameplay_cam_relative_pitch(0)
endif
else
SET_CUTSCENE_FADE_VALUES(false, false, true)
play_final_mocap_status++
endif
else
if does_entity_exist(lazlow.ped)
delete_ped(lazlow.ped)
endif
if does_entity_exist(lazlows_jeans.obj)
set_object_as_no_longer_needed(lazlows_jeans.obj)
endif
if does_entity_exist(lazlows_car.veh)
set_vehicle_as_no_longer_needed(lazlows_car.veh)
endif
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
delete_ped(selector_ped.pedID[selector_ped_trevor])
endif
if does_entity_exist(trailer.veh)
delete_vehicle(trailer.veh)
endif
if does_entity_exist(truck.veh)
delete_vehicle(truck.veh)
endif
deactivate_vehicle_proofs(truck.veh)
end_cutscene_no_fade(false, false)
REPLAY_STOP_EVENT()
mission_passed()
endif
break
case 3
if is_cutscene_active()
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow_Jeans", lazlows_jeans.model))
lazlows_jeans.obj = GET_object_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Lazlow_Jeans", lazlows_jeans.model))
ENDIF
else
make_selector_ped_selection(selector_ped, selector_ped_michael)
take_control_of_selector_ped(selector_ped, false)
if does_entity_exist(lazlow.ped)
delete_ped(lazlow.ped)
endif
if does_entity_exist(lazlows_jeans.obj)
set_object_as_no_longer_needed(lazlows_jeans.obj)
endif
if does_entity_exist(lazlows_car.veh)
set_vehicle_as_no_longer_needed(lazlows_car.veh)
//delete_vehicle(lazlows_car.veh)
endif
if does_entity_exist(selector_ped.pedID[selector_ped_trevor])
delete_ped(selector_ped.pedID[selector_ped_trevor])
endif
if does_entity_exist(truck.veh)
delete_vehicle(truck.veh)
endif
if does_entity_exist(trailer.veh)
delete_vehicle(trailer.veh)
endif
deactivate_vehicle_proofs(truck.veh)
end_cutscene()
REPLAY_STOP_EVENT()
mission_passed()
endif
break
endswitch
endproc
proc family_4_mission_failed_stage()
groupie_ai_system(false)
ambient_ped_system()//forces the peds to flee is antagonised and harmed.
if lk_timer(fail_time, 3000)
if GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//fixes issue where trevor and michael can meet each other in the game before the mission has been
//triggered - bug 1488490
set_replay_rejected_character(CHAR_TREVOR)
switch cached_mission_flow
case run_after_lazlow
case uber_chase
mission_flow_set_fail_warp_location(<<-868.9190, 199.3321, 72.3914>>, 242.1369)
break
endswitch
//If we've failed for killing Trevor, respawn as him at the hospital.
if are_strings_equal(mission_failed_text, "family4_fail_1")
mission_flow_set_fail_warp_location(<<-452.5382, -346.4354, 33.3646>>, 128.5391)
ENDIF
mission_failed()
endif
endif
endproc
proc stat_system()
if is_ped_sitting_in_any_vehicle(player_ped_id())
inform_mission_stats_of_damage_watch_entity(get_vehicle_ped_is_in(player_ped_id()), fam4_car_damage)
if does_entity_exist(truck.veh)
and is_ped_sitting_in_vehicle(player_ped_id(), truck.veh)
inform_mission_stats_of_speed_watch_entity(get_vehicle_ped_is_in(player_ped_id()))
else
inform_mission_stats_of_speed_watch_entity(get_vehicle_ped_is_in(player_ped_id()), fam4_max_speed)
endif
else
inform_mission_stats_of_damage_watch_entity(null, fam4_car_damage)
inform_mission_stats_of_speed_watch_entity(null)
endif
endproc
SCRIPT
set_mission_flag(true)
if has_force_cleanup_occurred()
Mission_Flow_Mission_Force_Cleanup()
mission_cleanup()
endif
mission_setup()
while true
wait(0)
if not stop_mission_fail_checks
if mission_fail_checks()
setup_mission_fail()
endif
endif
skip_system()
stat_system()
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_FameOrShame")
switch mission_flow
case intro_mocap
family_4_intro_mocap()
break
case trevor_leadin
family_4_trevor_leadin()
break
case switching_into_michael
family_4_switching_into_michael()
break
case get_to_the_stadium
family_4_get_to_the_stadium()
break
case play_stadium_mocap
family_4_play_stadium_mocap()
break
case run_after_lazlow
family_4_run_after_lazlo()
break
case uber_chase
family_4_uber_chase()
break
case storm_drain_cutscene
family_4_storm_drain_cutscene()
break
case play_final_mocap
family_4_play_final_mocap()
break
case train_crash_cutscene_test_bed
truck_and_trailer_recording_system()
//detach_trailer_cutscene_system()
//storm_drain_cutscene()
break
case detach_trailer_cutscene_test_bed
family_4_deatch_trailer_cutscene_test_bed()
break
case record_setpiece_cars
family_4_record_lazlow()
break
case load_stage_selector_assets
family_4_load_stage_selector_assets()
break
case mission_failed_stage
family_4_mission_failed_stage()
break
endswitch
#IF IS_DEBUG_BUILD
is_entity_in_angled_area(player_ped_id(), <<-817.510, 151.703, 64.606>>, <<-815.789, 192.767, 77.706>>, 61.400)
//put vehicle ouside michaels front door
//area round michaels house covering kitchen and driveway.
is_entity_in_angled_area(player_ped_id(), <<-812.943, 167.079, 69.294>>, <<-811.455, 192.135, 76.794>>, 37.000)
is_entity_in_angled_area(player_ped_id(), <<-860.221, 150.219, 62.021>>, <<-858.733, 175.275, 72.921>>, 31.500)
//is_entity_in_angled_area(player_ped_id(), <<-248.824, -2021.740, 28.944>>, <<-258.934, -2033.879, 31.958>>, 3.3)
//is_entity_in_angled_area(player_ped_id(), <<-231.798, -2041.398, 26.361>>, <<-260.114, -2021.864, 34.161>>, 39.2)
//is_entity_in_angled_area(player_ped_id(), <<-252.133, -2011.385, 29.146>>, <<-269.892, -2032.251, 32.146 >>, 16.50)
// if does_entity_exist(selector_ped.pedID[selector_ped_michael])
// if not is_ped_injured(selector_ped.pedID[selector_ped_michael])
//
// printvector(get_entity_coords(selector_ped.pedID[selector_ped_michael]))
// printnl()
//
// else
// printstring("dead")
// printnl()
// endif
// else
// printstring("not exists")
// printnl()
// endif
add_scenario_blocking_area_widget()
vehicle_force_system()
angled_area_locate_widget()
//get_current_player_vehicle(temp_lazlows_car)
vehicle_colour_widget(temp_lazlows_car)
vehicle_colour_widget(get_players_last_vehicle())
//attach_entity_to_entity_widget(video_camera.obj, camera_crew[0].ped, GET_PED_BONE_INDEX(camera_crew[0].ped, BONETAG_PH_R_HAND))
camera_attached_to_entity_widget(truck.veh)
if is_keyboard_key_just_pressed(key_s)
mission_passed()
endif
if not stop_mission_fail_checks
if is_keyboard_key_just_pressed(key_f)
mission_failed()
endif
endif
if is_keyboard_key_just_pressed(key_t)
play_reaction_anim(ambient_ped[1].ped, "right")
play_reaction_anim(ambient_ped[7].ped, "back_right")
play_reaction_anim(ambient_ped[18].ped, "right")
play_reaction_anim(ambient_ped[19].ped, "forward")
//ambient_ped_status[1] = play_reaction_anim_during_cutscene
//PLAY_ANIM_ON_RUNNING_SCENARIO(ambient_ped[1].ped, "amb@prop_human_seat_chair@female@proper@react_shock", "right")
endif
#endif
endwhile
endscript
//rodeo drive -708.6627, -203.6715, 36.1175
//-841.5194, 7.6417, 41.8163
//petrol station: -336.5343, -1438.4293, 29.2102
//main train force offsets.
//target pos = 528.176, -1208.727, 30.000
//vehicle pos =
//vehicle rot =
//vehicle force offset = 1.0, 3.0, 0.0
//angular force offset = 0.0, 0.0, 0.8
//force multiplier = 0.6 / 0.5
//liquid tanker 1
//497.0.61, -1206.327, 29.139
//283.2
//528.476, -1216.327, 30.00
//1.0, 3.0, 0.0
//0.0, 0.5, 0.6
//0.3
//liquid tanker 2
//497.61, -1206.327, 29.139
//283.2
//528.476, -1229.127, 29.3
//1.0, 3.0, 0.0
//0.0, 0.0, 0.5
//0.1
//liquid tanker 3
//497.61, -1206.327, 29.139
//283.2
//trailer force data
//505.642, -1200.900, 31.100
//359.836
//518.499, -1182.984, 31.012
//0.0, -3.0, -1.0
//0.0, 0.0, 1.0
//0.6
//3818
//freeway physics 1804
//ambulance = << 1386.6036, -2071.0393, 50.9988 >> heading: 41.5869
//
//
//tow truck = << 1379.0072, -2078.6235, 51.0031 >> heading: 39.5863
//possible model swaps
//cogsport
//schafter2
//100947 - joe trailer bug
//784631 - set_ped_model_is_suppressed(lazlow.model, true) not working
//car recording number to re-use
//25
//44
//67
//68
//78
//79
//-scriptprofiling
//SET_PROFILING_OF_THIS_SCRIPT(TRUE)
//get_entity_offset_given_world_coords()
//GET_ENTITY_OFFSET_IN_WORLD_COORDS
//set_vehicle_automatically_attaches(players car false
// enum block_colour_enum
// red
// white
// blue
// light_blue
// black
// silver
// green
// yellow
//re-use recording 102
//re - recording part of the uber car chase
//DO_RE_RECORDING_WIDGET
//if start uber recording flag was true
// then hack that script so it starts the recording.
//hope there is not a frame lag.
//then when you press the accelerator button it will take control of that recording.
//ben lyons change list shelved for handling.bat 335770
//985824
//991531 - carrec bat files takes too long to compile.
//996633 - recording bug wheels through the ground.
//1037983 - ptfx for truck
//1043671 - ptfx for lazlows car
//839466
//scenario ped clear area - 1053663
//guard shooting and not wanted level - 1143890
//1348901 - trauck and trailer constraint in pass cutscene.
//IF sData.sBrowseInfo.iCurrentItem >= 0
//AND sData.sBrowseInfo.iCurrentItem < GET_NUMBER_OF_VEHICLE_NUMBER_PLATES()
//SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX(vehID, sData.sBrowseInfo.iCurrentItem)
//
//
//
//NATIVE PROC SET_VEHICLE_NUMBER_PLATE_TEXT(VEHICLE_INDEX VehicleIndex, STRING licencePlateTxt_Max8Chars)
//P_Laz_J02_S = jeans
//******RESPOTIONING THE PLAYERS CAR AT THE START OF THE MISSION AND CREATING A SUITABLE REPLACEMENT
//******IF VEHICLE NOT ACCEPTABLE
//PURPOSE: repositions the players last vehicle if it exists via calling GET_MISSION_START_VEHICLE_INDEX()
// and sets the vehicle as a mission entity so that clear area will not clear it. Remember to
//proc set_players_last_vehicle_to_vehicle_gen(vector car_pos, float car_heading)
//
// vehicle_index players_last_car
//
// players_last_car = GET_MISSION_START_VEHICLE_INDEX()
// if does_entity_exist(players_last_car)
// if is_vehicle_driveable(players_last_car)
//
// SET_ENTITY_AS_MISSION_ENTITY(players_last_car, true, true)
//
// clear_area(car_pos, 5.0, true)
// set_entity_coords(players_last_car, car_pos)
// set_entity_heading(players_last_car, car_heading)
// set_vehicle_on_ground_properly(players_last_car)
// set_entity_as_mission_entity(players_last_car)
//
// endif
// endif
//
//endproc
//
//
//RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1980.730, 3073.228, 46.049>>, <<2014.615, 3051.972, 50.049>>, 26.700, <<2000.1245, 3059.5662, 46.0491>>, 59.1994, <<15.0, 15.0, 15.0>>, false)//, false) //2.5, 5.5, 2.0
//set_players_last_vehicle_to_vehicle_gen(<<2000.1245, 3059.5662, 46.0491>>, 59.1994)
//
//
//func bool is_players_last_vehicle_present_and_acceptable(vehicle_index &player_vehicle, vector pos, int number_of_seats, vector secondary_pos, float secondary_heading)
//
// if does_entity_exist(player_vehicle)
//
// if is_vehicle_driveable(player_vehicle)
//
// if is_entity_at_coord(player_vehicle, pos, <<10.0, 10.0, 10.0>>, false)
//
// printint(get_vehicle_max_number_of_passengers(player_vehicle))
// printnl()
//
// if get_vehicle_max_number_of_passengers(player_vehicle) >= number_of_seats
//
// return true
//
// else
//
// clear_area(secondary_pos, 10.0, true)
// set_entity_coords(player_vehicle, secondary_pos)
// set_entity_heading(player_vehicle, secondary_heading)
// set_vehicle_on_ground_properly(player_vehicle)
// set_vehicle_as_no_longer_needed(player_vehicle)
//
// endif
//
// endif
// endif
// endif
//
// return false
//
//endfunc
//
//
////PURPOSE: sets up a vehicle for the player. Either the vehicle they arrived in if suitable or trevors truck.
////Call this every frame when the mocap is running
//proc setup_vehicle_outside_methlab()
//
// if not does_entity_exist(trevors_truck.veh)
//
// if has_model_loaded(trevors_truck.model)
//
// //trevors_truck.veh = get_players_last_vehicle()
// trevors_truck.veh = GET_MISSION_START_VEHICLE_INDEX()
//
// if not is_players_last_vehicle_present_and_acceptable(trevors_truck.veh, <<2000.1245, 3059.5662, 46.0491>>, 2, <<2008.9219, 3054.0513, 46.0528>>, 326.3415)
//
// CREATE_PLAYER_VEHICLE(trevors_truck.veh, CHAR_TREVOR, <<2000.1245, 3059.5662, 46.0491>>, 59.1994, false)
//
// endif
//
// endif
// endif
//
//endproc
//
//
//set_trevors_truck as no longer needed in the setup of the next stage / no is_cutscene_active
//1316247 - game locks up at the start.
//1340973 - Family_4_MCS_3_concat truck and trailer issues
//1341601 - frame lag when switching to michael from trevor
//1355921 - trailer driving in pass cutscene
//1374049 - out of streaming memory when skipping family 4 intro
//
//female
//
//arms_folded
//
//legs_crossed
//
//proper
//
//proper_skinny
//
//
//
//male
//
//elbows_on_knees
//
//generic_skinny
//
//left_elbow_on_knee