R4gn0r0k

copcar.sc

Feb 3rd, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.50 KB | None | 0 0
  1. MISSION_START
  2. // *****************************************************************************************
  3. // *****************************************************************************************
  4. // *****************************************************************************************
  5. // *********************************** Cop Car Mission *************************************
  6. // *****************************************************************************************
  7. // *****************************************************************************************
  8. // *****************************************************************************************
  9.  
  10. // Mission start stuff
  11.  
  12. GOSUB mission_start_cop_car
  13.  
  14. GOSUB cop_car_failed
  15.  
  16. MISSION_END
  17.  
  18. // Variables for mission
  19.  
  20. VAR_INT got_range_message player_in_range car_model criminal_car range_int mission_end_button total_criminals_killed players_cop_car_health
  21. 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
  22. 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
  23.  
  24. 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
  25. 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
  26.  
  27. // ****************************************Mission Start************************************
  28.  
  29. mission_start_cop_car:
  30.  
  31. flag_player_on_mission = 1
  32. flag_player_on_cop_mission = 1
  33. vigilante_bonus_kills = 5
  34.  
  35. SCRIPT_NAME copcar
  36.  
  37. total_criminals_killed = 0
  38. got_cop_breif = 0
  39.  
  40. WAIT 0
  41.  
  42. next_cop_car:
  43.  
  44. got_range_message = 0
  45. player_in_range = 0
  46. car_model = 0
  47. criminal_car = 0
  48. criminal_created_flag = 0
  49. criminal = 0
  50. criminal_blip = 0
  51. random_gun = 0
  52. cop_time_limit = 0
  53. got_car_crim_is_in = 0
  54. timer_reset_flag = 0
  55. game_time_flag = 0
  56. mission_end_button = 0
  57. location = 0
  58. copcar_cancelled_flag = 0
  59.  
  60. player_c_x = 0.0
  61. player_c_y = 0.0
  62. player_c_z = 0.0
  63. random_crim_x = 0.0
  64. random_crim_y = 0.0
  65. criminal_coord_x = 0.0
  66. criminal_coord_y = 0.0
  67. criminal_coord_z = 0.0
  68. diff_x_float = 0.0
  69. diff_y_float = 0.0
  70. sum_of_diff_xy = 0.0
  71. players_distance_from_criminal = 0.0
  72. cop_time_limit_float = 0.0
  73. criminal_heading = 0.0
  74.  
  75. GET_PLAYER_COORDINATES player player_c_x player_c_y player_c_z
  76. REQUEST_MODEL CAR_SENTINEL
  77. {
  78. criminal_in_car://////////////////////////////////////////////////////////////////////////////////////////////////////
  79.  
  80. WAIT 0
  81.  
  82. IF got_cop_breif = 0
  83. PRINT_NOW LEGAL 3000 1
  84. TIMERB = 0
  85. got_cop_breif = 1
  86. ELSE
  87. TIMERB = 3000
  88. ENDIF
  89.  
  90. IF IS_COLLISION_IN_MEMORY LEVEL_INDUSTRIAL
  91. GENERATE_RANDOM_FLOAT_IN_RANGE 778.0 1540.0 random_crim_x
  92. GENERATE_RANDOM_FLOAT_IN_RANGE -1110.0 190.0 random_crim_y
  93. got_range_message = 0
  94. player_in_range = 1
  95. location = 1
  96. ENDIF
  97.  
  98. IF IS_COLLISION_IN_MEMORY LEVEL_COMMERCIAL
  99. GENERATE_RANDOM_FLOAT_IN_RANGE -192.0 545.0 random_crim_x
  100. GENERATE_RANDOM_FLOAT_IN_RANGE -1626.0 98.0 random_crim_y
  101. got_range_message = 0
  102. player_in_range = 1
  103. location = 2
  104. ENDIF
  105.  
  106. IF IS_COLLISION_IN_MEMORY LEVEL_SUBURBAN
  107. GENERATE_RANDOM_FLOAT_IN_RANGE -1300.0 -414.0 random_crim_x
  108. GENERATE_RANDOM_FLOAT_IN_RANGE -608.8 380.0 random_crim_y
  109. got_range_message = 0
  110. player_in_range = 1
  111. location = 3
  112. ENDIF
  113.  
  114. IF player_in_range = 0
  115. IF got_range_message = 0
  116. PRINT_NOW C_RANGE 5000 1 //"The radio is out of range, get closer to a police station!"
  117. got_range_message = 1
  118. ENDIF
  119. GOTO cop_car_failed
  120. ENDIF
  121.  
  122. GOSUB copcar_cancelled_checks
  123. IF copcar_cancelled_flag = 1
  124. GOTO cop_car_failed
  125. ENDIF
  126.  
  127. GET_CLOSEST_CAR_NODE random_crim_x random_crim_y player_c_z criminal_coord_x criminal_coord_y criminal_coord_z
  128.  
  129. IF criminal_coord_x > 1398.0 //MIN_X // COLOMBIAN BOAT
  130. AND criminal_coord_x < 1615.0 //MAX_X
  131. AND criminal_coord_y > -965.0 //MIN_Y
  132. AND criminal_coord_y < -902.0 //MAX_Y
  133. GOTO criminal_in_car
  134. ENDIF
  135.  
  136. IF criminal_coord_x > 879.0 //MIN_X // BACK OF LUIGI'S
  137. AND criminal_coord_x < 892.0 //MAX_X
  138. AND criminal_coord_y > -427.0 //MIN_Y
  139. AND criminal_coord_y < -407.0 //MAX_Y
  140. GOTO criminal_in_car
  141. ENDIF
  142.  
  143. IF criminal_coord_x > 944.8 //MIN_X // FISH FACTORY
  144. AND criminal_coord_x < 1017.1 //MAX_X
  145. AND criminal_coord_y > -1148.8 //MIN_Y
  146. AND criminal_coord_y < -1076.6 //MAX_Y
  147. GOTO criminal_in_car
  148. ENDIF
  149.  
  150. IF criminal_coord_x > 920.8 //MIN_X // CHINATOWN MARKET
  151. AND criminal_coord_x < 1004.0 //MAX_X
  152. AND criminal_coord_y > -754.2 //MIN_Y
  153. AND criminal_coord_y < -670.0 //MAX_Y
  154. GOTO criminal_in_car
  155. ENDIF
  156.  
  157. IF criminal_coord_x > 670.0 //MIN_X // CALAHAN BRIDGE
  158. AND criminal_coord_x < 1035.0 //MAX_X
  159. AND criminal_coord_y > -953.0 //MIN_Y
  160. AND criminal_coord_y < -912.0 //MAX_Y
  161. GOTO criminal_in_car
  162. ENDIF
  163.  
  164. IF criminal_coord_x > 1364.0 //MIN_X // DOCKS INDUSTRIAL
  165. AND criminal_coord_x < 1641.0 //MAX_X
  166. AND criminal_coord_y > -1165.0 //MIN_Y
  167. AND criminal_coord_y < -617.0 //MAX_Y
  168. GOTO criminal_in_car
  169. ENDIF
  170.  
  171. IF criminal_coord_x > 649.0 //MIN_X // TUNNEL ENTRANCE INDUSTRIAL
  172. AND criminal_coord_x < 1066.0 //MAX_X
  173. AND criminal_coord_y > 25.0 //MIN_Y
  174. AND criminal_coord_y < 217.0 //MAX_Y
  175. GOTO criminal_in_car
  176. ENDIF
  177.  
  178. IF criminal_coord_x > -1611.5 //MIN_X // AIRPORT SUBURBAN
  179. AND criminal_coord_x < -745.3 //MAX_X
  180. AND criminal_coord_y > -1001.9 //MIN_Y
  181. AND criminal_coord_y < -371.2 //MAX_Y
  182. GOTO criminal_in_car
  183. ENDIF
  184.  
  185. IF criminal_coord_x > 939.8 //MIN_X // OLD SCHOOL HALL AND PARK AREA
  186. AND criminal_coord_x < 1035.6 //MAX_X
  187. AND criminal_coord_y > -901.3 //MIN_Y
  188. AND criminal_coord_y < -828.2 //MAX_Y
  189. GOTO criminal_in_car
  190. ENDIF
  191.  
  192. IF criminal_coord_x > 1215.3 //MIN_X // DOG FOOD FACTORY
  193. AND criminal_coord_x < 1223.7 //MAX_X
  194. AND criminal_coord_y > -839.4 //MIN_Y
  195. AND criminal_coord_y < -763.6 //MAX_Y
  196. GOTO criminal_in_car
  197. ENDIF
  198.  
  199. IF criminal_coord_x > 845.3 //MIN_X // INDUSTRIAL SAFEHOUSE
  200. AND criminal_coord_x < 899.6 //MAX_X
  201. AND criminal_coord_y > -312.6 //MIN_Y
  202. AND criminal_coord_y < -295.7 //MAX_Y
  203. GOTO criminal_in_car
  204. ENDIF
  205.  
  206. IF criminal_coord_x > 113.3 //MIN_X // DOJO COMMERCIAL
  207. AND criminal_coord_x < 99.7 //MAX_X
  208. AND criminal_coord_y > -1284.8 //MIN_Y
  209. AND criminal_coord_y < -1273.0 //MAX_Y
  210. GOTO criminal_in_car
  211. ENDIF
  212.  
  213. IF criminal_coord_x > 18.33 //MIN_X // COLOMBIAN OJG COMPOUND
  214. AND criminal_coord_x < 92.06 //MAX_X
  215. AND criminal_coord_y > -388.7 //MIN_Y
  216. AND criminal_coord_y < -312.38 //MAX_Y
  217. GOTO criminal_in_car
  218. ENDIF
  219.  
  220. IF criminal_coord_x > -1255.4 //MIN_X // BAIT WAREHOUSE CARPARK SUBURBIA
  221. AND criminal_coord_x < -1187.9 //MAX_X
  222. AND criminal_coord_y > 80.6 //MIN_Y
  223. AND criminal_coord_y < 123.4 //MAX_Y
  224. GOTO criminal_in_car
  225. ENDIF
  226.  
  227. IF criminal_coord_x > 1386.4 //MIN_X // FRANKIES HOUSE
  228. AND criminal_coord_x < 1475.8 //MAX_X
  229. AND criminal_coord_y > -292.1 //MIN_Y
  230. AND criminal_coord_y < -168.0 //MAX_Y
  231. GOTO criminal_in_car
  232. ENDIF
  233.  
  234. IF location = 1
  235. IF NOT criminal_coord_x > 778.0 //MIN_X // INDUSTRIAL
  236. OR NOT criminal_coord_x < 1540.0 //MAX_X
  237. OR NOT criminal_coord_y > -1110.0 //MIN_Y
  238. OR NOT criminal_coord_y < 190.0 //MAX_Y
  239. GOTO criminal_in_car
  240. ENDIF
  241. ENDIF
  242.  
  243. IF location = 2
  244. IF NOT criminal_coord_x > -192.0 //MIN_X // COMMERCIAL
  245. OR NOT criminal_coord_x < 545.0 //MAX_X
  246. OR NOT criminal_coord_y > -1626.0 //MIN_Y
  247. OR NOT criminal_coord_y < 98.0 //MAX_Y
  248. GOTO criminal_in_car
  249. ENDIF
  250. ENDIF
  251.  
  252. IF location = 3
  253. IF NOT criminal_coord_x > -1300.0 //MIN_X // SUBURBIA
  254. OR NOT criminal_coord_x < -414.0 //MAX_X
  255. OR NOT criminal_coord_y > -608.8 //MIN_Y
  256. OR NOT criminal_coord_y < 380.0 //MAX_Y
  257. GOTO criminal_in_car
  258. ENDIF
  259. ENDIF
  260.  
  261. IF criminal_coord_z < -1.0
  262. GOTO criminal_in_car
  263. ENDIF
  264.  
  265. diff_x_float = player_c_x - criminal_coord_x
  266. diff_y_float = player_c_y - criminal_coord_y
  267. diff_x_float = diff_x_float * diff_x_float
  268. diff_y_float = diff_y_float * diff_y_float
  269. sum_of_diff_xy = diff_x_float + diff_y_float
  270. SQRT sum_of_diff_xy players_distance_from_criminal
  271.  
  272. IF players_distance_from_criminal < 150.0
  273. GOTO criminal_in_car
  274. ENDIF
  275.  
  276. cop_time_limit_float = players_distance_from_criminal / 4.0
  277. cop_time_limit_float = cop_time_limit_float * 1000.0
  278. cop_time_limit =# cop_time_limit_float
  279.  
  280. IF cop_time_limit < 120000
  281. cop_time_limit = 120000
  282. ENDIF
  283.  
  284. generate_car_model:
  285.  
  286. GENERATE_RANDOM_INT_IN_RANGE 90 140 car_model
  287.  
  288. IF car_model > 113 // CAR_BUGGY CAR_CORPSE CAR_POLICE CAR_ENFORCER CAR_SECURICAR CAR_BANSHEE BOAT_PREDATOR CAR_BUS
  289. AND car_model < 128 // CAR_RHINO CAR_BARRACKS TRAIN_SUBWAY HELI_POLICE PLANE_DODO CAR_COACH
  290. GOTO generate_car_model
  291. ENDIF
  292.  
  293. IF car_model = 97 // CAR_FIRETRUCK
  294. GOTO generate_car_model
  295. ENDIF
  296.  
  297. IF car_model = 106 // CAR_AMBULANCE
  298. OR car_model = 107 // CAR_FBI
  299. OR car_model = 131 // CAR_RCBANDIT
  300. OR car_model = 140 // PLANE_AIRTRAIN
  301. GOTO generate_car_model
  302. ENDIF
  303.  
  304. REQUEST_MODEL car_model
  305.  
  306. WHILE NOT HAS_MODEL_LOADED car_model
  307. WAIT 0
  308.  
  309. GOSUB copcar_cancelled_checks
  310. IF copcar_cancelled_flag = 1
  311. GOTO cop_car_failed
  312. ENDIF
  313.  
  314. ENDWHILE
  315.  
  316. GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 criminal_heading
  317.  
  318. WHILE NOT TIMERB > 3000
  319. WAIT 0
  320.  
  321. GOSUB copcar_cancelled_checks
  322. IF copcar_cancelled_flag = 1
  323. GOTO cop_car_failed
  324. ENDIF
  325.  
  326. ENDWHILE
  327.  
  328. CREATE_CAR car_model criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
  329. SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
  330. SET_CAR_HEALTH criminal_car 800
  331. MARK_MODEL_AS_NO_LONGER_NEEDED car_model
  332. SET_CAR_HEADING criminal_car criminal_heading
  333.  
  334. GET_CLOSEST_CHAR_NODE criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z
  335. CREATE_RANDOM_CHAR criminal_coord_x criminal_coord_y criminal_coord_z criminal
  336. SET_CHAR_IS_CHRIS_CRIMINAL criminal TRUE
  337. //SET_CHAR_AVOID_LEVEL_TRANSITIONS criminal TRUE
  338. WARP_CHAR_INTO_CAR criminal criminal_car
  339. SET_CHAR_RUNNING criminal TRUE
  340. SET_CHAR_ONLY_DAMAGED_BY_PLAYER criminal TRUE
  341.  
  342. CLEAR_CHAR_THREAT_SEARCH criminal
  343.  
  344. SET_CHAR_PERSONALITY criminal PEDSTAT_TOUGH_GUY
  345.  
  346. SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER1
  347. SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER2
  348. SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER3
  349. SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER4
  350. SET_CHAR_THREAT_SEARCH criminal THREAT_CIVMALE
  351. SET_CHAR_THREAT_SEARCH criminal THREAT_CIVFEMALE
  352. SET_CHAR_THREAT_SEARCH criminal THREAT_COP
  353. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_MAFIA
  354. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_DIABLO
  355. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_TRIAD
  356. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YARDIE
  357. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_COLOMBIAN
  358. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_HOOD
  359. SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YAKUZA
  360. SET_CHAR_THREAT_SEARCH criminal THREAT_EMERGENCY
  361. SET_CHAR_THREAT_SEARCH criminal THREAT_PROSTITUTE
  362. SET_CHAR_THREAT_SEARCH criminal THREAT_CRIMINAL
  363. SET_CHAR_THREAT_SEARCH criminal THREAT_GUN
  364. SET_CHAR_THREAT_SEARCH criminal THREAT_COP_CAR
  365. SET_CHAR_THREAT_SEARCH criminal THREAT_FAST_CAR
  366. SET_CHAR_THREAT_SEARCH criminal THREAT_FIREMAN
  367.  
  368. SET_CHAR_HEED_THREATS criminal TRUE
  369.  
  370. MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
  371.  
  372. IF flag_industrial_passed = 0
  373. GENERATE_RANDOM_INT_IN_RANGE 0 5 random_gun
  374. ENDIF
  375.  
  376. IF flag_industrial_passed = 1
  377. GENERATE_RANDOM_INT_IN_RANGE 2 6 random_gun
  378. ENDIF
  379.  
  380. IF flag_commercial_passed = 1
  381. GENERATE_RANDOM_INT_IN_RANGE 3 10 random_gun
  382. ENDIF
  383.  
  384. GIVE_WEAPON_TO_CHAR criminal random_gun 1000
  385.  
  386. ADD_BLIP_FOR_CHAR criminal criminal_blip
  387.  
  388. CLEAR_HELP
  389.  
  390. IF got_siren_help_before = 0
  391. GET_CONTROLLER_MODE controlmode
  392. IF controlmode = 0
  393. PRINT_HELP SIREN_1 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
  394. ENDIF
  395. IF controlmode = 1
  396. PRINT_HELP SIREN_2 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
  397. ENDIF
  398. IF controlmode = 2
  399. PRINT_HELP SIREN_3 //"To turn on this vehicles sirens tap the ~h~R1 button~w~."
  400. ENDIF
  401. IF controlmode = 3
  402. PRINT_HELP SIREN_4 //"To turn on this vehicles sirens tap the ~h~L3 button~w~."
  403. ENDIF
  404. got_siren_help_before = 1
  405. ENDIF
  406.  
  407. IF IS_CHAR_IN_ZONE criminal PORT_W
  408. PRINT_STRING_IN_STRING_NOW C_BREIF PORT_W 5000 1 // The suspect is in the Callahan Point area.
  409. ENDIF
  410.  
  411. IF IS_CHAR_IN_ZONE criminal PORT_S
  412. PRINT_STRING_IN_STRING_NOW C_BREIF PORT_S 5000 1 // The suspect is in the Atlantic Quays area.
  413. ENDIF
  414.  
  415. IF IS_CHAR_IN_ZONE criminal PORT_E
  416. PRINT_STRING_IN_STRING_NOW C_BREIF PORT_E 5000 1 // The suspect is in the Portland Harbour area.
  417. ENDIF
  418.  
  419. IF IS_CHAR_IN_ZONE criminal PORT_I
  420. PRINT_STRING_IN_STRING_NOW C_BREIF PORT_I 5000 1 // The suspect is in the Trenton area.
  421. ENDIF
  422.  
  423. IF IS_CHAR_IN_ZONE criminal S_VIEW
  424. PRINT_STRING_IN_STRING_NOW C_BREIF S_VIEW 5000 1 // The suspect is in the Portland View area.
  425. ENDIF
  426.  
  427. IF IS_CHAR_IN_ZONE criminal CHINA
  428. PRINT_STRING_IN_STRING_NOW C_BREIF CHINA 5000 1 // The criminal is proceeding south in Chinatown
  429. ENDIF
  430.  
  431. IF IS_CHAR_IN_ZONE criminal EASTBAY
  432. PRINT_STRING_IN_STRING_NOW C_BREIF EASTBAY 5000 1 // The criminal is proceeding south in Portland Beach
  433. ENDIF
  434.  
  435. IF IS_CHAR_IN_ZONE criminal LITTLEI
  436. PRINT_STRING_IN_STRING_NOW C_BREIF LITTLEI 5000 1 // The criminal is proceeding south in Saint Mark's
  437. ENDIF
  438.  
  439. IF IS_CHAR_IN_ZONE criminal REDLIGH
  440. PRINT_STRING_IN_STRING_NOW C_BREIF REDLIGH 5000 1 // The criminal is proceeding south in Red Light District
  441. ENDIF
  442.  
  443. IF IS_CHAR_IN_ZONE criminal TOWERS
  444. PRINT_STRING_IN_STRING_NOW C_BREIF TOWERS 5000 1 // The criminal is proceeding south in Hepburn Heights
  445. ENDIF
  446.  
  447. IF IS_CHAR_IN_ZONE criminal HARWOOD
  448. PRINT_STRING_IN_STRING_NOW C_BREIF HARWOOD 5000 1 // The criminal is proceeding south in Harwood
  449. ENDIF
  450.  
  451. IF IS_CHAR_IN_ZONE criminal ROADBR1
  452. PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR1 5000 1 // The criminal is proceeding south in Callahan Bridge
  453. ENDIF
  454.  
  455. IF IS_CHAR_IN_ZONE criminal ROADBR2
  456. PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR2 5000 1 // The criminal is proceeding south in Callahan Bridge
  457. ENDIF
  458.  
  459. //IF IS_CHAR_IN_ZONE criminal TUNNELP
  460. // PRINT_STRING_IN_STRING_NOW C_BREIF TUNNELP 5000 1 // The criminal is proceeding south in Porter Tunnel
  461. //ENDIF
  462.  
  463. IF IS_CHAR_IN_ZONE criminal STADIUM
  464. PRINT_STRING_IN_STRING_NOW C_BREIF STADIUM 5000 1 // The criminal is proceeding south in Aspatria
  465. ENDIF
  466.  
  467. IF IS_CHAR_IN_ZONE criminal HOSPI_2
  468. PRINT_STRING_IN_STRING_NOW C_BREIF HOSPI_2 5000 1 // The criminal is proceeding south in Rockford
  469. ENDIF
  470.  
  471. IF IS_CHAR_IN_ZONE criminal UNIVERS
  472. PRINT_STRING_IN_STRING_NOW C_BREIF UNIVERS 5000 1 // The criminal is proceeding south in Liberty Campus
  473. ENDIF
  474.  
  475. IF IS_CHAR_IN_ZONE criminal CONSTRU
  476. PRINT_STRING_IN_STRING_NOW C_BREIF CONSTRU 5000 1 // The criminal is proceeding south in Fort Staunton
  477. ENDIF
  478.  
  479. IF IS_CHAR_IN_ZONE criminal PARK
  480. PRINT_STRING_IN_STRING_NOW C_BREIF PARK 5000 1 // The criminal is proceeding south in Belleville Park
  481. ENDIF
  482.  
  483. IF IS_CHAR_IN_ZONE criminal COM_EAS
  484. PRINT_STRING_IN_STRING_NOW C_BREIF COM_EAS 5000 1 // The criminal is proceeding south in Newport
  485. ENDIF
  486.  
  487. IF IS_CHAR_IN_ZONE criminal SHOPING
  488. PRINT_STRING_IN_STRING_NOW C_BREIF SHOPING 5000 1 // The criminal is proceeding south in Bedford Point
  489. ENDIF
  490.  
  491. IF IS_CHAR_IN_ZONE criminal YAKUSA
  492. PRINT_STRING_IN_STRING_NOW C_BREIF YAKUSA 5000 1 // The criminal is proceeding south in Torrington
  493. ENDIF
  494.  
  495. IF IS_CHAR_IN_ZONE criminal AIRPORT
  496. PRINT_STRING_IN_STRING_NOW C_BREIF AIRPORT 5000 1 // The criminal is proceeding south in Francis International Airport
  497. ENDIF
  498.  
  499. IF IS_CHAR_IN_ZONE criminal PROJECT
  500. PRINT_STRING_IN_STRING_NOW C_BREIF PROJECT 5000 1 // The criminal is proceeding south in Wichita Gardens
  501. ENDIF
  502.  
  503. IF IS_CHAR_IN_ZONE criminal SUB_IND
  504. PRINT_STRING_IN_STRING_NOW C_BREIF SUB_IND 5000 1 // The criminal is proceeding south in Pike Creek
  505. ENDIF
  506.  
  507. IF IS_CHAR_IN_ZONE criminal SWANKS
  508. PRINT_STRING_IN_STRING_NOW C_BREIF SWANKS 5000 1 // The criminal is proceeding south in Cedar Grove
  509. ENDIF
  510.  
  511. IF IS_CHAR_IN_ZONE criminal BIG_DAM
  512. PRINT_STRING_IN_STRING_NOW C_BREIF BIG_DAM 5000 1 // The criminal is proceeding south in Cochrane Dam
  513. ENDIF
  514.  
  515. GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
  516. POLICE_RADIO_MESSAGE criminal_coord_x criminal_coord_y criminal_coord_z
  517.  
  518. TIMERB = 0
  519.  
  520. DISPLAY_ONSCREEN_TIMER cop_time_limit
  521.  
  522. WHILE NOT IS_CHAR_DEAD criminal
  523.  
  524. IF cop_time_limit < 1
  525. IF NOT LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 100.0 100.0 0
  526. REMOVE_BLIP criminal_blip
  527. DELETE_CHAR criminal
  528. criminal_created_flag = 0
  529. PRINT_NOW C_ESCP 3000 1//"The suspect has escaped!"
  530. ELSE
  531. PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
  532. ENDIF
  533. GOTO cop_car_failed
  534. ENDIF
  535.  
  536. GOSUB copcar_cancelled_checks
  537. IF copcar_cancelled_flag = 1
  538. GOTO cop_car_failed
  539. ENDIF
  540.  
  541. IF got_car_crim_is_in = 0
  542. IF NOT IS_CHAR_HEALTH_GREATER criminal 70
  543. SET_CHAR_OBJ_STEAL_ANY_CAR criminal
  544. ENDIF
  545. ENDIF
  546.  
  547. IF IS_CHAR_IN_ANY_CAR criminal
  548. AND got_car_crim_is_in = 0
  549. MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
  550. STORE_CAR_CHAR_IS_IN criminal criminal_car
  551. SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car TRUE
  552. SET_CAR_DRIVING_STYLE criminal_car 2
  553. SET_CAR_CRUISE_SPEED criminal_car 42.0
  554. CAR_WANDER_RANDOMLY criminal_car
  555. SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
  556. got_car_crim_is_in = 1
  557. ENDIF
  558.  
  559. IF got_car_crim_is_in = 1
  560. IF NOT IS_CHAR_IN_ANY_CAR criminal
  561. GENERATE_RANDOM_INT_IN_RANGE 0 5 range_int
  562. IF range_int = 0
  563. SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE criminal player
  564. ENDIF
  565. IF range_int = 1
  566. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 150.0 150.0 0
  567. SET_CHAR_OBJ_STEAL_ANY_CAR criminal
  568. ELSE
  569. IF HAS_MODEL_LOADED CAR_SENTINEL
  570. GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
  571. 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
  572. MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
  573. CREATE_CAR CAR_SENTINEL criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
  574. SET_CAR_HEADING criminal_car warp_heading_cop
  575. SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER criminal criminal_car
  576. ELSE
  577. SET_CHAR_OBJ_STEAL_ANY_CAR criminal
  578. ENDIF
  579. ENDIF
  580. ENDIF
  581. IF range_int = 2
  582. SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
  583. ENDIF
  584. IF range_int = 3
  585. IF IS_PLAYER_IN_ANY_CAR player
  586. STORE_CAR_PLAYER_IS_IN player players_cop_car
  587. SET_CHAR_OBJ_DESTROY_CAR criminal players_cop_car
  588. ELSE
  589. SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
  590. ENDIF
  591. ENDIF
  592. IF range_int = 4
  593. GENERATE_RANDOM_INT_IN_RANGE 0 8 range_int
  594. CHAR_WANDER_DIR criminal -1//range_int//
  595. ENDIF
  596. got_car_crim_is_in = 0
  597. ENDIF
  598. ENDIF
  599.  
  600. IF got_car_crim_is_in = 1
  601.  
  602. IF NOT IS_CAR_DEAD criminal_car
  603.  
  604. IF TIMERB > 1000
  605. TIMERB = 0
  606. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 20.0 20.0 0
  607. SET_CAR_CRUISE_SPEED criminal_car 46.0
  608. ELSE
  609. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 50.0 50.0 0
  610. SET_CAR_CRUISE_SPEED criminal_car 39.0
  611. ELSE
  612. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
  613. SET_CAR_CRUISE_SPEED criminal_car 32.0
  614. ELSE
  615. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 130.0 130.0 0
  616. SET_CAR_CRUISE_SPEED criminal_car 26.0
  617. ELSE
  618. SET_CAR_CRUISE_SPEED criminal_car 18.0
  619. ENDIF
  620. ENDIF
  621. ENDIF
  622. ENDIF
  623. ENDIF
  624.  
  625. IF IS_CAR_STOPPED criminal_car
  626. IF timer_reset_flag = 0
  627. TIMERA = 0
  628. timer_reset_flag = 1
  629. ENDIF
  630.  
  631. IF TIMERA > 8000
  632. AND timer_reset_flag = 1
  633. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
  634. SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
  635. timer_reset_flag = 0
  636. ELSE
  637. IF NOT IS_CAR_ON_SCREEN criminal_car
  638. GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
  639. 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
  640. IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
  641. SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
  642. SET_CAR_HEADING criminal_car warp_heading_cop
  643. timer_reset_flag = 0
  644. ENDIF
  645. ENDIF
  646. ENDIF
  647. ENDIF
  648. ENDIF
  649.  
  650. IF IS_CAR_UPSIDEDOWN criminal_car
  651. AND IS_CAR_STOPPED criminal_car
  652. IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
  653. SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
  654. SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car FALSE
  655. ELSE
  656. IF NOT IS_CAR_ON_SCREEN criminal_car
  657. GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
  658. 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
  659. IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
  660. SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
  661. SET_CAR_HEADING criminal_car warp_heading_cop
  662. ENDIF
  663. ENDIF
  664. ENDIF
  665. ENDIF
  666.  
  667. IF NOT IS_CAR_HEALTH_GREATER criminal_car 250
  668. SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
  669. ENDIF
  670.  
  671. ENDIF
  672.  
  673. ENDIF
  674.  
  675. WAIT 0
  676.  
  677. ENDWHILE
  678. }
  679.  
  680. MARK_CHAR_AS_NO_LONGER_NEEDED criminal
  681. MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
  682.  
  683. ++ total_criminals_killed
  684. REGISTER_CRIMINAL_CAUGHT
  685. ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE
  686. IF total_criminals_killed = 1
  687. DISPLAY_ONSCREEN_COUNTER_WITH_STRING total_criminals_killed COUNTER_DISPLAY_NUMBER KILLS
  688. ENDIF
  689.  
  690. REMOVE_BLIP criminal_blip
  691. vigilante_score = total_criminals_killed * 500
  692. PRINT_BIG C_PASS 5000 5
  693. PRINT_WITH_NUMBER_BIG REWARD vigilante_score 5000 6
  694. ADD_SCORE player vigilante_score
  695.  
  696. IF total_criminals_killed = vigilante_bonus_kills
  697. vigilante = total_criminals_killed * 2
  698. vigilante *= 500
  699. PRINT_BIG_Q C_VIGIL 5000 5
  700. PRINT_WITH_NUMBER_BIG_Q REWARD vigilante 6000 6
  701. ADD_SCORE player vigilante
  702. //FLASH_HUD_OBJECT OnscreenCounter
  703. IF vigilante_bonus_kills = 10
  704. //ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Get out of jail free!"
  705. SET_GET_OUT_OF_JAIL_FREE player TRUE
  706. ENDIF
  707. vigilante_bonus_kills += 5
  708. ENDIF
  709.  
  710. IF location = 1
  711. ++ ind_copcar_kills
  712. ENDIF
  713.  
  714. IF location = 2
  715. ++ com_copcar_kills
  716. ENDIF
  717.  
  718. IF location = 3
  719. ++ sub_copcar_kills
  720. ENDIF
  721.  
  722. IF play_pager_message1 = 0
  723. IF ind_copcar_kills = 10
  724. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  725. PLAYER_MADE_PROGRESS 1
  726. play_pager_message1 = 1
  727. ENDIF
  728. ENDIF
  729.  
  730. IF play_pager_message1 = 1
  731. IF ind_copcar_kills = 20
  732. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  733. PLAYER_MADE_PROGRESS 1
  734. play_pager_message1 = 2
  735. ENDIF
  736. ENDIF
  737.  
  738. IF play_pager_message2 = 0
  739. IF com_copcar_kills = 10
  740. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  741. PLAYER_MADE_PROGRESS 1
  742. play_pager_message2 = 1
  743. ENDIF
  744. ENDIF
  745.  
  746. IF play_pager_message2 = 1
  747. IF com_copcar_kills = 20
  748. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  749. PLAYER_MADE_PROGRESS 1
  750. play_pager_message2 = 2
  751. ENDIF
  752. ENDIF
  753.  
  754. IF play_pager_message3 = 0
  755. IF sub_copcar_kills = 10
  756. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  757. PLAYER_MADE_PROGRESS 1
  758. play_pager_message3 = 1
  759. ENDIF
  760. ENDIF
  761.  
  762. IF play_pager_message3 = 1
  763. IF sub_copcar_kills = 20
  764. ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
  765. PLAYER_MADE_PROGRESS 1
  766. play_pager_message3 = 2
  767. ENDIF
  768. ENDIF
  769.  
  770. WHILE NOT IS_PLAYER_IN_MODEL player CAR_POLICE
  771. AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
  772. AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
  773. AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
  774. IF game_time_flag = 0
  775. GET_GAME_TIMER game_timer_start
  776. IF cop_time_limit > 60000
  777. copcar_timer = 60000
  778. ELSE
  779. copcar_timer = cop_time_limit
  780. ENDIF
  781. game_time_flag = 1
  782. ENDIF
  783. GET_GAME_TIMER game_time_present
  784. game_time_difference = game_time_present - game_timer_start
  785. copcar_timer -= game_time_difference
  786. game_timer_start = game_time_present
  787. timer_in_secs = copcar_timer / 1000
  788. PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends.
  789. IF timer_in_secs < 1
  790. PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
  791. GOTO cop_car_failed
  792. ENDIF
  793.  
  794. WAIT 0
  795.  
  796. ENDWHILE
  797.  
  798. IF IS_PLAYER_IN_ANY_CAR player
  799. STORE_CAR_PLAYER_IS_IN player players_cop_car
  800. GET_CAR_HEALTH players_cop_car players_cop_car_health
  801. players_cop_car_health += 100
  802. SET_CAR_HEALTH players_cop_car players_cop_car_health
  803. ENDIF
  804.  
  805. GOTO cop_car_passed
  806.  
  807.  
  808. /////////////////////////////////////////////////////////////
  809. cop_car_passed://////////////////////////////////////////////
  810. /////////////////////////////////////////////////////////////
  811.  
  812. CLEAR_ONSCREEN_TIMER cop_time_limit
  813. REMOVE_BLIP criminal_blip
  814.  
  815. IF criminal_created_flag = 1
  816. MARK_CHAR_AS_NO_LONGER_NEEDED criminal
  817. criminal_created_flag = 0
  818. ENDIF
  819.  
  820. GOTO next_cop_car
  821.  
  822.  
  823. /////////////////////////////////////////////////////////////
  824. cop_car_failed://////////////////////////////////////////////
  825. /////////////////////////////////////////////////////////////
  826.  
  827. PRINT_BIG C_FAIL 5000 5
  828. PRINT_WITH_NUMBER_BIG C_KILLS total_criminals_killed 6000 6
  829. CLEAR_ONSCREEN_TIMER cop_time_limit
  830. CLEAR_ONSCREEN_COUNTER total_criminals_killed
  831. REMOVE_BLIP criminal_blip
  832. CLEAR_HELP
  833. MARK_MODEL_AS_NO_LONGER_NEEDED CAR_SENTINEL
  834. MARK_MODEL_AS_NO_LONGER_NEEDED car_model
  835.  
  836. IF criminal_created_flag = 1
  837. MARK_CHAR_AS_NO_LONGER_NEEDED criminal
  838. criminal_created_flag = 0
  839. ENDIF
  840.  
  841. flag_player_on_mission = 0
  842. flag_player_on_cop_mission = 0
  843. MISSION_HAS_FINISHED
  844. RETURN
  845.  
  846.  
  847.  
  848. copcar_cancelled_checks:////////////////////////////////////////////////////////////////
  849.  
  850. IF NOT IS_PLAYER_IN_MODEL player CAR_POLICE
  851. AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
  852. AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
  853. AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
  854. IF game_time_flag = 0
  855. GET_GAME_TIMER game_timer_start
  856. IF cop_time_limit > 60000
  857. copcar_timer = 60000
  858. ELSE
  859. copcar_timer = cop_time_limit
  860. ENDIF
  861. game_time_flag = 1
  862. ENDIF
  863. GET_GAME_TIMER game_time_present
  864. game_time_difference = game_time_present - game_timer_start
  865. copcar_timer -= game_time_difference
  866. game_timer_start = game_time_present
  867. timer_in_secs = copcar_timer / 1000
  868. PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to a squad car before the mission ends.
  869. IF timer_in_secs < 1
  870. PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
  871. copcar_cancelled_flag = 1
  872. RETURN
  873. ENDIF
  874. ENDIF
  875.  
  876. GET_CONTROLLER_MODE controlmode
  877.  
  878. IF IS_PLAYER_IN_MODEL player CAR_POLICE
  879. OR IS_PLAYER_IN_MODEL player CAR_ENFORCER
  880. OR IS_PLAYER_IN_MODEL player CAR_RHINO
  881. OR IS_PLAYER_IN_MODEL player CAR_FBI
  882. IF NOT controlmode = 3
  883. IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
  884. mission_end_button = 1
  885. ENDIF
  886. ELSE
  887. IF IS_BUTTON_PRESSED PAD1 SQUARE
  888. mission_end_button = 1
  889. ENDIF
  890. ENDIF
  891. game_time_flag = 0
  892. ENDIF
  893.  
  894. IF mission_end_button = 1
  895. IF NOT controlmode = 3
  896. IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
  897. PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
  898. copcar_cancelled_flag = 1
  899. RETURN
  900. ENDIF
  901. ELSE
  902. IF NOT IS_BUTTON_PRESSED PAD1 SQUARE
  903. PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
  904. copcar_cancelled_flag = 1
  905. RETURN
  906. ENDIF
  907. ENDIF
  908. ENDIF
  909.  
  910. RETURN///////////////////////////////////////////////////////////////////////////////////
Add Comment
Please, Sign In to add comment