ToMMuK там у трассы джиттер примерно в пять юнитов получается.
А декали ставяться через раз, может в этом все дело?
Чему равны flSpreadX, flSpreadY ? Попробуй их занулить для теста.
Я имел в виду при каких условиях - как я понимаю, пуля ''трейслайн'' пролетает мимо ящика и попадает куда надо, а вот ''TraceTexture'' в момент полёта таки задевает первую попавшуюся текстуру (этот самый ящик), определяет её, и рисует в конечной точке трейслайна декаль, соответствующую этой текстуре - я правильно мыслю?
Я без понятия как конкретно этот механизм устроен, но скажу, что TRACE_TEXTURE работает со вполне конкретной энтитью. То есть ей нельзя просто пустить трассу, чтобы она нашла первую энтить на пути.
Нет, ей надо указать именно ту энтить, в которую упёрлась твоя трасса от выстрела. И вот именно её она будет трейсить. Такие дела.
В ev_hldm есть функция определения звука удара пуль об определённую поверхность - EV_HLDM_PlayTextureSound, от туда же рисуестся вот такой эффект (обычный SmokePuff)
if ( pe && pe->solid == SOLID_BSP )
{
CObject *pObj = new CSmokePuff( ptr->endpos, ptr->plane.normal, 0.8, 0.2, spd_min, spd_max, 10, 20, spd_side, 0.4, 0.27, 0.14 );
g_objmanager.AddObject(pObj);
} - сам эффект записан в triapiobjects.cpp. Я хотел там сделать свой (искры для металла), но как его правильно написать на клиенте я не знаю - просто чтоб спрайт появлялся и исчезал. Подскажите пожалуйста, как это можно сделать?
Сделал на сервере черес мессагу, думал в combat.cpp в конце функции FireBulletsPlayer поставить, только как рисовать его в месте попадания пули не знаю. Если так - UTIL_Richo( pev->origin ) - то не подходит, хотя и работает. Вот мессага
Ну я имел в виду не SPARKS а просто спрайт искры, просто чтоб появлялся и исчезал. Вот так - UTIL_Richo( pev->origin ) - работает, но рисует спрайт не в точке попадания пули, а прямо под игроком.
Так надо не pev->origin, а trace_entity->pev->origin хотя бы, но тоже фигня, будет рисоваться только на энтитях и в точке оригина. Надо вектор трейса совать.