Class CharacterAnticheatManager
java.lang.Object
client.CharacterAnticheatManager
角色「防作弊/檢舉(anticheat / report)」子系統的協作者,由 P5 God class 拆分自
MapleCharacter。
本類別封裝角色的作弊偵測代理與玩家檢舉統計兩個面向:
- 作弊追蹤——
getCheatTracker()(取得本角色的CheatTracker代理;實際偵測邏輯本就獨立於client.anticheat.CheatTracker類別,此處僅暴露其參考)(anticheat欄位); - 檢舉統計——
getReports()/addReport(ReportType)/clearReports(ReportType)/getReportPoints()/getReportSummary()(依ReportType累計違規次數)(reports欄位 +changed_reports存檔旗標)。
MapleCharacter 以**逐字搬移**的方式把這些方法移入此處,並對每個方法保留**簽名完全相同**的
委派(delegate),因此所有 Java 呼叫端與透過 cm/pi 等腳本 API 轉呼的腳本完全不受影響。
協作者僅持有對所屬角色的回參考,透過同 package 存取其 anticheat/reports/
changed_reports 欄位;這些欄位本身仍宣告並初始化於 MapleCharacter(載入/存檔/登出
dispose/familiar 重置會直接存取),僅放寬為 package-private 供本協作者存取。
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddReport(ReportType type) 將指定類型的違規檢舉次數加一。void清除本角色的所有違規檢舉統計。voidclearReports(ReportType type) 清除指定類型的違規檢舉統計。取得本角色的作弊偵測代理。final int計算本角色所有違規類型的檢舉次數總和。取得本角色各類違規的檢舉次數統計表。final String產生本角色違規檢舉的人類可讀摘要字串。
-
Method Details
-
getCheatTracker
取得本角色的作弊偵測代理。實際的作弊偵測邏輯本就獨立於
CheatTracker類別,本方法僅暴露角色持有的該代理參考。- Returns:
- 本角色的
CheatTracker(anticheat欄位)
-
getReports
取得本角色各類違規的檢舉次數統計表。回傳的是角色內部
reports對映本身(非複本),呼叫端對其修改會直接影響角色狀態。- Returns:
- 由
ReportType對應到累計次數的對映
-
addReport
將指定類型的違規檢舉次數加一。副作用:更新角色的
reports對映(首次為 1,否則在原值上遞增),並把changed_reports存檔旗標設為true,使下次存檔時寫回資料庫。- Parameters:
type- 違規類型
-
clearReports
清除指定類型的違規檢舉統計。副作用:自角色的
reports對映移除該類型,並把changed_reports存檔旗標設為true。- Parameters:
type- 欲清除的違規類型
-
clearReports
public void clearReports()清除本角色的所有違規檢舉統計。副作用:清空角色的
reports對映,並把changed_reports存檔旗標設為true。 -
getReportPoints
-
getReportSummary
產生本角色違規檢舉的人類可讀摘要字串。將
reports對映依次數由高到低排序,逐筆以 「可讀類型名: 次數」格式串接(每筆之間以空白分隔,類型名經StringUtil.makeEnumHumanReadable(String)轉換)。- Returns:
- 排序後的檢舉摘要字串;若無任何檢舉則為空字串
-