Problema plugin shop [ Rezolvat ]

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

09 Apr 2019, 19:34

Am problema cu pluginul de shop, zp_Cs_buymenu
Contine niste bug-uri. Daca trag 2 persoane intr-un zombie, ii arata ca in csgo https://prnt.sc/n9nzuv
Si cand esti zm, chiar daca ai avea 50k hp, dintr-o data ramai cu -1. Si daca infectezi pe cineva sau mai trage cineva un glont in tine, mori.
Poate rezolva cineva acele bug-uri ?
Multumesc.

https://pastebin.com/tiuhuLGu
Last edited by WHOAMI? on 16 Apr 2019, 23:18, edited 2 times in total.
Reason: Marcat ca "Rezolvat"
RoyalServer 2
User avatar
Rainq
Membru, skill +2
Membru, skill +2
Posts: 681
Joined: 21 Jul 2015, 19:50
Detinator Steam: Da
CS Status: Retras
Detinator server CS: zm.extreamcs.com
SteamID: mrainq
Reputatie: Fost super moderator
Fost detinator ZM.eXtreamCS.COM
Fost Membru Club eXtreamCS (trei luni)
Fond eXtream: 0
Location: Bucharest
Discord: manuraiders
Has thanked: 29 times
Been thanked: 51 times
Contact:

10 Apr 2019, 17:26

pai si la compilat sunt probleme cu addons-ul

Code: Select all

AMX Mod X Compiler 1.8.3-manual
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

Modified for www.Freakz.ro / amx.freakz.ro

plugin.sma(630) : warning 213: tag mismatch
plugin.sma(1075) : warning 217: loose indentation
plugin.sma(1080) : warning 217: loose indentation
plugin.sma(1508) : warning 213: tag mismatch
plugin.sma(1607) : warning 213: tag mismatch
Header size:           2752 bytes
Code size:            63836 bytes
Data size:            42740 bytes
Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
Total requirements:  125712 bytes

5 Warnings.
Done.
Image
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

10 Apr 2019, 23:14

Exista vreo solutie ?
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

11 Apr 2019, 01:04

Rainq wrote:
11 Apr 2019, 00:23
# AppLy wrote:
10 Apr 2019, 23:14
Exista vreo solutie ?
schimbi addons-ul
Pai eu mai am plugin, fix asa, doar ca nu am sma de el. Insa functioneaza foarte bine, nu are probleme ca acesta.
Pe ala l-am scot momentan, ca avea un bind, si nu puteam sa dau boost.
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

11 Apr 2019, 01:31


si banuiesc ca ai dat de .sma pe net,asa e?

Pai este cel de pe alliedmods https://forums.alliedmods.net/showthrea ... 76?t=87776. I-am adaugat cateva linii ca aiba in meniu si knife. Ca nu continea.
Nu stiu cum l-a modificat Levin pe asta de aici probleme/problem-zombie-plague-t362443.html , vad ca nu mai este disponil ce a postat el.
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

11 Apr 2019, 19:27

zp_cs_killassist_enabled pe 0
data viitoare pune sursa cu `code`

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>


#define PLUGIN "CS-like Buymenu for ZP"
#define VERSION "1.7"
#define AUTHOR "Sonic Son'edit"

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)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)

const PEV_ADDITIONAL_AMMO = pev_iuser1

const OFFSET_AWM_AMMO  = 377 
const OFFSET_SCOUT_AMMO = 378
const OFFSET_PARA_AMMO = 379
const OFFSET_FAMAS_AMMO = 380
const OFFSET_M3_AMMO = 381
const OFFSET_USP_AMMO = 382
const OFFSET_FIVESEVEN_AMMO = 383
const OFFSET_DEAGLE_AMMO = 384
const OFFSET_P228_AMMO = 385
const OFFSET_GLOCK_AMMO = 386
const OFFSET_FLASH_AMMO = 387
const OFFSET_HE_AMMO = 388
const OFFSET_SMOKE_AMMO = 389
const OFFSET_C4_AMMO = 390
const OFFSET_CLIPAMMO = 51
const OFFSET_TEAM = 114
const OFFSET_DEATHS = 444
const OFFSET_MONEY = 115

//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
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,
 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 }
			
new const BUYAMMO[] = { -1, 	13,		-1,	 30,		 -1,		 7,		 -1, 		12, 			30,		 -1, 		30, 		20, 			12,		 20, 			30, 		30,
 		12, 		30,			10, 		30, 		50,		 8, 		30, 		30, 			20, 		-1, 			7, 		30, 			30, 	-1,	 50 }

new const MAXBPAMMO[] = { -1,	52, 		-1, 	90,		 1,		 32,		 1,		 100, 			90,		 1, 		120, 		100, 			100, 		90, 			90, 		90,
 		100, 		120,			30, 		120, 		200, 		32, 		90,		120, 			90, 		2, 			35, 		90, 			90, 	-1,	 100 }
		
new const AMMOCOST[] = { 1, 	30, 		-1, 	-1, 		-1, 		65, 		-1, 		25, 			60,	 	-1, 		50, 		20, 			25, 		85, 			60,
 		60, 		25, 		20,			125, 		20, 		95,		 65, 		60, 		20, 			80, 		-1, 			40, 		60, 			80, 	-1, 	50 }
		
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
			"556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
			"556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }
		
const OFFSET_LINUX = 5 
const OFFSET_LINUX_WEAPONS = 4 

new const sound_buyammo[] = "items/9mmclip1.wav"

new g_maxplayers

new Lang_Roundend_msg[3][] = {"ROUNDEND_SURVIVED","ROUNDEND_WIN_ZOMBIE","ROUNDEND_WIN_HUMAN"};

const TASK_BUYTIME_END = 100;
const TASK_RESTORE_MONEY = 200;
const TASK_KILL_ASSIST = 300;

new cvar_zp_cs_h_income_cash_rate;
new cvar_zp_cs_z_income_cash_rate;
new cvar_zp_cs_n_income_cash_rate
new cvar_zp_cs_s_income_cash_rate
new cvar_zp_cs_buytime;
new cvar_zp_cs_startmoney;
new cvar_zp_cs_restartround;
new cvar_zp_cs_moneymax;
new cvar_zp_cs_money_killbonus
new cvar_zp_cs_infectmoneybonus
new cvar_zp_cs_deathmoneybonus
new cvar_zp_cs_nemesis_canbuy
new cvar_zp_cs_survivor_canbuy
new cvar_antidotelimit, cvar_madnesslimit, cvar_infbomblimit, antidoteused, madnessused, infbombused
new cvar_amx_mode
	
new cvar_zp_cs_money_human_win
new cvar_zp_cs_money_human_lose
new cvar_zp_cs_money_human_draw
new cvar_zp_cs_money_zombie_win
new cvar_zp_cs_money_zombie_lose
new cvar_zp_cs_money_zombie_draw
new cvar_zp_cs_drawround_frag_h
new cvar_zp_cs_drawround_frag_z
new cvar_zp_cs_drawround_death_h
new cvar_zp_cs_drawround_death_z
new cvar_zp_cs_zombie_nodeathscore
new cvar_zp_cs_killassist_enabled
new cvar_zp_cs_killassist_mindmg_h
new cvar_zp_cs_killassist_mindmg_z
new cvar_zp_human_frags_for_kill
new cvar_zp_zombie_frags_for_infect
new cvar_zp_zombie_infect_health

new cvar_zp_cs_buytime_pistol_mult; 
new cvar_zp_cs_buytime_shotgun_mult;
new cvar_zp_cs_buytime_smgun_mult;
new cvar_zp_cs_buytime_rifle_mult;
new cvar_zp_cs_buytime_biggun_mult;
new cvar_zp_cs_buytime_gren_mult;
new cvar_zp_cs_buytime_ammo_mult;

new Float: zp_cs_h_income_cash_rate;
new Float: zp_cs_z_income_cash_rate;
new Float: zp_cs_n_income_cash_rate
new Float: zp_cs_s_income_cash_rate
new zp_cs_moneymax;
new zp_cs_player_money[33]
new zp_cs_player_moneybonus[33]
new zp_cs_buytime_passed;
new Float: zp_cs_damage[33][33] //[attacker][victim]
new Float: zp_cs_killassist_mindamage_h
new Float: zp_cs_killassist_mindamage_z
new zp_human_frags_for_kill
new zp_zombie_frags_for_infect
new Float: zp_zombie_infect_health

new g_MsgMoney, g_msgMoneyBlink, g_msgIconStatus, g_msgScoreInfo, g_msgSayText, g_msgDeathMsg, g_MsgSyncObj1, g_MsgSyncObj2;
new PlayerOldName[33][32]

new const sound_buysuit[] = "items/tr_kevlar.wav" 

new zp_cs_buymenu;	
new zp_cs_submenuid[33];
new zp_cs_buymenu_pistol;
new zp_cs_buymenu_shotgun;
new zp_cs_buymenu_smgun;
new zp_cs_buymenu_rifle;
new zp_cs_buymenu_biggun;
new zp_cs_buymenu_knife;
new zp_cs_buymenu_equiph;
new zp_cs_buymenu_equipz;

new zp_cs_buymenu_ready;

new cvar_zp_cs_buymenu_pistol_name[99]; 
new cvar_zp_cs_buymenu_pistol_cost[99]; 
new cvar_zp_cs_buymenu_pistol_todo[99]; 
new cvar_zp_cs_buymenu_shotgun_name[99];
new cvar_zp_cs_buymenu_shotgun_cost[99]; 
new cvar_zp_cs_buymenu_shotgun_todo[99];
new cvar_zp_cs_buymenu_smgun_name[99]; 
new cvar_zp_cs_buymenu_smgun_cost[99];
new cvar_zp_cs_buymenu_smgun_todo[99];
new cvar_zp_cs_buymenu_rifle_name[99]; 
new cvar_zp_cs_buymenu_rifle_cost[99];
new cvar_zp_cs_buymenu_rifle_todo[99];
new cvar_zp_cs_buymenu_biggun_name[99]; 
new cvar_zp_cs_buymenu_biggun_cost[99];
new cvar_zp_cs_buymenu_biggun_todo[99];
new cvar_zp_cs_buymenu_equiph_name[99]; 
new cvar_zp_cs_buymenu_equiph_cost[99];
new cvar_zp_cs_buymenu_equiph_todo[99];
new cvar_zp_cs_buymenu_equipz_name[99]; 
new cvar_zp_cs_buymenu_equipz_cost[99];
new cvar_zp_cs_buymenu_equipz_todo[99];
 
public plugin_precache()
{
	precache_sound(sound_buyammo)
	precache_sound(sound_buysuit)
}
 
public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR)
	
	register_dictionary("zp_cs_buymenu.txt")
	
	g_MsgMoney = get_user_msgid("Money")
	g_msgMoneyBlink = get_user_msgid("BlinkAcct")
	g_msgIconStatus = get_user_msgid("StatusIcon") 
	g_msgScoreInfo = get_user_msgid("ScoreInfo")
	g_msgSayText = get_user_msgid("SayText")
	g_msgDeathMsg = get_user_msgid("DeathMsg")
	g_MsgSyncObj1 = CreateHudSyncObj()
	g_MsgSyncObj2 = CreateHudSyncObj()
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	
	register_message(g_msgDeathMsg, "message_DeathMsg")
	
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
	RegisterHam(Ham_Killed, "player", "ham_PlayerKilled")
	
	register_forward(FM_ClientConnect, "fw_ClientConnect_Post",1)
	register_forward(FM_ClientDisconnect, "fw_ClientDisconnect")
	
	register_clcmd("buy", "clcmd_zp_cs_buymenu") 
	register_clcmd("zp_cs_buymenu", "clcmd_zp_cs_buymenu") 
	
	cvar_zp_cs_h_income_cash_rate = register_cvar("zp_cs_human_income_cash_rate", "2.0")
	cvar_zp_cs_z_income_cash_rate = register_cvar("zp_cs_zombie_income_cash_rate", "5.0")
	cvar_zp_cs_n_income_cash_rate = register_cvar("zp_cs_nemesis_income_cash_rate", "0.5")
	cvar_zp_cs_s_income_cash_rate = register_cvar("zp_cs_survivor_income_cash_rate", "0.2")
	cvar_zp_cs_moneymax = register_cvar("zp_cs_moneymax", "150000")
	cvar_zp_cs_infectmoneybonus = register_cvar("zp_cs_infectmoneybonus", "1500")
	cvar_zp_cs_deathmoneybonus = register_cvar("zp_cs_deathmoneybonus", "300")
	cvar_zp_cs_money_killbonus = register_cvar("zp_cs_money_killbonus", "500")
	cvar_zp_cs_buytime = get_cvar_pointer("mp_buytime")
	cvar_zp_cs_startmoney = get_cvar_pointer("mp_startmoney")
	cvar_zp_cs_restartround = get_cvar_pointer("sv_restartround")
	cvar_zp_cs_nemesis_canbuy = register_cvar("zp_cs_nemesis_canbuy", "0")
	cvar_zp_cs_survivor_canbuy = register_cvar("zp_cs_survivor_canbuy", "0")
	cvar_antidotelimit = get_cvar_pointer("zp_extra_antidote_limit")
	cvar_madnesslimit = get_cvar_pointer("zp_extra_madness_limit")
	cvar_infbomblimit = get_cvar_pointer("zp_extra_infbomb_limit")
	cvar_zp_cs_buytime_pistol_mult = register_cvar("zp_cs_buytime_pistol_mult", "3")
	cvar_zp_cs_buytime_shotgun_mult = register_cvar("zp_cs_buytime_shotgun_mult", "3")
	cvar_zp_cs_buytime_smgun_mult = register_cvar("zp_cs_buytime_smgun_mult", "3")
	cvar_zp_cs_buytime_rifle_mult = register_cvar("zp_cs_buytime_rifle_mult", "3")
	cvar_zp_cs_buytime_biggun_mult = register_cvar("zp_cs_buytime_biggun_mult", "3")
	cvar_zp_cs_buytime_gren_mult = register_cvar("zp_cs_buytime_gren_mult", "10")
	cvar_zp_cs_buytime_ammo_mult = register_cvar("zp_cs_buytime_ammo_mult", "10");
	
	cvar_zp_cs_money_human_win = register_cvar("zp_cs_money_human_win", "10000");
	cvar_zp_cs_money_human_lose = register_cvar("zp_cs_money_human_lose", "1500");
	cvar_zp_cs_money_human_draw = register_cvar("zp_cs_money_human_draw", "7000");
	cvar_zp_cs_money_zombie_win = register_cvar("zp_cs_money_zombie_win", "5000");
	cvar_zp_cs_money_zombie_lose = register_cvar("zp_cs_money_zombie_lose", "1500");
	cvar_zp_cs_money_zombie_draw = register_cvar("zp_cs_money_zombie_draw", "-1500");
	cvar_zp_cs_drawround_frag_h = register_cvar("zp_cs_drawround_frag_h", "2");
	cvar_zp_cs_drawround_frag_z = register_cvar("zp_cs_drawround_frag_z", "-2");
	cvar_zp_cs_drawround_death_h = register_cvar("zp_cs_drawround_death_h", "0");
	cvar_zp_cs_drawround_death_z = register_cvar("zp_cs_drawround_death_z", "2");
	cvar_zp_cs_zombie_nodeathscore = register_cvar("zp_cs_zombie_nodeathscore", "1");
	cvar_zp_cs_killassist_enabled = register_cvar("zp_cs_killassist_enabled", "0")
	cvar_zp_cs_killassist_mindmg_h = register_cvar("zp_cs_killassist_mindamage_h","250.0")
	cvar_zp_cs_killassist_mindmg_z = register_cvar("zp_cs_killassist_mindamage_z","45.0")
	cvar_zp_human_frags_for_kill = get_cvar_pointer("zp_human_frags_for_kill")
	cvar_zp_zombie_frags_for_infect = get_cvar_pointer("zp_zombie_frags_for_infect")
	cvar_zp_zombie_infect_health = get_cvar_pointer("zp_zombie_infect_health")
	cvar_amx_mode = get_cvar_pointer("amx_mode")

	
	g_maxplayers = get_maxplayers()	
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		zp_cs_player_moneybonus[id]=0;
		zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
	}
	
	zp_cs_buymenu_ready = false;
	
	new strtemp[2]; 
	new strtemp2[32];
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___name";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___cost";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___todo";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';	
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
}


public plugin_cfg()
{
	new cfgdir[32]
	get_localinfo("amxx_configsdir",cfgdir,sizeof cfgdir)
	server_cmd("exec %s/zp_cs_buymenu.cfg", cfgdir)
	build_menu;
}

public fw_ClientConnect_Post(id)
{
 	get_user_name(id,PlayerOldName[id],31)
	console_cmd(id,"");
	if (zp_cs_player_moneybonus[id])
	{
		zp_cs_player_money[id]+=zp_cs_player_moneybonus[id]
		zp_cs_player_moneybonus[id]=0
	}
	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)
	return FMRES_IGNORED;
}

public event_round_start()
{
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO1")
	
	zp_cs_buymenu_ready = false;
	antidoteused = 0
	madnessused = 0
	infbombused = 0
	
	zp_cs_moneymax = get_pcvar_num(cvar_zp_cs_moneymax);
	zp_cs_h_income_cash_rate = get_pcvar_float(cvar_zp_cs_h_income_cash_rate)
	zp_cs_z_income_cash_rate = get_pcvar_float(cvar_zp_cs_z_income_cash_rate)
	zp_cs_n_income_cash_rate = get_pcvar_float(cvar_zp_cs_n_income_cash_rate)
	zp_cs_s_income_cash_rate = get_pcvar_float(cvar_zp_cs_s_income_cash_rate)
	zp_cs_killassist_mindamage_h = get_pcvar_float(cvar_zp_cs_killassist_mindmg_h)
	zp_cs_killassist_mindamage_z = get_pcvar_float(cvar_zp_cs_killassist_mindmg_z)
	zp_human_frags_for_kill = get_pcvar_num(cvar_zp_human_frags_for_kill)
	zp_zombie_frags_for_infect = get_pcvar_num(cvar_zp_zombie_frags_for_infect)
	zp_zombie_infect_health = get_pcvar_float(cvar_zp_zombie_infect_health)
	
	static Float:armor
	for (new id=1;id<=g_maxplayers;id++)
	{
		if (!is_user_connected(id)) continue;
		
		menu_cancel(id);
		
		pev(id, pev_armorvalue, armor) 
		if (armor > 0.0) 
			if (armor < 36.0)
				set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
			else
				set_task(0.1, "zp_cs_hevsuitstatusiconshow", id)
	}
	
	zp_cs_buytime_passed=false;
	set_task(0.1, "build_menu");
	if (task_exists(TASK_BUYTIME_END)) remove_task(TASK_BUYTIME_END);
	set_task(60.0*get_pcvar_float(cvar_zp_cs_buytime),"rebuild_menu",TASK_BUYTIME_END);
}

public zp_round_ended(winteam)
{		
	if (get_pcvar_num(cvar_zp_cs_restartround))
		for (new id=1;id<=g_maxplayers;id++)
		{
			zp_cs_player_moneybonus[id]=0;
			zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
			set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
			
			return PLUGIN_CONTINUE
		}
	
	new color[3]	
	for (new i=0;i<3;i++)
		color[i]=(255*(winteam=i));
	set_hudmessage(color[1], color[2], color[0], 0.05, 0.60, 1, 4.0, 5.0,0.1,0.2,-1)
	ShowSyncHudMsg(0,g_MsgSyncObj1, "%L", LANG_PLAYER,Lang_Roundend_msg[winteam])
	set_task(1.0,"round_results",winteam);
	
	return PLUGIN_CONTINUE
}

public round_results(winteam)
{		
	new strtemp1[16]
	new color[3]
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((!is_user_connected(id))||(zp_get_user_survivor(id))||(zp_get_user_nemesis(id))) continue;
		
		new MoneyBonus, FragBonus, DeathPenalty;
		if (zp_get_user_zombie(id)||(zp_get_user_nemesis(id)))
		{
			if (winteam==0)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_z)
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_z)
			}
			
			if (winteam==1)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_win)
			}
			
			if (winteam==2)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_lose)
			}
		}
		else
		{
			if (winteam==0)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_h) 
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_h)
			}
			if (winteam==1)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"		
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_lose)
			}
			if (winteam==2)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_win)
			}
		}
		zp_cs_player_moneybonus[id]+=MoneyBonus
		set_pev(id, pev_frags, float(pev(id, pev_frags)+FragBonus))
		set_pdata_int(id, OFFSET_DEATHS, get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX)+DeathPenalty, OFFSET_LINUX)
		set_hudmessage(color[0], color[1], color[2], 0.05, 0.63, 2, 1.0, 3.5,0.05,0.05,-1)
		set_task(0.1,"update_scoreboard",id)
		if (winteam) ShowSyncHudMsg(id, g_MsgSyncObj2, "%L^n%L: %d", LANG_PLAYER, strtemp1, LANG_PLAYER, "ROUNDEND_MONEY", MoneyBonus)
		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)
	}
}

public update_scoreboard(id)
{		
		message_begin(MSG_BROADCAST, g_msgScoreInfo)
		write_byte(id)
		write_short(pev(id, pev_frags))
		write_short(get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX))
		write_short(0)
		write_short(get_pdata_int(id, OFFSET_TEAM, OFFSET_LINUX))
		message_end()
}

public rebuild_menu()
{
	for (new id=1;id<=g_maxplayers;id++)
		if (!is_user_connected(id))	
			continue;		
		else
			menu_cancel(id);
		
	zp_cs_buytime_passed=true;
	build_menu;
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO2")
}


public build_menu()
{
	if (zp_cs_buymenu_ready)
	{
	menu_destroy(zp_cs_buymenu)
	menu_destroy(zp_cs_buymenu_pistol)
	menu_destroy(zp_cs_buymenu_shotgun)
	menu_destroy(zp_cs_buymenu_smgun)
	menu_destroy(zp_cs_buymenu_rifle)
	menu_destroy(zp_cs_buymenu_biggun)
	menu_destroy(zp_cs_buymenu_knife)
	menu_destroy(zp_cs_buymenu_equiph)
	menu_destroy(zp_cs_buymenu_equipz)
	}
		
	//register menus
	zp_cs_buymenu = menu_create("Buy Item","zp_cs_buymenu_handle")	
	zp_cs_buymenu_pistol = menu_create("Buy Handgun\R$  Cost^n(Secondary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_shotgun = menu_create("Buy Shotgun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_smgun = menu_create("Buy Sub-Machnie gun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_rifle = menu_create("Buy Rifle\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_biggun = menu_create("Buy Heavy Weapons\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
	zp_cs_buymenu_knife = menu_create("Knife Mod\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equiph = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equipz = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	
	new strtemp0[100];
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU1")
	menu_additem(zp_cs_buymenu, strtemp0, "1");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU2")
	menu_additem(zp_cs_buymenu, strtemp0, "2");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU3")
	menu_additem(zp_cs_buymenu, strtemp0, "3");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU4")
	menu_additem(zp_cs_buymenu, strtemp0, "4");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU5")
	menu_additem(zp_cs_buymenu, strtemp0, "5");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU6")
	menu_additem(zp_cs_buymenu, strtemp0, "6");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU7")
	menu_additem(zp_cs_buymenu, strtemp0, "7");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU8")
	menu_additem(zp_cs_buymenu, strtemp0, "8");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU9")
	menu_additem(zp_cs_buymenu, strtemp0, "9");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU0")
	menu_additem(zp_cs_buymenu, strtemp0, "0");
	menu_setprop(zp_cs_buymenu, MPROP_PERPAGE, 0);
	menu_setprop(zp_cs_buymenu, MPROP_NUMBER_COLOR, "\w");

	
	new strtemp[100]; 
	new strtemp2[100];
	new strtemp3[100];
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_pistol_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i]), strtemp2, 32) 
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)), strtemp2, 32) 
		
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_pistol, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_shotgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_shotgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_smgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_smgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_rifle_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_rifle, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_biggun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_biggun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equiph_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i]), strtemp2, 32)
						
			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))
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_gren_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equiph, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equipz_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i]), strtemp2, 32)
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equipz, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_EXITNAME, strtemp0)
		
	zp_cs_buymenu_ready=true;
}

stock fm_give_item(id, const item[]) 
{	
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
	if (!pev_valid(ent))
		return;
	
	static Float:originF[3]
	pev(id, pev_origin, originF)
	set_pev(ent, pev_origin, originF)
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)
	
	static save
	save = pev(ent, pev_solid)
	dllfunc(DLLFunc_Touch, ent, id)
	if (pev(ent, pev_solid) != save)
		return;
	
	engfunc(EngFunc_RemoveEntity, ent)
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)

	for (i = 0; i < num; i++)
	{
		weaponid = weapons[i]
		
		if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			static wname[32], weapon_ent
			get_weaponname(weaponid, wname, sizeof wname - 1)
			weapon_ent = fm_find_ent_by_owner(-1, wname, id);
			
			set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, fm_get_user_bpammo(id, weaponid))
			
			engclient_cmd(id, "drop", wname)
			fm_set_user_bpammo(id, weaponid, 0)
		}
	}
}

stock fm_find_ent_by_owner(entity, const classname[], owner) 
{
	while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
	
	return entity;
}

stock fm_get_user_bpammo(id, weapon)
{
	return get_pdata_int(id, AMMOOFFSET[weapon], OFFSET_LINUX);
}

stock fm_set_user_bpammo(id, weapon, amount)
{
	set_pdata_int(id, AMMOOFFSET[weapon], amount, OFFSET_LINUX)
}
 
public clcmd_zp_cs_buymenu(id)
{
	if (!is_user_alive(id)) 
		return PLUGIN_HANDLED;
		
	if ((zp_get_user_nemesis(id))&&(!get_pcvar_num(cvar_zp_cs_nemesis_canbuy)))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_NEMESIS")
		return PLUGIN_HANDLED;
	}
	if ((zp_get_user_survivor(id))&&(!get_pcvar_num(cvar_zp_cs_survivor_canbuy)))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_SURVIVOR")
		return PLUGIN_HANDLED;
	}
	if (zp_cs_buymenu_ready) 
		menu_display(id, zp_cs_buymenu)
	
	return PLUGIN_HANDLED;
}

public  zp_cs_buymenu_handle(id, menu, item)
{
	new cmd[32];
	new access, callback;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
	zp_cs_submenuid[id] = str_to_num(cmd);
	
	if (zp_cs_submenuid[id] == 0) 
		return PLUGIN_HANDLED;
	
	if ((zp_get_user_zombie(id))&&(zp_cs_submenuid[id] != 8))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ONLY_HUMAH");
		return PLUGIN_HANDLED;
	}
	
	if (zp_cs_submenuid[id] == 1) 
		menu_display(id, zp_cs_buymenu_pistol, 0); 
	if (zp_cs_submenuid[id] == 2) 
		menu_display(id, zp_cs_buymenu_shotgun, 0); 
	if (zp_cs_submenuid[id] == 3) 
		menu_display(id, zp_cs_buymenu_smgun, 0); 
	if (zp_cs_submenuid[id] == 4) 
		menu_display(id, zp_cs_buymenu_rifle, 0); 
	if (zp_cs_submenuid[id] == 5) 
		menu_display(id, zp_cs_buymenu_biggun, 0);
	if (zp_cs_submenuid[id] == 9) 
		menu_display(id, zp_cs_buymenu_knife, 0); 
	if (zp_cs_submenuid[id] == 8)
	{
		if (zp_get_user_zombie(id))
		{
			zp_cs_submenuid[id] = 82 
			menu_display(id, zp_cs_buymenu_equipz, 0); 
		}
		else
		{
			zp_cs_submenuid[id] = 81 
			menu_display(id, zp_cs_buymenu_equiph, 0);
		}
		if (zp_cs_submenuid[id] == 9)
		{
			client_cmd(id, "/knife")
		}
	}
	
	if ((zp_cs_submenuid[id] == 6)||(zp_cs_submenuid[id] == 7)) 
	{
		static weapons[32], num, i, currentammo, weaponid, currentammocost, refreshHUD
		num = 0
		refreshHUD = false;
		get_user_weapons(id, weapons, num)
		
		for (i = 0; i < num; i++)
		{
			weaponid = weapons[i]
			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))
			{	
				currentammo = fm_get_user_bpammo(id, weaponid) 
				currentammocost = AMMOCOST[weaponid]; 
				if (zp_cs_buytime_passed) currentammocost = currentammocost * get_pcvar_num(cvar_zp_cs_buytime_ammo_mult); 
				
				while((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]>=currentammocost))
				{
					currentammo += BUYAMMO[weaponid] 
					ExecuteHamB(Ham_GiveAmmo, id, BUYAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])
					zp_cs_player_money[id] -= currentammocost; 
					refreshHUD = true;
				}
				if ((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]<currentammocost)) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id)
					write_byte(5);
					message_end();
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY"); 
				}
				if (refreshHUD) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
					write_long(zp_cs_player_money[id]);
					write_byte(1); 
					message_end();
					
					engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM)
				}
			}
		}	
	}	
	return PLUGIN_HANDLED;
}


public  zp_cs_subbuymenu_handle(id, menu, item)
{
	new cmd[32]; 
	cmd [0] = '-';
	new access, callback;
 
	menu_item_getinfo(menu, item, access, cmd, charsmax(cmd),_,_, callback); 
	
	if (cmd[0]=='-') return PLUGIN_HANDLED;
 
	new strtemp[100]; 
	new itemcost;
	
	if (strfind(cmd, "do_nothing") != 0) 
	for (new i=0;i<99;i++) 
	{	
		if (zp_cs_submenuid[id] == 1)
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 2)
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 3)
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 4)
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 5)
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 81)
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 82)
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp , 32)
			
		if (strfind(cmd, strtemp) == 0)
		{					
			if (zp_cs_submenuid[id] == 1)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
			if (zp_cs_submenuid[id] == 2)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
			if (zp_cs_submenuid[id] == 3)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
			if (zp_cs_submenuid[id] == 4)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
			if (zp_cs_submenuid[id] == 5)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
			if (zp_cs_submenuid[id] == 81)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])
			if (zp_cs_submenuid[id] == 82)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i])
				
			if (zp_cs_buytime_passed) 
			{
				if (zp_cs_submenuid[id] == 1)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)
				if (zp_cs_submenuid[id] == 2)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)
				if (zp_cs_submenuid[id] == 3)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)
				if (zp_cs_submenuid[id] == 4)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)
				if (zp_cs_submenuid[id] == 5)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)
				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))
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_gren_mult)
			}
					
				
			if (zp_cs_player_money[id]  < itemcost) //check if player has enough money
			{
				message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id) //HUD
				write_byte(5);
				message_end();
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY")
				return PLUGIN_HANDLED;				
			}
			else break; 
		}
	}
			
	if (strfind(cmd, "zp_cs_buy") == 0) 
	{
		if ((user_has_weapon(id, CSW_HEGRENADE))&&(strfind(cmd, "zp_cs_buy_hegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_HEGRENADE)>=MAXBPAMMO[CSW_HEGRENADE]) 
			{
				if ((zp_get_user_zombie(id))||(zp_get_user_nemesis(id))) client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NOMORE_INFECTGREN")
					else client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NAPALM")
				
				return PLUGIN_HANDLED;
			}
			else if (zp_get_user_zombie(id))
				if (infbombused>=get_pcvar_num(cvar_infbomblimit))
				{
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_INFECTGREN")
					return PLUGIN_HANDLED;
				}
				else infbombused++;
			
		if ((user_has_weapon(id, CSW_FLASHBANG))&&(strfind(cmd, "zp_cs_buy_flashbang") == 0))
			if (fm_get_user_bpammo(id, CSW_FLASHBANG)>=MAXBPAMMO[CSW_FLASHBANG]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FREEZE")
			
				return PLUGIN_HANDLED;
			}
		if ((user_has_weapon(id, CSW_SMOKEGRENADE))&&(strfind(cmd, "zp_cs_buy_smokegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_SMOKEGRENADE)>=MAXBPAMMO[CSW_SMOKEGRENADE]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FLARES")
				
				return PLUGIN_HANDLED;
			}
		replace(cmd,charsmax(cmd),"zp_cs_buy_","weapon_")
		if ((strfind(cmd, "flashbang") == -1)&&(strfind(cmd, "hegrenade") == -1)&&(strfind(cmd, "smokegrenade") == -1)) 
			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)) 
				drop_weapons(id, 2);
			else
				drop_weapons(id, 1);
			
		fm_give_item(id, cmd);
		replace(cmd,charsmax(cmd),"weapon_","zp_cs_buy_")
	}
	
	
	if (strfind(cmd, "zp_cs_HEVsuit") == 0)
	{	static Float:armor
		pev(id, pev_armorvalue, armor)
		if (armor >= 100.0) 
		{
			client_print(id, print_center, "%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_ARMOR")
			return PLUGIN_HANDLED;
		}
		set_pev(id, pev_armorvalue, 100.0)
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id)
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM) 
	}
		
	
	if (strfind(cmd, "zp_cs_moarHEVsuit") == 0)
	{	
		static Float:armor
		pev(id, pev_armorvalue, armor) 
		armor+=100.0; 
		set_pev(id, pev_armorvalue, armor) 
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id) 
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	
	if (strfind(cmd, "zp_cs_nightvision") == 0) 
		if (!zp_get_user_nightvision(id))
			zp_force_buy_extra_item(id,0,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NIGHTVISION");
			return  PLUGIN_HANDLED;
		}
		
	if (strfind(cmd, "zp_cs_antidote") == 0) 
		if (antidoteused<get_pcvar_num(cvar_antidotelimit))
			if (!zp_disinfect_user(id)) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_ANTIDOTE");
				return  PLUGIN_HANDLED;
			}
			else antidoteused++;
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_ANTIDOTE");
			return  PLUGIN_HANDLED;
		}
		
		
	if (strfind(cmd, "zp_cs_zombie_madness") == 0) 
		if (madnessused<get_pcvar_num(cvar_madnesslimit))
			zp_force_buy_extra_item(id,2,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_MADNESS");
			return  PLUGIN_HANDLED;
		}
	
	if (strfind(cmd, "zp_cs_") != 0) 
	{
		new temp_itemid=zp_get_extra_item_id(cmd);
		if (temp_itemid>-1)
			(zp_force_buy_extra_item(id,temp_itemid,1))
		else
		{
			client_print(id, print_chat, "[zp_cs_buymenu]: ERROR! ITEM %s NOT FOUND!",cmd)
		}
	}
		
	if (strfind(cmd, "do_nothing") == 0) client_print(id, print_chat, "[zp_cs_buymenu]: This item does nothing.") 
	
	zp_cs_player_money[id] -= itemcost;
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
		
	return PLUGIN_HANDLED;
}

public ham_PlayerSpawn_Post(id)
{
	if (!task_exists(id+TASK_RESTORE_MONEY)) set_task(0.5,"restore_player_money",id+TASK_RESTORE_MONEY)
}

public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (/*attacker<1||attacker>g_maxplayers||*/victim == attacker||!is_user_connected(attacker))
		return HAM_IGNORED;
		
	zp_cs_damage[attacker][victim]+=damage
	
	if (zp_get_user_survivor(attacker))
	{
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_s_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	else if (zp_get_user_zombie(attacker)||zp_get_user_nemesis(attacker))
	{
		static Float:armor
		pev(victim, pev_armorvalue, armor)
		if (armor < 36.0) set_task(0.1, "zp_cs_hevsuitstatusiconblink", victim);
		if (armor < 1.0) set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		if (/*!zp_get_user_nemesis(attacker)||*/zp_get_user_survivor(victim))
		{
			if (!zp_get_user_nemesis(attacker))
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_z_income_cash_rate);
			else
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_n_income_cash_rate);
				
				
			if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
				zp_cs_player_money[attacker]=zp_cs_moneymax; 
				
			message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
			write_long(zp_cs_player_money[attacker]);
			write_byte(1);
			message_end();

			return HAM_IGNORED;
		}
	}
	else
	{		
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_h_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public ham_PlayerKilled(victim, attacker, shouldgib)
{
	if (/*attacker<1||attacker>g_maxplayers||*/attacker==victim||!is_user_connected(attacker)) return HAM_IGNORED;
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else if (zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	}	
	else if (zp_get_user_survivor(attacker)) 
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_money_killbonus))*zp_cs_s_income_cash_rate);
	else 
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_money_killbonus);
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		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)
		zp_cs_player_moneybonus[victim]+=get_pcvar_num(cvar_zp_cs_deathmoneybonus)
	}

	if (!task_exists(attacker+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",attacker+TASK_RESTORE_MONEY)
	
	return HAM_IGNORED;
}

public zp_user_humanized_pre(id,survivor)
{
	if (survivor)
		menu_cancel(id);
		
	return PLUGIN_CONTINUE;
}

public message_DeathMsg()
{	
	if (!get_pcvar_num(cvar_zp_cs_killassist_enabled))
		return PLUGIN_CONTINUE;
		
	new attacker = read_data(1)
	new victim = read_data(2)
	new headshot = read_data(3)
	new assistant_id=0
	new Float: assistant_damage
	new FragBonus
	new MoneyBonus
	static weapon_name[32], weapon_name_full[32]
	
	if (zp_get_user_zombie(attacker))
	{
		assistant_damage=zp_cs_killassist_mindamage_z
		FragBonus=zp_zombie_frags_for_infect
		MoneyBonus=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else
	{
		assistant_damage=zp_cs_killassist_mindamage_h
		FragBonus=zp_human_frags_for_kill
		MoneyBonus=get_pcvar_num(cvar_zp_cs_money_killbonus)
	}
		
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((is_user_connected(id))&&(id!=attacker)&&(zp_cs_damage[id][victim]>=assistant_damage)&&(zp_get_user_zombie(id)==zp_get_user_zombie(attacker)))
		{
			assistant_damage=zp_cs_damage[id][victim]
			assistant_id=id
		}
		zp_cs_damage[id][victim]=0.0
	}
	
	if (!assistant_id)
		return PLUGIN_CONTINUE
		
	static attacker_name[32], attacker_name_len, assistant_id_name[32], assistant_id_name_len
			
	set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+FragBonus))
	zp_cs_player_moneybonus[assistant_id]+=MoneyBonus
		
	attacker_name_len = get_user_name(attacker, attacker_name, charsmax(attacker_name))
	assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
	attacker_name=PlayerOldName[attacker]
	if(attacker_name_len < 14)
	{
		formatex(attacker_name, attacker_name_len, "%s", attacker_name)
		formatex(assistant_id_name, 28-attacker_name_len, "%s", assistant_id_name)
	}	
	else if(assistant_id_name_len < 14)
	{
		formatex(attacker_name, 28-assistant_id_name_len, "%s", attacker_name)
		formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
	}
	else
	{
		formatex(attacker_name, 13, "%s", attacker_name)
		formatex(assistant_id_name, 13, "%s", assistant_id_name)
	}
	formatex(attacker_name, charsmax(attacker_name), "%s + %s", attacker_name, assistant_id_name)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_user_info(attacker, "name", attacker_name)
	set_pcvar_num(cvar_amx_mode,temp1)
	
	if (zp_get_user_zombie(assistant_id))
	{
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
	}
		
	set_task(0.1,"update_scoreboard",assistant_id)
	
	if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	
	read_data(4, weapon_name, charsmax(weapon_name))
	if (equal(weapon_name,"grenade"))
		weapon_name="hegrenade"
	formatex(weapon_name_full, charsmax(weapon_name_full), "weapon_%s", weapon_name)
	
	new arg[4]
	arg[0] = attacker
	arg[1] = victim
	arg[2] = headshot
	arg[3] = get_weaponid(weapon_name_full)

	set_task(0.1, "zp_cs_kill_assist", 0, arg, 4)
		
	return PLUGIN_HANDLED	
}

public zp_cs_kill_assist(arg[])
{
	static weapon_name[32]
	get_weaponname(arg[3], weapon_name, charsmax(weapon_name))
	replace(weapon_name, charsmax(weapon_name), "weapon_", "")
	
	message_begin(MSG_ALL, g_msgDeathMsg)
	write_byte(arg[0])
	write_byte(arg[1])
	write_byte(arg[2])
	write_string(weapon_name)
	message_end()
	
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	set_user_info(arg[0],"name",PlayerOldName[arg[0]])
	set_pcvar_num(cvar_amx_mode,temp1)
}

public zp_user_infected_pre(id,infector,nemesis)
{
	if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
	{
		new assistant_id=0
		new Float: assistant_damage = zp_cs_killassist_mindamage_z
		
		for (new i=1;i<=g_maxplayers;i++)
		{
			if ((is_user_connected(i))&&(i!=infector)&&(zp_cs_damage[i][id]>=assistant_damage)&&(zp_get_user_zombie(i)))
			{
				assistant_damage=zp_cs_damage[i][id]
				assistant_id=i
			}
			zp_cs_damage[i][id]=0.0
		}
	
		if (!assistant_id)
			return PLUGIN_CONTINUE
		
		static infector_name[32], infector_name_len, assistant_id_name[32], assistant_id_name_len
			
		set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+zp_zombie_frags_for_infect))
		zp_cs_player_moneybonus[assistant_id]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		
		infector_name_len = get_user_name(infector, infector_name, charsmax(infector_name))
		assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
		infector_name=PlayerOldName[infector]
		if(infector_name_len < 14)
		{
			formatex(infector_name, infector_name_len, "%s", infector_name)
			formatex(assistant_id_name, 28-infector_name_len, "%s", assistant_id_name)
		}	
		else if(assistant_id_name_len < 14)
		{
			formatex(infector_name, 28-assistant_id_name_len, "%s", infector_name)
			formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
		}
		else
		{
			formatex(infector_name, 13, "%s", infector_name)
			formatex(assistant_id_name, 13, "%s", assistant_id_name)
		}
		formatex(infector_name, charsmax(infector_name), "%s + %s", infector_name, assistant_id_name)
		set_msg_block(g_msgSayText, BLOCK_ONCE)
		new temp1 = get_pcvar_num(cvar_amx_mode)
		set_pcvar_num(cvar_amx_mode,0)
		set_user_info(infector, "name", infector_name)
		set_pcvar_num(cvar_amx_mode,temp1)
	
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
		
		set_task(0.1,"update_scoreboard",assistant_id)
		
		if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	}
	
	if (zp_get_user_nemesis(id)||(infector!=0)) 
		return PLUGIN_CONTINUE;
	
	static strtemp1[100],strtemp2[100], weapons[32], num, i
	num = 0
	get_user_weapons(id, weapons, num)
		
	for (i = 0; i < num; i++)
	{
		strtemp1 = ""
		get_weaponname(weapons[i],strtemp1,charsmax(strtemp1));
		replace(strtemp1,charsmax(strtemp1),"weapon_","zp_cs_buy_")
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
		}
	}
	
	if (!task_exists(id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",id+TASK_RESTORE_MONEY)
		
	client_print(id,print_chat,"%L", LANG_PLAYER, "BUYMENU_MONEYBACK")
	
	return PLUGIN_CONTINUE;
}

public zp_user_infected_post(id, infector)
{			
	if ((infector<=g_maxplayers)&&(infector>0)&&(id!=infector))
	{
		if (!zp_get_user_nemesis(infector))
			zp_cs_player_moneybonus[infector]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		else
			zp_cs_player_moneybonus[infector]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	
		if (!task_exists(infector+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",infector+TASK_RESTORE_MONEY)
			
		
		if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
		{	
			new temp1 = get_pcvar_num(cvar_amx_mode)
			set_pcvar_num(cvar_amx_mode,0)
			set_msg_block(g_msgSayText, BLOCK_ONCE)
			set_user_info(infector,"name",PlayerOldName[infector])
			set_pcvar_num(cvar_amx_mode,temp1)
		}
	}
		
	if ((id<1)||(id>g_maxplayers))
		return PLUGIN_CONTINUE;
		
	menu_cancel(id)
	set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
	
	return PLUGIN_CONTINUE;
}

public restore_player_money(id)
{
	id-=TASK_RESTORE_MONEY;
	
	if (is_user_bot(id))
		set_pdata_int(id,OFFSET_MONEY,16000,OFFSET_LINUX)
	else 
		set_pdata_int(id,OFFSET_MONEY,0,OFFSET_LINUX)
		
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	zp_cs_player_money[id]+=zp_cs_player_moneybonus[id];
	if (zp_cs_player_money[id] > zp_cs_moneymax) zp_cs_player_money[id]=zp_cs_moneymax; 
	if (zp_cs_player_money[id] < 0) zp_cs_player_money[id]=0; 
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	
	zp_cs_player_moneybonus[id]=0;
}

public fm_strip_user_weapons(id)
{
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
	if (!pev_valid(ent)) return;
	
	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, id)
	engfunc(EngFunc_RemoveEntity, ent)
}

public zp_cs_hevsuitstatusiconshow(id)
{	
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(1)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconhide(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(0)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconblink(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(2)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

13 Apr 2019, 11:20

Multumesc mult Levin. Insa acum a aparut alta problema. Nu se mai poate cumpara nici o arma. O fi din cauza altor plugine sau de pluginul acesta ?
Daca il pun pe ala nemodificat de tine, merge.
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

13 Apr 2019, 12:09

păi e de la plg, că e prost gândit

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>


#define PLUGIN "CS-like Buymenu for ZP"
#define VERSION "1.7"
#define AUTHOR "Sonic Son'edit"

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)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)

const PEV_ADDITIONAL_AMMO = pev_iuser1

const OFFSET_AWM_AMMO  = 377 
const OFFSET_SCOUT_AMMO = 378
const OFFSET_PARA_AMMO = 379
const OFFSET_FAMAS_AMMO = 380
const OFFSET_M3_AMMO = 381
const OFFSET_USP_AMMO = 382
const OFFSET_FIVESEVEN_AMMO = 383
const OFFSET_DEAGLE_AMMO = 384
const OFFSET_P228_AMMO = 385
const OFFSET_GLOCK_AMMO = 386
const OFFSET_FLASH_AMMO = 387
const OFFSET_HE_AMMO = 388
const OFFSET_SMOKE_AMMO = 389
const OFFSET_C4_AMMO = 390
const OFFSET_CLIPAMMO = 51
const OFFSET_TEAM = 114
const OFFSET_DEATHS = 444
const OFFSET_MONEY = 115

//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
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,
 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 }
			
new const BUYAMMO[] = { -1, 	13,		-1,	 30,		 -1,		 7,		 -1, 		12, 			30,		 -1, 		30, 		20, 			12,		 20, 			30, 		30,
 		12, 		30,			10, 		30, 		50,		 8, 		30, 		30, 			20, 		-1, 			7, 		30, 			30, 	-1,	 50 }

new const MAXBPAMMO[] = { -1,	52, 		-1, 	90,		 1,		 32,		 1,		 100, 			90,		 1, 		120, 		100, 			100, 		90, 			90, 		90,
 		100, 		120,			30, 		120, 		200, 		32, 		90,		120, 			90, 		2, 			35, 		90, 			90, 	-1,	 100 }
		
new const AMMOCOST[] = { 1, 	30, 		-1, 	-1, 		-1, 		65, 		-1, 		25, 			60,	 	-1, 		50, 		20, 			25, 		85, 			60,
 		60, 		25, 		20,			125, 		20, 		95,		 65, 		60, 		20, 			80, 		-1, 			40, 		60, 			80, 	-1, 	50 }
		
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
			"556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
			"556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }
		
const OFFSET_LINUX = 5 
const OFFSET_LINUX_WEAPONS = 4 

new const sound_buyammo[] = "items/9mmclip1.wav"

new g_maxplayers

new Lang_Roundend_msg[3][] = {"ROUNDEND_SURVIVED","ROUNDEND_WIN_ZOMBIE","ROUNDEND_WIN_HUMAN"};

const TASK_BUYTIME_END = 100;
const TASK_RESTORE_MONEY = 200;
const TASK_KILL_ASSIST = 300;

new cvar_zp_cs_h_income_cash_rate;
new cvar_zp_cs_z_income_cash_rate;
new cvar_zp_cs_n_income_cash_rate
new cvar_zp_cs_s_income_cash_rate
new cvar_zp_cs_buytime;
new cvar_zp_cs_startmoney;
new cvar_zp_cs_restartround;
new cvar_zp_cs_moneymax;
new cvar_zp_cs_money_killbonus
new cvar_zp_cs_infectmoneybonus
new cvar_zp_cs_deathmoneybonus
new cvar_zp_cs_nemesis_canbuy
new cvar_zp_cs_survivor_canbuy
new cvar_antidotelimit, cvar_madnesslimit, cvar_infbomblimit, antidoteused, madnessused, infbombused
new cvar_amx_mode
	
new cvar_zp_cs_money_human_win
new cvar_zp_cs_money_human_lose
new cvar_zp_cs_money_human_draw
new cvar_zp_cs_money_zombie_win
new cvar_zp_cs_money_zombie_lose
new cvar_zp_cs_money_zombie_draw
new cvar_zp_cs_drawround_frag_h
new cvar_zp_cs_drawround_frag_z
new cvar_zp_cs_drawround_death_h
new cvar_zp_cs_drawround_death_z
new cvar_zp_cs_zombie_nodeathscore
new cvar_zp_cs_killassist_enabled
new cvar_zp_cs_killassist_mindmg_h
new cvar_zp_cs_killassist_mindmg_z
new cvar_zp_human_frags_for_kill
new cvar_zp_zombie_frags_for_infect
new cvar_zp_zombie_infect_health

new cvar_zp_cs_buytime_pistol_mult; 
new cvar_zp_cs_buytime_shotgun_mult;
new cvar_zp_cs_buytime_smgun_mult;
new cvar_zp_cs_buytime_rifle_mult;
new cvar_zp_cs_buytime_biggun_mult;
new cvar_zp_cs_buytime_gren_mult;
new cvar_zp_cs_buytime_ammo_mult;

new Float: zp_cs_h_income_cash_rate;
new Float: zp_cs_z_income_cash_rate;
new Float: zp_cs_n_income_cash_rate
new Float: zp_cs_s_income_cash_rate
new zp_cs_moneymax;
new zp_cs_player_money[33]
new zp_cs_player_moneybonus[33]
new bool:zp_cs_buytime_passed;
new Float: zp_cs_damage[33][33] //[attacker][victim]
new Float: zp_cs_killassist_mindamage_h
new Float: zp_cs_killassist_mindamage_z
new zp_human_frags_for_kill
new zp_zombie_frags_for_infect
new Float: zp_zombie_infect_health

new g_MsgMoney, g_msgMoneyBlink, g_msgIconStatus, g_msgScoreInfo, g_msgSayText, g_msgDeathMsg, g_MsgSyncObj1, g_MsgSyncObj2;
new PlayerOldName[33][32]

new const sound_buysuit[] = "items/tr_kevlar.wav" 

new zp_cs_buymenu;	
new zp_cs_submenuid[33];
new zp_cs_buymenu_pistol;
new zp_cs_buymenu_shotgun;
new zp_cs_buymenu_smgun;
new zp_cs_buymenu_rifle;
new zp_cs_buymenu_biggun;
new zp_cs_buymenu_knife;
new zp_cs_buymenu_equiph;
new zp_cs_buymenu_equipz;

//new bool:zp_cs_buymenu_ready;

new cvar_zp_cs_buymenu_pistol_name[99]; 
new cvar_zp_cs_buymenu_pistol_cost[99]; 
new cvar_zp_cs_buymenu_pistol_todo[99]; 
new cvar_zp_cs_buymenu_shotgun_name[99];
new cvar_zp_cs_buymenu_shotgun_cost[99]; 
new cvar_zp_cs_buymenu_shotgun_todo[99];
new cvar_zp_cs_buymenu_smgun_name[99]; 
new cvar_zp_cs_buymenu_smgun_cost[99];
new cvar_zp_cs_buymenu_smgun_todo[99];
new cvar_zp_cs_buymenu_rifle_name[99]; 
new cvar_zp_cs_buymenu_rifle_cost[99];
new cvar_zp_cs_buymenu_rifle_todo[99];
new cvar_zp_cs_buymenu_biggun_name[99]; 
new cvar_zp_cs_buymenu_biggun_cost[99];
new cvar_zp_cs_buymenu_biggun_todo[99];
new cvar_zp_cs_buymenu_equiph_name[99]; 
new cvar_zp_cs_buymenu_equiph_cost[99];
new cvar_zp_cs_buymenu_equiph_todo[99];
new cvar_zp_cs_buymenu_equipz_name[99]; 
new cvar_zp_cs_buymenu_equipz_cost[99];
new cvar_zp_cs_buymenu_equipz_todo[99];
 
public plugin_precache()
{
	precache_sound(sound_buyammo)
	precache_sound(sound_buysuit)
}
 
public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR)
	
	register_dictionary("zp_cs_buymenu.txt")
	
	g_MsgMoney = get_user_msgid("Money")
	g_msgMoneyBlink = get_user_msgid("BlinkAcct")
	g_msgIconStatus = get_user_msgid("StatusIcon") 
	g_msgScoreInfo = get_user_msgid("ScoreInfo")
	g_msgSayText = get_user_msgid("SayText")
	g_msgDeathMsg = get_user_msgid("DeathMsg")
	g_MsgSyncObj1 = CreateHudSyncObj()
	g_MsgSyncObj2 = CreateHudSyncObj()
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	
	register_message(g_msgDeathMsg, "message_DeathMsg")
	
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
	RegisterHam(Ham_Killed, "player", "ham_PlayerKilled")
	
	register_forward(FM_ClientConnect, "fw_ClientConnect_Post",1)
	register_forward(FM_ClientDisconnect, "fw_ClientDisconnect")
	
	register_clcmd("buy", "clcmd_zp_cs_buymenu") 
	register_clcmd("zp_cs_buymenu", "clcmd_zp_cs_buymenu") 
	
	cvar_zp_cs_h_income_cash_rate = register_cvar("zp_cs_human_income_cash_rate", "2.0")
	cvar_zp_cs_z_income_cash_rate = register_cvar("zp_cs_zombie_income_cash_rate", "5.0")
	cvar_zp_cs_n_income_cash_rate = register_cvar("zp_cs_nemesis_income_cash_rate", "0.5")
	cvar_zp_cs_s_income_cash_rate = register_cvar("zp_cs_survivor_income_cash_rate", "0.2")
	cvar_zp_cs_moneymax = register_cvar("zp_cs_moneymax", "150000")
	cvar_zp_cs_infectmoneybonus = register_cvar("zp_cs_infectmoneybonus", "1500")
	cvar_zp_cs_deathmoneybonus = register_cvar("zp_cs_deathmoneybonus", "300")
	cvar_zp_cs_money_killbonus = register_cvar("zp_cs_money_killbonus", "500")
	cvar_zp_cs_buytime = get_cvar_pointer("mp_buytime")
	cvar_zp_cs_startmoney = get_cvar_pointer("mp_startmoney")
	cvar_zp_cs_restartround = get_cvar_pointer("sv_restartround")
	cvar_zp_cs_nemesis_canbuy = register_cvar("zp_cs_nemesis_canbuy", "0")
	cvar_zp_cs_survivor_canbuy = register_cvar("zp_cs_survivor_canbuy", "0")
	cvar_antidotelimit = get_cvar_pointer("zp_extra_antidote_limit")
	cvar_madnesslimit = get_cvar_pointer("zp_extra_madness_limit")
	cvar_infbomblimit = get_cvar_pointer("zp_extra_infbomb_limit")
	cvar_zp_cs_buytime_pistol_mult = register_cvar("zp_cs_buytime_pistol_mult", "3")
	cvar_zp_cs_buytime_shotgun_mult = register_cvar("zp_cs_buytime_shotgun_mult", "3")
	cvar_zp_cs_buytime_smgun_mult = register_cvar("zp_cs_buytime_smgun_mult", "3")
	cvar_zp_cs_buytime_rifle_mult = register_cvar("zp_cs_buytime_rifle_mult", "3")
	cvar_zp_cs_buytime_biggun_mult = register_cvar("zp_cs_buytime_biggun_mult", "3")
	cvar_zp_cs_buytime_gren_mult = register_cvar("zp_cs_buytime_gren_mult", "10")
	cvar_zp_cs_buytime_ammo_mult = register_cvar("zp_cs_buytime_ammo_mult", "10");
	
	cvar_zp_cs_money_human_win = register_cvar("zp_cs_money_human_win", "10000");
	cvar_zp_cs_money_human_lose = register_cvar("zp_cs_money_human_lose", "1500");
	cvar_zp_cs_money_human_draw = register_cvar("zp_cs_money_human_draw", "7000");
	cvar_zp_cs_money_zombie_win = register_cvar("zp_cs_money_zombie_win", "5000");
	cvar_zp_cs_money_zombie_lose = register_cvar("zp_cs_money_zombie_lose", "1500");
	cvar_zp_cs_money_zombie_draw = register_cvar("zp_cs_money_zombie_draw", "-1500");
	cvar_zp_cs_drawround_frag_h = register_cvar("zp_cs_drawround_frag_h", "2");
	cvar_zp_cs_drawround_frag_z = register_cvar("zp_cs_drawround_frag_z", "-2");
	cvar_zp_cs_drawround_death_h = register_cvar("zp_cs_drawround_death_h", "0");
	cvar_zp_cs_drawround_death_z = register_cvar("zp_cs_drawround_death_z", "2");
	cvar_zp_cs_zombie_nodeathscore = register_cvar("zp_cs_zombie_nodeathscore", "1");
	cvar_zp_cs_killassist_enabled = register_cvar("zp_cs_killassist_enabled", "0")
	cvar_zp_cs_killassist_mindmg_h = register_cvar("zp_cs_killassist_mindamage_h","250.0")
	cvar_zp_cs_killassist_mindmg_z = register_cvar("zp_cs_killassist_mindamage_z","45.0")
	cvar_zp_human_frags_for_kill = get_cvar_pointer("zp_human_frags_for_kill")
	cvar_zp_zombie_frags_for_infect = get_cvar_pointer("zp_zombie_frags_for_infect")
	cvar_zp_zombie_infect_health = get_cvar_pointer("zp_zombie_infect_health")
	cvar_amx_mode = get_cvar_pointer("amx_mode")

	
	g_maxplayers = get_maxplayers()	
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		zp_cs_player_moneybonus[id]=0;
		zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
	}
	
	//zp_cs_buymenu_ready = false;
	
	new strtemp[2]; 
	new strtemp2[32];
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___name";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___cost";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___todo";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';	
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
}


public plugin_cfg()
{
	new cfgdir[32]
	get_localinfo("amxx_configsdir",cfgdir,sizeof cfgdir)
	server_cmd("exec %s/zp_cs_buymenu.cfg", cfgdir)
	build_menu();
}

public fw_ClientConnect_Post(id)
{
 	get_user_name(id,PlayerOldName[id],31)

	console_cmd(id,"");

	if (zp_cs_player_moneybonus[id])
	{
		zp_cs_player_money[id]+=zp_cs_player_moneybonus[id]
		zp_cs_player_moneybonus[id]=0
	}

	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)

	return FMRES_IGNORED;
}

public event_round_start()
{
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO1")
	
	//zp_cs_buymenu_ready = false;
	antidoteused = 0
	madnessused = 0
	infbombused = 0
	
	zp_cs_moneymax = get_pcvar_num(cvar_zp_cs_moneymax);
	zp_cs_h_income_cash_rate = get_pcvar_float(cvar_zp_cs_h_income_cash_rate)
	zp_cs_z_income_cash_rate = get_pcvar_float(cvar_zp_cs_z_income_cash_rate)
	zp_cs_n_income_cash_rate = get_pcvar_float(cvar_zp_cs_n_income_cash_rate)
	zp_cs_s_income_cash_rate = get_pcvar_float(cvar_zp_cs_s_income_cash_rate)
	zp_cs_killassist_mindamage_h = get_pcvar_float(cvar_zp_cs_killassist_mindmg_h)
	zp_cs_killassist_mindamage_z = get_pcvar_float(cvar_zp_cs_killassist_mindmg_z)
	zp_human_frags_for_kill = get_pcvar_num(cvar_zp_human_frags_for_kill)
	zp_zombie_frags_for_infect = get_pcvar_num(cvar_zp_zombie_frags_for_infect)
	zp_zombie_infect_health = get_pcvar_float(cvar_zp_zombie_infect_health)
	
	static Float:armor
	for (new id=1;id<=g_maxplayers;id++)
	{
		if (!is_user_connected(id)) continue;
		
		menu_cancel(id);
		
		pev(id, pev_armorvalue, armor) 
		if (armor > 0.0) 
			if (armor < 36.0)
				set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
			else
				set_task(0.1, "zp_cs_hevsuitstatusiconshow", id)
	}
	
	zp_cs_buytime_passed=false;
	set_task(0.1, "build_menu");
	if (task_exists(TASK_BUYTIME_END)) remove_task(TASK_BUYTIME_END);
	set_task(60.0*get_pcvar_float(cvar_zp_cs_buytime),"rebuild_menu",TASK_BUYTIME_END);
}

public zp_round_ended(winteam)
{		
	if (get_pcvar_num(cvar_zp_cs_restartround))
		for (new id=1;id<=g_maxplayers;id++)
		{
			zp_cs_player_moneybonus[id]=0;
			zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
			set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
			
			return PLUGIN_CONTINUE
		}
	
	new color[3]	
	for (new i=0;i<3;i++)
		color[i]=(255*(winteam=i));
	set_hudmessage(color[1], color[2], color[0], 0.05, 0.60, 1, 4.0, 5.0,0.1,0.2,-1)
	ShowSyncHudMsg(0,g_MsgSyncObj1, "%L", LANG_PLAYER,Lang_Roundend_msg[winteam])
	set_task(1.0,"round_results",winteam);
	
	return PLUGIN_CONTINUE
}

public round_results(winteam)
{		
	new strtemp1[16]
	new color[3]
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((!is_user_connected(id))||(zp_get_user_survivor(id))||(zp_get_user_nemesis(id))) continue;
		
		new MoneyBonus, FragBonus, DeathPenalty;
		if (zp_get_user_zombie(id)||(zp_get_user_nemesis(id)))
		{
			if (winteam==0)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_z)
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_z)
			}
			
			if (winteam==1)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_win)
			}
			
			if (winteam==2)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_lose)
			}
		}
		else
		{
			if (winteam==0)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_h) 
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_h)
			}
			if (winteam==1)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"		
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_lose)
			}
			if (winteam==2)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_win)
			}
		}
		zp_cs_player_moneybonus[id]+=MoneyBonus
		set_pev(id, pev_frags, float(pev(id, pev_frags)+FragBonus))
		set_pdata_int(id, OFFSET_DEATHS, get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX)+DeathPenalty, OFFSET_LINUX)
		set_hudmessage(color[0], color[1], color[2], 0.05, 0.63, 2, 1.0, 3.5,0.05,0.05,-1)
		set_task(0.1,"update_scoreboard",id)
		if (winteam) ShowSyncHudMsg(id, g_MsgSyncObj2, "%L^n%L: %d", LANG_PLAYER, strtemp1, LANG_PLAYER, "ROUNDEND_MONEY", MoneyBonus)
		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)
	}
}

public update_scoreboard(id)
{		
		message_begin(MSG_BROADCAST, g_msgScoreInfo)
		write_byte(id)
		write_short(pev(id, pev_frags))
		write_short(get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX))
		write_short(0)
		write_short(get_pdata_int(id, OFFSET_TEAM, OFFSET_LINUX))
		message_end()
}

public rebuild_menu()
{
	for (new id=1;id<=g_maxplayers;id++)
		if (!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	
			continue;		
		else
			menu_cancel(id);
		
	zp_cs_buytime_passed=true;
	build_menu();
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO2")
}
public build_menu()
{
	//if (zp_cs_buymenu_ready)
	//{
	menu_destroy(zp_cs_buymenu)
	menu_destroy(zp_cs_buymenu_pistol)
	menu_destroy(zp_cs_buymenu_shotgun)
	menu_destroy(zp_cs_buymenu_smgun)
	menu_destroy(zp_cs_buymenu_rifle)
	menu_destroy(zp_cs_buymenu_biggun)
	menu_destroy(zp_cs_buymenu_knife)
	menu_destroy(zp_cs_buymenu_equiph)
	menu_destroy(zp_cs_buymenu_equipz)
	//}
		
	//register menus
	zp_cs_buymenu = menu_create("Buy Item","zp_cs_buymenu_handle")	
	zp_cs_buymenu_pistol = menu_create("Buy Handgun\R$  Cost^n(Secondary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_shotgun = menu_create("Buy Shotgun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_smgun = menu_create("Buy Sub-Machnie gun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_rifle = menu_create("Buy Rifle\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_biggun = menu_create("Buy Heavy Weapons\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
	zp_cs_buymenu_knife = menu_create("Knife Mod\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equiph = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equipz = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	
	new strtemp0[100];
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU1")
	menu_additem(zp_cs_buymenu, strtemp0, "1");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU2")
	menu_additem(zp_cs_buymenu, strtemp0, "2");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU3")
	menu_additem(zp_cs_buymenu, strtemp0, "3");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU4")
	menu_additem(zp_cs_buymenu, strtemp0, "4");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU5")
	menu_additem(zp_cs_buymenu, strtemp0, "5");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU6")
	menu_additem(zp_cs_buymenu, strtemp0, "6");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU7")
	menu_additem(zp_cs_buymenu, strtemp0, "7");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU8")
	menu_additem(zp_cs_buymenu, strtemp0, "8");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU9")
	menu_additem(zp_cs_buymenu, strtemp0, "9");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU0")
	menu_additem(zp_cs_buymenu, strtemp0, "0");
	menu_setprop(zp_cs_buymenu, MPROP_PERPAGE, 0);
	menu_setprop(zp_cs_buymenu, MPROP_NUMBER_COLOR, "\w");

	
	new strtemp[100]; 
	new strtemp2[100];
	new strtemp3[100];
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_pistol_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i]), strtemp2, 32) 
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)), strtemp2, 32) 
		
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_pistol, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_shotgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_shotgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_smgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_smgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_rifle_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_rifle, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_biggun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_biggun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equiph_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i]), strtemp2, 32)
						
			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))
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_gren_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equiph, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equipz_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i]), strtemp2, 32)
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equipz, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_EXITNAME, strtemp0)
		
	//zp_cs_buymenu_ready=true;
}

stock fm_give_item(id, const item[]) 
{	
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
	if (!pev_valid(ent))
		return;
	
	static Float:originF[3]
	pev(id, pev_origin, originF)
	set_pev(ent, pev_origin, originF)
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)
	
	static save
	save = pev(ent, pev_solid)
	dllfunc(DLLFunc_Touch, ent, id)
	if (pev(ent, pev_solid) != save)
		return;
	
	engfunc(EngFunc_RemoveEntity, ent)
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)

	for (i = 0; i < num; i++)
	{
		weaponid = weapons[i]
		
		if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			static wname[32], weapon_ent
			get_weaponname(weaponid, wname, sizeof wname - 1)
			weapon_ent = fm_find_ent_by_owner(-1, wname, id);
			
			set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, fm_get_user_bpammo(id, weaponid))
			
			engclient_cmd(id, "drop", wname)
			fm_set_user_bpammo(id, weaponid, 0)
		}
	}
}

stock fm_find_ent_by_owner(entity, const classname[], owner) 
{
	while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
	
	return entity;
}

stock fm_get_user_bpammo(id, weapon)
{
	return get_pdata_int(id, AMMOOFFSET[weapon], OFFSET_LINUX);
}

stock fm_set_user_bpammo(id, weapon, amount)
{
	set_pdata_int(id, AMMOOFFSET[weapon], amount, OFFSET_LINUX)
}
 
public clcmd_zp_cs_buymenu(id)
{
	if (!is_user_alive(id)) 
		return PLUGIN_HANDLED;
		
	if(zp_get_user_nemesis(id)&&!get_pcvar_num(cvar_zp_cs_nemesis_canbuy))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_NEMESIS")
		return PLUGIN_HANDLED;
	}
	else if(zp_get_user_survivor(id)&&!get_pcvar_num(cvar_zp_cs_survivor_canbuy))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_SURVIVOR")
		return PLUGIN_HANDLED;
	}

	//if (zp_cs_buymenu_ready) 
	menu_display(id, zp_cs_buymenu)
	
	return PLUGIN_HANDLED;
}

