Исходник Gamesense health bar

zzz
Участник
Статус
Оффлайн
Регистрация
25 Сен 2017
Сообщения
940
Реакции[?]
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,250
Реакции[?]
578
Поинты[?]
44K
дайте пожалупста код для
filled_rect
у меня крашит из дампа
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
791
Реакции[?]
1,375
Поинты[?]
10K
думаю достаточно неплохой, а главное полезный пост
все таки как минимум, по моему мнению, пастеры отсюда смогут взять нормальную калькуляцию цвета в зависимости от hp,
а то всякие пастульки имеют такие ужасные цвета, что совсем не круто
 
Последнее редактирование модератором:
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
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
Сообщения
791
Реакции[?]
1,375
Поинты[?]
10K
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
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
Сообщения
589
Реакции[?]
397
Поинты[?]
62K
ну тогда оно тем более бесполезно
к тому же это можно и проще сделать, а не делать говно-формулы и ограничивать половину значений
 
Последнее редактирование модератором:
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
589
Реакции[?]
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
Сообщения
791
Реакции[?]
1,375
Поинты[?]
10K
Код:
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
Сообщения
589
Реакции[?]
397
Поинты[?]
62K
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
791
Реакции[?]
1,375
Поинты[?]
10K
и? это тоже можно исправить
тебе ничего не мешает сделать лерп от 120 до 255 и так далее
не знаю к чему ты вообще это написал, весь смысл треда в этой функции.
ты лишь скинул код, который во всех пастульках является причиной ужасного болотного цвета на ~68hp
 
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
589
Реакции[?]
397
Поинты[?]
62K
не знаю к чему ты вообще это написал, весь смысл треда в этой функции.
потому что тред залупа, причем не смешная
было бы что то рофельное, то я бы замолчал

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