HLFX.Ru Forum Страницы (5): « 1 [2] 3 4 5 »
Показать все 70 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нуб вопросы Superuser8 (https://hlfx.ru/forum/showthread.php?threadid=4561)


Отправлено ***FantoM*** 23-03-2015 в 23:26:

Superuser8
как было ?

Добавлено 24-03-2015 в 05:26:

если да то вот



if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
{
HealthWidth = gHUD.GetSpriteRect(gHUD.m_HUD_number_0).right - gHUD.GetSpriteRect(gHUD.m_HUD_number_0).left;
int CrossWidth = gHUD.GetSpriteRect(m_HUD_cross).right - gHUD.GetSpriteRect(m_HUD_cross).left;

y = ScreenHeight - gHUD.m_iFontHeight - gHUD.m_iFontHeight / 2;
x = CrossWidth /2;

SPR_Set(gHUD.GetSprite(m_HUD_cross), r, g, b);
SPR_DrawAdditive(0, x, y, &gHUD.GetSpriteRect(m_HUD_cross));

x = CrossWidth + HealthWidth / 2;

x = gHUD.DrawHudNumber(x, y, DHN_3DIGITS | DHN_DRAWZERO, m_iHealth, r, g, b);

x += HealthWidth/2;

int iHeight = gHUD.m_iFontHeight;
int iWidth = HealthWidth/10;
FillRGBA(x, y, iWidth, iHeight, 255, 160, 0, a);
}


Отправлено Superuser8 23-03-2015 в 23:30:

***FantoM*** спасибо конечно, но оригиналы исходников есть и у меня
Меня больше интересуют ошибки в моём коде


Отправлено ***FantoM*** 24-03-2015 в 00:04:

Superuser8
сделай как в Paranoia


Отправлено Superuser8 24-03-2015 в 00:10:

***FantoM*** что сделать?


Отправлено ***FantoM*** 24-03-2015 в 01:12:

броню и жизни как в Paranoia


Отправлено Superuser8 24-03-2015 в 04:42:

***FantoM*** зачем мне делать броню и жизни как в Paranoia?
Меня стандартный hud устраивает


Отправлено ***FantoM*** 24-03-2015 в 04:48:

Цитата:
Superuser8 писал:
Меня больше интересуют ошибки в моём коде

какие ошибки ?


Отправлено Superuser8 24-03-2015 в 15:04:

Почему hud на разных разрешениях ведёт себя по разному? И можно ли это исправить?
P.S на разрешении 640x480 элементы hud находятся в правильной позиции
Хочу чтобы и на остальных разрешениях было так же


Отправлено XaeroX 24-03-2015 в 15:09:

Потому что спрайты не масштабируются под разрешение (ограничение софтварного рендера).

__________________

xaerox on Vivino


Отправлено Ku2zoff 24-03-2015 в 18:12:

Цитата:
Superuser8 писал:
Почему hud на разных разрешениях ведёт себя по разному?

XaeroX ответил на этот вопрос. Есть два (а может три) варианта решения. Первый лёгкий и частично исправляет ситуацию, а второй сложный, но HUD будет на всех разрешениях одинаковый.
1. Использовать ScreenWidth/ScreenHeight для указания координат и размеров. Элементы худа не будут сильно съезжать со своих позиций на разных разрешениях, но спрайты всё равно не масштабируются.
2. Сделать худ на VGUI, как в паранойе. Придётся нарисовать ТГА-картинки разного размера для нескольких базовых разрешений, но зато всё будет выглядеть одинаково хоть при 640x480, хоть при 1920x1080.
3. [просто предположение] Написать функцию рисования спрайтов с масштабированием (в зависимости от разрешения), основываясь на TriAPI. В этом случае я бы сначала перерисовал спрайты покрупнее, чтобы они не растягивались до ужасных пикселей на высоких разрешениях. А масштабирование для уменьшения их при более низком разрешении будет выглядеть не так убого.


Отправлено XaeroX 24-03-2015 в 18:56:

Ku2zoff
Вариант 2 легко распространяется на вариант 1 - вместо тга-картинок рисуем спрайты под каждое разрешение. И заодно с софтваром прекрасно совместимо.
А п.3 с софтваром не совместим категорически - там не работает триапи в 2д (столкнулся с этим, когда делал всплывающие цифры очков в хеткрап френзе).

__________________

xaerox on Vivino


Отправлено Ku2zoff 25-03-2015 в 02:56:

XaeroX про спрайты для каждого разрешения правда не подумал...
А пункт 3 мне всё-таки более симпатичен. Я сам в софтваре не играю, и не думаю, что играющих в нём большой процент. В конце концов, можно для софтвара сделать хаки. Чтобы элементы не съезжали и не перекрывали друг друга.


Отправлено Superuser8 26-03-2015 в 10:17:

Господа! Чем отличается такая конструкция

C++ Source Code:
1
switch ( RANDOM_LONG( 0, 1 ) )
2
{
3
case 0:
4
    iAnim = MP5_LONGIDLE;
5
  break;
6
 
7
default:
8
  case 1:
9
      iAnim = MP5_IDLE1;
10
    break;
11
  }


От такой?
C++ Source Code:
1
if (flRand <= 0.5)
2
{
3
  iAnim = PYTHON_IDLE1;
4
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (70.0/30.0);
5
}
6
else if (flRand <= 0.7)
7
{
8
  iAnim = PYTHON_IDLE2;
9
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (60.0/30.0);
10
}
11
else if (flRand <= 0.9)
12
{
13
  iAnim = PYTHON_IDLE3;
14
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (88.0/30.0);
15
}
16
else
17
{
18
  iAnim = PYTHON_FIDGET;
19
  m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (170.0/30.0);
20
}


ведь по сути и там и там выбор idle анимации


Отправлено Ku2zoff 26-03-2015 в 10:50:

Superuser8 во второй конструкции тупо больше анимаций. Первый вариант предпочтительнее, если выбор делается из 2-3х анимаций, а второй - когда из большего количества.


Отправлено XaeroX 26-03-2015 в 11:57:

Superuser8 отличие в том, что в операторе switch может быть только целочисленное выражение, а во втором случае float.

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 11:13. Страницы (5): « 1 [2] 3 4 5 »
Показать все 70 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024