HLFX.Ru Forum Страницы (103): « Первая ... « 71 72 73 74 [75] 76 77 78 79 » ... Последняя »
Показать все 1540 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- Немного о будущем XDM3038 (https://hlfx.ru/forum/showthread.php?threadid=4641)


Отправлено mittorn 09-11-2016 в 15:38:

~ X ~ это не единственное использование MOVETYPE_BOUNCEMISSILE
И используй тег cpp


Отправлено XaeroX 09-11-2016 в 15:41:

Цитата:
mittorn писал:
это не единственное использование MOVETYPE_BOUNCEMISSILE

Не мешай Мастеру излагать мудрость!
Мы наслаждаемся.

__________________

xaerox on Vivino


Отправлено Crystallize 09-11-2016 в 16:10:

XaeroX ты что он же Очень Опытный Программист


Отправлено XaeroX 09-11-2016 в 16:15:

Crystallize
Я не спорю. Я же говорю - вы герою рот не затыкайте, пожалуйста, потому что он - очень важная персона. И если он говорит о крокодилах, то это есть очень важно для обороны страны.

__________________

xaerox on Vivino


Отправлено Дядя Миша 09-11-2016 в 18:32:

Цитата:
~ X ~ писал:
Но, как я подозреваю, в реальности не всё так мило, правда?

Есть долгоживущие дамаги, которые коцают, даже когда игрок уже покинул зону триггера.
Предположим у игрока 5 хп, он заходит в зону с повышенной радиоактивностью. Потом выходит его еще коцает какое-то время, пока он не откинет конькикоробочку.

Цитата:
mittorn писал:
Как известно, если что-то мелкое запустить с большой скоростью в стенку - оно пролетит сквозь неё.

SV_PushEntity видишь? Это гарантия того, что не пролетит, кроме совсем уж пограничных случаев.
Сквозь триггеры - там да, пролетает со свистом, поскольку триггеры устроены на манер современных физ.двигов - сперва подвинуть тело, а потом уже разобраться куда попал. В принципе можно переписать триггеры таким образом, чтобы они корректно хэндлили быстрые тела, но для этого как минимум понадобится кастомная физика из ксаша. На чистой халфе не сделаешь. Ну и соображалку надо включать, а не орать на каждом углу про хаки.
Цитата:
~ X ~ писал:
Всё равно мне не понятно, почему для неподвижных вепонбоксов не вызывается точ триггера.

Потому что триггер_тач вызывается при вызове SV_LinkEdict (ну или имплиситно - через UTIL_SetOrigin), а когда предмет стоит в покое, ему UTIL_SetOrigin не вызывается, а сама концепция ни кваки ни халфы не подразумевает двигающихся триггеров.

C++ Source Code:
1
void SV_Physics_Toss( edict_t *ent )
2
{
3
  trace_t	trace;
4
  vec3_t	move;
5
  float	backoff;
6
  edict_t	*ground;
7
 
8
  SV_CheckWater( ent );
9
 
10
  // regular thinking
11
  if( !SV_RunThink( ent )) return;
12
 
13
  ground = ent->v.groundentity;
14
 
15
  if( ent->v.velocity[2] > 0.0f || !SV_IsValidEdict( ground ) || ground->v.flags & (FL_MONSTER|FL_CLIENT) || svgame.globals->changelevel )
16
  {
17
    ent->v.flags &= ~FL_ONGROUND;
18
  }
19
 
20
  // if on ground and not moving, return.
21
    if( ent->v.flags & FL_ONGROUND && VectorIsNull( ent->v.velocity ))
22
    {
23
      VectorClear( ent->v.avelocity );
24
 
25
    if( VectorIsNull( ent->v.basevelocity ))
26
      return;	// at rest
27
  }

вот на этом ретарне для неподвижных коробочек всё и кончается.
Добавлено 09-11-2016 в 21:29:

Цитата:
Crystallize писал:
ты что он же Очень Опытный Программист

Дать бы тебе плюс за тавтологию, но у нас нет такого наказания.

Цитата:
XaeroX писал:
Не мешай Мастеру излагать мудрость!

Дело в том, что в 2000-м году я ходил на анекдот.ру, а теперь мне уже не нужно.

Добавлено 09-11-2016 в 21:32:

ЗОГбавно, щас в ксаш-мод заглянул - я там давно уже такие триггеры сделал, но вроде как немного не доделал, оставил на потом.

__________________
My Projects: download page

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

Цитата:

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


Отправлено thambs 09-11-2016 в 18:54:

>уже такие триггеры сделал
Т.е. одноюнитные триггеры будут корректно работать даже в мультиплаере? Гуд.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено ~ X ~ 09-11-2016 в 21:31:

Цитата:
thambs писал:
Предположим у игрока 5 хп, он заходит в зону с повышенной радиоактивностью.

Я не об этом. Это ТБД в коде игрока.

Про СетОригин() я догадываюсь. Вот только принудительно вызывать его каждый кадр для баночек (коих бывают сотни на карте) почему-то не хочется. Хотя, современные процы - что их жалеть?
Так почему же не убрать квантование по полсекунды в триггере? Я не о том, что это должно включить колоизацию, а о том, что туда хотя бы всё будет попадать хоть раз.

XaeroX у тебя от чего-то бугурт? Ты вроде вообще убегал из треда

ХОБОСТИ:
YAY! XDM почти компилится под ARM!

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 09-11-2016 в 21:45:

Цитата:
~ X ~ писал:
Вот только принудительно вызывать его каждый кадр для баночек (коих бывают сотни на карте) почему-то не хочется.

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 10-11-2016 в 02:37:

Цитата:
~ X ~ писал:
а о том, что туда хотя бы всё будет попадать хоть раз.

Сделаю предположение. Картина такая: коробка попала в trigger_butthurt, волшебный момент упущен, дамаги она не получает. Так почему бы не заставить её тчинкать и проверять (каждые 5 секунд, например), в триггере она, или нет, когда неподвижна? Если в триггере, да ещё и наносящем урон, то наносить ей урон из её же кода. Или это снова грязный хак?
Веапонбокс в обычной халфе наследуется прямо от CBaseEntity, так что тчинкать вполне себе может. Не знаю, как в XDM, я эту часть сорцев не смотрел.


Отправлено mittorn 10-11-2016 в 04:53:

Дядя Миша, во всяком случае при скорости 2000 и более PushMove пробивает стены. Это трейс так работает или баг какой? Как работают и как "исправить" тригеры я и так знаю.

Добавлено 10-11-2016 в 07:53:

~X~, поменяй TOSS на Bounce и запили псевдофизику в стиле того, что у меня в ветке gravgun. Тогда коробочка какое-то время будет ещё прыгать в триггере, трогая его. Думаю, этого хватит почти всегда.


Отправлено ~ X ~ 10-11-2016 в 06:27:

Цитата:
Дядя Миша писал:
Это же итем и у него солид_триггер.

Ну-ну. Повыставляй итемам солид_триггер.

Цитата:
Дядя Миша писал:
Да ты растолкуй пошто этим баночкам вообще вызывать сеторигин?

Толкую:
- игрок дохнет у стенки... или даже просто так (но не от взрыва)
- из него вылетает банка, банка хотя бы частично внутри игрока
- банка меееееееееееедленно движется вниз
- игрок респаунится
- банка как двигалась, так и движется - ей всё равно
- банка движется сквозь пол
- банка движется в бесконечность

Цитата:
Ku2zoff писал:
Сделаю предположение. Картина такая: коробка попала в trigger_butthurt, волшебный момент упущен, дамаги она не получает. Так почему бы не заставить её тчинкать и проверять (каждые 5 секунд, например), в триггере она, или нет, когда неподвижна? Если в триггере, да ещё и наносящем урон, то наносить ей урон из её же кода. Или это снова грязный хак?

В ХЛСДК это точно было бы нельзя ибо ты представь себе, что почти у всех энтить кастомный Think(). У меня есть CheckEnvironment(), только расскажи мне про слова "Если в триггере". Нибось, перебором всех энтить будешь проверять?

Цитата:
mittorn писал:
Дядя Миша, во всяком случае при скорости 2000 и более PushMove пробивает стены.

Ох, лолки! Так это crossbow_bolt и lightp в зоне риска...

Цитата:
mittorn писал:
Тогда коробочка какое-то время будет ещё прыгать в триггере, трогая его.

Это не совсем решение проблемы. Проблема подробно описана здесь чуть выше ^

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 10-11-2016 в 06:57:

Цитата:
~ X ~ писал:
Нибось, перебором всех энтить будешь проверять?

Трейсы в пяти направлениях из центра коробки с игнором самой коробки. Если хоть один из них попадает в SOLID_TRIGGER, то вызываем FindEntityInSphere в радиусе по длине трейса. Ну и ищем по класснейму. Тут уж точно не все энтити надо перебирать.
Эта теория такая. На практике ХЗ, сработает ли.

Добавлено 10-11-2016 в 13:57:

Цитата:
~ X ~ писал:
- банка меееееееееееедленно движется вниз
- игрок респаунится
- банка как двигалась, так и движется - ей всё равно
- банка движется сквозь пол
- банка движется в бесконечность

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


Отправлено ~ X ~ 10-11-2016 в 07:04:

Цитата:
Ku2zoff писал:
Трейсы в пяти направлениях из центра коробки с игнором самой коробки. Если хоть один из них попадает в SOLID_TRIGGER, то вызываем FindEntityInSphere в радиусе по длине трейса. Ну и ищем по класснейму. Тут уж точно не все энтити надо перебирать.
Эта теория такая. На практике ХЗ, сработает ли.


1. пять трейсов - это уже охрененно медленно
2. трейс не определяет SOLID_TRIGGER, только contents
3. угадай, что делает FindEntityInSphere()? подскажу: перебор всех энтить и отсев по дистанции.
4. много ты триггеров будешь по класснеймам искать? а если юзер свой триггер новый создаст?
Видишь как всё непросто.

Что полезного я могу сделать с коробками - это при POINT_CONTENTS(origin) == CONTENTS_SOLID вызывать Killed(angrybeaver, gman, GIB_SOMETIMES); но... это будет очень скоро, либо, если пол тонкий, проваливаться сквозь пол.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 10-11-2016 в 07:14:

Цитата:
~ X ~ писал:
Видишь как всё непросто.

На то она и теория, чтобы её или подтвердить или опровергнуть.
Цитата:
~ X ~ писал:
либо, если пол тонкий

Насколько тонкий? < 4 юнитов?

Добавлено 10-11-2016 в 14:14:

Цитата:
~ X ~ писал:
при POINT_CONTENTS(origin) == CONTENTS_SOLID вызывать Killed

А если попробовать выталкивать банку из стены, типа как работает PM_CheckStuck для игрока? Опять же, трейсить надо. Но всё-таки наверное лучше, чем уничтожать её.


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

Цитата:
~ X ~ писал:
пять трейсов - это уже охрененно медленно

Я вам как-нибудь покажу свой движок-рейкастер для халфовских уровней. Там для разрешения 640х480 выполняется 307200 трейсов каждый кадр. И это без учёта переотражений. Но тем не менее, на современных компах вполне себе выжимает играбельный фпс, а не слайдшоу.

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 22:28. Страницы (103): « Первая ... « 71 72 73 74 [75] 76 77 78 79 » ... Последняя »
Показать все 1540 сообщений этой темы на одной странице

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