Class CharacterAnticheatManager

java.lang.Object
client.CharacterAnticheatManager

public final class CharacterAnticheatManager extends Object
角色「防作弊/檢舉(anticheat / report)」子系統的協作者,由 P5 God class 拆分自 MapleCharacter

本類別封裝角色的作弊偵測代理與玩家檢舉統計兩個面向:

MapleCharacter 以**逐字搬移**的方式把這些方法移入此處,並對每個方法保留**簽名完全相同**的 委派(delegate),因此所有 Java 呼叫端與透過 cmpi 等腳本 API 轉呼的腳本完全不受影響。 協作者僅持有對所屬角色的回參考,透過同 package 存取其 anticheatreportschanged_reports 欄位;這些欄位本身仍宣告並初始化於 MapleCharacter(載入/存檔/登出 dispose/familiar 重置會直接存取),僅放寬為 package-private 供本協作者存取。

  • Method Details

    • getCheatTracker

      public CheatTracker getCheatTracker()
      取得本角色的作弊偵測代理。

      實際的作弊偵測邏輯本就獨立於 CheatTracker 類別,本方法僅暴露角色持有的該代理參考。

      Returns:
      本角色的 CheatTrackeranticheat 欄位)
    • getReports

      public Map<ReportType, Integer> getReports()
      取得本角色各類違規的檢舉次數統計表。

      回傳的是角色內部 reports 對映本身(非複本),呼叫端對其修改會直接影響角色狀態。

      Returns:
      ReportType 對應到累計次數的對映
    • addReport

      public void addReport(ReportType type)
      將指定類型的違規檢舉次數加一。

      副作用:更新角色的 reports 對映(首次為 1,否則在原值上遞增),並把 changed_reports 存檔旗標設為 true,使下次存檔時寫回資料庫。

      Parameters:
      type - 違規類型
    • clearReports

      public void clearReports(ReportType type)
      清除指定類型的違規檢舉統計。

      副作用:自角色的 reports 對映移除該類型,並把 changed_reports 存檔旗標設為 true

      Parameters:
      type - 欲清除的違規類型
    • clearReports

      public void clearReports()
      清除本角色的所有違規檢舉統計。

      副作用:清空角色的 reports 對映,並把 changed_reports 存檔旗標設為 true

    • getReportPoints

      public final int getReportPoints()
      計算本角色所有違規類型的檢舉次數總和。
      Returns:
      ReportType 累計次數的總和
    • getReportSummary

      public final String getReportSummary()
      產生本角色違規檢舉的人類可讀摘要字串。

      reports 對映依次數由高到低排序,逐筆以 「可讀類型名: 次數 」格式串接(每筆之間以空白分隔,類型名經 StringUtil.makeEnumHumanReadable(String) 轉換)。

      Returns:
      排序後的檢舉摘要字串;若無任何檢舉則為空字串