Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.18 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fakemeta>
  4. #include <csgomod>
  5.  
  6. #define PLUGIN "CS:GO Buy Menu"
  7. #define VERSION "1.1"
  8. #define AUTHOR "O'Zone"
  9.  
  10. #define CSW_NIGHTVISION 0
  11. #define CSW_DEFUSEKIT 2
  12. #define CSW_SHIELD 33
  13.  
  14. new const weaponCommands[][] = { "nvgs", "p228", "defuser", "scout", "hegren", "", "mac10", "aug", "sgren",
  15. "elites", "fn57", "ump45", "sg550", "galil", "famas", "usp", "glock", "awp", "mp5", "", "m4a1", "tmp",
  16. "g3sg1", "flash", "deagle", "sg552", "ak47", "", "p90", "vest", "vesthelm", "shield"
  17. };
  18.  
  19. new cvarBuyTime, Float:roundStartTime, mapBuyBlock;
  20.  
  21. public plugin_init()
  22. {
  23. register_plugin(PLUGIN, VERSION, AUTHOR);
  24.  
  25. cvarBuyTime = get_cvar_pointer("mp_buytime")
  26.  
  27. register_clcmd("buy" , "clcmd_buy");
  28. register_clcmd("shop" , "clcmd_buy");
  29. register_clcmd("client_buy_open" , "clcmd_client_buy_open");
  30. register_clcmd("buyequip" , "clcmd_buyequip");
  31.  
  32. register_logevent("round_start", 2, "1=Round_Start");
  33.  
  34. register_event("HLTV", "round_start", "a", "1=0", "2=0");
  35.  
  36. register_forward(FM_KeyValue, "key_value", true);
  37. }
  38.  
  39. public key_value(ent, keyValueId)
  40. {
  41. if (pev_valid(ent)) {
  42. new className[32], keyName[32], keyValue[32];
  43.  
  44. get_kvd(keyValueId, KV_ClassName, className, charsmax(className));
  45. get_kvd(keyValueId, KV_KeyName, keyName, charsmax(keyName));
  46. get_kvd(keyValueId, KV_Value, keyValue, charsmax(keyValue));
  47.  
  48. if (equali(className, "info_map_parameters") && equali(keyName, "buying")) {
  49. if (str_to_num(keyValue) != 0) mapBuyBlock = str_to_num(keyValue);
  50. }
  51. }
  52.  
  53. return FMRES_IGNORED;
  54. }
  55.  
  56. public round_start()
  57. roundStartTime = get_gametime();
  58.  
  59. public clcmd_client_buy_open(id)
  60. {
  61. if (csgo_get_menu(id)) return PLUGIN_CONTINUE;
  62.  
  63. static msgBuyClose;
  64.  
  65. if (!msgBuyClose) msgBuyClose = get_user_msgid( "BuyClose");
  66.  
  67. message_begin(MSG_ONE, msgBuyClose, _, id),
  68. message_end();
  69.  
  70. clcmd_buy(id);
  71.  
  72. return PLUGIN_HANDLED;
  73. }
  74.  
  75. public clcmd_buy(id)
  76. {
  77. if (csgo_get_menu(id)) return PLUGIN_CONTINUE;
  78.  
  79. if (!can_buy(id)) return PLUGIN_HANDLED;
  80.  
  81. new menu = menu_create("\yBuy Item", "clcmd_buy_handle");
  82.  
  83. menu_additem(menu, "\wHandgun");
  84. // menu_additem(menu, "\wShotgun");
  85. menu_additem(menu, "\wSub-Machine Gun");
  86. menu_additem(menu, "\wRifle");
  87. menu_additem(menu, "\wMachine Gun^n");
  88. menu_additem(menu, "\wPrimary weapon ammo");
  89. menu_additem(menu, "\wSecondary weapon ammo^n");
  90. menu_additem(menu, "\wEquipment");
  91.  
  92. menu_addblank(menu);
  93. menu_additem(menu, "\wExit");
  94.  
  95. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  96. menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
  97. menu_setprop(menu, MPROP_PERPAGE, 0);
  98.  
  99. menu_display(id, menu);
  100.  
  101. return PLUGIN_HANDLED;
  102. }
  103.  
  104. public clcmd_buy_handle(id, menu, item)
  105. {
  106. if (!is_user_connected(id)) return PLUGIN_HANDLED;
  107.  
  108. if (item > 7) {
  109. menu_destroy(menu);
  110.  
  111. return PLUGIN_HANDLED;
  112. }
  113.  
  114. switch(item) {
  115. case 0: clcmd_handgun(id);
  116. // case 1: clcmd_shotgun(id);
  117. case 1: clcmd_submachinegun(id);
  118. case 2: clcmd_rifle(id);
  119. case 3: clcmd_machinegun(id);
  120. case 4: engclient_cmd(id, "primammo");
  121. case 5: engclient_cmd(id, "secammo");
  122. case 6: clcmd_equipment(id);
  123. }
  124.  
  125. return PLUGIN_HANDLED;
  126. }
  127.  
  128. public clcmd_buyequip(id)
  129. {
  130. if (csgo_get_menu(id)) return PLUGIN_CONTINUE;
  131.  
  132. if (!can_buy(id)) return PLUGIN_HANDLED;
  133.  
  134. clcmd_equipment(id);
  135.  
  136. return PLUGIN_HANDLED;
  137. }
  138.  
  139. public clcmd_handgun(id)
  140. {
  141. if (!can_buy(id)) return PLUGIN_HANDLED;
  142.  
  143. new itemData[3], skin, menu = menu_create("\yBuy Handgun $ Cost \rSkin\y^n(Secondary weapon)", "clcmd_buy_weapon_handle");
  144.  
  145. num_to_str(CSW_GLOCK18, itemData, charsmax(itemData));
  146. menu_additem(menu, "\w9X19mm Sidearm \y400", itemData);
  147. num_to_str(CSW_USP, itemData, charsmax(itemData));
  148. menu_additem(menu, "\wK&M .45 Tactical ^t\y500", itemData);
  149. num_to_str(CSW_P228, itemData, charsmax(itemData));
  150. menu_additem(menu, "\w228 Compact \y600", itemData);
  151. num_to_str(CSW_DEAGLE, itemData, charsmax(itemData));
  152. menu_additem(menu, "\wNight Hawk .50C \y650", itemData);
  153.  
  154. if (cs_get_user_team(id) == CS_TEAM_T) {
  155. num_to_str(CSW_ELITE, itemData, charsmax(itemData));
  156. menu_additem(menu, "\w.40 Dual Elites \y800", itemData);
  157. } else {
  158. num_to_str(CSW_FIVESEVEN, itemData, charsmax(itemData));
  159. menu_additem(menu, "\wES Five-Seven \y750", itemData);
  160. }
  161.  
  162. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  163. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  164.  
  165. menu_display(id, menu);
  166.  
  167. return PLUGIN_HANDLED;
  168. }
  169.  
  170. public clcmd_shotgun(id)
  171. {
  172. if (!can_buy(id)) return PLUGIN_HANDLED;
  173.  
  174. new menuData[128], skinName[64], itemData[3], skin, menu = menu_create("\yBuy Shotgun $ Cost \rSkin\y^n(Primary weapon)", "clcmd_buy_weapon_handle");
  175.  
  176. num_to_str(CSW_M3, itemData, charsmax(itemData));
  177. menu_additem(menu, "\wLeone 12 Gauge Super \y1700", itemData);
  178. num_to_str(CSW_XM1014, itemData, charsmax(itemData));
  179. menu_additem(menu, "\wLeone YG1265 Auto Shotgun ^t\y3000", itemData);
  180.  
  181. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  182. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  183.  
  184. menu_display(id, menu);
  185.  
  186. return PLUGIN_HANDLED;
  187. }
  188.  
  189. public clcmd_submachinegun(id)
  190. {
  191. if (!can_buy(id)) return PLUGIN_HANDLED;
  192.  
  193. new menuData[128], skinName[64], itemData[3], skin, menu = menu_create("\yBuy Sub-Machine Gun $ Cost \rSkin\y^n(Primary weapon)", "clcmd_buy_weapon_handle");
  194.  
  195. if (cs_get_user_team(id) == CS_TEAM_T) {
  196. num_to_str(CSW_MAC10, itemData, charsmax(itemData));
  197. menu_additem(menu, "\wIngram MAC-10 ^t\y1400", itemData);
  198. } else {
  199. num_to_str(CSW_TMP, itemData, charsmax(itemData));
  200. menu_additem(menu, "\wSchmidt Machine Pistol ^t\y1250", itemData);
  201. }
  202.  
  203. num_to_str(CSW_MP5NAVY, itemData, charsmax(itemData));
  204. menu_additem(menu, "\wK&M Sub-Machine Gun \y1500", itemData);
  205. num_to_str(CSW_UMP45, itemData, charsmax(itemData));
  206. menu_additem(menu, "\wK&M UMP45 \y1700", itemData);
  207. num_to_str(CSW_P90, itemData, charsmax(itemData));
  208. menu_additem(menu, "\wES C90 ^t\y2350", itemData);
  209.  
  210. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  211. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  212.  
  213. menu_display(id, menu);
  214.  
  215. return PLUGIN_HANDLED;
  216. }
  217.  
  218. public clcmd_rifle(id)
  219. {
  220. if (!can_buy(id)) return PLUGIN_HANDLED;
  221.  
  222. new itemData[3], skin, menu = menu_create("\yBuy Rifle $ Cost \rSkin\y^n(Primary weapon)", "clcmd_buy_weapon_handle");
  223.  
  224. if (cs_get_user_team(id) == CS_TEAM_T) {
  225.  
  226. num_to_str(CSW_GALIL, itemData, charsmax(itemData));
  227. menu_additem(menu, "\wIDF Defender \y2000", itemData);
  228. num_to_str(CSW_AK47, itemData, charsmax(itemData));
  229. menu_additem(menu, "\wCV-47 ^t\y2500", itemData);
  230. num_to_str(CSW_SCOUT, itemData, charsmax(itemData));
  231. menu_additem(menu, "\wSchmidt Scout \y2750", itemData);
  232. num_to_str(CSW_SG552, itemData, charsmax(itemData));
  233. menu_additem(menu, "\wKrieg 552 Commando \y3500", itemData);
  234.  
  235. num_to_str(CSW_AWP, itemData, charsmax(itemData));
  236. menu_additem(menu, "\wMagnum Sniper Rifle \y4750", itemData);
  237.  
  238. num_to_str(CSW_G3SG1, itemData, charsmax(itemData));
  239. menu_additem(menu, "\wD3/AU-1 Semi-Auto Sniper Rifle \y5000", itemData);
  240. } else {
  241. num_to_str(CSW_FAMAS, itemData, charsmax(itemData));
  242. menu_additem(menu, "\wClarion 5.56 ^t\y2250", itemData);
  243.  
  244. num_to_str(CSW_SCOUT, itemData, charsmax(itemData));
  245. menu_additem(menu, "\wSchmidt Scout ^t\y2750", itemData);
  246. num_to_str(CSW_M4A1, itemData, charsmax(itemData));
  247. menu_additem(menu, "\wMaveric M4A1 Carabine \y3100", itemData);
  248.  
  249. num_to_str(CSW_AUG, itemData, charsmax(itemData));
  250. menu_additem(menu, "\wBullpup \y3500", itemData);
  251.  
  252. num_to_str(CSW_SG550, itemData, charsmax(itemData));
  253. menu_additem(menu, "\wKrieg 550 Commando ^t\y4200", itemData);
  254.  
  255. num_to_str(CSW_AWP, itemData, charsmax(itemData));
  256. menu_additem(menu, "\wMagnum Sniper Rifle ^t\y4750", itemData);
  257. }
  258.  
  259. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  260. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  261.  
  262. menu_display(id, menu);
  263.  
  264. return PLUGIN_HANDLED;
  265. }
  266.  
  267. public clcmd_machinegun(id)
  268. {
  269. if (!can_buy(id)) return PLUGIN_HANDLED;
  270.  
  271. new itemData[3], skin, menu = menu_create("\yBuy Machine Gun $ Cost \rSkin\y^n(Primary weapon)", "clcmd_buy_weapon_handle");
  272.  
  273. num_to_str(CSW_M249, itemData, charsmax(itemData));
  274. menu_additem(menu, "\wES M249 Para \y5750", itemData);
  275.  
  276. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  277. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  278.  
  279. menu_display(id, menu);
  280.  
  281. return PLUGIN_HANDLED;
  282. }
  283.  
  284. public clcmd_equipment(id)
  285. {
  286. if (!can_buy(id)) return PLUGIN_HANDLED;
  287.  
  288. new itemData[3], menu = menu_create("\yBuy Equipment $ Cost", "clcmd_buy_weapon_handle");
  289.  
  290. num_to_str(CSW_VEST, itemData, charsmax(itemData));
  291. menu_additem(menu, "\wKevlar Vest \y650", itemData);
  292.  
  293. num_to_str(CSW_VESTHELM, itemData, charsmax(itemData));
  294. menu_additem(menu, "\wKevlar Vest & Helmet \y1000", itemData);
  295.  
  296. num_to_str(CSW_FLASHBANG, itemData, charsmax(itemData));
  297. menu_additem(menu, "\wFlashbang \y200", itemData);
  298.  
  299. num_to_str(CSW_HEGRENADE, itemData, charsmax(itemData));
  300. menu_additem(menu, "\wHE Grenade ^t^t\y300", itemData);
  301.  
  302. num_to_str(CSW_SMOKEGRENADE, itemData, charsmax(itemData));
  303. menu_additem(menu, "\wSmoke Grenade \y300", itemData);
  304.  
  305. num_to_str(CSW_NIGHTVISION, itemData, charsmax(itemData));
  306. menu_additem(menu, "\wNightVision Goggles ^t\y1250", itemData);
  307.  
  308. if (cs_get_user_team(id) == CS_TEAM_CT) {
  309. num_to_str(CSW_DEFUSEKIT, itemData, charsmax(itemData));
  310. menu_additem(menu, "\wDefuse Kit ^t\y200", itemData);
  311. }
  312. if(cs_get_user_team(id) == CS_TEAM_CT) {
  313. num_to_str(CSW_SHIELD, itemData, charsmax(itemData));
  314. menu_additem(menu, "\wTactical Shield \y2200", itemData);
  315. }
  316.  
  317. if (cs_get_user_team(id) == CS_TEAM_CT) {
  318. menu_addblank(menu);
  319. menu_additem(menu, "\wExit");
  320.  
  321. menu_setprop(menu, MPROP_PERPAGE, 0);
  322. menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
  323. } else {
  324. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  325. }
  326.  
  327. menu_setprop(menu, MPROP_NUMBER_COLOR, "\w");
  328.  
  329. menu_display(id, menu);
  330.  
  331. return PLUGIN_HANDLED;
  332. }
  333.  
  334. public clcmd_buy_weapon_handle(id, menu, item)
  335. {
  336. if (!is_user_connected(id)) return PLUGIN_HANDLED;
  337.  
  338. if (item == MENU_EXIT || item == 9) {
  339. menu_destroy(menu);
  340.  
  341. return PLUGIN_HANDLED;
  342. }
  343.  
  344. new itemData[3], itemAccess, itemCallback;
  345.  
  346. menu_item_getinfo(menu, item, itemAccess, itemData, charsmax(itemData), _, _, itemCallback);
  347.  
  348. cmd_execute(id, weaponCommands[str_to_num(itemData)]);
  349.  
  350. return PLUGIN_HANDLED;
  351. }
  352.  
  353. stock can_buy(id)
  354. {
  355. if (!is_user_alive(id) || !cs_get_user_buyzone(id)) return false;
  356.  
  357. new Float:buyTime;
  358.  
  359. if (get_pcvar_float(cvarBuyTime) != -1.0 && !(get_gametime() < roundStartTime + (buyTime = get_pcvar_float(cvarBuyTime) * 60.0))) {
  360. new buyTimeText[8];
  361.  
  362. num_to_str(floatround(buyTime), buyTimeText, charsmax(buyTimeText));
  363.  
  364. message_begin(MSG_ONE, get_user_msgid("TextMsg"), .player = id);
  365. write_byte(print_center);
  366. write_string("#Cant_buy");
  367. write_string(buyTimeText);
  368. message_end();
  369.  
  370. return false;
  371. }
  372.  
  373. if ((mapBuyBlock == 1 && cs_get_user_team(id) == CS_TEAM_CT) || (mapBuyBlock == 2 && cs_get_user_team(id) == CS_TEAM_T) || mapBuyBlock == 3) {
  374. message_begin(MSG_ONE, get_user_msgid("TextMsg"), .player = id);
  375. write_byte(print_center);
  376.  
  377. if (cs_get_user_team(id) == CS_TEAM_T) write_string("#Cstrike_TitlesTXT_Terrorist_cant_buy");
  378. else if (cs_get_user_team(id) == CS_TEAM_CT) write_string("#Cstrike_TitlesTXT_CT_cant_buy");
  379.  
  380. message_end();
  381.  
  382. return false;
  383. }
  384.  
  385. return true;
  386. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement