1. {$CLEO .cs}
  2. 0000: NOP
  3. 30@ = 0
  4. while true
  5. wait 0
  6. 0AAA: 25@ = thread 'DSKOOL' pointer
  7. 0AAA: 26@ = thread 'BSKOOL' pointer
  8. if and //textures
  9. 30@ == 0
  10. 25@ == 0
  11. 26@ == 0
  12. Actor.Driving($PLAYER_ACTOR)
  13. //$Active_Interior == 0
  14. 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
  15. 84A7: not actor $PLAYER_ACTOR driving_boat
  16. //80DD: not actor $PLAYER_ACTOR driving_car_with_model #TAXI
  17. //80DD: not actor $PLAYER_ACTOR driving_car_with_model #CABBIE
  18. then
  19. 03C0: 1@ = actor $PLAYER_ACTOR car
  20. 0390: load_txd_dictionary "SPEED"
  21. 038F: load_texture "STRELK" as 115 // Load dictionary with 0390 first
  22. 038F: load_texture "CIF" as 116 // Load dictionary with 0390 first
  23. 038F: load_texture "CIFN" as 117 // Load dictionary with 0390 first
  24. 038F: load_texture "STRELKN" as 118 // Load dictionary with 0390 first
  25. 30@ = 1
  26. {else
  27. 03F0: enable_text_draw 0
  28. 0391: release_txd_dictionary
  29. 30@ = 0 }
  30. end //textures
  31.  
  32.  
  33. while 30@ == 1
  34. wait 0
  35. gosub @CutsceneCheck
  36. gosub @WideScreenCheck
  37. 00BF: 12@ = current_time_hours, 13@ = current_time_minutes
  38. if and
  39. 056E: car 1@ defined
  40. 29@ == FALSE
  41. 28@ == FALSE
  42. 12@ > 6
  43. then
  44. //02E3: 2@ = car 1@ speed
  45. //2@ *= 4.0
  46. 0AB1: call_scm_func @time 0
  47. 0AB1: call_scm_func @GEAR 0 23@
  48. 03F0: enable_text_draw 1
  49. 03E3: set_texture_to_be_drawn_antialiased 1
  50. 038D: draw_texture 116 position 550.0 360.0 size 191.25 170.0 RGBA 255 255 255 255
  51. 03E3: set_texture_to_be_drawn_antialiased 1
  52. 03E0: draw_text_behind_textures 1
  53. 074B: draw_texture 115 position 550.0 360.0 scale 191.25 170.0 angle 23@ color_RGBA 255 255 255 255
  54. end
  55. if and
  56. 056E: car 1@ defined
  57. 29@ == FALSE
  58. 28@ == FALSE
  59. 12@ <= 6
  60. then
  61. {02E3: 2@ = car 1@ speed
  62. 2@ *= 4.0}
  63. 0AB1: call_scm_func @time 0
  64. 0AB1: call_scm_func @GEAR 0 23@
  65. 03F0: enable_text_draw 1
  66. 03E3: set_texture_to_be_drawn_antialiased 1
  67. 038D: draw_texture 117 position 550.0 360.0 size 191.25 170.0 RGBA 255 255 255 255
  68. 03E3: set_texture_to_be_drawn_antialiased 1
  69. 03E0: draw_text_behind_textures 1
  70. 074B: draw_texture 118 position 550.0 360.0 scale 191.25 170.0 angle 23@ color_RGBA 255 255 255 255
  71. end
  72.  
  73. if// or
  74. //30@ == 2
  75. 80DF: not actor $PLAYER_ACTOR driving
  76. then
  77. 03F0: enable_text_draw 0
  78. wait 1
  79. 0391: release_txd_dictionary
  80. 30@ = 0
  81. end
  82.  
  83. if //or
  84. 0ab0: 192 //~
  85. //00DD: actor $PLAYER_ACTOR driving_car_with_model #TAXI
  86. //00DD: actor $PLAYER_ACTOR driving_car_with_model #CABBIE
  87. then
  88. 03F0: enable_text_draw 0
  89. wait 1
  90. 0391: release_txd_dictionary
  91. 30@ = 0
  92. end
  93.  
  94. end//30@ == 1
  95.  
  96. end
  97.  
  98.  
  99. :time
  100. 00BF: 12@ = current_time_hours, 13@ = current_time_minutes
  101. 0349: set_text_draw_font 3
  102. 033F: set_text_draw_letter_size 0.25 0.84
  103. 0348: enable_text_draw_proportional 1
  104. 081C: draw_text_outline 1 RGBA 0 0 0 255
  105. 0340: set_text_draw_RGBA 221 148 32 200
  106. 03E0: draw_text_behind_textures 1
  107. if
  108. 13@ > 9
  109. then
  110. 045B: draw_text_2numbers 540.0 340.0 GXT 'TIME' numbers 12@ 13@ // ~1~:~1~
  111. else
  112. 045B: draw_text_2numbers 540.0 340.0 GXT 'TIME_0' numbers 12@ 13@ // ~1~:~1~
  113. end
  114. 0AB2: ret 0
  115.  
  116.  
  117. :CutsceneCheck
  118. if
  119. 06B9: cutscene_data_loaded
  120. then
  121. if
  122. 82E9: not cutscene_reached_end
  123. then
  124. 29@ = TRUE
  125. end
  126. else
  127. 29@ = FALSE
  128. end
  129. return
  130.  
  131. :WideScreenCheck
  132. 0A8D: 27@ = read_memory 0xB6F065 size 4 virtual_protect 0
  133. if
  134. 27@ == 1
  135. then
  136. 28@ = TRUE
  137. else
  138. 28@ = FALSE
  139. end
  140. return
  141.  
  142. :GEAR
  143. if and
  144. 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
  145. 84A7: not actor $PLAYER_ACTOR driving_boat
  146. //80DD: not actor $PLAYER_ACTOR driving_car_with_model #TAXI
  147. //80DD: not actor $PLAYER_ACTOR driving_car_with_model #CABBIE
  148. Actor.Driving($PLAYER_ACTOR)
  149. then
  150. 03C0: 0@ $player_actor
  151. 0A97: 31@ = car 0@ struct
  152. 0A8E: 30@ = 31@ + 1424 // int
  153. 0A8D: 30@ = read_memory 30@ size 1 virtual_protect 0
  154. 0AA8: call_function_method 0x6D1080 struct 31@ num_params 0 pop 0 29@
  155. if or
  156. 29@ == 1
  157. 29@ == 2
  158. then
  159. if or
  160. 30@ == 0
  161. 30@ == 9
  162. then
  163. 0174: 3@ = car 0@ Z_angle
  164. if and
  165. 3@ >= 60.0
  166. 3@ <= 150.0
  167. then
  168. 0AA7: call_function 0x49D3A0 num_params 0 pop 0 3@ // ??? ????????? 2 WE
  169. else
  170. if and
  171. 3@ >= 240.0
  172. 3@ <= 330.0
  173. then
  174. 0AA7: call_function 0x49D3A0 num_params 0 pop 0 3@ // ??? ????????? 2 WE
  175. else
  176. 0AA7: call_function 0x49D350 num_params 0 pop 0 3@ // ??? ????????? 1 NS
  177. end
  178. end
  179. for 4@ = 8 to 31
  180. 08C3: clear 3@ bit 4@
  181. end // ???????? ???????: 0 - ???????, 1 - ??????, 2 - ???????
  182. if
  183. 3@ == 0
  184. then
  185. 4@ = 0
  186. 5@ = 255
  187. 6@ = 0
  188. else
  189. if
  190. 3@ == 1
  191. then
  192. 4@ = 255
  193. 5@ = 128
  194. 6@ = 0
  195. else
  196. 4@ = 255
  197. 5@ = 0
  198. 6@ = 0
  199. end
  200. end
  201.  
  202. 0AB8: get_vehicle 0@ current_gear_to 2@
  203. 02E3: 0@ 0@
  204.  
  205. 0@ *= 3.6
  206. 0087: 1@ = 0@ // (float)
  207. if
  208. 1@ > 240.0
  209. then
  210. 1@ = 240.0
  211. end
  212.  
  213. 0092: 0@ = float 1@ to_integer
  214. 0@ *= 1.35
  215.  
  216. 03F0: enable_text_draw 1
  217. 0349: set_text_draw_font 3 // 0 2
  218. 03E4: enable_text_draw_align_right 1
  219. 0340: set_text_draw_RGBA 4@ 5@ 6@ 255 //0 128 0 255
  220. 081C: draw_text_outline 1 RGBA 0 0 0 200
  221. 033F: set_text_draw_letter_size 0.25 0.84
  222. 045A: draw_text_1number 567.0 358.0 GXT 'NUMBER' number 2@ // ~1~ ? +14
  223. end // 30 ==
  224. end // 29 ==
  225. end
  226. 0AB2: ret 1 1@