All pastes #921701 Raw Edit

say

public text v1 · immutable
#921701 ·published 2008-02-28 07:28 UTC
rendered paste body
/*
*   _______     _      _  __          __
*  | _____/    | |    | | \ \   __   / /
*  | |         | |    | |  | | /  \ | |
*  | |         | |____| |  | |/ __ \| |
*  | |   ___   | ______ |  |   /  \   |
*  | |  |_  |  | |    | |  |  /    \  |
*  | |    | |  | |    | |  | |      | |
*  | |____| |  | |    | |  | |      | |
*  |_______/   |_|    |_|  \_/      \_/
*
*
*
*  Last Edited: 01-05-08
*
*  ============
*   Changelog:
*  ============
*
*  v1.0
*    -Initial Release
*
*/

#define VERSION	"1.0"

#include <amxmodx>
#include <amxmisc>

new configfile[200]
new logfile[200]

public plugin_init()
{
	register_plugin("GHW Say Commands",VERSION,"GHW_Chronic")
	register_cvar("say_commands_toggle","1")
	register_concmd("amx_say_commands_toggle","cmd_toggle",ADMIN_LEVEL_C,"<1/on 0/off> Toggle the custom Say Commands off/on")
	register_clcmd("say","hook_say")
	register_clcmd("say_team","hook_say")
	register_clcmd("client_commands","list_commands")
	new configsdir[200]
	get_configsdir(configsdir,199)
	format(configfile,199,"%s/say_commands.ini",configsdir)
	format(logfile,199,"%s/say_commands_log.log",configsdir)
}

public client_putinserver(id)
{
	set_task(62.8,"advertise",id)
}

public client_disconnect(id)
{
	remove_task(id)
}

public advertise(id)
{
	if(get_cvar_num("say_commands_toggle"))
	{
		client_print(id,print_chat,"[AMX] Type /rules to view server rules. Type /cmds to view server commands.")
	}
	set_task(260.6,"advertise",id)
	return PLUGIN_HANDLED
}

public cmd_toggle(id,level,cid)
{
	if(!cmd_access(id,level,cid,2))
	{
		return PLUGIN_HANDLED
	}
	new arg1[32]
	read_argv(1,arg1,31)
	if(get_cvar_num("say_commands_toggle"))
	{
		if(equali(arg1,"on") || equali(arg1,"1"))
		{
			console_print(id,"Custom Say Commands Plugin is already toggled on.")
		}
		else
		{
			console_print(id,"Custom Say Commands Plugin has been toggled off.")
			set_cvar_num("say_commands_toggle",0)
		}
	}
	else if(!get_cvar_num("say_commands_toggle"))
	{
		if(equali(arg1,"on") || equali(arg1,"1"))
		{
			console_print(id,"Custom Say Commands Plugin has been toggled on.")
			set_cvar_num("say_commands_toggle",1)
		}
		else
		{
			console_print(id,"Custom Say Commands Plugin is already toggled off.")
		}
	}
	return PLUGIN_HANDLED
}

public hook_say(id)
{
	if(!get_cvar_num("say_commands_toggle") || !file_exists(configfile))
	{
		return PLUGIN_CONTINUE
	}
	for(new i=0;i<=file_size(configfile,1) - 1;i++)
	{
		new read[32]
		new trash
		read_file(configfile,i,read,31,trash)
		if(containi(read,"]")==0)
		{
			new text[200]
			read_args(text,199)
			remove_quotes(text)
			replace(read,31,"]","")
			new read2[32]
			read_file(configfile,i+1,read2,31,trash)
			new bool:continuea=false
			if(equali(read2,"exact") && containi(text,read)==0)
			{
				continuea=true
			}
			if(equali(read2,"contain") && containi(text,read)!=-1)
			{
				continuea=true
			}
			if(continuea)
			{
				new read3[32]
				read_file(configfile,i+2,read3,31,trash)
				new show = PLUGIN_CONTINUE
				if(equali(read3,"don't show"))
				{
					show = PLUGIN_HANDLED
				}

				new read4[32]
				read_file(configfile,i+3,read4,31,trash)
				if(equali(read4,"MOTD"))
				{
					new read5[200]
					read_file(configfile,i+4,read5,199,trash)

					new name[32]
					get_user_name(id,name,31)
					new hostname[32]
					get_cvar_string("hostname",hostname,31)
					new ip[32]
					get_user_ip(0,ip,31,0)
					new ping1, loss1, ping[8], loss[8]
					get_user_ping(id,ping1,loss1)
					format(ping,7,"%d",ping1)
					format(loss,7,"%d",loss1)
					new date[32]
					format_time(date,31,"%m-%d-%Y",-1)
					new time[32]
					format_time(time,31,"%H:%M",-1)
					new map[32]
					get_mapname(map,31)
					new frags1 = get_user_frags(id)
					new deaths1 = get_user_deaths(id)
					new frags[8], deaths[8]
					format(frags,7,"%d",frags1)
					format(deaths,7,"%d",deaths1)
					new authid[32]
					get_user_authid(id,authid,31)
					new team[32]
					get_user_team(id,team,31)
					while(contain(read5,"%name")!=-1)
					{
						replace(read5,199,"%name",name)
					}
					while(contain(read5,"%hostname")!=-1)
					{
						replace(read5,199,"%hostname",hostname)
					}
					while(contain(read5,"%ip")!=-1)
					{
						replace(read5,199,"%ip",ip)
					}
					while(contain(read5,"%ping")!=-1)
					{
						replace(read5,199,"%ping",ping)
					}
					while(contain(read5,"%loss")!=-1)
					{
						replace(read5,199,"%loss",loss)
					}
					while(contain(read5,"%date")!=-1)
					{
						replace(read5,199,"%date",date)
					}
					while(contain(read5,"%time")!=-1)
					{
						replace(read5,199,"%time",time)
					}
					while(contain(read5,"%map")!=-1)
					{
						replace(read5,199,"%map",map)
					}
					while(contain(read5,"%frags")!=-1)
					{
						replace(read5,199,"%frags",frags)
					}
					while(contain(read5,"%deaths")!=-1)
					{
						replace(read5,199,"%deaths",deaths)
					}
					while(contain(read5,"%authid")!=-1)
					{
						replace(read5,199,"%authid",authid)
					}
					while(contain(read5,"%team")!=-1)
					{
						replace(read5,199,"%team",team)
					}
					while(contain(text,read)!=-1)
					{
						replace(text,199,read,"")
					}
					while(contain(read5,"%text")!=-1)
					{
						replace(read5,199,"%text",text)
					}

					if(containi(read5,"HTTP://")==0)
					{
						new motdtext[500]
						format(motdtext,499,"<iframe src=^"%s^" border=1 width=100%% height=100%%>",read5)
						show_motd(id,motdtext,"Say Command MOTD")
					}
					else
					{
						show_motd(id,read5,"Say Command MOTD")
					} 
					new read6[32]
					read_file(configfile,i+5,read6,31,trash)
					if(equali(read6,"log"))
					{
						new authida[32]
						get_user_authid(id,authida,31)
						new namea[32]
						get_user_name(id,namea,31)
						new tolog[300]
						format(tolog,299,"%s (%s) : %s",namea,authida,text)
						write_file(logfile,"",-1)
						write_file(logfile,tolog,-1)
					}
					return show;
				}
				if(equali(read4,"text") || equali(read4,"center"))
				{
					new printwhere = print_chat
					if(equali(read4,"center"))
					{
						printwhere = print_center
					}
					new read5[32]
					read_file(configfile,i+4,read5,31,trash)
					new read6[200]
					read_file(configfile,i+5,read6,199,trash)




					new name[32]
					get_user_name(id,name,31)
					new hostname[32]
					get_cvar_string("hostname",hostname,31)
					new ip[32]
					get_user_ip(0,ip,31,0)
					new ping1, loss1, ping[8], loss[8]
					get_user_ping(id,ping1,loss1)
					format(ping,7,"%d",ping1)
					format(loss,7,"%d",loss1)
					new date[32]
					format_time(date,31,"%m-%d-%Y",-1)
					new time[32]
					format_time(time,31,"%H:%M",-1)
					new map[32]
					get_mapname(map,31)
					new frags1 = get_user_frags(id)
					new deaths1 = get_user_deaths(id)
					new frags[8], deaths[8]
					format(frags,7,"%d",frags1)
					format(deaths,7,"%d",deaths1)
					new authid[32]
					get_user_authid(id,authid,31)
					new team[32]
					get_user_team(id,team,31)
					while(contain(read6,"%name")!=-1)
					{
						replace(read6,199,"%name",name)
					}
					while(contain(read6,"%hostname")!=-1)
					{
						replace(read6,199,"%hostname",hostname)
					}
					while(contain(read6,"%ip")!=-1)
					{
						replace(read6,199,"%ip",ip)
					}
					while(contain(read6,"%ping")!=-1)
					{
						replace(read6,199,"%ping",ping)
					}
					while(contain(read6,"%loss")!=-1)
					{
						replace(read6,199,"%loss",loss)
					}
					while(contain(read6,"%date")!=-1)
					{
						replace(read6,199,"%date",date)
					}
					while(contain(read6,"%time")!=-1)
					{
						replace(read6,199,"%time",time)
					}
					while(contain(read6,"%map")!=-1)
					{
						replace(read6,199,"%map",map)
					}
					while(contain(read6,"%frags")!=-1)
					{
						replace(read6,199,"%frags",frags)
					}
					while(contain(read6,"%deaths")!=-1)
					{
						replace(read6,199,"%deaths",deaths)
					}
					while(contain(read6,"%authid")!=-1)
					{
						replace(read6,199,"%authid",authid)
					}
					while(contain(read6,"%team")!=-1)
					{
						replace(read6,199,"%team",team)
					}

					while(contain(text,read)!=-1)
					{
						replace(text,199,read,"")
					}
					while(contain(read6,"%text")!=-1)
					{
						replace(read6,199,"%text",text)
					}


					if(equali(read5,"All"))
					{
						client_print(0,printwhere,"%s",read6)
					}
					else if(equali(read5,"Player"))
					{
						client_print(id,printwhere,"%s",read6)
					}
					else
					{
						for(new i2=1;i2<=32;i2++)
						{
							if(is_user_connected(i2))
							{
								new team[32]
								get_user_team(i2,team,31)
								if(containi(team,read5)!=-1)
								{
									client_print(i2,printwhere,"%s",read6)
								}
							}
						}
					}
					new read7[32]
					read_file(configfile,i+6,read7,31,trash)
					if(equali(read7,"log"))
					{
						new authida[32]
						get_user_authid(id,authida,31)
						new namea[32]
						get_user_name(id,namea,31)
						new tolog[300]
						format(tolog,299,"%s (%s) : %s",namea,authida,text)
						write_file(logfile,"",-1)
						write_file(logfile,tolog,-1)
					}
					return show;
				}
				if(equali(read4,"hud"))
				{
					new read5[200]
					read_file(configfile,i+4,read5,199,trash)
					new red, green, blue
					if(equali(read5,"White"))
					{
						red=255
						green=255
						blue=255
					}
					else if(equali(read5,"Indigo"))
					{
						red=0
						green=255
						blue=255
					}
					else if(equali(read5,"Pink"))
					{
						red=255
						green=0
						blue=128
					}
					else if(equali(read5,"Orange"))
					{
						red=255
						green=128
						blue=64
					}
					else if(equali(read5,"Yellow"))
					{
						red=255
						green=255
					}
					else if(equali(read5,"green"))
					{
						green=255
					}
					else if(equali(read5,"blue"))
					{
						blue=255
					}
					else
					{
						red=255
					}
					set_hudmessage(red,green,blue,-1.0,0.32,0,6.0,5.0)
					new read6[32]
					read_file(configfile,i+5,read6,31,trash)
					new read7[200]
					read_file(configfile,i+6,read7,199,trash)



					new name[32]
					get_user_name(id,name,31)
					new hostname[32]
					get_cvar_string("hostname",hostname,31)
					new ip[32]
					get_user_ip(0,ip,31,0)
					new ping1, loss1, ping[8], loss[8]
					get_user_ping(id,ping1,loss1)
					format(ping,7,"%d",ping1)
					format(loss,7,"%d",loss1)
					new date[32]
					format_time(date,31,"%m-%d-%Y",-1)
					new time[32]
					format_time(time,31,"%H:%M",-1)
					new map[32]
					get_mapname(map,31)
					new frags1 = get_user_frags(id)
					new deaths1 = get_user_deaths(id)
					new frags[8], deaths[8]
					format(frags,7,"%d",frags1)
					format(deaths,7,"%d",deaths1)
					new authid[32]
					get_user_authid(id,authid,31)
					new team[32]
					get_user_team(id,team,31)
					while(contain(read7,"%name")!=-1)
					{
						replace(read7,199,"%name",name)
					}
					while(contain(read7,"%hostname")!=-1)
					{
						replace(read7,199,"%hostname",hostname)
					}
					while(contain(read7,"%ip")!=-1)
					{
						replace(read7,199,"%ip",ip)
					}
					while(contain(read7,"%ping")!=-1)
					{
						replace(read7,199,"%ping",ping)
					}
					while(contain(read7,"%loss")!=-1)
					{
						replace(read7,199,"%loss",loss)
					}
					while(contain(read7,"%date")!=-1)
					{
						replace(read7,199,"%date",date)
					}
					while(contain(read7,"%time")!=-1)
					{
						replace(read7,199,"%time",time)
					}
					while(contain(read7,"%map")!=-1)
					{
						replace(read7,199,"%map",map)
					}
					while(contain(read7,"%frags")!=-1)
					{
						replace(read7,199,"%frags",frags)
					}
					while(contain(read7,"%deaths")!=-1)
					{
						replace(read7,199,"%deaths",deaths)
					}
					while(contain(read7,"%authid")!=-1)
					{
						replace(read7,199,"%authid",authid)
					}
					while(contain(read7,"%team")!=-1)
					{
						replace(read7,199,"%team",team)
					}
					while(contain(text,read)!=-1)
					{
						replace(text,199,read,"")
					}
					while(contain(read7,"%text")!=-1)
					{
						replace(read7,199,"%text",text)
					}



					if(equali(read6,"All"))
					{
						show_hudmessage(0,"%s",read7)
					}
					else if(equali(read6,"Player"))
					{
						show_hudmessage(id,"%s",read7)
					}
					else
					{
						for(new i2=1;i2<=32;i2++)
						{
							if(is_user_connected(i2))
							{
								new team[32]
								get_user_team(i2,team,31)
								if(containi(team,read6)!=-1)
								{
									show_hudmessage(i2,"%s",text)
								}
							}
						}
					}
					new read8[32]
					read_file(configfile,i+7,read8,31,trash)
					if(equali(read8,"log"))
					{
						new authida[32]
						get_user_authid(id,authida,31)
						new namea[32]
						get_user_name(id,namea,31)
						new tolog[300]
						format(tolog,299,"%s (%s) : %s",namea,authida,tolog)
						write_file(logfile,"",-1)
						write_file(logfile,tolog,-1)
					}
					return show;
				}
			}
		}
	}
	return PLUGIN_CONTINUE
}

public list_commands(id)
{
	if(!get_cvar_num("say_commands_toggle") || !file_exists(configfile))
	{
		console_print(id,"Say Commands you can do:")
		console_print(id,"-----|-----")
		console_print(id,"None.")
		console_print(id,"-----|-----")
		return PLUGIN_HANDLED
	}
	console_print(id,"Say Commands you can do:")
	console_print(id,"-----|-----")
	for(new i=0;i<=file_size(configfile,1) - 1;i++)
	{
		new read[32]
		new trash
		read_file(configfile,i,read,31,trash)
		if(containi(read,"]")==0)
		{
			replace(read,31,"]","")
			new read2[32]
			read_file(configfile,i+1,read2,31,trash)
			if(equali(read2,"exact"))
			{
				console_print(id,"%s",read)
			}
		}
	}
	console_print(id,"-----|-----")
	return PLUGIN_HANDLED
}