Guest User

zp_cs_buymenu

a guest
Feb 22nd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 58.66 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <zombieplague>
  7.  
  8.  
  9. #define PLUGIN "CS-like Buymenu for ZP"
  10. #define VERSION "1.7"
  11. #define AUTHOR "Sonic Son'edit"
  12.  
  13. const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
  14. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  15. const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)
  16.  
  17. const PEV_ADDITIONAL_AMMO = pev_iuser1
  18.  
  19. const OFFSET_AWM_AMMO = 377
  20. const OFFSET_SCOUT_AMMO = 378
  21. const OFFSET_PARA_AMMO = 379
  22. const OFFSET_FAMAS_AMMO = 380
  23. const OFFSET_M3_AMMO = 381
  24. const OFFSET_USP_AMMO = 382
  25. const OFFSET_FIVESEVEN_AMMO = 383
  26. const OFFSET_DEAGLE_AMMO = 384
  27. const OFFSET_P228_AMMO = 385
  28. const OFFSET_GLOCK_AMMO = 386
  29. const OFFSET_FLASH_AMMO = 387
  30. const OFFSET_HE_AMMO = 388
  31. const OFFSET_SMOKE_AMMO = 389
  32. const OFFSET_C4_AMMO = 390
  33. const OFFSET_CLIPAMMO = 51
  34. const OFFSET_TEAM = 114
  35. const OFFSET_DEATHS = 444
  36. const OFFSET_MONEY = 115
  37.  
  38. //wtf is unknown item ??? P228 unknown he gren xm1014 bomb mac10 aug smogegren elites fivesveen ump45 krieg500 galil famas usp glock awp mp5 m249 m3 m4a1 tmp g3sg1 flashgren deagle krieg552 ak47 ? p90
  39. new const AMMOOFFSET[] = { -1, OFFSET_P228_AMMO, -1, OFFSET_SCOUT_AMMO, OFFSET_HE_AMMO, OFFSET_M3_AMMO, OFFSET_C4_AMMO, OFFSET_USP_AMMO, OFFSET_FAMAS_AMMO, OFFSET_SMOKE_AMMO, OFFSET_GLOCK_AMMO, OFFSET_FIVESEVEN_AMMO, OFFSET_USP_AMMO, OFFSET_FAMAS_AMMO, OFFSET_FAMAS_AMMO, OFFSET_FAMAS_AMMO,
  40. OFFSET_USP_AMMO, OFFSET_GLOCK_AMMO, OFFSET_AWM_AMMO, OFFSET_GLOCK_AMMO, OFFSET_PARA_AMMO, OFFSET_M3_AMMO, OFFSET_FAMAS_AMMO, OFFSET_GLOCK_AMMO, OFFSET_SCOUT_AMMO, OFFSET_FLASH_AMMO, OFFSET_DEAGLE_AMMO, OFFSET_FAMAS_AMMO, OFFSET_SCOUT_AMMO, -1, OFFSET_FIVESEVEN_AMMO }
  41.  
  42. new const BUYAMMO[] = { -1, 13, -1, 30, -1, 7, -1, 12, 30, -1, 30, 20, 12, 20, 30, 30,
  43. 12, 30, 10, 30, 50, 8, 30, 30, 20, -1, 7, 30, 30, -1, 50 }
  44.  
  45. new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90,
  46. 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }
  47.  
  48. new const AMMOCOST[] = { 1, 30, -1, -1, -1, 65, -1, 25, 60, -1, 50, 20, 25, 85, 60,
  49. 60, 25, 20, 125, 20, 95, 65, 60, 20, 80, -1, 40, 60, 80, -1, 50 }
  50.  
  51. new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
  52. "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
  53. "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }
  54.  
  55. const OFFSET_LINUX = 5
  56. const OFFSET_LINUX_WEAPONS = 4
  57.  
  58. new const sound_buyammo[] = "items/9mmclip1.wav"
  59.  
  60. new g_maxplayers
  61.  
  62. new Lang_Roundend_msg[3][] = {"ROUNDEND_SURVIVED","ROUNDEND_WIN_ZOMBIE","ROUNDEND_WIN_HUMAN"};
  63.  
  64. const TASK_BUYTIME_END = 100;
  65. const TASK_RESTORE_MONEY = 200;
  66. const TASK_KILL_ASSIST = 300;
  67.  
  68. new cvar_zp_cs_h_income_cash_rate;
  69. new cvar_zp_cs_z_income_cash_rate;
  70. new cvar_zp_cs_n_income_cash_rate
  71. new cvar_zp_cs_s_income_cash_rate
  72. new cvar_zp_cs_buytime;
  73. new cvar_zp_cs_startmoney;
  74. new cvar_zp_cs_restartround;
  75. new cvar_zp_cs_moneymax;
  76. new cvar_zp_cs_money_killbonus
  77. new cvar_zp_cs_infectmoneybonus
  78. new cvar_zp_cs_deathmoneybonus
  79. new cvar_zp_cs_nemesis_canbuy
  80. new cvar_zp_cs_survivor_canbuy
  81. new cvar_antidotelimit, cvar_madnesslimit, cvar_infbomblimit, antidoteused, madnessused, infbombused
  82. new cvar_amx_mode
  83.  
  84. new cvar_zp_cs_money_human_win
  85. new cvar_zp_cs_money_human_lose
  86. new cvar_zp_cs_money_human_draw
  87. new cvar_zp_cs_money_zombie_win
  88. new cvar_zp_cs_money_zombie_lose
  89. new cvar_zp_cs_money_zombie_draw
  90. new cvar_zp_cs_drawround_frag_h
  91. new cvar_zp_cs_drawround_frag_z
  92. new cvar_zp_cs_drawround_death_h
  93. new cvar_zp_cs_drawround_death_z
  94. new cvar_zp_cs_zombie_nodeathscore
  95. new cvar_zp_cs_killassist_enabled
  96. new cvar_zp_cs_killassist_mindmg_h
  97. new cvar_zp_cs_killassist_mindmg_z
  98. new cvar_zp_human_frags_for_kill
  99. new cvar_zp_zombie_frags_for_infect
  100. new cvar_zp_zombie_infect_health
  101.  
  102. new cvar_zp_cs_buytime_pistol_mult;
  103. new cvar_zp_cs_buytime_shotgun_mult;
  104. new cvar_zp_cs_buytime_smgun_mult;
  105. new cvar_zp_cs_buytime_rifle_mult;
  106. new cvar_zp_cs_buytime_biggun_mult;
  107. new cvar_zp_cs_buytime_gren_mult;
  108. new cvar_zp_cs_buytime_ammo_mult;
  109.  
  110. new Float: zp_cs_h_income_cash_rate;
  111. new Float: zp_cs_z_income_cash_rate;
  112. new Float: zp_cs_n_income_cash_rate
  113. new Float: zp_cs_s_income_cash_rate
  114. new zp_cs_moneymax;
  115. new zp_cs_player_money[33]
  116. new zp_cs_player_moneybonus[33]
  117. new zp_cs_buytime_passed;
  118. new Float: zp_cs_damage[33][33] //[attacker][victim]
  119. new Float: zp_cs_killassist_mindamage_h
  120. new Float: zp_cs_killassist_mindamage_z
  121. new zp_human_frags_for_kill
  122. new zp_zombie_frags_for_infect
  123. new Float: zp_zombie_infect_health
  124.  
  125. new g_MsgMoney, g_msgMoneyBlink, g_msgIconStatus, g_msgScoreInfo, g_msgSayText, g_msgDeathMsg, g_MsgSyncObj1, g_MsgSyncObj2;
  126. new PlayerOldName[33][32]
  127.  
  128. new const sound_buysuit[] = "items/tr_kevlar.wav"
  129.  
  130. new zp_cs_buymenu;
  131. new zp_cs_submenuid[33];
  132. new zp_cs_buymenu_pistol;
  133. new zp_cs_buymenu_shotgun;
  134. new zp_cs_buymenu_smgun;
  135. new zp_cs_buymenu_rifle;
  136. new zp_cs_buymenu_biggun;
  137. new zp_cs_buymenu_equiph;
  138. new zp_cs_buymenu_equipz;
  139.  
  140. new zp_cs_buymenu_ready;
  141.  
  142. new cvar_zp_cs_buymenu_pistol_name[99];
  143. new cvar_zp_cs_buymenu_pistol_cost[99];
  144. new cvar_zp_cs_buymenu_pistol_todo[99];
  145. new cvar_zp_cs_buymenu_shotgun_name[99];
  146. new cvar_zp_cs_buymenu_shotgun_cost[99];
  147. new cvar_zp_cs_buymenu_shotgun_todo[99];
  148. new cvar_zp_cs_buymenu_smgun_name[99];
  149. new cvar_zp_cs_buymenu_smgun_cost[99];
  150. new cvar_zp_cs_buymenu_smgun_todo[99];
  151. new cvar_zp_cs_buymenu_rifle_name[99];
  152. new cvar_zp_cs_buymenu_rifle_cost[99];
  153. new cvar_zp_cs_buymenu_rifle_todo[99];
  154. new cvar_zp_cs_buymenu_biggun_name[99];
  155. new cvar_zp_cs_buymenu_biggun_cost[99];
  156. new cvar_zp_cs_buymenu_biggun_todo[99];
  157. new cvar_zp_cs_buymenu_equiph_name[99];
  158. new cvar_zp_cs_buymenu_equiph_cost[99];
  159. new cvar_zp_cs_buymenu_equiph_todo[99];
  160. new cvar_zp_cs_buymenu_equipz_name[99];
  161. new cvar_zp_cs_buymenu_equipz_cost[99];
  162. new cvar_zp_cs_buymenu_equipz_todo[99];
  163.  
  164. public plugin_precache()
  165. {
  166. precache_sound(sound_buyammo)
  167. precache_sound(sound_buysuit)
  168. }
  169.  
  170. public plugin_init()
  171. {
  172. register_plugin(PLUGIN,VERSION,AUTHOR)
  173.  
  174. register_dictionary("zp_cs_buymenu.txt")
  175.  
  176. g_MsgMoney = get_user_msgid("Money")
  177. g_msgMoneyBlink = get_user_msgid("BlinkAcct")
  178. g_msgIconStatus = get_user_msgid("StatusIcon")
  179. g_msgScoreInfo = get_user_msgid("ScoreInfo")
  180. g_msgSayText = get_user_msgid("SayText")
  181. g_msgDeathMsg = get_user_msgid("DeathMsg")
  182. g_MsgSyncObj1 = CreateHudSyncObj()
  183. g_MsgSyncObj2 = CreateHudSyncObj()
  184.  
  185. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  186.  
  187. register_message(g_msgDeathMsg, "message_DeathMsg")
  188.  
  189. RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
  190. RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
  191. RegisterHam(Ham_Killed, "player", "ham_PlayerKilled")
  192.  
  193. register_forward(FM_ClientConnect, "fw_ClientConnect_Post",1)
  194. register_forward(FM_ClientDisconnect, "fw_ClientDisconnect")
  195.  
  196. register_clcmd("buy", "clcmd_zp_cs_buymenu")
  197. register_clcmd("zp_cs_buymenu", "clcmd_zp_cs_buymenu")
  198.  
  199. cvar_zp_cs_h_income_cash_rate = register_cvar("zp_cs_human_income_cash_rate", "2.0")
  200. cvar_zp_cs_z_income_cash_rate = register_cvar("zp_cs_zombie_income_cash_rate", "5.0")
  201. cvar_zp_cs_n_income_cash_rate = register_cvar("zp_cs_nemesis_income_cash_rate", "0.5")
  202. cvar_zp_cs_s_income_cash_rate = register_cvar("zp_cs_survivor_income_cash_rate", "0.2")
  203. cvar_zp_cs_moneymax = register_cvar("zp_cs_moneymax", "150000")
  204. cvar_zp_cs_infectmoneybonus = register_cvar("zp_cs_infectmoneybonus", "1500")
  205. cvar_zp_cs_deathmoneybonus = register_cvar("zp_cs_deathmoneybonus", "300")
  206. cvar_zp_cs_money_killbonus = register_cvar("zp_cs_money_killbonus", "500")
  207. cvar_zp_cs_buytime = get_cvar_pointer("mp_buytime")
  208. cvar_zp_cs_startmoney = get_cvar_pointer("mp_startmoney")
  209. cvar_zp_cs_restartround = get_cvar_pointer("sv_restartround")
  210. cvar_zp_cs_nemesis_canbuy = register_cvar("zp_cs_nemesis_canbuy", "0")
  211. cvar_zp_cs_survivor_canbuy = register_cvar("zp_cs_survivor_canbuy", "0")
  212. cvar_antidotelimit = get_cvar_pointer("zp_extra_antidote_limit")
  213. cvar_madnesslimit = get_cvar_pointer("zp_extra_madness_limit")
  214. cvar_infbomblimit = get_cvar_pointer("zp_extra_infbomb_limit")
  215. cvar_zp_cs_buytime_pistol_mult = register_cvar("zp_cs_buytime_pistol_mult", "3")
  216. cvar_zp_cs_buytime_shotgun_mult = register_cvar("zp_cs_buytime_shotgun_mult", "3")
  217. cvar_zp_cs_buytime_smgun_mult = register_cvar("zp_cs_buytime_smgun_mult", "3")
  218. cvar_zp_cs_buytime_rifle_mult = register_cvar("zp_cs_buytime_rifle_mult", "3")
  219. cvar_zp_cs_buytime_biggun_mult = register_cvar("zp_cs_buytime_biggun_mult", "3")
  220. cvar_zp_cs_buytime_gren_mult = register_cvar("zp_cs_buytime_gren_mult", "10")
  221. cvar_zp_cs_buytime_ammo_mult = register_cvar("zp_cs_buytime_ammo_mult", "10");
  222.  
  223. cvar_zp_cs_money_human_win = register_cvar("zp_cs_money_human_win", "10000");
  224. cvar_zp_cs_money_human_lose = register_cvar("zp_cs_money_human_lose", "1500");
  225. cvar_zp_cs_money_human_draw = register_cvar("zp_cs_money_human_draw", "7000");
  226. cvar_zp_cs_money_zombie_win = register_cvar("zp_cs_money_zombie_win", "5000");
  227. cvar_zp_cs_money_zombie_lose = register_cvar("zp_cs_money_zombie_lose", "1500");
  228. cvar_zp_cs_money_zombie_draw = register_cvar("zp_cs_money_zombie_draw", "-1500");
  229. cvar_zp_cs_drawround_frag_h = register_cvar("zp_cs_drawround_frag_h", "2");
  230. cvar_zp_cs_drawround_frag_z = register_cvar("zp_cs_drawround_frag_z", "-2");
  231. cvar_zp_cs_drawround_death_h = register_cvar("zp_cs_drawround_death_h", "0");
  232. cvar_zp_cs_drawround_death_z = register_cvar("zp_cs_drawround_death_z", "2");
  233. cvar_zp_cs_zombie_nodeathscore = register_cvar("zp_cs_zombie_nodeathscore", "1");
  234. cvar_zp_cs_killassist_enabled = register_cvar("zp_cs_killassist_enabled", "1")
  235. cvar_zp_cs_killassist_mindmg_h = register_cvar("zp_cs_killassist_mindamage_h","250.0")
  236. cvar_zp_cs_killassist_mindmg_z = register_cvar("zp_cs_killassist_mindamage_z","45.0")
  237. cvar_zp_human_frags_for_kill = get_cvar_pointer("zp_human_frags_for_kill")
  238. cvar_zp_zombie_frags_for_infect = get_cvar_pointer("zp_zombie_frags_for_infect")
  239. cvar_zp_zombie_infect_health = get_cvar_pointer("zp_zombie_infect_health")
  240. cvar_amx_mode = get_cvar_pointer("amx_mode")
  241.  
  242.  
  243. g_maxplayers = get_maxplayers()
  244.  
  245. for (new id=1;id<=g_maxplayers;id++)
  246. {
  247. zp_cs_player_moneybonus[id]=0;
  248. zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
  249. }
  250.  
  251. zp_cs_buymenu_ready = false;
  252.  
  253. new strtemp[2];
  254. new strtemp2[32];
  255. for(new i=0;i<99;i++)
  256. {
  257. num_to_str(i+1, strtemp, 2)
  258. strtemp2 = "zp_cs_buymenu_pistol___name";
  259. if (i>8)
  260. {
  261. strtemp2[20]=strtemp[0];
  262. strtemp2[21]=strtemp[1];
  263. }
  264. else
  265. {
  266. strtemp2[20]='0';
  267. strtemp2[21]=strtemp[0];
  268. }
  269. cvar_zp_cs_buymenu_pistol_name[i] = register_cvar(strtemp2, "-");
  270. num_to_str(i+1, strtemp, 2)
  271. strtemp2 = "zp_cs_buymenu_pistol___cost";
  272. if (i>8)
  273. {
  274. strtemp2[20]=strtemp[0];
  275. strtemp2[21]=strtemp[1];
  276. }
  277. else
  278. {
  279. strtemp2[20]='0';
  280. strtemp2[21]=strtemp[0];
  281. }
  282. cvar_zp_cs_buymenu_pistol_cost[i] = register_cvar(strtemp2, "0");
  283. num_to_str(i+1, strtemp, 2)
  284. strtemp2 = "zp_cs_buymenu_pistol___todo";
  285. if (i>8)
  286. {
  287. strtemp2[20]=strtemp[0];
  288. strtemp2[21]=strtemp[1];
  289. }
  290. else
  291. {
  292. strtemp2[20]='0';
  293. strtemp2[21]=strtemp[0];
  294. }
  295. cvar_zp_cs_buymenu_pistol_todo[i] = register_cvar(strtemp2, "do_nothing");
  296. }
  297. for(new i=0;i<99;i++)
  298. {
  299. num_to_str(i+1, strtemp, 2)
  300. strtemp2 = "zp_cs_buymenu_shotgun___name";
  301. if (i>8)
  302. {
  303. strtemp2[21]=strtemp[0];
  304. strtemp2[22]=strtemp[1];
  305. }
  306. else
  307. {
  308. strtemp2[21]='0';
  309. strtemp2[22]=strtemp[0];
  310. }
  311. cvar_zp_cs_buymenu_shotgun_name[i] = register_cvar(strtemp2, "-");
  312. num_to_str(i+1, strtemp, 2)
  313. strtemp2 = "zp_cs_buymenu_shotgun___cost";
  314. if (i>8)
  315. {
  316. strtemp2[21]=strtemp[0];
  317. strtemp2[22]=strtemp[1];
  318. }
  319. else
  320. {
  321. strtemp2[21]='0';
  322. strtemp2[22]=strtemp[0];
  323. }
  324. cvar_zp_cs_buymenu_shotgun_cost[i] = register_cvar(strtemp2, "0");
  325. num_to_str(i+1, strtemp, 2)
  326. strtemp2 = "zp_cs_buymenu_shotgun___todo";
  327. if (i>8)
  328. {
  329. strtemp2[21]=strtemp[0];
  330. strtemp2[22]=strtemp[1];
  331. }
  332. else
  333. {
  334. strtemp2[21]='0';
  335. strtemp2[22]=strtemp[0];
  336. }
  337. cvar_zp_cs_buymenu_shotgun_todo[i] = register_cvar(strtemp2, "do_nothing");
  338. }
  339. for(new i=0;i<99;i++)
  340. {
  341. num_to_str(i+1, strtemp, 2)
  342. strtemp2 = "zp_cs_buymenu_smgun___name";
  343. if (i>8)
  344. {
  345. strtemp2[19]=strtemp[0];
  346. strtemp2[20]=strtemp[1];
  347. }
  348. else
  349. {
  350. strtemp2[19]='0';
  351. strtemp2[20]=strtemp[0];
  352. }
  353. cvar_zp_cs_buymenu_smgun_name[i] = register_cvar(strtemp2, "-");
  354. num_to_str(i+1, strtemp, 2)
  355. strtemp2 = "zp_cs_buymenu_smgun___cost";
  356. if (i>8)
  357. {
  358. strtemp2[19]=strtemp[0];
  359. strtemp2[20]=strtemp[1];
  360. }
  361. else
  362. {
  363. strtemp2[19]='0';
  364. strtemp2[20]=strtemp[0];
  365. }
  366. cvar_zp_cs_buymenu_smgun_cost[i] = register_cvar(strtemp2, "0");
  367. num_to_str(i+1, strtemp, 2)
  368. strtemp2 = "zp_cs_buymenu_smgun___todo";
  369. if (i>8)
  370. {
  371. strtemp2[19]=strtemp[0];
  372. strtemp2[20]=strtemp[1];
  373. }
  374. else
  375. {
  376. strtemp2[19]='0';
  377. strtemp2[20]=strtemp[0];
  378. }
  379. cvar_zp_cs_buymenu_smgun_todo[i] = register_cvar(strtemp2, "do_nothing");
  380. }
  381. for(new i=0;i<99;i++)
  382. {
  383. num_to_str(i+1, strtemp, 2)
  384. strtemp2 = "zp_cs_buymenu_rifle___name";
  385. if (i>8)
  386. {
  387. strtemp2[19]=strtemp[0];
  388. strtemp2[20]=strtemp[1];
  389. }
  390. else
  391. {
  392. strtemp2[19]='0';
  393. strtemp2[20]=strtemp[0];
  394. }
  395. cvar_zp_cs_buymenu_rifle_name[i] = register_cvar(strtemp2, "-");
  396. num_to_str(i+1, strtemp, 2)
  397. strtemp2 = "zp_cs_buymenu_rifle___cost";
  398. if (i>8)
  399. {
  400. strtemp2[19]=strtemp[0];
  401. strtemp2[20]=strtemp[1];
  402. }
  403. else
  404. {
  405. strtemp2[19]='0';
  406. strtemp2[20]=strtemp[0];
  407. }
  408. cvar_zp_cs_buymenu_rifle_cost[i] = register_cvar(strtemp2, "0");
  409. num_to_str(i+1, strtemp, 2)
  410. strtemp2 = "zp_cs_buymenu_rifle___todo";
  411. if (i>8)
  412. {
  413. strtemp2[19]=strtemp[0];
  414. strtemp2[20]=strtemp[1];
  415. }
  416. else
  417. {
  418. strtemp2[19]='0';
  419. strtemp2[20]=strtemp[0];
  420. }
  421. cvar_zp_cs_buymenu_rifle_todo[i] = register_cvar(strtemp2, "do_nothing");
  422. }
  423. for(new i=0;i<99;i++)
  424. {
  425. num_to_str(i+1, strtemp, 2)
  426. strtemp2 = "zp_cs_buymenu_biggun___name";
  427. if (i>8)
  428. {
  429. strtemp2[20]=strtemp[0];
  430. strtemp2[21]=strtemp[1];
  431. }
  432. else
  433. {
  434. strtemp2[20]='0';
  435. strtemp2[21]=strtemp[0];
  436. }
  437. cvar_zp_cs_buymenu_biggun_name[i] = register_cvar(strtemp2, "-");
  438. num_to_str(i+1, strtemp, 2)
  439. strtemp2 = "zp_cs_buymenu_biggun___cost";
  440. if (i>8)
  441. {
  442. strtemp2[20]=strtemp[0];
  443. strtemp2[21]=strtemp[1];
  444. }
  445. else
  446. {
  447. strtemp2[20]='0';
  448. strtemp2[21]=strtemp[0];
  449. }
  450. cvar_zp_cs_buymenu_biggun_cost[i] = register_cvar(strtemp2, "0");
  451. num_to_str(i+1, strtemp, 2)
  452. strtemp2 = "zp_cs_buymenu_biggun___todo";
  453. if (i>8)
  454. {
  455. strtemp2[20]=strtemp[0];
  456. strtemp2[21]=strtemp[1];
  457. }
  458. else
  459. {
  460. strtemp2[20]='0';
  461. strtemp2[21]=strtemp[0];
  462. }
  463. cvar_zp_cs_buymenu_biggun_todo[i] = register_cvar(strtemp2, "do_nothing");
  464. }
  465. for(new i=0;i<99;i++)
  466. {
  467. num_to_str(i+1, strtemp, 2)
  468. strtemp2 = "zp_cs_buymenu_equiph___name";
  469. if (i>8)
  470. {
  471. strtemp2[20]=strtemp[0];
  472. strtemp2[21]=strtemp[1];
  473. }
  474. else
  475. {
  476. strtemp2[20]='0';
  477. strtemp2[21]=strtemp[0];
  478. }
  479. cvar_zp_cs_buymenu_equiph_name[i] = register_cvar(strtemp2, "-");
  480. num_to_str(i+1, strtemp, 2)
  481. strtemp2 = "zp_cs_buymenu_equiph___cost";
  482. if (i>8)
  483. {
  484. strtemp2[20]=strtemp[0];
  485. strtemp2[21]=strtemp[1];
  486. }
  487. else
  488. {
  489. strtemp2[20]='0';
  490. strtemp2[21]=strtemp[0];
  491. }
  492. cvar_zp_cs_buymenu_equiph_cost[i] = register_cvar(strtemp2, "0");
  493. num_to_str(i+1, strtemp, 2)
  494. strtemp2 = "zp_cs_buymenu_equiph___todo";
  495. if (i>8)
  496. {
  497. strtemp2[20]=strtemp[0];
  498. strtemp2[21]=strtemp[1];
  499. }
  500. else
  501. {
  502. strtemp2[20]='0';
  503. strtemp2[21]=strtemp[0];
  504. }
  505. cvar_zp_cs_buymenu_equiph_todo[i] = register_cvar(strtemp2, "do_nothing");
  506. }
  507. for(new i=0;i<99;i++)
  508. {
  509. num_to_str(i+1, strtemp, 2)
  510. strtemp2 = "zp_cs_buymenu_equipz___name";
  511. if (i>8)
  512. {
  513. strtemp2[20]=strtemp[0];
  514. strtemp2[21]=strtemp[1];
  515. }
  516. else
  517. {
  518. strtemp2[20]='0';
  519. strtemp2[21]=strtemp[0];
  520. }
  521. cvar_zp_cs_buymenu_equipz_name[i] = register_cvar(strtemp2, "-");
  522. num_to_str(i+1, strtemp, 2)
  523. strtemp2 = "zp_cs_buymenu_equipz___cost";
  524. if (i>8)
  525. {
  526. strtemp2[20]=strtemp[0];
  527. strtemp2[21]=strtemp[1];
  528. }
  529. else
  530. {
  531. strtemp2[20]='0';
  532. strtemp2[21]=strtemp[0];
  533. }
  534. cvar_zp_cs_buymenu_equipz_cost[i] = register_cvar(strtemp2, "0");
  535. num_to_str(i+1, strtemp, 2)
  536. strtemp2 = "zp_cs_buymenu_equipz___todo";
  537. if (i>8)
  538. {
  539. strtemp2[20]=strtemp[0];
  540. strtemp2[21]=strtemp[1];
  541. }
  542. else
  543. {
  544. strtemp2[20]='0';
  545. strtemp2[21]=strtemp[0];
  546. }
  547. cvar_zp_cs_buymenu_equipz_todo[i] = register_cvar(strtemp2, "do_nothing");
  548. }
  549. }
  550.  
  551.  
  552. public plugin_cfg()
  553. {
  554. new cfgdir[32]
  555. get_localinfo("amxx_configsdir",cfgdir,sizeof cfgdir)
  556. server_cmd("exec %s/zp_cs_buymenu.cfg", cfgdir)
  557. build_menu;
  558. }
  559.  
  560. public fw_ClientConnect_Post(id)
  561. {
  562. get_user_name(id,PlayerOldName[id],31)
  563. console_cmd(id,"bind b zp_cs_buymenu");
  564. if (zp_cs_player_moneybonus[id])
  565. {
  566. zp_cs_player_money[id]+=zp_cs_player_moneybonus[id]
  567. zp_cs_player_moneybonus[id]=0
  568. }
  569. if (zp_cs_player_money[id]<get_pcvar_num(cvar_zp_cs_startmoney)) zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
  570. return FMRES_IGNORED;
  571. }
  572.  
  573. public event_round_start()
  574. {
  575. set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
  576. ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO1")
  577.  
  578. zp_cs_buymenu_ready = false;
  579. antidoteused = 0
  580. madnessused = 0
  581. infbombused = 0
  582.  
  583. zp_cs_moneymax = get_pcvar_num(cvar_zp_cs_moneymax);
  584. zp_cs_h_income_cash_rate = get_pcvar_float(cvar_zp_cs_h_income_cash_rate)
  585. zp_cs_z_income_cash_rate = get_pcvar_float(cvar_zp_cs_z_income_cash_rate)
  586. zp_cs_n_income_cash_rate = get_pcvar_float(cvar_zp_cs_n_income_cash_rate)
  587. zp_cs_s_income_cash_rate = get_pcvar_float(cvar_zp_cs_s_income_cash_rate)
  588. zp_cs_killassist_mindamage_h = get_pcvar_float(cvar_zp_cs_killassist_mindmg_h)
  589. zp_cs_killassist_mindamage_z = get_pcvar_float(cvar_zp_cs_killassist_mindmg_z)
  590. zp_human_frags_for_kill = get_pcvar_num(cvar_zp_human_frags_for_kill)
  591. zp_zombie_frags_for_infect = get_pcvar_num(cvar_zp_zombie_frags_for_infect)
  592. zp_zombie_infect_health = get_pcvar_float(cvar_zp_zombie_infect_health)
  593.  
  594. static Float:armor
  595. for (new id=1;id<=g_maxplayers;id++)
  596. {
  597. if (!is_user_connected(id)) continue;
  598.  
  599. menu_cancel(id);
  600.  
  601. pev(id, pev_armorvalue, armor)
  602. if (armor > 0.0)
  603. if (armor < 36.0)
  604. set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
  605. else
  606. set_task(0.1, "zp_cs_hevsuitstatusiconshow", id)
  607. }
  608.  
  609. zp_cs_buytime_passed=false;
  610. set_task(0.1, "build_menu");
  611. if (task_exists(TASK_BUYTIME_END)) remove_task(TASK_BUYTIME_END);
  612. set_task(60.0*get_pcvar_float(cvar_zp_cs_buytime),"rebuild_menu",TASK_BUYTIME_END);
  613. }
  614.  
  615. public zp_round_ended(winteam)
  616. {
  617. if (get_pcvar_num(cvar_zp_cs_restartround))
  618. for (new id=1;id<=g_maxplayers;id++)
  619. {
  620. zp_cs_player_moneybonus[id]=0;
  621. zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
  622. set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
  623.  
  624. return PLUGIN_CONTINUE
  625. }
  626.  
  627. new color[3]
  628. for (new i=0;i<3;i++)
  629. color[i]=255*(winteam==i);
  630. set_hudmessage(color[1], color[2], color[0], 0.05, 0.60, 1, 4.0, 5.0,0.1,0.2,-1)
  631. ShowSyncHudMsg(0,g_MsgSyncObj1, "%L", LANG_PLAYER,Lang_Roundend_msg[winteam])
  632. set_task(1.0,"round_results",winteam);
  633.  
  634. return PLUGIN_CONTINUE
  635. }
  636.  
  637. public round_results(winteam)
  638. {
  639. new strtemp1[16]
  640. new color[3]
  641.  
  642. for (new id=1;id<=g_maxplayers;id++)
  643. {
  644. if ((!is_user_connected(id))||(zp_get_user_survivor(id))||(zp_get_user_nemesis(id))) continue;
  645.  
  646. new MoneyBonus, FragBonus, DeathPenalty;
  647. if (zp_get_user_zombie(id)||(zp_get_user_nemesis(id)))
  648. {
  649. if (winteam==0)
  650. {
  651. color[0]=255;
  652. strtemp1="ROUNDEND_FAIL"
  653. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_draw)
  654. FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_z)
  655. DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_z)
  656. }
  657.  
  658. if (winteam==1)
  659. {
  660. color[1]=255;
  661. strtemp1="ROUNDEND_WIN"
  662. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_win)
  663. }
  664.  
  665. if (winteam==2)
  666. {
  667. color[0]=255;
  668. strtemp1="ROUNDEND_FAIL"
  669. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_lose)
  670. }
  671. }
  672. else
  673. {
  674. if (winteam==0)
  675. {
  676. color[1]=255;
  677. strtemp1="ROUNDEND_WIN"
  678. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_draw)
  679. FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_h)
  680. DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_h)
  681. }
  682. if (winteam==1)
  683. {
  684. color[0]=255;
  685. strtemp1="ROUNDEND_FAIL"
  686. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_lose)
  687. }
  688. if (winteam==2)
  689. {
  690. color[1]=255;
  691. strtemp1="ROUNDEND_WIN"
  692. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_win)
  693. }
  694. }
  695. zp_cs_player_moneybonus[id]+=MoneyBonus
  696. set_pev(id, pev_frags, float(pev(id, pev_frags)+FragBonus))
  697. set_pdata_int(id, OFFSET_DEATHS, get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX)+DeathPenalty, OFFSET_LINUX)
  698. set_hudmessage(color[0], color[1], color[2], 0.05, 0.63, 2, 1.0, 3.5,0.05,0.05,-1)
  699. set_task(0.1,"update_scoreboard",id)
  700. if (winteam) ShowSyncHudMsg(id, g_MsgSyncObj2, "%L^n%L: %d", LANG_PLAYER, strtemp1, LANG_PLAYER, "ROUNDEND_MONEY", MoneyBonus)
  701. else ShowSyncHudMsg(id, g_MsgSyncObj2, "%L^n%L: %d^n%L: %d^n%L: %d", LANG_PLAYER, strtemp1, LANG_PLAYER, "ROUNDEND_MONEY", MoneyBonus, LANG_PLAYER, "ROUNDEND_FRAGS",FragBonus, LANG_PLAYER, "ROUNDEND_DEATHS",DeathPenalty)
  702. }
  703. }
  704.  
  705. public update_scoreboard(id)
  706. {
  707. message_begin(MSG_BROADCAST, g_msgScoreInfo)
  708. write_byte(id)
  709. write_short(pev(id, pev_frags))
  710. write_short(get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX))
  711. write_short(0)
  712. write_short(get_pdata_int(id, OFFSET_TEAM, OFFSET_LINUX))
  713. message_end()
  714. }
  715.  
  716. public rebuild_menu()
  717. {
  718. for (new id=1;id<=g_maxplayers;id++)
  719. if (!is_user_connected(id))
  720. continue;
  721. else
  722. menu_cancel(id);
  723.  
  724. zp_cs_buytime_passed=true;
  725. build_menu;
  726. set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
  727. ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO2")
  728. }
  729.  
  730.  
  731. public build_menu()
  732. {
  733. if (zp_cs_buymenu_ready)
  734. {
  735. menu_destroy(zp_cs_buymenu)
  736. menu_destroy(zp_cs_buymenu_pistol)
  737. menu_destroy(zp_cs_buymenu_shotgun)
  738. menu_destroy(zp_cs_buymenu_smgun)
  739. menu_destroy(zp_cs_buymenu_rifle)
  740. menu_destroy(zp_cs_buymenu_biggun)
  741. menu_destroy(zp_cs_buymenu_equiph)
  742. menu_destroy(zp_cs_buymenu_equipz)
  743. }
  744.  
  745. //register menus
  746. zp_cs_buymenu = menu_create("Buy Item","zp_cs_buymenu_handle")
  747. zp_cs_buymenu_pistol = menu_create("Buy Handgun\R$ Cost^n(Secondary weapon)","zp_cs_subbuymenu_handle")
  748. zp_cs_buymenu_shotgun = menu_create("Buy Shotgun\R$ Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
  749. zp_cs_buymenu_smgun = menu_create("Buy Sub-Machnie gun\R$ Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
  750. zp_cs_buymenu_rifle = menu_create("Buy Rifle\R$ Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
  751. zp_cs_buymenu_biggun = menu_create("Buy Heavy Weapons\R$ Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
  752. zp_cs_buymenu_equiph = menu_create("Buy Equipemnt\R$ Cost","zp_cs_subbuymenu_handle")
  753. zp_cs_buymenu_equipz = menu_create("Buy Equipemnt\R$ Cost","zp_cs_subbuymenu_handle")
  754.  
  755. new strtemp0[100];
  756. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU1")
  757. menu_additem(zp_cs_buymenu, strtemp0, "1");
  758. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU2")
  759. menu_additem(zp_cs_buymenu, strtemp0, "2");
  760. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU3")
  761. menu_additem(zp_cs_buymenu, strtemp0, "3");
  762. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU4")
  763. menu_additem(zp_cs_buymenu, strtemp0, "4");
  764. formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU5")
  765. menu_additem(zp_cs_buymenu, strtemp0, "5");
  766. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU6")
  767. menu_additem(zp_cs_buymenu, strtemp0, "6");
  768. formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU7")
  769. menu_additem(zp_cs_buymenu, strtemp0, "7");
  770. formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU8")
  771. menu_additem(zp_cs_buymenu, strtemp0, "8");
  772. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU9")
  773. menu_additem(zp_cs_buymenu, strtemp0, "9");
  774. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU0")
  775. menu_additem(zp_cs_buymenu, strtemp0, "0");
  776. menu_setprop(zp_cs_buymenu, MPROP_PERPAGE, 0);
  777. menu_setprop(zp_cs_buymenu, MPROP_NUMBER_COLOR, "\w");
  778.  
  779.  
  780. new strtemp[100];
  781. new strtemp2[100];
  782. new strtemp3[100];
  783. for(new i=0;i<99;i++)
  784. {
  785. get_pcvar_string(cvar_zp_cs_buymenu_pistol_name[i], strtemp , 32)
  786. if (strtemp[0] != '-')
  787. {
  788. get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp3 , 32)
  789.  
  790. if (!zp_cs_buytime_passed)
  791. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i]), strtemp2, 32)
  792. else
  793. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)), strtemp2, 32)
  794.  
  795. add(strtemp,sizeof strtemp, "\R\y",4)
  796. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  797. menu_additem(zp_cs_buymenu_pistol, strtemp, strtemp3)
  798. }
  799. }
  800. menu_setprop(zp_cs_buymenu_pistol, MPROP_NUMBER_COLOR, "\w");
  801. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  802. menu_setprop(zp_cs_buymenu_pistol, MPROP_BACKNAME, strtemp0)
  803. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  804. menu_setprop(zp_cs_buymenu_pistol, MPROP_NEXTNAME, strtemp0)
  805. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  806. menu_setprop(zp_cs_buymenu_pistol, MPROP_EXITNAME, strtemp0)
  807. for(new i=0;i<99;i++)
  808. {
  809. get_pcvar_string(cvar_zp_cs_buymenu_shotgun_name[i], strtemp , 32)
  810. if (strtemp[0] != '-')
  811. {
  812. get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp3 , 32)
  813.  
  814. if (!zp_cs_buytime_passed)
  815. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i]), strtemp2, 32)
  816. else
  817. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)), strtemp2, 32)
  818.  
  819. add(strtemp,sizeof strtemp, "\R\y",4)
  820. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  821. menu_additem(zp_cs_buymenu_shotgun, strtemp, strtemp3)
  822. }
  823. }
  824. menu_setprop(zp_cs_buymenu_shotgun, MPROP_NUMBER_COLOR, "\w");
  825. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  826. menu_setprop(zp_cs_buymenu_shotgun, MPROP_BACKNAME, strtemp0)
  827. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  828. menu_setprop(zp_cs_buymenu_shotgun, MPROP_NEXTNAME, strtemp0)
  829. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  830. menu_setprop(zp_cs_buymenu_shotgun, MPROP_EXITNAME, strtemp0)
  831. for(new i=0;i<99;i++)
  832. {
  833. get_pcvar_string(cvar_zp_cs_buymenu_smgun_name[i], strtemp , 32)
  834. if (strtemp[0] != '-')
  835. {
  836. get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp3 , 32)
  837.  
  838. if (!zp_cs_buytime_passed)
  839. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i]), strtemp2, 32)
  840. else
  841. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)), strtemp2, 32)
  842.  
  843. add(strtemp,sizeof strtemp, "\R\y",4)
  844. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  845. menu_additem(zp_cs_buymenu_smgun, strtemp, strtemp3)
  846. }
  847. }
  848. menu_setprop(zp_cs_buymenu_smgun, MPROP_NUMBER_COLOR, "\w");
  849. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  850. menu_setprop(zp_cs_buymenu_smgun, MPROP_BACKNAME, strtemp0)
  851. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  852. menu_setprop(zp_cs_buymenu_smgun, MPROP_NEXTNAME, strtemp0)
  853. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  854. menu_setprop(zp_cs_buymenu_smgun, MPROP_EXITNAME, strtemp0)
  855. for(new i=0;i<99;i++)
  856. {
  857. get_pcvar_string(cvar_zp_cs_buymenu_rifle_name[i], strtemp , 32)
  858. if (strtemp[0] != '-')
  859. {
  860. get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp3 , 32)
  861.  
  862. if (!zp_cs_buytime_passed)
  863. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i]), strtemp2, 32)
  864. else
  865. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)), strtemp2, 32)
  866.  
  867. add(strtemp,sizeof strtemp, "\R\y",4)
  868. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  869. menu_additem(zp_cs_buymenu_rifle, strtemp, strtemp3)
  870. }
  871. }
  872. menu_setprop(zp_cs_buymenu_rifle, MPROP_NUMBER_COLOR, "\w");
  873. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  874. menu_setprop(zp_cs_buymenu_rifle, MPROP_BACKNAME, strtemp0)
  875. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  876. menu_setprop(zp_cs_buymenu_rifle, MPROP_NEXTNAME, strtemp0)
  877. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  878. menu_setprop(zp_cs_buymenu_rifle, MPROP_EXITNAME, strtemp0)
  879. for(new i=0;i<99;i++)
  880. {
  881. get_pcvar_string(cvar_zp_cs_buymenu_biggun_name[i], strtemp , 32)
  882. if (strtemp[0] != '-')
  883. {
  884. get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp3 , 32)
  885.  
  886. if (!zp_cs_buytime_passed)
  887. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i]), strtemp2, 32)
  888. else
  889. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)), strtemp2, 32)
  890.  
  891. add(strtemp,sizeof strtemp, "\R\y",4)
  892. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  893. menu_additem(zp_cs_buymenu_biggun, strtemp, strtemp3)
  894. }
  895. }
  896. menu_setprop(zp_cs_buymenu_biggun, MPROP_NUMBER_COLOR, "\w");
  897. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  898. menu_setprop(zp_cs_buymenu_biggun, MPROP_BACKNAME, strtemp0)
  899. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  900. menu_setprop(zp_cs_buymenu_biggun, MPROP_NEXTNAME, strtemp0)
  901. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  902. menu_setprop(zp_cs_buymenu_biggun, MPROP_EXITNAME, strtemp0)
  903. for(new i=0;i<99;i++)
  904. {
  905. get_pcvar_string(cvar_zp_cs_buymenu_equiph_name[i], strtemp , 32)
  906. if (strtemp[0] != '-')
  907. {
  908. get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp3 , 32)
  909. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i]), strtemp2, 32)
  910.  
  911. if (((strfind(strtemp3, "zp_cs_buy_flashbang") == 0)||(strfind(strtemp3, "zp_cs_buy_hegrenade") == 0)||(strfind(strtemp3, "zp_cs_buy_smokegrenade") == 0))&&(zp_cs_buytime_passed))
  912. num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_gren_mult)), strtemp2, 32)
  913.  
  914. add(strtemp,sizeof strtemp, "\R\y",4)
  915. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  916. menu_additem(zp_cs_buymenu_equiph, strtemp, strtemp3)
  917. }
  918. }
  919. menu_setprop(zp_cs_buymenu_equiph, MPROP_NUMBER_COLOR, "\w");
  920. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  921. menu_setprop(zp_cs_buymenu_equiph, MPROP_BACKNAME, strtemp0)
  922. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  923. menu_setprop(zp_cs_buymenu_equiph, MPROP_NEXTNAME, strtemp0)
  924. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  925. menu_setprop(zp_cs_buymenu_equiph, MPROP_EXITNAME, strtemp0)
  926. for(new i=0;i<99;i++)
  927. {
  928. get_pcvar_string(cvar_zp_cs_buymenu_equipz_name[i], strtemp , 32)
  929. if (strtemp[0] != '-')
  930. {
  931. get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp3 , 32)
  932. num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i]), strtemp2, 32)
  933. add(strtemp,sizeof strtemp, "\R\y",4)
  934. add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
  935. menu_additem(zp_cs_buymenu_equipz, strtemp, strtemp3)
  936. }
  937. }
  938. menu_setprop(zp_cs_buymenu_equipz, MPROP_NUMBER_COLOR, "\w");
  939. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
  940. menu_setprop(zp_cs_buymenu_equipz, MPROP_BACKNAME, strtemp0)
  941. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
  942. menu_setprop(zp_cs_buymenu_equipz, MPROP_NEXTNAME, strtemp0)
  943. formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
  944. menu_setprop(zp_cs_buymenu_equipz, MPROP_EXITNAME, strtemp0)
  945.  
  946. zp_cs_buymenu_ready=true;
  947. }
  948.  
  949. stock fm_give_item(id, const item[])
  950. {
  951. static ent
  952. ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
  953. if (!pev_valid(ent))
  954. return;
  955.  
  956. static Float:originF[3]
  957. pev(id, pev_origin, originF)
  958. set_pev(ent, pev_origin, originF)
  959. set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
  960. dllfunc(DLLFunc_Spawn, ent)
  961.  
  962. static save
  963. save = pev(ent, pev_solid)
  964. dllfunc(DLLFunc_Touch, ent, id)
  965. if (pev(ent, pev_solid) != save)
  966. return;
  967.  
  968. engfunc(EngFunc_RemoveEntity, ent)
  969. }
  970.  
  971. stock drop_weapons(id, dropwhat)
  972. {
  973. static weapons[32], num, i, weaponid
  974. num = 0
  975. get_user_weapons(id, weapons, num)
  976.  
  977. for (i = 0; i < num; i++)
  978. {
  979. weaponid = weapons[i]
  980.  
  981. if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
  982. {
  983. static wname[32], weapon_ent
  984. get_weaponname(weaponid, wname, sizeof wname - 1)
  985. weapon_ent = fm_find_ent_by_owner(-1, wname, id);
  986.  
  987. set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, fm_get_user_bpammo(id, weaponid))
  988.  
  989. engclient_cmd(id, "drop", wname)
  990. fm_set_user_bpammo(id, weaponid, 0)
  991. }
  992. }
  993. }
  994.  
  995. stock fm_find_ent_by_owner(entity, const classname[], owner)
  996. {
  997. while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
  998.  
  999. return entity;
  1000. }
  1001.  
  1002. stock fm_get_user_bpammo(id, weapon)
  1003. {
  1004. return get_pdata_int(id, AMMOOFFSET[weapon], OFFSET_LINUX);
  1005. }
  1006.  
  1007. stock fm_set_user_bpammo(id, weapon, amount)
  1008. {
  1009. set_pdata_int(id, AMMOOFFSET[weapon], amount, OFFSET_LINUX)
  1010. }
  1011.  
  1012. public clcmd_zp_cs_buymenu(id)
  1013. {
  1014. if (!is_user_alive(id))
  1015. return PLUGIN_HANDLED;
  1016.  
  1017. if ((zp_get_user_nemesis(id))&&(!get_pcvar_num(cvar_zp_cs_nemesis_canbuy)))
  1018. {
  1019. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_NEMESIS")
  1020. return PLUGIN_HANDLED;
  1021. }
  1022. if ((zp_get_user_survivor(id))&&(!get_pcvar_num(cvar_zp_cs_survivor_canbuy)))
  1023. {
  1024. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_SURVIVOR")
  1025. return PLUGIN_HANDLED;
  1026. }
  1027. if (zp_cs_buymenu_ready)
  1028. menu_display(id, zp_cs_buymenu)
  1029.  
  1030. return PLUGIN_HANDLED;
  1031. }
  1032.  
  1033. public zp_cs_buymenu_handle(id, menu, item)
  1034. {
  1035. new cmd[32];
  1036. new access, callback;
  1037. menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
  1038. zp_cs_submenuid[id] = str_to_num(cmd);
  1039.  
  1040. if (zp_cs_submenuid[id] == 0)
  1041. return PLUGIN_HANDLED;
  1042.  
  1043. if ((zp_get_user_zombie(id))&&(zp_cs_submenuid[id] != 8))
  1044. {
  1045. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ONLY_HUMAH");
  1046. return PLUGIN_HANDLED;
  1047. }
  1048.  
  1049. if (zp_cs_submenuid[id] == 1)
  1050. menu_display(id, zp_cs_buymenu_pistol, 0);
  1051. if (zp_cs_submenuid[id] == 2)
  1052. menu_display(id, zp_cs_buymenu_shotgun, 0);
  1053. if (zp_cs_submenuid[id] == 3)
  1054. menu_display(id, zp_cs_buymenu_smgun, 0);
  1055. if (zp_cs_submenuid[id] == 4)
  1056. menu_display(id, zp_cs_buymenu_rifle, 0);
  1057. if (zp_cs_submenuid[id] == 5)
  1058. menu_display(id, zp_cs_buymenu_biggun, 0);
  1059. if (zp_cs_submenuid[id] == 8)
  1060. if (zp_get_user_zombie(id))
  1061. {
  1062. zp_cs_submenuid[id] = 82
  1063. menu_display(id, zp_cs_buymenu_equipz, 0);
  1064. }
  1065. else
  1066. {
  1067. zp_cs_submenuid[id] = 81
  1068. menu_display(id, zp_cs_buymenu_equiph, 0);
  1069. }
  1070.  
  1071. if ((zp_cs_submenuid[id] == 6)||(zp_cs_submenuid[id] == 7))
  1072. {
  1073. static weapons[32], num, i, currentammo, weaponid, currentammocost, refreshHUD
  1074. num = 0
  1075. refreshHUD = false;
  1076. get_user_weapons(id, weapons, num)
  1077.  
  1078. for (i = 0; i < num; i++)
  1079. {
  1080. weaponid = weapons[i]
  1081. if ((((weaponid != 17)&&(weaponid != 16)&&(weaponid != 1)&&(weaponid != 26)&&(weaponid != 0)&&(weaponid != 11)&&(weaponid != 10)&&(zp_cs_submenuid[id] == 6))||(((weaponid == 17)||(weaponid == 16)||(weaponid == 1)||(weaponid == 26)||(weaponid == 0)||(weaponid == 11)||(weaponid == 10))&&(zp_cs_submenuid[id] == 7)))&&(MAXBPAMMO[weaponid] > 2))
  1082. {
  1083. currentammo = fm_get_user_bpammo(id, weaponid)
  1084. currentammocost = AMMOCOST[weaponid];
  1085. if (zp_cs_buytime_passed) currentammocost = currentammocost * get_pcvar_num(cvar_zp_cs_buytime_ammo_mult);
  1086.  
  1087. while((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]>=currentammocost))
  1088. {
  1089. currentammo += BUYAMMO[weaponid]
  1090. ExecuteHamB(Ham_GiveAmmo, id, BUYAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])
  1091. zp_cs_player_money[id] -= currentammocost;
  1092. refreshHUD = true;
  1093. }
  1094. if ((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]<currentammocost))
  1095. {
  1096. message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id)
  1097. write_byte(5);
  1098. message_end();
  1099. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY");
  1100. }
  1101. if (refreshHUD)
  1102. {
  1103. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
  1104. write_long(zp_cs_player_money[id]);
  1105. write_byte(1);
  1106. message_end();
  1107.  
  1108. engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1109. }
  1110. }
  1111. }
  1112. }
  1113. return PLUGIN_HANDLED;
  1114. }
  1115.  
  1116.  
  1117. public zp_cs_subbuymenu_handle(id, menu, item)
  1118. {
  1119. new cmd[32];
  1120. cmd [0] = '-';
  1121. new access, callback;
  1122.  
  1123. menu_item_getinfo(menu, item, access, cmd, charsmax(cmd),_,_, callback);
  1124.  
  1125. if (cmd[0]=='-') return PLUGIN_HANDLED;
  1126.  
  1127. new strtemp[100];
  1128. new itemcost;
  1129.  
  1130. if (strfind(cmd, "do_nothing") != 0)
  1131. for (new i=0;i<99;i++)
  1132. {
  1133. if (zp_cs_submenuid[id] == 1)
  1134. get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp , 32)
  1135. if (zp_cs_submenuid[id] == 2)
  1136. get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp , 32)
  1137. if (zp_cs_submenuid[id] == 3)
  1138. get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp , 32)
  1139. if (zp_cs_submenuid[id] == 4)
  1140. get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp , 32)
  1141. if (zp_cs_submenuid[id] == 5)
  1142. get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp , 32)
  1143. if (zp_cs_submenuid[id] == 81)
  1144. get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp , 32)
  1145. if (zp_cs_submenuid[id] == 82)
  1146. get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp , 32)
  1147.  
  1148. if (strfind(cmd, strtemp) == 0)
  1149. {
  1150. if (zp_cs_submenuid[id] == 1)
  1151. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
  1152. if (zp_cs_submenuid[id] == 2)
  1153. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
  1154. if (zp_cs_submenuid[id] == 3)
  1155. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
  1156. if (zp_cs_submenuid[id] == 4)
  1157. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
  1158. if (zp_cs_submenuid[id] == 5)
  1159. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
  1160. if (zp_cs_submenuid[id] == 81)
  1161. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])
  1162. if (zp_cs_submenuid[id] == 82)
  1163. itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i])
  1164.  
  1165. if (zp_cs_buytime_passed)
  1166. {
  1167. if (zp_cs_submenuid[id] == 1)
  1168. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)
  1169. if (zp_cs_submenuid[id] == 2)
  1170. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)
  1171. if (zp_cs_submenuid[id] == 3)
  1172. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)
  1173. if (zp_cs_submenuid[id] == 4)
  1174. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)
  1175. if (zp_cs_submenuid[id] == 5)
  1176. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)
  1177. if (((strfind(cmd, "zp_cs_buy_flashbang") == 0)||(strfind(cmd, "zp_cs_buy_hegrenade") == 0)||(strfind(cmd, "zp_cs_buy_smokegrenade") == 0))&&(zp_cs_submenuid[id] == 81))
  1178. itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_gren_mult)
  1179. }
  1180.  
  1181.  
  1182. if (zp_cs_player_money[id] < itemcost) //check if player has enough money
  1183. {
  1184. message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id) //HUD
  1185. write_byte(5);
  1186. message_end();
  1187. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY")
  1188. return PLUGIN_HANDLED;
  1189. }
  1190. else break;
  1191. }
  1192. }
  1193.  
  1194. if (strfind(cmd, "zp_cs_buy") == 0)
  1195. {
  1196. if ((user_has_weapon(id, CSW_HEGRENADE))&&(strfind(cmd, "zp_cs_buy_hegrenade") == 0))
  1197. if (fm_get_user_bpammo(id, CSW_HEGRENADE)>=MAXBPAMMO[CSW_HEGRENADE])
  1198. {
  1199. if ((zp_get_user_zombie(id))||(zp_get_user_nemesis(id))) client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NOMORE_INFECTGREN")
  1200. else client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NAPALM")
  1201.  
  1202. return PLUGIN_HANDLED;
  1203. }
  1204. else if (zp_get_user_zombie(id))
  1205. if (infbombused>=get_pcvar_num(cvar_infbomblimit))
  1206. {
  1207. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_INFECTGREN")
  1208. return PLUGIN_HANDLED;
  1209. }
  1210. else infbombused++;
  1211.  
  1212. if ((user_has_weapon(id, CSW_FLASHBANG))&&(strfind(cmd, "zp_cs_buy_flashbang") == 0))
  1213. if (fm_get_user_bpammo(id, CSW_FLASHBANG)>=MAXBPAMMO[CSW_FLASHBANG])
  1214. {
  1215. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FREEZE")
  1216.  
  1217. return PLUGIN_HANDLED;
  1218. }
  1219. if ((user_has_weapon(id, CSW_SMOKEGRENADE))&&(strfind(cmd, "zp_cs_buy_smokegrenade") == 0))
  1220. if (fm_get_user_bpammo(id, CSW_SMOKEGRENADE)>=MAXBPAMMO[CSW_SMOKEGRENADE])
  1221. {
  1222. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FLARES")
  1223.  
  1224. return PLUGIN_HANDLED;
  1225. }
  1226. replace(cmd,charsmax(cmd),"zp_cs_buy_","weapon_")
  1227. if ((strfind(cmd, "flashbang") == -1)&&(strfind(cmd, "hegrenade") == -1)&&(strfind(cmd, "smokegrenade") == -1))
  1228. if ((strfind(cmd, "glock18") > -1)||(strfind(cmd, "usp") > -1)||(strfind(cmd, "p228") > -1)||(strfind(cmd, "deagle") > -1)||(strfind(cmd, "elite") > -1)||(strfind(cmd, "fiveseven") > -1))
  1229. drop_weapons(id, 2);
  1230. else
  1231. drop_weapons(id, 1);
  1232.  
  1233. fm_give_item(id, cmd);
  1234. replace(cmd,charsmax(cmd),"weapon_","zp_cs_buy_")
  1235. }
  1236.  
  1237.  
  1238. if (strfind(cmd, "zp_cs_HEVsuit") == 0)
  1239. { static Float:armor
  1240. pev(id, pev_armorvalue, armor)
  1241. if (armor >= 100.0)
  1242. {
  1243. client_print(id, print_center, "%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_ARMOR")
  1244. return PLUGIN_HANDLED;
  1245. }
  1246. set_pev(id, pev_armorvalue, 100.0)
  1247. set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
  1248. set_task(1.0, "zp_cs_hevsuitstatusiconshow", id)
  1249. engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1250. }
  1251.  
  1252.  
  1253. if (strfind(cmd, "zp_cs_moarHEVsuit") == 0)
  1254. {
  1255. static Float:armor
  1256. pev(id, pev_armorvalue, armor)
  1257. armor+=100.0;
  1258. set_pev(id, pev_armorvalue, armor)
  1259. set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
  1260. set_task(1.0, "zp_cs_hevsuitstatusiconshow", id)
  1261. engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1262. }
  1263.  
  1264. if (strfind(cmd, "zp_cs_nightvision") == 0)
  1265. if (!zp_get_user_nightvision(id))
  1266. zp_force_buy_extra_item(id,0,1);
  1267. else
  1268. {
  1269. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NIGHTVISION");
  1270. return PLUGIN_HANDLED;
  1271. }
  1272.  
  1273. if (strfind(cmd, "zp_cs_antidote") == 0)
  1274. if (antidoteused<get_pcvar_num(cvar_antidotelimit))
  1275. if (!zp_disinfect_user(id))
  1276. {
  1277. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_ANTIDOTE");
  1278. return PLUGIN_HANDLED;
  1279. }
  1280. else antidoteused++;
  1281. else
  1282. {
  1283. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_ANTIDOTE");
  1284. return PLUGIN_HANDLED;
  1285. }
  1286.  
  1287.  
  1288. if (strfind(cmd, "zp_cs_zombie_madness") == 0)
  1289. if (madnessused<get_pcvar_num(cvar_madnesslimit))
  1290. zp_force_buy_extra_item(id,2,1);
  1291. else
  1292. {
  1293. client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_MADNESS");
  1294. return PLUGIN_HANDLED;
  1295. }
  1296.  
  1297. if (strfind(cmd, "zp_cs_") != 0)
  1298. {
  1299. new temp_itemid=zp_get_extra_item_id(cmd);
  1300. if (temp_itemid>-1)
  1301. (zp_force_buy_extra_item(id,temp_itemid,1))
  1302. else
  1303. {
  1304. client_print(id, print_chat, "[zp_cs_buymenu]: ERROR! ITEM %s NOT FOUND!",cmd)
  1305. }
  1306. }
  1307.  
  1308. if (strfind(cmd, "do_nothing") == 0) client_print(id, print_chat, "[zp_cs_buymenu]: This item does nothing.")
  1309.  
  1310. zp_cs_player_money[id] -= itemcost;
  1311. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
  1312. write_long(zp_cs_player_money[id]);
  1313. write_byte(1);
  1314. message_end();
  1315.  
  1316. return PLUGIN_HANDLED;
  1317. }
  1318.  
  1319. public ham_PlayerSpawn_Post(id)
  1320. {
  1321. if (!task_exists(id+TASK_RESTORE_MONEY)) set_task(0.5,"restore_player_money",id+TASK_RESTORE_MONEY)
  1322. }
  1323.  
  1324. public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  1325. {
  1326. if ((attacker<1)||(attacker>g_maxplayers)||(victim == attacker)||(!is_user_connected(attacker)))
  1327. return HAM_IGNORED;
  1328.  
  1329. zp_cs_damage[attacker][victim]+=damage
  1330.  
  1331. if (zp_get_user_survivor(attacker))
  1332. {
  1333. zp_cs_player_money[attacker] += floatround(damage*zp_cs_s_income_cash_rate);
  1334. if (zp_cs_player_money[attacker] > zp_cs_moneymax)
  1335. zp_cs_player_money[attacker]=zp_cs_moneymax;
  1336.  
  1337. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker);
  1338. write_long(zp_cs_player_money[attacker]);
  1339. write_byte(1);
  1340. message_end();
  1341. return HAM_IGNORED;
  1342. }
  1343.  
  1344. if (zp_get_user_zombie(attacker)||zp_get_user_nemesis(attacker))
  1345. {
  1346. static Float:armor
  1347. pev(victim, pev_armorvalue, armor)
  1348. if (armor < 36.0) set_task(0.1, "zp_cs_hevsuitstatusiconblink", victim);
  1349. if (armor < 1.0) set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
  1350. if (!zp_get_user_nemesis(attacker)||zp_get_user_survivor(victim))
  1351. {
  1352. if (!zp_get_user_nemesis(attacker))
  1353. zp_cs_player_money[attacker] +=floatround(damage*zp_cs_z_income_cash_rate);
  1354. else
  1355. zp_cs_player_money[attacker] +=floatround(damage*zp_cs_n_income_cash_rate);
  1356.  
  1357.  
  1358. if (zp_cs_player_money[attacker] > zp_cs_moneymax)
  1359. zp_cs_player_money[attacker]=zp_cs_moneymax;
  1360.  
  1361. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker);
  1362. write_long(zp_cs_player_money[attacker]);
  1363. write_byte(1);
  1364. message_end();
  1365. }
  1366. return HAM_IGNORED;
  1367.  
  1368. }
  1369. else
  1370. {
  1371. zp_cs_player_money[attacker] += floatround(damage*zp_cs_h_income_cash_rate);
  1372. if (zp_cs_player_money[attacker] > zp_cs_moneymax)
  1373. zp_cs_player_money[attacker]=zp_cs_moneymax;
  1374.  
  1375. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker);
  1376. write_long(zp_cs_player_money[attacker]);
  1377. write_byte(1);
  1378. message_end();
  1379. return HAM_IGNORED;
  1380. }
  1381.  
  1382. return HAM_IGNORED;
  1383. }
  1384.  
  1385. public ham_PlayerKilled(victim, attacker, shouldgib)
  1386. {
  1387. if ((attacker<1)||(attacker>g_maxplayers)||(attacker==victim)) return HAM_IGNORED;
  1388.  
  1389. if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
  1390. {
  1391. menu_cancel(victim);
  1392. set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
  1393. zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
  1394. }
  1395. else if (zp_get_user_nemesis(attacker))
  1396. {
  1397. menu_cancel(victim);
  1398. set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
  1399. zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate);
  1400. }
  1401. else if (zp_get_user_survivor(attacker))
  1402. zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_money_killbonus))*zp_cs_s_income_cash_rate);
  1403. else
  1404. zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_money_killbonus);
  1405.  
  1406. if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
  1407. {
  1408. if (get_pcvar_num(cvar_zp_cs_zombie_nodeathscore)) set_pdata_int(victim, OFFSET_DEATHS, get_pdata_int(victim, OFFSET_DEATHS, OFFSET_LINUX)-1, OFFSET_LINUX)
  1409. zp_cs_player_moneybonus[victim]+=get_pcvar_num(cvar_zp_cs_deathmoneybonus)
  1410. }
  1411.  
  1412. if (!task_exists(attacker+TASK_RESTORE_MONEY))
  1413. set_task(0.1,"restore_player_money",attacker+TASK_RESTORE_MONEY)
  1414.  
  1415. return HAM_IGNORED;
  1416. }
  1417.  
  1418. public zp_user_humanized_pre(id,survivor)
  1419. {
  1420. if (survivor)
  1421. menu_cancel(id);
  1422.  
  1423. return PLUGIN_CONTINUE;
  1424. }
  1425.  
  1426. public message_DeathMsg()
  1427. {
  1428. if (!get_pcvar_num(cvar_zp_cs_killassist_enabled))
  1429. return PLUGIN_CONTINUE;
  1430.  
  1431. new attacker = read_data(1)
  1432. new victim = read_data(2)
  1433. new headshot = read_data(3)
  1434. new assistant_id=0
  1435. new Float: assistant_damage
  1436. new FragBonus
  1437. new MoneyBonus
  1438. static weapon_name[32], weapon_name_full[32]
  1439.  
  1440. if (zp_get_user_zombie(attacker))
  1441. {
  1442. assistant_damage=zp_cs_killassist_mindamage_z
  1443. FragBonus=zp_zombie_frags_for_infect
  1444. MoneyBonus=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
  1445. }
  1446. else
  1447. {
  1448. assistant_damage=zp_cs_killassist_mindamage_h
  1449. FragBonus=zp_human_frags_for_kill
  1450. MoneyBonus=get_pcvar_num(cvar_zp_cs_money_killbonus)
  1451. }
  1452.  
  1453. for (new id=1;id<=g_maxplayers;id++)
  1454. {
  1455. if ((is_user_connected(id))&&(id!=attacker)&&(zp_cs_damage[id][victim]>=assistant_damage)&&(zp_get_user_zombie(id)==zp_get_user_zombie(attacker)))
  1456. {
  1457. assistant_damage=zp_cs_damage[id][victim]
  1458. assistant_id=id
  1459. }
  1460. zp_cs_damage[id][victim]=0.0
  1461. }
  1462.  
  1463. if (!assistant_id)
  1464. return PLUGIN_CONTINUE
  1465.  
  1466. static attacker_name[32], attacker_name_len, assistant_id_name[32], assistant_id_name_len
  1467.  
  1468. set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+FragBonus))
  1469. zp_cs_player_moneybonus[assistant_id]+=MoneyBonus
  1470.  
  1471. attacker_name_len = get_user_name(attacker, attacker_name, charsmax(attacker_name))
  1472. assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
  1473. attacker_name=PlayerOldName[attacker]
  1474. if(attacker_name_len < 14)
  1475. {
  1476. formatex(attacker_name, attacker_name_len, "%s", attacker_name)
  1477. formatex(assistant_id_name, 28-attacker_name_len, "%s", assistant_id_name)
  1478. }
  1479. else if(assistant_id_name_len < 14)
  1480. {
  1481. formatex(attacker_name, 28-assistant_id_name_len, "%s", attacker_name)
  1482. formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
  1483. }
  1484. else
  1485. {
  1486. formatex(attacker_name, 13, "%s", attacker_name)
  1487. formatex(assistant_id_name, 13, "%s", assistant_id_name)
  1488. }
  1489. formatex(attacker_name, charsmax(attacker_name), "%s + %s", attacker_name, assistant_id_name)
  1490. set_msg_block(g_msgSayText, BLOCK_ONCE)
  1491. new temp1 = get_pcvar_num(cvar_amx_mode)
  1492. set_pcvar_num(cvar_amx_mode,0)
  1493. set_user_info(attacker, "name", attacker_name)
  1494. set_pcvar_num(cvar_amx_mode,temp1)
  1495.  
  1496. if (zp_get_user_zombie(assistant_id))
  1497. {
  1498. new Float: currentHP = pev(assistant_id,pev_health)
  1499. if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
  1500. set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
  1501. else
  1502. set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
  1503. }
  1504.  
  1505. set_task(0.1,"update_scoreboard",assistant_id)
  1506.  
  1507. if (!task_exists(assistant_id+TASK_RESTORE_MONEY))
  1508. set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
  1509.  
  1510. read_data(4, weapon_name, charsmax(weapon_name))
  1511. if (equal(weapon_name,"grenade"))
  1512. weapon_name="hegrenade"
  1513. formatex(weapon_name_full, charsmax(weapon_name_full), "weapon_%s", weapon_name)
  1514.  
  1515. new arg[4]
  1516. arg[0] = attacker
  1517. arg[1] = victim
  1518. arg[2] = headshot
  1519. arg[3] = get_weaponid(weapon_name_full)
  1520.  
  1521. set_task(0.1, "zp_cs_kill_assist", 0, arg, 4)
  1522.  
  1523. return PLUGIN_HANDLED
  1524. }
  1525.  
  1526. public zp_cs_kill_assist(arg[])
  1527. {
  1528. static weapon_name[32]
  1529. get_weaponname(arg[3], weapon_name, charsmax(weapon_name))
  1530. replace(weapon_name, charsmax(weapon_name), "weapon_", "")
  1531.  
  1532. message_begin(MSG_ALL, g_msgDeathMsg)
  1533. write_byte(arg[0])
  1534. write_byte(arg[1])
  1535. write_byte(arg[2])
  1536. write_string(weapon_name)
  1537. message_end()
  1538.  
  1539. new temp1 = get_pcvar_num(cvar_amx_mode)
  1540. set_pcvar_num(cvar_amx_mode,0)
  1541. set_msg_block(g_msgSayText, BLOCK_ONCE)
  1542. set_user_info(arg[0],"name",PlayerOldName[arg[0]])
  1543. set_pcvar_num(cvar_amx_mode,temp1)
  1544. }
  1545.  
  1546. public zp_user_infected_pre(id,infector,nemesis)
  1547. {
  1548.  
  1549. if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
  1550. {
  1551. new assistant_id=0
  1552. new Float: assistant_damage = zp_cs_killassist_mindamage_z
  1553.  
  1554. for (new i=1;i<=g_maxplayers;i++)
  1555. {
  1556. if ((is_user_connected(i))&&(i!=infector)&&(zp_cs_damage[i][id]>=assistant_damage)&&(zp_get_user_zombie(i)))
  1557. {
  1558. assistant_damage=zp_cs_damage[i][id]
  1559. assistant_id=i
  1560. }
  1561. zp_cs_damage[i][id]=0.0
  1562. }
  1563.  
  1564. if (!assistant_id)
  1565. return PLUGIN_CONTINUE
  1566.  
  1567. static infector_name[32], infector_name_len, assistant_id_name[32], assistant_id_name_len
  1568.  
  1569. set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+zp_zombie_frags_for_infect))
  1570. zp_cs_player_moneybonus[assistant_id]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
  1571.  
  1572. infector_name_len = get_user_name(infector, infector_name, charsmax(infector_name))
  1573. assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
  1574. infector_name=PlayerOldName[infector]
  1575. if(infector_name_len < 14)
  1576. {
  1577. formatex(infector_name, infector_name_len, "%s", infector_name)
  1578. formatex(assistant_id_name, 28-infector_name_len, "%s", assistant_id_name)
  1579. }
  1580. else if(assistant_id_name_len < 14)
  1581. {
  1582. formatex(infector_name, 28-assistant_id_name_len, "%s", infector_name)
  1583. formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
  1584. }
  1585. else
  1586. {
  1587. formatex(infector_name, 13, "%s", infector_name)
  1588. formatex(assistant_id_name, 13, "%s", assistant_id_name)
  1589. }
  1590. formatex(infector_name, charsmax(infector_name), "%s + %s", infector_name, assistant_id_name)
  1591. set_msg_block(g_msgSayText, BLOCK_ONCE)
  1592. new temp1 = get_pcvar_num(cvar_amx_mode)
  1593. set_pcvar_num(cvar_amx_mode,0)
  1594. set_user_info(infector, "name", infector_name)
  1595. set_pcvar_num(cvar_amx_mode,temp1)
  1596.  
  1597. new Float: currentHP = pev(assistant_id,pev_health)
  1598. if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
  1599. set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
  1600. else
  1601. set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
  1602.  
  1603. set_task(0.1,"update_scoreboard",assistant_id)
  1604.  
  1605. if (!task_exists(assistant_id+TASK_RESTORE_MONEY))
  1606. set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
  1607. }
  1608.  
  1609. if (zp_get_user_nemesis(id)||(infector!=0))
  1610. return PLUGIN_CONTINUE;
  1611.  
  1612. static strtemp1[100],strtemp2[100], weapons[32], num, i
  1613. num = 0
  1614. get_user_weapons(id, weapons, num)
  1615.  
  1616. for (i = 0; i < num; i++)
  1617. {
  1618. strtemp1 = ""
  1619. get_weaponname(weapons[i],strtemp1,charsmax(strtemp1));
  1620. replace(strtemp1,charsmax(strtemp1),"weapon_","zp_cs_buy_")
  1621. for(new i=0;i<99;i++)
  1622. {
  1623. strtemp2 = ""
  1624. get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp2 , charsmax(strtemp2))
  1625. if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
  1626. }
  1627. for(new i=0;i<99;i++)
  1628. {
  1629. strtemp2 = ""
  1630. get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp2 , charsmax(strtemp2))
  1631. if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
  1632. }
  1633. for(new i=0;i<99;i++)
  1634. {
  1635. strtemp2 = ""
  1636. get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp2 , charsmax(strtemp2))
  1637. if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
  1638. }
  1639. for(new i=0;i<99;i++)
  1640. {
  1641. strtemp2 = ""
  1642. get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp2 , charsmax(strtemp2))
  1643. if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
  1644. }
  1645. for(new i=0;i<99;i++)
  1646. {
  1647. strtemp2 = ""
  1648. get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp2 , charsmax(strtemp2))
  1649. if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
  1650. }
  1651. }
  1652.  
  1653. if (!task_exists(id+TASK_RESTORE_MONEY))
  1654. set_task(0.1,"restore_player_money",id+TASK_RESTORE_MONEY)
  1655.  
  1656. client_print(id,print_chat,"%L", LANG_PLAYER, "BUYMENU_MONEYBACK")
  1657.  
  1658. return PLUGIN_CONTINUE;
  1659. }
  1660.  
  1661. public zp_user_infected_post(id, infector)
  1662. {
  1663. if ((infector<=g_maxplayers)&&(infector>0)&&(id!=infector))
  1664. {
  1665. if (!zp_get_user_nemesis(infector))
  1666. zp_cs_player_moneybonus[infector]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
  1667. else
  1668. zp_cs_player_moneybonus[infector]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate);
  1669.  
  1670. if (!task_exists(infector+TASK_RESTORE_MONEY))
  1671. set_task(0.1,"restore_player_money",infector+TASK_RESTORE_MONEY)
  1672.  
  1673.  
  1674. if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
  1675. {
  1676. new temp1 = get_pcvar_num(cvar_amx_mode)
  1677. set_pcvar_num(cvar_amx_mode,0)
  1678. set_msg_block(g_msgSayText, BLOCK_ONCE)
  1679. set_user_info(infector,"name",PlayerOldName[infector])
  1680. set_pcvar_num(cvar_amx_mode,temp1)
  1681. }
  1682. }
  1683.  
  1684. if ((id<1)||(id>g_maxplayers))
  1685. return PLUGIN_CONTINUE;
  1686.  
  1687. menu_cancel(id)
  1688. set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
  1689.  
  1690. return PLUGIN_CONTINUE;
  1691. }
  1692.  
  1693. public restore_player_money(id)
  1694. {
  1695. id-=TASK_RESTORE_MONEY;
  1696.  
  1697. if (is_user_bot(id))
  1698. set_pdata_int(id,OFFSET_MONEY,16000,OFFSET_LINUX)
  1699. else
  1700. set_pdata_int(id,OFFSET_MONEY,0,OFFSET_LINUX)
  1701.  
  1702. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
  1703. write_long(zp_cs_player_money[id]);
  1704. write_byte(1);
  1705. message_end();
  1706. zp_cs_player_money[id]+=zp_cs_player_moneybonus[id];
  1707. if (zp_cs_player_money[id] > zp_cs_moneymax) zp_cs_player_money[id]=zp_cs_moneymax;
  1708. if (zp_cs_player_money[id] < 0) zp_cs_player_money[id]=0;
  1709. message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
  1710. write_long(zp_cs_player_money[id]);
  1711. write_byte(1);
  1712. message_end();
  1713.  
  1714. zp_cs_player_moneybonus[id]=0;
  1715. }
  1716.  
  1717. public fm_strip_user_weapons(id)
  1718. {
  1719. static ent
  1720. ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
  1721. if (!pev_valid(ent)) return;
  1722.  
  1723. dllfunc(DLLFunc_Spawn, ent)
  1724. dllfunc(DLLFunc_Use, ent, id)
  1725. engfunc(EngFunc_RemoveEntity, ent)
  1726. }
  1727.  
  1728. public zp_cs_hevsuitstatusiconshow(id)
  1729. {
  1730. message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id)
  1731. write_byte(1)
  1732. write_string("item_battery")
  1733. write_byte(150)
  1734. write_byte(150)
  1735. write_byte(100)
  1736. message_end();
  1737.  
  1738. }
  1739.  
  1740. public zp_cs_hevsuitstatusiconhide(id)
  1741. {
  1742. message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id)
  1743. write_byte(0)
  1744. write_string("item_battery")
  1745. write_byte(150)
  1746. write_byte(150)
  1747. write_byte(100)
  1748. message_end();
  1749. }
  1750.  
  1751. public zp_cs_hevsuitstatusiconblink(id)
  1752. {
  1753. message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id)
  1754. write_byte(2)
  1755. write_string("item_battery")
  1756. write_byte(150)
  1757. write_byte(150)
  1758. write_byte(100)
  1759. message_end();
  1760. }
Add Comment
Please, Sign In to add comment