- 121
- 14
- Версия MoonLoader
- .027.0-preview
Всем привет! Я пишу скрипт который заменяет клист игрока на тот, который выбран в mimgui пипетке и сохраняю это в конфиг.
local cfg = {
COLOR_GROVE = 0xAA09A400, -- grove
COLOR_BALLAS = 0xAAC515FF, -- ballas
COLOR_VAGOS = 0xAAFFDE24, -- vagos
COLOR_RIFA = 0xAA2EA07B, -- rifa
COLOR_AZTEC = 0xAA0DEDFF, -- aztec
COLOR_LCN = 0xAAF4C400, -- lcn
COLOR_YAKUZA = 0xAAFF0606, -- yakuza
COLOR_RUSSIAN = 0xAA114D71 -- russian mafia
}
local color_float_grove = imgui.new.float[4]()
local color_float_ballas = imgui.new.float[4]()
local color_float_vagos = imgui.new.float[4]()
local color_float_rifa = imgui.new.float[4]()
local color_float_aztec = imgui.new.float[4]()
local color_float_lcn = imgui.new.float[4]()
local color_float_yakuza = imgui.new.float[4]()
local color_float_russian = imgui.new.float[4]()
Потом вызываю функцию при инициализации окна
function initColors()
color_float_grove = convertColorToFloat4(cfg.COLOR_GROVE) -- grove
color_float_ballas = convertColorToFloat4(cfg.COLOR_BALLAS) -- ballas
color_float_vagos = convertColorToFloat4(cfg.COLOR_VAGOS) -- vagos
color_float_rifa = convertColorToFloat4(cfg.COLOR_RIFA) -- rifa
color_float_aztec = convertColorToFloat4(cfg.COLOR_AZTEC) -- aztec
color_float_lcn = convertColorToFloat4(cfg.COLOR_LCN) -- lcn
color_float_yakuza = convertColorToFloat4(cfg.COLOR_YAKUZA) -- yakuza
color_float_russian = convertColorToFloat4(cfg.COLOR_RUSSIAN) -- russian mafia
end
function convertColorToFloat4(hexColor)
local tmp = imgui.ColorConvertU32ToFloat4(argb2abgr(hexColor))
local floatArray = imgui.new.float[4]()
floatArray[0] = tmp.x
floatArray[1] = tmp.y
floatArray[2] = tmp.z
floatArray[3] = tmp.w
return floatArray
end
После этого создаю пипетку для выбора цвета
-- Russian Mafia
if imgui.ColorEdit4("##Russian", color_float_russian, imgui.ColorEditFlags.NoInputs) then
cfg.COLOR_RUSSIAN = imgui.ColorConvertFloat4ToU32(
imgui.ImVec4(color_float_russian[0], color_float_russian[1], color_float_russian[2], color_float_russian[3])
)
applyNewColors()
saveConfig()
end
И наконец вызываю мою функцию applyNewColors
local playerOriginalColors = {}
function applyNewColors()
local colorMapping = {
[0xAA09A400] = cfg.COLOR_GROVE,
[0xAAC515FF] = cfg.COLOR_BALLAS,
[0xAAFFDE24] = cfg.COLOR_VAGOS,
[0xAA2EA07B] = cfg.COLOR_RIFA,
[0xAA0DEDFF] = cfg.COLOR_AZTEC,
[0xAAF4C400] = cfg.COLOR_LCN,
[0xAAFF0606] = cfg.COLOR_YAKUZA,
[0xAA114D71] = cfg.COLOR_RUSSIAN
}
for id = 0, 999 do
if sampIsPlayerConnected(id) then
local currentColor = sampGetPlayerColor(id)
-- Сохраняем оригинальный цвет при первом обнаружении
if not playerOriginalColors[id] then
playerOriginalColors[id] = currentColor
end
local originalColor = playerOriginalColors[id]
-- Если оригинальный цвет есть в маппинге
if colorMapping[originalColor] then
local targetColor = colorMapping[originalColor]
if currentColor ~= targetColor then
emul_rpc('onSetPlayerColor', { id, abgr2argb(targetColor) })
print(targetColor)
end
end
else
-- Очищаем при отключении игрока
playerOriginalColors[id] = nil
end
end
end
Которая по какой-то причине подставляет другой цвет, не тот который надо
local cfg = {
COLOR_GROVE = 0xAA09A400, -- grove
COLOR_BALLAS = 0xAAC515FF, -- ballas
COLOR_VAGOS = 0xAAFFDE24, -- vagos
COLOR_RIFA = 0xAA2EA07B, -- rifa
COLOR_AZTEC = 0xAA0DEDFF, -- aztec
COLOR_LCN = 0xAAF4C400, -- lcn
COLOR_YAKUZA = 0xAAFF0606, -- yakuza
COLOR_RUSSIAN = 0xAA114D71 -- russian mafia
}
local color_float_grove = imgui.new.float[4]()
local color_float_ballas = imgui.new.float[4]()
local color_float_vagos = imgui.new.float[4]()
local color_float_rifa = imgui.new.float[4]()
local color_float_aztec = imgui.new.float[4]()
local color_float_lcn = imgui.new.float[4]()
local color_float_yakuza = imgui.new.float[4]()
local color_float_russian = imgui.new.float[4]()
Потом вызываю функцию при инициализации окна
function initColors()
color_float_grove = convertColorToFloat4(cfg.COLOR_GROVE) -- grove
color_float_ballas = convertColorToFloat4(cfg.COLOR_BALLAS) -- ballas
color_float_vagos = convertColorToFloat4(cfg.COLOR_VAGOS) -- vagos
color_float_rifa = convertColorToFloat4(cfg.COLOR_RIFA) -- rifa
color_float_aztec = convertColorToFloat4(cfg.COLOR_AZTEC) -- aztec
color_float_lcn = convertColorToFloat4(cfg.COLOR_LCN) -- lcn
color_float_yakuza = convertColorToFloat4(cfg.COLOR_YAKUZA) -- yakuza
color_float_russian = convertColorToFloat4(cfg.COLOR_RUSSIAN) -- russian mafia
end
function convertColorToFloat4(hexColor)
local tmp = imgui.ColorConvertU32ToFloat4(argb2abgr(hexColor))
local floatArray = imgui.new.float[4]()
floatArray[0] = tmp.x
floatArray[1] = tmp.y
floatArray[2] = tmp.z
floatArray[3] = tmp.w
return floatArray
end
После этого создаю пипетку для выбора цвета
-- Russian Mafia
if imgui.ColorEdit4("##Russian", color_float_russian, imgui.ColorEditFlags.NoInputs) then
cfg.COLOR_RUSSIAN = imgui.ColorConvertFloat4ToU32(
imgui.ImVec4(color_float_russian[0], color_float_russian[1], color_float_russian[2], color_float_russian[3])
)
applyNewColors()
saveConfig()
end
И наконец вызываю мою функцию applyNewColors
local playerOriginalColors = {}
function applyNewColors()
local colorMapping = {
[0xAA09A400] = cfg.COLOR_GROVE,
[0xAAC515FF] = cfg.COLOR_BALLAS,
[0xAAFFDE24] = cfg.COLOR_VAGOS,
[0xAA2EA07B] = cfg.COLOR_RIFA,
[0xAA0DEDFF] = cfg.COLOR_AZTEC,
[0xAAF4C400] = cfg.COLOR_LCN,
[0xAAFF0606] = cfg.COLOR_YAKUZA,
[0xAA114D71] = cfg.COLOR_RUSSIAN
}
for id = 0, 999 do
if sampIsPlayerConnected(id) then
local currentColor = sampGetPlayerColor(id)
-- Сохраняем оригинальный цвет при первом обнаружении
if not playerOriginalColors[id] then
playerOriginalColors[id] = currentColor
end
local originalColor = playerOriginalColors[id]
-- Если оригинальный цвет есть в маппинге
if colorMapping[originalColor] then
local targetColor = colorMapping[originalColor]
if currentColor ~= targetColor then
emul_rpc('onSetPlayerColor', { id, abgr2argb(targetColor) })
print(targetColor)
end
end
else
-- Очищаем при отключении игрока
playerOriginalColors[id] = nil
end
end
end
Которая по какой-то причине подставляет другой цвет, не тот который надо