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

Daniel_Govnocode

Активный
Автор темы
297
42
Версия 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

Известный
Модератор
5,661
3,964
для радуги используй это
 
  • Нравится
Реакции: Daniel_Govnocode

Daniel_Govnocode

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

chromiusj

Известный
Модератор
5,661
3,964
Оно на имгуи, других вариков нету?
так функцию радуги себе возьми,и посмотри как работают дравлисты там, там от имгуи редактировать полторы строки (что-то с стилями связанное)
 
  • Нравится
Реакции: plalkeo

Daniel_Govnocode

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

Vintik

Через тернии к звёздам
Проверенный
1,556
1,027
Попробуй такой код. Его не надо вставлять, добавлять — просто такой без ничего. Работает ли?
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

Активный
Автор темы
297
42
Попробуй такой код. Его не надо вставлять, добавлять — просто такой без ничего. Работает ли?
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
Я уже решил