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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- кто знает как добавить такой эффект на пушку ? (https://hlfx.ru/forum/showthread.php?threadid=5634)


Отправлено илья2 24-03-2021 в 17:51:

Question кто знает как добавить такой эффект на пушку ?

кто знает как добавить такой эффект на пушку ?
такой эффект я видел в sven coop при выстреле shocktroppera в игрока
поковырялся я в исходниках оппосинг форса нашол вот такую функцию

void CBaseMonster::GlowShellOn( Vector color, float flDuration )
{
if( !m_glowShellUpdate )
{
m_prevRenderMode = pev->rendermode;
m_prevRenderColor = pev->rendercolor;
m_prevRenderAmt = pev->renderamt;
m_prevRenderFx = pev->renderfx;

pev->renderamt = 5;
pev->rendercolor = color;
pev->renderfx = kRenderFxGlowShell;

m_glowShellColor = color;

m_glowShellDuration = flDuration;
m_glowShellStartTime = gpGlobals->time;

m_glowShellUpdate = TRUE;
}
m_glowShellDuration += flDuration;
}

и вот такую

CBaseMonster* pMonster = pOther->MyMonsterPointer();
if (pMonster && !FClassnameIs(pMonster->pev,"monster_geneworm"))
pMonster->GlowShellOn( Vector( 0, 220, 255 ), .5f );

это как раз и есть этот эффект глоша пытался на world model поставить получилось пытался на игрока поставить тоже получилось а вот на v модель не получилось как на скриншоте. Как его добавить на v модель ?

__________________
Илья


Отправлено илья2 24-03-2021 в 17:54:

сам скриншот

__________________
Илья


Отправлено Ku2zoff 24-03-2021 в 18:10:

Цитата:
илья2 писал:
а вот на v модель не получилось как на скриншоте.

Сорцы DMC в открытом доступе. Смотри там. Quad Damage отображается на вьюмодели именно с помощью GlowShell.


Отправлено илья2 24-03-2021 в 20:03:

точно а я и забыл про них щас посмотрю

Добавлено 24-03-2021 в 23:03:

что то не получается либо я не туда ставлю функцию либо надо что то добавлять

__________________
Илья


Отправлено Дядя Миша 24-03-2021 в 21:12:

Игроку поставь pev->renderfx = kRenderFxGlowShell;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме


Отправлено илья2 24-03-2021 в 21:40:

не работает он все равно в view модели не отображается а отображается только у игрока держащий оружие

Добавлено 25-03-2021 в 00:29:

блин думал просто все будет а оказывается все по другому

Добавлено 25-03-2021 в 00:40:

у игрока держащий оружие в смысле когда thirdperson активируешь. Я думаю надо в исходниках dmc повозится может там есть что то надо попробовать поэкспериментировать с удалением например.

__________________
Илья


Отправлено Ku2zoff 25-03-2021 в 02:04:

Цитата:
Дядя Миша писал:
Игроку поставь pev->renderfx = kRenderFxGlowShell;

Это ведь действует только на игрока от третьего лица.
Цитата:
илья2 писал:
не работает он все равно в view модели не отображается а отображается только у игрока держащий оружие

Потому что ты не там назначаешь эффект. Это нужно делать на клиенте именно для вьюмодели. Там и проверка соответствующая есть, gEngfuncs.GetViewModel().
Цитата:
илья2 писал:
блин думал просто все будет а оказывается все по другому
*****
Я думаю надо в исходниках dmc повозится может там есть что то надо попробовать поэкспериментировать

Если бы ты действительно заглянул в сорцы DMC, а не занимался неизвестно чем почти полтора часа (судя по времени обновления постов), то узнал бы, что во-первых, эффект GlowShell для вьюмодели применяется исключительно на клиенте, а во-вторых, работает только в связке с локальными клиентскими оружиями. Введи в консоли DMC cl_lw 0, а потом возьми предмет. Наоборот не сработает, т.к. эффект уже будет ранее назначен при cl_lw 1.

Добавлено 25-03-2021 в 09:04:

илья2 чтобы ты сильно не возился, немного помогу тебе. Вот такой код втыкаешь куда-нибудь на клиент:
C++ Source Code:
1
cl_entity_t* player = gEngfuncs.GetLocalPlayer();
2
 
3
if (player)
4
{
5
  cl_entity_t* view = gEngfuncs.GetViewModel();
6
 
7
  if (view)
8
  {
9
    view->curstate.renderfx = player->curstate.renderfx;
10
    view->curstate.renderamt = player->curstate.renderamt;
11
    view->curstate.rendercolor = player->curstate.rendercolor;
12
  }
13
}

А вот таким кодом применяешь глоу к игроку на сервере:
C++ Source Code:
pev->renderfx = kRenderFxGlowShell;
pev->renderamt = 15;
pev->rendercolor = Vector(125, 125, 255);

В итоге, у тебя и пушка от первого лица и игрок от третьего будут иметь одинаковый эффект. Рендерколор - цвет в RGB, рендерамт в данном случае то, насколько эффект будет "жирнее" оригинальной модели. Оптимальное значение - 5, выглядит как Shield Belt в UT99. При 15 как в DMC уже не очень.

Добавлено 25-03-2021 в 08:48:

На скрине результат трёх минут поиска по строчке kRenderFxGlowShell в сорцах DMC.


Отправлено Дядя Миша 25-03-2021 в 07:25:

Цитата:
илья2 писал:
блин думал просто все будет а оказывается все по другому

В мемориз!

Цитата:
Ku2zoff писал:
Это ведь действует только на игрока от третьего лица.

Ну и что? Скопировать эффект из игрока на вьюмодель.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме


Отправлено илья2 25-03-2021 в 09:18:

получилось наконец то спасибо Ku2zoff за код

cl_entity_t* player = gEngfuncs.GetLocalPlayer();

if (player)
{
cl_entity_t* view = gEngfuncs.GetViewModel();

if (view)
{
view->curstate.renderfx = player->curstate.renderfx;
view->curstate.renderamt = player->curstate.renderamt;
view->curstate.rendercolor = player->curstate.rendercolor;
}
}

вот только как на определенную пушку кинуть я не особо понял ? кинул вот этот код в player.cpp и сработало только на всех пушках.

pev->renderfx = kRenderFxGlowShell;
pev->renderamt = 15;
pev->rendercolor = Vector(125, 125, 255);

Добавлено 25-03-2021 в 12:18:

скриншот

__________________
Илья


Отправлено Дядя Миша 25-03-2021 в 09:38:

В коде игрока проверяй какая у него пушка в руках и включай\отключай эффект.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме


Отправлено илья2 25-03-2021 в 09:56:

все я справился но пришлось немного доработать код Ku2zoff

m_pPlayer->pev->renderfx = kRenderFxGlowShell;
m_pPlayer->pev->renderamt = 15;
m_pPlayer->pev->rendercolor = Vector(125, 125, 255);

делал так ставил это в Deploy

потом поставил вот это в Holster

m_pPlayer->pev->renderfx = kRenderFxGlowShell;
m_pPlayer->pev->renderamt = 0;
m_pPlayer->pev->rendercolor = Vector(0, 0, 0);

получилось круто

__________________
Илья


Отправлено Aynekko 25-03-2021 в 09:59:

Цитата:
илья2 писал:
потом поставил вот это в Holster

Может в холстер надо было kRenderNormal и amt 255?

__________________
Мой мод на Xash


Отправлено илья2 25-03-2021 в 10:16:

можно и так
это я чисто под гаусс делал

Добавлено 25-03-2021 в 13:13:

сам прикол в том что когда мы подбираем оружие это в deploy, то эффект работает на пушке а когда убираем holster, эффект исчезает

Добавлено 25-03-2021 в 13:16:

можно даже любой цвет поставить умеющие поймут как это сделать

__________________
Илья


Отправлено Ku2zoff 25-03-2021 в 13:12:

Цитата:
Дядя Миша писал:
Ну и что? Скопировать эффект из игрока на вьюмодель.

Ну я собсно так и поступил в коде-примере. Самый лёгкий вариант. Хотя, я бы всё-таки применял эффект не к игроку, а к p_модели, так интереснее смотрится со стороны.
Цитата:
илья2 писал:
когда мы подбираем оружие это в deploy, то эффект работает на пушке а когда убираем holster, эффект исчезает

Можно в коде самого игрока сделать проверку:
C++ Source Code:
1
if (m_pActiveItem && m_pActiveItem->m_iId == WEAPON_GAUSS)
2
{
3
  Вкл эффект
4
}
5
else
6
{
7
  Выкл эффект
8
}

Вызывать можно из ItemPostFrame, например.


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

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