Advertisement
HolywoodJack

Tank Fire 1.21 [slower fire rate]

Oct 22nd, 2016
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.93 KB | None | 0 0
  1. {$CLEO}
  2. 0000: TF_1_21
  3.  
  4. REPEAT
  5. wait 250
  6. UNTIL 0256: player $PLAYER_CHAR defined
  7.  
  8. CONST
  9. ped = 25@
  10. veh = 31@
  11. time = 1000 // 1000 ms = 1 second
  12. END
  13.  
  14. VAR
  15. ped: int
  16. veh: int
  17. time: int
  18. END
  19.  
  20. IF 0AA9: game_version_original
  21. THEN
  22. 27@ = 0x6AECE9 // NOP 6 ---> constFire
  23. 0A8C: write_memory 0x6AED10 size 2 value 150 virtual_protect 1 // the interval between shots 800 ms
  24. 0A8C: write_memory 0x6AF0AC size 1 value 2 virtual_protect 1 // explo ID
  25. 0A8C: write_memory 0x871080 size 4 value 0.0 virtual_protect 1 // g_fTankPushingPower dd -0.1
  26. // distanceShot-------------------------------------------------------> // def flt_858B34 60.0f [XYZ]
  27. 0A8C: write_memory 0x6AEF42 size 4 value 0x858A48 virtual_protect 1 // *X flt_858A48 200.0
  28. 0A8C: write_memory 0x6AEF56 size 4 value 0x858A48 virtual_protect 1 // *Y flt_858A48 200.0
  29. 0A8C: write_memory 0x6AEF65 size 4 value 0x858A48 virtual_protect 1 // *Z flt_858A48 200.0
  30. ELSE
  31. 27@ = 0x6AF509 // NOP 6 ---> constFire
  32. 0A8C: write_memory 0x6AF530 size 2 value 150 virtual_protect 1 // the interval between shots 800 ms
  33. 0A8C: write_memory 0x6AF8CC size 1 value 2 virtual_protect 1 // explo ID
  34. 0A8C: write_memory 0x8720B8 size 4 value 0.0 virtual_protect 1 // g_fTankPushingPower dd -0.1
  35. // distanceShot-------------------------------------------------------> // def flt_859B34 60.0f [XYZ]
  36. 0A8C: write_memory 0x6AF762 size 4 value 0x859A48 virtual_protect 1 // *X flt_859A48 200.0
  37. 0A8C: write_memory 0x6AF776 size 4 value 0x859A48 virtual_protect 1 // *Y flt_859A48 200.0
  38. 0A8C: write_memory 0x6AF785 size 4 value 0x859A48 virtual_protect 1 // *Z flt_859A48 200.0
  39. END
  40.  
  41. REPEAT
  42. wait 0
  43. IF 00DD: actor $PLAYER_ACTOR driving_car_with_model #RHINO
  44. THEN
  45. gosub @setupPlayerTank
  46. END
  47. UNTIL 010F: player $PLAYER_CHAR wanted_level > 5
  48.  
  49. 0247: request_model 1582
  50. 038B: load_requested_models
  51. 32@ = 0
  52.  
  53. REPEAT
  54. wait 0
  55. IF 00DD: actor $PLAYER_ACTOR driving_car_with_model #RHINO
  56. THEN
  57. gosub @setupPlayerTank
  58. END
  59. UNTIL 32@ >= 2500
  60.  
  61. WHILE TRUE
  62. wait 0
  63. IF 0AA9: game_version_original
  64. THEN
  65. 23@ = 0xB74490
  66. 29@ = 0xB74494
  67. ELSE
  68. 23@ = 0xB76B10
  69. 29@ = 0xB76B14
  70. END
  71.  
  72. 0A8D: 23@ = read_memory 23@ size 4 virtual_protect 0
  73. 23@ += 0x4
  74. 0A8D: 23@ = read_memory 23@ size 4 virtual_protect 0
  75. FOR 24@ = 0 to 35584 step 0x100 // 8B00
  76. 0A8D: ped = read_memory 23@ size 1 virtual_protect 0
  77. 000A: 23@ += 0x1
  78. IF AND
  79. 0029: ped >= 0x00
  80. 001B: 0x80 > ped
  81. THEN
  82. 005A: ped += 24@
  83. IF AND
  84. 010F: player $PLAYER_CHAR wanted_level > 5
  85. 056D: actor ped defined
  86. THEN
  87. IF 8449: NOT actor ped in_a_car
  88. THEN
  89. 089F: get_actor ped pedtype_to 28@
  90. 0A96: 5@ = actor ped struct
  91. 000A: 5@ += 0x484
  92. 0006: 26@ = 0
  93. 0A8D: 26@ = read_memory 5@ size 1 virtual_protect 1
  94. IF AND
  95. 0184: actor ped health >= 97
  96. 8A32: NOT actor ped on_turret_of_car
  97. 8039: NOT 28@ == 0
  98. 8039: NOT 28@ == 6
  99. 0039: 26@ == 1
  100. THEN
  101. 00A0: store_actor $PLAYER_ACTOR position_to 8@ 9@ 10@
  102. 05DA: AS_actor ped run_away_in_panic_from 8@ 9@ 10@ away_radius 1000.0 timelimit -1
  103. 0223: set_actor ped health_to 95
  104. END
  105. ELSE
  106. 03C0: 18@ = actor ped car
  107. 089F: get_actor ped pedtype_to 28@
  108. 0A96: 5@ = actor ped struct
  109. 000A: 5@ += 0x484
  110. 0006: 26@ = 0
  111. 0A8D: 26@ = read_memory 5@ size 1 virtual_protect 1
  112. IF AND
  113. 8975: NOT car 18@ emergency_vehicle
  114. 0184: actor ped health >= 97
  115. 8A32: NOT actor ped on_turret_of_car
  116. 8039: NOT 28@ == 0
  117. 8039: NOT 28@ == 6
  118. 0039: 26@ == 1
  119. 0104: actor ped near_actor $PLAYER_ACTOR radius 40.0 40.0 40.0 sphere 0
  120. 02CA: car 18@ bounding_sphere_visible
  121. THEN
  122. 0633: AS_actor ped exit_car
  123. END
  124. END
  125.  
  126. IF AND
  127. 82F2: NOT actor ped model == #LAPD1
  128. 82F2: NOT actor ped model == #SFPD1
  129. 82F2: NOT actor ped model == #LVPD1
  130. 82F2: NOT actor ped model == #CSHER
  131. 82F2: NOT actor ped model == #DSHER
  132. 82F2: NOT actor ped model == #SWAT
  133. 82F2: NOT actor ped model == #FBI
  134. 82F2: NOT actor ped model == #ARMY
  135. THEN
  136. 03C0: 18@ = actor ped car
  137. 089F: get_actor ped pedtype_to 28@
  138. 0A96: 5@ = actor ped struct
  139. 000A: 5@ += 0x484
  140. 0006: 26@ = 0
  141. 0A8D: 26@ = read_memory 5@ size 1 virtual_protect 1
  142. IF AND
  143. 8A32: NOT actor ped on_turret_of_car
  144. 8039: NOT 28@ == 0
  145. 0039: 28@ == 6
  146. 8449: NOT actor ped in_a_car
  147. 0184: actor ped health >= 97
  148. THEN
  149. 060B: set_actor ped decision_maker_to 1
  150. 0223: set_actor ped health_to 95
  151. END
  152. END
  153. END
  154. END
  155. END
  156.  
  157. 0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
  158.  
  159. 29@ += 0x4
  160. 0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
  161. FOR 30@ = 0 to 27904 step 0x100
  162. 0A8D: veh = read_memory 29@ size 1 virtual_protect 0
  163.  
  164. 000A: 29@ += 0x1
  165. IF AND
  166. 0029: veh >= 0x00
  167. 001B: 0x80 > veh
  168. THEN
  169. 005A: veh += 30@
  170. IF 00DD: actor $PLAYER_ACTOR driving_car_with_model #RHINO
  171. THEN
  172. gosub @setupPlayerTank
  173. gosub @ExplosionEvant
  174. END
  175.  
  176. IF 010F: player $PLAYER_CHAR wanted_level > 5
  177. THEN
  178. IF AND
  179. 8449: NOT actor $PLAYER_ACTOR in_a_car
  180. 84AD: NOT actor $PLAYER_ACTOR in_water
  181. 0AB0: key_pressed 0x11
  182. 0AB0: key_pressed 0x53
  183. THEN
  184. 04D7: set_actor $PLAYER_ACTOR locked 1
  185. 05C4: AS_actor $PLAYER_ACTOR hands_up -1 ms
  186. 0A96: 0@ = actor $PLAYER_ACTOR struct
  187. 000A: 0@ += 0x530
  188. 0A8C: write_memory 0@ size 1 value 63 virtual_protect 1
  189. 0006: 32@ = 0
  190. REPEAT
  191. wait 0
  192. UNTIL 0029: 32@ >= 4500
  193. 04D7: set_actor $PLAYER_ACTOR locked 0
  194. 0687: clear_actor $PLAYER_ACTOR task
  195. END
  196.  
  197. IF 056E: car veh defined
  198. THEN
  199. IF 0137: car veh model == #RHINO
  200. THEN
  201.  
  202. IF OR
  203. 031E: car veh hit_by_weapon 16
  204. 031E: car veh hit_by_weapon 19
  205. 031E: car veh hit_by_weapon 35
  206. 031E: car veh hit_by_weapon 36
  207. 031E: car veh hit_by_weapon 40
  208. THEN
  209. 046C: 4@ = car veh driver
  210. IF 056D: actor 4@ defined
  211. THEN
  212. 009B: destroy_actor 4@
  213. 020B: explode_car veh
  214. ELSE
  215. 020B: explode_car veh
  216. END
  217. END
  218.  
  219. 046C: 4@ = car veh driver
  220. IF AND
  221. 8119: NOT car veh wrecked
  222. 80DB: NOT actor $PLAYER_ACTOR in_car veh
  223. 81F3: NOT car veh in_air
  224. 056D: actor 4@ defined
  225. 010F: player $PLAYER_CHAR wanted_level > 5
  226. 0256: player $PLAYER_CHAR defined
  227. THEN
  228.  
  229. IF 04AD: actor 4@ in_water
  230. THEN
  231. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  232. 07E1: AS_actor 4@ swim_to 5@ 6@ 7@
  233. END
  234.  
  235. IF AND
  236. 02F2: actor 4@ model == #ARMY
  237. 00DF: actor 4@ driving
  238. 010F: player $PLAYER_CHAR wanted_level > 5
  239. THEN
  240.  
  241. IF 8491: NOT actor 4@ has_weapon 16
  242. THEN
  243. 054A: set_actor 4@ can_be_shot_in_a_car 1
  244. 04D8: set_actor 4@ drowns_in_water 0
  245. 048F: actor 4@ remove_weapons
  246. 01B2: give_actor 4@ weapon 45 ammo 9999
  247. 01B2: give_actor 4@ weapon 16 ammo 9999
  248. 01B2: give_actor 4@ weapon 31 ammo 9999
  249. END
  250.  
  251. IF 03CA: object 13@ exists
  252. THEN
  253.  
  254. IF AND
  255. 0137: car veh model == #RHINO
  256. 8119: NOT car veh wrecked
  257. THEN
  258. IF AND
  259. 010F: player $PLAYER_CHAR wanted_level > 6
  260. 0897: car veh collided_with_object 13@
  261. THEN
  262. IF 056D: actor 4@ defined
  263. THEN
  264. 009B: destroy_actor 4@
  265. 020B: explode_car veh
  266. ELSE
  267. 020B: explode_car veh
  268. END
  269. END
  270. END
  271. END
  272.  
  273. 03C0: 18@ = actor $PLAYER_ACTOR car
  274. IF AND
  275. 056E: car 18@ defined
  276. 03CA: object 13@ exists
  277. THEN
  278. IF 0449: actor $PLAYER_ACTOR in_a_car
  279. THEN
  280. IF AND
  281. 010F: player $PLAYER_CHAR wanted_level > 6
  282. 00DD: actor $PLAYER_ACTOR driving_car_with_model #RHINO
  283. 0897: car 18@ collided_with_object 13@
  284. THEN
  285. 000A: 19@ += 1
  286. IF 0029: 19@ >= 50
  287. THEN
  288. 0224: set_car 18@ health_to 100
  289. 0006: 19@ = 0
  290. END
  291. END
  292. END
  293. END
  294.  
  295. 02AA: set_car veh immune_to_nonplayer 1
  296. 00AA: store_car veh position_to 8@ 9@ 10@
  297. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  298. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  299. 0174: 7@ = car veh Z_angle
  300. 0063: 6@ -= 7@
  301. 0017: 6@ /= 57.295779513082320876798154814105 // rad
  302. 0A97: 5@ = car veh struct
  303. 000A: 5@ += 0x94C // HA
  304. 0A8C: write_memory 5@ size 4 value 6@ virtual_protect 1
  305.  
  306. 00AA: store_car veh position_to 8@ 9@ 10@
  307. 00A0: store_actor $PLAYER_ACTOR position_to 6@ 7@ 12@
  308. 0509: 11@ = distance_between_XY 6@ 7@ and_XY 8@ 9@
  309. IF AND
  310. 0031: 11@ >= 10.0
  311. 0025: 12@ > 10@
  312. THEN
  313. 0A97: 5@ = car veh struct
  314. 000A: 5@ += 0x950 // VA
  315. 0006: 26@ = 0
  316. 0A8D: 26@ = read_memory 5@ size 4 virtual_protect 1
  317. IF 0021: 26@ > 1.221730476396031
  318. THEN
  319. gosub @getVerticalAngle
  320. 0A97: 5@ = car veh struct
  321. 000A: 5@ += 0x950 // VA
  322. 0A8C: write_memory 5@ size 4 value 1.221730476396031 virtual_protect 1
  323. ELSE
  324. gosub @getVerticalAngle
  325. 0A97: 5@ = car veh struct
  326. 000A: 5@ += 0x950 // VA
  327. 0A8C: write_memory 5@ size 4 value 8@ virtual_protect 1
  328. END
  329. END
  330.  
  331. 00AA: store_car veh position_to 8@ 9@ 10@
  332. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  333. IF 06BD: no_obstacles_between 5@ 6@ 7@ and 8@ 9@ 10@ solid 1 car 0 actor 0 object 0 particle 0
  334. THEN
  335. IF OR
  336. 02CA: car veh bounding_sphere_visible
  337. 0205: actor $PLAYER_ACTOR near_car veh radius 500.0 500.0 500.0 flag 0
  338. THEN
  339. 00AA: store_car veh position_to 8@ 9@ 10@
  340. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  341. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  342.  
  343. 02F6: 15@ = cos 6@
  344. 02F7: 16@ = sin 6@
  345. 0013: 15@ *= 225.0
  346. 0013: 16@ *= 225.0
  347. 0013: 15@ *= -1.0
  348.  
  349. gosub @getVerticalAngle
  350. 00AA: store_car veh position_to 9@ 9@ 10@
  351. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  352. IF 0025: 7@ > 10@
  353. THEN
  354. 0013: 8@ *= 225.0
  355. 0087: 17@ = 8@
  356. ELSE
  357. 0013: 8@ *= -225.0
  358. 0087: 17@ = 8@
  359. END
  360. END
  361.  
  362. IF 03CA: object 13@ exists
  363. THEN
  364. 05C0: AS_actor $PLAYER_ACTOR look_at_car veh 1000 ms
  365.  
  366. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  367. IF AND
  368. 04E6: object 13@ near_point 5@ 6@ 7@ radius 1.0 1.0 1.0 flag 0
  369. 8449: NOT actor $PLAYER_ACTOR in_a_car
  370. THEN
  371. ////////////////////////////////////////
  372. END
  373.  
  374. IF 0205: actor $PLAYER_ACTOR near_car veh radius 500.0 500.0 500.0 flag 0
  375. THEN
  376. 0392: make_object 13@ moveable 1
  377. 0381: throw_object 13@ velocity_in_direction 15@ 16@ 17@
  378.  
  379. 00AA: store_car veh position_to 8@ 9@ 10@
  380. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  381. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  382. 0453: set_object 13@ XY_rotation 0.0 0.0 angle 6@
  383. 0174: 7@ = car veh Z_angle
  384. 0063: 6@ -= 7@
  385. 02F6: 15@ = sine 6@
  386. 02F7: 16@ = cosine 6@
  387. 0013: 15@ *= 7.0
  388. 0013: 16@ *= 7.0
  389. 0013: 15@ *= -1.0
  390.  
  391. 00AA: store_car veh position_to 8@ 9@ 10@
  392. IF 84E5: NOT object 13@ near_point 8@ 9@ radius 10.0 10.0 sphere 0
  393. THEN
  394. 01BB: store_object 13@ position_to 5@ 6@ 7@
  395. 095C: create_smoke_at 5@ 6@ 7@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 0.5 last_factor 0.075
  396. END
  397.  
  398. IF OR
  399. 32@ >= time
  400. 04DA: object 13@ collided
  401. THEN
  402. 00AA: store_car veh position_to 8@ 9@ 10@
  403. IF 04E6: object 13@ near_point 8@ 9@ 10@ radius 20.0 20.0 20.0 flag 0
  404. THEN
  405. 0108: destroy_object 13@
  406. 32@ = 0
  407. ELSE
  408. IF 0205: actor $PLAYER_ACTOR near_car veh radius 10.0 10.0 10.0 flag 0
  409. THEN
  410. IF 0019: 33@ > 0
  411. THEN
  412. 01BB: store_object 13@ position_to 5@ 6@ 7@
  413. 0948: create_explosion_at 5@ 6@ 7@ type 3 camera_shake 0.5
  414. 08EB: create_sparks_at 5@ 6@ 7@ velocity_direction 10.0 10.0 10.0 density 60
  415. 0108: destroy_object 13@
  416. 32@ = 0
  417. 0006: 33@ = 0
  418. END
  419. ELSE
  420. 01BB: store_object 13@ position_to 5@ 6@ 7@
  421. 0948: create_explosion_at 5@ 6@ 7@ type 3 camera_shake 0.5
  422. 08EB: create_sparks_at 5@ 6@ 7@ velocity_direction 10.0 10.0 10.0 density 60
  423. 0108: destroy_object 13@
  424. 32@ = 0
  425. 0006: 33@ = 0
  426. END
  427. END
  428. END
  429. END
  430. ELSE
  431.  
  432. 00AA: store_car veh position_to 8@ 9@ 10@
  433. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  434. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  435. 0174: 7@ = car veh Z_angle
  436. 0063: 6@ -= 7@
  437. 02F6: 15@ = sine 6@
  438. 02F7: 16@ = cosine 6@
  439. 0013: 15@ *= 7.0
  440. 0013: 16@ *= 7.0
  441. 0013: 15@ *= -1.0
  442.  
  443. 0407: store_coords_to 8@ 9@ 10@ from_car veh with_offset 15@ 16@ 1.2
  444. 0107: 14@ = create_object 1582 at 8@ 9@ 10@
  445. 050E: set_object 14@ no_collision_with_car veh
  446. 0177: set_object 14@ Z_angle_to 6@
  447.  
  448. 0750: set_object 14@ visibility 0
  449. 04D9: object 14@ set_scripted_collision_check 1
  450. 0382: set_object 14@ collision_detection 0
  451. 0723: break_object 14@ intensity 0
  452.  
  453. 01BB: store_object 14@ position_to 8@ 9@ 10@
  454. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  455. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 11@
  456. 02F6: 20@ = cos 11@ // (float)
  457. 02F7: 21@ = sin 11@ // (float)
  458. 0013: 20@ *= 27.0
  459. 0013: 21@ *= 27.0
  460. 0013: 20@ *= -1.0
  461. gosub @getVerticalAngle
  462. 0087: 22@ = 8@
  463. 00AA: store_car veh position_to 8@ 9@ 10@
  464. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  465. IF 0025: 10@ > 7@
  466. THEN
  467. 0013: 22@ *= -125.0
  468. ELSE
  469. 0013: 22@ *= 125.0
  470. END
  471.  
  472. 0400: store_coords_to 5@ 6@ 7@ from_object 14@ with_offset 20@ 21@ 22@
  473. 01BB: store_object 14@ position_to 8@ 9@ 10@
  474. IF 8202: NOT actor $PLAYER_ACTOR near_car veh radius 7.0 7.0 sphere 0
  475. THEN
  476. IF 0AA9: game_version_original
  477. THEN
  478. 0AA5: call 0x4A0FA0 num_params 2 pop 0 20@v 8@v // TriggerTankFire
  479. ELSE
  480. 0AA5: call 0x4A1020 num_params 2 pop 0 20@v 8@v // TriggerTankFire
  481. END
  482. END
  483. 0108: destroy_object 14@
  484.  
  485. 00AA: store_car veh position_to 8@ 9@ 10@
  486. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  487. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  488. 0174: 7@ = car veh Z_angle
  489. 0063: 6@ -= 7@
  490. 02F6: 15@ = sine 6@
  491. 02F7: 16@ = cosine 6@
  492. 0013: 15@ *= 7.0
  493. 0013: 16@ *= 7.0
  494. 0013: 15@ *= -1.0
  495.  
  496. gosub @getVerticalAngle
  497. 00AA: store_car veh position_to 9@ 9@ 10@
  498. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  499. IF 0025: 7@ > 10@
  500. THEN
  501. 0013: 8@ *= 1.0
  502. 0087: 17@ = 8@
  503. ELSE
  504. 0013: 8@ *= 1.0
  505. 0087: 17@ = 8@
  506. END
  507.  
  508. IF 32@ >= time
  509. THEN
  510. 0407: store_coords_to 8@ 9@ 10@ from_car veh with_offset 15@ 16@ 1.5
  511. 0107: 13@ = create_object 1582 at 8@ 9@ 10@
  512. 32@ = 0
  513. 050E: set_object 13@ no_collision_with_car veh
  514. 0177: set_object 13@ Z_angle_to 6@
  515.  
  516. 0750: set_object 13@ visibility 0
  517. 04D9: object 13@ set_scripted_collision_check 1
  518. 0382: set_object 13@ collision_detection 1
  519. 0906: set_object 13@ mass_to 200.0
  520. 0908: set_object 13@ turn_mass_to 200.0
  521. 0006: 32@ = 0
  522. END
  523. END
  524. END
  525. END
  526. END
  527. END
  528. END
  529. END
  530. END
  531. END
  532. END
  533.  
  534. :getAngleBetweenPoints
  535. 0063: 0@ -= 2@
  536. 0063: 1@ -= 3@
  537. 0604: get_Z_angle_for_point 0@ 1@ store_to 6@
  538. 0AB2: ret 1 6@
  539.  
  540. :getVerticalAngle
  541. 0407: store_coords_to 8@ 9@ 10@ from_car veh with_offset 0.0 0.0 0.0
  542. 00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
  543. 0063: 7@ -= 10@
  544. 0097: make 7@ absolute_float // a
  545. 050A: 11@ = distance_between_XYZ 8@ 9@ 10@ and_XYZ 5@ 6@ 7@ // c
  546. 0073: 7@ /= 11@ // SIN_VA
  547.  
  548. 0087: 8@ = 7@ // X
  549. 0087: 9@ = 7@ // X
  550. 0087: 5@ = 7@ // X
  551. 0087: 6@ = 7@ // X
  552. 0087: 7@ = 7@ // X
  553.  
  554. 006B: 9@ *= 7@ // X^2
  555. 006B: 9@ *= 7@ // X^3
  556. 006B: 5@ *= 7@ // X^4
  557. 006B: 5@ *= 7@ // X^5
  558. 006B: 6@ *= 7@ // X^6
  559. 006B: 6@ *= 7@ // X^7
  560. 006B: 7@ *= 7@ // X^8
  561. 006B: 7@ *= 7@ // X^9
  562.  
  563. 0017: 9@ /= 6.0 // X^3/6
  564.  
  565. 0013: 5@ *= 3.0
  566. 0017: 5@ /= 40.0 // 3X^5/40
  567.  
  568. 0013: 6@ *= 5.0
  569. 0017: 6@ /= 112.0 // 5X^7/112
  570.  
  571. 0013: 7@ *= 35.0
  572. 0017: 7@ /= 1152.0 // 35X^9/1152
  573.  
  574. 005B: 8@ += 9@
  575. 0087: 12@ = 8@
  576. 005B: 8@ += 5@
  577.  
  578. 005B: 8@ += 12@
  579. 0017: 8@ /= 2.0 // ARC SIN(SIN_VA)= VA
  580. return
  581.  
  582. :setupPlayerTank
  583. 26@ = 0
  584. IF 0AA9: game_version_original
  585. THEN
  586. 0A8D: 26@ = read_memory 0xB73405 size 1 virtual_protect 1 // RMB
  587. ELSE
  588. 0A8D: 26@ = read_memory 0xB75A85 size 1 virtual_protect 1 // RMB
  589. END
  590.  
  591. IF 26@ <> 0
  592. THEN
  593. 26@ = 0
  594. 0A8D: 26@ = read_memory 27@ size 4 virtual_protect 1 // RMB
  595. IF 26@ <> 0x90909090
  596. THEN
  597. 0A8C: write_memory 27@ size 4 value 0x90909090 virtual_protect 1
  598. 27@ += 4
  599. 0A8C: write_memory 27@ size 2 value 0x9090 virtual_protect 1
  600. 27@ += -4
  601. END
  602. ELSE
  603. 26@ = 0
  604. 0A8D: 26@ = read_memory 27@ size 4 virtual_protect 1 // RMB
  605. IF 26@ == 0x90909090
  606. THEN
  607. 0A8C: write_memory 27@ size 4 value 0x040B840F virtual_protect 1
  608. 27@ += 4
  609. 0A8C: write_memory 27@ size 2 value 0x0000 virtual_protect 1
  610. 27@ += -4
  611. END
  612. END
  613.  
  614. 03C0: 18@ = actor $PLAYER_ACTOR car
  615. 00AA: store_car 18@ position_to 5@ 6@ 7@
  616. 068E: get_camera_target_point_to 8@ 9@ 10@
  617. 0AB1: call_scm_func @getAngleBetweenPoints 4 from_XY 5@ 6@ and_XY 8@ 9@ store_to 6@
  618. 0174: 7@ = car 18@ Z_angle
  619. 0063: 6@ -= 7@
  620. 0017: 6@ /= 57.295779513082320876798154814105 // rad
  621. 0A97: 5@ = car 18@ struct
  622. 000A: 5@ += 0x94C // HA
  623. 0A8C: write_memory 5@ size 4 value 6@ virtual_protect 1
  624. return
  625.  
  626. :ExplosionEvant
  627. 00AA: store_car veh position_to 8@ 9@ 10@
  628. 000F: 8@ -= 7.0
  629. 000F: 9@ -= 7.0
  630. 000F: 10@ -= 7.0
  631. 00AA: store_car veh position_to 5@ 6@ 7@
  632. 000F: 5@ -= -7.0
  633. 000F: 6@ -= -7.0
  634. 000F: 7@ -= -7.0
  635. IF 8119: NOT car veh wrecked
  636. THEN
  637. IF AND
  638. 8356: NOT explosion_type 3 in_cube_cornerA 8@ 9@ 10@ cornerB 5@ 6@ 7@
  639. 0356: explosion_type -1 in_cube_cornerA 8@ 9@ 10@ cornerB 5@ 6@ 7@
  640. 80DB: NOT actor $PLAYER_ACTOR in_car veh
  641. THEN
  642. 020B: explode_car veh
  643. END
  644. END
  645. return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement