Class PlayerAutoSaver

java.lang.Object
server.PlayerAutoSaver

public final class PlayerAutoSaver extends Object
線上玩家資料的定時自動存檔

每隔 ServerConstants.autoSaveMinutes 分鐘,將所有頻道與購物商城中的線上角色逐一以 MapleCharacter.saveToDB(boolean, boolean)dc=false, fromcs=false=非登出、保存目前所在地圖) 存回資料庫,避免伺服器異常結束(當機/斷電)時,玩家自上次登出後的遊戲進度(等級、背包、所在地圖、HP/MP 等)全部遺失。

這不是資料庫備份。資料庫備份(mysqldumpBackup/ 壓縮檔)是另一套機制;本類別只是把 記憶體中的玩家狀態提前刷回 characters 等資料表(與玩家登出時所做的存檔相同),讓「最後一次存檔」更接近當下。

server.Start 在三大伺服器與遊戲資料就緒後呼叫 start() 註冊週期工作(沿用 Timer.WorldTimer 排程,與活動掉落排程同一模式)。ServerConstants.autoSaveMinutes 設為 <= 0 時停用、不註冊。每個角色各自 try/catch,單一角色存檔失敗不影響其餘角色。

  • Method Details

    • start

      public static void start()
      ServerConstants.autoSaveEnabledServerConstants.autoSaveMinutes 註冊定時自動存檔工作; 開關關閉或間隔 <= 0 時停用。

      首次執行延遲一個完整間隔(剛開服無須立即存檔),之後每間隔執行一次。

    • reschedule

      public static void reschedule(boolean enabled, int minutes)
      依新的開關/間隔即時重排程(供 GUI 設置頁調整後立即生效,免重啟)。

      若服務尚未 啟動(開機流程還沒跑到註冊排程那步),則直接返回—— 開機流程會以當下的設定自行排程,無需此處介入。

      Parameters:
      enabled - 自動存檔總開關
      minutes - 自動存檔間隔(分鐘);<= 0 表示不排程
    • saveAll

      public static int saveAll()
      立即將所有線上角色(各頻道 + 購物商城)的資料存回資料庫。

      可由 start() 的排程呼叫,亦可供 GM 指令/後台手動觸發。

      Returns:
      成功存檔的角色數