Class PlayerAutoSaver
java.lang.Object
server.PlayerAutoSaver
線上玩家資料的定時自動存檔。
每隔 ServerConstants.autoSaveMinutes 分鐘,將所有頻道與購物商城中的線上角色逐一以
MapleCharacter.saveToDB(boolean, boolean)(dc=false, fromcs=false=非登出、保存目前所在地圖)
存回資料庫,避免伺服器異常結束(當機/斷電)時,玩家自上次登出後的遊戲進度(等級、背包、所在地圖、HP/MP 等)全部遺失。
這不是資料庫備份。資料庫備份(mysqldump → Backup/ 壓縮檔)是另一套機制;本類別只是把
記憶體中的玩家狀態提前刷回 characters 等資料表(與玩家登出時所做的存檔相同),讓「最後一次存檔」更接近當下。
由 server.Start 在三大伺服器與遊戲資料就緒後呼叫 start() 註冊週期工作(沿用
Timer.WorldTimer 排程,與活動掉落排程同一模式)。ServerConstants.autoSaveMinutes 設為
<= 0 時停用、不註冊。每個角色各自 try/catch,單一角色存檔失敗不影響其餘角色。
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidreschedule(boolean enabled, int minutes) 依新的開關/間隔即時重排程(供 GUI 設置頁調整後立即生效,免重啟)。static intsaveAll()立即將所有線上角色(各頻道 + 購物商城)的資料存回資料庫。static voidstart()
-
Method Details
-
start
public static void start()依ServerConstants.autoSaveEnabled與ServerConstants.autoSaveMinutes註冊定時自動存檔工作; 開關關閉或間隔<= 0時停用。首次執行延遲一個完整間隔(剛開服無須立即存檔),之後每間隔執行一次。
-
reschedule
public static void reschedule(boolean enabled, int minutes) 依新的開關/間隔即時重排程(供 GUI 設置頁調整後立即生效,免重啟)。若服務尚未
啟動(開機流程還沒跑到註冊排程那步),則直接返回—— 開機流程會以當下的設定自行排程,無需此處介入。- Parameters:
enabled- 自動存檔總開關minutes- 自動存檔間隔(分鐘);<= 0表示不排程
-
saveAll
public static int saveAll()立即將所有線上角色(各頻道 + 購物商城)的資料存回資料庫。可由
start()的排程呼叫,亦可供 GM 指令/後台手動觸發。- Returns:
- 成功存檔的角色數
-