• На форуме разыгрывается более 300 ключей на приватные читы! Для этого нужно всего-лишь нажать соответствующую кнопку в теме!

    Подробности по ссылке:
    https://t.me/yougame_official/66

LUA скрипт [GS] renderer.rectangle [rounded]

Автоучастие - https://yougame.biz/threads/253897/
Начинающий
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
162
Реакции[?]
14
Поинты[?]
10K
Вдруг кому-то нужен способ нарисовать округлённый прямоугольник, то сливаю сюда код чата гпт и мой.
Если у вас есть способ лучше то поделитесь пж)

1736162103371.png

Скорее всего это больше ромб чем прямоугольник:
local function draw_rounded_rectangle2(x, y, width, height, r, g, b, a)
    for i=1, height/2 do
        renderer.line(x + height - i, y+i, x+width - height + i, y+i, r,g,b,a)
        renderer.line(x + height - i, y+height-i, x+width - height + i, y+height-i, r,g,b,a)
    end
end
code: chat gpt:
local function draw_rounded_rectangle(x, y, width, height, radius, r, g, b, a)
    local function draw_arc(cx, cy, radius, start_angle, end_angle)
        local step = (end_angle - start_angle) / 1
        local prev_x, prev_y = cx + math.cos(start_angle) * radius, cy + math.sin(start_angle) * radius
        for angle = start_angle + step, end_angle, step do
            local new_x = cx + math.cos(angle) * radius
            local new_y = cy + math.sin(angle) * radius
            renderer.line(prev_x, prev_y, new_x, new_y, r, g, b, a)
            prev_x, prev_y = new_x, new_y
        end
    end

    for fill_y = y, y + height do
        if fill_y < y + radius then
            local offset = math.sqrt(radius^2 - (radius - (fill_y - y))^2)
            renderer.line(x + radius - offset, fill_y, x + width - radius + offset, fill_y, r, g, b, a)
        elseif fill_y > y + height - radius then
            local offset = math.sqrt(radius^2 - (radius - (y + height - fill_y))^2)
            renderer.line(x + radius - offset, fill_y, x + width - radius + offset, fill_y, r, g, b, a)
        else
            renderer.line(x, fill_y, x + width, fill_y, r, g, b, a)
        end
    end

    renderer.line(x + radius, y, x + width - radius, y, r, g, b, a)
    renderer.line(x + radius, y + height, x + width - radius, y + height, r, g, b, a)
    renderer.line(x, y + radius, x, y + height - radius, r, g, b, a)
    renderer.line(x + width, y + radius, x + width, y + height - radius, r, g, b, a)

    draw_arc(x + radius, y + radius, radius, math.pi, math.pi * 1.5)
    draw_arc(x + width - radius, y + radius, radius, math.pi * 1.5, math.pi * 2)
    draw_arc(x + radius, y + height - radius, radius, math.pi * 0.5, math.pi)
    draw_arc(x + width - radius, y + height - radius, radius, 0, math.pi * 0.5)
end
 
я сырок со вкусом вишни
Пользователь
Статус
Оффлайн
Регистрация
31 Июл 2021
Сообщения
267
Реакции[?]
54
Поинты[?]
27K
Вдруг кому-то нужен способ нарисовать округлённый прямоугольник, то сливаю сюда код чата гпт и мой.
rectangle:
        rectangle = function(pos, size, r,g,b,a, radius)
            local x, y = pos.x, pos.y
            local w, h = size.x, size.y
            radius = radius or 0
            
            renderer.rectangle(x + radius, y, w - radius * 2, radius, r,g,b,a)
            renderer.rectangle(x, y + radius, w, h - radius * 2, r,g,b,a)
            renderer.rectangle(x + radius, y + h - radius, w - radius * 2, radius, r,g,b,a)
            
            renderer.circle(x+radius,y+radius,r,g,b,a,radius,180, 0.25)
            renderer.circle(x+w-radius,y+radius,r,g,b,a,radius,90, 0.25)
            renderer.circle(x+radius,y+h-radius,r,g,b,a,radius,270, 0.25)
            renderer.circle(x+w-radius,y+h-radius,r,g,b,a,radius,0, 0.25)
        end;
 
Сверху Снизу