Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2
  1. #1
    Аватар для Salik_Davince
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.02.2014
    Сообщений
    93
    Репутация:
    1 ±

    Вопрос на счет цветов RGB

    Здравствуйте, имеется такой вопрос на счет fade-color-ов которые использует реализация ProxDetector (от Ziggi) -

      Открыть/закрыть

    PHP код:
    stock ProxDetector(playeridFloat:max_rangecolorstring[], Float:max_ratio 1.6)//thx to ziggy (chutka podredaktirovan)
    {

        if(
    Iter_Count(streamed_players[playerid]) == 0) return true;

        new
            
    Float:pos_x,
            
    Float:pos_y,
            
    Float:pos_z,
            
    Float:range,
            
    Float:range_ratio,
            
    Float:range_with_ratio,
            
    clr_rclr_gclr_b,
            
    Float:color_rFloat:color_gFloat:color_b;

        if (!
    GetPlayerPos(playeridpos_xpos_ypos_z)) {
            return 
    0;
        }

           
    SendClientMessage(playeridcolorstring);

        
    color_r float(color >> 24 0xFF);
        
    color_g float(color >> 16 0xFF);
        
    color_b float(color >> 0xFF);
        
    range_with_ratio max_range max_ratio;

        foreach(new 
    streamed_players[playerid]) {

            

            
    range GetPlayerDistanceFromPoint(ipos_xpos_ypos_z);
            if (
    range max_range) {
                continue;
            }

            
    range_ratio = (range_with_ratio range) / range_with_ratio;
            
    clr_r floatround(range_ratio color_r);
            
    clr_g floatround(range_ratio color_g);
            
    clr_b floatround(range_ratio color_b);

            
    SendClientMessage(i, (color 0xFF) | (clr_b << 8) | (clr_g << 16) | (clr_r << 24), string);
        }
        return 
    1;



    В данной реализации берется color и в зависимости от расстояния идет fade, но в примере если я сделаю такой формат -

    PHP код:
            format(t_stringsizeof(t_string), "%s {ffffff}say: %s"Player[playerid][name], text);
            
    ProxDetector(playerid25.0GetPlayerColor(playerid), t_string); 
    То будется фейдиться только первый колор (указываемый в параметре color) но не RGB в скобках.
    Возник вопрос, как же сделать реализацию и проверки на RGBA не стандартный (который указывается в параметре) а поиска RGB в скобках и их фейда (можно сделать другой параметр), либо фейда полностью и колора RGB в скобках, сам бы сделал, но в голову идут только НЕдо реализации и то могут работать не корректно...

    Проверку на if - else на дистанцию и фейд тоже не вариант.
    Последний раз редактировалось Salik_Davince; 14.04.2019 в 18:13.

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    С учётом того, что ProxDetector затемняет цвет индивидуально для каждого игрока в зависимости от расстояния, логичнее всего сделать затемнение цветов в тексте внутри той функции, т.е.:
    1. Добавить в функцию буфер для копии текста.
      1. new buffer[144 + 1];
    2. В этот буфер копировать указанный текст.
    3. Отыскивать в тексте (в копии) цветовые последовательности, начинающиеся на "{", считывать их в переменную, затемнять по тому же алгоритму, который уже есть в ProxDetector, и записывать обратно в копию текста (собственно, для того и нужна копия, чтобы не изменять цвета в оригинале текста).

    Другой вопрос, стоит ли того потраченное на реализацию время и увеличившаяся нагрузка от функции. Я бы на вашем месте отказался либо от цветовых последовательностей в тексте, либо от ProxDetector (для данного случая, не в общем смысле).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •