code:
for ( int k = 1; k<gpGlobals->maxEntities; k++, pStartEdict++ )
{
if ( pStartEdict->free ) // Not in use
continue;
if ( !FStrEq ( STRING(pStartEdict->v.classname), "path_track" ) ) // if not match
continue;
// maps won't be super large, spam segments if 999 units is not long enough
if ( (pStartEdict->v.origin - pev->origin).Length() > 1024.0f )
continue;
pEndTmp = UTIL_FindEntityByTargetname ( NULL, STRING ( pStartEdict->v.target ) );
if (!pEndTmp )
continue;
// test plpos against infinite and finite cylinder
TempPos = NearestOnLine ( pStartEdict->v.origin, pEndTmp->pev->origin, pev->origin );
if( !VectorCompareEpsilon( TempPos, g_vecZero, ON_EPSILON ) && ((TempPos - pev->origin ).Length() < 64) )
{
NewNearest = TempPos; // good one
idStart = ENTINDEX( pStartEdict );
idEnd = ENTINDEX( pEndTmp->edict() );
break;
}
}
Собственно вот где было число 999.
Кстати внимание вот на этот изврат к энт-индексами в конце. Мне вообще нужно просто найти в цикле пару энтитей. Проблема что когда старался работать сначала с эдиктами (чтобы пореже запускать FindEntityByTargetname), по ходу цикла эти эдикты терялись по какой-то загадочной причине. Понятия не имею в чём может быть дело, цикл это всё же не выход из функции. Разве что это какие-то особенности работы с эдиктами.
Дядя Миша
Накапливается. В коде игрока (player.cpp) у меня каждый кадр что-то прибавляется к скорости. И если открыть консоль то видно что значение продолжает отбиваться и за пару секунд доходит до 2000, т.е. игра замерла но код игрока все ещё продолжает выполняться.
На клиенте это решали проверкой pparams->frametime потому что он обнуляется при паузе. Но на сервере оно не доступно, а gpGlobals->frametime на паузе не обнуляется.
Дядя Миша Любопытно какие механизмы могут существовать которые будут сбрасывать. Потому что на сервере вообще нет ничего связанного с паузами и консолями. Если я неправильно написал код мне бы понять как правильно, может быть надо его в playermove вместо этого пихать?
Добавлено 20-08-2023 в 22:01:
Цитата:
Дядя Миша писал: Но если консоль открыта, игрок же всё равно не двигается.
Дядя Миша О, обнуляется, спасибо. Интересно почему у него точность только три знака, а потом идут нули.
Почему игрок на которого применили SetAbsVelocity при движении как-то покачивается по синусоиде вверх-вниз как на волнах? Как будто всего на несколько юнитов.