Как узнать цвет строчки в чате?

KaKoSSiK

Новичок
Автор темы
2
0
Уважаемые форумчане, переписываю скрипт рп чата для аризоны, необходимо узнать цвет команд /me /do /todo, и прочих, для их фильтрации. Я не совсем понимаю в каком формате используется код цвета в скриптинге LUA, это и не RGB код и на HEX не похоже. Прилагаю пример кода, за основу был взят чей-то исходник с гамбита, после переписан другом под тринити, и сейчас в сыром виде редактирую для аризоны. Базовые знания программирования имеются, опыта работы с скриптингом на LUA и любых других языках на сампе - нет.
Не обращайте внимания на то, что часть цветовых кодов указаны не верно, экспериментировал, методом тыка,

Сырой скрипт:
require 'lib.moonloader'
local e = require 'lib.samp.events'
local status = false
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('rp', function() status = not status printStringNow(status and 'RPChat ~g~ON' or 'RPChat ~r~OFF', 1000) end)
    sampRegisterChatCommand('cc', function() for i = 1, 99 do sampAddChatMessage('', -1) end end)
    wait(-1)
end
function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if text:find('((', 1, true) or text:find('))', 1, true) or text:find('SMS:') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        if not isRolePlay(color, text) then return false end
       
        if text:find("достал из кармана телефон и отправил sms") or
        then
            return false
        end
    end
end
function isRolePlay(c, t)
    return tostring(bit.tohex(c)) == '#3399FF'
    or tostring(bit.tohex(c)) == 'c2a2daff'
    or tostring(bit.tohex(c)) == '4dc9c9ff'
    or tostring(bit.tohex(c)) == 'BB6666FF'
    or t:find('говорит:', 1, true)
    or t:find('крикнул:', 1, true)
    or t:find('по телефону:', 1, true)
end
 

KaKoSSiK

Новичок
Автор темы
2
0
В том то и дело что hex коды не подходят, указывая их - не хукаются
зашёл на сервер, прописал /me /do /todo, открыл чат-лог и там все hex коды через которые ты уже можешь хукать строки/переводить в другой формат
 

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
Lua:
function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if text:find('((', 1, true) or text:find('))', 1, true) or text:find('SMS:') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        if not isRolePlay(color, text) then return false end
        if text:find("достал из кармана телефон и отправил sms") then
            return false
        end
        return {color, text.." | "..color}
    end
end
Сзади текста будет писаться код цвета. Наверное.