Что за странный код
1. Зачем итерироваться до g_EntityList->GetHighestEntityIndex(), если это все равно прирвется на i <= g_GlobalVars->maxClients, можно перенести наверх
2. " == true" бесполезное удлинение кода
3. "if (dist == 0.f)" проще сразу выставить игрока в nullptr, а расстояние бесконечно большое и оставить только одну проверку
4. Когда у тебя выбирается новая цель после первого, ты не обновляешь расстояние, т.е. любой игрок после первого с меньшим расстоянием станет целью, а потом его может переписать игрок с большим расстоянием до тебя, но опять же меньше первого, ошибка в общем