Advertisement
michalmonday

supremeVision.cs

Jan 29th, 2016
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 83.98 KB | None | 0 0
  1. 0000: NOP
  2.  
  3.  
  4. thread "supremeVision"
  5. if
  6. 8AF7: get_samp_base_to 0@
  7. then
  8. 0A93: end_custom_thread
  9. end
  10. repeat
  11. wait 400
  12. until 0AFA: is_samp_structures_available
  13.  
  14. :Auto_Turn_On
  15. wait 0
  16. 4@ = 0
  17. 0AB1: @RUN_CLEO 1 AT LINE @1
  18. if
  19. 0AAB: file_exists "CLEO\supremeVisionSettings.ini"
  20. then
  21. 0AF0: 4@ = get_int_from_ini_file "CLEO\supremeVisionSettings.ini" section "Settings" key "AutoTurnOn"
  22. if 4@ == 1
  23. then
  24. 0AF8: samp add_message_to_chat "supremeVision is {00CC00}Enabled {F7F694}[Switch: /supremevision]" color 0xF7F694
  25. 31@ = 1
  26. 0B34: samp register_client_command "supremevision" to_label @Activate
  27. jump @First
  28. else
  29. 0AF8: samp add_message_to_chat "supremeVision is {FF4800}Disabled {F7F694}[Switch: /supremevision]" color 0xF7F694
  30. 31@ = 0
  31. 0B34: samp register_client_command "supremevision" to_label @Activate
  32. jump @First
  33. end
  34. end
  35. jump @Auto_Turn_On
  36.  
  37.  
  38.  
  39. :First
  40. wait 0
  41. if 31@ == 1
  42. jf @First
  43. if
  44. 0118: actor $PLAYER_ACTOR dead
  45. then
  46. 31@ = 1
  47. jump @First
  48. end
  49. if
  50. key_down 13
  51. then
  52. 31@ = 1
  53. jump @First
  54. end
  55. if or
  56. 031D: actor $PLAYER_ACTOR hit_by_weapon 28
  57. 031D: actor $PLAYER_ACTOR hit_by_weapon 29
  58. 031D: actor $PLAYER_ACTOR hit_by_weapon 32
  59. 031D: actor $PLAYER_ACTOR hit_by_weapon 30
  60. 031D: actor $PLAYER_ACTOR hit_by_weapon 31
  61. 031D: actor $PLAYER_ACTOR hit_by_weapon 24
  62. 031D: actor $PLAYER_ACTOR hit_by_weapon 26
  63. then
  64. 0AB1: call_scm_func @PlayerActor_to_var 1 Actor handle $PLAYER_ACTOR Variable 1@
  65. jump @B
  66. else
  67. for 30@ = 0 to 300
  68. if
  69. SAMP.IsPlayerConnected(30@)
  70. then
  71. if
  72. 1@ = SAMP.GetActorHandleByPlayerID(30@)
  73. then
  74. if
  75. key_down 13
  76. then
  77. 31@ = 1
  78. jump @First
  79. end
  80. if and
  81. 056D: actor $PLAYER_ACTOR defined
  82. 056D: actor 1@ defined
  83. then
  84. if or
  85. 031D: actor 1@ hit_by_weapon 28
  86. 031D: actor 1@ hit_by_weapon 29
  87. 031D: actor 1@ hit_by_weapon 32
  88. 031D: actor 1@ hit_by_weapon 30
  89. 031D: actor 1@ hit_by_weapon 31
  90. 031D: actor 1@ hit_by_weapon 24
  91. 031D: actor 1@ hit_by_weapon 26
  92. then
  93. 00A0: store_actor $PLAYER_ACTOR position_to 11@ 12@ 13@
  94. 00A0: store_actor 1@ position_to 14@ 15@ 16@
  95. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  96. if
  97. 0033: 132.00 >= 17@ //check if the distance is not too high
  98. then
  99. jump @B
  100. end
  101. end
  102. else
  103. 31@ = 1
  104. jump @First
  105. end
  106. end
  107. end
  108. end
  109. end
  110. 31@ = 1
  111. jump @First
  112.  
  113. :B
  114. wait 0
  115. for 31@ = 0 to 300
  116. if
  117. SAMP.IsPlayerConnected(31@)
  118. then
  119. if
  120. 0@ = SAMP.GetActorHandleByPlayerID(31@)
  121. then
  122. if
  123. key_down 13
  124. then
  125. 31@ = 1
  126. jump @First
  127. end
  128. if
  129. 051A: actor 1@ damaged_by_actor 0@
  130. then
  131. if and
  132. 056D: actor $PLAYER_ACTOR defined
  133. 056D: actor 1@ defined
  134. 056D: actor 0@ defined
  135. then
  136. if or
  137. 0118: actor $PLAYER_ACTOR dead
  138. 0118: actor 1@ dead
  139. 0118: actor 0@ dead
  140. then
  141. 31@ = 1
  142. jump @First
  143. else
  144. 00A0: store_actor $PLAYER_ACTOR position_to 11@ 12@ 13@
  145. 00A0: store_actor 0@ position_to 14@ 15@ 16@
  146. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  147. if
  148. 0033: 132.00 >= 17@ //check if the distance is not too high
  149. then
  150. 0B2B: samp 31@ = get_player_id_by_actor_handle 0@
  151. 0B36: samp 2@ = get_player_nickname 31@
  152. jump @Second
  153. end
  154. end
  155. else
  156. 31@ = 1
  157. jump @First
  158. end
  159. end
  160. end
  161. end
  162. end
  163. 31@ = 1
  164. jump @First
  165.  
  166. :Second
  167. wait 0
  168. 054E: clear_actor 1@ damage
  169. 0467: clear_actor 0@ last_weapon_damage
  170. 0470: 20@ = actor 0@ current_weapon
  171. if
  172. 02D8: actor 0@ current_weapon == 31 //m4
  173. then
  174. 29@ = 170 //m4's shotrate - 1bullet per 130ms
  175. //29@ = 2000 //fake delay to test
  176. 5@ = 8 //number of shots needed to detect
  177. 3@ = 34.900 //distance needed to detect
  178. 06D2: 24@v = "M4"
  179. end
  180. if
  181. 02D8: actor 0@ current_weapon == 30 //ak47
  182. then
  183. 29@ = 177 //ak47 shotrate - 1bullet per 137ms
  184. //29@ = 2000 //fake delay to test
  185. 5@ = 6 //number of shots needed to detect
  186. 3@ = 23.070 //distance needed to detect
  187. 06D2: 24@v = "AK47"
  188. end
  189. if
  190. 02D8: actor 0@ current_weapon == 28 //uzi
  191. then
  192. 29@ = 167 //uzi shotrate - 1bullet per 127ms
  193. //29@ = 2000 //fake delay to test
  194. 5@ = 4 //number of shots needed to detect
  195. 3@ = 14.84 //distance needed to detect
  196. 06D2: 24@v = "Uzi"
  197. end
  198. if
  199. 02D8: actor 0@ current_weapon == 32 //tec
  200. then
  201. 29@ = 167 //tec shotrate - 1bullet per 127ms
  202. //29@ = 2000 //fake delay to test
  203. 5@ = 4 //number of shots needed to detect
  204. 3@ = 12.950 //distance needed to detect
  205. 06D2: 24@v = "TEC"
  206. end
  207. if
  208. 02D8: actor 0@ current_weapon == 24 //deagle
  209. then
  210. 29@ = 740 //deagle shotrate 1bullet per 720ms
  211. //29@ = 2000 //fake delay to test
  212. 5@ = 4 //number of shots needed to detect
  213. 3@ = 27.880 //distance needed to detect
  214. 06D2: 24@v = "Deagle"
  215. end
  216. //if
  217. //02D8: actor 0@ current_weapon == 26 //sawn
  218. //then
  219. //29@ = 310 //sawn shotrate 1bullet per 310/1670
  220. //29@ = 2000 //fake delay to test
  221. //5@ = 1 //number of shots needed to detect
  222. //3@ = 0.100 //distance needed to detect
  223. //06D2: 24@v = "Sawn"
  224. //end
  225. if
  226. 02D8: actor 0@ current_weapon == 29 //mp5
  227. then
  228. 29@ = 147 //mp5 shotrate - 1bullet per 107ms
  229. //29@ = 2000 //fake delay to test
  230. 5@ = 5 //number of shots needed to detect
  231. 3@ = 22.510 //distance needed to detect
  232. 06D2: 24@v = "MP5"
  233. end
  234.  
  235. //0AF8: samp add_message_to_chat "%d - 5@ value initial" color 0xFF4800 5@
  236. if 02A0: actor 1@ stopped
  237. then
  238. 22@ = 0
  239. else
  240. 22@ = 1
  241. end
  242. if 02A0: actor 0@ stopped
  243. then
  244. if
  245. 0597: actor 0@ crouching
  246. then
  247. 28@ = 0 //if enemy crouching
  248. 27@ = 0
  249. 26@ = 1
  250. else
  251. 28@ = 1 //if enemy standing still
  252. 27@ = 0
  253. 26@ = 0
  254. end
  255. else
  256. 28@ = 0 //if enemy moving
  257. 27@ = 1
  258. 26@ = 0
  259. end
  260. 30@ = 1 //number of hits
  261. gosub @Get_distance //17@ = distance, float
  262. 0007: 18@ = 0.0
  263. 005B: 18@ += 17@
  264.  
  265.  
  266.  
  267.  
  268. repeat
  269. wait 0
  270. 33@ = 0
  271. repeat
  272. wait 0
  273. if and
  274. 056D: actor $PLAYER_ACTOR defined
  275. 056D: actor 1@ defined
  276. 056D: actor 0@ defined
  277. then
  278. if or
  279. 002D: 33@ >= 29@ //time check to make sure there is no stop between shooting 29@ = each weapons shootrate +40ms
  280. 0118: actor $PLAYER_ACTOR dead //to avoid bugs
  281. 0118: actor 0@ dead //to avoid bugs
  282. 0118: actor 1@ dead //to avoid bugs
  283. then
  284. 31@ = 1
  285. jump @First
  286. end
  287. else
  288. 31@ = 1
  289. jump @First
  290. end
  291. until 051A: actor 1@ damaged_by_actor 0@
  292. //0AF8: samp add_message_to_chat "%d - %s speedrate, first repeat loop" color 0xFF4800 33@ 24@v
  293. //0AF8: samp add_message_to_chat "%d - 30@ value first repeat loop" color 0xFF4800 30@
  294. //0AF8: samp add_message_to_chat "%d - 5@ value first repeat loop" color 0xFF4800 5@
  295. 0470: 21@ = actor 0@ current_weapon
  296. if
  297. 003B: 20@ == 21@ // check if the weapon remains the same
  298. then
  299. wait 0
  300. else
  301. 054E: clear_actor 1@ damage
  302. 0467: clear_actor 0@ last_weapon_damage
  303. //0AF8: samp add_message_to_chat "Weapon has been changed" color 0xFF4800
  304. 31@ = 1
  305. jump @First
  306. end
  307. if 02A0: actor 1@ stopped
  308. then
  309. wait 0
  310. else
  311. 22@ += 1
  312. end
  313. if
  314. 02A0: actor 0@ stopped
  315. then
  316. if
  317. 0597: actor 0@ crouching
  318. then
  319. 26@ += 1 //if enemy crouching
  320. else
  321. 28@ += 1 //if enemy standing still
  322. end
  323. else
  324. 27@ += 1 //if enemy moving
  325. end
  326. 30@ += 1
  327. gosub @Get_distance //17@ = distance, float
  328. 005B: 18@ += 17@ //total distance
  329. 054E: clear_actor 1@ damage
  330. 0467: clear_actor 0@ last_weapon_damage
  331. until 002D: 30@ >= 5@ // 5@ = specific number of bullets hit in a row by specific weapon needed to start detection
  332.  
  333. //0AF8: samp add_message_to_chat "--went to the second repeat loop--" color 0xFF4800
  334.  
  335. repeat
  336. wait 0
  337. 33@ = 0
  338. repeat
  339. wait 0
  340. if and
  341. 056D: actor $PLAYER_ACTOR defined
  342. 056D: actor 1@ defined
  343. 056D: actor 0@ defined
  344. then
  345. if or
  346. 002D: 33@ >= 29@ //time check to make sure there is no stop between shooting 29@ = each weapons shootrate +40ms
  347. 0118: actor $PLAYER_ACTOR dead //to avoid bugs
  348. 0118: actor 0@ dead //to avoid bugs
  349. 0118: actor 1@ dead //to avoid bugs
  350. then
  351. jump @Third
  352. end
  353. else
  354. jump @Third
  355. end
  356. until 051A: actor 1@ damaged_by_actor 0@
  357. //0AF8: samp add_message_to_chat "%d - %s speedrate, second repeat loop" color 0xFF4800 33@ 24@v
  358. 0470: 21@ = actor 0@ current_weapon
  359. if
  360. 003B: 20@ == 21@ // check if the weapon remains the same
  361. then
  362. wait 0
  363. else
  364. 054E: clear_actor 1@ damage
  365. 0467: clear_actor 0@ last_weapon_damage
  366. 0AF8: samp add_message_to_chat "Weapon has been changed after %d hits" color 0xFF4800 30@
  367. jump @Third
  368. end
  369. if 02A0: actor 1@ stopped
  370. then
  371. wait 0
  372. else
  373. 22@ += 1
  374. end
  375. if
  376. 02A0: actor 0@ stopped
  377. then
  378. if
  379. 0597: actor 0@ crouching
  380. then
  381. 26@ += 1 //if enemy crouching
  382. else
  383. 28@ += 1 //if enemy standing still
  384. end
  385. else
  386. 27@ += 1 //if enemy moving
  387. end
  388. 30@ += 1
  389. gosub @Get_distance //17@ = distance, float
  390. //0AF8: samp add_message_to_chat "%d shot distance of actors - 17@ = %f Second repeat" color 0xF7F694 30@ 17@
  391. 005B: 18@ += 17@ //total distance
  392. 054E: clear_actor 1@ damage
  393. 0467: clear_actor 0@ last_weapon_damage
  394. until 002D: 33@ >= 29@ //time check to make sure there is no stop between shooting 29@ = each weapons shootrate +40ms
  395.  
  396.  
  397. :Third
  398. wait 0
  399. 0093: 19@ = integer 30@ to_float
  400. 0073: 18@ /= 19@ // total distance divided by number of hits
  401. if
  402. 0035: 3@ >= 18@ //if average distance between my char and enemy is lower than specific weapon distance then cancel the detection, 3@ = specific distance for each weapon
  403. then
  404. 18@ = 0.0
  405. 31@ = 1
  406. jump @First
  407. end
  408. 0AED: 18@v = float 18@ to_string_format "%.4g"
  409. 0AED: 3@v = float 3@ to_string_format "%.4g"
  410. 0B37: samp 29@ = get_player_color 31@
  411. 0B2B: samp 4@ = get_player_id_by_actor_handle 1@ //4@ = victim ID
  412. 0B36: samp 6@ = get_player_nickname 4@ //6@ = victim nickname
  413. 0B37: samp 21@ = get_player_color 4@
  414.  
  415. 0AF8: samp add_message_to_chat "%s(%d) {F7F694}- victim [{00CC00}Green rectangle{F7F694}]" color 21@ 6@ 4@
  416. 0AF8: samp add_message_to_chat "%s(%d) {F7F694}- suspect [{FF4800}Red rectangle{F7F694}]" color 29@ 2@ 31@
  417. 0AF8: samp add_message_to_chat "%d {F7F694}shots in a row using {FF4800}%s" color 0xFF4800 30@ 24@v
  418. 0AF8: samp add_message_to_chat "{F7F694}Average distance - {FF4800}%s meters" color 0xFF4800 18@v
  419. 0AF8: samp add_message_to_chat "%d {F7F694}- while standing still" color 0xFF4800 28@
  420. 0AF8: samp add_message_to_chat "%d {F7F694}- while moving" color 0xFF4800 27@
  421. 0AF8: samp add_message_to_chat "%d {F7F694}- while crouching" color 0xFF4800 26@
  422. 0AF8: samp add_message_to_chat "Victim was moving during {FF4800}%d {F7F694}shots" color 0xF7F694 22@
  423. 0AF8: samp add_message_to_chat "%s limit: %d hits in a row from %s meters distance while standing still" color 0xF7F694 24@v 5@ 3@v
  424. 26@ = 0
  425. 0AD4: 26@ = scan_string 18@v format "%f" 18@ //IF and SET
  426. if and
  427. 056D: actor $PLAYER_ACTOR defined
  428. 056D: actor 1@ defined
  429. 056D: actor 0@ defined
  430. then
  431. 0AB1: call_scm_func @name_letters_number 1 Actor handle 1@ Number_store_to 22@
  432. 0AB1: call_scm_func @name_letters_number 1 Actor handle 0@ Number_store_to 26@
  433. if and
  434. 002B: 15 >= 22@
  435. 002B: 15 >= 26@
  436. then
  437. 0AB1: call_scm_func @get_2th_4th_6th_8th_letter 1 Actor handle 1@ Letters 4@ 2@ 31@ 30@
  438. 0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 27@
  439. 0AB1: call_scm_func @get_2th_4th_6th_8th_letter 1 Actor handle 0@ Letters 4@ 2@ 31@ 30@
  440. 0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 28@
  441. else
  442. if and
  443. 0029: 22@ >= 16
  444. 002B: 15 >= 26@
  445. then
  446. 0AB1: call_scm_func @code_letters_number 1 Number 22@ Individual_number_code 27@
  447. 0AB1: call_scm_func @get_2th_4th_6th_8th_letter 1 Actor handle 0@ Letters 4@ 2@ 31@ 30@
  448. 0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 28@
  449. else
  450. if and
  451. 0029: 26@ >= 16
  452. 002B: 15 >= 22@
  453. then
  454. 0AB1: call_scm_func @code_letters_number 1 Number 26@ Individual_number_code 28@
  455. 0AB1: call_scm_func @get_2th_4th_6th_8th_letter 1 Actor handle 1@ Letters 4@ 2@ 31@ 30@
  456. 0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 27@
  457. else
  458. if and
  459. 0029: 22@ >= 16
  460. 0029: 26@ >= 16
  461. then
  462. 0AB1: call_scm_func @code_letters_number 1 Number 22@ Individual_number_code 27@
  463. 0AB1: call_scm_func @code_letters_number 1 Number 26@ Individual_number_code 28@
  464. end
  465. end
  466. end
  467. end
  468. else //if not defined
  469. 0AF8: samp add_message_to_chat "Anticheat error - unable to calculate Authenticity code" color 0xFF4800
  470. 0AF8: samp add_message_to_chat "Reason: One of the detected players is out of range" color 0xFF4800
  471. 0AF8: samp add_message_to_chat "Reason: Probably died, TP-ed, logged out or crashed" color 0xFF4800
  472. 31@ = 1
  473. jump @First
  474. end
  475. 0AB1: call_scm_func @code_distance 1 Distance 18@ Distance_code 18@
  476. 0093: 27@ = integer 27@ to_float
  477. 006B: 27@ *= 18@ // (float)
  478. 0092: 27@ = float 27@ to_integer
  479. 005A: 27@ += 28@ // (int)
  480. 0AF8: samp add_message_to_chat "Authenticity code: %X" color 0xF7F694 27@
  481.  
  482.  
  483.  
  484.  
  485.  
  486. 31@ = 1
  487. 30@ = 0
  488. 2@ = 0
  489. 4@ = 0
  490. 18@ = 0.0
  491. //0AF8: samp add_message_to_chat "%s %s %s" color 0xFF4800 6@ 2@ 30@
  492. if and
  493. 056D: actor 0@ defined //to avoid bugs
  494. 056D: actor 1@ defined //to avoid bugs
  495. 056D: actor $PLAYER_ACTOR defined //to avoid bugs
  496. then
  497. gosub @TP_to_case
  498. jump @SS_system
  499. else
  500. 0AF8: samp add_message_to_chat "Anticheat error - unable to make SS" color 0xFF4800
  501. 0AF8: samp add_message_to_chat "Reason: One of the detected players is out of range" color 0xFF4800
  502. 0AF8: samp add_message_to_chat "Reason: Probably died, TP-ed, logged out or crashed" color 0xFF4800
  503. 31@ = 1
  504. jump @First
  505. end
  506.  
  507.  
  508. //at this point variables are basically reset, everything needed was already displayed so I can use them again
  509.  
  510.  
  511.  
  512. :TP_to_case
  513. wait 0
  514. 31@ = 0
  515. 00A0: store_actor $PLAYER_ACTOR position_to 3@ 18@ 19@ //3@ 18@ 19@ Original position
  516. 00A0: store_actor 1@ position_to 11@ 12@ 13@
  517. 00A0: store_actor 0@ position_to 14@ 15@ 16@
  518. 0AB1: call_scm_func @Is_coord_legit 3 XYZ 3@ 18@ 19@ store_result_to 31@ //check my coords
  519. if 31@ == 1
  520. then
  521. 0AB1: call_scm_func @Is_coord_legit 3 XYZ 11@ 12@ 13@ store_result_to 31@ //check victim's coords
  522. if 31@ == 1
  523. then
  524. 0AB1: call_scm_func @Is_coord_legit 3 XYZ 14@ 15@ 16@ store_result_to 31@ //check suspect's coords
  525. if 31@ == 1
  526. then
  527. 050A: 17@ = distance_between_XYZ 3@ 18@ 19@ and_XYZ 11@ 12@ 13@
  528. 050A: 7@ = distance_between_XYZ 3@ 18@ 19@ and_XYZ 14@ 15@ 16@
  529. else
  530. 0AF8: samp add_message_to_chat "Anticheat error - unable to make SS" color 0xFF4800
  531. 0AF8: samp add_message_to_chat "Reason: one of the suspect's coordinates is out of range" color 0xFF4800
  532. //0AF8: samp add_message_to_chat "Anticheat bug - 7@ = %f Distance me/suspect" color 0xF7F694 7@
  533. 0AF8: samp add_message_to_chat "Anticheat error - 14@ = %f Suspect's X axis" color 0xF7F694 14@
  534. 0AF8: samp add_message_to_chat "Anticheat error - 15@ = %f Suspect's Y axis" color 0xF7F694 15@
  535. 0AF8: samp add_message_to_chat "Anticheat error - 16@ = %f Suspect's Z axis" color 0xF7F694 16@
  536. 31@ = 1
  537. jump @First
  538. end
  539. else
  540. 0AF8: samp add_message_to_chat "Anticheat error - unable to make SS" color 0xFF4800
  541. 0AF8: samp add_message_to_chat "Reason: one of the victim's coordinates is out of range" color 0xFF4800
  542. //0AF8: samp add_message_to_chat "Anticheat bug - 17@ = %f Distance me/victim" color 0xF7F694 17@
  543. 0AF8: samp add_message_to_chat "Anticheat error - 11@ = %f Victim's X axis" color 0xF7F694 11@
  544. 0AF8: samp add_message_to_chat "Anticheat error - 12@ = %f Victim's Y axis" color 0xF7F694 12@
  545. 0AF8: samp add_message_to_chat "Anticheat error - 13@ = %f Victim's Z axis" color 0xF7F694 13@
  546. 31@ = 1
  547. jump @First
  548. end
  549. else
  550. 0AF8: samp add_message_to_chat "Anticheat error - unable to make SS" color 0xFF4800
  551. 0AF8: samp add_message_to_chat "Reason: one of my character's coordinates is out of range" color 0xFF4800
  552. //0AF8: samp add_message_to_chat "Anticheat bug - 17@ = %f Distance me/victim" color 0xF7F694 17@
  553. 0AF8: samp add_message_to_chat "Anticheat error - 3@ = %f My X axis" color 0xF7F694 3@
  554. 0AF8: samp add_message_to_chat "Anticheat error - 18@ = %f My Y axis" color 0xF7F694 18@
  555. 0AF8: samp add_message_to_chat "Anticheat error - 19@ = %f My Z axis" color 0xF7F694 19@
  556. 31@ = 1
  557. jump @First
  558. end
  559. //Checked if the coords are legit, not out of range
  560. //17@ distance between me and victim
  561. //7@ distance between me and suspect
  562.  
  563. if or
  564. 0031: 17@ >= 250.0 //65.0 check if tp is needed
  565. 0031: 7@ >= 250.0 //65.0 check if tp is needed
  566. then
  567. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  568. 0AB1: call_scm_func @Get_midpoint_function 6 First_point_coords 11@ 12@ 13@ Second_point_coords 14@ 15@ 16@ store_result_to 5@ 6@ 7@
  569. 000F: 7@ -= 5.0
  570. //gosub @Disable_data_sent
  571. //0AB1: call_scm_func @invisible_actor_teleport 4 Actor $PLAYER_ACTOR XYZ 5@ 6@ 7@
  572. //00A1: put_actor $PLAYER_ACTOR at 5@ 6@ 7@
  573. //04D7: set_actor $PLAYER_ACTOR locked 1
  574. //gosub @Enable_data_sent
  575. end
  576. return
  577.  
  578.  
  579. :SS_system
  580. wait 0
  581. 0007: 17@ = 0.0 //reset to avoid potential bug
  582. 00A0: store_actor 1@ position_to 11@ 12@ 13@
  583. 00A0: store_actor 0@ position_to 14@ 15@ 16@
  584. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  585. //0AF8: samp add_message_to_chat "1st stage Distance of camera - 17@ = %f" color 0xF7F694 17@
  586. 000B: 17@ += 5.0
  587. //0AF8: samp add_message_to_chat "2nd stage Distance of camera +5 - 17@ = %f" color 0xF7F694 17@
  588. 0AB1: call_scm_func @Get_midpoint_function 6 First_point_coords 11@ 12@ 13@ Second_point_coords 14@ 15@ 16@ store_result_to 5@ 6@ 7@
  589. 0AB1: call_scm_func @getZAngleBetweenPoints 4 from_XY 11@ 12@ and_XY 14@ 15@ store_to 23@
  590. if
  591. 0031: 23@ >= 180.0
  592. then
  593. 000F: 23@ -= 90.0
  594. else
  595. 000B: 23@ += 90.0
  596. end
  597. 0007: 24@ = 30.0
  598. 0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle 1@ RGBA 0 204 0 255 THICKNESS 2.0
  599. 0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle 0@ RGBA 255 72 0 255 THICKNESS 2.0
  600. //0AF8: samp add_message_to_chat "After boxes stage, before repeat" color 0xFF4800
  601. 33@ = 0
  602. 4@ = 0
  603. repeat
  604. wait 0
  605. 0AB1: call_scm_func @get3DXYZInFrontOf 6 XYZ 5@ 6@ 7@ Z_Angle 23@ Y_Angle 24@ Distance 17@ Return_XYZ_To 8@ 9@ 10@
  606. if and
  607. 06BD: no_obstacles_between 8@ 9@ 10@ and 11@ 12@ 13@ solid 1 car 0 actor 0 object 1 particle 0
  608. 06BD: no_obstacles_between 8@ 9@ 10@ and 14@ 15@ 16@ solid 1 car 0 actor 0 object 1 particle 0
  609. then
  610. //0AF8: samp add_message_to_chat "No obstacles between 8@ 9@ 10@ and 11@ 12@ 13@" color 0xFF4800 //check bug
  611. //0AF8: samp add_message_to_chat "No obstacles between 8@ 9@ 10@ and 14@ 15@ 16@" color 0xFF4800 //check bug
  612. 4@ = 0
  613. 33@ = 0
  614. repeat
  615. wait 0
  616. 015F: set_camera_position 8@ 9@ 10@ rotation 0.0 0.0 0.0
  617. 0160: set_camera_point_at 5@ 6@ 7@ switchstyle 2
  618. if 4@ == 5
  619. then
  620. 0AB1: call @keyPress 2 key 119 time 0 //make SS
  621. end
  622. 4@ += 1
  623. until 33@ > 1000
  624. 015A: restore_camera
  625. 31@ = 1
  626. jump @First
  627. else //if there is no visual connection with both actors then:
  628. 000B: 24@ += 5.0
  629. if
  630. 0031: 23@ >= 180.0
  631. then
  632. 000F: 23@ -= 180.0
  633. else
  634. 000B: 23@ += 180.0
  635. end
  636. if
  637. 0031: 24@ >= 89.0
  638. then
  639. jump @SS_char
  640. end
  641. end
  642. if //check bug THAT'S THE PROBLEM until 33@ > 10000
  643. 33@ > 20000 //check bug THAT'S THE PROBLEM until 33@ > 10000
  644. then //check bug THAT'S THE PROBLEM until 33@ > 10000
  645. //0AF8: samp add_message_to_chat "33@ is over 20000, 33@ value inside repeat = %d" color 0xFF4800 33@ //check bug THAT'S THE PROBLEM until 33@ > 10000
  646. 33@ = 0
  647. end //check bug THAT'S THE PROBLEM until 33@ > 10000
  648. until 33@ > 10000 //check bug THAT'S THE PROBLEM until 33@ > 10000
  649. //0AF8: samp add_message_to_chat "After 10secs passed" color 0xFF4800 //check bug THAT'S THE PROBLEM until 33@ > 10000
  650. //0AF8: samp add_message_to_chat "33@ value - %d" color 0xFF4800 33@ //check bug THAT'S THE PROBLEM until 33@ > 10000
  651. 31@ = 1
  652. jump @First
  653.  
  654.  
  655. :SS_char
  656. wait 0
  657. //0AF8: samp add_message_to_chat "Entered SS_char" color 0xFF4800
  658. 0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle 1@ RGBA 0 204 0 255 THICKNESS 2.0
  659. 0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle 0@ RGBA 255 72 0 255 THICKNESS 2.0
  660. 31@ = 0
  661. 33@ = 0
  662. repeat
  663. wait 0
  664. 31@ += 1
  665. 00A0: store_actor 1@ position_to 11@ 12@ 13@
  666. 00A0: store_actor 0@ position_to 14@ 15@ 16@
  667. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  668. 0AB1: call_scm_func @getZAngleBetweenPoints 4 from_XY 11@ 12@ and_XY 14@ 15@ store_to 23@
  669. 0AB1: call_scm_func @get3DXYZInFrontOf 6 XYZ 11@ 12@ 13@ Z_Angle 23@ Y_Angle 30.0 Distance 5.0 Return_XYZ_To 8@ 9@ 10@
  670. if
  671. 06BD: no_obstacles_between 8@ 9@ 10@ and 11@ 12@ 13@ solid 1 car 0 actor 0 object 1 particle 0
  672. then
  673. wait 0
  674. else
  675. 0AB1: call_scm_func @get3DXYZInFrontOf 6 XYZ 11@ 12@ 13@ Z_Angle 23@ Y_Angle 45.0 Distance 3.0 Return_XYZ_To 8@ 9@ 10@
  676. end
  677. 015F: set_camera_position 8@ 9@ 10@ rotation 0.0 0.0 0.0
  678. 0160: set_camera_point_at 14@ 15@ 16@ switchstyle 2
  679. //0161: 22@ = create_marker_above_car 0@ unused 0 visibility 1
  680. //04CE: 31@ = create_icon_marker_without_sphere 38 at 14@ 15@ 16@
  681. if 31@ == 1
  682. then
  683. 0AB1: call @keyPress 2 key 119 time 100
  684. wait 200
  685. end
  686. //0164: disable_marker 31@
  687. 015A: restore_camera
  688. until 33@ > 1000
  689. //00A0: store_actor $PLAYER_ACTOR position_to 11@ 12@ 13@
  690. //000F: 7@ -= 5.0
  691. //050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 5@ 6@ 7@ //check if I tped underground before to avoid useless TP back if i didn't
  692. //if
  693. //0033: 2.0 >= 17@
  694. //then
  695. //gosub @TP_back
  696. //end
  697. 31@ = 1
  698. jump @First
  699.  
  700.  
  701. :TP_back
  702. wait 0
  703. gosub @Disable_data_sent
  704. 00A1: put_actor $PLAYER_ACTOR at 3@ 18@ 19@ //3@ 18@ 19@ Original position
  705. 04D7: set_actor $PLAYER_ACTOR locked 0
  706. gosub @Enable_data_sent
  707. 18@ = 0.0
  708. return
  709.  
  710.  
  711. :Get_distance
  712. wait 0
  713. 00A0: store_actor 1@ position_to 11@ 12@ 13@
  714. 00A0: store_actor 0@ position_to 14@ 15@ 16@
  715. 050A: 17@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 14@ 15@ 16@
  716. return
  717.  
  718. :Disable_data_sent //gosub
  719. wait 0
  720. 0B2E: 26@ = read_samp_memory offset 0x41E0 size 1 //onfoot
  721. 0B2E: 27@ = read_samp_memory offset 0x6140 size 1 //incar
  722. 0B2E: 28@ = read_samp_memory offset 0x5750 size 2 //spec
  723. 0B2D: write_samp_memory offset 0x41E0 value 0xC3 size 1
  724. 0B2D: write_samp_memory offset 0x6140 value 0xC3 size 1
  725. 0B2D: write_samp_memory offset 0x5750 value 0xC390 size 2
  726. return
  727.  
  728. :Enable_data_sent //gosub
  729. wait 0
  730. 0B2D: write_samp_memory offset 0x41E0 value 26@ size 1
  731. 0B2D: write_samp_memory offset 0x6140 value 27@ size 1
  732. 0B2D: write_samp_memory offset 0x5750 value 28@ size 2
  733. return
  734.  
  735.  
  736. //
  737. //
  738. //FUNCTIONS
  739.  
  740.  
  741. :invisible_actor_teleport
  742. //0AB1: call_scm_func @invisible_actor_teleport 4 Actor 0@ XYZ 0.0 0.0 0.0
  743. 0A96: 4@ = actor 0@ struct
  744. 4@ += 20
  745. 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
  746. 4@ += 48 // X
  747. 0A8C: write_memory 4@ size 4 value 1@ virtual_protect 0 // X
  748. 4@ += 4 // Y
  749. 0A8C: write_memory 4@ size 4 value 2@ virtual_protect 0 // Y
  750. 4@ += 4 // Z
  751. 0A8C: write_memory 4@ size 4 value 3@ virtual_protect 0 // Z
  752. ret 0
  753.  
  754. :Is_coord_legit
  755. //if 0@ == 1 then it is, if 0@ == 0 then it's not
  756. //0AB1: call_scm_func @Is_coord_legit 3 XYZ 0.0 0.0 0.0 store_result_to 0@
  757. 3@ = 0
  758. if or
  759. 0031: 0@ >= 0.0001 //to avoid bug
  760. 0033: -0.0001 >= 0@ //to avoid bug
  761. then
  762. 3@ += 1
  763. if and
  764. 0033: 2999.9999 >= 0@ //to avoid bug
  765. 0031: 0@ >= -2999.9999 //to avoid bug
  766. then
  767. 3@ += 1
  768. if or
  769. 0031: 1@ >= 0.0001 //to avoid bug
  770. 0033: -0.0001 >= 1@ //to avoid bug
  771. then
  772. 3@ += 1
  773. if and
  774. 0033: 2999.9999 >= 1@ //to avoid bug
  775. 0031: 1@ >= -2999.9999 //to avoid bug
  776. then
  777. 3@ += 1
  778. if or
  779. 0031: 2@ >= 0.0001 //to avoid bug
  780. 0033: -0.0001 >= 2@ //to avoid bug
  781. then
  782. 3@ += 1
  783. if and
  784. 0033: 2999.9999 >= 2@ //to avoid bug
  785. 0031: 2@ >= -2999.9999 //to avoid bug
  786. then
  787. 3@ += 1
  788. end
  789. end
  790. end
  791. end
  792. end
  793. end
  794. if
  795. 3@ == 6
  796. then
  797. 4@ = 1
  798. else
  799. 4@ = 0
  800. end
  801. 0AB2: ret 1 4@
  802.  
  803.  
  804. :Get_midpoint_function
  805. //0AB1: call_scm_func @Get_midpoint_function 6 First_point_coords 0.0 0.0 0.0 Second_point_coords 0.0 0.0 0.0 store_result_to 11@ 12@ 13@
  806. 005B: 0@ += 3@ // (float)
  807. 0017: 0@ /= 2.0
  808. 005B: 1@ += 4@ // (float)
  809. 0017: 1@ /= 2.0
  810. 005B: 2@ += 5@ // (float)
  811. 0017: 2@ /= 2.0
  812. 0AB2: ret 3 0@ 1@ 2@
  813.  
  814.  
  815. :keyPress
  816. //0AB1: call @keyPress 2 key 119 time 200
  817. if 0AA2: 2@ = load_library "User32.dll"
  818. then
  819. if 0AA4: 2@ = get_proc_address "keybd_event" library 2@
  820. then
  821. 0AA5: call 2@ num_params 4 pop 0 0 0 0 0@
  822. wait 1@
  823. 0AA5: call 2@ num_params 4 pop 0 0 0x02 0 0@
  824. end
  825. end
  826. 0AB2: ret 0
  827.  
  828.  
  829. :getZAngleBetweenPoints
  830. //0AB1: call_scm_func @getZAngleBetweenPoints 4 from_XY 0.0 0.0 and_XY 1.0 0.0 store_to 1@
  831. 0063: 0@ -= 2@
  832. 0063: 1@ -= 3@
  833. 0604: get_Z_angle_for_point 0@ 1@ store_to 4@
  834. 0AB2: ret 1 4@
  835.  
  836.  
  837. :get3DXYZInFrontOf{X,Y,Z,ZA,YA,Distance}
  838. //Example: 0AB1: call_scm_func @get3DXYZInFrontOf 6 XYZ 1@ 2@ 3@ Z_Angle 4@ Y_Angle 5@ Distance 7.0 Return_XYZ_To 6@ 7@ 8@
  839. 3@ *= -1.0
  840. 02F6: 6@ = sine 3@
  841. 006B: 6@ *= 5@
  842. 005B: 0@ += 6@
  843. 02F7: 6@ = cosine 3@
  844. 006B: 6@ *= 5@
  845. 005B: 1@ += 6@
  846. 02F7: 6@ = cosine 4@
  847. 0073: 5@ /= 6@
  848. 02F6: 6@ = sine 4@
  849. 006B: 5@ *= 6@
  850. 005B: 2@ += 5@
  851. 0AB2: ret 3 0@ 1@ 2@
  852.  
  853. :PlayerActor_to_var
  854. //0AB1: call_scm_func @PlayerActor_to_var 1 Actor handle $PLAYER_ACTOR Var 1@
  855. 00A0: store_actor 0@ position_to 1@ 2@ 3@
  856. 0AB2: ret 1 0@
  857.  
  858. //0AB1: call_scm_func @name_letters_number 1 Actor handle 1@ Number_store_to 26@
  859. :name_letters_number
  860. 0B2B: samp 1@ = get_player_id_by_actor_handle 0@ //2@
  861. 0B36: samp 2@ = get_player_nickname 1@
  862. 0AA7: call_function 0x00826330 num_params 1 pop 1 2@ 3@
  863. 0AB2: ret 1 3@
  864.  
  865.  
  866. //0AB1: call_scm_func @code_letters_number 1 Number 22@ Individual_number_code 22@
  867. :code_letters_number
  868. if 0@ == 16
  869. then
  870. 1@ = 5154
  871. else
  872. if 0@ == 17
  873. then
  874. 1@ = 3488
  875. else
  876. if 0@ == 18
  877. then
  878. 1@ = 2915
  879. else
  880. if 0@ == 19
  881. then
  882. 1@ = 1221
  883. else
  884. if 0@ == 20
  885. then
  886. 1@ = 1919
  887. else
  888. if 0@ == 21
  889. then
  890. 1@ = 6236
  891. else
  892. if 0@ == 22
  893. then
  894. 1@ = 4124
  895. else
  896. if 0@ == 23
  897. then
  898. 1@ = 5753
  899. else
  900. if 0@ == 24
  901. then
  902. 1@ = 9875
  903. else
  904. if 0@ = 25
  905. then
  906. 1@ = 2312
  907. else
  908. 1@ = 12312
  909. end
  910. end
  911. end
  912. end
  913. end
  914. end
  915. end
  916. end
  917. end
  918. end
  919. 0AB2: ret 1 1@
  920.  
  921. //0AB1: call_scm_func @code_distance 1 Distance 18@ Distance_code 18@
  922. :code_distance
  923. if 0033: 1.50 >= 0@
  924. then
  925. 1@ = 5.2
  926. else
  927. if 0033: 7.75 >= 0@
  928. then
  929. 1@ = 3.1
  930. else
  931. if 0033: 12.50 >= 0@
  932. then
  933. 1@ = 2.6
  934. else
  935. if 0033: 17.50 >= 0@
  936. then
  937. 1@ = 6.7
  938. else
  939. if 0033: 22.50 >= 0@
  940. then
  941. 1@ = 1.6
  942. else
  943. if 0033: 27.50 >= 0@
  944. then
  945. 1@ = 7.9
  946. else
  947. if 0033: 32.50 >= 0@
  948. then
  949. 1@ = 2.1
  950. else
  951. if 0033: 37.50 >= 0@
  952. then
  953. 1@ = 11.2
  954. else
  955. if 0033: 42.50 >= 0@
  956. then
  957. 1@ = 1.2
  958. else
  959. if 0033: 47.50 >= 0@
  960. then
  961. 1@ = 24.4
  962. else
  963. if 0033: 52.50 >= 0@
  964. then
  965. 1@ = 7.9
  966. else
  967. if 0033: 57.50 >= 0@
  968. then
  969. 1@ = 2.1
  970. else
  971. if 0033: 62.50 >= 0@
  972. then
  973. 1@ = 11.2
  974. else
  975. if 0033: 67.50 >= 0@
  976. then
  977. 1@ = 1.2
  978. else
  979. if 0033: 72.50 >= 0@
  980. then
  981. 1@ = 24.4
  982. else
  983. if 0033: 77.50 >= 0@
  984. then
  985. 1@ = 15.7
  986. else
  987. if 0033: 82.50 >= 0@
  988. then
  989. 1@ = 12.9
  990. else
  991. 1@ = 50.7
  992. end
  993. end
  994. end
  995. end
  996. end
  997. end
  998. end
  999. end
  1000. end
  1001. end
  1002. end
  1003. end
  1004. end
  1005. end
  1006. end
  1007. end
  1008. end
  1009. 006B: 0@ *= 1@
  1010. 0017: 0@ /= 2.2
  1011. 0AB2: ret 1 0@
  1012.  
  1013.  
  1014. :get_2th_4th_6th_8th_letter
  1015. //Example: 0AB1: call_scm_func @get_2th_4th_6th_8th_letter 1 Actor handle $PLAYER_ACTOR Letters 2@ 4@ 6@ 8@
  1016. //
  1017. 0B2B: samp 31@ = get_player_id_by_actor_handle 0@ //2@
  1018. 0B36: samp 30@ = get_player_nickname 31@
  1019. 0AC8: 11@ = allocate_memory 16
  1020. 0085: 12@ = 11@
  1021. 0A8C: write_memory 11@ size 16 value 0 virtual_protect 0
  1022. 0AD3: 30@v = format "%s" 30@
  1023. 0AD3: 11@ = format "%s" 30@v
  1024. //0@ gets my name
  1025. 0A8D: 14@ = read_memory 12@ size 16 virtual_protect 0
  1026. 0AD3: 14@v = format "%s" 14@
  1027. 0AC8: 13@ = allocate_memory 1
  1028. 0AD3: 13@ = format "%c" 14@
  1029. 12@ += 1
  1030. 0A8D: 15@ = read_memory 12@ size 15 virtual_protect 0
  1031. 0AD3: 15@v = format "%s" 15@
  1032. 0AC8: 14@ = allocate_memory 1
  1033. 0AD3: 14@ = format "%c" 15@
  1034. 12@ += 1
  1035. 0A8D: 16@ = read_memory 12@ size 14 virtual_protect 0
  1036. 0AD3: 16@v = format "%s" 16@
  1037. 0AC8: 15@ = allocate_memory 1
  1038. 0AD3: 15@ = format "%c" 16@
  1039. 12@ += 1
  1040. 0A8D: 17@ = read_memory 12@ size 13 virtual_protect 0
  1041. 0AD3: 17@v = format "%s" 17@
  1042. 0AC8: 16@ = allocate_memory 1
  1043. 0AD3: 16@ = format "%c" 17@
  1044. 12@ += 1
  1045. 0A8D: 18@ = read_memory 12@ size 12 virtual_protect 0
  1046. 0AD3: 18@v = format "%s" 18@
  1047. 0AC8: 17@ = allocate_memory 1
  1048. 0AD3: 17@ = format "%c" 18@
  1049. 12@ += 1
  1050. 0A8D: 19@ = read_memory 12@ size 11 virtual_protect 0
  1051. 0AD3: 19@v = format "%s" 19@
  1052. 0AC8: 18@ = allocate_memory 1
  1053. 0AD3: 18@ = format "%c" 19@
  1054. 12@ += 1
  1055. 0A8D: 20@ = read_memory 12@ size 10 virtual_protect 0
  1056. 0AD3: 20@v = format "%s" 20@
  1057. 0AC8: 19@ = allocate_memory 1
  1058. 0AD3: 19@ = format "%c" 20@
  1059. 12@ += 1
  1060. 0A8D: 21@ = read_memory 12@ size 9 virtual_protect 0
  1061. 0AD3: 21@v = format "%s" 21@
  1062. 0AC8: 20@ = allocate_memory 1
  1063. 0AD3: 20@ = format "%c" 21@
  1064. 12@ += 1
  1065. 0A8D: 22@ = read_memory 12@ size 8 virtual_protect 0
  1066. 0AD3: 22@v = format "%s" 22@
  1067. 0AC8: 21@ = allocate_memory 1
  1068. 0AD3: 21@ = format "%c" 22@
  1069. 12@ += 1
  1070. 0A8D: 23@ = read_memory 12@ size 7 virtual_protect 0
  1071. 0AD3: 23@v = format "%s" 23@
  1072. 0AC8: 22@ = allocate_memory 1
  1073. 0AD3: 22@ = format "%c" 23@
  1074. 12@ += 1
  1075. 0A8D: 24@ = read_memory 12@ size 6 virtual_protect 0
  1076. 0AD3: 24@v = format "%s" 24@
  1077. 0AC8: 23@ = allocate_memory 1
  1078. 0AD3: 23@ = format "%c" 24@
  1079. 12@ += 1
  1080. 0A8D: 25@ = read_memory 12@ size 5 virtual_protect 0
  1081. 0AD3: 25@v = format "%s" 25@
  1082. 0AC8: 24@ = allocate_memory 1
  1083. 0AD3: 24@ = format "%c" 25@
  1084. 0AC9: free_allocated_memory 11@
  1085. 0AB2: ret 4 14@ 16@ 18@ 20@ //1st=13@ 2nd=14@ 3rd=15@ 4th=16@ 5th=17@ 6th=18@ 7th=19@ 8th=20@ 9th=21@ 10th=22@ 11th=23@ 12th=24@
  1086.  
  1087.  
  1088. :code_2th_4th_6th_8th_letter
  1089. //0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 1@ 2@ 3@ 4@ Individual_name_code_store_to 5@
  1090.  
  1091. //SECOND LETTER
  1092.  
  1093. 06D2: 24@v = "z"
  1094. 06D2: 26@v = "u"
  1095. 06D2: 27@v = "p"
  1096. 06D2: 28@v = "k"
  1097. 06D2: 29@v = "f"
  1098. 06D2: 30@v = "a"
  1099. if or
  1100. 0C18: 31@ = strstr string1 0@ string2 24@v
  1101. 0C18: 31@ = strstr string1 0@ string2 26@v
  1102. 0C18: 31@ = strstr string1 0@ string2 27@v
  1103. 0C18: 31@ = strstr string1 0@ string2 28@v
  1104. 0C18: 31@ = strstr string1 0@ string2 29@v
  1105. 0C18: 31@ = strstr string1 0@ string2 30@v
  1106. then
  1107. //first letter code output for a,f,k,p,u,z
  1108. 5@ = 18
  1109. else
  1110. 06D2: 24@v = "_"
  1111. 06D2: 26@v = "v"
  1112. 06D2: 27@v = "q"
  1113. 06D2: 28@v = "l"
  1114. 06D2: 29@v = "g"
  1115. 06D2: 30@v = "b"
  1116. if or
  1117. 0C18: 31@ = strstr string1 0@ string2 24@v
  1118. 0C18: 31@ = strstr string1 0@ string2 26@v
  1119. 0C18: 31@ = strstr string1 0@ string2 27@v
  1120. 0C18: 31@ = strstr string1 0@ string2 28@v
  1121. 0C18: 31@ = strstr string1 0@ string2 29@v
  1122. 0C18: 31@ = strstr string1 0@ string2 30@v
  1123. then
  1124. //first letter code output for b,g,l,q,v,_
  1125. 5@ = 14
  1126. else
  1127. 06D2: 26@v = "c"
  1128. 06D2: 27@v = "h"
  1129. 06D2: 28@v = "m"
  1130. 06D2: 29@v = "r"
  1131. 06D2: 30@v = "w"
  1132. if or
  1133. 0C18: 31@ = strstr string1 0@ string2 26@v
  1134. 0C18: 31@ = strstr string1 0@ string2 27@v
  1135. 0C18: 31@ = strstr string1 0@ string2 28@v
  1136. 0C18: 31@ = strstr string1 0@ string2 29@v
  1137. 0C18: 31@ = strstr string1 0@ string2 30@v
  1138. then
  1139. //first letter code output for c,h,m,r,w
  1140. 5@ = 32
  1141. else
  1142. 06D2: 26@v = "d"
  1143. 06D2: 27@v = "i"
  1144. 06D2: 28@v = "n"
  1145. 06D2: 29@v = "t"
  1146. 06D2: 30@v = "x"
  1147. if or
  1148. 0C18: 31@ = strstr string1 0@ string2 26@v
  1149. 0C18: 31@ = strstr string1 0@ string2 27@v
  1150. 0C18: 31@ = strstr string1 0@ string2 28@v
  1151. 0C18: 31@ = strstr string1 0@ string2 29@v
  1152. 0C18: 31@ = strstr string1 0@ string2 30@v
  1153. then
  1154. //first letter code output for d,i,n,t,x
  1155. 5@ = 62
  1156. else
  1157. 06D2: 26@v = "e"
  1158. 06D2: 27@v = "j"
  1159. 06D2: 28@v = "o"
  1160. 06D2: 29@v = "u"
  1161. 06D2: 30@v = "y"
  1162. if or
  1163. 0C18: 31@ = strstr string1 0@ string2 26@v
  1164. 0C18: 31@ = strstr string1 0@ string2 27@v
  1165. 0C18: 31@ = strstr string1 0@ string2 28@v
  1166. 0C18: 31@ = strstr string1 0@ string2 29@v
  1167. 0C18: 31@ = strstr string1 0@ string2 30@v
  1168. then
  1169. //first letter code output for e,j,o,u,y
  1170. 5@ = 44
  1171. else
  1172. //first letter code output for capital letter or any other letter/number
  1173. 5@ = 67
  1174. end
  1175. end
  1176. end
  1177. end
  1178. end
  1179.  
  1180. //FOURTH LETTER
  1181.  
  1182. 06D2: 24@v = "a"
  1183. 06D2: 26@v = "f"
  1184. 06D2: 27@v = "k"
  1185. 06D2: 28@v = "p"
  1186. 06D2: 29@v = "u"
  1187. 06D2: 30@v = "z"
  1188. if or
  1189. 0C18: 31@ = strstr string1 1@ string2 24@v
  1190. 0C18: 31@ = strstr string1 1@ string2 26@v
  1191. 0C18: 31@ = strstr string1 1@ string2 27@v
  1192. 0C18: 31@ = strstr string1 1@ string2 28@v
  1193. 0C18: 31@ = strstr string1 1@ string2 29@v
  1194. 0C18: 31@ = strstr string1 1@ string2 30@v
  1195. then
  1196. //first letter code output for a,f,k,p,u,z
  1197. 6@ = 43
  1198. else
  1199. 06D2: 24@v = "b"
  1200. 06D2: 26@v = "g"
  1201. 06D2: 27@v = "l"
  1202. 06D2: 28@v = "q"
  1203. 06D2: 29@v = "v"
  1204. 06D2: 30@v = "_"
  1205. if or
  1206. 0C18: 31@ = strstr string1 1@ string2 24@v
  1207. 0C18: 31@ = strstr string1 1@ string2 26@v
  1208. 0C18: 31@ = strstr string1 1@ string2 27@v
  1209. 0C18: 31@ = strstr string1 1@ string2 28@v
  1210. 0C18: 31@ = strstr string1 1@ string2 29@v
  1211. 0C18: 31@ = strstr string1 1@ string2 30@v
  1212. then
  1213. //first letter code output for b,g,l,q,v,_
  1214. 6@ = 76
  1215. else
  1216. 06D2: 26@v = "c"
  1217. 06D2: 27@v = "h"
  1218. 06D2: 28@v = "m"
  1219. 06D2: 29@v = "r"
  1220. 06D2: 30@v = "w"
  1221. if or
  1222. 0C18: 31@ = strstr string1 1@ string2 26@v
  1223. 0C18: 31@ = strstr string1 1@ string2 27@v
  1224. 0C18: 31@ = strstr string1 1@ string2 28@v
  1225. 0C18: 31@ = strstr string1 1@ string2 29@v
  1226. 0C18: 31@ = strstr string1 1@ string2 30@v
  1227. then
  1228. //first letter code output for c,h,m,r,w
  1229. 6@ = 86
  1230. else
  1231. 06D2: 26@v = "d"
  1232. 06D2: 27@v = "i"
  1233. 06D2: 28@v = "n"
  1234. 06D2: 29@v = "t"
  1235. 06D2: 30@v = "x"
  1236. if or
  1237. 0C18: 31@ = strstr string1 1@ string2 26@v
  1238. 0C18: 31@ = strstr string1 1@ string2 27@v
  1239. 0C18: 31@ = strstr string1 1@ string2 28@v
  1240. 0C18: 31@ = strstr string1 1@ string2 29@v
  1241. 0C18: 31@ = strstr string1 1@ string2 30@v
  1242. then
  1243. //first letter code output for d,i,n,t,x
  1244. 6@ = 81
  1245. else
  1246. 06D2: 26@v = "e"
  1247. 06D2: 27@v = "j"
  1248. 06D2: 28@v = "o"
  1249. 06D2: 29@v = "u"
  1250. 06D2: 30@v = "y"
  1251. if or
  1252. 0C18: 31@ = strstr string1 1@ string2 26@v
  1253. 0C18: 31@ = strstr string1 1@ string2 27@v
  1254. 0C18: 31@ = strstr string1 1@ string2 28@v
  1255. 0C18: 31@ = strstr string1 1@ string2 29@v
  1256. 0C18: 31@ = strstr string1 1@ string2 30@v
  1257. then
  1258. //first letter code output for e,j,o,u,y
  1259. 6@ = 84
  1260. else
  1261. //first letter code output for capital letter or any other letter/number
  1262. 6@ = 29
  1263. end
  1264. end
  1265. end
  1266. end
  1267. end
  1268.  
  1269. //SIXTH LETTER
  1270.  
  1271. 06D2: 24@v = "a"
  1272. 06D2: 26@v = "f"
  1273. 06D2: 27@v = "k"
  1274. 06D2: 28@v = "p"
  1275. 06D2: 29@v = "u"
  1276. 06D2: 30@v = "z"
  1277. if or
  1278. 0C18: 31@ = strstr string1 2@ string2 24@v
  1279. 0C18: 31@ = strstr string1 2@ string2 26@v
  1280. 0C18: 31@ = strstr string1 2@ string2 27@v
  1281. 0C18: 31@ = strstr string1 2@ string2 28@v
  1282. 0C18: 31@ = strstr string1 2@ string2 29@v
  1283. 0C18: 31@ = strstr string1 2@ string2 30@v
  1284. then
  1285. //first letter code output for a,f,k,p,u,z
  1286. 7@ = 5
  1287. else
  1288. 06D2: 24@v = "b"
  1289. 06D2: 26@v = "g"
  1290. 06D2: 27@v = "l"
  1291. 06D2: 28@v = "q"
  1292. 06D2: 29@v = "v"
  1293. 06D2: 30@v = "_"
  1294. if or
  1295. 0C18: 31@ = strstr string1 2@ string2 24@v
  1296. 0C18: 31@ = strstr string1 2@ string2 26@v
  1297. 0C18: 31@ = strstr string1 2@ string2 27@v
  1298. 0C18: 31@ = strstr string1 2@ string2 28@v
  1299. 0C18: 31@ = strstr string1 2@ string2 29@v
  1300. 0C18: 31@ = strstr string1 2@ string2 30@v
  1301. then
  1302. //first letter code output for b,g,l,q,v,_
  1303. 7@ = 65
  1304. else
  1305. 06D2: 26@v = "c"
  1306. 06D2: 27@v = "h"
  1307. 06D2: 28@v = "m"
  1308. 06D2: 29@v = "r"
  1309. 06D2: 30@v = "w"
  1310. if or
  1311. 0C18: 31@ = strstr string1 2@ string2 26@v
  1312. 0C18: 31@ = strstr string1 2@ string2 27@v
  1313. 0C18: 31@ = strstr string1 2@ string2 28@v
  1314. 0C18: 31@ = strstr string1 2@ string2 29@v
  1315. 0C18: 31@ = strstr string1 2@ string2 30@v
  1316. then
  1317. //first letter code output for c,h,m,r,w
  1318. 7@ = 87
  1319. else
  1320. 06D2: 26@v = "d"
  1321. 06D2: 27@v = "i"
  1322. 06D2: 28@v = "n"
  1323. 06D2: 29@v = "t"
  1324. 06D2: 30@v = "x"
  1325. if or
  1326. 0C18: 31@ = strstr string1 2@ string2 26@v
  1327. 0C18: 31@ = strstr string1 2@ string2 27@v
  1328. 0C18: 31@ = strstr string1 2@ string2 28@v
  1329. 0C18: 31@ = strstr string1 2@ string2 29@v
  1330. 0C18: 31@ = strstr string1 2@ string2 30@v
  1331. then
  1332. //first letter code output for d,i,n,t,x
  1333. 7@ = 52
  1334. else
  1335. 06D2: 26@v = "e"
  1336. 06D2: 27@v = "j"
  1337. 06D2: 28@v = "o"
  1338. 06D2: 29@v = "u"
  1339. 06D2: 30@v = "y"
  1340. if or
  1341. 0C18: 31@ = strstr string1 2@ string2 26@v
  1342. 0C18: 31@ = strstr string1 2@ string2 27@v
  1343. 0C18: 31@ = strstr string1 2@ string2 28@v
  1344. 0C18: 31@ = strstr string1 2@ string2 29@v
  1345. 0C18: 31@ = strstr string1 2@ string2 30@v
  1346. then
  1347. //first letter code output for e,j,o,u,y
  1348. 7@ = 10
  1349. else
  1350. //first letter code output for capital letter or any other letter/number
  1351. 7@ = 90
  1352. end
  1353. end
  1354. end
  1355. end
  1356. end
  1357.  
  1358.  
  1359. //EIGHTH LETTER
  1360.  
  1361. 06D2: 24@v = "a"
  1362. 06D2: 26@v = "f"
  1363. 06D2: 27@v = "k"
  1364. 06D2: 28@v = "p"
  1365. 06D2: 29@v = "u"
  1366. 06D2: 30@v = "z"
  1367. if or
  1368. 0C18: 31@ = strstr string1 3@ string2 24@v
  1369. 0C18: 31@ = strstr string1 3@ string2 26@v
  1370. 0C18: 31@ = strstr string1 3@ string2 27@v
  1371. 0C18: 31@ = strstr string1 3@ string2 28@v
  1372. 0C18: 31@ = strstr string1 3@ string2 29@v
  1373. 0C18: 31@ = strstr string1 3@ string2 30@v
  1374. then
  1375. //first letter code output for a,f,k,p,u,z
  1376. 8@ = 57
  1377. else
  1378. 06D2: 24@v = "b"
  1379. 06D2: 26@v = "g"
  1380. 06D2: 27@v = "l"
  1381. 06D2: 28@v = "q"
  1382. 06D2: 29@v = "v"
  1383. 06D2: 30@v = "_"
  1384. if or
  1385. 0C18: 31@ = strstr string1 3@ string2 24@v
  1386. 0C18: 31@ = strstr string1 3@ string2 26@v
  1387. 0C18: 31@ = strstr string1 3@ string2 27@v
  1388. 0C18: 31@ = strstr string1 3@ string2 28@v
  1389. 0C18: 31@ = strstr string1 3@ string2 29@v
  1390. 0C18: 31@ = strstr string1 3@ string2 30@v
  1391. then
  1392. //first letter code output for b,g,l,q,v,_
  1393. 8@ = 35
  1394. else
  1395. 06D2: 26@v = "c"
  1396. 06D2: 27@v = "h"
  1397. 06D2: 28@v = "m"
  1398. 06D2: 29@v = "r"
  1399. 06D2: 30@v = "w"
  1400. if or
  1401. 0C18: 31@ = strstr string1 3@ string2 26@v
  1402. 0C18: 31@ = strstr string1 3@ string2 27@v
  1403. 0C18: 31@ = strstr string1 3@ string2 28@v
  1404. 0C18: 31@ = strstr string1 3@ string2 29@v
  1405. 0C18: 31@ = strstr string1 3@ string2 30@v
  1406. then
  1407. //first letter code output for c,h,m,r,w
  1408. 8@ = 88
  1409. else
  1410. 06D2: 26@v = "d"
  1411. 06D2: 27@v = "i"
  1412. 06D2: 28@v = "n"
  1413. 06D2: 29@v = "t"
  1414. 06D2: 30@v = "x"
  1415. if or
  1416. 0C18: 31@ = strstr string1 3@ string2 26@v
  1417. 0C18: 31@ = strstr string1 3@ string2 27@v
  1418. 0C18: 31@ = strstr string1 3@ string2 28@v
  1419. 0C18: 31@ = strstr string1 3@ string2 29@v
  1420. 0C18: 31@ = strstr string1 3@ string2 30@v
  1421. then
  1422. //first letter code output for d,i,n,t,x
  1423. 8@ = 2
  1424. else
  1425. 06D2: 26@v = "e"
  1426. 06D2: 27@v = "j"
  1427. 06D2: 28@v = "o"
  1428. 06D2: 29@v = "u"
  1429. 06D2: 30@v = "y"
  1430. if or
  1431. 0C18: 31@ = strstr string1 3@ string2 26@v
  1432. 0C18: 31@ = strstr string1 3@ string2 27@v
  1433. 0C18: 31@ = strstr string1 3@ string2 28@v
  1434. 0C18: 31@ = strstr string1 3@ string2 29@v
  1435. 0C18: 31@ = strstr string1 3@ string2 30@v
  1436. then
  1437. //first letter code output for e,j,o,u,y
  1438. 8@ = 9
  1439. else
  1440. //first letter code output for capital letter or any other letter/number
  1441. 8@ = 48
  1442. end
  1443. end
  1444. end
  1445. end
  1446. end
  1447. 006A: 5@ *= 6@
  1448. 006A: 5@ *= 7@
  1449. 0072: 5@ /= 8@
  1450. 0AB2: ret 1 5@
  1451.  
  1452.  
  1453. //0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle $PLAYER_ACTOR RGBA 0 204 0 255 THICKNESS 2.0
  1454. :Box_Actor_Timed
  1455. 0000:
  1456. 32@ = 0 // TIMER,
  1457. repeat
  1458. wait 0
  1459. 0AB1: @Box_Actor 6 Actor_handle 1@ Red 2@ Green 3@ Blue 4@ Alpha 5@ Thickness 6@
  1460. until 001D: 32@ > 0@
  1461. 004E: END_THIS_THREAD
  1462. 0A93: END_THIS_THREAD
  1463.  
  1464. //0AB1: @Box_Actor 6 Actor_handle 1@ Red 2@ Green 3@ Blue 4@ Alpha 5@ Thickness 6@
  1465. //0AB1: @Box_Actor 6 Actor_handle 1@ Red 2@ Green 3@ Blue 4@ Alpha 5@ Thickness 6@
  1466. :Box_Actor
  1467. 00A0: store_actor 0@ position_to 11@ 12@ 13@
  1468. 068D: get_camera_position_to 21@ 22@ 23@
  1469. 050A: 24@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 21@ 22@ 23@
  1470. 25@ = 800.0
  1471. 26@ = 1050.0
  1472. 0073: 25@ /= 24@ // (float)
  1473. 0073: 26@ /= 24@
  1474. 0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 11@ Y 12@ Z 13@ store_screen_X_to 14@ Y_to 15@
  1475. 0AB1: @DRAW_OUTLINED_BOX 9 POS 14@ 15@ SIZE 25@ 26@ RGBA 1@ 2@ 3@ 4@ THICKNESS 5@
  1476. 0AB2: ret 0
  1477.  
  1478. //0AB1: @DRAW_OUTLINED_BOX 9 POS 300.0 300.0 SIZE 50.0 50.0 RGBA 255 0 0 255 THICKNESS 0.5
  1479. :DRAW_OUTLINED_BOX
  1480. 0087: 14@ = 8@ // (float)
  1481. 0087: 12@ = 2@ // (float)
  1482. 0087: 13@ = 3@ // (float)
  1483. 12@ /= 2.0 // (float)
  1484. 13@ /= 2.0 // (float)
  1485. 0087: 8@ = 0@ // (float)
  1486. 005B: 8@ += 2@ // (float)
  1487. 0063: 8@ -= 12@ // (float)
  1488. 0087: 9@ = 0@ // (float)
  1489. 0063: 9@ -= 2@ // (float)
  1490. 005B: 9@ += 12@ // (float)
  1491. 0087: 10@ = 1@ // (float)
  1492. 005B: 10@ += 3@ // (float)
  1493. 0063: 10@ -= 13@ // (float)
  1494. 0087: 11@ = 1@ // (float) by OpcodeXe
  1495. 0063: 11@ -= 3@ // (float)
  1496. 005B: 11@ += 13@ // (float)
  1497. 03F0: enable_text_draw 1
  1498. 038E: draw_box_position 8@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // links
  1499. 038E: draw_box_position 9@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // rechts
  1500. 038E: draw_box_position 0@ 10@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // oben
  1501. 038E: draw_box_position 0@ 11@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // unten
  1502. 0AB2: ret 0
  1503.  
  1504. //0AB1: @RUN_CLEO 8 AT LINE @Box_Actor_Timed TIME 1000 Actor_handle 1@ RGBA 0 204 0 255 THICKNESS 2.0
  1505. :RUN_CLEO
  1506. 0A9F: 32@ = current_thread_pointer
  1507. 000A: 32@ += 0x10
  1508. 0A8D: 32@ = read_memory 32@ size 4 virtual_protect 0
  1509. 0062: 32@ -= 0@
  1510. 0AA7: call_function 0x464C20 num_params 1 pop 1 32@ 33@
  1511. 005A: 32@ += 0@
  1512. 000A: 33@ += 0x10
  1513. 0A8C: write_memory 33@ size 4 value 32@ virtual_protect 0
  1514. 000A: 33@ += 0x2C
  1515. for 32@ = 0 to 30
  1516. 0A8C: write_memory 33@ size 4 value 1@(32@,30i) virtual_protect 0
  1517. 000A: 33@ += 4
  1518. end
  1519. 0AB2: ret 0
  1520.  
  1521. //0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
  1522. :getScreenXYFrom3DCoords
  1523. 0AA7: call_function 0x70CE30 num_params 6 pop 6 clipNear 1 clipFar 1 yMult 7@s xMult 6@s outVector 2@s inVector 0@s result 29@
  1524. 0073: 2@ /= 6@
  1525. 0073: 2@ /= 4@
  1526. 0073: 3@ /= 7@
  1527. 0073: 3@ /= 4@
  1528. 2@ *= 640.0
  1529. 3@ *= 448.0
  1530. 0AB2: ret 2 2@ 3@
  1531.  
  1532. :Activate
  1533. wait 0
  1534. 0B12: 31@ = 31@ XOR 1
  1535. if 31@ == 1
  1536. then
  1537. 0AF8: samp add_message_to_chat "supremeVision is {00CC00}Enabled" color 0xF7F694
  1538. else
  1539. 0AF8: samp add_message_to_chat "supremeVision is {FF4800}Disabled" color 0xF7F694
  1540.  
  1541. end
  1542. samp.CmdRet
  1543.  
  1544.  
  1545.  
  1546. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1547. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1548. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1549. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1550. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1551. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1552. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1553. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1554. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1555. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1556. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1557. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1558. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1559. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1560. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1561. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1562. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1563. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1564.  
  1565.  
  1566.  
  1567. {:Checkcode
  1568. wait 0
  1569. if
  1570. 32@ > 30000
  1571. then
  1572. 0AB1: @RUN_CLEO 1 AT LINE @1
  1573. 32@ = 0
  1574. else
  1575. 0AF8: samp add_message_to_chat "Please allow 30 seconds between code checks due to security reasons" color 0xFF4800
  1576. end
  1577. samp.CmdRet()}
  1578.  
  1579.  
  1580. :1
  1581. 0000: NOP
  1582. 33@ = 30000
  1583. 0AC8: 5@ = 260
  1584. 0AC8: 6@ = 260
  1585. 0AC8: 7@ = 260
  1586. 0AC8: 8@ = 260
  1587. 0AC8: 9@ = 260
  1588. 0AC8: 10@ = 260
  1589. 0B34: samp register_client_command "checkcode" to_label @Checkcode
  1590. 31@ = 0
  1591.  
  1592. :2
  1593. wait 0
  1594. if 31@ == 0
  1595. then
  1596. jump @2
  1597. end
  1598. if 31@ == 1
  1599. then
  1600. 0AF8: samp add_message_to_chat "In order to check if the code is authentic follow the steps:" color 0xF7F694
  1601. 0AF8: samp add_message_to_chat "Step 1 - Submit the name of the victim [Example: /victim Albert_Einstein]" color 0xF7F694
  1602. 31@ = 0
  1603. end
  1604. if 31@ == 2
  1605. then
  1606. 0AF8: samp add_message_to_chat "Victim has been submitted" color 0x00CC00
  1607. 0AF8: samp add_message_to_chat "Step 2 - Submit the name of the suspect [Example: /suspect Marcellus_Wallace]" color 0xF7F694
  1608. 31@ = 0
  1609. end
  1610. if 31@ == 3
  1611. then
  1612. 0AF8: samp add_message_to_chat "Suspect has been submitted" color 0x00CC00
  1613. 0AF8: samp add_message_to_chat "Step 3 - Submit the distance [Example: /distance 23.735]" color 0xF7F694
  1614. 31@ = 0
  1615. end
  1616. if 31@ == 4
  1617. then
  1618. 0AF8: samp add_message_to_chat "Distance has been submitted" color 0x00CC00
  1619. 0AF8: samp add_message_to_chat "Step 4 - Submit the code [Example: /code 37B66]" color 0xF7F694
  1620. 31@ = 0
  1621. end
  1622. if 31@ == 5
  1623. then
  1624. if
  1625. 32@ > 30000
  1626. then
  1627. wait 0
  1628. else //time check, if under 30 seconds
  1629. 31@ = 0
  1630. 0AF8: samp add_message_to_chat "Please allow 30 seconds between code checks due to security reasons" color 0xFF4800
  1631. jump @2
  1632. end
  1633. 0AF8: samp add_message_to_chat "Results:" color 0x00CC00
  1634. 0AB1: call_scm_func @Is_name_online 1 Name 5@ Connection_status_store_to 12@ //check if the victim is online
  1635. if
  1636. 12@ == 0 //offline
  1637. then
  1638. 0AF8: samp add_message_to_chat "Submitted victim: {00CC00}%s {E0E0E0}(Offline)" color 0xF7F694 5@
  1639. else
  1640. if
  1641. 12@ == 1 //online
  1642. then
  1643. 0AF8: samp add_message_to_chat "Submitted victim: {00CC00}%s {E0E0E0}({F7F694}Online{E0E0E0})" color 0xF7F694 5@
  1644. end
  1645. end
  1646. 0AB1: call_scm_func @Is_name_online 1 Name 6@ Connection_status_store_to 12@ //check if the suspect is online
  1647. if
  1648. 12@ == 0 //offline
  1649. then
  1650. 0AF8: samp add_message_to_chat "Submitted suspect: {00CC00}%s {E0E0E0}(Offline)" color 0xF7F694 6@
  1651. else
  1652. if
  1653. 12@ == 1 //online
  1654. then
  1655. 0AF8: samp add_message_to_chat "Submitted victim: {00CC00}%s {E0E0E0}({F7F694}Online{E0E0E0})" color 0xF7F694 6@
  1656. end
  1657. end
  1658. 0AF8: samp add_message_to_chat "Submitted distance: {00CC00}%.3f meters" color 0xF7F694 7@
  1659. 0AF8: samp add_message_to_chat "Submitted code: {00CC00}%X" color 0xF7F694 8@
  1660. 31@ = 0
  1661. 0AB1: call_scm_func @CHECK_CODE_name_letters_number 1 Name 5@ Number_store_to 22@
  1662. 0AB1: call_scm_func @CHECK_CODE_name_letters_number 1 Name 6@ Number_store_to 26@
  1663. if and
  1664. 002B: 15 >= 22@
  1665. 002B: 15 >= 26@
  1666. then
  1667. 0AB1: call_scm_func @CHECK_CODE_get_2th_4th_6th_8th_letter 1 Name 5@ Letters 4@ 2@ 31@ 30@
  1668. 0AB1: call_scm_func @CHECK_code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 27@
  1669. 0AB1: call_scm_func @CHECK_CODE_get_2th_4th_6th_8th_letter 1 Name 6@ Letters 4@ 2@ 31@ 30@
  1670. 0AB1: call_scm_func @CHECK_code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 28@
  1671. else
  1672. if and
  1673. 0029: 22@ >= 16
  1674. 002B: 15 >= 26@
  1675. then
  1676. 0AB1: call_scm_func @CHECK_code_letters_number 1 Number 22@ Individual_number_code 27@
  1677. 0AB1: call_scm_func @CHECK_CODE_get_2th_4th_6th_8th_letter 1 Name 6@ Letters 4@ 2@ 31@ 30@
  1678. 0AB1: call_scm_func @CHECK_code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 28@
  1679. else
  1680. if and
  1681. 0029: 26@ >= 16
  1682. 002B: 15 >= 22@
  1683. then
  1684. 0AB1: call_scm_func @CHECK_code_letters_number 1 Number 26@ Individual_number_code 28@
  1685. 0AB1: call_scm_func @CHECK_CODE_get_2th_4th_6th_8th_letter 1 Name 5@ Letters 4@ 2@ 31@ 30@
  1686. 0AB1: call_scm_func @CHECK_code_2th_4th_6th_8th_letter 4 Letters_input 4@ 2@ 31@ 30@ Individual_name_code_store_to 27@
  1687. else
  1688. if and
  1689. 0029: 22@ >= 16
  1690. 0029: 26@ >= 16
  1691. then
  1692. 0AB1: call_scm_func @CHECK_code_letters_number 1 Number 22@ Individual_number_code 27@
  1693. 0AB1: call_scm_func @CHECK_code_letters_number 1 Number 26@ Individual_number_code 28@
  1694. end
  1695. end
  1696. end
  1697. end
  1698. 0AB1: call_scm_func @CHECK_code_distance 1 Distance 7@ Distance_code 18@
  1699. 0093: 27@ = integer 27@ to_float
  1700. 006B: 27@ *= 18@ // (float)
  1701. 0092: 27@ = float 27@ to_integer
  1702. 005A: 27@ += 28@ // (int)
  1703. if 003B: 27@ == 8@ // (int)
  1704. then
  1705. 0AF8: samp add_message_to_chat "The code is {00CC00}AUTHENTIC" color 0xF7F694
  1706. 32@ = 0
  1707. 31@ = 0
  1708. 33@ = 30001
  1709. 0B63: samp unregister_client_command "victim"
  1710. 0B63: samp unregister_client_command "suspect"
  1711. 0B63: samp unregister_client_command "distance"
  1712. 0B63: samp unregister_client_command "code"
  1713. else
  1714. 0AF8: samp add_message_to_chat "The code is {FF4800}NOT AUTHENTIC" color 0xF7F694
  1715. 32@ = 0
  1716. 31@ = 0
  1717. 33@ = 30001
  1718. 0B63: samp unregister_client_command "victim"
  1719. 0B63: samp unregister_client_command "suspect"
  1720. 0B63: samp unregister_client_command "distance"
  1721. 0B63: samp unregister_client_command "code"
  1722. end
  1723. end
  1724. jump @2
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732. :Checkcode
  1733. wait 0
  1734. if
  1735. 33@ > 30000
  1736. then
  1737. wait 0
  1738. else //time check, if under 30 seconds
  1739. 0AF8: samp add_message_to_chat "Please allow 30 seconds after typing incorrect password to try again" color 0xFF4800
  1740. samp.CmdRet
  1741. end
  1742. 0B35: samp 29@ = get_last_command_params
  1743. if 0AD4: $nouse = scan_string 29@ format "%s" $nouse
  1744. then
  1745. 0C13: strcpy destination 9@ source 29@
  1746. else
  1747. 0AF8: samp add_message_to_chat "Incorrect password" color 0xFF4800
  1748. 33@ = 0
  1749. samp.CmdRet
  1750. end
  1751. 06D2: 11@v = "eagle" // @v = string
  1752. 0AD3: 10@ = format "%s" 11@v
  1753. if
  1754. 0C14: strcmp string1 9@ string2 10@
  1755. then
  1756. 31@ = 1
  1757. 0B63: samp unregister_client_command "victim"
  1758. 0B63: samp unregister_client_command "suspect"
  1759. 0B63: samp unregister_client_command "distance"
  1760. 0B63: samp unregister_client_command "code"
  1761. 0B34: samp register_client_command "victim" to_label @victim_data
  1762. 0B34: samp register_client_command "suspect" to_label @suspect_data
  1763. 0B34: samp register_client_command "distance" to_label @distance_data
  1764. 0B34: samp register_client_command "code" to_label @code_data
  1765. else
  1766. 33@ = 0
  1767. 0AF8: samp add_message_to_chat "Incorrect password" color 0xFF4800
  1768. end
  1769. samp.CmdRet
  1770.  
  1771. :victim_data
  1772. wait 0
  1773. 0B35: samp 29@ = get_last_command_params //5 = victim's name
  1774. if 0AD4: $nouse = scan_string 29@ format "%s" $nouse
  1775. then
  1776. 0C13: strcpy destination 5@ source 29@
  1777. 31@ = 2
  1778. else
  1779. 0AF8: samp add_message_to_chat "Wrong format. Make sure to type the command properly [Example: /victim Albert_Einstein]" color 0xFF4800
  1780. 31@ = 0
  1781. end
  1782. samp.CmdRet
  1783.  
  1784. :suspect_data
  1785. wait 0
  1786. 0B35: samp 29@ = get_last_command_params
  1787. if 0AD4: $nouse = scan_string 29@ format "%s" $nouse
  1788. then
  1789. 0C13: strcpy destination 6@ source 29@
  1790. 31@ = 3
  1791. else
  1792. 0AF8: samp add_message_to_chat "Wrong format. Make sure to type the command properly [Example: /suspect Marcellus_Wallace]" color 0xFF4800
  1793. 31@ = 0
  1794. end
  1795. samp.CmdRet
  1796.  
  1797. :distance_data
  1798. wait 0
  1799. 0B35: samp 29@ = get_last_command_params
  1800. if 0AD4: $nouse = scan_string 29@ format "%f" 28@
  1801. then
  1802. 0087: 7@ = 28@ // (float)
  1803. 31@ = 4
  1804. else
  1805. 0AF8: samp add_message_to_chat "Wrong format. Make sure to type the command properly [Example: /distance 23.735]" color 0xFF4800
  1806. 31@ = 0
  1807. end
  1808. samp.CmdRet
  1809.  
  1810. :code_data
  1811. wait 0
  1812. 0B35: samp 29@ = get_last_command_params
  1813. if 0AD4: $nouse = scan_string 29@ format "%X" 28@
  1814. then
  1815. 0085: 8@ = 28@ // (int)
  1816. 31@ = 5
  1817. else
  1818. 0AF8: samp add_message_to_chat "Wrong format. Make sure to type the command properly [Example: /code 37B66]" color 0xFF4800
  1819. 31@ = 0
  1820. end
  1821. samp.CmdRet
  1822.  
  1823. //0AB1: call_scm_func @Is_name_online 1 Name 0@ Connection_status_store_to 1@
  1824. :Is_name_online
  1825. 1@ = 0
  1826. 0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
  1827. 0B36: samp 4@ = get_player_nickname 3@
  1828. if
  1829. 0C14: strcmp string1 4@ string2 0@
  1830. then
  1831. 1@ = 1
  1832. 0AB2: ret 1 1@
  1833. end
  1834.  
  1835.  
  1836. for 3@ = 0 to 300
  1837. if
  1838. SAMP.IsPlayerConnected(3@)
  1839. then
  1840. 0B36: samp 4@ = get_player_nickname 3@
  1841. if
  1842. 0C14: strcmp string1 4@ string2 0@
  1843. then
  1844. 1@ = 1
  1845. end
  1846. end
  1847. end
  1848. 0AB2: ret 1 1@
  1849.  
  1850.  
  1851.  
  1852. //0AB1: call_scm_func @CHECK_CODE_name_letters_number 1 Name 0@ Number_store_to 26@
  1853. :CHECK_CODE_name_letters_number
  1854. 0AA7: call_function 0x00826330 num_params 1 pop 1 0@ 3@
  1855. 0AB2: ret 1 3@
  1856.  
  1857. :CHECK_CODE_get_2th_4th_6th_8th_letter
  1858. //0AB1: call_scm_func @CHECK_CODE_get_2th_4th_6th_8th_letter 1 Name 0@ Letters 2@ 4@ 6@ 8@
  1859. 0AC8: 11@ = allocate_memory 16
  1860. 0085: 12@ = 11@
  1861. 0A8C: write_memory 11@ size 16 value 0 virtual_protect 0
  1862. 0AD3: 30@v = format "%s" 0@
  1863. 0AD3: 11@ = format "%s" 30@v
  1864. //0@ gets my name
  1865. 0A8D: 14@ = read_memory 12@ size 16 virtual_protect 0
  1866. 0AD3: 14@v = format "%s" 14@
  1867. 0AC8: 13@ = allocate_memory 1
  1868. 0AD3: 13@ = format "%c" 14@
  1869. 12@ += 1
  1870. 0A8D: 15@ = read_memory 12@ size 15 virtual_protect 0
  1871. 0AD3: 15@v = format "%s" 15@
  1872. 0AC8: 14@ = allocate_memory 1
  1873. 0AD3: 14@ = format "%c" 15@
  1874. 12@ += 1
  1875. 0A8D: 16@ = read_memory 12@ size 14 virtual_protect 0
  1876. 0AD3: 16@v = format "%s" 16@
  1877. 0AC8: 15@ = allocate_memory 1
  1878. 0AD3: 15@ = format "%c" 16@
  1879. 12@ += 1
  1880. 0A8D: 17@ = read_memory 12@ size 13 virtual_protect 0
  1881. 0AD3: 17@v = format "%s" 17@
  1882. 0AC8: 16@ = allocate_memory 1
  1883. 0AD3: 16@ = format "%c" 17@
  1884. 12@ += 1
  1885. 0A8D: 18@ = read_memory 12@ size 12 virtual_protect 0
  1886. 0AD3: 18@v = format "%s" 18@
  1887. 0AC8: 17@ = allocate_memory 1
  1888. 0AD3: 17@ = format "%c" 18@
  1889. 12@ += 1
  1890. 0A8D: 19@ = read_memory 12@ size 11 virtual_protect 0
  1891. 0AD3: 19@v = format "%s" 19@
  1892. 0AC8: 18@ = allocate_memory 1
  1893. 0AD3: 18@ = format "%c" 19@
  1894. 12@ += 1
  1895. 0A8D: 20@ = read_memory 12@ size 10 virtual_protect 0
  1896. 0AD3: 20@v = format "%s" 20@
  1897. 0AC8: 19@ = allocate_memory 1
  1898. 0AD3: 19@ = format "%c" 20@
  1899. 12@ += 1
  1900. 0A8D: 21@ = read_memory 12@ size 9 virtual_protect 0
  1901. 0AD3: 21@v = format "%s" 21@
  1902. 0AC8: 20@ = allocate_memory 1
  1903. 0AD3: 20@ = format "%c" 21@
  1904. 12@ += 1
  1905. 0A8D: 22@ = read_memory 12@ size 8 virtual_protect 0
  1906. 0AD3: 22@v = format "%s" 22@
  1907. 0AC8: 21@ = allocate_memory 1
  1908. 0AD3: 21@ = format "%c" 22@
  1909. 12@ += 1
  1910. 0A8D: 23@ = read_memory 12@ size 7 virtual_protect 0
  1911. 0AD3: 23@v = format "%s" 23@
  1912. 0AC8: 22@ = allocate_memory 1
  1913. 0AD3: 22@ = format "%c" 23@
  1914. 12@ += 1
  1915. 0A8D: 24@ = read_memory 12@ size 6 virtual_protect 0
  1916. 0AD3: 24@v = format "%s" 24@
  1917. 0AC8: 23@ = allocate_memory 1
  1918. 0AD3: 23@ = format "%c" 24@
  1919. 12@ += 1
  1920. 0A8D: 25@ = read_memory 12@ size 5 virtual_protect 0
  1921. 0AD3: 25@v = format "%s" 25@
  1922. 0AC8: 24@ = allocate_memory 1
  1923. 0AD3: 24@ = format "%c" 25@
  1924. 0AC9: free_allocated_memory 11@
  1925. 0AB2: ret 4 14@ 16@ 18@ 20@ //1st=13@ 2nd=14@ 3rd=15@ 4th=16@ 5th=17@ 6th=18@ 7th=19@ 8th=20@ 9th=21@ 10th=22@ 11th=23@ 12th=24@
  1926.  
  1927. :CHECK_code_2th_4th_6th_8th_letter
  1928. //0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 1@ 2@ 3@ 4@ Individual_name_code_store_to 5@
  1929.  
  1930. //SECOND LETTER
  1931.  
  1932. 06D2: 24@v = "z"
  1933. 06D2: 26@v = "u"
  1934. 06D2: 27@v = "p"
  1935. 06D2: 28@v = "k"
  1936. 06D2: 29@v = "f"
  1937. 06D2: 30@v = "a"
  1938. if or
  1939. 0C18: 31@ = strstr string1 0@ string2 24@v
  1940. 0C18: 31@ = strstr string1 0@ string2 26@v
  1941. 0C18: 31@ = strstr string1 0@ string2 27@v
  1942. 0C18: 31@ = strstr string1 0@ string2 28@v
  1943. 0C18: 31@ = strstr string1 0@ string2 29@v
  1944. 0C18: 31@ = strstr string1 0@ string2 30@v
  1945. then
  1946. //first letter code output for a,f,k,p,u,z
  1947. 5@ = 18
  1948. else
  1949. 06D2: 24@v = "_"
  1950. 06D2: 26@v = "v"
  1951. 06D2: 27@v = "q"
  1952. 06D2: 28@v = "l"
  1953. 06D2: 29@v = "g"
  1954. 06D2: 30@v = "b"
  1955. if or
  1956. 0C18: 31@ = strstr string1 0@ string2 24@v
  1957. 0C18: 31@ = strstr string1 0@ string2 26@v
  1958. 0C18: 31@ = strstr string1 0@ string2 27@v
  1959. 0C18: 31@ = strstr string1 0@ string2 28@v
  1960. 0C18: 31@ = strstr string1 0@ string2 29@v
  1961. 0C18: 31@ = strstr string1 0@ string2 30@v
  1962. then
  1963. //first letter code output for b,g,l,q,v,_
  1964. 5@ = 14
  1965. else
  1966. 06D2: 26@v = "c"
  1967. 06D2: 27@v = "h"
  1968. 06D2: 28@v = "m"
  1969. 06D2: 29@v = "r"
  1970. 06D2: 30@v = "w"
  1971. if or
  1972. 0C18: 31@ = strstr string1 0@ string2 26@v
  1973. 0C18: 31@ = strstr string1 0@ string2 27@v
  1974. 0C18: 31@ = strstr string1 0@ string2 28@v
  1975. 0C18: 31@ = strstr string1 0@ string2 29@v
  1976. 0C18: 31@ = strstr string1 0@ string2 30@v
  1977. then
  1978. //first letter code output for c,h,m,r,w
  1979. 5@ = 32
  1980. else
  1981. 06D2: 26@v = "d"
  1982. 06D2: 27@v = "i"
  1983. 06D2: 28@v = "n"
  1984. 06D2: 29@v = "t"
  1985. 06D2: 30@v = "x"
  1986. if or
  1987. 0C18: 31@ = strstr string1 0@ string2 26@v
  1988. 0C18: 31@ = strstr string1 0@ string2 27@v
  1989. 0C18: 31@ = strstr string1 0@ string2 28@v
  1990. 0C18: 31@ = strstr string1 0@ string2 29@v
  1991. 0C18: 31@ = strstr string1 0@ string2 30@v
  1992. then
  1993. //first letter code output for d,i,n,t,x
  1994. 5@ = 62
  1995. else
  1996. 06D2: 26@v = "e"
  1997. 06D2: 27@v = "j"
  1998. 06D2: 28@v = "o"
  1999. 06D2: 29@v = "u"
  2000. 06D2: 30@v = "y"
  2001. if or
  2002. 0C18: 31@ = strstr string1 0@ string2 26@v
  2003. 0C18: 31@ = strstr string1 0@ string2 27@v
  2004. 0C18: 31@ = strstr string1 0@ string2 28@v
  2005. 0C18: 31@ = strstr string1 0@ string2 29@v
  2006. 0C18: 31@ = strstr string1 0@ string2 30@v
  2007. then
  2008. //first letter code output for e,j,o,u,y
  2009. 5@ = 44
  2010. else
  2011. //first letter code output for capital letter or any other letter/number
  2012. 5@ = 67
  2013. end
  2014. end
  2015. end
  2016. end
  2017. end
  2018.  
  2019. //FOURTH LETTER
  2020.  
  2021. 06D2: 24@v = "a"
  2022. 06D2: 26@v = "f"
  2023. 06D2: 27@v = "k"
  2024. 06D2: 28@v = "p"
  2025. 06D2: 29@v = "u"
  2026. 06D2: 30@v = "z"
  2027. if or
  2028. 0C18: 31@ = strstr string1 1@ string2 24@v
  2029. 0C18: 31@ = strstr string1 1@ string2 26@v
  2030. 0C18: 31@ = strstr string1 1@ string2 27@v
  2031. 0C18: 31@ = strstr string1 1@ string2 28@v
  2032. 0C18: 31@ = strstr string1 1@ string2 29@v
  2033. 0C18: 31@ = strstr string1 1@ string2 30@v
  2034. then
  2035. //first letter code output for a,f,k,p,u,z
  2036. 6@ = 43
  2037. else
  2038. 06D2: 24@v = "b"
  2039. 06D2: 26@v = "g"
  2040. 06D2: 27@v = "l"
  2041. 06D2: 28@v = "q"
  2042. 06D2: 29@v = "v"
  2043. 06D2: 30@v = "_"
  2044. if or
  2045. 0C18: 31@ = strstr string1 1@ string2 24@v
  2046. 0C18: 31@ = strstr string1 1@ string2 26@v
  2047. 0C18: 31@ = strstr string1 1@ string2 27@v
  2048. 0C18: 31@ = strstr string1 1@ string2 28@v
  2049. 0C18: 31@ = strstr string1 1@ string2 29@v
  2050. 0C18: 31@ = strstr string1 1@ string2 30@v
  2051. then
  2052. //first letter code output for b,g,l,q,v,_
  2053. 6@ = 76
  2054. else
  2055. 06D2: 26@v = "c"
  2056. 06D2: 27@v = "h"
  2057. 06D2: 28@v = "m"
  2058. 06D2: 29@v = "r"
  2059. 06D2: 30@v = "w"
  2060. if or
  2061. 0C18: 31@ = strstr string1 1@ string2 26@v
  2062. 0C18: 31@ = strstr string1 1@ string2 27@v
  2063. 0C18: 31@ = strstr string1 1@ string2 28@v
  2064. 0C18: 31@ = strstr string1 1@ string2 29@v
  2065. 0C18: 31@ = strstr string1 1@ string2 30@v
  2066. then
  2067. //first letter code output for c,h,m,r,w
  2068. 6@ = 86
  2069. else
  2070. 06D2: 26@v = "d"
  2071. 06D2: 27@v = "i"
  2072. 06D2: 28@v = "n"
  2073. 06D2: 29@v = "t"
  2074. 06D2: 30@v = "x"
  2075. if or
  2076. 0C18: 31@ = strstr string1 1@ string2 26@v
  2077. 0C18: 31@ = strstr string1 1@ string2 27@v
  2078. 0C18: 31@ = strstr string1 1@ string2 28@v
  2079. 0C18: 31@ = strstr string1 1@ string2 29@v
  2080. 0C18: 31@ = strstr string1 1@ string2 30@v
  2081. then
  2082. //first letter code output for d,i,n,t,x
  2083. 6@ = 81
  2084. else
  2085. 06D2: 26@v = "e"
  2086. 06D2: 27@v = "j"
  2087. 06D2: 28@v = "o"
  2088. 06D2: 29@v = "u"
  2089. 06D2: 30@v = "y"
  2090. if or
  2091. 0C18: 31@ = strstr string1 1@ string2 26@v
  2092. 0C18: 31@ = strstr string1 1@ string2 27@v
  2093. 0C18: 31@ = strstr string1 1@ string2 28@v
  2094. 0C18: 31@ = strstr string1 1@ string2 29@v
  2095. 0C18: 31@ = strstr string1 1@ string2 30@v
  2096. then
  2097. //first letter code output for e,j,o,u,y
  2098. 6@ = 84
  2099. else
  2100. //first letter code output for capital letter or any other letter/number
  2101. 6@ = 29
  2102. end
  2103. end
  2104. end
  2105. end
  2106. end
  2107.  
  2108. //SIXTH LETTER
  2109.  
  2110. 06D2: 24@v = "a"
  2111. 06D2: 26@v = "f"
  2112. 06D2: 27@v = "k"
  2113. 06D2: 28@v = "p"
  2114. 06D2: 29@v = "u"
  2115. 06D2: 30@v = "z"
  2116. if or
  2117. 0C18: 31@ = strstr string1 2@ string2 24@v
  2118. 0C18: 31@ = strstr string1 2@ string2 26@v
  2119. 0C18: 31@ = strstr string1 2@ string2 27@v
  2120. 0C18: 31@ = strstr string1 2@ string2 28@v
  2121. 0C18: 31@ = strstr string1 2@ string2 29@v
  2122. 0C18: 31@ = strstr string1 2@ string2 30@v
  2123. then
  2124. //first letter code output for a,f,k,p,u,z
  2125. 7@ = 5
  2126. else
  2127. 06D2: 24@v = "b"
  2128. 06D2: 26@v = "g"
  2129. 06D2: 27@v = "l"
  2130. 06D2: 28@v = "q"
  2131. 06D2: 29@v = "v"
  2132. 06D2: 30@v = "_"
  2133. if or
  2134. 0C18: 31@ = strstr string1 2@ string2 24@v
  2135. 0C18: 31@ = strstr string1 2@ string2 26@v
  2136. 0C18: 31@ = strstr string1 2@ string2 27@v
  2137. 0C18: 31@ = strstr string1 2@ string2 28@v
  2138. 0C18: 31@ = strstr string1 2@ string2 29@v
  2139. 0C18: 31@ = strstr string1 2@ string2 30@v
  2140. then
  2141. //first letter code output for b,g,l,q,v,_
  2142. 7@ = 65
  2143. else
  2144. 06D2: 26@v = "c"
  2145. 06D2: 27@v = "h"
  2146. 06D2: 28@v = "m"
  2147. 06D2: 29@v = "r"
  2148. 06D2: 30@v = "w"
  2149. if or
  2150. 0C18: 31@ = strstr string1 2@ string2 26@v
  2151. 0C18: 31@ = strstr string1 2@ string2 27@v
  2152. 0C18: 31@ = strstr string1 2@ string2 28@v
  2153. 0C18: 31@ = strstr string1 2@ string2 29@v
  2154. 0C18: 31@ = strstr string1 2@ string2 30@v
  2155. then
  2156. //first letter code output for c,h,m,r,w
  2157. 7@ = 87
  2158. else
  2159. 06D2: 26@v = "d"
  2160. 06D2: 27@v = "i"
  2161. 06D2: 28@v = "n"
  2162. 06D2: 29@v = "t"
  2163. 06D2: 30@v = "x"
  2164. if or
  2165. 0C18: 31@ = strstr string1 2@ string2 26@v
  2166. 0C18: 31@ = strstr string1 2@ string2 27@v
  2167. 0C18: 31@ = strstr string1 2@ string2 28@v
  2168. 0C18: 31@ = strstr string1 2@ string2 29@v
  2169. 0C18: 31@ = strstr string1 2@ string2 30@v
  2170. then
  2171. //first letter code output for d,i,n,t,x
  2172. 7@ = 52
  2173. else
  2174. 06D2: 26@v = "e"
  2175. 06D2: 27@v = "j"
  2176. 06D2: 28@v = "o"
  2177. 06D2: 29@v = "u"
  2178. 06D2: 30@v = "y"
  2179. if or
  2180. 0C18: 31@ = strstr string1 2@ string2 26@v
  2181. 0C18: 31@ = strstr string1 2@ string2 27@v
  2182. 0C18: 31@ = strstr string1 2@ string2 28@v
  2183. 0C18: 31@ = strstr string1 2@ string2 29@v
  2184. 0C18: 31@ = strstr string1 2@ string2 30@v
  2185. then
  2186. //first letter code output for e,j,o,u,y
  2187. 7@ = 10
  2188. else
  2189. //first letter code output for capital letter or any other letter/number
  2190. 7@ = 90
  2191. end
  2192. end
  2193. end
  2194. end
  2195. end
  2196.  
  2197.  
  2198. //EIGHTH LETTER
  2199.  
  2200. 06D2: 24@v = "a"
  2201. 06D2: 26@v = "f"
  2202. 06D2: 27@v = "k"
  2203. 06D2: 28@v = "p"
  2204. 06D2: 29@v = "u"
  2205. 06D2: 30@v = "z"
  2206. if or
  2207. 0C18: 31@ = strstr string1 3@ string2 24@v
  2208. 0C18: 31@ = strstr string1 3@ string2 26@v
  2209. 0C18: 31@ = strstr string1 3@ string2 27@v
  2210. 0C18: 31@ = strstr string1 3@ string2 28@v
  2211. 0C18: 31@ = strstr string1 3@ string2 29@v
  2212. 0C18: 31@ = strstr string1 3@ string2 30@v
  2213. then
  2214. //first letter code output for a,f,k,p,u,z
  2215. 8@ = 57
  2216. else
  2217. 06D2: 24@v = "b"
  2218. 06D2: 26@v = "g"
  2219. 06D2: 27@v = "l"
  2220. 06D2: 28@v = "q"
  2221. 06D2: 29@v = "v"
  2222. 06D2: 30@v = "_"
  2223. if or
  2224. 0C18: 31@ = strstr string1 3@ string2 24@v
  2225. 0C18: 31@ = strstr string1 3@ string2 26@v
  2226. 0C18: 31@ = strstr string1 3@ string2 27@v
  2227. 0C18: 31@ = strstr string1 3@ string2 28@v
  2228. 0C18: 31@ = strstr string1 3@ string2 29@v
  2229. 0C18: 31@ = strstr string1 3@ string2 30@v
  2230. then
  2231. //first letter code output for b,g,l,q,v,_
  2232. 8@ = 35
  2233. else
  2234. 06D2: 26@v = "c"
  2235. 06D2: 27@v = "h"
  2236. 06D2: 28@v = "m"
  2237. 06D2: 29@v = "r"
  2238. 06D2: 30@v = "w"
  2239. if or
  2240. 0C18: 31@ = strstr string1 3@ string2 26@v
  2241. 0C18: 31@ = strstr string1 3@ string2 27@v
  2242. 0C18: 31@ = strstr string1 3@ string2 28@v
  2243. 0C18: 31@ = strstr string1 3@ string2 29@v
  2244. 0C18: 31@ = strstr string1 3@ string2 30@v
  2245. then
  2246. //first letter code output for c,h,m,r,w
  2247. 8@ = 88
  2248. else
  2249. 06D2: 26@v = "d"
  2250. 06D2: 27@v = "i"
  2251. 06D2: 28@v = "n"
  2252. 06D2: 29@v = "t"
  2253. 06D2: 30@v = "x"
  2254. if or
  2255. 0C18: 31@ = strstr string1 3@ string2 26@v
  2256. 0C18: 31@ = strstr string1 3@ string2 27@v
  2257. 0C18: 31@ = strstr string1 3@ string2 28@v
  2258. 0C18: 31@ = strstr string1 3@ string2 29@v
  2259. 0C18: 31@ = strstr string1 3@ string2 30@v
  2260. then
  2261. //first letter code output for d,i,n,t,x
  2262. 8@ = 2
  2263. else
  2264. 06D2: 26@v = "e"
  2265. 06D2: 27@v = "j"
  2266. 06D2: 28@v = "o"
  2267. 06D2: 29@v = "u"
  2268. 06D2: 30@v = "y"
  2269. if or
  2270. 0C18: 31@ = strstr string1 3@ string2 26@v
  2271. 0C18: 31@ = strstr string1 3@ string2 27@v
  2272. 0C18: 31@ = strstr string1 3@ string2 28@v
  2273. 0C18: 31@ = strstr string1 3@ string2 29@v
  2274. 0C18: 31@ = strstr string1 3@ string2 30@v
  2275. then
  2276. //first letter code output for e,j,o,u,y
  2277. 8@ = 9
  2278. else
  2279. //first letter code output for capital letter or any other letter/number
  2280. 8@ = 48
  2281. end
  2282. end
  2283. end
  2284. end
  2285. end
  2286. 006A: 5@ *= 6@
  2287. 006A: 5@ *= 7@
  2288. 0072: 5@ /= 8@
  2289. 0AB2: ret 1 5@
  2290.  
  2291.  
  2292. //0AB1: call_scm_func @code_letters_number 1 Number 22@ Individual_number_code 22@
  2293. :CHECK_code_letters_number
  2294. if 0@ == 16
  2295. then
  2296. 1@ = 5154
  2297. else
  2298. if 0@ == 17
  2299. then
  2300. 1@ = 3488
  2301. else
  2302. if 0@ == 18
  2303. then
  2304. 1@ = 2915
  2305. else
  2306. if 0@ == 19
  2307. then
  2308. 1@ = 1221
  2309. else
  2310. if 0@ == 20
  2311. then
  2312. 1@ = 1919
  2313. else
  2314. if 0@ == 21
  2315. then
  2316. 1@ = 6236
  2317. else
  2318. if 0@ == 22
  2319. then
  2320. 1@ = 4124
  2321. else
  2322. if 0@ == 23
  2323. then
  2324. 1@ = 5753
  2325. else
  2326. if 0@ == 24
  2327. then
  2328. 1@ = 9875
  2329. else
  2330. if 0@ = 25
  2331. then
  2332. 1@ = 2312
  2333. else
  2334. 1@ = 12312
  2335. end
  2336. end
  2337. end
  2338. end
  2339. end
  2340. end
  2341. end
  2342. end
  2343. end
  2344. end
  2345. 0AB2: ret 1 1@
  2346.  
  2347. //0AB1: call_scm_func @code_distance 1 Distance 18@ Distance_code 18@
  2348. :CHECK_code_distance
  2349. if 0033: 1.50 >= 0@
  2350. then
  2351. 1@ = 5.2
  2352. else
  2353. if 0033: 7.75 >= 0@
  2354. then
  2355. 1@ = 3.1
  2356. else
  2357. if 0033: 12.50 >= 0@
  2358. then
  2359. 1@ = 2.6
  2360. else
  2361. if 0033: 17.50 >= 0@
  2362. then
  2363. 1@ = 6.7
  2364. else
  2365. if 0033: 22.50 >= 0@
  2366. then
  2367. 1@ = 1.6
  2368. else
  2369. if 0033: 27.50 >= 0@
  2370. then
  2371. 1@ = 7.9
  2372. else
  2373. if 0033: 32.50 >= 0@
  2374. then
  2375. 1@ = 2.1
  2376. else
  2377. if 0033: 37.50 >= 0@
  2378. then
  2379. 1@ = 11.2
  2380. else
  2381. if 0033: 42.50 >= 0@
  2382. then
  2383. 1@ = 1.2
  2384. else
  2385. if 0033: 47.50 >= 0@
  2386. then
  2387. 1@ = 24.4
  2388. else
  2389. if 0033: 52.50 >= 0@
  2390. then
  2391. 1@ = 7.9
  2392. else
  2393. if 0033: 57.50 >= 0@
  2394. then
  2395. 1@ = 2.1
  2396. else
  2397. if 0033: 62.50 >= 0@
  2398. then
  2399. 1@ = 11.2
  2400. else
  2401. if 0033: 67.50 >= 0@
  2402. then
  2403. 1@ = 1.2
  2404. else
  2405. if 0033: 72.50 >= 0@
  2406. then
  2407. 1@ = 24.4
  2408. else
  2409. if 0033: 77.50 >= 0@
  2410. then
  2411. 1@ = 15.7
  2412. else
  2413. if 0033: 82.50 >= 0@
  2414. then
  2415. 1@ = 12.9
  2416. else
  2417. 1@ = 50.7
  2418. end
  2419. end
  2420. end
  2421. end
  2422. end
  2423. end
  2424. end
  2425. end
  2426. end
  2427. end
  2428. end
  2429. end
  2430. end
  2431. end
  2432. end
  2433. end
  2434. end
  2435. 006B: 0@ *= 1@
  2436. 0017: 0@ /= 2.2
  2437. 0AB2: ret 1 0@
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement