Class CheatTracker
java.lang.Object
client.anticheat.CheatTracker
玩家端作弊行為的即時偵測引擎,為每位連線角色持有一個實例。
本類別追蹤多種異常行為的時序訊號,並在達到閾值時呼叫
CheatingOffense 所定義的自動封禁或斷線邏輯:
- 攻擊速度異常(
checkAttack、checkPVPAttack):比對 客戶端 tickcount 與伺服器時間差,偵測超速攻擊(FASTATTACK/FASTATTACK2/FASTATTACK3)。 - 受傷頻率與迴避率(
checkTakeDamage):偵測FAST_TAKE_DAMAGE與HIGH_AVOID。 - 傷害一致性(
checkSameDamage):偵測SAME_DAMAGE。 - 召喚獸/寵物攻速(
checkSummonAttack、checkFamiliarAttack)。 - 怪物移動(
checkMoveMonster)、丟棄速度(checkDrop)、 訊息頻率(checkMsg)等輔助偵測。 - 擴音器/GM 訊息的 Spam 防護(
canSmega、GMSpam)。
違規紀錄以 CheatingOffenseEntry 儲存在 offenses 映射中,
並由 CheatingOffensePersister 定期持久化;達到
CheatingOffense.shouldAutoban(int) 門檻則呼叫
AutobanManager。本類別由 MapleCharacter 持有,
並透過 CharacterAnticheatManager 協作者存取。
-
Field Summary
FieldsModifier and TypeFieldDescriptionlong[]long[]long[]long[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanAvatarSmega(int limit, int type) booleancanBBS()booleancanSmega(int limit, int type) final booleancheckAttack(int skillId, int tickcount) final voidfinal voidcheckDrop(boolean dc) final booleanfinal voidcheckMoveMonster(Point pos) final voidcheckMsg()final voidcheckPVPAttack(int skillId) final voidcheckSameDamage(int dmg, double expected) final booleanfinal voidcheckTakeDamage(int damage) final voiddispose()final voidfinal intlong[]final longlong[]long[]long[]final Map<CheatingOffense, CheatingOffenseEntry> final intfinal StringbooleanGMSpam(int limit, int type) final voidregisterOffense(CheatingOffense offense) final voidregisterOffense(CheatingOffense offense, String param) final voidfinal voidbooleanSaveSpam(int limit, int type) final voidsetAttacksWithoutHit(boolean increase) final voidstart(MapleCharacter chr) voidupdateTick(int newTick)
-
Field Details
-
lastSmegaTime
public long[] lastSmegaTime -
lastTime
public long[] lastTime -
savelastTime
public long[] savelastTime -
lastASmegaTime
public long[] lastASmegaTime
-
-
Constructor Details
-
CheatTracker
-
-
Method Details
-
checkAttack
public final boolean checkAttack(int skillId, int tickcount) -
checkPVPAttack
public final void checkPVPAttack(int skillId) -
getLastAttack
public final long getLastAttack() -
checkTakeDamage
public final void checkTakeDamage(int damage) -
checkSameDamage
public final void checkSameDamage(int dmg, double expected) -
checkMoveMonster
-
resetSummonAttack
public final void resetSummonAttack() -
checkSummonAttack
public final boolean checkSummonAttack() -
resetFamiliarAttack
public final void resetFamiliarAttack() -
checkFamiliarAttack
-
checkDrop
public final void checkDrop() -
checkDrop
public final void checkDrop(boolean dc) -
checkMsg
public final void checkMsg() -
getAttacksWithoutHit
public final int getAttacksWithoutHit() -
setAttacksWithoutHit
public final void setAttacksWithoutHit(boolean increase) -
registerOffense
-
registerOffense
-
updateTick
public void updateTick(int newTick) -
canSmega
public boolean canSmega(int limit, int type) -
canAvatarSmega
public boolean canAvatarSmega(int limit, int type) -
canBBS
public boolean canBBS() -
expireEntry
-
getPoints
public final int getPoints() -
getOffenses
-
getSummary
-
dispose
public final void dispose() -
start
-
GMSpam
public boolean GMSpam(int limit, int type) -
SaveSpam
public boolean SaveSpam(int limit, int type) -
getLastGMspam
public long[] getLastGMspam() -
getLastSavespam
public long[] getLastSavespam() -
getLastSmegaspam
public long[] getLastSmegaspam() -
getLastASmegaspam
public long[] getLastASmegaspam()
-