Преобразование цвета textdraw текста в HEX/RGB(A)

sVor

Активный
Автор темы
135
85
Версия MoonLoader
.027.0-preview
Как преобразовать полученный в ходе хука через ивенты цвет того же текста в текстдраве в HEX или RGB(A)? Изначально он имеет формат "-16777216" (черный) "-1" (белый) и тд.
Через формат (string.format("%X", data.letterColor))) делаю из него шестнадцатеричное, но при изменении цветов, приходится угадывать через палитру, из какого места брать значение для получения подходящего цвета.
Цвета, получаемые через string.format("%X", data.letterColor)): FFFFFFFFFF000000 (черный цвет), FFFFFFFFFF00FF00 (зелёный), FFFFFFFFFF0000FF (красный), FFFFFFFFFF00FFFF (жёлтый), FFFFFFFFFFFF00FF (розовый)
Возможно есть способы прямой конвертации?
 
Последнее редактирование:

sVor

Активный
Автор темы
135
85
тогда так попробуй
Lua:
local colore = string.gsub(string.format("%X", select(3, sampTextdrawGetLetterSizeAndColor(id))), "..(......)", "%1")
sampAddChatMessage('Цвет:{'..colore..'} '..colore,-1)
Отлично работает в onTextDrawSetString или onSendClickTextDraw.
Но при попытке проверить в onShowTextDraw, возвращает 0
 

ARMOR

kjor32 is legend
Модератор
4,851
6,081
Нет
Чёрный цвет выходит ff0000
Потому что не 6, а 8 должно быть. 0xFF000000 - Черный 0x00000000 - прозрачный. Первые два байта альфа, но я не помню точно влияет ли альфа на текстдравы
 
  • Нравится
Реакции: D3.Pheonix

sVor

Активный
Автор темы
135
85
Значит не такой уж и черный
Использование string.format("%X", data.letterColor)) выводит FFFFFFFFFF000000 (черный цвет), FFFFFFFFFF00FF00 (зелёный), FFFFFFFFFF0000FF (красный), FFFFFFFFFF00FFFF (жёлтый), FFFFFFFFFFFF00FF (розовый)
Потому что не 6, а 8 должно быть. 0xFF000000 - Черный 0x00000000 - прозрачный. Первые два байта альфа, но я не помню точно влияет ли альфа на текстдравы
Всё равно, какие-то цвета выводятся правильно, какие-то нет
 
Последнее редактирование: