AMX MOD X
Воскресенье, 10.08.2025, 00:07:59



Приветствую Вас Гость | RSS
[ Главная ] [ swear_replacement.sma плагин! - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
swear_replacement.sma плагин!
ShotДата: Четверг, 09.10.2008, 17:39:58 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Не в сети
Есть на форуме знатоки языка ?!
Вообще нужно что бы плагин за место мата писал не, то что ему заданно, а кикал с сервера.
К плагину идут еще два файла:

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
 
PomanoBДата: Четверг, 09.10.2008, 19:56:38 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Держи
Причину кика можно заменить в исходнике
По умолчанию стоит "HET MATY!"
Прикрепления: swear_replaceme.zip (2.0 Kb)


http://romanov4400.mybrute.com
 
ShotДата: Пятница, 10.10.2008, 05:55:06 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Не в сети
Оболдеть, то что надо, спасибо тебе огромное добрый человек :)

Добавлено (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
Репутация: 70
Статус: Не в сети
Это максимальное число заменяеных слов, и строк на которые они заменяются соответственно
Кстати в версии кика последний параметр и файл вообще не нужны, вечером приеду, уберу


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Пятница, 10.10.2008, 07:24:55
 
HatebreederДата: Четверг, 30.10.2008, 16:29:28 | Сообщение # 5
Подполковник
Группа: Пользователи
Сообщений: 120
Репутация: 0
Статус: Не в сети
Я хотел бы такой же плагин, но чтобы кикал если в нике мат, а на чат у меня другой стоит.
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2025