Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Нужна помощь в переделке плагина Report_abuse

, Необходимо заменить VALIVE_ID_PENDING на ip
Статус пользователя tavot
сообщение 26.3.2009, 14:40
Сообщение #1


Стаж: 17 лет

Сообщений: 8
Благодарностей: 1
Полезность: 0

Собственно есть плагин report_abuse

..Этот плагин даёт возможность жаловать на игроков....Вызвать меню в чате пишим !report или в консоле say !report, но к сожалению надо имень веб сервер...

Но есть проблема, на нон стиме в таблицу записываются STIEAM_ID которые на крякнутом сервер выглядят VALIE_ID_PENDING.
Как сделать что бы туда вписывались ip кто жалуется и на кого жалуются?!

Вот сам код:
Раскрывающийся текст
Код
#include <amxmodx>
#include <amxmisc>
#include <sqlx>


// Uncomment if you are going to use HLTV to record demos when players get reported
//#define USE_HLTV

#if defined USE_HLTV
    #include <sockets>
    new bool:recording = false
    new socket = 0
    new hltv_error
    new recording_time
#endif

new AUTH[] = "Gizmo"
new PLUGIN_NAME[] = "Report Abusive Players"
new VERSION[] = "1.0"

new Handle:g_SqlX
new g_table[32]

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]

new g_coloredMenus

new reported_name[32]
new reported_authid[32]
new reporting_name[32]
new reporting_authid[32]
new lastreporttime[32]
new g_player

new motd_disabled
new show_reported
new MyMsgSync
new announcemsg
new min_time
new ar_debug
new not_report_admins
new hideAdmins

new g_Reasons[8][128]


public plugin_init()
{
    register_plugin(PLUGIN_NAME, VERSION, AUTH)
    register_cvar("reportabuse_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)

    register_cvar("ar_sql_host", "127.0.0.1")
    register_cvar("ar_sql_user", "root")
    register_cvar("ar_sql_pass", "")
    register_cvar("ar_sql_db", "amx")
    register_cvar("ar_abuse_table", "amx_abuse_reports")

    register_cvar("ar_url", "http://www.yourhost.com/abusereports.php")
    register_cvar("ar_servernick", "myserver")
    register_cvar("ar_deletereportsflag", "l")
    register_cvar("ar_showreportsflag", "d")
#if defined USE_HLTV
    register_cvar("ar_hltv_proxypassword", "")
    recording_time = register_cvar("ar_recordingtime", "120.0")
#endif
    motd_disabled = register_cvar("ar_motddisabled", "1")
    show_reported = register_cvar("ar_showreported", "0")
    announcemsg = register_cvar("ar_announcemsg", "1")
    min_time = register_cvar("ar_nextreporttime", "60")
    ar_debug = register_cvar("ar_debug", "0")
    not_report_admins = register_cvar("ar_reportadmins", "0")
    hideAdmins = register_cvar("ar_hide_admins", "0")

    register_concmd("amx_deletereports", "delete_reports", -1, "amx_deletereports")
    register_concmd("amx_showreports", "showreports", -1, "amx_showreports")

    register_clcmd("say !report", "cmdabuseMenu")
    register_clcmd("say_team !report", "cmdabuseMenu")
    register_menucmd(register_menuid("Abuse Menu"), 1023, "actionAbuseMenu")
    
    register_menucmd(register_menuid("Report Reason Menu"), 1023, "actionReasonMenu")

    register_dictionary("report_abuse.txt")
    register_dictionary("common.txt")
    
    g_coloredMenus = colored_menus()
    MyMsgSync = CreateHudSyncObj()

    new configsDir[64]
    get_configsdir(configsDir, 63)

    server_cmd("exec %s/report_abuse.cfg", configsDir)
}

public plugin_cfg()
{
    new host[64], user[64], pass[64], db[64]

    get_cvar_string("ar_sql_host", host, 63)
    get_cvar_string("ar_sql_user", user, 63)
    get_cvar_string("ar_sql_pass", pass, 63)
    get_cvar_string("ar_sql_db", db, 63)
    get_cvar_string("ar_abuse_table", g_table, 31)

    g_SqlX = SQL_MakeDbTuple(host, user, pass, db)

    set_task(0.1, "create_table")
}

public create_table()
{
    new query[1024]
    new data[1]

    format(query, 1023, "CREATE TABLE IF NOT EXISTS `%s` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `reportingsteamid` VARCHAR(32) NOT NULL DEFAULT '0', `reportedsteamid` VARCHAR(32) NOT NULL DEFAULT '0', `reportingname` VARCHAR(32) NOT NULL DEFAULT 'Unknown', `reportedname` VARCHAR(32) NOT NULL DEFAULT 'Unknown', `reason` VARCHAR(100) NOT NULL DEFAULT '0', `date` TIMESTAMP NOT NULL) ENGINE = MYISAM", g_table)

    SQL_ThreadQuery(g_SqlX, "create_table_", query, data, 1)
    return
}

public create_table_(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 1 )
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Created table %s", g_table)
        
        new query[512]
        new data[1]

        format(query, 511, "SELECT * FROM %s", g_table)
        
        SQL_ThreadQuery(g_SqlX, "alter_table", query, data, 1)
    }
}

public alter_table(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 2 )
    }
    else
    {
        new columns = SQL_NumColumns(query)
        new cols[32]
        SQL_FieldNumToName(query, 6, cols, 31)

        if(get_pcvar_num(ar_debug) == 1)
            log_amx("columns: %d, Fieldname %s", columns, cols)

        if(equal(cols, "date"))
        {
            new query[512]
            new data[1]

            format(query, 511, "ALTER TABLE `%s` ADD `servername` VARCHAR( 100 ) NOT NULL DEFAULT 'unknown' AFTER `reason`", g_table)
            
            SQL_ThreadQuery(g_SqlX, "alter_table_", query, data, 1)
        }
        else
        {
            return PLUGIN_HANDLED
        }
    }
    return PLUGIN_HANDLED
}

public alter_table_(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 3 )
    }
}
/**************************************************

   Announcemessage function

**************************************************/
public client_putinserver(id)
{
    if(get_pcvar_num(announcemsg) == 1 && !is_user_admin(id) && !is_user_bot(id) && is_user_connected(id))
    {
        set_task(120.0, "print_announcemsg",  id, "", 0, "b")
    }
    return PLUGIN_HANDLED
}

public print_announcemsg(id)
{
    if(!is_user_admin(id) && !is_user_bot(id) && is_user_connected(id) && !is_user_hltv(id))
    {
        new msg[64]
        format(msg, 63, "%L", id, "ANNOUNCEMSG")
        set_hudmessage(0, 255, 0, 0.05, 0.35, 0, 6.0, 10.0 , 0.5, 0.15, -1)
        ShowSyncHudMsg(id, MyMsgSync, "%s", msg)
    }
    return PLUGIN_HANDLED
}

public client_disconnect(id)
{
    if(task_exists(id))
        remove_task(id)
}
/***********************************************

   Menu

***********************************************/
public actionAbuseMenu(id, key)
{
    switch (key)
    {
        case 8: displayAbuseMenu(id, ++g_menuPosition[id])
        case 9: displayAbuseMenu(id, --g_menuPosition[id])
        default:
        {
            g_player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

            get_user_name(g_player, reported_name, 31)
            get_user_authid(g_player, reported_authid, 31)

            get_user_name(id, reporting_name, 31)
            get_user_authid(id, reporting_authid, 31)

            cmdReasonMenu(id)
        }
    }
    return PLUGIN_HANDLED
}

displayAbuseMenu(id, pos)
{
    if (pos < 0)
        return

    get_players(g_menuPlayers[id], g_menuPlayersNum[id])

    new menuBody[512]
    new b = 0
    new i
    new name[32]
    new start = pos * 7

    if (start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0

    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "ABUSE_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
    new end = start + 7
    new keys = MENU_KEY_0|MENU_KEY_8

    if (end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]

    for (new a = start; a < end; ++a)
    {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)

        if (is_user_bot(i) || is_user_hltv(i) || is_user_admin(i) && get_pcvar_num(not_report_admins) == 0)
        {
            ++b

            if (g_coloredMenus)
                len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
            else
                len += format(menuBody[len], 511-len, "#. %s^n", name)
        }
        else
        {
            keys |= (1<<b)
            if (is_user_admin(i) && get_pcvar_num(hideAdmins) == 1)
               len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *   %s^n", ++b, name)
            else
                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s^n\w" : "%d. %s   %s^n", ++b, name)
        }
    }
    if (end != g_menuPlayersNum[id])
    {
        format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
        keys |= MENU_KEY_9
    }
    else
        format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

    show_menu(id, keys, menuBody, -1, "Abuse Menu")
}

public cmdabuseMenu(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

    displayAbuseMenu(id, g_menuPosition[id] = 0)
    load_reasons(id)
    return PLUGIN_HANDLED
}

cmdReasonMenu(id)
{
    new menuBody[1024]
    new len = format(menuBody,1023, g_coloredMenus ? "\y%s\R^n\w^n" : "%s^n^n","Reason")
    new i = 0

    while (i<8)
    {
        if (strlen(g_Reasons[i]))
            len+=format(menuBody[len],1023-len,"%d. %s^n",i+1,g_Reasons[i])
        
        i++
    }

    len+=format(menuBody[len],1023-len,"^n0. %L^n",id,"EXIT")

    new keys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0


    show_menu(id,keys,menuBody,-1,"Report Reason Menu")
}

public actionReasonMenu(id,key)
{
    switch (key)
    {
        case 0: insert_report(id, 1, g_Reasons[key])
        case 1: insert_report(id, 2, g_Reasons[key])
        case 2: insert_report(id, 3, g_Reasons[key])
        case 3: insert_report(id, 4, g_Reasons[key])
        case 4: insert_report(id, 5, g_Reasons[key])
        case 5: insert_report(id, 6, g_Reasons[key])
        case 6: insert_report(id, 7, g_Reasons[key])
        case 7: insert_report(id, 8, g_Reasons[key])
    }

    return PLUGIN_HANDLED
}

load_reasons(id)
{
    format(g_Reasons[0], 127, "%L", id, "REASON_1")
    format(g_Reasons[1], 127, "%L", id, "REASON_2")
    format(g_Reasons[2], 127, "%L", id, "REASON_3")
    format(g_Reasons[3], 127, "%L", id, "REASON_4")
    format(g_Reasons[4], 127, "%L", id, "REASON_5")
    format(g_Reasons[5], 127, "%L", id, "REASON_6")
    format(g_Reasons[6], 127, "%L", id, "REASON_7")
    format(g_Reasons[7], 127, "%L", id, "REASON_8")
    return PLUGIN_HANDLED
}

printClientsChat(id, Reason[])
{
    client_print(id, print_chat, "%L", id, "ARTITLE")
    client_print(id, print_chat, "%L", id, "REPORTED", reported_name, Reason)
    client_print(id, print_chat, "%L", id, "ADMIN_ACTION")
    client_print(id, print_chat, "%L", id, "LINE")
    if(get_pcvar_num(show_reported) == 1)
    {
        client_print(g_player, print_chat, "%L", id, "ARTITLE")
        client_print(g_player, print_chat, "%L", id, "REPORTEDBY", reporting_name, Reason)
        client_print(g_player, print_chat, "%L", id, "ADMIN_ACTION")
        client_print(g_player, print_chat, "%L", id, "LINE")
    }
    return PLUGIN_HANDLED
}

insert_report(id, key, Reason[])
{
    new currenttime = get_user_time(id)
    new timeelapsed = currenttime - lastreporttime[id]

    if(get_pcvar_num(ar_debug) == 1)
        log_amx("timeelapsed: %d, currenttime: %d, lastreporttime: %d", timeelapsed, currenttime ,lastreporttime[id])
    
    if(timeelapsed < get_pcvar_num(min_time))
    {
        client_print(id, print_chat, "%L", id, "NEXT_REPORT", get_pcvar_num(min_time) - timeelapsed)
        return PLUGIN_HANDLED
    }
    else
    {
        new reason[32]
        switch(key)
        {
            case 1: format(reason, 31 , "%L" , LANG_SERVER , "REASON_1")
            case 2: format(reason, 31 , "%L" , LANG_SERVER , "REASON_2")
            case 3: format(reason, 31 , "%L" , LANG_SERVER , "REASON_3")
            case 4: format(reason, 31 , "%L" , LANG_SERVER , "REASON_4")
            case 5: format(reason, 31 , "%L" , LANG_SERVER , "REASON_5")
            case 6: format(reason, 31 , "%L" , LANG_SERVER , "REASON_6")
            case 7: format(reason, 31 , "%L" , LANG_SERVER , "REASON_7")
            case 8: format(reason, 31 , "%L" , LANG_SERVER , "REASON_8")
        }
        new hostname[32]
        get_cvar_string("ar_servernick", hostname, 31)
        new query[512]
        new data[1]
    
        format(query, 511, "INSERT INTO `%s` ( `id` , `reportingsteamid` , `reportedsteamid` , `reportingname` , `reportedname` , `reason` , `servername`) VALUES ( NULL , '%s', '%s', '%s' , '%s', '%s', '%s')", g_table, reporting_authid, reported_authid, reporting_name, reported_name, reason, hostname)
    
        data[0] = id
        SQL_ThreadQuery(g_SqlX, "reporting", query, data, 1)
    }
    printClientsChat(id, Reason)
    return PLUGIN_HANDLED
}

public reporting(failstate, Handle:query, error[], errnum, data[], size)
{
    new id = data[0]
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 4)
    }
    else
    {
        lastreporttime[id] = get_user_time(id)

#if defined USE_HLTV
        new timeleft = get_timeleft()
        if(timeleft < get_pcvar_float(recording_time) + 5.0)
        {
            return PLUGIN_HANDLED
        }
        else
        {
            hltv_start()
            set_task(get_pcvar_float(recording_time), "hltv_stop", 3536)
        }
#endif
    }
    return PLUGIN_HANDLED
}

/****************************************************

   Delete reports function

****************************************************/
public delete_reports(id, level, cid)
{
    if(id && !(get_user_flags(id) & get_admin_deletereports_flag()))
    {
        client_print(id, print_console, "%L", id, "NO_ACC_COM")
        return PLUGIN_HANDLED
    }
    
    new arg[32]
    read_argv(1, arg, 31)
    if(equali(arg, "all"))
    {
        new query[512]
        new data[1]
    
        format(query, 511, "TRUNCATE TABLE `%s`", g_table)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "truncate_table", query, data, 1)
        
        console_print(id, "%L", id, "REPORTS_DELETED")
        return PLUGIN_HANDLED
    }
    else if(containi(arg, "STEAM") != -1)
    {
        new query[512]
        new data[1]

        format(query, 511, "DELETE FROM `%s` WHERE `reportedsteamid`='%s'", g_table, arg)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "delete_user", query, data, 1)

        console_print(id, "%L", id, "USER_DELETED", arg)
        return PLUGIN_HANDLED
    }
    else if(str_to_num(arg) > 0)
    {
        new query[512]
        new data[1]
    
        format(query, 511, "DELETE FROM `%s` WHERE `id`='%d'", g_table, str_to_num(arg))

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "delete_userid", query, data, 1)
        
        console_print(id, "%L", id, "USERID_DELETED", str_to_num(arg))
        return PLUGIN_HANDLED
    }
    else
    {
        console_print(id, "%L", id, "USAGE_DELETE")
        return PLUGIN_HANDLED
    }
    return PLUGIN_HANDLED
}

public truncate_table(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 5)
    }
    return PLUGIN_HANDLED
}
public delete_user(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 6)
    }
    return PLUGIN_HANDLED
}
public delete_userid(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 7)
    }
    return PLUGIN_HANDLED
}


/*****************************************************

   Show reports function

*****************************************************/
public showreports(id, level, cid)
{
    if(id && !(get_user_flags(id) & get_admin_showreports_flag()))
    {
        client_print(id, print_console, "%L", id, "NO_ACC_COM")
        return PLUGIN_HANDLED
    }
    new arg[32]
    read_argv(1, arg, 31)
    
    if(equal(arg, "motd"))
    {
        if(get_pcvar_num(motd_disabled) == 1)
        {
            client_print(id, print_chat, "%L", id, "COMMAND_DISABLED")
            console_print(id, "%L", id, "COMMAND_DISABLED")
            return PLUGIN_HANDLED
        }
        else
        {
            new info_url[256], msg[2048]
            get_cvar_string("ar_url", info_url, 255)
            format(msg, 2047, info_url)
            show_motd(id, msg, "Abuse reports")
        }
    }
    else if(equal(arg, "console"))
    {
        new query[1024]
        new data[1]
    
        format(query, 1023, "SELECT  id,reportingsteamid,reportedsteamid,reportingname,reportedname,reason,serve
rname,date FROM `%s`", g_table)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "reports", query, data, 1)
    }
    else
    {
        console_print(id, "%L", id, "USAGE_SHOW")
    }
    return PLUGIN_HANDLED
}

public reports(failstate, Handle:query, error[], errnum, data[], size)
{
    new id = data[0]
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 8)
    }
    else
    {
        if(!SQL_NumResults(query))
        {
            client_print(id, print_chat, "%L", id, "NO_REPORTS")
            console_print(id, "%L", id, "NO_REPORTS")
            return PLUGIN_HANDLED
        }
        else
        {
            new str[7][32]
            console_print(id, "%L", id, "TITLE")
            while(SQL_MoreResults(query))
            {
                new dbid = SQL_ReadResult(query, 0)
                SQL_ReadResult(query, 1, str[0], 31)
                SQL_ReadResult(query, 2, str[1], 31)
                SQL_ReadResult(query, 3, str[2], 31)
                SQL_ReadResult(query, 4, str[3], 31)
                SQL_ReadResult(query, 5, str[4], 31)
                SQL_ReadResult(query, 6, str[5], 31)
                SQL_ReadResult(query, 7, str[6], 31)
                console_print(id, "%d | %s | %s | %s | %s | %s | %s | %s", dbid, str[2], str[0], str[3], str[1], str[4], str[5], str[6])
                SQL_NextRow(query)
            }
        }
    }
    return PLUGIN_HANDLED
}

/*******************************************************

    Error handler

*******************************************************/
MySqlX_ThreadError(szQuery[], error[], errnum, failstate, id)
{
    
    if (failstate == TQUERY_CONNECT_FAILED)
    {
        log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
    }
    else if (failstate == TQUERY_QUERY_FAILED)
    {
        log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
    }
    log_amx("%L", LANG_SERVER, "TQUERY_ERROR", id)
    log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errnum)
    log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", szQuery)
    return PLUGIN_HANDLED
}

/*********************************************************

   HLTV Stuff
  
*********************************************************/
#if defined USE_HLTV
public hltv_start()
{
    if(recording)
    {
        change_task(3536, get_pcvar_float(recording_time), 0)

        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Already recording a demo, adding %f seconds", get_pcvar_float(recording_time))

        return PLUGIN_HANDLED
    }
    new ip[32], address[32], hltvid
    new players[32], num
    get_players(players, num)
    for(new i = 0; i < num; i++)
    {
        new hid = players[i]
        if (is_user_hltv(hid))
        {
            hltvid = get_user_userid(hid)
        }
    }
    new hltv = find_player("k", hltvid)
    if(hltv)
    {
        new rconid[13]
        new rcv[256],snd[256]
        get_user_ip(hltv, ip, 31)
        new pos = copyc(address,31,ip,':') + 1
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV found: %s:%s", address, ip[pos])

        new pass[64]
        get_cvar_string("ar_hltv_proxypassword", pass, 63)
        socket = socket_open(address, str_to_num(ip[pos]), SOCKET_UDP, hltv_error)
        if (hltv_error != 0)
        {
            if(get_pcvar_num(ar_debug) == 1)
                log_amx("connection failed")
            return PLUGIN_HANDLED
        }
        setc(snd, 4, 0xff)
        copy(snd[4], 255, "challenge rcon")
        setc(snd[18], 1, '^n')
        socket_send(socket, snd, 255)
        socket_recv(socket, rcv, 255)

        copy(rconid, 12, rcv[19])
        replace(rconid, 255, "^n", "")

        setc(snd, 255, 0x00)
        setc(snd, 4, 0xff)
        format(snd[4], 255, "rcon %s %s  record demo^n", rconid, pass)

        socket_send(socket, snd, 255)
        socket_close(socket)
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Recording demo")
        
        recording = true
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV not found")
    }
    return PLUGIN_HANDLED
}

public hltv_stop()
{
    if(!recording)
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Not recording any demo right now")
        return PLUGIN_HANDLED
    }
    new ip[32], address[32], hltvid
    new players[32], num
    get_players(players, num)
    for(new i = 0; i < num; i++)
    {
        new hid = players[i]
        if (is_user_hltv(hid))
        {
            hltvid = get_user_userid(hid)
        }
    }
    new hltv = find_player("k", hltvid)
    if(hltv)
    {
        new rconid[13]
        new rcv[256],snd[256]
        get_user_ip(hltv, ip, 31)
        new pos = copyc(address,31,ip,':') + 1
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV found: %s:%s",address,ip[pos])

        new pass[64]
        get_cvar_string("ar_hltv_proxypassword", pass, 63)
        socket = socket_open(address, str_to_num(ip[pos]), SOCKET_UDP, hltv_error)
        if (hltv_error != 0)
        {
            if(get_pcvar_num(ar_debug) == 1)
                log_amx("connection failed")
            return PLUGIN_HANDLED
        }

        setc(snd, 4, 0xff)
        copy(snd[4], 255, "challenge rcon")
        setc(snd[18], 1, '^n')
        socket_send(socket, snd, 255)
        socket_recv(socket, rcv, 255)

        copy(rconid, 12, rcv[19])
        replace(rconid, 255, "^n", "")

        setc(snd, 255, 0x00)
        setc(snd, 4, 0xff)
        format(snd[4], 255, "rcon %s %s  stoprecording^n", rconid, pass)

        socket_send(socket, snd, 255)
        socket_close(socket)
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Recording stopped")
        
        recording = false
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV not found")
    }
    return PLUGIN_HANDLED
}
#endif
  
public get_admin_deletereports_flag()
{
    new flags[24]
    get_cvar_string("ar_deletereportsflag", flags, 23)
    
    return(read_flags(flags))
}

public get_admin_showreports_flag()
{
    new flags[24]
    get_cvar_string("ar_showreportsflag", flags, 23)
    
    return(read_flags(flags))
}

За ранее оочень благодарен за внимание и ответы!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Empower
сообщение 26.3.2009, 18:50
Сообщение #2
Стаж: 17 лет

Сообщений: 298
Благодарностей: 945
Полезность: 0

ты знаеш что такое codebox ??

P.s я в коде особо не разбиралса изменил 2 строчки пробуй:
Раскрывающийся текст
Код
#include <amxmodx>
#include <amxmisc>
#include <sqlx>


// Uncomment if you are going to use HLTV to record demos when players get reported
//#define USE_HLTV

#if defined USE_HLTV
    #include <sockets>
    new bool:recording = false
    new socket = 0
    new hltv_error
    new recording_time
#endif

new AUTH[] = "Gizmo"
new PLUGIN_NAME[] = "Report Abusive Players"
new VERSION[] = "1.0"

new Handle:g_SqlX
new g_table[32]

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]

new g_coloredMenus

new reported_name[32]
new reported_authid[32]
new reporting_name[32]
new reporting_authid[32]
new lastreporttime[32]
new g_player

new motd_disabled
new show_reported
new MyMsgSync
new announcemsg
new min_time
new ar_debug
new not_report_admins
new hideAdmins

new g_Reasons[8][128]


public plugin_init()
{
    register_plugin(PLUGIN_NAME, VERSION, AUTH)
    register_cvar("reportabuse_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)

    register_cvar("ar_sql_host", "127.0.0.1")
    register_cvar("ar_sql_user", "root")
    register_cvar("ar_sql_pass", "")
    register_cvar("ar_sql_db", "amx")
    register_cvar("ar_abuse_table", "amx_abuse_reports")

    register_cvar("ar_url", "http://www.yourhost.com/abusereports.php")
    register_cvar("ar_servernick", "myserver")
    register_cvar("ar_deletereportsflag", "l")
    register_cvar("ar_showreportsflag", "d")
#if defined USE_HLTV
    register_cvar("ar_hltv_proxypassword", "")
    recording_time = register_cvar("ar_recordingtime", "120.0")
#endif
    motd_disabled = register_cvar("ar_motddisabled", "1")
    show_reported = register_cvar("ar_showreported", "0")
    announcemsg = register_cvar("ar_announcemsg", "1")
    min_time = register_cvar("ar_nextreporttime", "60")
    ar_debug = register_cvar("ar_debug", "0")
    not_report_admins = register_cvar("ar_reportadmins", "0")
    hideAdmins = register_cvar("ar_hide_admins", "0")

    register_concmd("amx_deletereports", "delete_reports", -1, "amx_deletereports")
    register_concmd("amx_showreports", "showreports", -1, "amx_showreports")

    register_clcmd("say !report", "cmdabuseMenu")
    register_clcmd("say_team !report", "cmdabuseMenu")
    register_menucmd(register_menuid("Abuse Menu"), 1023, "actionAbuseMenu")
    
    register_menucmd(register_menuid("Report Reason Menu"), 1023, "actionReasonMenu")

    register_dictionary("report_abuse.txt")
    register_dictionary("common.txt")
    
    g_coloredMenus = colored_menus()
    MyMsgSync = CreateHudSyncObj()

    new configsDir[64]
    get_configsdir(configsDir, 63)

    server_cmd("exec %s/report_abuse.cfg", configsDir)
}

public plugin_cfg()
{
    new host[64], user[64], pass[64], db[64]

    get_cvar_string("ar_sql_host", host, 63)
    get_cvar_string("ar_sql_user", user, 63)
    get_cvar_string("ar_sql_pass", pass, 63)
    get_cvar_string("ar_sql_db", db, 63)
    get_cvar_string("ar_abuse_table", g_table, 31)

    g_SqlX = SQL_MakeDbTuple(host, user, pass, db)

    set_task(0.1, "create_table")
}

public create_table()
{
    new query[1024]
    new data[1]

    format(query, 1023, "CREATE TABLE IF NOT EXISTS `%s` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `reportingsteamid` VARCHAR(32) NOT NULL DEFAULT '0', `reportedsteamid` VARCHAR(32) NOT NULL DEFAULT '0', `reportingname` VARCHAR(32) NOT NULL DEFAULT 'Unknown', `reportedname` VARCHAR(32) NOT NULL DEFAULT 'Unknown', `reason` VARCHAR(100) NOT NULL DEFAULT '0', `date` TIMESTAMP NOT NULL) ENGINE = MYISAM", g_table)

    SQL_ThreadQuery(g_SqlX, "create_table_", query, data, 1)
    return
}

public create_table_(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 1 )
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Created table %s", g_table)
        
        new query[512]
        new data[1]

        format(query, 511, "SELECT * FROM %s", g_table)
        
        SQL_ThreadQuery(g_SqlX, "alter_table", query, data, 1)
    }
}

public alter_table(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 2 )
    }
    else
    {
        new columns = SQL_NumColumns(query)
        new cols[32]
        SQL_FieldNumToName(query, 6, cols, 31)

        if(get_pcvar_num(ar_debug) == 1)
            log_amx("columns: %d, Fieldname %s", columns, cols)

        if(equal(cols, "date"))
        {
            new query[512]
            new data[1]

            format(query, 511, "ALTER TABLE `%s` ADD `servername` VARCHAR( 100 ) NOT NULL DEFAULT 'unknown' AFTER `reason`", g_table)
            
            SQL_ThreadQuery(g_SqlX, "alter_table_", query, data, 1)
        }
        else
        {
            return PLUGIN_HANDLED
        }
    }
    return PLUGIN_HANDLED
}

public alter_table_(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError( szQuery, error, errnum, failstate, 3 )
    }
}
/**************************************************

   Announcemessage function

**************************************************/
public client_putinserver(id)
{
    if(get_pcvar_num(announcemsg) == 1 && !is_user_admin(id) && !is_user_bot(id) && is_user_connected(id))
    {
        set_task(120.0, "print_announcemsg",  id, "", 0, "b")
    }
    return PLUGIN_HANDLED
}

public print_announcemsg(id)
{
    if(!is_user_admin(id) && !is_user_bot(id) && is_user_connected(id) && !is_user_hltv(id))
    {
        new msg[64]
        format(msg, 63, "%L", id, "ANNOUNCEMSG")
        set_hudmessage(0, 255, 0, 0.05, 0.35, 0, 6.0, 10.0 , 0.5, 0.15, -1)
        ShowSyncHudMsg(id, MyMsgSync, "%s", msg)
    }
    return PLUGIN_HANDLED
}

public client_disconnect(id)
{
    if(task_exists(id))
        remove_task(id)
}
/***********************************************

   Menu

***********************************************/
public actionAbuseMenu(id, key)
{
    switch (key)
    {
        case 8: displayAbuseMenu(id, ++g_menuPosition[id])
        case 9: displayAbuseMenu(id, --g_menuPosition[id])
        default:
        {
            g_player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

            get_user_name(g_player, reported_name, 31)
            get_user_ip(g_player, reported_authid, 31,1)

            get_user_name(id, reporting_name, 31)
            get_user_authid(id, reporting_authid, 31,1)

            cmdReasonMenu(id)
        }
    }
    return PLUGIN_HANDLED
}

displayAbuseMenu(id, pos)
{
    if (pos < 0)
        return

    get_players(g_menuPlayers[id], g_menuPlayersNum[id])

    new menuBody[512]
    new b = 0
    new i
    new name[32]
    new start = pos * 7

    if (start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0

    new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "ABUSE_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
    new end = start + 7
    new keys = MENU_KEY_0|MENU_KEY_8

    if (end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]

    for (new a = start; a < end; ++a)
    {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)

        if (is_user_bot(i) || is_user_hltv(i) || is_user_admin(i) && get_pcvar_num(not_report_admins) == 0)
        {
            ++b

            if (g_coloredMenus)
                len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
            else
                len += format(menuBody[len], 511-len, "#. %s^n", name)
        }
        else
        {
            keys |= (1<<b)
            if (is_user_admin(i) && get_pcvar_num(hideAdmins) == 1)
               len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *   %s^n", ++b, name)
            else
                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s^n\w" : "%d. %s   %s^n", ++b, name)
        }
    }
    if (end != g_menuPlayersNum[id])
    {
        format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
        keys |= MENU_KEY_9
    }
    else
        format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

    show_menu(id, keys, menuBody, -1, "Abuse Menu")
}

public cmdabuseMenu(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

    displayAbuseMenu(id, g_menuPosition[id] = 0)
    load_reasons(id)
    return PLUGIN_HANDLED
}

cmdReasonMenu(id)
{
    new menuBody[1024]
    new len = format(menuBody,1023, g_coloredMenus ? "\y%s\R^n\w^n" : "%s^n^n","Reason")
    new i = 0

    while (i<8)
    {
        if (strlen(g_Reasons[i]))
            len+=format(menuBody[len],1023-len,"%d. %s^n",i+1,g_Reasons[i])
        
        i++
    }

    len+=format(menuBody[len],1023-len,"^n0. %L^n",id,"EXIT")

    new keys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0


    show_menu(id,keys,menuBody,-1,"Report Reason Menu")
}

public actionReasonMenu(id,key)
{
    switch (key)
    {
        case 0: insert_report(id, 1, g_Reasons[key])
        case 1: insert_report(id, 2, g_Reasons[key])
        case 2: insert_report(id, 3, g_Reasons[key])
        case 3: insert_report(id, 4, g_Reasons[key])
        case 4: insert_report(id, 5, g_Reasons[key])
        case 5: insert_report(id, 6, g_Reasons[key])
        case 6: insert_report(id, 7, g_Reasons[key])
        case 7: insert_report(id, 8, g_Reasons[key])
    }

    return PLUGIN_HANDLED
}

load_reasons(id)
{
    format(g_Reasons[0], 127, "%L", id, "REASON_1")
    format(g_Reasons[1], 127, "%L", id, "REASON_2")
    format(g_Reasons[2], 127, "%L", id, "REASON_3")
    format(g_Reasons[3], 127, "%L", id, "REASON_4")
    format(g_Reasons[4], 127, "%L", id, "REASON_5")
    format(g_Reasons[5], 127, "%L", id, "REASON_6")
    format(g_Reasons[6], 127, "%L", id, "REASON_7")
    format(g_Reasons[7], 127, "%L", id, "REASON_8")
    return PLUGIN_HANDLED
}

printClientsChat(id, Reason[])
{
    client_print(id, print_chat, "%L", id, "ARTITLE")
    client_print(id, print_chat, "%L", id, "REPORTED", reported_name, Reason)
    client_print(id, print_chat, "%L", id, "ADMIN_ACTION")
    client_print(id, print_chat, "%L", id, "LINE")
    if(get_pcvar_num(show_reported) == 1)
    {
        client_print(g_player, print_chat, "%L", id, "ARTITLE")
        client_print(g_player, print_chat, "%L", id, "REPORTEDBY", reporting_name, Reason)
        client_print(g_player, print_chat, "%L", id, "ADMIN_ACTION")
        client_print(g_player, print_chat, "%L", id, "LINE")
    }
    return PLUGIN_HANDLED
}

insert_report(id, key, Reason[])
{
    new currenttime = get_user_time(id)
    new timeelapsed = currenttime - lastreporttime[id]

    if(get_pcvar_num(ar_debug) == 1)
        log_amx("timeelapsed: %d, currenttime: %d, lastreporttime: %d", timeelapsed, currenttime ,lastreporttime[id])
    
    if(timeelapsed < get_pcvar_num(min_time))
    {
        client_print(id, print_chat, "%L", id, "NEXT_REPORT", get_pcvar_num(min_time) - timeelapsed)
        return PLUGIN_HANDLED
    }
    else
    {
        new reason[32]
        switch(key)
        {
            case 1: format(reason, 31 , "%L" , LANG_SERVER , "REASON_1")
            case 2: format(reason, 31 , "%L" , LANG_SERVER , "REASON_2")
            case 3: format(reason, 31 , "%L" , LANG_SERVER , "REASON_3")
            case 4: format(reason, 31 , "%L" , LANG_SERVER , "REASON_4")
            case 5: format(reason, 31 , "%L" , LANG_SERVER , "REASON_5")
            case 6: format(reason, 31 , "%L" , LANG_SERVER , "REASON_6")
            case 7: format(reason, 31 , "%L" , LANG_SERVER , "REASON_7")
            case 8: format(reason, 31 , "%L" , LANG_SERVER , "REASON_8")
        }
        new hostname[32]
        get_cvar_string("ar_servernick", hostname, 31)
        new query[512]
        new data[1]
    
        format(query, 511, "INSERT INTO `%s` ( `id` , `reportingsteamid` , `reportedsteamid` , `reportingname` , `reportedname` , `reason` , `servername`) VALUES ( NULL , '%s', '%s', '%s' , '%s', '%s', '%s')", g_table, reporting_authid, reported_authid, reporting_name, reported_name, reason, hostname)
    
        data[0] = id
        SQL_ThreadQuery(g_SqlX, "reporting", query, data, 1)
    }
    printClientsChat(id, Reason)
    return PLUGIN_HANDLED
}

public reporting(failstate, Handle:query, error[], errnum, data[], size)
{
    new id = data[0]
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 4)
    }
    else
    {
        lastreporttime[id] = get_user_time(id)

#if defined USE_HLTV
        new timeleft = get_timeleft()
        if(timeleft < get_pcvar_float(recording_time) + 5.0)
        {
            return PLUGIN_HANDLED
        }
        else
        {
            hltv_start()
            set_task(get_pcvar_float(recording_time), "hltv_stop", 3536)
        }
#endif
    }
    return PLUGIN_HANDLED
}

/****************************************************

   Delete reports function

****************************************************/
public delete_reports(id, level, cid)
{
    if(id && !(get_user_flags(id) & get_admin_deletereports_flag()))
    {
        client_print(id, print_console, "%L", id, "NO_ACC_COM")
        return PLUGIN_HANDLED
    }
    
    new arg[32]
    read_argv(1, arg, 31)
    if(equali(arg, "all"))
    {
        new query[512]
        new data[1]
    
        format(query, 511, "TRUNCATE TABLE `%s`", g_table)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "truncate_table", query, data, 1)
        
        console_print(id, "%L", id, "REPORTS_DELETED")
        return PLUGIN_HANDLED
    }
    else if(containi(arg, "STEAM") != -1)
    {
        new query[512]
        new data[1]

        format(query, 511, "DELETE FROM `%s` WHERE `reportedsteamid`='%s'", g_table, arg)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "delete_user", query, data, 1)

        console_print(id, "%L", id, "USER_DELETED", arg)
        return PLUGIN_HANDLED
    }
    else if(str_to_num(arg) > 0)
    {
        new query[512]
        new data[1]
    
        format(query, 511, "DELETE FROM `%s` WHERE `id`='%d'", g_table, str_to_num(arg))

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "delete_userid", query, data, 1)
        
        console_print(id, "%L", id, "USERID_DELETED", str_to_num(arg))
        return PLUGIN_HANDLED
    }
    else
    {
        console_print(id, "%L", id, "USAGE_DELETE")
        return PLUGIN_HANDLED
    }
    return PLUGIN_HANDLED
}

public truncate_table(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 5)
    }
    return PLUGIN_HANDLED
}
public delete_user(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 6)
    }
    return PLUGIN_HANDLED
}
public delete_userid(failstate, Handle:query, error[], errnum, data[], size)
{
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 7)
    }
    return PLUGIN_HANDLED
}


/*****************************************************

   Show reports function

*****************************************************/
public showreports(id, level, cid)
{
    if(id && !(get_user_flags(id) & get_admin_showreports_flag()))
    {
        client_print(id, print_console, "%L", id, "NO_ACC_COM")
        return PLUGIN_HANDLED
    }
    new arg[32]
    read_argv(1, arg, 31)
    
    if(equal(arg, "motd"))
    {
        if(get_pcvar_num(motd_disabled) == 1)
        {
            client_print(id, print_chat, "%L", id, "COMMAND_DISABLED")
            console_print(id, "%L", id, "COMMAND_DISABLED")
            return PLUGIN_HANDLED
        }
        else
        {
            new info_url[256], msg[2048]
            get_cvar_string("ar_url", info_url, 255)
            format(msg, 2047, info_url)
            show_motd(id, msg, "Abuse reports")
        }
    }
    else if(equal(arg, "console"))
    {
        new query[1024]
        new data[1]
    
        format(query, 1023, "SELECT  id,reportingsteamid,reportedsteamid,reportingname,reportedname,reason,serve
rname,date FROM `%s`", g_table)

        data[0] = id
        SQL_ThreadQuery(g_SqlX, "reports", query, data, 1)
    }
    else
    {
        console_print(id, "%L", id, "USAGE_SHOW")
    }
    return PLUGIN_HANDLED
}

public reports(failstate, Handle:query, error[], errnum, data[], size)
{
    new id = data[0]
    if (failstate)
    {
        new szQuery[256]
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 8)
    }
    else
    {
        if(!SQL_NumResults(query))
        {
            client_print(id, print_chat, "%L", id, "NO_REPORTS")
            console_print(id, "%L", id, "NO_REPORTS")
            return PLUGIN_HANDLED
        }
        else
        {
            new str[7][32]
            console_print(id, "%L", id, "TITLE")
            while(SQL_MoreResults(query))
            {
                new dbid = SQL_ReadResult(query, 0)
                SQL_ReadResult(query, 1, str[0], 31)
                SQL_ReadResult(query, 2, str[1], 31)
                SQL_ReadResult(query, 3, str[2], 31)
                SQL_ReadResult(query, 4, str[3], 31)
                SQL_ReadResult(query, 5, str[4], 31)
                SQL_ReadResult(query, 6, str[5], 31)
                SQL_ReadResult(query, 7, str[6], 31)
                console_print(id, "%d | %s | %s | %s | %s | %s | %s | %s", dbid, str[2], str[0], str[3], str[1], str[4], str[5], str[6])
                SQL_NextRow(query)
            }
        }
    }
    return PLUGIN_HANDLED
}

/*******************************************************

    Error handler

*******************************************************/
MySqlX_ThreadError(szQuery[], error[], errnum, failstate, id)
{
    
    if (failstate == TQUERY_CONNECT_FAILED)
    {
        log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
    }
    else if (failstate == TQUERY_QUERY_FAILED)
    {
        log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
    }
    log_amx("%L", LANG_SERVER, "TQUERY_ERROR", id)
    log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errnum)
    log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", szQuery)
    return PLUGIN_HANDLED
}

/*********************************************************

   HLTV Stuff
  
*********************************************************/
#if defined USE_HLTV
public hltv_start()
{
    if(recording)
    {
        change_task(3536, get_pcvar_float(recording_time), 0)

        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Already recording a demo, adding %f seconds", get_pcvar_float(recording_time))

        return PLUGIN_HANDLED
    }
    new ip[32], address[32], hltvid
    new players[32], num
    get_players(players, num)
    for(new i = 0; i < num; i++)
    {
        new hid = players[i]
        if (is_user_hltv(hid))
        {
            hltvid = get_user_userid(hid)
        }
    }
    new hltv = find_player("k", hltvid)
    if(hltv)
    {
        new rconid[13]
        new rcv[256],snd[256]
        get_user_ip(hltv, ip, 31)
        new pos = copyc(address,31,ip,':') + 1
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV found: %s:%s", address, ip[pos])

        new pass[64]
        get_cvar_string("ar_hltv_proxypassword", pass, 63)
        socket = socket_open(address, str_to_num(ip[pos]), SOCKET_UDP, hltv_error)
        if (hltv_error != 0)
        {
            if(get_pcvar_num(ar_debug) == 1)
                log_amx("connection failed")
            return PLUGIN_HANDLED
        }
        setc(snd, 4, 0xff)
        copy(snd[4], 255, "challenge rcon")
        setc(snd[18], 1, '^n')
        socket_send(socket, snd, 255)
        socket_recv(socket, rcv, 255)

        copy(rconid, 12, rcv[19])
        replace(rconid, 255, "^n", "")

        setc(snd, 255, 0x00)
        setc(snd, 4, 0xff)
        format(snd[4], 255, "rcon %s %s  record demo^n", rconid, pass)

        socket_send(socket, snd, 255)
        socket_close(socket)
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Recording demo")
        
        recording = true
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV not found")
    }
    return PLUGIN_HANDLED
}

public hltv_stop()
{
    if(!recording)
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Not recording any demo right now")
        return PLUGIN_HANDLED
    }
    new ip[32], address[32], hltvid
    new players[32], num
    get_players(players, num)
    for(new i = 0; i < num; i++)
    {
        new hid = players[i]
        if (is_user_hltv(hid))
        {
            hltvid = get_user_userid(hid)
        }
    }
    new hltv = find_player("k", hltvid)
    if(hltv)
    {
        new rconid[13]
        new rcv[256],snd[256]
        get_user_ip(hltv, ip, 31)
        new pos = copyc(address,31,ip,':') + 1
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV found: %s:%s",address,ip[pos])

        new pass[64]
        get_cvar_string("ar_hltv_proxypassword", pass, 63)
        socket = socket_open(address, str_to_num(ip[pos]), SOCKET_UDP, hltv_error)
        if (hltv_error != 0)
        {
            if(get_pcvar_num(ar_debug) == 1)
                log_amx("connection failed")
            return PLUGIN_HANDLED
        }

        setc(snd, 4, 0xff)
        copy(snd[4], 255, "challenge rcon")
        setc(snd[18], 1, '^n')
        socket_send(socket, snd, 255)
        socket_recv(socket, rcv, 255)

        copy(rconid, 12, rcv[19])
        replace(rconid, 255, "^n", "")

        setc(snd, 255, 0x00)
        setc(snd, 4, 0xff)
        format(snd[4], 255, "rcon %s %s  stoprecording^n", rconid, pass)

        socket_send(socket, snd, 255)
        socket_close(socket)
        
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("Recording stopped")
        
        recording = false
    }
    else
    {
        if(get_pcvar_num(ar_debug) == 1)
            log_amx("HLTV not found")
    }
    return PLUGIN_HANDLED
}
#endif
  
public get_admin_deletereports_flag()
{
    new flags[24]
    get_cvar_string("ar_deletereportsflag", flags, 23)
    
    return(read_flags(flags))
}

public get_admin_showreports_flag()
{
    new flags[24]
    get_cvar_string("ar_showreportsflag", flags, 23)
    
    return(read_flags(flags))
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: