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

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=1666)


Отправлено fire64 03-01-2009 в 15:30:

как изменять свойства энтить ?

как изменять свойства энтить ?

я пробовал например изменять рендер колор энтитей таким методом

C++ Source Code:
1
TraceResult tr;
2
 
3
Vector anglesAim = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
4
UTIL_MakeVectors( anglesAim );
5
Vector vecSrc = m_pPlayer->GetGunPosition( ) - gpGlobals->v_up * 2;
6
Vector vecDir = gpGlobals->v_forward;
7
 
8
UTIL_TraceLine(vecSrc, vecSrc + vecDir * 8192, dont_ignore_monsters, m_pPlayer->edict(), &tr);
9
 
10
tr.pHit->v.rendercolor.x = 25;
11
tr.pHit->v.rendercolor.y = 25;
12
tr.pHit->v.rendercolor.y = 93;


но ничего не вышло, судя по всему таким методом можно только получать нужные переменные, но не изменять их

так же соотвествено интересует как перемещать энтити, а так же как их удалять

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Ku2zoff 03-01-2009 в 15:40:

fire64 погляди в Спирите энтитю env_customize. Она меняет свойства энтить, правда не все и не всегда правильно, но с RenderFields точно нету глюков.


Отправлено fire64 03-01-2009 в 15:49:

Цитата:
Ku2zoff писал:
fire64 погляди в Спирите энтитю env_customize. Она меняет свойства энтить, правда не все и не всегда правильно, но с RenderFields точно нету глюков.


посмотрел, но мне это не совсем подходит
я конечно могу сделать

C++ Source Code:
CBaseEntity *pTarget = UTIL_FindEntityByTargetname(NULL, STRING(tr.pHit->v.targetname), pActivator);


но это будет работать только если у энтити задано targetname
а что делать если нет ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-01-2009 в 16:09:

Цитата:
fire64 писал:
но ничего не вышло, судя по всему таким методом можно только получать нужные переменные, но не изменять их

Это почему же? Можно и изменять.
Но разумеется, если ты изменяешь рендерколор у брашевой энтити или модели, ничего визуально не изменится.

__________________

xaerox on Vivino


Отправлено Scrama 03-01-2009 в 16:14:

Код какой-то кривой - нет проверки на случай, если ничего не нашлось, дважды меняется rendercolor.y, в то же время в обычном env_render используется просто

C++ Source Code:
pevTarget->rendercolor = pev->rendercolor;


Добавлено 03-01-2009 в 22:14:

Цитата:
Ku2zoff писал:
Она меняет свойства энтить, правда не все и не всегда правильно, но с RenderFields точно нету глюков.
Если я не ошибаюсь, их она вообще не трогает.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено fire64 03-01-2009 в 16:46:

XaeroX, ок
сорри, сделал целых 2 ошибки
1 вместо z менял 2 раза y и менял рендерколор у модели

впрочем код из моего поста всеравно не работает

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-01-2009 в 17:03:

А как ты проверяешь, что он работает?
Если на моделях и брашах изменение рендерколора не видно, а спрайты трейслайном не вылавливаются?

__________________

xaerox on Vivino


Отправлено fire64 03-01-2009 в 17:24:

Цитата:
XaeroX писал:
А как ты проверяешь, что он работает?
Если на моделях и брашах изменение рендерколора не видно, а спрайты трейслайном не вылавливаются?


в таком случае вопрос, как менять цвет моделей у NPC и брашевых энтитей ?

сейчас проверил health на npc, оказывается все работает

также меня интересуют 2 других вопроса из первого поста

как переместить брашевую или точечную энтитю из точки A в точку B
при этом меня интересует 2 варианта
мгновенное перемещение и движение из точки A в точку B

а так же как удалить энтити обоих видов, может быть есть какая то функция типа entremove

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-01-2009 в 18:03:

Цитата:
fire64 писал:
мгновенное перемещение и движение из точки A в точку B

1. изменяй pev->origin, и потом не забудь вызвать UTIL_SetOrigin.
2. это уже сложно. зависит от конкретного случая.
Цитата:
fire64 писал:
а так же как удалить энтити обоих видов, может быть есть какая то функция типа entremove

UTIL_Remove.
Цитата:
fire64 писал:
в таком случае вопрос, как менять цвет моделей у NPC и брашевых энтитей ?

Никак %)

__________________

xaerox on Vivino


Отправлено fire64 03-01-2009 в 18:47:

XaeroX, спасибо за помощь
а у меня тут прикольный глюк случился
а точнее целая куча глюков

я короче в праймори атак написал такой код

C++ Source Code:
1
TraceResult tr;
2
 
3
Vector anglesAim = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
4
UTIL_MakeVectors( anglesAim );
5
Vector vecSrc = m_pPlayer->GetGunPosition( ) - gpGlobals->v_up * 2;
6
Vector vecDir = gpGlobals->v_forward;
7
 
8
UTIL_TraceLine(vecSrc, vecSrc + vecDir * 8192, dont_ignore_monsters, m_pPlayer->edict(), &tr);
9
 
10
if (tr.flFraction != 1.0)
11
{
12
  tr.pHit->v.origin = vecSrc;
13
  UTIL_SetOrigin ( this, vecSrc );
14
}


запустил мультиплеер с кооп режимом

выстрелил в NPC, в результате он появился над моей головой и заблокировал мое движение.
В результате мне пришлось себя убить

и после респавна появились глюки

вот список

1) тот npc в которого я стрелял теперь весит в воздухе

2) некоторые npc стали металлические на звук и не уязвимые

3) некоторые npc не могли нанести мне вред

4) некоторые npc стали стрелять в меня сквозь стеклянную стену и кроме того что они видели меня сквозь стену они еще и простреливали ее насквозь

5) самое странное, после реконнекта к серверу исчезло небо, вместо него белая текстура

вот скрин, правда на нем кроме неба мало что видно

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-01-2009 в 19:12:

Ну блин... Ты не видишь что ли, что оригин сам себе выставил во второй функции?
Надо так:

tr.pHit->v.origin = vecSrc;
UTIL_SetOrigin ( CBaseEntity::Instance(tr.pHit), vecSrc );

__________________

xaerox on Vivino


Отправлено fire64 03-01-2009 в 19:21:

спасибо

насчет неба, как выяснилось это очередной глюк спирита

кстати насчет перемещения

может попробовать многократный вызов



C++ Source Code:
tr.pHit->v.origin.x = tr.pHit->v.origin.x - 1;
tr.pHit->v.origin.y = tr.pHit->v.origin.y - 1;
UTIL_SetOrigin ( CBaseEntity::Instance(tr.pHit), tr.pHit->v.origin );


думаю это должно выглядеть как плавное перемещение

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Ku2zoff 03-01-2009 в 19:27:

>>Ну блин... Ты не видишь что ли, что оригин сам себе выставил во второй функции?
По-моему не сам себе, а энтите оружия. Это ж код PrimaryAttack. Если б он себе выставил, это было бы так, если я не ошибаюсь:

C++ Source Code:
UTIL_SetOrigin(m_pPlayer, vecSrc);

но это не важно.

>>насчет неба, как выяснилось это очередной глюк спирита
fire64 колись, шо за спирит такой? Белое небо у меня было только когда я умудрился удалить папку gfx/env


Отправлено fire64 03-01-2009 в 19:47:

благодаря XaeroX баг под пунктом 1 исправлен
глюк под номером 5 оказался спиритовским ( Half-life: Revision Build 1.0 )
небо исчезает если играя сервером ввести в косноль команду reconnect

при использовании перемещающего оружия на каком либо npc
появляются глюки 2, 3 и 4 со всеми npc на карте
так же через какое-то время перестает работать оружие ( не перемещает )

tr.pHit->v.health начинает возвращать 0 вместо настоящего здоровья
думаю что и поломка перемещения и 0 здоровья связано с тем что что-то препятствует лучу трассирования

такое ощущение как будто вокруг игрока образуется некая невидимая металлическая сфера отрезающая его от остального мира

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Scrama 04-01-2009 в 15:49:

Цитата:
XaeroX писал:
Если на моделях и брашах изменение рендерколора не видно, а спрайты трейслайном не вылавливаются?

Специально перепроверять не стал, но кажись вот в этом режиме к брашам можно применить цвет - равномерная заливка rendercolor'ом.
code:
@BaseClass base(RenderFxChoices) = RenderFields [ rendermode(choices) : "Render Mode" : 0 = [ 0: "Normal" 1: "Color" 2: "Texture" 3: "Glow" 4: "Solid" 5: "Additive" ] renderamt(integer) : "FX Amount (1 - 255)" : 255 rendercolor(color255) : "FX Color (R G B)" : "0 0 0" ]


Добавлено 04-01-2009 в 21:49:

Перепроверил:

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено XaeroX 04-01-2009 в 16:03:

Цитата:
Scrama писал:
но кажись вот в этом режиме к брашам можно применить цвет - равномерная заливка rendercolor'ом.

Ну я имел в виду стандартный Rendermode.

__________________

xaerox on Vivino


Отправлено fire64 04-01-2009 в 16:21:

Цитата:
XaeroX писал:
Ну я имел в виду стандартный Rendermode.


тогда может быть можно сделать так

C++ Source Code:
1
tr.pHit->v.rendermode = 1;
2
 
3
tr.pHit->v.rendercolor.x = 25;
4
tr.pHit->v.rendercolor.y = 25;
5
tr.pHit->v.rendercolor.z = 93;
6
 


сначало устанавливаем энтите rendermode color
а затем задаем цвет rendercolor

кстати это действует только на брашевые энтити ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Ku2zoff 04-01-2009 в 16:39:

fire64 а тебе надо перекрашивать модели? Спрайты, насколько я знаю, без проблем меняют оттенок.


Отправлено fire64 04-01-2009 в 16:48:

Ku2zoff, а как собственно работать со спрайтами ?

как уже писал XaeroX, "спрайты трейслайном не вылавливаются"

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

браши и модели становятся невидимыми

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Ku2zoff 04-01-2009 в 16:55:

fire64 интересно. Попробуй им renderamt = 255;

Добавлено 04-01-2009 в 22:55:

Да, ещё. Трейслайном по-моему улавливается то, что имеет хулл. А спрайты - точечные энтити, его не имеют.


Отправлено fire64 04-01-2009 в 17:14:

Цитата:
Ku2zoff писал:
fire64 интересно. Попробуй им renderamt = 255;


сработало, окрасил кнопки на стене в синий цвет
с моделями это не прошло, они остались какими были

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Ku2zoff 04-01-2009 в 17:25:

fire64 тогда для модели rendermode = kRenderTransTexture; типа голограммы, кажись в этом режиме их мона подкрашивать.


Отправлено fire64 04-01-2009 в 17:49:

Цитата:
Ku2zoff писал:
fire64 тогда для модели rendermode = kRenderTransTexture; типа голограммы, кажись в этом режиме их мона подкрашивать.


поменял код в пушке, выстрелил в стекло и его глюкануло, оно стало сиреневым и начало мерцать
обычные браши от этого осветляются, модели никак не реагируют


у меня сейчас возникла небольшая проблемка.
я хотел создавать искры в том месте куда попадает трасер

C++ Source Code:
1
TraceResult tr;
2
 
3
Vector anglesAim = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
4
UTIL_MakeVectors( anglesAim );
5
Vector vecSrc = m_pPlayer->GetGunPosition( ) - gpGlobals->v_up * 2;
6
Vector vecDir = gpGlobals->v_forward;
7
 
8
UTIL_TraceLine(vecSrc, vecSrc + vecDir * 8192, dont_ignore_monsters, m_pPlayer->edict(), &tr);
9
 
10
UTIL_Remove( CBaseEntity::Instance(tr.pHit) );
11
 
12
Create( "spark_shower", vecDir, anglesAim, NULL );


но игра вылетает без каких либо сообщений об ошибке

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 04-01-2009 в 18:45:

fire64
Попробуй UTIL_Sparks( tr.vecEndPos);

__________________

xaerox on Vivino


Отправлено Ku2zoff 04-01-2009 в 18:51:

fire64 может надо CBaseEntity::Create ?


Отправлено fire64 04-01-2009 в 19:34:

XaeroX, спасибо попробую

Ku2zoff, так уже пробовал, не помогло

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 07-01-2009 в 11:50:

>>спрайты трейслайном не вылавливаются
а вы ему SOLID_SLIDEBOX поставили, чтоб он вылавливался?
трасе плевать, спрайт там модель или барш, она хулл трасит.
Хотя халфа умеет трасить студиомодельки.

__________________
My Projects: download page

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

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 07-01-2009 в 11:53:

Цитата:
Дядя Миша писал:
а вы ему SOLID_SLIDEBOX поставили, чтоб он вылавливался?

Тогда он будет блокировать игрока
Ну впрочем я в HLFX реализовал возможность трейсить несолидные объекты (типа триггеров и спрайтов), но сделано это было хаком (сменой солида перед трейсом и возвращением значения после трейса).

__________________

xaerox on Vivino


Отправлено Дядя Миша 08-01-2009 в 11:57:

>>Тогда он будет блокировать игрока
ну понятное дело что будет
>>Ну впрочем я в HLFX реализовал возможность трейсить несолидные объекты
Я тоже. У меня тип трассируемых объектов задается по маске.
По умолчанию это SOLID, но можно и наоборот сделать.

__________________
My Projects: download page

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

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


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

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