local MoonMonet = require 'MoonMonet'
local imgui = require('imgui')
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('testik', function()
local COLOR = 0xffFFFF00; -- AARRGGBB color
local CHROMA_MULTIPLIER = 2.0;
local gen_colors = MoonMonet.buildColors(COLOR, CHROMA_MULTIPLIER, true);
-- И где-то в коде:
local style = imgui.GetStyle()
local colors = style.Colors
local clr = imgui.Col
colors[clr.WindowBg] = ColorAccentsAdapter(gen_colors.accent2.color_900):as_vec4()
colors[clr.Button] = ColorAccentsAdapter(gen_colors.accent2.color_900):apply_alpha(0xaa):as_vec4()
sampAddChatMessage(string.format("hello, {%s}brother", ColorAccentsAdapter(gen_colors.accent2.color_900):as_chat()), -1)
end)
while true do
wait(0)
end
end
do
local bit = require 'bit'
local function join_argb(a, r, g, b)
local argb = b -- b
argb = bit.bor(argb, bit.lshift(g, 8)) -- g
argb = bit.bor(argb, bit.lshift(r, 16)) -- r
argb = bit.bor(argb, bit.lshift(a, 24)) -- a
return argb
end
local function explode_argb(argb)
local a = bit.band(bit.rshift(argb, 24), 0xFF)
local r = bit.band(bit.rshift(argb, 16), 0xFF)
local g = bit.band(bit.rshift(argb, 8), 0xFF)
local b = bit.band(argb, 0xFF)
return a, r, g, b
end
local function ARGBtoRGB(color)
return bit.band(color, 0xFFFFFF)
end
function ColorAccentsAdapter(color)
local a, r, g, b = explode_argb(color)
local ret = {a = a, r = r, g = g, b = b}
function ret:apply_alpha(alpha)
self.a = alpha
return self
end
function ret:as_u32()
return join_argb(self.a, self.b, self.g, self.r)
end
function ret:as_vec4()
return imgui.ImVec4(self.r / 255, self.g / 255, self.b / 255, self.a / 255)
end
function ret:as_argb()
return join_argb(self.a, self.r, self.g, self.b)
end
function ret:as_rgba()
return join_argb(self.r, self.g, self.b, self.a)
end
function ret:as_chat()
return string.format("%06X", ARGBtoRGB(join_argb(self.a, self.r, self.g, self.b)))
end
return ret
end
end