Кружок / аура перед игроком

Heav

Активный
Автор темы
186
65
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R3
Как я могу сделать так, чтобы перед игроком отрисовывалась какая-то форма которая будет передвигаться вместе с ним? Задача сделать что-то, что будет показывать игроку круг перед его педом, либо квадрат, любую форму для того чтобы она отображалась перед ним в пространстве.
На LUA.

circle.jpg

circle1.jpg

Заранее спасибо, поисковой запрос не совсем смог сформулировать, т.к. мало знаний еще в этой сфере, но буду рад если кто-то поможет!
 
Решение
Lua:
function main()
    while not isSampAvailable() do wait(0) end
        
    while true do
        wait(0)
        local x, y, z = getCharCoordinates(PLAYER_PED)

        -- отрисовка круга в 3д пространстве
        local dist = 2 -- расстояние до центра круга
        local x = x + dist * math.sin(-math.rad(getCharHeading(PLAYER_PED)))
        local y = y + dist * math.cos(-math.rad(getCharHeading(PLAYER_PED)))
        drawCircleIn3d(x, y, z - 1, 0.5, 0xFFff004d, 3, 100)

        -- отрисовка обычного круга
        local rX, rY = convert3DCoordsToScreen(x, y, z - 1) -- переводим в экранные коорды
        renderDrawPolygon(rX, rY, 10, 10, 10, 0, 0xFFff004d)
    end
end

drawCircleIn3d = function(x, y, z, radius, color, width, polygons)...

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,777
11,224
Lua:
function main()
    while not isSampAvailable() do wait(0) end
        
    while true do
        wait(0)
        local x, y, z = getCharCoordinates(PLAYER_PED)

        -- отрисовка круга в 3д пространстве
        local dist = 2 -- расстояние до центра круга
        local x = x + dist * math.sin(-math.rad(getCharHeading(PLAYER_PED)))
        local y = y + dist * math.cos(-math.rad(getCharHeading(PLAYER_PED)))
        drawCircleIn3d(x, y, z - 1, 0.5, 0xFFff004d, 3, 100)

        -- отрисовка обычного круга
        local rX, rY = convert3DCoordsToScreen(x, y, z - 1) -- переводим в экранные коорды
        renderDrawPolygon(rX, rY, 10, 10, 10, 0, 0xFFff004d)
    end
end

drawCircleIn3d = function(x, y, z, radius, color, width, polygons)
    local step = math.floor(360 / (polygons or 36))
    local sX_old, sY_old
    for angle = 0, 360, step do 
        local _, sX, sY, sZ, _, _ = convert3DCoordsToScreenEx(radius * math.cos(math.rad(angle)) + x , radius * math.sin(math.rad(angle)) + y , z)
        if sZ > 1 then
            if sX_old and sY_old then
                renderDrawLine(sX, sY, sX_old, sY_old, width, color)
            end
            sX_old, sY_old = sX, sY
        end
    end
end
1677004913469.png
1677004919393.png
 
Последнее редактирование: