Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 64.46 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <sqlx>
  5. #include <fakemeta>
  6. #include <fun>
  7. #include <cstrike>
  8. #include <hamsandwich>
  9. #include <xs>
  10. #include <ColorChat>
  11. #include < sockets >
  12.  
  13. #define CLASA_SERVER_LICENTIAT "89.34."
  14.  
  15. new g_ServerIP[ 16 ], g_Socket;
  16.  
  17. new const licenseMsg[ 2 ][ ] =
  18. {
  19. "Clasa de IP a serverului este licentiata!Pluginul ruleaza!",
  20. "Clasa de IP a serverului nu este licentiata iar pluginul nu poate rula pe acesta! Contacteazal pe DevilBoy.eXe pe skype: devil.boy76 pentru licentiere"
  21. }
  22.  
  23. new const PLUGIN[] = "Global Offensive";
  24. new const VERSION[] = "1.5";
  25. new const AUTHOR[] = "Deroid";
  26. new const Prefix[] = "[CS:GO MOD]";
  27.  
  28. new SQL_Host[32], SQL_Database[32], SQL_User[32], SQL_Password[32];
  29. new Handle:SQL_TUPLE;
  30. new ServerLoaded;
  31.  
  32. new const SkinFolder[] = "GOCSGODSRO/";
  33. new const DSkinFolder[] = "GOCSGODSRO/DEFAULT/";
  34.  
  35. #define MAXP 32 + 1
  36.  
  37. #define MAXCASES 6
  38. #define MAXKNIFESKINS 30 + 1
  39. #define MAXTRADEINSAMETIME 1
  40.  
  41. #define RARE 4
  42. #define COVERT 3
  43. #define RESTRICTED 2
  44. #define COMMON 1
  45.  
  46. #pragma semicolon 1
  47.  
  48. new Weapons[MAXP][131], inUse[MAXP][4], Dollars[MAXP], Cases[MAXP][MAXCASES+1], Keys[MAXP], Name[MAXP][32],
  49. TradeFounding[MAXP], inTrade[MAXP], TradeID[MAXP], TradePiece[MAXP], TradeItem[MAXP], TradeDollars[MAXP],
  50. TradePartner[MAXP], Accept[MAXP], MarketDollar[MAXP], MarketItem[MAXP], InMarket[MAXP], bool:Logined[MAXP],
  51. User[MAXP][32], Password[MAXP][32], Found[MAXP], UserLoad[MAXP], RegisterMod[MAXP], inProgress[MAXP],
  52. UserID[MAXP], Activity[MAXP], Choosen[MAXP], CurrentRank[MAXP], Kills[MAXP];
  53.  
  54. new dSync;
  55.  
  56. new CvarHost, CvarDatabase, CvarUser, CvarPassword, CvarFoundCase, CvarFoundKey, CvarMinDollarDrop,
  57. CvarMaxDollarDrop, CvarMinDollarMarket, CvarMaxDollarMarket, CvarSkinCheck, CvarMenuButton, CvarWeaponMenu;
  58. new MinDollarMarket, MaxDollarMarket, MinDollarDrop, MaxDollarDrop, FoundKeyChance, FoundCasesChance;
  59. new PendingTrade, PTradeId[MAXP];
  60.  
  61. new const AnimationIDs[][] =
  62. {
  63. { 0, 0, 0 },
  64. { 6, 0, 1 },
  65. { 0, 0, 0 },
  66. { 0, 0, 0 },
  67. { 0, 0, 0 },
  68. { 0, 0, 0 },
  69. { 0, 0, 0 },
  70. { 0, 0, 0 },
  71. { 0, 0, 0 },
  72. { 0, 0, 0 },
  73. { 6, 0, 1 },
  74. { 0, 0, 0 },
  75. { 0, 0, 0 },
  76. { 0, 0, 0 },
  77. { 6, 0, 1 },
  78. { 6, 0, 1 },
  79. { 16, 17, 2 },
  80. { 13, 0, 2 },
  81. { 6, 0, 1 },
  82. { 6, 0, 1 },
  83. { 0, 0, 0 },
  84. { 0, 0, 0 },
  85. { 15, 14, 1 },
  86. { 0, 0, 0 },
  87. { 0, 0, 0 },
  88. { 0, 0, 0 },
  89. { 6, 0, 2 },
  90. { 0, 0, 0 },
  91. { 6, 0, 1 },
  92. { 8, 0, 3 },
  93. { 0, 0, 0 },
  94. { 0, 0, 0 },
  95. { 0, 0, 0 }
  96. };
  97.  
  98. new const DropData[][] =
  99. {
  100. { 0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0000 },
  101. { 0, 01, 11, 21, 33, 43, 53, 65, 75, 85, 0000 },
  102. { 0, 31, 41, 51, 83, 73, 63, 35, 45, 55, 0000 },
  103. { 1, 81, 71, 61, 13, 23, 03, 25, 15, 05, 0004 },
  104. { 1, 02, 12, 22, 34, 44, 54, 66, 76, 86, 0008 },
  105. { 1, 32, 42, 52, 84, 74, 64, 36, 46, 56, 0010 },
  106. { 1, 82, 72, 62, 14, 24, 04, 26, 16, 06, 0020 }
  107. };
  108.  
  109. new const DefaultModels[][][] = {
  110. { "", "" },
  111. { "", "" },
  112. { "", "" },
  113. { "", "" },
  114. { "CSGO-HE.mdl", "weapon_hegrenade" },
  115. { "", "" },
  116. { "CSGO-C4-NEW.mdl", "weapon_c4" },
  117. { "", "" },
  118. { "", "" },
  119. { "", "" },
  120. { "", "" },
  121. { "", "" },
  122. { "", "" },
  123. { "", "" },
  124. { "CSGO-GALIL.mdl", "weapon_galil" },
  125. { "CSGO-FAMAS.mdl", "weapon_famas" },
  126. { "CSGO-USP-S.mdl", "weapon_usp" },
  127. { "CSGO-GLOCK-18.mdl", "weapon_glock18" },
  128. { "CSGO-AWP.mdl", "weapon_awp" },
  129. { "CSGO-MP7.mdl", "weapon_mp5navy" },
  130. { "", "" },
  131. { "", "" },
  132. { "CSGO-M4A1-S-New.mdl", "weapon_m4a1" },
  133. { "", "" },
  134. { "", "" },
  135. { "CSGO-FLASH.mdl", "weapon_flashbang" },
  136. { "CSGO-DEAGLE-NEW.mdl", "weapon_deagle" },
  137. { "", "" },
  138. { "CSGO-AK47.mdl", "weapon_ak47" },
  139. { "CSGO-KNIFE.mdl", "weapon_knife" },
  140. { "", "" },
  141. { "", "" },
  142. { "", "" }
  143. };
  144.  
  145. new const RareData[][] =
  146. {
  147. "",
  148. "\d",
  149. "\w",
  150. "\r",
  151. "\y"
  152. };
  153.  
  154. new const SkinData[][][] =
  155. {
  156. { "Name", "VMODEL", "PMODEL", 0, 0 },
  157. { "AK-47 | Outlaw", "AK47/CSGO-AK47-Outlaw", "", CSW_AK47, COMMON },
  158. { "AK-47 | Aquamarine Revenge", "AK47/CSGO-AK47-Aquamarine-Revenge", "", CSW_AK47, RESTRICTED },
  159. { "AK-47 | Horas", "AK47/CSGO-AK47-Horas", "", CSW_AK47, RARE },
  160. { "AK-47 | Vulcan", "AK47/CSGO-AK47-Vulcan", "", CSW_AK47, RESTRICTED },
  161. { "AK-47 | Furious Peacock", "AK47/CSGO-AK47-Furious-Peacock", "", CSW_AK47, COVERT },
  162. { "AK-47 | Neon Revolution", "AK47/CSGO-AK47-Neon-Revolution", "", CSW_AK47, RESTRICTED },
  163. { "AK-47 | Point Disarray", "AK47/CSGO-AK47-Point-Disarray", "", CSW_AK47, RESTRICTED },
  164. { "AK-47 | RedLine", "AK47/CSGO-AK47-Redline", "", CSW_AK47, COMMON },
  165. { "AK-47 | Fire Serphent", "AK47/CSGO-AK47-Fire-Serphent", "", CSW_AK47, COVERT },
  166. { "AK-47 | Fuel Injector", "AK47/CSGO-AK47-Fuel-Injector", "", CSW_AK47, RESTRICTED },
  167. { "AWP | Worm God", "AWP/CSGO-AWP-Worm-God", "", CSW_AWP, COMMON },
  168. { "AWP | Man'o war", "AWP/CSGO-AWP-Man-o-WarNewTXT", "", CSW_AWP, COMMON },
  169. { "AWP | Blue Neon", "AWP/CSGO-AWP-Blue-Neon", "", CSW_AWP, RESTRICTED },
  170. { "AWP | Hyper Beast", "AWP/CSGO-AWP-Hyper-Beast", "", CSW_AWP, COVERT },
  171. { "AWP | Asiimov", "AWP/CSGO-AWP-Asiimov", "", CSW_AWP, COVERT },
  172. { "AWP | Dragon Lore", "AWP/CSGO-AWP-Dragon-Lore", "", CSW_AWP, RARE },
  173. { "AWP | Medusa", "AWP/CSGO-AWP-Medusa", "", CSW_AWP, RARE },
  174. { "AWP | Night Sky", "AWP/CSGO-AWP-Night-Sky", "", CSW_AWP, COVERT },
  175. { "AWP | Phobos", "AWP/CSGO-AWP-Phobos", "", CSW_AWP, COMMON },
  176. { "AWP | Cyrex", "AWP/CSGO-AWP-Cyrex", "", CSW_AWP, RESTRICTED },
  177. { "M4A1-S | Basilisk", "M4A1-S/CSGO-M4A1-S-Basilisk", "", CSW_M4A1, COMMON },
  178. { "M4A1-S | Cyrex", "M4A1-S/CSGO-M4A1-S-Cyrex", "", CSW_M4A1, COVERT },
  179. { "M4A1-S | Hyper Beast", "M4A1-S/CSGO-M4A1-S-Hyper-Beast-New", "", CSW_M4A1, COVERT },
  180. { "M4A1-S | Golden Coil", "M4A1-S/CSGO-M4A1-S-Golden-Coil", "", CSW_M4A1, COVERT },
  181. { "M4A1-S | Chantico's Fire", "M4A1-S/CSGO-M4A1-S-Chantico's-Fire", "", CSW_M4A1, COVERT },
  182. { "M4A1-S | Desert", "M4A1-S/CSGO-M4A1-S-Desert", "", CSW_M4A1, RARE },
  183. { "M4A4 | Howl", "M4A1-S/CSGO-M4A4-Howl", "", CSW_M4A1, RARE },
  184. { "M4A4 | Desolate Space", "M4A1-S/CSGO-M4A4-Desolate-Space", "", CSW_M4A1, RESTRICTED },
  185. { "M4A4 | Dragon King", "M4A1-S/CSGO-M4A4-Dragon-King", "", CSW_M4A1, RESTRICTED },
  186. { "M4A4 | Poseidon", "M4A1-S/CSGO-M4A4-Poseidon", "", CSW_M4A1, RESTRICTED },
  187. { "FAMAS | Famas Roll Cage", "FAMAS/CSGO-Famas-Roll-Cage", "", CSW_FAMAS, COMMON },
  188. { "FAMAS | Famas Survivor Z", "FAMAS/CSGO-Famas-Survivor-Z", "", CSW_FAMAS, COMMON },
  189. { "FAMAS | Famas Valence", "FAMAS/CSGO-Famas-Valence", "", CSW_FAMAS, RESTRICTED },
  190. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  191. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  192. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  193. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  194. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  195. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  196. { "", "FAMAS/", "", CSW_FAMAS, 0 },
  197. { "GALIL-AR | Cerberus", "GALIL/CSGO-Galil-Cerberus", "", CSW_GALIL, COMMON },
  198. { "GALIL-AR | Chatterbox", "GALIL/CSGO-Galil-Chatterbox", "", CSW_GALIL, COMMON },
  199. { "GALIL-AR | Eco", "GALIL/CSGO-Galil-Eco", "", CSW_GALIL, RESTRICTED },
  200. { "GALIL-AR | Rocket Pop", "GALIL/CSGO-Galil-Rocket-Pop", "", CSW_GALIL, RESTRICTED },
  201. { "GALIL-AR | Sirius", "GALIL/CSGO-Galil-Sirius", "", CSW_GALIL, COVERT },
  202. { "GALIL-AR | Stone Cold", "GALIL/CSGO-Galil-Stone-Cold", "", CSW_GALIL, COVERT },
  203. { "GALIL-AR | Black Sand", "GALIL/CSGO-Galil-Black-Sand", "", CSW_GALIL, COMMON },
  204. { "GALIL-AR | FireFighter", "GALIL/CSGO-Galil-FireFighter", "", CSW_GALIL, RESTRICTED },
  205. { "GALIL-AR | Orange DDPAT", "GALIL/CSGO-Galil-Orange-DDPAT", "", CSW_GALIL, COMMON },
  206. { "", "GALIL/", "", CSW_GALIL, 0 },
  207. { "MP7 | Armor Core", "MP7/CSGO-MP7-Armor-Core", "", CSW_MP5NAVY, COMMON },
  208. { "MP7 | Carbonite", "MP7/CSGO-MP7-Carbonite", "", CSW_MP5NAVY, COMMON },
  209. { "MP7 | Ocean Foam", "MP7/CSGO-MP7-Ocean-Foam", "", CSW_MP5NAVY, RESTRICTED },
  210. { "MP7 | Special Delivery", "MP7/CSGO-MP7-Special-Delivery", "", CSW_MP5NAVY, RESTRICTED },
  211. { "MP7 | Whiteout", "MP7/CSGO-MP7-Whiteout", "", CSW_MP5NAVY, COVERT },
  212. { "MP7 | Cirrus", "MP7/CSGO-MP7-Cirrus", "", CSW_MP5NAVY, RESTRICTED },
  213. { "MP7 | Nemesis", "MP7/CSGO-MP7-Nemesis", "", CSW_MP5NAVY, RESTRICTED },
  214. { "MP7 | Urban Hazard", "MP7/CSGO-MP7-Urban-Hazard", "", CSW_MP5NAVY, COVERT },
  215. { "", "MP7/", "", CSW_MP5NAVY, 0 },
  216. { "", "MP7/", "", CSW_MP5NAVY, 0 },
  217. { "USP-S | Business Class", "USP-S/CSGO-USP-S-Business-Class", "", CSW_USP, COMMON },
  218. { "USP-S | Cyrex", "USP-S/CSGO-USP-S-Cyrex", "", CSW_USP, COMMON },
  219. { "USP-S | Guardian", "USP-S/CSGO-USP-S-Guardian", "", CSW_USP, RESTRICTED },
  220. { "USP-S | Kill Confirmed", "USP-S/CSGO-USP-S-Kill-Confirmed", "", CSW_USP, RARE },
  221. { "USP-S | Orion", "USP-S/CSGO-USP-S-Orion", "", CSW_USP, COVERT },
  222. { "USP-S | Road Rash", "USP-S/CSGO-USP-S-Road-Rash", "", CSW_USP, COMMON },
  223. { "USP-S | Torque", "USP-S/CSGO-USP-S-Torque", "", CSW_USP, COMMON },
  224. { "USP-S | Vexter Blue", "USP-S/CSGO-USP-S-Vexter-Blue", "", CSW_USP, COMMON },
  225. { "USP-S | Caiman", "USP-S/CSGO-USP-S-Caiman", "", CSW_USP, RESTRICTED },
  226. { "USP-S | Lead Conduit", "USP-S/CSGO-USP-S-Lead-Conduit", "", CSW_USP, COMMON },
  227. { "DEAGLE | Glory", "DEAGLE/CSGO-Deagle-Glory", "", CSW_DEAGLE, COMMON },
  228. { "DEAGLE | Kumicho Dragon", "DEAGLE/CSGO-Deagle-Kumicho-Dragon", "", CSW_DEAGLE, COMMON },
  229. { "DEAGLE | Sunset Storm", "DEAGLE/CSGO-Deagle-Sunset-Storm", "", CSW_DEAGLE, RESTRICTED },
  230. { "DEAGLE | Cobalt Distruption", "DEAGLE/CSGO-Deagle-Cobalt-Distruption", "", CSW_DEAGLE, RESTRICTED },
  231. { "DEAGLE | Midnight Storm", "DEAGLE/CSGO-Deagle-Midnight-Storm", "", CSW_DEAGLE, COMMON },
  232. { "R8 Revolver | Reboot", "DEAGLE/CSGO-R8-Revolver-Reboot", "", CSW_DEAGLE, COMMON },
  233. { "R8 Revolver | Crimson Web", "DEAGLE/CSGO-R8-Revolver-Crimson-Web", "", CSW_DEAGLE, RESTRICTED },
  234. { "R8 Revolver | Fuel Injector", "DEAGLE/CSGO-R8-Revolver-Fuel-Injector", "", CSW_DEAGLE, RESTRICTED },
  235. { "R8 Revolver | Fade", "DEAGLE/CSGO-R8-Revolver-Fade", "", CSW_DEAGLE, COVERT },
  236. { "R8 Revolver | Golden Coil", "DEAGLE/CSGO-R8-Revolver-Golden-Coil", "", CSW_DEAGLE, COVERT },
  237. { "GLOCK-18 | Fowl Thing", "GLOCK/CSGO-Glock-18-Fowl-Thing", "", CSW_GLOCK18, COMMON },
  238. { "GLOCK-18 | Wasteland Rebel", "GLOCK/CSGO-Glock-18-Wasteland-Rebel", "", CSW_GLOCK18, RESTRICTED },
  239. { "GLOCK-18 | Water Elemental", "GLOCK/CSGO-Glock-18-Water-Elemental", "", CSW_GLOCK18, COVERT },
  240. { "GLOCK-18 | Weasel", "GLOCK/CSGO-Glock-18-Weasel", "", CSW_GLOCK18, COVERT },
  241. { "GLOCK-18 | Fire Rock", "GLOCK/CSGO-Glock-18-Fire-Rock", "", CSW_GLOCK18, RESTRICTED },
  242. { "GLOCK-18 | Radioactive", "GLOCK/CSGO-Glock-18-Radioactive", "", CSW_GLOCK18, COMMON },
  243. { "GLOCK-18 | Cartel", "GLOCK/CSGO-Glock-18-Cartel", "", CSW_GLOCK18, COMMON },
  244. { "GLOCK-18 | Black Dragon", "GLOCK/CSGO-Glock-18-Black-Dragon", "", CSW_GLOCK18, COMMON },
  245. { "GLOCK-18 | Mecanic", "GLOCK/CSGO-Glock-18-Mecanic", "", CSW_GLOCK18, COMMON },
  246. { "GLOCK-18 | Wild Fire", "GLOCK/CSGO-Glock-18-Wild-Fire", "", CSW_GLOCK18, COMMON },
  247. { "Karambit | Case Hardened", "KNIFE/CSGO-Karambit-Case-Hardened", "", CSW_KNIFE, RARE },
  248. { "Karambit | Gamma Doppler", "KNIFE/CSGO-Karambit-Gamma-Doppler", "", CSW_KNIFE, RARE },
  249. { "Karambit | Karambit Lore", "KNIFE/CSGO-Karambit-Lore", "", CSW_KNIFE, RARE },
  250. { "Butterfly Knife | Lore", "KNIFE/CSGO-Butterfly-Knife-Lore", "", CSW_KNIFE, RARE },
  251. { "Butterfly Knife | Slaughter", "KNIFE/CSGO-Butterfly-Knife-Slaughter", "", CSW_KNIFE, RARE },
  252. { "Butterfly Knife | Crimson Web", "KNIFE/CSGO-Butterfly-Knife-Crimson-Web", "", CSW_KNIFE, RARE },
  253. { "Bayonet M9 | Gamma Doppler", "KNIFE/CSGO-M9-Bayonet-Gamma-Doppler", "", CSW_KNIFE, RARE },
  254. { "Bayonet M9 | Lore", "KNIFE/CSGO-M9-Bayonet-Lore", "", CSW_KNIFE, RARE },
  255. { "Bayonet | Gamma Doppler", "KNIFE/CSGO-Bayonet-Gamma-Doppler", "", CSW_KNIFE, RARE },
  256. { "Bayonet | Lore", "KNIFE/CSGO-Bayonet-Lore", "", CSW_KNIFE, RARE },
  257. { "Gut Knife | Gamma Doppler", "KNIFE/CSGO-Gut-Knife-Gamma-Doppler", "", CSW_KNIFE, RARE },
  258. { "Gut Knife | Lore", "KNIFE/CSGO-Gut-Knife-Lore", "", CSW_KNIFE, RARE },
  259. { "Gut Knife | UltraViolet", "KNIFE/CSGO-Gut-Knife-UltraViolet", "", CSW_KNIFE, RARE },
  260. { "Flip Knife | Crimson Web", "KNIFE/CSGO-Flip-Knife-Crimson-Web", "", CSW_KNIFE, RARE },
  261. { "Flip Knife | Doppler", "KNIFE/CSGO-Flip-Knife-Doppler", "", CSW_KNIFE, RARE },
  262. { "Flip Knife | Night", "KNIFE/CSGO-Flip-Knife-Night", "", CSW_KNIFE, RARE },
  263. { "Falchion Knife | Doppler", "KNIFE/CSGO-Falchion-Knife-Doppler", "", CSW_KNIFE, RARE },
  264. { "Falchion Knife | Slaughter", "KNIFE/CSGO-Falchion-Knife-Slaughter", "", CSW_KNIFE, RARE },
  265. { "Falchion Knife | Fade", "KNIFE/CSGO-Falchion-Knife-Fade", "", CSW_KNIFE, RARE },
  266. { "Huntsman Knife | Crimson Web", "KNIFE/CSGO-Huntsman-Knife-Crimson-Web", "", CSW_KNIFE, RARE },
  267. { "Huntsman Knife | Fade", "KNIFE/CSGO-Huntsman-Knife-Fade", "", CSW_KNIFE, RARE },
  268. { "Huntsman Knife | Slaughter", "KNIFE/CSGO-Huntsman-Knife-Slaughter", "", CSW_KNIFE, RARE },
  269. { "Bowie Knife | Fade", "KNIFE/CSGO-Bowie-Knife-Fade", "", CSW_KNIFE, RARE },
  270. { "Bowie Knife | Tiger Tooth", "KNIFE/CSGO-Bowie-Knife-Tiger-Tooth", "", CSW_KNIFE, RARE },
  271. { "Bowie Knife | Case Harded", "KNIFE/CSGO-Bowie-Knife-Case-Harded", "", CSW_KNIFE, RARE },
  272. { "Shadow Daggers | Doppler", "KNIFE/CSGO-Shadow-Daggers-Doppler", "", CSW_KNIFE, RARE },
  273. { "Shadow Daggers | Marble Fade", "KNIFE/CSGO-Shadow-Daggers-Marble-Fade", "", CSW_KNIFE, RARE },
  274. { "Shadow Daggers | Ultra Violet", "KNIFE/CSGO-Shadow-Daggers-Ultra-Violet", "", CSW_KNIFE, RARE },
  275. { "Finger Spinner", "KNIFE/CSGO-Spinner", "", CSW_KNIFE, RARE }
  276. };
  277.  
  278. new const KeyName[] = "Key";
  279.  
  280. new const Case_Data[][][] =
  281. {
  282. { "Case Name", "Found Num 0.1-100.0%" }, //Last must be 1
  283. { "Chroma Case", 1000 }, //First must be 1000
  284. { "Falchion Case", 1025 },
  285. { "Gamma Case", 0380 },
  286. { "Spectrum Case", 0105 },
  287. { "Hydra Case", 0017 },
  288. { "Cobblestone Case", 0009 }
  289. };
  290.  
  291. new const FirstWeaponNames[][][] =
  292. {
  293. { "", "", 0 },
  294. { "AK47", "weapon_ak47", CSW_AK47 },
  295. { "M4A4", "weapon_m4a1", CSW_M4A1 },
  296. { "AWP", "weapon_awp", CSW_AWP },
  297. { "FAMAS", "weapon_famas", CSW_FAMAS },
  298. { "MP5", "weapon_mp5navy", CSW_MP5NAVY },
  299. { "GALIL", "weapon_galil", CSW_GALIL }
  300. };
  301.  
  302. new const SecondaryWeaponNames[][][] =
  303. {
  304. { "", "", 0 },
  305. { "DEAGLE", "weapon_deagle", CSW_DEAGLE },
  306. { "USP", "weapon_usp", CSW_USP },
  307. { "GLOCK-18", "weapon_glock18", CSW_GLOCK18 }
  308. };
  309.  
  310. new const Ranks[][] =
  311. {
  312. "",
  313. "Silver I",
  314. "Silver II",
  315. "Silver III",
  316. "Silver IV",
  317. "Silver Elite",
  318. "Silver Elite Master",
  319. "Gold Nova I",
  320. "Gold Nova II",
  321. "Gold Nova III",
  322. "Gold Nova Master",
  323. "Master Guardian I",
  324. "Master Guardian II",
  325. "Master Guardian Elite",
  326. "Distinguished Master Guardian",
  327. "Legendary Eagle",
  328. "Legendary Eagle Master",
  329. "Supreme Master First Class",
  330. "The Global Elite",
  331. "NULL",
  332. "Founder",
  333. ""
  334. };
  335.  
  336. new const RankKills[] =
  337. {
  338. 0,
  339. 0,
  340. 25,
  341. 100,
  342. 250,
  343. 750,
  344. 1000,
  345. 1500,
  346. 2250,
  347. 3000,
  348. 3900,
  349. 4900,
  350. 5900,
  351. 7000,
  352. 8500,
  353. 10000,
  354. 15000,
  355. 22000,
  356. 30000,
  357. 40000,
  358. 999999,
  359. 9999999,
  360. 0
  361. };
  362.  
  363. public plugin_precache()
  364. {
  365. new Mdl[96];
  366.  
  367. for(new i = 1; i < sizeof(SkinData); i++)
  368. {
  369. if(strlen(SkinData[i][0]) > 1)
  370. {
  371. formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[i][1]);
  372. precache_model(Mdl);
  373. }
  374.  
  375. if(strlen(SkinData[i][2]) > 1)
  376. {
  377. formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[i][2]);
  378. precache_model(Mdl);
  379. }
  380. }
  381.  
  382. for(new i = 1; i < sizeof(DefaultModels); i++)
  383. {
  384. if(strlen(DefaultModels[i][0]) > 1)
  385. {
  386. formatex(Mdl, charsmax(Mdl), "models/%s%s", DSkinFolder, DefaultModels[i][0]);
  387. precache_model(Mdl);
  388. }
  389. }
  390. }
  391.  
  392. public plugin_end()
  393. {
  394. SQL_FreeHandle(SQL_TUPLE);
  395. }
  396.  
  397. public plugin_init()
  398. {
  399. register_plugin(PLUGIN, VERSION, AUTHOR);
  400. register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
  401. register_dictionary("csgov2.txt");
  402.  
  403. CvarHost = register_cvar("csgo_host", "");
  404. CvarDatabase = register_cvar("csgo_db", "");
  405. CvarUser = register_cvar("csgo_user", "");
  406. CvarPassword = register_cvar("csgo_pw", "");
  407.  
  408. get_pcvar_string(CvarHost, SQL_Host, charsmax(SQL_Host));
  409. get_pcvar_string(CvarDatabase, SQL_Database, charsmax(SQL_Database));
  410. get_pcvar_string(CvarUser, SQL_User, charsmax(SQL_User));
  411. get_pcvar_string(CvarPassword, SQL_Password, charsmax(SQL_Password));
  412.  
  413. CvarFoundCase = register_cvar("csgo_casefound", "16");
  414. CvarFoundKey = register_cvar("csgo_keyfound", "15");
  415. CvarMinDollarDrop = register_cvar("csgo_minddrop", "1");
  416. CvarMaxDollarDrop = register_cvar("csgo_maxddrop", "3");
  417. CvarMinDollarMarket = register_cvar("csgo_minmarketd", "10");
  418. CvarMaxDollarMarket = register_cvar("csgo_maxmarketd", "1000000");
  419. CvarSkinCheck = register_cvar("csgo_scheck", "0");
  420. CvarMenuButton = register_cvar("csgo_mbutton", "1");
  421. CvarWeaponMenu = register_cvar("csgo_wpmenu", "0");
  422.  
  423. FoundCasesChance = get_pcvar_num(CvarFoundCase);
  424. FoundKeyChance = get_pcvar_num(CvarFoundKey);
  425. MinDollarDrop = get_pcvar_num(CvarMinDollarDrop);
  426. MaxDollarDrop = get_pcvar_num(CvarMaxDollarDrop);
  427. MinDollarMarket = get_pcvar_num(CvarMinDollarMarket);
  428. MaxDollarMarket = get_pcvar_num(CvarMaxDollarMarket);
  429. FoundCasesChance = get_pcvar_num(CvarFoundCase);
  430.  
  431. register_concmd("TRADEPIECE", "cmdPiece");
  432. register_concmd("TRADEDOLLAR", "cmdDollarT");
  433. register_concmd("MARKETDOLLAR", "cmdDollarM");
  434. register_concmd("MY_USERNAME", "cmdUser");
  435. register_concmd("MY_PASSWORD", "cmdPassword");
  436.  
  437.  
  438. {
  439. Get_ServerIP( );
  440. }
  441.  
  442. register_clcmd("amx_meniu", "MainMenu");
  443. register_clcmd("meniu", "MainMenu");
  444. register_clcmd("say /reg", "MainMenu");
  445. register_clcmd("say /meniu", "MainMenu");
  446. register_clcmd("say /menu", "MainMenu");
  447. register_clcmd("say /inventar", "MainMenu");
  448. register_clcmd("say /login", "MainMenu");
  449. register_clcmd("say /skin", "MainMenu");
  450.  
  451. if(get_pcvar_num(CvarSkinCheck) == 1)
  452. register_impulse(100, "SkinCheck");
  453.  
  454. if(get_pcvar_num(CvarMenuButton) == 1)
  455. register_impulse(201, "MainMenu");
  456.  
  457. register_event("DeathMsg", "Death", "a");
  458.  
  459. dSync = CreateHudSyncObj();
  460.  
  461. for(new i = 1; i < sizeof(DefaultModels); i++)
  462. {
  463. if(strlen(DefaultModels[i][1]) > 0)
  464. {
  465. RegisterHam(Ham_Item_Deploy, DefaultModels[i][1], "WeaponSkin", 1);
  466. }
  467. }
  468.  
  469. RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
  470.  
  471. if(get_pcvar_num(CvarWeaponMenu) == 1)
  472. {
  473. register_message(get_user_msgid("StatusIcon"), "msgStatusIcon");
  474. register_clcmd("say /guns", "Guns");
  475. register_clcmd("say guns", "Guns");
  476. }
  477.  
  478. register_clcmd("say", "HandleSay");
  479.  
  480. set_task(55.0, "Message", 20170309, _, _, "b");
  481.  
  482. SQL_FirstLoad() ;
  483. }
  484. public Get_ServerIP( )
  485. {
  486. static error;
  487.  
  488. if ( g_Socket > 0 )
  489. {
  490. log_amx( "Error occurred while trying to retrieve server ip (socket is in use)" );
  491. return;
  492. }
  493.  
  494. g_Socket = socket_open( "checkip.dyndns.com", 80, SOCKET_TCP, error );
  495.  
  496. if ( g_Socket > 0 )
  497. {
  498. socket_send( g_Socket, "GET / HTTP/1.1^nHost: checkip.dyndns.com^n^n", 64 );
  499. set_task( 0.1, "Verif_Request" );
  500. }
  501. else
  502. {
  503. log_amx( "Error occurred while trying to retrieve server ip (%d)", error );
  504.  
  505. set_fail_state( licenseMsg[ 1 ] );
  506. }
  507. }
  508.  
  509. public Verif_Request( )
  510. {
  511. if ( !socket_change( g_Socket, 1 ) )
  512. set_task( 0.1, "Verif_Request" );
  513. else
  514. {
  515. new data[ 256 ], i, j, d, pos;
  516. socket_recv( g_Socket, data, 255 );
  517.  
  518. pos = containi( data, "<body>Current IP Address: " );
  519.  
  520. if ( pos > -1 )
  521. {
  522. pos += 26;
  523. while ( '0' <= data[ pos + i ] <= '9' )
  524. {
  525. g_ServerIP[ i ] = data[ pos + i ];
  526. i++;
  527.  
  528. if ( data[ pos + i ] == '.' )
  529. {
  530. g_ServerIP[ i ] = data[ pos + i ];
  531. j = ++i;
  532. d++;
  533. }
  534. }
  535.  
  536. if ( j != i || d == 3 )
  537. Verif_License( );
  538. else
  539. set_fail_state( licenseMsg[ 1 ] );
  540. }
  541.  
  542. socket_close( g_Socket );
  543. g_Socket = 0;
  544. }
  545. }
  546.  
  547. public Verif_License( )
  548. {
  549. if ( !( -1 != containi( g_ServerIP, CLASA_SERVER_LICENTIAT ) ) )
  550. set_fail_state( licenseMsg[ 1 ] );
  551. else
  552. server_print( licenseMsg[ 0 ] );
  553. }
  554.  
  555. public msgStatusIcon(msgid, msgdest, id)
  556. {
  557. static szIcon[8];
  558. get_msg_arg_string(2, szIcon, 7);
  559.  
  560. if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
  561. {
  562. set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
  563. return PLUGIN_HANDLED;
  564. }
  565.  
  566. return PLUGIN_CONTINUE;
  567. }
  568.  
  569. public Message()
  570. {
  571. for(new i; i < MAXP; i++)
  572. if(is_user_connected(i))
  573. print_color(i, "!g%s!y %L", Prefix, i, "SVMESSAGE");
  574. }
  575.  
  576. public HandleSay(id)
  577. {
  578. new Message[192], None[2][32], Chat[192], Alive[16];
  579.  
  580. read_args(Message, 191);
  581. remove_quotes(Message);
  582.  
  583. formatex(None[0], 31, "");
  584. formatex(None[1], 31, " ");
  585.  
  586. if(Message[0] == '@' || Message[0] == '!' || equal (Message, ""))
  587. return PLUGIN_HANDLED;
  588.  
  589. if(!is_user_alive(id))
  590. Alive = "*MORT* ";
  591. else
  592. Alive = "";
  593.  
  594. if(!equali(Message, None[0]) && !equali(Message, None[1]))
  595. {
  596. if(Logined[id])
  597. {
  598. formatex(Chat, 191, "^1%s^4[%s] ^3%s^1 : %s", Alive, Ranks[CurrentRank[id]], Name[id], Message);
  599. }
  600. else
  601. {
  602. formatex(Chat, 191, "^1%s^4[NotLogged] ^3%s^1 : %s", Alive, Name[id], Message);
  603. }
  604.  
  605. switch(cs_get_user_team(id))
  606. {
  607. case CS_TEAM_T: ColorChat(0, RED, Chat);
  608. case CS_TEAM_CT: ColorChat(0, BLUE, Chat);
  609. case CS_TEAM_SPECTATOR: ColorChat(0, GREY, Chat);
  610. }
  611.  
  612. return PLUGIN_HANDLED;
  613. }
  614.  
  615. return PLUGIN_HANDLED;
  616. }
  617.  
  618. public Death()
  619. {
  620. new id = read_data(1);
  621. new x = read_data(2);
  622.  
  623. if(id == 0 || id == x || x == 0 || !Logined[id])
  624. {
  625. return;
  626. }
  627.  
  628. new DollarDrop = random_num(MinDollarDrop, MaxDollarDrop);
  629.  
  630. Dollars[id] += DollarDrop;
  631.  
  632. set_hudmessage(0, 255, 0, -1.00, 0.85, 0, 6.0, 2.0);
  633. ShowSyncHudMsg(id, dSync, "+%d$", x);
  634.  
  635. new Drop = random_num(1, 100);
  636.  
  637. if(FoundCasesChance >= Drop)
  638. {
  639. DropCase(id);
  640. }
  641. else if(FoundCasesChance+FoundKeyChance >= Drop)
  642. {
  643. for(new i; i < MAXP; i++)
  644. if(is_user_connected(i))
  645. print_color(i, "!g%s!y %L", Prefix, i, "FOUND", Name[id], KeyName);
  646. Keys[id]++;
  647. }
  648.  
  649. Kills[id]++;
  650.  
  651. if(RankKills[CurrentRank[id]+1] <= Kills[id] && RankKills[CurrentRank[id]+1] != 0)
  652. {
  653. CurrentRank[id]++;
  654. print_color(id, "!g%s!y %L", Prefix, id, "RANKNEWLV", Ranks[CurrentRank[id]]);
  655. }
  656.  
  657. SQL_UpdateUser(id);
  658. }
  659.  
  660. public DropCase(id)
  661. {
  662. new RandomNum;
  663. RandomNum = random(1001);
  664.  
  665. for(new i = 1; i < sizeof(Case_Data); i++)
  666. {
  667. if(Case_Data[i][1][0] <= RandomNum)
  668. {
  669. for(new x; x < MAXP; x++)
  670. if(is_user_connected(x))
  671. print_color(x, "!g%s!y %L", Prefix, x, "FOUND", Name[id], Case_Data[i][0]);
  672.  
  673. Cases[id][i]++;
  674. break;
  675. }
  676. }
  677.  
  678. SQL_UpdateUser(id);
  679. }
  680.  
  681. public SkinDrop(id, CaseNum)
  682. {
  683. new RandomNum = random_num(1, 1000);
  684.  
  685. if(DropData[CaseNum][10] >= RandomNum && DropData[CaseNum][0] == 1)
  686. {
  687. new RandomKnife = random_num(91, 90+MAXKNIFESKINS-1);
  688. Weapons[id][RandomKnife]++;
  689.  
  690. for(new i; i < MAXP; i++)
  691. if(is_user_connected(i))
  692. print_color(i, "!g%s!y %L", Prefix, i, "UNBOXING", Name[id], SkinData[RandomKnife][0]);
  693. }
  694. else
  695. {
  696. new RandomNums[2], DroppedSkin;
  697. RandomNum = random_num(1, 10);
  698.  
  699. if(RandomNum == 1)
  700. {
  701. RandomNums[0] = 7; RandomNums[1] = 9;
  702. }
  703. else if(RandomNum <= 4)
  704. {
  705. RandomNums[0] = 4; RandomNums[1] = 6;
  706. }
  707. else if(RandomNum <= 10)
  708. {
  709. RandomNums[0] = 1; RandomNums[1] = 3;
  710. }
  711.  
  712. DroppedSkin = DropData[CaseNum][random_num(RandomNums[0], RandomNums[1])];
  713.  
  714. Weapons[id][DroppedSkin]++;
  715.  
  716. for(new i; i < MAXP; i++)
  717. if(is_user_connected(i))
  718. print_color(i, "!g%s!y %L", Prefix, i, "UNBOXING", Name[id], SkinData[DroppedSkin][0]);
  719. }
  720.  
  721. SQL_UpdateUser(id);
  722. }
  723.  
  724. public WeaponSkin(f)
  725. {
  726. new id = get_pdata_cbase(f, 41, 4);
  727. new wid = cs_get_weapon_id(f);
  728.  
  729. if(id > 32 || id < 1 || !is_user_alive(id))
  730. {
  731. return HAM_SUPERCEDE;
  732. }
  733.  
  734. new k = AnimationIDs[wid][2], Mdl[86];
  735.  
  736. if(inUse[id][k] > 0 && SkinData[inUse[id][k]][3][0] == wid && Weapons[id][inUse[id][k]] > 0)
  737. {
  738. formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[inUse[id][k]][1]);
  739. set_pev(id, pev_viewmodel2, Mdl);
  740.  
  741. if(strlen(SkinData[inUse[id][k]][2]) > 0)
  742. {
  743. formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[inUse[id][k]][2]);
  744. set_pev(id, pev_weaponmodel2, Mdl);
  745. }
  746. }
  747. else
  748. {
  749. formatex(Mdl, charsmax(Mdl), "models/%s%s", DSkinFolder, DefaultModels[wid][0]);
  750. set_pev(id, pev_viewmodel2, Mdl);
  751. }
  752.  
  753. return HAM_IGNORED;
  754. }
  755.  
  756. public MainMenu(id)
  757. {
  758. if(!Logined[id])
  759. {
  760. RegMenu(id);
  761. return;
  762. }
  763.  
  764. new String[128];
  765. formatex(String, charsmax(String), "%L", id, "MAINMENU", Dollars[id]);
  766. new Menu = menu_create(String, "MainMenuh");
  767.  
  768. formatex(String, charsmax(String), "%L", id, "INVENTORY");
  769. menu_additem(Menu, String, "1");
  770.  
  771. formatex(String, charsmax(String), "%L", id, "CASEOPEN");
  772. menu_additem(Menu, String, "2");
  773.  
  774. formatex(String, charsmax(String), "%L", id, "TRADE");
  775. menu_additem(Menu, String, "3");
  776.  
  777. formatex(String, charsmax(String), "%L^n", id, "MARKET");
  778. menu_additem(Menu, String, "4");
  779.  
  780. if(RankKills[CurrentRank[id]+1] != 0)
  781. {
  782. formatex(String, charsmax(String), "%L%L", id, "TRASH", id, "RANKMENU",
  783. Ranks[CurrentRank[id]], Kills[id], RankKills[CurrentRank[id]+1], Ranks[CurrentRank[id]+1]);
  784. }
  785. else
  786. {
  787. formatex(String, charsmax(String), "%L%L", id, "TRASH", id, "RANKMENUMAX",
  788. Ranks[CurrentRank[id]], Kills[id]);
  789. }
  790. menu_additem(Menu, String, "5");
  791.  
  792. menu_display(id, Menu);
  793. }
  794.  
  795. public MainMenuh(id, Menu, Item)
  796. {
  797. if(Item == MENU_EXIT)
  798. {
  799. menu_destroy(Menu);
  800. return;
  801. }
  802.  
  803. new Data[14], Line[32];
  804. new Access, Callback;
  805. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  806.  
  807. new x = str_to_num(Data);
  808.  
  809. switch(x)
  810. {
  811. case 1 : {
  812. Inventory(id);
  813. }
  814.  
  815. case 2 : {
  816. CaseMenu(id);
  817.  
  818. if(MarketItem[id] > 0 || TradeItem[id] > 0 || inTrade[id] > 0)
  819. {
  820. print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
  821. DeleteTradeandMarket(id);
  822. }
  823. }
  824.  
  825. case 3 : {
  826. if(PendingTrade > MAXTRADEINSAMETIME && PTradeId[id] == 0)
  827. {
  828. print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
  829. return;
  830. }
  831.  
  832. TradeMenu(id);
  833.  
  834. if(MarketItem[id] > 0)
  835. {
  836. print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
  837. DeleteTradeandMarket(id);
  838. }
  839. }
  840.  
  841. case 4 : {
  842. MMarketMenu(id);
  843.  
  844. if(TradeItem[id] > 0 || inTrade[id] > 0)
  845. {
  846. print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
  847. DeleteTradeandMarket(id);
  848. }
  849. }
  850.  
  851. case 5 : {
  852. TrashMenu(id);
  853.  
  854. if(MarketItem[id] > 0 || TradeItem[id] > 0 || inTrade[id] > 0)
  855. {
  856. print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
  857. DeleteTradeandMarket(id);
  858. }
  859. }
  860. }
  861. }
  862.  
  863. public CaseMenu(id)
  864. {
  865. new String[128];
  866. formatex(String, charsmax(String), "%L", id, "CASEOPENM", Keys[id]);
  867. new Menu = menu_create(String, "CaseMenuh");
  868.  
  869. for(new i = 1; i < sizeof(Case_Data); i++)
  870. {
  871. new NumToString[6];
  872. num_to_str(i, NumToString, 5);
  873. formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
  874. menu_additem(Menu, String, NumToString);
  875. }
  876.  
  877. menu_display(id, Menu);
  878. }
  879.  
  880. public CaseMenuh(id, Menu, Item)
  881. {
  882. if(Item == MENU_EXIT)
  883. {
  884. menu_destroy(Menu);
  885. return;
  886. }
  887.  
  888. new Data[14], Line[32];
  889. new Access, Callback;
  890. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  891.  
  892. new x = str_to_num(Data);
  893.  
  894. if(Cases[id][x] > 0 && Keys[id] > 0)
  895. {
  896. Keys[id]--;
  897. Cases[id][x]--;
  898. SkinDrop(id, x);
  899. }
  900. else if(Keys[id] == 0)
  901. {
  902. print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHK");
  903. }
  904. else
  905. {
  906. print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHC");
  907. }
  908.  
  909. CaseMenu(id);
  910. }
  911.  
  912. public TrashMenu(id)
  913. {
  914. new String[128];
  915. formatex(String, charsmax(String), "%L", id, "TRASH");
  916. new Menu = menu_create(String, "TrashMenuh");
  917.  
  918. for(new i = 1; i < sizeof(SkinData); i++)
  919. {
  920. if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
  921. {
  922. new NumToString[6];
  923. num_to_str(i, NumToString, 5);
  924.  
  925. if(SkinData[i][3][0] != CSW_KNIFE)
  926. formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  927. else
  928. formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  929. menu_additem(Menu, String, NumToString);
  930. }
  931. }
  932.  
  933. menu_display(id, Menu);
  934. }
  935.  
  936. public TrashMenuh(id, Menu, Item)
  937. {
  938. if(Item == MENU_EXIT)
  939. {
  940. menu_destroy(Menu);
  941. return;
  942. }
  943.  
  944. new Data[14], Line[32];
  945. new Access, Callback;
  946. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  947. new x = str_to_num(Data);
  948.  
  949. Weapons[id][x]--;
  950. TrashMenu(id);
  951. SQL_UpdateUser(id);
  952. }
  953.  
  954. public Inventory(id)
  955. {
  956. new String[128];
  957. formatex(String, charsmax(String), "%L", id, "INVENTORY");
  958. new Menu = menu_create(String, "Inventoryh");
  959.  
  960. for(new i = 1; i < sizeof(SkinData); i++)
  961. {
  962. if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
  963. {
  964. new NumToString[6];
  965. num_to_str(i, NumToString, 5);
  966.  
  967. if(SkinData[i][3][0] != CSW_KNIFE)
  968. formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  969. else
  970. formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  971. menu_additem(Menu, String, NumToString);
  972. }
  973. }
  974.  
  975. menu_display(id, Menu);
  976. }
  977.  
  978. public Inventoryh(id, Menu, Item)
  979. {
  980. if(Item == MENU_EXIT)
  981. {
  982. menu_destroy(Menu);
  983. return;
  984. }
  985.  
  986. new Data[14], Line[32];
  987. new Access, Callback;
  988. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  989. new x = str_to_num(Data);
  990.  
  991. if(SkinData[x][3][0] == 16 || SkinData[x][3][0] == 17 || SkinData[x][3][0] == 26)
  992. {
  993. inUse[id][2] = x;
  994. }
  995. else if(SkinData[x][3][0] == 29)
  996. {
  997. inUse[id][3] = x;
  998. }
  999. else
  1000. {
  1001. inUse[id][1] = x;
  1002. }
  1003. }
  1004.  
  1005. public SkinCheck(id)
  1006. {
  1007. if(!is_user_alive(id))
  1008. return PLUGIN_HANDLED;
  1009.  
  1010. new Sil, WPName[32];
  1011. formatex(WPName, charsmax(WPName), DefaultModels[get_user_weapon(id)][1]);
  1012. new WPN = find_ent_by_owner(-1, DefaultModels[get_user_weapon(id)][1], id);
  1013.  
  1014. if(get_user_weapon(id) == CSW_M4A1 || get_user_weapon(id) == CSW_USP)
  1015. Sil = cs_get_weapon_silen(WPN);
  1016.  
  1017. if(get_user_weapon(id) == CSW_AWP)
  1018. cs_set_user_zoom(id, 0, 0);
  1019.  
  1020. PlayAnimation(id, AnimationIDs[get_user_weapon(id)][Sil]);
  1021.  
  1022. return PLUGIN_HANDLED;
  1023. }
  1024.  
  1025. public TradeMenu(id)
  1026. {
  1027. if(TradePiece[id] == 0)
  1028. {
  1029. TradePiece[id] = 1;
  1030. }
  1031.  
  1032. new String[128], kid, Menu;
  1033.  
  1034. if(TradePartner[id] > 0)
  1035. kid = TradePartner[id];
  1036. else
  1037. kid = TradeID[id];
  1038.  
  1039. if(TradeFounding[id] == 1)
  1040. {
  1041. formatex(String, charsmax(String), "%L", id, "WANTTRADE", Name[kid]);
  1042. }
  1043. else if(inTrade[id] == 1 && inTrade[kid] == 1)
  1044. {
  1045. formatex(String, charsmax(String), "%L", id, "TRADEITEMS", Name[kid]);
  1046. }
  1047. else
  1048. {
  1049. formatex(String, charsmax(String), "%L", id, "TRADEDOLLAR", Dollars[id]);
  1050. }
  1051.  
  1052. Menu = menu_create(String, "TradeMenuh");
  1053.  
  1054. if(TradeFounding[id] == 1)
  1055. {
  1056. formatex(String, charsmax(String), "%L", id, "TRADEACCEPT");
  1057. menu_additem(Menu, String, "-3");
  1058.  
  1059. formatex(String, charsmax(String), "%L", id, "TRADEREJECT");
  1060. menu_additem(Menu, String, "-2");
  1061. }
  1062. else if(inTrade[id] == 1 && inTrade[kid] == 1)
  1063. {
  1064. if(TradeItem[kid] == 0)
  1065. {
  1066. formatex(String, charsmax(String), "%L", id, "TRADENOTHING");
  1067. }
  1068. else if(TradeItem[kid] > 0 && TradeItem[kid] <= 90+MAXKNIFESKINS)
  1069. {
  1070. formatex(String, charsmax(String), "%L", id, "TRADEITEM", SkinData[TradeItem[kid]][0], TradePiece[kid]);
  1071. }
  1072. else if(TradeItem[kid] > 90+MAXKNIFESKINS && TradeItem[kid] <= 90+MAXKNIFESKINS+MAXCASES)
  1073. {
  1074. formatex(String, charsmax(String), "%L", id, "TRADEITEM", Case_Data[TradeItem[kid]-(90+MAXKNIFESKINS)][0], TradePiece[kid]);
  1075. }
  1076. else
  1077. {
  1078. formatex(String, charsmax(String), "%L", id, "TRADEITEM", KeyName, TradePiece[kid]);
  1079. }
  1080.  
  1081. menu_additem(Menu, String, "0");
  1082.  
  1083. formatex(String, charsmax(String), "%L", id, "TRADEYOURITEMS", TradeDollars[kid]);
  1084. menu_additem(Menu, String, "0");
  1085.  
  1086. if(TradeItem[id] == 0)
  1087. {
  1088. formatex(String, charsmax(String), "%L", id, "TRADENOTHING");
  1089. }
  1090. else if(TradeItem[id] > 0 && TradeItem[id] <= 90+MAXKNIFESKINS)
  1091. {
  1092. formatex(String, charsmax(String), "%L", id, "TRADEITEM", SkinData[TradeItem[id]][0], TradePiece[id]);
  1093. }
  1094. else if(TradeItem[id] > 90+MAXKNIFESKINS && TradeItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
  1095. {
  1096. formatex(String, charsmax(String), "%L", id, "TRADEITEM", Case_Data[TradeItem[id]-(90+MAXKNIFESKINS)][0], TradePiece[id]);
  1097. }
  1098. else
  1099. {
  1100. formatex(String, charsmax(String), "%L", id, "TRADEITEM", KeyName, TradePiece[id]);
  1101. }
  1102. menu_additem(Menu, String, "-4");
  1103.  
  1104. formatex(String, charsmax(String), "%L", id, "TRADEDOLLAR2", TradeDollars[id]);
  1105. menu_additem(Menu, String, "-5");
  1106.  
  1107. formatex(String, charsmax(String), "%L", id, "TRADEACCEPT");
  1108. menu_additem(Menu, String, "-6");
  1109.  
  1110. formatex(String, charsmax(String), "%L", id, "TRADEREJECT");
  1111. menu_additem(Menu, String, "-7");
  1112. }
  1113. else if(TradeID[id] == 0)
  1114. {
  1115. for(new i; i < MAXP; i++)
  1116. {
  1117. new NumToStr[6];
  1118. if(is_user_connected(i))
  1119. {
  1120. if(i == id || is_user_bot(i))
  1121. continue;
  1122.  
  1123. if(TradeFounding[i] == 0 && inTrade[i] == 0)
  1124. {
  1125. num_to_str(i, NumToStr, 5);
  1126. formatex(String, charsmax(String), "%s", Name[i]);
  1127. menu_additem(Menu, String, NumToStr);
  1128. }
  1129. }
  1130. }
  1131. }
  1132. else if(TradeID[id] > 0)
  1133. {
  1134. print_color(id, "!g%s!y %L", Prefix, id, "DONTACCEPTEDTRADE");
  1135. return;
  1136. }
  1137.  
  1138. menu_display(id, Menu);
  1139. }
  1140. public TradeMenuh(id, Menu, Item)
  1141. {
  1142. if(Item == MENU_EXIT)
  1143. {
  1144. menu_destroy(Menu);
  1145. return;
  1146. }
  1147.  
  1148. new Data[14], Line[32];
  1149. new Access, Callback;
  1150. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  1151.  
  1152. new x = str_to_num(Data);
  1153.  
  1154. if(x <= 0)
  1155. {
  1156. switch(x)
  1157. {
  1158. case 0 : TradeMenu(id);
  1159.  
  1160. case -3 : {
  1161. if(PendingTrade > MAXTRADEINSAMETIME)
  1162. {
  1163. print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
  1164. return;
  1165. }
  1166.  
  1167. TradeFounding[id] = 0;
  1168. inTrade[id] = 1;
  1169. new kid;
  1170. if(TradePartner[id] > 0)
  1171. kid = TradePartner[id];
  1172. else
  1173. kid = TradeID[id];
  1174. inTrade[kid] = 1;
  1175. TradePiece[id] = 0;
  1176. TradePiece[kid] = 0;
  1177. PTradeId[id] = 1;
  1178. PTradeId[kid] = 1;
  1179. TradeMenu(id);
  1180. TradeMenu(kid);
  1181. PendingTrade++;
  1182. }
  1183.  
  1184. case -2 : {
  1185. new kid;
  1186. if(TradePartner[id] > 0)
  1187. kid = TradePartner[id];
  1188. else
  1189. kid = TradeID[id];
  1190. inTrade[id] = 0;
  1191. TradePartner[id] = 0;
  1192. TradeFounding[id] = 0;
  1193. inTrade[kid] = 0;
  1194. TradeID[kid] = 0;
  1195. TradeID[id] = 0;
  1196. }
  1197.  
  1198. case -4 : {
  1199. TChooseItem(id);
  1200. }
  1201.  
  1202. case -5 : {
  1203. client_cmd(id, "messagemode TRADEDOLLARS");
  1204. }
  1205.  
  1206. case -6 : {
  1207. new kid;
  1208.  
  1209. if(TradePartner[id] > 0)
  1210. kid = TradePartner[id];
  1211. else
  1212. kid = TradeID[id];
  1213.  
  1214. Accept[id] = 1;
  1215.  
  1216. if(Accept[id] == 1 && Accept[kid] == 1)
  1217. {
  1218. Trade(id, kid);
  1219. }
  1220. else
  1221. {
  1222. MainMenu(id);
  1223. }
  1224. }
  1225.  
  1226. case -7 : {
  1227. new kid;
  1228. if(TradePartner[id] > 0)
  1229. kid = TradePartner[id];
  1230. else
  1231. kid = TradeID[id];
  1232.  
  1233. inTrade[id] = 0;
  1234. TradePartner[id] = 0;
  1235. TradeFounding[id] = 0;
  1236. TradeID[id] = 0;
  1237. inTrade[kid] = 0;
  1238. TradePartner[kid] = 0;
  1239. TradeFounding[kid] = 0;
  1240. TradeID[kid] = 0;
  1241. PTradeId[id] = 0;
  1242. PTradeId[kid] = 0;
  1243. PendingTrade--;
  1244. }
  1245. }
  1246. }
  1247. else
  1248. {
  1249. if(PendingTrade > MAXTRADEINSAMETIME && PTradeId[id] == 0)
  1250. {
  1251. print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
  1252. return;
  1253. }
  1254.  
  1255. TradeID[id] = x;
  1256. print_color(x, "!g%s!y %L", Prefix, x, "WANTTRADE2", Name[id]);
  1257. TradeFounding[x] = 1;
  1258. TradeFounding[id] = 0;
  1259. inTrade[id] = 1;
  1260. TradePartner[x] = id;
  1261. remove_task(TradeID[id]+9929);
  1262. set_task(30.0, "DeleteTrade", TradeID[id]+9929);
  1263. }
  1264. }
  1265.  
  1266. public DeleteTrade(id)
  1267. {
  1268. id = id - 9929;
  1269. if(Logined[id])
  1270. {
  1271. if(inTrade[id] == 0)
  1272. {
  1273. inTrade[id] = 0;
  1274. TradePartner[id] = 0;
  1275. TradeFounding[id] = 0;
  1276. }
  1277. }
  1278. }
  1279.  
  1280. public Trade(x, y) {
  1281. if(Logined[x] && Logined[y] ||
  1282. inTrade[x] == 1 && inTrade[y] == 1 ||
  1283. Accept[x] == 1 && Accept[y] == 1)
  1284. {
  1285. PendingTrade--;
  1286.  
  1287. if(TradeItem[x] > 0 && TradeItem[x] <= 90+MAXKNIFESKINS)
  1288. {
  1289. Weapons[y][TradeItem[x]] += TradePiece[x];
  1290. Weapons[x][TradeItem[x]] -= TradePiece[x];
  1291. }
  1292. else if(TradeItem[x] > 90+MAXKNIFESKINS && TradeItem[x] <= 90+MAXKNIFESKINS+MAXCASES)
  1293. {
  1294. Cases[y][TradeItem[x]-(90+MAXKNIFESKINS)] += TradePiece[x];
  1295. Cases[x][TradeItem[x]-(90+MAXKNIFESKINS)] -= TradePiece[x];
  1296. }
  1297. else if(TradeItem[x] > 0)
  1298. {
  1299. Keys[y] += TradePiece[x];
  1300. Keys[x] -= TradePiece[x];
  1301. }
  1302.  
  1303. if(TradeItem[y] > 0 && TradeItem[y] <= 90+MAXKNIFESKINS)
  1304. {
  1305. Weapons[y][TradeItem[y]] -= TradePiece[y];
  1306. Weapons[x][TradeItem[y]] += TradePiece[y];
  1307. }
  1308. else if(TradeItem[y] > 90+MAXKNIFESKINS && TradeItem[y] <= 90+MAXKNIFESKINS+MAXCASES)
  1309. {
  1310. Cases[y][TradeItem[y]-(90+MAXKNIFESKINS)] -= TradePiece[y];
  1311. Cases[x][TradeItem[y]-(90+MAXKNIFESKINS)] += TradePiece[y];
  1312. }
  1313. else if(TradeItem[y] > 0)
  1314. {
  1315. Keys[y] -= TradePiece[y];
  1316. Keys[x] += TradePiece[y];
  1317. }
  1318.  
  1319. Dollars[x] += TradeDollars[y];
  1320. Dollars[y] += TradeDollars[x];
  1321. Dollars[x] -= TradeDollars[x];
  1322. Dollars[y] -= TradeDollars[y];
  1323.  
  1324. print_color(x, "!g%s!y %L", Prefix, x, "SUCCESSTRADE");
  1325. print_color(y, "!g%s!y %L", Prefix, y, "SUCCESSTRADE");
  1326.  
  1327. DeleteTradeandMarket(x);
  1328.  
  1329. show_menu(x, 0, "^n", 1);
  1330. show_menu(y, 0, "^n", 1);
  1331.  
  1332. set_task(0.5, "SQL_UpdateUser", x);
  1333. set_task(0.5, "SQL_UpdateUser", y);
  1334.  
  1335. PTradeId[x] = 0;
  1336. PTradeId[y] = 0;
  1337. }
  1338. }
  1339.  
  1340. public TChooseItem(id)
  1341. {
  1342. new String[128];
  1343. formatex(String, charsmax(String), "%L", id, "CHOOSEITEM");
  1344. new Menu = menu_create(String, "TChooseItemh");
  1345.  
  1346. for(new i = 1; i < sizeof(SkinData); i++)
  1347. {
  1348. if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
  1349. {
  1350. new NumToString[6];
  1351. num_to_str(i, NumToString, 5);
  1352.  
  1353. if(SkinData[i][3][0] != CSW_KNIFE)
  1354. formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  1355. else
  1356. formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  1357. menu_additem(Menu, String, NumToString);
  1358. }
  1359. }
  1360.  
  1361. for(new i = 1; i < sizeof(Case_Data); i++)
  1362. {
  1363. if(Cases[id][i] > 0)
  1364. {
  1365. new NumToString[6];
  1366. num_to_str(i+sizeof(SkinData), NumToString, 5);
  1367. formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
  1368. menu_additem(Menu, String, NumToString);
  1369. }
  1370. }
  1371.  
  1372. if(Keys[id] > 0)
  1373. {
  1374. new NumToString[6];
  1375. num_to_str(1+sizeof(SkinData)+sizeof(Case_Data), NumToString, 5);
  1376. formatex(String, charsmax(String), "%s \r(%d)", KeyName, Keys[id]);
  1377. menu_additem(Menu, String, NumToString);
  1378. }
  1379.  
  1380. menu_display(id, Menu);
  1381. }
  1382.  
  1383. public TChooseItemh(id, Menu, Item)
  1384. {
  1385. if(Item == MENU_EXIT)
  1386. {
  1387. menu_destroy(Menu);
  1388. return;
  1389. }
  1390.  
  1391. new Data[14], Line[32];
  1392. new Access, Callback;
  1393. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  1394. new x = str_to_num(Data);
  1395.  
  1396. TradeItem[id] = x;
  1397. client_cmd(id, "messagemode TRADEPIECE");
  1398. }
  1399.  
  1400. public MChooseItem(id)
  1401. {
  1402. new String[128];
  1403. formatex(String, charsmax(String), "");
  1404. new Menu = menu_create(String, "MChooseItemh");
  1405.  
  1406. for(new i = 1; i < sizeof(SkinData); i++)
  1407. {
  1408. if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
  1409. {
  1410. new NumToString[6];
  1411. num_to_str(i, NumToString, 5);
  1412.  
  1413. if(SkinData[i][3][0] != CSW_KNIFE)
  1414. formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  1415. else
  1416. formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
  1417. menu_additem(Menu, String, NumToString);
  1418. }
  1419. }
  1420.  
  1421. for(new i = 1; i < sizeof(Case_Data); i++)
  1422. {
  1423. if(Cases[id][i] > 0)
  1424. {
  1425. new NumToString[6];
  1426. num_to_str(i+sizeof(SkinData), NumToString, 5);
  1427. formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
  1428. menu_additem(Menu, String, NumToString);
  1429. }
  1430. }
  1431.  
  1432. if(Keys[id] > 0)
  1433. {
  1434. new NumToString[6];
  1435. num_to_str(1+sizeof(SkinData)+sizeof(Case_Data), NumToString, 5);
  1436. formatex(String, charsmax(String), "%s \r(%d)", KeyName, Keys[id]);
  1437. menu_additem(Menu, String, NumToString);
  1438. }
  1439.  
  1440. menu_display(id, Menu);
  1441. }
  1442.  
  1443. public MChooseItemh(id, Menu, Item)
  1444. {
  1445. if(Item == MENU_EXIT)
  1446. {
  1447. menu_destroy(Menu);
  1448. return;
  1449. }
  1450.  
  1451. new Data[14], Line[32];
  1452. new Access, Callback;
  1453. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  1454. new x = str_to_num(Data);
  1455.  
  1456. MarketItem[id] = x;
  1457. MarketMenu(id);
  1458. }
  1459.  
  1460. public cmdDollarM(id)
  1461. {
  1462. if(inTrade[id] == 1 || !Logined[id])
  1463. return;
  1464.  
  1465. new Price, Data[32];
  1466. read_args(Data, charsmax(Data));
  1467. remove_quotes(Data);
  1468.  
  1469. Price = str_to_num(Data);
  1470.  
  1471. if(Price <= MinDollarMarket)
  1472. {
  1473. print_color(id, "!g%s!y %L", Prefix, id, "LOWPRICE", MinDollarMarket);
  1474. client_cmd(id, "messagemode MARKETDOLLAR");
  1475. MarketMenu(id);
  1476. }
  1477. else if(MaxDollarMarket >= Price)
  1478. {
  1479. MarketDollar[id] = Price;
  1480. MarketMenu(id);
  1481. }
  1482. else
  1483. {
  1484. print_color(id, "!g%s!y %L", Prefix, id, "HIGHPRICE", MaxDollarMarket);
  1485. client_cmd(id, "messagemode MARKETDOLLAR");
  1486. MarketMenu(id);
  1487. }
  1488. }
  1489.  
  1490. public cmdDollarT(id)
  1491. {
  1492. if(inTrade[id] == 0 || !Logined[id])
  1493. return;
  1494.  
  1495. new Piece, Data[32], kid;
  1496. read_args(Data, charsmax(Data));
  1497. remove_quotes(Data);
  1498.  
  1499. Piece = str_to_num(Data);
  1500.  
  1501. if(TradePartner[id] > 0)
  1502. kid = TradePartner[id];
  1503. else
  1504. kid = TradeID[id];
  1505.  
  1506. if(Piece <= 0)
  1507. {
  1508. client_cmd(id, "messagemode TRADEDOLLARS");
  1509. }
  1510. else if(Dollars[id] >= Piece)
  1511. {
  1512. TradeDollars[id] = Piece;
  1513. TradeMenu(id);
  1514. TradeMenu(kid);
  1515. Accept[id] = 0;
  1516. Accept[kid] = 0;
  1517. }
  1518. else
  1519. {
  1520. TradeDollars[id] = Dollars[id];
  1521. TradeMenu(id);
  1522. TradeMenu(kid);
  1523. Accept[id] = 0;
  1524. Accept[kid] = 0;
  1525. }
  1526. }
  1527. public cmdPiece(id)
  1528. {
  1529. new kid;
  1530.  
  1531. if(TradePartner[id] > 0)
  1532. kid = TradePartner[id];
  1533. else
  1534. kid = TradeID[id];
  1535.  
  1536. if(inTrade[id] == 0 || inTrade[kid] == 0 || !Logined[id])
  1537. return;
  1538.  
  1539. new Piece, Data[32];
  1540. read_args(Data, charsmax(Data));
  1541. remove_quotes(Data);
  1542.  
  1543. Piece = str_to_num(Data);
  1544.  
  1545. if(TradeItem[id] > 0 && TradeItem[id] <= 90+MAXKNIFESKINS)
  1546. {
  1547. if(Weapons[id][TradeItem[id]] >= Piece && Piece >= 1)
  1548. {
  1549. TradePiece[id] = Piece;
  1550. TradeMenu(id);
  1551. TradeMenu(kid);
  1552. Accept[id] = 0;
  1553. Accept[kid] = 0;
  1554. }
  1555. }
  1556. else if(TradeItem[id] > 90+MAXKNIFESKINS && TradeItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
  1557. {
  1558. if(Cases[id][TradeItem[id]-(90+MAXKNIFESKINS)] >= Piece && Piece >= 1)
  1559. {
  1560. TradePiece[id] = Piece;
  1561. TradeMenu(id);
  1562. TradeMenu(kid);
  1563. Accept[id] = 0;
  1564. Accept[kid] = 0;
  1565. }
  1566. }
  1567. else if(TradeItem[id] > 0)
  1568. {
  1569. if(Keys[id] >= Piece && Piece >= 1)
  1570. {
  1571. TradePiece[id] = Piece;
  1572. TradeMenu(id);
  1573. TradeMenu(kid);
  1574. Accept[id] = 0;
  1575. Accept[kid] = 0;
  1576. }
  1577. }
  1578. else
  1579. {
  1580. TradePiece[id] = 0;
  1581. TradeMenu(id);
  1582. TradeMenu(kid);
  1583. Accept[id] = 0;
  1584. Accept[kid] = 0;
  1585. return;
  1586. }
  1587. }
  1588.  
  1589. public RegMenu(id)
  1590. {
  1591. if(ServerLoaded == 0)
  1592. {
  1593. print_color(id, "!g%s!y %L", Prefix, id, "SERVERLOADING");
  1594. return;
  1595. }
  1596.  
  1597. new String[128];
  1598. formatex(String, charsmax(String), "%L", id, "REGISTERMENU");
  1599. new menu = menu_create(String, "RegMenuh" );
  1600.  
  1601. if(strlen(User[id]) > 0)
  1602. {
  1603. formatex(String, charsmax(String), "%L", id, "USERNAME", User[id]);
  1604. menu_additem(menu, String, "1");
  1605.  
  1606. formatex(String, charsmax(String), "%L^n", id, "PASSWORD", Password[id]);
  1607. menu_additem(menu, String, "2");
  1608. }
  1609. else
  1610. {
  1611. formatex(String, charsmax(String), "%L", id, "USERNAME2", User[id]);
  1612. menu_additem(menu, String, "1");
  1613. }
  1614.  
  1615. if(strlen(User[id]) > 0 && strlen(Password[id]) > 0 && UserLoad[id] == 0 && inProgress[id] == 0)
  1616. {
  1617. if(Found[id])
  1618. {
  1619. formatex(String, charsmax(String), "%L", id, "LOGIN");
  1620. menu_additem(menu, String, "3");
  1621. }
  1622. else
  1623. {
  1624. formatex(String, charsmax(String), "%L", id, "REGISTER");
  1625. menu_additem(menu, String, "4");
  1626. }
  1627. }
  1628.  
  1629. menu_display(id, menu);
  1630. }
  1631.  
  1632. public RegMenuh(id, Menu, Item)
  1633. {
  1634. if(Item == MENU_EXIT)
  1635. {
  1636. menu_destroy(Menu);
  1637. return;
  1638. }
  1639.  
  1640. new Data[14], Line[32];
  1641. new Access, Callback;
  1642. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  1643.  
  1644. new x = str_to_num(Data);
  1645.  
  1646. switch(x)
  1647. {
  1648. case 1 : {
  1649. client_cmd(id, "messagemode MY_USERNAME");
  1650. RegMenu(id);
  1651. }
  1652.  
  1653. case 2 : {
  1654. client_cmd(id, "messagemode MY_PASSWORD");
  1655. RegMenu(id);
  1656. }
  1657.  
  1658. case 3 : {
  1659. if(inProgress[id] == 0)
  1660. {
  1661. inProgress[id] = 1;
  1662. print_color(id, "!g%s!y %L", Prefix, id, "LOGINPENDING");
  1663. RegisterMod[id] = 1;
  1664. SQL_Check(id);
  1665. RegMenu(id);
  1666. }
  1667. else
  1668. {
  1669. RegMenu(id);
  1670. }
  1671. }
  1672.  
  1673. case 4 : {
  1674. if(inProgress[id] == 0)
  1675. {
  1676. inProgress[id] = 1;
  1677. print_color(id, "!g%s!y %L", Prefix, id, "REGISTERPENDING");
  1678. RegisterMod[id] = 2;
  1679. SQL_Check(id);
  1680. RegMenu(id);
  1681. }
  1682. else
  1683. {
  1684. RegMenu(id);
  1685. }
  1686. }
  1687. }
  1688. }
  1689.  
  1690. public SQL_RegCheck(id)
  1691. {
  1692. new szQuery[128], Len, a[32];
  1693.  
  1694. formatex(a, 31, "%s", User[id]);
  1695.  
  1696. replace_all(a, 31, "\", "\\");
  1697. replace_all(a, 31, "'", "\'");
  1698.  
  1699. Len += formatex(szQuery[Len], 128, "SELECT * FROM globaloffensive ");
  1700. Len += formatex(szQuery[Len], 128-Len,"WHERE USER = '%s'", a);
  1701.  
  1702. new szData[2];
  1703. szData[0] = id;
  1704. szData[1] = get_user_userid(id);
  1705.  
  1706. SQL_ThreadQuery(SQL_TUPLE, "SQL_RegCheckResult", szQuery, szData, 2);
  1707.  
  1708. UserLoad[id] = 1;
  1709. }
  1710.  
  1711. public SQL_RegCheckResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
  1712. {
  1713. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1714. {
  1715. log_amx("%s", Error);
  1716. return;
  1717. }
  1718.  
  1719. new id = szData[0];
  1720.  
  1721. if(szData[1] != get_user_userid(id))
  1722. return;
  1723.  
  1724. if(SQL_NumRows(Query) > 0)
  1725. {
  1726. Found[id] = true;
  1727. }
  1728. else
  1729. {
  1730. Found[id] = false;
  1731. }
  1732.  
  1733. UserLoad[id] = 0;
  1734. RegMenu(id);
  1735. }
  1736.  
  1737. public SQL_Check(id)
  1738. {
  1739. new szQuery[128], Len, a[32];
  1740.  
  1741. formatex(a, 31, "%s", User[id]);
  1742.  
  1743. replace_all(a, 31, "\", "\\");
  1744. replace_all(a, 31, "'", "\'");
  1745.  
  1746. Len += formatex(szQuery[Len], 128, "SELECT * FROM globaloffensive ");
  1747. Len += formatex(szQuery[Len], 128-Len,"WHERE USER = '%s'", a);
  1748.  
  1749. new szData[2];
  1750. szData[0] = id;
  1751. szData[1] = get_user_userid(id);
  1752.  
  1753. SQL_ThreadQuery(SQL_TUPLE, "SQL_CheckResult", szQuery, szData, 2);
  1754. }
  1755.  
  1756. public SQL_CheckResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
  1757. {
  1758. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1759. {
  1760. log_amx("%s", Error);
  1761. return;
  1762. }
  1763.  
  1764. new id = szData[0];
  1765.  
  1766. if(szData[1] != get_user_userid(id))
  1767. return;
  1768.  
  1769. if(RegisterMod[id] == 2)
  1770. {
  1771. if(SQL_NumRows(Query) > 0)
  1772. {
  1773. print_color(id, "!g%s!y %L", Prefix, id, "USERNAMEUSING");
  1774. inProgress[id] = 0;
  1775. RegMenu(id);
  1776. }
  1777. else
  1778. {
  1779. SQL_NewAccount(id);
  1780. }
  1781. }
  1782. else if(RegisterMod[id] == 1)
  1783. {
  1784. if(SQL_NumRows(Query) == 0)
  1785. {
  1786. print_color(id, "!g%s!y %L", Prefix, id, "BADPW");
  1787. inProgress[id] = 0;
  1788. RegMenu(id);
  1789. }
  1790. else
  1791. {
  1792. SQL_UserLoad(id);
  1793. }
  1794. }
  1795. }
  1796.  
  1797. public SQL_NewAccount(id)
  1798. {
  1799. new szQuery[512], Len, a[32], b[32], c[32];
  1800.  
  1801. formatex(a, 31, "%s", User[id]);
  1802. formatex(b, 31, "%s", Password[id]);
  1803. formatex(c, 31, "%s", Name[id]);
  1804.  
  1805. replace_all(a, 31, "\", "\\");
  1806. replace_all(a, 31, "'", "\'");
  1807. replace_all(b, 31, "\", "\\");
  1808. replace_all(b, 31, "'", "\'");
  1809. replace_all(c, 31, "\", "\\");
  1810. replace_all(c, 31, "'", "\'");
  1811.  
  1812. Len += formatex(szQuery[Len], 511, "INSERT INTO globaloffensive ");
  1813. Len += formatex(szQuery[Len], 511-Len,"(USER,PW,NAME) VALUES('%s','%s','%s')", a, b, c);
  1814.  
  1815. new szData[2];
  1816. szData[0] = id;
  1817. szData[1] = get_user_userid(id);
  1818.  
  1819. SQL_ThreadQuery(SQL_TUPLE,"SQL_NewAccountResult", szQuery, szData, 2);
  1820. }
  1821.  
  1822. public SQL_NewAccountResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
  1823. {
  1824. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1825. {
  1826. log_amx("%s", Error);
  1827. return;
  1828. }
  1829.  
  1830. new id = szData[0];
  1831.  
  1832. if(szData[1] != get_user_userid(id))
  1833. return;
  1834.  
  1835. inProgress[id] = 0;
  1836. RegisterMod[id] = 2;
  1837. print_color(id, "!g%s!y %L", Prefix, id, "REGISTERED");
  1838. print_color(id, "!g%s!y %L", Prefix, id, "REGDATAS", User[id], Password[id]);
  1839. SQL_RegCheck(id);
  1840.  
  1841. return;
  1842. }
  1843.  
  1844. public SQL_UserLoad(id)
  1845. {
  1846. new szQuery[256], Len, a[32];
  1847.  
  1848. formatex(a, 31, "%s", User[id]);
  1849.  
  1850. replace_all(a, 31, "\", "\\");
  1851. replace_all(a, 31, "'", "\'");
  1852.  
  1853. Len += formatex(szQuery[Len], 256, "SELECT * FROM globaloffensive ");
  1854. Len += formatex(szQuery[Len], 256-Len,"WHERE USER = '%s'", a);
  1855.  
  1856. new szData[2];
  1857. szData[0] = id;
  1858. szData[1] = get_user_userid(id);
  1859.  
  1860. SQL_ThreadQuery(SQL_TUPLE,"SQL_UserLoadResult", szQuery, szData, 2);
  1861. }
  1862.  
  1863. public SQL_UserLoadResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
  1864. {
  1865. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1866. {
  1867. log_amx("%s", Error);
  1868. return;
  1869. }
  1870. else
  1871. {
  1872. new id = szData[0];
  1873.  
  1874. if(szData[1] != get_user_userid(id))
  1875. return;
  1876.  
  1877. new SqlPassword[32], i;
  1878. SQL_ReadResult(Query, 2, SqlPassword, 31);
  1879.  
  1880. if(equal(Password[id], SqlPassword))
  1881. {
  1882. SQL_ReadResult(Query, 2, Password[id], 31);
  1883. Activity[id] = SQL_ReadResult(Query, 132);
  1884.  
  1885. if(Activity[id] > 0)
  1886. {
  1887. print_color(id, "!g%s!y %L", Prefix, id, "USERUSING");
  1888. inProgress[id] = 0;
  1889. RegMenu(id);
  1890. return;
  1891. }
  1892.  
  1893. UserID[id] = SQL_ReadResult(Query, 0);
  1894.  
  1895. Dollars[id] = SQL_ReadResult(Query, 4);
  1896. Keys[id] = SQL_ReadResult(Query, 11);
  1897.  
  1898. for(i = 1; i < sizeof(Case_Data); i++)
  1899. {
  1900. Cases[id][i] = SQL_ReadResult(Query, 4+i);
  1901. }
  1902.  
  1903. for(i = 1; i < sizeof(SkinData); i++)
  1904. {
  1905. Weapons[id][i] = SQL_ReadResult(Query, 11+i);
  1906. }
  1907.  
  1908. Activity[id] = 1;
  1909.  
  1910. Kills[id] = SQL_ReadResult(Query, 133);
  1911. CurrentRank[id] = SQL_ReadResult(Query, 134);
  1912.  
  1913. if(CurrentRank[id] == 0)
  1914. {
  1915. CurrentRank[id] = 1;
  1916. }
  1917.  
  1918. SQL_UpdateActivity(id);
  1919.  
  1920. print_color(id, "!g%s!y %L", Prefix, id, "LOGINED");
  1921.  
  1922. inProgress[id] = 0;
  1923. Logined[id] = true;
  1924. MainMenu(id);
  1925. }
  1926. else
  1927. {
  1928. print_color(id, "!g%s!y %L", Prefix, id, "BADPW");
  1929. inProgress[id] = 0;
  1930. RegMenu(id);
  1931. }
  1932. }
  1933. }
  1934.  
  1935. public cmdUser(id)
  1936. {
  1937. if(Logined[id])
  1938. {
  1939. return PLUGIN_HANDLED;
  1940. }
  1941.  
  1942. if(UserLoad[id] == 1)
  1943. {
  1944. RegMenu(id);
  1945. return PLUGIN_HANDLED;
  1946. }
  1947.  
  1948. new cmdData[32], cmdLength;
  1949. cmdData[0] = EOS;
  1950. read_args(cmdData, 31);
  1951. remove_quotes(cmdData);
  1952.  
  1953. cmdLength = strlen(cmdData);
  1954.  
  1955. if(cmdLength < 4)
  1956. {
  1957. print_color(id, "!g%s!y %L", Prefix, id, "SHORT");
  1958. return PLUGIN_HANDLED;
  1959. }
  1960.  
  1961. if(cmdLength > 19)
  1962. {
  1963. print_color(id, "!g%s!y %L", Prefix, id, "LONG");
  1964. return PLUGIN_HANDLED;
  1965. }
  1966.  
  1967. copy(User[id], 31, cmdData);
  1968. SQL_RegCheck(id);
  1969. return PLUGIN_HANDLED;
  1970. }
  1971.  
  1972. public cmdPassword(id)
  1973. {
  1974. if(Logined[id] || strlen(User[id]) == 0)
  1975. {
  1976. return PLUGIN_HANDLED;
  1977. }
  1978.  
  1979. new cmdData[32], cmdLength;
  1980. cmdData[0] = EOS;
  1981. read_args(cmdData, 31);
  1982. remove_quotes(cmdData);
  1983.  
  1984. cmdLength = strlen(cmdData);
  1985.  
  1986. if(cmdLength < 4)
  1987. {
  1988. print_color(id, "!g%s!y %L", Prefix, id, "SHORT");
  1989. return PLUGIN_HANDLED;
  1990. }
  1991.  
  1992. if(cmdLength > 19)
  1993. {
  1994. print_color(id, "!g%s!y %L", Prefix, id, "LONG");
  1995. return PLUGIN_HANDLED;
  1996. }
  1997.  
  1998. copy(Password[id], 31, cmdData);
  1999. RegMenu(id);
  2000. return PLUGIN_HANDLED;
  2001. }
  2002.  
  2003. public SQL_Results(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
  2004. {
  2005. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  2006. {
  2007. log_amx("%s", Error);
  2008. return;
  2009. }
  2010. }
  2011.  
  2012. public SQL_FirstLoad()
  2013. {
  2014. SQL_TUPLE = SQL_MakeDbTuple(SQL_Host, SQL_User, SQL_Password, SQL_Database);
  2015. SQL_Reload();
  2016. }
  2017.  
  2018. public SQL_Reload()
  2019. {
  2020. new szQuery[256], Len;
  2021.  
  2022. Len += formatex(szQuery[Len], 256, "UPDATE globaloffensive SET ");
  2023. Len += formatex(szQuery[Len], 255-Len,"ACT = '0' ");
  2024. Len += formatex(szQuery[Len], 255-Len,"WHERE ACT = '1'");
  2025.  
  2026. SQL_ThreadQuery(SQL_TUPLE,"SQL_Results", szQuery);
  2027. ServerLoaded = 1;
  2028. }
  2029.  
  2030. public SQL_UpdateActivity(id)
  2031. {
  2032. new sQuery[512], szQuery[256], a[32];
  2033. formatex(a, 31, "%s", Name[id]);
  2034.  
  2035. replace_all(a, 31, "\", "\\");
  2036. replace_all(a, 31, "'", "\'");
  2037.  
  2038. formatex(szQuery, charsmax(szQuery), "UPDATE globaloffensive SET ");
  2039. add(sQuery, charsmax(sQuery), szQuery);
  2040.  
  2041. formatex(szQuery, charsmax(szQuery),"NAME = '%s', ", a);
  2042. add(sQuery, charsmax(sQuery), szQuery);
  2043.  
  2044. formatex(szQuery, charsmax(szQuery),"ACT = '%d' ", Activity[id]);
  2045. add(sQuery, charsmax(sQuery), szQuery);
  2046.  
  2047. formatex(szQuery, charsmax(szQuery),"WHERE Id = '%d'", UserID[id]);
  2048. add(sQuery, charsmax(sQuery), szQuery);
  2049.  
  2050. SQL_ThreadQuery(SQL_TUPLE, "SQL_Results", sQuery);
  2051. }
  2052.  
  2053. public SQL_UpdateUser(id)
  2054. {
  2055. if(!Logined[id])
  2056. return;
  2057.  
  2058. new sQuery[2000], szQuery[256];
  2059. new a[32], i;
  2060. formatex(a, 31, "%s", Name[id]);
  2061.  
  2062. replace_all(a, 31, "\", "\\");
  2063. replace_all(a, 31, "'", "\'");
  2064.  
  2065. formatex(szQuery, charsmax(szQuery), "UPDATE globaloffensive SET ");
  2066. add(sQuery, charsmax(sQuery), szQuery);
  2067.  
  2068. formatex(szQuery, charsmax(szQuery),"NAME = '%s', ", a);
  2069. add(sQuery, charsmax(sQuery), szQuery);
  2070.  
  2071. formatex(szQuery, charsmax(szQuery),"DOLLAR = '%d', ", Dollars[id]);
  2072. add(sQuery, charsmax(sQuery), szQuery);
  2073.  
  2074. formatex(szQuery, charsmax(szQuery),"K = '%d', ", Keys[id]);
  2075. add(sQuery, charsmax(sQuery), szQuery);
  2076.  
  2077. formatex(szQuery, charsmax(szQuery),"KILLS = '%d', ", Kills[id]);
  2078. add(sQuery, charsmax(sQuery), szQuery);
  2079.  
  2080. formatex(szQuery, charsmax(szQuery),"RANK = '%d', ", CurrentRank[id]);
  2081. add(sQuery, charsmax(sQuery), szQuery);
  2082.  
  2083. for(i = 1; i < sizeof(Case_Data); i++)
  2084. {
  2085. formatex(szQuery, charsmax(szQuery), "C%d = '%d', ", i, Cases[id][i]);
  2086. add(sQuery, charsmax(sQuery), szQuery);
  2087. }
  2088.  
  2089. for(i = 1; i < sizeof(SkinData); i++)
  2090. {
  2091. formatex(szQuery, charsmax(szQuery), "W%d = '%d', ", i, Weapons[id][i]);
  2092. add(sQuery, charsmax(sQuery), szQuery);
  2093. }
  2094.  
  2095. formatex(szQuery, charsmax(szQuery),"ACT = '%d' ", Activity[id]);
  2096. add(sQuery, charsmax(sQuery), szQuery);
  2097.  
  2098. formatex(szQuery, charsmax(szQuery),"WHERE Id = '%d'", UserID[id]);
  2099. add(sQuery, charsmax(sQuery), szQuery);
  2100.  
  2101. SQL_ThreadQuery(SQL_TUPLE, "SQL_Results", sQuery);
  2102. }
  2103.  
  2104. public client_putinserver(id)
  2105. {
  2106. for(new i = 1; i < 3; i++)
  2107. inUse[id][i] = 0;
  2108.  
  2109. UserLoad[id] = 0;
  2110. inProgress[id] = 0;
  2111. Logined[id] = false;
  2112. copy(Password[id], 31, "");
  2113. copy(User[id], 31, "");
  2114. get_user_name(id, Name[id], 31);
  2115.  
  2116. Activity[id] = 0;
  2117. DeleteTradeandMarket(id);
  2118. }
  2119.  
  2120. public client_disconnect(id)
  2121. {
  2122. DeleteTradeandMarket(id);
  2123.  
  2124. if(Logined[id])
  2125. {
  2126. Logined[id] = false;
  2127. Activity[id] = 0;
  2128. SQL_UpdateActivity(id);
  2129. log_amx("asdsdadsadsa");
  2130. }
  2131. }
  2132.  
  2133. public DeleteTradeandMarket(id)
  2134. {
  2135. new kid;
  2136.  
  2137. if(TradePartner[id] > 0)
  2138. kid = TradePartner[id];
  2139. else if(TradeID[id] > 0)
  2140. kid = TradeID[id];
  2141.  
  2142. inTrade[id] = 0;
  2143. TradeDollars[id] = 0;
  2144. TradeFounding[id] = 0;
  2145. TradePartner[id] = 0;
  2146. TradeItem[id] = 0;
  2147. TradeID[id] = 0;
  2148.  
  2149. if(kid > 0)
  2150. {
  2151. inTrade[id] = 0;
  2152. TradeDollars[id] = 0;
  2153. TradeFounding[id] = 0;
  2154. TradePartner[id] = 0;
  2155. TradeItem[id] = 0;
  2156. TradeID[id] = 0;
  2157. PTradeId[id] = 0;
  2158. PTradeId[kid] = 0;
  2159. }
  2160. }
  2161.  
  2162. public MMarketMenu(id)
  2163. {
  2164. new String[128];
  2165. formatex(String, charsmax(String), "%L", id, "MMARKET", Dollars[id]);
  2166. new Menu = menu_create(String, "MMarketMenuh");
  2167.  
  2168. formatex(String, charsmax(String), "%L", id, "SELLI");
  2169. menu_additem(Menu, String, "1");
  2170.  
  2171. formatex(String, charsmax(String), "%L", id, "BUYI");
  2172. menu_additem(Menu, String, "2");
  2173.  
  2174. menu_display(id, Menu);
  2175. }
  2176.  
  2177. public MMarketMenuh(id, Menu, Item)
  2178. {
  2179. if(Item == MENU_EXIT)
  2180. {
  2181. menu_destroy(Menu);
  2182. return;
  2183. }
  2184.  
  2185. new Data[14], Line[32];
  2186. new Access, Callback;
  2187. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  2188.  
  2189. new x = str_to_num(Data);
  2190.  
  2191. switch(x)
  2192. {
  2193. case 1 : {
  2194. MarketMenu(id);
  2195. }
  2196.  
  2197. case 2 : {
  2198. BuyMenu(id);
  2199. }
  2200. }
  2201. }
  2202.  
  2203. public MarketMenu(id)
  2204. {
  2205. new String[128], ItemName[32];
  2206.  
  2207. if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
  2208. {
  2209. formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
  2210. }
  2211. else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
  2212. {
  2213. formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
  2214. }
  2215. else if(MarketItem[id] > 0)
  2216. {
  2217. formatex(ItemName, charsmax(ItemName), "%s", KeyName);
  2218. }
  2219.  
  2220. formatex(String, charsmax(String), "%L", id, "MARKET");
  2221. new menu = menu_create(String, "MarketMenuh" );
  2222.  
  2223. if(InMarket[id] == 0)
  2224. {
  2225. if(MarketItem[id] == 0)
  2226. {
  2227. formatex(String, charsmax(String), "%L^n", id, "CHOOSEITEM");
  2228. }
  2229. else
  2230. {
  2231. formatex(String, charsmax(String), "%L", id, "ITEM", ItemName);
  2232. }
  2233. menu_additem(menu, String, "1");
  2234.  
  2235. formatex(String, charsmax(String), "%L", id, "CHOOSESELLITEM", MarketDollar[id]);
  2236. menu_additem(menu, String, "2");
  2237.  
  2238. formatex(String, charsmax(String), "%L", id, "TOMARKET");
  2239. menu_additem(menu, String, "3");
  2240. }
  2241. else
  2242. {
  2243. formatex(String, charsmax(String), "%L", id, "INMARKET", ItemName, MarketDollar[id]);
  2244. menu_additem(menu, String, "0");
  2245. }
  2246.  
  2247. menu_display(id, menu);
  2248. }
  2249.  
  2250. public MarketMenuh(id, Menu, Item)
  2251. {
  2252. if(Item == MENU_EXIT)
  2253. {
  2254. menu_destroy(Menu);
  2255. return;
  2256. }
  2257.  
  2258. new Data[14], Line[32];
  2259. new Access, Callback;
  2260. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  2261.  
  2262. new x = str_to_num(Data);
  2263.  
  2264. switch(x)
  2265. {
  2266. case 0:
  2267. {
  2268. InMarket[id] = 0;
  2269. MarketItem[id] = 0;
  2270. MarketDollar[id] = 0;
  2271. MChooseItem(id);
  2272. }
  2273.  
  2274. case 1:
  2275. {
  2276. MChooseItem(id);
  2277. }
  2278.  
  2279. case 2:
  2280. {
  2281. client_cmd(id, "messagemode MARKETDOLLAR");
  2282. MarketMenu(id);
  2283. }
  2284.  
  2285. case 3:
  2286. {
  2287. if(MarketItem[id] > 0)
  2288. {
  2289. new ItemName[32];
  2290.  
  2291. if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
  2292. {
  2293. formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
  2294. }
  2295. else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
  2296. {
  2297. formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
  2298. }
  2299. else if(MarketItem[id] > 0)
  2300. {
  2301. formatex(ItemName, charsmax(ItemName), "%s", KeyName);
  2302. }
  2303.  
  2304. for(new i; i < MAXP; i++)
  2305. if(is_user_connected(i))
  2306. print_color(i, "!g%s!y %L", Prefix, i, "SOLVEDTOMARKET", Name[id], ItemName, MarketDollar[id]);
  2307.  
  2308. InMarket[id] = 1;
  2309. MarketMenu(id);
  2310. }
  2311. else
  2312. {
  2313. MarketMenu(id);
  2314. }
  2315. }
  2316. }
  2317. }
  2318.  
  2319. public BuyMenu(id)
  2320. {
  2321. new String[128], ItemName[32];
  2322.  
  2323. formatex(String, charsmax(String), "%L", id, "MARKETMENUBUY", Dollars[id]);
  2324. new Menu = menu_create(String, "BuyMenuh" );
  2325.  
  2326. for(new i; i < MAXP; i++)
  2327. {
  2328. if(!is_user_connected(i) || !Logined[i] || InMarket[i] == 0)
  2329. continue;
  2330.  
  2331. if(MarketItem[i] > 0 && MarketItem[i] <= 90+MAXKNIFESKINS)
  2332. {
  2333. formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[i]][0]);
  2334. }
  2335. else if(MarketItem[i] > 90+MAXKNIFESKINS && MarketItem[i] <= 90+MAXKNIFESKINS+MAXCASES)
  2336. {
  2337. formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[i]-(90+MAXKNIFESKINS)][0]);
  2338. }
  2339. else if(MarketItem[i] > 0)
  2340. {
  2341. formatex(ItemName, charsmax(ItemName), "%s", KeyName);
  2342. }
  2343.  
  2344. new Nts[3];
  2345. num_to_str(i, Nts, 2);
  2346. formatex(String, charsmax(String), "%L", id, "SELLITEM", ItemName, MarketDollar[i], Name[i]);
  2347. menu_additem(Menu, String, Nts);
  2348. }
  2349.  
  2350. menu_display(id, Menu);
  2351. }
  2352.  
  2353. public BuyMenuh(id, Menu, Item)
  2354. {
  2355. if(Item == MENU_EXIT)
  2356. {
  2357. menu_destroy(Menu);
  2358. return;
  2359. }
  2360.  
  2361. new Data[14], Line[32];
  2362. new Access, Callback;
  2363. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  2364.  
  2365. new x = str_to_num(Data);
  2366.  
  2367. if(InMarket[x] > 0 && MarketItem[x] > 0 && MarketDollar[x] > 0)
  2368. {
  2369. if(Dollars[id] < MarketDollar[x])
  2370. {
  2371. print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHDOLLAR");
  2372. return;
  2373. }
  2374.  
  2375. if(MarketItem[x] > 0 && MarketItem[x] <= 90+MAXKNIFESKINS)
  2376. {
  2377. Weapons[id][MarketItem[x]]++;
  2378. Weapons[x][MarketItem[x]]--;
  2379. }
  2380. else if(MarketItem[x] > 90+MAXKNIFESKINS && MarketItem[x] <= 90+MAXKNIFESKINS+MAXCASES)
  2381. {
  2382. Cases[id][MarketItem[x]-(90+MAXKNIFESKINS)]++;
  2383. Cases[x][MarketItem[x]-(90+MAXKNIFESKINS)]--;
  2384. }
  2385. else if(MarketItem[x] > 0)
  2386. {
  2387. Keys[id]++;
  2388. Keys[x]--;
  2389. }
  2390.  
  2391. Dollars[id] -= MarketDollar[x];
  2392. Dollars[x] += MarketDollar[x];
  2393. InMarket[x] = 0;
  2394.  
  2395. new ItemName[32];
  2396.  
  2397. if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
  2398. {
  2399. formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
  2400. }
  2401. else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
  2402. {
  2403. formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
  2404. }
  2405. else if(MarketItem[id] > 0)
  2406. {
  2407. formatex(ItemName, charsmax(ItemName), "%s", KeyName);
  2408. }
  2409.  
  2410.  
  2411. for(new i; i < MAXP; i++)
  2412. if(is_user_connected(i))
  2413. print_color(i, "!g%s!y %L", Prefix, i, "BUYINGITEM", Name[id], ItemName, MarketDollar[x], Name[x]);
  2414.  
  2415. MarketDollar[x] = 0;
  2416. MarketItem[x] = 0;
  2417. SQL_UpdateUser(id);
  2418. SQL_UpdateUser(x);
  2419. }
  2420. }
  2421.  
  2422. public Guns(id)
  2423. {
  2424. if(Choosen[id] > 1)
  2425. {
  2426. print_color(id, "!g%s!y %L", Prefix, id, "WPMESSAGE");
  2427. }
  2428. else if(Choosen[id] < 1)
  2429. {
  2430. Choosen[id] = 0;
  2431. TakeWeapons(id);
  2432. }
  2433. }
  2434.  
  2435. public PlayerSpawn(id)
  2436. {
  2437. if(!is_user_alive(id))
  2438. return;
  2439.  
  2440. set_user_armor(id, 100);
  2441.  
  2442. if(get_pcvar_num(CvarWeaponMenu) == 1)
  2443. {
  2444. Choosen[id] = 0;
  2445. TakeWeapons(id);
  2446. }
  2447. }
  2448.  
  2449. public TakeWeapons(id)
  2450. {
  2451. if(is_user_alive(id))
  2452. {
  2453. Choosen[id] = 0;
  2454.  
  2455. if(user_has_weapon(id, CSW_C4))
  2456. {
  2457. strip_user_weapons(id);
  2458. give_item(id, "weapon_c4");
  2459. give_item(id, "weapon_knife");
  2460. WeaponMenu(id);
  2461. return PLUGIN_HANDLED;
  2462. }
  2463.  
  2464. strip_user_weapons(id);
  2465. give_item(id, "weapon_knife");
  2466. WeaponMenu(id);
  2467.  
  2468. if(cs_get_user_team(id) == CS_TEAM_CT)
  2469. {
  2470. cs_set_user_defuse(id, 1);
  2471. }
  2472. }
  2473. return PLUGIN_CONTINUE;
  2474. }
  2475.  
  2476. public WeaponMenu(id)
  2477. {
  2478. if(Choosen[id] > 1)
  2479. return;
  2480.  
  2481. new String[128], Menu;
  2482.  
  2483. if(Choosen[id] == 0)
  2484. {
  2485. formatex(String, 127, "%s %L", Prefix, LANG_SERVER, "WPMENU2");
  2486. Menu = menu_create(String, "WeaponMenuh");
  2487.  
  2488. for(new i = 1; i < sizeof(FirstWeaponNames); i++)
  2489. {
  2490. new NumToString[6];
  2491. num_to_str(i, NumToString, 5);
  2492. formatex(String, charsmax(String), "%s", FirstWeaponNames[i][0]);
  2493. menu_additem(Menu, String, NumToString);
  2494. }
  2495. }
  2496.  
  2497. if(Choosen[id] == 1)
  2498. {
  2499. formatex(String, 127, "%s %L", Prefix, LANG_SERVER, "WPMENU2");
  2500. Menu = menu_create(String, "WeaponMenuh");
  2501.  
  2502. for(new i = 1; i < sizeof(SecondaryWeaponNames); i++)
  2503. {
  2504. new NumToString[6];
  2505. num_to_str(i, NumToString, 5);
  2506. formatex(String, charsmax(String), "%s", SecondaryWeaponNames[i][0]);
  2507. menu_additem(Menu, String, NumToString);
  2508. }
  2509. }
  2510.  
  2511. menu_display(id, Menu);
  2512. }
  2513.  
  2514. public WeaponMenuh(id, Menu, Item)
  2515. {
  2516. if(Item == MENU_EXIT)
  2517. {
  2518. menu_destroy(Menu);
  2519. return;
  2520. }
  2521.  
  2522. new Data[14], Line[32];
  2523. new Access, Callback;
  2524. menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
  2525.  
  2526. new x = str_to_num(Data);
  2527.  
  2528. if(Choosen[id] == 0)
  2529. {
  2530. give_item(id, FirstWeaponNames[x][1]);
  2531. cs_set_user_bpammo(id, FirstWeaponNames[x][2][0], 90);
  2532. }
  2533. if(Choosen[id] == 1)
  2534. {
  2535. give_item(id, SecondaryWeaponNames[x][1]);
  2536. cs_set_user_bpammo(id, SecondaryWeaponNames[x][2][0], 90);
  2537. }
  2538.  
  2539. Choosen[id]++;
  2540.  
  2541. if(Choosen[id] >= 2)
  2542. {
  2543. Grenades(id);
  2544. }
  2545.  
  2546. WeaponMenu(id);
  2547. }
  2548.  
  2549. stock PlayAnimation(const Player, const Sequence)
  2550. {
  2551. set_pev(Player, pev_weaponanim, Sequence);
  2552.  
  2553. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
  2554. write_byte(Sequence);
  2555. write_byte(pev(Player, pev_body));
  2556. message_end();
  2557. }
  2558.  
  2559. stock print_color(const id, const input[], any:...)
  2560. {
  2561. new count = 1, players[32];
  2562. static msg[191];
  2563. vformat(msg, 190, input, 3);
  2564.  
  2565. replace_all(msg, 190, "!g", "^4");
  2566. replace_all(msg, 190, "!y", "^1");
  2567. replace_all(msg, 190, "!t", "^3");
  2568.  
  2569. if(id) players[0] = id; else get_players(players, count, "ch");
  2570. {
  2571. for (new i = 0; i < count; i++)
  2572. {
  2573. if (is_user_connected(players[i]))
  2574. {
  2575. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  2576. write_byte(players[i]);
  2577. write_string(msg);
  2578. message_end();
  2579. }
  2580. }
  2581. }
  2582.  
  2583. return PLUGIN_HANDLED;
  2584. }
  2585.  
  2586. stock Grenades(id)
  2587. {
  2588. give_item(id, "weapon_hegrenade");
  2589. give_item(id, "weapon_flashbang");
  2590. }
  2591. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  2592. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  2593. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement