Пользователь
-
Автор темы
- #1
Здрасьте всем,есть простой лаг-комп, вызываю его при FRAME_NET_UPDATE_END.Скриншоты с дебага есть внизу, при использовании их в рейдже пишет что рекорд невалид. Код проверки рекорда:
если же не использовать эту проверку, чит просто перестаёт сканить игроков.
C++:
bool CLagCompensation::IsValid(float time)//тут типа m_record.fl_simtime
{
auto network = I::Engine->GetNetChannelInfo();
if (!network)
return false;
static CConVar* max_unlag = I::ConVar->FindVar(XorStr("sv_maxunlag"));
float serverTime = G::pLocal->GetTickBase() * I::Globals->flIntervalPerTick;
auto delta = std::clamp(network->GetLatency(FLOW_OUTGOING) + network->GetLatency(FLOW_INCOMING) + GetLerpTime(), 0.f, max_unlag->GetFloat()) - (serverTime - time);
return std::fabsf(delta) <= 0.2f;
}
C++:
for (auto i = 0; i < I::Globals->nMaxClients; i++) {
auto player = I::ClientEntityList->Get<CBaseEntity>(i);
if (!player || !player->IsAlive() || !player->IsPlayer() || !player->IsEnemy(G::pLocal))
continue;
auto update = m_records.at(i).empty() || (!m_records.at(i).empty() && player->GetSimulationTime() > m_records.at(i).front().m_sim_time);
if (update && player->GetSimulationTime() <= player->GetOldSimulationTime())
update = false;
if (update) {
m_records.at(i).emplace_front(CLagRecord(player));
update_animations(&m_records.at(i).front());// тут пока пусто
}
while (m_records.at(i).size() > 32)
m_records.at(i).pop_back();
}