Guest User

Untitled

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