[HLDS] AutoBuy баг

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,026
  • Команда форума
  • #1
Суть бага
@steampowered.com
На русском: при выполнении определенного алгоритма автозакупки — сервер крашится.
Создаем файл autobuy.txt с содержанием
C-подобный:
m4a1
ak47
famas
galil
p90
mp5

primammo
secammoalias "primammo" "buyammo1;buyammo1;buyammo1;buyammo1;buyammo1;buyammo1;buyammo1"
alias "secoammo" "buyammo2;buyammo2;buyammo2;buyammo2;buyammo2;buyammo2;buyammo2"

alias "+awpsniper" "awp;usp;vesthelm;flash;flash;hegren;defuser"
alias "-awpsniper" "slot10;secoammo;primammo"

then

bind "f5" "+awpsniper"

defuser

vesthelm
vest
Заходим на сервер, выполняем команду cl_setautobuy fuck 12345678901234567890123456789012. PROFIT же.

На самом деле не важно какое содержание будет у этого файла, там может быть абсолютная белиберда, главное что бы длина одной из строк была больше либо равна 32 символам

Решение проблемы
Код плагина который нужно скомпилировать:
C-подобный:
#include <amxmodx> 

#define PLUGIN_NAME        "Fix AutoBuy Bug" 
#define PLUGIN_VERSION    "1.1" 
#define PLUGIN_AUTHOR    "PomanoB & UFPS.Team" 

new g_logfile[64] 

public plugin_init( ) 
{ 
    register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ) 

    register_clcmd( "cl_setautobuy", "cmd_check" ) 
    register_clcmd( "cl_setrebuy", "cmd_check" ) 

    get_time ( "autobuy_%Y%m.log", g_logfile, charsmax ( g_logfile ) ) 
} 

public cmd_check( id ) 
{ 
    static arg[512], args, i 
    args = read_argc( ) 

    for( i = 1; i < args; ++i ) 
    { 
        read_argv( i, arg, charsmax( arg ) ) 

        if( is_cmd_long( arg, charsmax( arg ) ) ) 
        { 
            log_autobuy( id ) 
            return PLUGIN_HANDLED 
        } 
    } 

    return PLUGIN_CONTINUE 
} 

stock bool:is_cmd_long( string[], const len ) 
{ 
    static cmd[512] 

    while( strlen( string ) ) 
    { 
        strtok( string, cmd, charsmax( cmd ), string, len , ' ', 1 ) 

        if( strlen( cmd ) > 31 ) return true 
    } 

    return false 
} 

stock log_autobuy( id ) 
{ 
    static name[32], steamid[44], ip[16] 
    get_user_ip( id, ip, charsmax( ip ), 1 ) 
    get_user_authid( id, steamid, charsmax( steamid ) ) 
    get_user_name( id, name, charsmax( name ) ) 

    log_to_file( g_logfile, "Autobuy bug use: %s [%s] <%s>", name, ip, steamid ) 
}
Источник: d-s.ru и gm-community
 

Вложения

  • FixAutoBuyBug.amxx
    2.7 КБ · Просмотры: 108

Danyas

Участник
Сообщения
2,173
Реакции
1,072
есть что-то похожее на sourcemod?
 

NagarD

Участник
Сообщения
411
Реакции
184
есть
Вариант 1 отключит автозакупку
Вариант 2 заблокирует хак (если у тебя установлен хак, то у тебя не работает автозакупка, если чисты, то все норма)
 

Вложения

  • 1.smx
    0 байт · Просмотры: 3
  • 2.smx
    0 байт · Просмотры: 7
Сверху Снизу