Force Execute?

I know i’ve been asking a lot of advice and instructions but I am all over the place. Once I get annoyed or frustrated with working on one script, I move to the next and come back later.
So right now, I am curious as to how can I force a client to execute a command. For instance, if a client is messing around and being a nuisance on the server, I would like to execute my UI overlay (/rules) for it to show on their screen. And they can close it normally by pressing E.

This was a script long time ago with CS 1.6 AMXX command, and I’d like to see if its viable on .lua gta5.

AMXX Source

// AMX client exec v0.3
// By v3x
// If you wish to use any of my code below, please credit me for it! Thanks.

#include <amxmodx>
#include <amxmisc>

// amx_show_activity <2|1|0>
// Look in amxx.cfg for more details

public plugin_init() {

	register_plugin("AMX Client Exec","0.03","v3x")
	register_clcmd("amx_exec","doExec",ADMIN_RCON,"<nick,@TEAM,*(all),@SERVER>")
	register_srvcmd("amx_exec","doExec")
}

new bool:isAll
new bool:isTeam
new bool:isServ
// For messages

public doExec(id,level,cid) 
{

	if(!cmd_access(id,level,cid,3)) 
	{
		return PLUGIN_HANDLED
	}

	new arg[32]
	new command[64]
	new players[32]
	new player,num,i

	read_argv(1,arg,31)
	read_argv(2,command,63)

	remove_quotes(command)
	
	while(replace(command,63,"\'","^"")) { } // Credited to OLO

	new activity = get_cvar_num("amx_show_activity")

	new admin[32]
	get_user_name(id,admin,31)

	if(arg[0]=='@') {

		if(equali(arg[1],"A") 
		|| equali(arg[1],"ALL")) 
		{
			isAll = true
			isTeam = false
			isServ = false
			get_players(players,num,"c")
		}
		
		if(equali(arg[1],"TERRORIST") 
		|| equali(arg[1],"T") 
		|| equali(arg[1],"TERROR") 
		|| equali(arg[1],"TE") 
		|| equali(arg[1],"TER")) 
		{
			isAll = false
			isTeam = true
			isServ = false
			get_players(players,num,"ce","TERRORIST")
		}
		
		if(equali(arg[1],"CT")
		|| equali(arg[1],"C") 
		|| equali(arg[1],"COUNTER")) 
		{
			isAll = false
			isTeam = true
			isServ = false
			get_players(players,num,"ce","CT")
		}
		
		if(equali(arg[1],"S") 
		|| equali(arg[1],"SERV") 
		|| equali(arg[1],"SERVER")) 
		{
			isAll = false
			isTeam = false
			isServ = true
			server_cmd(command)
		}
		
		if(!(num) && !(isServ)) 
		{
			console_print(id,"[AMXX] No players on such team!")
			return PLUGIN_HANDLED
		}

		if(!isServ) 
		{
			
			for(i=0;i<num;i++) 
			{

				player = players[i]

				if(!is_user_connected(player)) continue
				
				else if(player) 
				{

					if(!(get_user_flags(player) & ADMIN_IMMUNITY)) 
					{
						client_cmd(player,command)
					}
				}
			}
		}

		if(isAll==true) 
		{

			switch(activity) 
			{

				case 1: 
				{
					client_print(0,print_chat,"ADMIN: Command line ^"%s^" has been used on everyone",command)
					server_print("ADMIN: Command line ^"%s^" has been used on everyone",command)
				}
				case 2: 
				{
					client_print(0,print_chat,"ADMIN %s: Command line ^"%s^" has been used on everyone",admin,command)
					server_print("ADMIN %s: Command line ^"%s^" has been used on everyone",admin,command)
				}
			}
		}

		if(isTeam==true) 
		{

			switch(activity) 
			{

				case 1: 
				{
					client_print(0,print_chat,"ADMIN: Command line ^"%s^" has been used on the %ss",command,arg[1])
					server_print("ADMIN: Command line ^"%s^" has been used on the %ss",command,arg[1])
				}
				case 2: 
				{
					client_print(0,print_chat,"ADMIN %s: Command line ^"%s^" has been used on the %ss",admin,command,arg[1])
					server_print("ADMIN %s: Command line ^"%s^" has been used on the %ss",admin,command,arg[1])
				}
			}
		}

		if(isServ==true) 
		{

			switch(activity) 
			{

				case 1: 
				{
					client_print(0,print_chat,"ADMIN: Command line ^"%s^" has been exectuted into the server",command)
					server_print("ADMIN: Command line ^"%s^" has been exectuted into the server",command)
				}
				case 2: 
				{
					client_print(0,print_chat,"ADMIN %s: Command line ^"%s^" has been exectuted into the server",admin,command)
					server_print("ADMIN %s: Command line ^"%s^" has been exectuted into the server",admin,command)
				}
			}
		}
	}

	else if(arg[0]=='*') 
	{

		get_players(players,num,"c")

		for(i=0;i<num;i++) 
		{

			player = players[i]

			if(!is_user_connected(player)) continue

			else if(player) 
			{

				if(!(get_user_flags(player) & ADMIN_IMMUNITY)) 
				{
					client_cmd(player,command)
				}
			}
		}
		

		
		switch(activity) 
		{

			case 1: 
			{
				client_print(0,print_chat,"ADMIN: Command line ^"%s^" has been used on everyone!",command)
				server_print("ADMIN: Command line ^"%s^" has been used on everyone!",command)
			}
			case 2: 
			{
				client_print(0,print_chat,"ADMIN %s: Command line ^"%s^" has been used on everyone!",admin,command)
				server_print("ADMIN %s: Command line ^"%s^" has been used on everyone!",admin,command)
			}
		}
	}

	else 
	{
		new target = cmd_target(id,arg,3)
		new name[33]

		if(!is_user_connected(target)) 
		{
			return PLUGIN_HANDLED
		}

		get_user_name(target,name,32)

		if(!(get_user_flags(target) & ADMIN_IMMUNITY)) 
		{
			client_cmd(target,command)
		}

		switch(activity) 
		{
			case 1: 
			{
				client_print(0,print_chat,"ADMIN: Command line ^"%s^" has been used on %s!",command,name)
				server_print("ADMIN: Command line ^"%s^" has been used on %s!",command,name)
			}
			case 2: 
			{
				client_print(0,print_chat,"ADMIN %s: Command line ^"%s^" has been used on %s!",admin,command,name)
				server_print("ADMIN %s: Command line ^"%s^" has been used on %s!",admin,command,name)
			}
		}
	}

	return PLUGIN_HANDLED
}

I’d like to be able to use
/exec <id> say /rules
OR
/exec <id> <triggerevent here>

Is this fiction or possible?

Instead of forcing the client to execute a command (I’m not sure if it is possible without playing with chat resource), just put whatever that command does into a function. Then, whenever they type the command, trigger the function, or, if if admin wants them to see it, it will trigger the function as well.

Edit: I think you might actually be able to do ExecuteCommand(command) on the client script to run the command.

1 Like

But then add an ID parameter.

1 Like