Уважаемые форумчане, переписываю скрипт рп чата для аризоны, необходимо узнать цвет команд /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