Andrey
пишу код за еду
- Сообщения
- 3,386
- Реакции
- 4,026
- Команда форума
- #1
Суть бага
@steampowered.com
На русском: при выполнении определенного алгоритма автозакупки — сервер крашится.
Создаем файл autobuy.txt с содержанием
Заходим на сервер, выполняем команду cl_setautobuy fuck 12345678901234567890123456789012. PROFIT же.
На самом деле не важно какое содержание будет у этого файла, там может быть абсолютная белиберда, главное что бы длина одной из строк была больше либо равна 32 символам
Решение проблемы
Код плагина который нужно скомпилировать:
Источник: d-s.ru и gm-community
@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
На самом деле не важно какое содержание будет у этого файла, там может быть абсолютная белиберда, главное что бы длина одной из строк была больше либо равна 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 )
}