Спасибо! Оно наконец заработало (тут от силы понадобилось 10% кода для понимания). Моей самой большой ошибкой было то, что я проверял на NULL энтити (не халфер и лишь малость разбираюсь в двигле) и не до конца понимал, как работает мультидамаг
Вы встречали такой баг, что оружие, сбрасываемое хгрунтами при смерти, иногда падает очень медленно, а затем и вовсе проваливается сквозь пол? Кто-нибудь это исследовал?
FreeSlave писал: Вы встречали такой баг, что оружие, сбрасываемое хгрунтами при смерти, иногда падает очень медленно, а затем и вовсе проваливается сквозь пол? Кто-нибудь это исследовал?
если падает медленно, то это наверное оно в нпс застревает, можно такого же эффекта добиться, если ввести много раз impulse 102. Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания, возможно, это поможет
FreeSlave это распространённый баг. Обычно проявляется, когда ориджин заспавненного оружия находится в стене. Здесь поможет проверка на tr.allSolid, чтобы точка спавна ствола не была внутри БСП-геометрии. Нужно просто сдвигать точку спавна в сторону от стены. Ещё одно проявление этого бага - когда батарейки или аптечки спавнятся из разбитых коробок внутри полки, а потом медленно проваливаются сквозь пол. Причина та же самая - спавн с ориджином внутри браша.
Добавлено 02-01-2021 в 01:21:
Цитата:
JPEG писал: если падает медленно, то это наверное оно в нпс застревает
Никогда не видел, чтобы стволы застревали в НПС. Только в стенах. Но если так, то грамотным решением будет придать стволу ускорение в сторону от стены или НПС, чтобы он хоть на 10-20 юнитов отлетал.
Добавлено 02-01-2021 в 01:27:
Цитата:
JPEG писал: Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания
Есть два варианта этого решения. Первое через UTIL_SetSize, что приводит к тому, что падающий трупак нельзя бить монтировкой. Второе через модификацию трассы в pm_shared.c (см. мой последний тутор по ползанию или сорцы Рикошета). Во втором случае пропадает только коллизия с игроком. Чтобы убрать коллизию с заспавненным оружием, надо юзать grouptrace и groupinfo. Я уже точно не помню, как там правильно это делается, но обоим энтитям нужна одинаковая группа. Вообще, в голдсорсе есть движковая функция регулировки коллизии, pfnShouldCollide, но, как это не удивительно, она не работает. Потому что умное тело, которое её писало, поставило в коде return вместо continue, или наоборот. Кому интересно, можете глянуть фикс в сорцах ReHLDS.
Ku2zoff писал: Ещё одно проявление этого бага - когда батарейки или аптечки спавнятся из разбитых коробок внутри полки, а потом медленно проваливаются сквозь пол. Причина та же самая - спавн с ориджином внутри браша.
Я это правил выставлением у предметов и аммуниции UTIL_SetSize в нулевой вектор и задаванием размера через SetObjectCollisionBox по аналогии с оружием (т.к. с CBasePlayerWeapon такого бага нет).
FreeSlave ситуации с ящиками на полках и оружием грантов немного разные. Если в случае полок итем рано или поздно "выпадет" из браша, когда провалится сквозь полку, то в случае с застрявшим в стене стволом это не прокатит.
Ku2zoff писал: Если в случае полок итем рано или поздно "выпадет" из браша, когда провалится сквозь полку, то в случае с застрявшим в стене стволом это не прокатит.
Да вроде такое может произойти, когда монстр и в открытом поле стоит, не около стен. Может, и правда в самом монстре застревает. Например, у шоковых тараканов в опфоре прописан хак, по которому размер шокроача задается только через две секунды после его спавна, чтобы избежать застревания в шок трупере.
Цитата:
JPEG писал: Тут Кутузоф расписывал, как удалять хулл нпс сразу после убивания, возможно, это поможет
Это отдельный туториал или где-то в этой теме?
Цитата:
Ku2zoff писал: Второе через модификацию трассы в pm_shared.c (см. мой последний тутор по ползанию или сорцы Рикошета). Во втором случае пропадает только коллизия с игроком. Чтобы убрать коллизию с заспавненным оружием, надо юзать grouptrace и groupinfo. Я уже точно не помню, как там правильно это делается, но обоим энтитям нужна одинаковая группа.
Было бы неплохо тутор по этим вещам заиметь. У нас на форуме есть ещё тутор по прохождению игроков сквозь друг друга https://hlfx.ru/forum/showthread.php?s=&threadid=4789 но там Дядя Миша тоже пишет, что нужно груп трейсы юзать.
FreeSlave писал: Это отдельный туториал или где-то в этой теме?
https://hlfx.ru/forum/showthread.php?s=&threadid=5405
Влияет только на коллизию игрока. То есть, игрок не коллайдит с энтитей PM_Ignore. Задаешь дохлому монстру параметр, который справедлив для PM_Ignore, и можно будет сразу после смерти монстра проходить через его трупак, не дожидаясь окончания анимации смерти. Я это дело завёл, когда меня выбесили очень долго подыхающие буллсквиды. Там капец длинная анимация. Ну и ещё всегда бесило, что невозможно проползти по вентиляции некоторое время после смерти хедкраба, трупак которого перегородил путь.
Дядя Миша писал: дело еще и в том, что менять местами клиппинг и гамму нельзя, тогда у теней появляется белая окантовка.
Я сейчас попробовал, не заметил такого. Может это только при использовании какого-нибудь бампа и делюксмапы?
При клиппинге до 196 есть разница в цвете солнышка и в размере зашкаливающего пятна под лайтспотом. При 255 разницы не заметил. Зато заметил что директ от лайтспота идёт кольцами чисто белого и чуть подкрашенного цвета.