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

Группа: Неопытный
Дата регистрации: Mar 2016
Проживает: MCK
Сообщений: 6
Возраст: 29

Рейтинг



Half-Life Спрайт при активации trigger_camera

Хочу знать, как сделать так, чтобы при активации trigger_camera спрайт растягивайся по всему экрану?

С HLSDK дружу плохо, поэтому ногами не бить .

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

Старое сообщение 23-04-2016 17:07
- За что?
***FantoM***
Житель форума

Дата регистрации: Nov 2014
Проживает: Да
Сообщений: 392

Рейтинг



FanaT2
Eсть два способа
Первый(маппинг)
Поставить trigger_camera и перед нею поставить env_sprite.

Второй(кодинг)
Найти функцию включения камеры и передать мессагу для включения эффекта на клиенте,
а эффект создать через triapi.

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

Старое сообщение 23-04-2016 17:32
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Маппингом быстрее. В блушифте так камеры сделаны, что в начале игры можно посмотреть. Только маппинг подходит только для статичных камер. Для подвижных нужен кодинг.
FanaT2 поищи тутор по ночному виденью, там есть как нарисовать спрайт на весь экран. Без триапи. Просто. Чтоб не парить мозг этим триапи раньше времени.

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

Старое сообщение 24-04-2016 04:34
- За что?
FanaT2
Новичок

Группа: Неопытный
Дата регистрации: Mar 2016
Проживает: MCK
Сообщений: 6
Возраст: 29

Рейтинг



Ku2zoff
Вот код из ночного видения
if (m_fOn)
{
// здесь задается имя спрайта
HSPRITE hspr = SPR_Load( "sprites/of_nv_b.spr" );

// 128, 255, 128 - это зеленоватый цвет в RGB, измени если нужно
SPR_Set(hspr, 128, 255, 128 );

// 20 - это скорость анимации спрайта, количество кадров/сек
int frame = (int)(flTime * 20) % SPR_Frames(hspr);
int xSize = SPR_Width(hspr, 0);
int ySize = SPR_Height(hspr, 0);

for (int yPos = 0; yPos < ScreenHeight; yPos += ySize)
{
for (int xPos = 0; xPos < ScreenWidth; xPos += xSize)
{
SPR_DrawAdditive(frame, xPos, yPos, NULL);
}
}
}

куда его нужно вставить,чтобы он работал после активации камеры?

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

Старое сообщение 25-04-2016 17:10
- За что?
FanaT2
Новичок

Группа: Неопытный
Дата регистрации: Mar 2016
Проживает: MCK
Сообщений: 6
Возраст: 29

Рейтинг



***FantoM*** Ku2zoff Куда же вставить код?

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

Старое сообщение 26-04-2016 19:11
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



FanaT2 значит, решил кодить. Тогда пиши новую клиентскую мессагу. Например, gmsgCameraSprite. В player.cpp по аналогии с остальными мессагами:

C++ Source Code:
gmsgCameraSprite = REG_USER_MSG("CameraSprite", 1);
Объём в 1 байт более чем достаточно, чтобы вкл/выкл эффект. Далее, в коде камеры, в функции void CTriggerCamera::Use, после строчки SET_VIEW( pActivator->edict(), edict() ); вставляешь вызов новой мессаги, примерно такой:
C++ Source Code:
MESSAGE_BEGIN( MSG_ONE, gmsgCameraSprite, NULL, pActivator->pev );
WRITE_BYTE(1);
MESSAGE_END();

Ниже, в функции void CTriggerCamera::FollowTarget после строчки SET_VIEW( m_hPlayer->edict(), m_hPlayer->edict() ); повторно отправляешь мессагу:
C++ Source Code:
MESSAGE_BEGIN( MSG_ONE, gmsgCameraSprite, NULL, pActivator->pev );
WRITE_BYTE(0);
MESSAGE_END();

На сервере в принципе всё. На клиенте заводишь в классе CHud переменную m_iCameraSprite и новую мессагу по аналогии с существующими. Принимая мессагу на клиенте, меняешь значение переменной с 0 на 1 и наоборот. В функцию CHud::Redraw засовываешь код:
C++ Source Code:
1
if (m_iCameraSprite)
2
{
3
  // здесь задается имя спрайта
4
  HSPRITE hspr = SPR_Load( "sprites/of_nv_b.spr" );
5
 
6
  // 128, 255, 128 - это зеленоватый цвет в RGB, измени если нужно
7
  SPR_Set(hspr, 128, 255, 128 );
8
 
9
  // 20 - это скорость анимации спрайта, количество кадров/сек
10
  int frame = (int)(flTime * 20) % SPR_Frames(hspr);
11
  int xSize = SPR_Width(hspr, 0);
12
  int ySize = SPR_Height(hspr, 0);
13
 
14
  for (int yPos = 0; yPos < ScreenHeight; yPos += ySize)
15
  {
16
    for (int xPos = 0; xPos < ScreenWidth; xPos += xSize)
17
    {
18
      SPR_DrawAdditive(frame, xPos, yPos, NULL);
19
    }
20
  }
21
}

Немного шаманства с сейв/рестором и поиск потенциальных багов...
PROFIT!!!

Добавлено 27-04-2016 в 20:29:

З.Ы. есть нюанс. Кажется, я не учёл выключение спрайта, когда игрок дохнет. ХЗ. Если будет такое, то просто отправь мессагу с нулевым значением из функции CBasePlayer::Killed.

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

Старое сообщение 27-04-2016 14:29
- За что?
FanaT2
Новичок

Группа: Неопытный
Дата регистрации: Mar 2016
Проживает: MCK
Сообщений: 6
Возраст: 29

Рейтинг



Ku2zoff огромное тебе спасибо!

Добавлено 27-04-2016 в 21:24:

Ku2zoff Реально ли сменить спрайт не через код, а через entity trigger_camera?

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

Старое сообщение 27-04-2016 18:24
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

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

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

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

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

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