HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > вопрос про расширение цифр
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



Question вопрос про расширение цифр

здравствуйте решил увеличить числа лимита с 100 до 1000, увеличивал в функции DrawHudNumber, но появилась проблема. Спрайты цифр рисуются некорректно. Как это исправить ?

__________________
илья

Сообщить модератору | | IP: Записан
Сообщение: 207013

Старое сообщение 06-02-2022 19:08
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



илья2 ищи дефайн DHN_3DIGITS, вроде так называется. Добавь новый, например, DHN_4DIGITS. И под него впихни условия со сдвигом на один символ. Там не всё так просто, я сам пытался сделать 5 тысяч патронов для минигана, но цифры съехали, не было видно иконки патронов. Разбираться не стал, потому что делал просто по фану.

Сообщить модератору | | IP: Записан
Сообщение: 207032

Старое сообщение 07-02-2022 08:17
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



мда. с первым слотом у меня все получилось. а вот со вторым, где патроны находятся. Проблема сдвинуть не могу. показывает 999 и все.

Добавлено 07-02-2022 в 12:22:

ааа точно я же в ammox не добавил 9999 точно. но все равно надо сдвигать

Добавлено 07-02-2022 в 12:29:

а как худ сдвинуть?, а то патроны за границу экрана уходят.

__________________
илья

Сообщить модератору | | IP: Записан
Сообщение: 207036

Старое сообщение 07-02-2022 09:29
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



да сделал я то, что хотел, ну и получилось как у тебя, хотя, честно говоря, выглядит даже забавно, но очень читерно .

https://youtu.be/I5ecS-lO7yU

__________________
илья

Сообщить модератору | | IP: Записан
Сообщение: 207037

Старое сообщение 07-02-2022 16:48
- За что?
KorteZZ
Lambda

Дата регистрации: Oct 2009
Проживает: Mongolia
Сообщений: 377
Возраст: 36

Рейтинг



Что-то у вас слишком низкий темп стрельбы для минигана то. Он эти ваши 5К патронов должен выплюнуть за минуту
Но в целом весело)

__________________

Killing Floor: Horzine Outbreak

Сообщить модератору | | IP: Записан
Сообщение: 207040

Старое сообщение 08-02-2022 07:11
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



KorteZZ в реальности никто не носит миниган на руках. Его устанавливают на станок. При такой скорострельности отдача огромная. И вес самого оружия с боезапасом пехотинцу не поднять. Мода на многоствольные пулемёты в массовой культуре началась, наверное, с фильма "Хищник". "Терминатор 2" моду закрепил.
В игре можно повысить скорострельность, представляешь, сколько патронов нужно будет рисовать в худе? Десятки тысяч. Будет имба, которая косит противника за секунды. Очень интересно эта проблема решена в TFC. Вроде бы пулемёт, вроде бы мощная штука. Но, в отличие от настоящего минигана, стреляет не в линию, а с разбросом по типу дробовика. При медленном расходе патронов сделано много попаданий. И баланс не страдает, и сетевой трафик экономится.

Добавлено 08-02-2022 в 16:24:

Так. Откопал старые сорцы и разобрался с рисованием цифр патронов. Объяснять, как увеличить передаваемое на клиент число, я не буду. В четырёх мессагах поменять BYTE на SHORT и сменить числа-ограничители с 254 и 255 на сколько там влазиет в шорт, вроде от -32768 до +32768, если он знаковый. А вот клиентский код приложу:

C++ Source Code:
#define DHN_4DIGITS  8
Новый флаг в hud.h.
C++ Source Code:
if (pw->iClip >= 0)
{
  // room for the number and the '|' and the current ammo
 
  x = ScreenWidth - (10 * AmmoWidth) - iIconWidth;
Важно заменить 8 на 10 в строке, определяющей x. По-умолчанию, отступ от правого края экрана равен ширине иконки патронов + ширине восьми цифр. По три цифры для магазина и запасных патронов, одна цифра для вертикального разделителя, и одна цифра для отступов. Так как показания у нас будут четырёхзначные, нужно добавить две цифры.
C++ Source Code:
x = gHUD.DrawHudNumber(x, y, iFlags | DHN_4DIGITS, pw->iClip, r, g, b);
Все вызовы DrawHudNumber в ammo.cpp нужно подкорректировать, и заменить DHN_3DIGITS на DHN_4DIGITS.
C++ Source Code:
1
int CHud :: DrawHudNumber( int x, int y, int iFlags, int iNumber, int r, int g, int b)
2
{
3
  int iWidth = GetSpriteRect(m_HUD_number_0).right - GetSpriteRect(m_HUD_number_0).left;
4
  int k;
5
 
6
  if (iNumber > 0)
7
  {
8
    // SPR_Draw 1000's
9
    if (iNumber >= 1000)
10
    {
11
      k = iNumber / 1000;
12
      SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b);
13
      SPR_DrawAdditive(0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
14
      x += iWidth;
15
    }
16
    else if (iFlags & (DHN_4DIGITS))
17
    {
18
      //SPR_DrawAdditive( 0, x, y, &rc );
19
      x += iWidth;
20
    }
21
 
22
    // SPR_Draw 100's
23
    if (iNumber >= 100)
24
    {
25
      k = (iNumber % 1000) / 100;
26
      SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
27
      SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
28
      x += iWidth;
29
    }
30
    else if (iFlags & (DHN_4DIGITS | DHN_3DIGITS))
31
    {
32
      //SPR_DrawAdditive( 0, x, y, &rc );
33
      x += iWidth;
34
    }
35
 
36
    // SPR_Draw 10's
37
    if (iNumber >= 10)
38
    {
39
      k = (iNumber % 100)/10;
40
      SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
41
      SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
42
      x += iWidth;
43
    }
44
    else if (iFlags & (DHN_4DIGITS | DHN_3DIGITS | DHN_2DIGITS))
45
    {
46
      //SPR_DrawAdditive( 0, x, y, &rc );
47
      x += iWidth;
48
    }
49
 
50
    // SPR_Draw ones
51
    k = iNumber % 10;
52
    SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
53
    SPR_DrawAdditive(0,  x, y, &GetSpriteRect(m_HUD_number_0 + k));
54
    x += iWidth;
55
  }
56
  else if (iFlags & DHN_DRAWZERO)
57
  {
58
    SPR_Set(GetSprite(m_HUD_number_0), r, g, b );
59
 
60
    // SPR_Draw 100's
61
    if (iFlags & (DHN_3DIGITS))
62
    {
63
      //SPR_DrawAdditive( 0, x, y, &rc );
64
      x += iWidth;
65
    }
66
 
67
    if (iFlags & (DHN_3DIGITS | DHN_2DIGITS))
68
    {
69
      //SPR_DrawAdditive( 0, x, y, &rc );
70
      x += iWidth;
71
    }
72
 
73
    if (iFlags & (DHN_4DIGITS | DHN_3DIGITS | DHN_2DIGITS))
74
    {
75
      //SPR_DrawAdditive( 0, x, y, &rc );
76
      x += iWidth;
77
    }
78
 
79
    // SPR_Draw ones
80
 
81
    SPR_DrawAdditive( 0,  x, y, &GetSpriteRect(m_HUD_number_0));
82
    x += iWidth;
83
  }
84
 
85
  return x;
86
}
DrawHudNumber привести к такому виду. Всё.

Отредактировано Ku2zoff 08-02-2022 в 09:26

Сообщить модератору | | IP: Записан
Сообщение: 207043

Старое сообщение 08-02-2022 09:24
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 20:05. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > вопрос про расширение цифр
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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