invilso.
Известный
- 252
- 89
Рисует Progress Bar, есть возможность выводить значение сбоку него.
Вроде была такая штука на БХ, но у меня она почему-то не работала, мб руки кривые.
Вроде была такая штука на БХ, но у меня она почему-то не работала, мб руки кривые.
ФУНКЦИЯ:
-- font - шрифт, если не используется пишите nil
-- pos_x и pos_x - позиция по x и y
-- size_x и size_x - размер прогрессбара по x и y
-- outline - толщина обводки
-- show_text - показывать ли значение текстом
-- color_outline - цвет обводки - ARGB
-- color_line - цвет динамической линии - ARGB
-- color_underline - цвет под динамической линией - ARGB
-- color_font - цвет шрифта - ARGB
-- color_numfield - цвет поля под значением
-- value - значение
-- max_value - максимально возможное значение, или nil если хотите использовать автоопределитель наибольшего значения.
local max = 0 --нужно для автоматического определения максимального значения, держите эту переменную не в цикле.
function renderProgress(font, pos_x, pos_y, size_x, size_y, outline, show_secs, color_outline, color_line, color_underline, color_font, color_numfield, value, max_value)
if type(max_value) == 'nil' and value ~= nil then
if max < value then
max = value
max_value = max
else
max_value = max
end
end
renderDrawBox(pos_x - (outline / 2), pos_y - (outline / 2), size_x + outline, size_y + outline, color_outline) --рамка
renderDrawBox(pos_x, pos_y, size_x, size_y, color_underline) -- под полоской
renderDrawBox(pos_x, pos_y, (value * (size_x / (max_value + 1))), size_y, color_line) -- динамическая полоска
if show_secs then
local drawtext = string.format('%0.1f', value)
renderDrawBox(pos_x + (size_x + 5), pos_y - (outline / 2), renderGetFontDrawTextLength(font, drawtext) + 1, size_y + outline, color_numfield) -- поле сбоку для числа
renderFontDrawText(font, drawtext, pos_x + (size_x + 6), pos_y - (outline / 2), color_font) -- число
end
end
ПРИМЕР [Показывает сколько осталось спринта]:
function onD3DPresent()
local value = getSprintLocalPlayer()
if value < 95 then
local px, py, pz = getCharCoordinates(playerPed)
px, py, pz = px + 0.1, py, pz - 0.8
if isPointOnScreen(px, py, pz, 1) then
local pos_x, pos_y = convert3DCoordsToScreen(px, py, pz)
local pos_x, pos_y = round(pos_x), round(pos_y)
renderProgress(font, pos_x, pos_y, sx, sy, 4, true, 0xA0000000, 0xAA00CC00, 0xAA013220, 0xFF00CCD0, 0xA0000000, value, nil)
end
end
end
-- font - шрифт, если не используется пишите nil
-- pos_x и pos_x - позиция по x и y
-- size_x и size_x - размер прогрессбара по x и y
-- outline - толщина обводки
-- show_text - показывать ли значение текстом
-- color_outline - цвет обводки - ARGB
-- color_line - цвет динамической линии - ARGB
-- color_underline - цвет под динамической линией - ARGB
-- color_font - цвет шрифта - ARGB
-- color_numfield - цвет поля под значением
-- value - значение
-- max_value - максимально возможное значение, или nil если хотите использовать автоопределитель наибольшего значения.
function renderProgress(font, pos_x, pos_y, size_x, size_y, outline, show_text, color_outline, color_line, color_underline, color_font, color_numfield, value, max_value)
if type(max_value) == 'nil' and value ~= nil then
if max < value then
max = value
max_value = max
else
max_value = max
end
end
renderDrawBox(pos_x - (outline / 2), pos_y - (outline / 2), size_x + outline, size_y + outline, color_outline) --рамка
renderDrawBox(pos_x, pos_y, size_x, size_y, color_underline) -- под полоской
renderDrawBox(pos_x, pos_y, (value * (size_x / (max_value + 1))), size_y, color_line) -- динамическая полоска
if show_text then
local drawtext = string.format('%0.1f', value)
renderDrawBox(pos_x + (size_x + 5), pos_y - (outline / 2), renderGetFontDrawTextLength(font, drawtext) + 1, size_y + outline, color_numfield) -- поле сбоку для числа
renderFontDrawText(font, drawtext, pos_x + (size_x + 6), pos_y - (outline / 2), color_font) -- число
end
end[/SPOILER]
function getSprintLocalPlayer()
local float = memory.getfloat(0xB7CDB4)
return float/31.47000244
end