Guest User

CSGO Classy by Lysis

a guest
Mar 5th, 2021
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 232.87 KB | None | 0 0
  1. #pragma ctrlchar '\'
  2.  
  3. new g_iKills[33];
  4. new g_iHS[33];
  5. new Float:g_fDmg[33];
  6. new weapon_weapon[2][0] =
  7. {
  8. {
  9. 119, ...
  10. },
  11. {
  12. 119, ...
  13. }
  14. };
  15. new g_Zoom[33];
  16. new Float:g_ZoomTime[33];
  17. new weapons_list[31][9][0] =
  18. {
  19. {
  20. {
  21. 0, ...
  22. },
  23. {
  24. 0, ...
  25. },
  26. {
  27. 0, ...
  28. },
  29. {
  30. 0, ...
  31. },
  32. {
  33. 0, ...
  34. },
  35. {
  36. 0, ...
  37. },
  38. {
  39. 0, ...
  40. },
  41. {
  42. 0, ...
  43. },
  44. {
  45. 0, ...
  46. }
  47. },
  48. {
  49. {
  50. 119, ...
  51. },
  52. {
  53. 9, ...
  54. },
  55. {
  56. 52, ...
  57. },
  58. {
  59. -1, ...
  60. },
  61. {
  62. -1, ...
  63. },
  64. {
  65. 1, ...
  66. },
  67. {
  68. 3, ...
  69. },
  70. {
  71. 1, ...
  72. },
  73. {
  74. 0, ...
  75. }
  76. },
  77. {
  78. {
  79. 0, ...
  80. },
  81. {
  82. 0, ...
  83. },
  84. {
  85. 0, ...
  86. },
  87. {
  88. 0, ...
  89. },
  90. {
  91. 0, ...
  92. },
  93. {
  94. 0, ...
  95. },
  96. {
  97. 0, ...
  98. },
  99. {
  100. 0, ...
  101. },
  102. {
  103. 0, ...
  104. }
  105. },
  106. {
  107. {
  108. 119, ...
  109. },
  110. {
  111. 2, ...
  112. },
  113. {
  114. 90, ...
  115. },
  116. {
  117. -1, ...
  118. },
  119. {
  120. -1, ...
  121. },
  122. {
  123. 0, ...
  124. },
  125. {
  126. 9, ...
  127. },
  128. {
  129. 3, ...
  130. },
  131. {
  132. 0, ...
  133. }
  134. },
  135. {
  136. {
  137. 119, ...
  138. },
  139. {
  140. 12, ...
  141. },
  142. {
  143. 1, ...
  144. },
  145. {
  146. -1, ...
  147. },
  148. {
  149. -1, ...
  150. },
  151. {
  152. 3, ...
  153. },
  154. {
  155. 1, ...
  156. },
  157. {
  158. 4, ...
  159. },
  160. {
  161. 24, ...
  162. }
  163. },
  164. {
  165. {
  166. 119, ...
  167. },
  168. {
  169. 5, ...
  170. },
  171. {
  172. 32, ...
  173. },
  174. {
  175. -1, ...
  176. },
  177. {
  178. -1, ...
  179. },
  180. {
  181. 0, ...
  182. },
  183. {
  184. 12, ...
  185. },
  186. {
  187. 5, ...
  188. },
  189. {
  190. 0, ...
  191. }
  192. },
  193. {
  194. {
  195. 119, ...
  196. },
  197. {
  198. 14, ...
  199. },
  200. {
  201. 1, ...
  202. },
  203. {
  204. -1, ...
  205. },
  206. {
  207. -1, ...
  208. },
  209. {
  210. 4, ...
  211. },
  212. {
  213. 3, ...
  214. },
  215. {
  216. 6, ...
  217. },
  218. {
  219. 24, ...
  220. }
  221. },
  222. {
  223. {
  224. 119, ...
  225. },
  226. {
  227. 6, ...
  228. },
  229. {
  230. 100, ...
  231. },
  232. {
  233. -1, ...
  234. },
  235. {
  236. -1, ...
  237. },
  238. {
  239. 0, ...
  240. },
  241. {
  242. 13, ...
  243. },
  244. {
  245. 7, ...
  246. },
  247. {
  248. 0, ...
  249. }
  250. },
  251. {
  252. {
  253. 119, ...
  254. },
  255. {
  256. 4, ...
  257. },
  258. {
  259. 90, ...
  260. },
  261. {
  262. -1, ...
  263. },
  264. {
  265. -1, ...
  266. },
  267. {
  268. 0, ...
  269. },
  270. {
  271. 14, ...
  272. },
  273. {
  274. 8, ...
  275. },
  276. {
  277. 0, ...
  278. }
  279. },
  280. {
  281. {
  282. 119, ...
  283. },
  284. {
  285. 13, ...
  286. },
  287. {
  288. 1, ...
  289. },
  290. {
  291. -1, ...
  292. },
  293. {
  294. -1, ...
  295. },
  296. {
  297. 3, ...
  298. },
  299. {
  300. 3, ...
  301. },
  302. {
  303. 9, ...
  304. },
  305. {
  306. 24, ...
  307. }
  308. },
  309. {
  310. {
  311. 119, ...
  312. },
  313. {
  314. 10, ...
  315. },
  316. {
  317. 120, ...
  318. },
  319. {
  320. -1, ...
  321. },
  322. {
  323. -1, ...
  324. },
  325. {
  326. 1, ...
  327. },
  328. {
  329. 5, ...
  330. },
  331. {
  332. 10, ...
  333. },
  334. {
  335. 0, ...
  336. }
  337. },
  338. {
  339. {
  340. 119, ...
  341. },
  342. {
  343. 7, ...
  344. },
  345. {
  346. 100, ...
  347. },
  348. {
  349. -1, ...
  350. },
  351. {
  352. -1, ...
  353. },
  354. {
  355. 1, ...
  356. },
  357. {
  358. 6, ...
  359. },
  360. {
  361. 11, ...
  362. },
  363. {
  364. 0, ...
  365. }
  366. },
  367. {
  368. {
  369. 119, ...
  370. },
  371. {
  372. 6, ...
  373. },
  374. {
  375. 100, ...
  376. },
  377. {
  378. -1, ...
  379. },
  380. {
  381. -1, ...
  382. },
  383. {
  384. 0, ...
  385. },
  386. {
  387. 15, ...
  388. },
  389. {
  390. 12, ...
  391. },
  392. {
  393. 0, ...
  394. }
  395. },
  396. {
  397. {
  398. 119, ...
  399. },
  400. {
  401. 4, ...
  402. },
  403. {
  404. 90, ...
  405. },
  406. {
  407. -1, ...
  408. },
  409. {
  410. -1, ...
  411. },
  412. {
  413. 0, ...
  414. },
  415. {
  416. 16, ...
  417. },
  418. {
  419. 13, ...
  420. },
  421. {
  422. 0, ...
  423. }
  424. },
  425. {
  426. {
  427. 119, ...
  428. },
  429. {
  430. 4, ...
  431. },
  432. {
  433. 90, ...
  434. },
  435. {
  436. -1, ...
  437. },
  438. {
  439. -1, ...
  440. },
  441. {
  442. 0, ...
  443. },
  444. {
  445. 17, ...
  446. },
  447. {
  448. 14, ...
  449. },
  450. {
  451. 0, ...
  452. }
  453. },
  454. {
  455. {
  456. 119, ...
  457. },
  458. {
  459. 4, ...
  460. },
  461. {
  462. 90, ...
  463. },
  464. {
  465. -1, ...
  466. },
  467. {
  468. -1, ...
  469. },
  470. {
  471. 0, ...
  472. },
  473. {
  474. 18, ...
  475. },
  476. {
  477. 15, ...
  478. },
  479. {
  480. 0, ...
  481. }
  482. },
  483. {
  484. {
  485. 119, ...
  486. },
  487. {
  488. 6, ...
  489. },
  490. {
  491. 100, ...
  492. },
  493. {
  494. -1, ...
  495. },
  496. {
  497. -1, ...
  498. },
  499. {
  500. 1, ...
  501. },
  502. {
  503. 4, ...
  504. },
  505. {
  506. 16, ...
  507. },
  508. {
  509. 0, ...
  510. }
  511. },
  512. {
  513. {
  514. 119, ...
  515. },
  516. {
  517. 10, ...
  518. },
  519. {
  520. 120, ...
  521. },
  522. {
  523. -1, ...
  524. },
  525. {
  526. -1, ...
  527. },
  528. {
  529. 1, ...
  530. },
  531. {
  532. 2, ...
  533. },
  534. {
  535. 17, ...
  536. },
  537. {
  538. 0, ...
  539. }
  540. },
  541. {
  542. {
  543. 119, ...
  544. },
  545. {
  546. 1, ...
  547. },
  548. {
  549. 30, ...
  550. },
  551. {
  552. -1, ...
  553. },
  554. {
  555. -1, ...
  556. },
  557. {
  558. 0, ...
  559. },
  560. {
  561. 2, ...
  562. },
  563. {
  564. 18, ...
  565. },
  566. {
  567. 0, ...
  568. }
  569. },
  570. {
  571. {
  572. 119, ...
  573. },
  574. {
  575. 10, ...
  576. },
  577. {
  578. 120, ...
  579. },
  580. {
  581. -1, ...
  582. },
  583. {
  584. -1, ...
  585. },
  586. {
  587. 0, ...
  588. },
  589. {
  590. 7, ...
  591. },
  592. {
  593. 19, ...
  594. },
  595. {
  596. 0, ...
  597. }
  598. },
  599. {
  600. {
  601. 119, ...
  602. },
  603. {
  604. 3, ...
  605. },
  606. {
  607. 200, ...
  608. },
  609. {
  610. -1, ...
  611. },
  612. {
  613. -1, ...
  614. },
  615. {
  616. 0, ...
  617. },
  618. {
  619. 4, ...
  620. },
  621. {
  622. 20, ...
  623. },
  624. {
  625. 0, ...
  626. }
  627. },
  628. {
  629. {
  630. 119, ...
  631. },
  632. {
  633. 5, ...
  634. },
  635. {
  636. 32, ...
  637. },
  638. {
  639. -1, ...
  640. },
  641. {
  642. -1, ...
  643. },
  644. {
  645. 0, ...
  646. },
  647. {
  648. 5, ...
  649. },
  650. {
  651. 21, ...
  652. },
  653. {
  654. 0, ...
  655. }
  656. },
  657. {
  658. {
  659. 119, ...
  660. },
  661. {
  662. 4, ...
  663. },
  664. {
  665. 90, ...
  666. },
  667. {
  668. -1, ...
  669. },
  670. {
  671. -1, ...
  672. },
  673. {
  674. 0, ...
  675. },
  676. {
  677. 6, ...
  678. },
  679. {
  680. 22, ...
  681. },
  682. {
  683. 0, ...
  684. }
  685. },
  686. {
  687. {
  688. 119, ...
  689. },
  690. {
  691. 10, ...
  692. },
  693. {
  694. 120, ...
  695. },
  696. {
  697. -1, ...
  698. },
  699. {
  700. -1, ...
  701. },
  702. {
  703. 0, ...
  704. },
  705. {
  706. 11, ...
  707. },
  708. {
  709. 23, ...
  710. },
  711. {
  712. 0, ...
  713. }
  714. },
  715. {
  716. {
  717. 119, ...
  718. },
  719. {
  720. 2, ...
  721. },
  722. {
  723. 90, ...
  724. },
  725. {
  726. -1, ...
  727. },
  728. {
  729. -1, ...
  730. },
  731. {
  732. 0, ...
  733. },
  734. {
  735. 3, ...
  736. },
  737. {
  738. 24, ...
  739. },
  740. {
  741. 0, ...
  742. }
  743. },
  744. {
  745. {
  746. 119, ...
  747. },
  748. {
  749. 11, ...
  750. },
  751. {
  752. 2, ...
  753. },
  754. {
  755. -1, ...
  756. },
  757. {
  758. -1, ...
  759. },
  760. {
  761. 3, ...
  762. },
  763. {
  764. 2, ...
  765. },
  766. {
  767. 25, ...
  768. },
  769. {
  770. 24, ...
  771. }
  772. },
  773. {
  774. {
  775. 119, ...
  776. },
  777. {
  778. 8, ...
  779. },
  780. {
  781. 35, ...
  782. },
  783. {
  784. -1, ...
  785. },
  786. {
  787. -1, ...
  788. },
  789. {
  790. 1, ...
  791. },
  792. {
  793. 1, ...
  794. },
  795. {
  796. 26, ...
  797. },
  798. {
  799. 0, ...
  800. }
  801. },
  802. {
  803. {
  804. 119, ...
  805. },
  806. {
  807. 4, ...
  808. },
  809. {
  810. 90, ...
  811. },
  812. {
  813. -1, ...
  814. },
  815. {
  816. -1, ...
  817. },
  818. {
  819. 0, ...
  820. },
  821. {
  822. 10, ...
  823. },
  824. {
  825. 27, ...
  826. },
  827. {
  828. 0, ...
  829. }
  830. },
  831. {
  832. {
  833. 119, ...
  834. },
  835. {
  836. 2, ...
  837. },
  838. {
  839. 90, ...
  840. },
  841. {
  842. -1, ...
  843. },
  844. {
  845. -1, ...
  846. },
  847. {
  848. 0, ...
  849. },
  850. {
  851. 1, ...
  852. },
  853. {
  854. 28, ...
  855. },
  856. {
  857. 0, ...
  858. }
  859. },
  860. {
  861. {
  862. 119, ...
  863. },
  864. {
  865. -1, ...
  866. },
  867. {
  868. -1, ...
  869. },
  870. {
  871. -1, ...
  872. },
  873. {
  874. -1, ...
  875. },
  876. {
  877. 2, ...
  878. },
  879. {
  880. 1, ...
  881. },
  882. {
  883. 29, ...
  884. },
  885. {
  886. 0, ...
  887. }
  888. },
  889. {
  890. {
  891. 119, ...
  892. },
  893. {
  894. 7, ...
  895. },
  896. {
  897. 100, ...
  898. },
  899. {
  900. -1, ...
  901. },
  902. {
  903. -1, ...
  904. },
  905. {
  906. 0, ...
  907. },
  908. {
  909. 8, ...
  910. },
  911. {
  912. 30, ...
  913. },
  914. {
  915. 0, ...
  916. }
  917. }
  918. };
  919. new menus_control[33][4];
  920. new zoom_control[33];
  921. new crosshair_list[16][3][0] =
  922. {
  923. {
  924. {
  925. 67, ...
  926. },
  927. {
  928. 115, ...
  929. },
  930. {
  931. 99, ...
  932. }
  933. },
  934. {
  935. {
  936. 67, ...
  937. },
  938. {
  939. 115, ...
  940. },
  941. {
  942. 99, ...
  943. }
  944. },
  945. {
  946. {
  947. 67, ...
  948. },
  949. {
  950. 115, ...
  951. },
  952. {
  953. 99, ...
  954. }
  955. },
  956. {
  957. {
  958. 67, ...
  959. },
  960. {
  961. 115, ...
  962. },
  963. {
  964. 99, ...
  965. }
  966. },
  967. {
  968. {
  969. 67, ...
  970. },
  971. {
  972. 115, ...
  973. },
  974. {
  975. 99, ...
  976. }
  977. },
  978. {
  979. {
  980. 67, ...
  981. },
  982. {
  983. 115, ...
  984. },
  985. {
  986. 99, ...
  987. }
  988. },
  989. {
  990. {
  991. 67, ...
  992. },
  993. {
  994. 115, ...
  995. },
  996. {
  997. 99, ...
  998. }
  999. },
  1000. {
  1001. {
  1002. 67, ...
  1003. },
  1004. {
  1005. 115, ...
  1006. },
  1007. {
  1008. 99, ...
  1009. }
  1010. },
  1011. {
  1012. {
  1013. 67, ...
  1014. },
  1015. {
  1016. 115, ...
  1017. },
  1018. {
  1019. 99, ...
  1020. }
  1021. },
  1022. {
  1023. {
  1024. 67, ...
  1025. },
  1026. {
  1027. 115, ...
  1028. },
  1029. {
  1030. 99, ...
  1031. }
  1032. },
  1033. {
  1034. {
  1035. 67, ...
  1036. },
  1037. {
  1038. 115, ...
  1039. },
  1040. {
  1041. 99, ...
  1042. }
  1043. },
  1044. {
  1045. {
  1046. 67, ...
  1047. },
  1048. {
  1049. 115, ...
  1050. },
  1051. {
  1052. 99, ...
  1053. }
  1054. },
  1055. {
  1056. {
  1057. 0, ...
  1058. },
  1059. {
  1060. 115, ...
  1061. },
  1062. {
  1063. 0, ...
  1064. }
  1065. },
  1066. {
  1067. {
  1068. 0, ...
  1069. },
  1070. {
  1071. 115, ...
  1072. },
  1073. {
  1074. 0, ...
  1075. }
  1076. },
  1077. {
  1078. {
  1079. 0, ...
  1080. },
  1081. {
  1082. 115, ...
  1083. },
  1084. {
  1085. 0, ...
  1086. }
  1087. },
  1088. {
  1089. {
  1090. 0, ...
  1091. },
  1092. {
  1093. 115, ...
  1094. },
  1095. {
  1096. 0, ...
  1097. }
  1098. }
  1099. };
  1100. new String:awp_zoom[84] = "csgoclassy/awp_scope";
  1101. new String:augscopes[88] = "csgoclassy/aug_sprite";
  1102. new g_bSomeBool;
  1103. new g_Messages_Name[4][0] =
  1104. {
  1105. {
  1106. 87, ...
  1107. },
  1108. {
  1109. 67, ...
  1110. },
  1111. {
  1112. 70, ...
  1113. },
  1114. {
  1115. 83, ...
  1116. }
  1117. };
  1118. new g_Messages[4];
  1119. new g_msgHideWeapon;
  1120. new crosshairvault;
  1121. new crosshaircontrols;
  1122. new m_pActiveItem = 373;
  1123. new bool:g_bUsingM4A4[33];
  1124. new c_ShowDropCraft;
  1125. new g_iShowDropCraft;
  1126. new g_iCurrentRound;
  1127. new g_bGiveAwayStarted;
  1128. new bool:g_bJoinedGiveAway[33];
  1129. new g_szSkinName[32];
  1130. new g_iSkinID;
  1131. new g_iSkinsInContract[33];
  1132. new g_iWeaponUsedInContract[33][11];
  1133. new g_iUserChance[33];
  1134. new g_bUsedSttC[33][450];
  1135. new String:g_szTWin[80] = "csgoclassy/twin.wav";
  1136. new String:g_szCTWin[84] = "csgoclassy/ctwin.wav";
  1137. new String:xp_num[164] = "^�x�4��N�\nh�$��>��X�r�.��H�\x04b�|�8���";
  1138. new g_szAuthId[33][36];
  1139. new g_szDay[3];
  1140. new g_iVault;
  1141. new g_iDay;
  1142. new ranks_names[40][0] =
  1143. {
  1144. {
  1145. 80, ...
  1146. },
  1147. {
  1148. 80, ...
  1149. },
  1150. {
  1151. 80, ...
  1152. },
  1153. {
  1154. 80, ...
  1155. },
  1156. {
  1157. 67, ...
  1158. },
  1159. {
  1160. 67, ...
  1161. },
  1162. {
  1163. 67, ...
  1164. },
  1165. {
  1166. 67, ...
  1167. },
  1168. {
  1169. 83, ...
  1170. },
  1171. {
  1172. 83, ...
  1173. },
  1174. {
  1175. 83, ...
  1176. },
  1177. {
  1178. 83, ...
  1179. },
  1180. {
  1181. 77, ...
  1182. },
  1183. {
  1184. 77, ...
  1185. },
  1186. {
  1187. 77, ...
  1188. },
  1189. {
  1190. 77, ...
  1191. },
  1192. {
  1193. 83, ...
  1194. },
  1195. {
  1196. 83, ...
  1197. },
  1198. {
  1199. 83, ...
  1200. },
  1201. {
  1202. 83, ...
  1203. },
  1204. {
  1205. 76, ...
  1206. },
  1207. {
  1208. 76, ...
  1209. },
  1210. {
  1211. 76, ...
  1212. },
  1213. {
  1214. 76, ...
  1215. },
  1216. {
  1217. 67, ...
  1218. },
  1219. {
  1220. 67, ...
  1221. },
  1222. {
  1223. 67, ...
  1224. },
  1225. {
  1226. 67, ...
  1227. },
  1228. {
  1229. 77, ...
  1230. },
  1231. {
  1232. 77, ...
  1233. },
  1234. {
  1235. 77, ...
  1236. },
  1237. {
  1238. 77, ...
  1239. },
  1240. {
  1241. 67, ...
  1242. },
  1243. {
  1244. 67, ...
  1245. },
  1246. {
  1247. 67, ...
  1248. },
  1249. {
  1250. 66, ...
  1251. },
  1252. {
  1253. 77, ...
  1254. },
  1255. {
  1256. 76, ...
  1257. },
  1258. {
  1259. 71, ...
  1260. },
  1261. {
  1262. 71, ...
  1263. }
  1264. };
  1265. new g_status_sync;
  1266. new rankLevelBonus;
  1267. new rankSaveType;
  1268. new String:db_save[64] = "csgoclassyrangs";
  1269. new level[33];
  1270. new xp[33];
  1271. new rank[33];
  1272. new g_nextMap[32];
  1273. new g_mapCycle[32];
  1274. new g_pos;
  1275. new TimeStamp;
  1276. new g_Vault;
  1277. new bool:g_bLogged[33];
  1278. new g_MsgSync;
  1279. new g_WarmUpSync;
  1280. new g_szCfgDir[48];
  1281. new g_szConfigFile[48];
  1282. new Array:g_aRankName;
  1283. new Array:g_aRankKills;
  1284. new g_szDefaultSkinModel[31][48];
  1285. new Array:g_aSkinBody;
  1286. new Array:g_aSkinWeaponID;
  1287. new Array:g_aSkinName;
  1288. new Array:g_aSkinModel;
  1289. new Array:g_aSkinType;
  1290. new Array:g_aSkinChance;
  1291. new Array:g_aSkinCostMin;
  1292. new Array:g_aDropSkin;
  1293. new Array:g_aCraftSkin;
  1294. new Array:g_aTombola;
  1295. new Array:g_aJackpotSkins;
  1296. new Array:g_aJackPotSttSkins;
  1297. new Array:g_aJackpotUsers;
  1298. new g_iRanksNum;
  1299. new g_iSkinsNum;
  1300. new bool:g_bShallUseStt[33][50];
  1301. new g_iAskType[33];
  1302. new bool:g_bPublishedStattrackSkin[33];
  1303. new bool:g_bGiftingStt[33];
  1304. new bool:g_bDestroyStt[33];
  1305. new bool:g_bTradingStt[33];
  1306. new bool:g_bJackpotStt[33];
  1307. new bool:g_bIsWeaponStattrack[33][450];
  1308. new g_iUserStattrackKillCount[33][450];
  1309. new g_nVaultStattrack;
  1310. new g_nVaultStattrackKills;
  1311. new g_iUserSelectedSkin[33][50];
  1312. new g_iUserSkins[33][450];
  1313. new g_iUserMoney[33];
  1314. new g_iUserScraps[33];
  1315. new g_iUserKeys[33];
  1316. new g_iUserCases[33];
  1317. new g_iUserKills[33];
  1318. new g_iUserRank[33];
  1319. new g_iDropSkinNum;
  1320. new g_iCraftSkinNum;
  1321. new g_szName[33][32];
  1322. new g_szUserPassword[33][32];
  1323. new g_szUserSavedPass[33][32];
  1324. new g_iUserPassFail[33];
  1325. new c_RegOpen;
  1326. new fw_CUIC;
  1327. new HamHook:fw_PA[3];
  1328. new HamHook:fw_SA[3];
  1329. new HamHook:fw_ID[31];
  1330. new HamHook:fw_ICD[31];
  1331. new HamHook:fw_S1;
  1332. new HamHook:fw_S2;
  1333. new HamHook:fw_K1;
  1334. new HamHook:fw_K2;
  1335. new c_DropType;
  1336. new g_iDropType = 1;
  1337. new c_KeyPrice;
  1338. new g_iKeyPrice = 80;
  1339. new c_DropChance;
  1340. new g_iDropChance = 95;
  1341. new c_CraftCost;
  1342. new g_iCraftCost = 25;
  1343. new c_Suicide;
  1344. new g_iUserSellItem[33];
  1345. new g_iUserItemPrice[33];
  1346. new g_bUserSell[33];
  1347. new g_iLastPlace[33];
  1348. new g_iMenuType[33];
  1349. new c_DustForTransform;
  1350. new g_iDustForTransform = 1;
  1351. new c_ReturnPercent;
  1352. new g_iReturnPercent;
  1353. new g_iGiftTarget[33];
  1354. new g_iGiftItem[33];
  1355. new g_bTradeAccept[33];
  1356. new g_iTradeTarget[33];
  1357. new g_iTradeItem[33];
  1358. new g_bTradeActive[33];
  1359. new g_bTradeSecond[33];
  1360. new g_iTradeRequest[33];
  1361. new g_bCFAccept[33];
  1362. new g_iCFTarget[33];
  1363. new g_iCFItem[33];
  1364. new g_bCFActive[33];
  1365. new g_bCFSecond[33];
  1366. new g_iCFRequest[33];
  1367. new bool:g_bOneAccepted;
  1368. new bool:g_bBettingCFStt[33];
  1369. new g_iRouletteCost;
  1370. new g_bRoulettePlay[33];
  1371. new g_iTombolaPlayers;
  1372. new g_iTombolaPrize;
  1373. new g_bUserPlay[33];
  1374. new g_iNextTombolaStart;
  1375. new c_TombolaCost;
  1376. new g_iTombolaCost = 500;
  1377. new c_TombolaTimer;
  1378. new g_iTombolaTimer = 180;
  1379. new g_bTombolaWork = 1;
  1380. new c_RouletteMin;
  1381. new g_iRouletteMin = 2;
  1382. new c_RouletteMax;
  1383. new g_iRouletteMax = 10;
  1384. new g_iUserBetMoney[33];
  1385. new bool:g_bJackpotWork;
  1386. new g_iUserJackpotItem[33];
  1387. new g_bUserPlayJackpot[33];
  1388. new g_iJackpotClose;
  1389. new c_JackpotTimer;
  1390. new g_iMaxPlayers;
  1391. new c_ShowHUD;
  1392. new g_iRoundNum;
  1393. new bool:g_bWarmUp;
  1394. new c_WarmUpDuration;
  1395. new g_iStartMoney;
  1396. new p_StartMoney;
  1397. new c_Competitive;
  1398. new g_iCompetitive;
  1399. new c_Respawn;
  1400. new c_RespawnDelay;
  1401. new g_iRespawnDelay;
  1402. new g_iTimer;
  1403. new p_NextMap;
  1404. new bool:g_bTeamSwap;
  1405. new p_Freezetime;
  1406. new g_iFreezetime;
  1407. new c_RankUpBonus;
  1408. new c_CmdAccess;
  1409. new c_OverrideMenu;
  1410. new g_iRoundKills[33];
  1411. new g_iDealDamage[33];
  1412. new c_AMinMoney;
  1413. new g_iAMinMoney;
  1414. new c_AMaxMoney;
  1415. new g_iAMaxMoney;
  1416. new c_PruneDays;
  1417. new g_iPruneDays = 30;
  1418. new c_HMinMoney;
  1419. new g_iHMinMoney;
  1420. new c_HMaxMoney;
  1421. new g_iHMaxMoney;
  1422. new c_KMinMoney;
  1423. new g_iKMinMoney;
  1424. new c_KMaxMoney;
  1425. new g_iKMaxMoney;
  1426. new c_HMinChance;
  1427. new g_iHMinChance;
  1428. new c_HMaxChance;
  1429. new g_iHMaxChance;
  1430. new c_KMinChance;
  1431. new g_iKMinChance;
  1432. new c_KMaxChance;
  1433. new g_iKMaxChance;
  1434. new g_iMostDamage[33];
  1435. new g_iDamage[33][33];
  1436. new g_iMenuToOpen[33];
  1437. new bool:g_IsChangeAllowed[33];
  1438. new bool:ShortThrow;
  1439. new g_szNadeModels[3][27] =
  1440. {
  1441. {
  1442. 109, 111, 100, 101, 108, 115, 47, 119, 95, 99, 115, 103, 111, 99, 108, 97, 115, 115, 121, 95, 104, 101, 46, 109, 100, 108, 0
  1443. },
  1444. {
  1445. 109, 111, 100, 101, 108, 115, 47, 119, 95, 99, 115, 103, 111, 99, 108, 97, 115, 115, 121, 95, 102, 98, 46, 109, 100, 108, 0
  1446. },
  1447. {
  1448. 109, 111, 100, 101, 108, 115, 47, 119, 95, 99, 115, 103, 111, 99, 108, 97, 115, 115, 121, 95, 115, 103, 46, 109, 100, 108, 0
  1449. }
  1450. };
  1451. new GrenadeName[3][0] =
  1452. {
  1453. {
  1454. 119, ...
  1455. },
  1456. {
  1457. 119, ...
  1458. },
  1459. {
  1460. 119, ...
  1461. }
  1462. };
  1463. new g_szWeaponEntName[31][0] =
  1464. {
  1465. {
  1466. 0, ...
  1467. },
  1468. {
  1469. 119, ...
  1470. },
  1471. {
  1472. 0, ...
  1473. },
  1474. {
  1475. 119, ...
  1476. },
  1477. {
  1478. 119, ...
  1479. },
  1480. {
  1481. 119, ...
  1482. },
  1483. {
  1484. 119, ...
  1485. },
  1486. {
  1487. 119, ...
  1488. },
  1489. {
  1490. 119, ...
  1491. },
  1492. {
  1493. 119, ...
  1494. },
  1495. {
  1496. 119, ...
  1497. },
  1498. {
  1499. 119, ...
  1500. },
  1501. {
  1502. 119, ...
  1503. },
  1504. {
  1505. 119, ...
  1506. },
  1507. {
  1508. 119, ...
  1509. },
  1510. {
  1511. 119, ...
  1512. },
  1513. {
  1514. 119, ...
  1515. },
  1516. {
  1517. 119, ...
  1518. },
  1519. {
  1520. 119, ...
  1521. },
  1522. {
  1523. 119, ...
  1524. },
  1525. {
  1526. 119, ...
  1527. },
  1528. {
  1529. 119, ...
  1530. },
  1531. {
  1532. 119, ...
  1533. },
  1534. {
  1535. 119, ...
  1536. },
  1537. {
  1538. 119, ...
  1539. },
  1540. {
  1541. 119, ...
  1542. },
  1543. {
  1544. 119, ...
  1545. },
  1546. {
  1547. 119, ...
  1548. },
  1549. {
  1550. 119, ...
  1551. },
  1552. {
  1553. 119, ...
  1554. },
  1555. {
  1556. 119, ...
  1557. }
  1558. };
  1559. new g_iMaxBpAmmo[11] =
  1560. {
  1561. 0, 30, 90, 200, 90, 32, 100, 100, 35, 52, 120
  1562. };
  1563. new g_warning[66] =
  1564. {
  1565. "Could not find a valid map or the file does not exist (file "%s")"
  1566. };
  1567. new g_iWeaponIdToCheck[33];
  1568. new g_iOpenDelay[33];
  1569. Float:operator*(Float:,_:)(Float:oper1, oper2)
  1570. {
  1571. return floatmul(oper1, float(oper2));
  1572. }
  1573.  
  1574. bool:operator>(Float:,Float:)(Float:oper1, Float:oper2)
  1575. {
  1576. return floatcmp(oper1, oper2) > 0;
  1577. }
  1578.  
  1579. replace_all(string[], len, what[], with[])
  1580. {
  1581. new pos;
  1582. if ((pos = contain(string, what)) == -1)
  1583. {
  1584. return 0;
  1585. }
  1586. new total;
  1587. new with_len = strlen(with);
  1588. new diff = strlen(what) - with_len;
  1589. new total_len = strlen(string);
  1590. new temp_pos;
  1591. while (replace(string[pos], len - pos, what, with))
  1592. {
  1593. total++;
  1594. pos = with_len + pos;
  1595. total_len -= diff;
  1596. if (!(pos >= total_len))
  1597. {
  1598. temp_pos = contain(string[pos], what);
  1599. if (!(temp_pos == -1))
  1600. {
  1601. pos = temp_pos + pos;
  1602. }
  1603. return total;
  1604. }
  1605. return total;
  1606. }
  1607. return total;
  1608. }
  1609.  
  1610. is_user_admin(id)
  1611. {
  1612. new __flags = get_user_flags(id, MaxClients);
  1613. new var1;
  1614. return __flags > 0 && !__flags & 33554432;
  1615. }
  1616.  
  1617. cmd_access(id, level, cid, num, bool:accesssilent)
  1618. {
  1619. new has_access;
  1620. new var1;
  1621. if (is_dedicated_server())
  1622. {
  1623. var1 = 0;
  1624. }
  1625. else
  1626. {
  1627. var1 = 1;
  1628. }
  1629. if (var1 == id)
  1630. {
  1631. has_access = 1;
  1632. }
  1633. else
  1634. {
  1635. if (level == 16777216)
  1636. {
  1637. if (is_user_admin(id))
  1638. {
  1639. has_access = 1;
  1640. }
  1641. }
  1642. if (level & get_user_flags(id, MaxClients))
  1643. {
  1644. has_access = 1;
  1645. }
  1646. if (!level)
  1647. {
  1648. has_access = 1;
  1649. }
  1650. }
  1651. if (has_access)
  1652. {
  1653. if (num > read_argc())
  1654. {
  1655. new hcmd[32];
  1656. new hinfo[128];
  1657. new hflag;
  1658. new bool:info_ml;
  1659. get_concmd(cid, hcmd, "", hflag, hinfo, 127, level, -1, info_ml);
  1660. if (info_ml)
  1661. {
  1662. LookupLangKey(hinfo, 127, hinfo, id);
  1663. }
  1664. console_print(id, "%L: %s %s", id, "USAGE", hcmd, hinfo);
  1665. return 0;
  1666. }
  1667. return 1;
  1668. }
  1669. if (!accesssilent)
  1670. {
  1671. console_print(id, "%L", id, "NO_ACC_COM");
  1672. }
  1673. return 0;
  1674. }
  1675.  
  1676. cmd_target(id, arg[], flags)
  1677. {
  1678. new player = find_player("bl", arg);
  1679. if (player)
  1680. {
  1681. if (find_player("blj", arg) != player)
  1682. {
  1683. console_print(id, "%L", id, "MORE_CL_MATCHT");
  1684. return 0;
  1685. }
  1686. }
  1687. else
  1688. {
  1689. new var1;
  1690. if ((player = find_player(244, arg)) && arg[0] == 35 && arg[1])
  1691. {
  1692. player = find_player(252, str_to_num(arg[1]));
  1693. }
  1694. }
  1695. if (!player)
  1696. {
  1697. console_print(id, "%L", id, "CL_NOT_FOUND");
  1698. return 0;
  1699. }
  1700. if (flags & 1)
  1701. {
  1702. new var3;
  1703. if (get_user_flags(player, MaxClients) & 1 && flags & 2)
  1704. {
  1705. new imname[32];
  1706. get_user_name(player, imname, "");
  1707. console_print(id, "%L", id, "CLIENT_IMM", imname);
  1708. return 0;
  1709. }
  1710. }
  1711. if (flags & 4)
  1712. {
  1713. if (!is_user_alive(player))
  1714. {
  1715. new imname[32];
  1716. get_user_name(player, imname, "");
  1717. console_print(id, "%L", id, "CANT_PERF_DEAD", imname);
  1718. return 0;
  1719. }
  1720. }
  1721. if (flags & 8)
  1722. {
  1723. if (is_user_bot(player))
  1724. {
  1725. new imname[32];
  1726. get_user_name(player, imname, "");
  1727. console_print(id, "%L", id, "CANT_PERF_BOT", imname);
  1728. return 0;
  1729. }
  1730. }
  1731. return player;
  1732. }
  1733.  
  1734. get_configsdir(name[], len)
  1735. {
  1736. return get_localinfo("amxx_configsdir", name, len);
  1737. }
  1738.  
  1739. fvault_get_data(vaultname[], key[], data[], len, &timestamp)
  1740. {
  1741. new filename[128];
  1742. _FormatVaultName(vaultname, filename, 127);
  1743. if (!file_exists(filename, MaxClients))
  1744. {
  1745. return 0;
  1746. }
  1747. new vault = fopen(filename, "rt", MaxClients, "GAME");
  1748. new _data[512];
  1749. new _key[64];
  1750. new _time[32];
  1751. while (!feof(vault))
  1752. {
  1753. fgets(vault, _data, 511);
  1754. parse(_data, _key, 63);
  1755. if (equal(_key, key, MaxClients))
  1756. {
  1757. new _len = strlen(_key) + 4;
  1758. new i = copy(data, len, _data[_len]) - 1;
  1759. while (0 < i)
  1760. {
  1761. if (!(data[i] == 34))
  1762. {
  1763. new var1;
  1764. if (data[i] == 32 && data[i + -1] == 34)
  1765. {
  1766. data[i + -1] = 0;
  1767. copy(_time, "", data[i + 1]);
  1768. timestamp = str_to_num(_time);
  1769. fclose(vault);
  1770. return 1;
  1771. }
  1772. i--;
  1773. }
  1774. fclose(vault);
  1775. return 1;
  1776. }
  1777. fclose(vault);
  1778. return 1;
  1779. }
  1780. }
  1781. fclose(vault);
  1782. copy(data, len, 868);
  1783. return 0;
  1784. }
  1785.  
  1786. fvault_pset_data(vaultname[], key[], data[])
  1787. {
  1788. _fvault_set_data(vaultname, key, data, -1);
  1789. return 0;
  1790. }
  1791.  
  1792. _fvault_set_data(vaultname[], key[], data[], timestamp)
  1793. {
  1794. new file = fopen(_temp_vault, "wt", MaxClients, "GAME");
  1795. new filename[128];
  1796. _FormatVaultName(vaultname, filename, 127);
  1797. new vault = fopen(filename, "rt", MaxClients, "GAME");
  1798. new _data[512];
  1799. new _key[64];
  1800. new _other[3];
  1801. new bool:replaced;
  1802. while (!feof(vault))
  1803. {
  1804. fgets(vault, _data, 511);
  1805. parse(_data, _key, 63, _other, 2);
  1806. new var1;
  1807. if (equal(_key, key, MaxClients) && !replaced)
  1808. {
  1809. fprintf(file, "\"%s\" \"%s\" %i\n", key, data, timestamp);
  1810. replaced = true;
  1811. }
  1812. else
  1813. {
  1814. fputs(file, _data, MaxClients);
  1815. }
  1816. }
  1817. fclose(file);
  1818. fclose(vault);
  1819. if (!replaced)
  1820. {
  1821. file = fopen(filename, "a+", MaxClients, "GAME");
  1822. fprintf(file, "\"%s\" \"%s\" %i\n", key, data, timestamp);
  1823. fclose(file);
  1824. delete_file(_temp_vault, MaxClients, "GAMECONFIG");
  1825. }
  1826. else
  1827. {
  1828. delete_file(filename, MaxClients, "GAMECONFIG");
  1829. do {
  1830. } while (!rename_file(_temp_vault, filename, 1));
  1831. }
  1832. return 0;
  1833. }
  1834.  
  1835. _FormatVaultName(vaultname[], filename[], len)
  1836. {
  1837. static invalid_chars[9][2] =
  1838. {
  1839. {
  1840. 47, 0
  1841. },
  1842. {
  1843. 92, 0
  1844. },
  1845. {
  1846. 42, 0
  1847. },
  1848. {
  1849. 58, 0
  1850. },
  1851. {
  1852. 63, 0
  1853. },
  1854. {
  1855. 34, 0
  1856. },
  1857. {
  1858. 60, 0
  1859. },
  1860. {
  1861. 62, 0
  1862. },
  1863. {
  1864. 124, 0
  1865. }
  1866. };
  1867. static i;
  1868. static tempvault[128];
  1869. copy(tempvault, 127, vaultname);
  1870. i = 0;
  1871. while (i < 9)
  1872. {
  1873. replace_all(tempvault, 127, invalid_chars[i], 1688);
  1874. i += 1;
  1875. }
  1876. if (!dir_exists(_vault_dir, MaxClients))
  1877. {
  1878. mkdir(_vault_dir, 511, MaxClients, "GAMECONFIG");
  1879. }
  1880. formatex(filename, len, "%s/%s.txt", _vault_dir, tempvault);
  1881. return 0;
  1882. }
  1883.  
  1884. public __fatal_ham_error(Ham:id, HamError:err, reason[])
  1885. {
  1886. new func = get_func_id("HamFilter", -1);
  1887. new bool:fail = 1;
  1888. new var1;
  1889. if (func != -1 && callfunc_begin_i(func, -1) == 1)
  1890. {
  1891. callfunc_push_int(id);
  1892. callfunc_push_int(err);
  1893. callfunc_push_str(reason, MaxClients);
  1894. if (callfunc_end() == 1)
  1895. {
  1896. fail = false;
  1897. }
  1898. }
  1899. if (fail)
  1900. {
  1901. set_fail_state(reason);
  1902. }
  1903. return 0;
  1904. }
  1905.  
  1906. public _HTTP_EntityThink(iEntity)
  1907. {
  1908. static iRet;
  1909. static iActiveSlots;
  1910. static iDataStart;
  1911. static iDataBlocks;
  1912. static iSlot;
  1913. if (g_HTTPEntity != iEntity)
  1914. {
  1915. return 0;
  1916. }
  1917. iActiveSlots = 0;
  1918. iSlot = 0;
  1919. while (iSlot < 10)
  1920. {
  1921. if (HTTP[iSlot][325])
  1922. {
  1923. iActiveSlots += 1;
  1924. if (socket_is_readable(HTTP[iSlot][321], MaxClients))
  1925. {
  1926. if ((iDataBlocks = socket_recv(HTTP[iSlot][321], g_DataBuffer, 4096)))
  1927. {
  1928. new var2 = HTTP[iSlot][322];
  1929. var2++;
  1930. new var1;
  1931. if (var2 == 1 && (iDataStart = strfind(g_DataBuffer, "\r\n\r\n", MaxClients, MaxClients)) > -1)
  1932. {
  1933. new iContentLength = strfind(g_DataBuffer, "Content-Length: ", MaxClients, MaxClients);
  1934. if (iContentLength > -1)
  1935. {
  1936. new iSizeEnd = strfind(g_DataBuffer[iContentLength + 16], "\r\n", MaxClients, MaxClients);
  1937. if (iSizeEnd > -1)
  1938. {
  1939. g_DataBuffer[iSizeEnd] = 0;
  1940. HTTP[iSlot][324] = str_to_num(g_DataBuffer[iContentLength + 16]);
  1941. }
  1942. }
  1943. iDataStart = iDataStart + 4;
  1944. }
  1945. else
  1946. {
  1947. iDataStart = 0;
  1948. }
  1949. new var3 = HTTP[iSlot][323];
  1950. var3 = var3[fwrite_blocks(HTTP[iSlot][320], g_DataBuffer[iDataStart], iDataBlocks - iDataStart, 1)];
  1951. if (HTTP[iSlot][324] == HTTP[iSlot][323])
  1952. {
  1953. ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 1);
  1954. fclose(HTTP[iSlot][320]);
  1955. socket_close(HTTP[iSlot][321]);
  1956. iActiveSlots -= 1;
  1957. HTTP[iSlot][325] = 0;
  1958. }
  1959. else
  1960. {
  1961. ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 0);
  1962. }
  1963. }
  1964. ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 1);
  1965. fclose(HTTP[iSlot][320]);
  1966. socket_close(HTTP[iSlot][321]);
  1967. iActiveSlots -= 1;
  1968. HTTP[iSlot][325] = 0;
  1969. }
  1970. }
  1971. iSlot += 1;
  1972. }
  1973. if (iActiveSlots)
  1974. {
  1975. entity_set_float(g_HTTPEntity, 7, floatadd(1008981770, get_gametime()));
  1976. }
  1977. else
  1978. {
  1979. entity_set_int(g_HTTPEntity, 27, 1073741824);
  1980. call_think(g_HTTPEntity);
  1981. g_HTTPEntity = 0;
  1982. DestroyForward(g_Forward);
  1983. g_Forward = 0;
  1984. }
  1985. return 0;
  1986. }
  1987.  
  1988. xs_vec_mul_scalar(Float:vec[], Float:scalar, Float:out[])
  1989. {
  1990. out[0] = floatmul(vec[0], scalar);
  1991. out[1] = floatmul(vec[1], scalar);
  1992. out[2] = floatmul(vec[2], scalar);
  1993. return 0;
  1994. }
  1995.  
  1996. UnixToTime(iTimeStamp, &iYear, &iMonth, &iDay, &iHour, &iMinute, &iSecond, TimeZones:tzTimeZone)
  1997. {
  1998. new iTemp;
  1999. iYear = 1970;
  2000. iMonth = 1;
  2001. iDay = 1;
  2002. iHour = 0;
  2003. if (!tzTimeZone)
  2004. {
  2005. tzTimeZone = GetTimeZone();
  2006. }
  2007. iTimeStamp = TimeZoneOffset[tzTimeZone][iTimeStamp];
  2008. while (0 < iTimeStamp)
  2009. {
  2010. iTemp = IsLeapYear(iYear);
  2011. if (0 <= iTimeStamp - YearSeconds[iTemp])
  2012. {
  2013. iTimeStamp -= YearSeconds[iTemp];
  2014. new var1 = iYear;
  2015. var1++;
  2016. iYear = var1;
  2017. }
  2018. while (0 < iTimeStamp)
  2019. {
  2020. iTemp = SecondsInMonth(iYear, iMonth);
  2021. if (0 <= iTimeStamp - iTemp)
  2022. {
  2023. iTimeStamp -= iTemp;
  2024. new var2 = iMonth;
  2025. var2++;
  2026. iMonth = var2;
  2027. }
  2028. while (0 < iTimeStamp)
  2029. {
  2030. if (0 <= iTimeStamp - DaySeconds)
  2031. {
  2032. iTimeStamp -= DaySeconds;
  2033. new var3 = iDay;
  2034. var3++;
  2035. iDay = var3;
  2036. }
  2037. while (0 < iTimeStamp)
  2038. {
  2039. if (0 <= iTimeStamp - HourSeconds)
  2040. {
  2041. iTimeStamp -= HourSeconds;
  2042. new var4 = iHour;
  2043. var4++;
  2044. iHour = var4;
  2045. }
  2046. iMinute = iTimeStamp / 60;
  2047. iSecond = iTimeStamp % 60;
  2048. return 0;
  2049. }
  2050. iMinute = iTimeStamp / 60;
  2051. iSecond = iTimeStamp % 60;
  2052. return 0;
  2053. }
  2054. while (0 < iTimeStamp)
  2055. {
  2056. if (0 <= iTimeStamp - HourSeconds)
  2057. {
  2058. iTimeStamp -= HourSeconds;
  2059. new var4 = iHour;
  2060. var4++;
  2061. iHour = var4;
  2062. }
  2063. iMinute = iTimeStamp / 60;
  2064. iSecond = iTimeStamp % 60;
  2065. return 0;
  2066. }
  2067. iMinute = iTimeStamp / 60;
  2068. iSecond = iTimeStamp % 60;
  2069. return 0;
  2070. }
  2071. while (0 < iTimeStamp)
  2072. {
  2073. if (0 <= iTimeStamp - DaySeconds)
  2074. {
  2075. iTimeStamp -= DaySeconds;
  2076. new var3 = iDay;
  2077. var3++;
  2078. iDay = var3;
  2079. }
  2080. while (0 < iTimeStamp)
  2081. {
  2082. if (0 <= iTimeStamp - HourSeconds)
  2083. {
  2084. iTimeStamp -= HourSeconds;
  2085. new var4 = iHour;
  2086. var4++;
  2087. iHour = var4;
  2088. }
  2089. iMinute = iTimeStamp / 60;
  2090. iSecond = iTimeStamp % 60;
  2091. return 0;
  2092. }
  2093. iMinute = iTimeStamp / 60;
  2094. iSecond = iTimeStamp % 60;
  2095. return 0;
  2096. }
  2097. while (0 < iTimeStamp)
  2098. {
  2099. if (0 <= iTimeStamp - HourSeconds)
  2100. {
  2101. iTimeStamp -= HourSeconds;
  2102. new var4 = iHour;
  2103. var4++;
  2104. iHour = var4;
  2105. }
  2106. iMinute = iTimeStamp / 60;
  2107. iSecond = iTimeStamp % 60;
  2108. return 0;
  2109. }
  2110. iMinute = iTimeStamp / 60;
  2111. iSecond = iTimeStamp % 60;
  2112. return 0;
  2113. }
  2114. while (0 < iTimeStamp)
  2115. {
  2116. iTemp = SecondsInMonth(iYear, iMonth);
  2117. if (0 <= iTimeStamp - iTemp)
  2118. {
  2119. iTimeStamp -= iTemp;
  2120. new var2 = iMonth;
  2121. var2++;
  2122. iMonth = var2;
  2123. }
  2124. while (0 < iTimeStamp)
  2125. {
  2126. if (0 <= iTimeStamp - DaySeconds)
  2127. {
  2128. iTimeStamp -= DaySeconds;
  2129. new var3 = iDay;
  2130. var3++;
  2131. iDay = var3;
  2132. }
  2133. while (0 < iTimeStamp)
  2134. {
  2135. if (0 <= iTimeStamp - HourSeconds)
  2136. {
  2137. iTimeStamp -= HourSeconds;
  2138. new var4 = iHour;
  2139. var4++;
  2140. iHour = var4;
  2141. }
  2142. iMinute = iTimeStamp / 60;
  2143. iSecond = iTimeStamp % 60;
  2144. return 0;
  2145. }
  2146. iMinute = iTimeStamp / 60;
  2147. iSecond = iTimeStamp % 60;
  2148. return 0;
  2149. }
  2150. while (0 < iTimeStamp)
  2151. {
  2152. if (0 <= iTimeStamp - HourSeconds)
  2153. {
  2154. iTimeStamp -= HourSeconds;
  2155. new var4 = iHour;
  2156. var4++;
  2157. iHour = var4;
  2158. }
  2159. iMinute = iTimeStamp / 60;
  2160. iSecond = iTimeStamp % 60;
  2161. return 0;
  2162. }
  2163. iMinute = iTimeStamp / 60;
  2164. iSecond = iTimeStamp % 60;
  2165. return 0;
  2166. }
  2167. while (0 < iTimeStamp)
  2168. {
  2169. if (0 <= iTimeStamp - DaySeconds)
  2170. {
  2171. iTimeStamp -= DaySeconds;
  2172. new var3 = iDay;
  2173. var3++;
  2174. iDay = var3;
  2175. }
  2176. while (0 < iTimeStamp)
  2177. {
  2178. if (0 <= iTimeStamp - HourSeconds)
  2179. {
  2180. iTimeStamp -= HourSeconds;
  2181. new var4 = iHour;
  2182. var4++;
  2183. iHour = var4;
  2184. }
  2185. iMinute = iTimeStamp / 60;
  2186. iSecond = iTimeStamp % 60;
  2187. return 0;
  2188. }
  2189. iMinute = iTimeStamp / 60;
  2190. iSecond = iTimeStamp % 60;
  2191. return 0;
  2192. }
  2193. while (0 < iTimeStamp)
  2194. {
  2195. if (0 <= iTimeStamp - HourSeconds)
  2196. {
  2197. iTimeStamp -= HourSeconds;
  2198. new var4 = iHour;
  2199. var4++;
  2200. iHour = var4;
  2201. }
  2202. iMinute = iTimeStamp / 60;
  2203. iSecond = iTimeStamp % 60;
  2204. return 0;
  2205. }
  2206. iMinute = iTimeStamp / 60;
  2207. iSecond = iTimeStamp % 60;
  2208. return 0;
  2209. }
  2210.  
  2211. TimeToUnix(iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:tzTimeZone)
  2212. {
  2213. new i;
  2214. new iTimeStamp;
  2215. i = 1970;
  2216. while (i < iYear)
  2217. {
  2218. iTimeStamp = YearSeconds[IsLeapYear(i)][iTimeStamp];
  2219. i++;
  2220. }
  2221. i = 1;
  2222. while (i < iMonth)
  2223. {
  2224. iTimeStamp = SecondsInMonth(iYear, i) + iTimeStamp;
  2225. i++;
  2226. }
  2227. iTimeStamp = DaySeconds * iDay + -1 + iTimeStamp;
  2228. iTimeStamp = HourSeconds * iHour + iTimeStamp;
  2229. iTimeStamp = MinuteSeconds * iMinute + iTimeStamp;
  2230. iTimeStamp = iSecond + iTimeStamp;
  2231. if (!tzTimeZone)
  2232. {
  2233. tzTimeZone = GetTimeZone();
  2234. }
  2235. return TimeZoneOffset[tzTimeZone][iTimeStamp];
  2236. }
  2237.  
  2238. TimeZones:GetTimeZone()
  2239. {
  2240. if (TimeZone)
  2241. {
  2242. return TimeZone;
  2243. }
  2244. new TimeZones:iZone;
  2245. new iOffset;
  2246. new iTime;
  2247. new iYear;
  2248. new iMonth;
  2249. new iDay;
  2250. new iHour;
  2251. new iMinute;
  2252. new iSecond;
  2253. date(iYear, iMonth, iDay);
  2254. time(iHour, iMinute, iSecond);
  2255. iTime = TimeToUnix(iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
  2256. iOffset = iTime - get_systime(MaxClients);
  2257. iZone = MissingTAG:0;
  2258. while (iZone < TimeZones:41)
  2259. {
  2260. if (TimeZoneOffset[iZone] == iOffset)
  2261. {
  2262. new var1 = iZone;
  2263. TimeZone = var1;
  2264. return var1;
  2265. }
  2266. iZone++;
  2267. }
  2268. new var1 = iZone;
  2269. TimeZone = var1;
  2270. return var1;
  2271. }
  2272.  
  2273. SecondsInMonth(iYear, iMonth)
  2274. {
  2275. new var1;
  2276. if (IsLeapYear(iYear) && iMonth == 2)
  2277. {
  2278. var2 = MonthSeconds[iMonth + -1][DaySeconds];
  2279. }
  2280. else
  2281. {
  2282. var2 = MonthSeconds[iMonth + -1];
  2283. }
  2284. return var2;
  2285. }
  2286.  
  2287. IsLeapYear(iYear)
  2288. {
  2289. new var2;
  2290. return iYear % 4 && (iYear % 100 || iYear % 400);
  2291. }
  2292.  
  2293. public plugin_init()
  2294. {
  2295. register_plugin(337292, "1.0", "renegade");
  2296. register_cvar("csgo_classy_version", "1.0", 68, MaxClients);
  2297. set_cvar_string("csgo_classy_version", "1.0");
  2298. register_cvar("csgo_classy_author", "renegade", 68, MaxClients);
  2299. set_cvar_string("csgo_classy_author", "renegade");
  2300. c_PruneDays = register_cvar("prunedays_delete", "30", MaxClients, MaxClients);
  2301. rankLevelBonus = register_cvar("bonus_amount", "150", MaxClients, MaxClients);
  2302. rankSaveType = register_cvar("save_type", 337996, MaxClients, MaxClients);
  2303. get_time("%d", g_szDay, 2);
  2304. g_iDay = str_to_num(g_szDay);
  2305. g_iVault = nvault_open("csgoclassydaily");
  2306. if (g_iVault == -1)
  2307. {
  2308. set_fail_state("Can not open csgoclassydaily.vault");
  2309. }
  2310. register_dictionary("csgoclassy.txt");
  2311. register_event("HLTV", "ev_NewRound", 338348, "1=0", "2=0");
  2312. register_event("HLTV", "event_RoundStart", 338476, "1=0", "2=0");
  2313. register_logevent("logev_Restart_Round", 2, "1&Restart_Round");
  2314. register_logevent("logev_Game_Commencing", 2, "1&Game_Commencing");
  2315. register_event("SendAudio", "ev_RoundWon_T", 338916, "2&%!MRAD_terwin");
  2316. register_event("SendAudio", "ev_RoundWon_CT", 339088, "2&%!MRAD_ctwin");
  2317. register_event("StatusValue", "showStatus", "be", "1=2", "2!0");
  2318. register_event("StatusValue", "hideStatus", "be", "1=1", "2=0");
  2319. g_iSkinID = getGiveawaySkin(g_szSkinName);
  2320. new i;
  2321. while (i < 4)
  2322. {
  2323. g_Messages[i] = get_user_msgid(g_Messages_Name[i]);
  2324. register_message(g_Messages[i], "block");
  2325. i++;
  2326. }
  2327. crosshaircontrols = get_pcvar_num(register_cvar("crosshair_select", 339520, MaxClients, MaxClients));
  2328. g_msgHideWeapon = get_user_msgid("HideWeapon");
  2329. register_event("CurWeapon", "HookCurWeapon2", "be", "1=1");
  2330. RegisterHam(11, "player", "fw_PlayerKilled", MaxClients, MaxClients);
  2331. register_event("HLTV", "Event_New_Round", 339876, "1=0", "2=0");
  2332. register_forward(125, "FW_CmdStart", MaxClients);
  2333. crosshairvault = nvault_open("csgoclassycrosshair");
  2334. new i;
  2335. while (i < 2)
  2336. {
  2337. RegisterHam(89, weapon_weapon[i], "fw_Weapon_Reload_Post", 1, MaxClients);
  2338. i++;
  2339. }
  2340. new i;
  2341. while (i < 3)
  2342. {
  2343. fw_PA[i] = RegisterHam(87, GrenadeName[i], "Ham_Grenade_PA", 1, MaxClients);
  2344. fw_SA[i] = RegisterHam(88, GrenadeName[i], "Ham_Grenade_SA", 1, MaxClients);
  2345. i++;
  2346. }
  2347. register_event("30", "changeMap", 340304, 340312);
  2348. register_cvar("amx_nextmap", 340364, "%L: %s %s", MaxClients);
  2349. new szString[32];
  2350. new szString2[32];
  2351. new szString3[8];
  2352. get_localinfo("lastmapcycle", szString, "");
  2353. parse(szString, szString2, 31, szString3, 7);
  2354. g_pos = str_to_num(szString3);
  2355. get_cvar_string("mapcyclefile", g_mapCycle, "");
  2356. if (!equal(g_mapCycle, szString2, MaxClients))
  2357. {
  2358. g_pos = 0;
  2359. }
  2360. readMapCycle(g_mapCycle, g_nextMap, 31);
  2361. set_cvar_string("amx_nextmap", g_nextMap);
  2362. format(szString3, "", "%s %d", g_mapCycle, g_pos);
  2363. set_localinfo("lastmapcycle", szString3);
  2364. fw_CUIC = register_forward(122, "fw_FM_ClientUserInfoChanged", MaxClients);
  2365. c_OverrideMenu = register_cvar("override_menu", 340764, MaxClients, MaxClients);
  2366. c_ShowHUD = register_cvar("show_not_logged", 340836, MaxClients, MaxClients);
  2367. c_HMinMoney = register_cvar("head_minmoney", 340900, MaxClients, MaxClients);
  2368. c_HMaxMoney = register_cvar("head_maxmoney", 340964, MaxClients, MaxClients);
  2369. c_KMinMoney = register_cvar("kill_minmoney", 341028, MaxClients, MaxClients);
  2370. c_KMaxMoney = register_cvar("kill_maxmoney", 341092, MaxClients, MaxClients);
  2371. c_HMinChance = register_cvar("head_minchance", "50", MaxClients, MaxClients);
  2372. c_HMaxChance = register_cvar("head_maxchance", "100", MaxClients, MaxClients);
  2373. c_KMinChance = register_cvar("kill_minchance", 341308, MaxClients, MaxClients);
  2374. c_KMaxChance = register_cvar("kill_maxchance", "100", MaxClients, MaxClients);
  2375. c_AMinMoney = register_cvar("assist_minmoney", 341456, MaxClients, MaxClients);
  2376. c_AMaxMoney = register_cvar("assist_maxmoney", 341528, MaxClients, MaxClients);
  2377. c_TombolaCost = register_cvar("tombola_cost", "500", MaxClients, MaxClients);
  2378. c_RegOpen = register_cvar("register_open", 341660, MaxClients, MaxClients);
  2379. c_RankUpBonus = register_cvar("rankup_bonus", "kkcc|150", MaxClients, MaxClients);
  2380. c_ReturnPercent = register_cvar("return_percent", 341816, MaxClients, MaxClients);
  2381. c_ShowDropCraft = register_cvar("show_dropcraft", 341884, MaxClients, MaxClients);
  2382. c_DropType = register_cvar("drop_type", 341932, MaxClients, MaxClients);
  2383. c_KeyPrice = register_cvar("key_price", "80", MaxClients, MaxClients);
  2384. c_TombolaTimer = register_cvar("tombola_timer", "180", MaxClients, MaxClients);
  2385. c_JackpotTimer = register_cvar("jackpot_timer", "240", MaxClients, MaxClients);
  2386. c_Competitive = register_cvar("competitive_mode", 342204, MaxClients, MaxClients);
  2387. c_WarmUpDuration = register_cvar("warmup_duration", "45", MaxClients, MaxClients);
  2388. c_RouletteMin = register_cvar("roulette_min", 342340, MaxClients, MaxClients);
  2389. c_RouletteMax = register_cvar("roulette_max", "10", MaxClients, MaxClients);
  2390. register_event("DeathMsg", "ev_DeathMsg", 342496, "1>0");
  2391. register_event("Damage", "ev_Damage", 342588, "2!0", "3=0", "4!0");
  2392. fw_S1 = RegisterHam(MaxClients, "player", "Ham_Player_Spawn_Post", 1, MaxClients);
  2393. fw_S2 = RegisterHam(MaxClients, "player", "Ham_Player_Spawn_Pre", MaxClients, MaxClients);
  2394. fw_K1 = RegisterHam(11, "player", "Ham_Player_Killed_Post", 1, MaxClients);
  2395. fw_K2 = RegisterHam(11, "player", "Ham_Player_Killed_Pre", MaxClients, MaxClients);
  2396. c_Respawn = register_cvar("respawn_enable", 343168, MaxClients, MaxClients);
  2397. c_RespawnDelay = register_cvar("respawn_delay", 343232, MaxClients, MaxClients);
  2398. c_DropChance = register_cvar("dropchance", "95", MaxClients, MaxClients);
  2399. c_CraftCost = register_cvar("craft_cost", "25", MaxClients, MaxClients);
  2400. c_DustForTransform = register_cvar("scraps_for_transform", 343436, MaxClients, MaxClients);
  2401. c_Suicide = register_cvar("suicide", 343476, MaxClients, MaxClients);
  2402. RegisterHam(9, "player", "OnTakeDamage", MaxClients, MaxClients);
  2403. register_event("DeathMsg", "OnPlayerKilled", 343660, 340312);
  2404. register_logevent("OnRoundEnd", 2, "1=Round_End");
  2405. g_nVaultStattrack = nvault_open("csgoclassy_stattrack");
  2406. g_nVaultStattrackKills = nvault_open("csgoclassy_stattrack_kills");
  2407. if (get_pcvar_num(c_Suicide) > 0)
  2408. {
  2409. register_forward(100, "concmd_kill", MaxClients);
  2410. }
  2411. g_MsgSync = CreateHudSyncObj(MaxClients);
  2412. g_WarmUpSync = CreateHudSyncObj(MaxClients);
  2413. g_iMaxPlayers = get_maxplayers();
  2414. new size = 31;
  2415. i = 1;
  2416. while (i < size)
  2417. {
  2418. if (g_szWeaponEntName[i][0])
  2419. {
  2420. fw_ID[i] = RegisterHam(66, g_szWeaponEntName[i], "Ham_Item_Deploy_Post", 1, MaxClients);
  2421. fw_ICD[i] = RegisterHam(99, g_szWeaponEntName[i], "Ham_Item_Can_Drop", MaxClients, MaxClients);
  2422. }
  2423. i++;
  2424. }
  2425. register_clcmd("say /tradeaccept", "clcmd_say_accept", -1, 344292, -1, MaxClients);
  2426. register_clcmd("say /tradedeny", "clcmd_say_deny", -1, 344292, -1, MaxClients);
  2427. register_clcmd("say /coinflipaccept", "clcmd_say_accept_cf", -1, 344292, -1, MaxClients);
  2428. register_clcmd("say /coinflipdeny", "clcmd_say_deny_cf", -1, 344292, -1, MaxClients);
  2429. if (get_pcvar_num(c_OverrideMenu) > 0)
  2430. {
  2431. register_clcmd("chooseteam", "clcmd_chooseteam", -1, 344832, -1, MaxClients);
  2432. }
  2433. register_concmd("UserPassword", "concmd_password", -1, 344952, -1, MaxClients);
  2434. register_concmd("SkinPrice", "concmd_itemprice", -1, 345064, -1, MaxClients);
  2435. register_concmd("BetMoney", "concmd_betmoney", -1, 345168, -1, MaxClients);
  2436. g_Vault = nvault_open("csgoclassy");
  2437. if (g_Vault == -1)
  2438. {
  2439. set_fail_state("[CSGO Classy] Could not open file csgoclassy.vault");
  2440. return 0;
  2441. }
  2442. log_amx("[CSGO Classy] File csgoclassy.vault was successfully loaded");
  2443. c_CmdAccess = register_cvar("commands_access", 345724, MaxClients, MaxClients);
  2444. new Flags[8];
  2445. get_pcvar_string(c_CmdAccess, Flags, 7);
  2446. new Access = read_flags(Flags);
  2447. register_concmd("amx_givemoney", "concmd_givemoney", Access, "<Name> <Amount>", -1, MaxClients);
  2448. register_concmd("amx_givecases", "concmd_givecases", Access, "<Name> <Amount>", -1, MaxClients);
  2449. register_concmd("amx_givekeys", "concmd_givekeys", Access, "<Name> <Amount>", -1, MaxClients);
  2450. register_concmd("amx_givescraps", "concmd_givescraps", Access, "<Name> <Amount>", -1, MaxClients);
  2451. register_concmd("amx_setskins", "concmd_giveskins", Access, "<Name> <SkinID or @ALL> <Amount> <StatTrack status (1 or 0)", -1, MaxClients);
  2452. register_concmd("amx_setrank", "concmd_setrank", Access, "<Name> <Rank ID>", -1, MaxClients);
  2453. register_concmd("amx_finddata", "concmd_finddata", Access, "<Name>", -1, MaxClients);
  2454. register_concmd("amx_resetdata", "concmd_resetdata", Access, "<Name>", -1, MaxClients);
  2455. register_concmd("amx_getinfo", "concmd_getinfo", Access, "<Type> <Index>", -1, MaxClients);
  2456. p_Freezetime = get_cvar_pointer("mp_freezetime");
  2457. p_StartMoney = get_cvar_pointer("mp_startmoney");
  2458. g_status_sync = CreateHudSyncObj(MaxClients);
  2459. _LicenseChecker();
  2460. return 0;
  2461. }
  2462.  
  2463. public plugin_precache()
  2464. {
  2465. precache_sound(g_szTWin);
  2466. precache_sound(g_szCTWin);
  2467. new i;
  2468. while (i < 16)
  2469. {
  2470. precache_generic(crosshair_list[i][1]);
  2471. i++;
  2472. }
  2473. new i;
  2474. while (i < 3)
  2475. {
  2476. precache_model(g_szNadeModels[i]);
  2477. i++;
  2478. }
  2479. new fp = fopen(g_szConfigFile, "rt", MaxClients, "GAME");
  2480. if (!fp)
  2481. {
  2482. set_fail_state("[CSGO Classy] Could not open file csgoclassy.ini");
  2483. return 0;
  2484. }
  2485. log_amx("[CSGO Classy] File csgoclassy.ini was successfully loaded");
  2486. new buff[128];
  2487. new section;
  2488. new leftpart[48];
  2489. new rightpart[48];
  2490. new weaponid[4];
  2491. new weaponname[32];
  2492. new weaponmodel[48];
  2493. new weapontype[4];
  2494. new weaponchance[8];
  2495. new weaponcostmin[8];
  2496. new bodypart[8];
  2497. while (!feof(fp))
  2498. {
  2499. fgets(fp, buff, 127);
  2500. new var1;
  2501. if (!buff[0] || buff[0] == 59)
  2502. {
  2503. new var2;
  2504. if (!(buff[0] == 59 || buff[0]))
  2505. {
  2506. if (buff[0] == 91)
  2507. {
  2508. section += 1;
  2509. }
  2510. switch (section)
  2511. {
  2512. case 1:
  2513. {
  2514. if (buff[0] != 91)
  2515. {
  2516. parse(buff, leftpart, 47, rightpart, 47);
  2517. ArrayPushString(g_aRankName, leftpart);
  2518. ArrayPushCell(g_aRankKills, str_to_num(rightpart));
  2519. g_iRanksNum = g_iRanksNum + 1;
  2520. }
  2521. }
  2522. case 2:
  2523. {
  2524. if (buff[0] != 91)
  2525. {
  2526. parse(buff, leftpart, 47, rightpart, 47);
  2527. new wid = str_to_num(leftpart);
  2528. copy(g_szDefaultSkinModel[wid], 47, rightpart);
  2529. new var5;
  2530. if (strlen(rightpart) > 0 && file_exists(rightpart, MaxClients))
  2531. {
  2532. precache_model(rightpart);
  2533. }
  2534. else
  2535. {
  2536. new var6;
  2537. if (0 < strlen(rightpart) && !file_exists(rightpart, MaxClients))
  2538. {
  2539. new error[128];
  2540. formatex(error, strlen(rightpart) + 127, "[CSGO Classy] You have a missing file \"%s\" in the [DEFAULT] section of csgoclassy.ini", rightpart);
  2541. set_fail_state(error);
  2542. return 0;
  2543. }
  2544. }
  2545. }
  2546. }
  2547. case 3:
  2548. {
  2549. if (buff[0] != 91)
  2550. {
  2551. parse(buff, weaponid, 3, weaponname, 31, weaponmodel, 47, weapontype, 3, weaponchance, 7, weaponcostmin, 7, bodypart, 7);
  2552. ArrayPushCell(g_aSkinWeaponID, str_to_num(weaponid));
  2553. ArrayPushString(g_aSkinName, weaponname);
  2554. ArrayPushString(g_aSkinModel, weaponmodel);
  2555. ArrayPushString(g_aSkinType, weapontype);
  2556. ArrayPushCell(g_aSkinChance, str_to_num(weaponchance));
  2557. ArrayPushCell(g_aSkinCostMin, str_to_num(weaponcostmin));
  2558. ArrayPushCell(g_aSkinBody, str_to_num(bodypart));
  2559. new var3;
  2560. if (0 < strlen(weaponmodel) && file_exists(weaponmodel, MaxClients))
  2561. {
  2562. precache_model(weaponmodel);
  2563. }
  2564. else
  2565. {
  2566. new var4;
  2567. if (0 < strlen(weaponmodel) && !file_exists(weaponmodel, MaxClients))
  2568. {
  2569. new error[128];
  2570. formatex(error, strlen(weaponmodel) + 127, "[CSGO Classy] You have a missing file \"%s\" in the [SKINS] section of csgoclassy.ini", weaponmodel);
  2571. set_fail_state(error);
  2572. return 0;
  2573. }
  2574. }
  2575. switch (weapontype[0])
  2576. {
  2577. case 99:
  2578. {
  2579. ArrayPushCell(g_aCraftSkin, g_iSkinsNum);
  2580. g_iCraftSkinNum = g_iCraftSkinNum + 1;
  2581. }
  2582. case 100:
  2583. {
  2584. ArrayPushCell(g_aDropSkin, g_iSkinsNum);
  2585. g_iDropSkinNum = g_iDropSkinNum + 1;
  2586. }
  2587. default:
  2588. {
  2589. }
  2590. }
  2591. g_iSkinsNum = g_iSkinsNum + 1;
  2592. }
  2593. }
  2594. default:
  2595. {
  2596. }
  2597. }
  2598. }
  2599. }
  2600. }
  2601. fclose(fp);
  2602. return 0;
  2603. }
  2604.  
  2605. public plugin_cfg()
  2606. {
  2607. new id;
  2608. new wid;
  2609. id = 1;
  2610. while (id <= g_iMaxPlayers)
  2611. {
  2612. wid = 1;
  2613. while (wid <= 30)
  2614. {
  2615. g_iUserSelectedSkin[id][wid] = -1;
  2616. wid++;
  2617. }
  2618. id++;
  2619. }
  2620. server_cmd("exec %s/csgoclassy.cfg", g_szCfgDir);
  2621. g_iTombolaTimer = get_pcvar_num(c_TombolaTimer);
  2622. new Float:timer = float(g_iTombolaTimer);
  2623. set_task(timer, "task_TombolaRun", 2000, 348872, MaxClients, 348876, MaxClients);
  2624. g_iNextTombolaStart = get_systime(MaxClients) + g_iTombolaTimer;
  2625. return 0;
  2626. }
  2627.  
  2628. public plugin_natives()
  2629. {
  2630. register_library("csgoclassy");
  2631. get_configsdir(g_szCfgDir, 47);
  2632. formatex(g_szConfigFile, 47, "%s/csgoclassy.ini", g_szCfgDir);
  2633. if (!file_exists(g_szConfigFile, MaxClients))
  2634. {
  2635. return 0;
  2636. }
  2637. g_aRankName = ArrayCreate("NO_ACC_COM", 1);
  2638. g_aRankKills = ArrayCreate(1, 1);
  2639. g_aSkinWeaponID = ArrayCreate(1, 1);
  2640. g_aSkinBody = ArrayCreate(1, 1);
  2641. g_aSkinName = ArrayCreate("NO_ACC_COM", 1);
  2642. g_aSkinModel = ArrayCreate(48, 1);
  2643. g_aSkinType = ArrayCreate(2, 1);
  2644. g_aSkinChance = ArrayCreate(1, 1);
  2645. g_aSkinCostMin = ArrayCreate(1, 1);
  2646. g_aDropSkin = ArrayCreate(1, 1);
  2647. g_aCraftSkin = ArrayCreate(1, 1);
  2648. g_aTombola = ArrayCreate(1, 1);
  2649. g_aJackpotSkins = ArrayCreate(1, 1);
  2650. g_aJackPotSttSkins = ArrayCreate(1, 1);
  2651. g_aJackpotUsers = ArrayCreate(1, 1);
  2652. register_native("get_user_money", "native_get_user_money", MaxClients);
  2653. register_native("set_user_money", "native_set_user_money", MaxClients);
  2654. register_native("get_user_cases", "native_get_user_cases", MaxClients);
  2655. register_native("set_user_cases", "native_set_user_cases", MaxClients);
  2656. register_native("get_user_keys", "native_get_user_keys", MaxClients);
  2657. register_native("set_user_keys", "native_set_user_keys", MaxClients);
  2658. register_native("get_user_scraps", "native_get_user_scraps", MaxClients);
  2659. register_native("set_user_scraps", "native_set_user_scraps", MaxClients);
  2660. register_native("get_user_rank", "native_get_user_rank", MaxClients);
  2661. register_native("set_user_rank", "native_set_user_rank", MaxClients);
  2662. register_native("get_user_skins", "native_get_user_skins", MaxClients);
  2663. register_native("set_user_skins", "native_set_user_skins", MaxClients);
  2664. register_native("is_user_logged", "native_is_user_logged", MaxClients);
  2665. register_native("is_using_m4a4", "_checku", MaxClients);
  2666. register_native("getSkinName", "_getSkinName", MaxClients);
  2667. register_native("getWeaponSkinId", "_getCurrentSkin", MaxClients);
  2668. register_native("updateWeaponSkin", "_update", MaxClients);
  2669. register_native("set_user_randomskin", "_setRandom", MaxClients);
  2670. return 0;
  2671. }
  2672.  
  2673. public _checku()
  2674. {
  2675. return g_bUsingM4A4[get_param(1)];
  2676. }
  2677.  
  2678. public _setRandom()
  2679. {
  2680. new id = get_param(1);
  2681. new iRandomSkin = random_num(MaxClients, g_iSkinsNum);
  2682. g_iUserSkins[id][iRandomSkin]++;
  2683. new model[48];
  2684. ArrayGetString(g_aSkinName, iRandomSkin, model, 47);
  2685. set_string(2, model, 47);
  2686. _SaveData(id);
  2687. return 0;
  2688. }
  2689.  
  2690. public _update()
  2691. {
  2692. new id = get_param(1);
  2693. new iWeaponID = get_param(2);
  2694. new userskin = get_param(3);
  2695. if (iWeaponID == get_user_weapon(id, 0, 0))
  2696. {
  2697. if (userskin == -1)
  2698. {
  2699. return 0;
  2700. }
  2701. if (userskin == 3812)
  2702. {
  2703. return 0;
  2704. }
  2705. new model[48];
  2706. ArrayGetString(g_aSkinModel, userskin, model, 47);
  2707. }
  2708. return 0;
  2709. }
  2710.  
  2711. public _getSkinName()
  2712. {
  2713. new id = get_param(1);
  2714. if (!is_user_connected(id))
  2715. {
  2716. return 0;
  2717. }
  2718. new iWeaponId = get_param(2);
  2719. if (g_iUserSelectedSkin[id][iWeaponId] == -1)
  2720. {
  2721. return 0;
  2722. }
  2723. new szSkin[50];
  2724. new i;
  2725. new num;
  2726. new iKillCount;
  2727. while (i < g_iSkinsNum)
  2728. {
  2729. num = g_iUserSkins[id][i];
  2730. if (0 < num)
  2731. {
  2732. if (g_iUserSelectedSkin[id][iWeaponId] == i)
  2733. {
  2734. new var1;
  2735. if (g_bIsWeaponStattrack[id][i] && g_bShallUseStt[id][iWeaponId])
  2736. {
  2737. iKillCount = g_iUserStattrackKillCount[id][i];
  2738. ArrayGetString(g_aSkinName, i, szSkin, 49);
  2739. set_string(3, szSkin, 49);
  2740. return iKillCount;
  2741. }
  2742. }
  2743. }
  2744. i++;
  2745. }
  2746. set_string(3, szSkin, 49);
  2747. return iKillCount;
  2748. }
  2749.  
  2750. public plugin_end()
  2751. {
  2752. if (g_iVault != -1)
  2753. {
  2754. ArrayDestroy(g_aRankName);
  2755. }
  2756. ArrayDestroy(g_aRankKills);
  2757. ArrayDestroy(g_aSkinWeaponID);
  2758. ArrayDestroy(g_aSkinName);
  2759. ArrayDestroy(g_aSkinModel);
  2760. ArrayDestroy(g_aSkinType);
  2761. ArrayDestroy(g_aSkinChance);
  2762. ArrayDestroy(g_aSkinCostMin);
  2763. ArrayDestroy(g_aDropSkin);
  2764. ArrayDestroy(g_aCraftSkin);
  2765. if (g_iPruneDays > 0)
  2766. {
  2767. nvault_prune(g_Vault, MaxClients, get_systime(MaxClients) - g_iPruneDays * 86400);
  2768. }
  2769. nvault_close(g_Vault);
  2770. nvault_close(g_iVault);
  2771. DisableHamForward(fw_S1);
  2772. DisableHamForward(fw_S2);
  2773. DisableHamForward(fw_K1);
  2774. DisableHamForward(fw_K2);
  2775. unregister_forward(122, fw_CUIC, MaxClients);
  2776. return 0;
  2777. }
  2778.  
  2779. public client_putinserver(id)
  2780. {
  2781. get_user_name(id, g_szName[id], "");
  2782. client_cmd(id, "crosshair 1");
  2783. load_cross(id);
  2784. _ResetCFData(id);
  2785. g_bJoinedGiveAway[id] = 0;
  2786. g_IsChangeAllowed[id] = 0;
  2787. g_bBettingCFStt[id] = 0;
  2788. g_bUsingM4A4[id] = 0;
  2789. g_iSkinsInContract[id] = 0;
  2790. g_iUserChance[id] = 0;
  2791. new i;
  2792. while (i < 10)
  2793. {
  2794. g_iWeaponUsedInContract[id][i] = -1;
  2795. i++;
  2796. }
  2797. new iPlayers[32];
  2798. new iNum;
  2799. get_players(iPlayers, iNum, "ch", 351508);
  2800. new a;
  2801. while (a < iNum)
  2802. {
  2803. new i;
  2804. while (i < 50)
  2805. {
  2806. g_bShallUseStt[iPlayers[a]][i] = true;
  2807. i++;
  2808. }
  2809. a++;
  2810. }
  2811. g_bPublishedStattrackSkin[id] = 0;
  2812. g_bGiftingStt[id] = 0;
  2813. g_bDestroyStt[id] = 0;
  2814. g_bTradingStt[id] = 0;
  2815. g_bJackpotStt[id] = 0;
  2816. g_iMostDamage[id] = 0;
  2817. g_iUserPassFail[id] = 0;
  2818. g_bLogged[id] = 0;
  2819. g_iUserMoney[id] = 0;
  2820. g_iUserScraps[id] = 0;
  2821. g_iUserKeys[id] = 0;
  2822. g_iUserCases[id] = 0;
  2823. g_iUserKills[id] = 0;
  2824. g_iUserRank[id] = 0;
  2825. g_bUserSell[id] = 0;
  2826. g_iUserSellItem[id] = -1;
  2827. g_iLastPlace[id] = 0;
  2828. g_iMenuType[id] = 0;
  2829. g_iGiftTarget[id] = 0;
  2830. g_iGiftItem[id] = -1;
  2831. g_iTradeTarget[id] = 0;
  2832. g_iTradeItem[id] = -1;
  2833. g_bTradeActive[id] = 0;
  2834. g_bTradeAccept[id] = 0;
  2835. g_bTradeSecond[id] = 0;
  2836. g_iTradeRequest[id] = 0;
  2837. _ResetCFData(id);
  2838. g_bUserPlay[id] = 0;
  2839. g_iUserBetMoney[id] = 100;
  2840. g_bRoulettePlay[id] = 0;
  2841. g_iUserJackpotItem[id] = -1;
  2842. g_bUserPlayJackpot[id] = 0;
  2843. new wid = 1;
  2844. while (wid <= 30)
  2845. {
  2846. g_iUserSelectedSkin[id][wid] = -1;
  2847. wid++;
  2848. }
  2849. new sid;
  2850. while (sid < 450)
  2851. {
  2852. g_iUserSkins[id][sid] = 0;
  2853. sid++;
  2854. }
  2855. if (get_pcvar_num(c_ShowHUD) > 0)
  2856. {
  2857. set_task(1065353216, "task_HUD", id, 351556, MaxClients, 351560, MaxClients);
  2858. }
  2859. return 0;
  2860. }
  2861.  
  2862. public client_connect(id)
  2863. {
  2864. _LoadData(id);
  2865. return 0;
  2866. }
  2867.  
  2868. _LicenseChecker()
  2869. {
  2870. TimeStamp = 1636934400;
  2871. new iYear;
  2872. new iMonth;
  2873. new iDay;
  2874. new iHour;
  2875. new iMinute;
  2876. new iSecond;
  2877. new netaddress[64];
  2878. new left[64];
  2879. new right[64];
  2880. if (TimeStamp >= get_systime(MaxClients))
  2881. {
  2882. get_user_ip(MaxClients, netaddress, 63, MaxClients);
  2883. strtok(netaddress, left, 63, right, 63, 58, MaxClients);
  2884. if (!equali(left, "192.168.100.100", MaxClients))
  2885. {
  2886. set_fail_state("[CSGO Classy] This IP is not licensed. Contact renegade to renew the license");
  2887. return 0;
  2888. }
  2889. UnixToTime(TimeStamp, iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
  2890. log_amx("[CSGO Classy] This license is valid until %d.%d.%d", iDay, iMonth, iYear);
  2891. return 0;
  2892. }
  2893. UnixToTime(TimeStamp, iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
  2894. log_amx("[CSGO Classy] This license has expired at %d.%d.%d. Contact renegade to renew the license", iDay, iMonth, iYear);
  2895. return _Fail();
  2896. }
  2897.  
  2898. _Fail()
  2899. {
  2900. ArrayDestroy(g_aRankName);
  2901. ArrayDestroy(g_aRankKills);
  2902. ArrayDestroy(g_aSkinWeaponID);
  2903. ArrayDestroy(g_aSkinName);
  2904. ArrayDestroy(g_aSkinModel);
  2905. ArrayDestroy(g_aSkinType);
  2906. ArrayDestroy(g_aSkinChance);
  2907. ArrayDestroy(g_aSkinCostMin);
  2908. ArrayDestroy(g_aDropSkin);
  2909. ArrayDestroy(g_aCraftSkin);
  2910. DisableHamForward(fw_S1);
  2911. DisableHamForward(fw_S2);
  2912. DisableHamForward(fw_K1);
  2913. DisableHamForward(fw_K2);
  2914. unregister_forward(122, fw_CUIC, MaxClients);
  2915. return 0;
  2916. }
  2917.  
  2918. public ev_NewRound()
  2919. {
  2920. if (g_bJackpotWork == true)
  2921. {
  2922. new Timer[32];
  2923. _FormatTime(Timer, 31, g_iJackpotClose);
  2924. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "JACKPOT_PLAY", Timer);
  2925. }
  2926. p_NextMap = get_cvar_pointer("amx_nextmap");
  2927. arrayset(g_iRoundKills, MaxClients, 33);
  2928. arrayset(g_bRoulettePlay, MaxClients, 33);
  2929. g_iPruneDays = get_pcvar_num(c_PruneDays);
  2930. g_iRespawnDelay = get_pcvar_num(c_RespawnDelay);
  2931. g_iDropChance = get_pcvar_num(c_DropChance);
  2932. g_iCraftCost = get_pcvar_num(c_CraftCost);
  2933. g_iTombolaCost = get_pcvar_num(c_TombolaCost);
  2934. g_iDropType = get_pcvar_num(c_DropType);
  2935. g_iKeyPrice = get_pcvar_num(c_KeyPrice);
  2936. g_iDustForTransform = get_pcvar_num(c_DustForTransform);
  2937. g_iReturnPercent = get_pcvar_num(c_ReturnPercent);
  2938. g_iHMinMoney = get_pcvar_num(c_HMinMoney);
  2939. g_iHMaxMoney = get_pcvar_num(c_HMaxMoney);
  2940. g_iKMinMoney = get_pcvar_num(c_KMinMoney);
  2941. g_iKMaxMoney = get_pcvar_num(c_KMaxMoney);
  2942. g_iHMinChance = get_pcvar_num(c_HMinChance);
  2943. g_iHMaxChance = get_pcvar_num(c_HMaxChance);
  2944. g_iShowDropCraft = get_pcvar_num(c_ShowDropCraft);
  2945. g_iKMinChance = get_pcvar_num(c_KMinChance);
  2946. g_iKMaxChance = get_pcvar_num(c_KMaxChance);
  2947. g_iAMinMoney = get_pcvar_num(c_AMinMoney);
  2948. g_iAMaxMoney = get_pcvar_num(c_AMaxMoney);
  2949. g_iRouletteMin = get_pcvar_num(c_RouletteMin);
  2950. g_iRouletteMax = get_pcvar_num(c_RouletteMax);
  2951. g_iCompetitive = get_pcvar_num(c_Competitive);
  2952. if (1 > g_iCompetitive)
  2953. {
  2954. return 0;
  2955. }
  2956. new var1;
  2957. if (g_bWarmUp || 0 < get_pcvar_num(c_Respawn))
  2958. {
  2959. return 0;
  2960. }
  2961. if (get_playersnum(MaxClients) < 2)
  2962. {
  2963. return 0;
  2964. }
  2965. new var2;
  2966. if (!IsHalf() && !IsLastRound() && 0 < g_iRoundNum)
  2967. {
  2968. new szNextMap[32];
  2969. get_pcvar_string(p_NextMap, szNextMap, "");
  2970. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "ROUND_INFO", g_iRoundNum, szNextMap);
  2971. }
  2972. if (IsLastRound())
  2973. {
  2974. set_pcvar_num(p_Freezetime, 10);
  2975. set_task(1065353216, "task_Map_End", MaxClients, 352876, MaxClients, 352880, MaxClients);
  2976. }
  2977. new var3;
  2978. if (IsHalf() && !g_bTeamSwap)
  2979. {
  2980. new Float:delay = 0.0;
  2981. new i = 1;
  2982. while (i <= g_iMaxPlayers)
  2983. {
  2984. new var4;
  2985. if (0 < i && 32 >= i)
  2986. {
  2987. delay = 0.2 * i;
  2988. set_task(delay, "task_Delayed_Swap", i + 8000, 352956, MaxClients, 352960, MaxClients);
  2989. }
  2990. i++;
  2991. }
  2992. server_cmd("exec %s/csgoclassy.cfg", g_szCfgDir);
  2993. set_task(1088421888, "task_Team_Swap", MaxClients, 353116, MaxClients, 353120, MaxClients);
  2994. g_iRoundNum = 15;
  2995. }
  2996. new var5;
  2997. if (!g_bWarmUp || !IsHalf())
  2998. {
  2999. g_iRoundNum = g_iRoundNum + 1;
  3000. }
  3001. return 0;
  3002. }
  3003.  
  3004. bool:IsHalf()
  3005. {
  3006. new var1;
  3007. if (!g_bTeamSwap && g_iRoundNum == 16)
  3008. {
  3009. return true;
  3010. }
  3011. return false;
  3012. }
  3013.  
  3014. bool:IsLastRound()
  3015. {
  3016. new var1;
  3017. if (g_bTeamSwap && g_iRoundNum == 31)
  3018. {
  3019. return true;
  3020. }
  3021. return false;
  3022. }
  3023.  
  3024.  
  3025. /* ERROR! class lysis.nodes.types.DReturn cannot be cast to class lysis.nodes.types.DJump (lysis.nodes.types.DReturn and lysis.nodes.types.DJump are in unnamed module of loader 'app') */
  3026. function "task_Delayed_Swap" (number 35)
  3027. public task_Team_Swap()
  3028. {
  3029. g_bTeamSwap = true;
  3030. set_pcvar_num(p_Freezetime, g_iFreezetime);
  3031. server_cmd("sv_restart 1");
  3032. return 0;
  3033. }
  3034.  
  3035. public task_Map_End()
  3036. {
  3037. emessage_begin(2, 30, 353176, MaxClients);
  3038. emessage_end();
  3039. changeMap();
  3040. return 0;
  3041. }
  3042.  
  3043. getNextMapName(szArg[], iMax)
  3044. {
  3045. new len = get_cvar_string("amx_nextmap", szArg, iMax);
  3046. if (ValidMap(szArg))
  3047. {
  3048. return len;
  3049. }
  3050. len = copy(szArg, iMax, g_nextMap);
  3051. set_cvar_string("amx_nextmap", g_nextMap);
  3052. return len;
  3053. }
  3054.  
  3055. public delayedChange(param[])
  3056. {
  3057. set_cvar_float("mp_chattime", floatsub(get_cvar_float("mp_chattime"), 1073741824));
  3058. server_cmd("changelevel %s", param);
  3059. return 0;
  3060. }
  3061.  
  3062. public changeMap()
  3063. {
  3064. new string[32];
  3065. new Float:chattime = get_cvar_float("mp_chattime");
  3066. set_cvar_float("mp_chattime", floatadd(1073741824, chattime));
  3067. new len = getNextMapName(string, 31) + 1;
  3068. set_task(chattime, "delayedChange", MaxClients, string, len, 353592, MaxClients);
  3069. return 0;
  3070. }
  3071.  
  3072. public ev_RoundWon_T()
  3073. {
  3074. client_cmd(MaxClients, "spk \"%s\"", g_szTWin);
  3075. if (IsHalf())
  3076. {
  3077. g_iFreezetime = get_pcvar_num(p_Freezetime);
  3078. set_pcvar_num(p_Freezetime, 10);
  3079. set_task(1065353216, "task_reset_kills", MaxClients, 353964, MaxClients, 353592, MaxClients);
  3080. }
  3081. return 0;
  3082. }
  3083.  
  3084. public ev_RoundWon_CT()
  3085. {
  3086. client_cmd(MaxClients, "spk \"%s\"", g_szCTWin);
  3087. if (IsHalf())
  3088. {
  3089. g_iFreezetime = get_pcvar_num(p_Freezetime);
  3090. set_pcvar_num(p_Freezetime, 10);
  3091. set_task(1065353216, "task_reset_kills", MaxClients, 353964, MaxClients, 353592, MaxClients);
  3092. }
  3093. return 0;
  3094. }
  3095.  
  3096. _GiveBonus(id, type)
  3097. {
  3098. if (!g_bLogged[id])
  3099. {
  3100. return 0;
  3101. }
  3102. new rmoney;
  3103. switch (type)
  3104. {
  3105. case 0:
  3106. {
  3107. rmoney = random_num(g_iAMinMoney, g_iAMaxMoney);
  3108. new var8 = g_iUserMoney[id];
  3109. var8 = var8[rmoney];
  3110. }
  3111. case 1:
  3112. {
  3113. new random = random_num(MaxClients, 3);
  3114. switch (random)
  3115. {
  3116. case 0:
  3117. {
  3118. new random_value = random_num(1, 5);
  3119. new var7 = g_iUserMoney[id];
  3120. var7 = var7[random_value];
  3121. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got\x04 %d money\x01 for being the \x04MVP of the round", random_value);
  3122. }
  3123. case 1:
  3124. {
  3125. new random_value = random_num(1, 2);
  3126. new var6 = g_iUserCases[id];
  3127. var6 = var6[random_value];
  3128. new var3;
  3129. if (random_value == 1)
  3130. {
  3131. var3 = 354612;
  3132. }
  3133. else
  3134. {
  3135. var3 = 354616;
  3136. }
  3137. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got\x04 %d case%s\x01 for being the \x04MVP of the round", random_value, var3);
  3138. }
  3139. case 2:
  3140. {
  3141. new random_value = random_num(1, 2);
  3142. new var5 = g_iUserKeys[id];
  3143. var5 = var5[random_value];
  3144. new var2;
  3145. if (random_value == 1)
  3146. {
  3147. var2 = 354892;
  3148. }
  3149. else
  3150. {
  3151. var2 = 354896;
  3152. }
  3153. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got\x04 %d key%s\x01 for being the \x04MVP of the round", random_value, var2);
  3154. }
  3155. case 3:
  3156. {
  3157. new random_value = random_num(1, 3);
  3158. new var4 = g_iUserScraps[id];
  3159. var4 = var4[random_value];
  3160. new var1;
  3161. if (random_value == 1)
  3162. {
  3163. var1 = 355180;
  3164. }
  3165. else
  3166. {
  3167. var1 = 355184;
  3168. }
  3169. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got\x04 %d scrap%s\x01 for being the \x04MVP of the round", random_value, var1);
  3170. }
  3171. default:
  3172. {
  3173. }
  3174. }
  3175. }
  3176. default:
  3177. {
  3178. return 0;
  3179. }
  3180. }
  3181. _SaveData(id);
  3182. return 0;
  3183. }
  3184.  
  3185. public logev_Restart_Round()
  3186. {
  3187. new iPlayers[32];
  3188. new iNum;
  3189. get_players(iPlayers, iNum, "ch", 351508);
  3190. new a;
  3191. while (a < iNum)
  3192. {
  3193. new i;
  3194. while (i < 50)
  3195. {
  3196. g_bShallUseStt[iPlayers[a]][i] = true;
  3197. i++;
  3198. }
  3199. a++;
  3200. }
  3201. remove_task(10000, MaxClients);
  3202. g_bJackpotWork = true;
  3203. g_bGiveAwayStarted = 0;
  3204. new timer = get_pcvar_num(c_JackpotTimer);
  3205. set_task(float(timer), "task_Jackpot", 10000, 355256, MaxClients, 355260, MaxClients);
  3206. g_iJackpotClose = get_systime(MaxClients) + timer;
  3207. return 0;
  3208. }
  3209.  
  3210. public logev_Game_Commencing()
  3211. {
  3212. new iPlayers[32];
  3213. new iNum;
  3214. get_players(iPlayers, iNum, "ch", 351508);
  3215. new a;
  3216. while (a < iNum)
  3217. {
  3218. new i;
  3219. while (i < 50)
  3220. {
  3221. g_bShallUseStt[iPlayers[a]][i] = true;
  3222. i++;
  3223. }
  3224. a++;
  3225. }
  3226. g_bTeamSwap = false;
  3227. g_iRoundNum = 0;
  3228. if (get_pcvar_num(c_Competitive) < 1)
  3229. {
  3230. return 0;
  3231. }
  3232. g_bWarmUp = true;
  3233. g_iStartMoney = get_pcvar_num(p_StartMoney);
  3234. set_pcvar_num(p_StartMoney, 16000);
  3235. g_iTimer = get_pcvar_num(c_WarmUpDuration);
  3236. set_task(1065353216, "task_WarmUp_CD", 9000, 355340, MaxClients, 355344, MaxClients);
  3237. set_task(1065353216, "task_reset_kills", MaxClients, 353964, MaxClients, 353592, MaxClients);
  3238. return 0;
  3239. }
  3240.  
  3241. public task_reset_kills(id)
  3242. {
  3243. g_iKills[id] = 0;
  3244. return 0;
  3245. }
  3246.  
  3247. public task_WarmUp_CD(task)
  3248. {
  3249. if (g_iTimer > 0)
  3250. {
  3251. set_hudmessage(47, 79, 79, -1082130432, 1060655596, MaxClients, MaxClients, 1066192077, MaxClients, MaxClients, -1);
  3252. new second[64];
  3253. if (1 < g_iTimer)
  3254. {
  3255. formatex(second, 63, "%L", 0, "TEXT_SECONDS");
  3256. }
  3257. else
  3258. {
  3259. formatex(second, 63, "%L", 0, "TEXT_SECOND");
  3260. }
  3261. ShowSyncHudMsg(MaxClients, g_WarmUpSync, "Warmup %d %s", g_iTimer, second);
  3262. }
  3263. else
  3264. {
  3265. g_iRoundNum = 1;
  3266. g_bWarmUp = false;
  3267. set_pcvar_num(p_StartMoney, g_iStartMoney);
  3268. remove_task(task, MaxClients);
  3269. server_cmd("sv_restart 1");
  3270. }
  3271. g_iTimer = g_iTimer + -1;
  3272. return 0;
  3273. }
  3274.  
  3275. public fw_FM_ClientUserInfoChanged(id)
  3276. {
  3277. new var1;
  3278. if ((0 < id && 32 >= id) || !is_user_connected(id))
  3279. {
  3280. return 0;
  3281. }
  3282. static szNewName[32];
  3283. static szOldName[32];
  3284. pev(id, 6, szOldName, 31);
  3285. if (szOldName[0])
  3286. {
  3287. get_user_info(id, "name", szNewName, "");
  3288. new var3;
  3289. if (!equal(szOldName, szNewName, MaxClients) && !g_IsChangeAllowed[id])
  3290. {
  3291. set_user_info(id, "name", szOldName);
  3292. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "CANT_CHANGE");
  3293. return 0;
  3294. }
  3295. }
  3296. return 0;
  3297. }
  3298.  
  3299. public Ham_Player_Spawn_Pre(id)
  3300. {
  3301. new var1;
  3302. if (!is_user_connected(id) && !is_user_alive(id))
  3303. {
  3304. return 0;
  3305. }
  3306. new Float:flNextAttack = get_pdata_float(id, 83, 5, 5);
  3307. set_pdata_float(id, 83, MaxClients, 5, 5);
  3308. new iPlayerItems = 368;
  3309. new iWeapon;
  3310. while (iPlayerItems <= 369)
  3311. {
  3312. iWeapon = get_pdata_cbase(id, iPlayerItems, 5, 5);
  3313. if (pev_valid(iWeapon))
  3314. {
  3315. set_pdata_int(iWeapon, 54, 1, NULL_STRING, 5);
  3316. ExecuteHamB(71, iWeapon);
  3317. }
  3318. iPlayerItems++;
  3319. }
  3320. set_pdata_float(id, 83, flNextAttack, 5, 5);
  3321. return 0;
  3322. }
  3323.  
  3324. public Ham_Player_Spawn_Post(id)
  3325. {
  3326. new var1;
  3327. if (!is_user_connected(id) && !is_user_alive(id))
  3328. {
  3329. return 0;
  3330. }
  3331. g_iMostDamage[id] = 0;
  3332. new iAmmoIndex = 1;
  3333. while (iAmmoIndex <= 10)
  3334. {
  3335. set_pdata_int(id, iAmmoIndex + 376, g_iMaxBpAmmo[iAmmoIndex], 5, 5);
  3336. iAmmoIndex++;
  3337. }
  3338. set_task(1045220557, "forceDeploy", id + 101, 353964, MaxClients, 353592, MaxClients);
  3339. return 0;
  3340. }
  3341.  
  3342. public forceDeploy(id)
  3343. {
  3344. if (!is_user_alive(id))
  3345. {
  3346. return 0;
  3347. }
  3348. static iEnt;
  3349. iEnt = get_pdata_cbase(id, m_pActiveItem, 5, 5);
  3350. new var1;
  3351. if (!iEnt || !pev_valid(iEnt))
  3352. {
  3353. return 0;
  3354. }
  3355. ExecuteHamB(66, iEnt);
  3356. return 0;
  3357. }
  3358.  
  3359. public Ham_Player_Killed_Pre(id)
  3360. {
  3361. new iActiveItem = get_pdata_cbase(id, 373, 5, MaxClients);
  3362. if (!pev_valid(iActiveItem))
  3363. {
  3364. return 0;
  3365. }
  3366. new imp = pev(iActiveItem, 82);
  3367. if (0 < imp)
  3368. {
  3369. return 0;
  3370. }
  3371. new iId = get_pdata_int(iActiveItem, 43, NULL_STRING, MaxClients);
  3372. if (1 << iId & 570425936)
  3373. {
  3374. return 0;
  3375. }
  3376. new skin = g_iUserSelectedSkin[id][iId];
  3377. new var1;
  3378. if (skin == -1)
  3379. {
  3380. var1 = 3812;
  3381. }
  3382. else
  3383. {
  3384. var1 = skin + 1;
  3385. }
  3386. set_pev(iActiveItem, 82, var1);
  3387. return 0;
  3388. }
  3389.  
  3390. public Ham_Player_Killed_Post(id, iKiller)
  3391. {
  3392. if (!is_user_connected(iKiller))
  3393. {
  3394. return 0;
  3395. }
  3396. new iUserWeaponId = get_user_weapon(iKiller, 0, 0);
  3397. new iUserSkinId = g_iUserSelectedSkin[iKiller][iUserWeaponId];
  3398. if (iUserSkinId != -1)
  3399. {
  3400. if (iKiller == id)
  3401. {
  3402. return 0;
  3403. }
  3404. new var1;
  3405. if (g_bIsWeaponStattrack[iKiller][iUserSkinId] && g_bShallUseStt[iKiller][iUserWeaponId])
  3406. {
  3407. if (!isUsingSomeoneElsesWeapon(iKiller, iUserWeaponId))
  3408. {
  3409. g_iUserStattrackKillCount[iKiller][iUserSkinId]++;
  3410. saveStattrackStatus(iKiller);
  3411. }
  3412. }
  3413. }
  3414. if (g_bWarmUp)
  3415. {
  3416. set_task(1065353216, "task_Respawn_Player", id + 6000, 356212, MaxClients, 356216, MaxClients);
  3417. return 0;
  3418. }
  3419. if (get_pcvar_num(c_Respawn) > 0)
  3420. {
  3421. set_hudmessage(MaxClients, 255, MaxClients, -1082130432, 1058642330, MaxClients, MaxClients, 1075838976, MaxClients, 1036831949, -1);
  3422. new second[64];
  3423. if (1 > g_iRespawnDelay)
  3424. {
  3425. formatex(second, 63, "%L", 0, "TEXT_SECOND");
  3426. }
  3427. else
  3428. {
  3429. formatex(second, 63, "%L", 0, "TEXT_SECONDS");
  3430. }
  3431. set_task(float(g_iRespawnDelay), "task_Respawn_Player", id + 6000, 356424, MaxClients, 356428, MaxClients);
  3432. }
  3433. return 0;
  3434. }
  3435.  
  3436. public task_Respawn_Player(task)
  3437. {
  3438. new id = task + -6000;
  3439. if (is_user_alive(id))
  3440. {
  3441. return 0;
  3442. }
  3443. switch (cs_get_user_team(id, 0))
  3444. {
  3445. case 3:
  3446. {
  3447. return 0;
  3448. }
  3449. default:
  3450. {
  3451. respawn_player_manually(id);
  3452. return 0;
  3453. }
  3454. }
  3455. }
  3456.  
  3457. public respawn_player_manually(id)
  3458. {
  3459. ExecuteHamB(98, id);
  3460. return 0;
  3461. }
  3462.  
  3463. public task_HUD(id)
  3464. {
  3465. if (!g_bLogged[id])
  3466. {
  3467. set_hudmessage(47, 79, 79, -1082130432, 1045220557, MaxClients, 1086324736, 1066192077, MaxClients, MaxClients, -1);
  3468. ShowSyncHudMsg(id, g_MsgSync, "%L", id, "NOT_LOGGED");
  3469. }
  3470. return 0;
  3471. }
  3472.  
  3473. public clcmd_say_menu(id)
  3474. {
  3475. if (g_bLogged[id] == true)
  3476. {
  3477. _ShowMainMenu(id);
  3478. return 0;
  3479. }
  3480. _ShowRegMenu(id);
  3481. return 0;
  3482. }
  3483.  
  3484. public clcmd_chooseteam(id)
  3485. {
  3486. clcmd_say_menu(id);
  3487. return 1;
  3488. }
  3489.  
  3490. _SaveData(id)
  3491. {
  3492. new var1;
  3493. if (!g_bLogged[id] && !g_szUserSavedPass[id][0])
  3494. {
  3495. return 0;
  3496. }
  3497. new Data[1728];
  3498. new infobuff[64];
  3499. new weapbuff[904];
  3500. new skinbuff[450];
  3501. formatex(infobuff, 63, "%s=%d,%d,%d,%d,%d,%d", g_szUserSavedPass[id], g_iUserMoney[id], g_iUserScraps[id], g_iUserKeys[id], g_iUserCases[id], g_iUserKills[id], g_iUserRank[id]);
  3502. formatex(weapbuff, 903, "%d", g_iUserSkins[id]);
  3503. new i = 1;
  3504. while (i < 450)
  3505. {
  3506. format(weapbuff, 903, "%s,%d", weapbuff, g_iUserSkins[id][i]);
  3507. i++;
  3508. }
  3509. formatex(skinbuff, 449, "%d", g_iUserSelectedSkin[id][1]);
  3510. i = 2;
  3511. while (i <= 30)
  3512. {
  3513. format(skinbuff, 449, "%s,%d", skinbuff, g_iUserSelectedSkin[id][i]);
  3514. i++;
  3515. }
  3516. formatex(Data, 1727, "%s*%s#%s", infobuff, weapbuff, skinbuff);
  3517. nvault_set(g_Vault, g_szName[id], Data);
  3518. saveStattrackStatus(id);
  3519. return 0;
  3520. }
  3521.  
  3522. _LoadData(id)
  3523. {
  3524. new Data[1728];
  3525. new Timestamp;
  3526. if (nvault_lookup(g_Vault, g_szName[id], Data, 1727, Timestamp) == 1)
  3527. {
  3528. new buffer[64];
  3529. new userData[6][16] = {
  3530. {
  3531. 0, 37, 100, 0, 37, 115, 44, 37, 100, 0, 115, 97, 118, 101, 83, 116
  3532. },
  3533. {
  3534. 97, 116, 116, 114, 97, 99, 107, 75, 105, 108, 108, 115, 0, 37, 100, 0
  3535. },
  3536. {
  3537. 37, 115, 44, 37, 100, 0, 108, 111, 97, 100, 83, 116, 97, 116, 116, 114
  3538. },
  3539. {
  3540. 97, 99, 107, 75, 105, 108, 108, 115, 0, 92, 114, 37, 115, 32, 92, 119
  3541. },
  3542. {
  3543. 37, 76, 0, 91, 67, 83, 71, 79, 32, 67, 108, 97, 115, 115, 121, 93
  3544. },
  3545. {
  3546. 0, 82, 69, 71, 95, 77, 69, 78, 85, 0, 114, 101, 103, 95, 109, 101
  3547. }
  3548. };
  3549. strtok(Data, g_szUserSavedPass[id], "NO_ACC_COM", Data, 1727, 61, MaxClients);
  3550. strtok(Data, buffer, 63, Data, 1727, 42, MaxClients);
  3551. new i;
  3552. while (i < 6)
  3553. {
  3554. strtok(buffer, userData[i], "NO_ACC_COM", buffer, "NO_ACC_COM", 44, MaxClients);
  3555. i++;
  3556. }
  3557. g_iUserMoney[id] = str_to_num(userData[0][userData]);
  3558. g_iUserScraps[id] = str_to_num(userData[1]);
  3559. g_iUserKeys[id] = str_to_num(userData[2]);
  3560. g_iUserCases[id] = str_to_num(userData[3]);
  3561. g_iUserKills[id] = str_to_num(userData[4]);
  3562. g_iUserRank[id] = str_to_num(userData[5]);
  3563. new skinbuff[450];
  3564. new temp[4];
  3565. strtok(Data, Data, 1727, skinbuff, 449, 35, MaxClients);
  3566. new j = 1;
  3567. while (j <= 50 && skinbuff[0] && strtok(skinbuff, temp, 3, skinbuff, 449, 44, MaxClients))
  3568. {
  3569. g_iUserSelectedSkin[id][j] = str_to_num(temp);
  3570. new iId = g_iUserSelectedSkin[id][j];
  3571. if (iId != -1)
  3572. {
  3573. new model[48];
  3574. ArrayGetString(g_aSkinModel, iId, model, 47);
  3575. cs_set_viewmodel_body(id, j, ArrayGetCell(g_aSkinBody, iId, MaxClients, MaxClients));
  3576. cs_set_modelformat(id, j, model);
  3577. }
  3578. else
  3579. {
  3580. cs_set_viewmodel_body(id, j, -1);
  3581. cs_set_modelformat(id, j, 356704);
  3582. }
  3583. j++;
  3584. }
  3585. new weaponData[8];
  3586. j = 0;
  3587. while (j < 450 && Data[0] && strtok(Data, weaponData, 7, Data, 1727, 44, MaxClients))
  3588. {
  3589. g_iUserSkins[id][j] = str_to_num(weaponData);
  3590. j++;
  3591. }
  3592. }
  3593. loadStattrackStatus(id);
  3594. return 0;
  3595. }
  3596.  
  3597. saveStattrackStatus(id)
  3598. {
  3599. new szVaultData[514];
  3600. formatex(szVaultData, 513, "%d", g_bIsWeaponStattrack[id]);
  3601. new i = 1;
  3602. while (i < 450)
  3603. {
  3604. format(szVaultData, 513, "%s,%d", szVaultData, g_bIsWeaponStattrack[id][i]);
  3605. i++;
  3606. }
  3607. nvault_set(g_nVaultStattrack, g_szName[id], szVaultData);
  3608. set_task(1065353216, "saveStattrackKills", id + 12, 353964, MaxClients, 353592, MaxClients);
  3609. return 0;
  3610. }
  3611.  
  3612. public saveStattrackKills(id)
  3613. {
  3614. new szVaultData[514];
  3615. formatex(szVaultData, 513, "%d", g_iUserStattrackKillCount[id]);
  3616. new i = 1;
  3617. while (i < 450)
  3618. {
  3619. format(szVaultData, 513, "%s,%d", szVaultData, g_iUserStattrackKillCount[id][i]);
  3620. i++;
  3621. }
  3622. nvault_set(g_nVaultStattrackKills, g_szName[id], szVaultData);
  3623. return 0;
  3624. }
  3625.  
  3626. loadStattrackStatus(id)
  3627. {
  3628. new Data[1728];
  3629. new Timestamp;
  3630. if (nvault_lookup(g_nVaultStattrack, g_szName[id], Data, 1727, Timestamp) == 1)
  3631. {
  3632. new weaponData[8];
  3633. new j;
  3634. while (j < 450 && Data[0] && strtok(Data, weaponData, 7, Data, 1727, 44, MaxClients))
  3635. {
  3636. g_bIsWeaponStattrack[id][j] = str_to_num(weaponData);
  3637. j++;
  3638. }
  3639. }
  3640. set_task(1065353216, "loadStattrackKills", id + 11, 353964, MaxClients, 353592, MaxClients);
  3641. return 0;
  3642. }
  3643.  
  3644. public loadStattrackKills(id)
  3645. {
  3646. new Data[1728];
  3647. new Timestamp;
  3648. if (nvault_lookup(g_nVaultStattrackKills, g_szName[id], Data, 1727, Timestamp) == 1)
  3649. {
  3650. new weaponData[8];
  3651. new j;
  3652. while (j < 450 && Data[0] && strtok(Data, weaponData, 7, Data, 1727, 44, MaxClients))
  3653. {
  3654. g_iUserStattrackKillCount[id][j] = str_to_num(weaponData);
  3655. j++;
  3656. }
  3657. }
  3658. return 0;
  3659. }
  3660.  
  3661. bool:IsRegistered(id)
  3662. {
  3663. new Data[1728];
  3664. new Timestamp;
  3665. if (nvault_lookup(g_Vault, g_szName[id], Data, 1727, Timestamp))
  3666. {
  3667. return true;
  3668. }
  3669. return false;
  3670. }
  3671.  
  3672. _ShowRegMenu(id)
  3673. {
  3674. if (get_pcvar_num(c_RegOpen) < 1)
  3675. {
  3676. return 0;
  3677. }
  3678. _LoadData(id);
  3679. new temp[64];
  3680. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "REG_MENU");
  3681. new menu = menu_create(temp, "reg_menu_handler", MaxClients);
  3682. new szItem[2];
  3683. szItem[1] = 0;
  3684. formatex(temp, 63, "\r%L \w%s", id, "REG_ACCOUNT", g_szName[id]);
  3685. szItem[0] = 0;
  3686. menu_additem(menu, temp, szItem, MaxClients, -1);
  3687. formatex(temp, 63, "\r%L \w%s\n", id, "REG_PASSWORD", g_szUserPassword[id]);
  3688. szItem[0] = 1;
  3689. menu_additem(menu, temp, szItem, MaxClients, -1);
  3690. if (!g_bLogged[id])
  3691. {
  3692. if (IsRegistered(id))
  3693. {
  3694. formatex(temp, 63, "\r%L", id, "REG_LOGIN");
  3695. szItem[0] = 3;
  3696. menu_additem(menu, temp, szItem, MaxClients, -1);
  3697. }
  3698. formatex(temp, 63, "\r%L", id, "REG_REGISTER");
  3699. szItem[0] = 4;
  3700. menu_additem(menu, temp, szItem, MaxClients, -1);
  3701. }
  3702. menu_display(id, menu, MaxClients, -1);
  3703. return 0;
  3704. }
  3705.  
  3706. public reg_menu_handler(id, menu, item)
  3707. {
  3708. if (item == -3)
  3709. {
  3710. menu_destroy(menu);
  3711. return 1;
  3712. }
  3713. new itemdata[2];
  3714. new dummy;
  3715. new index;
  3716. menu_item_getinfo(menu, item, dummy, itemdata, 1, 357448, MaxClients, dummy);
  3717. index = itemdata[0];
  3718. new pLen = strlen(g_szUserPassword[id]);
  3719. switch (index)
  3720. {
  3721. case 0:
  3722. {
  3723. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "CANT_CHANGE");
  3724. _ShowRegMenu(id);
  3725. }
  3726. case 1:
  3727. {
  3728. if (g_bLogged[id] != true)
  3729. {
  3730. client_cmd(id, "messagemode UserPassword");
  3731. }
  3732. }
  3733. case 2:
  3734. {
  3735. g_bLogged[id] = 0;
  3736. }
  3737. case 3:
  3738. {
  3739. if (0 >= strlen(g_szUserPassword[id]))
  3740. {
  3741. client_cmd(id, "messagemode UserPassword");
  3742. return 1;
  3743. }
  3744. if (!equal(g_szUserPassword[id], g_szUserSavedPass[id], MaxClients))
  3745. {
  3746. g_iUserPassFail[id]++;
  3747. if (g_iUserPassFail[id] >= 3)
  3748. {
  3749. new reason[32];
  3750. formatex(reason, "", "%L", id, "WRONG_PASS", 3);
  3751. server_cmd("kick #%d \"%s\"", get_user_userid(id), reason);
  3752. }
  3753. else
  3754. {
  3755. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "PASS_FAIL", g_iUserPassFail[id], 3);
  3756. _ShowRegMenu(id);
  3757. }
  3758. }
  3759. else
  3760. {
  3761. g_bLogged[id] = 1;
  3762. static iEnt;
  3763. iEnt = get_pdata_cbase(id, m_pActiveItem, 5, 5);
  3764. new var1;
  3765. if (!iEnt || !pev_valid(iEnt))
  3766. {
  3767. return 1;
  3768. }
  3769. ExecuteHamB(66, iEnt);
  3770. _ShowMainMenu(id);
  3771. _SaveData(id);
  3772. }
  3773. }
  3774. case 4:
  3775. {
  3776. if (pLen < 6)
  3777. {
  3778. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "REG_INSERT_PASS", 6);
  3779. _ShowRegMenu(id);
  3780. return 1;
  3781. }
  3782. _SaveData(id);
  3783. _ShowRegMenu(id);
  3784. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "REG_SUCCESS", g_szUserSavedPass[id]);
  3785. }
  3786. default:
  3787. {
  3788. }
  3789. }
  3790. menu_destroy(menu);
  3791. return 1;
  3792. }
  3793.  
  3794. public concmd_password(id)
  3795. {
  3796. if (g_bLogged[id] == true)
  3797. {
  3798. return 1;
  3799. }
  3800. new data[32];
  3801. read_args(data, "");
  3802. remove_quotes(data);
  3803. if (strlen(data) < 6)
  3804. {
  3805. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "REG_INSERT_PASS", 6);
  3806. client_cmd(id, "messagemode UserPassword");
  3807. return 1;
  3808. }
  3809. _ShowRegMenu(id);
  3810. return 1;
  3811. }
  3812.  
  3813. _ShowMainMenu(id)
  3814. {
  3815. new userRank = g_iUserRank[id];
  3816. new szRank[32];
  3817. ArrayGetString(g_aRankName, userRank, szRank, "");
  3818. new temp[96];
  3819. new menu_stats[96];
  3820. formatex(temp, 95, "\r%s \w%L", "[CSGO Classy]", id, "MENU_TITLE", g_iUserMoney[id]);
  3821. new menu = menu_create(temp, "main_menu_handler", MaxClients);
  3822. new szItem[2];
  3823. szItem[1] = 0;
  3824. formatex(temp, 95, "\w%L", id, "MENU_SKINS");
  3825. menu_additem(menu, temp, szItem, MaxClients, -1);
  3826. formatex(temp, 95, "\w%L", id, "MENU_OC");
  3827. menu_additem(menu, temp, szItem, MaxClients, -1);
  3828. if (g_bUserSell[id])
  3829. {
  3830. new szSell[32];
  3831. _GetItemName(g_iUserSellItem[id], szSell, 31);
  3832. new var1;
  3833. if (g_bPublishedStattrackSkin[id])
  3834. {
  3835. var1 = 358972;
  3836. }
  3837. else
  3838. {
  3839. var1 = 359036;
  3840. }
  3841. formatex(temp, 95, "\wMarket \r[%s%s]", var1, szSell);
  3842. }
  3843. else
  3844. {
  3845. formatex(temp, 95, "\w%L", id, "MENU_MARKET");
  3846. }
  3847. menu_additem(menu, temp, szItem, MaxClients, -1);
  3848. formatex(temp, 95, "\r%L", id, "MENU_CONTRACT");
  3849. menu_additem(menu, temp, szItem, MaxClients, -1);
  3850. formatex(temp, 95, "\r%L", id, "MENU_GIVEAWAY");
  3851. menu_additem(menu, temp, szItem, MaxClients, -1);
  3852. formatex(temp, 95, "\w%L", id, "MENU_DESTROY");
  3853. menu_additem(menu, temp, szItem, MaxClients, -1);
  3854. formatex(temp, 95, "\w%L\n", id, "MENU_GIFT");
  3855. menu_additem(menu, temp, szItem, MaxClients, -1);
  3856. formatex(menu_stats, 95, "\w%L", id, "MENU_STATS", szRank, g_iUserKills[id], ranks_names[rank[id]], xp[id], xp_num[level[id]]);
  3857. menu_addtext(menu, menu_stats, MaxClients);
  3858. formatex(temp, 95, "\w%L", id, "MENU_TRADE");
  3859. menu_additem(menu, temp, szItem, MaxClients, -1);
  3860. formatex(temp, 95, "\r%L", id, "MENU_GAMBLING");
  3861. menu_additem(menu, temp, szItem, MaxClients, -1);
  3862. formatex(temp, 95, "\w%L", id, "MENU_DAILY");
  3863. menu_additem(menu, temp, szItem, MaxClients, -1);
  3864. formatex(temp, 95, "\w%L", id, "MENU_QUESTS");
  3865. menu_additem(menu, temp, szItem, MaxClients, -1);
  3866. formatex(temp, 95, "\w%L\n\n\n", id, "MENU_CROSSHAIR");
  3867. menu_additem(menu, temp, szItem, MaxClients, -1);
  3868. menu_display(id, menu, MaxClients, -1);
  3869. return 0;
  3870. }
  3871.  
  3872. _GetItemName(item, temp[], len)
  3873. {
  3874. ArrayGetString(g_aSkinName, item, temp, len);
  3875. return 0;
  3876. }
  3877.  
  3878. public main_menu_handler(id, menu, item)
  3879. {
  3880. if (item == -3)
  3881. {
  3882. menu_destroy(menu);
  3883. return 1;
  3884. }
  3885. switch (item)
  3886. {
  3887. case 0:
  3888. {
  3889. g_iMenuToOpen[id] = 0;
  3890. _ShowSkinMenu(id);
  3891. }
  3892. case 1:
  3893. {
  3894. _ShowOpenCaseCraftMenu(id);
  3895. }
  3896. case 2:
  3897. {
  3898. g_iMenuToOpen[id] = 3;
  3899. _ShowMarketMenu(id);
  3900. }
  3901. case 3:
  3902. {
  3903. g_iMenuToOpen[id] = 1;
  3904. _ShowContractMenu(id);
  3905. }
  3906. case 4:
  3907. {
  3908. joinGiveaway(id);
  3909. }
  3910. case 5:
  3911. {
  3912. g_iMenuToOpen[id] = 4;
  3913. _ShowDustbinMenu(id);
  3914. }
  3915. case 6:
  3916. {
  3917. g_iMenuToOpen[id] = 5;
  3918. _ShowGiftMenu(id);
  3919. }
  3920. case 7:
  3921. {
  3922. g_iMenuToOpen[id] = 6;
  3923. _ShowTradeMenu(id);
  3924. }
  3925. case 8:
  3926. {
  3927. _ShowGamesMenu(id);
  3928. }
  3929. case 9:
  3930. {
  3931. _PreDailyReward(id);
  3932. }
  3933. case 10:
  3934. {
  3935. _QuestsMenu(id);
  3936. }
  3937. case 11:
  3938. {
  3939. select_crosshair(id);
  3940. }
  3941. default:
  3942. {
  3943. }
  3944. }
  3945. menu_destroy(menu);
  3946. return 1;
  3947. }
  3948.  
  3949. _QuestsMenu(id)
  3950. {
  3951. new Menu = menu_create("\r[CSGO Classy] \wQuests", "QuestsMenu_handler", MaxClients);
  3952. menu_additem(Menu, "You've Made Your Points \r[250 scraps and 500$] \n\dDeal 50000 damage points", 360304, MaxClients, -1);
  3953. menu_additem(Menu, "Cowboy Diplomacy \r[50 scraps and 100$]\n\dRescue 100 hostages", 360560, MaxClients, -1);
  3954. menu_additem(Menu, "Reloader \r[150 scraps and 250$]\n\dReload your weapons 1000 times", 360832, MaxClients, -1);
  3955. menu_additem(Menu, "Play Around \r[25 scraps and 50$]\n\dSpend 1 hour playing on the server", 361124, MaxClients, -1);
  3956. menu_additem(Menu, "I'll Be Back \r[50 scraps and 100$]\n\dConnect 100 times to the server", 361416, MaxClients, -1);
  3957. menu_additem(Menu, "I Like This Server \r[75 scraps and 125$]\n\dConnect 250 times to the server", 361728, MaxClients, -1);
  3958. menu_additem(Menu, "Half Way There \r[100 scraps and 150$]\n\dConnect 500 times to the server", 362028, MaxClients, -1);
  3959. menu_additem(Menu, "Ultimate Server Lover \r[125 scraps and 175$]\n\dConnect 1000 times to the server", 362360, MaxClients, -1);
  3960. menu_additem(Menu, "Baby Foot Steps \r[25 scraps and 50$]\n\dWalk for the first time on the server", 362680, MaxClients, -1);
  3961. menu_additem(Menu, "I'm Half Way There \r[35 scraps and 70$]\n\dWalk 5 kilometers on the server", "10", MaxClients, -1);
  3962. menu_additem(Menu, "Long Run \r[35 scraps and 100$]\n\dWalk 10 kilometers on the server", "11", MaxClients, -1);
  3963. menu_additem(Menu, "OMFG! That Was Close \r[125 scraps and 150$]\n\dDefuse the bomb with 0.5 seconds left", "12", MaxClients, -1);
  3964. menu_additem(Menu, "C4 Defuser \r[25 scraps and 50$]\n\dDefuse the bomb 50 times", "13", MaxClients, -1);
  3965. menu_additem(Menu, "That Was Easy \r[35 scraps and 65$]\n\dDefuse the bomb 100 times", "14", MaxClients, -1);
  3966. menu_additem(Menu, "Like A Game \r[50 scraps and 70$]\n\dDefuse the bomb 150 times", "15", MaxClients, -1);
  3967. menu_additem(Menu, "Master Of C4 \r[65 scraps and 85$]\n\dDefuse the bomb 200 times", "16", MaxClients, -1);
  3968. menu_additem(Menu, "Short Fuse \r[100 scraps and 125$]\n\dPlant the bomb in the first 25 second of the round start", "17", MaxClients, -1);
  3969. menu_additem(Menu, "Nothing Can Blow Up \r[85 scraps and 115$]\n\dDefuse the bomb 400 times", "18", MaxClients, -1);
  3970. menu_additem(Menu, "Boomala, Boomala! \r[45 scraps and 75$]\n\dPlant the bomb 100 times", "19", MaxClients, -1);
  3971. menu_additem(Menu, "C4 Killer \r[50 scraps and 75$]\n\dKill 30 enemies with the C4", "20", MaxClients, -1);
  3972. menu_additem(Menu, "Grenade Expert \r[100 scraps and 125$]\n\dKill 300 enemies with HE Grenade", "21", MaxClients, -1);
  3973. menu_additem(Menu, "Hat Trick \r[35 scraps and 40$]\n\dKill 3 enemies with one HE Grenade", "22", MaxClients, -1);
  3974. menu_additem(Menu, "Can You See? \r[15 scraps and 25$]\n\dKill 150 enemies while you are flashed", "23", MaxClients, -1);
  3975. menu_additem(Menu, "It's A Bit Smokey In Here \r[25 scraps and 25$]\n\dKill 150 enemies through the smoke", "24", MaxClients, -1);
  3976. menu_additem(Menu, "Ammo Conservation \r[35 scraps and 40$]\n\dKill two enemies with one bullet", "25", MaxClients, -1);
  3977. menu_additem(Menu, "BOOM! Headshot \r[65 scraps and 100$]\n\dKill 300 enemies with headshots", "26", MaxClients, -1);
  3978. menu_additem(Menu, "P250 Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the P250", "27", MaxClients, -1);
  3979. menu_additem(Menu, "SSG Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the SSG", "28", MaxClients, -1);
  3980. menu_additem(Menu, "XM-1014 Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the XM-1014", "29", MaxClients, -1);
  3981. menu_additem(Menu, "MAC-10 Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the MAC-10", "30", MaxClients, -1);
  3982. menu_additem(Menu, "AUG Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the AUG", "31", MaxClients, -1);
  3983. menu_additem(Menu, "Dual Berettas Expert \r[65 scraps and 80$]\n\dKill 100 enemies using the Dual Berettas", "32", MaxClients, -1);
  3984. menu_additem(Menu, "FiveSeven Expert \r[65 scraps and 80$]\n\dKill 100 enemies using the FiveSeven", "33", MaxClients, -1);
  3985. menu_additem(Menu, "UMP45 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the UMP-45", "34", MaxClients, -1);
  3986. menu_additem(Menu, "SG-550 Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the SG-550", "35", MaxClients, -1);
  3987. menu_additem(Menu, "Galil-AR Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the Galil-AR", "36", MaxClients, -1);
  3988. menu_additem(Menu, "Famas Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the Famas", "37", MaxClients, -1);
  3989. menu_additem(Menu, "USP-S Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the USP-S", "38", MaxClients, -1);
  3990. menu_additem(Menu, "Glock Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the Glock", "39", MaxClients, -1);
  3991. menu_additem(Menu, "AWP Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the AWP", "40", MaxClients, -1);
  3992. menu_additem(Menu, "MP7 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the MP7", "41", MaxClients, -1);
  3993. menu_additem(Menu, "M249 Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the M249", "42", MaxClients, -1);
  3994. menu_additem(Menu, "Nova Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the Nova", "43", MaxClients, -1);
  3995. menu_additem(Menu, "M4A1-S/M4A4 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the M4A1-S/M4A4", "44", MaxClients, -1);
  3996. menu_additem(Menu, "MP9 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the MP9", "45", MaxClients, -1);
  3997. menu_additem(Menu, "SG-553 Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the SG-553", "46", MaxClients, -1);
  3998. menu_additem(Menu, "Deagle Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the Deagle", "47", MaxClients, -1);
  3999. menu_additem(Menu, "SG-552 Expert \r[65 scraps and 80$]\n\dKill 500 enemies using the SG-552", "48", MaxClients, -1);
  4000. menu_additem(Menu, "AK-47 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the AK-47", "49", MaxClients, -1);
  4001. menu_additem(Menu, "Knife Expert \r[65 scraps and 80$]\n\dKill 200 enemies using the Knife", "50", MaxClients, -1);
  4002. menu_additem(Menu, "P90 Expert \r[65 scraps and 80$]\n\dKill 1000 enemies using the P90", "51", MaxClients, -1);
  4003. menu_additem(Menu, "Short Range Kill \r[65 scraps and 80$]\n\dKill an enemy from 1 and 5 meters", "52", MaxClients, -1);
  4004. menu_additem(Menu, "Nice Aim \r[65 scraps and 80$]\n\dKill an enemy from 6 and 50 meters", "53", MaxClients, -1);
  4005. menu_additem(Menu, "Long Range Kill \r[65 scraps and 80$]\n\dKill an enemy from 51 and 99 meters", "54", MaxClients, -1);
  4006. menu_additem(Menu, "Aim-Bot Time \r[65 scraps and 80$]\n\dKill an enemy from 100 and 150 meters", "55", MaxClients, -1);
  4007. menu_additem(Menu, "I Got The Power \r[65 scraps and 80$]\n\dKill an enemy from 151 and 300 meters", "56", MaxClients, -1);
  4008. menu_additem(Menu, "Killer Master \r[150 scraps and 250$]\n\dKill a total of 5000 enemies", "57", MaxClients, -1);
  4009. menu_additem(Menu, "God Of War \r[250 scraps and 450$]\n\dKill a total of 10000 enemies", "58", MaxClients, -1);
  4010. menu_additem(Menu, "Pistol Master \r[65 scraps and 80$]\n\dComplete all pistols firearms quests", "59", MaxClients, -1);
  4011. menu_additem(Menu, "Rifle Master \r[65 scraps and 80$]\n\dComplete all rifles firearms quests", "60", MaxClients, -1);
  4012. menu_additem(Menu, "Shotgun Master \r[65 scraps and 80$]\n\dComplete all shotguns firearms quests", "61", MaxClients, -1);
  4013. menu_additem(Menu, "Master At Arms \r[65 scraps and 80$]\n\dComplete all weapons quests and masteries", "62", MaxClients, -1);
  4014. menu_additem(Menu, "Fly Away \r[65 scraps and 80$]\n\dKill one enemy while he is in air", "63", MaxClients, -1);
  4015. menu_additem(Menu, "Spray And Pray \r[65 scraps and 80$]\n\dKill one enemy while you are fully-flashed", "64", MaxClients, -1);
  4016. menu_additem(Menu, "Stand Alone \r[65 scraps and 80$]\n\dDie 15 times as the last member in your team", "65", MaxClients, -1);
  4017. menu_additem(Menu, "One HP Hero \r[65 scraps and 80$]\n\dWhile you have 1 HP kill at least 3 enemies and win the round", "66", MaxClients, -1);
  4018. menu_additem(Menu, "Camp Fire \r[65 scraps and 80$]\n\dKill 3 enemies in the same area", "68", MaxClients, -1);
  4019. menu_additem(Menu, "Urban Designer \r[65 scraps and 80$]\n\dSpray graffities 300 times", "69", MaxClients, -1);
  4020. menu_setprop(Menu, 6, 1);
  4021. menu_setprop(Menu, 1, 4);
  4022. menu_display(id, Menu, MaxClients, -1);
  4023. return 0;
  4024. }
  4025.  
  4026. public QuestsMenu_handler(id, _QuestsMenu, item)
  4027. {
  4028. if (item == -3)
  4029. {
  4030. _ShowMainMenu(id);
  4031. menu_destroy(_QuestsMenu);
  4032. return 1;
  4033. }
  4034. return 1;
  4035. }
  4036.  
  4037. _PreDailyReward(id)
  4038. {
  4039. new iDay = nvault_get(g_iVault, g_szAuthId[id]);
  4040. new var1;
  4041. if (!iDay || g_iDay == iDay)
  4042. {
  4043. DailyReward(id);
  4044. }
  4045. else
  4046. {
  4047. client_print_color(id, id, "\x04[CSGO Classy]\x01 You \x04already\x01 got your \x04daily reward\x01, try again \x04tommorow");
  4048. _ShowMainMenu(id);
  4049. }
  4050. return 0;
  4051. }
  4052.  
  4053. public DailyReward(id)
  4054. {
  4055. new menu = menu_create("\r[CSGO Classy]\w Daily reward", "reward_handler", MaxClients);
  4056. menu_additem(menu, "Money\n\dGet money as your daily reward", 381156, MaxClients, -1);
  4057. menu_additem(menu, "Keys\n\dGet keys as your daily reward", 381156, MaxClients, -1);
  4058. menu_additem(menu, "Cases\n\dGet cases as your daily reward", 381156, MaxClients, -1);
  4059. menu_additem(menu, "Scraps\n\dGet scraps as your daily reward", 381156, MaxClients, -1);
  4060. menu_setprop(menu, 6, 1);
  4061. menu_display(id, menu, MaxClients, -1);
  4062. return 0;
  4063. }
  4064.  
  4065. public reward_handler(id, menu, item)
  4066. {
  4067. if (item == -3)
  4068. {
  4069. _ShowMainMenu(id);
  4070. menu_destroy(menu);
  4071. return 1;
  4072. }
  4073. new rand;
  4074. switch (item)
  4075. {
  4076. case 0:
  4077. {
  4078. rand = random_num(1, 100);
  4079. set_user_money(id, rand + get_user_money(id));
  4080. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got \x04%d $\x01 as your \x04daily reward", rand);
  4081. }
  4082. case 1:
  4083. {
  4084. rand = random_num(1, 5);
  4085. set_user_keys(id, rand + get_user_keys(id));
  4086. new var3;
  4087. if (rand == 1)
  4088. {
  4089. var3 = 382064;
  4090. }
  4091. else
  4092. {
  4093. var3 = 382068;
  4094. }
  4095. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got \x04%d key%s as your \x04daily reward", rand, var3);
  4096. }
  4097. case 2:
  4098. {
  4099. rand = random_num(1, 5);
  4100. set_user_cases(id, rand + get_user_cases(id));
  4101. new var2;
  4102. if (rand == 1)
  4103. {
  4104. var2 = 382304;
  4105. }
  4106. else
  4107. {
  4108. var2 = 382308;
  4109. }
  4110. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got \x04%d case%s as your \x04daily reward", rand, var2);
  4111. }
  4112. case 3:
  4113. {
  4114. rand = random_num(1, "");
  4115. set_user_scraps(id, rand + get_user_scraps(id));
  4116. new var1;
  4117. if (rand == 1)
  4118. {
  4119. var1 = 382548;
  4120. }
  4121. else
  4122. {
  4123. var1 = 382552;
  4124. }
  4125. client_print_color(id, id, "\x04[CSGO Classy]\x01 You got \x04%d scrap%s as your \x04daily reward", rand, var1);
  4126. }
  4127. default:
  4128. {
  4129. }
  4130. }
  4131. nvault_set(g_iVault, g_szAuthId[id], g_szDay);
  4132. menu_destroy(menu);
  4133. return 1;
  4134. }
  4135.  
  4136. _ShowContractMenu(id)
  4137. {
  4138. if (notAnySkins(id))
  4139. {
  4140. _ShowMainMenu(id);
  4141. return 1;
  4142. }
  4143. _ShowSkinsC(id);
  4144. return 1;
  4145. }
  4146.  
  4147. _ShowSkinsC(id)
  4148. {
  4149. if (notAnySkins(id))
  4150. {
  4151. _ShowMainMenu(id);
  4152. return 0;
  4153. }
  4154. _ShowSkinMenu(id);
  4155. return 0;
  4156. }
  4157.  
  4158. openContractMenu(id, iWeaponId)
  4159. {
  4160. new temp[64];
  4161. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  4162. new menu = menu_create(temp, "contract_handler", MaxClients);
  4163. new szItem[10];
  4164. szItem[1] = 0;
  4165. new szSkin[32];
  4166. new num;
  4167. new type[2];
  4168. new total;
  4169. new i;
  4170. new wid;
  4171. while (i < g_iSkinsNum)
  4172. {
  4173. num = g_iUserSkins[id][i];
  4174. if (num > 0)
  4175. {
  4176. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  4177. if (iWeaponId != wid)
  4178. {
  4179. i++;
  4180. }
  4181. ArrayGetString(g_aSkinName, i, szSkin, "");
  4182. ArrayGetString(g_aSkinType, i, type, 1);
  4183. new applied[64];
  4184. switch (type[0])
  4185. {
  4186. case 99:
  4187. {
  4188. applied = {0};
  4189. }
  4190. default:
  4191. {
  4192. applied = {0};
  4193. }
  4194. }
  4195. new bool:bFound;
  4196. new a;
  4197. while (a < 10)
  4198. {
  4199. if (g_iWeaponUsedInContract[id][a] == i)
  4200. {
  4201. bFound = true;
  4202. new var1;
  4203. if (bFound)
  4204. {
  4205. var1 = 382912;
  4206. }
  4207. else
  4208. {
  4209. var1 = 382960;
  4210. }
  4211. new var2;
  4212. if (g_bIsWeaponStattrack[id][i])
  4213. {
  4214. var2 = 382844;
  4215. }
  4216. else
  4217. {
  4218. var2 = 382908;
  4219. }
  4220. formatex(temp, 63, "\r%s\w%s \r[%d]%s", var2, szSkin, num, var1);
  4221. num_to_str(i, szItem, 9);
  4222. menu_additem(menu, temp, szItem, MaxClients, -1);
  4223. total++;
  4224. }
  4225. a++;
  4226. }
  4227. new var1;
  4228. if (bFound)
  4229. {
  4230. var1 = 382912;
  4231. }
  4232. else
  4233. {
  4234. var1 = 382960;
  4235. }
  4236. new var2;
  4237. if (g_bIsWeaponStattrack[id][i])
  4238. {
  4239. var2 = 382844;
  4240. }
  4241. else
  4242. {
  4243. var2 = 382908;
  4244. }
  4245. formatex(temp, 63, "\r%s\w%s \r[%d]%s", var2, szSkin, num, var1);
  4246. num_to_str(i, szItem, 9);
  4247. menu_additem(menu, temp, szItem, MaxClients, -1);
  4248. total++;
  4249. }
  4250. i++;
  4251. }
  4252. if (!total)
  4253. {
  4254. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  4255. num_to_str(2000, szItem, 9);
  4256. menu_additem(menu, temp, szItem, MaxClients, -1);
  4257. }
  4258. menu_display(id, menu, MaxClients, -1);
  4259. return 0;
  4260. }
  4261.  
  4262. public contract_handler(id, menu, item)
  4263. {
  4264. if (item == -3)
  4265. {
  4266. _ShowSkinsC(id);
  4267. menu_destroy(menu);
  4268. return 1;
  4269. }
  4270. new itemdata[5];
  4271. new dummy;
  4272. new index;
  4273. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 383152, MaxClients, dummy);
  4274. index = str_to_num(itemdata);
  4275. if (index == 2000)
  4276. {
  4277. _ShowMainMenu(id);
  4278. menu_destroy(menu);
  4279. return 1;
  4280. }
  4281. new Item[50];
  4282. if (g_iUserSellItem[id] == index)
  4283. {
  4284. client_print_color(id, id, "\x04%s\x01 You are \x04currently selling that skin\x01, you \x04can not\x01 use it", "[CSGO Classy]");
  4285. _ShowContractMenu(id);
  4286. menu_destroy(menu);
  4287. return 1;
  4288. }
  4289. new bool:bFound;
  4290. new i;
  4291. while (i < 10)
  4292. {
  4293. if (g_iWeaponUsedInContract[id][i] == index)
  4294. {
  4295. bFound = true;
  4296. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  4297. {
  4298. _ShowContractMenu(id);
  4299. menu_destroy(menu);
  4300. return 1;
  4301. }
  4302. if (bFound)
  4303. {
  4304. client_print_color(id, id, "\x04%s\x01 You are \x04currently using that skin in a contract\x01, you \x04can not\x01 use it", "[CSGO Classy]");
  4305. _ShowContractMenu(id);
  4306. menu_destroy(menu);
  4307. return 1;
  4308. }
  4309. if (g_bIsWeaponStattrack[id][index])
  4310. {
  4311. if (1 < g_iUserSkins[id][index])
  4312. {
  4313. askWhichType(id, index);
  4314. g_iAskType[id] = 6;
  4315. return 1;
  4316. }
  4317. g_bUsedSttC[id][index] = 1;
  4318. }
  4319. new var1 = g_iSkinsInContract[id];
  4320. var1++;
  4321. g_iWeaponUsedInContract[id][var1] = index;
  4322. if (g_bIsWeaponStattrack[id][index])
  4323. {
  4324. g_iUserChance[id] += 3;
  4325. }
  4326. else
  4327. {
  4328. g_iUserChance[id] += 1;
  4329. }
  4330. if (g_iSkinsInContract[id] == 10)
  4331. {
  4332. askToContinue(id);
  4333. }
  4334. else
  4335. {
  4336. _ShowContractMenu(id);
  4337. }
  4338. _GetItemName(index, Item, 49);
  4339. menu_destroy(menu);
  4340. return 1;
  4341. }
  4342. i++;
  4343. }
  4344. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  4345. {
  4346. _ShowContractMenu(id);
  4347. menu_destroy(menu);
  4348. return 1;
  4349. }
  4350. if (bFound)
  4351. {
  4352. client_print_color(id, id, "\x04%s\x01 You are \x04currently using that skin in a contract\x01, you \x04can not\x01 use it", "[CSGO Classy]");
  4353. _ShowContractMenu(id);
  4354. menu_destroy(menu);
  4355. return 1;
  4356. }
  4357. if (g_bIsWeaponStattrack[id][index])
  4358. {
  4359. if (1 < g_iUserSkins[id][index])
  4360. {
  4361. askWhichType(id, index);
  4362. g_iAskType[id] = 6;
  4363. return 1;
  4364. }
  4365. g_bUsedSttC[id][index] = 1;
  4366. }
  4367. new var1 = g_iSkinsInContract[id];
  4368. var1++;
  4369. g_iWeaponUsedInContract[id][var1] = index;
  4370. if (g_bIsWeaponStattrack[id][index])
  4371. {
  4372. g_iUserChance[id] += 3;
  4373. }
  4374. else
  4375. {
  4376. g_iUserChance[id] += 1;
  4377. }
  4378. if (g_iSkinsInContract[id] == 10)
  4379. {
  4380. askToContinue(id);
  4381. }
  4382. else
  4383. {
  4384. _ShowContractMenu(id);
  4385. }
  4386. _GetItemName(index, Item, 49);
  4387. menu_destroy(menu);
  4388. return 1;
  4389. }
  4390.  
  4391. askToContinue(id)
  4392. {
  4393. new menu = menu_create("\r[CSGO Classy] \wDo you confirm your Contract?", "confirmation_handler", MaxClients);
  4394. menu_additem(menu, "\rNo", 381156, MaxClients, -1);
  4395. menu_additem(menu, "\yYes", 381156, MaxClients, -1);
  4396. menu_display(id, menu, MaxClients, -1);
  4397. return 0;
  4398. }
  4399.  
  4400. public confirmation_handler(id, menu, item)
  4401. {
  4402. if (item == -3)
  4403. {
  4404. _ShowSkinsC(id);
  4405. menu_destroy(menu);
  4406. return 1;
  4407. }
  4408. if (item)
  4409. {
  4410. new iRandomSkin = random_num(MaxClients, g_iSkinsNum);
  4411. new name[48];
  4412. ArrayGetString(g_aSkinName, iRandomSkin, name, 47);
  4413. if (5 <= g_iUserSkins[id][iRandomSkin])
  4414. {
  4415. new iValue;
  4416. new iRandom = random_num(MaxClients, 1);
  4417. if (iRandom)
  4418. {
  4419. set_user_money(id, (iValue = random_num(5, 100)) + get_user_money(id));
  4420. }
  4421. else
  4422. {
  4423. set_user_scraps(id, (iValue = random_num(5, "")) + get_user_scraps(id));
  4424. }
  4425. new var1;
  4426. if (iRandom == 1)
  4427. {
  4428. var1 = 384488;
  4429. }
  4430. else
  4431. {
  4432. var1 = 384512;
  4433. }
  4434. client_print_color(id, id, "\x04%s\x01 Since you already have\x04 5 pieces of %s\x01 you got\x04 %d %s\x01 instead", "[CSGO Classy]", name, iValue, var1);
  4435. _ShowMainMenu(id);
  4436. return 1;
  4437. }
  4438. new bool:bStattrackStatus;
  4439. if (g_iUserChance[id] >= random_num(1, 100))
  4440. {
  4441. bStattrackStatus = true;
  4442. g_bIsWeaponStattrack[id][iRandomSkin] = true;
  4443. }
  4444. g_iUserSkins[id][iRandomSkin]++;
  4445. new var2;
  4446. if (bStattrackStatus)
  4447. {
  4448. var2 = 384756;
  4449. }
  4450. else
  4451. {
  4452. var2 = 384820;
  4453. }
  4454. client_print_color(id, id, "\x04[CSGO Classy]\x01 You \x04signed\x01 a contract and got \x04%s%s", var2, name);
  4455. new i;
  4456. new iIndex;
  4457. while (i < 10)
  4458. {
  4459. new var3 = g_iWeaponUsedInContract[id][i];
  4460. iIndex = var3;
  4461. g_iUserSkins[id][var3]--;
  4462. checkInstantDefault(id, iIndex);
  4463. i++;
  4464. }
  4465. _SaveData(id);
  4466. }
  4467. g_iSkinsInContract[id] = 0;
  4468. g_iUserChance[id] = 0;
  4469. new i;
  4470. while (i < 10)
  4471. {
  4472. g_iWeaponUsedInContract[id][i] = -1;
  4473. i++;
  4474. }
  4475. new i;
  4476. while (i < g_iSkinsNum)
  4477. {
  4478. g_bUsedSttC[id][i] = 0;
  4479. i++;
  4480. }
  4481. menu_destroy(menu);
  4482. return 1;
  4483. }
  4484.  
  4485. _ShowSkinMenu(id)
  4486. {
  4487. new iMenu = menu_create("\r[CSGO Classy] \wInventory\r", "skins_handler", MaxClients);
  4488. new szWeaponId[3];
  4489. num_to_str(29, szWeaponId, 2);
  4490. menu_additem(iMenu, "\rKnives", szWeaponId, MaxClients, -1);
  4491. num_to_str(28, szWeaponId, 2);
  4492. menu_additem(iMenu, "AK-47", szWeaponId, MaxClients, -1);
  4493. num_to_str(22, szWeaponId, 2);
  4494. menu_additem(iMenu, "M4A1-S and M4A4", szWeaponId, MaxClients, -1);
  4495. num_to_str(18, szWeaponId, 2);
  4496. menu_additem(iMenu, "AWP", szWeaponId, MaxClients, -1);
  4497. num_to_str(26, szWeaponId, 2);
  4498. menu_additem(iMenu, "Deagle", szWeaponId, MaxClients, -1);
  4499. num_to_str(17, szWeaponId, 2);
  4500. menu_additem(iMenu, "Glock-18", szWeaponId, MaxClients, -1);
  4501. num_to_str(16, szWeaponId, 2);
  4502. menu_additem(iMenu, "USP-S", szWeaponId, MaxClients, -1);
  4503. num_to_str(15, szWeaponId, 2);
  4504. menu_additem(iMenu, "Famas", szWeaponId, MaxClients, -1);
  4505. num_to_str(14, szWeaponId, 2);
  4506. menu_additem(iMenu, "Galil-AR", szWeaponId, MaxClients, -1);
  4507. num_to_str(NULL_VECTOR, szWeaponId, 2);
  4508. menu_additem(iMenu, "AUG", szWeaponId, MaxClients, -1);
  4509. num_to_str(3, szWeaponId, 2);
  4510. menu_additem(iMenu, "SSG", szWeaponId, MaxClients, -1);
  4511. num_to_str(27, szWeaponId, 2);
  4512. menu_additem(iMenu, "SG552", szWeaponId, MaxClients, -1);
  4513. num_to_str("", szWeaponId, 2);
  4514. menu_additem(iMenu, "MP7", szWeaponId, MaxClients, -1);
  4515. num_to_str(23, szWeaponId, 2);
  4516. menu_additem(iMenu, "MP9", szWeaponId, MaxClients, -1);
  4517. num_to_str(12, szWeaponId, 2);
  4518. menu_additem(iMenu, "UMP-45", szWeaponId, MaxClients, -1);
  4519. num_to_str(7, szWeaponId, 2);
  4520. menu_additem(iMenu, "MAC-10", szWeaponId, MaxClients, -1);
  4521. num_to_str(30, szWeaponId, 2);
  4522. menu_additem(iMenu, "P90", szWeaponId, MaxClients, -1);
  4523. num_to_str(1, szWeaponId, 2);
  4524. menu_additem(iMenu, "P250", szWeaponId, MaxClients, -1);
  4525. num_to_str(11, szWeaponId, 2);
  4526. menu_additem(iMenu, "FiveSeven", szWeaponId, MaxClients, -1);
  4527. num_to_str(10, szWeaponId, 2);
  4528. menu_additem(iMenu, "Dual Berettas", szWeaponId, MaxClients, -1);
  4529. num_to_str(5, szWeaponId, 2);
  4530. menu_additem(iMenu, "XM1014", szWeaponId, MaxClients, -1);
  4531. num_to_str(21, szWeaponId, 2);
  4532. menu_additem(iMenu, "Nova", szWeaponId, MaxClients, -1);
  4533. menu_display(id, iMenu, MaxClients, -1);
  4534. return 0;
  4535. }
  4536.  
  4537. public skins_handler(id, iMenu, iItem)
  4538. {
  4539. if (iItem == -3)
  4540. {
  4541. _ShowMainMenu(id);
  4542. menu_destroy(iMenu);
  4543. return 1;
  4544. }
  4545. new szData[6];
  4546. new szItemName[64];
  4547. new _access;
  4548. new item_callback;
  4549. menu_item_getinfo(iMenu, iItem, _access, szData, 5, szItemName, 63, item_callback);
  4550. new iData = str_to_num(szData);
  4551. g_iWeaponIdToCheck[id] = iData;
  4552. switch (g_iMenuToOpen[id])
  4553. {
  4554. case 0:
  4555. {
  4556. openInventory(id, iData);
  4557. }
  4558. case 1:
  4559. {
  4560. openContractMenu(id, iData);
  4561. }
  4562. case 2:
  4563. {
  4564. openCoinflipMenu(id, iData);
  4565. }
  4566. case 3:
  4567. {
  4568. openSellMenu(id, iData);
  4569. }
  4570. case 4:
  4571. {
  4572. openDustbinSkins(id, iData);
  4573. }
  4574. case 5:
  4575. {
  4576. openGiftMenu(id, iData);
  4577. }
  4578. case 6:
  4579. {
  4580. openTradeMenu(id, iData);
  4581. }
  4582. case 7:
  4583. {
  4584. openJackpotMenu(id, iData);
  4585. }
  4586. default:
  4587. {
  4588. }
  4589. }
  4590. return 1;
  4591. }
  4592.  
  4593. openInventory(id, iWeaponId)
  4594. {
  4595. new temp[64];
  4596. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  4597. new menu = menu_create(temp, "skin_menu_handler", MaxClients);
  4598. new szItem[10];
  4599. new bool:hasSkins;
  4600. new num;
  4601. new skinName[48];
  4602. new skintype[4];
  4603. new wid;
  4604. new apply;
  4605. new craft;
  4606. new i;
  4607. while (i < g_iSkinsNum)
  4608. {
  4609. num = g_iUserSkins[id][i];
  4610. if (0 < num)
  4611. {
  4612. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  4613. if (iWeaponId != wid)
  4614. {
  4615. i++;
  4616. }
  4617. ArrayGetString(g_aSkinName, i, skinName, 47);
  4618. ArrayGetString(g_aSkinType, i, skintype, 3);
  4619. if (equali(skintype, 385820, 3))
  4620. {
  4621. craft = 0;
  4622. }
  4623. else
  4624. {
  4625. craft = 1;
  4626. }
  4627. if (g_iUserSelectedSkin[id][wid] == i)
  4628. {
  4629. apply = 1;
  4630. }
  4631. else
  4632. {
  4633. apply = 0;
  4634. }
  4635. new crafted[64];
  4636. new applied[64];
  4637. switch (craft)
  4638. {
  4639. case 1:
  4640. {
  4641. crafted = {0};
  4642. }
  4643. default:
  4644. {
  4645. crafted = {0};
  4646. }
  4647. }
  4648. switch (apply)
  4649. {
  4650. case 1:
  4651. {
  4652. applied = {32,91,35,93,0};
  4653. }
  4654. default:
  4655. {
  4656. applied = {0};
  4657. }
  4658. }
  4659. new var1;
  4660. if (g_bIsWeaponStattrack[id][i])
  4661. {
  4662. var1 = 385932;
  4663. }
  4664. else
  4665. {
  4666. var1 = 385996;
  4667. }
  4668. formatex(temp, 63, "\r%s\w%s \r[%d]%s", var1, skinName, num, applied);
  4669. num_to_str(i, szItem, 9);
  4670. menu_additem(menu, temp, szItem, MaxClients, -1);
  4671. hasSkins = true;
  4672. }
  4673. i++;
  4674. }
  4675. if (!hasSkins)
  4676. {
  4677. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  4678. num_to_str(2000, szItem, 9);
  4679. menu_additem(menu, temp, szItem, MaxClients, -1);
  4680. }
  4681. menu_display(id, menu, MaxClients, -1);
  4682. return 0;
  4683. }
  4684.  
  4685. public skin_menu_handler(id, menu, item)
  4686. {
  4687. if (item == -3)
  4688. {
  4689. _ShowSkinMenu(id);
  4690. menu_destroy(menu);
  4691. return 1;
  4692. }
  4693. new itemdata[10];
  4694. new dummy;
  4695. new index;
  4696. menu_item_getinfo(menu, item, dummy, itemdata, 9, 386056, MaxClients, dummy);
  4697. index = str_to_num(itemdata);
  4698. switch (index)
  4699. {
  4700. case 2000:
  4701. {
  4702. _ShowMainMenu(id);
  4703. menu_destroy(menu);
  4704. return 1;
  4705. }
  4706. default:
  4707. {
  4708. new wid = ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients);
  4709. new var1;
  4710. if (wid == g_iWeaponIdToCheck[id] && notAnySkins(id))
  4711. {
  4712. _ShowSkinMenu(id);
  4713. menu_destroy(menu);
  4714. return 1;
  4715. }
  4716. new bool:SameSkin;
  4717. if (g_iUserSelectedSkin[id][wid] == index)
  4718. {
  4719. SameSkin = true;
  4720. }
  4721. if (isUsingSomeoneElsesWeapon(id, wid))
  4722. {
  4723. client_print_color(id, id, "\x04%s\x01 You \x04can not change\x01 your \x04skin\x01 while \x04holding\x01 someone \x04else's weapon", "[CSGO Classy]");
  4724. _ShowSkinMenu(id);
  4725. menu_destroy(menu);
  4726. return 1;
  4727. }
  4728. new sName[32];
  4729. ArrayGetString(g_aSkinName, index, sName, "");
  4730. if (!SameSkin)
  4731. {
  4732. if (g_bIsWeaponStattrack[id][index])
  4733. {
  4734. if (1 < g_iUserSkins[id][index])
  4735. {
  4736. askWhichType(id, index);
  4737. g_iAskType[id] = 0;
  4738. return 1;
  4739. }
  4740. }
  4741. g_iUserSelectedSkin[id][wid] = index;
  4742. new iPlayers[32];
  4743. new iNum;
  4744. new model[48];
  4745. get_players(iPlayers, iNum, "ach", 351508);
  4746. new i;
  4747. new iPlayer;
  4748. while (i < iNum)
  4749. {
  4750. iPlayer = iPlayers[i];
  4751. if (wid == get_user_weapon(iPlayer, 0, 0))
  4752. {
  4753. if (isUsingCertainPlayersSkin(iPlayer, id, wid))
  4754. {
  4755. ArrayGetString(g_aSkinModel, index, model, 47);
  4756. cs_set_viewmodel_body(iPlayer, wid, ArrayGetCell(g_aSkinBody, index, MaxClients, MaxClients));
  4757. cs_set_modelformat(iPlayer, wid, model);
  4758. }
  4759. }
  4760. i++;
  4761. }
  4762. if (wid == get_user_weapon(id, 0, 0))
  4763. {
  4764. ArrayGetString(g_aSkinModel, index, model, 47);
  4765. cs_set_viewmodel_body(id, wid, ArrayGetCell(g_aSkinBody, index, MaxClients, MaxClients));
  4766. cs_set_modelformat(id, wid, model);
  4767. }
  4768. _SaveData(id);
  4769. client_cmd(id, "spk items/gunpickup2.wav");
  4770. _ShowSkinMenu(id);
  4771. }
  4772. else
  4773. {
  4774. g_iUserSelectedSkin[id][wid] = -1;
  4775. if (wid == get_user_weapon(id, 0, 0))
  4776. {
  4777. set_pev(id, "bl", g_szDefaultSkinModel[wid]);
  4778. }
  4779. cs_set_viewmodel_body(id, wid, -1);
  4780. cs_set_modelformat(id, wid, 386540);
  4781. _SaveData(id);
  4782. client_cmd(id, "spk items/gunpickup2.wav");
  4783. _ShowSkinMenu(id);
  4784. }
  4785. menu_destroy(menu);
  4786. return 1;
  4787. }
  4788. }
  4789. }
  4790.  
  4791. _ShowCFMenu(id)
  4792. {
  4793. if (g_bCFAccept[id])
  4794. {
  4795. client_print_color(id, id, "\x04%s\x01 You \x04can not start\x01 another \x04Coinflip\x01 right now", "[CSGO Classy]");
  4796. return 0;
  4797. }
  4798. new temp[64];
  4799. formatex(temp, 63, "\r%s \wCoinflip", "[CSGO Classy]");
  4800. new menu = menu_create(temp, "cf_main_menu_handler", MaxClients);
  4801. new szItem[2];
  4802. szItem[1] = 0;
  4803. new bool:HasTarget;
  4804. new bool:HasItem;
  4805. new target = g_iCFTarget[id];
  4806. if (target)
  4807. {
  4808. formatex(temp, 63, "\w%L", id, "GIFT_TARGET", g_szName[target]);
  4809. szItem[0] = 0;
  4810. menu_additem(menu, temp, szItem, MaxClients, -1);
  4811. HasTarget = true;
  4812. }
  4813. else
  4814. {
  4815. formatex(temp, 63, "Choose receiver");
  4816. szItem[0] = 0;
  4817. menu_additem(menu, temp, szItem, MaxClients, -1);
  4818. }
  4819. if (!_IsGoodItem(g_iCFItem[id]))
  4820. {
  4821. formatex(temp, 63, "\rSelect a skin\n");
  4822. szItem[0] = 1;
  4823. menu_additem(menu, temp, szItem, MaxClients, -1);
  4824. }
  4825. else
  4826. {
  4827. new Item[32];
  4828. _GetItemName(g_iCFItem[id], Item, 31);
  4829. new var1;
  4830. if (g_bBettingCFStt[id])
  4831. {
  4832. var1 = 387360;
  4833. }
  4834. else
  4835. {
  4836. var1 = 387424;
  4837. }
  4838. formatex(temp, 63, "\r%s\w%s\n", var1, Item);
  4839. szItem[0] = 1;
  4840. menu_additem(menu, temp, szItem, MaxClients, -1);
  4841. HasItem = true;
  4842. }
  4843. new var2;
  4844. if (HasTarget && HasItem && !g_bCFActive[id])
  4845. {
  4846. formatex(temp, 63, "\rSend");
  4847. szItem[0] = 2;
  4848. menu_additem(menu, temp, szItem, MaxClients, -1);
  4849. }
  4850. new var3;
  4851. if (g_bCFActive[id] || g_bCFSecond[id])
  4852. {
  4853. formatex(temp, 63, "\rCancel");
  4854. szItem[0] = 3;
  4855. menu_additem(menu, temp, szItem, MaxClients, -1);
  4856. }
  4857. menu_display(id, menu, MaxClients, -1);
  4858. return 0;
  4859. }
  4860.  
  4861. public cf_main_menu_handler(id, menu, item)
  4862. {
  4863. if (item == -3)
  4864. {
  4865. if (g_bCFSecond[id])
  4866. {
  4867. clcmd_say_deny_cf(id);
  4868. }
  4869. _ShowGamesMenu(id);
  4870. menu_destroy(menu);
  4871. return 1;
  4872. }
  4873. new itemdata[2];
  4874. new dummy;
  4875. new index;
  4876. menu_item_getinfo(menu, item, dummy, itemdata, 1, 387492, MaxClients, dummy);
  4877. index = itemdata[0];
  4878. switch (index)
  4879. {
  4880. case 0:
  4881. {
  4882. new var4;
  4883. if (g_bCFActive[id] || g_bCFSecond[id])
  4884. {
  4885. _ShowCFMenu(id);
  4886. }
  4887. else
  4888. {
  4889. _SelectCFTarget(id);
  4890. }
  4891. }
  4892. case 1:
  4893. {
  4894. if (g_bCFActive[id])
  4895. {
  4896. _ShowCFMenu(id);
  4897. }
  4898. else
  4899. {
  4900. _SelectCFItem(id);
  4901. }
  4902. }
  4903. case 2:
  4904. {
  4905. new target = g_iCFTarget[id];
  4906. new _item = g_iCFItem[id];
  4907. new var2;
  4908. if (!g_bLogged[target] || (0 < target && 32 >= target))
  4909. {
  4910. _ResetCFData(id);
  4911. }
  4912. else
  4913. {
  4914. if (!_UserHasItem(id, _item))
  4915. {
  4916. g_iCFItem[id] = -1;
  4917. _ShowCFMenu(id);
  4918. return 1;
  4919. }
  4920. new var3;
  4921. if (g_bCFSecond[id] && !_UserHasItem(target, g_iCFItem[target]))
  4922. {
  4923. _ResetCFData(id);
  4924. _ResetCFData(target);
  4925. _ShowCFMenu(id);
  4926. return 1;
  4927. }
  4928. if (5 <= g_iUserSkins[target][_item])
  4929. {
  4930. client_print_color(id, id, "\x04%s %s\x01 can not receive that skin anymore, he already have\x04 5 out of 5", "[CSGO Classy]", g_szName[target], _item);
  4931. _ShowCFMenu(id);
  4932. return 1;
  4933. }
  4934. g_bCFActive[id] = 1;
  4935. g_iCFRequest[target] = id;
  4936. new szItem[50];
  4937. _GetItemName(g_iCFItem[id], szItem, 49);
  4938. if (g_bBettingCFStt[id])
  4939. {
  4940. format(szItem, 49, "StatTrack (TM) %s", szItem);
  4941. }
  4942. if (!g_bCFSecond[id])
  4943. {
  4944. g_bCFAccept[target] = 1;
  4945. client_print_color(target, target, "\x04%s %s\x01 wants to bet his\x04 %s\x01 in a \x04Coinflip", "[CSGO Classy]", g_szName[id], szItem);
  4946. client_print_color(target, target, "\x04%s\x01 Type \x04/coinflipaccept\x01 or \x04/coinflipdeny\x01 to either accept or deny", "[CSGO Classy]");
  4947. }
  4948. else
  4949. {
  4950. if (5 <= g_iUserSkins[id][_item])
  4951. {
  4952. client_print_color(id, id, "\x04%s %s\x01 can not receive that skin anymore, he already have\x04 5 out of 5", "[CSGO Classy]", g_szName[id], _item);
  4953. _ShowCFMenu(target);
  4954. return 1;
  4955. }
  4956. new yItem[50];
  4957. _GetItemName(g_iCFItem[target], yItem, 49);
  4958. if (g_bBettingCFStt[target])
  4959. {
  4960. format(yItem, 49, "StatTrack (TM) %s", yItem);
  4961. }
  4962. client_print_color(target, target, "\x04%s %s\x01 wants to bet his\x04 %s\x01 in a \x04Coinflip", "[CSGO Classy]", g_szName[id], szItem);
  4963. client_print_color(target, target, "\x04%s\x01 Type \x04/coinflipaccept\x01 or \x04/coinflipdeny\x01 to either accept or deny", "[CSGO Classy]");
  4964. g_bCFAccept[target] = 1;
  4965. }
  4966. }
  4967. }
  4968. case 3:
  4969. {
  4970. if (g_bCFSecond[id])
  4971. {
  4972. clcmd_say_deny_cf(id);
  4973. }
  4974. else
  4975. {
  4976. _ResetCFData(id);
  4977. }
  4978. _ShowCFMenu(id);
  4979. }
  4980. default:
  4981. {
  4982. }
  4983. }
  4984. menu_destroy(menu);
  4985. return 1;
  4986. }
  4987.  
  4988. _SelectCFTarget(id)
  4989. {
  4990. new temp[64];
  4991. formatex(temp, 63, "\r%s %L", "[CSGO Classy]", id, "GIFT_SELECT_TARGET");
  4992. new menu = menu_create(temp, "cf_menu_handler", MaxClients);
  4993. new szItem[10];
  4994. szItem[1] = 0;
  4995. new Pl[32];
  4996. new n;
  4997. new p;
  4998. get_players(Pl, n, 389708, 351508);
  4999. new total;
  5000. if (n)
  5001. {
  5002. new i;
  5003. while (i < n)
  5004. {
  5005. p = Pl[i];
  5006. if (g_bLogged[p])
  5007. {
  5008. if (!id == p)
  5009. {
  5010. szItem[0] = p;
  5011. menu_additem(menu, g_szName[p], szItem, MaxClients, -1);
  5012. total++;
  5013. }
  5014. }
  5015. i++;
  5016. }
  5017. }
  5018. if (!total)
  5019. {
  5020. formatex(temp, 63, "\r%L", id, "NO_REGISTERED_PLAYERS");
  5021. num_to_str(2000, szItem, 9);
  5022. menu_additem(menu, temp, szItem, MaxClients, -1);
  5023. }
  5024. menu_display(id, menu, MaxClients, -1);
  5025. return 0;
  5026. }
  5027.  
  5028. public cf_menu_handler(id, menu, item)
  5029. {
  5030. if (item == -3)
  5031. {
  5032. _ShowCFMenu(id);
  5033. menu_destroy(menu);
  5034. return 1;
  5035. }
  5036. new itemdata[2];
  5037. new dummy;
  5038. new index;
  5039. new name[32];
  5040. menu_item_getinfo(menu, item, dummy, itemdata, 1, name, "", dummy);
  5041. index = itemdata[0];
  5042. switch (index)
  5043. {
  5044. case 2000:
  5045. {
  5046. _ShowMainMenu(id);
  5047. menu_destroy(menu);
  5048. return 1;
  5049. }
  5050. default:
  5051. {
  5052. if (!g_iCFRequest[index])
  5053. {
  5054. g_iCFTarget[id] = index;
  5055. }
  5056. _ShowCFMenu(id);
  5057. menu_destroy(menu);
  5058. return 1;
  5059. }
  5060. }
  5061. }
  5062.  
  5063. _SelectCFItem(id)
  5064. {
  5065. _ShowSkinMenu(id);
  5066. return 0;
  5067. }
  5068.  
  5069. openCoinflipMenu(id, iWeaponId)
  5070. {
  5071. new temp[64];
  5072. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  5073. new menu = menu_create(temp, "cf_item_menu_handler", MaxClients);
  5074. new szItem[10];
  5075. szItem[1] = 0;
  5076. new total;
  5077. new szSkin[32];
  5078. new num;
  5079. new type[2];
  5080. new i;
  5081. new wid;
  5082. while (i < g_iSkinsNum)
  5083. {
  5084. num = g_iUserSkins[id][i];
  5085. if (num > 0)
  5086. {
  5087. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  5088. if (iWeaponId != wid)
  5089. {
  5090. i++;
  5091. }
  5092. ArrayGetString(g_aSkinName, i, szSkin, "");
  5093. ArrayGetString(g_aSkinType, i, type, 1);
  5094. new applied[64];
  5095. switch (type[0])
  5096. {
  5097. case 99:
  5098. {
  5099. applied = {0};
  5100. }
  5101. default:
  5102. {
  5103. applied = {0};
  5104. }
  5105. }
  5106. new var1;
  5107. if (g_bIsWeaponStattrack[id][i])
  5108. {
  5109. var1 = 390112;
  5110. }
  5111. else
  5112. {
  5113. var1 = 390176;
  5114. }
  5115. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  5116. num_to_str(i, szItem, 9);
  5117. menu_additem(menu, temp, szItem, MaxClients, -1);
  5118. total++;
  5119. }
  5120. i++;
  5121. }
  5122. if (!total)
  5123. {
  5124. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  5125. num_to_str(2000, szItem, 9);
  5126. menu_additem(menu, temp, szItem, MaxClients, -1);
  5127. }
  5128. menu_display(id, menu, MaxClients, -1);
  5129. return 0;
  5130. }
  5131.  
  5132. public cf_item_menu_handler(id, menu, item)
  5133. {
  5134. if (item == -3)
  5135. {
  5136. _ShowCFMenu(id);
  5137. menu_destroy(menu);
  5138. return 1;
  5139. }
  5140. new itemdata[5];
  5141. new dummy;
  5142. new index;
  5143. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 390236, MaxClients, dummy);
  5144. index = str_to_num(itemdata);
  5145. switch (index)
  5146. {
  5147. case 2000:
  5148. {
  5149. _ShowCFMenu(id);
  5150. menu_destroy(menu);
  5151. return 1;
  5152. }
  5153. default:
  5154. {
  5155. new var1;
  5156. if (g_iUserSellItem[id] == index && g_bUserSell[id])
  5157. {
  5158. new Item[50];
  5159. _GetItemName(g_iUserSellItem[id], Item, 49);
  5160. if (g_bPublishedStattrackSkin[id])
  5161. {
  5162. format(Item, 49, "StatTrack (TM) %s", Item);
  5163. }
  5164. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_INVALID_ITEM", Item);
  5165. _SelectCFItem(id);
  5166. }
  5167. else
  5168. {
  5169. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  5170. {
  5171. _SelectCFItem(id);
  5172. menu_destroy(menu);
  5173. return 1;
  5174. }
  5175. g_iCFItem[id] = index;
  5176. if (g_bIsWeaponStattrack[id][index])
  5177. {
  5178. if (1 < g_iUserSkins[id][index])
  5179. {
  5180. askWhichType(id, index);
  5181. g_iAskType[id] = 7;
  5182. return 1;
  5183. }
  5184. g_bBettingCFStt[id] = 1;
  5185. }
  5186. else
  5187. {
  5188. g_bBettingCFStt[id] = 0;
  5189. }
  5190. if (g_bCFAccept[id])
  5191. {
  5192. confirmationCoinflip(id);
  5193. }
  5194. _ShowCFMenu(id);
  5195. }
  5196. menu_destroy(menu);
  5197. return 1;
  5198. }
  5199. }
  5200. }
  5201.  
  5202. _ResetCFData(id)
  5203. {
  5204. g_bOneAccepted = false;
  5205. g_bCFActive[id] = 0;
  5206. g_bCFSecond[id] = 0;
  5207. g_bCFAccept[id] = 0;
  5208. g_iCFTarget[id] = 0;
  5209. g_iCFItem[id] = -1;
  5210. g_iCFRequest[id] = 0;
  5211. return 0;
  5212. }
  5213.  
  5214. public clcmd_say_accept_cf(id)
  5215. {
  5216. new sender = g_iCFRequest[id];
  5217. new var1;
  5218. if (1 > sender || 32 < sender)
  5219. {
  5220. return 1;
  5221. }
  5222. new var3;
  5223. if (!g_bLogged[sender] || (0 < sender && 32 >= sender))
  5224. {
  5225. _ResetCFData(id);
  5226. return 1;
  5227. }
  5228. new var4;
  5229. if (!g_bCFActive[sender] && g_iCFTarget[sender] == id)
  5230. {
  5231. _ResetCFData(id);
  5232. return 1;
  5233. }
  5234. g_iCFTarget[id] = sender;
  5235. g_iCFItem[id] = -1;
  5236. g_bCFSecond[id] = 1;
  5237. g_iMenuToOpen[id] = 2;
  5238. _SelectCFItem(id);
  5239. return 1;
  5240. }
  5241.  
  5242. public confirmationCoinflip(id)
  5243. {
  5244. new menu = menu_create("\r[CSGO Classy] \wDo you confirm the Coinflip?", "confirm_cf_handler", MaxClients);
  5245. menu_additem(menu, "\rNo", 381156, MaxClients, -1);
  5246. menu_additem(menu, "\yYes", 381156, MaxClients, -1);
  5247. menu_display(id, menu, MaxClients, -1);
  5248. return 0;
  5249. }
  5250.  
  5251. public confirm_cf_handler(id, menu, item)
  5252. {
  5253. if (item == -3)
  5254. {
  5255. _ResetCFData(id);
  5256. _ResetCFData(g_iCFRequest[id]);
  5257. _ShowCFMenu(id);
  5258. menu_destroy(menu);
  5259. return 1;
  5260. }
  5261. decl sender;
  5262. new var1;
  5263. if (g_bOneAccepted)
  5264. {
  5265. var1 = g_iCFTarget[id];
  5266. }
  5267. else
  5268. {
  5269. var1 = g_iCFRequest[id];
  5270. }
  5271. sender = var1;
  5272. if (item)
  5273. {
  5274. new sItem = g_iCFItem[sender];
  5275. new tItem = g_iCFItem[id];
  5276. new var2;
  5277. if (!_UserHasItem(id, tItem) || !_UserHasItem(sender, sItem))
  5278. {
  5279. _ResetCFData(id);
  5280. _ResetCFData(sender);
  5281. return 1;
  5282. }
  5283. new sItemsz[50];
  5284. new tItemsz[50];
  5285. _GetItemName(tItem, tItemsz, 49);
  5286. _GetItemName(sItem, sItemsz, 49);
  5287. if (!g_bOneAccepted)
  5288. {
  5289. client_print_color(id, id, "\x04%s\x01 You \x04accepted\x01 the \x04Coinflip\x01, wait for your \x04opponent to confirm", "[CSGO Classy]");
  5290. new var3;
  5291. if (g_bBettingCFStt[id])
  5292. {
  5293. var3 = 391408;
  5294. }
  5295. else
  5296. {
  5297. var3 = 391472;
  5298. }
  5299. client_print_color(sender, sender, "\x04%s %s\x01 \x04accepted\x01 the \x04Coinflip\x01, he is betting a\x04 %s%s", "[CSGO Classy]", g_szName[id], var3, tItemsz);
  5300. g_bOneAccepted = true;
  5301. confirmationCoinflip(sender);
  5302. menu_destroy(menu);
  5303. return 1;
  5304. }
  5305. if (random_num(MaxClients, 1) == 1)
  5306. {
  5307. g_iUserSkins[id][tItem]--;
  5308. g_iUserSkins[sender][tItem]++;
  5309. if (g_bBettingCFStt[id])
  5310. {
  5311. if (g_bIsWeaponStattrack[sender][tItem])
  5312. {
  5313. client_print_color(sender, sender, "\x04%s\x01 Since you already have\x04 StatTrack (TM) %s\x01, you got\x04 %s\x01 instead", "[CSGO Classy]", tItemsz, tItemsz);
  5314. }
  5315. else
  5316. {
  5317. format(tItemsz, 49, "StatTrack (TM) %s", tItemsz);
  5318. g_bIsWeaponStattrack[sender][tItem] = true;
  5319. }
  5320. g_bIsWeaponStattrack[id][tItem] = false;
  5321. g_iUserStattrackKillCount[id][tItem] = 0;
  5322. }
  5323. checkInstantDefault(id, tItem);
  5324. client_print_color(id, id, "\x04%s\x01 You lost the \x04Coinflip", "[CSGO Classy]");
  5325. client_print_color(sender, sender, "\x04%s\x01 You won the \x04Coinflip\x01 and got\x04 %s", "[CSGO Classy]", tItemsz);
  5326. }
  5327. else
  5328. {
  5329. g_iUserSkins[id][sItem]++;
  5330. g_iUserSkins[sender][sItem]--;
  5331. if (g_bBettingCFStt[sender])
  5332. {
  5333. if (g_bIsWeaponStattrack[id][sItem])
  5334. {
  5335. client_print_color(id, id, "\x04%s\x01 Since you already have\x04 StatTrack (TM) %s\x01, you got\x04 %s\x01 instead", "[CSGO Classy]", tItemsz, tItemsz);
  5336. }
  5337. else
  5338. {
  5339. format(sItemsz, 49, "StatTrack (TM) %s", sItemsz);
  5340. g_bIsWeaponStattrack[id][sItem] = true;
  5341. }
  5342. g_bIsWeaponStattrack[sender][sItem] = false;
  5343. g_iUserStattrackKillCount[sender][sItem] = 0;
  5344. }
  5345. checkInstantDefault(sender, sItem);
  5346. client_print_color(sender, sender, "\x04%s\x01 You lost the \x04Coinflip", "[CSGO Classy]");
  5347. client_print_color(id, id, "\x04%s\x01 You won the \x04Coinflip\x01 and got\x04 %s", "[CSGO Classy]", tItemsz);
  5348. }
  5349. }
  5350. else
  5351. {
  5352. client_print_color(id, id, "\x04%s\x01 You cancelled the \x04Coinflip", "[CSGO Classy]");
  5353. client_print_color(sender, sender, "\x04%s %s\x01 cancelled the \x04Coinflip", "[CSGO Classy]", g_szName[id]);
  5354. }
  5355. g_bBettingCFStt[id] = 0;
  5356. g_bBettingCFStt[sender] = 0;
  5357. _ResetCFData(id);
  5358. _ResetCFData(sender);
  5359. _SaveData(id);
  5360. _SaveData(sender);
  5361. return 1;
  5362. }
  5363.  
  5364. public clcmd_say_deny_cf(id)
  5365. {
  5366. new sender = g_iCFRequest[id];
  5367. new var1;
  5368. if (sender < 1 || sender > 32)
  5369. {
  5370. return 1;
  5371. }
  5372. new var3;
  5373. if (!g_bLogged[sender] || (0 < sender && 32 >= sender))
  5374. {
  5375. _ResetCFData(id);
  5376. return 1;
  5377. }
  5378. new var4;
  5379. if (!g_bCFActive[sender] && g_iCFTarget[sender] == id)
  5380. {
  5381. _ResetCFData(id);
  5382. return 1;
  5383. }
  5384. _ResetCFData(id);
  5385. _ResetCFData(sender);
  5386. client_print_color(sender, sender, "\x04%s %s\x01 denied your \x04Coinflip", "[CSGO Classy]", g_szName[id]);
  5387. client_print_color(id, id, "\x04%s\x01 You have denied\x04 %s's\x01 \x04Coinflip", "[CSGO Classy]", g_szName[sender]);
  5388. return 1;
  5389. }
  5390.  
  5391. askWhichType(id, index)
  5392. {
  5393. new iMenu = menu_create("Use StatTrack (TM)?", "ask_handler", MaxClients);
  5394. new szIndex[5];
  5395. num_to_str(index, szIndex, NULL_STRING);
  5396. menu_additem(iMenu, "\rNo", szIndex, MaxClients, -1);
  5397. menu_additem(iMenu, "\yYes", szIndex, MaxClients, -1);
  5398. menu_display(id, iMenu, MaxClients, -1);
  5399. return 0;
  5400. }
  5401.  
  5402. public ask_handler(id, menu, item)
  5403. {
  5404. if (item == -3)
  5405. {
  5406. _ShowSkinMenu(id);
  5407. menu_destroy(menu);
  5408. return 1;
  5409. }
  5410. new itemdata[5];
  5411. new dummy;
  5412. new index;
  5413. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 393988, MaxClients, dummy);
  5414. index = str_to_num(itemdata);
  5415. new wid = ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients);
  5416. switch (g_iAskType[id])
  5417. {
  5418. case 0:
  5419. {
  5420. g_bShallUseStt[id][wid] = item;
  5421. g_iUserSelectedSkin[id][wid] = index;
  5422. new iPlayers[32];
  5423. new iNum;
  5424. new model[48];
  5425. get_players(iPlayers, iNum, "ach", 351508);
  5426. new i;
  5427. new iPlayer;
  5428. while (i < iNum)
  5429. {
  5430. iPlayer = iPlayers[i];
  5431. if (wid == get_user_weapon(iPlayer, 0, 0))
  5432. {
  5433. if (isUsingCertainPlayersSkin(iPlayer, id, wid))
  5434. {
  5435. ArrayGetString(g_aSkinModel, index, model, 47);
  5436. cs_set_viewmodel_body(iPlayer, wid, ArrayGetCell(g_aSkinBody, index, MaxClients, MaxClients));
  5437. cs_set_modelformat(iPlayer, wid, model);
  5438. }
  5439. }
  5440. i++;
  5441. }
  5442. if (wid == get_user_weapon(id, 0, 0))
  5443. {
  5444. ArrayGetString(g_aSkinModel, index, model, 47);
  5445. cs_set_viewmodel_body(id, wid, ArrayGetCell(g_aSkinBody, index, MaxClients, MaxClients));
  5446. cs_set_modelformat(id, wid, model);
  5447. }
  5448. client_cmd(id, "spk items/gunpickup2.wav");
  5449. _ShowSkinMenu(id);
  5450. }
  5451. case 1:
  5452. {
  5453. g_bPublishedStattrackSkin[id] = item;
  5454. new szItem[32];
  5455. _GetItemName(index, szItem, 31);
  5456. if (g_bPublishedStattrackSkin[id])
  5457. {
  5458. client_print_color(id, id, "\x04%s\x01 You selected\x04 StatTrack (TM) %s", "[CSGO Classy]", szItem);
  5459. client_print_color(id, id, "\x04%s\x01 You have to \x04type a price\x01 for your \x04StatTrack (TM) %s", "[CSGO Classy]", szItem);
  5460. }
  5461. else
  5462. {
  5463. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_SELECT", szItem);
  5464. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_SET_PRICE", szItem);
  5465. }
  5466. client_cmd(id, "messagemode SkinPrice");
  5467. }
  5468. case 2:
  5469. {
  5470. g_bGiftingStt[id] = item;
  5471. new szItem[32];
  5472. _GetItemName(index, szItem, 31);
  5473. if (g_bGiftingStt[id])
  5474. {
  5475. client_print_color(id, id, "\x04%s\x01 You selected\x04 StatTrack (TM) %s", "[CSGO Classy]", szItem);
  5476. }
  5477. else
  5478. {
  5479. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "GIFT_YOUR_GIFT", szItem);
  5480. }
  5481. _ShowGiftMenu(id);
  5482. }
  5483. case 3:
  5484. {
  5485. g_bDestroyStt[id] = item;
  5486. destroySkin(id, index);
  5487. _ShowDustbinMenu(id);
  5488. }
  5489. case 4:
  5490. {
  5491. g_bTradingStt[id] = item;
  5492. new szItem[32];
  5493. _GetItemName(index, szItem, 31);
  5494. if (g_bTradingStt[id])
  5495. {
  5496. client_print_color(id, id, "\x04%s\x01 You selected\x04 StatTrack (TM) %s", "[CSGO Classy]", szItem);
  5497. _ShowTradeMenu(id);
  5498. }
  5499. else
  5500. {
  5501. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_ITEM", szItem);
  5502. _ShowTradeMenu(id);
  5503. }
  5504. }
  5505. case 5:
  5506. {
  5507. g_bJackpotStt[id] = item;
  5508. _ShowJackpotMenu(id);
  5509. }
  5510. case 6:
  5511. {
  5512. g_bUsedSttC[id][index] = item;
  5513. new var1 = g_iSkinsInContract[id];
  5514. var1++;
  5515. g_iWeaponUsedInContract[id][var1] = index;
  5516. if (g_bIsWeaponStattrack[id][index])
  5517. {
  5518. g_iUserChance[id] += 3;
  5519. }
  5520. else
  5521. {
  5522. g_iUserChance[id] += 1;
  5523. }
  5524. if (g_iSkinsInContract[id] == 10)
  5525. {
  5526. askToContinue(id);
  5527. }
  5528. else
  5529. {
  5530. _ShowContractMenu(id);
  5531. }
  5532. }
  5533. case 7:
  5534. {
  5535. g_bBettingCFStt[id] = item;
  5536. g_iCFItem[id] = index;
  5537. if (g_bCFAccept[id])
  5538. {
  5539. confirmationCoinflip(id);
  5540. }
  5541. else
  5542. {
  5543. _ShowCFMenu(id);
  5544. }
  5545. }
  5546. default:
  5547. {
  5548. }
  5549. }
  5550. _SaveData(id);
  5551. menu_destroy(menu);
  5552. return 1;
  5553. }
  5554.  
  5555. public Ham_Grenade_PA(ent)
  5556. {
  5557. if (!pev_valid(ent) == 2)
  5558. {
  5559. return 0;
  5560. }
  5561. get_pdata_cbase(ent, 41, NULL_STRING, 5);
  5562. ShortThrow = false;
  5563. return 0;
  5564. }
  5565.  
  5566. public Ham_Grenade_SA(ent)
  5567. {
  5568. if (!pev_valid(ent) == 2)
  5569. {
  5570. return 0;
  5571. }
  5572. get_pdata_cbase(ent, 41, NULL_STRING, 5);
  5573. ExecuteHamB(87, ent);
  5574. ShortThrow = true;
  5575. return 0;
  5576. }
  5577.  
  5578. public grenade_throw(id, ent, csw)
  5579. {
  5580. new var3;
  5581. if (!pev_valid(ent) || ((0 < id && 32 >= id) || !is_user_connected(id)))
  5582. {
  5583. return 0;
  5584. }
  5585. switch (csw)
  5586. {
  5587. case 4:
  5588. {
  5589. new var4 = g_szNadeModels;
  5590. engfunc(2, ent, var4[0][var4]);
  5591. }
  5592. case 9:
  5593. {
  5594. engfunc(2, ent, g_szNadeModels[2]);
  5595. }
  5596. case 25:
  5597. {
  5598. engfunc(2, ent, g_szNadeModels[1]);
  5599. }
  5600. default:
  5601. {
  5602. }
  5603. }
  5604. if (csw == 25)
  5605. {
  5606. set_pev(ent, 51, floatadd(1065353216, get_gametime()));
  5607. }
  5608. if (!ShortThrow)
  5609. {
  5610. return 0;
  5611. }
  5612. new Float:grenadeVelocity[3] = 0.0;
  5613. pev(ent, "USAGE", grenadeVelocity);
  5614. xs_vec_mul_scalar(grenadeVelocity, 0.5, grenadeVelocity);
  5615. set_pev(ent, "USAGE", grenadeVelocity);
  5616. return 0;
  5617. }
  5618.  
  5619. public Ham_Item_Deploy_Post(weapon_ent)
  5620. {
  5621. new owner = fm_cs_get_weapon_ent_owner(weapon_ent);
  5622. if (!is_user_alive(owner))
  5623. {
  5624. return 1;
  5625. }
  5626. new weaponid = cs_get_weapon_id(weapon_ent);
  5627. if (weaponid == 6)
  5628. {
  5629. return 1;
  5630. }
  5631. new var1;
  5632. if (!g_bLogged[owner] && g_szDefaultSkinModel[weaponid][0])
  5633. {
  5634. set_pev(owner, "bl", g_szDefaultSkinModel[weaponid]);
  5635. return 1;
  5636. }
  5637. new userskin = g_iUserSelectedSkin[owner][weaponid];
  5638. if (userskin != -1)
  5639. {
  5640. if (g_iUserSkins[owner][userskin] < 1)
  5641. {
  5642. g_iUserSelectedSkin[owner][weaponid] = -1;
  5643. userskin = -1;
  5644. }
  5645. }
  5646. new imp = pev(weapon_ent, 82);
  5647. new model[48];
  5648. if (0 < imp)
  5649. {
  5650. if (isUsingSomeoneElsesWeapon(owner, weaponid))
  5651. {
  5652. if (g_iUserSelectedSkin[getOriginalOwnerID(owner, weaponid)][weaponid] == -1)
  5653. {
  5654. set_pev(owner, "bl", g_szDefaultSkinModel[weaponid]);
  5655. }
  5656. else
  5657. {
  5658. new iIndex = g_iUserSelectedSkin[getOriginalOwnerID(owner, weaponid)][weaponid];
  5659. ArrayGetString(g_aSkinModel, iIndex, model, 47);
  5660. new sName[48];
  5661. ArrayGetString(g_aSkinName, iIndex, sName, 47);
  5662. g_bUsingM4A4[owner] = containi(sName, "M4A4") != -1;
  5663. new iBodyValue = ArrayGetCell(g_aSkinBody, iIndex, MaxClients, MaxClients);
  5664. if (iBodyValue != -1)
  5665. {
  5666. cs_set_viewmodel_body(owner, weaponid, iBodyValue);
  5667. cs_set_modelformat(owner, weaponid, model);
  5668. }
  5669. else
  5670. {
  5671. set_pev(owner, "bl", model);
  5672. }
  5673. }
  5674. }
  5675. else
  5676. {
  5677. if (imp != 3812)
  5678. {
  5679. new iIndex = imp + -1;
  5680. ArrayGetString(g_aSkinModel, iIndex, model, 47);
  5681. new sName[48];
  5682. ArrayGetString(g_aSkinName, iIndex, sName, 47);
  5683. g_bUsingM4A4[owner] = containi(sName, "M4A4") != -1;
  5684. new iBodyValue = ArrayGetCell(g_aSkinBody, iIndex, MaxClients, MaxClients);
  5685. if (iBodyValue != -1)
  5686. {
  5687. cs_set_viewmodel_body(owner, weaponid, iBodyValue);
  5688. cs_set_modelformat(owner, weaponid, model);
  5689. }
  5690. else
  5691. {
  5692. set_pev(owner, "bl", model);
  5693. }
  5694. }
  5695. set_pev(owner, "bl", g_szDefaultSkinModel[weaponid]);
  5696. }
  5697. }
  5698. else
  5699. {
  5700. if (userskin == -1)
  5701. {
  5702. if (g_szDefaultSkinModel[weaponid][0])
  5703. {
  5704. set_pev(owner, "bl", g_szDefaultSkinModel[weaponid]);
  5705. }
  5706. }
  5707. ArrayGetString(g_aSkinModel, userskin, model, 47);
  5708. new sName[48];
  5709. ArrayGetString(g_aSkinName, userskin, sName, 47);
  5710. g_bUsingM4A4[owner] = containi(sName, "M4A4") != -1;
  5711. new iBodyValue = ArrayGetCell(g_aSkinBody, userskin, MaxClients, MaxClients);
  5712. if (iBodyValue != -1)
  5713. {
  5714. cs_set_viewmodel_body(owner, weaponid, iBodyValue);
  5715. cs_set_modelformat(owner, weaponid, model);
  5716. }
  5717. else
  5718. {
  5719. set_pev(owner, "bl", model);
  5720. }
  5721. }
  5722. return 1;
  5723. }
  5724.  
  5725. fm_cs_get_weapon_ent_owner(ent)
  5726. {
  5727. if (pev_valid(ent) != 2)
  5728. {
  5729. return -1;
  5730. }
  5731. return get_pdata_cbase(ent, 41, NULL_STRING, 5);
  5732. }
  5733.  
  5734. public Ham_Item_Can_Drop(ent)
  5735. {
  5736. if (pev_valid(ent) != 2)
  5737. {
  5738. return 0;
  5739. }
  5740. new weapon = get_pdata_int(ent, 43, NULL_STRING, 5);
  5741. new var1;
  5742. if (weapon <= 0 || weapon > 30)
  5743. {
  5744. return 0;
  5745. }
  5746. if (1 << weapon & 570425936)
  5747. {
  5748. return 0;
  5749. }
  5750. new imp = pev(ent, 82);
  5751. new id = get_pdata_cbase(ent, 41, NULL_STRING, 5);
  5752. if (imp > 0)
  5753. {
  5754. return 0;
  5755. }
  5756. if (!is_user_connected(id))
  5757. {
  5758. return 0;
  5759. }
  5760. new skin = g_iUserSelectedSkin[id][weapon];
  5761. new var2;
  5762. if (skin == -1)
  5763. {
  5764. var2 = 3812;
  5765. }
  5766. else
  5767. {
  5768. var2 = skin + 1;
  5769. }
  5770. set_pev(ent, 82, var2);
  5771. return 0;
  5772. }
  5773.  
  5774. _ShowOpenCaseCraftMenu(id)
  5775. {
  5776. new temp[96];
  5777. formatex(temp, 95, "\r%s \w%L", "[CSGO Classy]", id, "CRAFT_MENU");
  5778. new menu = menu_create(temp, "oc_craft_menu_handler", MaxClients);
  5779. new szItem[2];
  5780. szItem[1] = 0;
  5781. formatex(temp, 95, "\w%L \r[%L]\n", id, "OPENCASE", id, "OPENCASE_CK", g_iUserCases[id], g_iUserKeys[id]);
  5782. szItem[0] = 0;
  5783. menu_additem(menu, temp, szItem, MaxClients, -1);
  5784. if (g_iDropType > 0)
  5785. {
  5786. formatex(temp, 95, "\r%L \r[%L]", id, "BUY_KEY", id, "KEY_PRICE", g_iKeyPrice);
  5787. szItem[0] = 2;
  5788. menu_additem(menu, temp, szItem, MaxClients, -1);
  5789. formatex(temp, 95, "\r%L \r[%L]\n", id, "SELL_KEY", id, "KEY_CASHBACK", g_iKeyPrice / 2);
  5790. szItem[0] = 3;
  5791. menu_additem(menu, temp, szItem, MaxClients, -1);
  5792. }
  5793. formatex(temp, 95, "\w%L \r[%L]", id, "CRAFT_SUBMENU", id, "CRAFT_SCRAPS", g_iUserScraps[id], g_iCraftCost);
  5794. szItem[0] = 1;
  5795. menu_additem(menu, temp, szItem, MaxClients, -1);
  5796. menu_display(id, menu, MaxClients, -1);
  5797. return 0;
  5798. }
  5799.  
  5800. public oc_craft_menu_handler(id, menu, item)
  5801. {
  5802. if (item == -3)
  5803. {
  5804. _ShowMainMenu(id);
  5805. menu_destroy(menu);
  5806. return 1;
  5807. }
  5808. new itemdata[2];
  5809. new dummy;
  5810. new index;
  5811. menu_item_getinfo(menu, item, dummy, itemdata, 1, 396508, MaxClients, dummy);
  5812. index = itemdata[0];
  5813. switch (index)
  5814. {
  5815. case 0:
  5816. {
  5817. new var1;
  5818. if (g_iUserCases[id] < 1 || g_iUserKeys[id] < 1)
  5819. {
  5820. _ShowOpenCaseCraftMenu(id);
  5821. }
  5822. _ShowOpenCaseCraftMenu(id);
  5823. _OpenCase(id);
  5824. return 1;
  5825. }
  5826. case 1:
  5827. {
  5828. if (g_iUserScraps[id] < g_iCraftCost)
  5829. {
  5830. _ShowOpenCaseCraftMenu(id);
  5831. }
  5832. _ShowOpenCaseCraftMenu(id);
  5833. _CraftSkin(id);
  5834. return 1;
  5835. }
  5836. case 2:
  5837. {
  5838. if (g_iUserMoney[id] < g_iKeyPrice)
  5839. {
  5840. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NOT_ENOUGH_MONEY", g_iKeyPrice - g_iUserMoney[id]);
  5841. _ShowOpenCaseCraftMenu(id);
  5842. }
  5843. else
  5844. {
  5845. client_cmd(id, "spk items/gunpickup2.wav");
  5846. g_iUserMoney[id] -= g_iKeyPrice;
  5847. g_iUserKeys[id]++;
  5848. _SaveData(id);
  5849. _ShowOpenCaseCraftMenu(id);
  5850. }
  5851. }
  5852. case 3:
  5853. {
  5854. if (g_iUserKeys[id] < 1)
  5855. {
  5856. _ShowOpenCaseCraftMenu(id);
  5857. }
  5858. else
  5859. {
  5860. client_cmd(id, "spk items/gunpickup2.wav");
  5861. new var2 = g_iUserMoney[id];
  5862. var2 = var2[g_iKeyPrice / 2];
  5863. g_iUserKeys[id]--;
  5864. _SaveData(id);
  5865. _ShowOpenCaseCraftMenu(id);
  5866. }
  5867. }
  5868. default:
  5869. {
  5870. }
  5871. }
  5872. menu_destroy(menu);
  5873. return 1;
  5874. }
  5875.  
  5876. _OpenCase(id)
  5877. {
  5878. new iSysTime = get_systime(MaxClients);
  5879. new iDelay = iSysTime - g_iOpenDelay[id];
  5880. if (iDelay < 3)
  5881. {
  5882. return 0;
  5883. }
  5884. g_iOpenDelay[id] = iSysTime;
  5885. new bool:succes;
  5886. new rSkin;
  5887. new rChance;
  5888. new skinID = -1;
  5889. new wChance;
  5890. new bool:bNoSkinSelected = 1;
  5891. while (bNoSkinSelected)
  5892. {
  5893. rSkin = random_num(MaxClients, g_iDropSkinNum + -1);
  5894. rChance = random_num(1, 100);
  5895. if (g_iDropSkinNum <= 0)
  5896. {
  5897. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "NO_DROP_SKINS");
  5898. _ShowOpenCaseCraftMenu(id);
  5899. return 0;
  5900. }
  5901. skinID = ArrayGetCell(g_aDropSkin, rSkin, MaxClients, MaxClients);
  5902. wChance = ArrayGetCell(g_aSkinChance, skinID, MaxClients, MaxClients);
  5903. if (rChance >= wChance)
  5904. {
  5905. succes = true;
  5906. }
  5907. if (succes)
  5908. {
  5909. bNoSkinSelected = false;
  5910. g_iUserCases[id]--;
  5911. g_iUserKeys[id]--;
  5912. new Skin[32];
  5913. ArrayGetString(g_aSkinName, skinID, Skin, "");
  5914. if (5 <= g_iUserSkins[id][skinID])
  5915. {
  5916. new iRandomValue = random_num(MaxClients, 1);
  5917. new bool:bScrapsInstead = iRandomValue == 1;
  5918. new iValue = 1;
  5919. if (bScrapsInstead)
  5920. {
  5921. new var4 = g_iUserScraps[id];
  5922. var4 = var4[iValue];
  5923. }
  5924. else
  5925. {
  5926. iValue = ArrayGetCell(g_aSkinCostMin, skinID, MaxClients, MaxClients) / 4;
  5927. new var5 = g_iUserMoney[id];
  5928. var5 = var5[iValue];
  5929. }
  5930. new var1;
  5931. if (bScrapsInstead)
  5932. {
  5933. var1 = 397472;
  5934. }
  5935. else
  5936. {
  5937. var1 = 397500;
  5938. }
  5939. client_print_color(id, id, "\x04%s\x01 Since you already have\x04 5 pieces of %s\x01 you got\x04 %d%s\x01 instead", "[CSGO Classy]", Skin, iValue, var1);
  5940. }
  5941. else
  5942. {
  5943. g_iUserSkins[id][skinID]++;
  5944. _SaveData(id);
  5945. if (g_iShowDropCraft > 0)
  5946. {
  5947. new var2;
  5948. if (random_num(1, 100) <= 5 && !g_bIsWeaponStattrack[id][skinID])
  5949. {
  5950. g_bIsWeaponStattrack[id][skinID] = true;
  5951. client_print_color(MaxClients, id, "\x04%s\x01 \x04%s\x01 opened \x04StatTrack (TM) %s\x01 with a \x04chance of %d percent", "[CSGO Classy]", g_szName[id], Skin, 100 - wChance);
  5952. }
  5953. else
  5954. {
  5955. client_print_color(MaxClients, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "DROP_SUCCES", g_szName[id], Skin, 100 - wChance);
  5956. }
  5957. }
  5958. new var3;
  5959. if (random_num(1, 100) <= 5 && !g_bIsWeaponStattrack[id][skinID])
  5960. {
  5961. g_bIsWeaponStattrack[id][skinID] = true;
  5962. client_print_color(id, id, "\x04%s\x01 \x04%s\x01 opened \x04StatTrack (TM) %s\x01 with a \x04chance of %d percent", "[CSGO Classy]", g_szName[id], Skin, 100 - wChance);
  5963. }
  5964. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "DROP_SUCCES", g_szName[id], Skin, 100 - wChance);
  5965. }
  5966. }
  5967. _SaveData(id);
  5968. _ShowOpenCaseCraftMenu(id);
  5969. }
  5970. return 0;
  5971. }
  5972.  
  5973. _CraftSkin(id)
  5974. {
  5975. new iSysTime = get_systime(MaxClients);
  5976. new iDelay = iSysTime - g_iOpenDelay[id];
  5977. if (iDelay < 3)
  5978. {
  5979. return 0;
  5980. }
  5981. g_iOpenDelay[id] = iSysTime;
  5982. new bool:succes;
  5983. new rSkin;
  5984. new rChance;
  5985. new skinID;
  5986. new wChance;
  5987. new bool:bNoSkinSelected = 1;
  5988. while (bNoSkinSelected)
  5989. {
  5990. rSkin = random_num(MaxClients, g_iCraftSkinNum + -1);
  5991. rChance = random_num(1, 100);
  5992. if (g_iCraftSkinNum <= 0)
  5993. {
  5994. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "NO_CRAFT_SKINS");
  5995. _ShowOpenCaseCraftMenu(id);
  5996. return 0;
  5997. }
  5998. skinID = ArrayGetCell(g_aCraftSkin, rSkin, MaxClients, MaxClients);
  5999. wChance = ArrayGetCell(g_aSkinChance, skinID, MaxClients, MaxClients);
  6000. if (rChance >= wChance)
  6001. {
  6002. succes = true;
  6003. }
  6004. if (succes)
  6005. {
  6006. bNoSkinSelected = false;
  6007. new Skin[32];
  6008. ArrayGetString(g_aSkinName, skinID, Skin, "");
  6009. if (5 <= g_iUserSkins[id][skinID])
  6010. {
  6011. new iRandomValue = random_num(MaxClients, 1);
  6012. new bool:bScrapsInstead = iRandomValue == 1;
  6013. new iValue = 1;
  6014. if (bScrapsInstead)
  6015. {
  6016. new var4 = g_iUserScraps[id];
  6017. var4 = var4[iValue];
  6018. }
  6019. else
  6020. {
  6021. iValue = ArrayGetCell(g_aSkinCostMin, skinID, MaxClients, MaxClients) / 4;
  6022. new var5 = g_iUserMoney[id];
  6023. var5 = var5[iValue];
  6024. }
  6025. g_iUserScraps[id] -= g_iCraftCost;
  6026. new var1;
  6027. if (bScrapsInstead)
  6028. {
  6029. var1 = 398896;
  6030. }
  6031. else
  6032. {
  6033. var1 = 398924;
  6034. }
  6035. client_print_color(id, id, "\x04%s\x01 Since you already have\x04 5 pieces of %s\x01 you got\x04 %d%s\x01 instead", "[CSGO Classy]", Skin, iValue, var1);
  6036. }
  6037. else
  6038. {
  6039. if (g_iShowDropCraft > 0)
  6040. {
  6041. new var2;
  6042. if (random_num(1, 100) <= 5 && !g_bIsWeaponStattrack[id][skinID])
  6043. {
  6044. g_bIsWeaponStattrack[id][skinID] = true;
  6045. client_print_color(MaxClients, id, "\x04%s\x01 \x04%s\x01 crafted \x04StatTrack (TM) %s\x01 with a \x04chance of %d percent", "[CSGO Classy]", g_szName[id], Skin, 100 - wChance);
  6046. }
  6047. else
  6048. {
  6049. client_print_color(MaxClients, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "CRAFT_SUCCES", g_szName[id], Skin, 100 - wChance);
  6050. }
  6051. }
  6052. else
  6053. {
  6054. new var3;
  6055. if (random_num(1, 100) <= 5 && !g_bIsWeaponStattrack[id][skinID])
  6056. {
  6057. g_bIsWeaponStattrack[id][skinID] = true;
  6058. client_print_color(id, id, "\x04%s\x01 \x04%s\x01 crafted \x04StatTrack (TM) %s\x01 with a \x04chance of %d percent", "[CSGO Classy]", g_szName[id], Skin, 100 - wChance);
  6059. }
  6060. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "CRAFT_SUCCES", g_szName[id], Skin, 100 - wChance);
  6061. }
  6062. g_iUserSkins[id][skinID]++;
  6063. g_iUserScraps[id] -= g_iCraftCost;
  6064. }
  6065. _SaveData(id);
  6066. _ShowOpenCaseCraftMenu(id);
  6067. }
  6068. }
  6069. return 0;
  6070. }
  6071.  
  6072. _ShowMarketMenu(id)
  6073. {
  6074. new temp[96];
  6075. formatex(temp, 95, "\r%s \w%L", "[CSGO Classy]", id, "MARKET_MENU", g_iUserMoney[id]);
  6076. new menu = menu_create(temp, "market_menu_handler", MaxClients);
  6077. new szItem[10];
  6078. szItem[1] = 0;
  6079. new szSkin[48];
  6080. if (!_IsGoodItem(g_iUserSellItem[id]))
  6081. {
  6082. formatex(temp, 95, "\w%L", id, "SELECT_ITEM");
  6083. }
  6084. else
  6085. {
  6086. _GetItemName(g_iUserSellItem[id], szSkin, 47);
  6087. new var1;
  6088. if (g_bPublishedStattrackSkin[id])
  6089. {
  6090. var1 = 400220;
  6091. }
  6092. else
  6093. {
  6094. var1 = 400284;
  6095. }
  6096. formatex(temp, 95, "\r%s\w%s \r[%d$]", var1, szSkin, g_iUserItemPrice[id]);
  6097. }
  6098. szItem[0] = 33;
  6099. menu_additem(menu, temp, szItem, MaxClients, -1);
  6100. if (g_bUserSell[id])
  6101. {
  6102. formatex(temp, 95, "\r%L\n", id, "CANCEL_SELL");
  6103. szItem[0] = 35;
  6104. menu_additem(menu, temp, szItem, MaxClients, -1);
  6105. }
  6106. else
  6107. {
  6108. formatex(temp, 95, "\r%L\n", id, "START_SELL");
  6109. szItem[0] = 34;
  6110. menu_additem(menu, temp, szItem, MaxClients, -1);
  6111. }
  6112. new Pl[32];
  6113. new n;
  6114. new p;
  6115. get_players(Pl, n, 400428, 400436);
  6116. if (n)
  6117. {
  6118. new items;
  6119. new sType[4];
  6120. new bool:craft;
  6121. new i;
  6122. while (i < n)
  6123. {
  6124. p = Pl[i];
  6125. if (g_bLogged[p] == true)
  6126. {
  6127. if (!id == p)
  6128. {
  6129. if (g_bUserSell[p])
  6130. {
  6131. new index = g_iUserSellItem[p];
  6132. _GetItemName(index, szSkin, 47);
  6133. if (_IsItemSkin(index))
  6134. {
  6135. ArrayGetString(g_aSkinType, index, sType, 3);
  6136. }
  6137. else
  6138. {
  6139. formatex(sType, 3, 400440);
  6140. }
  6141. if (equali(sType, 400448, MaxClients))
  6142. {
  6143. craft = true;
  6144. }
  6145. else
  6146. {
  6147. craft = false;
  6148. }
  6149. new crafted[64];
  6150. if (craft)
  6151. {
  6152. crafted = {0};
  6153. }
  6154. else
  6155. {
  6156. crafted = {0};
  6157. }
  6158. new var2;
  6159. if (g_bPublishedStattrackSkin[p])
  6160. {
  6161. var2 = 400560;
  6162. }
  6163. else
  6164. {
  6165. var2 = 400624;
  6166. }
  6167. formatex(temp, 95, "\w%s - \r%s\w%s \r[%d$]", g_szName[p], var2, szSkin, g_iUserItemPrice[p]);
  6168. szItem[0] = p;
  6169. menu_additem(menu, temp, szItem, MaxClients, -1);
  6170. items++;
  6171. }
  6172. }
  6173. }
  6174. i++;
  6175. }
  6176. if (!items)
  6177. {
  6178. formatex(temp, 95, "\r%L", id, "NOBODY_SELL");
  6179. num_to_str(2000, szItem, 9);
  6180. menu_additem(menu, temp, szItem, MaxClients, -1);
  6181. }
  6182. }
  6183. menu_display(id, menu, MaxClients, -1);
  6184. return 0;
  6185. }
  6186.  
  6187. bool:_IsItemSkin(item)
  6188. {
  6189. if (0 <= item < g_iSkinsNum)
  6190. {
  6191. return true;
  6192. }
  6193. return false;
  6194. }
  6195.  
  6196. bool:_IsGoodItem(item)
  6197. {
  6198. new var1;
  6199. if (0 <= item < g_iSkinsNum || item == -11 || item == -12)
  6200. {
  6201. return true;
  6202. }
  6203. return false;
  6204. }
  6205.  
  6206. public market_menu_handler(id, menu, item)
  6207. {
  6208. if (item == -3)
  6209. {
  6210. _ShowMainMenu(id);
  6211. menu_destroy(menu);
  6212. return 1;
  6213. }
  6214. new itemdata[2];
  6215. new dummy;
  6216. new index;
  6217. menu_item_getinfo(menu, item, dummy, itemdata, 1, 400696, MaxClients, dummy);
  6218. index = itemdata[0];
  6219. switch (index)
  6220. {
  6221. case 33:
  6222. {
  6223. if (g_bUserSell[id])
  6224. {
  6225. new Item[50];
  6226. _GetItemName(g_iUserSellItem[id], Item, 49);
  6227. if (g_bPublishedStattrackSkin[id])
  6228. {
  6229. format(Item, 49, "StatTrack (TM) %s", Item);
  6230. }
  6231. _ShowMarketMenu(id);
  6232. }
  6233. else
  6234. {
  6235. _ShowItems(id);
  6236. }
  6237. }
  6238. case 34:
  6239. {
  6240. if (!_UserHasItem(id, g_iUserSellItem[id]))
  6241. {
  6242. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "MUST_SELECT");
  6243. _ShowMarketMenu(id);
  6244. }
  6245. else
  6246. {
  6247. if (g_iUserItemPrice[id] < 1)
  6248. {
  6249. new Item[50];
  6250. _GetItemName(g_iUserSellItem[id], Item, 49);
  6251. if (g_bPublishedStattrackSkin[id])
  6252. {
  6253. format(Item, 49, "StatTrack (TM) %s", Item);
  6254. }
  6255. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_SET_PRICE", Item);
  6256. _ShowMarketMenu(id);
  6257. }
  6258. new wPriceMin;
  6259. new wPriceMax;
  6260. _CalcItemPrice(g_iUserSellItem[id], id, wPriceMin, wPriceMax);
  6261. if (!wPriceMin <= g_iUserItemPrice[id] <= wPriceMax)
  6262. {
  6263. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_INFO", wPriceMin, wPriceMax);
  6264. _ShowMarketMenu(id);
  6265. return 1;
  6266. }
  6267. publicItemOnMarket(id, g_bPublishedStattrackSkin[id]);
  6268. }
  6269. }
  6270. case 35:
  6271. {
  6272. g_bUserSell[id] = 0;
  6273. g_iUserSellItem[id] = -1;
  6274. g_bPublishedStattrackSkin[id] = 0;
  6275. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "CANCEL_SELL_M");
  6276. _ShowMarketMenu(id);
  6277. }
  6278. case 2000:
  6279. {
  6280. client_print_color(id, id, "\x04%s\x01 You do not have any skins.", "[CSGO Classy]");
  6281. _ShowMarketMenu(id);
  6282. menu_destroy(menu);
  6283. return 1;
  6284. }
  6285. default:
  6286. {
  6287. new var1;
  6288. if (!index || index > 32)
  6289. {
  6290. client_print_color(id, id, "\x04%s\x01 There are \x04no skins\x01 on the \x04Market", "[CSGO Classy]");
  6291. _ShowMarketMenu(id);
  6292. }
  6293. else
  6294. {
  6295. if (!g_bLogged[index])
  6296. {
  6297. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "INVALID_SELLER");
  6298. g_bUserSell[index] = 0;
  6299. _ShowMarketMenu(id);
  6300. }
  6301. new tItem = g_iUserSellItem[index];
  6302. new price = g_iUserItemPrice[index];
  6303. if (!_UserHasItem(index, tItem))
  6304. {
  6305. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "DONT_HAVE_ITEM");
  6306. g_bUserSell[index] = 0;
  6307. g_iUserSellItem[index] = -1;
  6308. _ShowMarketMenu(id);
  6309. return 1;
  6310. }
  6311. if (g_iUserMoney[id] < price)
  6312. {
  6313. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NOT_ENOUGH_MONEY", price - g_iUserMoney[id]);
  6314. _ShowMarketMenu(id);
  6315. return 1;
  6316. }
  6317. if (5 <= g_iUserSkins[id][tItem])
  6318. {
  6319. client_print_color(id, id, "\x04%s\x01 You can not buy this item anymore, you already have\x04 5 out of 5", "[CSGO Classy]");
  6320. _ShowMarketMenu(id);
  6321. return 1;
  6322. }
  6323. if (_UserHasItem(index, tItem))
  6324. {
  6325. new szItem[32];
  6326. _GetItemName(g_iUserSellItem[index], szItem, 31);
  6327. g_iUserSkins[id][tItem]++;
  6328. g_iUserSkins[index][tItem]--;
  6329. g_iUserMoney[id] -= price;
  6330. new var2 = g_iUserMoney[index];
  6331. var2 = var2[price];
  6332. checkInstantDefault(index, tItem);
  6333. if (g_bPublishedStattrackSkin[index])
  6334. {
  6335. g_bIsWeaponStattrack[id][tItem] = true;
  6336. g_bIsWeaponStattrack[index][tItem] = false;
  6337. g_iUserStattrackKillCount[index][tItem] = 0;
  6338. g_bPublishedStattrackSkin[index] = 0;
  6339. client_print_color(MaxClients, MaxClients, "\x04%s\x01 \x04%s\x01 bought \x04StatTrack (TM) %s\x01 from \x04%s", "[CSGO Classy]", g_szName[id], szItem, g_szName[index]);
  6340. }
  6341. else
  6342. {
  6343. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "ITEM_BOUGHT", g_szName[id], szItem, g_szName[index]);
  6344. }
  6345. _SaveData(id);
  6346. _SaveData(index);
  6347. g_iUserSellItem[index] = -1;
  6348. g_bUserSell[index] = 0;
  6349. g_iUserItemPrice[index] = 0;
  6350. _ShowMarketMenu(id);
  6351. }
  6352. }
  6353. }
  6354. }
  6355. menu_destroy(menu);
  6356. return 1;
  6357. }
  6358.  
  6359. publicItemOnMarket(id, bool:bPublicStt)
  6360. {
  6361. g_bUserSell[id] = 1;
  6362. g_iLastPlace[id] = get_systime(MaxClients);
  6363. new Item[32];
  6364. _GetItemName(g_iUserSellItem[id], Item, 31);
  6365. if (bPublicStt)
  6366. {
  6367. client_print_color(MaxClients, id, "\x04%s\x01 \x04%s\x01 is selling \x04StatTrack (TM) %s\x01 for\x04 %d$", "[CSGO Classy]", g_szName[id], Item, g_iUserItemPrice[id]);
  6368. }
  6369. else
  6370. {
  6371. client_print_color(MaxClients, id, "\x04%s %L", "[CSGO Classy]", id, "SELL_ANNOUNCE", g_szName[id], Item, g_iUserItemPrice[id]);
  6372. }
  6373. return 0;
  6374. }
  6375.  
  6376. _ShowItems(id)
  6377. {
  6378. if (notAnySkins(id))
  6379. {
  6380. _ShowMainMenu(id);
  6381. return 0;
  6382. }
  6383. _ShowSkinMenu(id);
  6384. return 0;
  6385. }
  6386.  
  6387. openSellMenu(id, iWeaponId)
  6388. {
  6389. new temp[64];
  6390. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  6391. new menu = menu_create(temp, "item_menu_handler", MaxClients);
  6392. new szItem[10];
  6393. szItem[1] = 0;
  6394. new total;
  6395. new szSkin[32];
  6396. new num;
  6397. new type[2];
  6398. new i;
  6399. new wid;
  6400. while (i < g_iSkinsNum)
  6401. {
  6402. num = g_iUserSkins[id][i];
  6403. if (num > 0)
  6404. {
  6405. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  6406. if (iWeaponId != wid)
  6407. {
  6408. i++;
  6409. }
  6410. ArrayGetString(g_aSkinName, i, szSkin, "");
  6411. ArrayGetString(g_aSkinType, i, type, 1);
  6412. new applied[64];
  6413. switch (type[0])
  6414. {
  6415. case 99:
  6416. {
  6417. applied = {0};
  6418. }
  6419. default:
  6420. {
  6421. applied = {0};
  6422. }
  6423. }
  6424. new var1;
  6425. if (g_bIsWeaponStattrack[id][i])
  6426. {
  6427. var1 = 403640;
  6428. }
  6429. else
  6430. {
  6431. var1 = 403704;
  6432. }
  6433. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  6434. num_to_str(i, szItem, 9);
  6435. menu_additem(menu, temp, szItem, MaxClients, -1);
  6436. total++;
  6437. }
  6438. i++;
  6439. }
  6440. if (!total)
  6441. {
  6442. formatex(temp, 63, "\d%L", id, "NO_ITEMS");
  6443. num_to_str(2000, szItem, 9);
  6444. menu_additem(menu, temp, szItem, MaxClients, -1);
  6445. }
  6446. menu_display(id, menu, MaxClients, -1);
  6447. return 0;
  6448. }
  6449.  
  6450. public item_menu_handler(id, menu, item)
  6451. {
  6452. if (item == -3)
  6453. {
  6454. _ShowMarketMenu(id);
  6455. menu_destroy(menu);
  6456. return 1;
  6457. }
  6458. new itemdata[5];
  6459. new dummy;
  6460. new index;
  6461. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 403764, MaxClients, dummy);
  6462. index = str_to_num(itemdata);
  6463. if (index == 2000)
  6464. {
  6465. _ShowMarketMenu(id);
  6466. return 1;
  6467. }
  6468. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  6469. {
  6470. _ShowMarketMenu(id);
  6471. menu_destroy(menu);
  6472. return 1;
  6473. }
  6474. g_iUserSellItem[id] = index;
  6475. new szItem[50];
  6476. _GetItemName(index, szItem, 49);
  6477. if (g_bIsWeaponStattrack[id][index])
  6478. {
  6479. if (1 < g_iUserSkins[id][index])
  6480. {
  6481. askWhichType(id, index);
  6482. g_iAskType[id] = 1;
  6483. return 1;
  6484. }
  6485. g_bPublishedStattrackSkin[id] = 1;
  6486. format(szItem, 49, "StatTrack (TM) %s", szItem);
  6487. }
  6488. else
  6489. {
  6490. g_bPublishedStattrackSkin[id] = 0;
  6491. }
  6492. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_SELECT", szItem);
  6493. client_cmd(id, "messagemode SkinPrice");
  6494. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_SET_PRICE", szItem);
  6495. menu_destroy(menu);
  6496. return 1;
  6497. }
  6498.  
  6499. public concmd_itemprice(id)
  6500. {
  6501. new item = g_iUserSellItem[id];
  6502. if (!_IsGoodItem(item))
  6503. {
  6504. return 1;
  6505. }
  6506. new data[16];
  6507. read_args(data, 15);
  6508. remove_quotes(data);
  6509. new uPrice;
  6510. new wPriceMin;
  6511. new wPriceMax;
  6512. uPrice = str_to_num(data);
  6513. _CalcItemPrice(item, id, wPriceMin, wPriceMax);
  6514. new var1;
  6515. if (uPrice < wPriceMin || uPrice > wPriceMax)
  6516. {
  6517. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ITEM_INFO", wPriceMin, wPriceMax);
  6518. client_cmd(id, "messagemode SkinPrice");
  6519. return 1;
  6520. }
  6521. g_iUserItemPrice[id] = uPrice;
  6522. _ShowMarketMenu(id);
  6523. return 1;
  6524. }
  6525.  
  6526. bool:_UserHasItem(id, item)
  6527. {
  6528. if (!_IsGoodItem(item))
  6529. {
  6530. return false;
  6531. }
  6532. switch (item)
  6533. {
  6534. default:
  6535. {
  6536. if (g_iUserSkins[id][item] > 0)
  6537. {
  6538. return true;
  6539. }
  6540. return false;
  6541. }
  6542. }
  6543. }
  6544.  
  6545. _CalcItemPrice(item, id, &min, &max)
  6546. {
  6547. switch (item)
  6548. {
  6549. default:
  6550. {
  6551. min = ArrayGetCell(g_aSkinCostMin, item, MaxClients, MaxClients);
  6552. new i = min;
  6553. new var1;
  6554. if (g_bIsWeaponStattrack[id][item] && g_bPublishedStattrackSkin[id])
  6555. {
  6556. min = min * 2;
  6557. i *= 2;
  6558. }
  6559. max = i * 2;
  6560. return 0;
  6561. }
  6562. }
  6563. }
  6564.  
  6565. _ShowDustbinMenu(id)
  6566. {
  6567. new temp[64];
  6568. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "DESTROY_MENU");
  6569. new menu = menu_create(temp, "dustbin_menu_handler", MaxClients);
  6570. new szItem[2];
  6571. szItem[1] = 0;
  6572. formatex(temp, 63, "\w%L\n\dDestroy skins to get scraps", id, "GET_SCRAPS");
  6573. szItem[0] = 1;
  6574. menu_additem(menu, temp, szItem, MaxClients, -1);
  6575. formatex(temp, 63, "\w%L\n\dDestroy skins to get money", id, "GET_MONEY");
  6576. szItem[0] = 2;
  6577. menu_additem(menu, temp, szItem, MaxClients, -1);
  6578. menu_display(id, menu, MaxClients, -1);
  6579. return 0;
  6580. }
  6581.  
  6582. public dustbin_menu_handler(id, menu, item)
  6583. {
  6584. if (item == -3)
  6585. {
  6586. _ShowMainMenu(id);
  6587. menu_destroy(menu);
  6588. return 1;
  6589. }
  6590. new itemdata[2];
  6591. new dummy;
  6592. new index;
  6593. menu_item_getinfo(menu, item, dummy, itemdata, 1, 405020, MaxClients, dummy);
  6594. index = itemdata[0];
  6595. new i;
  6596. new total;
  6597. new num;
  6598. while (i < g_iSkinsNum)
  6599. {
  6600. num = g_iUserSkins[id][i];
  6601. if (num > 0)
  6602. {
  6603. total++;
  6604. }
  6605. i++;
  6606. }
  6607. if (!total)
  6608. {
  6609. _ShowMainMenu(id);
  6610. menu_destroy(menu);
  6611. return 1;
  6612. }
  6613. g_iMenuType[id] = index;
  6614. _ShowSkins(id);
  6615. menu_destroy(menu);
  6616. return 1;
  6617. }
  6618.  
  6619. _ShowSkins(id)
  6620. {
  6621. if (notAnySkins(id))
  6622. {
  6623. _ShowMainMenu(id);
  6624. return 0;
  6625. }
  6626. _ShowSkinMenu(id);
  6627. return 0;
  6628. }
  6629.  
  6630. openDustbinSkins(id, iWeaponId)
  6631. {
  6632. new temp[64];
  6633. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  6634. new menu = menu_create(temp, "db_skins_menu_handler", MaxClients);
  6635. new szItem[10];
  6636. szItem[1] = 0;
  6637. new szSkin[32];
  6638. new num;
  6639. new type[2];
  6640. new total;
  6641. new i;
  6642. new wid;
  6643. while (i < g_iSkinsNum)
  6644. {
  6645. num = g_iUserSkins[id][i];
  6646. if (num > 0)
  6647. {
  6648. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  6649. if (iWeaponId != wid)
  6650. {
  6651. i++;
  6652. }
  6653. ArrayGetString(g_aSkinName, i, szSkin, "");
  6654. ArrayGetString(g_aSkinType, i, type, 1);
  6655. new applied[64];
  6656. switch (type[0])
  6657. {
  6658. case 99:
  6659. {
  6660. applied = {0};
  6661. }
  6662. default:
  6663. {
  6664. applied = {0};
  6665. }
  6666. }
  6667. new var1;
  6668. if (g_bIsWeaponStattrack[id][i])
  6669. {
  6670. var1 = 405320;
  6671. }
  6672. else
  6673. {
  6674. var1 = 405384;
  6675. }
  6676. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  6677. num_to_str(i, szItem, 9);
  6678. menu_additem(menu, temp, szItem, MaxClients, -1);
  6679. total++;
  6680. }
  6681. i++;
  6682. }
  6683. if (!total)
  6684. {
  6685. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  6686. num_to_str(2000, szItem, 9);
  6687. menu_additem(menu, temp, szItem, MaxClients, -1);
  6688. }
  6689. menu_display(id, menu, MaxClients, -1);
  6690. return 0;
  6691. }
  6692.  
  6693. public db_skins_menu_handler(id, menu, item)
  6694. {
  6695. if (item == -3)
  6696. {
  6697. _ShowSkinMenu(id);
  6698. menu_destroy(menu);
  6699. return 1;
  6700. }
  6701. new itemdata[5];
  6702. new dummy;
  6703. new index;
  6704. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 405444, MaxClients, dummy);
  6705. index = str_to_num(itemdata);
  6706. if (index == 2000)
  6707. {
  6708. _ShowSkinMenu(id);
  6709. menu_destroy(menu);
  6710. return 1;
  6711. }
  6712. if (g_iUserSellItem[id] == index)
  6713. {
  6714. new Item[50];
  6715. _GetItemName(g_iUserSellItem[id], Item, 49);
  6716. if (g_bPublishedStattrackSkin[id])
  6717. {
  6718. format(Item, 49, "Stattrack (TM) %s", Item);
  6719. }
  6720. client_print_color(id, id, "\x04%s\x01 You are \x04currently selling\x01 that \x04skin\x01, you \x04can not\x01 destroy it", "[CSGO Classy]", Item);
  6721. _ShowDustbinMenu(id);
  6722. menu_destroy(menu);
  6723. return 1;
  6724. }
  6725. if (g_bIsWeaponStattrack[id][index])
  6726. {
  6727. if (1 <= g_iMenuType[id] <= 2)
  6728. {
  6729. if (1 < g_iUserSkins[id][index])
  6730. {
  6731. askWhichType(id, index);
  6732. g_iAskType[id] = 3;
  6733. return 1;
  6734. }
  6735. g_bDestroyStt[id] = 1;
  6736. }
  6737. }
  6738. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  6739. {
  6740. _ShowSkins(id);
  6741. menu_destroy(menu);
  6742. return 1;
  6743. }
  6744. destroySkin(id, index);
  6745. _ShowDustbinMenu(id);
  6746. menu_destroy(menu);
  6747. return 1;
  6748. }
  6749.  
  6750. destroySkin(id, index)
  6751. {
  6752. switch (g_iMenuType[id])
  6753. {
  6754. case 1:
  6755. {
  6756. g_iUserSkins[id][index]--;
  6757. new Skin[32];
  6758. ArrayGetString(g_aSkinName, index, Skin, "");
  6759. if (g_bDestroyStt[id])
  6760. {
  6761. g_iDustForTransform = 5;
  6762. client_print_color(id, id, "\x04%s\x01 You got\x04 %d scraps\x01 out of \x04StatTrack (TM) %s", "[CSGO Classy]", g_iDustForTransform, Skin);
  6763. g_iUserStattrackKillCount[id][index] = 0;
  6764. g_bIsWeaponStattrack[id][index] = false;
  6765. }
  6766. else
  6767. {
  6768. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRANSFORM", g_iDustForTransform, Skin);
  6769. }
  6770. client_cmd(id, "spk items/gunpickup2.wav");
  6771. new var2 = g_iUserScraps[id];
  6772. var2 = var2[g_iDustForTransform];
  6773. g_iDustForTransform = 1;
  6774. _SaveData(id);
  6775. }
  6776. case 2:
  6777. {
  6778. g_iUserSkins[id][index]--;
  6779. new Skin[32];
  6780. ArrayGetString(g_aSkinName, index, Skin, "");
  6781. new sPrice = ArrayGetCell(g_aSkinCostMin, index, MaxClients, MaxClients);
  6782. new rest = sPrice / g_iReturnPercent;
  6783. client_cmd(id, "spk items/gunpickup2.wav");
  6784. if (g_bDestroyStt[id])
  6785. {
  6786. rest *= 3;
  6787. client_print_color(id, id, "\x04%s\x01 You destroyed your \x04StatTrack (TM) %s\x01 and received\x04 %d$", "[CSGO Classy]", Skin, rest);
  6788. g_iUserStattrackKillCount[id][index] = 0;
  6789. g_bIsWeaponStattrack[id][index] = false;
  6790. }
  6791. else
  6792. {
  6793. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "DESTROY", Skin, rest);
  6794. }
  6795. new var1 = g_iUserMoney[id];
  6796. var1 = var1[rest];
  6797. _SaveData(id);
  6798. }
  6799. default:
  6800. {
  6801. }
  6802. }
  6803. g_bDestroyStt[id] = 0;
  6804. g_iMenuType[id] = 0;
  6805. return 0;
  6806. }
  6807.  
  6808. _ShowGiftMenu(id)
  6809. {
  6810. new temp[64];
  6811. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "GIFT_MENU");
  6812. new menu = menu_create(temp, "gift_menu_handler", MaxClients);
  6813. new bool:HasTarget;
  6814. new bool:HasItem;
  6815. new target = g_iGiftTarget[id];
  6816. if (target)
  6817. {
  6818. formatex(temp, 63, "\w%L", id, "GIFT_TARGET", g_szName[target]);
  6819. menu_additem(menu, temp, 381156, MaxClients, -1);
  6820. HasTarget = true;
  6821. }
  6822. else
  6823. {
  6824. formatex(temp, 63, "\r%L", id, "GIFT_SELECT_TARGET");
  6825. menu_additem(menu, temp, 381156, MaxClients, -1);
  6826. }
  6827. if (!_IsGoodItem(g_iGiftItem[id]))
  6828. {
  6829. formatex(temp, 63, "\r%L\n", id, "GIFT_SELECT_ITEM");
  6830. menu_additem(menu, temp, 381156, MaxClients, -1);
  6831. }
  6832. else
  6833. {
  6834. new Item[32];
  6835. _GetItemName(g_iGiftItem[id], Item, 31);
  6836. new var1;
  6837. if (g_bGiftingStt[id])
  6838. {
  6839. var1 = 407376;
  6840. }
  6841. else
  6842. {
  6843. var1 = 407440;
  6844. }
  6845. formatex(temp, 63, "\r%s\w%s\n", var1, Item);
  6846. menu_additem(menu, temp, 381156, MaxClients, -1);
  6847. HasItem = true;
  6848. }
  6849. new var2;
  6850. if (HasTarget && HasItem)
  6851. {
  6852. formatex(temp, 63, "\r%L", id, "GIFT_SEND");
  6853. menu_additem(menu, temp, 381156, MaxClients, -1);
  6854. }
  6855. menu_display(id, menu, MaxClients, -1);
  6856. return 0;
  6857. }
  6858.  
  6859. public gift_menu_handler(id, menu, item)
  6860. {
  6861. if (item == -3)
  6862. {
  6863. _ShowMainMenu(id);
  6864. menu_destroy(menu);
  6865. return 1;
  6866. }
  6867. switch (item)
  6868. {
  6869. case 0:
  6870. {
  6871. _SelectTarget(id);
  6872. }
  6873. case 1:
  6874. {
  6875. _SelectItem(id);
  6876. }
  6877. case 2:
  6878. {
  6879. new target = g_iGiftTarget[id];
  6880. new _item = g_iGiftItem[id];
  6881. new var2;
  6882. if (g_bLogged[target] == true && (0 < target && 32 >= target))
  6883. {
  6884. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "INVALID_TARGET");
  6885. g_iGiftTarget[id] = 0;
  6886. _ShowGiftMenu(id);
  6887. }
  6888. else
  6889. {
  6890. if (!_UserHasItem(id, _item))
  6891. {
  6892. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NO_LONGER");
  6893. g_iGiftItem[id] = -1;
  6894. _ShowGiftMenu(id);
  6895. }
  6896. giftPlayer(id, target, _item);
  6897. g_iGiftTarget[id] = 0;
  6898. g_iGiftItem[id] = -1;
  6899. }
  6900. }
  6901. default:
  6902. {
  6903. }
  6904. }
  6905. menu_destroy(menu);
  6906. return 1;
  6907. }
  6908.  
  6909. giftPlayer(id, target, iSkin)
  6910. {
  6911. if (5 <= g_iUserSkins[target][iSkin])
  6912. {
  6913. client_print_color(id, id, "\x04%s\x01 \x04%s\x01 can not receive that skin anymore, he already have\x04 5 out of 5", "[CSGO Classy]", g_szName[target]);
  6914. _ShowGiftMenu(id);
  6915. return 1;
  6916. }
  6917. new Skin[32];
  6918. _GetItemName(iSkin, Skin, 31);
  6919. if (g_bGiftingStt[id])
  6920. {
  6921. client_print_color(id, id, "\x04%s\x01 You gifted your \x04StatTrack (TM) %s\x01 to\x04 %s", "[CSGO Classy]", Skin, g_szName[target]);
  6922. client_print_color(target, target, "\x04%s\x01 You received a \x04gift\x01 from\x04 %s \x01containing\x04 StatTrack (TM) %s", "[CSGO Classy]", g_szName[id], Skin);
  6923. g_iUserStattrackKillCount[id][iSkin] = 0;
  6924. g_bIsWeaponStattrack[id][iSkin] = false;
  6925. g_bIsWeaponStattrack[target][iSkin] = true;
  6926. }
  6927. else
  6928. {
  6929. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "SEND_GIFT", Skin, g_szName[target]);
  6930. client_print_color(target, target, "\x04%s\x01 %L", "[CSGO Classy]", target, "RECEIVE_GIFT", g_szName[id], Skin);
  6931. }
  6932. g_iUserSkins[id][iSkin]--;
  6933. g_iUserSkins[target][iSkin]++;
  6934. checkInstantDefault(id, iSkin);
  6935. g_bGiftingStt[id] = 0;
  6936. _SaveData(id);
  6937. _SaveData(target);
  6938. return 1;
  6939. }
  6940.  
  6941. _SelectTarget(id)
  6942. {
  6943. new temp[64];
  6944. formatex(temp, 63, "\r%s \y%L", "[CSGO Classy]", id, "GIFT_SELECT_TARGET");
  6945. new menu = menu_create(temp, "st_menu_handler", MaxClients);
  6946. new szItem[10];
  6947. szItem[1] = 0;
  6948. new Pl[32];
  6949. new n;
  6950. new p;
  6951. get_players(Pl, n, 409204, 409212);
  6952. new total;
  6953. if (n)
  6954. {
  6955. new i;
  6956. while (i < n)
  6957. {
  6958. p = Pl[i];
  6959. if (g_bLogged[p])
  6960. {
  6961. if (!id == p)
  6962. {
  6963. szItem[0] = p;
  6964. menu_additem(menu, g_szName[p], szItem, MaxClients, -1);
  6965. total++;
  6966. }
  6967. }
  6968. i++;
  6969. }
  6970. }
  6971. if (!total)
  6972. {
  6973. formatex(temp, 63, "\r%L", id, "NO_REGISTERED_PLAYERS");
  6974. num_to_str(2000, szItem, 9);
  6975. menu_additem(menu, temp, szItem, MaxClients, -1);
  6976. }
  6977. menu_display(id, menu, MaxClients, -1);
  6978. return 0;
  6979. }
  6980.  
  6981. public st_menu_handler(id, menu, item)
  6982. {
  6983. if (item == -3)
  6984. {
  6985. _ShowGiftMenu(id);
  6986. menu_destroy(menu);
  6987. return 1;
  6988. }
  6989. new itemdata[2];
  6990. new dummy;
  6991. new index;
  6992. new name[32];
  6993. menu_item_getinfo(menu, item, dummy, itemdata, 1, name, "", dummy);
  6994. index = itemdata[0];
  6995. switch (index)
  6996. {
  6997. case 2000:
  6998. {
  6999. _ShowGiftMenu(id);
  7000. menu_destroy(menu);
  7001. return 1;
  7002. }
  7003. default:
  7004. {
  7005. g_iGiftTarget[id] = index;
  7006. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "GIFT_YOUR_TARGET", name);
  7007. _ShowGiftMenu(id);
  7008. menu_destroy(menu);
  7009. return 1;
  7010. }
  7011. }
  7012. }
  7013.  
  7014. _SelectItem(id)
  7015. {
  7016. if (notAnySkins(id))
  7017. {
  7018. _ShowMainMenu(id);
  7019. return 0;
  7020. }
  7021. _ShowSkinMenu(id);
  7022. return 0;
  7023. }
  7024.  
  7025. openGiftMenu(id, iWeaponId)
  7026. {
  7027. new temp[64];
  7028. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  7029. new menu = menu_create(temp, "si_menu_handler", MaxClients);
  7030. new szItem[10];
  7031. szItem[1] = 0;
  7032. new total;
  7033. new szSkin[32];
  7034. new num;
  7035. new type[2];
  7036. new i;
  7037. new wid;
  7038. while (i < g_iSkinsNum)
  7039. {
  7040. num = g_iUserSkins[id][i];
  7041. if (num > 0)
  7042. {
  7043. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  7044. if (iWeaponId != wid)
  7045. {
  7046. i++;
  7047. }
  7048. ArrayGetString(g_aSkinName, i, szSkin, "");
  7049. ArrayGetString(g_aSkinType, i, type, 1);
  7050. new var1;
  7051. if (g_bIsWeaponStattrack[id][i])
  7052. {
  7053. var1 = 409744;
  7054. }
  7055. else
  7056. {
  7057. var1 = 409808;
  7058. }
  7059. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  7060. num_to_str(i, szItem, 9);
  7061. menu_additem(menu, temp, szItem, MaxClients, -1);
  7062. total++;
  7063. }
  7064. i++;
  7065. }
  7066. if (!total)
  7067. {
  7068. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  7069. num_to_str(2000, szItem, 9);
  7070. menu_additem(menu, temp, szItem, MaxClients, -1);
  7071. }
  7072. menu_display(id, menu, MaxClients, -1);
  7073. return 0;
  7074. }
  7075.  
  7076. public si_menu_handler(id, menu, item)
  7077. {
  7078. if (item == -3)
  7079. {
  7080. _ShowMainMenu(id);
  7081. menu_destroy(menu);
  7082. return 1;
  7083. }
  7084. new itemdata[5];
  7085. new dummy;
  7086. new index;
  7087. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 409868, MaxClients, dummy);
  7088. index = str_to_num(itemdata);
  7089. switch (index)
  7090. {
  7091. case 2000:
  7092. {
  7093. _ShowGiftMenu(id);
  7094. menu_destroy(menu);
  7095. return 1;
  7096. }
  7097. default:
  7098. {
  7099. new var1;
  7100. if (g_iUserSellItem[id] == index && g_bUserSell[id])
  7101. {
  7102. new Item[50];
  7103. _GetItemName(g_iUserSellItem[id], Item, 49);
  7104. if (g_bPublishedStattrackSkin[id])
  7105. {
  7106. format(Item, 49, "StatTrack (TM) %s", Item);
  7107. }
  7108. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "INVALID_GIFT", Item);
  7109. _SelectItem(id);
  7110. }
  7111. else
  7112. {
  7113. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  7114. {
  7115. _ShowGiftMenu(id);
  7116. menu_destroy(menu);
  7117. return 1;
  7118. }
  7119. g_iGiftItem[id] = index;
  7120. if (g_bIsWeaponStattrack[id][index])
  7121. {
  7122. if (1 < g_iUserSkins[id][index])
  7123. {
  7124. askWhichType(id, index);
  7125. g_iAskType[id] = 2;
  7126. return 1;
  7127. }
  7128. g_bGiftingStt[id] = 1;
  7129. _ShowGiftMenu(id);
  7130. }
  7131. g_bGiftingStt[id] = 0;
  7132. new szItem[32];
  7133. _GetItemName(index, szItem, 31);
  7134. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "GIFT_YOUR_GIFT", szItem);
  7135. _ShowGiftMenu(id);
  7136. }
  7137. menu_destroy(menu);
  7138. return 1;
  7139. }
  7140. }
  7141. }
  7142.  
  7143. _ShowTradeMenu(id)
  7144. {
  7145. if (g_bTradeAccept[id])
  7146. {
  7147. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_INFO2");
  7148. return 0;
  7149. }
  7150. new temp[64];
  7151. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "TRADE_MENU");
  7152. new menu = menu_create(temp, "trade_menu_handler", MaxClients);
  7153. new szItem[2];
  7154. szItem[1] = 0;
  7155. new bool:HasTarget;
  7156. new bool:HasItem;
  7157. new target = g_iTradeTarget[id];
  7158. if (target)
  7159. {
  7160. formatex(temp, 63, "\w%L", id, "GIFT_TARGET", g_szName[target]);
  7161. szItem[0] = 0;
  7162. menu_additem(menu, temp, szItem, MaxClients, -1);
  7163. HasTarget = true;
  7164. }
  7165. else
  7166. {
  7167. formatex(temp, 63, "\r%L", id, "GIFT_SELECT_TARGET");
  7168. szItem[0] = 0;
  7169. menu_additem(menu, temp, szItem, MaxClients, -1);
  7170. }
  7171. if (!_IsGoodItem(g_iTradeItem[id]))
  7172. {
  7173. formatex(temp, 63, "\r%L\n", id, "GIFT_SELECT_ITEM");
  7174. szItem[0] = 1;
  7175. menu_additem(menu, temp, szItem, MaxClients, -1);
  7176. }
  7177. else
  7178. {
  7179. new Item[32];
  7180. _GetItemName(g_iTradeItem[id], Item, 31);
  7181. new var1;
  7182. if (g_bTradingStt[id])
  7183. {
  7184. var1 = 410880;
  7185. }
  7186. else
  7187. {
  7188. var1 = 410944;
  7189. }
  7190. formatex(temp, 63, "\r%s\w%s\n", var1, Item);
  7191. szItem[0] = 1;
  7192. menu_additem(menu, temp, szItem, MaxClients, -1);
  7193. HasItem = true;
  7194. }
  7195. new var2;
  7196. if (HasTarget && HasItem)
  7197. {
  7198. formatex(temp, 63, "\r%L", id, "TRADE_SEND_OFFER");
  7199. szItem[0] = 2;
  7200. menu_additem(menu, temp, szItem, MaxClients, -1);
  7201. }
  7202. new var3;
  7203. if (g_bTradeActive[id] || g_bTradeSecond[id])
  7204. {
  7205. formatex(temp, 63, "\r%L", id, "TRADE_CANCEL");
  7206. szItem[0] = 3;
  7207. menu_additem(menu, temp, szItem, MaxClients, -1);
  7208. }
  7209. menu_display(id, menu, MaxClients, -1);
  7210. return 0;
  7211. }
  7212.  
  7213. public trade_menu_handler(id, menu, item)
  7214. {
  7215. if (item == -3)
  7216. {
  7217. if (g_bTradeSecond[id])
  7218. {
  7219. clcmd_say_deny(id);
  7220. }
  7221. _ShowMainMenu(id);
  7222. menu_destroy(menu);
  7223. return 1;
  7224. }
  7225. new itemdata[2];
  7226. new dummy;
  7227. new index;
  7228. menu_item_getinfo(menu, item, dummy, itemdata, 1, 411108, MaxClients, dummy);
  7229. index = itemdata[0];
  7230. switch (index)
  7231. {
  7232. case 0:
  7233. {
  7234. new var5;
  7235. if (g_bTradeActive[id] || g_bTradeSecond[id])
  7236. {
  7237. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_LOCKED");
  7238. _ShowTradeMenu(id);
  7239. }
  7240. else
  7241. {
  7242. _SelectTradeTarget(id);
  7243. }
  7244. }
  7245. case 1:
  7246. {
  7247. new var4;
  7248. if (g_bTradeActive[id] && !g_bTradeSecond[id])
  7249. {
  7250. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_LOCKED");
  7251. _ShowTradeMenu(id);
  7252. }
  7253. else
  7254. {
  7255. _SelectTradeItem(id);
  7256. }
  7257. }
  7258. case 2:
  7259. {
  7260. new target = g_iTradeTarget[id];
  7261. new _item = g_iTradeItem[id];
  7262. new var2;
  7263. if (!g_bLogged[target] || (0 < target && 32 >= target))
  7264. {
  7265. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "INVALID_TARGET");
  7266. _ResetTradeData(id);
  7267. _ShowTradeMenu(id);
  7268. }
  7269. else
  7270. {
  7271. if (!_UserHasItem(id, _item))
  7272. {
  7273. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NO_LONGER");
  7274. g_iTradeItem[id] = -1;
  7275. _ShowTradeMenu(id);
  7276. return 1;
  7277. }
  7278. new var3;
  7279. if (g_bTradeSecond[id] && !_UserHasItem(target, g_iTradeItem[target]))
  7280. {
  7281. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_FAILED");
  7282. client_print_color(target, target, "\x04%s\x01 %L", "[CSGO Classy]", target, "TRADE_FAILED");
  7283. _ResetTradeData(id);
  7284. _ResetTradeData(target);
  7285. _ShowTradeMenu(id);
  7286. return 1;
  7287. }
  7288. if (5 <= g_iUserSkins[target][_item])
  7289. {
  7290. client_print_color(id, id, "\x04%s\x01 \x04%s\x01 can not receive that skin anymore, he already have\x04 5 out of 5", "[CSGO Classy]", g_szName[target]);
  7291. _ShowGiftMenu(id);
  7292. _ShowTradeMenu(id);
  7293. return 1;
  7294. }
  7295. g_bTradeActive[id] = 1;
  7296. g_iTradeRequest[target] = id;
  7297. new szItem[50];
  7298. _GetItemName(g_iTradeItem[id], szItem, 49);
  7299. if (g_bTradingStt[id])
  7300. {
  7301. format(szItem, 49, "StatTrack (TM) %s", szItem);
  7302. }
  7303. if (!g_bTradeSecond[id])
  7304. {
  7305. client_print_color(target, target, "\x04%s\x01 %L", "[CSGO Classy]", target, "TRADE_INFO1", g_szName[id], szItem);
  7306. client_print_color(target, target, "\x04%s\x01 %L", "[CSGO Classy]", target, "TRADE_INFO2");
  7307. }
  7308. else
  7309. {
  7310. if (5 <= g_iUserSkins[id][_item])
  7311. {
  7312. client_print_color(id, id, "\x04%s\x01 \x04%s\x01 can not receive that skin anymore, he already have\x04 5 out of 5", "[CSGO Classy]", g_szName[id]);
  7313. _ShowTradeMenu(target);
  7314. return 1;
  7315. }
  7316. new yItem[50];
  7317. _GetItemName(g_iTradeItem[target], yItem, 49);
  7318. if (g_bTradingStt[target])
  7319. {
  7320. format(yItem, 49, "StatTrack (TM) %s", yItem);
  7321. }
  7322. client_print_color(target, target, "\x04%s %L", "[CSGO Classy]", target, "TRADE_INFO3", g_szName[id], szItem, yItem);
  7323. client_print_color(target, target, "\x04%s\x01 %L", "[CSGO Classy]", target, "TRADE_INFO2");
  7324. g_bTradeAccept[target] = 1;
  7325. }
  7326. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_SEND", g_szName[target]);
  7327. }
  7328. }
  7329. case 3:
  7330. {
  7331. if (g_bTradeSecond[id])
  7332. {
  7333. clcmd_say_deny(id);
  7334. }
  7335. else
  7336. {
  7337. _ResetTradeData(id);
  7338. }
  7339. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_CANCELED");
  7340. _ShowTradeMenu(id);
  7341. }
  7342. default:
  7343. {
  7344. }
  7345. }
  7346. menu_destroy(menu);
  7347. return 1;
  7348. }
  7349.  
  7350. _SelectTradeTarget(id)
  7351. {
  7352. new temp[64];
  7353. formatex(temp, 63, "\r%s %L", "[CSGO Classy]", id, "GIFT_SELECT_TARGET");
  7354. new menu = menu_create(temp, "tst_menu_handler", MaxClients);
  7355. new szItem[10];
  7356. szItem[1] = 0;
  7357. new Pl[32];
  7358. new n;
  7359. new p;
  7360. get_players(Pl, n, 413840, 413848);
  7361. new total;
  7362. if (n)
  7363. {
  7364. new i;
  7365. while (i < n)
  7366. {
  7367. p = Pl[i];
  7368. if (g_bLogged[p])
  7369. {
  7370. if (!id == p)
  7371. {
  7372. szItem[0] = p;
  7373. menu_additem(menu, g_szName[p], szItem, MaxClients, -1);
  7374. total++;
  7375. }
  7376. }
  7377. i++;
  7378. }
  7379. }
  7380. if (!total)
  7381. {
  7382. formatex(temp, 63, "\r%L", id, "NO_REGISTERED_PLAYERS");
  7383. num_to_str(2000, szItem, 9);
  7384. menu_additem(menu, temp, szItem, MaxClients, -1);
  7385. }
  7386. menu_display(id, menu, MaxClients, -1);
  7387. return 0;
  7388. }
  7389.  
  7390. public tst_menu_handler(id, menu, item)
  7391. {
  7392. if (item == -3)
  7393. {
  7394. _ShowTradeMenu(id);
  7395. menu_destroy(menu);
  7396. return 1;
  7397. }
  7398. new itemdata[2];
  7399. new dummy;
  7400. new index;
  7401. new name[32];
  7402. menu_item_getinfo(menu, item, dummy, itemdata, 1, name, "", dummy);
  7403. index = itemdata[0];
  7404. switch (index)
  7405. {
  7406. case 2000:
  7407. {
  7408. _ShowMainMenu(id);
  7409. menu_destroy(menu);
  7410. return 1;
  7411. }
  7412. default:
  7413. {
  7414. if (g_iTradeRequest[index])
  7415. {
  7416. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TARGET_TRADE_ACTIVE", name);
  7417. }
  7418. else
  7419. {
  7420. g_iTradeTarget[id] = index;
  7421. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_TARGET", name);
  7422. }
  7423. _ShowTradeMenu(id);
  7424. menu_destroy(menu);
  7425. return 1;
  7426. }
  7427. }
  7428. }
  7429.  
  7430. _SelectTradeItem(id)
  7431. {
  7432. if (notAnySkins(id))
  7433. {
  7434. _ShowMainMenu(id);
  7435. return 0;
  7436. }
  7437. _ShowSkinMenu(id);
  7438. return 0;
  7439. }
  7440.  
  7441. openTradeMenu(id, iWeaponId)
  7442. {
  7443. new temp[64];
  7444. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  7445. new menu = menu_create(temp, "tsi_menu_handler", MaxClients);
  7446. new szItem[10];
  7447. szItem[1] = 0;
  7448. new total;
  7449. new szSkin[32];
  7450. new num;
  7451. new type[2];
  7452. new i;
  7453. new wid;
  7454. while (i < g_iSkinsNum)
  7455. {
  7456. num = g_iUserSkins[id][i];
  7457. if (num > 0)
  7458. {
  7459. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  7460. if (iWeaponId != wid)
  7461. {
  7462. i++;
  7463. }
  7464. ArrayGetString(g_aSkinName, i, szSkin, "");
  7465. ArrayGetString(g_aSkinType, i, type, 1);
  7466. new applied[64];
  7467. switch (type[0])
  7468. {
  7469. case 99:
  7470. {
  7471. applied = {0};
  7472. }
  7473. default:
  7474. {
  7475. applied = {0};
  7476. }
  7477. }
  7478. new var1;
  7479. if (g_bIsWeaponStattrack[id][i])
  7480. {
  7481. var1 = 414544;
  7482. }
  7483. else
  7484. {
  7485. var1 = 414608;
  7486. }
  7487. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  7488. num_to_str(i, szItem, 9);
  7489. menu_additem(menu, temp, szItem, MaxClients, -1);
  7490. total++;
  7491. }
  7492. i++;
  7493. }
  7494. if (!total)
  7495. {
  7496. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  7497. num_to_str(2000, szItem, 9);
  7498. menu_additem(menu, temp, szItem, MaxClients, -1);
  7499. }
  7500. menu_display(id, menu, MaxClients, -1);
  7501. return 0;
  7502. }
  7503.  
  7504. public tsi_menu_handler(id, menu, item)
  7505. {
  7506. if (item == -3)
  7507. {
  7508. _ShowTradeMenu(id);
  7509. menu_destroy(menu);
  7510. return 1;
  7511. }
  7512. new itemdata[5];
  7513. new dummy;
  7514. new index;
  7515. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 414668, MaxClients, dummy);
  7516. index = str_to_num(itemdata);
  7517. switch (index)
  7518. {
  7519. case 2000:
  7520. {
  7521. _ShowTradeMenu(id);
  7522. menu_destroy(menu);
  7523. return 1;
  7524. }
  7525. default:
  7526. {
  7527. new var1;
  7528. if (g_iUserSellItem[id] == index && g_bUserSell[id])
  7529. {
  7530. new Item[50];
  7531. _GetItemName(g_iUserSellItem[id], Item, 49);
  7532. if (g_bPublishedStattrackSkin[id])
  7533. {
  7534. format(Item, 49, "StatTrack (TM) %s", Item);
  7535. }
  7536. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_INVALID_ITEM", Item);
  7537. _SelectTradeItem(id);
  7538. }
  7539. else
  7540. {
  7541. if (ArrayGetCell(g_aSkinWeaponID, index, MaxClients, MaxClients) != g_iWeaponIdToCheck[id])
  7542. {
  7543. _SelectTradeItem(id);
  7544. menu_destroy(menu);
  7545. return 1;
  7546. }
  7547. g_iTradeItem[id] = index;
  7548. if (g_bIsWeaponStattrack[id][index])
  7549. {
  7550. if (1 < g_iUserSkins[id][index])
  7551. {
  7552. askWhichType(id, index);
  7553. g_iAskType[id] = 4;
  7554. return 1;
  7555. }
  7556. g_bTradingStt[id] = 1;
  7557. }
  7558. else
  7559. {
  7560. g_bTradingStt[id] = 0;
  7561. }
  7562. new szItem[32];
  7563. _GetItemName(index, szItem, 31);
  7564. if (g_bTradingStt[id])
  7565. {
  7566. client_print_color(id, id, "\x04%s\x01 You choosed \x04StatTrack (TM) %s\x01 to be offered in the \x04trade offer", "[CSGO Classy]", szItem);
  7567. }
  7568. else
  7569. {
  7570. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_ITEM", szItem);
  7571. }
  7572. _ShowTradeMenu(id);
  7573. }
  7574. menu_destroy(menu);
  7575. return 1;
  7576. }
  7577. }
  7578. }
  7579.  
  7580. _ResetTradeData(id)
  7581. {
  7582. g_bTradeActive[id] = 0;
  7583. g_bTradeSecond[id] = 0;
  7584. g_bTradeAccept[id] = 0;
  7585. g_iTradeTarget[id] = 0;
  7586. g_iTradeItem[id] = -1;
  7587. g_iTradeRequest[id] = 0;
  7588. g_bTradingStt[id] = 0;
  7589. return 0;
  7590. }
  7591.  
  7592. public clcmd_say_accept(id)
  7593. {
  7594. new sender = g_iTradeRequest[id];
  7595. new var1;
  7596. if (1 > sender || 32 < sender)
  7597. {
  7598. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "DONT_HAVE_TRADE");
  7599. return 1;
  7600. }
  7601. new var3;
  7602. if (!g_bLogged[sender] || (0 < sender && 32 >= sender))
  7603. {
  7604. _ResetTradeData(id);
  7605. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_INVALID_SENDER");
  7606. return 1;
  7607. }
  7608. new var4;
  7609. if (!g_bTradeActive[sender] && g_iTradeTarget[sender] == id)
  7610. {
  7611. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_IS_CANCELED", g_iTradeRequest[id]);
  7612. _ResetTradeData(id);
  7613. return 1;
  7614. }
  7615. if (g_bTradeAccept[id])
  7616. {
  7617. new sItem = g_iTradeItem[sender];
  7618. new tItem = g_iTradeItem[id];
  7619. new var5;
  7620. if (!_UserHasItem(id, tItem) || !_UserHasItem(sender, sItem))
  7621. {
  7622. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_FAILED2");
  7623. client_print_color(sender, sender, "\x04%s\x01 %L", "[CSGO Classy]", sender, "TRADE_FAILED2");
  7624. _ResetTradeData(id);
  7625. _ResetTradeData(sender);
  7626. return 1;
  7627. }
  7628. switch (sItem)
  7629. {
  7630. default:
  7631. {
  7632. g_iUserSkins[id][sItem]++;
  7633. g_iUserSkins[sender][sItem]--;
  7634. switch (tItem)
  7635. {
  7636. default:
  7637. {
  7638. g_iUserSkins[id][tItem]--;
  7639. g_iUserSkins[sender][tItem]++;
  7640. checkInstantDefault(sender, sItem);
  7641. checkInstantDefault(id, tItem);
  7642. new sItemsz[50];
  7643. new tItemsz[50];
  7644. _GetItemName(tItem, tItemsz, 49);
  7645. _GetItemName(sItem, sItemsz, 49);
  7646. if (g_bTradingStt[sender])
  7647. {
  7648. g_bIsWeaponStattrack[sender][sItem] = false;
  7649. g_iUserStattrackKillCount[sender][sItem] = 0;
  7650. g_bIsWeaponStattrack[id][sItem] = true;
  7651. format(sItemsz, 49, "StatTrack (TM) %s", sItemsz);
  7652. }
  7653. if (g_bTradingStt[id])
  7654. {
  7655. g_bIsWeaponStattrack[id][tItem] = false;
  7656. g_iUserStattrackKillCount[id][tItem] = 0;
  7657. g_bIsWeaponStattrack[sender][tItem] = true;
  7658. format(tItemsz, 49, "StatTrack (TM) %s", tItemsz);
  7659. }
  7660. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_SUCCESS", tItemsz, sItemsz);
  7661. client_print_color(sender, sender, "\x04%s\x01 %L", "[CSGO Classy]", sender, "TRADE_SUCCESS", sItemsz, tItemsz);
  7662. g_bTradingStt[id] = 0;
  7663. g_bTradingStt[sender] = 0;
  7664. _ResetTradeData(id);
  7665. _ResetTradeData(sender);
  7666. }
  7667. }
  7668. }
  7669. }
  7670. }
  7671. else
  7672. {
  7673. if (!g_bTradeSecond[id])
  7674. {
  7675. g_iTradeTarget[id] = sender;
  7676. g_iTradeItem[id] = -1;
  7677. g_bTradeSecond[id] = 1;
  7678. g_iMenuToOpen[id] = 6;
  7679. _ShowTradeMenu(id);
  7680. }
  7681. }
  7682. _SaveData(id);
  7683. _SaveData(sender);
  7684. return 1;
  7685. }
  7686.  
  7687. public clcmd_say_deny(id)
  7688. {
  7689. new sender = g_iTradeRequest[id];
  7690. new var1;
  7691. if (sender < 1 || sender > 32)
  7692. {
  7693. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "DONT_HAVE_TRADE");
  7694. return 1;
  7695. }
  7696. new var3;
  7697. if (!g_bLogged[sender] || (0 < sender && 32 >= sender))
  7698. {
  7699. _ResetTradeData(id);
  7700. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_INVALID_SENDER");
  7701. return 1;
  7702. }
  7703. new var4;
  7704. if (!g_bTradeActive[sender] && g_iTradeTarget[sender] == id)
  7705. {
  7706. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_IS_CANCELED");
  7707. _ResetTradeData(id);
  7708. return 1;
  7709. }
  7710. _ResetTradeData(id);
  7711. _ResetTradeData(sender);
  7712. client_print_color(sender, sender, "\x04%s\x01 %L", "[CSGO Classy]", sender, "TRADE_REFUSE_TARGET", g_szName[id]);
  7713. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "TRADE_REFUSE_SENDER", g_szName[sender]);
  7714. return 1;
  7715. }
  7716.  
  7717. _ShowGamesMenu(id)
  7718. {
  7719. new temp[64];
  7720. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "GAMBLING");
  7721. new menu = menu_create(temp, "games_menu_handler", MaxClients);
  7722. new szItem[2];
  7723. szItem[1] = 0;
  7724. formatex(temp, 63, "\w%L", id, "GAME_RAFFLE", g_iTombolaCost);
  7725. menu_additem(menu, temp, szItem, MaxClients, -1);
  7726. formatex(temp, 63, "\w%L", id, "GAME_ROULETTE");
  7727. menu_additem(menu, temp, szItem, MaxClients, -1);
  7728. formatex(temp, 63, "\w%L", id, "GAME_JACKPOT");
  7729. menu_additem(menu, temp, szItem, MaxClients, -1);
  7730. formatex(temp, 63, "\w%L", id, "GAME_COINFLIP");
  7731. menu_additem(menu, temp, szItem, MaxClients, -1);
  7732. menu_display(id, menu, MaxClients, -1);
  7733. return 0;
  7734. }
  7735.  
  7736. public games_menu_handler(id, menu, item)
  7737. {
  7738. if (item == -3)
  7739. {
  7740. _ShowMainMenu(id);
  7741. menu_destroy(menu);
  7742. return 1;
  7743. }
  7744. switch (item)
  7745. {
  7746. case 0:
  7747. {
  7748. _ShowTombolaMenu(id);
  7749. }
  7750. case 1:
  7751. {
  7752. new money = g_iUserMoney[id];
  7753. if (money < g_iRouletteCost)
  7754. {
  7755. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NOT_ENOUGH_MONEY", g_iRouletteCost - money);
  7756. _ShowGamesMenu(id);
  7757. }
  7758. else
  7759. {
  7760. if (g_bRoulettePlay[id])
  7761. {
  7762. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ROULETTE_NEXT");
  7763. _ShowGamesMenu(id);
  7764. }
  7765. _ShowRouletteMenu(id);
  7766. }
  7767. }
  7768. case 2:
  7769. {
  7770. if (g_bJackpotWork)
  7771. {
  7772. g_iMenuToOpen[id] = 7;
  7773. _ShowJackpotMenu(id);
  7774. }
  7775. else
  7776. {
  7777. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "JACKPOT_UNAVAIBLE", get_pcvar_num(c_JackpotTimer));
  7778. _ShowGamesMenu(id);
  7779. }
  7780. }
  7781. case 3:
  7782. {
  7783. g_iMenuToOpen[id] = 2;
  7784. _ShowCFMenu(id);
  7785. }
  7786. default:
  7787. {
  7788. }
  7789. }
  7790. menu_destroy(menu);
  7791. return 1;
  7792. }
  7793.  
  7794. _ShowTombolaMenu(id)
  7795. {
  7796. new temp[64];
  7797. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "RAFFLE_MENU");
  7798. new menu = menu_create(temp, "tombola_menu_handler", MaxClients);
  7799. new szItem[2];
  7800. szItem[1] = 0;
  7801. new Timer[32];
  7802. _FormatTime(Timer, 31, g_iNextTombolaStart);
  7803. formatex(temp, 63, "\w%L", id, "COUNTDOWN", Timer);
  7804. szItem[0] = 0;
  7805. menu_additem(menu, temp, szItem, MaxClients, -1);
  7806. formatex(temp, 63, "\w%L", id, "RAFFLE_PLAYERS", g_iTombolaPlayers);
  7807. szItem[0] = 0;
  7808. menu_additem(menu, temp, szItem, MaxClients, -1);
  7809. formatex(temp, 63, "\w%L\n", id, "RAFFLE_TOTAL_STAKE", g_iTombolaPrize);
  7810. szItem[0] = 0;
  7811. menu_additem(menu, temp, szItem, MaxClients, -1);
  7812. if (g_bUserPlay[id])
  7813. {
  7814. formatex(temp, 63, "\r%L", id, "RAFFLE_ALREADY_JOINED");
  7815. szItem[0] = 0;
  7816. menu_additem(menu, temp, szItem, MaxClients, -1);
  7817. }
  7818. else
  7819. {
  7820. formatex(temp, 63, "\r%L \r[%d$]", id, "RAFFLE_JOIN", g_iTombolaCost);
  7821. szItem[0] = 1;
  7822. menu_additem(menu, temp, szItem, MaxClients, -1);
  7823. }
  7824. menu_display(id, menu, MaxClients, -1);
  7825. return 0;
  7826. }
  7827.  
  7828. _FormatTime(timer[], len, nextevent)
  7829. {
  7830. new seconds = nextevent - get_systime(MaxClients);
  7831. new minutes;
  7832. while (seconds >= 60)
  7833. {
  7834. seconds += -60;
  7835. minutes++;
  7836. }
  7837. new bool:add_before;
  7838. new temp[32];
  7839. if (seconds)
  7840. {
  7841. new second[64];
  7842. if (seconds == 1)
  7843. {
  7844. formatex(second, 63, "%L", 0, "TEXT_SECOND");
  7845. }
  7846. else
  7847. {
  7848. formatex(second, 63, "%L", 0, "TEXT_SECONDS");
  7849. }
  7850. formatex(temp, "", "%i %s", seconds, second);
  7851. add_before = true;
  7852. }
  7853. if (minutes)
  7854. {
  7855. if (add_before)
  7856. {
  7857. new minute[64];
  7858. if (minutes == 1)
  7859. {
  7860. formatex(minute, 63, "%L", 0, "TEXT_MINUTE");
  7861. }
  7862. else
  7863. {
  7864. formatex(minute, 63, "%L", 0, "TEXT_MINUTES");
  7865. }
  7866. format(temp, "", "%i %s and %s", minutes, minute, temp);
  7867. }
  7868. new minute[64];
  7869. if (minutes == 1)
  7870. {
  7871. formatex(minute, 63, "%L", 0, "TEXT_MINUTE");
  7872. }
  7873. else
  7874. {
  7875. formatex(minute, 63, "%L", 0, "TEXT_MINUTES");
  7876. }
  7877. formatex(temp, "", "%i %s", minutes, minute);
  7878. add_before = true;
  7879. }
  7880. if (add_before)
  7881. {
  7882. formatex(timer, len, "%s", temp);
  7883. }
  7884. return 0;
  7885. }
  7886.  
  7887. public tombola_menu_handler(id, menu, item)
  7888. {
  7889. if (item == -3)
  7890. {
  7891. _ShowGamesMenu(id);
  7892. menu_destroy(menu);
  7893. return 1;
  7894. }
  7895. new itemdata[2];
  7896. new dummy;
  7897. new index;
  7898. menu_item_getinfo(menu, item, dummy, itemdata, 1, 419524, MaxClients, dummy);
  7899. index = itemdata[0];
  7900. switch (index)
  7901. {
  7902. case 0:
  7903. {
  7904. _ShowTombolaMenu(id);
  7905. }
  7906. case 1:
  7907. {
  7908. new uMoney = g_iUserMoney[id];
  7909. if (!g_bTombolaWork)
  7910. {
  7911. }
  7912. else
  7913. {
  7914. if (uMoney < g_iTombolaCost)
  7915. {
  7916. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NOT_ENOUGH_MONEY", g_iTombolaCost - uMoney);
  7917. _ShowTombolaMenu(id);
  7918. return 1;
  7919. }
  7920. g_iUserMoney[id] -= g_iTombolaCost;
  7921. g_iTombolaPrize = g_iTombolaPrize + g_iTombolaCost;
  7922. g_bUserPlay[id] = 1;
  7923. ArrayPushCell(g_aTombola, id);
  7924. g_iTombolaPlayers = g_iTombolaPlayers + 1;
  7925. _SaveData(id);
  7926. client_print_color(MaxClients, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "RAFFLE_ANNOUNCE_JOIN", g_szName[id]);
  7927. _ShowTombolaMenu(id);
  7928. }
  7929. }
  7930. default:
  7931. {
  7932. }
  7933. }
  7934. menu_destroy(menu);
  7935. return 1;
  7936. }
  7937.  
  7938. public task_TombolaRun(task)
  7939. {
  7940. if (1 > g_iTombolaPlayers)
  7941. {
  7942. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "RAFFLE_NOBODY_JOINED");
  7943. }
  7944. else
  7945. {
  7946. if (2 > g_iTombolaPlayers)
  7947. {
  7948. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "RAFFLE_ONLY_ONE");
  7949. }
  7950. new id;
  7951. new size = ArraySize(g_aTombola);
  7952. new bool:succes;
  7953. new random;
  7954. new run;
  7955. do {
  7956. random = random_num(MaxClients, size + -1);
  7957. id = ArrayGetCell(g_aTombola, random, MaxClients, MaxClients);
  7958. new var1;
  7959. if ((0 < id && 32 >= id) || !is_user_connected(id))
  7960. {
  7961. succes = true;
  7962. if (2 > g_iTombolaPlayers)
  7963. {
  7964. new var3 = g_iUserMoney[id];
  7965. var3 = var3[g_iTombolaCost];
  7966. _SaveData(id);
  7967. }
  7968. else
  7969. {
  7970. new var4 = g_iUserMoney[id];
  7971. var4 = var4[g_iTombolaPrize];
  7972. _SaveData(id);
  7973. new Name[32];
  7974. get_user_name(id, Name, "");
  7975. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", -1, "RAFFLE_WINNER", Name, g_iTombolaPrize);
  7976. }
  7977. }
  7978. else
  7979. {
  7980. ArrayDeleteItem(g_aTombola, random);
  7981. size--;
  7982. }
  7983. if (!succes)
  7984. {
  7985. if (size > 0)
  7986. {
  7987. }
  7988. }
  7989. } while (run);
  7990. }
  7991. arrayset(g_bUserPlay, MaxClients, 33);
  7992. g_iTombolaPlayers = 0;
  7993. g_iTombolaPrize = 0;
  7994. ArrayClear(g_aTombola);
  7995. g_iNextTombolaStart = get_systime(MaxClients) + g_iTombolaTimer;
  7996. new Timer[32];
  7997. _FormatTime(Timer, 31, g_iNextTombolaStart);
  7998. return 0;
  7999. }
  8000.  
  8001. _ShowRouletteMenu(id)
  8002. {
  8003. new temp[64];
  8004. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "GAME_ROULETTE");
  8005. new menu = menu_create(temp, "roulette_menu_handler", MaxClients);
  8006. new szItem[2];
  8007. szItem[1] = 0;
  8008. formatex(temp, 63, "\w%L", id, "ROULETTE_UNDER", g_iRouletteMin);
  8009. menu_additem(menu, temp, szItem, MaxClients, -1);
  8010. formatex(temp, 63, "\w%L", id, "ROULETTE_OVER", g_iRouletteMin);
  8011. menu_additem(menu, temp, szItem, MaxClients, -1);
  8012. formatex(temp, 63, "\w%L\n", id, "ROULETTE_EQUAL", g_iRouletteMax);
  8013. menu_additem(menu, temp, szItem, MaxClients, -1);
  8014. formatex(temp, 63, "\w%L", id, "ROULETTE_BET", g_iUserBetMoney[id]);
  8015. menu_additem(menu, temp, szItem, MaxClients, -1);
  8016. menu_display(id, menu, MaxClients, -1);
  8017. return 0;
  8018. }
  8019.  
  8020. public roulette_menu_handler(id, menu, item)
  8021. {
  8022. if (item == -3)
  8023. {
  8024. _ShowGamesMenu(id);
  8025. menu_destroy(menu);
  8026. return 1;
  8027. }
  8028. if (0 <= item <= 2)
  8029. {
  8030. if (g_iUserMoney[id] >= g_iUserBetMoney[id])
  8031. {
  8032. g_iUserMoney[id] -= g_iUserBetMoney[id];
  8033. }
  8034. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NOT_ENOUGH_MONEY", g_iUserBetMoney[id] - g_iUserMoney[id]);
  8035. return 1;
  8036. }
  8037. new chance = random_num(1, 100);
  8038. switch (item)
  8039. {
  8040. case 0:
  8041. {
  8042. if (chance <= 48)
  8043. {
  8044. _RouletteWin(id, g_iRouletteMin);
  8045. }
  8046. else
  8047. {
  8048. _RouletteLoose(id, chance);
  8049. }
  8050. }
  8051. case 1:
  8052. {
  8053. if (chance >= 53)
  8054. {
  8055. _RouletteWin(id, g_iRouletteMin);
  8056. }
  8057. else
  8058. {
  8059. _RouletteLoose(id, chance);
  8060. }
  8061. }
  8062. case 2:
  8063. {
  8064. if (48 <= chance <= 53)
  8065. {
  8066. _RouletteWin(id, g_iRouletteMax);
  8067. }
  8068. else
  8069. {
  8070. _RouletteLoose(id, chance);
  8071. }
  8072. }
  8073. case 3:
  8074. {
  8075. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ROULETTE_STAKE");
  8076. client_cmd(id, "messagemode BetMoney");
  8077. }
  8078. default:
  8079. {
  8080. }
  8081. }
  8082. menu_destroy(menu);
  8083. return 1;
  8084. }
  8085.  
  8086. _RouletteWin(id, multi)
  8087. {
  8088. new num = g_iUserBetMoney[id] * multi;
  8089. new var1 = g_iUserMoney[id];
  8090. var1 = var1[num];
  8091. g_bRoulettePlay[id] = 1;
  8092. client_print_color(MaxClients, id, "\x04%s\x01 %L", "[CSGO Classy]", -1, "ROULETTE_WIN", g_szName[id], num);
  8093. _SaveData(id);
  8094. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ROULETTE_NEXT");
  8095. return 0;
  8096. }
  8097.  
  8098. _RouletteLoose(id, num)
  8099. {
  8100. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ROULETTE_LOOSE", num);
  8101. _SaveData(id);
  8102. _ShowGamesMenu(id);
  8103. return 0;
  8104. }
  8105.  
  8106. public concmd_betmoney(id)
  8107. {
  8108. new data[16];
  8109. read_args(data, 15);
  8110. remove_quotes(data);
  8111. new Amount = str_to_num(data);
  8112. new var1;
  8113. if (Amount < 100 || Amount > 1000)
  8114. {
  8115. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "ROULETTE_INFO", 100, 1000);
  8116. client_cmd(id, "messagemode BetMoney");
  8117. return 1;
  8118. }
  8119. g_iUserBetMoney[id] = Amount;
  8120. _ShowRouletteMenu(id);
  8121. return 1;
  8122. }
  8123.  
  8124. _ShowJackpotMenu(id)
  8125. {
  8126. new temp[64];
  8127. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "GAME_JACKPOT");
  8128. new menu = menu_create(temp, "jackpot_menu_handler", MaxClients);
  8129. new szItem[2];
  8130. szItem[1] = 0;
  8131. if (!_IsGoodItem(g_iUserJackpotItem[id]))
  8132. {
  8133. formatex(temp, 63, "\w%L", id, "SELECT_ITEM");
  8134. szItem[0] = 1;
  8135. menu_additem(menu, temp, szItem, MaxClients, -1);
  8136. }
  8137. else
  8138. {
  8139. new Item[50];
  8140. _GetItemName(g_iUserJackpotItem[id], Item, 49);
  8141. new var1;
  8142. if (g_bJackpotStt[id])
  8143. {
  8144. var1 = 422260;
  8145. }
  8146. else
  8147. {
  8148. var1 = 422324;
  8149. }
  8150. formatex(temp, 63, "\r%s\w%s", var1, Item);
  8151. szItem[0] = 1;
  8152. menu_additem(menu, temp, szItem, MaxClients, -1);
  8153. }
  8154. if (g_bUserPlayJackpot[id])
  8155. {
  8156. formatex(temp, 63, "\r%L\n", id, "JACKPOT_ALREADY_JOINED");
  8157. szItem[0] = 0;
  8158. menu_additem(menu, temp, szItem, MaxClients, -1);
  8159. }
  8160. else
  8161. {
  8162. formatex(temp, 63, "\r%L\n", id, "JACKPOT_JOIN");
  8163. szItem[0] = 2;
  8164. menu_additem(menu, temp, szItem, MaxClients, -1);
  8165. }
  8166. new Timer[32];
  8167. _FormatTime(Timer, 31, g_iJackpotClose);
  8168. formatex(temp, 63, "\w%L", id, "COUNTDOWN", Timer);
  8169. szItem[0] = 0;
  8170. menu_additem(menu, temp, szItem, MaxClients, -1);
  8171. menu_display(id, menu, MaxClients, -1);
  8172. return 0;
  8173. }
  8174.  
  8175. public jackpot_menu_handler(id, menu, item)
  8176. {
  8177. if (item == -3)
  8178. {
  8179. _ShowGamesMenu(id);
  8180. menu_destroy(menu);
  8181. return 1;
  8182. }
  8183. new itemdata[2];
  8184. new dummy;
  8185. new index;
  8186. menu_item_getinfo(menu, item, dummy, itemdata, 1, 422580, MaxClients, dummy);
  8187. index = itemdata[0];
  8188. if (!g_bJackpotWork)
  8189. {
  8190. _ShowGamesMenu(id);
  8191. menu_destroy(menu);
  8192. return 1;
  8193. }
  8194. switch (index)
  8195. {
  8196. case 0:
  8197. {
  8198. _ShowJackpotMenu(id);
  8199. }
  8200. case 1:
  8201. {
  8202. if (g_bUserPlayJackpot[id])
  8203. {
  8204. _ShowJackpotMenu(id);
  8205. }
  8206. else
  8207. {
  8208. _SelectJackpotSkin(id);
  8209. }
  8210. }
  8211. case 2:
  8212. {
  8213. new skin = g_iUserJackpotItem[id];
  8214. if (!_IsGoodItem(skin))
  8215. {
  8216. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "JACKPOT_JOIN_PRESS");
  8217. _ShowJackpotMenu(id);
  8218. }
  8219. else
  8220. {
  8221. if (!_UserHasItem(id, skin))
  8222. {
  8223. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "NO_LONGER");
  8224. g_iUserJackpotItem[id] = -1;
  8225. }
  8226. g_bUserPlayJackpot[id] = 1;
  8227. g_iUserSkins[id][skin]--;
  8228. checkInstantDefault(id, skin);
  8229. ArrayPushCell(g_aJackpotSkins, skin);
  8230. ArrayPushCell(g_aJackpotUsers, id);
  8231. ArrayPushCell(g_aJackPotSttSkins, g_bJackpotStt[id]);
  8232. new szItem[50];
  8233. _GetItemName(skin, szItem, 49);
  8234. if (g_bJackpotStt[id])
  8235. {
  8236. format(szItem, 49, "StatTrack (TM) %s", szItem);
  8237. g_iUserStattrackKillCount[id][skin] = 0;
  8238. g_bIsWeaponStattrack[id][skin] = false;
  8239. }
  8240. client_print_color(MaxClients, MaxClients, "\x04%s %L", "[CSGO Classy]", -1, "JACKPOT_JOINED", g_szName[id], szItem);
  8241. _SaveData(id);
  8242. }
  8243. }
  8244. default:
  8245. {
  8246. }
  8247. }
  8248. menu_destroy(menu);
  8249. return 1;
  8250. }
  8251.  
  8252. _SelectJackpotSkin(id)
  8253. {
  8254. _ShowSkinMenu(id);
  8255. return 0;
  8256. }
  8257.  
  8258. openJackpotMenu(id, iWeaponId)
  8259. {
  8260. new temp[64];
  8261. formatex(temp, 63, "\r%s \w%L", "[CSGO Classy]", id, "INVENTORY");
  8262. new menu = menu_create(temp, "jp_skins_menu_handler", MaxClients);
  8263. new szItem[10];
  8264. szItem[1] = 0;
  8265. new szSkin[32];
  8266. new num;
  8267. new type[2];
  8268. new total;
  8269. new i;
  8270. new wid;
  8271. while (i < g_iSkinsNum)
  8272. {
  8273. num = g_iUserSkins[id][i];
  8274. if (num > 0)
  8275. {
  8276. wid = ArrayGetCell(g_aSkinWeaponID, i, MaxClients, MaxClients);
  8277. if (iWeaponId != wid)
  8278. {
  8279. i++;
  8280. }
  8281. ArrayGetString(g_aSkinName, i, szSkin, "");
  8282. ArrayGetString(g_aSkinType, i, type, 1);
  8283. new applied[64];
  8284. switch (type[0])
  8285. {
  8286. case 99:
  8287. {
  8288. applied = {0};
  8289. }
  8290. default:
  8291. {
  8292. applied = {0};
  8293. }
  8294. }
  8295. new var1;
  8296. if (g_bIsWeaponStattrack[id][i])
  8297. {
  8298. var1 = 423388;
  8299. }
  8300. else
  8301. {
  8302. var1 = 423452;
  8303. }
  8304. formatex(temp, 63, "\r%s\w%s \r[%d]", var1, szSkin, num);
  8305. num_to_str(i, szItem, 9);
  8306. menu_additem(menu, temp, szItem, MaxClients, -1);
  8307. total++;
  8308. }
  8309. i++;
  8310. }
  8311. if (!total)
  8312. {
  8313. formatex(temp, 63, "\r%L", id, "NO_ITEMS");
  8314. num_to_str(2000, szItem, 9);
  8315. menu_additem(menu, temp, szItem, MaxClients, -1);
  8316. }
  8317. menu_display(id, menu, MaxClients, -1);
  8318. return 0;
  8319. }
  8320.  
  8321. public jp_skins_menu_handler(id, menu, item)
  8322. {
  8323. if (item == -3)
  8324. {
  8325. _ShowJackpotMenu(id);
  8326. menu_destroy(menu);
  8327. return 1;
  8328. }
  8329. new itemdata[5];
  8330. new dummy;
  8331. new index;
  8332. menu_item_getinfo(menu, item, dummy, itemdata, NULL_STRING, 423512, MaxClients, dummy);
  8333. index = str_to_num(itemdata);
  8334. if (index == 2000)
  8335. {
  8336. _ShowGamesMenu(id);
  8337. menu_destroy(menu);
  8338. return 1;
  8339. }
  8340. if (g_iUserSellItem[id] == index)
  8341. {
  8342. new Item[50];
  8343. _GetItemName(g_iUserSellItem[id], Item, 49);
  8344. if (g_bPublishedStattrackSkin[id])
  8345. {
  8346. format(Item, 49, "Stattrack (TM) %s", Item);
  8347. }
  8348. client_print_color(id, id, "\x04%s\x01 You are \x04currently selling\x01 your \x04%s\x01, you \x04can not\x01 bet it at the \x04Jackpot", "[CSGO Classy]", Item);
  8349. _SelectJackpotSkin(id);
  8350. menu_destroy(menu);
  8351. return 1;
  8352. }
  8353. g_iUserJackpotItem[id] = index;
  8354. if (g_bIsWeaponStattrack[id][index])
  8355. {
  8356. if (1 < g_iUserSkins[id][index])
  8357. {
  8358. askWhichType(id, index);
  8359. g_iAskType[id] = 5;
  8360. return 1;
  8361. }
  8362. g_bJackpotStt[id] = 1;
  8363. }
  8364. else
  8365. {
  8366. g_bJackpotStt[id] = 0;
  8367. }
  8368. _ShowJackpotMenu(id);
  8369. menu_destroy(menu);
  8370. return 1;
  8371. }
  8372.  
  8373. public task_Jackpot(task)
  8374. {
  8375. if (!g_bJackpotWork)
  8376. {
  8377. return 0;
  8378. }
  8379. new id;
  8380. new size = ArraySize(g_aJackpotUsers);
  8381. if (1 > size)
  8382. {
  8383. client_print_color(MaxClients, MaxClients, "\x04%s %L", "[CSGO Classy]", -1, "JACKPOT_NO_ONE");
  8384. _ClearJackpot();
  8385. return 0;
  8386. }
  8387. if (2 > size)
  8388. {
  8389. client_print_color(MaxClients, MaxClients, "\x04%s %L", "[CSGO Classy]", -1, "JACKPOT_ONLY_ONE");
  8390. new id;
  8391. new k;
  8392. id = ArrayGetCell(g_aJackpotUsers, MaxClients, MaxClients, MaxClients);
  8393. new var1;
  8394. if ((0 < id && 32 >= id) || !is_user_connected(id))
  8395. {
  8396. k = ArrayGetCell(g_aJackpotSkins, MaxClients, MaxClients, MaxClients);
  8397. g_iUserSkins[id][k]++;
  8398. }
  8399. _ClearJackpot();
  8400. return 0;
  8401. }
  8402. new bool:succes;
  8403. new random;
  8404. new run;
  8405. do {
  8406. random = random_num(MaxClients, size + -1);
  8407. id = ArrayGetCell(g_aJackpotUsers, random, MaxClients, MaxClients);
  8408. new var3;
  8409. if ((0 < id && 32 >= id) || !is_user_connected(id))
  8410. {
  8411. succes = true;
  8412. new i;
  8413. new j;
  8414. new k;
  8415. i = ArraySize(g_aJackpotSkins);
  8416. j = 0;
  8417. while (j < i)
  8418. {
  8419. k = ArrayGetCell(g_aJackpotSkins, j, MaxClients, MaxClients);
  8420. g_bIsWeaponStattrack[id][k] = ArrayGetCell(g_aJackPotSttSkins, j, MaxClients, MaxClients);
  8421. g_iUserSkins[id][k]++;
  8422. j++;
  8423. }
  8424. _SaveData(id);
  8425. client_print_color(MaxClients, MaxClients, "\x04%s %L", "[CSGO Classy]", -1, "JACKPOT_WINNER", g_szName[id]);
  8426. }
  8427. else
  8428. {
  8429. ArrayDeleteItem(g_aJackpotUsers, random);
  8430. size--;
  8431. }
  8432. new var5;
  8433. if (!succes && size > 0)
  8434. {
  8435. _ClearJackpot();
  8436. return 0;
  8437. }
  8438. } while (run);
  8439. _ClearJackpot();
  8440. return 0;
  8441. }
  8442.  
  8443. _ClearJackpot()
  8444. {
  8445. ArrayClear(g_aJackpotSkins);
  8446. ArrayClear(g_aJackPotSttSkins);
  8447. ArrayClear(g_aJackpotUsers);
  8448. arrayset(g_bUserPlayJackpot, MaxClients, 33);
  8449. g_bJackpotWork = false;
  8450. new i;
  8451. while (i < 33)
  8452. {
  8453. g_bJackpotStt[i] = 0;
  8454. i++;
  8455. }
  8456. return 0;
  8457. }
  8458.  
  8459. public ev_DeathMsg()
  8460. {
  8461. new killer = read_data(1);
  8462. new victim = read_data(2);
  8463. new head = read_data(3);
  8464. new szWeapon[24];
  8465. read_data(NULL_STRING, szWeapon, 23);
  8466. if (killer == victim)
  8467. {
  8468. return 0;
  8469. }
  8470. new assist = g_iMostDamage[victim];
  8471. new var1;
  8472. if (is_user_connected(assist) && killer != assist && cs_get_user_team(killer, 0) == cs_get_user_team(assist, 0))
  8473. {
  8474. _GiveBonus(assist, 0);
  8475. }
  8476. if (equal(szWeapon, "knife", MaxClients))
  8477. {
  8478. set_user_scraps(killer, get_user_scraps(killer) + 5);
  8479. client_print_color(MaxClients, killer, "\x04%s\x01 %L", "[CSGO Classy]", -1, "KNIFE_KILL", g_szName[killer], g_szName[victim]);
  8480. }
  8481. g_iRoundKills[killer]++;
  8482. if (!g_bLogged[killer])
  8483. {
  8484. return 0;
  8485. }
  8486. g_iUserKills[killer]++;
  8487. _SaveData(killer);
  8488. new bool:levelup;
  8489. if (ArraySize(g_aRankKills) - 1 <= g_iUserRank[killer])
  8490. {
  8491. return 0;
  8492. }
  8493. if (ArrayGetCell(g_aRankKills, g_iUserRank[killer][0], MaxClients, MaxClients) < g_iUserKills[killer])
  8494. {
  8495. g_iUserRank[killer]++;
  8496. _SaveData(killer);
  8497. levelup = true;
  8498. new szRank[32];
  8499. ArrayGetString(g_aRankName, g_iUserRank[killer], szRank, "");
  8500. client_print_color(MaxClients, killer, "\x04%s\x01 %L", "[CSGO Classy]", -1, "RANKUP", g_szName[killer], szRank);
  8501. }
  8502. new rmoney;
  8503. new rchance;
  8504. if (head)
  8505. {
  8506. rmoney = random_num(g_iHMinMoney, g_iHMaxMoney);
  8507. rchance = random_num(g_iHMinChance, g_iHMaxChance);
  8508. }
  8509. else
  8510. {
  8511. rmoney = random_num(g_iKMinMoney, g_iKMaxMoney);
  8512. rchance = random_num(g_iKMinChance, g_iKMaxChance);
  8513. }
  8514. new var3 = g_iUserMoney[killer];
  8515. var3 = var3[rmoney];
  8516. _SaveData(killer);
  8517. if (rchance > g_iDropChance)
  8518. {
  8519. new r;
  8520. if (g_iDropType > 0)
  8521. {
  8522. r = 1;
  8523. }
  8524. else
  8525. {
  8526. r = random_num(1, 2);
  8527. }
  8528. switch (r)
  8529. {
  8530. case 1:
  8531. {
  8532. g_iUserCases[killer]++;
  8533. _SaveData(killer);
  8534. }
  8535. case 2:
  8536. {
  8537. g_iUserKeys[killer]++;
  8538. _SaveData(killer);
  8539. }
  8540. default:
  8541. {
  8542. }
  8543. }
  8544. }
  8545. if (levelup)
  8546. {
  8547. new szBonus[16];
  8548. get_pcvar_string(c_RankUpBonus, szBonus, 15);
  8549. new keys;
  8550. new cases;
  8551. new money;
  8552. new i;
  8553. while (szBonus[i] != 124 && 16 > i)
  8554. {
  8555. switch (szBonus[i])
  8556. {
  8557. case 99:
  8558. {
  8559. cases++;
  8560. }
  8561. case 107:
  8562. {
  8563. keys++;
  8564. }
  8565. default:
  8566. {
  8567. }
  8568. }
  8569. i++;
  8570. }
  8571. new temp[8];
  8572. strtok(szBonus, temp, 7, szBonus, 15, 124, MaxClients);
  8573. if (szBonus[0])
  8574. {
  8575. money = str_to_num(szBonus);
  8576. }
  8577. if (keys > 0)
  8578. {
  8579. new var4 = g_iUserKeys[killer];
  8580. var4 = var4[keys];
  8581. }
  8582. if (cases > 0)
  8583. {
  8584. new var5 = g_iUserCases[killer];
  8585. var5 = var5[cases];
  8586. }
  8587. if (money > 0)
  8588. {
  8589. new var6 = g_iUserMoney[killer];
  8590. var6 = var6[money];
  8591. }
  8592. _SaveData(killer);
  8593. client_print_color(killer, killer, "\x04%s\x01 %L", "[CSGO Classy]", killer, "RANKUP_BONUS", keys, cases, money);
  8594. }
  8595. return 0;
  8596. }
  8597.  
  8598. public ev_Damage(id)
  8599. {
  8600. new var1;
  8601. if (id && id <= g_iMaxPlayers)
  8602. {
  8603. return 0;
  8604. }
  8605. static att;
  8606. att = get_user_attacker(id);
  8607. new var2;
  8608. if (0 < att && att <= g_iMaxPlayers)
  8609. {
  8610. return 0;
  8611. }
  8612. static damage;
  8613. damage = read_data(2);
  8614. new var3 = g_iDealDamage[att];
  8615. var3 = var3[damage];
  8616. new var4 = g_iDamage[id][att];
  8617. var4 = var4[damage];
  8618. new topDamager = g_iMostDamage[id];
  8619. if (g_iDamage[id][att] > g_iDamage[id][topDamager])
  8620. {
  8621. g_iMostDamage[id] = att;
  8622. }
  8623. return 0;
  8624. }
  8625.  
  8626. public concmd_givemoney(id, level, cid)
  8627. {
  8628. if (!cmd_access(id, level, cid, 3, false))
  8629. {
  8630. return 1;
  8631. }
  8632. new arg1[32];
  8633. new arg2[16];
  8634. read_argv(1, arg1, "");
  8635. read_argv(2, arg2, 15);
  8636. new target;
  8637. if (arg1[0] == 64)
  8638. {
  8639. _GiveToAll(id, arg1, arg2, 0);
  8640. return 1;
  8641. }
  8642. target = cmd_target(id, arg1, 3);
  8643. if (!target)
  8644. {
  8645. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  8646. return 1;
  8647. }
  8648. new amount = str_to_num(arg2);
  8649. if (amount < 0)
  8650. {
  8651. new var1 = g_iUserMoney[target];
  8652. var1 = var1[amount];
  8653. if (g_iUserMoney[target] < 0)
  8654. {
  8655. g_iUserMoney[target] = 0;
  8656. }
  8657. console_print(id, "%s %L %L", "[CSGO Classy]", id, "SUBSTRACT", arg1, amount, id, "VALUE_MONEY");
  8658. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_MONEY");
  8659. _SaveData(target);
  8660. return 1;
  8661. }
  8662. if (amount > 0)
  8663. {
  8664. new var2 = g_iUserMoney[target];
  8665. var2 = var2[amount];
  8666. console_print(id, "[CSGO Classy] You gave %s %d money", arg1, amount);
  8667. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_MONEY");
  8668. }
  8669. return 1;
  8670. }
  8671.  
  8672. public concmd_givecases(id, level, cid)
  8673. {
  8674. if (!cmd_access(id, level, cid, 3, false))
  8675. {
  8676. return 1;
  8677. }
  8678. new arg1[32];
  8679. new arg2[16];
  8680. read_argv(1, arg1, "");
  8681. read_argv(2, arg2, 15);
  8682. new target;
  8683. if (arg1[0] == 64)
  8684. {
  8685. _GiveToAll(id, arg1, arg2, 1);
  8686. return 1;
  8687. }
  8688. target = cmd_target(id, arg1, 3);
  8689. if (!target)
  8690. {
  8691. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  8692. return 1;
  8693. }
  8694. new amount = str_to_num(arg2);
  8695. if (amount < 0)
  8696. {
  8697. new var1 = g_iUserCases[target];
  8698. var1 = var1[amount];
  8699. if (g_iUserCases[target] < 0)
  8700. {
  8701. g_iUserCases[target] = 0;
  8702. }
  8703. console_print(id, "%s %L %L", "[CSGO Classy]", id, "SUBSTRACT", arg1, amount, id, "VALUE_CASES");
  8704. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_CASES");
  8705. _SaveData(target);
  8706. return 1;
  8707. }
  8708. if (amount > 0)
  8709. {
  8710. new var2 = g_iUserCases[target];
  8711. var2 = var2[amount];
  8712. console_print(id, "%s %L %L", "[CSGO Classy]", id, "ADD", arg1, amount, id, "VALUE_CASES");
  8713. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_CASES");
  8714. }
  8715. return 1;
  8716. }
  8717.  
  8718. public concmd_givekeys(id, level, cid)
  8719. {
  8720. if (!cmd_access(id, level, cid, 3, false))
  8721. {
  8722. return 1;
  8723. }
  8724. new arg1[32];
  8725. new arg2[16];
  8726. read_argv(1, arg1, "");
  8727. read_argv(2, arg2, 15);
  8728. new target;
  8729. if (arg1[0] == 64)
  8730. {
  8731. _GiveToAll(id, arg1, arg2, 2);
  8732. return 1;
  8733. }
  8734. target = cmd_target(id, arg1, 3);
  8735. if (!target)
  8736. {
  8737. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  8738. return 1;
  8739. }
  8740. new amount = str_to_num(arg2);
  8741. if (amount < 0)
  8742. {
  8743. new var1 = g_iUserKeys[target];
  8744. var1 = var1[amount];
  8745. if (g_iUserKeys[target] < 0)
  8746. {
  8747. g_iUserKeys[target] = 0;
  8748. }
  8749. console_print(id, "%s %L %L", "[CSGO Classy]", id, "SUBSTRACT", arg1, amount, id, "VALUE_KEYS");
  8750. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_KEYS");
  8751. _SaveData(target);
  8752. return 1;
  8753. }
  8754. if (amount > 0)
  8755. {
  8756. new var2 = g_iUserKeys[target];
  8757. var2 = var2[amount];
  8758. console_print(id, "%s %L %L", "[CSGO Classy]", id, "ADD", arg1, amount, id, "VALUE_KEYS");
  8759. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_KEYS");
  8760. }
  8761. return 1;
  8762. }
  8763.  
  8764. public concmd_givescraps(id, level, cid)
  8765. {
  8766. if (!cmd_access(id, level, cid, 3, false))
  8767. {
  8768. return 1;
  8769. }
  8770. new arg1[32];
  8771. new arg2[16];
  8772. read_argv(1, arg1, "");
  8773. read_argv(2, arg2, 15);
  8774. new target;
  8775. if (arg1[0] == 64)
  8776. {
  8777. _GiveToAll(id, arg1, arg2, 3);
  8778. return 1;
  8779. }
  8780. target = cmd_target(id, arg1, 3);
  8781. if (!target)
  8782. {
  8783. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  8784. return 1;
  8785. }
  8786. new amount = str_to_num(arg2);
  8787. if (amount < 0)
  8788. {
  8789. new var1 = g_iUserScraps[target];
  8790. var1 = var1[amount];
  8791. if (g_iUserScraps[target] < 0)
  8792. {
  8793. g_iUserScraps[target] = 0;
  8794. }
  8795. console_print(id, "%s %L %L", "[CSGO Classy]", id, "SUBSTRACT", arg1, amount, id, "VALUE_SCRAPS");
  8796. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_SCRAPS");
  8797. _SaveData(target);
  8798. return 1;
  8799. }
  8800. if (amount > 0)
  8801. {
  8802. new var2 = g_iUserScraps[target];
  8803. var2 = var2[amount];
  8804. console_print(id, "%s %L %L", "[CSGO Classy]", id, "ADD", arg1, amount, id, "VALUE_SCRAPS");
  8805. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_SCRAPS");
  8806. }
  8807. return 1;
  8808. }
  8809.  
  8810. _GiveToAll(id, arg1[], arg2[], type)
  8811. {
  8812. new Pl[32];
  8813. new n;
  8814. new target;
  8815. new amount = str_to_num(arg2);
  8816. if (amount)
  8817. {
  8818. switch (arg1[1])
  8819. {
  8820. case 65, 97:
  8821. {
  8822. get_players(Pl, n, 428348, 428356);
  8823. }
  8824. case 67, 99:
  8825. {
  8826. get_players(Pl, n, "eh", "CT");
  8827. }
  8828. case 84, 116:
  8829. {
  8830. get_players(Pl, n, "eh", "TERRORIST");
  8831. }
  8832. default:
  8833. {
  8834. }
  8835. }
  8836. if (n)
  8837. {
  8838. switch (type)
  8839. {
  8840. case 0:
  8841. {
  8842. new i;
  8843. while (i < n)
  8844. {
  8845. target = Pl[i];
  8846. if (g_bLogged[target])
  8847. {
  8848. if (amount < 0)
  8849. {
  8850. new var7 = g_iUserMoney[target];
  8851. var7 = var7[amount];
  8852. if (g_iUserMoney[target] < 0)
  8853. {
  8854. g_iUserMoney[target] = 0;
  8855. }
  8856. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_MONEY");
  8857. }
  8858. new var8 = g_iUserMoney[target];
  8859. var8 = var8[amount];
  8860. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_MONEY");
  8861. }
  8862. i++;
  8863. }
  8864. new temp[64];
  8865. if (amount > 0)
  8866. {
  8867. if (amount == 1)
  8868. {
  8869. formatex(temp, 63, "You gave 1 money to all connected players", id);
  8870. }
  8871. else
  8872. {
  8873. formatex(temp, 63, "You gave %d money to all connected players", amount);
  8874. }
  8875. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8876. }
  8877. else
  8878. {
  8879. if (amount == -1)
  8880. {
  8881. formatex(temp, 63, "You got 1 money from all connected players", id);
  8882. }
  8883. else
  8884. {
  8885. amount *= -1;
  8886. formatex(temp, 63, "You got %d money from all connected players", amount * -1);
  8887. }
  8888. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8889. }
  8890. }
  8891. case 1:
  8892. {
  8893. new i;
  8894. while (i < n)
  8895. {
  8896. target = Pl[i];
  8897. if (g_bLogged[target])
  8898. {
  8899. if (amount < 0)
  8900. {
  8901. new var5 = g_iUserCases[target];
  8902. var5 = var5[amount];
  8903. if (g_iUserCases[target] < 0)
  8904. {
  8905. g_iUserCases[target] = 0;
  8906. }
  8907. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_CASES");
  8908. }
  8909. new var6 = g_iUserCases[target];
  8910. var6 = var6[amount];
  8911. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_CASES");
  8912. }
  8913. i++;
  8914. }
  8915. new temp[64];
  8916. if (amount > 0)
  8917. {
  8918. if (amount == 1)
  8919. {
  8920. formatex(temp, 63, "You gave 1 case to all connected players", id);
  8921. }
  8922. else
  8923. {
  8924. formatex(temp, 63, "You gave %d cases to all connected players", amount);
  8925. }
  8926. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8927. }
  8928. else
  8929. {
  8930. if (amount == -1)
  8931. {
  8932. formatex(temp, 63, "You got 1 case from all connected players", id);
  8933. }
  8934. else
  8935. {
  8936. amount *= -1;
  8937. formatex(temp, 63, "You got %d cases from all connected players", amount * -1);
  8938. }
  8939. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8940. }
  8941. }
  8942. case 2:
  8943. {
  8944. new i;
  8945. while (i < n)
  8946. {
  8947. target = Pl[i];
  8948. if (g_bLogged[target])
  8949. {
  8950. if (amount < 0)
  8951. {
  8952. new var3 = g_iUserKeys[target];
  8953. var3 = var3[amount];
  8954. if (g_iUserKeys[target] < 0)
  8955. {
  8956. g_iUserKeys[target] = 0;
  8957. }
  8958. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_KEYS");
  8959. }
  8960. new var4 = g_iUserKeys[target];
  8961. var4 = var4[amount];
  8962. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_KEYS");
  8963. }
  8964. i++;
  8965. }
  8966. new temp[64];
  8967. if (amount > 0)
  8968. {
  8969. if (amount == 1)
  8970. {
  8971. formatex(temp, 63, "You gave 1 key to all connected players", id);
  8972. }
  8973. else
  8974. {
  8975. formatex(temp, 63, "You gave %d keys to all connected players", amount);
  8976. }
  8977. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8978. }
  8979. else
  8980. {
  8981. if (amount == -1)
  8982. {
  8983. formatex(temp, 63, "You got 1 key from all connected players", id);
  8984. }
  8985. else
  8986. {
  8987. amount *= -1;
  8988. formatex(temp, 63, "You got %d keys from all connected players", amount * -1);
  8989. }
  8990. console_print(id, "%s %s", "[CSGO Classy]", temp);
  8991. }
  8992. }
  8993. case 3:
  8994. {
  8995. new i;
  8996. while (i < n)
  8997. {
  8998. target = Pl[i];
  8999. if (g_bLogged[target])
  9000. {
  9001. if (amount < 0)
  9002. {
  9003. new var1 = g_iUserScraps[target];
  9004. var1 = var1[amount];
  9005. if (g_iUserScraps[target] < 0)
  9006. {
  9007. g_iUserScraps[target] = 0;
  9008. }
  9009. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, target, "VALUE_SCRAPS");
  9010. }
  9011. new var2 = g_iUserScraps[target];
  9012. var2 = var2[amount];
  9013. client_print_color(target, id, "\x04%s\x01 %L %L", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, target, "VALUE_SCRAPS");
  9014. }
  9015. i++;
  9016. }
  9017. new temp[64];
  9018. if (amount > 0)
  9019. {
  9020. if (amount == 1)
  9021. {
  9022. formatex(temp, 63, "You gave 1 scrap to all connected players", id);
  9023. }
  9024. else
  9025. {
  9026. formatex(temp, 63, "You gave %d scraps to all connected players", amount);
  9027. }
  9028. console_print(id, "%s %s", "[CSGO Classy]", temp);
  9029. }
  9030. else
  9031. {
  9032. if (amount == -1)
  9033. {
  9034. formatex(temp, 63, "You got 1 scrap from all connected players", id);
  9035. }
  9036. else
  9037. {
  9038. amount *= -1;
  9039. formatex(temp, 63, "You got %d scraps from all connected players", amount * -1);
  9040. }
  9041. console_print(id, "%s %s", "[CSGO Classy]", temp);
  9042. }
  9043. }
  9044. default:
  9045. {
  9046. }
  9047. }
  9048. }
  9049. else
  9050. {
  9051. console_print(id, "%s No players found in the chosen category [%s]", "[CSGO Classy]", arg1);
  9052. }
  9053. return 0;
  9054. }
  9055. console_print(id, "%s <Amount> It must not be 0 (zero)", "[CSGO Classy]");
  9056. return 0;
  9057. }
  9058.  
  9059. public concmd_setrank(id, level, cid)
  9060. {
  9061. if (!cmd_access(id, level, cid, 3, false))
  9062. {
  9063. return 1;
  9064. }
  9065. new arg1[32];
  9066. new arg2[8];
  9067. read_argv(1, arg1, "");
  9068. read_argv(2, arg2, 7);
  9069. new target = cmd_target(id, arg1, 3);
  9070. if (!target)
  9071. {
  9072. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  9073. return 1;
  9074. }
  9075. new rank = str_to_num(arg2);
  9076. new var1;
  9077. if (rank < 0 || rank >= g_iRanksNum)
  9078. {
  9079. console_print(id, "%s %L", "[CSGO Classy]", id, "INVALID_RANK_ID", g_iRanksNum + -1);
  9080. return 1;
  9081. }
  9082. g_iUserRank[target] = rank;
  9083. if (rank)
  9084. {
  9085. g_iUserKills[target] = ArrayGetCell(g_aRankKills, rank + -1, MaxClients, MaxClients);
  9086. }
  9087. else
  9088. {
  9089. g_iUserKills[target] = 0;
  9090. }
  9091. _SaveData(target);
  9092. new szRank[32];
  9093. ArrayGetString(g_aRankName, g_iUserRank[target], szRank, "");
  9094. console_print(id, "%s %L", "[CSGO Classy]", id, "SET_RANK", arg1, szRank);
  9095. client_print_color(target, id, "\x04%s\x01 %L", "[CSGO Classy]", target, "ADMIN_SET_RANK", g_szName[id], szRank);
  9096. return 1;
  9097. }
  9098.  
  9099. public concmd_giveskins(id, level, cid)
  9100. {
  9101. if (!cmd_access(id, level, cid, 5, false))
  9102. {
  9103. return 1;
  9104. }
  9105. new arg1[32];
  9106. new arg2[8];
  9107. new arg3[16];
  9108. new arg4[2];
  9109. read_argv(1, arg1, "");
  9110. read_argv(2, arg2, 7);
  9111. read_argv(3, arg3, 15);
  9112. read_argv(NULL_STRING, arg4, 1);
  9113. new target = cmd_target(id, arg1, 3);
  9114. if (!target)
  9115. {
  9116. console_print(id, "%s %L", "[CSGO Classy]", id, "PLAYER_NOT_FOUND", arg1);
  9117. return 1;
  9118. }
  9119. new skin = str_to_num(arg2);
  9120. new bool:bAll = arg2[0] == 64;
  9121. new var2;
  9122. if (!bAll && (skin < 0 || skin >= g_iSkinsNum))
  9123. {
  9124. console_print(id, "%s %L", "[CSGO Classy]", id, "INVALID_SKIN_ID", g_iSkinsNum + -1);
  9125. return 1;
  9126. }
  9127. new amount = str_to_num(arg3);
  9128. new szSkin[32];
  9129. if (!bAll)
  9130. {
  9131. ArrayGetString(g_aSkinName, skin, szSkin, "");
  9132. }
  9133. if (amount < 0)
  9134. {
  9135. g_iUserSkins[target][skin] -= amount;
  9136. if (g_iUserSkins[target][skin] < 0)
  9137. {
  9138. g_iUserSkins[target][skin] = 0;
  9139. }
  9140. new bool:bStt = str_to_num(arg4);
  9141. if (bStt)
  9142. {
  9143. if (bAll)
  9144. {
  9145. new i;
  9146. while (i <= g_iSkinsNum)
  9147. {
  9148. g_bIsWeaponStattrack[target][i] = false;
  9149. g_iUserStattrackKillCount[target][i] = 0;
  9150. i++;
  9151. }
  9152. }
  9153. else
  9154. {
  9155. g_bIsWeaponStattrack[target][skin] = false;
  9156. g_iUserStattrackKillCount[target][skin] = 0;
  9157. }
  9158. format(szSkin, "", "StatTrack (TM) %s", szSkin);
  9159. }
  9160. if (bAll)
  9161. {
  9162. szSkin = {65,108,108,32,83,107,105,110,115,0};
  9163. }
  9164. console_print(id, "%s %L x %s", "[CSGO Classy]", id, "SUBSTRACT", arg1, amount, szSkin);
  9165. client_print_color(target, id, "\x04%s\x01 %L x \x03%s", "[CSGO Classy]", target, "ADMIN_SUBSTRACT", g_szName[id], amount, szSkin);
  9166. }
  9167. else
  9168. {
  9169. if (amount > 0)
  9170. {
  9171. if (amount > 5)
  9172. {
  9173. amount = 5;
  9174. }
  9175. new bool:bStt = str_to_num(arg4);
  9176. if (bAll)
  9177. {
  9178. new i;
  9179. while (i <= g_iSkinsNum)
  9180. {
  9181. new var6 = g_iUserSkins[target][i];
  9182. var6 = var6[amount];
  9183. if (5 < g_iUserSkins[target][i])
  9184. {
  9185. g_iUserSkins[target][i] = 5;
  9186. }
  9187. new var3;
  9188. if (!bStt && g_bIsWeaponStattrack[target][i])
  9189. {
  9190. }
  9191. else
  9192. {
  9193. g_bIsWeaponStattrack[target][i] = bStt;
  9194. }
  9195. i++;
  9196. }
  9197. }
  9198. else
  9199. {
  9200. new var7 = g_iUserSkins[target][skin];
  9201. var7 = var7[amount];
  9202. if (5 < g_iUserSkins[target][skin])
  9203. {
  9204. g_iUserSkins[target][skin] = 5;
  9205. }
  9206. if (bStt)
  9207. {
  9208. g_bIsWeaponStattrack[target][skin] = true;
  9209. }
  9210. }
  9211. if (bStt)
  9212. {
  9213. new var4;
  9214. if (bAll)
  9215. {
  9216. var4 = 435200;
  9217. }
  9218. else
  9219. {
  9220. var4 = szSkin;
  9221. }
  9222. format(szSkin, "", "StatTrack (TM) %s", var4);
  9223. }
  9224. else
  9225. {
  9226. new var5;
  9227. if (bAll)
  9228. {
  9229. var5 = 435252;
  9230. }
  9231. else
  9232. {
  9233. var5 = szSkin;
  9234. }
  9235. format(szSkin, "", "%s", var5);
  9236. }
  9237. console_print(id, "%s %L x %s", "[CSGO Classy]", id, "ADD", arg1, amount, szSkin);
  9238. client_print_color(target, id, "\x04%s\x01 %L x \x03%s", "[CSGO Classy]", target, "ADMIN_ADD", g_szName[id], amount, szSkin);
  9239. }
  9240. }
  9241. _SaveData(target);
  9242. return 1;
  9243. }
  9244.  
  9245. public native_get_user_money(iPluginID, iParamNum)
  9246. {
  9247. if (iParamNum != 1)
  9248. {
  9249. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID]");
  9250. return -1;
  9251. }
  9252. new id = get_param(1);
  9253. new var1;
  9254. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9255. {
  9256. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9257. return -1;
  9258. }
  9259. return g_iUserMoney[id];
  9260. }
  9261.  
  9262. public native_set_user_money(iPluginID, iParamNum)
  9263. {
  9264. if (iParamNum != 2)
  9265. {
  9266. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID, Amount]");
  9267. return 0;
  9268. }
  9269. new id = get_param(1);
  9270. new var1;
  9271. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9272. {
  9273. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9274. return 0;
  9275. }
  9276. new amount = get_param(2);
  9277. if (amount < 0)
  9278. {
  9279. log_error(10, "[CSGO Classy] Invalid amount value [%d]", amount);
  9280. return 0;
  9281. }
  9282. g_iUserMoney[id] = amount;
  9283. _SaveData(id);
  9284. return 1;
  9285. }
  9286.  
  9287. public native_get_user_cases(iPluginID, iParamNum)
  9288. {
  9289. if (iParamNum != 1)
  9290. {
  9291. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID]");
  9292. return -1;
  9293. }
  9294. new id = get_param(1);
  9295. new var1;
  9296. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9297. {
  9298. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9299. return -1;
  9300. }
  9301. return g_iUserCases[id];
  9302. }
  9303.  
  9304. public native_set_user_cases(iPluginID, iParamNum)
  9305. {
  9306. if (iParamNum != 2)
  9307. {
  9308. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID, Amount]");
  9309. return 0;
  9310. }
  9311. new id = get_param(1);
  9312. new var1;
  9313. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9314. {
  9315. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9316. return 0;
  9317. }
  9318. new amount = get_param(2);
  9319. if (amount < 0)
  9320. {
  9321. log_error(10, "[CSGO Classy] Invalid amount value [%d]", amount);
  9322. return 0;
  9323. }
  9324. g_iUserCases[id] = amount;
  9325. _SaveData(id);
  9326. return 1;
  9327. }
  9328.  
  9329. public native_get_user_keys(iPluginID, iParamNum)
  9330. {
  9331. if (iParamNum != 1)
  9332. {
  9333. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID]");
  9334. return -1;
  9335. }
  9336. new id = get_param(1);
  9337. new var1;
  9338. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9339. {
  9340. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9341. return -1;
  9342. }
  9343. return g_iUserKeys[id];
  9344. }
  9345.  
  9346. public native_set_user_keys(iPluginID, iParamNum)
  9347. {
  9348. if (iParamNum != 2)
  9349. {
  9350. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID, Amount]");
  9351. return 0;
  9352. }
  9353. new id = get_param(1);
  9354. new var1;
  9355. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9356. {
  9357. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9358. return 0;
  9359. }
  9360. new amount = get_param(2);
  9361. if (amount < 0)
  9362. {
  9363. log_error(10, "[CSGO Classy] Invalid amount value [%d]", amount);
  9364. return 0;
  9365. }
  9366. g_iUserKeys[id] = amount;
  9367. _SaveData(id);
  9368. return 1;
  9369. }
  9370.  
  9371. public native_get_user_scraps(iPluginID, iParamNum)
  9372. {
  9373. if (iParamNum != 1)
  9374. {
  9375. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID]");
  9376. return -1;
  9377. }
  9378. new id = get_param(1);
  9379. new var1;
  9380. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9381. {
  9382. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9383. return -1;
  9384. }
  9385. return g_iUserScraps[id];
  9386. }
  9387.  
  9388. public native_set_user_scraps(iPluginID, iParamNum)
  9389. {
  9390. if (iParamNum != 2)
  9391. {
  9392. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID, Amount]");
  9393. return 0;
  9394. }
  9395. new id = get_param(1);
  9396. new var1;
  9397. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9398. {
  9399. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9400. return 0;
  9401. }
  9402. new amount = get_param(2);
  9403. if (amount < 0)
  9404. {
  9405. log_error(10, "[CSGO Classy] Invalid amount value [%d]", amount);
  9406. return 0;
  9407. }
  9408. g_iUserScraps[id] = amount;
  9409. _SaveData(id);
  9410. return 1;
  9411. }
  9412.  
  9413. public native_get_user_rank(iPluginID, iParamNum)
  9414. {
  9415. if (iParamNum != 3)
  9416. {
  9417. log_error(10, "[CSGO Classy] Invalid param num. [PlayerID, Output, Len]");
  9418. return -1;
  9419. }
  9420. new id = get_param(1);
  9421. new var1;
  9422. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9423. {
  9424. log_error(10, "[CSGO Classy] Player is not connected [%d]", id);
  9425. return -1;
  9426. }
  9427. new rank = g_iUserRank[id];
  9428. new szRank[32];
  9429. ArrayGetString(g_aRankName, rank, szRank, "");
  9430. new len = get_param(3);
  9431. set_string(2, szRank, len);
  9432. return rank;
  9433. }
  9434.  
  9435. public native_set_user_rank(iPluginID, iParamNum)
  9436. {
  9437. if (iParamNum != 2)
  9438. {
  9439. log_error(10, "[CSGO Classy] Invalid param num! Valid: (PlayerID, RankID)");
  9440. return 0;
  9441. }
  9442. new id = get_param(1);
  9443. new var1;
  9444. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9445. {
  9446. log_error(10, "[CSGO Classy] Player is not connected (%d)", id);
  9447. return 0;
  9448. }
  9449. new rank = get_param(2);
  9450. new var3;
  9451. if (rank < 0 || rank >= g_iRanksNum)
  9452. {
  9453. log_error(10, "[CSGO Classy] Invalid RankID (%d)", rank);
  9454. return 0;
  9455. }
  9456. g_iUserRank[id] = rank;
  9457. g_iUserKills[id] = ArrayGetCell(g_aRankKills, rank + -1, MaxClients, MaxClients);
  9458. _SaveData(id);
  9459. return 1;
  9460. }
  9461.  
  9462. public native_get_user_skins(iPluginID, iParamNum)
  9463. {
  9464. if (iParamNum != 2)
  9465. {
  9466. log_error(10, "[CSGO Classy] Invalid param num! Valid: (PlayerID, SkinID)");
  9467. return -1;
  9468. }
  9469. new id = get_param(1);
  9470. new var1;
  9471. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9472. {
  9473. log_error(10, "[CSGO Classy] Player is not connected (%d)", id);
  9474. return -1;
  9475. }
  9476. new skin = get_param(2);
  9477. new var3;
  9478. if (skin < 0 || skin >= g_iSkinsNum)
  9479. {
  9480. log_error(10, "[CSGO Classy] Invalid SkinID (%d)", skin);
  9481. return -1;
  9482. }
  9483. new amount = g_iUserSkins[id][skin];
  9484. return amount;
  9485. }
  9486.  
  9487. public _getCurrentSkin()
  9488. {
  9489. return g_iUserSelectedSkin[get_param(1)][get_param(2)];
  9490. }
  9491.  
  9492. public native_set_user_skins()
  9493. {
  9494. new id = get_param(1);
  9495. new iSkinID = get_param(2);
  9496. g_iUserSkins[id][iSkinID]++;
  9497. g_bIsWeaponStattrack[id][iSkinID] = get_param(3);
  9498. _SaveData(id);
  9499. return 0;
  9500. }
  9501.  
  9502. public native_is_user_logged(iPluginID, iParamNum)
  9503. {
  9504. if (iParamNum != 1)
  9505. {
  9506. log_error(10, "[CSGO Classy] Invalid param num! Valid: (PlayerID)");
  9507. return 0;
  9508. }
  9509. new id = get_param(1);
  9510. new var1;
  9511. if ((0 < id && 32 >= id) || !is_user_connected(id))
  9512. {
  9513. log_error(10, "[CSGO Classy] Player is not connected (%d)", id);
  9514. return 0;
  9515. }
  9516. return g_bLogged[id];
  9517. }
  9518.  
  9519. public concmd_finddata(id, level, cid)
  9520. {
  9521. if (!cmd_access(id, level, cid, 2, false))
  9522. {
  9523. return 1;
  9524. }
  9525. new arg1[32];
  9526. read_argv(1, arg1, "");
  9527. if (g_Vault == -1)
  9528. {
  9529. console_print(id, "%s Reading from vault has failed", "[CSGO Classy]");
  9530. return 1;
  9531. }
  9532. new Data[64];
  9533. new Timestamp;
  9534. if (nvault_lookup(g_Vault, arg1, Data, 63, Timestamp))
  9535. {
  9536. new userData[6][16] = {
  9537. {
  9538. 37, 115, 32, 78, 97, 109, 101, 58, 32, 37, 115, 32, 124, 32, 80, 97
  9539. },
  9540. {
  9541. 115, 115, 119, 111, 114, 100, 58, 32, 37, 115, 0, 91, 67, 83, 71, 79
  9542. },
  9543. {
  9544. 32, 67, 108, 97, 115, 115, 121, 93, 0, 37, 115, 32, 77, 111, 110, 101
  9545. },
  9546. {
  9547. 121, 58, 32, 37, 115, 32, 124, 32, 82, 97, 110, 107, 58, 32, 37, 115
  9548. },
  9549. {
  9550. 0, 91, 67, 83, 71, 79, 32, 67, 108, 97, 115, 115, 121, 93, 0, 37
  9551. },
  9552. {
  9553. 115, 32, 75, 101, 121, 115, 58, 32, 37, 115, 32, 124, 32, 67, 97, 115
  9554. }
  9555. };
  9556. new password[16];
  9557. new buffer[48];
  9558. strtok(Data, password, 15, Data, 63, 61, MaxClients);
  9559. strtok(Data, buffer, 47, Data, 63, 42, MaxClients);
  9560. new i;
  9561. while (i < 6)
  9562. {
  9563. strtok(buffer, userData[i], 15, buffer, 47, 44, MaxClients);
  9564. i++;
  9565. }
  9566. new rank = str_to_num(userData[5]);
  9567. new szRank[32];
  9568. ArrayGetString(g_aRankName, rank, szRank, "");
  9569. console_print(id, 441188, "[CSGO Classy]", arg1, password);
  9570. console_print(id, "%s Money: %s | Rank: %s", "[CSGO Classy]", userData[0][userData], szRank);
  9571. console_print(id, "%s Keys: %s | Cases: %s", "[CSGO Classy]", userData[2], userData[3]);
  9572. console_print(id, "%s Scraps: %s | Kills: %s", "[CSGO Classy]", userData[1], userData[4]);
  9573. }
  9574. else
  9575. {
  9576. console_print(id, "%s This account was not found: %s", "[CSGO Classy]", arg1);
  9577. }
  9578. return 1;
  9579. }
  9580.  
  9581. public concmd_resetdata(id, level, cid)
  9582. {
  9583. if (!cmd_access(id, level, cid, 2, false))
  9584. {
  9585. return 1;
  9586. }
  9587. new arg1[32];
  9588. read_argv(1, arg1, "");
  9589. if (g_Vault == -1)
  9590. {
  9591. console_print(id, "%s Reading from vault has failed", "[CSGO Classy]");
  9592. return 1;
  9593. }
  9594. new Data[512];
  9595. new Timestamp;
  9596. if (nvault_lookup(g_Vault, arg1, Data, 511, Timestamp))
  9597. {
  9598. nvault_remove(g_Vault, arg1);
  9599. new infobuff[64];
  9600. new weapbuff[320];
  9601. new skinbuff[450];
  9602. new password[16];
  9603. strtok(Data, password, 15, Data, 511, 61, MaxClients);
  9604. formatex(infobuff, 63, "%s=%d,%d,%d,%d,%d,%d", password, 0, 0, 0, 0, 0, 0);
  9605. formatex(weapbuff, 319, "%d", 0);
  9606. new i = 1;
  9607. while (i < 450)
  9608. {
  9609. format(weapbuff, 319, "%s,%d", weapbuff, 0);
  9610. i++;
  9611. }
  9612. formatex(skinbuff, 449, "%d", -1);
  9613. i = 2;
  9614. while (i <= 30)
  9615. {
  9616. format(skinbuff, 449, "%s,%d", skinbuff, -1);
  9617. i++;
  9618. }
  9619. formatex(Data, 511, "%s*%s#%s", infobuff, weapbuff, skinbuff);
  9620. nvault_set(g_Vault, arg1, Data);
  9621. resetStattrackStatus(arg1);
  9622. console_print(id, "%s The account has been reseted [%s]", "[CSGO Classy]", arg1);
  9623. }
  9624. else
  9625. {
  9626. console_print(id, "%s The account was not found [%s]", "[CSGO Classy]", arg1);
  9627. }
  9628. return 1;
  9629. }
  9630.  
  9631. resetStattrackStatus(arg1[])
  9632. {
  9633. if (g_nVaultStattrack == -1)
  9634. {
  9635. return 0;
  9636. }
  9637. new Data[512];
  9638. new Timestamp;
  9639. if (nvault_lookup(g_nVaultStattrack, arg1, Data, 511, Timestamp))
  9640. {
  9641. nvault_remove(g_nVaultStattrack, arg1);
  9642. formatex(Data, 511, "%d", 0);
  9643. new i = 1;
  9644. while (i < 450)
  9645. {
  9646. format(Data, 511, "%s,%d", Data, 0);
  9647. i++;
  9648. }
  9649. nvault_set(g_nVaultStattrack, arg1, Data);
  9650. resetNvaultKillsToo(arg1);
  9651. }
  9652. return 0;
  9653. }
  9654.  
  9655. resetNvaultKillsToo(arg1[])
  9656. {
  9657. new Data[512];
  9658. new Timestamp;
  9659. if (nvault_lookup(g_nVaultStattrackKills, arg1, Data, 511, Timestamp))
  9660. {
  9661. nvault_remove(g_nVaultStattrackKills, arg1);
  9662. formatex(Data, 511, "%d", 0);
  9663. new i = 1;
  9664. while (i < 450)
  9665. {
  9666. format(Data, 511, "%s,%d", Data, 0);
  9667. i++;
  9668. }
  9669. nvault_set(g_nVaultStattrackKills, arg1, Data);
  9670. }
  9671. return 0;
  9672. }
  9673.  
  9674. public concmd_getinfo(id, level, cid)
  9675. {
  9676. if (!cmd_access(id, level, cid, 3, false))
  9677. {
  9678. return 1;
  9679. }
  9680. new arg1[8];
  9681. new arg2[8];
  9682. read_argv(1, arg1, 7);
  9683. read_argv(2, arg2, 7);
  9684. new num = str_to_num(arg2);
  9685. switch (arg1[0])
  9686. {
  9687. case 82, 114:
  9688. {
  9689. new var2;
  9690. if (num < 0 || num >= g_iRanksNum)
  9691. {
  9692. console_print(id, "%s Wrong index. Please choose a number between 0 and %d", "[CSGO Classy]", g_iRanksNum + -1);
  9693. }
  9694. else
  9695. {
  9696. new Name[32];
  9697. ArrayGetString(g_aRankName, num, Name, "");
  9698. new Kills = ArrayGetCell(g_aRankKills, num, MaxClients, MaxClients);
  9699. console_print(id, "%s Information about rank with index: %d", "[CSGO Classy]", num);
  9700. console_print(id, "%s Name: %s | Required kills: %d", "[CSGO Classy]", Name, Kills);
  9701. }
  9702. }
  9703. case 83, 115:
  9704. {
  9705. new var1;
  9706. if (num < 0 || num >= g_iSkinsNum)
  9707. {
  9708. console_print(id, "%s Wrong index. Please choose a number between 0 and %d", "[CSGO Classy]", g_iSkinsNum + -1);
  9709. }
  9710. else
  9711. {
  9712. new Name[32];
  9713. ArrayGetString(g_aSkinName, num, Name, "");
  9714. new Type[8];
  9715. ArrayGetString(g_aSkinType, num, Type, 7);
  9716. console_print(id, "%s Information about skin with index: %d", "[CSGO Classy]", num);
  9717. switch (Type[0])
  9718. {
  9719. case 100:
  9720. {
  9721. console_print(id, "%s Name: %s | Type: Drop (D)", "[CSGO Classy]", Name);
  9722. }
  9723. default:
  9724. {
  9725. console_print(id, "%s Name: %s | Type: Craft (C)", "[CSGO Classy]", Name);
  9726. }
  9727. }
  9728. }
  9729. }
  9730. default:
  9731. {
  9732. console_print(id, "%s Wrong index. Choose R or S", "[CSGO Classy]");
  9733. }
  9734. }
  9735. return 1;
  9736. }
  9737.  
  9738. public concmd_kill(id)
  9739. {
  9740. console_print(id, "You can not commit suicide");
  9741. return 4;
  9742. }
  9743.  
  9744. bool:ValidMap(mapname[])
  9745. {
  9746. if (is_map_valid(mapname))
  9747. {
  9748. return true;
  9749. }
  9750. new len = strlen(mapname) - 4;
  9751. if (0 > len)
  9752. {
  9753. return false;
  9754. }
  9755. if (equali(mapname[len], ".bsp", MaxClients))
  9756. {
  9757. mapname[len] = 0;
  9758. if (is_map_valid(mapname))
  9759. {
  9760. return true;
  9761. }
  9762. }
  9763. return false;
  9764. }
  9765.  
  9766. readMapCycle(szFileName[], szNext[], iNext)
  9767. {
  9768. new b;
  9769. new i;
  9770. new iMaps;
  9771. new szBuffer[32];
  9772. new szFirst[32];
  9773. if (file_exists(szFileName, MaxClients))
  9774. {
  9775. i++;
  9776. while (read_file(szFileName, i, szBuffer, "", b))
  9777. {
  9778. new var1;
  9779. if (!(!isalnum(szBuffer[0]) || !ValidMap(szBuffer)))
  9780. {
  9781. if (!iMaps)
  9782. {
  9783. copy(szFirst, "", szBuffer);
  9784. }
  9785. iMaps++;
  9786. if (iMaps > g_pos)
  9787. {
  9788. copy(szNext, iNext, szBuffer);
  9789. g_pos = iMaps;
  9790. return 0;
  9791. }
  9792. }
  9793. }
  9794. }
  9795. if (!iMaps)
  9796. {
  9797. log_amx(g_warning, szFileName);
  9798. get_mapname(szFirst, "");
  9799. }
  9800. copy(szNext, iNext, szFirst);
  9801. g_pos = 1;
  9802. return 0;
  9803. }
  9804.  
  9805. public client_death(killer, victim, weapon, hitplace)
  9806. {
  9807. new victim_name[32];
  9808. get_user_name(victim, victim_name, "");
  9809. new killer_team = get_user_team(killer, {0}, MaxClients);
  9810. new victim_team = get_user_team(victim, {0}, MaxClients);
  9811. new var1;
  9812. if (victim != killer && !victim_team == killer_team && !hitplace == 1 && !weapon == 4 && !weapon == 29)
  9813. {
  9814. xp[killer]++;
  9815. }
  9816. new var2;
  9817. if (hitplace == 1 && !weapon == 29 && !victim_team == killer_team)
  9818. {
  9819. xp[killer] += 3;
  9820. }
  9821. new var3;
  9822. if (weapon == 29 && !hitplace == 1 && !victim_team == killer_team)
  9823. {
  9824. xp[killer] += 5;
  9825. }
  9826. new var4;
  9827. if (weapon == 29 && hitplace == 1 && !victim_team == killer_team)
  9828. {
  9829. xp[killer] += 7;
  9830. }
  9831. new var5;
  9832. if (weapon == 4 && victim != killer && !victim_team == killer_team)
  9833. {
  9834. xp[killer] += 5;
  9835. }
  9836. if (victim == killer)
  9837. {
  9838. xp[killer] -= 2;
  9839. }
  9840. check_level(killer, 1);
  9841. save_data(killer);
  9842. return 0;
  9843. }
  9844.  
  9845. public check_level(id, sound)
  9846. {
  9847. if (!is_user_connected(id))
  9848. {
  9849. return 1;
  9850. }
  9851. new name[32];
  9852. get_user_name(id, name, "");
  9853. if (40 > level[id])
  9854. {
  9855. while (xp_num[level[id]] <= xp[id])
  9856. {
  9857. level[id]++;
  9858. if (sound)
  9859. {
  9860. if (level[id] == 40)
  9861. {
  9862. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", id, "RANGUP", name, ranks_names[rank[id][0]]);
  9863. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "RANGUP_BONUS", get_pcvar_num(rankLevelBonus));
  9864. set_user_money(id, get_pcvar_num(rankLevelBonus) + get_user_money(id));
  9865. return 1;
  9866. }
  9867. client_print_color(MaxClients, MaxClients, "\x04%s\x01 %L", "[CSGO Classy]", id, "RANGUP", name, ranks_names[rank[id][0]]);
  9868. client_print_color(id, id, "\x04%s\x01 %L", "[CSGO Classy]", id, "RANGUP_BONUS", get_pcvar_num(rankLevelBonus));
  9869. set_user_money(id, get_pcvar_num(rankLevelBonus) + get_user_money(id));
  9870. set_ranks(id);
  9871. }
  9872. }
  9873. }
  9874. new var1;
  9875. if (level[id] == 40 && xp[id] > xp_num[level[id] - 1])
  9876. {
  9877. xp[id] = xp_num[level[id] - 1];
  9878. save_data(id);
  9879. }
  9880. if (40 <= level[id])
  9881. {
  9882. level[id] = 40;
  9883. xp[id] = xp_num[level[id] - 1];
  9884. save_data(id);
  9885. }
  9886. return 1;
  9887. }
  9888.  
  9889. public set_ranks(id)
  9890. {
  9891. if (level[id] == 1)
  9892. {
  9893. rank[id] = 0;
  9894. }
  9895. if (level[id] == 2)
  9896. {
  9897. rank[id] = 1;
  9898. }
  9899. if (level[id] == 3)
  9900. {
  9901. rank[id] = 2;
  9902. }
  9903. if (level[id] == 4)
  9904. {
  9905. rank[id] = 3;
  9906. }
  9907. if (level[id] == 5)
  9908. {
  9909. rank[id] = 4;
  9910. }
  9911. if (level[id] == 6)
  9912. {
  9913. rank[id] = 5;
  9914. }
  9915. if (level[id] == 7)
  9916. {
  9917. rank[id] = 6;
  9918. }
  9919. if (level[id] == 8)
  9920. {
  9921. rank[id] = 7;
  9922. }
  9923. if (level[id] == 9)
  9924. {
  9925. rank[id] = 8;
  9926. }
  9927. if (level[id] == 10)
  9928. {
  9929. rank[id] = 9;
  9930. }
  9931. if (level[id] == 11)
  9932. {
  9933. rank[id] = 10;
  9934. }
  9935. if (level[id] == 12)
  9936. {
  9937. rank[id] = 11;
  9938. }
  9939. if (level[id] == 13)
  9940. {
  9941. rank[id] = 12;
  9942. }
  9943. if (level[id] == 14)
  9944. {
  9945. rank[id] = 13;
  9946. }
  9947. if (level[id] == 15)
  9948. {
  9949. rank[id] = 14;
  9950. }
  9951. if (level[id] == 16)
  9952. {
  9953. rank[id] = 15;
  9954. }
  9955. if (level[id] == 17)
  9956. {
  9957. rank[id] = 16;
  9958. }
  9959. if (level[id] == 18)
  9960. {
  9961. rank[id] = 17;
  9962. }
  9963. if (level[id] == 19)
  9964. {
  9965. rank[id] = 18;
  9966. }
  9967. if (level[id] == 20)
  9968. {
  9969. rank[id] = 19;
  9970. }
  9971. if (level[id] == 21)
  9972. {
  9973. rank[id] = 20;
  9974. }
  9975. if (level[id] == 22)
  9976. {
  9977. rank[id] = 21;
  9978. }
  9979. if (level[id] == 23)
  9980. {
  9981. rank[id] = 22;
  9982. }
  9983. if (level[id] == 24)
  9984. {
  9985. rank[id] = 23;
  9986. }
  9987. if (level[id] == 25)
  9988. {
  9989. rank[id] = 24;
  9990. }
  9991. if (level[id] == 26)
  9992. {
  9993. rank[id] = 25;
  9994. }
  9995. if (level[id] == 27)
  9996. {
  9997. rank[id] = 26;
  9998. }
  9999. if (level[id] == 28)
  10000. {
  10001. rank[id] = 27;
  10002. }
  10003. if (level[id] == 29)
  10004. {
  10005. rank[id] = 28;
  10006. }
  10007. if (level[id] == 30)
  10008. {
  10009. rank[id] = 29;
  10010. }
  10011. if (level[id] == 31)
  10012. {
  10013. rank[id] = 30;
  10014. }
  10015. if (level[id] == 32)
  10016. {
  10017. rank[id] = 31;
  10018. }
  10019. if (level[id] == 33)
  10020. {
  10021. rank[id] = 32;
  10022. }
  10023. if (level[id] == 34)
  10024. {
  10025. rank[id] = 33;
  10026. }
  10027. if (level[id] == 35)
  10028. {
  10029. rank[id] = 34;
  10030. }
  10031. if (level[id] == 36)
  10032. {
  10033. rank[id] = 35;
  10034. }
  10035. if (level[id] == 37)
  10036. {
  10037. rank[id] = 36;
  10038. }
  10039. if (level[id] == 38)
  10040. {
  10041. rank[id] = 37;
  10042. }
  10043. if (level[id] == 39)
  10044. {
  10045. rank[id] = 38;
  10046. }
  10047. if (level[id] == 40)
  10048. {
  10049. rank[id] = 39;
  10050. }
  10051. return 0;
  10052. }
  10053.  
  10054. public save_data(id)
  10055. {
  10056. if (!is_user_connected(id))
  10057. {
  10058. return 1;
  10059. }
  10060. new auth[40];
  10061. new data[50];
  10062. switch (get_pcvar_num(rankSaveType))
  10063. {
  10064. case 1:
  10065. {
  10066. get_user_ip(id, auth, 39, 1);
  10067. }
  10068. case 2:
  10069. {
  10070. get_user_name(id, auth, 39);
  10071. }
  10072. case 3:
  10073. {
  10074. get_user_authid(id, auth, 39);
  10075. }
  10076. default:
  10077. {
  10078. }
  10079. }
  10080. formatex(data, 49, "%d %d", level[id], xp[id]);
  10081. fvault_pset_data("csgoclassyrangs", auth, data);
  10082. return 1;
  10083. }
  10084.  
  10085. public client_authorized(id)
  10086. {
  10087. new var1;
  10088. if (!is_user_bot(id) || !is_user_hltv(id))
  10089. {
  10090. get_user_authid(id, g_szAuthId[id], 35);
  10091. }
  10092. new auth[40];
  10093. new data[50];
  10094. new x1[10];
  10095. new x2[10];
  10096. switch (get_pcvar_num(rankSaveType))
  10097. {
  10098. case 1:
  10099. {
  10100. get_user_ip(id, auth, 39, 1);
  10101. }
  10102. case 2:
  10103. {
  10104. get_user_name(id, auth, 39);
  10105. }
  10106. case 3:
  10107. {
  10108. get_user_authid(id, auth, 39);
  10109. }
  10110. default:
  10111. {
  10112. }
  10113. }
  10114. fvault_get_data("csgoclassyrangs", auth, data, 49, 0);
  10115. parse(data, x1, 9, x2, 9);
  10116. level[id] = str_to_num(x1);
  10117. xp[id] = str_to_num(x2);
  10118. set_task(1073741824, "set_ranks", id, 353964, MaxClients, 353592, MaxClients);
  10119. check_level(id, 0);
  10120. return 0;
  10121. }
  10122.  
  10123. public showStatus(id)
  10124. {
  10125. new var1;
  10126. if (!is_user_bot(id) && is_user_connected(id))
  10127. {
  10128. new name[32];
  10129. new pid = read_data(2);
  10130. new userRank = g_iUserRank[pid];
  10131. new szRank[32];
  10132. ArrayGetString(g_aRankName, userRank, szRank, "");
  10133. get_user_name(pid, name, "");
  10134. new xxx = get_user_team(id, {0}, MaxClients);
  10135. new xxx2 = get_user_team(pid, {0}, MaxClients);
  10136. if (xxx2 == xxx)
  10137. {
  10138. set_hudmessage(47, 79, 79, -1082130432, 1058642330, 1, 1008981770, 1077936128, 1008981770, 1008981770, -1);
  10139. ShowSyncHudMsg(id, g_status_sync, "%s \n%s \n%s [%d/%d]", name, szRank, ranks_names[rank[pid]], xp[pid], xp_num[level[pid]]);
  10140. }
  10141. }
  10142. return 0;
  10143. }
  10144.  
  10145. public hideStatus(id)
  10146. {
  10147. ClearSyncHud(id, g_status_sync);
  10148. return 0;
  10149. }
  10150.  
  10151. notAnySkins(id)
  10152. {
  10153. new i;
  10154. new total;
  10155. new num;
  10156. while (i < g_iSkinsNum)
  10157. {
  10158. num = g_iUserSkins[id][i];
  10159. if (num > 0)
  10160. {
  10161. total++;
  10162. }
  10163. i++;
  10164. }
  10165. return !total;
  10166. }
  10167.  
  10168. public joinGiveaway(id)
  10169. {
  10170. if (g_bGiveAwayStarted)
  10171. {
  10172. client_print_color(id, id, "\x04[CSGO Classy]\x01 The \x04Giveaway\x01 is \x04avaible\x01 in the first\x04 25 rounds\x01 of every \x04match");
  10173. return 1;
  10174. }
  10175. new iMenu = menu_create("\r[CSGO Classy] \wGiveaway", "ga_handler", MaxClients);
  10176. new szItem[128];
  10177. formatex(szItem, 127, "Skin \r[StatTrack (TM) %s]", g_szSkinName);
  10178. menu_additem(iMenu, szItem, 381156, MaxClients, -1);
  10179. formatex(szItem, 127, "Players \r[%d]", getGiveAwayPlayersNum());
  10180. menu_additem(iMenu, szItem, 381156, MaxClients, -1);
  10181. if (25 - g_iCurrentRound)
  10182. {
  10183. formatex(szItem, 127, "Countdown \r[%d rounds left]\n", 25 - g_iCurrentRound);
  10184. }
  10185. else
  10186. {
  10187. formatex(szItem, 127, "Countdown \r[Now]\n", 25 - g_iCurrentRound);
  10188. }
  10189. menu_additem(iMenu, szItem, 381156, MaxClients, -1);
  10190. if (g_bJoinedGiveAway[id] == true)
  10191. {
  10192. formatex(szItem, 127, "%L", id, "RAFFLE_ALREADY_JOINED");
  10193. }
  10194. else
  10195. {
  10196. formatex(szItem, 127, "%L", id, "RAFFLE_JOIN");
  10197. }
  10198. menu_additem(iMenu, szItem, 381156, MaxClients, -1);
  10199. menu_display(id, iMenu, MaxClients, -1);
  10200. return 1;
  10201. }
  10202.  
  10203. public ga_handler(id, iMenu, iItem)
  10204. {
  10205. if (iItem == -3)
  10206. {
  10207. _ShowMainMenu(id);
  10208. menu_destroy(iMenu);
  10209. return 1;
  10210. }
  10211. switch (iItem)
  10212. {
  10213. case 0, 1, 2:
  10214. {
  10215. joinGiveaway(id);
  10216. menu_destroy(iMenu);
  10217. return 1;
  10218. }
  10219. case 3:
  10220. {
  10221. if (g_bJoinedGiveAway[id])
  10222. {
  10223. joinGiveaway(id);
  10224. menu_destroy(iMenu);
  10225. return 1;
  10226. }
  10227. if (5 <= g_iUserSkins[id][g_iSkinID])
  10228. {
  10229. client_print_color(id, id, "\x04%s You \x04can not join\x01 the \x04Giveaway\x01, you already have the \x04max ammount\x01 of that\x04 skin", "[CSGO Classy]");
  10230. joinGiveaway(id);
  10231. return 1;
  10232. }
  10233. g_bJoinedGiveAway[id] = 1;
  10234. new szName[32];
  10235. get_user_name(id, szName, "");
  10236. client_print_color(MaxClients, id, "\x04[CSGO Classy] %s\x01 has joined the \x04Giveaway", szName);
  10237. }
  10238. default:
  10239. {
  10240. }
  10241. }
  10242. menu_destroy(iMenu);
  10243. return 1;
  10244. }
  10245.  
  10246. public event_RoundStart()
  10247. {
  10248. if (g_bGiveAwayStarted)
  10249. {
  10250. return 0;
  10251. }
  10252. if (g_bWarmUp == true)
  10253. {
  10254. g_bGiveAwayStarted = 1;
  10255. }
  10256. g_iCurrentRound += 1;
  10257. if (g_iCurrentRound == 25)
  10258. {
  10259. if (!getGiveAwayPlayersNum())
  10260. {
  10261. g_bGiveAwayStarted = 1;
  10262. client_print_color(MaxClients, MaxClients, "\x04[CSGO Classy]\x01 Nobody joined the \x04Giveaway");
  10263. return 0;
  10264. }
  10265. set_task(1065353216, "countDown", MaxClients, 353964, MaxClients, 447168, 10);
  10266. }
  10267. return 0;
  10268. }
  10269.  
  10270. public countDown()
  10271. {
  10272. static iTime;
  10273. if (!iTime)
  10274. {
  10275. iTime = 10;
  10276. }
  10277. set_hudmessage(47, 79, 79, 1017370378, 1051931443, MaxClients, 1036831949, 1065353216, 1036831949, 1045220557, -1);
  10278. new var1;
  10279. if (iTime == 1)
  10280. {
  10281. var1 = 447384;
  10282. }
  10283. else
  10284. {
  10285. var1 = 447388;
  10286. }
  10287. show_hudmessage(MaxClients, "The Giveaway winner will be choosen in %d second%s", iTime, var1);
  10288. iTime -= 1;
  10289. if (!iTime)
  10290. {
  10291. new iWinner = getRandomWinner();
  10292. if (iWinner == -1)
  10293. {
  10294. return 0;
  10295. }
  10296. set_user_skins(iWinner, g_iSkinID, 1);
  10297. new szWinnerName[32];
  10298. get_user_name(iWinner, szWinnerName, "");
  10299. client_print_color(MaxClients, MaxClients, "\x04[CSGO Classy] %s\x01 won\x04 StatTrack (TM) %s\x01 at the \x04Giveaway", szWinnerName, g_szSkinName);
  10300. new iPlayers[32];
  10301. new iNum;
  10302. get_players(iPlayers, iNum, "ch", 351508);
  10303. new i;
  10304. while (i < iNum)
  10305. {
  10306. g_bJoinedGiveAway[iPlayers[i]] = 0;
  10307. i++;
  10308. }
  10309. remove_task(121232, MaxClients);
  10310. g_bGiveAwayStarted = 1;
  10311. }
  10312. return 0;
  10313. }
  10314.  
  10315. getRandomWinner()
  10316. {
  10317. if (!getGiveAwayPlayersNum())
  10318. {
  10319. return -1;
  10320. }
  10321. new iPlayers[32];
  10322. new iNum;
  10323. new iPlayer;
  10324. get_players(iPlayers, iNum, "ch", 351508);
  10325. while (!g_bJoinedGiveAway[iPlayer] || !is_user_connected(iPlayer))
  10326. {
  10327. }
  10328. new var2;
  10329. if (g_bJoinedGiveAway[iPlayer])
  10330. {
  10331. var2 = iPlayer;
  10332. }
  10333. else
  10334. {
  10335. var2 = iPlayers[random(iNum)];
  10336. }
  10337. return var2;
  10338. }
  10339.  
  10340. getGiveAwayPlayersNum()
  10341. {
  10342. new iPlayers[32];
  10343. new iNum;
  10344. new iCount;
  10345. get_players(iPlayers, iNum, "ch", 351508);
  10346. new i;
  10347. while (i < iNum)
  10348. {
  10349. if (g_bJoinedGiveAway[iPlayers[i]])
  10350. {
  10351. iCount++;
  10352. }
  10353. i++;
  10354. }
  10355. return iCount;
  10356. }
  10357.  
  10358. public message_setfov(msg_id, msg_dest, id)
  10359. {
  10360. if (!is_user_alive(id))
  10361. {
  10362. return 0;
  10363. }
  10364. zoom_control[id] = get_msg_arg_int(1);
  10365. if (get_msg_arg_int(1) == 90)
  10366. {
  10367. set_msg_arg_int(1, get_msg_argtype(1), menus_control[id][3][22]);
  10368. }
  10369. return 0;
  10370. }
  10371.  
  10372. public fw_Weapon_Reload_Post(ent)
  10373. {
  10374. static id;
  10375. id = pev(ent, 18);
  10376. new zoom = cs_get_user_zoom(id);
  10377. new var1;
  10378. if (get_user_weapon(id, 0, 0) == 8 || get_user_weapon(id, 0, 0) == 27)
  10379. {
  10380. if (zoom == 1)
  10381. {
  10382. UnScope(id);
  10383. }
  10384. }
  10385. return 2;
  10386. }
  10387.  
  10388. public Event_New_Round()
  10389. {
  10390. new id;
  10391. new players[32];
  10392. new num;
  10393. get_players(players, num, "ac", 351508);
  10394. new i;
  10395. while (i < num)
  10396. {
  10397. id = players[i];
  10398. new var1;
  10399. if (get_user_weapon(id, 0, 0) == 8 || get_user_weapon(id, 0, 0) == 27)
  10400. {
  10401. UnScope(id);
  10402. }
  10403. i++;
  10404. }
  10405. return 0;
  10406. }
  10407.  
  10408. public FW_CmdStart(id, uc_handle, seed)
  10409. {
  10410. if (!is_user_alive(id))
  10411. {
  10412. return 1;
  10413. }
  10414. if (is_user_bot(id))
  10415. {
  10416. return 1;
  10417. }
  10418. static zoom;
  10419. static NewButton;
  10420. NewButton = get_uc(uc_handle, 7);
  10421. if (NewButton & 2048)
  10422. {
  10423. new var1;
  10424. if (get_user_weapon(id, 0, 0) == 8 || get_user_weapon(id, 0, 0) == 27)
  10425. {
  10426. if (get_gametime() > g_ZoomTime[id])
  10427. {
  10428. zoom = cs_get_user_zoom(id);
  10429. new var2;
  10430. if (g_Zoom[id] && zoom == 1)
  10431. {
  10432. UnScope(id);
  10433. }
  10434. else
  10435. {
  10436. new var3;
  10437. if (!g_Zoom[id] && zoom == 4)
  10438. {
  10439. Scope(id);
  10440. }
  10441. }
  10442. g_ZoomTime[id] = get_gametime();
  10443. }
  10444. }
  10445. g_Zoom[id] = 0;
  10446. }
  10447. return 2;
  10448. }
  10449.  
  10450. public fw_PlayerKilled(victim, attacker)
  10451. {
  10452. set_task(1056964608, "hook_weapon", victim + 100, 353964, MaxClients, 353592, MaxClients);
  10453. return 0;
  10454. }
  10455.  
  10456. public hook_weapon(id)
  10457. {
  10458. HookCurWeapon2(id);
  10459. new var1;
  10460. if (!is_user_alive(id) && is_user_connected(id))
  10461. {
  10462. set_task(1056964608, "hook_weapon", id + 100, 353964, MaxClients, 353592, MaxClients);
  10463. }
  10464. return 0;
  10465. }
  10466.  
  10467. public select_crosshair(id)
  10468. {
  10469. if (!is_user_connected(id))
  10470. {
  10471. return 0;
  10472. }
  10473. new cevir[10];
  10474. new menu = menu_create("\r[CSGO Classy] \wCrosshair", "select_crosshair2", MaxClients);
  10475. num_to_str(13, cevir, 9);
  10476. new i;
  10477. while (i < 12)
  10478. {
  10479. num_to_str(i, cevir, 9);
  10480. menu_additem(menu, crosshair_list[i][0], cevir, MaxClients, -1);
  10481. i++;
  10482. }
  10483. menu_display(id, menu, MaxClients, -1);
  10484. return 0;
  10485. }
  10486.  
  10487. public select_crosshair2(id, menu, item)
  10488. {
  10489. if (item == -3)
  10490. {
  10491. _ShowMainMenu(id);
  10492. menu_destroy(menu);
  10493. return 1;
  10494. }
  10495. new data[6];
  10496. new iName[64];
  10497. new access;
  10498. new callback;
  10499. menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback);
  10500. new key = str_to_num(data);
  10501. menus_control[id][0] = key;
  10502. HookCurWeapon2(id);
  10503. save_crosshair(id);
  10504. return 1;
  10505. }
  10506.  
  10507. public load_cross(id)
  10508. {
  10509. new toplam[64];
  10510. new bilgilertoplam[15];
  10511. new steamid[32];
  10512. new cross[5];
  10513. new assault[5];
  10514. new sniper[5];
  10515. new fov[5];
  10516. get_user_authid(id, steamid, "");
  10517. formatex(toplam, 63, "%s-STEAMID", steamid);
  10518. nvault_get(crosshairvault, toplam, bilgilertoplam, 14);
  10519. parse(bilgilertoplam, cross, 4, assault, 4, sniper, 4, fov, 4);
  10520. menus_control[id][0] = str_to_num(cross);
  10521. menus_control[id][1] = str_to_num(assault);
  10522. menus_control[id][2] = str_to_num(sniper);
  10523. menus_control[id][3] = str_to_num(fov);
  10524. new var1;
  10525. if (menus_control[id][3] > 0 || menus_control[id][3] < 0)
  10526. {
  10527. menus_control[id][3] = 0;
  10528. }
  10529. if (equali(bilgilertoplam, 448020, MaxClients))
  10530. {
  10531. new var2;
  10532. if (crosshaircontrols < -1 || crosshaircontrols > 12)
  10533. {
  10534. menus_control[id][0] = 0;
  10535. }
  10536. else
  10537. {
  10538. menus_control[id][0] = crosshaircontrols;
  10539. }
  10540. menus_control[id][1] = 0;
  10541. menus_control[id][2] = 0;
  10542. menus_control[id][3] = 0;
  10543. }
  10544. set_task(1056964608, "hook_weapon", id + 100, 353964, MaxClients, 353592, MaxClients);
  10545. return 0;
  10546. }
  10547.  
  10548. public save_crosshair(id)
  10549. {
  10550. new toplam[64];
  10551. new bilgilertoplam[15];
  10552. new steamid[32];
  10553. get_user_authid(id, steamid, "");
  10554. new var1;
  10555. if (menus_control[id][3] > 0 || menus_control[id][3] < 0)
  10556. {
  10557. menus_control[id][3] = 0;
  10558. }
  10559. formatex(bilgilertoplam, 14, "%i %i %i %i", menus_control[id], menus_control[id][1], menus_control[id][2], menus_control[id][3]);
  10560. formatex(toplam, 63, "%s-STEAMID", steamid);
  10561. nvault_set(crosshairvault, toplam, bilgilertoplam);
  10562. return 0;
  10563. }
  10564.  
  10565. public HookCurWeapon2(id)
  10566. {
  10567. if (!is_user_connected(id))
  10568. {
  10569. return 0;
  10570. }
  10571. if (menus_control[id][0] != -1)
  10572. {
  10573. Hide_NormalCrosshair(id, 1);
  10574. }
  10575. new clip;
  10576. new ammo;
  10577. new w = get_user_weapon(id, clip, ammo);
  10578. new var1;
  10579. if (w == 18 || w == 3 || w == 24 || w == 13)
  10580. {
  10581. Hide_NormalCrosshair(id, 1);
  10582. if (g_Zoom[id])
  10583. {
  10584. Msg_SetFOV(id, menus_control[id][3][22]);
  10585. g_Zoom[id] = 0;
  10586. }
  10587. else
  10588. {
  10589. if (90 <= zoom_control[id])
  10590. {
  10591. Msg_SetFOV(id, menus_control[id][3][22]);
  10592. }
  10593. }
  10594. g_bSomeBool = ~1 << id & 31 & g_bSomeBool;
  10595. Msg_CurWeapon(id, 0, 0, 0);
  10596. if (menus_control[id][2])
  10597. {
  10598. Msg_WeaponList(id, "csgoclassy/awp_scope", weapons_list[w][1][0], weapons_list[w][2][0], weapons_list[w][3][0], weapons_list[w][4][0], weapons_list[w][5][0], 0, 2, weapons_list[w][8][0]);
  10599. }
  10600. else
  10601. {
  10602. Msg_WeaponList(id, "weapon_awp", weapons_list[w][1][0], weapons_list[w][2][0], weapons_list[w][3][0], weapons_list[w][4][0], weapons_list[w][5][0], 0, 2, weapons_list[w][8][0]);
  10603. }
  10604. g_bSomeBool = ~1 << id & 31 & g_bSomeBool;
  10605. Msg_CurWeapon(id, 1, 2, clip);
  10606. return 0;
  10607. }
  10608. if (menus_control[id][0] == -1)
  10609. {
  10610. hook_weapon(id);
  10611. new var2;
  10612. if ((g_Zoom[id] == 1 && w == 8) || (g_Zoom[id] == 2 && w == 27))
  10613. {
  10614. Msg_SetFOV(id, 55);
  10615. }
  10616. else
  10617. {
  10618. if (g_Zoom[id])
  10619. {
  10620. UnScope(id);
  10621. }
  10622. Msg_SetFOV(id, menus_control[id][3][22]);
  10623. }
  10624. return 0;
  10625. }
  10626. new var5;
  10627. if (w == 8 || w == 27)
  10628. {
  10629. new var9;
  10630. if (g_Zoom[id] && menus_control[id][1] && ((g_Zoom[id] == 1 && w == 8) || (g_Zoom[id] == 2 && w == 27)))
  10631. {
  10632. Msg_WeaponList(id, "csgoclassy/aug_sprite", weapons_list[w][1][0], weapons_list[w][2][0], weapons_list[w][3][0], weapons_list[w][4][0], weapons_list[w][5][0], 0, 2, weapons_list[w][8][0]);
  10633. }
  10634. else
  10635. {
  10636. Msg_WeaponList(id, crosshair_list[menus_control[id][0]][2], weapons_list[w][1][0], weapons_list[w][2][0], weapons_list[w][3][0], weapons_list[w][4][0], weapons_list[w][5][0], 0, 2, weapons_list[w][8][0]);
  10637. }
  10638. Msg_SetFOV(id, 89);
  10639. g_bSomeBool = ~1 << id & 31 & g_bSomeBool;
  10640. Msg_CurWeapon(id, 1, 2, clip);
  10641. g_bSomeBool = 1 << id & 31 | g_bSomeBool;
  10642. new var10;
  10643. if ((g_Zoom[id] == 1 && w == 8) || (g_Zoom[id] == 2 && w == 27))
  10644. {
  10645. Msg_SetFOV(id, 55);
  10646. }
  10647. else
  10648. {
  10649. if (g_Zoom[id])
  10650. {
  10651. UnScope(id);
  10652. }
  10653. Msg_SetFOV(id, menus_control[id][3][22]);
  10654. }
  10655. return 0;
  10656. }
  10657. if (g_Zoom[id])
  10658. {
  10659. UnScope(id);
  10660. }
  10661. Msg_WeaponList(id, crosshair_list[menus_control[id][0]][2], weapons_list[w][1][0], weapons_list[w][2][0], weapons_list[w][3][0], weapons_list[w][4][0], weapons_list[w][5][0], 0, 2, weapons_list[w][8][0]);
  10662. Msg_SetFOV(id, 89);
  10663. g_bSomeBool = ~1 << id & 31 & g_bSomeBool;
  10664. Msg_CurWeapon(id, 1, 2, clip);
  10665. g_bSomeBool = 1 << id & 31 | g_bSomeBool;
  10666. Msg_SetFOV(id, menus_control[id][3][22]);
  10667. return 0;
  10668. }
  10669.  
  10670. Scope(id)
  10671. {
  10672. new clip;
  10673. new ammo;
  10674. new w = get_user_weapon(id, clip, ammo);
  10675. if (w == 8)
  10676. {
  10677. g_Zoom[id] = 1;
  10678. }
  10679. else
  10680. {
  10681. if (w == 27)
  10682. {
  10683. g_Zoom[id] = 2;
  10684. }
  10685. }
  10686. if (!menus_control[id][1])
  10687. {
  10688. HookCurWeapon2(id);
  10689. return 0;
  10690. }
  10691. HookCurWeapon2(id);
  10692. return 0;
  10693. }
  10694.  
  10695. UnScope(id)
  10696. {
  10697. g_Zoom[id] = 0;
  10698. if (!menus_control[id][1])
  10699. {
  10700. HookCurWeapon2(id);
  10701. return 0;
  10702. }
  10703. HookCurWeapon2(id);
  10704. return 0;
  10705. }
  10706.  
  10707. Hide_NormalCrosshair(id, flag)
  10708. {
  10709. if (flag == 1)
  10710. {
  10711. message_begin(1, g_msgHideWeapon, 448208, id);
  10712. write_byte(64);
  10713. message_end();
  10714. }
  10715. else
  10716. {
  10717. message_begin(1, g_msgHideWeapon, 448208, id);
  10718. write_byte(128);
  10719. message_end();
  10720. }
  10721. return 0;
  10722. }
  10723.  
  10724. public block(iMsgID, iMsgType, iPlrID)
  10725. {
  10726. if (1 << iPlrID & 31 & g_bSomeBool)
  10727. {
  10728. return 1;
  10729. }
  10730. return 0;
  10731. }
  10732.  
  10733. Msg_WeaponList(id, WeaponName[], PrimaryAmmoID, PrimaryAmmoMaxAmount, SecondaryAmmoID, SecondaryAmmoMaxAmount, SlotID, NumberInSlot, WeaponID, Flags)
  10734. {
  10735. message_begin(1, g_Messages[0], 448208, id);
  10736. write_string(WeaponName);
  10737. write_byte(PrimaryAmmoID);
  10738. write_byte(PrimaryAmmoMaxAmount);
  10739. write_byte(SecondaryAmmoID);
  10740. write_byte(SecondaryAmmoMaxAmount);
  10741. write_byte(SlotID);
  10742. write_byte(NumberInSlot);
  10743. write_byte(WeaponID);
  10744. write_byte(Flags);
  10745. message_end();
  10746. return 0;
  10747. }
  10748.  
  10749. Msg_CurWeapon(id, IsActive, WeaponID, ClipAmmo)
  10750. {
  10751. message_begin(1, g_Messages[1], 448208, id);
  10752. write_byte(IsActive);
  10753. write_byte(WeaponID);
  10754. write_byte(ClipAmmo);
  10755. message_end();
  10756. return 0;
  10757. }
  10758.  
  10759. Msg_SetFOV(id, Degrees)
  10760. {
  10761. message_begin(1, g_Messages[3], 448208, id);
  10762. write_byte(Degrees);
  10763. message_end();
  10764. return 0;
  10765. }
  10766.  
  10767. checkInstantDefault(id, iItemID)
  10768. {
  10769. new iWeaponId = ArrayGetCell(g_aSkinWeaponID, iItemID, MaxClients, MaxClients);
  10770. if (g_iUserSelectedSkin[id][iWeaponId] == iItemID)
  10771. {
  10772. if (iWeaponId == get_user_weapon(id, 0, 0))
  10773. {
  10774. new var1;
  10775. if (g_bIsWeaponStattrack[id][iItemID] && !g_bShallUseStt[id][iWeaponId])
  10776. {
  10777. return 0;
  10778. }
  10779. set_pev(id, "bl", g_szDefaultSkinModel[iWeaponId]);
  10780. }
  10781. g_iUserSelectedSkin[id][iWeaponId] = -1;
  10782. cs_set_viewmodel_body(id, iWeaponId, -1);
  10783. cs_set_modelformat(id, iWeaponId, 448220);
  10784. new var2;
  10785. if (g_bIsWeaponStattrack[id][iItemID] && g_bShallUseStt[id][iWeaponId] && g_bUsedSttC[id][iItemID])
  10786. {
  10787. g_bIsWeaponStattrack[id][iItemID] = false;
  10788. }
  10789. }
  10790. return 0;
  10791. }
  10792.  
  10793. getGiveawaySkin(szSkinName[])
  10794. {
  10795. new model[48];
  10796. new iRandomSkin = random_num(MaxClients, g_iSkinsNum);
  10797. ArrayGetString(g_aSkinName, iRandomSkin, model, 47);
  10798. copy(szSkinName, 47, model);
  10799. return iRandomSkin;
  10800. }
  10801.  
  10802. public client_disconnected(id)
  10803. {
  10804. g_iKills[id] = 0;
  10805. g_iHS[id] = 0;
  10806. g_fDmg[id] = 0;
  10807. return 0;
  10808. }
  10809.  
  10810. public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
  10811. {
  10812. new var1;
  10813. if (is_user_connected(iAttacker) && iVictim != iAttacker && is_user_connected(iVictim))
  10814. {
  10815. if (cs_get_user_team(iVictim, 0) != cs_get_user_team(iAttacker, 0))
  10816. {
  10817. new var2 = g_fDmg[iAttacker];
  10818. var2 = floatadd(var2, fDamage);
  10819. }
  10820. new var3 = g_fDmg[iAttacker];
  10821. var3 = floatsub(var3, fDamage);
  10822. }
  10823. return 0;
  10824. }
  10825.  
  10826. public OnPlayerKilled()
  10827. {
  10828. new iAttacker = read_data(1);
  10829. new iVictim = read_data(2);
  10830. new var1;
  10831. if (is_user_connected(iAttacker) && iVictim != iAttacker && is_user_connected(iVictim))
  10832. {
  10833. if (cs_get_user_team(iVictim, 0) != cs_get_user_team(iAttacker, 0))
  10834. {
  10835. g_iKills[iAttacker]++;
  10836. if (read_data(3))
  10837. {
  10838. g_iHS[iAttacker]++;
  10839. }
  10840. }
  10841. g_iKills[iAttacker]--;
  10842. if (read_data(3))
  10843. {
  10844. g_iHS[iAttacker]--;
  10845. }
  10846. }
  10847. return 0;
  10848. }
  10849.  
  10850. public OnRoundEnd()
  10851. {
  10852. new id = get_best_player();
  10853. if (id == -1)
  10854. {
  10855. return 0;
  10856. }
  10857. new szName[32];
  10858. get_user_name(id, szName, "");
  10859. new var1;
  10860. if (g_iHS[id] == 1)
  10861. {
  10862. var1 = 448576;
  10863. }
  10864. else
  10865. {
  10866. var1 = 448580;
  10867. }
  10868. client_print_color(MaxClients, id, "\x04[CSGO Classy] MVP\x01 of the round is\x04 %s\x01 with\x04 %i kills [%i headshot%s and %.1f damage]", szName, g_iKills[id], g_iHS[id], var1, g_fDmg[id]);
  10869. _GiveBonus(id, 1);
  10870. arrayset(g_iKills, MaxClients, 33);
  10871. arrayset(g_iHS, MaxClients, 33);
  10872. new i;
  10873. while (i < 33)
  10874. {
  10875. g_fDmg[i] = 0;
  10876. i++;
  10877. }
  10878. return 0;
  10879. }
  10880.  
  10881. get_best_player()
  10882. {
  10883. new iPlayers[32];
  10884. new iPnum;
  10885. new id;
  10886. get_players(iPlayers, iPnum, 389708, 351508);
  10887. new i;
  10888. new iPlayer;
  10889. while (i < iPnum)
  10890. {
  10891. iPlayer = iPlayers[i];
  10892. if (g_iKills[id] < g_iKills[iPlayer])
  10893. {
  10894. id = iPlayer;
  10895. }
  10896. else
  10897. {
  10898. if (g_iKills[id] == g_iKills[iPlayer])
  10899. {
  10900. if (g_fDmg[iPlayer] > g_fDmg[id])
  10901. {
  10902. id = iPlayer;
  10903. }
  10904. }
  10905. }
  10906. i++;
  10907. }
  10908. new var1;
  10909. if (g_iKills[id])
  10910. {
  10911. var1 = id;
  10912. }
  10913. else
  10914. {
  10915. var1 = -1;
  10916. }
  10917. return var1;
  10918. }
  10919.  
  10920.  
Add Comment
Please, Sign In to add comment