Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Saklambaç Mod Hakkında Yardım

Oyunda karşılaştığınız hatalar , oyun hakkında genel bilgiler

Moderatör: Moderatörler


F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

Saklambaç Mod Hakkında Yardım

Mesaj gönderen F.T.H »

MamiReyiz [S] yazdı: Cmt May 18, 2019 4:26 pm @omertas1454 omer senin attığını kurdu fakat kimse Tye geçemiyormuş yani saklananlara
Oyun sonu T takımında 1 kişi kaldığında yeni El başlamıyor o hatayı gördüm
Deneyin

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
//#include <dhudmessage>
#include <fun>

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"
};
new bool:saklanan[33]

#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[i], 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_event("HLTV", "EventNewRound", "a", "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[i], sBuyHandle);
	
	register_clcmd("drop", "cmd_drop");
	for(new i; i < 2; i++)
		register_clcmd(g_cmdTeam[i], "cmd_chooseteam", -1, g_sBlank);
	register_clcmd("say /sinif", "cmd_choose_class");
	register_clcmd("say /class", "cmd_choose_class");
	register_clcmd("say /esya","ayarlar")
	
	for(new i = 0; i < 4; i++)
		g_hudmsg[i] = 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("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("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[i]);
		
	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_disconnected(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;
	}
}

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[i] == 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, "Saklambac Mod");
	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[i] += fVelocity[i];
	
	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[i]))
		{
			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(id,flag)
{
	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[i])
			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(255, 255, 255, -1.0, 0.02, 0, _, 2.1, _, _, -1);
		ShowSyncHudMsg(i, g_hudmsg[HUD_BOARD], "Saklananlar: %i^nArayanlar: %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])
	{
		strip_user_weapons(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);
		set_task(1.0,"ayarlar",id)
	}
	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 ayarlar(id)
{		
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	else
	{

		new menu = menu_create("\yEsya Menusu^n\wMenuyu Acmak icin /esya Yazin","ayarlar2")
		menu_additem(menu,"\wKoltuk","1",0)
		menu_additem(menu,"\wSandalye","2",0)
		menu_additem(menu,"\wBilgisayar","3",0)
		menu_additem(menu,"\wVodka Sisesi","4",0)
		menu_additem(menu,"\wAgac","5",0)
		menu_additem(menu,"\wPipetli Bardak","6",0)
		menu_additem(menu,"\wGardrop","7",0)
		menu_additem(menu,"\wTas","8",0)
		menu_additem(menu,"\wVaril","9",0)
		menu_additem(menu,"\wKlozet","10",0)
		menu_additem(menu,"\wBira Sisesi","11",0)
		menu_additem(menu,"\wBenzin Sisesi","12",0)
		menu_additem(menu,"\wSu Kovasi","13",0)
		menu_additem(menu,"\wTrafik Konisi","14",0)
		menu_additem(menu,"\wKabine","15",0)
		menu_additem(menu,"\wEl Arabasi","16",0)
		menu_additem(menu,"\wKarton Kutular","17",0)
		menu_additem(menu,"\wOfis Koltugu","18",0)
		menu_additem(menu,"\wTabure","19",0)
		menu_additem(menu,"\wKahve Makinesi","20",0)
		menu_additem(menu,"\wKoltuk 2","21",0)
		menu_additem(menu,"\wInek","22",0)
		menu_additem(menu,"\wKutu","23",0)
		menu_additem(menu,"\wRadyo","24",0)
		menu_additem(menu,"\wTekerlek","25",0)
		menu_additem(menu,"\wOfis Masasi","26",0)
		menu_additem(menu,"\wLavabo","27",0)
		menu_additem(menu,"\wYangin Muslugu","28",0)
		menu_additem(menu,"\wYangin Sondurucu","29",0)
		menu_additem(menu,"\wPiyano","30",0)

		menu_setprop(menu,MPROP_BACKNAME,"Geri")
		menu_setprop(menu,MPROP_NEXTNAME,"Ileri")
		menu_setprop(menu, MPROP_EXITNAME, "Menuyu Kapat");
		menu_display(id, menu, 0);
	}
	return PLUGIN_HANDLED

}
public ayarlar2(id,menu,item)
{
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	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 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_sofa.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 2 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bchair01.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 3 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_pc3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 4 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/absolut.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 5 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/ae_smallbush.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 6 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bsoda.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 7 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/armoire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 8 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/babrock.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 9 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/barrel_brown.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 10 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/toilet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 11 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/beer_old_nazgul.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 12 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/benzinkanister.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 13 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bucket.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 14 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/buzzer_pa_kolpak.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 15 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cabinet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 16 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cart.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 17 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cartons.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 18 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_office-leather.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 19 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_stool.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 20 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/coffee_maker.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 21 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/couch3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 22 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cow.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 23 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cratedownc2.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 24 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cvpt_radio.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 25 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dead_tire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 26 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/desk_office-small.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 27 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dfountain.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 28 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fire_hydrant.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 29 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fireextinguisher.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 30 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/flo_piano.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
	}
	return PLUGIN_HANDLED
}
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, "^1 Kazandin^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);
		}

		// Ölen Saklananları CT yapar
		new players[32],inum;
		get_players(players, inum,"e","TERRORIST")
		if(inum != 1)
		{
		cs_set_user_team(victim,CS_TEAM_CT)
		set_task(1.0,"revle",victim)
		saklanan[victim] = true
		}


	}
	else
	{
		if(task_exists(victim+TASK_HEAL))
			remove_task(victim+TASK_HEAL);
			
		remove_task(victim+TASK_SCLIP);
	}
}

public revle(id)
{
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	show_class_menu(id)
}


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, "Bir atis Bir Olum");
		else client_print(id, print_center, "Zarar: %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, "^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS");
		return PLUGIN_HANDLED;
	}
	
	else if(!g_bInHideTime)
	{
		ph_print(id, "^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("Sinif Menusu:^n\wMenuyu Acmak icin /sinif Yazin", "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, "^1 %L", LANG_PLAYER, "C_NEED_ALIVE");
		return;
	}
	
	ph_print(id, "^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, "^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, "^1 %L", LANG_PLAYER, "C_HEALED");
}

public EventNewRound()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		saklanan[Uid] = false
	}
}
public EventRoundStart()
{
	if(!g_bGameOn)
		return;
		
	g_bRoundEnd = false;
	
	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;
		saklanan[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, "Saklanma Zamani: %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, "Sure Bitti!" );
	
	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);
			tekrarla(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, "^1 Kazandin^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], "CAN DOLUYOR >>");
		}
	}
	
	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;
}


public tekrarla(id)
{
	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_T)
}

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)
{
	if(!is_user_bot(id))
	{
	cs_set_user_team(id, g_bIsHider[id] ? CS_TEAM_CT : CS_TEAM_T);
	g_bIsHider[id] = (g_bIsHider[id] ? false : true);

	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_CT)
	}
}

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);
}

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);

stock ColorChat(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all(msg, 190, "!g", "^x04"); // Green Color
    replace_all(msg, 190, "!n", "^x01"); // Default Color
    replace_all(msg, 190, "!t", "^x03"); // Team Color
    
    if (id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
	

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

deniyorum

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

F.T.H yazdı: Cmt May 18, 2019 4:50 pm
MamiReyiz [S] yazdı: Cmt May 18, 2019 4:26 pm @omertas1454 omer senin attığını kurdu fakat kimse Tye geçemiyormuş yani saklananlara
Oyun sonu T takımında 1 kişi kaldığında yeni El başlamıyor o hatayı gördüm
Deneyin

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
//#include <dhudmessage>
#include <fun>

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"
};
new bool:saklanan[33]

#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[i], 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_event("HLTV", "EventNewRound", "a", "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[i], sBuyHandle);
	
	register_clcmd("drop", "cmd_drop");
	for(new i; i < 2; i++)
		register_clcmd(g_cmdTeam[i], "cmd_chooseteam", -1, g_sBlank);
	register_clcmd("say /sinif", "cmd_choose_class");
	register_clcmd("say /class", "cmd_choose_class");
	register_clcmd("say /esya","ayarlar")
	
	for(new i = 0; i < 4; i++)
		g_hudmsg[i] = 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("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("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[i]);
		
	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_disconnected(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;
	}
}

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[i] == 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, "Saklambac Mod");
	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[i] += fVelocity[i];
	
	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[i]))
		{
			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(id,flag)
{
	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[i])
			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(255, 255, 255, -1.0, 0.02, 0, _, 2.1, _, _, -1);
		ShowSyncHudMsg(i, g_hudmsg[HUD_BOARD], "Saklananlar: %i^nArayanlar: %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])
	{
		strip_user_weapons(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);
		set_task(1.0,"ayarlar",id)
	}
	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 ayarlar(id)
{		
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	else
	{

		new menu = menu_create("\yEsya Menusu^n\wMenuyu Acmak icin /esya Yazin","ayarlar2")
		menu_additem(menu,"\wKoltuk","1",0)
		menu_additem(menu,"\wSandalye","2",0)
		menu_additem(menu,"\wBilgisayar","3",0)
		menu_additem(menu,"\wVodka Sisesi","4",0)
		menu_additem(menu,"\wAgac","5",0)
		menu_additem(menu,"\wPipetli Bardak","6",0)
		menu_additem(menu,"\wGardrop","7",0)
		menu_additem(menu,"\wTas","8",0)
		menu_additem(menu,"\wVaril","9",0)
		menu_additem(menu,"\wKlozet","10",0)
		menu_additem(menu,"\wBira Sisesi","11",0)
		menu_additem(menu,"\wBenzin Sisesi","12",0)
		menu_additem(menu,"\wSu Kovasi","13",0)
		menu_additem(menu,"\wTrafik Konisi","14",0)
		menu_additem(menu,"\wKabine","15",0)
		menu_additem(menu,"\wEl Arabasi","16",0)
		menu_additem(menu,"\wKarton Kutular","17",0)
		menu_additem(menu,"\wOfis Koltugu","18",0)
		menu_additem(menu,"\wTabure","19",0)
		menu_additem(menu,"\wKahve Makinesi","20",0)
		menu_additem(menu,"\wKoltuk 2","21",0)
		menu_additem(menu,"\wInek","22",0)
		menu_additem(menu,"\wKutu","23",0)
		menu_additem(menu,"\wRadyo","24",0)
		menu_additem(menu,"\wTekerlek","25",0)
		menu_additem(menu,"\wOfis Masasi","26",0)
		menu_additem(menu,"\wLavabo","27",0)
		menu_additem(menu,"\wYangin Muslugu","28",0)
		menu_additem(menu,"\wYangin Sondurucu","29",0)
		menu_additem(menu,"\wPiyano","30",0)

		menu_setprop(menu,MPROP_BACKNAME,"Geri")
		menu_setprop(menu,MPROP_NEXTNAME,"Ileri")
		menu_setprop(menu, MPROP_EXITNAME, "Menuyu Kapat");
		menu_display(id, menu, 0);
	}
	return PLUGIN_HANDLED

}
public ayarlar2(id,menu,item)
{
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	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 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_sofa.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 2 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bchair01.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 3 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_pc3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 4 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/absolut.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 5 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/ae_smallbush.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 6 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bsoda.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 7 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/armoire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 8 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/babrock.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 9 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/barrel_brown.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 10 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/toilet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 11 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/beer_old_nazgul.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 12 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/benzinkanister.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 13 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bucket.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 14 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/buzzer_pa_kolpak.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 15 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cabinet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 16 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cart.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 17 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cartons.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 18 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_office-leather.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 19 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_stool.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 20 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/coffee_maker.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 21 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/couch3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 22 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cow.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 23 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cratedownc2.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 24 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cvpt_radio.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 25 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dead_tire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 26 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/desk_office-small.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 27 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dfountain.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 28 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fire_hydrant.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 29 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fireextinguisher.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
		case 30 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/flo_piano.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		}
	}
	return PLUGIN_HANDLED
}
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, "^1 Kazandin^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);
		}

		// Ölen Saklananları CT yapar
		new players[32],inum;
		get_players(players, inum,"e","TERRORIST")
		if(inum != 1)
		{
		cs_set_user_team(victim,CS_TEAM_CT)
		set_task(1.0,"revle",victim)
		saklanan[victim] = true
		}


	}
	else
	{
		if(task_exists(victim+TASK_HEAL))
			remove_task(victim+TASK_HEAL);
			
		remove_task(victim+TASK_SCLIP);
	}
}

public revle(id)
{
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	show_class_menu(id)
}


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, "Bir atis Bir Olum");
		else client_print(id, print_center, "Zarar: %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, "^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS");
		return PLUGIN_HANDLED;
	}
	
	else if(!g_bInHideTime)
	{
		ph_print(id, "^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("Sinif Menusu:^n\wMenuyu Acmak icin /sinif Yazin", "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, "^1 %L", LANG_PLAYER, "C_NEED_ALIVE");
		return;
	}
	
	ph_print(id, "^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, "^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, "^1 %L", LANG_PLAYER, "C_HEALED");
}

public EventNewRound()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		saklanan[Uid] = false
	}
}
public EventRoundStart()
{
	if(!g_bGameOn)
		return;
		
	g_bRoundEnd = false;
	
	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;
		saklanan[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, "Saklanma Zamani: %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, "Sure Bitti!" );
	
	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);
			tekrarla(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, "^1 Kazandin^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], "CAN DOLUYOR >>");
		}
	}
	
	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;
}


public tekrarla(id)
{
	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_T)
}

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)
{
	if(!is_user_bot(id))
	{
	cs_set_user_team(id, g_bIsHider[id] ? CS_TEAM_CT : CS_TEAM_T);
	g_bIsHider[id] = (g_bIsHider[id] ? false : true);

	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_CT)
	}
}

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);
}

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);

stock ColorChat(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all(msg, 190, "!g", "^x04"); // Green Color
    replace_all(msg, 190, "!n", "^x01"); // Default Color
    replace_all(msg, 190, "!t", "^x03"); // Team Color
    
    if (id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
	
şuan sıkıntı yokmuş ama biz menüye hp ekeldik sorun yok fakat bir şey isticem yapabilirmisin bilmem hatta istediğim menünün yanında vardı.İstediğim menü olmadı ama senin attığın menüde çok güzel.Hatta istediğim menü hpliydi biz bu menüyede hpli yaptık efsane oldu.Fakat istediğimde G ye basıp hangi eşya isen bir çok tane o eşyadan bırakabiliyorsun.Bizde yapmak istedik ve yapabilirmisiniz

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

By.King ►EmrullaH◄
Yasaklı Üye
Yasaklı Üye
Mesajlar: 4297
Kayıt: Cmt Şub 24, 2018 6:05 pm
Konum: İstanbul
İletişim:

Saklambaç Mod Hakkında Yardım

Mesaj gönderen By.King ►EmrullaH◄ »

@MamiReyiz [S]
Onun yerine model spawner ile haritaya modeller ekleyin ve bulunması daha zor olsun.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

By.King ►EmrullaH◄ yazdı: Cmt May 18, 2019 5:33 pm @MamiReyiz [S]
Onun yerine model spawner ile haritaya modeller ekleyin ve bulunması daha zor olsun.
nasıl ?

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

cs_prop_hunt14.sma
F.T.H sıkıntı var.Oyunda avcılar kazandı diyor fakat diğer el yine saklananlar saklanıyor anlamadık.
attığım eklenti üzerine yaparmısın
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

Saklambaç Mod Hakkında Yardım

Mesaj gönderen F.T.H »

en son bizim sunucuya kurdum orada denedim şu an bir sıkıntısı olmaması gerekli

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
//#include <dhudmessage>
#include <fun>

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"
};
new bool:saklanan[33]

#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[i], 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_event("HLTV", "EventNewRound", "a", "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[i], sBuyHandle);
	
	register_clcmd("drop", "cmd_drop");
	for(new i; i < 2; i++)
		register_clcmd(g_cmdTeam[i], "cmd_chooseteam", -1, g_sBlank);
	register_clcmd("say /sinif", "cmd_choose_class");
	register_clcmd("say /class", "cmd_choose_class");
	register_clcmd("say /esya","ayarlar")
	
	for(new i = 0; i < 4; i++)
		g_hudmsg[i] = 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("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("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[i]);
		
	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_disconnected(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;
	}
}

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[i] == 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, "Saklambac Mod");
	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[i] += fVelocity[i];
	
	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[i]))
		{
			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(id,flag)
{
	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[i])
			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(255, 255, 255, -1.0, 0.02, 0, _, 2.1, _, _, -1);
		ShowSyncHudMsg(i, g_hudmsg[HUD_BOARD], "Saklananlar: %i^nArayanlar: %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])
	{
		strip_user_weapons(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);
		set_task(1.0,"ayarlar",id)
	}
	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 ayarlar(id)
{		
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	else
	{

		new menu = menu_create("\yEsya Menusu^n\wMenuyu Acmak icin /esya Yazin","ayarlar2")
		menu_additem(menu,"\wKoltuk \y| \r30 HP","1",0) 
		menu_additem(menu,"\wSandalye \y| \r20 HP","2",0) 
		menu_additem(menu,"\wBilgisayar \y| \r40 HP","3",0) 
		menu_additem(menu,"\wVodka Sisesi \y| \r1 HP","4",0)
		menu_additem(menu,"\wAgac \y| \r80 HP","5",0) 
		menu_additem(menu,"\wPipetli Bardak \y| \r1 HP","6",0)
		menu_additem(menu,"\wGardrop \y| \r100 HP","7",0)
		menu_additem(menu,"\wTas \y| \r40 HP","8",0)
		menu_additem(menu,"\wVaril \y| \r70 HP","9",0)
		menu_additem(menu,"\wKlozet \y| \r50 HP","10",0)
		menu_additem(menu,"\wBira Sisesi \y| \r1 HP","11",0)
		menu_additem(menu,"\wBenzin Sisesi \y| \r10 HP","12",0)
		menu_additem(menu,"\wSu Kovasi \y| \r10 HP","13",0)
		menu_additem(menu,"\wTrafik Konisi \y| \r10 HP","14",0)
		menu_additem(menu,"\wKabine \y| \r100 HP","15",0)
		menu_additem(menu,"\wEl Arabasi \y| \r80 HP","16",0)
		menu_additem(menu,"\wKarton Kutular \y| \r70 HP","17",0)
		menu_additem(menu,"\wOfis Koltugu \y| \r40 HP","18",0)
		menu_additem(menu,"\wTabure \y| \r30 HP","19",0)
		menu_additem(menu,"\wKahve Makinesi \y| \r5 HP","20",0)
		menu_additem(menu,"\wKoltuk 2 \y| \r30 HP","21",0)
		menu_additem(menu,"\wInek \y| \r100 HP","22",0)
		menu_additem(menu,"\wKutu \y| \r30 HP","23",0)
		menu_additem(menu,"\wRadyo \y| \r20 HP","24",0)
		menu_additem(menu,"\wTekerlek \y| \r30 HP","25",0)
		menu_additem(menu,"\wOfis Masasi \y| \r50 HP","26",0)
		menu_additem(menu,"\wLavabo \y| \r50 HP","27",0)
		menu_additem(menu,"\wYangin Muslugu \y| \r30 HP","28",0)
		menu_additem(menu,"\wYangin Sondurucu \y| \r30 HP","29",0)
		menu_additem(menu,"\wPiyano \y| \r60 HP","30",0)

		menu_setprop(menu,MPROP_BACKNAME,"Geri")
		menu_setprop(menu,MPROP_NEXTNAME,"Ileri")
		menu_setprop(menu, MPROP_EXITNAME, "Menuyu Kapat");
		menu_display(id, menu, 0);
	}
	return PLUGIN_HANDLED

}
public ayarlar2(id,menu,item)
{
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	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 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_sofa.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 2 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bchair01.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 20)
		}
		case 3 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_pc3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 4 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/absolut.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 5 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/ae_smallbush.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 80)
		}
		case 6 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bsoda.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 7 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/armoire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 8 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/babrock.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 9 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/barrel_brown.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 70)
		}
		case 10 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/toilet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 11 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/beer_old_nazgul.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 12 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/benzinkanister.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 13 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bucket.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 14 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/buzzer_pa_kolpak.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 15 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cabinet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 16 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cart.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 80)
		}
		case 17 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cartons.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 70)
		}
		case 18 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_office-leather.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 19 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_stool.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 20 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/coffee_maker.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 5)
		}
		case 21 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/couch3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 22 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cow.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 23 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cratedownc2.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 24 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cvpt_radio.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 20)
		}
		case 25 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dead_tire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 26 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/desk_office-small.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 27 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dfountain.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 28 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fire_hydrant.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 29 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fireextinguisher.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 30 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/flo_piano.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 60)
		}
	}
	return PLUGIN_HANDLED
}
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, "^1 Kazandin^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);
		}

		// �len Saklananlar� CT yapar
		new players[32],inum;
		get_players(players, inum,"e","TERRORIST")
		if(inum != 1)
		{
		cs_set_user_team(victim,CS_TEAM_CT)
		set_task(1.0,"revle",victim)
		saklanan[victim] = true
		}


	}
	else
	{
		if(task_exists(victim+TASK_HEAL))
			remove_task(victim+TASK_HEAL);
			
		remove_task(victim+TASK_SCLIP);
	}
}

public revle(id)
{
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	show_class_menu(id)
}


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, "Bir atis Bir Olum");
		else client_print(id, print_center, "Zarar: %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, "^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS");
		return PLUGIN_HANDLED;
	}
	
	else if(!g_bInHideTime)
	{
		ph_print(id, "^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("Sinif Menusu:^n\wMenuyu Acmak icin /sinif Yazin", "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, "^1 %L", LANG_PLAYER, "C_NEED_ALIVE");
		return;
	}
	
	ph_print(id, "^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, "^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, "^1 %L", LANG_PLAYER, "C_HEALED");
}

public EventNewRound()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		saklanan[Uid] = false
	}
}
public EventRoundStart()
{
	if(!g_bGameOn)
		return;
		
	g_bRoundEnd = false;
	
	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;
		saklanan[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, "Saklanma Zamani: %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, "Sure Bitti!" );
	
	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();
			tekrarla(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;
			
			set_dhudmessage(20, 100, 250, -1.0, 0.25, 0, _, 4.0);
			show_dhudmessage(i, winmsg);
		}
		add_delay_switch_team();
	}
	
	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, "^1 Kazandin^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], "CAN DOLUYOR >>");
		}
	}
	
	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;
}


public tekrarla(id)
{
	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_T)
}

add_delay_switch_team()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		change_team(Uid)
	}
}

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

	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_CT)
	}
}

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);
}

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);

stock ColorChat(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all(msg, 190, "!g", "^x04"); // Green Color
    replace_all(msg, 190, "!n", "^x01"); // Default Color
    replace_all(msg, 190, "!t", "^x03"); // Team Color
    
    if (id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
	
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

F.T.H yazdı: Cmt May 18, 2019 6:50 pm en son bizim sunucuya kurdum orada denedim şu an bir sıkıntısı olmaması gerekli

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
//#include <dhudmessage>
#include <fun>

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"
};
new bool:saklanan[33]

#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[i], 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_event("HLTV", "EventNewRound", "a", "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[i], sBuyHandle);
	
	register_clcmd("drop", "cmd_drop");
	for(new i; i < 2; i++)
		register_clcmd(g_cmdTeam[i], "cmd_chooseteam", -1, g_sBlank);
	register_clcmd("say /sinif", "cmd_choose_class");
	register_clcmd("say /class", "cmd_choose_class");
	register_clcmd("say /esya","ayarlar")
	
	for(new i = 0; i < 4; i++)
		g_hudmsg[i] = 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("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("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[i]);
		
	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_disconnected(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;
	}
}

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[i] == 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, "Saklambac Mod");
	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[i] += fVelocity[i];
	
	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[i]))
		{
			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(id,flag)
{
	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[i])
			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(255, 255, 255, -1.0, 0.02, 0, _, 2.1, _, _, -1);
		ShowSyncHudMsg(i, g_hudmsg[HUD_BOARD], "Saklananlar: %i^nArayanlar: %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])
	{
		strip_user_weapons(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);
		set_task(1.0,"ayarlar",id)
	}
	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 ayarlar(id)
{		
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	else
	{

		new menu = menu_create("\yEsya Menusu^n\wMenuyu Acmak icin /esya Yazin","ayarlar2")
		menu_additem(menu,"\wKoltuk \y| \r30 HP","1",0) 
		menu_additem(menu,"\wSandalye \y| \r20 HP","2",0) 
		menu_additem(menu,"\wBilgisayar \y| \r40 HP","3",0) 
		menu_additem(menu,"\wVodka Sisesi \y| \r1 HP","4",0)
		menu_additem(menu,"\wAgac \y| \r80 HP","5",0) 
		menu_additem(menu,"\wPipetli Bardak \y| \r1 HP","6",0)
		menu_additem(menu,"\wGardrop \y| \r100 HP","7",0)
		menu_additem(menu,"\wTas \y| \r40 HP","8",0)
		menu_additem(menu,"\wVaril \y| \r70 HP","9",0)
		menu_additem(menu,"\wKlozet \y| \r50 HP","10",0)
		menu_additem(menu,"\wBira Sisesi \y| \r1 HP","11",0)
		menu_additem(menu,"\wBenzin Sisesi \y| \r10 HP","12",0)
		menu_additem(menu,"\wSu Kovasi \y| \r10 HP","13",0)
		menu_additem(menu,"\wTrafik Konisi \y| \r10 HP","14",0)
		menu_additem(menu,"\wKabine \y| \r100 HP","15",0)
		menu_additem(menu,"\wEl Arabasi \y| \r80 HP","16",0)
		menu_additem(menu,"\wKarton Kutular \y| \r70 HP","17",0)
		menu_additem(menu,"\wOfis Koltugu \y| \r40 HP","18",0)
		menu_additem(menu,"\wTabure \y| \r30 HP","19",0)
		menu_additem(menu,"\wKahve Makinesi \y| \r5 HP","20",0)
		menu_additem(menu,"\wKoltuk 2 \y| \r30 HP","21",0)
		menu_additem(menu,"\wInek \y| \r100 HP","22",0)
		menu_additem(menu,"\wKutu \y| \r30 HP","23",0)
		menu_additem(menu,"\wRadyo \y| \r20 HP","24",0)
		menu_additem(menu,"\wTekerlek \y| \r30 HP","25",0)
		menu_additem(menu,"\wOfis Masasi \y| \r50 HP","26",0)
		menu_additem(menu,"\wLavabo \y| \r50 HP","27",0)
		menu_additem(menu,"\wYangin Muslugu \y| \r30 HP","28",0)
		menu_additem(menu,"\wYangin Sondurucu \y| \r30 HP","29",0)
		menu_additem(menu,"\wPiyano \y| \r60 HP","30",0)

		menu_setprop(menu,MPROP_BACKNAME,"Geri")
		menu_setprop(menu,MPROP_NEXTNAME,"Ileri")
		menu_setprop(menu, MPROP_EXITNAME, "Menuyu Kapat");
		menu_display(id, menu, 0);
	}
	return PLUGIN_HANDLED

}
public ayarlar2(id,menu,item)
{
	if(!g_bInHideTime)
	{
		ph_print(id, "^3 %L", LANG_PLAYER, "C_CHOOSE_CLASS2");
		return PLUGIN_HANDLED;
	}
	else if(!g_bIsHider[id])
	{
		ph_print(id, "^3 Sadece Saklananlar Esya Secebilir");
		return PLUGIN_HANDLED;
	}
	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 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_sofa.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 2 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bchair01.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 20)
		}
		case 3 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/3dm_pc3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 4 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/absolut.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 5 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/ae_smallbush.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 80)
		}
		case 6 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bsoda.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 7 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/armoire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 8 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/babrock.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 9 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/barrel_brown.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 70)
		}
		case 10 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/toilet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 11 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/beer_old_nazgul.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 1)
		}
		case 12 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/benzinkanister.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 13 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/bucket.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 14 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/buzzer_pa_kolpak.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 10)
		}
		case 15 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cabinet.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 16 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cart.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 80)
		}
		case 17 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cartons.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 70)
		}
		case 18 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_office-leather.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 40)
		}
		case 19 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/chair_stool.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 20 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/coffee_maker.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 5)
		}
		case 21 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/couch3.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 22 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cow.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 100)
		}
		case 23 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cratedownc2.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 24 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/cvpt_radio.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 20)
		}
		case 25 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dead_tire.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 26 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/desk_office-small.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 27 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/dfountain.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 50)
		}
		case 28 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fire_hydrant.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 29 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/fireextinguisher.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 30)
		}
		case 30 : {
		static iProp, szEntModel[64]
		iProp = g_iProp[id]
		set_visible(iProp);
		format(szEntModel, charsmax(szEntModel), "models/props/flo_piano.mdl");
		engfunc(EngFunc_SetModel, iProp, szEntModel);
		set_user_health(id, 60)
		}
	}
	return PLUGIN_HANDLED
}
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, "^1 Kazandin^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);
		}

		// �len Saklananlar� CT yapar
		new players[32],inum;
		get_players(players, inum,"e","TERRORIST")
		if(inum != 1)
		{
		cs_set_user_team(victim,CS_TEAM_CT)
		set_task(1.0,"revle",victim)
		saklanan[victim] = true
		}


	}
	else
	{
		if(task_exists(victim+TASK_HEAL))
			remove_task(victim+TASK_HEAL);
			
		remove_task(victim+TASK_SCLIP);
	}
}

public revle(id)
{
	ExecuteHamB(Ham_CS_RoundRespawn, id)
	show_class_menu(id)
}


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, "Bir atis Bir Olum");
		else client_print(id, print_center, "Zarar: %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, "^1 %L", LANG_PLAYER, "C_CHOOSE_CLASS");
		return PLUGIN_HANDLED;
	}
	
	else if(!g_bInHideTime)
	{
		ph_print(id, "^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("Sinif Menusu:^n\wMenuyu Acmak icin /sinif Yazin", "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, "^1 %L", LANG_PLAYER, "C_NEED_ALIVE");
		return;
	}
	
	ph_print(id, "^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, "^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, "^1 %L", LANG_PLAYER, "C_HEALED");
}

public EventNewRound()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		saklanan[Uid] = false
	}
}
public EventRoundStart()
{
	if(!g_bGameOn)
		return;
		
	g_bRoundEnd = false;
	
	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;
		saklanan[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, "Saklanma Zamani: %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, "Sure Bitti!" );
	
	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();
			tekrarla(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;
			
			set_dhudmessage(20, 100, 250, -1.0, 0.25, 0, _, 4.0);
			show_dhudmessage(i, winmsg);
		}
		add_delay_switch_team();
	}
	
	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, "^1 Kazandin^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], "CAN DOLUYOR >>");
		}
	}
	
	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;
}


public tekrarla(id)
{
	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_T)
}

add_delay_switch_team()
{
	new players[32],inum;
	static Uid;
	get_players(players, inum)
	for(new i;i<inum;i++) 
	{
		Uid = players[i]
		change_team(Uid)
	}
}

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

	if(saklanan[id])
		cs_set_user_team(id,CS_TEAM_CT)
	}
}

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);
}

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);

stock ColorChat(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all(msg, 190, "!g", "^x04"); // Green Color
    replace_all(msg, 190, "!n", "^x01"); // Default Color
    replace_all(msg, 190, "!t", "^x03"); // Team Color
    
    if (id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
	
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
Deniyorum

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
MamiReyiz [S]
Mesajlar: 1922
Kayıt: Prş Oca 17, 2019 10:53 am

Saklambaç Mod Hakkında Yardım

Mesaj gönderen MamiReyiz [S] »

Kod: Tümünü seç

//cstrike/addons/amxmodx/scripting/deneme.sma(0) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(2) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(3) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(4) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(5) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(6) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(7) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(8) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(9) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(10) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(11) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(12) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(13) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(14) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(15) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(16) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(17) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(18) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(19) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(20) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(21) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(22) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(23) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(24) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(25) : error 075: input line too long (after substitutions)
//cstrike/addons/amxmodx/scripting/deneme.sma(26) : error 075: input line too long (after substitutions)

Compilation aborted.
26 Errors.
Done.

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

Saklambaç Mod Hakkında Yardım

Mesaj gönderen F.T.H »

.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala
Cevapla