跳转至

Ch99.1: Your own event map support

懶癌末期作者更新活動支援的速度實在是慢得離譜。
自己動手,豐衣足食?


附錄 ‐‐ 製作活動海域支援

警告: 如果你沒有自己的 kcauto Python 環境,製作自己的更新包幾乎是不可能的(因為你無法存取 kcauto/kca_enums/nodes.py)。
(2025/11/12,隨著最新更新,節點定義已拆分至 data/combat/map_enum.json,因此一般使用者現在應該可以按照本指南操作了)

你會需要設定以下三項:

  1. 素材 (assets/combat/_event_next_page_<X>.png 及 assets/combat/_event_world_E-<X>.png)
  2. 地圖資料 (data/combat/E-<X>.json)
  3. 節點 (data/combat/map_enum.json)

素材 (Assets)

素材方面,你需要擷取地圖圖示的參考圖。
原圖:
image
目標:
_event_world_E-1

還有次頁按鈕。
原圖:
next_page_event.png

目標:
next_page_event_sample.png

接著,替換 assets/combat/_event_next_page_<X>.png 和 assets/combat/_event_world_E-<X>.png 中的檔案。


地圖資料 (Map data)

現在我們必須設定地圖資料,讓 kcauto 能夠處理戰鬥與基地航空隊。
首先,準備地圖影像。
我個人是從 艦隊Collection Wiki 取得。
我們需要未經縮放的原始影像,因此請注意選用的來源。

image

可靠的地圖影像來源


工具箱裡的 tool/map/mapCoorUpdater.py 可以協助建立地圖資料,執行此 Python 檔案所需的依賴項目列在 tool/map/mapCoorUpdaterRequirement.txt 中。

執行該工具,它會從 KC3 原始碼 擷取最新的地圖資料。
請確保在 KC3 更新活動地圖資料後再進行此操作。

image

地圖座標更新器

填寫完基本資料後,需要定義每個節點的座標(參考:issue#20 及 discussion#71):

  1. 點擊地圖左上角。
  2. 依照工具指引設定節點類型。
    按下按鍵:
    • o:可動點 (Option node)
    • a:防空點 (Anti-air node)
    • s:反潛點 (Anti-sub node)
    • b:BOSS 點
  3. 點擊各個節點。

image

將節點 C 設為可動點

top_left

圖片上的點擊位置

image

E-4.json 設定完成的 mapCoorUpdater


節點 (Nodes)

為了讓 kcauto 能夠處理,所有節點都定義在 data/combat/map_enum.json 中。

幸運的是,你不需要手動將新增的節點加入該檔案。
執行 tool/map/maps_generater.py 即可產生 tool/map/map_enum.json 。
接著用 tool/map/map_enum.json 替換掉 data/combat/map_enum.json 即可。

地圖資料除錯

以防萬一你需要對 E-X.json 檔案進行除錯, 以下參考舊的 E-5.json。地圖資料定義了地圖中的節點、路徑與敵軍類型。

{
    "world": "E",               // 活動地圖
    "subworld": 5,              // 第 5 海域
    "panel": 1,                 // 1 號面板(上方)。例如 E1〜E3 若都在第 1 頁時需要此項
    "page": 3,                  // 第 3 頁
    "enemy_context": [          // 此地圖出現的敵軍類型。提供資料給任務模組
        "subs",
        "carriers",
        "transports"
    ],
    "nodes": {                  // 所有節點的座標。相對於遊戲視窗(非瀏覽器或螢幕)左上角的偏移量
        "A": {
            "coords": [
                157,
                273
            ]
        },
        "L2": {
            "coords": [
                775,
                424
            ]
        }
    },
    "edges": {                   // 所有節點間的路徑。資料來源為艦隊Collection 的 API 
        "1": [
            "Start 1",
            "A"
        ],
        "37": [
            "V",
            "U"
        ]
    }
}