Thread: Move Ct to zm
View Single Post
Author Message
Ykaru
Member
Join Date: Aug 2019
Old 08-11-2019 , 09:03   Move Ct to zm
Reply With Quote #1

Hi, could you help me with a plugin that moves CT players when they are killed by Zombie on their team.
But to move them only during the round, he finally gave them back.
I have the basic builder plugin, but I see that this does not.

This is the base builder plugin :

Code:
#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <fakemeta>

#include <fakemeta_util>

#include <engine> 

#include <hamsandwich>

#include <fun>

#include <csstats>

#include <csx>

#include <xs>





// Plugin Version 

new VERSION[]="5.5"

new formatmodname[] = "^x01 [^x04 BBx.PlayArena.Ro^x01 ]"



//Models

new const g_ZombieModel[3][] = 

{

	"bb_vipTT", // vip

	"bb_adminTT", // admin

	"bb_playerTs"  // player

}

new const g_HumanModel[3][] =

{

	"bb_vipCT", // vip

	"bb_adminCT", // admin

	"bb_playerCT"  // player

}



//Sounds

new g_RoundStart[] = "basebuilder/round_start.wav"



#define MAX_PLAYERS 32

#define AMMO_SLOT 376

#define MODELSET_TASK 100

#define MODELCHANGE_DELAY 0.5

#define MAXENTS 1365

#define TASK_ROUND 1023

#define AUTO_TEAM_JOIN_DELAY 0.1

#define TEAM_SELECT_VGUI_MENU_ID 2

#define BARRIER_COLOR 0.0, 0.0, 0.0

#define BARRIER_RENDERAMT 150.0



#define AFTER_BUILD ADMIN_LEVEL_D

#define DEAD_BUILD ADMIN_LEVEL_A

#define REMOVE_BLOCK ADMIN_LEVEL_A

#define DEAD_REMOVE ADMIN_LEVEL_D

#define LOCK_BLOCKS ADMIN_LEVEL_A

#define PAIN_SHOCK_FREE ADMIN_KICK

#define BAD_SPAWN ADMIN_LEVEL_F

#define BUILD_BAN ADMIN_LEVEL_F

#define REVIVE ADMIN_LEVEL_F

#define SWAP ADMIN_LEVEL_F

#define START_ROUND ADMIN_LEVEL_F

#define ACCES_HP ADMIN_LEVEL_B

#define ACCES_HELP ADMIN_LEVEL_A

#define ADMIN_MODEL ADMIN_LEVEL_H

#define VIP ADMIN_LEVEL_B



          







#if cellbits == 32

    #define OFFSET_BUYZONE 235

#else

    #define OFFSET_BUYZONE 268

#endif



#define LockBlock(%1)     ( entity_set_int( %1, EV_INT_iuser1, 1 ) )

#define UnlockBlock(%1)   ( entity_set_int( %1, EV_INT_iuser1, 0 ) )

#define IsBlockLocked(%1) ( entity_get_int( %1, EV_INT_iuser1 ) == 1 )



// CS Weapon CBase Offsets (win32)

const OFFSET_WEAPONOWNER = 41



// Linux diff's

const OFFSET_LINUX_WEAPONS = 4



new gmsgStatusText

new gmsgSayText

new gHudSyncInfo

new g_MaxPlayers

const fPainShock = 108



new bool:g_CanBuild

new bool:g_ZombiesReleased

new g_RoundNum

new g_iEntBarrier

new bool:g_BuildBan[MAX_PLAYERS+1]

new g_pEnt[MAX_PLAYERS+1], g_pDist[MAX_PLAYERS+1]

new bool:g_MovingEnt[MAXENTS]

new g_EntMover[MAXENTS]

new g_LastMover[MAXENTS]

new g_EntOwner[MAXENTS]

new g_OwnedEnts[33]

new needhelp[33]

new Float:fOrigin[3]



///////////////







//Custom Model Stuff

new Float:g_ModelsTargetTime, Float:g_RoundStartTime

new g_HasCustomModel[MAX_PLAYERS+1], g_PlayerModel[MAX_PLAYERS+1][32]



new g_ModName[32]

new g_CurrentWeapon[MAX_PLAYERS+1]

new g_PrimaryWeapon[MAX_PLAYERS+1]



// Allowed weapons for zombies

const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)



new g_pcvar_team, g_pcvar_class, g_pcvar_buildtime, g_pcvar_zombiehp, g_pcvar_maxrounds, g_pcvar_basecalc,

	g_pcvar_givenades, g_pcvar_allowedweps, g_pcvar_tournymode, g_pcvar_showmovers, g_pcvar_healthtime,

	g_pcvar_blockgrav, g_pcvar_knockback, g_pcvar_entmindist, g_pcvar_entsetdist, g_pcvar_entmaxdist,

	g_pcvar_roundnum, g_pcvar_roundtime, g_pcvar_resetent, g_pcvar_zresptime, g_pcvar_maxclaimable,

	g_pcvar_claimable, g_pcvar_incalzire

	

new g_friend[MAX_PLAYERS+1]

new g_iMsgIdHostagePos, g_iMsgIdHostageK



//Cached Stuff for Players

new g_isconnected[MAX_PLAYERS+1]

new g_isalive[MAX_PLAYERS+1] 

new g_ishuman[MAX_PLAYERS+1]

new g_iszombie[MAX_PLAYERS+1]



//CSDM-Style Weapons Menu

new bool:firsttime[MAX_PLAYERS+1],bool:ask[MAX_PLAYERS+1]

new weapon_picked[2][MAX_PLAYERS+1],cur_offset[MAX_PLAYERS+1],options_on_menu[8][MAX_PLAYERS+1]



new count_down



// Weapon entity names

new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",

			"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",

			"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",

			"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",

			"weapon_ak47", "weapon_knife", "weapon_p90" }

			

static const WEAPONNAMES[24][23] = { "Schmidt Scout", "XM1014 M4", "Ingram MAC-10", "Steyr AUG A1", "UMP 45", "SG-550 Auto-Sniper",

			"IMI Galil", "Famas", "AWP Magnum Sniper", "MP5 Navy", "M249 Para Machinegun", "M3 Super 90", "M4A1 Carbine",

			"Schmidt TMP", "G3SG1 Auto-Sniper", "SG-552 Commando", "AK-47 Kalashnikov", "ES P90", "P228 Compact",

			"Dual Elite Berettas", "Fiveseven", "USP .45 ACP Tactical", "Glock 18C", "Desert Eagle .50 AE"

}

new g_SendTeam[33]

new beamSpr



public plugin_init()

{

	register_plugin("Base Builder Zombie Mod", VERSION, "Tirant")

	register_cvar("base_builder", VERSION, FCVAR_SPONLY|FCVAR_SERVER)

	set_cvar_string("base_builder", VERSION)

		

	g_pcvar_buildtime = register_cvar("bb_build_time", "135")

	g_pcvar_incalzire = register_cvar("bb_warm_time", "30")

	g_pcvar_zombiehp = register_cvar("bb_zombie_health", "3500")

	g_pcvar_basecalc = register_cvar("bb_calc_maxbase", "0")

	g_pcvar_tournymode = register_cvar("bb_tournament_mode", "0")

	g_pcvar_showmovers = register_cvar("bb_show_moving", "1")

	g_pcvar_blockgrav = register_cvar("bb_block_gravity", "0")

	g_pcvar_knockback = register_cvar("bb_pain_shock_free", "0")

	g_pcvar_entmaxdist = register_cvar("bb_max_move_dist", "1400")

	g_pcvar_entmindist = register_cvar("bb_min_move_dist", "0")

	g_pcvar_entsetdist = register_cvar("bb_min_dist_set", "64")

	g_pcvar_healthtime = register_cvar("bb_health_time", "12")

	g_pcvar_resetent = register_cvar("bb_reset_blocks", "1")

	g_pcvar_roundtime = register_cvar("bb_roundtime", "7")

	g_pcvar_zresptime = register_cvar("bb_zombie_respawn_time", "0")

	g_pcvar_roundnum = register_cvar("bb_rounds", "8")

	g_pcvar_maxrounds = get_cvar_num("mp_maxrounds")

	g_pcvar_maxclaimable = register_cvar("bb_claim_max", "15")

	g_pcvar_claimable = register_cvar("bb_claim_mode", "3")

		

	//AJC for auto team (if needed)

	g_pcvar_team = register_cvar("bb_team", "5")

	g_pcvar_class = register_cvar("bb_class", "5")

	/////////Mseaj....

	set_task(90.0,"show_mesaje",0,"",0,"b",0)

	

	//Guns Menu

	g_pcvar_givenades = register_cvar("bb_give_nades","hhssf") //h f s, put multiple letters for multiple nades

	g_pcvar_allowedweps = register_cvar("bb_weapons","abcdeghijlmnqrstuvwx")

	

	//Client Commands

	register_clcmd("+grab","cmdMoveEnt",_," - Starts moving the selected object") 		//command to move stuff around

	register_clcmd("-grab","cmdStopEnt",_," - Stops moving the selected object") 		//command to move stuff around

	register_clcmd("say /respawn","Respawn_Zombie",_," - Respawn while dead (Zombie)")	//command to respawn (zombies only)

	register_clcmd("say /fixspawn","cmdBadSpawn",_," - Respawn while dead (Survivor)")	//command to respawn (humans only before buildtime)

	register_clcmd("say /ajutor","cmdHelp",_," - Displays the help hud") 			//command to see /help menu

	register_clcmd("say /ajutor","cmdHelp",_," - Displays the help hud") 			//command to see /help menu

	register_clcmd("say /runda","cmdCheckRound",_," - Displays the round number")

	register_clcmd("say /round","cmdCheckRound",_," - Displays the round number")		//command to see the current round number

	register_clcmd("say round","cmdCheckRound",_," - Displays the round number")		//command to see the current round number

	register_clcmd("say /team","team")

	register_clcmd("say /help", "say_help",_," - NeedHelp")

	

	//Guns Menu

	register_clcmd("say guns","cmdGuns",_," - Opens the guns menu") 				//Guns Menu CMD

	register_clcmd("say_team guns","cmdGuns",_," - Opens the guns menu")			//Guns Menu CMD

	register_clcmd("say /guns","cmdGuns",_," - Opens the guns menu")			//Guns Menu CMD

	register_clcmd("say_team /guns","cmdGuns",_," - Opens the guns menu")			//Guns Menu CMD

	

	//Admin Commands

	register_concmd("removeaimmm","cmdRemoveEnt",_," - Deletes an object") 			//Removes an object (C alive, D dead)

	register_concmd("lockaimmmm","cmdLockBlock",_," - Locks/Unlocks an object from moving")	//Once to lock, again to unlock

	register_concmd("unclaimaimmm","cmdRemoveClaim",_," - Removes a claim on an object")	//Makes block claimable by everyone

	register_concmd("say /fixspawns","cmdBadSpawn_Survivor",_," - Respawns all dead CTs") 	//Global /fixspawn command (Kick)

	register_concmd("say /respawns","cmdBadSpawn_Zombie",_," - Respawns all dead Ts") 	//Global /respawn command (Kick)

	register_concmd("bb_buildban","cmdBuildBan",_,"<player>") 				//Bans targeted player from building

	register_concmd("bb_unbuildban","cmdBuildUnban",_,"<player>") 				//Unbans   "	   "     "     "

	register_concmd("bb_revive","cmdRevive",_,"<player>")					//revives targetted player

	register_concmd("bb_swap","cmdSwap",_,"<player>")					//swaps the selected player to the opposite team

	register_concmd("bb_startround","cmdStartRound",_," - Ends the build phase")		//do i really have to explain this?

	register_concmd("bb_unhelp", "unhelp",_," - UnHelp player")

	

	//Blocked Commands

	register_clcmd("drop", "clcmd_drop")

	register_clcmd("buy", "clcmd_buy")

	register_clcmd("+hook", "hook")

	

	

	

	new tournymode = get_pcvar_num(g_pcvar_tournymode)

	if (tournymode != 1)

	{

		register_clcmd("chooseteam", "clcmd_changeteam")

		register_clcmd("jointeam", "clcmd_changeteam")

	}

	

	register_forward(FM_GetGameDescription, "fw_GetGameDescription")

	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")

	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")

	register_forward(FM_PlayerPreThink, "fw_Player_PreThink")

	register_forward(FM_ClientKill, "fw_Suicide")

	//register_forward(FM_CmdStart, "fw_CmdStart")

	if (get_pcvar_num(g_pcvar_showmovers) == 1)

		register_forward(FM_TraceLine, "fw_Traceline", 1)

	

	RegisterHam(Ham_Touch, "weapon_shield", "ham_WeaponCleaner_Post", 1)

	RegisterHam(Ham_Touch, "weaponbox", "ham_WeaponCleaner_Post", 1)

	RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)

	for (new i = 1; i < sizeof WEAPONENTNAMES; i++)

		if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "ham_ItemDeploy_Post", 1)



	

	register_message(get_user_msgid("TextMsg"), "msgRoundEnd")

	register_message(get_user_msgid("StatusIcon"), "msgStatusIcon")

	register_message(get_user_msgid("StatusValue"), "msgStatusValue");

	if (tournymode != 1)

	{

		register_message(get_user_msgid("ShowMenu"), "message_show_menu")

		register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")

	}

	

	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")

	register_event("AmmoX", "ev_AmmoX", "be", "1=1", "1=2", "1=3", "1=4", "1=5", "1=6", "1=7", "1=8", "1=9", "1=10")

	register_event("StatusValue", "ev_SetTeam", "be", "1=1");

	register_event("StatusValue", "ev_ShowStatus", "be", "1=2", "2!0");

	register_event("StatusValue", "ev_HideStatus", "be", "1=1", "2=0");

	register_event("Health", "ev_Health", "be", "1>0");

		

	register_logevent("logevent_round_start",2, "1=Round_Start")

	register_logevent("logevent_round_end", 2, "1=Round_End")

	

	register_menucmd(register_menuid("WeaponMethodMenu"),(1<<0)|(1<<1)|(1<<2),"weapon_method_pushed")

	register_menucmd(register_menuid("PrimaryWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),"prim_weapons_pushed")

	register_menucmd(register_menuid("SecWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7),"sec_weapons_pushed")



	set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)

	

	//Formats the Mod Name

	formatex(g_ModName, charsmax(g_ModName), "Base Builder %s", VERSION)

	

	g_iMsgIdHostagePos = get_user_msgid("HostagePos")

	g_iMsgIdHostageK = get_user_msgid("HostageK")



	register_dictionary("basebuilder.txt");

	

	gmsgSayText = get_user_msgid("SayText")

	gmsgStatusText = get_user_msgid("StatusText");

	gHudSyncInfo = CreateHudSyncObj();

	g_MaxPlayers = get_maxplayers()



	if (tournymode != 1)

	{

		server_cmd("mp_limitteams 1")

		server_cmd("mp_autoteambalance 1")

	}

	else

	{

		server_cmd("mp_limitteams 0")

		server_cmd("mp_autoteambalance 0")		

	}

	new roundnum = get_pcvar_num(g_pcvar_roundnum)

	server_cmd("mp_freezetime 0")

	server_cmd("mp_flashlight 0")

	server_cmd("mp_maxrounds %d", roundnum)

	server_cmd("mp_winlimit %d", roundnum)

	server_cmd("mp_roundtime %d", get_pcvar_num(g_pcvar_roundtime))

	register_event("DeathMsg","Event_DeathMsg","a") 

	g_iEntBarrier = find_ent_by_tname( -1, "barrier" );

}



public show_mesaje(id){



      client_print(0,print_chat,"Nu uitati sa adaugati serverul la Favorite.")

}



public hook(id) 

{

	if(!is_user_alive(id)||!g_CanBuild)

		return 1



	if(cs_get_user_team(id) != CS_TEAM_CT)

		return 1



	if(!task_exists(id+333221))

		set_task(0.1,"hooks",id+333221)



	return 1

}

public hooks(id)

{

	id -= 333221



	if(!is_user_alive(id))

		return 0



	if(cs_get_user_team(id) != CS_TEAM_CT)

		return 0



	static origin1[3]

	get_user_origin(id,origin1)



	static origin2[3]

	get_user_origin(id,origin2,3)



	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

	write_byte(1)

	write_short(id)

	write_coord(origin2[0])

	write_coord(origin2[1])

	write_coord(origin2[2])

	write_short(beamSpr)

	write_byte(0)

	write_byte(30)

	write_byte(10)

	write_byte(100)

	write_byte(10)

	write_byte(random_num(0,200))

	write_byte(random_num(0,200))

	write_byte(random_num(0,200))

	write_byte(10)

	write_byte(10)

	message_end()



	static Float:velocity[3]

	velocity[0] = (float(origin2[0]) - float(origin1[0])) * 3.0

	velocity[1] = (float(origin2[1]) - float(origin1[1])) * 3.0

	velocity[2] = (float(origin2[2]) - float(origin1[2])) * 3.0



	static Float:y

	y = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]



	static Float:x

	x = (5.0 * 120.0) / floatsqroot(y)



	velocity[0] *= x

	velocity[1] *= x

	velocity[2] *= x



	set_pev(id,pev_velocity,velocity)

	return 0

}

public team(id)

{

	menu_players(id,"chooseplayer")

}

public chooseplayer(id, menu, item)

{

	if(item == MENU_EXIT)

	{

		menu_destroy(menu);

		return PLUGIN_HANDLED;

	}



	new dst[32], data[5], access, callback, player;



	menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback);

	player = str_to_num(data);



	if(is_user_alive(player))

	{

		new name[33]

		get_user_name(id, name, 32)

		g_SendTeam[player] = id

		new zorken[50]

		formatex(zorken,49,"\r%s \wvrea sa faca team cu tine.",name)

		new menu = menu_create(zorken, "acceptc");

		menu_additem( menu, "\yAccepta","1");

		menu_additem( menu, "\dRefuza","2");



		menu_display(player, menu);

	}

	return PLUGIN_HANDLED;

}

public acceptc(id,menu,item)

{

	if(item == MENU_EXIT||!g_CanBuild)

	{

		if(is_user_alive(g_SendTeam[id]) && g_CanBuild)

		{

			client_print(id,print_chat,"^x04[BBx.PlayArena.Ro]^x01 Ai refuzat team-ul.")

			new name[33]

			get_user_name(id,name,32)

			client_print(g_SendTeam[id],print_chat,"^x04[BBx.PlayArena.Ro]^x01 %s a refuzat team-ul tau.",name)

			g_SendTeam[id] = 0

		}

		menu_destroy(menu);

		return PLUGIN_HANDLED;

	}

	new dst[32], data[5], access, callback;



	menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback);

	new nr = str_to_num(data);

	if(nr == 1)

	{

		if(is_user_alive(g_SendTeam[id]))

		{

			client_print(id,print_chat,"^x04[BBx.PlayArena.Ro]^x01 Ai acceptat team-ul.")

			new name[33]

			get_user_name(id,name,32)

			client_print(g_SendTeam[id],print_chat,"^x04[BBx.PlayArena.Ro]^x01 %s a acceptat team-ul tau.",name)

			g_SendTeam[id] = 0

		}

	}

	else if(nr == 2)

	{

		if(is_user_alive(g_SendTeam[id]))

		{

			client_print(id,print_chat,"^x04[BBx.PlayArena.Ro]^x01 Ai refuzat team-ul.")

			new name[33]

			get_user_name(id,name,32)

			client_print(g_SendTeam[id],print_chat,"^x04[BBx.PlayArena.Ro]^x01 %s a refuzat team-ul tau.",name)

			g_SendTeam[id] = 0

		}

	}

}

stock menu_players(index,handle[])

{

	new i, name[32], num[5], menu;

	menu = menu_create("Team CT", handle);

	for(i = 1; i <= 32; i++)

	{

		if(!is_user_alive(i)||i == index||g_SendTeam[i]||!g_CanBuild)

			continue;



 		if(cs_get_user_team(i) == CS_TEAM_CT)

		{

			get_user_name(i, name, charsmax(name));

			num_to_str(i, num, charsmax(num));

			menu_additem(menu, name, num, 0);

		}

	}

	menu_display(index, menu);

}

public Event_DeathMsg()

{

	new g_attacker = read_data(1);

	new g_victim = read_data(2);

	



	cmdStopEnt(g_victim)

	

	set_hudmessage(_, _, _, _, _, _, _, _, _, _, 4);

	show_hudmessage(g_victim, "");

	

	g_isalive[g_victim] = false

	

	if (g_iszombie[g_victim] && g_attacker == g_victim)

	{

		set_task(0.2,"Respawn_Zombie",g_victim)

	}

	else if (g_iszombie[g_victim])

	{

		set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)

		show_hudmessage(g_victim, "%L", LANG_SERVER, "DEAD_ZOMBIE", get_pcvar_num(g_pcvar_zresptime));

		set_task(get_pcvar_float(g_pcvar_zresptime), "Respawn_Zombie", g_victim)

	}

	if (g_ishuman[g_victim])

	{

		set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)

		show_hudmessage(g_victim, "%L", LANG_SERVER, "DEAD_SURVIVOR");

	}



	needhelp[g_victim] = 0

	return 0;

}  



public plugin_precache()

{

	beamSpr = precache_model("sprites/lgtning.spr")

	new szModel[ 64 ];

	

	for(new i;i<sizeof(g_ZombieModel);i++)

	{

		format( szModel, charsmax( szModel ), "models/player/%s/%s.mdl", g_ZombieModel[i], g_ZombieModel[i] );

		engfunc( EngFunc_PrecacheModel, szModel );

	}

	for(new i;i<sizeof(g_HumanModel);i++)

	{

		format( szModel, charsmax( szModel ), "models/player/%s/%s.mdl", g_HumanModel[i], g_HumanModel[i] );

		engfunc( EngFunc_PrecacheModel, szModel );

	}



	engfunc( EngFunc_PrecacheSound, g_RoundStart )



	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_bomb_target"))

	if (ent) 

	{

		dllfunc(DLLFunc_Spawn, ent)

		set_pev(ent, pev_solid, SOLID_NOT)

	}

	

	new iBuyZone = create_entity("info_map_parameters");

	DispatchKeyValue(iBuyZone, "bombradius", "0");

	DispatchKeyValue(iBuyZone, "buying", "3");

	DispatchSpawn(iBuyZone);

}



// Event Round Start (This is before freeze time)

public event_round_start()

{

	g_RoundStartTime = get_gametime()

	g_ZombiesReleased = false

	

	if (get_pcvar_num(g_pcvar_resetent) == 1)

	{

		new cname[10], tname[7];

		for (new iEnt = g_MaxPlayers+1; iEnt < MAXENTS; iEnt++)

		{

			if( is_valid_ent(iEnt) )

			{

				entity_get_string(iEnt, EV_SZ_classname, cname, 9);

				entity_get_string(iEnt, EV_SZ_targetname, tname, 6);

				if ( !IsBlockLocked(iEnt) && iEnt != g_iEntBarrier && equal(cname, "func_wall") && !equal(tname, "ignore"))

					engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } );

			}

		}

	}

}



public cmdHelp(id)

{

	set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 15.0, 0.1, 0.2, 2)

	new nLen, szHelp[512]

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "WELCOME_MSG", VERSION);

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "BIND_KEY");

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE1");

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE2");

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE3");

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE4");

	nLen += format( szHelp[nLen], 511-nLen, "%L", LANG_SERVER, "RULE5");

	show_hudmessage(id, szHelp);

}



// Log Event Round Start (This is AFTER freeze time)

public logevent_round_start()

{

	set_pev(g_iEntBarrier,pev_solid,SOLID_BSP)

	DispatchKeyValue(g_iEntBarrier, "rendermode", "1");

	DispatchKeyValue(g_iEntBarrier, "renderamt", "100");

	DispatchKeyValue(g_iEntBarrier, "rendercolor", "0.0 0.0 0.0");



	//set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransColor, 95);

	//set_pev(g_iEntBarrier,pev_solid,SOLID_BSP)

	//set_pev(g_iEntBarrier,pev_rendermode,1)

	//DispatchKeyValue(g_iEntBarrier, "renderamt", "255");



	set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)

	new nLen, szMsg[128]

	nLen += format( szMsg[nLen], 127-nLen, "%L", LANG_SERVER, "WELCOME_MSG", VERSION);

	nLen += format( szMsg[nLen], 127-nLen, "%L", LANG_SERVER, "BIND_KEY");

	show_hudmessage(0, szMsg);

	

	print_color(0, "%s %s ^x04- ^x01%L", formatmodname, VERSION, LANG_SERVER, "ROUND_MSG")

	print_color(0, "%s Round: %d of %d", formatmodname, (g_RoundNum+1), g_pcvar_maxrounds)

	if(g_RoundNum+1 == 5)

	{

		set_task(1.5,"vote")

	}

	if(g_RoundNum+1 == 9)

	{

		new nextmap[32]

		getNextMapName(nextmap, charsmax(nextmap))

		server_cmd("changelevel %s",nextmap)

	}

	remove_task(TASK_ROUND)

	remove_task(30000)

	remove_task(30001)

	

	new iBuildTime = get_pcvar_num( g_pcvar_buildtime );

	new TotalTime = iBuildTime+get_pcvar_num( g_pcvar_incalzire )

	set_task(1.0, "CountDown", 30000, "", 0, "a", iBuildTime);

	count_down = (iBuildTime-1);

	set_task(float(TotalTime), "Release_Zombies", TASK_ROUND)

	

	if (get_pcvar_num(g_pcvar_basecalc) == 1)

		set_task(5.0, "Base_Calc")

		

	set_task(5.0, "Fix_Spawns")

	

	g_CanBuild = true



	arrayset(g_MovingEnt, false, MAXENTS)

	arrayset(g_EntOwner, 0, MAXENTS)

	arrayset(g_OwnedEnts, 0, g_MaxPlayers+1)

}

public vote()

{



}

getNextMapName(szArg[], iMax)

{

	new len = get_cvar_string("amx_nextmap", szArg, iMax)

	return len

}

public CountDown()

{

	set_hudmessage(255, 255, 255, -1.0, 0.0, 0, 0.1, 0.9, 0.1, 0.2, 3)

	show_hudmessage(0, "%L", LANG_SERVER, "BUILD_TIME", count_down--);

	

	if (count_down < 0)

	{

		remove_task(30000);

		new iBuildTime = get_pcvar_num( g_pcvar_incalzire );

		set_task(1.0, "WarmUp", 30001, "", 0, "a", iBuildTime);

		count_down = (iBuildTime-1);

		for(new i; i < 32; i++)

		{

			if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_CT)

			{

				if(is_user_alive(i))

					spawn(i);

				else

					ExecuteHamB(Ham_CS_RoundRespawn, i);

			}

			cmdStopEnt(i)

		}

		g_CanBuild = false

	}

}

public WarmUp()

{

	set_hudmessage(255, 255, 255, -1.0, 0.0, 0, 0.1, 0.9, 0.1, 0.2, 3)

	show_hudmessage(0, "Mai aveti: %i secunde sa ajungeti la baza!", count_down--);

	

	if (count_down < 0)

	{

		remove_task(30001);

		new iBuildTime = get_pcvar_num( g_pcvar_incalzire );

		set_task(1.0, "WarmUp", 30001, "", 0, "a", iBuildTime);

		count_down = (iBuildTime-1);

	}

}

//Resets stuff and swaps teams so they respawn correctly

public logevent_round_end()

{

	if (!g_CanBuild && get_pcvar_num(g_pcvar_tournymode) != 1)

	{

		new players[32], num

		get_players(players, num)

		

		new player

		for (new i = 0; i < num; i++)

		{

			player = players[i]

			cs_set_user_team(player, cs_get_user_team(player) == CS_TEAM_T ? CS_TEAM_CT:CS_TEAM_T)

			remove_task(player+500)



			needhelp[player] = 0



			if (cs_get_user_team(player) == CS_TEAM_T)

			{

				g_iszombie[player] = true

				g_ishuman[player] = false

			}

			if (cs_get_user_team(player) == CS_TEAM_CT)

			{

				g_ishuman[player] = true

				g_iszombie[player] = false

			}

		}

		print_color(0, "^x04%L", LANG_SERVER, "TEAMS_SWAPPED")

	}

	

	remove_task(TASK_ROUND)

	remove_task(30000)

	remove_task(30001)

	return PLUGIN_HANDLED

}



public ham_TakeDamage_Post(victim, inflictor, attacker, Float:damage, bits)

{

	if(get_pcvar_num(g_pcvar_knockback) == 1 && access(victim, PAIN_SHOCK_FREE) && g_iszombie[victim])

	{

		set_pdata_float(victim, fPainShock, 1.0, 5)

	}

}



public client_disconnect(id)

{

	cmdStopEnt(id)



	g_isconnected[id] = false

	g_isalive[id] = false

	g_ishuman[id] = false

	g_iszombie[id] = false



	return PLUGIN_CONTINUE

}



//Respawns late joiners, cts only if build time is still on

public client_putinserver(id)

{

	set_task(7.0,"Respawn_Human",id);

	g_isconnected[id] = true

	firsttime[id] = true

	ask[id] = true

	needhelp[id] = 0

	g_SendTeam[id] = 0

}



public Release_Zombies()

{

	g_ZombiesReleased = true

	remove_task(30000);

	remove_task(30001);

	

	new players[32], num

	get_players(players, num)



	new player

	for(new i = 0; i < num; i++)

	{

		player = players[i]

		if (g_isalive[player])

		{

			if (get_user_godmode(player))

				set_user_godmode(player, 0)

			if (g_ishuman[player])

			{

				cmdStopEnt(player)



				new weapon[32]

				get_pcvar_string(g_pcvar_givenades,weapon,31)

			

				new he, flash, smoke

				for(new i=0;i<strlen(weapon);i++)

				{

					switch(weapon[i])

					{

						case 'h': he++

						case 'f': flash++

						case 's': smoke++

					}

				}

				if(he) give_item(player,"weapon_hegrenade"), cs_set_user_bpammo(player,CSW_HEGRENADE,he)

				if(flash) give_item(player,"weapon_flashbang"), cs_set_user_bpammo(player,CSW_FLASHBANG,flash)

				if(smoke) give_item(player,"weapon_smokegrenade"), cs_set_user_bpammo(player,CSW_SMOKEGRENADE,smoke)

				

				if (g_PrimaryWeapon[player])

				{

					get_weaponname(g_PrimaryWeapon[player],weapon,31)

					engclient_cmd(player, weapon);

				}

			}

		}

	}

			

	set_pev(g_iEntBarrier,pev_solid,SOLID_NOT)

	DispatchKeyValue(g_iEntBarrier, "renderamt", "0");

	

	g_RoundNum++

	set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)

	show_hudmessage(0, "%L", LANG_SERVER, "RELEASE_MSG");

	client_cmd(0, "spk %s", g_RoundStart)

}



//Called on zombie death function

public Respawn_Zombie(id)

{

	if (g_isconnected[id] && cs_get_user_team(id) == CS_TEAM_T)

	{

		if (get_user_health(id) == get_pcvar_float(g_pcvar_zombiehp) || !is_user_alive(id))

			ExecuteHamB(Ham_CS_RoundRespawn, id)

		else

			client_print(id, print_center, "%L", LANG_SERVER, "FAIL_RESPAWN");

	}

}



//Called on all players for late joiners, parent is above

public Respawn_Human(id)

{

	if (!g_isconnected[id] || g_isalive[id] || cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED)

		return PLUGIN_HANDLED

		

	if (!g_isalive[id] && g_iszombie[id])

		ExecuteHamB(Ham_CS_RoundRespawn, id)

				

	if (!g_isalive[id] && g_iszombie[id])

		set_task(3.0,"Respawn_Human",id)

			

	if (g_CanBuild)

	{

		if (!g_isalive[id])

			ExecuteHamB(Ham_CS_RoundRespawn, id)

				

		if (!g_isalive[id])

			set_task(3.0,"Respawn_Human",id)

	}

	return PLUGIN_HANDLED

}



//Sets player health and weapons

public Add_Effects(id)

{

	if (!g_isconnected[id] || !g_isalive[id])

		return PLUGIN_HANDLED

	

	strip_user_weapons(id)

	give_item(id, "weapon_knife")

	

	if (cs_get_user_team(id) == CS_TEAM_T)

	{

		if (g_CanBuild)

			set_user_godmode(id, 1)

		if(access(id, ACCES_HP))

			set_pev(id, pev_health, 5000.0)

		else

			set_pev(id, pev_health, get_pcvar_float(g_pcvar_zombiehp)) // use decimal number

	}

	if (cs_get_user_team(id) == CS_TEAM_CT)

	{

		if(access(id, ACCES_HP))

			set_pev(id, pev_health, 200.0)



		weapon_method_menu(id)

	}

	ShowHealth(id)

	return PLUGIN_HANDLED

}



//AmmoX Ensures BackPack ammo is always full

public ev_AmmoX(id)

{

	set_pdata_int(id, AMMO_SLOT + read_data(1), 200, 5)

} 



public fw_GetGameDescription()

{

	forward_return(FMV_STRING, g_ModName)

	

	return FMRES_SUPERCEDE;

}



public ham_PlayerSpawn_Post(id)

{

	if (!is_user_alive(id) || !cs_get_user_team(id))

		return

		

	set_task(1.0, "Add_Effects", id)

	if (cs_get_user_team(id) == CS_TEAM_CT)

	{

		g_ishuman[id] = true

		g_iszombie[id] = false

	}

	if (cs_get_user_team(id) == CS_TEAM_T)

	{

		g_iszombie[id] = true

		g_ishuman[id] = false

	}

	needhelp[id] = 0

	g_isalive[id] = true

	remove_task(id + MODELSET_TASK)

	if (g_iszombie[id])

	{

		g_HasCustomModel[id] = false

		if(access(id, VIP))

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel[0])

		else if(access(id, ADMIN_MODEL))

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel[1])

		else

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_ZombieModel[2])



		new currentmodel[32]

		fm_get_user_model(id, currentmodel, charsmax(currentmodel))

		if (!equal(currentmodel, g_PlayerModel[id]))

		{

			if (get_gametime() - g_RoundStartTime < 5.0)

				set_task(5.0 * MODELCHANGE_DELAY, "fm_user_model_update", id + MODELSET_TASK)

			else

				fm_user_model_update(id + MODELSET_TASK)

		}

	}

	else if(g_ishuman[id])

	{

		g_HasCustomModel[id] = false

		if(access(id, VIP))

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_HumanModel[0])

		else if(access(id, ADMIN_MODEL))

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_HumanModel[1])

		else

			copy(g_PlayerModel[id], charsmax(g_PlayerModel[]), g_HumanModel[2])



		new currentmodel[32]

		fm_get_user_model(id, currentmodel, charsmax(currentmodel))

		if (!equal(currentmodel, g_PlayerModel[id]))

		{

			if (get_gametime() - g_RoundStartTime < 5.0)

				set_task(5.0 * MODELCHANGE_DELAY, "fm_user_model_update", id + MODELSET_TASK)

			else

				fm_user_model_update(id + MODELSET_TASK)

		}

	}

}



public fw_SetClientKeyValue(id, const infobuffer[], const key[])

{   

	if (g_HasCustomModel[id] && equal(key, "model"))

		return FMRES_SUPERCEDE

	return FMRES_IGNORED

}



public fw_ClientUserInfoChanged(id)

{

	if (!g_HasCustomModel[id])

		return FMRES_IGNORED



	static currentmodel[32]

	fm_get_user_model(id, currentmodel, charsmax(currentmodel))

	if (!equal(currentmodel, g_PlayerModel[id]) && !task_exists(id + MODELSET_TASK))

		fm_set_user_model(id + MODELSET_TASK)

	return FMRES_IGNORED

}



public fm_user_model_update(taskid)

{

	static Float:current_time

	current_time = get_gametime()

	

	if (current_time - g_ModelsTargetTime >= MODELCHANGE_DELAY)

	{

		fm_set_user_model(taskid)

		g_ModelsTargetTime = current_time

	}

	else

	{

		set_task((g_ModelsTargetTime + MODELCHANGE_DELAY) - current_time, "fm_set_user_model", taskid)

		g_ModelsTargetTime = g_ModelsTargetTime + MODELCHANGE_DELAY

	}

}



public fm_set_user_model(player)

{

	player -= MODELSET_TASK

	engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", g_PlayerModel[player])

	g_HasCustomModel[player] = true

}



stock fm_get_user_model(player, model[], len)

{

	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)

}



stock fm_reset_user_model(player)

{

	g_HasCustomModel[player] = false

	dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))

}



public cmdMoveEnt(id)

