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

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

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

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

Как сделать цветное сообщение

Статус пользователя Karpen
сообщение 1.6.2011, 18:48
Сообщение #1


Стаж: 15 лет

Сообщений: 368
Благодарностей: 27
Полезность: < 0

Как зделать цветное сообщение в чате?

Я хочу сделать так, чтоб когда человек писал в чат мат, то его мат был красным цветом, а всё другое сообщение, стандартным...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Rejiser
сообщение 1.6.2011, 19:14
Сообщение #2


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

colorchat.inc
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Karpen
сообщение 1.6.2011, 19:24
Сообщение #3


Стаж: 15 лет

Сообщений: 368
Благодарностей: 27
Полезность: < 0

Rejiser,
подробней пожалуйста.
мне просто сделать 1ну строку цветной и всё.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rejiser
сообщение 1.6.2011, 19:36
Сообщение #4


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

Karpen,
https://c-s.net.ua/forum/ipb.html?s=&sh...st&p=161842
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 1.6.2011, 19:50
Сообщение #5
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Karpen,
Заносишь матерные слова в массив; хукаешь чат; используя цикл, функцией replace_all раскрашиваешь слова в сообщении, которые совпадают со словами в массиве, с помощью события TeamInfo; блокируешь стандартное сообщение с помощью события SayText.

Возможно выполнить в оптимизированном варианте.

Добавлено:
Ах да, можно использовать colorchat.inc. Я почему-то подумал, что используя его не получится сделать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rejiser
сообщение 1.6.2011, 20:30
Сообщение #6


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

STR@TEG, я так понял у него есть уже то, что ему нужно и ему осталось раскрасить сообщения
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Karpen
сообщение 2.6.2011, 6:59
Сообщение #7


Стаж: 15 лет

Сообщений: 368
Благодарностей: 27
Полезность: < 0

STR@TEG,
Смотри:
Исходник
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define MAX_WORDS 256

new PLUGIN[]=""
new AUTHOR[]=""
new VERSION[]=""

new mat_base[127] = "addons/amxmodx/configs/antimat/mat.ini"
new off_mat_base[127] = "addons/amxmodx/configs/antimat/off_mat.ini"

new mat[MAX_WORDS][32]
new mask[MAX_WORDS][32]
new off_mat[MAX_WORDS][32]
new num_words = 0
new num_off_mat = 0
new off_mat_flag = 0

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_clcmd("say", "mat_filter")
    register_clcmd("say_team", "mat_filter_team")

    register_cvar("amx_antimat_punish", "1")        //вкл. выкл. плагин
    
    read_list(mat_base, 1)
    read_list(off_mat_base, 0)
}

comp_off_mat(text[], pos)
{
    off_mat_flag = 0
    new k, len, i, isk[32]

    for(k = 0; k <= num_off_mat; k++)
    {
        len = strlen(off_mat[k])
        i = containi(text, off_mat[k])
        isk = off_mat[k]

        if((i >= 0) &&(i <= pos) &&(i + len >= pos))
        {
            off_mat_flag = 1
        }
    }
}

public mat_filter(id)
{
    new said[128], pos
    read_args(said, 128)

    new name[32]
    get_user_name(id, name, 31)

    for(new i = 0; i <= num_words; i++)
    {
        pos = containi(said, mat[i])

        if(pos != -1)
        {
            comp_off_mat(said, pos)

            if(off_mat_flag != 1)
            {
                replace(said, 128, mat[i], mask[i])

                if(is_user_alive(id) == 0)
                {
                    client_cmd(id, "say %s", said)
                
                    return PLUGIN_HANDLED
                }
                else
                {
                    client_cmd(id, "say %s", said)

                    return PLUGIN_HANDLED
                }
            }
        }
    }

    return PLUGIN_CONTINUE
}

public mat_filter_team(id)
{
    new said[128]
    read_args(said, 128)
    new name[32]
    get_user_name(id, name, 31)

    for(new i = 0; i <= num_words; i++)
    {
        new pos = containi(said, mat[i])

        if(pos != -1)
        {
            comp_off_mat(said, pos)

            if(off_mat_flag != 1)
            {
                replace(said, 128, mat[i], mask[i])

                if(is_user_alive(id) == 0)
                {
                    client_cmd(id, "say_team %s", said)

                    return PLUGIN_HANDLED
                }
                else
                {
                    client_cmd(id, "say_team %s", said)

                    return PLUGIN_HANDLED
                }
            }
        }
    }

    return PLUGIN_CONTINUE
}

read_list(filename[], flag)
{
    if(flag > 0)
    {
        num_words = 0

        if(file_exists(filename))
        {
            new readdata[64], len, pos = 0

            while(num_words < MAX_WORDS && read_file(filename, pos++, readdata, 63, len))
            {
                parse(readdata, mat[num_words], 31, mask[num_words], 31)
                ++num_words
            }
        }
        else
            log_message("[AntiMat] Error: mat.ini not found!")
    }
    else
    {
        num_off_mat = 0

        if(file_exists(filename))
        {
            new readdata[32], len, pos = 0

            while(num_off_mat < MAX_WORDS && read_file(filename, pos++, readdata, 32, len))
            {
                off_mat[num_off_mat] = readdata
                ++num_off_mat
            }
        }
        else
            log_message("[AntiMat] Error: off_mat.ini not found!")
    }

    return PLUGIN_CONTINUE
}


И что мне надо изменить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Karpen
сообщение 2.6.2011, 20:37
Сообщение #8


Стаж: 15 лет

Сообщений: 368
Благодарностей: 27
Полезность: < 0

кто может помочь?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Karpen
сообщение 3.6.2011, 19:47
Сообщение #9


Стаж: 15 лет

Сообщений: 368
Благодарностей: 27
Полезность: < 0

STR@TEG,
помоги, ты хорошо в скриптах шаришь...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: