made antiping limit have new functionality as a limit to the amount of antiping there is but backwards, higher number means less antiping. Basically the amount of time antiping doesn't predict

This commit is contained in:
JSaurusRex 2024-09-04 14:52:04 +02:00
parent 38324489a2
commit 6c0427d23c
5 changed files with 32 additions and 25 deletions

View file

@ -905,11 +905,11 @@ void CClient::Render()
GameClient()->OnRender();
DebugRender();
if(State() == IClient::STATE_ONLINE && g_Config.m_ClAntiPingLimit)
{
int64_t Now = time_get();
g_Config.m_ClAntiPing = (m_PredictedTime.Get(Now) - m_aGameTime[g_Config.m_ClDummy].Get(Now)) * 1000 / (float)time_freq() > g_Config.m_ClAntiPingLimit;
}
// if(State() == IClient::STATE_ONLINE && g_Config.m_ClAntiPingLimit)
// {
// int64_t Now = time_get();
// g_Config.m_ClAntiPing = (m_PredictedTime.Get(Now) - m_aGameTime[g_Config.m_ClDummy].Get(Now)) * 1000 / (float)time_freq() > g_Config.m_ClAntiPingLimit;
// }
}
const char *CClient::LoadMap(const char *pName, const char *pFilename, SHA256_DIGEST *pWantedSha256, unsigned WantedCrc)

View file

@ -13,8 +13,8 @@
// client
MACRO_CONFIG_INT(ClPredict, cl_predict, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Predict client movements")
MACRO_CONFIG_INT(ClPredictDummy, cl_predict_dummy, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Predict dummy movements")
MACRO_CONFIG_INT(ClAntiPingLimit, cl_antiping_limit, 0, 0, 200, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Antiping limit (0 to disable)")
MACRO_CONFIG_INT(ClAntiPingMax, cl_antiping_max, 100, 0, 500, CFGFLAG_CLIENT | CFGFLAG_SAVE, "how far ahead Antiping predicts")
MACRO_CONFIG_INT(ClAntiPingLimit, cl_antiping_limit, 0, 0, 200, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Adds delay to antiping (0 to disable)")
MACRO_CONFIG_INT(ClAntiPingpercent, cl_antiping_percent, 100, 0, 100, CFGFLAG_CLIENT | CFGFLAG_SAVE, "how far ahead Antiping predicts, ignored when antiping limit is used")
MACRO_CONFIG_INT(ClAntiPing, cl_antiping, 0, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Enable antiping, i. e. more aggressive prediction.")
MACRO_CONFIG_INT(ClAntiPingPlayers, cl_antiping_players, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Predict other player's movement more aggressively (only enabled if cl_antiping is set to 1)")
MACRO_CONFIG_INT(ClAntiPingGrenade, cl_antiping_grenade, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Predict grenades (only enabled if cl_antiping is set to 1)")

View file

@ -58,9 +58,7 @@ void CItems::RenderProjectile(const CProjectileData *pCurrent, int ItemId)
bool IsOtherTeam = (pCurrent->m_ExtraInfo && pCurrent->m_Owner >= 0 && m_pClient->IsOtherTeam(pCurrent->m_Owner));
float predictPercentage = 1 - g_Config.m_ClAntiPingMax / 100.0f;
int predictTick = Client()->GetPredictionTime() * Client()->GameTickSpeed() / 1000.0f;
predictTick = Client()->PredGameTick(g_Config.m_ClDummy) - std::floor(predictTick * predictPercentage);
int predictTick = GameClient()->GetPredictionTick();
float Ct;
if(m_pClient->Predict() && m_pClient->AntiPingGrenade() && LocalPlayerInGame && !IsOtherTeam)
@ -308,9 +306,7 @@ void CItems::RenderLaser(const CLaserData *pCurrent, bool IsPredicted)
{
Dir = normalize_pre_length(Pos - From, Len);
float predictPercentage = 1 - g_Config.m_ClAntiPingMax / 100.0f;
int predictTick = Client()->GetPredictionTime() * Client()->GameTickSpeed() / 1000.0f;
predictTick = Client()->PredGameTick(g_Config.m_ClDummy) - std::floor(predictTick * predictPercentage);
int predictTick = GameClient()->GetPredictionTick();
float Ticks;
if(IsPredicted)
@ -611,9 +607,7 @@ void CItems::ReconstructSmokeTrail(const CProjectileData *pCurrent, int DestroyT
if(!m_pClient->AntiPingGunfire() || !LocalPlayerInGame)
return;
float predictPercentage = 1 - g_Config.m_ClAntiPingMax / 100.0f;
int predictTick = Client()->GetPredictionTime() * Client()->GameTickSpeed() / 1000.0f;
predictTick = Client()->PredGameTick(g_Config.m_ClDummy) - std::floor(predictTick * predictPercentage);
int predictTick = GameClient()->GetPredictionTick();
if(predictTick == pCurrent->m_StartTick)
return;

View file

@ -1956,6 +1956,25 @@ void CGameClient::UpdateEditorIngameMoved()
}
}
int CGameClient::GetPredictionTick()
{
int predictTick = Client()->GetPredictionTime() * Client()->GameTickSpeed() / 1000.0f;
float predictPercentage = 1 - g_Config.m_ClAntiPingpercent / 100.0f;
int predictMin = std::floor(predictTick * predictPercentage);
int predictMin2 = g_Config.m_ClAntiPingLimit * Client()->GameTickSpeed() / 1000.0f;
if (g_Config.m_ClAntiPingLimit != 0)
predictMin = predictMin2;
predictTick = Client()->PredGameTick(g_Config.m_ClDummy) - predictMin;
if(predictTick < Client()->GameTick(g_Config.m_ClDummy) + 1)
{
predictTick = Client()->GameTick(g_Config.m_ClDummy) + 1;
}
return predictTick;
}
void CGameClient::OnPredict()
{
// store the previous values so we can detect prediction errors
@ -2012,15 +2031,8 @@ void CGameClient::OnPredict()
CCharacter *pDummyChar = 0;
if(PredictDummy())
pDummyChar = m_PredictedWorld.GetCharacterById(m_PredictedDummyId);
int predictTick = Client()->GetPredictionTime() * Client()->GameTickSpeed() / 1000.0f;
float predictPercentage = 1 - g_Config.m_ClAntiPingMax / 100.0f;
predictTick = Client()->PredGameTick(g_Config.m_ClDummy) - std::floor(predictTick * predictPercentage);
if(predictTick < Client()->GameTick(g_Config.m_ClDummy) + 1)
{
predictTick = Client()->GameTick(g_Config.m_ClDummy) + 1;
}
int predictTick = GetPredictionTick();
// predict
for(int Tick = Client()->GameTick(g_Config.m_ClDummy) + 1; Tick <= Client()->PredGameTick(g_Config.m_ClDummy); Tick++)
{

View file

@ -466,6 +466,7 @@ public:
CRenderTools m_RenderTools;
void OnReset();
int GetPredictionTick();
size_t ComponentCount() { return m_vpAll.size(); }