Исходник Gamesense health bar

zzz
Участник
Статус
Оффлайн
Регистрация
25 Сен 2017
Сообщения
899
Реакции[?]
306
Поинты[?]
6K
****:
              constexpr auto k_max_hp = 100;

              const auto bbox_x = bbox.mins( ).x( ), bbox_y = bbox.mins( ).y( ),
                bbox_h = bbox.maxs( ).y( ) - bbox.mins( ).y( );
          
            const auto hp = std::clamp( record.m_hp, 0, csgo::k_max_hp );

            constexpr auto bar_w = 2.f, stroke = 1.f, pad = 1.f;

            const auto outlined_bar_w = stroke * 2.f + bar_w + pad;
            const auto bar_x = bbox_x - outlined_bar_w;

            const auto bar_h = static_cast< int >(
                std::round( hp * bbox_h / static_cast< float >( csgo::k_max_hp ) ) );

            m_draw_buffer->outlined_rect( bar_x, bbox_y,
                bar_w, bbox_h, sdk::col_t( 0, 0, 0, 120 * alpha_modifier ) );

            m_draw_buffer->filled_rect( bar_x - stroke, bbox_y - stroke,
                bar_w + ( stroke * 2.f ), bbox_h + ( stroke * 2.f ), sdk::col_t( 0, 0, 0, 220 * alpha_modifier ) );

            const auto hayasaka = ( std::clamp< float >( hp, 25, 75 ) - 25.f ) / 50.f;

            auto col = sdk::col_t( 120.f + 135.f * ( 1.f - hayasaka ), 50.f + 175.f * hayasaka, 80 );

            if ( dormant )
                col = sdk::col_t::from_hsba( col.hue( ), 0.f, col.brightness( ),
                    static_cast< float >( col.a( ) / sdk::col_t::k_lim ) * alpha_modifier );

            m_draw_buffer->filled_rect( bar_x, bbox_y + bbox_h - bar_h, bar_w, bar_h, col );

            if ( hp != csgo::k_max_hp )
                m_small_fonts_8->draw( bar_x, bbox_y + ( bbox_h - bar_h ) - outlined_bar_w, sdk::col_t( 255, 255, 255, 200 * alpha_modifier ),
                    std::to_string( hp ), sdk::e_align::center | sdk::e_align::outline );

health bar как в GAMESENSE
демонстрация:


special thanks to: sove idesync enQ_broken lxrdjustice Zodiak esoterik
 
Последнее редактирование:
самарский помойный аукцион
Эксперт
Статус
Оффлайн
Регистрация
30 Июн 2019
Сообщения
1,247
Реакции[?]
578
Поинты[?]
44K
дайте пожалупста код для
filled_rect
у меня крашит из дампа
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
думаю достаточно неплохой, а главное полезный пост
все таки как минимум, по моему мнению, пастеры отсюда смогут взять нормальную калькуляцию цвета в зависимости от hp,
а то всякие пастульки имеют такие ужасные цвета, что совсем не круто
 
Последнее редактирование модератором:
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
380
Реакции[?]
168
Поинты[?]
3K
****:
              constexpr auto k_max_hp = 100;

              const auto bbox_x = bbox.mins( ).x( ), bbox_y = bbox.mins( ).y( ),
                bbox_h = bbox.maxs( ).y( ) - bbox.mins( ).y( );
         
            const auto hp = std::clamp( record.m_hp, 0, csgo::k_max_hp );

            constexpr auto bar_w = 2.f, stroke = 1.f, pad = 1.f;

            const auto outlined_bar_w = stroke * 2.f + bar_w + pad;
            const auto bar_x = bbox_x - outlined_bar_w;

            const auto bar_h = static_cast< int >(
                std::round( hp * bbox_h / static_cast< float >( csgo::k_max_hp ) ) );

            m_draw_buffer->outlined_rect( bar_x, bbox_y,
                bar_w, bbox_h, sdk::col_t( 0, 0, 0, 120 * alpha_modifier ) );

            m_draw_buffer->filled_rect( bar_x - stroke, bbox_y - stroke,
                bar_w + ( stroke * 2.f ), bbox_h + ( stroke * 2.f ), sdk::col_t( 0, 0, 0, 220 * alpha_modifier ) );

            const auto hayasaka = ( std::clamp< float >( hp, 25, 75 ) - 25.f ) / 50.f;

            auto col = sdk::col_t( 120.f + 135.f * ( 1.f - hayasaka ), 50.f + 175.f * hayasaka, 80 );

            if ( dormant )
                col = sdk::col_t::from_hsba( col.hue( ), 0.f, col.brightness( ),
                    static_cast< float >( col.a( ) / sdk::col_t::k_lim ) * alpha_modifier );

            m_draw_buffer->filled_rect( bar_x, bbox_y + bbox_h - bar_h, bar_w, bar_h, col );

            if ( hp != csgo::k_max_hp )
                m_small_fonts_8->draw( bar_x, bbox_y + ( bbox_h - bar_h ) - outlined_bar_w, sdk::col_t( 255, 255, 255, 200 * alpha_modifier ),
                    std::to_string( hp ), sdk::e_align::center | sdk::e_align::outline );

health bar как в GAMESENSE
демонстрация:


