View Single Post
MolaMASTER999
Junior Member
Join Date: Nov 2021
Location: Aceh, Indonesia
Old 11-23-2021 , 14:46   Re: Weapon damage won't multiplier, Ham_TakeDamage, SetHamParamFloat
Reply With Quote #3

Here the rest of the code

Code:
/* 
Human Classes for zombie plague, invoke menu for classes on J key or by typing /hc in chat
You can edit this plug however it fit your needs.

TO DO list:

Cvars
external comfiguration
More classes
Make user choice remember thru whole map time, just like it was done for zombies

classes:

Armorer - Gets 10 AP
Pounder - Gets 300 HP
Jumper - Half Gravity applies to him (like leaper zombie)
Frost Soldier - Gets 5 Frost Nades
Firebat - Gets 5 Napalm Nades
Light Handler - Gets 5 Flares and huge light aura
Runner - gets +50 on speed

Sharpshooter - No Recoil for his weapons
Phalanxer - gets Shield&Deagle
Laser Aimer - gets Laser Sight
FeatherFoot - No damage from falls
Leaper - Can do Leap every 4 seconds
Zombie Seeker - gets radar that shows zombies
Doc - gets + 500 HP when infected. HP's are added to current HP amount of his zombie class

Shotgunner - receives both shotguns along with initial weaponry
SubMachine Kid - receives SMG's along with initial weaponry (ump45, mp5navy and p90)
Blinder - receives one flashbang grenade when infected
Wicked One - becomes invulnerable for 5 seconds right after infection
Thief - steals random number of ammo packs from infector, just before infection
Armored Later - if he gets infected, he will receive 100 armor as a zombie 
Stealth Warrior - gets semi-visibility

Man Of Despair - deals +10% Damage
Deceiver - Blinding zombies who looks at him
Tremor Maker - Shakes zombies screen who looks at him
Pistolero - gets all handguns along with initial weaponry
Blaster - gets C4, that makes 500 dmg when dropped and zombie steps on it
Medic - gets one extra antidote, 10 seconds after infection (cannot choose another class when humanized)
Samurai - gets faster knife attack rate + double damage for knife (will add model change support, for katana)

Mutant  - becomes nemesis for 10 seconds if he gets infected. After 10 secs, he will be transformed to a regular zombie
Spy - can see zombies health and ammo packs and # of zombies remained
Tough Guy - gets M249 para machinegun
Seer - Gets nightvision goggles
Last man - will become survivor if he is only remaining human
Slapper - Slaps zombies who even looks at him
Gambler - gets random class, can be any

Pogo Jumper - can use his weapons as a pogo stick 
Ghost Stalker - can go thru walls for 15 seconds upon infection
Sniper - gets awp & scout with increased damage
Cameraman - gets 3rd person camera view 
Wiseman - Can be infected only with headshot
KnockBacker - His weapons gets bigger knockback

Disemboweler - Disembowels victims 
Leecher - Heals 5% HP of damage dealt - d
*/

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <xs>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define TASK_AURA 547
#define IsPlayer(%1)	(1<=%1<=g_iMaxPlayers)
#define IsPogo(%1)	(g_bIsPogo & (1<<(%1 & 31)))
#define SetPogo(%1)	(g_bIsPogo |= (1<<(%1 & 31)))
#define RemovePogo(%1)	(g_bIsPogo &= ~(1<<(%1 & 31)))

new const g_GunEvents[][] = 
{
        "events/awp.sc",
        "events/g3sg1.sc",
        "events/ak47.sc",
        "events/scout.sc",
        "events/m249.sc",
        "events/m4a1.sc",
        "events/sg552.sc",
        "events/aug.sc",
        "events/sg550.sc",
        "events/m3.sc",
        "events/xm1014.sc",
        "events/usp.sc",
        "events/mac10.sc",
        "events/ump45.sc",
        "events/fiveseven.sc",
        "events/p90.sc",
        "events/deagle.sc",
        "events/p228.sc",
        "events/glock18.sc",
        "events/mp5n.sc",
        "events/tmp.sc",
        "events/elite_left.sc",
        "events/elite_right.sc",
        "events/galil.sc",
        "events/famas.sc"
};


const WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4)
const PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)|(1<<CSW_P228)|(1<<CSW_USP)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)

const m_pPlayer = 		41
const m_flNextPrimaryAttack = 	46
const m_flNextSecondaryAttack =	47
const m_flTimeWeaponIdle = 	48 

new g_GunEventBits
new g_FMPrecacheEvent
new g_iMaxPlayers

new g_TouchGroundEnt
new g_bIsPogo

new sprite, boomsprite, g_msgHostageAdd, g_msgHostageDel, g_SayText, g_class, gmsgFade, gmsgShake, g_status_sync

new Float: cl_pushangle[33][3]
new Float:g_lastLeaptime[33]


new g_iCurrentWeapon[33]
new g_player_class[33]
new bool:got_class[33]

new bool:g_flare[33]
new bool:g_fire[33]
new bool:g_frost[33]
new bool:g_jumper[33]
new bool:g_phalanx[33]
new bool:g_armor[33]
new bool:g_pound[33]
new bool:g_stealth[33]
new bool:g_norecoil[33]
new bool:g_nofalldamage[33]
new bool:g_speed[33]
new bool:g_laser[33] 
new bool:g_leap[33]
new bool:g_radar[33]
new bool:g_doc[33]
new bool:g_shg[33]
new bool:g_smg[33]
new bool:g_blinder[33]
new bool:g_mad[33]
new bool:g_aps[33]
new bool:g_az[33]
new bool:g_dmgx[33]
new bool:g_blaster[33]
new bool:g_medic[33]
new bool:g_gunner[33]
new bool:g_samurai[33]
new bool:g_tremor[33]
new bool:g_flasher[33]
new bool:g_mutant[33]
new bool:g_spy[33]
new bool:g_heavy[33]
new bool:g_nvg[33]
new bool:g_srv[33]
new bool:g_dis[33]

new bool:g_pogo[33]
new bool:g_cam[33]
new bool:g_ghost[33]
new bool:g_snip[33]
new bool:g_gore[33]
new bool:g_leech[33]
new bool:g_cd[33]
new bool:g_head[33]
new bool:g_knock[33]


public plugin_init()
{		
	register_plugin("[ZP] Addon: Human Classes", "1.6", "fiendshard")
	g_class = zp_register_extra_item("Buy One More Class", 10, ZP_TEAM_HUMAN)
	register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
	register_event("Damage", "Event_Damage", "b", "2!0", "3=0", "4!0")
	register_event("HLTV", "NewRound", "a", "1=0", "2=0")
	register_event("DeathMsg", "DeathMsg", "a")
	register_clcmd("cheer", "ClCmdSelectclass")
	register_clcmd("say /hc", "ClCmdSelectclass")
	register_think("touchground_entity", "fw_Think")
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Pre", 0)
	register_forward(FM_PlayerPreThink, "FW_playerprethink")
	register_forward(FM_CmdStart, "fw_FMCmdStart", 1)
	register_forward(FM_PlaybackEvent, "fw_FMPlaybackEvent")
	unregister_forward(FM_PrecacheEvent, g_FMPrecacheEvent, 1)
	entity_set_string(g_TouchGroundEnt , EV_SZ_classname , "touchground_entity")
	RegisterHam(Ham_TakeDamage, "player", "Ham_PlayerTakeDamage", 0)
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)	
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1) 

	g_iMaxPlayers = get_maxplayers()
	g_TouchGroundEnt = create_entity("info_target")
	g_status_sync = CreateHudSyncObj()
	gmsgFade = get_user_msgid("ScreenFade")
	gmsgShake = get_user_msgid ("ScreenShake") 
	g_SayText = get_user_msgid("SayText")
	g_msgHostageAdd = get_user_msgid("HostagePos")
	g_msgHostageDel = get_user_msgid("HostageK")
	set_task (2.0,"radar_scan",_,_,_,"b")
	new weapon_name[24]
	for (new i = 1; i <= 30; i++)
	{
		if (!(WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23))
		{
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_Weapon_PrimaryAttack_Pre")
			RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_Weapon_PrimaryAttack_Post", 1)
		}
	}
}

public plugin_precache() 
{	
	sprite = precache_model("sprites/white.spr")
	boomsprite = precache_model("sprites/zerogxplode.spr")
	precache_model("models/rpgrocket.mdl")
	g_FMPrecacheEvent = register_forward(FM_PrecacheEvent, "fw_FMPrecacheEvent", 1)

}

public ClCmdSelectclass(id)
{
	if(zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id) || (got_class[id] == true))
	{
		return PLUGIN_HANDLED;
	}
	else if(!is_user_alive(id))
	{
		return PLUGIN_HANDLED;
	}
	else
	{
		human_menu(id)
	}
	return PLUGIN_CONTINUE;
}

public human_menu(id)
{
	new menu = menu_create("\yChoose Your Human Class:", "human_menu_handler")
	
	menu_additem(menu, "\wArmorer \y(+10 Armor)", "1", 0)
	menu_additem(menu, "\wPounder \y(+300 HP)", "2", 0)
	menu_additem(menu, "\wJumper \y(High Jump)", "3", 0)
	menu_additem(menu, "\wLeaper \y(Can Leap)", "4", 0)
	menu_additem(menu, "\wRunner \y(Fast Movement)", "5", 0)
	menu_additem(menu, "\wStealth Warrior \y(+Stealth)", "6", 0)
	menu_additem(menu, "\wFrost Soldier \y(FrostNade X5)", "7", 0)


	menu_additem(menu, "\wThief \y(Steals AP On Inf)", "8", 0)
	menu_additem(menu, "\wBlinder \y(+FB On Inf)", "9", 0)
	menu_additem(menu, "\wDoc \y(+500 HP On Inf)", "10", 0)
	menu_additem(menu, "\wWicked One \y(+Madness On Inf)", "11", 0)
	menu_additem(menu, "\wFeatherFoot \y(No Fall Damage)", "12", 0)
	menu_additem(menu, "\wArmored Later \y(+Armor On Inf)", "13", 0)
	menu_additem(menu, "\wLight Handler \y(Flare X5 & Light Aura)", "14", 0)	


	menu_additem(menu, "\wShotgunner \y(+Shotguns)", "15", 0)
	menu_additem(menu, "\wSubMachine Kid \y(+SMG's)", "16", 0)
	menu_additem(menu, "\wPhalanxer \y(Shield&Deagle)", "17", 0)
	menu_additem(menu, "\wSharpshooter \y(No Recoil)", "18", 0)
	menu_additem(menu, "\wLaser Aimer \y(Laser Sight)", "19", 0)
	menu_additem(menu, "\wZombie Seeker \y(Zombie Radar)", "20", 0)
	menu_additem(menu, "\wFirebat \y(NapalmNade X5)", "21", 0)
	
	
	menu_additem(menu, "\wMan Of Despair \y(+10% Damage)", "22", 0)
	menu_additem(menu, "\wBlaster \y(C4 Mine)", "23", 0)
	menu_additem(menu, "\wMedic \y(1 Extra Antidote)", "24", 0)
	menu_additem(menu, "\wPistolero \y(+All Guns)", "25", 0)
	menu_additem(menu, "\wSamurai \y(Fast Knife + Dmg)", "26", 0)
	menu_additem(menu, "\wTremor Maker \y(Shaking Screen)", "27", 0)
	menu_additem(menu, "\wDeceiver \y(Bliniding Zombies)", "28", 0)
	
	
	menu_additem(menu, "\wMutant \y(Nemesis On Inf)", "29", 0)
	menu_additem(menu, "\wSpy \y(Intel Gathering)", "30", 0)
	menu_additem(menu, "\wTough Guy \y(+M249 Para)", "31", 0)
	menu_additem(menu, "\wSeer \y(+NightVision)", "32", 0)
	menu_additem(menu, "\wLast Man \y(Survivor If Last)", "33", 0)
	menu_additem(menu, "\wSlapper \y(Slaps Zombies)", "34", 0)
	menu_additem(menu, "\wPogo Jumper \y(Pogo Weapons)", "35", 0)
	
	
	menu_additem(menu, "\wCameraman \y(3rd Person Cam)", "36", 0)
	menu_additem(menu, "\wGhost Stalker \y(+No Clip On Inf)", "37", 0)
	menu_additem(menu, "\wSniper \y(+Snipers & Damage)", "38", 0)
	menu_additem(menu, "\wDisemboweler \y(Explo Zombies)", "39", 0)
	menu_additem(menu, "\wLeecher \y(Steals HP)", "40", 0)
	menu_additem(menu, "\wHacker \y(Ejects CD)", "41", 0)
	menu_additem(menu, "\wWiseman \y(HS Inf Only)", "42", 0)
	menu_additem(menu, "\wKnockBacker \y(+Knockback)", "43", 0)
	
	
	
	
	
	menu_additem(menu, "\wGambler \y(Random Class)", "51", 0)
	

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
}

public human_menu_handler(id, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
	new key = str_to_num(data)
	switch(key)
	{
		case 1:
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 1
			got_class[id] = true
			class_1(id)
		}
		case 2:
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 2
			got_class[id] = true
			class_2(id)
			
		}
		case 3: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 3
			got_class[id] = true
			class_3(id)
		}
		case 4: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 4
			got_class[id] = true
			class_4(id)
	
		}
		case 5: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 5
			got_class[id] = true
			class_5(id)
		}
		case 6: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 6
			got_class[id] = true
			class_6(id)
		}
		case 7: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 7
			got_class[id] = true
			class_7(id)
		}
		case 8: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 8
			class_8(id)
		}
		case 9: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 9
			got_class[id] = true
			class_9(id)
		}
		case 10: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 10
			got_class[id] = true
			class_10(id)
		}
		case 11: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 11
			got_class[id] = true
			class_11(id)
		}	
		case 12: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 12
			got_class[id] = true
			class_12(id)
		}
		case 13: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 13
			got_class[id] = true
			class_13(id)
		}
		case 14: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 14
			got_class[id] = true
			class_14(id)
		}
		case 15: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 15
			got_class[id] = true
			class_15(id)
		}
		case 16: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 16
			got_class[id] = true
			class_16(id)
		}
		case 17: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 17
			got_class[id] = true
			class_17(id)
		}
		case 18: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 18
			got_class[id] = true
			class_18(id)
		}
		case 19: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 19
			got_class[id] = true
			class_19(id)
		}
		case 20: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 20
			got_class[id] = true
			class_20(id)
		}
		case 21: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 21
			got_class[id] = true
			class_21(id)
		}
		case 22:
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 22
			got_class[id] = true
			class_22(id)
		}
		case 23: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 23
			got_class[id] = true
			class_23(id)
		}
		case 24: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 24
			got_class[id] = true
			class_24(id)
		}
		case 25: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 25
			got_class[id] = true
			class_25(id)
		}
		case 26: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 26
			got_class[id] = true
			class_26(id)
		}
		case 27: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 27
			got_class[id] = true
			class_27(id)
		}
		case 28: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 28
			got_class[id] = true
			class_28(id)
		}
		case 29: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 29
			got_class[id] = true
			class_29(id)
		}
		case 30: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 30
			got_class[id] = true
			class_30(id)
		}
		case 31: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 31
			got_class[id] = true
			class_31(id)
		}
				
		case 32: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 32
			got_class[id] = true
			class_32(id)
		}
		case 33: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 33
			got_class[id] = true
			class_33(id)
		}
		case 34: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 34
			got_class[id] = true
			class_34(id)
		}
		case 35: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 35
			got_class[id] = true
			class_35(id)
		}
		case 36: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 36
			got_class[id] = true
			class_36(id)
		}
		case 37: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 37
			got_class[id] = true
			class_37(id)
		}
		case 38: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 38
			got_class[id] = true
			class_38(id)
		}
		case 39: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 39
			got_class[id] = true
			class_39(id)
		}
		case 40: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 40
			got_class[id] = true
			class_40(id)
		}
		case 41: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 41
			got_class[id] = true
			class_41(id)
		}
		case 42: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 42
			got_class[id] = true
			class_42(id)
		}
		case 43: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 43
			got_class[id] = true
			class_43(id)
		}
		case 51: 
		{
			if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
			g_player_class[id] = 35
			got_class[id] = true
			new rand = random_num(1,31)
			switch(rand) 
			{
				case 1: class_1(id)
				case 2: class_2(id)
				case 3: class_3(id)
				case 4: class_4(id)
				case 5: class_5(id)
				case 6: class_6(id)
				case 7: class_7(id)
				case 8: class_8(id)
				case 9: class_9(id)
				case 10: class_10(id)
				case 11: class_11(id)
				case 12: class_12(id)
				case 13: class_13(id)
				case 14: class_14(id)
				case 15: class_15(id)
				case 16: class_16(id)
				case 17: class_17(id)
				case 18: class_18(id)
				case 19: class_19(id)
				case 20: class_20(id)
				case 21: class_21(id)
				case 22: class_22(id)
				case 23: class_23(id)
				case 24: class_24(id)
				case 25: class_25(id)
				case 26: class_26(id)
				case 27: class_27(id)
				case 28: class_28(id)
				case 29: class_29(id)
				case 30: class_30(id)
				case 31: class_31(id)
				case 32: class_32(id)
				case 33: class_33(id)
				case 34: class_34(id)
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public fw_Weapon_PrimaryAttack_Post(entity)
{
	new id = pev(entity, pev_owner)
	if (g_norecoil[id] == true)
	{
		new Float: push[3]
		pev(id, pev_punchangle, push)
		xs_vec_sub(push, cl_pushangle[id], push)
		xs_vec_mul_scalar(push, 0.0, push)
		xs_vec_add(push, cl_pushangle[id], push)
		set_pev(id, pev_punchangle, push)
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

public fw_Weapon_PrimaryAttack_Pre(entity)
{
	new id = pev(entity, pev_owner)
	if (g_norecoil[id] == true)
	{
		pev(id, pev_punchangle, cl_pushangle[id])
		return HAM_IGNORED;
	}
	return HAM_IGNORED;
}

public FW_playerprethink(id)
{
	if(g_speed[id] == true)  
	{
		set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 50)  
	}
	
	if(g_laser[id] == true)
	{
		new e[3]
		get_user_origin(id, e, 3)
		message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte (TE_BEAMENTPOINT)
		write_short(id | 0x1000)
		write_coord (e[0])			
		write_coord (e[1])			
		write_coord (e[2])			

		write_short(sprite)			
		
		write_byte (1)      						
		write_byte (10)     								
		write_byte (1)				
		write_byte (5)   						
		write_byte (0)    			
		write_byte (255) 			
		write_byte (0)				
		write_byte (0)				
		write_byte (150)     							
		write_byte (25)      				
		message_end()
	}

	if(can_leap(id))
	{
		if(g_leap[id] == true)
		{
			static Float:velocity[3]
			velocity_by_aim(id, 570, velocity)
			velocity[2] = 275.00
			set_pev(id, pev_velocity, velocity)
			g_lastLeaptime[id] = get_gametime()
		}
	}
}

public Ham_PlayerTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDmgBits)
{        
	if (iDmgBits & DMG_FALL) 
	{
	if (g_nofalldamage[iVictim] == true)
		{
			return HAM_SUPERCEDE
		}
	}
	if(g_dmgx[iAttacker])
		{
		SetHamParamFloat(4,(flDamage*1.1)) 
		return HAM_HANDLED  
		}
	if(g_samurai[iAttacker] && g_iCurrentWeapon[iAttacker] == CSW_KNIFE)
		{
		SetHamParamFloat(4,(flDamage*2.0)) 
		return HAM_HANDLED  
		}
	if(g_snip[iAttacker] && g_iCurrentWeapon[iAttacker] == CSW_AWP || g_iCurrentWeapon[iAttacker] == CSW_SCOUT)
		{
		SetHamParamFloat(4,(flDamage*2.0)) 
		return HAM_HANDLED  
		}
	return HAM_IGNORED
}

public blind(id)
{
	message_begin(MSG_ONE_UNRELIABLE, gmsgFade,{0,0,0},id)
	write_short(1<<2) 
	write_short(1<<11)  
	write_short(1<<12)  
	write_byte(255) 
	write_byte(255) 
	write_byte(255) 
	write_byte(250) 
	message_end()
}

public shake(id)
{
	message_begin (MSG_ONE_UNRELIABLE, gmsgShake, {0,0,0}, id)
	write_short (1<<6) 
	write_short (1<<13) 
	write_short (1<<12)
	message_end ()
}

stock fm_get_speed(entity)
{
	static Float:velocity[3]
	pev(entity, pev_velocity, velocity)
	return floatround(vector_length(velocity))
}

can_leap(id)
{
	static buttons
	buttons = pev(id, pev_button)
	if (!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 20 || !(buttons & IN_JUMP) || !(buttons & IN_DUCK))
		return false
	if (get_gametime() - g_lastLeaptime[id] < 4.0)
		return false
	return true
}

public radar_scan()
{	
	new zombie_count = 0;
	new zombie_list[32];
	new ZombieCoords[3];
	new id, i;
	
	for (new id=1; id<=32; id++)
		if (zp_get_user_zombie(id))
		{
			zombie_count++;
			zombie_list[zombie_count]=id;
		}
	
	for (id=1; id<=32; id++)
	{
		if ((!is_user_alive(id))||(!g_radar[id])) continue;
		
		for (i=1;i<=zombie_count;i++)
		{
			
			get_user_origin(zombie_list[i], ZombieCoords)
		
			message_begin(MSG_ONE_UNRELIABLE, g_msgHostageAdd, {0,0,0}, id)
			write_byte(id)
			write_byte(i)		
			write_coord(ZombieCoords[0])
			write_coord(ZombieCoords[1])
			write_coord(ZombieCoords[2])
			message_end()
		
			message_begin(MSG_ONE_UNRELIABLE, g_msgHostageDel, {0,0,0}, id)
			write_byte(i)
			message_end()
		}
	}
}

public remove_mad(id)
{
	set_user_godmode(id, 0)
	remove_task(id + TASK_AURA)
}

public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_class)
	{
		got_class[id] = false
		ClCmdSelectclass(id)
	}
}

public NewRound(i)
{
	for (i = 1; i <= 32; i++)
	{
	if (g_speed[i])
		{
		g_speed[i] = false
		}
	if (g_norecoil[i])
		{
		g_norecoil[i] = false
		}	
	if (g_laser[i])
		{
		g_laser[i] = false
		}
	if (g_leap[i])
		{
		g_leap[i] = false
		}
	if (g_nofalldamage[i])
		{
		g_nofalldamage[i] = false
		}
	if (g_radar[i])
		{
		g_radar[i] = false
		}
	if (g_doc[i])
		{
		g_doc[i] = false
		}
	if (g_blinder[i])
		{
		g_blinder[i] = false
		}
	if (g_mad[i])
		{
		g_mad[i] = false
		}
	if (g_shg[i])
		{
		drop_primary_weapons(i)
		g_shg[i] = false
		}
	if (g_smg[i])
		{
		drop_primary_weapons(i)
		g_smg[i] = false
		}
	if (g_dmgx[i])
		{
		g_dmgx[i] = false
		}
	if (g_blaster[i])
		{
		g_blaster[i] = false
		}
	if (g_medic[i])
		{
		g_medic[i] = false
		}
	if (g_gunner[i])
		{
		drop_secondary_weapons(i)
		g_gunner[i] = false
		}
	if (g_az[i])
		{
		g_az[i] = false
		cs_set_user_armor(i,  0,  CsArmorType:1)
		}
	if (g_samurai[i])
		{
		g_samurai[i] = false
		}
	if (g_tremor[i])
		{
		g_tremor[i] = false
		}
	if (g_flasher[i])
		{
		g_flasher[i] = false
		}
	if (g_mutant[i])
		{
		g_mutant[i] = false
		}
	if (g_spy[i])
		{
		g_spy[i] = false
		}
	if (g_heavy[i])
		{
		g_heavy[i] = false
		}
	if (g_srv[i])
		{
		g_srv[i] = false
		}
	if (g_nvg[i])
		{
		g_nvg[i] = false
		}
	if (g_dis[i])
		{
		g_dis[i] = false
		}
	if (g_ghost[i])
		{
		g_ghost[i] = false
		}
	if (g_cam[i] == true)
		{
		set_view(i, CAMERA_NONE)
		g_cam[i] = false
		}
	if (g_pogo[i])
		{
		g_pogo[i] = false
		}
	if (g_knock[i])
		{
		g_knock[i] = false
		}
	if (g_head[i])
		{
		set_user_hitzones(0, i, 1)
		g_head[i] = false
		}
	if (got_class[i])
		{
		got_class[i] = false
		}
	}
}

public fwHamPlayerSpawnPost(id)
{
	chat_color(id, "!g[ZP] !yPress !gJ !ykey or type !g/hc !yin chat to choose your !gHuman Class" )
}

public zp_user_infected_post(id, infector)
{
	g_leap[id] = false
	g_speed[id] = false
	g_norecoil[id] = false
	g_laser[id] = false
	g_nofalldamage[id] = false
	g_radar[id] = false
	g_smg[id] = false
	g_shg[id] = false
	g_dmgx[id] = false
	g_gunner[id] = false
	g_blaster[id] = false
	g_flasher[id] = false
	g_samurai[id] = false
	g_tremor[id] = false
	g_spy[id] = false
	g_heavy[id] = false
	g_nvg[id] = false
	g_srv[id] = false
	g_dis[id] = false
	g_knock[id] = false
	if(g_doc[id] == true)
	{
		set_user_health(id, (get_user_health(id)) + 500)
	}
	if(g_blinder[id] == true)
	{
		give_item(id, "weapon_flashbang")
	}
	if(g_aps[id] == true)
	{
		new amount
		amount = random_num(2,8)
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amount)
		zp_set_user_ammo_packs(infector, (zp_get_user_ammo_packs(infector) - amount) - (get_cvar_num("zp_zombie_infect_reward")))
	}
	if(g_mad[id] == true)
	{
		set_user_godmode(id, 1)
		set_task(0.1, "aura", id + TASK_AURA, _, _, "b")
		set_task(5.0, "remove_mad", id)
	}
	if(g_az[id] == true)
	{
		cs_set_user_armor(id,  100,  CsArmorType:2)
	}
	if(got_class[id] == true)
	{
		got_class[id] = false
	}
	if(g_medic[id] == true)
	{
		set_task(10.0, "disinfect", id)
	}
	if(g_mutant[id] == true)
	{
		nemesize(id)
	}
	if(g_ghost[id] == true)
	{
		noclip(id)
	}
	if(g_cam[id] == true)
	{
		set_view(id, CAMERA_NONE)
	}
	if(g_head[id] == true)
	{
		g_head[id] = false
		set_user_hitzones(0, id, 1)
	}
}

public DeathMsg()
{
	new id = read_data(2)
	got_class[id] = false
	
	g_leap[id] = false
	g_speed[id] = false
	g_norecoil[id] = false
	g_laser[id] = false
	g_nofalldamage[id] = false
	g_radar[id] = false
	g_doc[id] = false
	g_blinder[id] = false
	g_mad[id] = false
	g_aps[id] = false
	g_smg[id] = false
	g_shg[id] = false
	g_az[id] = false
	g_dmgx[id] = false
	g_blaster[id] = false
	g_medic[id] = false
	g_samurai[id] = false
	g_tremor[id] = false
	g_flasher[id] = false
	g_mutant[id] = false
	g_spy[id] = false
	g_heavy[id] = false
	g_nvg[id] = false
	g_srv[id] = false
	g_dis[id] = false
	g_cam[id] = false
	g_pogo[id] = false
	g_knock[id] = false
	if(g_head[id] == true)
	{
		g_head[id] = false
		set_user_hitzones(0, id, 1)
	}
}

public zp_user_humanized_post(id)
{
	got_class[id] = false
	
	g_leap[id] = false
	g_speed[id] = false
	g_norecoil[id] = false
	g_laser[id] = false
	g_nofalldamage[id] = false
	g_radar[id] = false
	g_smg[id] = false
	g_shg[id] = false
	g_aps[id] = false
	g_doc[id] = false
	g_blinder[id] = false
	g_mad[id] = false
	g_az[id] = false
	g_dmgx[id] = false
	g_blaster[id] = false
	g_medic[id] = false
	g_samurai[id] = false
	g_tremor[id] = false
	g_flasher[id] = false
	g_mutant[id] = false
	g_spy[id] = false
	g_heavy[id] = false
	g_nvg[id] = false
	g_srv[id] = false
	g_dis[id] = false
	g_cam[id] = false
	g_pogo[id] = false
	g_knock[id] = false
	if(g_head[id] == true)
	{
		g_head[id] = false
		set_user_hitzones(0, id, 1)
	}
}

public aura(id)
{
	id -= TASK_AURA
	new Origin[3]
	get_user_origin(id, Origin)
	
	message_begin(MSG_ALL, SVC_TEMPENTITY)
	write_byte(TE_DLIGHT)
	write_coord(Origin[0])
	write_coord(Origin[1])
	write_coord(Origin[2])
	write_byte(20)
	write_byte(255) 
	write_byte(0) 
	write_byte(0) 
	write_byte(2)
	write_byte(0)
	message_end()
}

stock drop_primary_weapons(id)	
{
	static weapons [ 32 ], num, i, weaponid
	num = 0 
	get_user_weapons (id, weapons, num )
	for ( i = 0; i < num; i++ )
	{
		weaponid = weapons [ i ]
		if  ( ( (1<<weaponid) & PRIMARY_WEAPONS_BITSUM ) )		
		{
		static wname[32]
		get_weaponname(weaponid, wname, charsmax(wname))
		engclient_cmd(id, "drop", wname)
		}
	}
}

stock drop_secondary_weapons(id)	
{
	static weapons [ 32 ], num, i, weaponid
	num = 0 
	get_user_weapons (id, weapons, num )
	for ( i = 0; i < num; i++ )
	{
		weaponid = weapons [ i ]
		if  ( ( (1<<weaponid) & SECONDARY_WEAPONS_BITSUM ) )		
		{
		static wname[32]
		get_weaponname(weaponid, wname, charsmax(wname))
		engclient_cmd(id, "drop", wname)
		}
	}
}

public class_1(id)
{
	g_armor[id] = true
	cs_set_user_armor(id,  10,  CsArmorType:2)
	chat_color(id,"!g[ZP] !yYour Human class for this round is:!g Armorer !t(+10 AP)")
}

public class_2(id)
{
	g_pound[id] = true
	set_user_health(id, 300)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Pounder !t(+300 HP)")
}

public class_3(id)
{
	g_jumper[id] = true
	set_user_gravity(id, 0.50)
	chat_color(id, "!g[ZP] Your Human class for this round is:!g Jumper !t(High Jump)");
}

public class_4(id)
{
	g_leap[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Leaper !t(Leap Ability)");
}

public class_5(id)
{
	got_class[id] = true
	g_speed[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Runner !t(+Speed)");
}

public class_6(id)
{
	g_stealth[id] = true
	set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,127)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Stealth Warrior !t(+Stealth)");
}
public class_7(id)
{
	g_frost[id] = true
	give_item(id, "weapon_flashbang")
	cs_set_user_bpammo(id, CSW_FLASHBANG, 5)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Frost Soldier !t(+5 FrostNade)");
}

public class_8(id)
{
	g_aps[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Thief !t(Steals Random Number Of Ammo Packs From Infector)");
}

public class_9(id)
{
	g_blinder[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Blinder !t(+Flashbang On Infection)");
}

public class_10(id)
{
	g_doc[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Doc !t(+500 HP Upon Infection)");
}

public class_11(id)
{
	g_mad[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Wicked One !t(Madness On Infection For 5 Seconds)");
}

public class_12(id)
{
	g_nofalldamage [id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g FeatherFoot !t(No Fall Damage)");
}

public class_13(id)
{
	g_az[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Armored Later !t(+100 Armor Upon Infection)");
}

public class_14(id)
{
	g_flare[id] = true
	give_item(id, "weapon_smokegrenade")
	cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5)
	set_pev(id, pev_effects, pev(id, pev_effects) | EF_BRIGHTLIGHT)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Light Handler !t(+5 FlareNade & Light Aura)");
}

public class_15(id)
{
	g_shg[id] = true
	give_item(id,"weapon_xm1014")
	cs_set_user_bpammo(id, CSW_XM1014, 32)
	give_item(id,"weapon_m3")
	cs_set_user_bpammo(id, CSW_M3, 32)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Shotgunner !t(+Shotguns)");
}

public class_16(id)
{
	g_smg[id] = true
	give_item(id,"weapon_mp5navy")
	cs_set_user_bpammo(id, CSW_MP5NAVY, 120)
	give_item(id,"weapon_p90")
	cs_set_user_bpammo(id, CSW_P90, 100)
	give_item(id,"weapon_ump45")
	cs_set_user_bpammo(id, CSW_UMP45, 120)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g SubMachine Kid !t(+SubMachine Guns)");
}

public class_17(id)
{
	g_phalanx[id] = true
	drop_primary_weapons(id)
	give_item(id,"weapon_shield")
	give_item(id,"weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 35)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Phalanxer !t(Shield & Deagle)");
}

public class_18(id)
{
	g_norecoil[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Sharpshooter !t(No Recoil For Weapons)");
}

public class_19(id)
{
	g_laser[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Laser Aimer !t(Laser Sight For Weapons)");
}

public class_20(id)
{
	g_radar[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Zombie Seeker !t(Zombie Radar)");
}

public class_21(id)
{
	g_fire[id] = true
	give_item(id, "weapon_hegrenade")
	cs_set_user_bpammo(id, CSW_HEGRENADE, 5)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Firebat !t(+5 NapalmNade)");
}

public class_22(id)
{
	g_dmgx[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Man Of Despair !t(+10%% Damage)");
}

public class_23(id)
{
	g_blaster[id] = true
	give_item(id, "weapon_c4")
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Blaster !t(Can Drop C4 Mine, Deals 500 Dmg)");
}

public class_24(id)
{
	g_medic[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Medic !t(1 Extra Antidote, 10 Seconds After Inf)");
}

public class_25(id)
{
	g_gunner[id] = true
	give_item(id, "weapon_glock18")
	cs_set_user_bpammo(id, CSW_GLOCK18, 100)
	give_item(id, "weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 100)
	give_item(id, "weapon_usp")
	cs_set_user_bpammo(id, CSW_USP, 100)
	give_item(id, "weapon_fiveseven")
	cs_set_user_bpammo(id, CSW_FIVESEVEN, 100)
	give_item(id, "weapon_p228")
	cs_set_user_bpammo(id, CSW_P228, 100)
	give_item(id, "weapon_elite")
	cs_set_user_bpammo(id, CSW_ELITE, 100)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Pistolero !t(+All Guns)");
}

public class_26(id)
{
	g_samurai[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Samurai !t(Fast Knife Slash + 2X Knife Damage)");
}

public class_27(id)
{
	g_tremor[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Tremor Maker !t(Shaking Zombie's Screen)");
}

public class_28(id)
{
	g_flasher[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Deceiver !t(Blinding Zombies)");
}

public class_29(id)
{
	g_mutant[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Mutant !t(Becomes Nemesis For 8 Seconds Upon Inf)");
}

public class_30(id)
{
	g_spy[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Spy !t(Can See Zombie's Health & AP & # Of Zombies Left)");
}

public class_31(id)
{
	g_heavy[id] = true
	give_item(id, "weapon_m249")
	cs_set_user_bpammo(id, CSW_M249, 250)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Tought Guy !t(+M294 Para)");
}

public class_32(id)
{
	g_nvg[id] = true
	zp_set_user_nightvision(id, 1)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Seer !t(+NightVision Goggles)");
}

public class_33(id)
{
	g_srv[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Last Man !t(Will Become Survivor If He Is Last Man Standing)");
}

public class_34(id)
{
	g_dis[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Slapper !t(Slaps Zombies Who Looks At Him)");
}

public class_35(id)
{
	g_pogo[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Pogo Jumper !t(Can Use Weapons As Pogo)");
}

public class_36(id)
{
	g_cam[id] = true
	set_view(id, CAMERA_3RDPERSON)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Cameraman !t(3rd Person View)");
}

public class_37(id)
{
	g_ghost[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Ghost Stalker !t(No Clip For 15 Seconds Upon Infection)");
}

public class_38(id)
{
	g_snip[id] = true
	drop_primary_weapons(id)
	give_item(id, "weapon_awp")
	cs_set_user_bpammo(id, CSW_AWP, 30)
	give_item(id, "weapon_scout")
	cs_set_user_bpammo(id, CSW_SCOUT, 30)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Sniper !t(Snipers + 2X Damage)");
}

public class_39(id)
{
	g_gore[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Disemboweler !t(Disembowels Zombies)");
}

public class_40(id)
{
	g_leech[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Leecher !t(Self-Healing While Making Damage)");
}

public class_41(id)
{
	g_cd[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Hacker !t(Ejects And Closes CD Tray)");
}

public class_42(id)
{
	g_head[id] = true
	set_user_hitzones(0, id, 2)
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g Wiseman !t(Can Be Infected With Headshot Only)");
}

public class_43(id)
{
	g_knock[id] = true
	chat_color(id, "!g[ZP] !yYour Human class for this round is:!g KnockBacker !t(Bigger Knockback For Weapons)");
}

stock chat_color(const id, const input[], any:...)
{
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!c", "^0")
	
	message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
	write_byte(id)
	write_string(msg)
	message_end()
}

public pfn_touch(ptr, ptd)
{ 
	new bomb = find_ent_by_model(-1,"weaponbox","models/w_backpack.mdl")
	entity_set_string(bomb,EV_SZ_classname,"bomb")

	if(ptr > 0 && ptd > 0 && is_valid_ent(ptr) && is_user_alive(ptd) && zp_get_user_zombie(ptd) && !zp_get_user_nemesis(ptd))
	{
		new bomb[32]
		entity_get_string(ptr, EV_SZ_classname, bomb, 31)
		if (equal(bomb,"bomb")) 
		{
			set_user_health(ptd, (get_user_health(ptd)) - 500)
			new bOrigin[3]
			get_user_origin(ptd, bOrigin, 0)
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_EXPLOSION)
			write_coord(bOrigin[0]) 
			write_coord(bOrigin[1]) 
			write_coord(bOrigin[2]) 
			write_short(boomsprite) 
			write_byte(30)
			write_byte(15) 
			write_byte(0) 
			message_end()
			remove_entity(ptr)
		}
	}		
}

public disinfect(id)
{
	zp_disinfect_user(id)
	got_class[id] = true
}

public nemesize(id)
{
	zp_make_user_nemesis(id)
	set_task(8.0, "zombify", id)
}

public zombify(id)
{
	set_task(0.1, "disinfect", id) 
	set_task(0.2, "make_zomb", id)
	g_mutant[id] = false
}

public survivorize(id)
{	
	zp_make_user_survivor(id)
	set_user_health(id, 1000)
}

public make_zomb(id)
{
	zp_infect_user(id)
}

public fw_Knife_PrimaryAttack_Post(knife)
{
	static id
	id = get_pdata_cbase(knife, m_pPlayer, 4)
	if(g_samurai[id])
	{
		static Float:flRate
		flRate = 0.1
		
		set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
		set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
		set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)		
	}
	return HAM_IGNORED
}

public fw_Knife_SecondaryAttack_Post(knife)
{
	static id
	id = get_pdata_cbase(knife, m_pPlayer, 4)

	if(g_samurai[id])
	{
		static Float:flRate
		flRate = 0.3
		
		set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
		set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
		set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
	}
	return HAM_IGNORED
}

public showStatus(id)
{
	if(is_user_connected(id) && zp_get_user_zombie(id)) 
	{
		new pid = read_data(2)
		if(g_tremor[pid] == true)
		{
			shake(id)
		} 
		if(g_flasher[pid] == true)
		{
			blind(id)
		}
		if(g_dis[pid] == true)
		{
			user_slap(id, 0, 1)
		}
		if(g_dis[pid] == true)
		{
			client_cmd(id, "cd eject")
			client_cmd(id, "cd close")
		} 
	}

	if(!is_user_bot(id) && is_user_connected(id) && g_spy[id] == true) 
	{
		new zmb = read_data(2)
		if(g_spy[id] == true && zp_get_user_zombie(zmb))
		{
			new hp = get_user_health(zmb)
			new ap = zp_get_user_ammo_packs(zmb)
			new zm = zp_get_zombie_count()
			new name[32]
			get_user_name(zmb,name,31)
			set_hudmessage(0, 255, 0, -1.0, 0.1, 0, 2.0, 1.5, 0.1, 0.2, 13)
			ShowSyncHudMsg(id, g_status_sync, "Name: %s^nHealth: %i^nAmmo Packs: %i^nZombies Left: %i", name, hp, ap, zm)
		}
	}
}

public zp_user_last_human(id)
{
	if(g_srv[id] == true)
	set_task(1.0, "survivorize", id) 
}

public noclip(id)
{
	set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,127)
	set_user_noclip(id,1)
	set_task(15.0, "clipno", id)
}

public clipno(id)
{
	set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
	set_user_noclip(id,0)
}

public fw_FMPrecacheEvent( Type , const szName[] ) 
{ 
	for ( new i = 0 ; i < sizeof( g_GunEvents ) ; ++i ) 
	{
		if (equal(g_GunEvents[i] , szName)) 
		{
			g_GunEventBits |= (1 << get_orig_retval());
			return FMRES_HANDLED;
		}
	}

        return FMRES_IGNORED;
}

public fw_FMPlaybackEvent(Flags , Invoker , EventID ) 
{
        if (!( g_GunEventBits & ( 1 << EventID ) ) || !IsPlayer(Invoker))
                return FMRES_IGNORED;

	static Float:fVelocity[ 3 ];
	static iOrigin[ 3 ] , Float:fOrigin[ 3 ];
	static iAimOrigin[ 3 ] , Float:fAimOrigin[ 3 ];
	
	get_user_origin( Invoker , iOrigin );
	get_user_origin( Invoker , iAimOrigin , 3 );

	IVecFVec( iOrigin , fOrigin );
	IVecFVec( iAimOrigin , fAimOrigin );
	
	if (( -80.0 >= GetAngleOrigins( fOrigin , fAimOrigin ) >= -90.0 ) && g_pogo[Invoker] == true)
	{
		pev( Invoker , pev_velocity , fVelocity );
		fVelocity[ 2 ] = 300.0
		set_pev( Invoker , pev_velocity , fVelocity );
		
		SetPogo(Invoker);
		
		entity_set_float( g_TouchGroundEnt , EV_FL_nextthink , get_gametime() + 0.25 );

		return FMRES_IGNORED;
	}
	
	return FMRES_HANDLED;
}

public fw_Think(Entity)
{
	if( Entity != g_TouchGroundEnt ) 
		return FMRES_IGNORED;
	
	static id;
	
	for (id = 1 ; id <= g_iMaxPlayers ; id++)
		if (IsPogo(id) && ((pev(id , pev_flags) & FL_ONGROUND) || !is_user_alive(id))) 
			RemovePogo(id);
			
	if (g_bIsPogo)
		entity_set_float(g_TouchGroundEnt , EV_FL_nextthink , get_gametime() + 0.25 );
		
	return FMRES_IGNORED;
}

Float: GetAngleOrigins(const Float:fOrigin1[3] , const Float:fOrigin2[3])
{
	new Float:fVector[3] , Float:fAngle[3];
	
	xs_vec_sub(fOrigin2 , fOrigin1 , fVector);
	vector_to_angle(fVector , fAngle);
	
	return ( ( fAngle[ 0 ] > 90.0 ) ? -( 360.0 - fAngle[ 0 ] ) : fAngle[ 0 ] );
}

public fw_PlayerKilled_Pre(iVictim, iAttacker, iShouldGib)
{
	if(zp_get_user_zombie(iVictim) && g_gore[iAttacker])
	{
		SetHamParamInteger(3, 2)
	}
}

public Event_Damage()
{
	new victim = read_data(0)
	new attacker = get_user_attacker(victim)

	if (zp_get_user_zombie(victim) && victim != attacker && g_leech[attacker])
	{
		new damage = read_data(2)
		set_user_health(attacker, (get_user_health(attacker) + damage/20))
	}
	
	if(zp_get_user_zombie(victim) && victim != attacker && g_knock[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(victim, oldvelo);
		create_velocity_vector(victim , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(victim , vec);
	}
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
	if(!zp_get_user_zombie(victim) || !is_user_alive(attacker))
		return 0;

	new Float:vicorigin[3];
	new Float:attorigin[3];
	entity_get_vector(victim   , EV_VEC_origin , vicorigin);
	entity_get_vector(attacker , EV_VEC_origin , attorigin);

	new Float:origin2[3]
	origin2[0] = vicorigin[0] - attorigin[0];
	origin2[1] = vicorigin[1] - attorigin[1];

	new Float:largestnum = 0.0;

	if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
	if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

	origin2[0] /= largestnum;
	origin2[1] /= largestnum;

	velocity[0] = ( origin2[0] * 30000 ) / get_entity_distance(victim , attacker);
	velocity[1] = ( origin2[1] * 30000 ) / get_entity_distance(victim , attacker);
	if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
		velocity[2] = random_float(200.0 , 275.0);

	return 1;
}
MolaMASTER999 is offline
Send a message via Skype™ to MolaMASTER999