Иконка ресурса

Resources Checker 2.7

Сообщения
8
Реакции
0
У покемонши самый актуальная база! ) которая у меня и стоит с 2018. (
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Добрый день.
Ребят, может есть смысл добавить api именно по окончанию всей проверки из базы с возвратом true/false обнаружено/не обнаружено что либо.

Сейчас активно занимаюсь сортировкой всяких раскруток, поэтому смотрю по хешам. Но в моей реализации есть небольшой нюанс.

2019-06-25_120510.jpg

В записях несколько типов, ИМЯ МС, если было найдено в речекере, если нет пишет НЕИЗВЕСТНО или STEAM, но к сожалению проверка речекера позднее чем client_putinserver отсюда бывают дубли, две записи, одна с типом НЕИЗВЕСТНО другая с именем МС ставил задержку в 5-10 секунд не помогает, иногда проскакивают дубли, а если челевек сделал реконнект в течении этих 5-10 секунд, то видимо речекер с опоздание начинаем проверять повторно видимо, ибо сразу пишет неизвестно.

Как по другому костылить я не знаю.

C++:
#include < amxmodx >
#include < amxmisc >
#include < reapi >

#pragma semicolon 1

const MS_CHECK__TASK_ID                    =        16858;                // Идентификатор задачи для проверки МС
const Float: MS_CHECK__TASK_DELAY        =        5.0;                // Задержка задачи для проверки МС

new const MS_CHECK__LOGS_FOLDERNAME[ ]    =        "ms_check";            // Папка с логами проверки МС
new const MS_CHECK__LOG_FILENAME[ ]        =        "ms_check";            // Наименование файла логов проверки МС

const MAX_USERID_LENGTH                    =        16;
const MAX_MS_NAME_LENGTH                =        32;
const MAX_TIME_LENGTH                    =        32;

new g_sLogsDir[ MAX_RESOURCE_PATH_LENGTH ];
new g_sLogsFile[ MAX_RESOURCE_PATH_LENGTH + 32 ];

new bool: g_bMSDetected[ MAX_PLAYERS + 1 ];

public plugin_init( )
{
    register_plugin( "Server Master Check", "1.0", "Javekson" );
    
    register_srvcmd( "ms_check", "srvcmd_ServerMasterCheck" );
}

public plugin_cfg( )
{
    get_localinfo( "amxx_logs", g_sLogsDir, charsmax( g_sLogsDir ) );
    formatex( g_sLogsDir, charsmax( g_sLogsDir ), "%s/%s", g_sLogsDir, MS_CHECK__LOGS_FOLDERNAME );
    if( !dir_exists( g_sLogsDir ) ) mkdir( g_sLogsDir );
    
    new sTime[ MAX_TIME_LENGTH ];
    get_time( "%d.%m.%Y", sTime, charsmax( sTime ) );
    formatex( g_sLogsFile, charsmax( g_sLogsFile ), "%s/%s_%s.log", g_sLogsDir, MS_CHECK__LOG_FILENAME, sTime );
}

public client_putinserver( id )
{
    set_task_ex( MS_CHECK__TASK_DELAY, "task_ServerMasterCheck", MS_CHECK__TASK_ID + id, .flags = SetTask_Once );
}

public client_disconnected( id )
{
    g_bMSDetected[ id ] = false;
    
    remove_task( MS_CHECK__TASK_ID + id );
}

public task_ServerMasterCheck( iTaskID )
{
    new id = iTaskID - MS_CHECK__TASK_ID;
    
    if( !is_user_connected( id ) || is_user_bot( id ) || is_user_hltv( id ) )
        return PLUGIN_CONTINUE;
    
    if( !g_bMSDetected[ id ] )
    {
        new sAuthID[ MAX_AUTHID_LENGTH ], sPlayerName[ MAX_NAME_LENGTH ];
        get_user_authid( id, sAuthID, charsmax( sAuthID ) );
        get_user_name( id, sPlayerName, charsmax( sPlayerName ) );
        
        if( is_user_steam( id ) )
            log_to_file( g_sLogsFile, "^"%-32s %-32s [STEAM]^"", sPlayerName, sAuthID );
        else
            log_to_file( g_sLogsFile, "^"%-32s %-32s [НЕИЗВЕСТНО]^"", sPlayerName, sAuthID );
    }
    
    return PLUGIN_CONTINUE;
}

public srvcmd_ServerMasterCheck( )
{
    new sPlayerUserID[ MAX_USERID_LENGTH ], sMSName[ MAX_MS_NAME_LENGTH ];
    read_argv( 1, sPlayerUserID, charsmax( sPlayerUserID ) );
    read_argv( 2, sMSName, charsmax( sMSName ) );
    
    replace( sPlayerUserID, charsmax( sPlayerUserID ), "#", "" );
    
    new iPlayerUserID;
    iPlayerUserID = str_to_num( sPlayerUserID );
    
    new iPlayerID;
    iPlayerID = find_player( "k", iPlayerUserID );
    
    g_bMSDetected[ iPlayerID ] = true;
    
    new sPlayerName[ MAX_NAME_LENGTH ], sAuthID[ MAX_AUTHID_LENGTH ];
    get_user_name( iPlayerID, sPlayerName, charsmax( sPlayerName ) );
    get_user_authid( iPlayerID, sAuthID, charsmax( sAuthID ) );
    
    log_to_file( g_sLogsFile, "^"%-32s %-32s %s^"", sPlayerName, sAuthID, sMSName );
}
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, да как бы речь не про модификацию плагина, предложение по теме речекера, а плагин приложил в качестве примера, где это может понадобиться. И разве за неверный раздел у вас сразу 5 предупреждений выписываются? оО
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Javekson, тут скорее вопрос по скриптингу, ибо функционал напрямую его касается. Да и дубли скорей всего из за реконекта после скачивания ресурсов.
п.с. если нужна помощь, то могу подсказать как полностью сделать рабочый плагин. Но только не в данной теме.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, ну возможно я неверно высказался тогда, ибо если я хотел спросить про модификацию разумеется я бы спросил в соответствующим разделе, как делал это всегда в принципе. А в данном случаи это был лишь пример, где это может пригодиться и почему не получается иначе.
 
Сообщения
58
Реакции
10
Друзья, один тип Беспардо́нно рекламирует свой сервер!
Скажите пожалуйста как прописать его ник в resources.ini, что бы Resources Checker его не пускал.
Ип в нике не меняется, только разные буквы подписывает.
 

DES

Сообщения
34
Реакции
-28
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
polki, Так забань этого типа на сервере.
 
Сообщения
23
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Почему Rechecker использует только декали для проверки клинтских файлов?
Как сделать что бы он распределял ресурсы между всеми типами файлов? Или он может только с декалями работать ?
Забивает все Decals в rescount
11 Окт 2019
Почему нельзя в 'GENERIC' добавить там же 4096 файлов может быть :(
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Ka4er, вы испитываете лагы из-за забитых декалей?
 
Сообщения
23
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Я не обращал внимания :) Но вообще, почему нельзя вместо декалей использовать другой тип файлов для проверки ???
 
Сообщения
23
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Да хотелось не ограничивать себя количеством файлов в базе, после того как скачал около 300 читов, около 20 чит сборок, в базе собралось ~500 строк без дубликатов. А тут пишут про какое-то ограничение 512 и т.п, так вот у GENERIC ограничение 4096, почему Rechecker использует декали для проверки а не этот "Generic" тип?
 
Сообщения
23
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ну и сборки читерские типа

"../Counter-Strike 1.6 by Kaban.lnk" UNKNOWN "fb_ban 1 [userid] '[RC] ФАНАТ КАБАНА'

?
 
Сообщения
23
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Нашел ошибку!

"../CS 1.6 с Читами внутри WH, AIM, ESP 1.0.lnk" - не обнаруживает файл такой!!!

А тот что выше - спокойно находит.
 

RockTheStreet

Саппорт года
Сообщения
1,744
Реакции
349
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ka4er, Вполне возможно, что кириллицу пускает.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу