Цитата
Подскажите, как правильно вырезать из плагина следующий функционал?
Цитата
Обнаружение ников "+c" и т.д;
Обнаружение ВСЕХ лишних "невидимых" символов utf-8 в никах игроков на последних (6ххх) билдах (методом вайтлиста);
Решение, вырезаем:
Код
#if AMXX_VERSION_NUM < 183
static len
len = strlen( name )
for( i =; i < len; i ++ )
{
if( name[ i ] & 1<<31 )
name[ i ] &= 0xFF
}
for( i =; i < sizeof( g_cyrillic ); i ++ )
replace_all( name, charsmax( name ), g_cyrillic[ i ], "1" )
regex_handle = regex_compile( g_regex_pattern, ret, error, charsmax( error ) )
#else
regex_handle = regex_compile_ex( g_regex_pattern, PCRE_UTF8, error, charsmax( error ), ret )
#endif
if( regex_handle != REGEX_PATTERN_FAIL )
{
switch( regex_match_c( name, regex_handle, ret ) )
{
case REGEX_MATCH_FAIL: log_to_file( "[YASG] REGEX MATCH FAILED FOR %s", name )
case REGEX_NO_MATCH: return false
}
regex_free( regex_handle )
}
и
Код
#if AMXX_VERSION_NUM < 183
new g_regex_pattern[] = "^^[\w\d\-\'\<\>\{\}\[\]\(\)\*\.\\\?\$\|\/\,\:\;\~\`\@\#\!\&\=\^^\ ]+$"
new g_cyrillic[][] = { "Й","Ц","У","К","Е","Н","Г","Ш","Щ","З","Х","Ъ","Ф","Ы","В","А","П","Р","О","Л","Д","Ж","Э","Я",
"Ч","С","М","И","Т","Ь","Б","Ю","Ю","й","ц","у","к","е","н","г","ш","щ","з","х","ъ","ф","ы","в",
"а","п","р","о","л","д","ж","э","я","ч","с","м","и","т","ь","б","ю","Ё","ё","і","І","Є","є","Ї","ї" }
#else
new g_regex_pattern[] = "^^[\w\dа-яА-Я\-\'\<\>\{\}\[\]\(\)\*\.\\\?\$\|\/\,\:\;\~\`\@\#\!\&\=\^^\ \і\І\ї\Ї\є\Є\Ё\ё]+$"
#endif
При компиляции будут ошибки:
Код
yet_another_spamguard.sma(542) : warning 203: symbol is never used: "regex_handle"
yet_another_spamguard.sma(542) : warning 203: symbol is never used: "error"
yet_another_spamguard.sma(542) : warning 203: symbol is never used: "ret"
Но они не критичны, все прекрасно работает.

понадобилось мне это, т.к использую Rehlds, там пофикшено использование спец. символов и юникода в никах, а значит лишний повторяющийся функционал плагина ни к чему.
Отредактировал: tenb63rus, - 2.4.2016, 23:43