// Decompiled from sql_say_tracker_181.amxx by Lysis.
// This is RECONSTRUCTED source, not the author's original: without
// debug symbols the variable names are lost and control flow is
// rebuilt from bytecode. Treat it as a readable approximation.

new g_var1c88;
public client_authorized(_arg0)
{
	get_user_authid(_arg0, 704[_arg0], 31);
	get_user_ip(_arg0, 5060[_arg0], 15, 1);
	return 0;
}

public plugin_cfg()
{
	new var2 = 0;
	sub_124(var2, "");
	new var3 = 0;
	while (var3 < 2)
	{
		format(184[var3], "|BW|.Zor", "%s/%s", var2, 184[var3]);
		var3++;
	}
	server_cmd("exec %s/sql.cfg", var2);
	server_cmd("exec %s", 184/* ERROR unknown load Constant */ + 184);
	new var4 = 184 + 4;
	if (file_exists(var4 + var4))
	{
		new var5 = 0;
		new var6 = 0;
		var5++;
		new var7 = 184 + 4;
		while (read_file(var7 + var7, var5, var6, 31, _unused_temp_))
		{
			new var1;
			if (!equal(var6, "//", 2) && strlen(var6) > 0)
			{
				register_clcmd(var6, "track", -1, {0});
			}
		}
	}
	set_task(1065353216, "timedConnect", "amxx_configsdir", {0}, "amxx_configsdir", {0}, "amxx_configsdir");
	return 0;
}

public plugin_init()
{
	register_plugin("SQL Say Tracker", "0.1b", "|BW|.Zor");
	register_clcmd("say", "track", -1, {0});
	register_clcmd("say_team", "track", -1, {0});
	register_cvar("amx_sql_host", "127.0.0.1", "amxx_configsdir", "amxx_configsdir");
	register_cvar("amx_sql_user", "root", "amxx_configsdir", "amxx_configsdir");
	register_cvar("amx_sql_pass", "root", "amxx_configsdir", "amxx_configsdir");
	register_cvar("amx_sql_db", "blackwatch", "amxx_configsdir", "amxx_configsdir");
	register_cvar("amx_sql_say_table", "amxx_say_tracker", "amxx_configsdir", "amxx_configsdir");
	register_cvar("amx_sql_say_servernum", 7964, "amxx_configsdir", "amxx_configsdir");
	return 0;
}

public plugin_modules()
{
	require_module("DBI");
	return 0;
}

public timedConnect()
{
	sub_13bc();
	new var1 = 0;
	new var2 = 0;
	new var3 = 0;
	get_cvar_string("amx_sql_say_table", var3, 31);
	format(var1, 1023, "CREATE TABLE IF NOT EXISTS %s (server TINYINT NOT NULL,steamid VARCHAR(32) NOT NULL,ip VARCHAR(16) NOT NULL,timestamp VARCHAR(32) NOT NULL,chat_method TEXT NOT NULL,alive TINYINT NOT NULL,chat LONGTEXT NOT NULL)", var3);
	var2 = sub_13bc(var2, var1, 9840);
	return 0;
}

public track(_arg0)
{
	new var1 = 0;
	new var2 = 0;
	new var3 = 0;
	new var4 = 0;
	new var5 = 0;
	new var6 = 0;
	new var7 = 0;
	new var8 = 0;
	read_argv("amxx_configsdir", var1, 31);
	read_args(var2, 255);
	replace(var2, 255, var1, 8204);
	remove_quotes(var2);
	trim(var2);
	format_time(var4, 31, "%m/%d/%Y - %H:%M:%S", -1);
	get_cvar_string("amx_sql_say_table", var8, 31);
	get_cvar_string("amx_sql_say_servernum", var6, 7);
	var7 = str_to_num(var6);
	format(var3, 1023, "INSERT INTO %s (server,steamid,ip,timestamp,chat_method,alive,chat) VALUES ('%d','%s','%s','%s','%s','%d','%s')", var8, var7, 704[_arg0], 5060[_arg0], var4, var1, is_user_alive(_arg0), var2);
	var5 = sub_13bc(var5, var3, 8896);
	return 0;
}

sub_124(_arg0, _arg1)
{
	return get_localinfo("amxx_configsdir", _arg0, _arg1);
}

sub_13bc()
{
	new var1 = 0;
	new var2 = 0;
	new var3 = 0;
	new var4 = 0;
	new var5 = 0;
	get_cvar_string("amx_sql_host", var1, "");
	get_cvar_string("amx_sql_user", var2, 31);
	get_cvar_string("amx_sql_pass", var3, 31);
	get_cvar_string("amx_sql_db", var4, 31);
	g_var1c88 = dbi_connect(var1, var2, var3, var4, var5, 127);
	if (g_var1c88 == 0)
	{
		server_print("Error Connecting to DB - '%s'", var5);
		log_amx("Error Connecting to DB - '%s'", var5);
	}
	return 1;
}

sub_13bc()
{
	new var1 = 0;
	if (g_var1c88 != 1)
	{
		if (!sub_13bc())
		{
			return -1;
		}
	}
	dbi_free_result(_arg0);
	_arg0 = dbi_query(g_var1c88, _arg1);
	if (_arg0 == -1)
	{
		dbi_error(g_var1c88, var1, 127);
		server_print("Error in Function: %s - Error Msg: '%s'", _arg2, var1);
		log_amx("Error in Function: %s - Error Msg: '%s'", _arg2, var1);
	}
	return _arg0;
}