public zp_cs_buymenu_handle(id, menu, item)
{
	new cmd[32];
	new access, callback;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
	zp_cs_submenuid[id] = str_to_num(cmd);
	
	if (zp_cs_submenuid[id] == 0) 
		return PLUGIN_HANDLED;
	
	if ((zp_get_user_zombie(id))&&(zp_cs_submenuid[id] != 8))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ONLY_HUMAH");
		return PLUGIN_HANDLED;
	}
	
	if (zp_cs_submenuid[id] == 1) 
		menu_display(id, zp_cs_buymenu_pistol, 0); 
	if (zp_cs_submenuid[id] == 2) 
		menu_display(id, zp_cs_buymenu_shotgun, 0); 
	if (zp_cs_submenuid[id] == 3) 
		menu_display(id, zp_cs_buymenu_smgun, 0); 
	if (zp_cs_submenuid[id] == 4) 
		menu_display(id, zp_cs_buymenu_rifle, 0); 
	if (zp_cs_submenuid[id] == 5) 
		menu_display(id, zp_cs_buymenu_biggun, 0);
	if (zp_cs_submenuid[id] == 9) 
		menu_display(id, zp_cs_buymenu_knife, 0); 
	if (zp_cs_submenuid[id] == 8)
	{
		if (zp_get_user_zombie(id))
		{
			zp_cs_submenuid[id] = 82 
			menu_display(id, zp_cs_buymenu_equipz, 0); 
		}
		else
		{
			zp_cs_submenuid[id] = 81 
			menu_display(id, zp_cs_buymenu_equiph, 0);
		}
		if (zp_cs_submenuid[id] == 9)
		{
			client_cmd(id, "/knife")
		}
	}
	
	if ((zp_cs_submenuid[id] == 6)||(zp_cs_submenuid[id] == 7)) 
	{
		static weapons[32], num, i, currentammo, weaponid, currentammocost, refreshHUD
		num = 0
		refreshHUD = false;
		get_user_weapons(id, weapons, num)
		
		for (i = 0; i < num; i++)
		{
			weaponid = weapons[i]
			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))
			{	
				currentammo = fm_get_user_bpammo(id, weaponid) 
				currentammocost = AMMOCOST[weaponid]; 
				if (zp_cs_buytime_passed) currentammocost = currentammocost * get_pcvar_num(cvar_zp_cs_buytime_ammo_mult); 
				
				while((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]>=currentammocost))
				{
					currentammo += BUYAMMO[weaponid] 
					ExecuteHamB(Ham_GiveAmmo, id, BUYAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])
					zp_cs_player_money[id] -= currentammocost; 
					refreshHUD = true;
				}
				if ((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]<currentammocost)) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id)
					write_byte(5);
					message_end();
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY"); 
				}
				if (refreshHUD) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
					write_long(zp_cs_player_money[id]);
					write_byte(1); 
					message_end();
					
					engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM)
				}
			}
		}	
	}	
	return PLUGIN_HANDLED;
}


public  zp_cs_subbuymenu_handle(id, menu, item)
{
	new cmd[32]; 
	cmd [0] = '-';
	new access, callback;
 
	menu_item_getinfo(menu, item, access, cmd, charsmax(cmd),_,_, callback); 
	
	if (cmd[0]=='-') return PLUGIN_HANDLED;
 
	new strtemp[100]; 
	new itemcost;
	
	if (strfind(cmd, "do_nothing") != 0) 
	for (new i=0;i<99;i++) 
	{	
		if (zp_cs_submenuid[id] == 1)
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 2)
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 3)
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 4)
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 5)
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 81)
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 82)
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp , 32)
			
		if (strfind(cmd, strtemp) == 0)
		{					
			if (zp_cs_submenuid[id] == 1)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
			if (zp_cs_submenuid[id] == 2)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
			if (zp_cs_submenuid[id] == 3)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
			if (zp_cs_submenuid[id] == 4)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
			if (zp_cs_submenuid[id] == 5)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
			if (zp_cs_submenuid[id] == 81)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])
			if (zp_cs_submenuid[id] == 82)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i])
				
			if (zp_cs_buytime_passed) 
			{
				if (zp_cs_submenuid[id] == 1)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)
				if (zp_cs_submenuid[id] == 2)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)
				if (zp_cs_submenuid[id] == 3)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)
				if (zp_cs_submenuid[id] == 4)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)
				if (zp_cs_submenuid[id] == 5)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)
				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))
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_gren_mult)
			}
					
				
			if (zp_cs_player_money[id]  < itemcost) //check if player has enough money
			{
				message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id) //HUD
				write_byte(5);
				message_end();
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY")
				return PLUGIN_HANDLED;				
			}
			else break; 
		}
	}
			
	if (strfind(cmd, "zp_cs_buy") == 0) 
	{
		if ((user_has_weapon(id, CSW_HEGRENADE))&&(strfind(cmd, "zp_cs_buy_hegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_HEGRENADE)>=MAXBPAMMO[CSW_HEGRENADE]) 
			{
				if ((zp_get_user_zombie(id))||(zp_get_user_nemesis(id))) client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NOMORE_INFECTGREN")
					else client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NAPALM")
				
				return PLUGIN_HANDLED;
			}
			else if (zp_get_user_zombie(id))
				if (infbombused>=get_pcvar_num(cvar_infbomblimit))
				{
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_INFECTGREN")
					return PLUGIN_HANDLED;
				}
				else infbombused++;
			
		if ((user_has_weapon(id, CSW_FLASHBANG))&&(strfind(cmd, "zp_cs_buy_flashbang") == 0))
			if (fm_get_user_bpammo(id, CSW_FLASHBANG)>=MAXBPAMMO[CSW_FLASHBANG]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FREEZE")
			
				return PLUGIN_HANDLED;
			}
		if ((user_has_weapon(id, CSW_SMOKEGRENADE))&&(strfind(cmd, "zp_cs_buy_smokegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_SMOKEGRENADE)>=MAXBPAMMO[CSW_SMOKEGRENADE]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FLARES")
				
				return PLUGIN_HANDLED;
			}
		replace(cmd,charsmax(cmd),"zp_cs_buy_","weapon_")
		if ((strfind(cmd, "flashbang") == -1)&&(strfind(cmd, "hegrenade") == -1)&&(strfind(cmd, "smokegrenade") == -1)) 
			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)) 
				drop_weapons(id, 2);
			else
				drop_weapons(id, 1);
			
		fm_give_item(id, cmd);
		replace(cmd,charsmax(cmd),"weapon_","zp_cs_buy_")
	}
	
	
	if (strfind(cmd, "zp_cs_HEVsuit") == 0)
	{	static Float:armor
		pev(id, pev_armorvalue, armor)
		if (armor >= 100.0) 
		{
			client_print(id, print_center, "%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_ARMOR")
			return PLUGIN_HANDLED;
		}
		set_pev(id, pev_armorvalue, 100.0)
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id)
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM) 
	}
		
	
	if (strfind(cmd, "zp_cs_moarHEVsuit") == 0)
	{	
		static Float:armor
		pev(id, pev_armorvalue, armor) 
		armor+=100.0; 
		set_pev(id, pev_armorvalue, armor) 
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id) 
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	
	if (strfind(cmd, "zp_cs_nightvision") == 0) 
		if (!zp_get_user_nightvision(id))
			zp_force_buy_extra_item(id,0,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NIGHTVISION");
			return  PLUGIN_HANDLED;
		}
		
	if (strfind(cmd, "zp_cs_antidote") == 0) 
		if (antidoteused<get_pcvar_num(cvar_antidotelimit))
			if (!zp_disinfect_user(id)) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_ANTIDOTE");
				return  PLUGIN_HANDLED;
			}
			else antidoteused++;
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_ANTIDOTE");
			return  PLUGIN_HANDLED;
		}
		
		
	if (strfind(cmd, "zp_cs_zombie_madness") == 0) 
		if (madnessused<get_pcvar_num(cvar_madnesslimit))
			zp_force_buy_extra_item(id,2,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_MADNESS");
			return  PLUGIN_HANDLED;
		}
	
	if (strfind(cmd, "zp_cs_") != 0) 
	{
		new temp_itemid=zp_get_extra_item_id(cmd);
		if (temp_itemid>-1)
			(zp_force_buy_extra_item(id,temp_itemid,1))
		else
		{
			client_print(id, print_chat, "[zp_cs_buymenu]: ERROR! ITEM %s NOT FOUND!",cmd)
		}
	}
		
	if (strfind(cmd, "do_nothing") == 0) client_print(id, print_chat, "[zp_cs_buymenu]: This item does nothing.") 
	
	zp_cs_player_money[id] -= itemcost;
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
		
	return PLUGIN_HANDLED;
}

public ham_PlayerSpawn_Post(id)
{
	if (!task_exists(id+TASK_RESTORE_MONEY)) set_task(0.5,"restore_player_money",id+TASK_RESTORE_MONEY)
}

public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (/*attacker<1||attacker>g_maxplayers||*/victim == attacker||!is_user_connected(attacker))
		return HAM_IGNORED;
		
	zp_cs_damage[attacker][victim]+=damage
	
	if (zp_get_user_survivor(attacker))
	{
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_s_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	else if (zp_get_user_zombie(attacker)||zp_get_user_nemesis(attacker))
	{
		static Float:armor
		pev(victim, pev_armorvalue, armor)
		if (armor < 36.0) set_task(0.1, "zp_cs_hevsuitstatusiconblink", victim);
		if (armor < 1.0) set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		if (/*!zp_get_user_nemesis(attacker)||*/zp_get_user_survivor(victim))
		{
			if (!zp_get_user_nemesis(attacker))
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_z_income_cash_rate);
			else
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_n_income_cash_rate);
				
				
			if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
				zp_cs_player_money[attacker]=zp_cs_moneymax; 
				
			message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
			write_long(zp_cs_player_money[attacker]);
			write_byte(1);
			message_end();

			return HAM_IGNORED;
		}
	}
	else
	{		
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_h_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public ham_PlayerKilled(victim, attacker, shouldgib)
{
	if (/*attacker<1||attacker>g_maxplayers||*/attacker==victim||!is_user_connected(attacker)) return HAM_IGNORED;
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else if (zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	}	
	else if (zp_get_user_survivor(attacker)) 
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_money_killbonus))*zp_cs_s_income_cash_rate);
	else 
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_money_killbonus);
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		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)
		zp_cs_player_moneybonus[victim]+=get_pcvar_num(cvar_zp_cs_deathmoneybonus)
	}

	if (!task_exists(attacker+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",attacker+TASK_RESTORE_MONEY)
	
	return HAM_IGNORED;
}

public zp_user_humanized_pre(id,survivor)
{
	if (survivor)
		menu_cancel(id);
		
	return PLUGIN_CONTINUE;
}

public message_DeathMsg()
{	
	if (!get_pcvar_num(cvar_zp_cs_killassist_enabled))
		return PLUGIN_CONTINUE;
		
	new attacker = read_data(1)
	new victim = read_data(2)
	new headshot = read_data(3)
	new assistant_id=0
	new Float: assistant_damage
	new FragBonus
	new MoneyBonus
	static weapon_name[32], weapon_name_full[32]
	
	if (zp_get_user_zombie(attacker))
	{
		assistant_damage=zp_cs_killassist_mindamage_z
		FragBonus=zp_zombie_frags_for_infect
		MoneyBonus=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else
	{
		assistant_damage=zp_cs_killassist_mindamage_h
		FragBonus=zp_human_frags_for_kill
		MoneyBonus=get_pcvar_num(cvar_zp_cs_money_killbonus)
	}
		
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((is_user_connected(id))&&(id!=attacker)&&(zp_cs_damage[id][victim]>=assistant_damage)&&(zp_get_user_zombie(id)==zp_get_user_zombie(attacker)))
		{
			assistant_damage=zp_cs_damage[id][victim]
			assistant_id=id
		}
		zp_cs_damage[id][victim]=0.0
	}
	
	if (!assistant_id)
		return PLUGIN_CONTINUE
		
	static attacker_name[32], attacker_name_len, assistant_id_name[32], assistant_id_name_len
			
	set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+FragBonus))
	zp_cs_player_moneybonus[assistant_id]+=MoneyBonus
		
	attacker_name_len = get_user_name(attacker, attacker_name, charsmax(attacker_name))
	assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
	attacker_name=PlayerOldName[attacker]
	if(attacker_name_len < 14)
	{
		formatex(attacker_name, attacker_name_len, "%s", attacker_name)
		formatex(assistant_id_name, 28-attacker_name_len, "%s", assistant_id_name)
	}	
	else if(assistant_id_name_len < 14)
	{
		formatex(attacker_name, 28-assistant_id_name_len, "%s", attacker_name)
		formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
	}
	else
	{
		formatex(attacker_name, 13, "%s", attacker_name)
		formatex(assistant_id_name, 13, "%s", assistant_id_name)
	}
	formatex(attacker_name, charsmax(attacker_name), "%s + %s", attacker_name, assistant_id_name)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_user_info(attacker, "name", attacker_name)
	set_pcvar_num(cvar_amx_mode,temp1)
	
	if (zp_get_user_zombie(assistant_id))
	{
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
	}
		
	set_task(0.1,"update_scoreboard",assistant_id)
	
	if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	
	read_data(4, weapon_name, charsmax(weapon_name))
	if (equal(weapon_name,"grenade"))
		weapon_name="hegrenade"
	formatex(weapon_name_full, charsmax(weapon_name_full), "weapon_%s", weapon_name)
	
	new arg[4]
	arg[0] = attacker
	arg[1] = victim
	arg[2] = headshot
	arg[3] = get_weaponid(weapon_name_full)

	set_task(0.1, "zp_cs_kill_assist", 0, arg, 4)
		
	return PLUGIN_HANDLED	
}

public zp_cs_kill_assist(arg[])
{
	static weapon_name[32]
	get_weaponname(arg[3], weapon_name, charsmax(weapon_name))
	replace(weapon_name, charsmax(weapon_name), "weapon_", "")
	
	message_begin(MSG_ALL, g_msgDeathMsg)
	write_byte(arg[0])
	write_byte(arg[1])
	write_byte(arg[2])
	write_string(weapon_name)
	message_end()
	
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	set_user_info(arg[0],"name",PlayerOldName[arg[0]])
	set_pcvar_num(cvar_amx_mode,temp1)
}

public zp_user_infected_pre(id,infector,nemesis)
{
	if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
	{
		new assistant_id=0
		new Float: assistant_damage = zp_cs_killassist_mindamage_z
		
		for (new i=1;i<=g_maxplayers;i++)
		{
			if ((is_user_connected(i))&&(i!=infector)&&(zp_cs_damage[i][id]>=assistant_damage)&&(zp_get_user_zombie(i)))
			{
				assistant_damage=zp_cs_damage[i][id]
				assistant_id=i
			}
			zp_cs_damage[i][id]=0.0
		}
	
		if (!assistant_id)
			return PLUGIN_CONTINUE
		
		static infector_name[32], infector_name_len, assistant_id_name[32], assistant_id_name_len
			
		set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+zp_zombie_frags_for_infect))
		zp_cs_player_moneybonus[assistant_id]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		
		infector_name_len = get_user_name(infector, infector_name, charsmax(infector_name))
		assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
		infector_name=PlayerOldName[infector]
		if(infector_name_len < 14)
		{
			formatex(infector_name, infector_name_len, "%s", infector_name)
			formatex(assistant_id_name, 28-infector_name_len, "%s", assistant_id_name)
		}	
		else if(assistant_id_name_len < 14)
		{
			formatex(infector_name, 28-assistant_id_name_len, "%s", infector_name)
			formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
		}
		else
		{
			formatex(infector_name, 13, "%s", infector_name)
			formatex(assistant_id_name, 13, "%s", assistant_id_name)
		}
		formatex(infector_name, charsmax(infector_name), "%s + %s", infector_name, assistant_id_name)
		set_msg_block(g_msgSayText, BLOCK_ONCE)
		new temp1 = get_pcvar_num(cvar_amx_mode)
		set_pcvar_num(cvar_amx_mode,0)
		set_user_info(infector, "name", infector_name)
		set_pcvar_num(cvar_amx_mode,temp1)
	
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
		
		set_task(0.1,"update_scoreboard",assistant_id)
		
		if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	}
	
	if (zp_get_user_nemesis(id)||(infector!=0)) 
		return PLUGIN_CONTINUE;
	
	static strtemp1[100],strtemp2[100], weapons[32], num, i
	num = 0
	get_user_weapons(id, weapons, num)
		
	for (i = 0; i < num; i++)
	{
		strtemp1 = ""
		get_weaponname(weapons[i],strtemp1,charsmax(strtemp1));
		replace(strtemp1,charsmax(strtemp1),"weapon_","zp_cs_buy_")
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
		}
	}
	
	if (!task_exists(id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",id+TASK_RESTORE_MONEY)
		
	client_print(id,print_chat,"%L", LANG_PLAYER, "BUYMENU_MONEYBACK")
	
	return PLUGIN_CONTINUE;
}

public zp_user_infected_post(id, infector)
{			
	if ((infector<=g_maxplayers)&&(infector>0)&&(id!=infector))
	{
		if (!zp_get_user_nemesis(infector))
			zp_cs_player_moneybonus[infector]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		else
			zp_cs_player_moneybonus[infector]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	
		if (!task_exists(infector+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",infector+TASK_RESTORE_MONEY)
			
		
		if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
		{	
			new temp1 = get_pcvar_num(cvar_amx_mode)
			set_pcvar_num(cvar_amx_mode,0)
			set_msg_block(g_msgSayText, BLOCK_ONCE)
			set_user_info(infector,"name",PlayerOldName[infector])
			set_pcvar_num(cvar_amx_mode,temp1)
		}
	}
		
	if ((id<1)||(id>g_maxplayers))
		return PLUGIN_CONTINUE;
		
	menu_cancel(id)
	set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
	
	return PLUGIN_CONTINUE;
}

public restore_player_money(id)
{
	id-=TASK_RESTORE_MONEY;
	
	if (is_user_bot(id))
		set_pdata_int(id,OFFSET_MONEY,16000,OFFSET_LINUX)
	else 
		set_pdata_int(id,OFFSET_MONEY,0,OFFSET_LINUX)
		
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	zp_cs_player_money[id]+=zp_cs_player_moneybonus[id];
	if (zp_cs_player_money[id] > zp_cs_moneymax) zp_cs_player_money[id]=zp_cs_moneymax; 
	if (zp_cs_player_money[id] < 0) zp_cs_player_money[id]=0; 
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	
	zp_cs_player_moneybonus[id]=0;
}

public fm_strip_user_weapons(id)
{
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
	if (!pev_valid(ent)) return;
	
	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, id)
	engfunc(EngFunc_RemoveEntity, ent)
}

public zp_cs_hevsuitstatusiconshow(id)
{	
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(1)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconhide(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(0)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconblink(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(2)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

13 Apr 2019, 13:44

Acum nu-mi mai afiseaza meniul din pluginul de shop. La prima modificare a ta, imi arata tot, doar ca nu functiona sa cumpar nimic, nu-mi lua bani doar imi aparea in chat scriul ala de la radio cu sunetele alea.
Acum nu mai pot sa intru deloc in shop.

Ma gandeam ca poate este din cauza altui plugin, le-am dezativat pe toate, insa nimic.. :hand_to_chin: .
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

13 Apr 2019, 14:03

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>


#define PLUGIN "CS-like Buymenu for ZP"
#define VERSION "1.7"
#define AUTHOR "Sonic Son'edit"

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)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)

const PEV_ADDITIONAL_AMMO = pev_iuser1

const OFFSET_AWM_AMMO  = 377 
const OFFSET_SCOUT_AMMO = 378
const OFFSET_PARA_AMMO = 379
const OFFSET_FAMAS_AMMO = 380
const OFFSET_M3_AMMO = 381
const OFFSET_USP_AMMO = 382
const OFFSET_FIVESEVEN_AMMO = 383
const OFFSET_DEAGLE_AMMO = 384
const OFFSET_P228_AMMO = 385
const OFFSET_GLOCK_AMMO = 386
const OFFSET_FLASH_AMMO = 387
const OFFSET_HE_AMMO = 388
const OFFSET_SMOKE_AMMO = 389
const OFFSET_C4_AMMO = 390
const OFFSET_CLIPAMMO = 51
const OFFSET_TEAM = 114
const OFFSET_DEATHS = 444
const OFFSET_MONEY = 115

//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
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,
 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 }
			
new const BUYAMMO[] = { -1, 	13,		-1,	 30,		 -1,		 7,		 -1, 		12, 			30,		 -1, 		30, 		20, 			12,		 20, 			30, 		30,
 		12, 		30,			10, 		30, 		50,		 8, 		30, 		30, 			20, 		-1, 			7, 		30, 			30, 	-1,	 50 }

new const MAXBPAMMO[] = { -1,	52, 		-1, 	90,		 1,		 32,		 1,		 100, 			90,		 1, 		120, 		100, 			100, 		90, 			90, 		90,
 		100, 		120,			30, 		120, 		200, 		32, 		90,		120, 			90, 		2, 			35, 		90, 			90, 	-1,	 100 }
		
new const AMMOCOST[] = { 1, 	30, 		-1, 	-1, 		-1, 		65, 		-1, 		25, 			60,	 	-1, 		50, 		20, 			25, 		85, 			60,
 		60, 		25, 		20,			125, 		20, 		95,		 65, 		60, 		20, 			80, 		-1, 			40, 		60, 			80, 	-1, 	50 }
		
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
			"556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
			"556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }
		
const OFFSET_LINUX = 5 
const OFFSET_LINUX_WEAPONS = 4 

new const sound_buyammo[] = "items/9mmclip1.wav"

new g_maxplayers

new Lang_Roundend_msg[3][] = {"ROUNDEND_SURVIVED","ROUNDEND_WIN_ZOMBIE","ROUNDEND_WIN_HUMAN"};

const TASK_BUYTIME_END = 100;
const TASK_RESTORE_MONEY = 200;
const TASK_KILL_ASSIST = 300;

new cvar_zp_cs_h_income_cash_rate;
new cvar_zp_cs_z_income_cash_rate;
new cvar_zp_cs_n_income_cash_rate
new cvar_zp_cs_s_income_cash_rate
new cvar_zp_cs_buytime;
new cvar_zp_cs_startmoney;
new cvar_zp_cs_restartround;
new cvar_zp_cs_moneymax;
new cvar_zp_cs_money_killbonus
new cvar_zp_cs_infectmoneybonus
new cvar_zp_cs_deathmoneybonus
new cvar_zp_cs_nemesis_canbuy
new cvar_zp_cs_survivor_canbuy
new cvar_antidotelimit, cvar_madnesslimit, cvar_infbomblimit, antidoteused, madnessused, infbombused
new cvar_amx_mode
	
new cvar_zp_cs_money_human_win
new cvar_zp_cs_money_human_lose
new cvar_zp_cs_money_human_draw
new cvar_zp_cs_money_zombie_win
new cvar_zp_cs_money_zombie_lose
new cvar_zp_cs_money_zombie_draw
new cvar_zp_cs_drawround_frag_h
new cvar_zp_cs_drawround_frag_z
new cvar_zp_cs_drawround_death_h
new cvar_zp_cs_drawround_death_z
new cvar_zp_cs_zombie_nodeathscore
new cvar_zp_cs_killassist_enabled
new cvar_zp_cs_killassist_mindmg_h
new cvar_zp_cs_killassist_mindmg_z
new cvar_zp_human_frags_for_kill
new cvar_zp_zombie_frags_for_infect
new cvar_zp_zombie_infect_health

new cvar_zp_cs_buytime_pistol_mult; 
new cvar_zp_cs_buytime_shotgun_mult;
new cvar_zp_cs_buytime_smgun_mult;
new cvar_zp_cs_buytime_rifle_mult;
new cvar_zp_cs_buytime_biggun_mult;
new cvar_zp_cs_buytime_gren_mult;
new cvar_zp_cs_buytime_ammo_mult;

new Float: zp_cs_h_income_cash_rate;
new Float: zp_cs_z_income_cash_rate;
new Float: zp_cs_n_income_cash_rate
new Float: zp_cs_s_income_cash_rate
new zp_cs_moneymax;
new zp_cs_player_money[33]
new zp_cs_player_moneybonus[33]
new bool:zp_cs_buytime_passed;
new Float: zp_cs_damage[33][33] //[attacker][victim]
new Float: zp_cs_killassist_mindamage_h
new Float: zp_cs_killassist_mindamage_z
new zp_human_frags_for_kill
new zp_zombie_frags_for_infect
new Float: zp_zombie_infect_health

new g_MsgMoney, g_msgMoneyBlink, g_msgIconStatus, g_msgScoreInfo, g_msgSayText, g_msgDeathMsg, g_MsgSyncObj1, g_MsgSyncObj2;
new PlayerOldName[33][32]

new const sound_buysuit[] = "items/tr_kevlar.wav" 

new zp_cs_buymenu;	
new zp_cs_submenuid[33];
new zp_cs_buymenu_pistol;
new zp_cs_buymenu_shotgun;
new zp_cs_buymenu_smgun;
new zp_cs_buymenu_rifle;
new zp_cs_buymenu_biggun;
new zp_cs_buymenu_knife;
new zp_cs_buymenu_equiph;
new zp_cs_buymenu_equipz;

//new bool:zp_cs_buymenu_ready=false;

new cvar_zp_cs_buymenu_pistol_name[99]; 
new cvar_zp_cs_buymenu_pistol_cost[99]; 
new cvar_zp_cs_buymenu_pistol_todo[99]; 
new cvar_zp_cs_buymenu_shotgun_name[99];
new cvar_zp_cs_buymenu_shotgun_cost[99]; 
new cvar_zp_cs_buymenu_shotgun_todo[99];
new cvar_zp_cs_buymenu_smgun_name[99]; 
new cvar_zp_cs_buymenu_smgun_cost[99];
new cvar_zp_cs_buymenu_smgun_todo[99];
new cvar_zp_cs_buymenu_rifle_name[99]; 
new cvar_zp_cs_buymenu_rifle_cost[99];
new cvar_zp_cs_buymenu_rifle_todo[99];
new cvar_zp_cs_buymenu_biggun_name[99]; 
new cvar_zp_cs_buymenu_biggun_cost[99];
new cvar_zp_cs_buymenu_biggun_todo[99];
new cvar_zp_cs_buymenu_equiph_name[99]; 
new cvar_zp_cs_buymenu_equiph_cost[99];
new cvar_zp_cs_buymenu_equiph_todo[99];
new cvar_zp_cs_buymenu_equipz_name[99]; 
new cvar_zp_cs_buymenu_equipz_cost[99];
new cvar_zp_cs_buymenu_equipz_todo[99];
 
public plugin_precache()
{
	precache_sound(sound_buyammo)
	precache_sound(sound_buysuit)
}
 
public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR)
	
	register_dictionary("zp_cs_buymenu.txt")
	
	g_MsgMoney = get_user_msgid("Money")
	g_msgMoneyBlink = get_user_msgid("BlinkAcct")
	g_msgIconStatus = get_user_msgid("StatusIcon") 
	g_msgScoreInfo = get_user_msgid("ScoreInfo")
	g_msgSayText = get_user_msgid("SayText")
	g_msgDeathMsg = get_user_msgid("DeathMsg")
	g_MsgSyncObj1 = CreateHudSyncObj()
	g_MsgSyncObj2 = CreateHudSyncObj()
	
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
	
	register_message(g_msgDeathMsg, "message_DeathMsg")
	
	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
	RegisterHam(Ham_Killed, "player", "ham_PlayerKilled")
	
	register_forward(FM_ClientConnect, "fw_ClientConnect_Post",1)
	register_forward(FM_ClientDisconnect, "fw_ClientDisconnect")
	
	register_clcmd("buy", "clcmd_zp_cs_buymenu") 
	register_clcmd("zp_cs_buymenu", "clcmd_zp_cs_buymenu") 
	
	cvar_zp_cs_h_income_cash_rate = register_cvar("zp_cs_human_income_cash_rate", "2.0")
	cvar_zp_cs_z_income_cash_rate = register_cvar("zp_cs_zombie_income_cash_rate", "5.0")
	cvar_zp_cs_n_income_cash_rate = register_cvar("zp_cs_nemesis_income_cash_rate", "0.5")
	cvar_zp_cs_s_income_cash_rate = register_cvar("zp_cs_survivor_income_cash_rate", "0.2")
	cvar_zp_cs_moneymax = register_cvar("zp_cs_moneymax", "150000")
	cvar_zp_cs_infectmoneybonus = register_cvar("zp_cs_infectmoneybonus", "1500")
	cvar_zp_cs_deathmoneybonus = register_cvar("zp_cs_deathmoneybonus", "300")
	cvar_zp_cs_money_killbonus = register_cvar("zp_cs_money_killbonus", "500")
	cvar_zp_cs_buytime = get_cvar_pointer("mp_buytime")
	cvar_zp_cs_startmoney = get_cvar_pointer("mp_startmoney")
	cvar_zp_cs_restartround = get_cvar_pointer("sv_restartround")
	cvar_zp_cs_nemesis_canbuy = register_cvar("zp_cs_nemesis_canbuy", "0")
	cvar_zp_cs_survivor_canbuy = register_cvar("zp_cs_survivor_canbuy", "0")
	cvar_antidotelimit = get_cvar_pointer("zp_extra_antidote_limit")
	cvar_madnesslimit = get_cvar_pointer("zp_extra_madness_limit")
	cvar_infbomblimit = get_cvar_pointer("zp_extra_infbomb_limit")
	cvar_zp_cs_buytime_pistol_mult = register_cvar("zp_cs_buytime_pistol_mult", "3")
	cvar_zp_cs_buytime_shotgun_mult = register_cvar("zp_cs_buytime_shotgun_mult", "3")
	cvar_zp_cs_buytime_smgun_mult = register_cvar("zp_cs_buytime_smgun_mult", "3")
	cvar_zp_cs_buytime_rifle_mult = register_cvar("zp_cs_buytime_rifle_mult", "3")
	cvar_zp_cs_buytime_biggun_mult = register_cvar("zp_cs_buytime_biggun_mult", "3")
	cvar_zp_cs_buytime_gren_mult = register_cvar("zp_cs_buytime_gren_mult", "10")
	cvar_zp_cs_buytime_ammo_mult = register_cvar("zp_cs_buytime_ammo_mult", "10");
	
	cvar_zp_cs_money_human_win = register_cvar("zp_cs_money_human_win", "10000");
	cvar_zp_cs_money_human_lose = register_cvar("zp_cs_money_human_lose", "1500");
	cvar_zp_cs_money_human_draw = register_cvar("zp_cs_money_human_draw", "7000");
	cvar_zp_cs_money_zombie_win = register_cvar("zp_cs_money_zombie_win", "5000");
	cvar_zp_cs_money_zombie_lose = register_cvar("zp_cs_money_zombie_lose", "1500");
	cvar_zp_cs_money_zombie_draw = register_cvar("zp_cs_money_zombie_draw", "-1500");
	cvar_zp_cs_drawround_frag_h = register_cvar("zp_cs_drawround_frag_h", "2");
	cvar_zp_cs_drawround_frag_z = register_cvar("zp_cs_drawround_frag_z", "-2");
	cvar_zp_cs_drawround_death_h = register_cvar("zp_cs_drawround_death_h", "0");
	cvar_zp_cs_drawround_death_z = register_cvar("zp_cs_drawround_death_z", "2");
	cvar_zp_cs_zombie_nodeathscore = register_cvar("zp_cs_zombie_nodeathscore", "1");
	cvar_zp_cs_killassist_enabled = register_cvar("zp_cs_killassist_enabled", "0")
	cvar_zp_cs_killassist_mindmg_h = register_cvar("zp_cs_killassist_mindamage_h","250.0")
	cvar_zp_cs_killassist_mindmg_z = register_cvar("zp_cs_killassist_mindamage_z","45.0")
	cvar_zp_human_frags_for_kill = get_cvar_pointer("zp_human_frags_for_kill")
	cvar_zp_zombie_frags_for_infect = get_cvar_pointer("zp_zombie_frags_for_infect")
	cvar_zp_zombie_infect_health = get_cvar_pointer("zp_zombie_infect_health")
	cvar_amx_mode = get_cvar_pointer("amx_mode")

	
	g_maxplayers = get_maxplayers()	
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		zp_cs_player_moneybonus[id]=0;
		zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
	}
	
	new strtemp[2]; 
	new strtemp2[32];
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_pistol___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_pistol_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___name";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___cost";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_shotgun___todo";
		if (i>8) 
		{
			strtemp2[21]=strtemp[0];
			strtemp2[22]=strtemp[1];
		}
		else
		{
			strtemp2[21]='0';
			strtemp2[22]=strtemp[0];
		}
		cvar_zp_cs_buymenu_shotgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_smgun___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_smgun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___name";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___cost";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_rifle___todo";
		if (i>8) 
		{
			strtemp2[19]=strtemp[0];
			strtemp2[20]=strtemp[1];
		}
		else
		{
			strtemp2[19]='0';
			strtemp2[20]=strtemp[0];
		}
		cvar_zp_cs_buymenu_rifle_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_biggun___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_biggun_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equiph___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equiph_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
	for(new i=0;i<99;i++)
	{
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___name";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_name[i] = register_cvar(strtemp2, "-");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___cost";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_cost[i] = register_cvar(strtemp2, "0");
		num_to_str(i+1, strtemp, 2)
		strtemp2 = "zp_cs_buymenu_equipz___todo";
		if (i>8) 
		{
			strtemp2[20]=strtemp[0];
			strtemp2[21]=strtemp[1];
		}
		else
		{
			strtemp2[20]='0';	
			strtemp2[21]=strtemp[0];
		}
		cvar_zp_cs_buymenu_equipz_todo[i] = register_cvar(strtemp2, "do_nothing");
	}
}


public plugin_cfg()
{
	new cfgdir[32]
	get_localinfo("amxx_configsdir",cfgdir,sizeof cfgdir)
	server_cmd("exec %s/zp_cs_buymenu.cfg", cfgdir)
	build_menu();
}

public fw_ClientConnect_Post(id)
{
 	get_user_name(id,PlayerOldName[id],31)

	console_cmd(id,"");

	if (zp_cs_player_moneybonus[id])
	{
		zp_cs_player_money[id]+=zp_cs_player_moneybonus[id]
		zp_cs_player_moneybonus[id]=0
	}

	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)

	return FMRES_IGNORED;
}

public event_round_start()
{
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO1")
	
	//zp_cs_buymenu_ready = false;
	antidoteused = 0
	madnessused = 0
	infbombused = 0
	
	zp_cs_moneymax = get_pcvar_num(cvar_zp_cs_moneymax);
	zp_cs_h_income_cash_rate = get_pcvar_float(cvar_zp_cs_h_income_cash_rate)
	zp_cs_z_income_cash_rate = get_pcvar_float(cvar_zp_cs_z_income_cash_rate)
	zp_cs_n_income_cash_rate = get_pcvar_float(cvar_zp_cs_n_income_cash_rate)
	zp_cs_s_income_cash_rate = get_pcvar_float(cvar_zp_cs_s_income_cash_rate)
	zp_cs_killassist_mindamage_h = get_pcvar_float(cvar_zp_cs_killassist_mindmg_h)
	zp_cs_killassist_mindamage_z = get_pcvar_float(cvar_zp_cs_killassist_mindmg_z)
	zp_human_frags_for_kill = get_pcvar_num(cvar_zp_human_frags_for_kill)
	zp_zombie_frags_for_infect = get_pcvar_num(cvar_zp_zombie_frags_for_infect)
	zp_zombie_infect_health = get_pcvar_float(cvar_zp_zombie_infect_health)
	
	static Float:armor
	for (new id=1;id<=g_maxplayers;id++)
	{
		if (!is_user_connected(id)) continue;
		
		menu_cancel(id);
		
		pev(id, pev_armorvalue, armor) 
		if (armor > 0.0) 
			if (armor < 36.0)
				set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
			else
				set_task(0.1, "zp_cs_hevsuitstatusiconshow", id)
	}
	
	zp_cs_buytime_passed=false;
	set_task(0.1, "build_menu");
	if (task_exists(TASK_BUYTIME_END)) remove_task(TASK_BUYTIME_END);
	set_task(60.0*get_pcvar_float(cvar_zp_cs_buytime),"rebuild_menu",TASK_BUYTIME_END);
}

public zp_round_ended(winteam)
{		
	if (get_pcvar_num(cvar_zp_cs_restartround))
		for (new id=1;id<=g_maxplayers;id++)
		{
			zp_cs_player_moneybonus[id]=0;
			zp_cs_player_money[id]=get_pcvar_num(cvar_zp_cs_startmoney)
			set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
			
			return PLUGIN_CONTINUE
		}
	
	new color[3]	
	for (new i=0;i<3;i++)
		color[i]=(255*(winteam=i));
	set_hudmessage(color[1], color[2], color[0], 0.05, 0.60, 1, 4.0, 5.0,0.1,0.2,-1)
	ShowSyncHudMsg(0,g_MsgSyncObj1, "%L", LANG_PLAYER,Lang_Roundend_msg[winteam])
	set_task(1.0,"round_results",winteam);
	
	return PLUGIN_CONTINUE
}

public round_results(winteam)
{		
	new strtemp1[16]
	new color[3]
	
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((!is_user_connected(id))||(zp_get_user_survivor(id))||(zp_get_user_nemesis(id))) continue;
		
		new MoneyBonus, FragBonus, DeathPenalty;
		if (zp_get_user_zombie(id)||(zp_get_user_nemesis(id)))
		{
			if (winteam==0)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_z)
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_z)
			}
			
			if (winteam==1)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_win)
			}
			
			if (winteam==2)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_zombie_lose)
			}
		}
		else
		{
			if (winteam==0)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_draw)
				FragBonus=get_pcvar_num(cvar_zp_cs_drawround_frag_h) 
				DeathPenalty=get_pcvar_num(cvar_zp_cs_drawround_death_h)
			}
			if (winteam==1)
			{
				color[0]=255;
				strtemp1="ROUNDEND_FAIL"		
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_lose)
			}
			if (winteam==2)
			{
				color[1]=255;
				strtemp1="ROUNDEND_WIN"
				MoneyBonus=get_pcvar_num(cvar_zp_cs_money_human_win)
			}
		}
		zp_cs_player_moneybonus[id]+=MoneyBonus
		set_pev(id, pev_frags, float(pev(id, pev_frags)+FragBonus))
		set_pdata_int(id, OFFSET_DEATHS, get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX)+DeathPenalty, OFFSET_LINUX)
		set_hudmessage(color[0], color[1], color[2], 0.05, 0.63, 2, 1.0, 3.5,0.05,0.05,-1)
		set_task(0.1,"update_scoreboard",id)
		if (winteam) ShowSyncHudMsg(id, g_MsgSyncObj2, "%L^n%L: %d", LANG_PLAYER, strtemp1, LANG_PLAYER, "ROUNDEND_MONEY", MoneyBonus)
		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)
	}
}

public update_scoreboard(id)
{		
		message_begin(MSG_BROADCAST, g_msgScoreInfo)
		write_byte(id)
		write_short(pev(id, pev_frags))
		write_short(get_pdata_int(id, OFFSET_DEATHS, OFFSET_LINUX))
		write_short(0)
		write_short(get_pdata_int(id, OFFSET_TEAM, OFFSET_LINUX))
		message_end()
}

public rebuild_menu()
{
	for (new id=1;id<=g_maxplayers;id++)
		if (!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	
			continue;		
		else
			menu_cancel(id);
		
	zp_cs_buytime_passed=true;
	build_menu();
	set_hudmessage(0, 255, 0, -1.0, 0.9, 2, 1.0, 4.5,0.1,0.1,-1)
	ShowSyncHudMsg(0, g_MsgSyncObj2, "%L", LANG_PLAYER, "BUYMENU_INFO2")
}
public build_menu()
{
	/*if (zp_cs_buymenu_ready)
	{
	menu_destroy(zp_cs_buymenu)
	menu_destroy(zp_cs_buymenu_pistol)
	menu_destroy(zp_cs_buymenu_shotgun)
	menu_destroy(zp_cs_buymenu_smgun)
	menu_destroy(zp_cs_buymenu_rifle)
	menu_destroy(zp_cs_buymenu_biggun)
	menu_destroy(zp_cs_buymenu_knife)
	menu_destroy(zp_cs_buymenu_equiph)
	menu_destroy(zp_cs_buymenu_equipz)
	}*/
		
	//register menus
	zp_cs_buymenu = menu_create("Buy Item","zp_cs_buymenu_handle")	
	zp_cs_buymenu_pistol = menu_create("Buy Handgun\R$  Cost^n(Secondary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_shotgun = menu_create("Buy Shotgun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_smgun = menu_create("Buy Sub-Machnie gun\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_rifle = menu_create("Buy Rifle\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_biggun = menu_create("Buy Heavy Weapons\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")
	zp_cs_buymenu_knife = menu_create("Knife Mod\R$  Cost^n(Primary weapon)","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equiph = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	zp_cs_buymenu_equipz = menu_create("Buy Equipemnt\R$  Cost","zp_cs_subbuymenu_handle")	
	
	new strtemp0[100];
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU1")
	menu_additem(zp_cs_buymenu, strtemp0, "1");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU2")
	menu_additem(zp_cs_buymenu, strtemp0, "2");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU3")
	menu_additem(zp_cs_buymenu, strtemp0, "3");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU4")
	menu_additem(zp_cs_buymenu, strtemp0, "4");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU5")
	menu_additem(zp_cs_buymenu, strtemp0, "5");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU6")
	menu_additem(zp_cs_buymenu, strtemp0, "6");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU7")
	menu_additem(zp_cs_buymenu, strtemp0, "7");
	formatex(strtemp0, charsmax(strtemp0), "%L^n", LANG_PLAYER, "BUYMENU_MENU8")
	menu_additem(zp_cs_buymenu, strtemp0, "8");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU9")
	menu_additem(zp_cs_buymenu, strtemp0, "9");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_MENU0")
	menu_additem(zp_cs_buymenu, strtemp0, "0");
	menu_setprop(zp_cs_buymenu, MPROP_PERPAGE, 0);
	menu_setprop(zp_cs_buymenu, MPROP_NUMBER_COLOR, "\w");

	
	new strtemp[100]; 
	new strtemp2[100];
	new strtemp3[100];
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_pistol_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i]), strtemp2, 32) 
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)), strtemp2, 32) 
		
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_pistol, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_pistol, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_shotgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_shotgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_shotgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_smgun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_smgun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_smgun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_rifle_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_rifle, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_rifle, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_biggun_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp3 , 32)
			
			if (!zp_cs_buytime_passed)
				num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i]), strtemp2, 32)
			else
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_biggun, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_biggun, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equiph_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i]), strtemp2, 32)
						
			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))
				num_to_str((get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])*get_pcvar_num(cvar_zp_cs_buytime_gren_mult)), strtemp2, 32)
			
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equiph, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equiph, MPROP_EXITNAME, strtemp0)
	for(new i=0;i<99;i++)
	{
		get_pcvar_string(cvar_zp_cs_buymenu_equipz_name[i], strtemp , 32)
		if (strtemp[0] != '-')
		{
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp3 , 32)
			num_to_str(get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i]), strtemp2, 32)
			add(strtemp,sizeof strtemp, "\R\y",4)
			add(strtemp,sizeof strtemp, strtemp2, sizeof strtemp2)
			menu_additem(zp_cs_buymenu_equipz, strtemp, strtemp3)
		}
	}	
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NUMBER_COLOR, "\w");
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_BACK")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_BACKNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_NEXT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_NEXTNAME, strtemp0)
	formatex(strtemp0, charsmax(strtemp0), "%L", LANG_PLAYER, "BUYMENU_EXIT")
	menu_setprop(zp_cs_buymenu_equipz, MPROP_EXITNAME, strtemp0)
		
	//zp_cs_buymenu_ready=true;
}

stock fm_give_item(id, const item[]) 
{	
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
	if (!pev_valid(ent))
		return;
	
	static Float:originF[3]
	pev(id, pev_origin, originF)
	set_pev(ent, pev_origin, originF)
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)
	
	static save
	save = pev(ent, pev_solid)
	dllfunc(DLLFunc_Touch, ent, id)
	if (pev(ent, pev_solid) != save)
		return;
	
	engfunc(EngFunc_RemoveEntity, ent)
}

stock drop_weapons(id, dropwhat)
{
	static weapons[32], num, i, weaponid
	num = 0
	get_user_weapons(id, weapons, num)

	for (i = 0; i < num; i++)
	{
		weaponid = weapons[i]
		
		if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			static wname[32], weapon_ent
			get_weaponname(weaponid, wname, sizeof wname - 1)
			weapon_ent = fm_find_ent_by_owner(-1, wname, id);
			
			set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, fm_get_user_bpammo(id, weaponid))
			
			engclient_cmd(id, "drop", wname)
			fm_set_user_bpammo(id, weaponid, 0)
		}
	}
}

stock fm_find_ent_by_owner(entity, const classname[], owner) 
{
	while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
	
	return entity;
}

stock fm_get_user_bpammo(id, weapon)
{
	return get_pdata_int(id, AMMOOFFSET[weapon], OFFSET_LINUX);
}

stock fm_set_user_bpammo(id, weapon, amount)
{
	set_pdata_int(id, AMMOOFFSET[weapon], amount, OFFSET_LINUX)
}
 
public clcmd_zp_cs_buymenu(id)
{
	if (!is_user_alive(id)) 
		return PLUGIN_HANDLED;
		
	if(zp_get_user_nemesis(id)&&!get_pcvar_num(cvar_zp_cs_nemesis_canbuy))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_NEMESIS")
		return PLUGIN_HANDLED;
	}
	else if(zp_get_user_survivor(id)&&!get_pcvar_num(cvar_zp_cs_survivor_canbuy))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_SURVIVOR")
		return PLUGIN_HANDLED;
	}
	else //if (zp_cs_buymenu_ready)
	menu_display(id, zp_cs_buymenu, 0)
	
	return PLUGIN_HANDLED;
}

public zp_cs_buymenu_handle(id, menu, item)
{
	new cmd[32];
	new access, callback;
	menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
	zp_cs_submenuid[id] = str_to_num(cmd);
	
	if (zp_cs_submenuid[id] == 0) 
		return PLUGIN_HANDLED;
	
	if ((zp_get_user_zombie(id))&&(zp_cs_submenuid[id] != 8))
	{
		client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ONLY_HUMAH");
		return PLUGIN_HANDLED;
	}
	
	if (zp_cs_submenuid[id] == 1) 
		menu_display(id, zp_cs_buymenu_pistol, 0); 
	if (zp_cs_submenuid[id] == 2) 
		menu_display(id, zp_cs_buymenu_shotgun, 0); 
	if (zp_cs_submenuid[id] == 3) 
		menu_display(id, zp_cs_buymenu_smgun, 0); 
	if (zp_cs_submenuid[id] == 4) 
		menu_display(id, zp_cs_buymenu_rifle, 0); 
	if (zp_cs_submenuid[id] == 5) 
		menu_display(id, zp_cs_buymenu_biggun, 0);
	if (zp_cs_submenuid[id] == 9) 
		menu_display(id, zp_cs_buymenu_knife, 0); 
	if (zp_cs_submenuid[id] == 8)
	{
		if (zp_get_user_zombie(id))
		{
			zp_cs_submenuid[id] = 82 
			menu_display(id, zp_cs_buymenu_equipz, 0); 
		}
		else
		{
			zp_cs_submenuid[id] = 81 
			menu_display(id, zp_cs_buymenu_equiph, 0);
		}
		if (zp_cs_submenuid[id] == 9)
		{
			client_cmd(id, "/knife")
		}
	}
	
	if ((zp_cs_submenuid[id] == 6)||(zp_cs_submenuid[id] == 7)) 
	{
		static weapons[32], num, i, currentammo, weaponid, currentammocost, refreshHUD
		num = 0
		refreshHUD = false;
		get_user_weapons(id, weapons, num)
		
		for (i = 0; i < num; i++)
		{
			weaponid = weapons[i]
			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))
			{	
				currentammo = fm_get_user_bpammo(id, weaponid) 
				currentammocost = AMMOCOST[weaponid]; 
				if (zp_cs_buytime_passed) currentammocost = currentammocost * get_pcvar_num(cvar_zp_cs_buytime_ammo_mult); 
				
				while((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]>=currentammocost))
				{
					currentammo += BUYAMMO[weaponid] 
					ExecuteHamB(Ham_GiveAmmo, id, BUYAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])
					zp_cs_player_money[id] -= currentammocost; 
					refreshHUD = true;
				}
				if ((currentammo < MAXBPAMMO[weaponid])&&(zp_cs_player_money[id]<currentammocost)) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id)
					write_byte(5);
					message_end();
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY"); 
				}
				if (refreshHUD) 
				{
					message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
					write_long(zp_cs_player_money[id]);
					write_byte(1); 
					message_end();
					
					engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM)
				}
			}
		}	
	}	
	return PLUGIN_HANDLED;
}


public zp_cs_subbuymenu_handle(id, menu, item)
{
	new cmd[32]; 
	cmd [0] = '-';
	new access, callback;
 
	menu_item_getinfo(menu, item, access, cmd, charsmax(cmd),_,_, callback); 
	
	if (cmd[0]=='-') return PLUGIN_HANDLED;
 
	new strtemp[100]; 
	new itemcost;
	
	if (strfind(cmd, "do_nothing") != 0) 
	for (new i=0;i<99;i++) 
	{	
		if (zp_cs_submenuid[id] == 1)
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 2)
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 3)
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 4)
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 5)
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 81)
			get_pcvar_string(cvar_zp_cs_buymenu_equiph_todo[i], strtemp , 32)
	 	if (zp_cs_submenuid[id] == 82)
			get_pcvar_string(cvar_zp_cs_buymenu_equipz_todo[i], strtemp , 32)
			
		if (strfind(cmd, strtemp) == 0)
		{					
			if (zp_cs_submenuid[id] == 1)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
			if (zp_cs_submenuid[id] == 2)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
			if (zp_cs_submenuid[id] == 3)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
			if (zp_cs_submenuid[id] == 4)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
			if (zp_cs_submenuid[id] == 5)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
			if (zp_cs_submenuid[id] == 81)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equiph_cost[i])
			if (zp_cs_submenuid[id] == 82)
				itemcost = get_pcvar_num(cvar_zp_cs_buymenu_equipz_cost[i])
				
			if (zp_cs_buytime_passed) 
			{
				if (zp_cs_submenuid[id] == 1)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_pistol_mult)
				if (zp_cs_submenuid[id] == 2)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_shotgun_mult)
				if (zp_cs_submenuid[id] == 3)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_smgun_mult)
				if (zp_cs_submenuid[id] == 4)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_rifle_mult)
				if (zp_cs_submenuid[id] == 5)
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_biggun_mult)
				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))
					itemcost = itemcost * get_pcvar_num(cvar_zp_cs_buytime_gren_mult)
			}
					
				
			if (zp_cs_player_money[id]  < itemcost) //check if player has enough money
			{
				message_begin(MSG_ONE_UNRELIABLE, g_msgMoneyBlink, _, id) //HUD
				write_byte(5);
				message_end();
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NO_MONEY")
				return PLUGIN_HANDLED;				
			}
			else break; 
		}
	}
			
	if (strfind(cmd, "zp_cs_buy") == 0) 
	{
		if ((user_has_weapon(id, CSW_HEGRENADE))&&(strfind(cmd, "zp_cs_buy_hegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_HEGRENADE)>=MAXBPAMMO[CSW_HEGRENADE]) 
			{
				if ((zp_get_user_zombie(id))||(zp_get_user_nemesis(id))) client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_NOMORE_INFECTGREN")
					else client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NAPALM")
				
				return PLUGIN_HANDLED;
			}
			else if (zp_get_user_zombie(id))
				if (infbombused>=get_pcvar_num(cvar_infbomblimit))
				{
					client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_INFECTGREN")
					return PLUGIN_HANDLED;
				}
				else infbombused++;
			
		if ((user_has_weapon(id, CSW_FLASHBANG))&&(strfind(cmd, "zp_cs_buy_flashbang") == 0))
			if (fm_get_user_bpammo(id, CSW_FLASHBANG)>=MAXBPAMMO[CSW_FLASHBANG]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FREEZE")
			
				return PLUGIN_HANDLED;
			}
		if ((user_has_weapon(id, CSW_SMOKEGRENADE))&&(strfind(cmd, "zp_cs_buy_smokegrenade") == 0))
			if (fm_get_user_bpammo(id, CSW_SMOKEGRENADE)>=MAXBPAMMO[CSW_SMOKEGRENADE]) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_FLARES")
				
				return PLUGIN_HANDLED;
			}
		replace(cmd,charsmax(cmd),"zp_cs_buy_","weapon_")
		if ((strfind(cmd, "flashbang") == -1)&&(strfind(cmd, "hegrenade") == -1)&&(strfind(cmd, "smokegrenade") == -1)) 
			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)) 
				drop_weapons(id, 2);
			else
				drop_weapons(id, 1);
			
		fm_give_item(id, cmd);
		replace(cmd,charsmax(cmd),"weapon_","zp_cs_buy_")
	}
	
	
	if (strfind(cmd, "zp_cs_HEVsuit") == 0)
	{	static Float:armor
		pev(id, pev_armorvalue, armor)
		if (armor >= 100.0) 
		{
			client_print(id, print_center, "%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_ARMOR")
			return PLUGIN_HANDLED;
		}
		set_pev(id, pev_armorvalue, 100.0)
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id)
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id)
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM) 
	}
		
	
	if (strfind(cmd, "zp_cs_moarHEVsuit") == 0)
	{	
		static Float:armor
		pev(id, pev_armorvalue, armor) 
		armor+=100.0; 
		set_pev(id, pev_armorvalue, armor) 
		set_task(0.1, "zp_cs_hevsuitstatusiconblink", id) 
		set_task(1.0, "zp_cs_hevsuitstatusiconshow", id) 
		engfunc(EngFunc_EmitSound, id, CHAN_ITEM, sound_buysuit, 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	
	if (strfind(cmd, "zp_cs_nightvision") == 0) 
		if (!zp_get_user_nightvision(id))
			zp_force_buy_extra_item(id,0,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_ALREADYHAVE_NIGHTVISION");
			return  PLUGIN_HANDLED;
		}
		
	if (strfind(cmd, "zp_cs_antidote") == 0) 
		if (antidoteused<get_pcvar_num(cvar_antidotelimit))
			if (!zp_disinfect_user(id)) 
			{
				client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_CANTBUY_ANTIDOTE");
				return  PLUGIN_HANDLED;
			}
			else antidoteused++;
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_ANTIDOTE");
			return  PLUGIN_HANDLED;
		}
		
		
	if (strfind(cmd, "zp_cs_zombie_madness") == 0) 
		if (madnessused<get_pcvar_num(cvar_madnesslimit))
			zp_force_buy_extra_item(id,2,1);
		else
		{
			client_print(id,print_center,"%L", LANG_PLAYER, "BUYMENU_RANOUTOF_MADNESS");
			return  PLUGIN_HANDLED;
		}
	
	if (strfind(cmd, "zp_cs_") != 0) 
	{
		new temp_itemid=zp_get_extra_item_id(cmd);
		if (temp_itemid>-1)
			(zp_force_buy_extra_item(id,temp_itemid,1))
		else
		{
			client_print(id, print_chat, "[zp_cs_buymenu]: ERROR! ITEM %s NOT FOUND!",cmd)
		}
	}
		
	if (strfind(cmd, "do_nothing") == 0) client_print(id, print_chat, "[zp_cs_buymenu]: This item does nothing.") 
	
	zp_cs_player_money[id] -= itemcost;
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id)
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
		
	return PLUGIN_HANDLED;
}

