Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MISSION_START
- // *****************************************************************************************
- // *****************************************************************************************
- // *****************************************************************************************
- // *********************************** Cop Car Mission *************************************
- // *****************************************************************************************
- // *****************************************************************************************
- // *****************************************************************************************
- // Mission start stuff
- GOSUB mission_start_cop_car
- GOSUB cop_car_failed
- MISSION_END
- // Variables for mission
- VAR_INT got_range_message player_in_range car_model criminal_car range_int mission_end_button total_criminals_killed players_cop_car_health
- VAR_INT criminal_created_flag criminal criminal_blip random_gun cop_time_limit got_car_crim_is_in timer_reset_flag vigilante_bonus_kills location got_cop_breif
- VAR_INT game_time_flag game_timer_start copcar_timer game_time_present game_time_difference timer_in_secs players_cop_car vigilante vigilante_score copcar_cancelled_flag
- VAR_FLOAT player_c_x player_c_y player_c_z random_crim_x random_crim_y criminal_coord_x criminal_coord_y criminal_coord_z
- VAR_FLOAT diff_x_float diff_y_float sum_of_diff_xy players_distance_from_criminal cop_time_limit_float criminal_heading warp_heading_cop
- // ****************************************Mission Start************************************
- mission_start_cop_car:
- flag_player_on_mission = 1
- flag_player_on_cop_mission = 1
- vigilante_bonus_kills = 5
- SCRIPT_NAME copcar
- total_criminals_killed = 0
- got_cop_breif = 0
- WAIT 0
- next_cop_car:
- got_range_message = 0
- player_in_range = 0
- car_model = 0
- criminal_car = 0
- criminal_created_flag = 0
- criminal = 0
- criminal_blip = 0
- random_gun = 0
- cop_time_limit = 0
- got_car_crim_is_in = 0
- timer_reset_flag = 0
- game_time_flag = 0
- mission_end_button = 0
- location = 0
- copcar_cancelled_flag = 0
- player_c_x = 0.0
- player_c_y = 0.0
- player_c_z = 0.0
- random_crim_x = 0.0
- random_crim_y = 0.0
- criminal_coord_x = 0.0
- criminal_coord_y = 0.0
- criminal_coord_z = 0.0
- diff_x_float = 0.0
- diff_y_float = 0.0
- sum_of_diff_xy = 0.0
- players_distance_from_criminal = 0.0
- cop_time_limit_float = 0.0
- criminal_heading = 0.0
- GET_PLAYER_COORDINATES player player_c_x player_c_y player_c_z
- REQUEST_MODEL CAR_SENTINEL
- {
- criminal_in_car://////////////////////////////////////////////////////////////////////////////////////////////////////
- WAIT 0
- IF got_cop_breif = 0
- PRINT_NOW LEGAL 3000 1
- TIMERB = 0
- got_cop_breif = 1
- ELSE
- TIMERB = 3000
- ENDIF
- IF IS_COLLISION_IN_MEMORY LEVEL_INDUSTRIAL
- GENERATE_RANDOM_FLOAT_IN_RANGE 778.0 1540.0 random_crim_x
- GENERATE_RANDOM_FLOAT_IN_RANGE -1110.0 190.0 random_crim_y
- got_range_message = 0
- player_in_range = 1
- location = 1
- ENDIF
- IF IS_COLLISION_IN_MEMORY LEVEL_COMMERCIAL
- GENERATE_RANDOM_FLOAT_IN_RANGE -192.0 545.0 random_crim_x
- GENERATE_RANDOM_FLOAT_IN_RANGE -1626.0 98.0 random_crim_y
- got_range_message = 0
- player_in_range = 1
- location = 2
- ENDIF
- IF IS_COLLISION_IN_MEMORY LEVEL_SUBURBAN
- GENERATE_RANDOM_FLOAT_IN_RANGE -1300.0 -414.0 random_crim_x
- GENERATE_RANDOM_FLOAT_IN_RANGE -608.8 380.0 random_crim_y
- got_range_message = 0
- player_in_range = 1
- location = 3
- ENDIF
- IF player_in_range = 0
- IF got_range_message = 0
- PRINT_NOW C_RANGE 5000 1 //"The radio is out of range, get closer to a police station!"
- got_range_message = 1
- ENDIF
- GOTO cop_car_failed
- ENDIF
- GOSUB copcar_cancelled_checks
- IF copcar_cancelled_flag = 1
- GOTO cop_car_failed
- ENDIF
- GET_CLOSEST_CAR_NODE random_crim_x random_crim_y player_c_z criminal_coord_x criminal_coord_y criminal_coord_z
- IF criminal_coord_x > 1398.0 //MIN_X // COLOMBIAN BOAT
- AND criminal_coord_x < 1615.0 //MAX_X
- AND criminal_coord_y > -965.0 //MIN_Y
- AND criminal_coord_y < -902.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 879.0 //MIN_X // BACK OF LUIGI'S
- AND criminal_coord_x < 892.0 //MAX_X
- AND criminal_coord_y > -427.0 //MIN_Y
- AND criminal_coord_y < -407.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 944.8 //MIN_X // FISH FACTORY
- AND criminal_coord_x < 1017.1 //MAX_X
- AND criminal_coord_y > -1148.8 //MIN_Y
- AND criminal_coord_y < -1076.6 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 920.8 //MIN_X // CHINATOWN MARKET
- AND criminal_coord_x < 1004.0 //MAX_X
- AND criminal_coord_y > -754.2 //MIN_Y
- AND criminal_coord_y < -670.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 670.0 //MIN_X // CALAHAN BRIDGE
- AND criminal_coord_x < 1035.0 //MAX_X
- AND criminal_coord_y > -953.0 //MIN_Y
- AND criminal_coord_y < -912.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 1364.0 //MIN_X // DOCKS INDUSTRIAL
- AND criminal_coord_x < 1641.0 //MAX_X
- AND criminal_coord_y > -1165.0 //MIN_Y
- AND criminal_coord_y < -617.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 649.0 //MIN_X // TUNNEL ENTRANCE INDUSTRIAL
- AND criminal_coord_x < 1066.0 //MAX_X
- AND criminal_coord_y > 25.0 //MIN_Y
- AND criminal_coord_y < 217.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > -1611.5 //MIN_X // AIRPORT SUBURBAN
- AND criminal_coord_x < -745.3 //MAX_X
- AND criminal_coord_y > -1001.9 //MIN_Y
- AND criminal_coord_y < -371.2 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 939.8 //MIN_X // OLD SCHOOL HALL AND PARK AREA
- AND criminal_coord_x < 1035.6 //MAX_X
- AND criminal_coord_y > -901.3 //MIN_Y
- AND criminal_coord_y < -828.2 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 1215.3 //MIN_X // DOG FOOD FACTORY
- AND criminal_coord_x < 1223.7 //MAX_X
- AND criminal_coord_y > -839.4 //MIN_Y
- AND criminal_coord_y < -763.6 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 845.3 //MIN_X // INDUSTRIAL SAFEHOUSE
- AND criminal_coord_x < 899.6 //MAX_X
- AND criminal_coord_y > -312.6 //MIN_Y
- AND criminal_coord_y < -295.7 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 113.3 //MIN_X // DOJO COMMERCIAL
- AND criminal_coord_x < 99.7 //MAX_X
- AND criminal_coord_y > -1284.8 //MIN_Y
- AND criminal_coord_y < -1273.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 18.33 //MIN_X // COLOMBIAN OJG COMPOUND
- AND criminal_coord_x < 92.06 //MAX_X
- AND criminal_coord_y > -388.7 //MIN_Y
- AND criminal_coord_y < -312.38 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > -1255.4 //MIN_X // BAIT WAREHOUSE CARPARK SUBURBIA
- AND criminal_coord_x < -1187.9 //MAX_X
- AND criminal_coord_y > 80.6 //MIN_Y
- AND criminal_coord_y < 123.4 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF criminal_coord_x > 1386.4 //MIN_X // FRANKIES HOUSE
- AND criminal_coord_x < 1475.8 //MAX_X
- AND criminal_coord_y > -292.1 //MIN_Y
- AND criminal_coord_y < -168.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- IF location = 1
- IF NOT criminal_coord_x > 778.0 //MIN_X // INDUSTRIAL
- OR NOT criminal_coord_x < 1540.0 //MAX_X
- OR NOT criminal_coord_y > -1110.0 //MIN_Y
- OR NOT criminal_coord_y < 190.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- ENDIF
- IF location = 2
- IF NOT criminal_coord_x > -192.0 //MIN_X // COMMERCIAL
- OR NOT criminal_coord_x < 545.0 //MAX_X
- OR NOT criminal_coord_y > -1626.0 //MIN_Y
- OR NOT criminal_coord_y < 98.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- ENDIF
- IF location = 3
- IF NOT criminal_coord_x > -1300.0 //MIN_X // SUBURBIA
- OR NOT criminal_coord_x < -414.0 //MAX_X
- OR NOT criminal_coord_y > -608.8 //MIN_Y
- OR NOT criminal_coord_y < 380.0 //MAX_Y
- GOTO criminal_in_car
- ENDIF
- ENDIF
- IF criminal_coord_z < -1.0
- GOTO criminal_in_car
- ENDIF
- diff_x_float = player_c_x - criminal_coord_x
- diff_y_float = player_c_y - criminal_coord_y
- diff_x_float = diff_x_float * diff_x_float
- diff_y_float = diff_y_float * diff_y_float
- sum_of_diff_xy = diff_x_float + diff_y_float
- SQRT sum_of_diff_xy players_distance_from_criminal
- IF players_distance_from_criminal < 150.0
- GOTO criminal_in_car
- ENDIF
- cop_time_limit_float = players_distance_from_criminal / 4.0
- cop_time_limit_float = cop_time_limit_float * 1000.0
- cop_time_limit =# cop_time_limit_float
- IF cop_time_limit < 120000
- cop_time_limit = 120000
- ENDIF
- generate_car_model:
- GENERATE_RANDOM_INT_IN_RANGE 90 140 car_model
- IF car_model > 113 // CAR_BUGGY CAR_CORPSE CAR_POLICE CAR_ENFORCER CAR_SECURICAR CAR_BANSHEE BOAT_PREDATOR CAR_BUS
- AND car_model < 128 // CAR_RHINO CAR_BARRACKS TRAIN_SUBWAY HELI_POLICE PLANE_DODO CAR_COACH
- GOTO generate_car_model
- ENDIF
- IF car_model = 97 // CAR_FIRETRUCK
- GOTO generate_car_model
- ENDIF
- IF car_model = 106 // CAR_AMBULANCE
- OR car_model = 107 // CAR_FBI
- OR car_model = 131 // CAR_RCBANDIT
- OR car_model = 140 // PLANE_AIRTRAIN
- GOTO generate_car_model
- ENDIF
- REQUEST_MODEL car_model
- WHILE NOT HAS_MODEL_LOADED car_model
- WAIT 0
- GOSUB copcar_cancelled_checks
- IF copcar_cancelled_flag = 1
- GOTO cop_car_failed
- ENDIF
- ENDWHILE
- GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 criminal_heading
- WHILE NOT TIMERB > 3000
- WAIT 0
- GOSUB copcar_cancelled_checks
- IF copcar_cancelled_flag = 1
- GOTO cop_car_failed
- ENDIF
- ENDWHILE
- CREATE_CAR car_model criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
- SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
- SET_CAR_HEALTH criminal_car 800
- MARK_MODEL_AS_NO_LONGER_NEEDED car_model
- SET_CAR_HEADING criminal_car criminal_heading
- GET_CLOSEST_CHAR_NODE criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z
- CREATE_RANDOM_CHAR criminal_coord_x criminal_coord_y criminal_coord_z criminal
- SET_CHAR_IS_CHRIS_CRIMINAL criminal TRUE
- //SET_CHAR_AVOID_LEVEL_TRANSITIONS criminal TRUE
- WARP_CHAR_INTO_CAR criminal criminal_car
- SET_CHAR_RUNNING criminal TRUE
- SET_CHAR_ONLY_DAMAGED_BY_PLAYER criminal TRUE
- CLEAR_CHAR_THREAT_SEARCH criminal
- SET_CHAR_PERSONALITY criminal PEDSTAT_TOUGH_GUY
- SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER1
- SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER2
- SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER3
- SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER4
- SET_CHAR_THREAT_SEARCH criminal THREAT_CIVMALE
- SET_CHAR_THREAT_SEARCH criminal THREAT_CIVFEMALE
- SET_CHAR_THREAT_SEARCH criminal THREAT_COP
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_MAFIA
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_DIABLO
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_TRIAD
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YARDIE
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_COLOMBIAN
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_HOOD
- SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YAKUZA
- SET_CHAR_THREAT_SEARCH criminal THREAT_EMERGENCY
- SET_CHAR_THREAT_SEARCH criminal THREAT_PROSTITUTE
- SET_CHAR_THREAT_SEARCH criminal THREAT_CRIMINAL
- SET_CHAR_THREAT_SEARCH criminal THREAT_GUN
- SET_CHAR_THREAT_SEARCH criminal THREAT_COP_CAR
- SET_CHAR_THREAT_SEARCH criminal THREAT_FAST_CAR
- SET_CHAR_THREAT_SEARCH criminal THREAT_FIREMAN
- SET_CHAR_HEED_THREATS criminal TRUE
- MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
- IF flag_industrial_passed = 0
- GENERATE_RANDOM_INT_IN_RANGE 0 5 random_gun
- ENDIF
- IF flag_industrial_passed = 1
- GENERATE_RANDOM_INT_IN_RANGE 2 6 random_gun
- ENDIF
- IF flag_commercial_passed = 1
- GENERATE_RANDOM_INT_IN_RANGE 3 10 random_gun
- ENDIF
- GIVE_WEAPON_TO_CHAR criminal random_gun 1000
- ADD_BLIP_FOR_CHAR criminal criminal_blip
- CLEAR_HELP
- IF got_siren_help_before = 0
- GET_CONTROLLER_MODE controlmode
- IF controlmode = 0
- PRINT_HELP SIREN_1 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
- ENDIF
- IF controlmode = 1
- PRINT_HELP SIREN_2 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
- ENDIF
- IF controlmode = 2
- PRINT_HELP SIREN_3 //"To turn on this vehicles sirens tap the ~h~R1 button~w~."
- ENDIF
- IF controlmode = 3
- PRINT_HELP SIREN_4 //"To turn on this vehicles sirens tap the ~h~L3 button~w~."
- ENDIF
- got_siren_help_before = 1
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PORT_W
- PRINT_STRING_IN_STRING_NOW C_BREIF PORT_W 5000 1 // The suspect is in the Callahan Point area.
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PORT_S
- PRINT_STRING_IN_STRING_NOW C_BREIF PORT_S 5000 1 // The suspect is in the Atlantic Quays area.
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PORT_E
- PRINT_STRING_IN_STRING_NOW C_BREIF PORT_E 5000 1 // The suspect is in the Portland Harbour area.
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PORT_I
- PRINT_STRING_IN_STRING_NOW C_BREIF PORT_I 5000 1 // The suspect is in the Trenton area.
- ENDIF
- IF IS_CHAR_IN_ZONE criminal S_VIEW
- PRINT_STRING_IN_STRING_NOW C_BREIF S_VIEW 5000 1 // The suspect is in the Portland View area.
- ENDIF
- IF IS_CHAR_IN_ZONE criminal CHINA
- PRINT_STRING_IN_STRING_NOW C_BREIF CHINA 5000 1 // The criminal is proceeding south in Chinatown
- ENDIF
- IF IS_CHAR_IN_ZONE criminal EASTBAY
- PRINT_STRING_IN_STRING_NOW C_BREIF EASTBAY 5000 1 // The criminal is proceeding south in Portland Beach
- ENDIF
- IF IS_CHAR_IN_ZONE criminal LITTLEI
- PRINT_STRING_IN_STRING_NOW C_BREIF LITTLEI 5000 1 // The criminal is proceeding south in Saint Mark's
- ENDIF
- IF IS_CHAR_IN_ZONE criminal REDLIGH
- PRINT_STRING_IN_STRING_NOW C_BREIF REDLIGH 5000 1 // The criminal is proceeding south in Red Light District
- ENDIF
- IF IS_CHAR_IN_ZONE criminal TOWERS
- PRINT_STRING_IN_STRING_NOW C_BREIF TOWERS 5000 1 // The criminal is proceeding south in Hepburn Heights
- ENDIF
- IF IS_CHAR_IN_ZONE criminal HARWOOD
- PRINT_STRING_IN_STRING_NOW C_BREIF HARWOOD 5000 1 // The criminal is proceeding south in Harwood
- ENDIF
- IF IS_CHAR_IN_ZONE criminal ROADBR1
- PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR1 5000 1 // The criminal is proceeding south in Callahan Bridge
- ENDIF
- IF IS_CHAR_IN_ZONE criminal ROADBR2
- PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR2 5000 1 // The criminal is proceeding south in Callahan Bridge
- ENDIF
- //IF IS_CHAR_IN_ZONE criminal TUNNELP
- // PRINT_STRING_IN_STRING_NOW C_BREIF TUNNELP 5000 1 // The criminal is proceeding south in Porter Tunnel
- //ENDIF
- IF IS_CHAR_IN_ZONE criminal STADIUM
- PRINT_STRING_IN_STRING_NOW C_BREIF STADIUM 5000 1 // The criminal is proceeding south in Aspatria
- ENDIF
- IF IS_CHAR_IN_ZONE criminal HOSPI_2
- PRINT_STRING_IN_STRING_NOW C_BREIF HOSPI_2 5000 1 // The criminal is proceeding south in Rockford
- ENDIF
- IF IS_CHAR_IN_ZONE criminal UNIVERS
- PRINT_STRING_IN_STRING_NOW C_BREIF UNIVERS 5000 1 // The criminal is proceeding south in Liberty Campus
- ENDIF
- IF IS_CHAR_IN_ZONE criminal CONSTRU
- PRINT_STRING_IN_STRING_NOW C_BREIF CONSTRU 5000 1 // The criminal is proceeding south in Fort Staunton
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PARK
- PRINT_STRING_IN_STRING_NOW C_BREIF PARK 5000 1 // The criminal is proceeding south in Belleville Park
- ENDIF
- IF IS_CHAR_IN_ZONE criminal COM_EAS
- PRINT_STRING_IN_STRING_NOW C_BREIF COM_EAS 5000 1 // The criminal is proceeding south in Newport
- ENDIF
- IF IS_CHAR_IN_ZONE criminal SHOPING
- PRINT_STRING_IN_STRING_NOW C_BREIF SHOPING 5000 1 // The criminal is proceeding south in Bedford Point
- ENDIF
- IF IS_CHAR_IN_ZONE criminal YAKUSA
- PRINT_STRING_IN_STRING_NOW C_BREIF YAKUSA 5000 1 // The criminal is proceeding south in Torrington
- ENDIF
- IF IS_CHAR_IN_ZONE criminal AIRPORT
- PRINT_STRING_IN_STRING_NOW C_BREIF AIRPORT 5000 1 // The criminal is proceeding south in Francis International Airport
- ENDIF
- IF IS_CHAR_IN_ZONE criminal PROJECT
- PRINT_STRING_IN_STRING_NOW C_BREIF PROJECT 5000 1 // The criminal is proceeding south in Wichita Gardens
- ENDIF
- IF IS_CHAR_IN_ZONE criminal SUB_IND
- PRINT_STRING_IN_STRING_NOW C_BREIF SUB_IND 5000 1 // The criminal is proceeding south in Pike Creek
- ENDIF
- IF IS_CHAR_IN_ZONE criminal SWANKS
- PRINT_STRING_IN_STRING_NOW C_BREIF SWANKS 5000 1 // The criminal is proceeding south in Cedar Grove
- ENDIF
- IF IS_CHAR_IN_ZONE criminal BIG_DAM
- PRINT_STRING_IN_STRING_NOW C_BREIF BIG_DAM 5000 1 // The criminal is proceeding south in Cochrane Dam
- ENDIF
- GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
- POLICE_RADIO_MESSAGE criminal_coord_x criminal_coord_y criminal_coord_z
- TIMERB = 0
- DISPLAY_ONSCREEN_TIMER cop_time_limit
- WHILE NOT IS_CHAR_DEAD criminal
- IF cop_time_limit < 1
- IF NOT LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 100.0 100.0 0
- REMOVE_BLIP criminal_blip
- DELETE_CHAR criminal
- criminal_created_flag = 0
- PRINT_NOW C_ESCP 3000 1//"The suspect has escaped!"
- ELSE
- PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
- ENDIF
- GOTO cop_car_failed
- ENDIF
- GOSUB copcar_cancelled_checks
- IF copcar_cancelled_flag = 1
- GOTO cop_car_failed
- ENDIF
- IF got_car_crim_is_in = 0
- IF NOT IS_CHAR_HEALTH_GREATER criminal 70
- SET_CHAR_OBJ_STEAL_ANY_CAR criminal
- ENDIF
- ENDIF
- IF IS_CHAR_IN_ANY_CAR criminal
- AND got_car_crim_is_in = 0
- MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
- STORE_CAR_CHAR_IS_IN criminal criminal_car
- SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car TRUE
- SET_CAR_DRIVING_STYLE criminal_car 2
- SET_CAR_CRUISE_SPEED criminal_car 42.0
- CAR_WANDER_RANDOMLY criminal_car
- SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
- got_car_crim_is_in = 1
- ENDIF
- IF got_car_crim_is_in = 1
- IF NOT IS_CHAR_IN_ANY_CAR criminal
- GENERATE_RANDOM_INT_IN_RANGE 0 5 range_int
- IF range_int = 0
- SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE criminal player
- ENDIF
- IF range_int = 1
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 150.0 150.0 0
- SET_CHAR_OBJ_STEAL_ANY_CAR criminal
- ELSE
- IF HAS_MODEL_LOADED CAR_SENTINEL
- GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
- GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
- MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
- CREATE_CAR CAR_SENTINEL criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
- SET_CAR_HEADING criminal_car warp_heading_cop
- SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER criminal criminal_car
- ELSE
- SET_CHAR_OBJ_STEAL_ANY_CAR criminal
- ENDIF
- ENDIF
- ENDIF
- IF range_int = 2
- SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
- ENDIF
- IF range_int = 3
- IF IS_PLAYER_IN_ANY_CAR player
- STORE_CAR_PLAYER_IS_IN player players_cop_car
- SET_CHAR_OBJ_DESTROY_CAR criminal players_cop_car
- ELSE
- SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
- ENDIF
- ENDIF
- IF range_int = 4
- GENERATE_RANDOM_INT_IN_RANGE 0 8 range_int
- CHAR_WANDER_DIR criminal -1//range_int//
- ENDIF
- got_car_crim_is_in = 0
- ENDIF
- ENDIF
- IF got_car_crim_is_in = 1
- IF NOT IS_CAR_DEAD criminal_car
- IF TIMERB > 1000
- TIMERB = 0
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 20.0 20.0 0
- SET_CAR_CRUISE_SPEED criminal_car 46.0
- ELSE
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 50.0 50.0 0
- SET_CAR_CRUISE_SPEED criminal_car 39.0
- ELSE
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
- SET_CAR_CRUISE_SPEED criminal_car 32.0
- ELSE
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 130.0 130.0 0
- SET_CAR_CRUISE_SPEED criminal_car 26.0
- ELSE
- SET_CAR_CRUISE_SPEED criminal_car 18.0
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- IF IS_CAR_STOPPED criminal_car
- IF timer_reset_flag = 0
- TIMERA = 0
- timer_reset_flag = 1
- ENDIF
- IF TIMERA > 8000
- AND timer_reset_flag = 1
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
- SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
- timer_reset_flag = 0
- ELSE
- IF NOT IS_CAR_ON_SCREEN criminal_car
- GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
- GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
- IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
- SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
- SET_CAR_HEADING criminal_car warp_heading_cop
- timer_reset_flag = 0
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- IF IS_CAR_UPSIDEDOWN criminal_car
- AND IS_CAR_STOPPED criminal_car
- IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
- SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
- SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car FALSE
- ELSE
- IF NOT IS_CAR_ON_SCREEN criminal_car
- GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
- GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
- IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
- SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
- SET_CAR_HEADING criminal_car warp_heading_cop
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- IF NOT IS_CAR_HEALTH_GREATER criminal_car 250
- SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
- ENDIF
- ENDIF
- ENDIF
- WAIT 0
- ENDWHILE
- }
- MARK_CHAR_AS_NO_LONGER_NEEDED criminal
- MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
- ++ total_criminals_killed
- REGISTER_CRIMINAL_CAUGHT
- ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE
- IF total_criminals_killed = 1
- DISPLAY_ONSCREEN_COUNTER_WITH_STRING total_criminals_killed COUNTER_DISPLAY_NUMBER KILLS
- ENDIF
- REMOVE_BLIP criminal_blip
- vigilante_score = total_criminals_killed * 500
- PRINT_BIG C_PASS 5000 5
- PRINT_WITH_NUMBER_BIG REWARD vigilante_score 5000 6
- ADD_SCORE player vigilante_score
- IF total_criminals_killed = vigilante_bonus_kills
- vigilante = total_criminals_killed * 2
- vigilante *= 500
- PRINT_BIG_Q C_VIGIL 5000 5
- PRINT_WITH_NUMBER_BIG_Q REWARD vigilante 6000 6
- ADD_SCORE player vigilante
- //FLASH_HUD_OBJECT OnscreenCounter
- IF vigilante_bonus_kills = 10
- //ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Get out of jail free!"
- SET_GET_OUT_OF_JAIL_FREE player TRUE
- ENDIF
- vigilante_bonus_kills += 5
- ENDIF
- IF location = 1
- ++ ind_copcar_kills
- ENDIF
- IF location = 2
- ++ com_copcar_kills
- ENDIF
- IF location = 3
- ++ sub_copcar_kills
- ENDIF
- IF play_pager_message1 = 0
- IF ind_copcar_kills = 10
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message1 = 1
- ENDIF
- ENDIF
- IF play_pager_message1 = 1
- IF ind_copcar_kills = 20
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message1 = 2
- ENDIF
- ENDIF
- IF play_pager_message2 = 0
- IF com_copcar_kills = 10
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message2 = 1
- ENDIF
- ENDIF
- IF play_pager_message2 = 1
- IF com_copcar_kills = 20
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message2 = 2
- ENDIF
- ENDIF
- IF play_pager_message3 = 0
- IF sub_copcar_kills = 10
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message3 = 1
- ENDIF
- ENDIF
- IF play_pager_message3 = 1
- IF sub_copcar_kills = 20
- ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
- PLAYER_MADE_PROGRESS 1
- play_pager_message3 = 2
- ENDIF
- ENDIF
- WHILE NOT IS_PLAYER_IN_MODEL player CAR_POLICE
- AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
- AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
- AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
- IF game_time_flag = 0
- GET_GAME_TIMER game_timer_start
- IF cop_time_limit > 60000
- copcar_timer = 60000
- ELSE
- copcar_timer = cop_time_limit
- ENDIF
- game_time_flag = 1
- ENDIF
- GET_GAME_TIMER game_time_present
- game_time_difference = game_time_present - game_timer_start
- copcar_timer -= game_time_difference
- game_timer_start = game_time_present
- timer_in_secs = copcar_timer / 1000
- PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends.
- IF timer_in_secs < 1
- PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
- GOTO cop_car_failed
- ENDIF
- WAIT 0
- ENDWHILE
- IF IS_PLAYER_IN_ANY_CAR player
- STORE_CAR_PLAYER_IS_IN player players_cop_car
- GET_CAR_HEALTH players_cop_car players_cop_car_health
- players_cop_car_health += 100
- SET_CAR_HEALTH players_cop_car players_cop_car_health
- ENDIF
- GOTO cop_car_passed
- /////////////////////////////////////////////////////////////
- cop_car_passed://////////////////////////////////////////////
- /////////////////////////////////////////////////////////////
- CLEAR_ONSCREEN_TIMER cop_time_limit
- REMOVE_BLIP criminal_blip
- IF criminal_created_flag = 1
- MARK_CHAR_AS_NO_LONGER_NEEDED criminal
- criminal_created_flag = 0
- ENDIF
- GOTO next_cop_car
- /////////////////////////////////////////////////////////////
- cop_car_failed://////////////////////////////////////////////
- /////////////////////////////////////////////////////////////
- PRINT_BIG C_FAIL 5000 5
- PRINT_WITH_NUMBER_BIG C_KILLS total_criminals_killed 6000 6
- CLEAR_ONSCREEN_TIMER cop_time_limit
- CLEAR_ONSCREEN_COUNTER total_criminals_killed
- REMOVE_BLIP criminal_blip
- CLEAR_HELP
- MARK_MODEL_AS_NO_LONGER_NEEDED CAR_SENTINEL
- MARK_MODEL_AS_NO_LONGER_NEEDED car_model
- IF criminal_created_flag = 1
- MARK_CHAR_AS_NO_LONGER_NEEDED criminal
- criminal_created_flag = 0
- ENDIF
- flag_player_on_mission = 0
- flag_player_on_cop_mission = 0
- MISSION_HAS_FINISHED
- RETURN
- copcar_cancelled_checks:////////////////////////////////////////////////////////////////
- IF NOT IS_PLAYER_IN_MODEL player CAR_POLICE
- AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
- AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
- AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
- IF game_time_flag = 0
- GET_GAME_TIMER game_timer_start
- IF cop_time_limit > 60000
- copcar_timer = 60000
- ELSE
- copcar_timer = cop_time_limit
- ENDIF
- game_time_flag = 1
- ENDIF
- GET_GAME_TIMER game_time_present
- game_time_difference = game_time_present - game_timer_start
- copcar_timer -= game_time_difference
- game_timer_start = game_time_present
- timer_in_secs = copcar_timer / 1000
- PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to a squad car before the mission ends.
- IF timer_in_secs < 1
- PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
- copcar_cancelled_flag = 1
- RETURN
- ENDIF
- ENDIF
- GET_CONTROLLER_MODE controlmode
- IF IS_PLAYER_IN_MODEL player CAR_POLICE
- OR IS_PLAYER_IN_MODEL player CAR_ENFORCER
- OR IS_PLAYER_IN_MODEL player CAR_RHINO
- OR IS_PLAYER_IN_MODEL player CAR_FBI
- IF NOT controlmode = 3
- IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
- mission_end_button = 1
- ENDIF
- ELSE
- IF IS_BUTTON_PRESSED PAD1 SQUARE
- mission_end_button = 1
- ENDIF
- ENDIF
- game_time_flag = 0
- ENDIF
- IF mission_end_button = 1
- IF NOT controlmode = 3
- IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
- PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
- copcar_cancelled_flag = 1
- RETURN
- ENDIF
- ELSE
- IF NOT IS_BUTTON_PRESSED PAD1 SQUARE
- PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
- copcar_cancelled_flag = 1
- RETURN
- ENDIF
- ENDIF
- ENDIF
- RETURN///////////////////////////////////////////////////////////////////////////////////
Add Comment
Please, Sign In to add comment