View Single Post
stupok
Veteran Member
Join Date: Feb 2006
Old 12-31-2007 , 01:37   Re: EntMod Manager v2.0 - 7/24/07
Reply With Quote #10

Here ya go:

Code:
#include <amxmodx>
#include <amxmisc>

new const gc_admin_file[]		=	"addons/EntMod/DF_admins.txt"
new const gc_entlog_dir[]		=	"addons/EntMod/log/"
new const gc_entlog_fileformat[]	=	"addons/EntMod/log/%s.txt" 
new const gc_entlog_cmds_file[]		=	"addons/EntMod/log/commands.cfg"

new g_entlog_file[64]

new bool:gb_client_has_ent[33]

new cvar_entlog
new cvar_showactivity

public plugin_init() 
{
	register_plugin("EntMod Manager", "2.0", "Mini_soldier/stupok69")
	
	register_concmd("ent_adduser",		"giveent",	ADMIN_RCON, "<name> <pass>")
	register_concmd("ent_removeuser",	"removeent",	ADMIN_RCON, "<name>")
	register_concmd("es_delete",		"delete_save",	ADMIN_RCON, "<filename> as shown in es_list")
	
	cvar_showactivity	=	register_cvar("entlog_showactivity", "1")
	cvar_entlog		=	register_cvar("entlog", "1")
	
	initiate_log()
}

public initiate_log()
{
	if(!dir_exists(gc_entlog_dir)) mkdir(gc_entlog_dir)

	if(!file_exists(gc_entlog_cmds_file)) write_file(gc_entlog_cmds_file, ";Add EntMod commands you want to log here")
	
	new fh = fopen(gc_entlog_cmds_file, "rt")
	
	if(fh)
	{
		new buffer[32]
		
		while(!feof(fh))
		{
			fgets(fh, buffer, 31)
			
			if(buffer[0] != ';' && buffer[0])
			{
				register_clcmd(buffer, "log_ent_command")
			}
		}
	}
	
	fclose(fh)
	
	new CurrentDate[16]
	
	get_time("%m%d%y", CurrentDate, 15)
	format(g_entlog_file, 63, gc_entlog_fileformat, CurrentDate)
	
	new CurrentTime[64]
	
	get_time("%m/%d/%Y - %H:%M:%S * * *   Server Started   * * *", CurrentTime, 63)
	write_file(g_entlog_file, CurrentTime, -1)
}

public delete_save(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new entsavename[32], currentmap[32], entsavefile[96]
	
	read_argv(1, entsavename, 31)
	
	get_mapname(currentmap, 31)
	
	format(entsavefile, 95, "addons/EntMod/entsave/%s_%s.txt", currentmap, entsavename)
	
	if(!file_exists(entsavefile))
	{
		console_print(id, "%s does not exist!", entsavename)
	}
	else
	{
		delete_file(entsavefile)
		console_print(id, "%s successfully deleted.", entsavename)
	}
	
	return PLUGIN_HANDLED
}

public client_putinserver(id)
{
	gb_client_has_ent[id] = false
	
	set_task(10.0, "login_entmod", id)
}

public login_entmod(id)
{
	new fh = fopen(gc_admin_file, "rt")
	
	if(fh)
	{
		new authid[32], buffer[64], buffer2[64]
		
		get_user_authid(id, authid, 31)
		
		while(!feof(fh))
		{
			fgets(fh, buffer, 63)
			
			strtok(buffer, buffer, 63, buffer2, 63, ';')
			
			if(equal(buffer, authid))
			{
				strtok(buffer2, buffer, 63, buffer2, 63, ';')
				
				client_cmd(id, "setinfo _entpass %s", buffer)
				
				gb_client_has_ent[id] = true
				
				new hostname[64]
				
				get_user_name(0, hostname, 63)
				client_print(id, print_chat, "[Ent Give] Welcome to %s, you have been logged in to EntMod with pass (%s).", hostname, buffer)
			}
		}
	}
	
	fclose(fh)
}

public giveent(id, level, cid)
{
	if(!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new arg1[32]
	new arg2[32]
	
	read_argv(1, arg1, 31)
	read_argv(2, arg2, 31)
	
	new player = cmd_target(id, arg1, 10)
	
	if(player)
	{
		if(!gb_client_has_ent[player])
		{
			new name[32], authid[32]
			
			get_user_name(player, name, 31)
			get_user_authid(player, authid, 31)
			
			if(!arg2[0])
			{
				console_print(id, "[Ent Give] You must enter a password!")
				return PLUGIN_HANDLED
			}
			
			new buffer[128]
			
			format(buffer, 127, "%s;%s;1	; %s", authid, arg2, name)
			write_file(gc_admin_file, buffer, -1)
			
			client_cmd(player, "setinfo _entpass %s", arg2)
			
			gb_client_has_ent[player] = true
			
			set_hudmessage(0, 0, 255, -1.0, -1.0, 0, 6.0, 12.0)
			show_hudmessage(0, "[Ent Give] Player: %s now has EntMod access", name)
		
			client_print(player, print_chat, "[Ent Give] Your password: %s", arg2)
			client_print(player, print_chat, "[Ent Give] You have been logged in to EntMod, so there is no need to type setinfo _entpass ^"%s^".", arg2)
		}
		else
		{
			client_print(id, print_console, "This client already has EntMod access.")
		}
	}
	else
	{
		client_print(id, print_console, "Client not found.")
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_HANDLED
}

public removeent(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg1[32]
	read_argv(1, arg1, 31)
	
	new player = cmd_target(id, arg1, 10)
	
	if(player)
	{
		if(gb_client_has_ent[player])
		{
			new name[32], authid[32]
			
			get_user_name(player, name, 31)
			get_user_authid(player, authid, 31)
			
			new fh = fopen(gc_admin_file, "rt")
			
			if(fh)
			{
				new buffer[32]
				new counter
				
				while(!feof(fh))
				{
					fgets(fh, buffer, 31)
					
					if(contain(buffer, authid) != -1)
					{
						gb_client_has_ent[player] = false
						
						write_file(gc_admin_file, "", counter)
						
						client_print(0, print_chat, "[Ent Remover] Removed EntMod access from %s (%s).", name, authid)
						client_print(id, print_console, "[Ent Remover] Removed EntMod access from %s (%s).", name, authid)
					}
					counter++
				}
			}
			
			fclose(fh)
		}
		else
		{
			client_print(id, print_console, "This client does not have EntMod access.")
			return PLUGIN_HANDLED
		}
	}
	else
	{
		client_print(id, print_console, "Client not found.")
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_HANDLED
}

public log_ent_command(id)
{
	if(get_pcvar_num(cvar_entlog) && gb_client_has_ent[id])
	{
		new args[96]
		new cmd[32]
		new text[256]
		new name[32]
		new authid[32]
		
		read_args(args, 63)  
		read_argv(0, cmd, 31)
		get_user_name(id, name, 31)
		get_user_authid(id, authid, 31) 
		
		format(text, 127, "%32s	%32s	%32s	%s", authid, name, cmd, args) 
		write_file(g_entlog_file, text)
		
		if(get_pcvar_num(cvar_showactivity))
		{
			set_hudmessage(100, 100, 100, 0.0, 0.7, 0, 0.1, 3.0, 0.1, 0.1, -1)
			show_hudmessage(0, "[Ent Log] %s: %s %s", name, cmd, args)
			client_print(0, print_console, "[Ent Log] %s did cmd: %s",name, cmd, args)		
		}
	}
}
__________________
stupok is offline