|
|

樓主 |
發表於 2025-12-31 20:26
|
顯示全部樓層
 | |  |  | 本帖最後由 軒云熊 於 2025-12-31 21:17 編輯
謝謝大大們的回覆 經過觀察發現 問題是出在 遊戲時間 沒有同步造成
我沒有修改 地圖切換點設置 DungeonTable 而是在 L1GameTimeClock 裡增加時間點觸發傳送到船艙
對應古丁船班的時間 因為 L1GameTime 的時間 與主畫面顯示的時間還是會有誤差 但是它會自動修正
這會造成船班時間漏掉跳過到港時間的問題 所以我把到港時間提前
也就是 提前3分鐘~真正的到港時間之間 目前還在試 怎樣看起來比較自然
沒控制好 還是會出現船停在橋上的畫面 然後再觸發船送到橋旁邊 看起來會怪怪的
結論: 依照古丁港口的船班時間 去判斷 L1GameTime 實際時間 就可以了
看看有沒有大大有興趣可以玩一下 >"<
- public void checkShipDock(L1PcInstance pc, int hour, int minute) {
- // 說話之島往古魯丁的船範圍
- if (pc.getMapId() == 5
- && pc.getX() >= 32704 && pc.getX() <= 32767
- && pc.getY() >= 32768 && pc.getY() <= 32831
- && pc.getInventory().checkItem(40299, 1)) {
- if (isGludinDockArrival(hour, minute)) {
- pc.getInventory().consumeItem(40299, 1);
- L1Teleport.teleport(pc, 32736, 32794, (short)6, 4, false);
- System.out.println("[DEBUG] 船到港,持票者自動傳送到古魯丁船艙");
- }
- }
- }
-
- private int lastTriggerHour = -1;
- private boolean isGludinDockArrival(final int hour, final int minute) {
- int[] dockHours = {0, 3, 6, 9, 12, 15, 18, 21};
- for (int dockHour : dockHours) {
- // 提前 3 分鐘觸發 (57~0 分之間都算)
- if (hour == dockHour && (minute >= 57 || minute == 0)) {
- if (lastTriggerHour != dockHour) {
- lastTriggerHour = dockHour;
- return true;
- }
- }
- }
- return false;
- }
- -----------------------------------------------------------------
- 插入點在 L1GameTimeClock 裡 為了同步遊戲時間
- if (isFieldChanged(Calendar.MINUTE)) {
- for (final L1GameTimeListener listener : _listeners) {
- listener.onMinuteChanged(_currentTime);
- }
- //-------------------------------------------------------------------------------------
-
-
- // 說話之島往古魯丁
- if (isFieldChanged(Calendar.MINUTE)) {
- // 直接抓遊戲時間物件
- L1GameTime gameTime = L1GameTimeClock.getInstance().currentTime();
- int hour = gameTime.get(Calendar.HOUR_OF_DAY);
- int minute = gameTime.get(Calendar.MINUTE);
- // // DEBUG:印出遊戲時間
- // System.out.println("[DEBUG] 遊戲時間: " + String.format("%02d:%02d", hour, minute));
- for (L1PcInstance pc : World.get().getAllPlayers()) {
- DungeonManager.get().checkShipDock(pc, hour, minute);
- }
- }
複製代碼
| |  | |  |
|
|