Неактуально Перелевающийся круг

Daniel_Govnocode

Активный
Автор темы
315
58
Версия MoonLoader
Другое
Драсте, облазил бласт хак, юзал нейронки но не получается. Как из этого:
1729018604162.png


Сделать вот это?
rainbow-circle-outline-transparent-png-87013.png

Вот часть кода:


Lua:
local rainbowColors = { 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000, 0xFFFF00FF }
-- Функция для интерполяции цвета
function interpolateColor(startColor, endColor, factor)
    local r = math.floor((1 - factor) * bit.rshift(startColor, 16) + factor * bit.rshift(endColor, 16))
    local g = math.floor((1 - factor) * bit.rshift(startColor, 8) + factor * bit.rshift(endColor, 8))
    local b = math.floor((1 - factor) * bit.band(startColor, 0xFF) + factor * bit.band(endColor, 0xFF))
    return bit.bor(bit.lshift(r, 16), bit.lshift(g, 8), b)
end

function drawSmoothRainbowCircle()
    local numSegments = 360  -- Увеличьте количество сегментов для более плавного перехода
    local segmentAngle = 360 / numSegments

    for i = 1, numSegments do
        local startAngle = (i - 1) * segmentAngle
        local endAngle = i * segmentAngle
        
        -- Находим цвета
        local colorIndex = (math.floor((i - 1) * (#rainbowColors / numSegments) + 0.5) % #rainbowColors) + 1
        local nextColorIndex = (colorIndex % #rainbowColors) + 1
        
        -- Вычисляем фактор интерполяции
        local factor = ((i - 1) % (#rainbowColors / numSegments)) / (#rainbowColors / numSegments)
        
        -- Получаем итоговый цвет
        local segmentColor = interpolateColor(rainbowColors[colorIndex], rainbowColors[nextColorIndex], factor)

        -- Рисуем сегмент
        renderCircleSegment(circleX, circleY, circleRadius, startAngle, endAngle, segmentColor)
    end
end
function renderCircleSegment(x, y, radius, startAngle, endAngle, color)
    local startRad = math.rad(startAngle)
    local endRad = math.rad(endAngle)

    local startX = x + radius * math.cos(startRad)
    local startY = y + radius * math.sin(startRad)

    local endX = x + radius * math.cos(endRad)
    local endY = y + radius * math.sin(endRad)

    renderDrawLine(startX, startY, endX, endY, 5, color)
end

Lua:
function main()
    sampRegisterChatCommand("circleM", function ()
        renderWindow[0] = not renderWindow[0]
    end)
    while true do
        if sampIsLocalPlayerSpawned then
            wait(0)
            if enabled[0] then
                checkPlayersInCircle()
                drawSmoothRainbowCircle()
                drawPlayerNicks()
            end
        end
    end
end
И кстати, скрипт при заходе в игру не работает, нужно перезагружать после захода. Как пофиксить?
 
Решение
для радуги используй это

chromiusj

$IWishYouSweetDreams
Модератор
5,721
4,011
для радуги используй это
 
  • Нравится
Реакции: Daniel_Govnocode

Daniel_Govnocode

Активный
Автор темы
315
58
для радуги используй это
Оно на имгуи, других вариков нету?
 

chromiusj

$IWishYouSweetDreams
Модератор
5,721
4,011
Оно на имгуи, других вариков нету?
так функцию радуги себе возьми,и посмотри как работают дравлисты там, там от имгуи редактировать полторы строки (что-то с стилями связанное)
 
  • Нравится
Реакции: plalkeo

Daniel_Govnocode

Активный
Автор темы
315
58
для радуги используй это
Пасиба, сделал
 

Vintik

Через тернии к звёздам
Проверенный
1,562
1,033
Попробуй такой код. Его не надо вставлять, добавлять — просто такой без ничего. Работает ли?
Lua:
local rainbowColors = { 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000, 0xFFFF00FF } -- Цвета радуги

-- Функция для интерполяции цвета (factor идёт от 0 до 1; чем ближе к 1 — тем больше похоже на ВТОРОЙ цвет)
function interpolateColor(startColor, endColor, factor)
    local startA = math.floor(startColor / 0x1000000)
    startColor = startColor % 0x1000000
    local startR = math.floor(startColor / 0x10000)
    startColor = startColor % 0x10000
    local startG = math.floor(startColor / 0x100)
    startColor = startColor % 0x100
    local startB = startColor

    local endA = math.floor(endColor / 0x1000000)
    endColor = endColor % 0x1000000
    local endR = math.floor(endColor / 0x10000)
    endColor = endColor % 0x10000
    local endG = math.floor(endColor / 0x100)
    endColor = endColor % 0x100
    local endB = endColor

    local resultA = math.floor((1 - factor) * startA + factor * endA) * 0x1000000
    local resultR = math.floor((1 - factor) * startR + factor * endR) * 0x10000
    local resultG = math.floor((1 - factor) * startG + factor * endG) * 0x100
    local resultB = math.floor((1 - factor) * startB + factor * endB)
    return resultA + resultR + resultG + resultB
end

-- Функция, которая вычисляет 2 точки на окружности — и рисует линию конкретным цветом между ними (ширина линии - 5).
-- Эти две точки функция высчитывает от центра окружности по углу поворота. Чем меньше угол — тем меньше хорда (тем лучше).
function renderCircleSegment(x, y, radius, startAngle, endAngle, color)
    local startRad = math.rad(startAngle)
    local endRad = math.rad(endAngle)

    local startX = math.floor(x + radius * math.cos(startRad) + 0.5)
    local startY = math.floor(y + radius * math.sin(startRad) + 0.5)

    local endX = math.floor(x + radius * math.cos(endRad) + 0.5)
    local endY = math.floor(y + radius * math.sin(endRad) + 0.5)

    renderDrawLine(startX, startY, endX, endY, 5, color)
end

function drawSmoothRainbowCircle()
    local numSegments = 360  -- Чем больше сегментов (хорд) — тем более плавный переход будет
    local segmentAngle = 360.0 / numSegments -- Разность углов каждого сегмента

    for i = 1, numSegments do
        -- Для каждого сегмента считаем начальный и конечный угол
        local startAngle = (i - 1) * segmentAngle
        local endAngle = i * segmentAngle
       
        -- Находим цвета
        local colorIndex = math.floor((i - 1) * #rainbowColors / numSegments) + 1
        local nextColorIndex = (colorIndex % #rainbowColors) + 1
       
        -- Вычисляем фактор интерполяции и получаем итоговый цвет
        local factor = (i - 1) * #rainbowColors / numSegments - (colorIndex - 1)
        local segmentColor = interpolateColor(rainbowColors[colorIndex], rainbowColors[nextColorIndex], factor)

        -- Рисуем сегмент найденным цветом
        renderCircleSegment(circleX, circleY, circleRadius, startAngle, endAngle, segmentColor)
    end
end

function main()
    while true do
        wait(0)
        drawSmoothRainbowCircle() -- будем в бесконечном цикле рисовать нужную нам окружность
    end
end
 

Daniel_Govnocode

Активный
Автор темы
315
58
Попробуй такой код. Его не надо вставлять, добавлять — просто такой без ничего. Работает ли?
Lua:
local rainbowColors = { 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000, 0xFFFF00FF } -- Цвета радуги

-- Функция для интерполяции цвета (factor идёт от 0 до 1; чем ближе к 1 — тем больше похоже на ВТОРОЙ цвет)
function interpolateColor(startColor, endColor, factor)
    local startA = math.floor(startColor / 0x1000000)
    startColor = startColor % 0x1000000
    local startR = math.floor(startColor / 0x10000)
    startColor = startColor % 0x10000
    local startG = math.floor(startColor / 0x100)
    startColor = startColor % 0x100
    local startB = startColor

    local endA = math.floor(endColor / 0x1000000)
    endColor = endColor % 0x1000000
    local endR = math.floor(endColor / 0x10000)
    endColor = endColor % 0x10000
    local endG = math.floor(endColor / 0x100)
    endColor = endColor % 0x100
    local endB = endColor

    local resultA = math.floor((1 - factor) * startA + factor * endA) * 0x1000000
    local resultR = math.floor((1 - factor) * startR + factor * endR) * 0x10000
    local resultG = math.floor((1 - factor) * startG + factor * endG) * 0x100
    local resultB = math.floor((1 - factor) * startB + factor * endB)
    return resultA + resultR + resultG + resultB
end

-- Функция, которая вычисляет 2 точки на окружности — и рисует линию конкретным цветом между ними (ширина линии - 5).
-- Эти две точки функция высчитывает от центра окружности по углу поворота. Чем меньше угол — тем меньше хорда (тем лучше).
function renderCircleSegment(x, y, radius, startAngle, endAngle, color)
    local startRad = math.rad(startAngle)
    local endRad = math.rad(endAngle)

    local startX = math.floor(x + radius * math.cos(startRad) + 0.5)
    local startY = math.floor(y + radius * math.sin(startRad) + 0.5)

    local endX = math.floor(x + radius * math.cos(endRad) + 0.5)
    local endY = math.floor(y + radius * math.sin(endRad) + 0.5)

    renderDrawLine(startX, startY, endX, endY, 5, color)
end

function drawSmoothRainbowCircle()
    local numSegments = 360  -- Чем больше сегментов (хорд) — тем более плавный переход будет
    local segmentAngle = 360.0 / numSegments -- Разность углов каждого сегмента

    for i = 1, numSegments do
        -- Для каждого сегмента считаем начальный и конечный угол
        local startAngle = (i - 1) * segmentAngle
        local endAngle = i * segmentAngle
      
        -- Находим цвета
        local colorIndex = math.floor((i - 1) * #rainbowColors / numSegments) + 1
        local nextColorIndex = (colorIndex % #rainbowColors) + 1
      
        -- Вычисляем фактор интерполяции и получаем итоговый цвет
        local factor = (i - 1) * #rainbowColors / numSegments - (colorIndex - 1)
        local segmentColor = interpolateColor(rainbowColors[colorIndex], rainbowColors[nextColorIndex], factor)

        -- Рисуем сегмент найденным цветом
        renderCircleSegment(circleX, circleY, circleRadius, startAngle, endAngle, segmentColor)
    end
end

function main()
    while true do
        wait(0)
        drawSmoothRainbowCircle() -- будем в бесконечном цикле рисовать нужную нам окружность
    end
end
Я уже решил