Shot | Дата: Четверг, 09.10.2008, 17:39:58 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Есть на форуме знатоки языка ?! Вообще нужно что бы плагин за место мата писал не, то что ему заданно, а кикал с сервера. К плагину идут еще два файла: replacements.ini - сюда пишится, то что за место мата в эфир будет идти. swearwords.ini - черный список. А вот собственно сам код Code #include <amxmodx> #include <amxmisc>
// max number of words in swear list and max number of lines in replace list #define MAX_WORDS 150 #define MAX_REPLACE 50
// global variables for storing the swear list and replace list and their respective number of lines new g_swearWords[MAX_WORDS][20] new g_replaceLines[MAX_REPLACE][192] new g_swearNum new g_replaceNum
public plugin_init() { register_plugin ( "Swear Replacement", "1.5", "kaboomkazoom") register_clcmd ( "say", "swearcheck" ) register_clcmd ( "say_team", "swearcheck" ) register_concmd ( "amx_addswear", "add_swear", ADMIN_LEVEL_A , "< swear word to add >" ) register_concmd ( "amx_addreplacement", "add_replacement", ADMIN_LEVEL_A , "< replacement line to add >" ) readList() }
readList() { new Configsdir[64] new swear_file[64], replace_file[64] get_configsdir( Configsdir, 63 ) format(swear_file, 63, "%s/swearwords.ini", Configsdir ) format(replace_file, 63, "%s/replacements.ini", Configsdir )
if ( !file_exists(swear_file) ) { server_print ( "==========================================================" ) server_print ( "[Swear Replacement] %s file not found", swear_file ) server_print ( "==========================================================" ) return } if ( !file_exists(replace_file) ) { server_print ( "==========================================================" ) server_print ( "[Swear Replacement] %s file not found", replace_file ) server_print ( "==========================================================" ) return } new len, i=0 while( i < MAX_WORDS && read_file( swear_file, i , g_swearWords[g_swearNum], 19, len ) ) { i++ if( g_swearWords[g_swearNum][0] == ';' || len == 0 ) continue g_swearNum++ }
i=0 while( i < MAX_REPLACE && read_file( replace_file, i , g_replaceLines[g_replaceNum], 191, len ) ) { i++ if( g_replaceLines[g_replaceNum][0] == ';' || len == 0 ) continue g_replaceNum++ }
server_print ( "======================================================" ) server_print ( "[Swear Replacement] loaded %d Swear words", g_swearNum ) server_print ( "[Swear Replacement] loaded %d Replacement Lines", g_replaceNum ) server_print ( "======================================================" )
}
public client_connect(id) { new new_name[32] get_user_name ( id, new_name, 31 )
string_cleaner ( new_name )
new i = 0 while ( i < g_swearNum ) { if ( containi ( new_name, g_swearWords[i++] ) != -1 ) { client_cmd ( id, "name ^"No Swear^"" )
return PLUGIN_CONTINUE } } return PLUGIN_CONTINUE }
public swearcheck(id) { if ( (get_user_flags(id)&ADMIN_LEVEL_A) || !id ) return PLUGIN_CONTINUE
new said[192] read_args ( said, 191 )
string_cleaner ( said )
new i = 0 while ( i < g_swearNum ) { if ( containi ( said, g_swearWords[i++] ) != -1 ) { new j, playercount, players[32], user_name[32], random_replace = random ( g_replaceNum ) get_user_name ( id, user_name, 31 ) get_players ( players, playercount, "c" )
for ( j = 0 ; j < playercount ; j++) { if ( get_user_flags(players[j])&ADMIN_LEVEL_A ) client_print( players[j], print_chat, "[Swear Replacement] %s : %s",user_name, said ) } copy ( said, 191, g_replaceLines[random_replace] ) new cmd[10] read_argv ( 0, cmd, 9) engclient_cmd ( id ,cmd ,said )
return PLUGIN_HANDLED } } return PLUGIN_CONTINUE }
public add_swear(id) { if ( ( !(get_user_flags(id)&ADMIN_LEVEL_A) && id ) ) { client_print ( id, print_console, "[Swear Replacement] Access Denied" ) return PLUGIN_HANDLED }
if ( read_argc() == 1 ) { client_print ( id, print_console, "[Swear Replacement] Arguments not provided" ) return PLUGIN_HANDLED }
new Configsdir[64] new swear_file[64] get_configsdir( Configsdir, 63 ) format ( swear_file, 63, "%s/swearwords.ini", Configsdir )
read_args ( g_swearWords[g_swearNum], 19 ) write_file( swear_file, "" ) write_file( swear_file, g_swearWords[g_swearNum] ) g_swearNum++
id ? client_print ( id, print_console, "[Swear Replacement] Swear word added to List" ) : server_print ( "[Swear Replacement] Swear word added to file" )
return PLUGIN_HANDLED }
public add_replacement(id) { if ( ( !(get_user_flags(id)&ADMIN_LEVEL_A) && id ) ) { client_print ( id, print_console, "[Swear Replacement] Access Denied" ) return PLUGIN_HANDLED }
if ( read_argc() == 1 ) { client_print ( id, print_console, "[Swear Replacement] Arguments not provided" ) return PLUGIN_HANDLED }
new Configsdir[64] new replace_file[64] get_configsdir( Configsdir, 63 ) format ( replace_file, 63, "%s/replacements.ini", Configsdir )
read_args ( g_replaceLines[g_replaceNum], 191 ) write_file( replace_file, "" ) write_file( replace_file, g_replaceLines[g_replaceNum] ) g_replaceNum++
id ? client_print ( id, print_console, "[Swear Replacement] Replacement Line added to List" ) : server_print ( "[Swear Replacement] Replacement Line added to file" )
return PLUGIN_HANDLED }
public string_cleaner( str[] ) { new i, len = strlen ( str ) while ( contain ( str, " " ) != -1 ) replace ( str, len, " ", "" )
len = strlen ( str ) while ( contain ( str, "|<" ) != -1 ) replace ( str, len, "|<", "k" )
len = strlen ( str ) while ( contain ( str, "|>" ) != -1 ) replace ( str, len, "|>", "p" )
len = strlen ( str ) while ( contain ( str, "()" ) != -1 ) replace ( str, len, "()", "o" )
len = strlen ( str ) while ( contain ( str, "[]" ) != -1 ) replace ( str, len, "[]", "o" )
len = strlen ( str ) while ( contain ( str, "{}" ) != -1 ) replace ( str, len, "{}", "o" )
len = strlen ( str ) for ( i = 0 ; i < len ; i++ ) { if ( str[i] == '@' ) str[i] = 'a'
if ( str[i] == '$' ) str[i] = 's'
if ( str[i] == '0' ) str[i] = 'o'
if ( str[i] == '7' ) str[i] = 't'
if ( str[i] == '3' ) str[i] = 'e'
if ( str[i] == '5' ) str[i] = 's'
if ( str[i] == '<' ) str[i] = 'c'
if ( str[i] == '3' ) str[i] = 'e'
} } Добавлено (2008-10-09, 5:39 Pm) ---------------------------------------------
Quote (Shot) Есть на форуме знатоки языка ?! Эх, думал хотя бы здесь помогут, видимо нет таких ...
Сообщение отредактировал Shot - Четверг, 09.10.2008, 17:39:09 |
|
| |
Shot | Дата: Пятница, 10.10.2008, 05:55:06 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 7
Статус: Не в сети
| Оболдеть, то что надо, спасибо тебе огромное добрый человек  Добавлено (2008-10-10, 5:55 Am) --------------------------------------------- Подскажи пожалуйсто вот это : Code // max number of words in swear list and max number of lines in replace list #define MAX_WORDS 150 #define MAX_REPLACE 50
// global variables for storing the swear list and replace list and their respective number of lines new g_swearWords[MAX_WORDS][20] new g_replaceLines[MAX_REPLACE][192] Это размер фалов по КБ или по строчкам ? И что изменить надо 150 или 20 ? Спасибо 
|
|
| |
PomanoB | Дата: Пятница, 10.10.2008, 06:59:12 | Сообщение # 4 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Это максимальное число заменяеных слов, и строк на которые они заменяются соответственно Кстати в версии кика последний параметр и файл вообще не нужны, вечером приеду, уберу
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Пятница, 10.10.2008, 07:24:55 |
|
| |
Hatebreeder | Дата: Четверг, 30.10.2008, 16:29:28 | Сообщение # 5 |
 Подполковник
Группа: Пользователи
Сообщений: 120
Статус: Не в сети
| Я хотел бы такой же плагин, но чтобы кикал если в нике мат, а на чат у меня другой стоит.
|
|
| |