Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 22
  1. #1
    Аватар для Alexey_Nikiforov
    Уровень знаний 1

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

    Макросы цветов.

    Всем доброго вечера суток.
    Назрел вопрос.
    Как создать универсальные макросы для цветов.
    Что бы их можно было использовать везде.
    Пример обычного красного цвета.
    Код:
    #define COLOR_RED     0xFF0000AA
    Где 0x указывает систему исчисления.
    FF0000 - это у нас цвет в HEX
    AA - прозрачность цвета от 00 до FF

    Это макрос отлично подойдет для отправки цветного текста в чат:
    Код:
    SendClientMessage(playerid, COLOR_RED, "Красный текст");
    Хорошо но как быть если нам надо сделать его разноцветным:
    Код:
    SendClientMessage(playerid, COLOR_RED, "Welcome to {00FF00}M{FFFFFF}a{FF0000}r{FFFFFF}c{00FF00}o{FFFFFF}'{FF0000}s {FFFFFF}B{00FF00}i{FFFFFF}s{FF0000}t{FFFFFF}r{00FF00}o{FFFFFF}!");
    Это жутко не удобно.
    Сделаем макрос:
    Код:
    #define COLOR_RED     {FF0000}
    Теперь наши макросы будут конфликтовать.
    Как же так сделать что бы нам было удобно работать и сообщениях и при создании текст дравов.
    Код:
    TextDrawColor(Textdraw0, COLOR_WHITE);
    тут еще более менее удобно использовать макросы.
    Код:
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER);
    а вот тут где требуется настройка прозрачности уже сложнее.

    Желательно бы сделать что бы прибавлять нужную прозрачность в ручную. к примеру.
    Код:
    #define COLOR_RED     0xFF0000
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER+35);
    Как так сделать кто подскажет?


  2. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    TextDrawBackgroundColor(Textdraw0COLOR_SILVER << 0xFF 35); 

  3. #3
    Аватар для Alexey_Nikiforov
    Уровень знаний 1

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

    Код:
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER+AA);
    p.s. Проверил не работает:
    Код:
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER << 0xFF + 35);  
    Последний раз редактировалось Alexey_Nikiforov; 18.02.2016 в 21:56.

  4. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Ой, то есть так:
    PHP код:
    TextDrawBackgroundColor(Textdraw0COLOR_SILVER << 0xAA); 

  5. 2 пользователя(ей) сказали cпасибо:
    Alexey_Nikiforov (19.02.2016) Nexius_Tailer (18.02.2016)
  6. #5
    Аватар для Alexey_Nikiforov
    Уровень знаний 1

    Статус
    Оффлайн
    Регистрация
    12.02.2016
    Сообщений
    61
    Репутация:
    1 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Ой, то есть так:
    PHP код:
    TextDrawBackgroundColor(Textdraw0COLOR_SILVER << 0xAA); 
    Как это работает хоть бы объяснил бы.

  7. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Alexey_Nikiforov Посмотреть сообщение
    Как это работает хоть бы объяснил бы.
    << - побитовый оператор, ищи уроки по ним.

  8. Пользователь сказал cпасибо:
    Alexey_Nikiforov (19.02.2016)
  9. #7
    Аватар для Alexey_Nikiforov
    Уровень знаний 1

    Статус
    Оффлайн
    Регистрация
    12.02.2016
    Сообщений
    61
    Репутация:
    1 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    << - побитовый оператор, ищи уроки по ним.
    Вот что их искать когда можешь сказать они у меня есть в блоге, не какой саморекламы.
    http://ziggi.org/pawn-pobitovye-operatory/

    И еще вопрос в примерах не нашел.
    Уместно применять сложение при таком действие:
    Код:
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER << 2 + 0xAA);
    Или лучше просто назначить нужное значение:
    Код:
    TextDrawBackgroundColor(Textdraw0, COLOR_SILVER << 2 =0xAA);
    В уроке просто не чего не сказано про: умножение, деление, сложение, вычитание битов.
    По этому и спрашиваю.

    p.s. Это не работает записал вот так:
    PHP код:
    TextDrawBackgroundColor(Textdraw00x00000035);
    TextDrawBackgroundColor(Textdraw10x00000000 << 0x35); 
    Тут (0x00000035 != 0x00000000 << 2 + 0x35)
    Так что что то ты не правильно опять написал.
    Последний раз редактировалось Alexey_Nikiforov; 19.02.2016 в 09:02.

  10. #8
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    << - побитовый оператор, ищи уроки по ним.
    Скинь ссылку на свой блог, не стесняйся. Там помнится мне имеется такое :)))))

  11. #9
    Аватар для Alexey_Nikiforov
    Уровень знаний 1

    Статус
    Оффлайн
    Регистрация
    12.02.2016
    Сообщений
    61
    Репутация:
    1 ±
    Цитата Сообщение от Alexey_Nikiforov Посмотреть сообщение
    Вот что их искать когда можешь сказать они у меня есть в блоге, не какой саморекламы.
    http://ziggi.org/pawn-pobitovye-operatory/
    Я давал ссылку постом выше.

  12. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Что-то я совсем поплыл...
    PHP код:
    COLOR_RED << 0xAA 
    или так:
    PHP код:
    (COLOR_RED << 8) + 0xAA 

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

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

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

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

Ваши права

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