[Cerere Plugin]Prophunt.sma

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
bogdan2
Membru, skill 0
Membru, skill 0
Posts: 20
Joined: 24 Jun 2017, 00:40
Detinator Steam: Da
CS Status: Ocupat
Detinator server CS: Strike.evils.ro
SteamID: Bogdan2N
Fond eXtream: 0
Location: Galati
Contact:

17 Jun 2019, 21:46

Plugin Cerut: prophunt.sma
Descriere (adica ce face el mai exact): Tero se transforma diferite obiecte iar CT trebuie sa ii gaseasca .Tero au un meniu de obiecte in care te poti transforma intr.o cutie, scaun, TV, etc iar CT un meniu de hunters cu diferite abilitati 125hp etc .
am un plugin mai vechi dar nu imi apare meniul la Tero .
Serverul ruleaza (HLDS/ReHLDS): HLDS/ReHLDS
Versiune AMX Mod X: 1.8.2/1.8.3
Modul Serverului: PropHunt

[spoiler]Image[/spoiler]
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>

new const VERSION[] = "1.1";

new const g_pyrofireSpr_[] = "sprites/explode1.spr";

new const g_pmdl_flamethrower[] = "models/p_flamethrower.mdl";
new const g_vmdl_flamethrower[] = "models/v_flamethrower.mdl";

new const g_FtSound[] = "flamethrower.wav";

new const g_smokeSpr_[] = "sprites/black_smoke3.spr";
new const g_flameSpr_[] = "sprites/flame.spr";

new const g_CountdownSound[][] =
{
	"fvox/time_is_now.wav",
	"fvox/one.wav",
	"fvox/two.wav",
	"fvox/three.wav",
	"fvox/four.wav",
	"fvox/five.wav"
};

#define is_player_alive(%1) (1 <= %1 <= gMaxPlayers && g_bIsAlive[%1])
#define is_player_connected(%1) (1 <= %1 <= gMaxPlayers && g_bIsConnected[%1])
#define remove_prop(%1) (engfunc(EngFunc_RemoveEntity, g_iProp[%1]), g_iProp[%1]=0)

#define VectorAdd(%1,%2,%3) (%3[0] = %1[0] + %2[0], %3[1] = %1[1] + %2[1], %3[2] = %1[2] + %2[2])
#define VectorScale(%1,%2,%3) (%3[0] = %2 * %1[0], %3[1] = %2 * %1[1], %3[2] = %2 * %1[2])

new const g_sB[] = "b";
new const g_sA[] = "a";
new const g_sBE[] = "be";
new const g_sPlayer[] = "player";
new const g_sInfoTarget[] = "info_target";
//new const g_sClassName[] = "classname"
new const g_sBlank[] = "";
new const g_sCommandNotAvailable[] = "Command_Not_Available";
new const g_sMsgWins[][] =
{
	"Terrorists_Win",
	"Hostages_Not_Rescued",
	"CTs_Win"
};

const OFFSET_PAINSHOCK = 108

const HIDE_HUD = ( 1 << 0 );
//const HIDE_NONE = ( 1 << 7 );

enum (+= 200) { TASK_HIDETIME = 9999, TASK_HEAL, TASK_ZOOM, TASK_BURN, TASK_SCLIP };

enum { HEAVY = 1, PYRO, SNIPER };

new const g_iClassAmmo[] = { -1, 200, -1, 40 };

new const g_szSeekerWpns[][] = 
{
	"",
	"weapon_m249",
	"weapon_xm1014",
	"weapon_scout",
	"weapon_knife"
};

enum { HUD_BOARD, HUD_ZOOM, HUD_CROSSHAIR, HUD_OBJ };
enum { ICON_SPEEDBOOST, ICON_BUYZONE };

new const g_iClassHealth[] = { -1, 200, 170, 150 };

new const g_szPlayerCamera[] = "Player_camera";
new const g_szHiderProp[] = "Hider_Prop";
new const g_bar[][] = { "|||||", "_____" };
new const g_teamnum[][] = { "0", "1", "2", "3" };
new const g_classnum[][] = { "1", "2", "3", "4" };

enum { TEAM_T = 1, TEAM_CT };

new const g_cTeamChars[] = { 'U', 'T', 'C', 'S' };
new const g_cmdTeam[][] = { "jointeam", "chooseteam", "joinclass" };

new const g_weapon_entity[][] =
{
	"weaponbox",
	"armoury_entity",
	"weapon_shield"
};

new const g_sBuyCommands[][] =  
{ 
    "buy", "buyequip", "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",  
    "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren", 
    "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge", 
    "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550", 
    "buyammo1", "buyammo2", "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy"
};

new const g_sRemoveEntities[][] =
{
	"func_bomb_target",
	"info_bomb_target",
	"hostage_entity",
	"monster_scientist",
	"func_hostage_rescue",
	"info_hostage_rescue",
	"info_vip_start",
	"func_vip_safetyzone",
	"func_escapezone",
	"armoury_entity"
};

new bool:g_bGameOn = true, bool:g_bInHideTime;
new Array:g_sPropsModel;
new g_iProp[33], g_iCamera[33], g_iHunterClass[33], bool:g_bCameraOn[33];
new bool:g_bIsHider[33], bool:g_bIsAlive[33], bool:g_bIsConnected[33];
new g_CvarBlockteam, g_CvarHidetime, g_CvarHealtime, g_CvarFlamedura, g_CvarHpLostAmt,
	g_CvarHiderspeed, g_CvarSpeedBoost, g_CvarFtFuel;
new gMaxPlayers, gMsgStatusIcon, gMsgSayText, gMsgHideWeapon,
	gMsgScreenFade, gMsgCrossHair, gMsgBarTime, g_hudmsg[4];
new g_pyrofireSpr, g_smokeSpr, g_flameSpr;
new g_iTeam[33], g_iPlayers[5];
new bool:g_bRoundEnd, g_iDoublejump[33], g_iCurWeapon[33], g_iFuel[33];
new g_iCountdownTime, Float:g_fLastfire[33], g_bHasSpeedBoost[33];
new g_iZoomPower[33], g_iSniperDmg[33];
new Float:g_fGameStartTime, Float:g_fFrags[33];
new g_iHostage, g_iHideTime

public plugin_init() 
{
	if(!g_bGameOn)
		return;
		
	register_dictionary("csprophunt.txt");
	
	RegisterHam(Ham_Spawn, g_sPlayer, "fw_spawn_player_post", 1);
	RegisterHam(Ham_TakeDamage, g_sPlayer, "fw_TakeDamage");
	RegisterHam(Ham_TakeDamage, g_sPlayer, "fw_TakeDamage_post", 1);
	RegisterHam(Ham_Killed, "player", "fw_killed_player");
	
	new sEventTouchWpn[] = "event_touch_weapon";
	for(new i; i < 3; i++)
		RegisterHam(Ham_Touch, g_weapon_entity, sEventTouchWpn);
	
	RegisterHam(Ham_Think, g_sInfoTarget, "fw_ent_think");
	RegisterHam(Ham_Weapon_PrimaryAttack, g_szSeekerWpns[1], "fw_WeaponAttack");
	RegisterHam(Ham_Weapon_PrimaryAttack, g_szSeekerWpns[3], "fw_WeaponAttack");
	RegisterHam(Ham_Weapon_SecondaryAttack, g_szSeekerWpns[4], "fw_WeaponAttack");
	
	register_event("TeamInfo", "event_TeamInfo", g_sA);
	register_event("CurWeapon", "event_curweapon", g_sBE, "1=1");
	register_event("SetFOV", "Event_SetFOV", "be")
//	register_event("HLTV", "EventNewRound", g_sA, "1=0", "2=0" );
	register_logevent("EventRoundStart", 2, "1=Round_Start");
	register_logevent("EventRoundEnd", 2, "1=Round_End" );
	register_event("TextMsg", "RestartRound", g_sA, "2&#Game_C", "2&#Game_w");
//	register_event("DeathMsg", "eventDeathMsg", g_sA, "2!0");
	register_event("StatusIcon", "Event_BuyZone", g_sB, "2=buyzone");
	
//	register_message(get_user_msgid("StatusIcon"), "msgStatusIcon");
	register_message(get_user_msgid("TextMsg"), "msg_textmsg");
	register_message(get_user_msgid("WeapPickup"), "msg_weaponpickup");
	register_message(get_user_msgid("AmmoPickup"), "msg_ammopickup");
	
	register_forward(FM_GetGameDescription, "fwd_GameDescription");
	register_forward(FM_CmdStart, "fwd_CmdStart");
	register_forward(FM_UpdateClientData, "fwd_UpdateClientData_Post", 1);
	register_forward(FM_PlayerPreThink, "fwd_Player_PreThink");
	register_forward(FM_PlayerPostThink, "fwd_Player_PostThink");
	register_forward(FM_ClientKill, "fwd_ClientKill");
	
	new sBuyHandle[] = "cmd_buy";
	for(new i = 0; i < sizeof g_sBuyCommands; i++) 
		register_clcmd(g_sBuyCommands, sBuyHandle);
	
	register_clcmd("drop", "cmd_drop");
	for(new i; i < 2; i++)
		register_clcmd(g_cmdTeam, "cmd_chooseteam", -1, g_sBlank);
	register_clcmd("say /class", "cmd_choose_class");
	
	for(new i = 0; i < 4; i++)
		g_hudmsg = CreateHudSyncObj();
	
	set_task(2.0, "show_hud", _, _, _, g_sB);
	
	set_cvar_num("mp_playerid", 1); //hunter won't see hider'name when aiming
	
	gMaxPlayers = get_maxplayers();
	gMsgStatusIcon = get_user_msgid("StatusIcon");
	gMsgSayText = get_user_msgid("SayText");
	gMsgHideWeapon = get_user_msgid("HideWeapon");
	gMsgScreenFade = get_user_msgid("ScreenFade");
	gMsgCrossHair = get_user_msgid("Crosshair");
	gMsgBarTime = get_user_msgid("BarTime")
//	gMsgDeathmsg = get_user_msgid("DeathMsg");
}

public plugin_precache()
{
	register_plugin("CS PropHunt", VERSION, "Ryokin");
	register_cvar("ph_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("ph_version", VERSION);
	
	g_CvarBlockteam = register_cvar("ph_block_jointeam", "1");
	g_CvarHidetime = register_cvar("ph_hide_time", "20");
	g_CvarHealtime = register_cvar("ph_healing_time", "30");
	g_CvarFlamedura = register_cvar("ph_flame_duration", "10");
	g_CvarHpLostAmt = register_cvar("ph_wpnfire_hp_amount", "5"); //hp losing when wpn fire
	g_CvarHiderspeed = register_cvar("ph_hider_speed", "280.0");
	g_CvarSpeedBoost = register_cvar("ph_speed_boost", "15.0");
	g_CvarFtFuel = register_cvar("ph_flamethrower_fuel", "150");
	
	g_sPropsModel = ArrayCreate(32, 1);
	
	static cfgdir[32], mapname[32], filepath[100];
	get_configsdir(cfgdir, charsmax(cfgdir));
	get_mapname(mapname, charsmax(mapname));
	format(mapname, charsmax(mapname), "[%s]", mapname);
	formatex(filepath, charsmax(filepath), "%s/cs_prophunt.ini", cfgdir);
	
	if(!file_exists(filepath))
	{
		server_print("[PropHunt] WARNING: Can't find file %s", filepath);
		g_bGameOn = false;
		return;
	}
	
	static linedata[1024], key[64], value[960], buffer[100], bool:catch_map, bool:bHadCatchedMap = false;

	new file = fopen(filepath, "rt");
	
	while(file && !feof(file))
	{
		fgets(file, linedata, charsmax(linedata));
		
		replace(linedata, charsmax(linedata), "^n", "");
		
		if(!linedata[0] || linedata[0] == ';') 
			continue;
			
		if(linedata[0] == '[')
		{
			strtok(linedata, key, charsmax(key), value, charsmax(value));
			trim(key);
			trim(value);
			
			if(equal(key, mapname))
			{
				if(!bHadCatchedMap) 
					bHadCatchedMap = true; //found map's name
				catch_map = true;
			}
			else catch_map = false;
			
			continue;
		}
			
		if(!catch_map)
			continue;
			
		strtok(linedata, key, charsmax(key), value, charsmax(value), '=');
		
		trim(key)
		trim(value)
		
		if(equal(key, "HIDE TIME"))
		{
			g_iHideTime = str_to_num(value);
			continue
		}
			
		formatex(value, charsmax(value), "%s", linedata);
		
		while(value[0] != 0 && value[10] != '=' && strtok(value, key, charsmax(key), value, charsmax(value), ','))
		{
			trim(key);
			trim(value);
						
			ArrayPushString(g_sPropsModel, key);
		}
	}
	if(file) fclose(file);
	
	if(!bHadCatchedMap) //can't find map in ini file
	{
		server_print("[PropHunt] WARNING: Can't find map's name %s in cs_prophunt.ini", mapname);
		g_bGameOn = false;
		return;
	}
	
	if(!g_iHideTime)
		g_iHideTime = get_pcvar_num(g_CvarHidetime);
	
	for(new i = 0; i < ArraySize(g_sPropsModel); i++)
	{
		ArrayGetString(g_sPropsModel, i, buffer, charsmax(buffer));
		format(buffer, charsmax(buffer), "models/props/%s.mdl", buffer);
		engfunc(EngFunc_PrecacheModel, buffer);
	}
	
	precache_model(g_pmdl_flamethrower);
	precache_model(g_vmdl_flamethrower);
	precache_sound(g_FtSound);
	
	g_pyrofireSpr = precache_model(g_pyrofireSpr_);
	g_smokeSpr = precache_model(g_smokeSpr_);
	g_flameSpr = precache_model(g_flameSpr_);
	
	for(new i = 0; i < 6; i++)
		precache_sound(g_CountdownSound);
		
	register_forward(FM_Spawn, "fwd_Spawn");
	
	new iHostage = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "hostage_entity"));
	
	if(iHostage)
	{
		engfunc(EngFunc_SetOrigin, iHostage, Float:{0.0, 0.0, -55000.0});
		engfunc(EngFunc_SetSize, iHostage, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0});
		dllfunc(DLLFunc_Spawn, iHostage);
		g_iHostage = iHostage
	}
}

public client_putinserver(id)
{
	g_bIsConnected[id] = true;
	
	//create camera
	new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, g_sInfoTarget));      
	set_pev(iEnt, pev_classname, g_szPlayerCamera);
	engfunc(EngFunc_SetModel, iEnt, "models/w_usp.mdl");
	set_pev(iEnt, pev_solid, SOLID_TRIGGER);
	set_pev(iEnt, pev_movetype, MOVETYPE_FLY);
	set_pev(iEnt, pev_owner, id);
	set_pev(iEnt, pev_rendermode, kRenderTransTexture);
	set_pev(iEnt, pev_renderamt, 0.0);
	g_iCamera[id] = iEnt;
	
	//create prop
	new iProp = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, g_sInfoTarget));
	set_pev(iProp, pev_classname, g_szHiderProp);
//	set_pev(iProp, pev_movetype, MOVETYPE_TOSS);
	set_pev(iProp, pev_owner, id);
	set_visible(iProp, 0);
	g_iProp[id] = iProp;
}

public client_disconnect(id)
{
	g_bIsAlive[id] = false;
	g_bIsConnected[id] = false;
	g_iHunterClass[id] = 0;
	g_iCurWeapon[id] = 0;
	
	if(g_iProp[id])
		remove_prop(id);
		
	new iEnt = g_iCamera[id];
	if(iEnt) engfunc(EngFunc_RemoveEntity, iEnt), g_iCamera[id] = 0;
		
	if(task_exists(id+TASK_HEAL))
		remove_task(id+TASK_HEAL);
		
	if(task_exists(id+TASK_SCLIP))
		remove_task(id+TASK_SCLIP);
		
	if(task_exists(id+TASK_ZOOM))
		remove_task(id+TASK_ZOOM);
}

public cmd_buy(id) 
{ 
	client_print(id, print_center, "%L", LANG_PLAYER, "CANT_BUY_WPN");
	return PLUGIN_HANDLED;
}
	
public cmd_drop(id)
{
	client_print(id, print_center, "%L", LANG_PLAYER, "CANT_DROP");
	return PLUGIN_HANDLED;
}
	
public cmd_chooseteam(id)
{
	if(!get_pcvar_num(g_CvarBlockteam) || is_user_admin(id))
	{
		if(g_iHunterClass[id])
			g_iHunterClass[id] = 0;
			
		return PLUGIN_CONTINUE;
	}
		
	static CsTeams:team;
	team = cs_get_user_team(id);
	if(team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
	{
		new iteam = get_new_team();
		engclient_cmd(id, g_cmdTeam[0], g_teamnum[iteam]);
		engclient_cmd(id, g_cmdTeam[2], g_classnum[random_num(0,3)]);
		if(g_iHunterClass[id])
			g_iHunterClass[id] = 0;
			
		return PLUGIN_HANDLED;
	}
	else
	{
		client_print(id, print_center, "%L", LANG_PLAYER, "CHANGE_TEAM");
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}

public event_TeamInfo()
{
	if(!get_pcvar_num(g_CvarBlockteam) || !g_bGameOn)
		return PLUGIN_CONTINUE;
		
	new id = read_data(1);
	new sTeam[32], iTeam;
	read_data(2, sTeam, sizeof(sTeam) - 1);
	for(new i = 0; i < 5; i++)
	{
		if(g_cTeamChars == sTeam[0])
		{
			iTeam = i;
			break;
		}
	}
	
	if(g_iTeam[id] != iTeam)
	{
		g_iPlayers[g_iTeam[id]]--;
		g_iTeam[id] = iTeam;
		g_iPlayers[iTeam]++;
	}
	
	return PLUGIN_CONTINUE;
}

public camera_think(iEnt)
{
	new id = pev(iEnt, pev_owner);
	
	if(!g_bCameraOn[id])
		return;

	static Float:origin[3], Float:angle[3], Float:vBack[3], add_vec;
	pev(id, pev_origin, origin);
	pev(id, pev_v_angle, angle);

	angle_vector( angle, ANGLEVECTOR_FORWARD, vBack );

	origin[2] += 20.0;
	 
//	add_vec = 120.0;
	add_vec = get_add_vec(id, origin, vBack);
		
	origin[0] += (-vBack[0] * add_vec);
	origin[1] += (-vBack[1] * add_vec);
	origin[2] += (-vBack[2] * add_vec);

	set_pev(iEnt, pev_origin, origin);
	set_pev(iEnt, pev_angles, angle);
	    
	set_pev(iEnt, pev_nextthink, get_gametime()+ 0.01);
}

get_add_vec(id, Float:origin[3], Float:back[3])
{
	static add_vec, Float:torigin[3], Float:flFraction;
	add_vec = 5;
	
	for(new i = 20; i > 0; i--)
	{
		torigin[0] = origin[0] + (-back[0] * add_vec *i);
		torigin[1] = origin[1] + (-back[1] * add_vec *i);
		torigin[2] = origin[2] + (-back[2] * add_vec *i);
		engfunc(EngFunc_TraceLine, origin, torigin, IGNORE_MONSTERS, id, 0);
		get_tr2(0, TR_flFraction, flFraction);
		if(flFraction == 1.0)
		{
			return (add_vec*i);
		}
	}
	return 0;
}

public fwd_GameDescription() 
{ 
	new szMsg[32];
	formatex(szMsg, 31, "CS-PropHunt v%s", VERSION);
	forward_return(FMV_STRING, szMsg);
	return FMRES_SUPERCEDE;
}

public fwd_CmdStart(id, uc_handle, seed)
{
	if(!g_bIsAlive[id] || !g_bGameOn)
		return FMRES_IGNORED;
	
	static button, oldbutton;
	button = pev(id, pev_button);
	oldbutton = pev(id, pev_oldbuttons);
	
	if(g_bIsHider[id])
	{
		if(button & IN_ATTACK2)
		{
			set_pev(id, pev_maxspeed, 1.0);
		}
		else if(oldbutton & IN_ATTACK2)
		{
			set_pev(id, pev_maxspeed, get_pcvar_float(g_CvarHiderspeed));
		}
		
		new onground = pev(id, pev_flags) & FL_ONGROUND;
		if(button & IN_JUMP && !(oldbutton & IN_JUMP) && !onground && !g_iDoublejump[id])
		{
			g_iDoublejump[id] = 1;
		}
		
		new iEnt = g_iProp[id];
		if(!iEnt)
			return FMRES_IGNORED;
			
		static Float:origin[3], Float:angle[3];
		pev(id, pev_origin, origin);

		if(pev(id, pev_flags) & FL_DUCKING)
			origin[2] -= 18.0;
		else origin[2] -= 36.0;
		
		engfunc(EngFunc_SetOrigin, iEnt, origin);
		
		if(!(button & IN_ATTACK2))
		{
			pev(id, pev_v_angle, angle);
			angle[0] = 0.0;
			set_pev(iEnt, pev_angles, angle);
		}
	}
	else
	{
		static ubutton, iCurWpn;
		ubutton = get_uc(uc_handle, UC_Buttons);
		iCurWpn = g_iCurWeapon[id];
		
		if(ubutton & IN_ATTACK && ((iCurWpn == CSW_KNIFE) || (iCurWpn == CSW_XM1014)))
		{
			ubutton &= ~IN_ATTACK;
			
			if(iCurWpn == CSW_XM1014)
			{
				if(g_iFuel[id] && (get_gametime() - g_fLastfire[id] > 0.1))
					fire_throw(id);
			}
			else if(iCurWpn == CSW_KNIFE)
				ubutton |= IN_ATTACK2;
			
			set_uc(uc_handle, UC_Buttons, ubutton);
				
			return FMRES_SUPERCEDE;
		}
	}
	
	return FMRES_IGNORED;
}

public fire_throw(id)
{
	fire_spr(id);
	g_fLastfire[id] = get_gametime();
	g_iFuel[id]--;
	
	emit_sound(id, CHAN_WEAPON, g_FtSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	
	static health;
	health = get_user_health(id) - get_pcvar_num(g_CvarHpLostAmt);
	if(health > 0)
		set_pev(id, pev_health, float(health));
	else 
	{
		user_kill(id);
		return;
	}
	
	if(!g_bInHideTime && pev(id, pev_button) & IN_JUMP)
	{
		new Float:velocity[3];
		pev(id, pev_velocity, velocity);
		velocity[2] = 550.0;
		set_pev(id, pev_velocity, velocity);
	}
	
	fire_target(id);
}

public fire_target(id)
{
	static target, body;
	get_user_aiming(id, target, body, 250);
	
	if(!is_player_alive(target) || !g_bIsHider[target])
		return;
	
	static iHealth, duration, param[2];
	iHealth = pev(target, pev_health) - random_num(10, 15);
	if(iHealth <= 0)
	{
	//	make_silentkill(target);
	//	make_DeathMsg(id, target, 0, "flame thrower");
		ExecuteHamB(Ham_Killed, target, id, 0);
		return;
	}	
	else set_pev(target, pev_health, float(iHealth));
	
	if(task_exists(target+TASK_BURN))
		remove_task(target+TASK_BURN);
		
	duration = get_pcvar_num(g_CvarFlamedura)*2;
	param[0] = duration;
	param[1] = id;
	set_task( 0.5, "StartBurn", target+TASK_BURN, param, sizeof param )
}

public StartBurn(param[2], taskid)
{
	static id, dmg, attacker, duration, origin[3];
	id = taskid - TASK_BURN;
	dmg = 2;
	duration = param[0];
	attacker = param[1];
	get_user_origin(id, origin);
	
	if(!duration || !g_bIsAlive[id])
	{
		create_smoke(origin);
		return;
	}
	
	duration--;
	
	if(pev(id, pev_flags) & FL_ONGROUND)
	{
		static Float:velocity[3]
		pev(id, pev_velocity, velocity)
		VectorScale(velocity, 0.5, velocity)
		set_pev(id, pev_velocity, velocity)
	}

	static health;
	health = pev(id, pev_health) - dmg;
			
	if(health <= 0)
	{
	//	make_silentkill(id);
	//	make_DeathMsg(attacker, id, 0, "flame thrower");
		ExecuteHamB(Ham_Killed, id, attacker, 0);
		create_smoke(origin);
		return;
	}	
	else set_pev(id, pev_health, float(health));
	
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SPRITE) // TE id
	write_coord(origin[0]+random_num(-5, 5)) // x
	write_coord(origin[1]+random_num(-5, 5)) // y
	write_coord(origin[2]+random_num(-10, 10)) // z
	write_short(g_flameSpr) // sprite
	write_byte(random_num(5, 10)) // scale
	write_byte(200) // brightness
	message_end()
	
	param[0] = duration; //update time
	set_task( 0.5, "StartBurn", id+TASK_BURN, param, sizeof param )
}
	
fire_spr(id)
{
	static Float:fOrigin[3], Float:fVelocity[3];
	
	velocity_by_aim(id, 35, fVelocity);
	pev(id, pev_origin, fOrigin);
		
	for(new i = 0; i < 3; i++)
		fOrigin += fVelocity;
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_SPRAY);
	engfunc(EngFunc_WriteCoord, fOrigin[0]);
	engfunc(EngFunc_WriteCoord, fOrigin[1]);
	engfunc(EngFunc_WriteCoord, fOrigin[2]);
	engfunc(EngFunc_WriteCoord, fVelocity[0]);
	engfunc(EngFunc_WriteCoord, fVelocity[1]);
	engfunc(EngFunc_WriteCoord, fVelocity[2]+5.0);
	write_short(g_pyrofireSpr);
	write_byte(2); //count
	write_byte(15); //speed
	write_byte(1); //noise
	write_byte(5); //render
	message_end();
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_SPRAY);
	engfunc(EngFunc_WriteCoord, fOrigin[0]);
	engfunc(EngFunc_WriteCoord, fOrigin[1]);
	engfunc(EngFunc_WriteCoord, fOrigin[2]);
	engfunc(EngFunc_WriteCoord, fVelocity[0]);
	engfunc(EngFunc_WriteCoord, fVelocity[1]);
	engfunc(EngFunc_WriteCoord, fVelocity[2]+8.0);
	write_short(g_pyrofireSpr);
	write_byte(1); //count
	write_byte(8); //speed
	write_byte(1); //noise
	write_byte(5); //render
	message_end();
}

public fwd_UpdateClientData_Post( id, sendweapons, cd_handle )
{
    if(!g_bGameOn || !g_bIsAlive[id] || g_iCurWeapon[id] != CSW_XM1014)
        return FMRES_IGNORED;

    set_cd(cd_handle, CD_ID, 0);        
    
    return FMRES_HANDLED;
}

public fwd_Player_PreThink(id)
{
	if(!g_bGameOn || !g_bIsAlive[id] || !g_bIsHider[id])
		return FMRES_IGNORED;
		
	set_pev(id, pev_flTimeStepSound, 999);
	if(g_iDoublejump[id] == 2 && pev(id, pev_flags) & FL_ONGROUND)
		g_iDoublejump[id] = 0;
		
	return FMRES_IGNORED;
}

public fwd_Player_PostThink(id)
{
	if(!g_bGameOn || !g_bIsAlive[id] || !g_bIsHider[id])
		return FMRES_IGNORED;
		
	if(g_iDoublejump[id] == 1)
	{
		new Float:velocity[3];
		pev(id, pev_velocity, velocity);
		velocity[2] = 285.0;
		set_pev(id, pev_velocity, velocity);
		g_iDoublejump[id] = 2;
	}	
		
	return FMRES_IGNORED;
}

public fwd_Spawn(ent)
{
	if(!pev_valid(ent) || ent == g_iHostage)
	{
		return FMRES_IGNORED;
	}
	
	new szClass[32];
	pev(ent, pev_classname, szClass, 31);
	
	for(new i = 0; i < sizeof g_sRemoveEntities; i++)
	{
		if(equal(szClass, g_sRemoveEntities))
		{
			engfunc(EngFunc_RemoveEntity, ent);
			return FMRES_SUPERCEDE;
		}
	}
	
	return FMRES_IGNORED;
}

public fwd_ClientKill(id)
{
	if(!g_bGameOn)
		return FMRES_IGNORED;
		
	ph_print(id, "You are not allowed to kill urself !");
	
	return FMRES_SUPERCEDE;
}

public show_hud()
{
	if(!g_bGameOn)
		return;
		
	static hider_count, hunter_count, color[3];
	get_player_count(hider_count, hunter_count);
	
	for(new i = 0; i < gMaxPlayers; i++)
	{
		if(!g_bIsAlive)
			continue;
			
		if(g_bIsHider[i])
			color = { 250, 20, 50 };
		else
		{
			color = { 30, 100, 255 };
		//	set_hudmessage( 0, 200, 0, -1.0, -1.0, 0, 6.0, 2.1, 0.0, 0.0, -1 );
		//	ShowSyncHudMsg( i, g_hudmsg[HUD_CROSSHAIR], "<+>" );
		}
			
		set_hudmessage(color[0], color[1], color[2], -1.0, 0.02, 0, _, 2.1, _, _, -1);
		ShowSyncHudMsg(i, g_hudmsg[HUD_BOARD], "Hider: %i^nHunter: %i", hider_count, hunter_count);
	}
}

get_player_count(&hider_count, &hunter_count = 0)
{
	static iHider, iHunter, id;
	iHider = iHunter = 0;
	
	for(id = 1; id <= gMaxPlayers; id++)
	{
		if(!g_bIsAlive[id])
			continue;
			
		if(g_bIsHider[id]) iHider++;
		else iHunter++;
	}
	
	hider_count = iHider, hunter_count = iHunter;
}

public task_show_clip(taskid)
{
	new id = taskid - TASK_SCLIP;
	
	if(g_iCurWeapon[id] == CSW_KNIFE)
		return;
	
	set_dhudmessage( 250, 250, 0, 0.85, 0.96, 0, 6.0, 0.2, 0.0, 0.0 );
	
	static iClass, clip, ammo; 
	iClass = g_iHunterClass[id];
	get_user_weapon(id, clip, ammo);
	
	switch(iClass)
	{
		case HEAVY, SNIPER: show_dhudmessage( id, "Ammo: %i", clip );
		case PYRO: show_dhudmessage( id, "Fuel: %i", g_iFuel[id] );
	}
}

public fw_ent_think(iEnt)
{
	if(!pev_valid(iEnt))
		return;
		
	static szClassname[32];
	pev(iEnt, pev_classname, szClassname, 31);
	if(equal(szClassname, g_szPlayerCamera))
		camera_think(iEnt);
}

public fw_spawn_player_post(id)
{
	if(!g_bGameOn || !is_user_alive(id) || !cs_get_user_team(id))
		return;
		
	g_bIsAlive[id] = true;
		
	g_bIsHider[id] = cs_get_user_team(id) == CS_TEAM_T ? true : false;
	
/*	message_begin(MSG_ONE, gMsgHideWeapon, _, id);
	write_byte(HIDE_HUD);
	message_end();*/
	
	if(g_bIsHider[id])
	{
		set_playerview(id);
		set_pev(id, pev_health, 125.0);
		set_visible(id, 0);
		//enable prop
		static iProp, szEntModel[64], rand_mdl;
		iProp = g_iProp[id]
		set_visible(iProp);
		rand_mdl = random_num(0, ArraySize(g_sPropsModel) - 1);
		ArrayGetString(g_sPropsModel, rand_mdl, szEntModel, charsmax(szEntModel));
		format(szEntModel, charsmax(szEntModel), "models/props/%s.mdl", szEntModel);
		engfunc(EngFunc_SetModel, iProp, szEntModel);
	}
	else	
	{
		new iClass = g_iHunterClass[id];
		
		if(!iClass) show_class_menu(id);
		else 
		{
			if(iClass == PYRO) g_iFuel[id] = get_pcvar_num(g_CvarFtFuel);
			else
			{
				new iEnt;
				iEnt = fm_find_ent_by_owner(-1, g_szSeekerWpns[iClass], id);
				if(iEnt) cs_set_weapon_ammo(iEnt, g_iClassAmmo[iClass]);
			}
				
			set_pev(id, pev_health, float(g_iClassHealth[iClass]));
		}
				
		if(!task_exists(id+TASK_SCLIP))
			set_task(0.1, "task_show_clip", id+TASK_SCLIP, _, _, g_sB);
	}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{	
	if(victim == attacker || !is_player_connected(attacker))
		return HAM_IGNORED;
		
	if(g_iCurWeapon[attacker] == CSW_SCOUT)
	{
		new mutil_dmg = g_iSniperDmg[attacker];
		
		if(mutil_dmg == 5)
			ExecuteHamB(Ham_Killed, victim, attacker, 0);
		else 
		{
			damage = mutil_dmg*20.0;
			SetHamParamFloat(4, damage);
		}
		
		g_iSniperDmg[attacker] = 0;
	}

	return HAM_IGNORED;
}

public fw_TakeDamage_post(victim)
{
	if(!g_bIsHider[victim])
		return;
		
	set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, 5) //zp code
}

public fw_killed_player(victim, killer, shouldgib)
{
	g_bIsAlive[victim] = false;
	
	if(g_bIsHider[victim])
	{
		set_visible(g_iProp[victim], 0);
			
	//	set_playerview(id, 0);
		set_visible(victim);
		
		if(!g_bInHideTime)
		{
			new Float:fTime = get_gametime() - g_fGameStartTime;
			set_pev(victim, pev_frags, pev(victim, pev_frags)+fTime);
			ph_print(victim, "^4[PropHunt]^1 You have earned^3 %i^4 frag(s)^1 for surviving !", floatround(fTime));
			g_fFrags[victim] = fTime;
		}
		
		if(is_player_alive(killer) && !g_bIsHider[killer])
		{
			new Float:fCvarSpeedBoost = get_pcvar_float(g_CvarSpeedBoost);
			if(fCvarSpeedBoost && !g_bHasSpeedBoost[killer])
				give_speedboost(killer, fCvarSpeedBoost);
			
			give_frags(killer, victim);
		}
	}
	else
	{
		if(task_exists(victim+TASK_HEAL))
			remove_task(victim+TASK_HEAL);
			
		remove_task(victim+TASK_SCLIP);
	}
}

public fw_WeaponAttack(iWpn)
{
	if(!g_bGameOn)
		return;
		
	static id, health;
	id = get_pdata_cbase(iWpn, 41, 4);
	health = get_user_health(id) - get_pcvar_num(g_CvarHpLostAmt);
	
	if(health > 0)
		set_pev(id, pev_health, float(health));
	else 
	{
		user_kill(id);
		return;
	}
	
	if(!g_bInHideTime && pev(id, pev_button) & IN_JUMP)
	{
		new Float:velocity[3];
	//	pev(id, pev_velocity, velocity);
		velocity_by_aim(id, 50, velocity)
		velocity[2] += 450.0;
		set_pev(id, pev_velocity, velocity);
	}
	
	if(g_iCurWeapon[id] == CSW_SCOUT && g_iZoomPower[id] != 0) //for sniper
	{
		g_iSniperDmg[id] = g_iZoomPower[id];
		
		new mutil_dmg = g_iSniperDmg[id];
		if(mutil_dmg == 5)
			client_print(id, print_center, "One Shot One Kill");
		else client_print(id, print_center, "Damage: %i", mutil_dmg*20);
		
		g_iZoomPower[id] = 0;
	}
}

public cmd_choose_class(id)
{
	if(!g_bGameOn)
		return PLUGIN_HANDLED;
		
	if(g_bIsHider[id])
	{
		ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS");
		return PLUGIN_HANDLED;
	}
	
	else if(!g_bInHideTime)
	{
		ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	
	show_class_menu(id);
	
	return PLUGIN_HANDLED;
}

public show_class_menu(id)
{
	static msg[3][64], menu;
	
	formatex(msg[0], 63, "\w Heavy\y  | %iHP + Minigun |", g_iClassHealth[1]);
	formatex(msg[1], 63, "\w Pyro\y   | %iHP + FlameThrower |", g_iClassHealth[2]);
	formatex(msg[2], 63, "\w Sniper\y | %iHP + Scout |", g_iClassHealth[3]);
	
	menu = menu_create("Hunter Class Menu:", "menu_active");
	menu_additem(menu, msg[0], "1", 0);
	menu_additem(menu, msg[1], "2", 0);
	menu_additem(menu, msg[2], "3", 0);

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

public menu_active(id, menu, item)
{
	if(!g_bIsAlive[id])
	{
		ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_NEED_ALIVE");
		return;
	}
	
	ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_TYPE_CLASS")
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	
	new iClass = g_iHunterClass[id];
	if(iClass != 0)
	{
		fm_strip_user_weapons(id);
	}
	
	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);
	
	g_iHunterClass[id] = key;
	
	give_weapon(id);
}

give_weapon(id)
{
	static iClass;
	iClass = g_iHunterClass[id];
	bacon_give_weapon(id, "weapon_knife");
	bacon_give_weapon(id, g_szSeekerWpns[iClass]);
	set_pev(id, pev_health, float(g_iClassHealth[iClass]));
	
	if(iClass == PYRO)
	{
		g_iFuel[id] = get_pcvar_num(g_CvarFtFuel);
	}
	else 
	{
		new iEnt;
		iEnt = fm_find_ent_by_owner(-1, g_szSeekerWpns[iClass], id);
		if(iEnt) cs_set_weapon_ammo(iEnt, g_iClassAmmo[iClass]);
	}
}

give_speedboost(id, Float:fSpeedAdd)
{
	g_bHasSpeedBoost[id] = true;
	manage_icon(id, ICON_SPEEDBOOST);
	set_pev(id, pev_maxspeed, pev(id, pev_maxspeed)+fSpeedAdd);
	ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_GIVE_SPEEDBOOST");
}

give_frags(id, victim)
{
	new Float:fVicFrags = g_fFrags[victim];
	if(fVicFrags != 0.0)
		set_pev(id, pev_frags, pev(id, pev_frags)+fVicFrags);
}

public event_curweapon(id)
{
	if(!g_bGameOn)
		return PLUGIN_CONTINUE;
		
	message_begin(MSG_ONE, gMsgHideWeapon, _, id);
	write_byte(HIDE_HUD);
	message_end();
		
	if(g_bIsHider[id])
	{
		if(!g_bRoundEnd)
		{
			fm_strip_user_weapons(id);
			set_pev(id, pev_maxspeed, get_pcvar_float(g_CvarHiderspeed));
		}
	}
	else
	{
		new Float:fCvarSpeedBoost = get_pcvar_float(g_CvarSpeedBoost);
		
		if(g_bInHideTime)
			set_pev(id, pev_maxspeed, 1.0);
		else if(fCvarSpeedBoost && g_bHasSpeedBoost[id])
			set_pev(id, pev_maxspeed, pev(id, pev_maxspeed)+fCvarSpeedBoost);
			
		static weapon;
		weapon = read_data(2);
		g_iCurWeapon[id] = weapon;
			
		if(task_exists(id+TASK_ZOOM) && (weapon != CSW_SCOUT))
		{
			g_iZoomPower[id] = 0;
			remove_task(id+TASK_ZOOM);
		}
			
		if(weapon == CSW_XM1014)
		{
			set_pev(id, pev_weaponmodel2, g_pmdl_flamethrower);
			set_pev(id, pev_viewmodel2, g_vmdl_flamethrower);
		}
		else if(weapon == CSW_USP)
		{
			fm_strip_user_weapons(id);
			if(g_iHunterClass[id])
				give_weapon(id);
		}
		else if(weapon == CSW_M249)
		{
			static iEnt, Float:wpn_rate;
			iEnt = fm_find_ent_by_owner(-1, "weapon_m249", id);
			wpn_rate = 0.5;
			
			if(iEnt)
			{
				static Float:Delay,Float:M_Delay;
				Delay = get_pdata_float( iEnt, 46, 4) * wpn_rate;
				M_Delay = get_pdata_float( iEnt, 47, 4) * wpn_rate;
				if(Delay > 0.0)
				{
					set_pdata_float( iEnt, 46, Delay, 4);
					set_pdata_float( iEnt, 47, M_Delay, 4);
				}
			}
		}
		
		message_begin(MSG_ONE, gMsgCrossHair, {0,0,0}, id);
		write_byte(1);
		message_end();
	}
	
	return PLUGIN_CONTINUE;
}

public Event_SetFOV(id)
{
	if(read_data(1) >= 90) //zoom out
	{
		if(task_exists(id+TASK_ZOOM))
		{
			g_iZoomPower[id] = 0;
			remove_task(id+TASK_ZOOM);
		}
		
		return;
	}
		
	if(!task_exists(id+TASK_ZOOM))
	{
		task_zoom_power(id+TASK_ZOOM);
		set_task(1.0, "task_zoom_power", id+TASK_ZOOM, _, _, g_sB);
	}
}

public task_zoom_power(taskid)
{
	static id, power, color; 
	id = taskid - TASK_ZOOM;
	power = g_iZoomPower[id];
	color = 50 + power * 30;
	
	set_hudmessage(color, color, 0, -1.0, 0.75, power == 5 ? 1 : 0, _, 1.1, _, _, -1);
	ShowSyncHudMsg(id, g_hudmsg[HUD_ZOOM], "{%s%s}", g_bar[0][5 - power], g_bar[1][power]);
	
	if(power < 5)
		power++;
	
	g_iZoomPower[id] = power;
}

public heal_hp(taskid)
{
	static id;
	id = taskid - TASK_HEAL;
	manage_icon(id, ICON_BUYZONE, 0);
	set_pev(id, pev_health, float(g_iClassHealth[g_iHunterClass[id]]))
	ph_print(id, "^4[PropHunt]^1 %L", LANG_PLAYER, "C_HEALED");
}

//public EventNewRound()
public EventRoundStart()
{
	if(!g_bGameOn)
		return;
		
	g_bRoundEnd = false;
	ph_print(0, "^4oO0^3 PropHunt-v%s by Ryokin^4 0Oo", VERSION); 
	
	new time = g_iHideTime;
	
	for(new i = 0; i < gMaxPlayers; i++)
	{
		if(!g_bIsConnected[i] || g_bIsHider[i])
			continue;
			
		if(task_exists(i+TASK_HEAL))
			remove_task(i+TASK_HEAL);
			
		if(g_bCameraOn[i])
			set_playerview(i, 0);
			
		g_bHasSpeedBoost[i] = false;
			
	/*	set_pev(i, pev_maxspeed, 1.0);
		
		message_begin(MSG_ONE, gMsgScreenFade, {0, 0, 0}, i);
		write_short(floatround(4096.0 * 1.5, floatround_round));
		write_short(floatround(4096.0 * 1.5, floatround_round));
		write_short(4096);
		write_byte(0);
		write_byte(0);
		write_byte(0);
		write_byte(200);
		message_end();*/
	}
	
	g_bInHideTime = true
	
	g_iCountdownTime = time+1;
//	set_task(time, "end_hide_time", TASK_HIDETIME);
	count_down();
	set_task(1.0, "count_down", TASK_HIDETIME, _, _, g_sA, g_iCountdownTime);
}

public count_down()
{
	g_iCountdownTime--
	
	for(new i = 0; i < gMaxPlayers; i++)
	{
		if(!g_bIsAlive[i] || g_bIsHider[i])
			continue;
			
		set_pev(i, pev_maxspeed, 1.0);
		
		message_begin(MSG_ONE, gMsgScreenFade, {0, 0, 0}, i);
		write_short(floatround(4096.0 * 1.5, floatround_round));
		write_short(floatround(4096.0 * 1.5, floatround_round));
		write_short(4096);
		write_byte(0);
		write_byte(0);
		write_byte(0);
		write_byte(150);
		message_end();
	}
	
	if(g_iCountdownTime <= 5)
	{
		client_cmd(0, "spk %s", g_CountdownSound[g_iCountdownTime]);
		
		if(!g_iCountdownTime)
		{
			end_hide_time();
			return;
		}
	}
		
	set_dhudmessage( 0, 200, 0, -1.0, 0.75, 0, 6.0, 1.0, 0.0, 0.0 );
	show_dhudmessage( 0, "Time to hide: %i", g_iCountdownTime );
}

end_hide_time()
{
	for(new i = 0; i < gMaxPlayers; i++)
	{
		if(!g_bIsAlive[i] || g_bIsHider[i])
			continue;
			
		set_pev(i, pev_maxspeed, 250.0);
		
		message_begin(MSG_ONE, gMsgScreenFade, {0, 0, 0}, i);
		write_short(0);
		write_short(0);
		write_short(4096);
		write_byte(0);
		write_byte(0);
		write_byte(0);
		write_byte(150);
		message_end();
	}
	
	g_fGameStartTime = get_gametime();
	client_cmd(0, "spk %s", g_CountdownSound[0]);
	
	set_dhudmessage( 0, 200, 0, -1.0, 0.75, 0, 6.0, 3.0, 0.0, 0.0 );
	show_dhudmessage( 0, "Time's up !" );
	
	g_bInHideTime = false
}

public RestartRound()
{
	EventRoundEnd();
}

public EventRoundEnd()
{
	g_bRoundEnd = true;
	if(task_exists(TASK_HIDETIME))
		remove_task(TASK_HIDETIME);
		
	static Float:fTime, iHiderCount, winmsg[32];
	get_player_count(iHiderCount)
	
	if(iHiderCount) //hider win
	{
		formatex(winmsg, 31, "%L", LANG_PLAYER, "HIDER_WIN");
		
		for(new i = 0; i < gMaxPlayers; i++)
		{
			if(!g_bIsConnected[i])
				continue;
				
		//	add_delay_switch_team(i);
			set_dhudmessage(250, 20, 50, -1.0, 0.25, 0, _, 4.0);
			show_dhudmessage(i, winmsg);
		}
	}
	else 
	{
		formatex(winmsg, 31, "%L", LANG_PLAYER, "SEEKER_WIN_SWITCH");
		
		for(new i = 0; i < gMaxPlayers; i++)
		{
			if(!g_bIsConnected[i])
				continue;
				
			g_iHunterClass[i] = 0;
			add_delay_switch_team(i);
			set_dhudmessage(20, 100, 250, -1.0, 0.25, 0, _, 4.0);
			show_dhudmessage(i, winmsg);
		}
	}
	
	for(new i = 0; i < gMaxPlayers; i++)
	{
		if(!g_bIsAlive[i])
			continue;
		
		if(g_bIsHider[i])
		{
			set_visible(g_iProp[i], 0);
			set_visible(i);
			
			if(!g_bInHideTime)
			{
				fTime = get_gametime() - g_fGameStartTime;
				set_pev(i, pev_frags, pev(i, pev_frags)+fTime);
				ph_print(i, "^4[PropHunt]^1 You have earned^3 %i^4 frag(s)^1 for surviving !", floatround(fTime));
			}
			g_fFrags[i] = 0.0;
		}
		else 
		{
			manage_icon(i, ICON_BUYZONE, 0);
			manage_icon(i, ICON_SPEEDBOOST, 0);
		}
	}
}

public Event_BuyZone(id) 
{
/*	if(cs_get_user_team(id) == CS_TEAM_T)
	{
		if(buyzone)
		{
			const OFFSET_BUYZONE = 235 //268
			set_pdata_int(id, OFFSET_BUYZONE, get_pdata_int(id, OFFSET_BUYZONE) & ~(1<<0));
			return PLUGIN_HANDLED;
		}
	}*/
	if(g_bIsAlive[id] && !g_bIsHider[id] && !g_bRoundEnd && !g_bInHideTime)
	{
		new hp = get_user_health(id);
		
		if(!read_data(1))
		{
			if(task_exists(id+TASK_HEAL))
			{
				client_print(id, print_center, "%L", LANG_PLAYER, "STOP_HEAL");
				manage_icon(id, ICON_BUYZONE, 0);
				remove_task(id+TASK_HEAL);
				manage_bar(id, 0)
				ClearSyncHud(id, g_hudmsg[HUD_OBJ])
			}
		}
		else if(hp < g_iClassHealth[g_iHunterClass[id]] && !task_exists(id+TASK_HEAL))
		{
			client_print(id, print_center, "%L", LANG_PLAYER, "HEALING");
			new time = get_pcvar_num(g_CvarHealtime);
			set_task(float(time), "heal_hp", id+TASK_HEAL);
			manage_icon(id, ICON_BUYZONE);
			manage_bar(id, time)
			set_hudmessage(200, 200, 0, -1.0, -1.0, 0, 6.0, float(time), 0.0, 0.0, -1);
			ShowSyncHudMsg(id, g_hudmsg[HUD_OBJ], "Healing >>");
		}
	}
	
	return PLUGIN_CONTINUE;
}

public msg_textmsg(msgid, dest, id)
{
	if(!g_bGameOn || get_msg_arg_int(1) != 4)
		return PLUGIN_CONTINUE;
	
	static txtmsg[25];
	get_msg_arg_string(2, txtmsg, 24);
	
	if(equal(txtmsg[1], g_sMsgWins[0]) || equal(txtmsg[1], g_sMsgWins[1]) || equal(txtmsg[1], g_sMsgWins[2]))
	{
		set_msg_arg_string(2, g_sBlank);
	}
	else if(equal(txtmsg[1], g_sCommandNotAvailable))
		return PLUGIN_HANDLED;
		
	return PLUGIN_CONTINUE;
}

add_delay_switch_team(id)
{
	new const szTaskChangeTeam[32] = "change_team";
	switch(id)
	{
		case 1..7: set_task( 0.1, szTaskChangeTeam, id );
		case 8..15: set_task( 0.5, szTaskChangeTeam, id );
		case 16..23: set_task( 1.0, szTaskChangeTeam, id );
		case 24..32: set_task( 1.5, szTaskChangeTeam, id );
	}
}

public change_team(id)
{
	cs_set_user_team(id, g_bIsHider[id] ? CS_TEAM_CT : CS_TEAM_T);
	g_bIsHider[id] = (g_bIsHider[id] ? false : true);
}

public event_touch_weapon(iEnt, id)
	return HAM_SUPERCEDE;
	
public msg_weaponpickup(msgid, dest, id)
	return PLUGIN_HANDLED;

public msg_ammopickup(msgid, dest, id)
	return PLUGIN_HANDLED;
	
ph_print(const id, const message[], any:...) 
{
	new szMessage[192];
	vformat(szMessage, 191, message, 3);
	
	replace_all(szMessage, 191, "\g", "^4"); // Green Color
	replace_all(szMessage, 191, "\y", "^1"); // Default Color
	replace_all(szMessage, 191, "\t", "^3"); // Team Color
   
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, gMsgSayText, _, id);
	write_byte(id ? id : 1);
	write_string(szMessage);
	message_end();
}

stock bacon_give_weapon(index, weapon[])
{
	if(!equal(weapon, "weapon_", 7))
		return 0;

	new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon));
	if(!pev_valid(iEnt))
		return 0;

	new Float:origin[3];
	pev(index, pev_origin, origin);
	set_pev(iEnt, pev_origin, origin);
	set_pev(iEnt, pev_spawnflags, pev(iEnt, pev_spawnflags) | SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn, iEnt);

	new save = pev(iEnt, pev_solid);
	dllfunc(DLLFunc_Touch, iEnt, index);
	if(pev(iEnt, pev_solid) != save)
		return iEnt;

	engfunc(EngFunc_RemoveEntity, iEnt);

	return -1;
}

stock fm_strip_user_weapons(index) 
{
	new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"));
	if (!pev_valid(iEnt))
		return 0;

	dllfunc(DLLFunc_Spawn, iEnt);
	dllfunc(DLLFunc_Use, iEnt, index);
	engfunc(EngFunc_RemoveEntity, iEnt);

	return 1;
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0)
{
	new strtype[11] = "classname", iEnt = index
	switch (jghgtype) 
	{
		case 1: strtype = "target"
		case 2: strtype = "targetname"
	}
	
	while ((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, strtype, classname)) && pev(iEnt, pev_owner) != owner) {}
	
	return iEnt
}

get_new_team()
{
	new iTCount = g_iPlayers[TEAM_T];
	new iCTCount = g_iPlayers[TEAM_CT];
	if(iTCount < iCTCount)
		return TEAM_T;
	else if(iTCount > iCTCount)
		return TEAM_CT;
	else
		return random_num(TEAM_T, TEAM_CT);
	
	return -1;
}

set_playerview(id, mode = 1)
{
	if(mode)
	{
		new iEnt = g_iCamera[id];
		engfunc(EngFunc_SetView, id, iEnt);
		g_bCameraOn[id] = true;
	//	set_pev(iEnt, pev_nextthink, get_gametime()); 
		camera_think(iEnt);
	}
	else //disable camera
	{
		g_bCameraOn[id] = false;
		engfunc(EngFunc_SetView, id, id);
	}
}
/*
make_DeathMsg(killer, victim, headshot, const weapon[])
{
	message_begin(MSG_ALL, gMsgDeathmsg, {0,0,0}, 0);
	write_byte(killer);
	write_byte(victim);
	write_byte(headshot);
	write_string(weapon);
	message_end();

	return 1;
}

make_silentkill(id)
{
	static msgid, msgblock;
	msgid = gMsgDeathmsg;
	msgblock = get_msg_block(msgid);
	set_msg_block(msgid, BLOCK_ONCE);	
	user_kill(id, 1);
	set_msg_block(msgid, msgblock);

	return 1;
}*/

create_smoke(const origin[3])
{
	message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE) // TE id
	write_coord(origin[0]) // x
	write_coord(origin[1]) // y
	write_coord(origin[2]-50) // z
	write_short(g_smokeSpr) // sprite
	write_byte(random_num(15, 20)) // scale
	write_byte(random_num(10, 20)) // framerate
	message_end()
}

manage_icon(id, icon_kind, status = 1)
{
	message_begin(MSG_ONE, gMsgStatusIcon, _, id);
	write_byte(status); // status (0=hide, 1=show, 2=flash)
	if(icon_kind) write_string("plus"); // sprite name
	else write_string("dmg_rad");
	write_byte(0); // red
	write_byte(200); // green
	write_byte(0); // blue
	message_end();
}

manage_bar(id, time)
{
	message_begin(MSG_ONE_UNRELIABLE, gMsgBarTime, _, id)
	write_short(time)
	message_end()
}

set_visible(iEnt, VISIBLE = 1)
	set_pev(iEnt, pev_effects, VISIBLE ? pev(iEnt, pev_effects) & ~EF_NODRAW : pev(iEnt, pev_effects) | EF_NODRAW);
	
Last edited by Radu eXtream on 17 Jun 2019, 22:03, edited 1 time in total.
Reason: Adaugat [sursa=][/sursa]
Post Reply

Return to “Cereri”

  • Information