Cache mod

Discutii legate de instalarea, configurarea si modificarea unui server de Counter-Strike.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
alexinio3d
Membru, skill +1
Membru, skill +1
Posts: 150
Joined: 14 Feb 2011, 13:55
Detinator Steam: Da
CS Status: http://www.treisute.ro
Detinator server CS: da
SteamID: alexinio3d
Location: Baia Mare
Has thanked: 1 time
Been thanked: 2 times
Contact:

16 Nov 2013, 23:11

Salutare
De curand eu cu amicii mei neam hotarat sa deschidem un server de mod cache :), dar am intampinat o problema la crearea lui, adica aceea ca, atunci cand imi intru pe server imi arata 2 meniuri de alegere a echipelor, iar cateodata numa unu ( acel default care nu ii in tabel ) .
Cand imi arata meniu default nu ma lasa sa intru la nici o echipa si ma tine spec .
Oare de ce ?? :)

aici aveti sursa pluginului de baza :
cache.sma | Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

/* Cache-Cache by KRoT@L
 *
 * Ported to AMXx by INeedHelp
 *
 * Fakemeta Convertion by xPaw
 */
 
#define ACCESS_HAS ADMIN_RCON

#define PLUGIN_NAME "Cache-Cache (H&S)"
#define HAS_VERSION "1.1"

new hidesongs[][] = 
{ 
	"Prospero03", "Prospero05", "Suspense05", 
	"Suspense03", "Suspense01" 
}

new seekerssongs[][] = 
{ 
	"Half-Life03", "Half-Life04", "Half-Life05", 
	"Half-Life06", "Half-Life07", "Half-Life09", 
	"Half-Life10", "Half-Life14", "Half-Life15" 
}

new seekedsongs[][] = 
{ 
	"Half-Life01", "Half-Life02", "Half-Life08", 
	"Half-Life11", "Half-Life12", "Half-Life13", 
	"Half-Life16", "Half-Life17" 
}

new mincats = 1; 
new mice = 2; 
new Float:hidetime = 50.0; 

new flashlight[33];
new color[33];

new g_color[][] = 
{ 
	{100,0,0},{0,100,0},{0,0,100},{0,100,100},{100,0,100},{100,100,0},
	{100,0,60},{100,60,0},{0,100,60},{60,100,0},{0,60,100},{60,0,100},
	{100,50,50},{50,100,50},{50,50,100},{0,50,50},{50,0,50},{50,50,0}
}

new skies[][] = { "space" };

new flashlight_custom, flashlight_radius, flashlight_only_ct;
new gmsgFlashlight, gmsgTeamInfo;

new active; 
new phase; 
new killed[32];
new s_gravity, s_roundtime, s_freezetime, s_limitteams, s_autoteambalance, s_alltalk, s_footsteps, s_friendlyfire, s_startmoney;  // Used to save original server CVars values
new Float:s_buytime; 
new transferring[33]; 
new gmsgScreenFade;
new inround = 0;
new counter; 
new hasdbg = 0; 

new amx_hs_light, amx_hs_flash, radius_cvar;
new autolaunch;

new g_opt[33][2];
new g_decompte;

// Fakemeta Convertion
#define OFFSET_TEAM		114
#define OFFSET_NVGOGGLES	129
#define HAS_NVGOGGLES		(1<<0)

#define fm_create_entity(%1)	engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
#define fm_is_valid_ent(%1)	pev_valid(%1)

enum
{
	FM_TEAM_UNASSIGNED,
	FM_TEAM_T,
	FM_TEAM_CT,
	FM_TEAM_SPECTATOR,
	
	FM_TEAM_MAX
};

stock get_maxcats() 
{
	new playersnum, Float:div, ndiv, result;
	playersnum = get_playersnum(1);
	div = float(playersnum) / 6;
	ndiv = floatround(div,floatround_floor);
	
	if( ndiv < mincats )
		result = mincats;
	else
		result = ndiv;

	return result;
}

public plugin_init()
{
	register_plugin(PLUGIN_NAME, HAS_VERSION, "djeyL/INeedHelp/xPaw"); 
	
	register_cvar("amx_cc_version", HAS_VERSION, FCVAR_SERVER);
	set_cvar_string("amx_cc_version", HAS_VERSION)
	register_cvar("amx_cc_decompte", "0");
	amx_hs_light		= register_cvar("hns_light","1");
	amx_hs_flash		= register_cvar("hns_flash","2"); 
	radius_cvar		= register_cvar("hns_radius_cvar","100");
	autolaunch		= register_cvar("hns_autolaunch","1");	
	flashlight_custom	= register_cvar("hns_flashlight_custom","1");
	flashlight_radius	= register_cvar("hns_flashlight_radius","20");
	flashlight_only_ct	= register_cvar("hns_flashlight_only_ct","1"); 
	
	register_concmd("amx_hideandseek", "hideandseek", ACCESS_HAS, "- <on|off|mincats x|mice x|hidetime x>");
	register_clcmd("jointeam",	"jointeam");
	register_clcmd("chooseteam",	"chooseteam");
	register_clcmd("buy",		"buy");
	
	register_event("SendAudio",	"endround",	"a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw");
	register_event("TextMsg",	"gamestart",	"a", "2&#Game_C", "2&#Game_w");
	register_event("RoundTime",	"newround",	"bc");
	register_event("CurWeapon",	"switchweapon",	"be", "1=1");
	register_event("DeathMsg",	"deathmsg",	"a");
	register_event("ScreenFade",	"FlashedEvent",	"be","4=255","5=255","6=255","7>199");
	register_event("ShowMenu",	"teamselect",	"b","4&#Team_Select");
	register_event("Flashlight",	"event_flashlight", "b");
	register_forward(FM_PlayerPreThink,	"fwdPlayerPreThink");
	
	active = 0;
	gmsgScreenFade	= get_user_msgid("ScreenFade");
	gmsgFlashlight	= get_user_msgid("Flashlight");
	gmsgTeamInfo	= get_user_msgid( "TeamInfo" );
	
	set_cvar_num("mp_flashlight",1);
	set_task(15.0, "lauchgame", 165);
}

public client_putinserver(id) 
{
	random_num(0, sizeof( g_color ) - 1);
}

public lauchgame(taskid) 
{
	if(!get_pcvar_num(autolaunch))
		return;
	
	server_cmd("amx_hideandseek on");
}

public plugin_precache()
{
	new fog = fm_create_entity("env_fog");
	//DispatchKeyValue(fog, "density", "0.000650");
	fm_set_kvd(fog, "density", "0.000650");

	new r = random_num(1, 128);
	new g = random_num(1, 128);
	new b = random_num(1, 128);
	
	new rouge[3], vert[3], bleu[3];
	num_to_str(r,rouge,2);
	num_to_str(g,vert,2);
	num_to_str(b,bleu,2);
	
	new test[12];
	formatex(test,11,"%s %s %s",rouge,vert,bleu);
	//DispatchKeyValue(fog,"rendercolor",test);
	fm_set_kvd(fog,"rendercolor",test);

	new rand = random_num(0, sizeof(skies)-1);
	set_cvar_string("sv_skyname", skies[rand]);
}

public client_connect(id)
{
	if(!is_user_bot(id)) 
	{
		get_user_info(id,"_vgui_menus",g_opt[id],1);
		set_user_info(id,"_vgui_menus","0");
	}
}

public client_disconnect(id)
{
	new i;
	transferring[id] = 0;
	
	for (i=0; i<32; i++)
	{
		if (killed == id)
		{
			break;
		}
	}
	
	if(i == 32) 
		return;
	
	if (killed == id)
	{
		for (i++; i<32 && killed!=0; i++)
		{
			killed[i-1] = killed;
		}
		killed = 0;
	}
}

public teamselect(id)
{
	if(!is_user_bot(id)) 
	{
		if(active != 0)
		{
			new i, players[32];
			get_players(players,i);
		
			if (i == 1)
				inround = 1;
			
			
			transferring[id] = 1;
			client_cmd(id, "jointeam 1");
		}
		set_user_info(id,"_vgui_menus",g_opt[id]);
	}
}

public hideandseek(id, level, cid)
{
	new arg[16];
	new pnum;
	new cts;
	new players[32];
	new i;
	
	if (read_argv(1, arg, 15) == 0)
	{
		console_print(id, "* Hide & Seek plugin v%s is currently %s [hidetime:%d,mincats:%d,mice:%d]", HAS_VERSION, active ? "running!" : "stopped.", floatround(hidetime), mincats, mice);
		return PLUGIN_HANDLED;
	}
	
	if (!cmd_access(id, level, cid, 1))
	{
		return PLUGIN_HANDLED;
	}
	
	if (equal(arg, "mincats") || equal(arg, "chatsmin"))
	{
		if (read_argv(2, arg, 15) == 0)
		{
			console_print(id, "* Hide & Seek: mincats = %d", mincats);
			return PLUGIN_HANDLED;
		}
		else
		{
			if (cmd_access(id, level, cid, 1))
			{
				if (active != 0)
				{
					console_print(id, "* Hide & Seek: you can not change game rules right now!");
					return PLUGIN_HANDLED;
				}
				i = str_to_num(arg);
				if (i>0)
				{
					mincats = i;
					console_print(id, "* Hide & Seek: 'mincats' set to %d", mincats);
				}
				else
				{
					console_print(id, "* Hide & Seek: invalid 'mincats' value (minimum: 1)");
				}
				return PLUGIN_HANDLED;
			}
		}
	}
	else if (equal(arg, "mice") || equal(arg, "souris"))
	{
		if (read_argv(2, arg, 15) == 0)
		{
			console_print(id, "* Hide & Seek: mice = %d", mice);
			return PLUGIN_HANDLED;
		}
		else
		{
			if (cmd_access(id, level, cid, 1))
			{
				if (active != 0)
				{
					console_print(id, "* Hide & Seek: you can not change game rules right now!");
					return PLUGIN_HANDLED;
				}
				
				i = str_to_num(arg);
				if (i>=0)
				{
					mice = i;
					console_print(id, "* Hide & Seek: 'mice' set to %d", mice);
				}
				else
				{
					console_print(id, "* Hide & Seek: invalid 'mice' value (minimum: 0)");
				}
				return PLUGIN_HANDLED;
			}
		}
	}
	else if (equal(arg, "hidetime") || equal(arg, "dureeplanque"))
	{
		if (read_argv(2, arg, 15) == 0)
		{
			console_print(id, "* Hide & Seek: hidetime = %d seconds", floatround(hidetime));
			return PLUGIN_HANDLED;
		}
		else
		{
			if (cmd_access(id, level, cid, 1))
			{
				if (active != 0)
				{
					console_print(id, "* Hide & Seek: you can not change game rules right now!");
					return PLUGIN_HANDLED;
				}
				
				i = str_to_num(arg);
				if (i>=15)
				{
					hidetime = float(i);
					console_print(id, "* Hide & Seek: 'hidetime' set to %d seconds", floatround(hidetime));
				}
				else
				{
					console_print(id, "* Hide & Seek: invalid 'hidetime' value (minimum: 15 seconds)");
				}
				return PLUGIN_HANDLED;
			}
		}
	}
	else if ((equali(arg, "on") || equal(arg, "1") || equal(arg, "start")) && active == 0)
	{
		client_print(0, print_chat, "[Cache Mod] O sesiune a fost inceputa !");
		
		new ConfigsDir[128]
		get_configsdir(ConfigsDir, 127)
		server_cmd("exec %s/has-on.cfg", ConfigsDir);
		
		active = 1;
		phase = 0;
		
		s_gravity = get_cvar_num("sv_gravity");
		s_roundtime = get_cvar_num("mp_roundtime");
		s_freezetime = get_cvar_num("mp_freezetime");
		s_limitteams = get_cvar_num("mp_limitteams");
		s_autoteambalance = get_cvar_num("mp_autoteambalance");
		s_alltalk = get_cvar_num("sv_alltalk");
		s_footsteps = get_cvar_num("mp_footsteps");
		s_friendlyfire = get_cvar_num("mp_friendlyfire");
		s_startmoney = get_cvar_num("mp_startmoney");
		s_buytime = get_cvar_float("mp_buytime");
		server_cmd("amx_restrict on");
		
		set_cvar_num("sv_gravity", 150);
		set_cvar_num("mp_roundtime", 3);
		set_cvar_num("mp_freezetime", 0);
		set_cvar_num("mp_limitteams", 0);
		set_cvar_num("mp_autoteambalance", 0);
		set_cvar_num("sv_alltalk", 1);
		set_cvar_num("mp_friendlyfire", 0);
		set_cvar_num("mp_startmoney", 16000);
		set_cvar_num("mp_buytime", 5);
		
		if(get_pcvar_num(amx_hs_light))
			fm_set_lights("d"); 
		
		new maxcats = get_maxcats();
		get_players(players, cts, "e", "CT");
		if (cts > maxcats)
		{
			for (i=maxcats; i<cts; i++)
			{
				if (hasdbg) 
					client_print(0, print_chat,"* Hide'n'Seek[init]: Already enough CTs")
				
				fm_set_user_team(players, FM_TEAM_T);
			}
		}
		else if (cts < mincats)
		{
			get_players(players, pnum, "e", "TERRORIST");
			for (i=0; cts<mincats && i<pnum; i++)
			{
				if (hasdbg) 
					client_print(0, print_chat, "* Hide'n'Seek[init]: Need more CTs")
				
				fm_set_user_team(players, FM_TEAM_CT);
				cts++;
			}
		}
		set_task(2.0, "plugin_timer", 412563, "", 0, "b")
	}
	else if ((equali(arg, "off") || equal(arg, "0") || equal(arg, "stop")) && active != 0)
	{
		client_print(0, print_chat, "[Cache Mod] Sesiune terminata !");
		
		new ConfigsDir[128]
		get_configsdir(ConfigsDir, 127)
		server_cmd("exec %s/has-off.cfg", ConfigsDir)
		
		active = 0;
		
		if (task_exists(412563))
			remove_task(412563);
		
		set_cvar_num("sv_gravity", s_gravity);
		set_cvar_num("mp_roundtime", s_roundtime);
		set_cvar_num("mp_freezetime", s_freezetime);
		set_cvar_num("mp_limitteams", s_limitteams);
		set_cvar_num("mp_autoteambalance", s_autoteambalance);
		set_cvar_num("sv_alltalk", s_alltalk);
		set_cvar_num("mp_footsteps", s_footsteps);
		set_cvar_num("mp_friendlyfire", s_friendlyfire);
		set_cvar_num("mp_startmoney", s_startmoney);
		set_cvar_float("mp_buytime", s_buytime);
		server_cmd("amx_restrict off");
		
		if(get_pcvar_num(amx_hs_light))
			fm_set_lights("d")
			
		remove_task(412564);
		remove_task(412565);
		remove_task(412566);
		remove_task(147258);
		
		get_players(players, pnum);
		for(i=0; i<pnum; i++)
		{
			fm_set_user_maxspeed(players, 240.0);
			fm_set_user_gravity(players, 1.0);
			fm_set_user_godmode(players, 0);
		}
		set_cvar_num("sv_restart", 2);
	}
	return PLUGIN_HANDLED;
}

public plugin_timer()
{
	new ts[32];
	new cts[32];
	new tnum;
	new ctnum;
	new i;
	new specialcase = 0;
	new maxcats = get_maxcats();
	get_players(ts, tnum, "e", "TERRORIST");
	get_players(cts, ctnum, "e", "CT");
	
	if(ctnum==0)
		specialcase = 1;
	
	if(tnum>=mice && ctnum>=mincats)
	{
		if(active == 1)
		{
			client_print(0, print_chat, "[Cache Mod] Sunt destui jucatori , incepem jocul !");
			active = 2;
			set_cvar_num("sv_restart", 1);
		}
		else if (active == 3)
		{
			if (phase == 1)
			{
				for(i=0; i<tnum; i++)
				{
					fm_set_user_maxspeed(ts[i], 400.0);
					fm_set_user_gravity(ts[i], 1.0);
				}
				for(i=0; i<ctnum; i++)
				{
					fm_set_user_maxspeed(cts[i], 0.1);
					fm_set_user_gravity(cts[i], 10.0);
				}
			}
			else if (phase == 2)
			{
				for(i=0; i<tnum; i++)
				{
					fm_set_user_maxspeed(ts[i], 0.1);
					fm_set_user_gravity(ts[i], 10.0);
				}
				for(i=0; i<ctnum; i++)
				{
					fm_set_user_maxspeed(cts[i], 400.0);
					fm_set_user_gravity(cts[i], 1.0);
				}
			}
		}
	}
	else
	{
		if (ctnum < mincats)
		{
			for(i=tnum-1; i>=0 && ctnum<maxcats; i--)
			{
				if (hasdbg) 
					client_print(0,print_chat,"* Hide'n'Seek[timer]: Not enough CTs")
				
				fm_set_user_team(ts[i], FM_TEAM_CT);
				ctnum++;
				tnum--;
			}
		}
		else if (ctnum>maxcats)
		{
			for(i=ctnum-maxcats; i>=0 && tnum<mice; i--)
			{
				if (hasdbg) 
					client_print(0,print_chat,"* Hide'n'Seek[timer]: Too many CTs");
				
				fm_set_user_team(cts[i], FM_TEAM_T);
				ctnum --;
				tnum ++;
			}
		}
		
		if (ctnum>=mincats && ctnum<=maxcats && tnum>=mice)
		{
			if(!specialcase)
				set_cvar_num("sv_restart", 1);

		}
		else
		{
			if (active == 1)
			{
				set_hudmessage(0, 255, 0, 0.05, 0.4, 0, 6.0, 5.0, 0.5, 0.15, 7);
				show_hudmessage(0, "[Cache Mod] Nu sunt destui jucatori !");
			}
			else
			{
				set_hudmessage(0, 255, 0, 0.05, 0.4, 0, 6.0, 5.0, 0.5, 0.15, 7);
				show_hudmessage(0, "[Cache Mod] Nu sunt destui jucatori !");
				
				active = 1;
				remove_task(412564);
				remove_task(412565);
				
				for(i=0; i<tnum; i++)
				{
					fm_set_user_maxspeed(ts[i], 240.0);
					fm_set_user_gravity(ts[i], 1.0);
				}
				for(i=0; i<ctnum; i++)
				{
					fm_set_user_maxspeed(cts[i], 240.0);
					fm_set_user_gravity(cts[i], 1.0);
				}
				if(get_pcvar_num(amx_hs_light))
					fm_set_lights("d");
				
				set_cvar_num("sv_restart", 1);
			}
		}
	}
	
	get_players(ts, tnum, "b");
	for(tnum--; tnum>=0; tnum--)
	{
		fm_set_user_maxspeed(ts[tnum], 240.0);
		fm_set_user_gravity(ts[tnum], 1.0);
	}
}

public newround()
{
	new players[32];
	new pnum;
	new i;
	new maxcats = get_maxcats();
	
	if (read_data(1) == floatround(get_cvar_float("mp_roundtime")*60.0))
	{
		remove_task(147258);
		inround = 1;
		
		if(active < 2)
			return;
			
		get_players(players, pnum, "e", "CT");
		get_players(players, i, "e", "TERRORIST");
		if (pnum>=mincats && pnum<=maxcats && i>=mice)
		{
			set_hudmessage(0, 255, 0, 0.05, 0.4, 0, 6.0, 5.0, 0.5, 0.15, 7);
			show_hudmessage(0, "[Cache Mod] Teroristi , aveti %d secunde sa va ascundeti !", floatround(hidetime));
			client_cmd(0, "spk radio/com_getinpos");
			set_cvar_num("mp_footsteps", 0);
			
			if (active == 2)
				active = 3;
			
			phase = 1;
			
			if(get_pcvar_num(amx_hs_light))
				fm_set_lights("d");
			
			for (i=0; i<32; i++)
			{
				killed[i] = 0;
			}
			
			get_players(players,pnum,"e","TERRORIST");
			new a = random_num(0, sizeof(hidesongs) - 1);
			for (i=0; i<pnum; i++)
			{
				engclient_cmd(players[i], "weapon_knife");
				fm_set_user_godmode(players[i], 1);
				fm_set_user_nvg(players[i], 1);
				
				flashlight[players[i]] = 0
				client_cmd(players[i], "mp3 play media/%s", hidesongs[a]);
			}
			
			get_players(players,pnum,"e","CT");
			for (i=0; i<pnum; i++)
			{
				engclient_cmd(players[i], "weapon_knife");
				f2b(players[i], 1);
				fm_set_user_godmode(players[i], 1);
				fm_set_user_nvg(players[i], 0);
				printad(players[i], hidetime);
				client_cmd(players[i], "mp3 play media/%s", hidesongs[a]);
			}
			
			remove_task(412564);
			set_task(hidetime, "round_timer", 412564);
			
			remove_task(412565);
			set_task(hidetime - 3.0, "soon_timer", 412565);
			
			remove_task(412566);
			counter = floatround(hidetime);
			set_task(1.0, "countdown", 412566, "", 0, "b");
			
			new decompte = get_cvar_num("amx_cc_decompte");
			if(decompte > 0) 
			{
				new Float:tasktime = get_cvar_float("mp_roundtime")*60.0 - float(decompte);
				
				if(tasktime > 4.0) 
					set_task(tasktime-3.0, "lancerDecompte", 789456+decompte);
			}
		}
	}
}

public lancerDecompte(id) 
{
	g_decompte = id - 789456;
	set_task(1.0, "afficherDecompte", 147258, "", 0, "b");
}

public afficherDecompte() 
{
	set_hudmessage(255, 255, 255, 0.05, 0.45, 0, 1.0, 1.0, 0.2, 0.2, 8);
	
	g_decompte--;
	if(g_decompte == 0) 
	{
		new players[32], inum, id;
		get_players(players, inum, "ae", "TERRORIST");
		for(new i = 0; i < inum; i++) 
		{
			id = players[i];
			set_pdata_int(id, 444, get_user_deaths(id) - 1);
			user_kill(id, 1);
		}
		remove_task(147258);
		return
	}
	show_hudmessage(0, "%ds before the end !", g_decompte);
}

public countdown()
{
	set_hudmessage(255, 20, 0, 0.10, 0.50, 0, 1.0, 1.0, 0.2, 0.2, 9);
	counter--;
	show_hudmessage(0, "%d", counter);
}

public round_timer()
{
	new players[32];
	new pnum;
	
	if (active == 3)
	{
		remove_task(412566);
		client_print(0, print_chat, "[Cache Cache] CT , gaseste-i pe teroristi si omoara-i");
		client_cmd(0, "spk radio/com_go");
		phase = 2;
		
		if(get_pcvar_num(amx_hs_light))
			fm_set_lights("a");
		
		get_players(players, pnum, "ae", "CT");
		new a = random_num(0, sizeof(seekerssongs) - 1);
		
		for (pnum--; pnum>=0; pnum--)
		{
			f2b(players[pnum], 0);
			client_cmd(players[pnum], "mp3 play media/%s",seekerssongs[a]);
			fm_give_item(players[pnum], "weapon_knife");
			fm_give_item(players[pnum], "weapon_deagle");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "ammo_50ae");
			fm_give_item(players[pnum], "weapon_m4a1");
			fm_give_item(players[pnum], "ammo_556nato");
			fm_give_item(players[pnum], "ammo_556nato");
			fm_give_item(players[pnum], "ammo_556nato");
			fm_give_item(players[pnum], "ammo_556nato");
			fm_give_item(players[pnum], "ammo_556nato");
			fm_give_item(players[pnum], "ammo_556nato");
			new flashs = get_pcvar_num(amx_hs_flash);
			
			if(flashs ==1)
				fm_give_item(players[pnum], "weapon_flashbang");
			else if(flashs ==2) 
			{
				fm_give_item(players[pnum], "weapon_flashbang");
				fm_give_item(players[pnum], "weapon_flashbang");
			}
		}
		
		a = random_num(0, sizeof(seekedsongs) - 1);
		get_players(players, pnum, "ae", "TERRORIST");
		for (pnum--; pnum>=0; pnum--)
		{
			fm_set_user_godmode(players[pnum], 0);
			client_cmd(players[pnum], "mp3 play media/%s",seekedsongs[a]);
			fm_set_user_maxspeed(players[pnum], 400.0)
		}
	}
}

public soon_timer()
{
	if (active == 3)
	{
		client_print(0, print_chat,"[Cache Mod] Teroristi , incetati sa sariti sau va veti izbi de pamant !");
		client_cmd(0, "spk radio/position");
	}
}

public jointeam(id) 
{
	if (active == 0)
	{
		return PLUGIN_CONTINUE;
	}
	
	if (transferring[id] == 1)
	{
		transferring[id] = 0;
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_HANDLED;
}

public chooseteam(id)
{
	if (active == 0)
	{
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_HANDLED;
}

public switchweapon(id)
{
	if(!active)
		return;
	
	if( active > 0 && active < 3 ) 
	{
		fm_set_user_maxspeed(id, 400.0);
		return;
	}
	
	new weapon = read_data(2);
	new team = get_user_team(id);
	
	switch( phase )
	{
		case 1:
		{
			
			if( weapon != CSW_KNIFE )
			{
				if(is_user_bot(id))
					engclient_cmd(id, "weapon_knife");
				else
					client_cmd(id, "weapon_knife");
			}
			switch( team ) {
				case 2:
				{
					fm_set_user_maxspeed(id, 0.1);
				}
				case 1:
				{
					fm_set_user_maxspeed(id, 400.0);
				}
			}
		}
		case 2:
		{
			switch( team ) {
				case 1:
				{
					fm_set_user_maxspeed(id, 0.1);
					if( weapon != CSW_KNIFE )
					{
						if(is_user_bot(id))
							engclient_cmd(id, "weapon_knife");
						else
							client_cmd(id, "weapon_knife");
					}
				}
				case 2:
				{
					fm_set_user_maxspeed(id, 400.0);
				}
			}
		}
	}
}

public buy(id)
{
	if (active == 3)
	{
		new team[32];
		get_user_team(id, team, 31);
		
		if (equali(team, "TERRORIST"))
		{
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public deathmsg()
{
	new i;
	new team[32];
	new victim = read_data(2);

	flashlight[victim] = 0;

	if (active == 3)
	{
		printad(victim, 1000.0);
		get_user_team(victim, team, 31);
		
		if (equali(team, "TERRORIST"))
		{
			client_cmd(0, "spk radio/enemydown");
			for (i=0; i<32 && killed[i]!=0; i++)
			{
			}
		
			if (i == 32)
			{
				for (i=1; i<32; i++)
					killed[i-1] = killed[i];
			}
			killed[i] = victim;
		}
	}
}

public gamestart() 
{
	remove_task(147258);
}

public endround()
{
	inround = 0;
	if (active)
	{
		set_task(2.5,"delayed_endround");
		
		if(get_pcvar_num(amx_hs_light))
			fm_set_lights("d");
	}
}

public delayed_endround()
{
	remove_task(147258);
	new newcats = 0;
	new players[32];
	new cts[32];
	new ctnum;
	new pnum;
	new i;
	
	if (active != 3)
	{
		return PLUGIN_CONTINUE;
	}
	remove_task(412564);
	remove_task(412565);
	remove_task(412566);
	
	get_players(cts, ctnum, "e", "CT");
	get_players(players, pnum, "e", "TERRORIST");
	
	if (ctnum<mincats || pnum<mice)
	{
		client_print(0, print_chat,"[Cache Mod] Anti-teroristul a iesit , vom face niste schimbari la echipe !");
		return PLUGIN_CONTINUE;
	}
	
	new maxcats = get_maxcats();
	get_players(players,pnum,"ae","TERRORIST");
	for (i=0; i<pnum && newcats<maxcats; i++)
	{
		if (hasdbg) 
			client_print(0,print_chat,"* Hide'n'Seek[endround]: Was still alive, moving to CTs")
		
		fm_set_user_team(players[i], FM_TEAM_CT);
		newcats++;
	}
	
	if (newcats < maxcats)
	{
		for (i=31; i>=0 && killed[i]==0; i--)
		{
			
		}
		for (; i>=0 && newcats<maxcats; i--)
		{
			if (hasdbg) 
				client_print(0,print_chat,"* Hide'n'Seek[endround]: Was killed, moving to CTs");
			
			fm_set_user_team(killed[i], FM_TEAM_CT);
			newcats++;
		}
	}
	
	for(i=0; i < ctnum; i++)
	{
		if (hasdbg) 
			client_print(0,print_chat,"* HnS: Was a CT, moving to Ts");
	
		fm_set_user_team(cts[i], FM_TEAM_T);
	}
	return PLUGIN_CONTINUE;
}

public printad(id, Float:duration)
{
	set_hudmessage(255, 127, 0, -1.0, 0.1, 2, 1.0, duration, 0.0, 1.0, 8);
	show_hudmessage(id, ":: [ Cache Mod V%s ] ::", HAS_VERSION);
}

stock f2b(id, type)
{
	message_begin(MSG_ONE_UNRELIABLE, gmsgScreenFade, _, id);
	write_short(5000);
	write_short(5000);
	write_short(type==1?5:0);
	write_byte(0);
	write_byte(20);
	write_byte(40);
	write_byte(255);
	message_end();
}

public emitsound(entity, const sample[])
{
	if(!get_pcvar_num(amx_hs_flash))
		return PLUGIN_CONTINUE;
	
	if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
		return PLUGIN_CONTINUE;
	
	flashbang_explode(entity);
	return PLUGIN_CONTINUE;
}

public flashbang_explode(greindex)
{
	if(!fm_is_valid_ent(greindex)) 
		return;
	
	new Float:origin[3];
	//entity_get_vector(greindex,EV_VEC_origin,origin);
	pev(greindex,pev_origin,origin);
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(27);
	write_coord(floatround(origin[0])); 
	write_coord(floatround(origin[1]));
	write_coord(floatround(origin[2])); 
	write_byte(get_pcvar_num(radius_cvar)); 
	write_byte(205);	
	write_byte(255); 
	write_byte(205); 
	write_byte(150); 
	write_byte(200); 
	message_end();
}

public FlashedEvent(id)
{
	if(get_pcvar_num(amx_hs_flash))
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public event_flashlight(id) 
{
	if(!get_pcvar_num(flashlight_custom)) 
		return;
	
	//new CsTeams:team = cs_get_user_team(id)
	
	new team = get_user_team(id)
	
	if(team != 2 && get_pcvar_num(flashlight_only_ct))
	{
		flashlight[id] = 0;
	}
	else
	{
		if(flashlight[id]) 
		{
			flashlight[id] = 0;
			color[id] = random_num(0, sizeof( g_color ) - 1);
		}
		else 
		{
			flashlight[id] = 1;
		}
	}
	
	message_begin(MSG_ONE,gmsgFlashlight,_,id);
	write_byte(flashlight[id]);
	write_byte(100);
	message_end();
	//entity_set_int(id,EV_INT_effects,entity_get_int(id,EV_INT_effects) & ~EF_DIMLIGHT);
	set_pev(id,pev_effects,pev(id,pev_effects) & ~EF_DIMLIGHT);
}

public fwdPlayerPreThink(id) 
{
	if(!get_pcvar_num(flashlight_custom)) 
		return;
	
	new a = color[id];
	if(flashlight[id]) 
	{
		new origin[3];
		get_user_origin(id,origin,3);
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(TE_DLIGHT);
		write_coord(origin[0]); 
		write_coord(origin[1]); 
		write_coord(origin[2]); 
		write_byte(get_pcvar_num(flashlight_radius)); 
		write_byte(g_color[a][0]); 
		write_byte(g_color[a][1]); 
		write_byte(g_color[a][2]); 
		write_byte(1);
		write_byte(60); 
		message_end();
	}
}

// Stocks
stock fm_give_item(index, const item[]) {
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0;

	new ent = fm_create_entity(item);
	if (!pev_valid(ent))
		return 0;

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

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

	engfunc(EngFunc_RemoveEntity, ent);

	return -1;
}

stock fm_set_user_gravity(index, Float:gravity = 1.0) {
	set_pev(index, pev_gravity, gravity);

	return 1;
}

stock fm_set_user_godmode(index, godmode = 0) {
	set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);

	return 1;
}

stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
	engfunc(EngFunc_SetClientMaxspeed, index, speed);
	set_pev(index, pev_maxspeed, speed);

	return 1;
}

stock fm_set_user_nvg(index, nvgoggles = 1)
{
    new current = get_pdata_int(index, OFFSET_NVGOGGLES);
    
    if( !(current & HAS_NVGOGGLES) && nvgoggles )
    {
        current |= HAS_NVGOGGLES;
    }
    else if( (current & HAS_NVGOGGLES) && !nvgoggles )
    {
        current &= ~HAS_NVGOGGLES;
    }
    else
    {
        return 0;
    }
    
    set_pdata_int(index, OFFSET_NVGOGGLES, current);
    
    return 1;
}

fm_set_lights(const lights[])
    engfunc(EngFunc_LightStyle, 0, lights);

stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") {
	if (classname[0])
		set_kvd(0, KV_ClassName, classname);
	else {
		new class[32];
		pev(entity, pev_classname, class, sizeof class - 1);
		set_kvd(0, KV_ClassName, class);
	}

	set_kvd(0, KV_KeyName, key);
	set_kvd(0, KV_Value, value);
	set_kvd(0, KV_fHandled, 0);

	return dllfunc(DLLFunc_KeyValue, entity, 0);
}

stock fm_set_user_team(client, team) {
	set_pdata_int(client, OFFSET_TEAM, team);

	static const TeamInfo[FM_TEAM_MAX][] =
	{
		"UNASSIGNED",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	};

	message_begin(MSG_ALL, gmsgTeamInfo);
	write_byte(client);
	write_string(TeamInfo[team]);
	message_end();
}


Aici aveti cele doua poze cu meniurile care apar :
imagini | Afiseaza codul
Image
Image
Post Reply

Return to “Probleme la servere dedicate de Counter-Strike”

  • Information