Решил попробовать сделать убиваемыми Ксеновские растения, в особенности дерево, которое безнаказано лупит игрока, кому интересно могу поделиться моделями кусков и основы уничтоженного дерева, чтобы не так одинаково казалось я сделал несколько бодигрупп, да и вообще интересно как они вышли: https://yadi.sk/d/tLQWEuqZ3PySP8
Еще планирую сделать убиваемым фонарик, и фунгусы, с них думаю попробовать аналог взрывных ящиков/бочек выйдет прицепив какой-нибуть кислотный взрыв, только их куски и основу я пока не сделал.
XF-Alien видео я не смогу снять, видеокарта слишком слабая, как летом моя сломалась сижу чисто на встроенной и возможности купить новую пока нет. Только материнку совсем дно на чуть по современнее поменял, теперь хотя бы часть старых игр и программ уже работает.
А демка, в аттаче функция кусков и измененный хен.срр с разрушаемым деревом если интересно. Единственное что с кусками надо что-то придумать чтобы они точно не застревали, я вроде смог это убрать, но все равно часть кусков не разлетается, а на месте дерева остается.
Кстати у тебя отличные модели получаются, если есть желание можешь сделать по лучше куски, а то я толком моделить не умею, да и то же дерево неплохо бы его как-то сделать более полигональным, остальные модели вроде фунгуса и лампочки нормальные более-менее, а дерево квадратное уж совсем, я пробовал в 3дс максе просто применить модификатор к нему Mesh Smooth, модель в разы лучше стала, но у нее потерялась привязка, тоже в аттач кинул.
Вложение: xen-kuski.rar (16.1 кб)
Этот файл был скачан 438 раз.
Chyvachok писал: но все равно часть кусков не разлетается, а на месте дерева остается.
Я так понимаю, дерево у тебя остаётся солидным? Ну то есть не дерево, а пенёк на месте взорванного дерева. Ты точку спавна гибсов смести от вериткальной оси дерева в сторону, чтобы они не застревали. А ещё лучше, поставь этим гибсам особый pev->groupinfo. И дереву тоже. Тогда они не будут коллайдить друг с другом. Короче, pev->groupinfo у них должен быть одинаковый. Вызываешь UTIL_SetGroupTrace при спавне гибсов, и UTIL_UnsetGroupTrace при первом столкновении гибса с чем-либо. Вроде так.
Ku2zoff сквозь убитое дерево можно ходить, это походу из-за флага смерти оно сразу делается не солидным, не должны уже эти куски застревать, тем более они вызываются чуть ниже чем флаг смерти, а pev->groupinfo, интересно, надо будет попробовать, хотя я ни разу не юзал его.
Добавлено 24-11-2017 в 16:13:
Ku2zoff кстати а есть какой-то пример groupinfo? ему число надо или какое-нибуть название ставить?
Добавлено 24-11-2017 в 16:38:
Поставил кускам pev->groupinfo = 1, уже вроде застреваний нет.
Ghoul [BB] ну дыры закрывать, в милке когда выбираешь 3 вертекса и нажимаешь F это создает треугольник, если оно не хочет создавать, значит ты выбрал или не ровно 3 вертекса, то есть случайно зацепил лишний, либо на месте одного вертекса несколько, в таком случае выдели всю модель и нажми Vertex-Weld Together, можешь еще по среди дыры которую надо заделать поставить еще несколько вертексов как я делал для большей детализации, их ставить сбоку в панели где группы, текстуры и прочее выбираешь вкладку Models и там Vertex, потом когда дыру заделал выделяешь эту всю группу, накладываешь текстуру мяса например с модели кусков, и потом заходишь в Texture Coordinate Editor, находишь там кнопочку Remap, и рядом с ней есть списочек там Front, Right, Top, Bottom - тут выбираешь нужную проекцию и после нажатии на кнопку Remap оно тебе растянет по проекции текстуру, которую там подвигать останется.
ХД моделей никогда не видел для ксеновских растений.
А застреливаемые тентакли у тебя очень круто вышли. Как и вообще монстрятник в твоем паке монстров для ХДМ, и эффекты там тоже неплохие.
Кстати доделал уже фонарик, его теперь тоже можно замочить, остались споры-фунгусы.
Добавлено 24-11-2017 в 17:53:
Ku2zoff еще один нубо-вопрос от меня, можно ли как-то сделать чтобы pev->scale работал и на модели? А то в халве 3 вида спор, маленькая, средняя и большая, и все они используют 3 разных модели fungus(small), fungus и fungus(large), модели между собой ничем кроме размера не отличаются, я попробовал им всем поставить модель fungus, и добавить pev->scale 0.5 для маленького, и 2 для большего, но pev->scale что-то не сработал и все грибы теперь одинакового размера.
Chyvachok Ага, посмотрел вот. В игре ещё лучше смотрится-то.
Я вот буду делать Зен в своём моде, наподобие того, что в бшифте. Думаю, твоя фича будет кстати. Ни в одном моде такого не видел. Не против, если использую? В титрах гарантирую место. Да и качество повышу у этих моделей и, соответственно, поделюсь ими.
Chyvachok писал: еще один нубо-вопрос от меня, можно ли как-то сделать чтобы pev->scale работал и на модели?
Возьми из спирита код масштабирования в StudioModelRenderer. По-хорошему, надо ещё сделать серверный интерфейс (SV_StudioSetupBones), чтобы скейлилось и на сервере тоже.
Добавлено 25-11-2017 в 15:19:
Проще конечно будет отскейлить модели на этапе компиляции, т.к. вводить масштабирование ради одной фичи - напрасная трата времени и сил.
Добавлено 25-11-2017 в 15:25:
Цитата:
Chyvachok писал: а есть какой-то пример groupinfo?
C++ Source Code:
1
if (pev->iuser3)
2
{
3
CBaseEntity *pBlocker[8];
4
int count = UTIL_EntitiesInBox(pBlocker, 8, pev->absmin, pev->absmax, FL_IMMUNE_WATER);
5
if (count)
6
{
7
for (int i = 0; i < count; i++)
8
{
9
ALERT(at_aiconsole, "Prone blocker wall found: set global trace.\n");
Это мы в начале кадра находим особый функ_валл рядом с игроком, и ставим им обоим одинаковое groupinfo, чтобы игрок мог проползать под этим брашем. Ну помнишь наверное мои посты про ползание?
C++ Source Code:
1
if (pev->iuser3)
2
{
3
CBaseEntity *pBlocker[8];
4
int count = UTIL_EntitiesInBox(pBlocker, 8, pev->absmin, pev->absmax, FL_IMMUNE_WATER);
5
if (count)
6
{
7
for (int i = 0; i < count; i++)
8
{
9
ALERT(at_aiconsole, "Prone blocker wall found: reset global trace.\n");
Ku2zoff насчет pev->scale, я просто не хотел плодить модели, но я сейчас все разрушенные основы от растений зашил как бодигруппы в саму модель. И куски пока вроде уже не застряют.
Доделал я и грибы, они взрываются нанося урон теперь, в аттаче кому надо код, код вызова кусков для combat.cpp, и модели c исходниками. Из недоделок у fungus(small) и fungus(large) не нестроенны хитбоксы, т.к. что параметр $scale в qc, что scale в модель вьювере не увеличивает вместе с моделью хитбоксы и позицию аттачементов, не удобно когда масштаб сменил и все это тупо заново настраивать надо. И в плане кода я не нашел как удалять CXenTreeTrigger которое дерево вместе с собой спавнит, и хуллы для ног у большого гриба, последнее я пока как фичу оставил, после уничтожения от большого гриба остаются ноги которые мешают пройти. Ну и грибы пока юзают куски agibs.mdl вместо своих.
Я бы мог какой-нибуть и виде снять но я не знаю какая из этих прог наименее требовательная.
Edit: исправил хитбоксы у fungus(small) и fungus(large), оказалось достаточно было в qc вручную поделить в первой модели и умножить у второй на 2 значения $hbox без переделывания их всех с нуля.
Вложение: xen-kuski_3.rar (334.4 кб)
Этот файл был скачан 368 раз.
XF-Alien спасибо за модели, разница особенно у дерева очень заметна, круто получилось, ему очень не хватало полигонажа. Если сделаешь куски для фунгуса то я и их бы добавил бы в игру, для среднего и мальнекого можно было бы сделать обломки с ногами т.к. они полностью взрываются, а большому только ошметки сферы.
Кстати модели грибов одинаковые вообще, разница лишь в том что маленький в 2 раза меньше, а большой в 2 раза больше.
Вопрос к кодерам, Большой Фунгус спавнит хуллы для ног чтобы можно было под ним между ногами пройти, а дерево какой-то триггер, интересно а как их удалить после уничтожения фунгуса и дерева? Я то решил сделать разрушенные основы как раз из-за того что при полном удалении фунгуса остались бы коллизии от ног, а триггер дерева крашит игру если его полностью вообще удалить, если пройти перед местом где оно стояло.