Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Проблема с отрисовкой HUD на разных разрешениях

5 тяжек чарика

Пользователь
Регистрация
1 Мар 2018
Сообщения
158
Реакции
0
Баллы
31
Адрес
bybabyba
Веб-сайт
vk.com
Клан-тег
xoi
Род занятий
onime
Доброго времени суток.
Загрузил свой худ в мастерскую, проверяю еще раз аддон на разных разрешениях, и адекватная прорисовка есть только на 1920x1080.
С чем это может быть связано? Для указания координат использовал функции ScrH() и ScrW(), а также операцити деления, умножения.
И еще вопрос. Есть материал, у которого размер изначально 400x500 (png). Можно ли сделать так, чтобы на разных разрешениях он не терял качество и сохранял свою позицию?
 
Последнее редактирование:

KailHet

Модератор
Команда форума
Проверенный
Регистрация
5 Ноя 2019
Сообщения
728
Реакции
9
Баллы
52
Возраст
21
Веб-сайт
kailhet.github.io
Пол
Мужской
Семейное положение
Свободен(а) как ветер
Род занятий
Веб разработчик
Если меняешь разрешение, пока находишься в игре - худ будет ломаться просто так. Не знаю, насчет того, будет ли ломаться, если перезаходить на СЕРВЕР, но если в игру - то все должно быть ОК ;)
 

5 тяжек чарика

Пользователь
Регистрация
1 Мар 2018
Сообщения
158
Реакции
0
Баллы
31
Адрес
bybabyba
Веб-сайт
vk.com
Клан-тег
xoi
Род занятий
onime
Если меняешь разрешение, пока находишься в игре - худ будет ломаться просто так. Не знаю, насчет того, будет ли ломаться, если перезаходить на СЕРВЕР, но если в игру - то все должно быть ОК ;)
Скорее всего, я что-то намудрил. Сейчас попробовал перезайти, и все равно элементы худа не так расположены. Тестировал на формате 4:3 (1280x1024). У самого монитор 23.8 дюйма, 1920x1080.
 

KailHet

Модератор
Команда форума
Проверенный
Регистрация
5 Ноя 2019
Сообщения
728
Реакции
9
Баллы
52
Возраст
21
Веб-сайт
kailhet.github.io
Пол
Мужской
Семейное положение
Свободен(а) как ветер
Род занятий
Веб разработчик
Скорее всего, я что-то намудрил. Сейчас попробовал перезайти, и все равно элементы худа не так расположены. Тестировал на формате 4:3 (1280x1024). У самого монитор 23.8 дюйма, 1920x1080.
Попробуй смотри как:
В главном меню поменяй разрешение на 16:9, допустим на 1600х1024, можно на другое, просто как пример выбрал это.
Перезапусти игру, если пк включен 24/7 как у меня - лучше перезагрузить, ибо по опыту знаю, что это сказывается на работе.
Заходишь на сервер и чекаешь худ, если все нормально, то сделай также, только выбрав 4:3 разрешение.
Если есть траблы, то значит проблема именно в худе, как вариант могу посоветовать скачать какой-то другой худ, желательно платный, ибо они проработаны лучше и чекнуть, работает ли все нормально там, если работает - чекай в коде, как это сделано там
 

kilbka

Пользователь
Регистрация
22 Авг 2021
Сообщения
8
Реакции
0
Баллы
3
Пол
Мужской
Наверное ты что-то напутал с худом
 

Freline

Пользователь
Регистрация
26 Сен 2020
Сообщения
77
Реакции
0
Баллы
22
Код скинь, посмотрим
 

5 тяжек чарика

Пользователь
Регистрация
1 Мар 2018
Сообщения
158
Реакции
0
Баллы
31
Адрес
bybabyba
Веб-сайт
vk.com
Клан-тег
xoi
Род занятий
onime
Код скинь, посмотрим
Вот сам худецкий: https://steamcommunity.com/sharedfiles/filedetails/?id=2576148300

Заранее извиняюсь за говнокод, магические числа и тому подобное.
Я смотрел туториалы, и там челы тоже брали процент от ширины или высоты. Поэтому старался использовать ScrH() и ScrW().
Ну и за мусор в одном файле тоже извиняюсь, пока что еще не разбивал на несколько.

Lua:
hook.Add("HUDPaint", "HealthAndArmorPaint", function()
    local scrW, scrH = ScrW(), ScrH()
    local boxW = scrW * 0.12
    local boxH = scrH * 0.007

    local ply = LocalPlayer()
    local hp = ply:Health()
    local maxHp = ply:GetMaxHealth()
    local armor = ply:Armor()
    local maxArmor = ply:GetMaxArmor()

    local weapon = ply:GetActiveWeapon()

    local vignette = Material("materials/vignette.png")
    local TarkovStand = Material("materials/tarkovstand.png")
    local TarkovSit = Material("materials/tarkovsit.png")
    local TarkovLean = Material("materials/tarkovlean.png")

    function drawVignette()
        surface.SetMaterial(vignette)
        surface.SetDrawColor(255, 255, 255, 205)
        surface.DrawTexturedRect(0, 0, ScrW(), ScrH())
    end

    function drawVignetteOnBars(x, y, wide, height)
        surface.SetMaterial(vignette)
        surface.SetDrawColor(255, 255, 255, 215)
        surface.DrawTexturedRect(x, y, wide, height)
    end

    function drawTriangle(trianglePos)
        surface.SetDrawColor(240, 240, 240, 225)
        draw.NoTexture()
        surface.DrawPoly(trianglePos)
    end

    function drawWhiteRects(y)
        surface.SetDrawColor(255, 255, 255, 160)

        for i = 1, 7 do
            surface.DrawRect(30, y, boxH * 0.62, boxH * 0.62)
            if (i == 6) then
                y = y + 64
            else
                y = y + 30
            end
        end

    end

    triangleStand = {
        {x = 17, y = scrH * .745},
        {x = 17, y = scrH * .74},
        {x = 22, y = scrH * .742}
    }

    triangleSit = {
        {x = 17, y = scrH * .745 + 5 * 30},
        {x = 17, y = scrH * .74 + 5 * 30},
        {x = 22, y = scrH * .742 + 5 * 30}
    }

    triangleLean = {
        {x = 17, y = scrH * .745 + scrH * .198},
        {x = 17, y = scrH * .74 + scrH * .198},
        {x = 22, y = scrH * .742 + scrH * .198}
    }

    if (ply:Alive()) then

        if (weapon:IsValid()) then
            if (weapon:Clip1() != -1) then
                draw.WordBox(2, scrW * .15, scrH * .95, weapon:Clip1() .. "/" .. ply:GetAmmoCount(weapon:GetPrimaryAmmoType()), "AmmoFont", Color(0, 0, 0, 120), Color(255, 255, 255, 120), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
            else
                draw.WordBox(2, scrW * .15, scrH * .95, ply:GetAmmoCount(weapon:GetPrimaryAmmoType()), "AmmoFont", Color(0, 0, 0, 120), Color(255, 255, 255, 120), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
            end

            if (ply:GetAmmoCount(weapon:GetSecondaryAmmoType()) > 0) then
                draw.WordBox(2, scrW * .19, scrH * .95, ply:GetAmmoCount(weapon:GetSecondaryAmmoType()), "AmmoFont", Color(0, 0, 0, 120), Color(222, 31, 31, 120), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
            end
        end

        surface.SetDrawColor(48, 48, 48, 255)
        surface.DrawRect(51, scrH * .95, boxW + 4, boxH + 4)
        surface.SetDrawColor(0, 0, 0, 160)
        surface.DrawRect(53, scrH * .952, boxW, boxH)

        surface.SetDrawColor(48, 48, 48, 255)
        surface.DrawRect(51, scrH * .965, boxW + 4, boxH + 4)
        surface.SetDrawColor(0, 0, 0, 160)
        surface.DrawRect(53, scrH * .967, boxW, boxH)

        surface.SetDrawColor(0, 0, 0, 220)
        surface.DrawRect(29, scrH * .742 - 1, boxH * 0.62 + 2, boxW * .95 + 2)
        surface.SetDrawColor(94, 94, 94, 140)
        surface.DrawRect(30, scrH * .742, boxH * 0.62, boxW * .95)

        if (hp >= maxHp) then
            surface.SetDrawColor(68, 160, 235, 255)
            surface.DrawRect(53, scrH * .952, boxW, boxH)
        else
            surface.SetDrawColor(68, 160, 235, 255)
            surface.DrawRect(53, scrH * .952, boxW * (hp / maxHp), boxH)
        end

        if (armor >= maxArmor) then
            surface.SetDrawColor(63, 217, 132, 255)
            surface.DrawRect(53, scrH * .967, boxW, boxH)
        else
            surface.SetDrawColor(63, 217, 132, 255)
            surface.DrawRect(53, scrH * .967, boxW * (armor / maxArmor), boxH)
        end

        drawVignetteOnBars(53, scrH * .952, boxW, boxH)
        drawVignetteOnBars(53, scrH * .967, boxW, boxH)
        drawWhiteRects(scrH * .742)

        if (ply:Crouching()) then
            surface.SetDrawColor(255, 255, 255, 220)
            surface.SetMaterial(TarkovSit)
            surface.DrawTexturedRect(55, scrH * .712, scrW * .105, scrH * .236)
            drawTriangle(triangleSit)
        elseif (ply:IsProne()) then
            surface.SetDrawColor(255, 255, 255, 220)
            surface.SetMaterial(TarkovLean)
            surface.DrawTexturedRect(55, scrH * .712, scrW * .166, scrH * .237)
            drawTriangle(triangleLean)
        else
            surface.SetDrawColor(255, 255, 255, 220)
            surface.SetMaterial(TarkovStand)
            surface.DrawTexturedRect(55, scrH * .712, scrW * .105, scrH * .236)
            drawTriangle(triangleStand)
        end

    end
end)
Как должно быть и как не должно быть: (2 скрин - 1280x1024)
 

Вложения

  • neproblem.jpg
    neproblem.jpg
    318.5 KB · Просмотры: 20
  • problem.jpg
    problem.jpg
    194.9 KB · Просмотры: 20
Последнее редактирование:
Назад
Сверху Снизу