SA:MP responsive font size

sulovy

Новичок
Автор темы
25
0
Версия SA-MP
  1. 0.3.7 (R1)
en: in this code when i reduce screen resolution text position remains the same but font size doesn't get small and how to fix?
ru: в этом коде при уменьшении разрешения экрана положение текста остается прежним, но размер шрифта не уменьшается. Как это исправить?

Lua:
local moonloader = require('moonloader')
local font_flag = moonloader.font_flag
local my_font
local pos = {96, 19} -- percentage-based position

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    repeat wait(0) until isSampAvailable()

    -- Create font inside main()
    my_font = renderCreateFont('Verdana', 12, font_flag.BOLD + font_flag.SHADOW)

    sampAddChatMessage('Chaitvirta', -1)

    while true do
        wait(0)
        local screenX, screenY = getScreenResolution() -- Get updated screen resolution
        local x = screenX * (pos[1] / 100)
        local y = screenY * (pos[2] / 100)
        renderFontDrawText(my_font, "Use!", x, y, 0xFFFFFFFF)
    end
end
 

meowprd

Тот самый Котовский
Проверенный
1,302
731
As simple example:
Lua:
local moonloader = require('moonloader')
local font_flag = moonloader.font_flag
local my_font
local pos = {96, 19} -- percentage-based position
local sPos = {-1, -1} -- array for save prev screen resolution

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    repeat wait(0) until isSampAvailable()

    -- Create font inside main()
    my_font = renderCreateFont('Verdana', 12, font_flag.BOLD + font_flag.SHADOW)

    sampAddChatMessage('Chaitvirta', -1)

    -- update values before thread
    local sx, sy = getScreenResolution()
    sPos = { sx, sy }
    
    while true do
        wait(0)
        local screenX, screenY = getScreenResolution() -- Get updated screen resolution
        if screenX ~= sPos[1] or screenY ~= sPos[2] then
            -- update font
            my_font = renderCreateFont('Verdana', 12, font_flag.BOLD + font_flag.SHADOW) -- change fontsize here to new fontsize that will be calculated by some method
            sPos = { screenX, screenY } -- update values
        end
        local x = screenX * (pos[1] / 100)
        local y = screenY * (pos[2] / 100)
        renderFontDrawText(my_font, "Use!", x, y, 0xFFFFFFFF)
    end
end