Raised This Month: $ Target: $400
 0% 

Zombie Swarm Scripting


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
DoviuX
Senior Member
Join Date: Jun 2009
Location: Lithuania
Old 06-23-2009 , 12:10   Zombie Swarm Scripting
Reply With Quote #1

Hi I Tried To Make Something in Zombie Swarm I'am Newbie At Scripting , but now how to speak english not like my friend Ice*Shot Who Writes Threads In All Forum...ok I tryed something with sound like HUNTER_MISS 5 I Show You What I Did To The Zombie_Swarm.sma

Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>

//Sets the sky you want for your server
#define SKYNAME "space"

//The time before zombies have leap at round start. Has to be a float/decimal
#define LEAP_CD		15.0	


#define MAX_PLAYERS 32
new bool:g_restart_attempt[MAX_PLAYERS + 1]

#define HUNTER_MISS 2
new miss_hunter[HUNTER_MISS][] = {"Hunter/Hunter_Miss1.wav", "Hunter/Hunter_Miss2.wav" }

#define SMOKER_MISS 2
new miss_smoker[SMOKER_MISS][] = {"Smoker/Smoker_Miss1.wav", "Smoker/Smoker_Miss2.wav" }

#define BOOMER_MISS 2
new miss_boomer[BOOMER_MISS][] = {"Boomer/Boomer_Miss1.wav", "Boomer/Boomer_Miss2.wav" }

#define TANK_MISS 2
new miss_tank[TANK_MISS][] = {"Tank/Tank_Miss1.wav", "Tank/Tank_Miss1.wav" }

#define HUNTER_HIT 3
new hit_zombie[HUNTER_HIT][] = {"Hunter/Hunter_Hit1.wav", "Hunter/Hunter_Hit2.wav","Hunter/Hunter_Hit3.wav" }

#define SMOKER_HIT 3
new hit_zombie[SMOKER_HIT][] = {"Smoker/Smoker_Hit1.wav", "Smoker/Smoker_Hit2.wav","Smoker/Smoker_Hit3.wav" }

#define BOOMER_HIT 3
new hit_boomer[BOOMER_HIT][] = {"Boomer/Boomer_Hit1.wav", "Boomer/Boomer_Hit2.wav","Boomer/Boomer_Hit3.wav" }

#define TANK_HIT 3
new hit_tank[TANK_HIT][] = {"Tank/Tank_Hit1.wav", "Tank/Tank_Hit2.wav","Tank/Tank_Hit3.wav" }

#define HUNTER_PAIN 5
new pain_hunter[HUNTER_PAIN][] = {"Hunter/Hunter_pain1.wav", "Hunter/Hunter_pain2.wav", "Hunter/Hunter_pain3.wav", "Hunter/Hunter_pain4.wav", "Hunter/Hunter_pain5.wav" }

#define SMOKER_PAIN 3
new pain_smoker[SMOKER_PAIN][] = {"Smoker/Smoker_pain1.wav", "Smoker/Smoker_pain2.wav", "Smoker/Smoker_pain3.wav" }

#define BOOMER_PAIN 3
new pain_boomer[BOOMER_PAIN][] = {"Boomer/Boomer_pain1.wav", "Boomer/Boomer_pain2.wav", "Boomer/Boomer_pain3.wav" }

#define TANK_PAIN 6
new pain_tank[TANK_PAIN][] = {"Tank/Tank_pain1.wav", "Tank/Tank_pain2.wav""Tank/Tank_pain3.wav", "Tank/Tank_pain4.wav""Tank/Tank_pain5.wav", "Tank/Tank_pain6.wav" }

#define HUMAN_PAIN 2
new pain_human[HUMAN_PAIN][] = {"Human/human_pain1.wav", "Human/human_pain2.wav" }

#define Keysmenu_1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9)
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

#define	SLOT_PRIMARY	1
#define	SLOT_SECONDARY	2
#define	SLOT_KNIFE	3
#define	SLOT_GRENADE	4
#define	SLOT_C4		5

#define 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))
#define SECONDARY_WEAPONS_BIT_SUM ((2<<CSW_P228)|(2<<CSW_ELITE)|(2<<CSW_FIVESEVEN)|(CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE))
stock g_WeaponSlots[] = { 0, 2, 0, 1, 4, 1, 5, 1, 1, 4, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1 ,1, 4, 2, 1, 1, 3, 1 }
stock g_MaxBPAmmo[] = { 0, 254, 0, 254, 1, 254, 1, 254, 254, 1, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 2, 254, 254, 254, 0, 254 }

new bool:g_zombie[33]
new bool:buying
new bool:g_speed

new mod_name[32] = "DoviuX-Swarm"

//Pcvars...
new zomb_switch, zomb_hp,zomb_ap,zomb_speed,zomb_lightning,
zomb_leap,zomb_money,zomb_zdmg, zomb_hdmg,zomb_ammo, zomb_nvg, zomb_obj

new MODEL[256], zomb_model, use_model
new bombMap = 0
new hostageMap = 0

//The old commands
new g_autoteam, g_limitteams, g_flashlight

new hudsync

#define PLUGIN "DoviuX-Swarm"
#define VERSION "2.4"
#define AUTHOR "Mini_Midget"

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_cvar(PLUGIN,VERSION,FCVAR_SERVER)
	
	register_dictionary("zombie_swarm.txt")
	
	register_logevent("logevent_round_start",2, "1=Round_Start")
	register_logevent("logevent_round_end", 2, "1=Round_End")  
	
	register_event("ResetHUD","event_hud_reset", "be")
	register_event("TextMsg","event_restart_attempt", "a", "2=#Game_will_restart_in")
	register_event("CurWeapon","event_cur_weapon","be", "1=1")
	register_event("Damage","event_damage_scream","be","2!0","3=0") 
	register_event("Damage", "event_damage", "be", "2!0","3=0","4!0")
	register_event("StatusIcon", "event_status_icon", "be", "1=1", "1=2", "2=c4")
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
	
	register_forward(FM_ClientUserInfoChanged,"fw_info")
	register_forward(FM_PlayerPostThink,"fw_postthink")
	register_forward(FM_Touch,"fw_Touch");
	register_forward( FM_EmitSound, "fw_EmitSound" )
	register_forward(FM_CmdStart, "fw_Cmd")
	register_forward(FM_GetGameDescription,"GameDesc")
	
	register_message(get_user_msgid("Scenario"),"message_scenario");
	register_message(get_user_msgid("BombDrop"),"message_bombdrop");
	register_message(get_user_msgid("AmmoPickup"),"message_ammopickup");
	register_message(get_user_msgid("TextMsg"),"message_textmsg");
	register_message(get_user_msgid("HostagePos"),"message_hostagepos");
	
	register_clcmd("say","clcmd_say")
	
	register_menucmd(register_menuid("Buy Menu"), Keysmenu_1, "buy_menu")
	
	register_clcmd("fullupdate","clcmd_fullupdate") 
	
	register_concmd("zombie_swarm", "zsonoff", ADMIN_BAN, "<0/1> Disable/Enable Zombie Swarm")
	
	zomb_switch = register_cvar("zs_enabled","1")
	zomb_hp = register_cvar("zs_health","2000")
	zomb_ap = register_cvar("zs_armour","500")
	zomb_speed = register_cvar("zs_speed","300")
	zomb_lightning = register_cvar("zs_lightning","1")
	zomb_leap = register_cvar("zs_leap","0")
	zomb_money = register_cvar("zs_money","1000")
	zomb_zdmg = register_cvar("zs_zdmg","55")
	zomb_hdmg = register_cvar("zs_hdmg","150")
	zomb_ammo = register_cvar("zs_ammo","0")
	zomb_nvg = register_cvar("zs_nvg","1")
	zomb_obj = register_cvar("zs_objectives","1")
	
	zomb_model = register_cvar("zs_model","zombie_swarm")
	use_model = register_cvar("zs_use","1")
	
	if(fm_find_ent_by_class(1, "info_bomb_target") || fm_find_ent_by_class(1, "func_bomb_target"))
		bombMap = 1;

	if(fm_find_ent_by_class(1,"hostage_entity"))
		hostageMap = 1
		
	g_autoteam = get_cvar_num("mp_autoteambalance")
	g_limitteams = get_cvar_num("mp_limitteams")
	g_flashlight = get_cvar_num("mp_flashlight")
	
	server_cmd("sv_skyname %s", SKYNAME)
	server_cmd("sv_maxspeed 1000")
	
	set_cvar_num("mp_autoteambalance",0)
	set_cvar_num("mp_limitteams", 1)
	set_cvar_num("mp_flashlight", 1)
	
	set_task(1.0, "lightning_effects")
	set_task(1.0, "ambience_loop")
	
	format(mod_name, 31, "Zombie Swarm %s", VERSION)
	hudsync = CreateHudSyncObj() 
	
}

public plugin_precache() 
{
	precache_model("models/player/Hunter/Hunter.mdl")
	precache_model("models/v_knife_zombie.mdl")
	precache_sound("Hunter/HunterAlert.wav")
	
	new i
	
	for (i = 0; i < HUNTER_MISS; i++)
		precache_sound(miss_hunter[i])
	
	for (i = 0; i < HUNTER_HIT; i++)
		precache_sound(hit_hunter[i])
	
	for (i = 0; i < HUNTER_PAIN; i++)
		precache_sound(pain_hunter[i])
	
	for (i = 0; i < HUMAN_PAIN; i++)
		precache_sound(pain_human[i])
}

public plugin_precache() 
{
	precache_model("models/player/Smoker/Smoker.mdl")
	precache_model("models/v_knife_zombie.mdl")
	precache_sound("Smoker/SmokerAlert.wav")
	
	new i
	
	for (i = 0; i < SMOKER_MISS; i++)
		precache_sound(miss_smoker[i])
	
	for (i = 0; i < SMOKER_HIT; i++)
		precache_sound(hit_smoker[i])
	
	for (i = 0; i < SMOKER_PAIN; i++)
		precache_sound(pain_smoker[i])
	
	for (i = 0; i < HUMAN_PAIN; i++)
		precache_sound(pain_human[i])
}

public plugin_precache() 
{
	precache_model("models/player/Boomer/Boomer.mdl")
	precache_model("models/v_knife_zombie.mdl")
	precache_sound("Boomer/BoomerAlert.wav")
	
	new i
	
	for (i = 0; i < BOOMER_MISS; i++)
		precache_sound(miss_boomer[i])
	
	for (i = 0; i < BOOMER_HIT; i++)
		precache_sound(hit_boomer[i])
	
	for (i = 0; i < BOOMER_PAIN; i++)
		precache_sound(pain_boomer[i])
	
	for (i = 0; i < HUMAN_PAIN; i++)
		precache_sound(pain_human[i])
}

public plugin_precache() 
{
	precache_model("models/player/Tank/Tank.mdl")
	precache_model("models/v_knife_zombie.mdl")
	precache_sound("Tank/TankAlert.wav")
	
	new i
	
	for (i = 0; i < TANK_MISS; i++)
		precache_sound(miss_tank[i])
	
	for (i = 0; i < TANK_HIT; i++)
		precache_sound(hit_tank[i])
	
	for (i = 0; i < TANK_PAIN; i++)
		precache_sound(pain_tank[i])
	
	for (i = 0; i < HUMAN_PAIN; i++)
		precache_sound(pain_human[i])
}

public client_putinserver(id) 
{
	g_zombie[id] = false
	g_restart_attempt[id] = false
	g_speed = false
	client_cmd(id, "stopsound")
}

public zsonoff(id,level,cid) 
{
	if (!cmd_access(id,level,cid,1))
		return PLUGIN_HANDLED
	
	new szArg[5]
	read_argv(1, szArg, 4)
	
	if (equali(szArg,"1") || equali(szArg,"on")) 
	{
		if (get_cvar_num("zombie_swarm") == 1) 
		{
			console_print(id, "%s is already on!", PLUGIN)
			return PLUGIN_HANDLED
		}
		
		zs_on()
		
		set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
		show_hudmessage(0, "%s is now ON!", PLUGIN)
		
		console_print(0,  "%s has been turned ON!", PLUGIN)
		client_print(0, print_chat, "%s has been turned ON!", PLUGIN)
		
		return PLUGIN_HANDLED
	}
	
	if (equali(szArg,"0") || equali(szArg,"off")) 
	{
		if (get_cvar_num("zs_enabled") == 0) 
		{
			console_print(id, "%s is already off!", PLUGIN)
			return PLUGIN_HANDLED
		}
		
		zs_off()
		
		set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
		show_hudmessage(0, "%s has been turned OFF!", PLUGIN)
		
		console_print(0,  "%s has been turned OFF!", PLUGIN)
		client_print(0, print_chat, "%s has been turned OFF!", PLUGIN)
		
		return PLUGIN_HANDLED
	}
	
	console_print(id,  "Invalid argument!")
	client_print(id, print_chat, "Invalid argument!")
	
	return PLUGIN_HANDLED
}

public zs_on() 
{	
	new maxplayers = get_maxplayers()
	for (new i = 1; i <= maxplayers; i++) 
	{
		g_zombie[i] = false
		g_restart_attempt[i] = false
	}
	
	set_cvar_num("zs_enabled", 1)
	
	set_task(1.0, "lightning_effects")
	set_task(1.0, "ambience_loop")
	
	set_cvar_num("mp_autoteambalance",0)
	set_cvar_num("mp_limitteams", 1)
	set_cvar_num("mp_flashlight", 1)
	
	set_cvar_num("sv_restartround", 3)
}

public zs_off() 
{
	new maxplayers = get_maxplayers()
	for (new i = 1; i <= maxplayers; i++) 
	{
		g_zombie[i] = false
		g_restart_attempt[i] = false
		client_cmd(i, "stopsound")
	}
	
	set_cvar_num("zs_enabled", 0)
	
	set_lights("#OFF")
	remove_task(12175)
	
	set_cvar_num("mp_autoteambalance",g_autoteam)
	set_cvar_num("mp_limitteams", g_limitteams)
	set_cvar_num("mp_flashlight", g_flashlight)
	
	set_cvar_num("sv_restartround", 3)
}
public GameDesc() 
{ 
	forward_return(FMV_STRING, mod_name)
	
	return FMRES_SUPERCEDE
}

public event_new_round(id) 
{
	if(hostageMap && get_pcvar_num(zomb_obj))
		set_task(0.1,"move_hostages")
		
	buying = true
	new Float:buy_time = get_cvar_float("mp_buytime") * 60
	set_task(buy_time, "buy_false", 7294)
	
	g_speed = false
	new freeze = get_cvar_num("mp_freezetime")
	set_task(float(freeze),"allow_speed")
}

public allow_speed() 
{
	g_speed = true
	
	new players[32], num, i
	get_players(players, num)
	for (i = 0 ; i < num; i++)
		if (g_zombie[players[i]])
			set_user_maxspeed(players[i], (get_pcvar_float(zomb_speed)))
}

public logevent_round_start(id) 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if (get_pcvar_num(zomb_nvg))
		server_cmd("amx_restrict on nvgs")
	else
		server_cmd("amx_restrict off nvgs")
	
	set_task (0.5 , "team_check")
	set_task (5.0 , "StartMsg")
	
	if (g_zombie[id]) set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))
	
	return PLUGIN_CONTINUE
}

public logevent_round_end()
{
	if (task_exists(7294))
		remove_task(7294)
}

public buy_false() buying = false  

public clcmd_fullupdate() return PLUGIN_HANDLED

public event_restart_attempt() 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	new players[32], num
	get_players(players, num, "a")
	for (new i; i < num; i++)
		g_restart_attempt[players[i]] = true
	
	return PLUGIN_CONTINUE
}

public event_hud_reset(id) 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if (g_restart_attempt[id])
		g_restart_attempt[id] = false
	
	set_task(0.2,"event_player_spawn",id)
	
	return PLUGIN_CONTINUE
}

public event_player_spawn(id) 
{	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	new CsTeams:team = cs_get_user_team(id)
	new CsArmorType:ArmorType = CS_ARMOR_VESTHELM
	
	if(team == CS_TEAM_T)
	{
		g_zombie[id] = true
		set_task(random_float(0.1,0.5), "Reset_Weapons", id) //Strips zombies if they do have guns
		set_user_health(id,get_pcvar_num(zomb_hp))
		cs_set_user_armor(id,get_pcvar_num(zomb_ap),ArmorType)
		set_user_footsteps(id, 1)
		set_user_gravity(id,0.875)
		cs_set_user_money(id,0)
		
		if (g_speed)
			set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))
		
		if (!cs_get_user_nvg(id))
		{
			cs_set_user_nvg(id,1)
			
			engclient_cmd(id, "nightvision")
		} 
	}
	else if(team == CS_TEAM_CT)
	{
		g_zombie[id] = false
		set_user_footsteps(id, 0)
		cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(zomb_money))
		
		if (get_pcvar_num(use_model))
			cs_reset_user_model(id)
	}
	
	ShowHUD(id)
	
	return PLUGIN_CONTINUE
}

public fw_info(id,buffer) 
{
	if (g_zombie[id])
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}

public fw_postthink(id) 
{
	if (!is_user_alive(id) || !get_pcvar_num(use_model))
		return FMRES_IGNORED
	
	if (g_zombie[id]) 
	{
		new szModel[33]
		get_pcvar_string(zomb_model, MODEL, 255) 
		cs_get_user_model(id, szModel, 32)
		
		if (containi(szModel, MODEL) !=-1 )
			return FMRES_IGNORED
		
		new info = engfunc(EngFunc_GetInfoKeyBuffer, id)
		engfunc(EngFunc_SetClientKeyValue, id, info, "model", MODEL)
		
		return FMRES_IGNORED
	}
	
	return FMRES_IGNORED
}

public ShowHUD(id) 
{			
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if(g_zombie[id])
	{
		new hp = get_user_health(id)
		new ap = get_user_armor(id)
		set_hudmessage(255, 180, 0, 0.02, 0.90, 0, 0.0, 0.3, 0.0, 0.0)
		ShowSyncHudMsg(id, hudsync , "HP: %d     |AP     : %d", hp, ap)
	}
	
	set_task(0.1 , "ShowHUD" , id)
	
	return PLUGIN_CONTINUE
}

public event_cur_weapon(id) 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	new weapon = read_data(2)
	new clip = read_data(3)
	
	if (g_WeaponSlots[weapon] == SLOT_PRIMARY || g_WeaponSlots[weapon] == SLOT_SECONDARY)
	{
		switch (get_pcvar_num(zomb_ammo))
		{	
			case 1:
			{
				new ammo = cs_get_user_bpammo(id, weapon)
				
				if (ammo < g_MaxBPAmmo[weapon])
				{
					cs_set_user_bpammo(id, weapon, g_MaxBPAmmo[weapon])
				}
			}
			
			case 2:
			{
				give_ammo(id , weapon , clip)
			}
		}
	}
	
	if ( g_zombie[id] && g_speed ) 
		set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))	
	
	if (g_zombie[id] && g_WeaponSlots[weapon] == SLOT_KNIFE) 
		set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, "models/v_knife_zombie.mdl"))
	return PLUGIN_CONTINUE
}

public give_ammo(id , weapon , clip)
{
	if (!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if (!clip)
	{
		new weapname[33]
		get_weaponname(weapon , weapname , 32)
		new wpn = -1
		while((wpn = fm_find_ent_by_class(wpn , weapname)) != 0)
		{
			if(id == pev(wpn,pev_owner))
			{
				cs_set_weapon_ammo(wpn , maxclip(weapon))
				break;
			}
		}
	}
	return PLUGIN_CONTINUE
}

public event_status_icon(id) 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	engclient_cmd(id, "drop", "weapon_c4")
	set_task(0.1, "delete_c4")
	
	return PLUGIN_CONTINUE
}

public delete_c4() 
{
	new ent = find_ent_by_class(-1, "weaponbox")
	while (ent > 0) 
	{
		new model[33]
		entity_get_string(ent, EV_SZ_model, model, 32)
		if (equali(model, "models/w_backpack.mdl")) 
		{
			remove_entity(ent)
			return PLUGIN_CONTINUE
		}
		ent = find_ent_by_class(ent, "weaponbox")
	}
	return PLUGIN_CONTINUE
}

public Reset_Weapons(id) 
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if(g_zombie[id])
	{
		strip_user_weapons(id)
		give_item(id,"weapon_knife")
		
		if (is_user_bot(id))
		{
			return PLUGIN_HANDLED
		}
		
		else if (get_pcvar_num(zomb_leap))
		{
			set_task(LEAP_CD,"cooldown_begin",id)
			set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 14.0)
			show_hudmessage(id, "%L",LANG_PLAYER,"LEAP_WAIT",floatround(LEAP_CD))
		}
	}
	
	return PLUGIN_CONTINUE
} 

public cooldown_begin(id) 
{
	if (!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if (g_zombie[id])
	{
		set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 5.0)
		show_hudmessage(id, "%L",LANG_PLAYER,"LEAP_READY")
		give_item(id, "item_longjump")
	}
	
	return PLUGIN_CONTINUE
}

public team_check() 
{
	new players[32],num,i,id
	get_players(players,num,"d") 
	for(i = 0; i < num; i++) 
	{
		id = players[i]
		if (!g_zombie[id])
		{
			user_silentkill(id)
			cs_set_user_team(id,CS_TEAM_T)
		}
	}
	return PLUGIN_HANDLED
}

public StartMsg(id) 
{
	client_print(0,print_chat,"%L",LANG_PLAYER,"WELCOME_MSG", VERSION)
	client_print(0,print_chat,"%L",LANG_PLAYER,"ZOMBIE_MSG", get_pcvar_num(zomb_hp), get_pcvar_num(zomb_ap), get_pcvar_num(zomb_speed))
	client_print(0,print_chat,"%L",LANG_PLAYER,"HELP_MSG")
}

public lightning_effects() 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if (get_pcvar_num(zomb_lightning) == 0)
	{	
		set_lights("#OFF")
		remove_task(12175)
		set_task(20.0,"lightning_effects")
	}
	else if (get_pcvar_num(zomb_lightning) == 1)
	{
		set_lights("a")
		set_task(random_float(10.0,17.0),"thunder_clap",12175)
	}
	else if (get_pcvar_num(zomb_lightning) == 2)
	{	
		set_lights("b")
		remove_task(12175)
		set_task(20.0,"lightning_effects")
	}
	return PLUGIN_CONTINUE
}

public thunder_clap() 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	set_lights("p")
	client_cmd(0,"speak ambience/thunder_clap.wav")
	
	set_task(1.25,"lightning_effects",12175)
	
	return PLUGIN_CONTINUE
}

public ambience_loop() 
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	client_cmd(0,"spk zombie_swarm/ambience.wav")
	
	set_task(17.0,"ambience_loop")
	
	return PLUGIN_CONTINUE
}

public fw_Touch(pToucher, pTouched)
{
	if(!get_pcvar_num(zomb_switch))
		return FMRES_IGNORED
	
	if ( !pev_valid(pToucher) || !pev_valid(pTouched) )
		return FMRES_IGNORED
	
	if ( !is_user_connected(pTouched) )
		return FMRES_IGNORED
	
	if ( !g_zombie[pTouched] )
		return FMRES_IGNORED
	
	new className[32]
	pev(pToucher, pev_classname, className, 31)
	
	if ( equal(className, "weaponbox") || equal(className, "armoury_entity" ) || equal(className, "weapon_shield" ) )
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}  

public fw_EmitSound(id, channel, sample[])
{
	if(!get_pcvar_num(zomb_switch))
		return FMRES_IGNORED
	
	if ( !is_user_alive(id) || !g_zombie[id] )
		return FMRES_IGNORED
	
	if ( sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n' )
	{
		switch(sample[17])
		{
			case 'l': return FMRES_SUPERCEDE
				
			case 's', 'w':
			{				
				emit_sound(id, CHAN_WEAPON, miss_zombie[random_num(0, ZOMBIE_MISS - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)	
				return FMRES_SUPERCEDE
			}
			
			case 'b', '1', '2', '3', '4':
			{
				emit_sound(id, CHAN_WEAPON, hit_zombie[random_num(0, ZOMBIE_HIT - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
		}
	}
	else if (equal(sample,"items/nvg_on.wav") || (equal(sample,"items/nvg_off.wav")))
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

public fw_Cmd(id, handle, seed)
{
	new impulse = get_uc(handle, UC_Impulse)
	if (impulse == 100 && g_zombie[id]) 
	{
		set_uc(handle, UC_Impulse, 0)
	}
	return FMRES_HANDLED
}

public event_damage_scream(id)
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	if ( g_zombie[id] )
	{
		emit_sound(id, CHAN_VOICE, pain_zombie[random_num(0, ZOMBIE_PAIN - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
		} else {
		emit_sound(id, CHAN_VOICE, pain_human[random_num(0, HUMAN_PAIN - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	return PLUGIN_HANDLED
}

public event_damage(id)
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	new damage = read_data(2)
	new weapon, hitzone
	new attacker = get_user_attacker(id, weapon, hitzone)
	
	new Float:Random_Float[3]
	for(new i = 0; i < 3; i++) Random_Float[i] = random_float(100.0, 125.0)
	
	new current_hp = get_user_health(attacker)
	new max_hp = get_pcvar_num(zomb_hp)
	new zdmg = get_pcvar_num(zomb_zdmg)
	new hdmg = get_pcvar_num(zomb_hdmg)
	
	current_hp += damage
	
	if (attacker > sizeof g_zombie) 
		return PLUGIN_CONTINUE
	
	if ( g_zombie[attacker] && weapon == CSW_KNIFE )
	{
		if (zdmg <= 0) 
			return PLUGIN_CONTINUE
		else if (damage >= zdmg)
			Punch_View(id, Random_Float)
		
		if ( current_hp >= max_hp ) 
		{
			set_user_health(attacker, max_hp)
			} else { 
			set_user_health(attacker, current_hp)	
		}
	} 
	else if ( !g_zombie[attacker] && hitzone == HIT_HEAD)
	{
		if (hdmg <= 0)
			return PLUGIN_CONTINUE
		else if (damage >= hdmg)
			Punch_View(id, Random_Float)
	}
	
	return PLUGIN_HANDLED
}

public clcmd_say(id)
{
	if(!get_pcvar_num(zomb_switch))
		return PLUGIN_HANDLED
	
	static ARGS[15]
	read_args(ARGS,14)
	
	remove_quotes(ARGS)
	
	if(equali(ARGS,"/help"))
	{
		zombie_help(id)
	}
	else if (equali(ARGS,"/bm"))
	{
		if ( !is_user_alive(id) )
		{
			client_print(id, print_center, "%L", id, "BUY_ALIVE")
			return PLUGIN_HANDLED
		}
		else if ( g_zombie[id] )
		{
			client_print(id, print_center, "%L", id, "BUY_HUMAN")
			return PLUGIN_HANDLED
		}
		else if ( !cs_get_user_buyzone(id) )
		{
			client_print(id, print_center, "%L", id, "BUY_BUYZONE")
			return PLUGIN_HANDLED
		}
		else if (!buying)
		{
			new Float:time_buy = get_cvar_float("mp_buytime") * 60
			client_print(id, print_center, "%L", id, "BUY_TIME", floatround(time_buy))
			return PLUGIN_HANDLED
		}
		else
		{
			show_menu(id, Keysmenu_1, "\yBuy Menu\w^n^n1. .40 Dual Elites     \y($800)\w^n2. INGRAM MAC-10     \y($1400)\w^n3. IDF Defender     \y($2000)\w^n4. CV-47     \y($2500)\w^n5. KREIG 552     \y($3500)\w^n6. D3/AU-1     \y($5000)\w^n^n0. Exit") 
		}
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}

public zombie_help(id)
{
	new help_title[64], len
	static msg[2047]
	format(help_title,63,"%L",id,"HELP_HEADER")
	len = format(msg,2046,"<body bgcolor=#f5f5f5><font color=#000000><br>")
	len += format(msg[len],2046-len,"<center><h2>%L</h2><br><table><tr><td><p><b><font color=#000000>",id,"HELP_TITLE")
	len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_OBJECTIVE")
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE")
	
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_KNIFE")
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_NVG")
	if (get_pcvar_num(zomb_leap))
		len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_LEAP")
	if (get_pcvar_num(zomb_zdmg) >= 1)
		len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_HIT",get_pcvar_num(zomb_zdmg))
	
	len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_HUMAN")
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_GUNS")
	if (get_pcvar_num(zomb_nvg))
		len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_NVG")
	if (get_pcvar_num(zomb_hdmg) >= 1)
		len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_HIT",get_pcvar_num(zomb_hdmg))
	
	len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_TIPS")
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_TIPS_ONE")
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_TIPS_TWO")
	
	len += format(msg[len],2046-len,"%L<br>",id,"HELP_ENJOY")
	len += format(msg[len],2046-len,"</b><br></td></tr></table><br>Mini_Midget</center>")
	show_motd(id,msg,help_title)
}

public buy_menu(id, key) 
{
	new money = cs_get_user_money(id)
	
	new dualcost = 800
	new mac10cost = 1400
	new idfcost = 2000
	new akcost = 2500
	new kreigcost = 3500
	new D3cost = 5000
	
	switch (key) 
	{
		case 0: 
		{
			if(money < dualcost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", dualcost)
			}
			else
			{
				drop_sec(id)
				cs_set_user_money(id, money - dualcost)  
				give_item(id,"weapon_elite")
			}
		}
		case 1: 
		{
			if(money < mac10cost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", mac10cost)
			}
			else
			{
				drop_prim(id)
				cs_set_user_money(id, money - mac10cost)  
				give_item(id,"weapon_mac10")
			}
		}
		case 2: 
		{ 
			if(money < idfcost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", idfcost)
			}
			else
			{
				drop_prim(id)
				cs_set_user_money(id, money - idfcost)  
				give_item(id,"weapon_galil")
			}
		}
		case 3: 
		{
			if(money < akcost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", akcost)
			}
			else
			{
				drop_prim(id)
				cs_set_user_money(id, money - akcost)  
				give_item(id,"weapon_ak47")
			}
		}
		case 4: 
		{
			if(money < kreigcost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", kreigcost)
			}
			else
			{
				drop_prim(id)
				cs_set_user_money(id, money - kreigcost)  
				give_item(id,"weapon_sg552")
			}
		}
		case 5: 
		{
			if(money < D3cost)
			{
				client_print(id, print_center, "%L",id, "BUY_MONEY", D3cost)
			}
			else
			{
				drop_prim(id)
				cs_set_user_money(id, money - D3cost)  
				give_item(id,"weapon_g3sg1")
			}
		}
		case 9: 
			return PLUGIN_HANDLED
	}
	
	return PLUGIN_HANDLED 
}

public message_hostagepos(msg_id,msg_dest,msg_entity) 
{
	if(!get_pcvar_num(zomb_obj))
		return PLUGIN_CONTINUE

	return PLUGIN_HANDLED;
}

public message_textmsg(msg_id,msg_dest,msg_entity) 
{
	if(!bombMap || !get_pcvar_num(zomb_obj))
		return PLUGIN_CONTINUE;

	static message[16];
	get_msg_arg_string(2, message, 15);

	if(equal(message,"#Game_bomb_drop"))
		return PLUGIN_HANDLED;

	return PLUGIN_CONTINUE;
}

public message_ammopickup(msg_id,msg_dest,msg_entity) 
{
	if(!bombMap || !get_pcvar_num(zomb_obj))
		return PLUGIN_CONTINUE;

	if(get_msg_arg_int(1) == 14) // C4
		return PLUGIN_HANDLED;

	return PLUGIN_CONTINUE;
}

public message_bombdrop(msg_id,msg_dest,msg_entity) 
{
	if(!get_pcvar_num(zomb_obj))
		return PLUGIN_HANDLED;

	return PLUGIN_CONTINUE;
}

public message_scenario(msg_id,msg_dest,msg_entity) 
{
	if(get_msg_args() > 1 && get_pcvar_num(zomb_obj)) 
	{
		new sprite[8];
		get_msg_arg_string(2, sprite, 7);

		if(equal(sprite,"hostage"))
			return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}

public move_hostages() 
{
	new ent;
	while((ent = fm_find_ent_by_class(ent,"hostage_entity")) != 0)
		set_pev(ent, pev_origin, Float:{8192.0,8192.0,8192.0});
}

//Stocks by VEN
stock drop_prim(id) 
{
	new weapons[32], num
	get_user_weapons(id, weapons, num)
	for (new i = 0; i < num; i++) {
		if (PRIMARY_WEAPONS_BIT_SUM & (1<<weapons[i])) 
		{
			static wname[32]
			get_weaponname(weapons[i], wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock drop_sec(id)
{
	new weapons[32], num
	get_user_weapons(id, weapons, num)
	for (new i = 0; i < num; i++) 
	{
		if (SECONDARY_WEAPONS_BIT_SUM & (2<<weapons[i])) 
		{
			static wname[32]
			get_weaponname(weapons[i], wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}
//Stock by Cheap_Suit
stock Punch_View(id, Float:ViewAngle[3])
{
	entity_set_vector(id, EV_VEC_punchangle, ViewAngle)
}
//Stock by v3x
stock maxclip(weapon) 
{
	new ca = 0
	switch (weapon) 
	{
		case CSW_P228 : ca = 13
		case CSW_SCOUT : ca = 10
		case CSW_HEGRENADE : ca = 0
		case CSW_XM1014 : ca = 7
		case CSW_C4 : ca = 0
		case CSW_MAC10 : ca = 30
		case CSW_AUG : ca = 30
		case CSW_SMOKEGRENADE : ca = 0
		case CSW_ELITE : ca = 30
		case CSW_FIVESEVEN : ca = 20
		case CSW_UMP45 : ca = 25
		case CSW_SG550 : ca = 30
		case CSW_GALI : ca = 35
		case CSW_FAMAS : ca = 25
		case CSW_USP : ca = 12
		case CSW_GLOCK18 : ca = 20
		case CSW_AWP : ca = 10
		case CSW_MP5NAVY : ca = 30
		case CSW_M249 : ca = 100
		case CSW_M3 : ca = 8
		case CSW_M4A1 : ca = 30
		case CSW_TMP : ca = 30
		case CSW_G3SG1 : ca = 20
		case CSW_FLASHBANG : ca = 0;
		case CSW_DEAGLE    : ca = 7
		case CSW_SG552 : ca = 30
		case CSW_AK47 : ca = 30
		case CSW_P90 : ca = 50
	}
	return ca;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang5129\\ f0\\ fs16 \n\\ par }
*/

new const ZOMBIE_PLAYER_MODEL[][] =
{
"Hunter",
"Boomer",
"Smoker"
};
new const ZOMBIE_MODEL[][] =
{
"models/player/Hunter/Hunter.mdl",
"models/player/Boomer/Boomer.mdl",
"models/player/Smoker/Smoker.mdl"
};
new consy ZOMBIE_PLAYER_CLAWS[] =
{
"v_knife_hunter",
"v_knife_bommer"
};
new const ZOMBIE_CLAWS[][] = 
{
"models/v_knife_hunter.mdl",
"models/v_knife_boomer.mdl"
};
new const ZOMBIE_FLESH[][] =
{
"models/abone_template1.mdl",
"models/bonegibs.mdl",
"models/fleshgibs.mdl",
"models/gib_b_bone.mdl",
"models/gib_b_gib.mdl",
"models/gib_legbone.mdl",
"models/gib_lung.mdl"
}

new mod_name[32] = "Zombie Swarm"
new player_model[33][32]
new Float: g_counter

new bool: g_zombie[33]
new bool: g_infreezetime
new bool: g_model[33]
new Float: g_LastLeap[33]
new Float: g_LastFthrow[33]
new bool: g_light_flashing
new g_light_style[3][2] = { "a", "b", "m" }
new g_light_stylenum
new g_light_counter
new g_light_num
new msg_hideweapon /*, msg_statusicon*/
new g_hudsync
new const blocked_commands[][] = {
"buy", "buyequip", "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy",
"km45", "9x19mm", "glock", "deagle", "nighthawk", "p228", "228compact", "elites", "fn57", "fiveseven",
"12gauge", "autoshotgun", "xm1014", 
"smg", "tmp", "mp5", "c90", "p90", "mac10", "ump45", 
"cv47", "ak47", "galil", "defender", "famas", "clarion", "sg552", "krieg552", "m4a1", "aug", "bullpup", "scout", "awp", "magnum", "g3sg1", "d3au1", "sg550", "krieg550", 
"m249", 
"vest", "vesthelm", "flash", "hegren", "sgren", "defuser", "shield", "nvgs"

new cvar_switch, cvar_health, cvar_armour, cvar_gravity, cvar_speed, cvar_skyname, cvar_lights,
cvar_autonvg, cvar_blocknvg, cvar_backspeed, cvar_cooldown, cvar_lforce, cvar_lheight, cvar_fforce,
cvar_fdamage, cvar_fsdamage, cvar_hedmg_multi, cvar_weadmg_multi

public plugin_precache() 
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string(PLUGIN, VERSION)
register_dictionary("zombie_swarm.txt")
register_concmd("zombie_swarm", "concmd_zombieswarm", ADMIN_BAN, "<0/1> Disable/Enable Zombie Swarm")

cvar_switch = register_cvar("zswarm_enable", "1")

if (!get_pcvar_num(cvar_switch)) return

engfunc(EngFunc_PrecacheModel, ZOMBIE_CLAWS);

engfunc(EngFunc_PrecacheSound, g_sound_ambience);

new iNum
for (iNum = 0; iNum < sizeof(ZOMBIE_MODEL); iNum++)
engfunc(EngFunc_PrecacheModel, ZOMBIE_MODEL[iNum]);
for (iNum = 0; iNum < sizeof g_sound_miss; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_miss[iNum])
for (iNum = 0; iNum < sizeof g_sound_hit; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_hit[iNum])
for (iNum = 0; iNum < sizeof g_sound_pain; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_pain[iNum])
for (iNum = 0; iNum < sizeof g_sound_die; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_die[iNum])
for (iNum = 0; iNum < sizeof ZOMBIE_FLESH; iNum++)
engfunc(EngFunc_PrecacheModel, ZOMBIE_FLESH[iNum])

public plugin_init() 
{
if (!get_pcvar_num(cvar_switch)) return

cvar_health = register_cvar("zswarm_health", "800")
cvar_armour = register_cvar("zswarm_armour", "")
cvar_gravity = register_cvar("zswarm_gravity", "800")
cvar_speed = register_cvar("zswarm_speed", "240")
cvar_lights = register_cvar("zswarm_light", "1")
cvar_skyname = register_cvar("zswarm_skyname", "space")
cvar_autonvg = register_cvar("zswarm_autonvg", "1")
cvar_blocknvg = register_cvar("zswarm_blocknvg","1")
cvar_backspeed = register_cvar("zswarm_bspeed", "1")
cvar_cooldown = register_cvar("zswarm_cooldown","5.0")
cvar_lforce = register_cvar("zswarm_lforce", "525")
cvar_lheight = register_cvar("zswarm_lheight", "260")
cvar_fforce = register_cvar("zswarm_fforce", "1500")
cvar_fdamage = register_cvar("zswarm_fdamage", "20")
cvar_fsdamage = register_cvar("zswarm_fsdamage","100")
cvar_hedmg_multi = register_cvar("zswarm_hemulti", "1.0")
cvar_weadmg_multi= register_cvar("zswarm_weamulti", "0.5")

RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
RegisterHam(Ham_TakeDamage,"player", "bacon_takedamage")
RegisterHam(Ham_Touch, "weaponbox", "bacon_touch")
RegisterHam(Ham_Touch, "armoury_entity", "bacon_touch")
RegisterHam(Ham_Touch, "weapon_shield", "bacon_touch")

register_logevent("logevent_round_start", 2, "1=Round_Start")
register_logevent("logevent_round_end" , 2, "1=Round_End") 
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_event("CurWeapon", "event_cur_weapon", "be")

register_message(get_user_msgid("ScoreAttrib"), "message_ScoreAttrib")
register_message(get_user_msgid("StatusIcon"), "message_StatusIcon")
register_message(get_user_msgid("TextMsg"), "message_TextMessage")
register_message(get_user_msgid("SendAudio"), "message_SendAudio")
for(new i = 0; i < sizeof blocked_commands; i++) register_clcmd(blocked_commands[i], "clcmd_blocked")
register_clcmd("nightvision", "clcmd_nightvision")

new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "ambient_generic"))
if(iEnt) 
{ 
dllfunc(DLLFunc_Think, iEnt)
set_pev(iEnt, pev_classname, CLASS_WEATHER)

fm_set_kvd(iEnt, "targetname", "boomer")
fm_set_kvd(iEnt, "pitchstart", "100")
fm_set_kvd(iEnt, "pitch", "100") 
fm_set_kvd(iEnt, "health", "500")
fm_set_kvd(iEnt, "spawnflags", "50")

dllfunc(DLLFunc_Spawn, iEnt)
set_pev(iEnt, pev_nextthink, get_gametime() + 2.0)

}
format(mod_name, 31, "%s %s", PLUGIN, VERSION)
register_forward(FM_GetGameDescription, "fw_GameDescription")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_Touch, "fw_Touch")
register_forward(FM_Think, "fw_Think_lights", 1)

msg_hideweapon = get_user_msgid("HideWeapon")
//msg_statusicon = get_user_msgid("StatusIcon")
g_hudsync = CreateHudSyncObj()

new skyname[32]
get_pcvar_string(cvar_skyname, skyname, 31)

set_cvar_string("sv_skyname", skyname)
set_cvar_num("sv_skycolor_r", 0)
set_cvar_num("sv_skycolor_g", 0)
set_cvar_num("sv_skycolor_b", 0)
server_cmd("sv_maxspeed 2000")
}
public client_putinserver(id)
{
g_zombie[id] = false
}
public fw_GameDescription() 
{ 
forward_return(FMV_STRING, mod_name)

return FMRES_SUPERCEDE
} 
public concmd_zombieswarm(id, level, cid) 
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new sz_arg[8]
read_argv(1, sz_arg, 7)

if ( equali(sz_arg, "1") || equali(sz_arg, "on") || equali(sz_arg, "enable") ) 
{
set_task(5.0, "Task_Restart") 
set_pcvar_num(cvar_switch, 1)

set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "PLUGIN_HON_MSG", PLUGIN)

console_print(0, "%L", LANG_PLAYER, "PLUGIN_TON_MSG", PLUGIN)
for(new i = 1; i < 6; i++)
client_print(0, print_chat, "%L", LANG_PLAYER, "PLUGIN_TON_MSG", PLUGIN)

return PLUGIN_HANDLED
}
else if ( equali(sz_arg, "0") || equali(sz_arg, "off") || equali(sz_arg, "disable") ) 
{ 

set_task(5.0, "Task_Restart") 
set_pcvar_num(cvar_switch, 0) 

set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "PLUGIN_HOFF_MSG", PLUGIN)

console_print(0, "%L", LANG_PLAYER, "PLUGIN_TOFF_MSG", PLUGIN)
for(new i = 1; i < 6; i++)
client_print(0, print_chat, "%L", LANG_PLAYER, "PLUGIN_TOFF_MSG", PLUGIN)

return PLUGIN_HANDLED
}

console_print(id, "Invalid argument!")

return PLUGIN_HANDLED
}
public bacon_spawn(id)
{ 
if (!is_user_alive(id))
return

static CsTeams: team ; team = cs_get_user_team(id)

if (team == CS_TEAM_T) //Terr
{
new Float:health, Float:gravity, armour
health = get_pcvar_float(cvar_health)
gravity = get_pcvar_float(cvar_gravity) / 800
armour = get_pcvar_num(cvar_armour)

g_zombie[id] = true
if(!task_exists(TASKID_STRIP + id))
set_task(0.2, "Task_Strip", TASKID_STRIP + id)

set_pev(id, pev_health, health)
cs_set_user_armor(id, armour, CS_ARMOR_VESTHELM)
set_pev(id, pev_gravity, gravity)
if (!cs_get_user_nvg(id))
cs_set_user_nvg(id)

if (get_pcvar_num(cvar_autonvg))
set_task(0.2, "Task_NVG", TASKID_NVG + id)

copy(player_model[id], 31, ZOMBIE_PLAYER_MODEL[random_num(0, sizeof(ZOMBIE_PLAYER_MODEL) - 1)])

new currentmodel[32];
fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);

if(!equal(currentmodel, player_model[id]))
{
set_task(0.5 + g_counter, "Task_Model", id + TASKID_MODEL)
g_counter += 0.2;
}

if(!task_exists(TASKID_SHOWHUD + id))
set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)
}
else if (team == CS_TEAM_CT) // CT
{
g_zombie[id] = false
fm_reset_user_model(id)
}
}
public bacon_takedamage(victim, inflictor, attacker, Float:damage, damagetype)
{
if(damagetype & DMG_GENERIC || victim == attacker || !is_user_alive(victim) || !is_user_connected(attacker))
return HAM_IGNORED
if(!g_zombie[victim] && !g_zombie[attacker])
{
SetHamParamFloat(4, 0.0)
return HAM_HANDLED
}

static CsTeams:team[2]
team[0] = cs_get_user_team(attacker), team[1] = cs_get_user_team(victim)

if(team[0] == team[1])
return HAM_IGNORED

if(!g_zombie[attacker])
{ 
damage *= (damagetype & DMG_HEGRENADE) ? get_pcvar_float(cvar_hedmg_multi) : get_pcvar_float(cvar_weadmg_multi)
SetHamParamFloat(4, damage)
return HAM_HANDLED
}

return HAM_IGNORED
}
public event_new_round()
{
g_infreezetime = true
}
public logevent_round_start()
{
g_infreezetime = false
}
public logevent_round_end()
{
g_counter = 0.0
}
public event_cur_weapon(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED

if (g_zombie[id])
{
new weapon = read_data(2)

if (weapon != CSW_KNIFE)
{ 
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, ZOMBIE_CLAWS)
set_pev(id, pev_weaponmodel2, "")
}

message_begin(MSG_ONE, msg_hideweapon, _ , id)
write_byte(HIDE_HUD | HIDE_FLASH | HIDE_HP_HUD | HIDE_MONEY)
message_end()
}
else
{
message_begin(MSG_ONE, msg_hideweapon, _ , id)
write_byte(HIDE_NONE) 
message_end()
}

return PLUGIN_CONTINUE
}
public message_ScoreAttrib(msg_id, msg_dest, id)
{
new attrib; attrib = get_msg_arg_int(2)
if(attrib == (1<<1)) set_msg_arg_int(2, ARG_BYTE, 0)
}
public message_StatusIcon(msg_id, msg_dest, id)
{
if(!is_user_connected(id) || !g_zombie[id])
return PLUGIN_CONTINUE

new icon[4]; get_msg_arg_string(2, icon, 3)
if(equal(icon, "c4") || equal(icon, "buy"))
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

public message_TextMessage(msg_id, msg_dest, id)
{
if(get_msg_arg_int(1) != 4)
return PLUGIN_CONTINUE

new text_msg[25], win_msg[32]
get_msg_arg_string(2, text_msg, 24)

if(equal(text_msg[1], "Game_bomb_drop"))
return PLUGIN_HANDLED
else if(equal(text_msg[1], "Terrorists_Win"))
{
formatex(win_msg, 31, "%L", LANG_SERVER, "WIN_ZOMBIE")
set_msg_arg_string(2, win_msg)
}
else if(equal(text_msg[1], "Target_Saved") || equal(text_msg[1], "CTs_Win"))
{
formatex(win_msg, 31, "%L", LANG_SERVER, "WIN_HUMAN")
set_msg_arg_string(2, win_msg)
}
return PLUGIN_CONTINUE
}
public message_SendAudio(msg_id, msg_dest, id)
{
new audiocode [22]; get_msg_arg_string(2, audiocode, 21)
if(equal(audiocode[7], "MOVEOUT") || equal(audiocode[7], "LOCKNLOAD")
|| equal(audiocode[7], "LETSGO") || (equal(audiocode[7], "GO")))
set_msg_arg_string(2, "%!MRAD_ELIM") 

else if(equal(audiocode[7], "terwin"))
return PLUGIN_HANDLED
//set_msg_arg_string(2, g_zombie_win_sounds[_random(sizeof g_zombie_win_sounds)])

return PLUGIN_CONTINUE
}
public clcmd_blocked(id)
{
if (g_zombie[id])
{
client_print(id, print_center, "%L", LANG_PLAYER, "BLOCK_BUY")
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

public clcmd_nightvision(id)
{
if(!g_zombie[id] && get_pcvar_num(cvar_blocknvg) && cs_get_user_nvg(id))
{
client_print(id, print_center, "%L", LANG_PLAYER, "BLOCK_NVG")
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}
public clcmd_throw(id)
{
static Float: Origin[3], Float: Velocity[3], Float: Angle[3], MinBox[3], MaxBox[3]
pev(id, pev_origin, Origin)
pev(id, pev_velocity, Velocity)
pev(id, pev_angles, Angle)
static Health, Float: damage
Health = get_user_health(id)
damage = get_pcvar_float(cvar_fsdamage)

if (Health > damage)
{
static ent ; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

set_pev(ent, pev_classname, CLASS_FLESH)
engfunc(EngFunc_SetModel, ent, ZOMBIE_FLESH[random(sizeof ZOMBIE_FLESH)])
Angle[0] = random_float(1.0, 360.0)
Angle[1] = random_float(1.0, 360.0)
MinBox = { -1.0, -1.0, -1.0 }
MaxBox = { 1.0, 1.0, 1.0 }

set_pev(ent, pev_angles, Angle)
engfunc(EngFunc_SetSize, ent, MinBox, MaxBox)
engfunc(EngFunc_SetOrigin, ent, Origin)
set_pev(ent, pev_movetype, MOVETYPE_TOSS)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_owner, id)

velocity_by_aim(id, get_pcvar_num(cvar_fforce), Velocity)
set_pev(ent, pev_velocity, Velocity)

emit_sound(id, CHAN_VOICE, g_sound_pain[random(sizeof g_sound_pain)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
set_pev(id, pev_health, Health - damage)
}
else
{
client_print(id, print_center, "%L", LANG_PLAYER, "FLESH_HEALTH")
}
}
public fw_PlayerPreThink(id)
{
if(!is_user_alive(id))
return FMRES_IGNORED

static Float: velocity[3], Float: Time
static button, flag
button = pev(id, pev_button)
flag = pev(id, pev_flags)
Time = get_gametime()

if (g_zombie[id])
{
if ( (!g_infreezetime) && (button & IN_RELOAD) && (flag & FL_ONGROUND))
{
static Float: cooldown, Float: lheight, lforce
cooldown = get_pcvar_float(cvar_cooldown)
lforce = get_pcvar_num(cvar_lforce)
lheight = get_pcvar_float(cvar_lheight)
if (Time - cooldown > g_LastLeap[id])
{ 
set_pev(id, pev_button, button & ~IN_RELOAD)
velocity_by_aim(id, lforce, velocity)
velocity[2] = lheight
set_pev(id, pev_velocity, velocity)
g_LastLeap[id] = Time
}
}
else if ( (!g_infreezetime) && (button & IN_ATTACK) && (button & IN_ATTACK2))
{
if(Time - 1.1 > g_LastFthrow[id])
{
clcmd_throw(id)
g_LastFthrow[id] = Time
}
}
else if (!g_infreezetime)
{
static Float:speed; speed = get_pcvar_float(cvar_speed)
set_pev(id, pev_maxspeed, speed)
}
}
else if (!g_zombie[id])
{
if ( (button & IN_BACK) && (flag & FL_ONGROUND) )
{
static Float: backspeed ; backspeed = get_pcvar_float(cvar_backspeed)
pev(id, pev_velocity, velocity)
xs_vec_mul_scalar(velocity, backspeed, velocity)
set_pev(id, pev_velocity, velocity)
}
}

return FMRES_IGNORED
} 
public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{ 
if (g_model[id] && equal(key, "model"))
return FMRES_SUPERCEDE;

return FMRES_IGNORED;
}
public fw_ClientUserInfoChanged(id, infobuffer)
{ 
if (!g_model[id])
return FMRES_IGNORED;

new currentmodel[32]; 
fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);

if(!equal(currentmodel, player_model[id]))
fm_set_user_model(id, player_model[id]) 

return FMRES_IGNORED;
}
public fw_EmitSound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
{
if(!is_user_connected(id) || !g_zombie[id])
return FMRES_IGNORED

//KNIFE
if (sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n')
{
switch(sample[17])
{
case 'l': 
return FMRES_SUPERCEDE

case 's', 'w':
{
emit_sound(id, CHAN_WEAPON, g_sound_miss[random(sizeof g_sound_miss)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}

case 'b', '1', '2', '3', '4':
{
emit_sound(id, CHAN_WEAPON, g_sound_hit[random(sizeof g_sound_hit)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
}
}
//PAIN
else if (sample[1] == 'l' && sample[2] == 'a' && sample[3] == 'y' && ( (containi(sample, "bhit") != -1) || (containi(sample, "pain") != -1) || (containi(sample, "shot") != -1)))
{
emit_sound(id, CHAN_VOICE, g_sound_pain[random(sizeof g_sound_pain)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
} 
//DEATH
else if (sample[7] == 'd' && (sample[8] == 'i' && sample[9] == 'e' || sample[12] == '6'))
{
emit_sound(id, CHAN_VOICE, g_sound_die[random(sizeof g_sound_die)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
} 
//NVG
else if (sample[6] == 'n' && sample[7] == 'v' && sample[8] == 'g')
return FMRES_SUPERCEDE

return FMRES_IGNORED
}
public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id) || !g_zombie[id])
return FMRES_IGNORED

static impulse; impulse = get_uc(handle, UC_Impulse)
if(impulse == 100)
{
set_uc(handle, UC_Impulse, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public bacon_touch(ent, id)
{
if (is_user_alive(id) && g_zombie[id])
return HAM_SUPERCEDE

return HAM_IGNORED
}
public fw_Touch(pToucher, pTouched)
{
if ( pev_valid(pToucher))
{
static className[32], className2[32]
pev(pToucher, pev_classname, className, 31)
if ( pev_valid(pTouched)) pev(pTouched, pev_classname, className2, 31)

if ( equal(className, CLASS_FLESH))
{
static attacker ; attacker = pev(pToucher, pev_owner)

if ( pev_valid(pTouched))
{
if ( equal(className2, "player") && is_user_connected(pTouched))
{
static origin[3], Float: damage
get_user_origin(pTouched, origin)
damage = get_pcvar_float(cvar_fdamage)
static CsTeams:team[2]
team[0] = cs_get_user_team(pTouched), team[1] = cs_get_user_team(attacker)

if (attacker == pTouched)
return FMRES_SUPERCEDE

if (!get_cvar_num("mp_friendlyfire") && team[0] == team[1]) 
return FMRES_SUPERCEDE
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOOD);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2] + 10);
write_coord(random_num(-360, 360));
write_coord(random_num(-360, 360));
write_coord(-10);
write_byte(70);
write_byte(random_num(15, 35));
message_end() 
ExecuteHam(Ham_TakeDamage, pTouched, pToucher, attacker, damage, DMG_GENERIC)
}
else if ( equal(className2, "func_breakable")) dllfunc(DLLFunc_Use, pTouched, attacker) 
else if ( equal(className2, CLASS_FLESH)) return FMRES_SUPERCEDE 
} 
engfunc(EngFunc_RemoveEntity, pToucher)
}
}

return FMRES_IGNORED
} 
public fw_Think_lights(iEnt)
{
if (!pev_valid(iEnt))
return FMRES_IGNORED;

static className[32]
pev(iEnt, pev_classname, className, 31);
static Float:gametime; gametime = get_gametime()

if (equal(className, CLASS_WEATHER))
{
switch (get_pcvar_num(cvar_lights))
{
case 0:
{
engfunc(EngFunc_LightStyle, 0, "m")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
case 1:
{
static thinkReturn, randNum;
if(!g_light_flashing)
{
randNum = random_num(0, 1);
if(randNum)
g_light_flashing = true;
g_light_num = random_num(1, 3);
dllfunc(DLLFunc_Use, iEnt, 0)
}
thinkReturn = lightning();

if(thinkReturn)
set_pev(iEnt, pev_nextthink, gametime + random_float(9.5, 16.5));
else
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
case 2:
{
engfunc(EngFunc_LightStyle, 0, "b")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
default:
{
engfunc(EngFunc_LightStyle, 0, "a")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
}
}
return FMRES_HANDLED;
}
lightning()
{
switch(g_light_num)
{
// Flash 1 time
case 1:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])

if(g_light_counter == 4)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
// Flash 2 times
case 2:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 2;
case 5: g_light_stylenum = 1;
case 6: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])

if(g_light_counter == 6)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
// Flash 3 times
case 3:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 2;
case 5: g_light_stylenum = 1;
case 6: g_light_stylenum = 2;
case 7: g_light_stylenum = 1;
case 8: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])

if(g_light_counter == 8)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
}
return 1;
}
}
I Need To Make Random Classes Hunter - Leaps To Front He Has 800Hp and he's only zombie who can leap, Smoker - Drags Players To Him Self 700Hp,Boomer - Explodes And Kill's People Next To Him and if you can make he pukes on human and human monitor makes green and thei can't see anything for about 5 seconds 450Hp,Tank Becomes One of The Players At Terrorists Team 1 at a time When tank Dies Another 1 player become Tank 3000Hp.And All The Classes (Hunter,Smoker,Boomer) Player Become Hunter He Died He respawned And He Become Smoker or Boomer or maybe Tank or Hunter Again, I Need To Do It Or Can You Help me Do It Please I'am new at this scripting thing.

And When You Make It Can You Compile It Please
DoviuX is offline
Send a message via Skype™ to DoviuX
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 15:32.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode