#include <amxmodx>

#define ADMIN_ALL_SLOTS ADMIN_IMMUNITY|ADMIN_RESERVATION|ADMIN_KICK|ADMIN_BAN|ADMIN_SLAY|ADMIN_MAP|ADMIN_CVAR|ADMIN_CFG|ADMIN_CHAT|ADMIN_VOTE|ADMIN_PASSWORD|ADMIN_RCON|ADMIN_LEVEL_A|ADMIN_LEVEL_B|ADMIN_LEVEL_C|ADMIN_LEVEL_D|ADMIN_LEVEL_E|ADMIN_LEVEL_F|ADMIN_LEVEL_F|ADMIN_LEVEL_H|ADMIN_MENU|ADMIN_ADMIN|ADMIN_USER

new TRUNC_CMD_CHAR[] = "x"
new TRUNC_SAY_CHAR[] = ".x"
new TRUNC_ADD[] = "amx_"

public plugin_init()
{
	register_plugin("Trunc Commands","1.17","Twilight Suzuka")
	register_concmd("say","say_handle");
}

public plugin_cfg() handle_srvcommands()

public handle_srvcommands()
{
	new command[32], info[128], flags
	new srv_num = get_srvcmdsnum(ADMIN_ALL_SLOTS)

	for(new i = 0; i <= srv_num; i++) 
	{
		get_srvcmd(i, command, 31, flags, info, 127, ADMIN_ALL_SLOTS);

		replace(command, 31, TRUNC_ADD, TRUNC_CMD_CHAR);
		register_srvcmd(command,"srvcmd_handle")
	}
}

public srvcmd_handle(id)
{
	new command[32],args[300]

	read_argv(0,command,31)
	read_args(args,299)

	replace(command, 31, TRUNC_CMD_CHAR, TRUNC_ADD);

	server_print("cmd routed: %s %s",command,args)
	server_cmd("%s %s",command, args)
	server_exec()
		
	return PLUGIN_HANDLED;
}

public say_handle(id)
{
	new command[1024]
	read_args(command,1023)
	remove_quotes(command)

	if(equali(command,TRUNC_SAY_CHAR,strlen(TRUNC_SAY_CHAR) ) ) 
	{
		replace(command, 1023, TRUNC_SAY_CHAR, TRUNC_ADD);

		client_cmd(id,"%s",command)
		return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}

public client_command(id)
{
	new command[200]
	read_argv(0,command,199)
	if(equali(command,TRUNC_CMD_CHAR,strlen(TRUNC_CMD_CHAR) ) ) 
	{
		replace(command, 199, TRUNC_CMD_CHAR, TRUNC_ADD);
		new full[1024]
		read_args(full,1023);

		client_cmd(id,"%s %s",command,full)
		return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}