Gyakori hiba C++ avagy túl nagy támadó sebesség?

Started by Radox, 2021-04-15, 23:04:49

Sziasztok volna egy olyan probléma, hogy ha a karakter túlgyorsan üti a mobot akkor automata le dobja loginba az mitől lehet? És mi erre az orvosság forrásban?
Véletlennek azt nevezzük, amikor a számításaink kudarcot vallanak.

Emiatt van: input_main.cpp

if (CheckSpeedHack)
{
int iDelta = (int) (pinfo->dwTime - ch->GetDesc()->GetClientTime());
int iServerDelta = (int) (dwCurTime - ch->GetDesc()->GetClientTime());

iDelta = (int) (dwCurTime - pinfo->dwTime);

// ˝Ă°ŁŔĚ ´Ę°Ô°Ł´Ů. ŔĎ´Ü ·Î±×¸¸ ÇصдŮ. ÁřÂĄ ŔĚ·± »ç¶÷µéŔĚ ¸ąŔşÁö ĂĽĹ©ÇŘľßÇÔ. TODO
if (iDelta >= 30000)
{
sys_log(0, "SPEEDHACK: slow timer name %s delta %d", ch->GetName(), iDelta);
ch->GetDesc()->DelayedDisconnect(3);
}
// 1ĂĘżˇ 20msec »ˇ¸® °ˇ´Â°Ĺ ±îÁö´Â ŔĚÇŘÇŃ´Ů.
else if (iDelta < -(iServerDelta / 50))
{
sys_log(0, "SPEEDHACK: DETECTED! %s (delta %d %d)", ch->GetName(), iDelta, iServerDelta);
ch->GetDesc()->DelayedDisconnect(3);
}
}


Vagy kikommentezed a ch->GetDesc()->DelayedDisconnect(3); (kétszer van) vagy az értékeket megpróbálod finomhangolni addig hogy ne érzékelje csalásnak. Syslogba látod az értékeket, helyettesítsd be így látod mennyivel nagyobb / kissebb a te értéked, ennek alapján kell a 30000-et vagy az 50-et növelni vagy csökkenteni. Csak ahhoz nyúlj hozzá amelyik syslogot kapod, a másikhoz ne ha nincs vele baja. Ha a kikommentezés mellett döntessz sem lesz semmi baj, úgy hogy ez a két sor benne van simán speedelnek a bobbal és lalakerrel ;)

Értem köszi :)
Véletlennek azt nevezzük, amikor a számításaink kudarcot vallanak.