special thanks to: sove idesync enQ_broken lxrdjustice Zodiak esoterik
static_cast< float >( csgo::k_max_hp )
А слабо сразу сделать статик флоат🙄
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
380
Реакции[?]
168
Поинты[?]
3K
gone
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
285
Реакции[?]
166
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
****:
              constexpr auto k_max_hp = 100;

              const auto bbox_x = bbox.mins( ).x( ), bbox_y = bbox.mins( ).y( ),
                bbox_h = bbox.maxs( ).y( ) - bbox.mins( ).y( );
         
            const auto hp = std::clamp( record.m_hp, 0, csgo::k_max_hp );

            constexpr auto bar_w = 2.f, stroke = 1.f, pad = 1.f;

            const auto outlined_bar_w = stroke * 2.f + bar_w + pad;
            const auto bar_x = bbox_x - outlined_bar_w;

            const auto bar_h = static_cast< int >(
                std::round( hp * bbox_h / static_cast< float >( csgo::k_max_hp ) ) );

            m_draw_buffer->outlined_rect( bar_x, bbox_y,
                bar_w, bbox_h, sdk::col_t( 0, 0, 0, 120 * alpha_modifier ) );

            m_draw_buffer->filled_rect( bar_x - stroke, bbox_y - stroke,
                bar_w + ( stroke * 2.f ), bbox_h + ( stroke * 2.f ), sdk::col_t( 0, 0, 0, 220 * alpha_modifier ) );

            const auto hayasaka = ( std::clamp< float >( hp, 25, 75 ) - 25.f ) / 50.f;

            auto col = sdk::col_t( 120.f + 135.f * ( 1.f - hayasaka ), 50.f + 175.f * hayasaka, 80 );

            if ( dormant )
                col = sdk::col_t::from_hsba( col.hue( ), 0.f, col.brightness( ),
                    static_cast< float >( col.a( ) / sdk::col_t::k_lim ) * alpha_modifier );

            m_draw_buffer->filled_rect( bar_x, bbox_y + bbox_h - bar_h, bar_w, bar_h, col );

            if ( hp != csgo::k_max_hp )
                m_small_fonts_8->draw( bar_x, bbox_y + ( bbox_h - bar_h ) - outlined_bar_w, sdk::col_t( 255, 255, 255, 200 * alpha_modifier ),
                    std::to_string( hp ), sdk::e_align::center | sdk::e_align::outline );

health bar как в GAMESENSE
демонстрация:


special thanks to: sove idesync enQ_broken lxrdjustice Zodiak esoterik
fake / wrong reversed, this is not skeet's at all only the color is 1:1 the same but not the way it works
skeet doesnt show hp amount until gun lethality lol (example on scout if he has 94hp it wont show up)
 
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
ну тогда оно тем более бесполезно
к тому же это можно и проще сделать, а не делать говно-формулы и ограничивать половину значений
 
Последнее редактирование модератором:
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
ок сделай, раз ты такой крутой кодер

Код:
float health_step = data->health / 100.f;
bar_clr = std::lerp(green_clr, red_clr, 1.f - health);
это псевдо, но гораздо лучше, чем
Код:
            const auto hayasaka = ( std::clamp< float >( hp, 25, 75 ) - 25.f ) / 50.f;

            auto col = sdk::col_t( 120.f + 135.f * ( 1.f - hayasaka ), 50.f + 175.f * hayasaka, 80 );
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
Код:
float health_step = data->health / 100.f;
bar_clr = std::lerp(green_clr, red_clr, 1.f - health);
это псевдо, но гораздо лучше, чем
Код:
            const auto hayasaka = ( std::clamp< float >( hp, 25, 75 ) - 25.f ) / 50.f;

            auto col = sdk::col_t( 120.f + 135.f * ( 1.f - hayasaka ), 50.f + 175.f * hayasaka, 80 );
функция была инлайнута для того, чтобы в независимости от имплементации lerp любой желающий смог перенести данный код себе, очевидно что с лерпом код будет более опрятным и читабельным
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
и? это тоже можно исправить
тебе ничего не мешает сделать лерп от 120 до 255 и так далее
не знаю к чему ты вообще это написал, весь смысл треда в этой функции.
ты лишь скинул код, который во всех пастульках является причиной ужасного болотного цвета на ~68hp
 
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
не знаю к чему ты вообще это написал, весь смысл треда в этой функции.
потому что тред залупа, причем не смешная
было бы что то рофельное, то я бы замолчал

ты лишь скинул код, который во всех пастульках является причиной ужасного болотного цвета на ~68hp
извини не знал что это делает цвет болотным
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
              ru p2cs > all                      
Разработчик
Статус
Оффлайн
Регистрация
19 Авг 2016
Сообщения
1,580
Реакции[?]
1,963
Поинты[?]
134K
думаю достаточно неплохой, а главное полезный пост
все таки как минимум, по моему мнению, пастеры отсюда смогут взять нормальную калькуляцию цвета в зависимости от hp,
а то всякие пастульки имеют такие ужасные цвета, что совсем не круто
это все равно не 1:1 как скит, у скита хардкод цвета с 3 if условиями...
 
gone
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
285
Реакции[?]
166
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу