Recovered from the archived server. This was never posted on the forum, so there is no thread behind it and no author post to quote — the attribution below comes from the plugin's own register_plugin() call where it has one.
sql_say_tracker
by Unknown · 2005-02-19
recovered from the server
From the first post
Files
| sql_say_tracker.cfg | Config | 142 B | Download | |
| sql_say_tracker_181.amxx | Compiled Plugin | 7 KB | Download |
Decompiled source reconstructed
sql_say_tracker_181.amxx was published compiled only. This Pawn was recovered from the
bytecode with Lysis — 147 lines. Strings, cvars and the plugin registration
survive; local variable names do not. It is an approximation, not the author's file.
// Decompiled from sql_say_tracker_181.amxx by Lysis.n// This is RECONSTRUCTED source, not the author's original: withoutn// debug symbols the variable names are lost and control flow isn// rebuilt from bytecode. Treat it as a readable approximation.nnnew g_var1c88;npublic client_authorized(_arg0)n{n get_user_authid(_arg0, 704[_arg0], 31);n get_user_ip(_arg0, 5060[_arg0], 15, 1);n return 0;n}nnpublic plugin_cfg()n{n new var2 = 0;n sub_124(var2, "");n new var3 = 0;n while (var3 < 2)n {n format(184[var3], "|BW|.Zor", "%s/%s", var2, 184[var3]);n var3++;n }n server_cmd("exec %s/sql.cfg", var2);n server_cmd("exec %s", 184/* ERROR unknown load Constant */ + 184);n new var4 = 184 + 4;n if (file_exists(var4 + var4))n {n new var5 = 0;n new var6 = 0;n var5++;n new var7 = 184 + 4;n while (read_file(var7 + var7, var5, var6, 31, _unused_temp_))n {n new var1;n if (!equal(var6, "//", 2) && strlen(var6) > 0)n {n register_clcmd(var6, "track", -1, {0});n }n }n }n set_task(1065353216, "timedConnect", "amxx_configsdir", {0}, "amxx_configsdir", {0}, "amxx_configsdir");n return 0;n}nnpublic plugin_init()n{n register_plugin("SQL Say Tracker", "0.1b", "|BW|.Zor");n register_clcmd("say", "track", -1, {0});n register_clcmd("say_team", "track", -1, {0});n register_cvar("amx_sql_host", "127.0.0.1", "amxx_configsdir", "amxx_configsdir");n register_cvar("amx_sql_user", "root", "amxx_configsdir", "amxx_configsdir");n register_cvar("amx_sql_pass", "root", "amxx_configsdir", "amxx_configsdir");n register_cvar("amx_sql_db", "blackwatch", "amxx_configsdir", "amxx_configsdir");n register_cvar("amx_sql_say_table", "amxx_say_tracker", "amxx_configsdir", "amxx_configsdir");n register_cvar("amx_sql_say_servernum", 7964, "amxx_configsdir", "amxx_configsdir");n return 0;n}nnpublic plugin_modules()n{n require_module("DBI");n return 0;n}nnpublic timedConnect()n{n sub_13bc();n new var1 = 0;n new var2 = 0;n new var3 = 0;n get_cvar_string("amx_sql_say_table", var3, 31);n 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);n var2 = sub_13bc(var2, var1, 9840);n return 0;n}nnpublic track(_arg0)n{n new var1 = 0;n new var2 = 0;n new var3 = 0;n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n read_argv("amxx_configsdir", var1, 31);n read_args(var2, 255);n replace(var2, 255, var1, 8204);n remove_quotes(var2);n trim(var2);n format_time(var4, 31, "%m/%d/%Y - %H:%M:%S", -1);n get_cvar_string("amx_sql_say_table", var8, 31);n get_cvar_string("amx_sql_say_servernum", var6, 7);n var7 = str_to_num(var6);n 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);n var5 = sub_13bc(var5, var3, 8896);n return 0;n}nnsub_124(_arg0, _arg1)n{n return get_localinfo("amxx_configsdir", _arg0, _arg1);n}nnsub_13bc()n{n new var1 = 0;n new var2 = 0;n new var3 = 0;n new var4 = 0;n new var5 = 0;n get_cvar_string("amx_sql_host", var1, "");n get_cvar_string("amx_sql_user", var2, 31);n get_cvar_string("amx_sql_pass", var3, 31);n get_cvar_string("amx_sql_db", var4, 31);n g_var1c88 = dbi_connect(var1, var2, var3, var4, var5, 127);n if (g_var1c88 == 0)n {n server_print("Error Connecting to DB - '%s'", var5);n log_amx("Error Connecting to DB - '%s'", var5);n }n return 1;n}nnsub_13bc()n{n new var1 = 0;n if (g_var1c88 != 1)n {n if (!sub_13bc())n {n return -1;n }n }n dbi_free_result(_arg0);n _arg0 = dbi_query(g_var1c88, _arg1);n if (_arg0 == -1)n {n dbi_error(g_var1c88, var1, 127);n server_print("Error in Function: %s - Error Msg: '%s'", _arg2, var1);n log_amx("Error in Function: %s - Error Msg: '%s'", _arg2, var1);n }n return _arg0;n}nn

