FreeSlave писал: Если оружие предиктабельно, то подозреваю, что перед вызовом HUD_SendWeaponAnim в hl_weapons.cpp нужно выставлять нужное body, как это делается для магнума. У магнума однако условие простое - там прицел только в мультиплеере. Для твоего случая нужно будет передавать доп. параметр, например в vuser, как это сделано для rpg.
Да, действительно, подвижки есть, но лучик живет своей жизнью. После выключения снова появляется при смене оружия, перезарядке итд...
Обязательно ли вместе с SND_STOP посылать имя играющего звука или движок остановит звук на указанном канале вне зависимости от того, что сейчас играет?
FreeSlave движок три вещи сравнивает: номер энтити, сам звук и номер канала, чтобы уж наверняка. Если хоть что-то не совпадает, ничего не будет сделано.
У кого-нибудь бывало, что ломались аттачменты энтить? В присутствии вот этих веревок на карте приаттаченные энтити оказываются визуально приаттачены к не к той энтити, что указано, либо появляются в центре мира (0,0,0). Есть костыль - удалить веревки и поставить их на карту заново. Как-то связано с порядком энтить (порядок чтения энтить зависит от их порядка в bsp). Другой фикс (более универсальный, не требующий перестановок на карте) - переместить инициализацию сегментов из спавна в тчинк.
Я когда добавлял эти веровки в последние версии ксаш-мода, я их чуть-чуть полностью переписал. Очевидно надо ориентироваться на мой код, а не на исходный.
Добавлено 19-09-2019 в 09:08:
Хы. В голдсорсе же деструктор энтити не вызывается, я совсем забыл.
Добавлено 19-09-2019 в 09:14:
Конкретно что было сделано с кодом веровок:
1. оригинал использует в 4 раза больше эдиктов для назначенного кол-ва сегментов. Т.е. 16 отрезков веровки дадут 16*4+1 = 65 эдиктов или даже больше. У меня 16 отрезков используют всего 17 эдиктов.
2. появилась возможность набирать отрезки из спрайтов, делать спрайтовые веровки, вместо моделей.
3. аттач веровки к брашевым энтитям
4. возможность заменить отрезки на единую модель с развесовкой (есть в примере).
Дядя Миша, интересно, потом гляну в xashxt. Может, там ещё и провода как в сурсе (move_rope) можно сделать?
Вопрос по нодам. Есть ступеньки, по которым поднимаются монстры с обычным хуллом, но не могут подняться те, что с большим (в примере - агрунт). impulse 196 (node_viewer_large) не показывает соединений, значит что-то не так на стадии образования графа. Как это можно поправить? (мапперским или кодерским способом).
Помогает увеличение толщины ступенек в два раза, но хотелось бы обойтись без этого.
Добавлено 20-09-2019 в 18:51:
Видимо, придется добавлять возможность выставлять кастомный размер для монстра, чтоб он таки протискивался в толщину ступенек.
Проблема с "воровством" аттачментов вернулась, уже даже без веревок. Спрайт с ксеновского фонарика оказывается в самых неожиданных местах. Перенос инициализации спрайта в тчинк не помогает. Если вытаскивать энтитю по aiment или по индексу (skin), то вытаскивается xen_plantlight, как и должно быть.
Пока не удалось воссоздать баг на минимальном примере, но может кто-то встречал?
Для спрайта фонаря? Попробовал, баг остается. Да и зачем тут EHANDLE, спрайт же не удаляется.
Зато заметил вот что - на карте присутствуют мои самописные энтити монстров. Если саму энтитю из кода убрать, а название слинковать с чем-нибудь другим, то баг остается. Т.е. дело не в реализации конкретной энтити а в том, что энтитя в принципе спавнится. Если линковку убрать, то и баг пропадает. Значения skin, body, aiment и movetype у спрайта остаются теми же, как при создании.
Как движок вообще определяет аттачменты? По наличию aiment?
Добавлено 26-09-2019 в 01:46:
Сейчас ради интереса скомпилил hlsdk без своих изменений. Добавил только линковку буллсквида к ещё паре класснеймов, которые используются на карте. И баг проявился. Слишком много энтить на карте?
Добавлено 26-09-2019 в 02:56:
Удалил с карты всё, кроме xen_plantlight, затем вернул. И вуаля - баг пропал. Видимо опять какая-то проблема с порядком инициализации энтить.
FreeSlave давай по порядку что под чем ты используешь и что у тебя глючит. Из того что ты написал понятно примерно ничего.
Добавлено 26-09-2019 в 09:35:
аттачменты у энтить кодируются следующим образом:
pev->body = номер аттачмента
pev->skin = номер энтити
Дальше открываем delta.lst, сортируем в ней строчки и смотрим чему равно максимальное значение для pev->skin
signed - это потому что движок кодирует отрицательные скины как контентсы. То есть минус один бит. Остаётся 8. Иными словами аттачмент корректно работает только для первых 256 энтить на карте. Если их больше он начинает перескакивать. Надо поднять кол-во бит, ну скажем до 12-и.