{

	if (g_BuildBan[id] == true)

		return PLUGIN_HANDLED

	

	if (g_iszombie[id] && !access(id, AFTER_BUILD))

      		return PLUGIN_HANDLED 

			

	if (!g_CanBuild && !access(id, AFTER_BUILD))

	{

		client_print (id, print_center, "%L", LANG_SERVER, "FAIL_TIME_UP")

		return PLUGIN_HANDLED 

	}

	

	if (!g_isalive[id] && !access(id, DEAD_BUILD))

	{

		client_print (id, print_center, "%L", LANG_SERVER, "FAIL_DEAD")

		return PLUGIN_HANDLED 

	}



	if (g_pEnt[id] && is_valid_ent(g_pEnt[id])) 

		cmdStopEnt(id)

	

	new ent, bodypart

	get_user_aiming (id,ent,bodypart)

	

	if (!is_valid_ent(ent) || ent == g_iEntBarrier)

	{

		return PLUGIN_HANDLED

	}

	

	if (ent <= g_MaxPlayers && g_isalive[ent])

	{	

		return PLUGIN_HANDLED

	}

		

	if (IsBlockLocked(ent) || g_MovingEnt[ent])

	{

		return PLUGIN_HANDLED

	}



	if (get_pcvar_num(g_pcvar_claimable) == 1||get_pcvar_num(g_pcvar_claimable) == 3)

	{

		if (!g_EntOwner[ent])

		{

			if ((g_OwnedEnts[id]<get_pcvar_num(g_pcvar_maxclaimable)) || get_pcvar_num(g_pcvar_maxclaimable) == 0)

			{

				g_EntOwner[ent] = id

				g_OwnedEnts[id]++

			}

			else

			{

				client_print (id, print_center, "%L", LANG_SERVER, "FAIL_MAXOWNED", get_pcvar_num(g_pcvar_maxclaimable))

				//return PLUGIN_HANDLED 

			}

		}

		else if (g_EntOwner[ent] != id && !access(id, AFTER_BUILD))

		{

			client_print (id, print_center, "%L", LANG_SERVER, "FAIL_ALREADYOWNED")

			return PLUGIN_HANDLED 

		}

	}

	

	new tname[7], cname[10];

	entity_get_string(ent, EV_SZ_targetname, tname, 6);

	entity_get_string(ent, EV_SZ_classname, cname, 9);

	if (!equal(cname, "func_wall") || equal(tname, "ignore"))

	{

		return PLUGIN_HANDLED

	}

	

	new origin[3], entOrigin[3], Float:orig[3], Float:mins[3], Float:maxs[3], dist

	

	entity_get_vector(ent, EV_VEC_origin, orig);

	entity_get_vector(ent, EV_VEC_mins, mins);

	entity_get_vector(ent, EV_VEC_maxs, maxs);



	entOrigin[0] = floatround((mins[0] + maxs[0]) / 2 + orig[0]);

	entOrigin[1] = floatround((mins[1] + maxs[1]) / 2 + orig[1]);

	entOrigin[2] = floatround((mins[2] + maxs[2]) / 2 + orig[2]);

	

	get_user_origin(id, origin);



	dist = get_distance(origin, entOrigin);

	

	new max = get_pcvar_num(g_pcvar_entmaxdist)

	new min = get_pcvar_num(g_pcvar_entmindist)

	if (min) //min

	{

		if(dist < min) //minimum

			dist = get_pcvar_num(g_pcvar_entsetdist);

	}



	if (max) //maximum

	{

		if (dist > max)

			return PLUGIN_HANDLED

	}

	

	DispatchKeyValue(ent, "rendermode", "1");

	DispatchKeyValue(ent, "renderamt", "100");

	DispatchKeyValue(ent, "rendercolor", "120.0 219.0 226.0");



	g_MovingEnt[ent] = true

	g_EntMover[ent] = id

	g_pEnt[id] = ent

	g_pDist[id] = dist

	

	if (!g_CanBuild && access(id, AFTER_BUILD))

	{

		new adminauthid[35],adminname[35]

		get_user_authid (id,adminauthid,34)

		get_user_name(id,adminname,34)

		Log("[MOVE] Admin: %s || SteamID: %s moved an entity", adminname, adminauthid)

		client_print(0, print_chat, "Adminul %s muta piese dupa timpul de constructie.",adminname)

	}

	

	return PLUGIN_HANDLED

}



/*public fw_CmdStart(id, uc, random)

{

	new buttons = get_uc(uc, UC_Buttons)

	if(g_CanBuild && (buttons & IN_ATTACK))

	{

		buttons &= ~IN_ATTACK

		set_uc(uc, UC_Buttons, buttons)

		return FMRES_SUPERCEDE

	}

	return FMRES_IGNORED

}*/



public fw_Player_PreThink(id)

{

	if (!g_pEnt[id] || !is_valid_ent(g_pEnt[id]))

		return FMRES_HANDLED

	

	new buttons = pev(id, pev_button)

	if(buttons & IN_ATTACK)

	{

		g_pDist[id] += 3;

		

		if (g_pDist[id] > get_pcvar_num(g_pcvar_entmaxdist))

		{

			g_pDist[id] = get_pcvar_num(g_pcvar_entmaxdist)

			client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX")

			return FMRES_HANDLED

		}

		else

			client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH")

	}

	else if(buttons & IN_ATTACK2)

	{

		g_pDist[id] -= 3;

			

		if (g_pDist[id] < get_pcvar_num(g_pcvar_entsetdist))

		{

			g_pDist[id] = get_pcvar_num(g_pcvar_entsetdist)

			client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN")

			return FMRES_HANDLED

		}

		else

			client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL")

	}

	

	GrabThink(id)

	

	return FMRES_HANDLED

}



public GrabThink(id)

{

	new origin[3], Float:aiming[3], Float:pOrigin[3], Float:mins[3], Float:maxs[3], Float:neworigin[3]

	

	if (!g_isconnected[id] || (g_pEnt[id] <= g_MaxPlayers)? !g_isconnected[id]:!is_valid_ent(g_pEnt[id]))

	{

		cmdStopEnt(id)

		return PLUGIN_HANDLED

	}

	

	entity_get_vector(g_pEnt[id], EV_VEC_mins, mins);

	entity_get_vector(g_pEnt[id], EV_VEC_maxs, maxs);

	

	get_user_origin(id, origin, 3);

	IVecFVec(origin, aiming);

	get_user_origin(id, origin);

	IVecFVec(origin, pOrigin);

	

	aiming[0] -= pOrigin[0];

	aiming[1] -= pOrigin[1];

	aiming[2] -= pOrigin[2];



	new Float:scalar = g_pDist[id] / vector_length(aiming);

	

	IVecFVec(origin, neworigin);



	neworigin[0] += aiming[0] * scalar - (mins[0] + maxs[0]) / 2.0;

	neworigin[1] += aiming[1] * scalar - (mins[1] + maxs[1]) / 2.0;

	neworigin[2] += aiming[2] * scalar - (mins[2] + maxs[2]) / 2.0;

		

	entity_set_origin(g_pEnt[id], neworigin);

	return PLUGIN_HANDLED

}



public cmdStopEnt(id)

{

	g_MovingEnt[g_pEnt[id]] = false

	DispatchKeyValue(g_pEnt[id], "rendermode", "0");

	DispatchKeyValue(g_pEnt[id], "renderamt", "255");

	DispatchKeyValue(g_pEnt[id], "rendercolor", "0.0 0.0 0.0");

	if (get_pcvar_num(g_pcvar_blockgrav) == 1)

		drop_to_floor(g_pEnt[id])

	g_EntMover[g_pEnt[id]] = 0

	g_LastMover[g_pEnt[id]] = id

	g_pEnt[id] = 0

}



public fw_Traceline(Float:start[3], Float:end[3], conditions, id, trace)

{

	if (!is_user_connected(id)) return PLUGIN_HANDLED

	

	new ent = get_tr2(trace, TR_pHit)

	

	if (pev_valid(ent))

	{

		new ent,body

		get_user_aiming(id,ent,body)

		

		new cname[10], tname[7];

		entity_get_string(ent, EV_SZ_classname, cname, 9);

		entity_get_string(ent, EV_SZ_targetname, tname, 6);

		if (equal(cname, "func_wall") && !equal(tname, "ignore") && ent != g_iEntBarrier && get_pcvar_num(g_pcvar_showmovers) == 1)

		{

			if (g_CanBuild || access(id, ADMIN_KICK))

			{

				if (IsBlockLocked(ent))

				{

					set_hudmessage(255, 0, 0, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01);

					ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_LOCKED");

					return PLUGIN_HANDLED

				}

				set_hudmessage(0, 50, 255, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01);

				if (get_pcvar_num(g_pcvar_claimable) == 3)

				{

					new currentmover[35], lastmover[35], hudmess[100], strg[56]

					if (g_LastMover[ent] && g_EntMover[ent])

					{

						get_user_name(g_EntMover[ent],currentmover,34)

						get_user_name(g_LastMover[ent],lastmover,34)

						format(strg, charsmax(strg), "%L^n", LANG_SERVER, "OBJECT_INFO3", currentmover, lastmover)

						add(hudmess, charsmax(hudmess), strg);

					}

					else if (g_EntMover[ent] && !g_LastMover[ent])

					{

						get_user_name(g_EntMover[ent],currentmover,34)

						format(strg, charsmax(strg), "%L^n", LANG_SERVER, "OBJECT_INFO1", currentmover)

						add(hudmess, charsmax(hudmess), strg);

					}

					if (g_LastMover[ent] && !g_EntMover[ent])

					{

						get_user_name(g_LastMover[ent],lastmover,34)

						format(strg, charsmax(strg), "%L^n", LANG_SERVER, "OBJECT_INFO2", lastmover)

						add(hudmess, charsmax(hudmess), strg);

					}

					else if (!g_LastMover[ent] && !g_EntMover[ent])

					{

						format(strg, charsmax(strg), "%L^n", LANG_SERVER, "OBJECT_INFO4")

						add(hudmess, charsmax(hudmess), strg);

					}

					if (g_EntOwner[ent])

					{

						new entowner[35]

						get_user_name(g_EntOwner[ent],entowner,34)

						format(strg, charsmax(strg), "%L^n", LANG_SERVER, "OBJECT_OWNER", entowner)

						add(hudmess, charsmax(hudmess), strg);

					}

					ShowSyncHudMsg(id, gHudSyncInfo, hudmess)

				}

				else if (get_pcvar_num(g_pcvar_claimable) == 0)

				{

					new currentmover[35], lastmover[35]

					if (g_EntMover[ent])

					{

						get_user_name(g_EntMover[ent],currentmover,34)

						if (!g_LastMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO1", currentmover);

					}

					if (g_LastMover[ent])

					{

						get_user_name(g_LastMover[ent],lastmover,34)

						if (!g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO2", lastmover);

					}

					if (g_LastMover[ent] && g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO3", currentmover, lastmover);

					else if (!g_LastMover[ent] && !g_EntMover[ent]) ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_INFO4");

				}

				else

				{

					if (g_EntOwner[ent])

					{

						new entowner[35]

						get_user_name(g_EntOwner[ent],entowner,34)

						ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_OWNER", entowner);

					}

					else 

					{

						ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "OBJECT_OWNER_NONE");

					}

				}

			}

		}

	}

	if (!pev_valid(ent)) ClearSyncHud(id, gHudSyncInfo);

	

	return PLUGIN_HANDLED

}



public cmdLockBlock(id)

{

	if (!access(id, LOCK_BLOCKS))

		return PLUGIN_HANDLED

		

	new ent, bodypart

	get_user_aiming (id,ent,bodypart)

	

	new tname[7], cname[10];

	entity_get_string(ent, EV_SZ_targetname, tname, 6);

	entity_get_string(ent, EV_SZ_classname, cname, 9);



	if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(cname, "func_wall") || equal(tname, "ignore")) return PLUGIN_HANDLED

	

	if (!IsBlockLocked(ent) && !g_MovingEnt[ent])

	{

		LockBlock(ent)

		DispatchKeyValue(ent, "rendermode", "1");

		DispatchKeyValue(ent, "rendercolor", "125.0 0.0 0.0");

		

		g_OwnedEnts[g_EntOwner[ent]]--

		g_EntOwner[ent] = 0

	}

	else if (IsBlockLocked(ent))

	{

		UnlockBlock(ent)

		DispatchKeyValue(ent, "rendermode", "0");

	}

	return PLUGIN_HANDLED

}



public cmdRemoveClaim(id)

{

	if (!access(id, LOCK_BLOCKS))

      		return PLUGIN_HANDLED 

		

	new ent, bodypart

	get_user_aiming (id,ent,bodypart)

	

	new tname[7], cname[10];

	entity_get_string(ent, EV_SZ_targetname, tname, 6);

	entity_get_string(ent, EV_SZ_classname, cname, 9);



	if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(cname, "func_wall") || equal(tname, "ignore") || IsBlockLocked(ent)) return PLUGIN_HANDLED



	g_OwnedEnts[g_EntOwner[ent]]--

	g_EntOwner[ent] = 0

	

	return PLUGIN_HANDLED

}



public cmdRemoveEnt(id)

{

	if (!access(id, REMOVE_BLOCK))

      		return PLUGIN_HANDLED 



	if (!g_isalive[id] && !access(id, DEAD_REMOVE))

	{

		client_print (id, print_center, "%L", LANG_SERVER, "FAIL_REMOVE")

		return PLUGIN_HANDLED 

	}

      	

	new ent, bodypart

	get_user_aiming (id,ent,bodypart)

	

	if(!is_valid_ent(ent) || ent == g_iEntBarrier || (ent <= g_MaxPlayers && g_isalive[ent]))

		return PLUGIN_HANDLED

	

	if(IsBlockLocked(ent) || g_MovingEnt[ent])

		return PLUGIN_HANDLED



	new tname[7], cname[10];

	entity_get_string(ent, EV_SZ_targetname, tname, 6);

	entity_get_string(ent, EV_SZ_classname, cname, 9);

	if(!equal(cname, "func_wall"))

		return PLUGIN_HANDLED

	

	if(equal(tname, "ignore"))

		return PLUGIN_HANDLED

		

	g_OwnedEnts[g_EntOwner[ent]]--

	g_EntOwner[ent] = 0

	

	remove_entity(ent)

	

	new adminauthid[35],adminname[35]

	get_user_authid (id,adminauthid,34)

	get_user_name(id,adminname,34)

	Log("[REMOVE] Admin: %s || SteamID: %s removed an entity", adminname, adminauthid)

	

	return PLUGIN_HANDLED

}



// Ham Weapon Deploy Forward (forces knife only)

public ham_ItemDeploy_Post(weapon_ent)

{

	static owner

	owner = get_pdata_cbase(weapon_ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);

	

	static weaponid

	weaponid = cs_get_weapon_id(weapon_ent)

	

	g_CurrentWeapon[owner] = weaponid

	

	if (g_iszombie[owner] && !((1<<weaponid) & ZOMBIE_ALLOWED_WEAPONS_BITSUM))

	{

		g_CurrentWeapon[owner] = CSW_KNIFE

		engclient_cmd(owner, "weapon_knife")

	}

	else if (g_CanBuild && g_ishuman[owner])

	{

		g_CurrentWeapon[owner] = CSW_KNIFE

		engclient_cmd(owner, "weapon_knife")

		client_print(owner, print_center, "%L", LANG_SERVER, "FAIL_KNIFE_ONLY");

	}

}



public msgRoundEnd(const MsgId, const MsgDest, const MsgEntity)

{

	static Message[192]

	get_msg_arg_string(2, Message, 191)

	

	set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1)

	

	if(equal(Message, "#Game_bomb_drop"))

		return PLUGIN_HANDLED

	

	if (equal(Message, "#Terrorists_Win"))

	{

		show_hudmessage(0, "Zombies Win!")

		set_msg_arg_string(2, "")

		switch (random_num(1, 4))

		{

			case 1: client_cmd(0, "spk ambience/the_horror1.wav")

			case 2: client_cmd(0, "spk ambience/the_horror2.wav")

			case 3: client_cmd(0, "spk ambience/the_horror3.wav")

			case 4: client_cmd(0, "spk ambience/the_horror4.wav")

		}

		return PLUGIN_HANDLED

	}

	else if (equal(Message, "#Target_Saved") || equal(Message, "#CTs_Win"))

	{

		show_hudmessage(0, "Builders Win!")

		set_msg_arg_string(2, "")

		switch (random_num(1, 3))

		{

			case 1: client_cmd(0, "spk barney/ba_another.wav")

			case 2: client_cmd(0, "spk barney/ba_firepl.wav")

			case 3: client_cmd(0, "spk barney/ba_seethat.wav")

		}

		return PLUGIN_HANDLED

	}

	return PLUGIN_HANDLED

}



public ham_WeaponCleaner_Post(iEntity)

{

	call_think(iEntity)

}

public message_show_menu(msgid, dest, id) 

{

	if (!should_autojoin(id))

		return PLUGIN_CONTINUE



	static team_select[] = "#Team_Select"

	static menu_text_code[sizeof team_select]

	get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)

	if (!equal(menu_text_code, team_select))

		return PLUGIN_CONTINUE



	set_force_team_join_task(id, msgid)



	return PLUGIN_HANDLED

}



public message_vgui_menu(msgid, dest, id) 

{

	if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id))

		return PLUGIN_CONTINUE

		

	set_force_team_join_task(id, msgid)



	return PLUGIN_HANDLED

}



bool:should_autojoin(id) 

{

	return (!get_user_team(id))

}



set_force_team_join_task(id, menu_msgid) 

{

	static param_menu_msgid[2]

	param_menu_msgid[0] = menu_msgid

	set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)

}



public task_force_team_join(menu_msgid[], id) 

{

	if (get_user_team(id))

		return



	static team[2], class[2]

	get_pcvar_string(g_pcvar_team, team, sizeof team - 1)

	get_pcvar_string(g_pcvar_class, class, sizeof class - 1)

	force_team_join(id, menu_msgid[0], team, class)

}



stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") 

{

	static jointeam[] = "jointeam"

	if (class[0] == '0') {

		engclient_cmd(id, jointeam, team)

		return

	}



	static msg_block, joinclass[] = "joinclass"

	msg_block = get_msg_block(menu_msgid)

	set_msg_block(menu_msgid, BLOCK_SET)

	engclient_cmd(id, jointeam, team)

	engclient_cmd(id, joinclass, class)

	set_msg_block(menu_msgid, msg_block)

}



public clcmd_changeteam(id)

{

	if (g_CanBuild) 

		weapon_method_menu(id)

	else 

		client_print (id, print_center, "%L", LANG_SERVER, "FAIL_WEAPONS")

	

	if (g_iszombie[id])

		client_print (id, print_center, "%L", LANG_SERVER, "FAIL_ZOMBIE")

		

	return PLUGIN_HANDLED

}



public clcmd_drop(id)

{

	client_print (id, print_center, "%L", LANG_SERVER, "FAIL_DROP")

	return PLUGIN_HANDLED

}



public clcmd_buy(id)

{

	client_print (id, print_center, "%L", LANG_SERVER, "FAIL_BUY")

	return PLUGIN_HANDLED

}



public fw_Suicide(id)

{

	client_print (id, print_center, "%L", LANG_SERVER, "FAIL_SUICIDE")

	console_print (id, "%L", LANG_SERVER, "FAIL_SUICIDE")

	return FMRES_SUPERCEDE;

}



public Base_Calc()

{

	new players[32], num, ct, basenum

	get_players(players, num)

	new player

	for(new i = 0; i < num; i++)

	{

		player = players[i]

		if (cs_get_user_team(player) == CS_TEAM_CT)

			ct++



		if (ct < 6)

			basenum = 2

		else

			basenum = (ct/3)

	}

	print_color(0, "%s %L", formatmodname, LANG_SERVER, "BASE_CALC", basenum)

}



public cmdBadSpawn_Survivor(id)

{

	if (access(id, BAD_SPAWN))

	{

		new players[32], num

		get_players(players, num)

			

		new player

		for(new i = 0; i < num; i++)

		{

			player = players[i]

			if (cs_get_user_team(player) == CS_TEAM_CT && !is_user_alive(player) && g_isconnected[player] && g_CanBuild)

				ExecuteHamB(Ham_CS_RoundRespawn, player)

		}

	}

}



public Fix_Spawns()

{

	new players[32], num

	get_players(players, num)

			

	new player

	for(new i = 0; i < num; i++)

	{

		player = players[i]

		if (cs_get_user_team(player) == CS_TEAM_CT && !is_user_alive(player) && g_isconnected[player] && g_CanBuild)

			ExecuteHamB(Ham_CS_RoundRespawn, player)

	}

}



public cmdBadSpawn(id)

{

	if (g_isconnected[id] && g_ishuman[id] && g_CanBuild)

		ExecuteHamB(Ham_CS_RoundRespawn, id)

}



public cmdBadSpawn_Zombie(id)

{

	if (access(id, BAD_SPAWN))

	{

		new players[32], num

		get_players(players, num)

			

		new player

		for(new i = 0; i < num; i++)

		{

			player = players[i]

			if (cs_get_user_team(player) == CS_TEAM_T && !is_user_alive(player) && g_isconnected[player])

				ExecuteHamB(Ham_CS_RoundRespawn, player)

		}

	}

}



public msgStatusIcon(const iMsgId, const iMsgDest, const iPlayer)

{

	if(is_user_alive(iPlayer)) 

	{

		static szMsg[8]

		get_msg_arg_string(2, szMsg, 7)

    

		if(equal(szMsg, "buyzone"))

		{

			set_pdata_int(iPlayer, OFFSET_BUYZONE, get_pdata_int(iPlayer, OFFSET_BUYZONE) & ~(1<<0))

			return PLUGIN_HANDLED

		}

	}

	return PLUGIN_CONTINUE

}



public cmdBuildBan(id)

{

	if (access(id, BUILD_BAN))

	{

		new arg[32]

		read_argv(1, arg, 31)

		new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)

		g_BuildBan[player] = true

		cmdStopEnt(player)

		

		new adminauthid[35],adminname[35],playername[35],playerauthid[35]

		get_user_name(id,adminname,34)

		get_user_authid (id,adminauthid,34)

		get_user_name(player, playername, 34)

		get_user_authid (player,playerauthid,34)

		Log("[MOVE] Admin: %s || SteamID: %s banned Player: %s || SteamID: %s from building", adminname, adminauthid, playername, playerauthid)

		

		client_print(id, print_console, "%L", LANG_SERVER, "BUILD_BAN1", playername)

		client_print(player, print_center, "%L", LANG_SERVER, "BUILD_BAN2")

	}

}



public cmdBuildUnban(id)

{

	if (access(id, BUILD_BAN))

	{

		new arg[32], playername[35]

	

		read_argv(1, arg, 31)

		new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)

		get_user_name(player, playername, 34)

		client_print(id, print_console, "%L", LANG_SERVER, "UNBUILD_BAN1", playername)

		g_BuildBan[player] = false

		print_color(player, "%s %L", formatmodname, LANG_SERVER, "UNBUILD_BAN2")

	}

}



public cmdRevive(id)

{

	if (access(id, REVIVE))

	{

		new arg[32]

		read_argv(1, arg, 31)

		new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)



		if (is_user_alive(player))

		{

			client_print(id, print_console, "%L", LANG_SERVER, "FAIL_REVIVE")

			return PLUGIN_HANDLED

		}

		

		ExecuteHamB(Ham_CS_RoundRespawn, player)

		

		new adminauthid[35],adminname[35],playername[35],playerauthid[35]

		get_user_name(id,adminname,34)

		get_user_authid (id,adminauthid,34)

		get_user_name(player, playername, 34)

		get_user_authid (player,playerauthid,34)

		Log("[REVIVE] Admin: %s || SteamID: %s revived Player: %s || SteamID: %s", adminname, adminauthid, playername, playerauthid)

		

		client_print(id, print_console, "%L", LANG_SERVER, "REVIVE1", playername)

		client_print(player, print_center, "%L", LANG_SERVER, "REVIVE2")

	}

	return PLUGIN_HANDLED

}



public cmdSwap(id)

{

	if (access(id, SWAP))

	{

		new arg[32]

		read_argv(1, arg, 31)

		new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)



		if (!is_user_connected(player)) return PLUGIN_HANDLED

		

		cs_set_user_team(player, cs_get_user_team(player) == CS_TEAM_T ? CS_TEAM_CT:CS_TEAM_T)

			

		if (cs_get_user_team(player) == CS_TEAM_T)

		{

			g_iszombie[player] = true

			g_ishuman[player] = false

		}

		if (cs_get_user_team(player) == CS_TEAM_CT)

		{

			g_ishuman[player] = true

			g_iszombie[player] = false

		}

		

		if (is_user_alive(player))

			ExecuteHamB(Ham_CS_RoundRespawn, player)

		

		new adminauthid[35],adminname[35],playername[35],playerauthid[35]

		get_user_name(id,adminname,34)

		get_user_authid (id,adminauthid,34)

		get_user_name(player, playername, 34)

		get_user_authid (player,playerauthid,34)

		Log("[TEAM-SWAP] Admin: %s || SteamID: %s swapped Player: %s || SteamID: %s", adminname, adminauthid, playername, playerauthid)

		

		client_print(id, print_console, "%L", LANG_SERVER, "SWAP1", playername)

		client_print(player, print_center, "%L", LANG_SERVER, "SWAP2")

	}

	return PLUGIN_HANDLED

}



public cmdStartRound(id)

{

	if (access(id, START_ROUND))

	{

		if (count_down<10)

		{

			client_print(id, print_console, "%L", LANG_SERVER, "FAIL_START_ROUND")

			return PLUGIN_HANDLED

		}

		g_CanBuild = false

		Release_Zombies()

		

		new adminauthid[35],adminname[35]

		get_user_name(id,adminname,34)

		get_user_authid (id,adminauthid,34)

		Log("[START_ROUND] Admin: %s || SteamID: %s started the round", adminname, adminauthid)

		

		client_print(id, print_center, "%L", LANG_SERVER, "START_ROUND")

		client_print(id, print_chat, "^x04%L", LANG_SERVER, "START_ROUND")

	}

	return PLUGIN_HANDLED

}



public cmdCheckRound(id)

{

	if (g_ZombiesReleased) print_color(id, "%s Runda: %d of %d", formatmodname, (g_RoundNum), g_pcvar_maxrounds)

	else if (!g_ZombiesReleased) print_color(id, "%s Runda: %d of %d", formatmodname, (g_RoundNum+1), g_pcvar_maxrounds)

}



public msgStatusValue()

{

	//Block the name info, of person you aim at

	set_msg_block(gmsgStatusText, BLOCK_SET);

}



public ev_SetTeam(id)

{

	g_friend[id] = read_data(2)

}



public ev_ShowStatus(id) //called when id looks at someone

{

	new name[32], pid = read_data(2);

	new stats[8],bodyhits[8]

	

	get_user_name(pid, name, 31);

	new color1 = 0, color2 = 0;



	if (get_user_team(pid) == 1)

		color1 = 255;

	else

		color2 = 255;



	new Float:height=0.35

	//height=0.60



	if (g_friend[id] == 1)	// friend

	{

		new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo);

		new wpnname[32];



		if (wpnid)

			xmod_get_wpnname(wpnid, wpnname, 31);



		new rank = get_user_stats(pid, stats, bodyhits)

		set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01);

		ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "PLAYER_INFO1", name, rank, get_user_health(pid), wpnname);

	} 

	if (g_friend[id] != 1) //enemy

	{

		new rank = get_user_stats(pid, stats, bodyhits)

		set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01);

		ShowSyncHudMsg(id, gHudSyncInfo, "%L", LANG_SERVER, "PLAYER_INFO2", name, rank);

	}

}



public ev_HideStatus(id)

{

	ClearSyncHud(id, gHudSyncInfo);

}



public weapon_method_menu(id)

{

	if(firsttime[id])

	{

		firsttime[id] = false

		prim_weapons_menu(id,0)

	}

	else

	{

		cur_offset[id] = 0

		if(ask[id])

		{

			show_menu(id,(1<<0)|(1<<1)|(1<<2),"Metode de selectie a armelor^n^n1. Arme noi^n2. Arme precedente^n3. Arme precedente definitiv",-1,"WeaponMethodMenu")

		}

		else

		{

			give_weapons(id)

		}

	}

}



public weapon_method_pushed(id,key)

{

	switch(key)

	{

		case 0:

		{

			ask[id] = true

			prim_weapons_menu(id,0)

		}	

		case 1:

		{

			ask[id] = true

			give_weapons(id)

		}

		case 2:

		{

			print_color(id, "%s %L", formatmodname, LANG_SERVER, "GUNS_MSG")

			ask[id] = false

			give_weapons(id)

		}

	}

	return PLUGIN_HANDLED;

}



public prim_weapons_menu(id,offset)

{

	if(offset<0) offset = 0



	new cvar_value[32]

	get_pcvar_string(g_pcvar_allowedweps,cvar_value,31)

	new flags = read_flags(cvar_value)



	new keys, curnum, menu[2048]

	for(new i=offset;i<19;i++)

	{

		if(flags & power(2,i))

		{

			options_on_menu[curnum][id] = i

			keys += (1<<curnum)

	

			curnum++

			format(menu,2047,"%s^n%d. %s",menu,curnum,WEAPONNAMES[i])

	

			if(curnum==8)

			break;

		}

	}



	format(menu,2047,"\yPrimary Weapon:\w^n%s^n",menu)

	if(curnum==8 && offset<12)

	{

		keys += (1<<8)

		format(menu,2047,"%s^n9. Next",menu)

	}

	if(offset)

	{

		keys += (1<<9)

		format(menu,2047,"%s^n0. Back",menu)

	}



	show_menu(id,keys,menu,-1,"PrimaryWeaponSelect")

}



public prim_weapons_pushed(id,key)

{

	if(key<8)

	{

		weapon_picked[0][id] = options_on_menu[key][id]

		cur_offset[id] = 0

		sec_weapons_menu(id,0)

	}

	else

	{

		if(key==8)

			cur_offset[id] += 8

		if(key==9)

			cur_offset[id] -= 8

		prim_weapons_menu(id,cur_offset[id])

	}

	return ;

}



public sec_weapons_menu(id,offset)

{

	if(offset<0) offset = 0



	new cvar_value[32]

	get_pcvar_string(g_pcvar_allowedweps,cvar_value,31)

	new flags = read_flags(cvar_value)



	new keys, curnum, menu[2048]

	for(new i=18;i<24;i++)

	{

		if(flags & power(2,i))

		{

		options_on_menu[curnum][id] = i

		keys += (1<<curnum)



		curnum++

		format(menu,2047,"%s^n%d. %s",menu,curnum,WEAPONNAMES[i])

		}

	}



	format(menu,2047,"\ySecondary Weapon:\w^n%s",menu)



	show_menu(id,keys,menu,-1,"SecWeaponSelect")

}



public sec_weapons_pushed(id,key)

{

	if(key<8)

	{

		weapon_picked[1][id] = options_on_menu[key][id]

	}

	give_weapons(id)

	return ;

}



public give_weapons(id)

{

	strip_user_weapons(id)



	give_item(id,"weapon_knife")

   

	new weapon[32]

	new csw = csw_contant(weapon_picked[0][id])

	get_weaponname(csw,weapon,31)

	give_item(id,weapon)

	cs_set_user_bpammo(id,csw,999)

	g_PrimaryWeapon[id] = csw



	csw = csw_contant(weapon_picked[1][id])

	get_weaponname(csw,weapon,31)

	give_item(id,weapon)

	cs_set_user_bpammo(id,csw,999)

}



public csw_contant(weapon)

{

	new num = 29

	switch(weapon)

	{

		case 0: num = 3

		case 1: num = 5

		case 2: num = 7

		case 3: num = 8

		case 4: num = 12

		case 5: num = 13

		case 6: num = 14

		case 7: num = 15

		case 8: num = 18

		case 9: num = 19

		case 10: num = 20

		case 11: num = 21

		case 12: num = 22

		case 13: num = 23

		case 14: num = 24

		case 15: num = 27

		case 16: num = 28

		case 17: num = 30

		case 18: num = 1

		case 19: num = 10

		case 20: num = 11

		case 21: num = 16

		case 22: num = 17

		case 23: num = 26

		case 24:

		{

			new s_weapon[32]

		

			get_pcvar_string(g_pcvar_allowedweps,s_weapon,31)

		   

			new flags = read_flags(s_weapon)

			do

			{

				num = random_num(0,18)

				if(!(num & flags))

				{

					num = -1

				}

			}

			while(num==-1)

			num = csw_contant(num)

		}

		case 25:

		{

			new s_weapon[32]



			get_pcvar_string(g_pcvar_allowedweps,s_weapon,31)

		

			new flags = read_flags(s_weapon)

			do

			{

				num = random_num(18,23)

				if(!(num & flags))

				{

					num = -1

				}

			}

			while(num==-1)

			num = csw_contant(num)

		}

	}

	return num;

}





public cmdGuns(id)

{

	if(!g_isalive[id] || !g_isconnected[id] || !g_CanBuild)

		return PLUGIN_HANDLED

	

	if(!g_ishuman[id])

		return PLUGIN_HANDLED	



	ask[id] = true

	weapon_method_menu(id)

	return PLUGIN_HANDLED

}



public ev_Health(id)

{

	ShowHealth(id);

}



public ShowHealth(id)

{

	if (is_user_alive(id))

	{

		new Float:hud_time = get_pcvar_float(g_pcvar_healthtime);

		

		set_hudmessage(255, 255, 255, -1.0, 0.9, 0, hud_time, hud_time, 0.1, 0.2, 4);

		show_hudmessage(id, "%L", LANG_SERVER, "PLAYER_HEALTH", get_user_health(id));

		

		set_task(hud_time - 0.1, "ShowHealth", id);

	}

}

public unhelp(id)

{

	if (access(id, ACCES_HELP))

	{

		new arg[32]

		read_argv(1, arg, charsmax(arg))

		new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)

		if(!is_user_connected(player))

		{

			console_print(id, "Playerul scris nu este conectat pe server")

			return PLUGIN_HANDLED

		}

		if(!needhelp[player])

		{

			console_print(id, "Playerul scris nu are solicitat cerere de ajutor")

			return PLUGIN_HANDLED

		}



		new playername[35],adminname[35]

		get_user_name(id,adminname,34)

		get_user_name(player,playername,34)

		Log("[UNHELP] Admin: %s || Player: %s", adminname, playername)

		

		print_color(0, "^x04[BBx.PlayArena.Ro]^x01 Adminul ^x03%s^x01 a scos cererea de ajutor a lui ^x03%s",adminname,playername)

		needhelp[player] = 0

		for(new i; i < 32;i++)

			if(task_exists(i+500))

				remove_task(i+500)

	}

	return PLUGIN_HANDLED

}

public say_help(id)

{

	if(is_user_alive(id))

	{

		if(needhelp[id])

			print_color(id, "^x04[BBx.PlayArena.Ro]^x01 Deja ai o cerere de ajutor, asteapta")

		else if(access(id, ACCES_HELP))

			print_color(id, "^x04[BBx.PlayArena.Ro]^x01 Esti admin, nu poti folosi /help")

		else

		{

			new countadmin, stringAdmin[55], adminName[32], playerName[32]

			needhelp[id] = 1

			get_user_name(id, playerName, charsmax(playerName))

			for(new i; i < 32;i++)

			{

				if(is_user_alive(i) && access(i, ACCES_HELP))

				{

					get_user_name(i, adminName, charsmax(adminName))

					if(!task_exists(i+500))

						set_task(2.0, "ShowRadars", i+500, _, _, "b");



					print_color(i, "^x04Playerul ^x03%s ^x04a facut o cerere de ajutor!",playerName)

					print_color(i, "^x04Vei primi imediat coordonatele pe radar")

					countadmin++

					if(countadmin == 1)

						format(stringAdmin, charsmax(stringAdmin), "^x04 Admin(s) ^x03%s", adminName)

					else if(countadmin < 4)

						format(stringAdmin, charsmax(stringAdmin), "%s,%s", stringAdmin,adminName)

				}

			}

			if(countadmin < 4)

				format(stringAdmin, charsmax(stringAdmin), "x04[BBx.PlayArena.Ro]^x01 Au primit cererea de ajutor", stringAdmin,adminName)

			else

				format(stringAdmin, charsmax(stringAdmin), "^x03%i^x04 admini au primit informare la cererea de ajutor",countadmin)



			print_color(id, stringAdmin)

		}

	}

	else if(is_user_connected(id))

		print_color(id, "^x04[BBx.PlayArena.Ro] ^x01Ca sa ceri ajutor trebuie sa fi in viata")

}

Log(const message_fmt[], any:...)

{

	static message[256];

	vformat(message, sizeof(message) - 1, message_fmt, 2);

	

	static filename[96];

	static dir[64];

	if( !dir[0] )

	{

		get_basedir(dir, sizeof(dir) - 1);

		add(dir, sizeof(dir) - 1, "/logs");

	}

	

	format_time(filename, sizeof(filename) - 1, "%m-%d-%Y");

	format(filename, sizeof(filename) - 1, "%s/BB_ACTIVITY_%s.log", dir, filename);

	

	log_to_file(filename, "%s", message);

}

public ShowRadars(id)

{

	id -= 500

	for(new i;i < 32;i++)

	{

		if(is_user_connected(id) && is_user_connected(i) && id != i && needhelp[i])

		{

			pev(i, pev_origin, fOrigin)

			ShowRadar(id, i)

		}

	}

} 

ShowRadar(id, help)

{

	message_begin( MSG_ONE_UNRELIABLE, g_iMsgIdHostagePos, {0,0,0}, id );

	write_byte( id );

	write_byte( help );

	engfunc(EngFunc_WriteCoord, fOrigin[0]);

	engfunc(EngFunc_WriteCoord, fOrigin[1]);

	engfunc(EngFunc_WriteCoord, fOrigin[2]);

	message_end( );



	message_begin( MSG_ONE_UNRELIABLE, g_iMsgIdHostageK, {0,0,0}, id );

	write_byte( help );

	message_end( );

} 

print_color(target, const message[], any:...)

{

	static buffer[512], i, argscount

	argscount = numargs()

	

	// Send to everyone

	if (!target)

	{

		static player

		for (player = 1; player <= g_MaxPlayers; player++)

		{

			if (!g_isconnected[player])

				continue;



			static changed[5], changedcount

			changedcount = 0



			for (i = 2; i < argscount; i++)

			{

				if (getarg(i) == LANG_PLAYER)

				{

					setarg(i, 0, player)

					changed[changedcount] = i

					changedcount++

				}

			}

			vformat(buffer, charsmax(buffer), message, 3)



			message_begin(MSG_ONE_UNRELIABLE, gmsgSayText, _, player)

			write_byte(player)

			write_string(buffer)

			message_end()

			

			for (i = 0; i < changedcount; i++)

				setarg(changed[i], 0, LANG_PLAYER)

		}

	}

	// Send to specific target

	else

	{

		vformat(buffer, charsmax(buffer), message, 3)



		message_begin(MSG_ONE, gmsgSayText, _, target)

		write_byte(target)

		write_string(buffer)

		message_end()

	}

}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE

*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1030\\ f0\\ fs16 \n\\ par }

*/

Last edited by Ykaru; 08-11-2019 at 09:11.
Ykaru is offline