Маппингом быстрее. В блушифте так камеры сделаны, что в начале игры можно посмотреть. Только маппинг подходит только для статичных камер. Для подвижных нужен кодинг. FanaT2 поищи тутор по ночному виденью, там есть как нарисовать спрайт на весь экран. Без триапи. Просто. Чтоб не парить мозг этим триапи раньше времени.
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);
Объём в 1 байт более чем достаточно, чтобы вкл/выкл эффект. Далее, в коде камеры, в функции void CTriggerCamera::Use, после строчки SET_VIEW( pActivator->edict(), edict() ); вставляешь вызов новой мессаги, примерно такой:
На сервере в принципе всё. На клиенте заводишь в классе 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);
Немного шаманства с сейв/рестором и поиск потенциальных багов...
PROFIT!!!
Добавлено 27-04-2016 в 20:29:
З.Ы. есть нюанс. Кажется, я не учёл выключение спрайта, когда игрок дохнет. ХЗ. Если будет такое, то просто отправь мессагу с нулевым значением из функции CBasePlayer::Killed.