Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Антимат

, Помогите кое-что поменять .....
Статус пользователя KISLIY
сообщение 18.11.2007, 19:23
Сообщение #1


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Вообщем, мужики, выручайте! Я знаю, что спецов у вас много, и думаю поможете .....

Вообщем есть Плагин Антимата (swear_replacement)

Антимат отличный, но есть одно но.....

У меня есть база матных слов, и база слов, на которые мат будет изменяться. Но вот в чем проблема. Плагин сам выбирает, на какое слово из базы, ему заменить мат....

Тоесть я хочу сделать так:

Допустим в чате пишут слово oleni, а плагин вседа заменял это слово на - )I(uBOTHoe

Тоесть у меня есть 100 слов в базе и чтобы он заменя всегда на разные, а не генерировал, на какое ему поменять.

Код
[b]Вот код плагина:[/b]

#include <amxmodx>
#include <amxmisc>

#define MAX_WORDS 1000
#define MAX_REPLACE 1000

new g_swearWords[MAX_WORDS][1000]
new g_replaceLines[MAX_REPLACE][1000]
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 ( "[MATHbIe CJIoBa] %s He HaugeHo", swear_file )
        server_print ( "==========================================================" )
        return
    }
    
    if ( !file_exists(replace_file) )
    {
        server_print ( "==========================================================" )
        server_print ( "[AHTuMATHbIe CJIoBa] %s He HaugeHo", 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 ( "[MATHbIX CJIoB] 3arpy)I(eHo %d Swear words", g_swearNum )
    server_print ( "[AHTuMATHbIX CJIoB] 3arpy)I(eHo %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'

    }
}


Вообщем, ребят, помогите, очень прошу! Вроде понятно написал!

Уважаемая администарция, не судите строго если не так описал ....

ps.gif С меня +
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя MikeRussia
сообщение 18.11.2007, 19:59
Сообщение #2


Стаж: 18 лет

Сообщений: 379
Благодарностей: 30
Полезность: 3

1) Очень понравилось, как создана тема. Впервые!!! Кто-то все правильно и очень грамотно создал и описал тему. Спасибо, большое, очень порадовало.
2) + можно давать достигнув 20 сообщений, тебе еще рано
3) Найди на форуме человека по имени jas0n, он у нас лучше всех в этом разбирается


!
Аккаунт пользователя заблокирован до: 26.12.2281, 15:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя KISLIY
сообщение 18.11.2007, 20:05
Сообщение #3


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Цитата(MikeRussia @ 18.11.2007, 17:59) *
1) Очень понравилось, как создана тема. Впервые!!! Кто-то все правильно и очень грамотно создал и описал тему. Спасибо, большое, очень порадовало.
2) + можно давать достигнув 20 сообщений, тебе еще рано
3) Найди на форуме человека по имени jas0n, он у нас лучше всех в этом разбирается


MikeRussia

Спасибо тебе! Щас постараюсь написать в личку..... Надесь поможет.

Извините, по поводу + не знал!

А по поводу оформления темы, спасибо еще раз .....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jas0n
сообщение 19.11.2007, 12:38
Сообщение #4


Стаж: 19 лет

Сообщений: 878
Благодарностей: 385
Полезность: 688

Как обычно сижу на работе, так что проверить работоспособность возможности нет. Пробуй этот вариант. Сейчас плагин настроен на 100 строк в swearwords.ini и на 100 строк в replacemets.ini. И найдя слово в файле swearwords.ini в строке под номером n заменять его на строку под номером n из файла replacements.ini.
Прикрепленные файлы:
Прикрепленный файл  swear_replacement.rar ( 10,74 килобайт ) Кол-во скачиваний: 32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KISLIY
сообщение 19.11.2007, 19:34
Сообщение #5


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Цитата(jas0n @ 19.11.2007, 10:38) *
Как обычно сижу на работе, так что проверить работоспособность возможности нет. Пробуй этот вариант. Сейчас плагин настроен на 100 строк в swearwords.ini и на 100 строк в replacemets.ini. И найдя слово в файле swearwords.ini в строке под номером n заменять его на строку под номером n из файла replacements.ini.


Спасибо тебе за помошь, но вот смотри как он работает:

Он берет одно и тоже слово из заменяемого слова! Вот пример:

1. 6apaH - )I(uBoTHoe
2. dibil - )I(uBoTHoe
3. KpbIca - )I(uBoTHoe

Тоесть он заменяет весь мат, на одно и тоже слово....

А хотелось бы вот так:

1. 6apaH - )I(uBoTHoe
2. dibil - Dypak
3. KpbIca - Mouse

Но все равно, спасибо за помощь, что не поленился, а посмотрел.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ARLEKIN
сообщение 19.11.2007, 20:06
Сообщение #6


Стаж: 18 лет

Сообщений: 1409
Благодарностей: 425
Полезность: 716

jas0n специально написал чтобы протестировали плагин. А если ты внимательно прочитал его сообщение то заметил что каждое совпадение мата в файле swearwords.ini заменяется на слово в файле replacemets.ini, по номеру строки совпадения.
Ты проверь свой файл replacemets.ini, может там всего одно слово????
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jas0n
сообщение 19.11.2007, 20:30
Сообщение #7


Стаж: 19 лет

Сообщений: 878
Благодарностей: 385
Полезность: 688

Да, покажи как у тебя оформлены эти оба файла.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KISLIY
сообщение 19.11.2007, 22:04
Сообщение #8


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Цитата(jas0n @ 19.11.2007, 18:30) *
Да, покажи как у тебя оформлены эти оба файла.


Swearwords

Цитата
syka
bla
ypod
xuy


Replacements

Цитата
Cobaka
nJIa
KpaCaB4er
nunuCka


Допустим, я пишу - bla, он заменяет на KpaCaB4er, я пишу - ypod - заменяет опять на KpaCaB4er
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jas0n
сообщение 20.11.2007, 2:11
Сообщение #9


Стаж: 19 лет

Сообщений: 878
Благодарностей: 385
Полезность: 688

Хорошо, я тогда как сделаю и проверю, чтоб работало - отпишусь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KISLIY
сообщение 20.11.2007, 2:20
Сообщение #10


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Цитата(jas0n @ 20.11.2007, 0:11) *
Хорошо, я тогда как сделаю и проверю, чтоб работало - отпишусь.


Спасибо тебе большое, как 20 постов накоплю, сразу + поставлю :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jas0n
сообщение 22.11.2007, 21:57
Сообщение #11


Стаж: 19 лет

Сообщений: 878
Благодарностей: 385
Полезность: 688

Блин, туплю жостка! Держи вот этот вариант - все должно быть в ажуре.
Прикрепленные файлы:
Прикрепленный файл  swear_replacement.rar ( 2,01 килобайт ) Кол-во скачиваний: 39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KISLIY
сообщение 22.11.2007, 23:17
Сообщение #12


Стаж: 18 лет

Сообщений: 21
Благодарностей: 13
Полезность: 471

Спасибо тебе огромное! Все работает отлично! Просто супер!

Кстати вот еще интересно просто:

У меня в файле Swearwords есть слово bla
В файле Replacements замена этого слова на nuJI9Tb

И если я пишу:

Hy TbI u JIamep bla

Он заменает на nuJI9Tb

А возможно ли чтобы он заменял просто слово в тексте?

Тоесть Hy TbI u JIamep nuJI9Tb

Интересно, возможно ли так! Или это из области чуда?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jas0n
сообщение 23.11.2007, 11:28
Сообщение #13


Стаж: 19 лет

Сообщений: 878
Благодарностей: 385
Полезность: 688

Можно сделать из этого, а можно не изобретать самокат и воспользоваться плагином translit, новая версия 1.1 которого по заверениям автора работает на все 100%. Просто в translit.ini пропиши:
Код
; =================
; English| Translit|
; -----------------|
bla       | nuJl9Tb |
suka      | cL|yk0 |
ypod      | kpacaB4er |
xyu       | nunucka |

и будет желаемый результат, можеш даже на русский сразу всё переводить - 2-х дятлов одним выстрелом убьеш.
ps.gif translit.ini по-умолчанию рассчитан на 128 строк.
Цитата(ZmifF)
For example if you need to replace Eng symbol "a" to Eng symbol "b" in translit.ini:
a | b
If you need replace Eng symbols "abc" to "d":
abc | d
If you need replace eng symbols "hello" to "bye-bye":
hello | bye-bye
or "fuck" to "***"
fuck | ***
or "A" to "a"
A | a
that's all

Прикрепленные файлы:
Прикрепленный файл  translit.rar ( 3,62 килобайт ) Кол-во скачиваний: 17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: