вот как надо. У тебя же pmove возвращает индекс не клиентской энтити, а собственный локальный индекс в pmove->physents, который еще надо сконвертировать в индекс клиентской.
Добавлено 19-12-2019 в 15:29:
Единственное, для чего эти индексы всегда совпадают - это для мира и для локального игрока.
Дядя Миша писал: вот как надо. У тебя же pmove возвращает индекс не клиентской энтити, а собственный локальный индекс в pmove->physents, который еще надо сконвертировать в индекс клиентской.
Воооооо, с этим благодарствую, теперь всё замечательно.
Добавлено 19-12-2019 в 21:44:
А можно как-то сделать, чтобы трейс срабатывал на энтити без коллизии, например как ammo_357 какое-нибудь?
SNMetamorph писал: А можно как-то сделать, чтобы трейс срабатывал на энтити без коллизии, например как ammo_357 какое-нибудь?
да лихко. Трассируй не physents а visents. Они для тово и нужны. Правда тут засада есть - в халфе кажется нет экспорта для конвертации визэнтити в клиентскую. В ксаше-то я понятное дело это вывел.
Добавлено 19-12-2019 в 16:07:
А вообще блин, посмотрел я так, прикинул. Нет, наверное только под ксашем это будет работать. У несолидных же энтить, надо как минимум ббокс задать и на клиент его отослать. Ксаш эту ситуацию сам умеет разруливать, а халфа нет.
Дядя Миша писал: да лихко. Трассируй не physents а visents. Они для тово и нужны. Правда тут засада есть - в халфе кажется нет экспорта для конвертации визэнтити в клиентскую. В ксаше-то я понятное дело это вывел.
Добавлено 19-12-2019 в 16:07:
А вообще блин, посмотрел я так, прикинул. Нет, наверное только под ксашем это будет работать. У несолидных же энтить, надо как минимум ббокс задать и на клиент его отослать. Ксаш эту ситуацию сам умеет разруливать, а халфа нет.
Может быть прокатит какой-нибудь костыль по типу FindEntityInSphere в месте столкновения трейса с землей?
Вообще как бы визэнтитей не так уж и много и можно просто линейным поиском перебрать все, и нужная скорее всего найдётся. А они еще и в памяти все друг за другом располагаются, круто.
Добавлено 02-04-2020 в 10:35:
А как работает PM_TraceModel()?
Добавлено 02-04-2020 в 11:00:
Теоретически же вроде как со стороны клиента можно залезть в заголовок студиомодели и получить векторы AABB таким образом: http://articles.thewavelength.net/214/
Или нет?
Добавлено 02-04-2020 в 12:41:
Таки да. Метод, упомянутый выше, скорее всего работает.
Значит такой вот алгоритм трассировки несолидных энтить на стороне клиента.
1. Перебираем каждую визэнтить в массиве pmove->visents
2. Находим ббокс для каждой энтити: для студиомоделей у меня примерно такой вот код
3. Проверяем, пересекается ли линия трейса с этим ббоксом
4. Если пересекается, то берём индекс этой энтити через visent->info и дальше делаем что душе угодно.