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

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

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

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

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

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

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

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

Реклама в чате (цвета).

Статус пользователя c0o_PeR
сообщение 4.4.2013, 22:30
Сообщение #1
Стаж: 15 лет

Сообщений: 358
Благодарности: выкл.

Всем доброго времени суток, Уважаемые форумчане.

Вообщем, мой вопрос состоит в следующим.

Как сделать, в чате рекламу через плагин "ad_manager", чтоб выделялось определенным цветом?

Допустим за любую команду был только красный. А то если ставлю !t - то за кт пишет синим, а я хочу чтоб было все именно красным и обычным цветами.

Пример:
Прикрепленное изображение

Заранее спасибо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя logotip
сообщение 4.4.2013, 22:46
Сообщение #2
Стаж: 14 лет

Сообщений: 116
Благодарностей: 22
Полезность: 45

!g привет (цвет будет зеленым)
!t привет (цвет будет в зависимости от команды, терры-красный, контры-синий)
!y привет (Желтый цвет)


просто перед текстом надо указывать !g или !t или !y

Чтобы было как у тебя на картинке нужно сделать:

!y[!tСервер!y] !g За високий пинг кик!


Фраза "за высокий пинг кик" будет зеленого цвета

Отредактировал: logotip, - 4.4.2013, 22:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя offtop2012
сообщение 4.4.2013, 22:49
Сообщение #3


Стаж: 13 лет

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

В исходнике поменять цвет на RED
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0o_PeR
сообщение 5.4.2013, 17:41
Сообщение #4
Стаж: 15 лет

Сообщений: 358
Благодарности: выкл.

Цитата(offtop2012 @ 4.4.2013, 23:49) *
В исходнике поменять цвет на RED


Извините, пожалуйста не нашел в коде ничего подобного.

Не могли бы Вы помочь с плагином?

SMA файл:
Код
//================================
// Название: Ad Manager
// Версия плагина: 0.5
// Версия перевода: 1.0.0
// Автор перевода: MastaMan
// Источник: amx-server.blogspot.com
//================================

#include <amxmodx>
#include <amxmisc>

#pragma semicolon 1

new const PLUGIN[] = "Autoresponder/Advertiser";
new const VERSION[] = "0.5";
new const AUTHOR[] = "MaximusBrood";

#define NORM_AD 0
#define SAY_AD 1

#define COND 0
#define STORE 1

#define COND_TKN '%'
#define SAY_TKN '@'

#define COND_STKN "%"
#define DEVIDE_STKN "~"
#define SAY_STKN "@"

//-.-.-.-.-.-.-.-.Константы.-.-.-.-.-.-.-.-.-.-.

//Максимальный размер объявления
#define MAXADS 256

//Минимальная разница между показами двух различных объявлений (значение с плавающей точкой)
new const Float:RAND_MIN = 30.0;

//Максимальная разница между показами двух различных объявлений (значение с плавающей точкой)
new const Float:RAND_MAX = 40.0;

//-.-.-.-.-.-.-.-.Окончание констант..-.-.-.-.-.-.-.

//Масивы
new sayConditions[MAXADS][3][32];
new normConditions[MAXADS][3][32];
new normStore[MAXADS][128];
new sayStore[MAXADS][2][128];

new gmsgSayText;

//Счетчики
new adCount[2] = {0, 0};

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_cvar("ad_react_all", "1");
    
    gmsgSayText = get_user_msgid("SayText");
    
    register_clcmd("say","eventSay");
    register_clcmd("say_team","eventSay");
    
    //Задержка загрузки на 10 сек, что бы не создвать нагрузку
    //На только что загруженную карту.
    //Перерыв, что бы показать игрокам, которые подключились позднее @ mapchange
    set_task(10.0, "load");
}

public load()
{
    //Загрузка данных
    new filepath[64];
    get_configsdir(filepath, 63);
    format(filepath, 63, "%s/advertisements.ini", filepath);
    
    if(file_exists(filepath))
    {
        new output[512], conditions[128], temp[64], type;
        
        //Открытие файла
        new fHandle = fopen(filepath, "rt");
        
        //Проверка на ошибки
        if(!fHandle)
            return;
        
        //Показ по кругу
        for(new a = 0; a < MAXADS && !feof(fHandle); a++)
        {
            //Получение линии
            fgets(fHandle, output, 511);
            
            
            //Работать без комментариев
            if(output[0] == ';' || !output[0] || output[0] == ' ' || output[0] == 10)
            {
                //Line is not counted
                a--;
                continue;
            }
            
            //Установка типа
            type = 0;
            
            //Проверка условий
            if(output[0] == COND_TKN)
            {
                //Игнорирование строки условий
                split(output, conditions, 127, output, 511, DEVIDE_STKN);
                
                //Determine if its say check or normal ad
                type = output[0] == SAY_TKN ? 1 : 0;
                
                //Использование условия
                for(new b = 0; b < 3; b++)
                {
                    new sort[16], cond[32], numb;
                    
                    //Удаление % в строчках
                    conditions[0] = ' ';
                    trim(conditions);
                    
                    //Получение одного условия со строки
                    split(conditions, temp, 64, conditions, 127, COND_STKN);
                    
                    split(temp, sort, 15, cond, 31, " ");
                    
                    if(equali(sort, "map"))
                    {
                        numb = 0;
                    } else if(equali(sort, "min_players"))
                    {
                        numb = 1;
                    } else if(equali(sort, "max_players"))
                    {
                        numb = 2;
                    } else
                    {
                        continue;
                    }
                    
                    //Copy it to its final resting place ^^
                    setString(COND, type, cond, adCount[type], numb);
                    
                    //Exit if it hasn't got more conditions
                    if(!conditions[0])
                        break;
                }
            }
            
            if(type == 0)
                type = output[0] == SAY_TKN ? 1 : 0;
            
            if(type == SAY_AD)
            {
                new said[32], answer[128];
                
                //Remove the @ from line
                output[0] = ' ';
                trim(output);
                
                split(output, said, 31, answer, 127, DEVIDE_STKN);
                
                //Apply color
                setColor(answer, 127);
                
                //Save it
                setString(STORE, SAY_AD, said, adCount[SAY_AD], 0);
                setString(STORE, SAY_AD, answer, adCount[SAY_AD], 1);
            } else//if(type == NORM_AD)
            {
                //Apply color
                setColor(output, 511);
                
                //Save it
                setString(STORE, NORM_AD, output, adCount[NORM_AD]);
            }
            
            //Increment the right counter
            adCount[NORM_AD] += type == NORM_AD ? 1 : 0;
            adCount[SAY_AD]  += type == SAY_AD  ? 1 : 0;
        }
        
        //Set a first task, if there are any normal ads
        if(adCount[NORM_AD] != 0)
            set_task(random_float(RAND_MIN, RAND_MAX), "eventTask");
        
        //Close file to prevent lockup
        fclose(fHandle);    
    }
}

new currAd = -1;

public eventTask()
{
    //Go past all ads and check conditions
    for(new a = 0; a < adCount[NORM_AD]; a++)
    {
        //Put current ad to the next one
        currAd = currAd == adCount[NORM_AD] - 1 ? 0 : currAd + 1;
        
        if(checkConditions(currAd, NORM_AD))
        {
            //Display the ad
            new data[3];
            data[0] = currAd;
            data[1] = NORM_AD;
            data[2] = 0;
            displayAd(data);
            
            break;
        }
    }
        
    //Set a new task
    set_task(random_float(RAND_MIN, RAND_MAX), "eventTask");
    
    return PLUGIN_CONTINUE;
}

public eventSay(id)
{
    //If nothing is said, don't check
    if(adCount[SAY_AD] == 0)
        return PLUGIN_CONTINUE;
    
    new talk[64], keyword[16];
    read_args(talk, 63);
        
    //En nu rennen voor jullie zakgeld klootzjakken!
    for(new a = 0; a < adCount[SAY_AD]; a++)
    {
        //Get the string
        getString(STORE, SAY_AD, keyword, 15, a, 0);
        
        if(containi(talk, keyword) != -1)
        {
            //Check the rest if it fails to conditions
            if(!checkConditions(a, SAY_AD))
                continue;
            
            new data[3];
            data[0] = a;
            data[1] = SAY_AD;
            data[2] = id;
            
            //Set the task
            set_task(0.3, "displayAd", 0, data, 3);
            
            //Don't execute more of them
            break;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public displayAd(params[])
{
    //Get the string that is going to be displayed
    new message[128];
    getString(STORE, params[1], message, 127, params[0], params[1]);
    
    //If its enabled by cvar and id is set, display to person who triggered message only
    if(get_cvar_num("ad_react_all") == 0 && params[2] != 0)
    {
        message_begin(MSG_ONE, gmsgSayText, {0,0,0}, params[2]);
        write_byte(params[2]);
        write_string(message);
        message_end();
    
    } else
    {
        //Display the message to everyone
        new plist[32], playernum, player;
        
        get_players(plist, playernum, "c");
    
        for(new i = 0; i < playernum; i++)
        {
            player = plist[i];
            
            message_begin(MSG_ONE, gmsgSayText, {0,0,0}, player);
            write_byte(player);
            write_string(message);
            message_end();
        }
    }
    
    return PLUGIN_HANDLED;
}

//---------------------------------------------------------------------------
//                                STOCKS
//---------------------------------------------------------------------------

stock checkConditions(a, type)
{
    //Mapname
    if((type == NORM_AD && normConditions[a][0][0]) || (type == SAY_AD && sayConditions[a][0][0]))
    {
        new mapname[32];
        get_mapname(mapname, 31);
        
        if(! (type == NORM_AD && equali(mapname, normConditions[a][0]) ) || (type == SAY_AD && equali(mapname, sayConditions[a][0]) ) )
            return false;
    }
    
    //Min Players
    if((type == NORM_AD && normConditions[a][1][0]) || (type == SAY_AD && sayConditions[a][1][0]))
    {
        new playersnum = get_playersnum();
        
        if( (type == NORM_AD && playersnum < str_to_num(normConditions[a][1]) ) || (type == SAY_AD && playersnum < str_to_num(sayConditions[a][1]) ) )
            return false;
    }
    
    //Max Players
    if((type == NORM_AD && normConditions[a][2][0]) || (type == SAY_AD && sayConditions[a][2][0]))
    {
        new playersnum = get_playersnum();
        
        if( (type == NORM_AD && playersnum > str_to_num(normConditions[a][2]) ) || (type == SAY_AD && playersnum > str_to_num(sayConditions[a][2]) ) )
            return false;
    }
    
    //If everything went fine, return true
    return true;
}    

stock setColor(string[], len)
{
    if (contain(string, "!t") != -1 || contain(string, "!g") != -1 || contain(string,"!n") != -1)
    {
        //Some nice shiny colors ^^
        replace_all(string, len, "!t", "^x03");
        replace_all(string, len, "!n", "^x01");
        replace_all(string, len, "!g", "^x04");
        
        //Work away a stupid bug
        format(string, len, "^x01%s", string);
    }
}

stock getString(mode, type, string[], len, one, two = 0)
{
    //server_print("mode: %d type: %d len: %d one: %d two %d", mode, type, len, one, two);
    
    //Uses the fact that a string is passed by reference
    if(mode == COND)
    {
        if(type == NORM_AD)
        {
            copy(string, len, normConditions[one][two]);
        } else//if(type = SAY_AD)
        {
            copy(string, len, sayConditions[one][two]);
        }
    } else//if(mode == STORE)
    {
        if(type == NORM_AD)
        {
            copy(string, len, normStore[one]);
        } else//if(type == SAY_AD)
        {
            copy(string, len, sayStore[one][two]);
        }
    }
}

stock setString(mode, type, string[], one, two = 0)
{
    if(mode == COND)
    {
        if(type == NORM_AD)
        {
            copy(normConditions[one][two], 31, string);
        } else//if(type = SAY_AD)
        {
            copy(sayConditions[one][two], 31, string);
        }
    } else//if(mode == STORE)
    {
        if(type == NORM_AD)
        {
            copy(normStore[one], 127, string);
        } else//if(type == SAY_AD)
        {
            copy(sayStore[one][two], 127, string);
        }
    }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xoomie
сообщение 5.4.2013, 18:02
Сообщение #5


Стаж: 13 лет

Сообщений: 136
Благодарностей: 15
Полезность: 93

А причем тут исходник вроде уже показали как делать !n[!gСервер!n] !tКрасный !gЗеленый !n Normal
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mistermaxko
сообщение 5.4.2013, 18:12
Сообщение #6


Стаж: 14 лет

Сообщений: 133
Благодарностей: 23
Полезность: 141

Цитата(xoomie @ 5.4.2013, 18:02) *
А причем тут исходник вроде уже показали как делать !n[!gСервер!n] !tКрасный !gЗеленый !n Normal

Прочитайте внимательнее перый пост ( ему нужен красный цвет для любой команды , через !t этого не сделать так как за CT будет цвет синий)

Отредактировал: mistermaxko, - 5.4.2013, 18:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0o_PeR
сообщение 5.4.2013, 18:13
Сообщение #7
Стаж: 15 лет

Сообщений: 358
Благодарности: выкл.

Цитата(xoomie @ 5.4.2013, 19:02) *
А причем тут исходник вроде уже показали как делать !n[!gСервер!n] !tКрасный !gЗеленый !n Normal


Извините, но хочу именно только красный цвет, чтоб синего и зеленого цвета не было.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serhiyyy
сообщение 5.4.2013, 19:52
Сообщение #8
Стаж: 16 лет

Сообщений: 402
Благодарностей: 48
Полезность: 114

!y врятли поможет

Отредактировал: Serhiyyy, - 5.4.2013, 19:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xoomie
сообщение 9.4.2013, 7:15
Сообщение #9


Стаж: 13 лет

Сообщений: 136
Благодарностей: 15
Полезность: 93

Цитата(c0o_PeR @ 5.4.2013, 20:13) *
Извините, но хочу именно только красный цвет, чтоб синего и зеленого цвета не было.

Ну в таком случае надо редактировать исходник sma плагина!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя H@meleoN
сообщение 9.4.2013, 7:20
Сообщение #10


Стаж: 15 лет

Сообщений: 50
Благодарностей: 7
Полезность: 93

Цвет меняешь в файле "advertisements.ini"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xoomie
сообщение 9.4.2013, 7:21
Сообщение #11


Стаж: 13 лет

Сообщений: 136
Благодарностей: 15
Полезность: 93

Цитата(H@meleoN @ 9.4.2013, 8:20) *
Цвет меняешь в файле "advertisements.ini"

Пост внимательней почитайте что он хочет :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя H@meleoN
сообщение 9.4.2013, 7:32
Сообщение #12


Стаж: 15 лет

Сообщений: 50
Благодарностей: 7
Полезность: 93

Цитата(xoomie @ 9.4.2013, 9:21) *
Пост внимательней почитайте что он хочет :)

завтыкал))
Тогда нужно исходник ковырять
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xoomie
сообщение 9.4.2013, 7:52
Сообщение #13


Стаж: 13 лет

Сообщений: 136
Благодарностей: 15
Полезность: 93

Цитата(H@meleoN @ 9.4.2013, 9:32) *
завтыкал))
Тогда нужно исходник ковырять

Я про это же:)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cstriker
сообщение 9.4.2013, 9:14
Сообщение #14


Иконка группы

Стаж: 13 лет

Сообщений: 1233
Благодарностей: 586
Полезность: 869

Это вобще возможно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
urpok
сообщение 9.4.2013, 10:37
Сообщение #15
Стаж: 13 лет

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

Цитата
Это вобще возможно?


Возможно всё, было бы только желание...

А за денежку, можно и в космос полететь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 9.4.2013, 12:27
Сообщение #16
Стаж: 14 лет

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

Цитата(HeBuguMka @ 9.4.2013, 10:37) *
Возможно всё, было бы только желание...

А за денежку, можно и в космос полететь.

За 6 000 000 $ уже скоро на луну можно будет слетать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xoomie
сообщение 9.4.2013, 15:33
Сообщение #17


Стаж: 13 лет

Сообщений: 136
Благодарностей: 15
Полезность: 93

Цитата(eckoecko @ 9.4.2013, 14:27) *
За 6 000 000 $ уже скоро на луну можно будет слетать.

Ребята тут форум о Amxx а не о космосах :))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя f1nik
сообщение 9.4.2013, 15:43
Сообщение #18


Иконка группы

Стаж: 15 лет

Сообщений: 1862
Благодарностей: 932
Полезность: 1010

Где модеры? Тема мейком попахивает....
Никто даже не читает ТС...

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