HLFX.Ru Forum
Показать все 15 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Добавление нового элемента на HUD (https://hlfx.ru/forum/showthread.php?threadid=598)


Отправлено Maxwel 05-04-2007 в 12:59:

Question Добавление нового элемента на HUD

Игра Half-Life 1

Промогите пожалуйста с таким вот вопросом... Мне надо добавить новый элемент на HUD. Интересно следеющее:


  1. В каких файлах на клиенте прописать новый элемент?
    Собственно знаю, что это надо писать куда-то в hud.cpp, hud.h, hud_msg.cpp + ещё свой cpp с этим элементом добавить. Но не могу понять, что и куда писать.
  2. Как прицепить новый MESSAGE для этого элемента HUD? В смысле где его обьявить?
    Нужно для того, чтобы этот элемент мог получать данные с сервера.
  3. Что на сервере надо прописать, чтобы этот MESSAGE можно было вызвать?

Ну вот надо так создать полноценный элемент HUD. Расскажите пожалуйста, от куда начинать и где заканчивать. Очень прошу


Отправлено XaeroX 05-04-2007 в 15:55:

Сделай поиск какого-нибудь элемента, например, интерфейса поезда (train) в этих файлах. И сделай все по аналогии

__________________

xaerox on Vivino


Отправлено Maxwel 06-04-2007 в 15:47:

Unhappy

Ну я добавил новый класс в клиентскую часть, но элемент этот почему-то у меня не рисуется...
Скомпилилось без ошибок и в проект оно добавлено...
Ну вот функция Draw то ли не вызывается, то ли ещё что-то

Я смотрел код train'а и там нету каких либо условий, что определяют отображаться или нет... Но ведь в игре-то train отображается не всегда отображается...

Ну скажите пожалуйста, как зделать, чтоб та функция вызывалась


Отправлено Government-Man 06-04-2007 в 16:31:

Maxwel аналогично - посмотри, откуда она вызывается у других HUD'ов и сделай по аналогии.


Отправлено XaeroX 06-04-2007 в 16:56:

Да, там надо Init и VidInit вызвать. И конечно создать экземпляр твоего класса в CHud.

__________________

xaerox on Vivino


Отправлено Maxwel 06-04-2007 в 19:53:

Ну я и вызываю.
В hud.cpp в процедуре CHud :: Init написал для этого строчку:

C++ Source Code:
m_Timer.Init();

в процедуре CHud :: VidInit написал:
C++ Source Code:
m_Timer.VidInit();


ну и собственно в hud.h в класс CHud вписал:
C++ Source Code:
CHudTimer	m_Timer;


Этого что не достаточно?


Отправлено XaeroX 07-04-2007 в 04:40:

А это есть?

C++ Source Code:
DECLARE_MESSAGE(m_Timer, Timer )


И на сервере REG_USER_MSG не забыл?

__________________

xaerox on Vivino


Отправлено Maxwel 07-04-2007 в 09:30:

Не забыл.
На сервере в player.cpp написал в процедуре UpdateClientData:

C++ Source Code:
1
MESSAGE_BEGIN( MSG_ONE, gmsgTimer, NULL, pev );
2
WRITE_BYTE( m_iTime );
3
WRITE_BYTE( 1 );
4
MESSAGE_END();


И эти строчки
C++ Source Code:
int gmsgTimer = 0;

C++ Source Code:
gmsgTimer = REG_USER_MSG("Timer", 2);

тоже есть.
А оно всё равно не рисуется

Добавлено сегодня в 12:30:

Цитата:
XaeroX писал:
А это есть?
C++ Source Code:
DECLARE_MESSAGE(m_Timer, Timer )


Есть.


Отправлено XaeroX 07-04-2007 в 09:36:

Maxwel давай весь код твоего таймера на клиенте, поглядим...

__________________

xaerox on Vivino


Отправлено Maxwel 07-04-2007 в 09:45:

Ну это только для теста пока ещё (просто я думаю сначала заставить его работать, а потом дописать полностью) должен походу рисовать внизу экрана в центре спрайт и заполненную область.
Естественно я дописал в hud.h

C++ Source Code:
#include "timer.h"


Отправлено XaeroX 07-04-2007 в 10:11:

Maxwel а, ну все ясно. Надо ж, когда ты его включаешь, сообщить об этом худу В ф-и MsgFunc_Timer сделай вот так:

C++ Source Code:
1
if (y = 0)
2
{
3
  if (m_bEnabled)
4
  {
5
    m_iFlags &= ~HUD_ACTIVE;
6
    m_bEnabled = FALSE;
7
  }
8
}
9
else
10
{
11
  if (!m_bEnabled)
12
  {
13
    m_iFlags |= HUD_ACTIVE;
14
    m_bEnabled = TRUE;
15
  }
16
}

__________________

xaerox on Vivino


Отправлено Maxwel 07-04-2007 в 15:22:

Так, теперь буду знать о флаге
Теперь всё работает. XaeroX спасибо


Отправлено XaeroX 15-04-2007 в 14:44:

Maxwel кстати, там надо писать не

C++ Source Code:
if (y = 0)
а
C++ Source Code:
if (y == 0)
Но это так, к слову

__________________

xaerox on Vivino


Отправлено Maxwel 15-04-2007 в 14:47:

XaeroX да у меня уже всё работает, то был пробный код


Отправлено XaeroX 15-04-2007 в 15:04:

Maxwel ну я просто открыл эту тему сейчас, и мне глаза резануло

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 05:10.
Показать все 15 сообщений этой темы на одной странице

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