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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Проблема с UTIL_BloodStream (https://hlfx.ru/forum/showthread.php?threadid=1572)


Отправлено [)r0n 06-11-2008 в 07:15:

Плиз хелп! Решил сделать, чтоб при попадании в противника, из того вылетала струя крови ( как в cs при хэдшотах) только капли почему-то разноцветные, помогите исправить?!


Отправлено XaeroX 06-11-2008 в 09:11:

Нда, так сложно почитать FAQ и посмотреть, как вставляются картинки с превьюшками. Ну просто архисложно вставляются.

Цитата:
[)r0n писал:
помогите исправить?!

Исправить что? Не вижу кода.

__________________

xaerox on Vivino


Отправлено [)r0n 07-11-2008 в 02:37:

Да там кода нет, я просто в weapon.cpp в void SpawnBlood после

C++ Source Code:
UTIL_BloodDrips( vecSpot, g_vecAttackDir, bloodColor, (int)flDamage );

дописал
C++ Source Code:
UTIL_BloodStream( vecSpot, UTIL_RandomBloodVector(), BLOOD_COLOR_RED, RANDOM_LONG(50, 150) );


Добавлено 07-11-2008 в 05:32:

P.S. прочитал я твой FAQ доволен?

Добавлено 07-11-2008 в 05:37:

Так вот, как видно из скриншота "брызги" крови разноцветные, а не просто красные. Вот это надо исправить, вопрос только в том, как это сделать.

А вот код UTIL_BloodStream найденный в util.cpp

C++ Source Code:
1
void UTIL_BloodStream( const Vector &origin, const Vector &direction, int color, int amount )
2
{
3
  if ( !UTIL_ShouldShowBlood( color ) )
4
    return;
5
 
6
  if ( g_Language == LANGUAGE_GERMAN && color == BLOOD_COLOR_RED )
7
    color = 0;
8
 
9
  MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, origin );
10
  WRITE_BYTE( TE_BLOODSTREAM );
11
  WRITE_COORD( origin.x );
12
  WRITE_COORD( origin.y );
13
  WRITE_COORD( origin.z );
14
  WRITE_COORD( direction.x );
15
  WRITE_COORD( direction.y );
16
  WRITE_COORD( direction.z );
17
  WRITE_BYTE( color );
18
  WRITE_BYTE( min( amount, 255 ) );
19
  MESSAGE_END();
20
}


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

Такой глюк наблюдается из-за того, что функция использует индексированные цвета. А TE_BLOODSTREAM берет не конкретный индекс, и диапазон индексов. И помимо красного цвета, в диапазон попадают и другие цвета.
Возможно, у тебя покоцанный пиратами файл индексов (palette.lmp он кажется называется).
Попробуй вместо BLOOD_COLOR_RED писать число, отличающееся немного в ту или иную сторону (посмотри сначала, чему BLOOD_COLOR_RED равен), пока в диапазон не будут попадать только красные цвета.

__________________

xaerox on Vivino


Отправлено [)r0n 08-11-2008 в 11:54:

Пасиб за помощь, вот:



тока palette, как оказалось, тут не причем


Отправлено XaeroX 08-11-2008 в 12:47:

А в чем была проблема?

__________________

xaerox on Vivino


Отправлено (_-=ZhekA=-_) 08-11-2008 в 14:31:

[)r0n
Прикольная фича ))) Напиши тутор, если не сложно

__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

http://button.moddb.com/download/medium/125531.png


Отправлено Василь 08-11-2008 в 17:20:

Интересно как бы это смотрелось партиклями.

__________________
HomePage
YouTube
RIP - Defiler Unit


Отправлено [)r0n 09-11-2008 в 01:08:

to XaeroX

В общем, решил посмотреть на палитру файла palette.bmp, увидел это:



В этой палитре каждый цвет имеет индекс, а BLOOD_COLOR_RED равен 247, тоесть берет цвет из самого низа палитры, а там кроме красного еще есть и другие цвета. Корче, palette не битый, он так задуман . А вот насчет диапазона TE_BLOODSTREAM ты оказался прав, из-за того, что он слишком большой туда все эти цвета из конца палитры попадают. В общем, выбрал цвет с индексом 71, с ним все работает.

to (_-=ZhekA=-_)

Там кода почти нет, идешь в weapon.cpp там в void SpawnBlood пишем:

C++ Source Code:
1
if ( bloodColor == BLOOD_COLOR_RED )
2
{
3
  UTIL_BloodStream( vecSpot, UTIL_RandomBloodVector(), 71, RANDOM_LONG(50, 150) );
4
}
5
else
6
{
7
  UTIL_BloodStream( vecSpot, UTIL_RandomBloodVector(), bloodColor, RANDOM_LONG(50, 150) );
8
}


Сразу предупреждаю, я это писал в спирите, но как мне кажется должно работать везде.


Отправлено (_-=ZhekA=-_) 09-11-2008 в 10:38:

[)r0n
Cпасибо

__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

http://button.moddb.com/download/medium/125531.png


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

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