16854 lines
503 KiB
Python
Executable File
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|