public ham_PlayerSpawn_Post(id)
{
	if (!task_exists(id+TASK_RESTORE_MONEY)) set_task(0.5,"restore_player_money",id+TASK_RESTORE_MONEY)
}

public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (/*attacker<1||attacker>g_maxplayers||*/victim == attacker||!is_user_connected(attacker))
		return HAM_IGNORED;
		
	zp_cs_damage[attacker][victim]+=damage
	
	if (zp_get_user_survivor(attacker))
	{
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_s_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	else if (zp_get_user_zombie(attacker)||zp_get_user_nemesis(attacker))
	{
		static Float:armor
		pev(victim, pev_armorvalue, armor)
		if (armor < 36.0) set_task(0.1, "zp_cs_hevsuitstatusiconblink", victim);
		if (armor < 1.0) set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		if (/*!zp_get_user_nemesis(attacker)||*/zp_get_user_survivor(victim))
		{
			if (!zp_get_user_nemesis(attacker))
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_z_income_cash_rate);
			else
				zp_cs_player_money[attacker] +=floatround(damage*zp_cs_n_income_cash_rate);
				
				
			if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
				zp_cs_player_money[attacker]=zp_cs_moneymax; 
				
			message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
			write_long(zp_cs_player_money[attacker]);
			write_byte(1);
			message_end();

			return HAM_IGNORED;
		}
	}
	else
	{		
		zp_cs_player_money[attacker] += floatround(damage*zp_cs_h_income_cash_rate);
		if (zp_cs_player_money[attacker] > zp_cs_moneymax) 
			zp_cs_player_money[attacker]=zp_cs_moneymax; 
			
		message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, attacker); 
		write_long(zp_cs_player_money[attacker]);
		write_byte(1);
		message_end();

		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public ham_PlayerKilled(victim, attacker, shouldgib)
{
	if (/*attacker<1||attacker>g_maxplayers||*/attacker==victim||!is_user_connected(attacker)) return HAM_IGNORED;
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else if (zp_get_user_nemesis(attacker))
	{
		menu_cancel(victim);
		set_task(0.1, "zp_cs_hevsuitstatusiconhide", victim);
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	}	
	else if (zp_get_user_survivor(attacker)) 
		zp_cs_player_moneybonus[attacker]+=floatround(float(get_pcvar_num(cvar_zp_cs_money_killbonus))*zp_cs_s_income_cash_rate);
	else 
		zp_cs_player_moneybonus[attacker]+=get_pcvar_num(cvar_zp_cs_money_killbonus);
	
	if (zp_get_user_zombie(attacker)&&!zp_get_user_nemesis(attacker))
	{
		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)
		zp_cs_player_moneybonus[victim]+=get_pcvar_num(cvar_zp_cs_deathmoneybonus)
	}

	if (!task_exists(attacker+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",attacker+TASK_RESTORE_MONEY)
	
	return HAM_IGNORED;
}

public zp_user_humanized_pre(id,survivor)
{
	if (survivor)
		menu_cancel(id);
		
	return PLUGIN_CONTINUE;
}

public message_DeathMsg()
{	
	if (!get_pcvar_num(cvar_zp_cs_killassist_enabled))
		return PLUGIN_CONTINUE;
		
	new attacker = read_data(1)
	new victim = read_data(2)
	new headshot = read_data(3)
	new assistant_id=0
	new Float: assistant_damage
	new FragBonus
	new MoneyBonus
	static weapon_name[32], weapon_name_full[32]
	
	if (zp_get_user_zombie(attacker))
	{
		assistant_damage=zp_cs_killassist_mindamage_z
		FragBonus=zp_zombie_frags_for_infect
		MoneyBonus=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
	}
	else
	{
		assistant_damage=zp_cs_killassist_mindamage_h
		FragBonus=zp_human_frags_for_kill
		MoneyBonus=get_pcvar_num(cvar_zp_cs_money_killbonus)
	}
		
	for (new id=1;id<=g_maxplayers;id++)
	{
		if ((is_user_connected(id))&&(id!=attacker)&&(zp_cs_damage[id][victim]>=assistant_damage)&&(zp_get_user_zombie(id)==zp_get_user_zombie(attacker)))
		{
			assistant_damage=zp_cs_damage[id][victim]
			assistant_id=id
		}
		zp_cs_damage[id][victim]=0.0
	}
	
	if (!assistant_id)
		return PLUGIN_CONTINUE
		
	static attacker_name[32], attacker_name_len, assistant_id_name[32], assistant_id_name_len
			
	set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+FragBonus))
	zp_cs_player_moneybonus[assistant_id]+=MoneyBonus
		
	attacker_name_len = get_user_name(attacker, attacker_name, charsmax(attacker_name))
	assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
	attacker_name=PlayerOldName[attacker]
	if(attacker_name_len < 14)
	{
		formatex(attacker_name, attacker_name_len, "%s", attacker_name)
		formatex(assistant_id_name, 28-attacker_name_len, "%s", assistant_id_name)
	}	
	else if(assistant_id_name_len < 14)
	{
		formatex(attacker_name, 28-assistant_id_name_len, "%s", attacker_name)
		formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
	}
	else
	{
		formatex(attacker_name, 13, "%s", attacker_name)
		formatex(assistant_id_name, 13, "%s", assistant_id_name)
	}
	formatex(attacker_name, charsmax(attacker_name), "%s + %s", attacker_name, assistant_id_name)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_user_info(attacker, "name", attacker_name)
	set_pcvar_num(cvar_amx_mode,temp1)
	
	if (zp_get_user_zombie(assistant_id))
	{
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
	}
		
	set_task(0.1,"update_scoreboard",assistant_id)
	
	if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	
	read_data(4, weapon_name, charsmax(weapon_name))
	if (equal(weapon_name,"grenade"))
		weapon_name="hegrenade"
	formatex(weapon_name_full, charsmax(weapon_name_full), "weapon_%s", weapon_name)
	
	new arg[4]
	arg[0] = attacker
	arg[1] = victim
	arg[2] = headshot
	arg[3] = get_weaponid(weapon_name_full)

	set_task(0.1, "zp_cs_kill_assist", 0, arg, 4)
		
	return PLUGIN_HANDLED	
}

public zp_cs_kill_assist(arg[])
{
	static weapon_name[32]
	get_weaponname(arg[3], weapon_name, charsmax(weapon_name))
	replace(weapon_name, charsmax(weapon_name), "weapon_", "")
	
	message_begin(MSG_ALL, g_msgDeathMsg)
	write_byte(arg[0])
	write_byte(arg[1])
	write_byte(arg[2])
	write_string(weapon_name)
	message_end()
	
	new temp1 = get_pcvar_num(cvar_amx_mode)
	set_pcvar_num(cvar_amx_mode,0)
	set_msg_block(g_msgSayText, BLOCK_ONCE)
	set_user_info(arg[0],"name",PlayerOldName[arg[0]])
	set_pcvar_num(cvar_amx_mode,temp1)
}

public zp_user_infected_pre(id,infector,nemesis)
{
	if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
	{
		new assistant_id=0
		new Float: assistant_damage = zp_cs_killassist_mindamage_z
		
		for (new i=1;i<=g_maxplayers;i++)
		{
			if ((is_user_connected(i))&&(i!=infector)&&(zp_cs_damage[i][id]>=assistant_damage)&&(zp_get_user_zombie(i)))
			{
				assistant_damage=zp_cs_damage[i][id]
				assistant_id=i
			}
			zp_cs_damage[i][id]=0.0
		}
	
		if (!assistant_id)
			return PLUGIN_CONTINUE
		
		static infector_name[32], infector_name_len, assistant_id_name[32], assistant_id_name_len
			
		set_pev(assistant_id, pev_frags, float(pev(assistant_id, pev_frags)+zp_zombie_frags_for_infect))
		zp_cs_player_moneybonus[assistant_id]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		
		infector_name_len = get_user_name(infector, infector_name, charsmax(infector_name))
		assistant_id_name_len = get_user_name(assistant_id, assistant_id_name, charsmax(assistant_id_name))
		infector_name=PlayerOldName[infector]
		if(infector_name_len < 14)
		{
			formatex(infector_name, infector_name_len, "%s", infector_name)
			formatex(assistant_id_name, 28-infector_name_len, "%s", assistant_id_name)
		}	
		else if(assistant_id_name_len < 14)
		{
			formatex(infector_name, 28-assistant_id_name_len, "%s", infector_name)
			formatex(assistant_id_name, assistant_id_name_len, "%s", assistant_id_name)
		}
		else
		{
			formatex(infector_name, 13, "%s", infector_name)
			formatex(assistant_id_name, 13, "%s", assistant_id_name)
		}
		formatex(infector_name, charsmax(infector_name), "%s + %s", infector_name, assistant_id_name)
		set_msg_block(g_msgSayText, BLOCK_ONCE)
		new temp1 = get_pcvar_num(cvar_amx_mode)
		set_pcvar_num(cvar_amx_mode,0)
		set_user_info(infector, "name", infector_name)
		set_pcvar_num(cvar_amx_mode,temp1)
	
		new currentHP = pev(assistant_id,pev_health)
		if ((currentHP+zp_zombie_infect_health)<float(zp_get_zombie_maxhealth(assistant_id)))
			set_pev(assistant_id,pev_health,currentHP+zp_zombie_infect_health)
		else
			set_pev(assistant_id,pev_health,float(zp_get_zombie_maxhealth(assistant_id)))
		
		set_task(0.1,"update_scoreboard",assistant_id)
		
		if (!task_exists(assistant_id+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",assistant_id+TASK_RESTORE_MONEY)
	}
	
	if (zp_get_user_nemesis(id)||(infector!=0)) 
		return PLUGIN_CONTINUE;
	
	static strtemp1[100],strtemp2[100], weapons[32], num, i
	num = 0
	get_user_weapons(id, weapons, num)
		
	for (i = 0; i < num; i++)
	{
		strtemp1 = ""
		get_weaponname(weapons[i],strtemp1,charsmax(strtemp1));
		replace(strtemp1,charsmax(strtemp1),"weapon_","zp_cs_buy_")
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_pistol_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_pistol_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_shotgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_shotgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_smgun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_smgun_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_rifle_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_rifle_cost[i])
		}
		for(new i=0;i<99;i++)
		{
			strtemp2 = ""
			get_pcvar_string(cvar_zp_cs_buymenu_biggun_todo[i], strtemp2 , charsmax(strtemp2))
			if (equal(strtemp1,strtemp2)) zp_cs_player_moneybonus[id]+=get_pcvar_num(cvar_zp_cs_buymenu_biggun_cost[i])
		}
	}
	
	if (!task_exists(id+TASK_RESTORE_MONEY)) 
		set_task(0.1,"restore_player_money",id+TASK_RESTORE_MONEY)
		
	client_print(id,print_chat,"%L", LANG_PLAYER, "BUYMENU_MONEYBACK")
	
	return PLUGIN_CONTINUE;
}

public zp_user_infected_post(id, infector)
{			
	if ((infector<=g_maxplayers)&&(infector>0)&&(id!=infector))
	{
		if (!zp_get_user_nemesis(infector))
			zp_cs_player_moneybonus[infector]+=get_pcvar_num(cvar_zp_cs_infectmoneybonus)
		else
			zp_cs_player_moneybonus[infector]+=floatround(float(get_pcvar_num(cvar_zp_cs_infectmoneybonus))*zp_cs_n_income_cash_rate); 
	
		if (!task_exists(infector+TASK_RESTORE_MONEY)) 
			set_task(0.1,"restore_player_money",infector+TASK_RESTORE_MONEY)
			
		
		if (get_pcvar_num(cvar_zp_cs_killassist_enabled))
		{	
			new temp1 = get_pcvar_num(cvar_amx_mode)
			set_pcvar_num(cvar_amx_mode,0)
			set_msg_block(g_msgSayText, BLOCK_ONCE)
			set_user_info(infector,"name",PlayerOldName[infector])
			set_pcvar_num(cvar_amx_mode,temp1)
		}
	}
		
	if ((id<1)||(id>g_maxplayers))
		return PLUGIN_CONTINUE;
		
	menu_cancel(id)
	set_task(0.1, "zp_cs_hevsuitstatusiconhide", id)
	
	return PLUGIN_CONTINUE;
}

public restore_player_money(id)
{
	id-=TASK_RESTORE_MONEY;
	
	if (is_user_bot(id))
		set_pdata_int(id,OFFSET_MONEY,16000,OFFSET_LINUX)
	else 
		set_pdata_int(id,OFFSET_MONEY,0,OFFSET_LINUX)
		
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	zp_cs_player_money[id]+=zp_cs_player_moneybonus[id];
	if (zp_cs_player_money[id] > zp_cs_moneymax) zp_cs_player_money[id]=zp_cs_moneymax; 
	if (zp_cs_player_money[id] < 0) zp_cs_player_money[id]=0; 
	message_begin(MSG_ONE_UNRELIABLE, g_MsgMoney, _, id);
	write_long(zp_cs_player_money[id]);
	write_byte(1);
	message_end();
	
	zp_cs_player_moneybonus[id]=0;
}

public fm_strip_user_weapons(id)
{
	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
	if (!pev_valid(ent)) return;
	
	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, id)
	engfunc(EngFunc_RemoveEntity, ent)
}

public zp_cs_hevsuitstatusiconshow(id)
{	
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(1)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconhide(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(0)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}

public zp_cs_hevsuitstatusiconblink(id)
{
	message_begin(MSG_ONE,g_msgIconStatus,{0,0,0},id) 
	write_byte(2)  
	write_string("item_battery") 
	write_byte(150)
	write_byte(150)
	write_byte(100) 
	message_end();
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
# AppLy
Membru, skill 0
Membru, skill 0
Posts: 15
Joined: 18 Jun 2016, 17:32
Detinator Steam: Da
CS Status: Allahu Akbar
Fond eXtream: 0
Location: Acasă
Has thanked: 5 times
Contact:

13 Apr 2019, 15:20

Multumesc mult L E V I N pentru ajutor :kiss_smiley: :kiss_smiley: , te pricepi. Acum merge bine, fara probleme.
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: Bing [Bot] and 6 guests