教學 › 一次更新整個年度

一次更新整個年度

名冊、能力值、臉、大頭照、語音、開機畫面、賽程 —— 七樣東西各自有課,這一課不教任何新東西。 它只回答那七堂課都沒回答的四個問題:先做哪一件、做完怎麼確認真的成了、 卡住要回哪一堂、全部做完怎麼一次還原

難度

★★☆ 每一堂都不難,難的是順序

時間

約 113 分鐘(八堂加打包)

可以還原嗎

可以,每一堂各一行

🛟 動手之前:先完整備份整個遊戲資料夾

把整個遊戲資料夾複製一份到別的地方包括裡面存放紀錄的資料夾。不要挑檔案,整包複製最省事也最保險。

「紀錄」是指這些(它們跟遊戲檔混在同一個資料夾裡):

dir /s /b "〔你的遊戲資料夾〕\*.sav"
find "〔你的遊戲資料夾〕" -name "*.sav"

上面第一行 Windows、第二行 Mac。 本站每一支工具都會自己備份它要動的那一個檔, 但那只保得住那一個檔 —— 整包備份保的是「你玩到現在的一切」。 完整做法看備份與還原 SOP

⚡ 只想趕快做完?照這八步

  1. 先確認備份在(這一步不能跳

    Windows:

    python mvp_check_backup.py "<遊戲資料夾>"

    Mac / Linux:

    python3 mvp_check_backup.py "<遊戲資料夾>"
  2. 名冊:整批匯出成 CSV,用 Excel 改完再匯回去

    Windows:

    python mvp_player.py "<遊戲資料夾>" --export players.csv

    Mac / Linux:

    python3 mvp_player.py "<遊戲資料夾>" --export players.csv

    Windows:

    python mvp_player.py "<遊戲資料夾>" --import players.csv --apply

    Mac / Linux:

    python3 mvp_player.py "<遊戲資料夾>" --import players.csv --apply
  3. 能力值:用真實成績算,不要用手感填

    Windows:

    python mvp_ratings.py --fit "<遊戲資料夾>"

    Mac / Linux:

    python3 mvp_ratings.py --fit "<遊戲資料夾>"

    Windows:

    python mvp_ratings.py --write "<遊戲資料夾>" ratings.csv --apply

    Mac / Linux:

    python3 mvp_ratings.py --write "<遊戲資料夾>" ratings.csv --apply
  4. 臉:指到一張現成的臉

    Windows:

    python mvp_swap_face.py "<遊戲資料夾>" --find Ohtani

    Mac / Linux:

    python3 mvp_swap_face.py "<遊戲資料夾>" --find Ohtani
  5. 大頭照:先查編號,再換圖

    Windows:

    python mvp_swap_portrait.py "<遊戲資料夾>" --find Ohtani

    Mac / Linux:

    python3 mvp_swap_portrait.py "<遊戲資料夾>" --find Ohtani
  6. 語音:把播報員唸的名字換掉

    Windows:

    python mvp_audio.py "<聲音檔>" --list

    Mac / Linux:

    python3 mvp_audio.py "<聲音檔>" --list
  7. 開機畫面與賽程年份

    Windows:

    python mvp_swap_screen.py "<遊戲資料夾>" --info

    Mac / Linux:

    python3 mvp_swap_screen.py "<遊戲資料夾>" --info

    Windows:

    python mvp_shift_schedule_year.py "<路徑>/schedule.big" 2040 --apply

    Mac / Linux:

    python3 mvp_shift_schedule_year.py "<路徑>/schedule.big" 2040 --apply
  8. 打包成一包給別人裝

    Windows:

    python mvp_pack.py "<遊戲資料夾>" --scan

    Mac / Linux:

    python3 mvp_pack.py "<遊戲資料夾>" --scan

會寫檔的那幾支都是不加 --apply 就只預覽、 第一次寫入前自動備份、--restore 可以還原 (第 3 步那一支是 --restore-write)。 第 1 步、以及第 8 步上面那一行 --scan全程唯讀的, 不寫任何檔,也就沒有 --apply 要加、沒有東西要還原。 每一條都給了兩種寫法:Windows 打 python、Mac 與 Linux 打 python3, 挑你那台的那一行複製就好。 想知道為什麼是這個順序,往下讀;只想複習,跳到📌 重點整理

為什麼需要這一課

本站的教學總覽列了近四十堂課,其中八堂加起來剛好可以把整個遊戲換成新的一年。 但把八堂課擺在一起,會冒出三個每一堂自己都不會提到的問題:

依賴關係:哪些一定要先做

八堂裡只有兩條真正的先後關係,其他都可以換順序:

為什麼
備份全部 唯一絕對不能顛倒的一條。備份是唯一一個「做錯了還救得回來」的保險
名冊能力值 · 臉 · 大頭照 · 語音 這四樣都是對著某一位球員做的。名冊決定第幾列是誰、 他的臉編號與大頭照編號寫在哪一欄。名冊一改,這些對應全部跟著變
開機畫面與賽程年份不依賴任何東西 —— 它們不看名冊,隨時可以做,卡在別堂的時候可以先做這兩堂換個心情

八個階段:動什麼、怎麼驗、怎麼退

每一行的「做完怎麼驗」都是不必進遊戲就能確認的方式 —— 進遊戲看是最終驗證,但一輪要好幾分鐘,不適合每一步都做。

做什麼動到的檔時間做完怎麼驗(不進遊戲)
1 備份與還原 SOP 不動任何檔(只檢查) 10 分 腳本會列出哪幾個檔已經有備份、哪幾個還沒有。標著「沒有備份」的先處理完再往下
2 把一位球員改成你想要的球員
(整批用 --export / --import
data/database/attrib.dat 10 分 再匯出一次 CSV,用文字編輯器搜尋你改的名字。找得到就是寫進去了
3 把真實成績換算成能力值 attrib.dat · rhattrib.dat · lhattrib.dat · pitcher.dat 15 分 腳本寫完會自己讀回來逐項比對並印出結果。 ⚠️ 它會拒絕算不準的欄位,那不是壞掉
4 幫球員換一張臉
要做全新的臉就改上 做一張全新的臉,多 30 分
data/database/attrib.dat 10 分 --find 再查一次那位球員,看臉編號是不是你設的那個
5 換球員大頭照 data/frontend/portrait.big 20 分 --export 把剛換進去的那張匯出來,用看圖軟體開起來看
6 換掉遊戲的聲音 語音檔(--list 會告訴你是哪一個) 20 分 --export 成 WAV 放來聽。這是八堂裡唯一能用耳朵驗的
7 換掉開機畫面 data/frontend/splash.big · suonly.big · sushared.big 15 分 --export 匯出成 PNG 打開看
8 把賽程換到任何年份 schedule.big 3 分 不加 --apply 再跑一次,預覽會印出改完之後的年份
把你改好的東西打包成一包 不動遊戲(只讀) 10 分 --scan 會列出你到底改了哪些檔。順便當成這一輪的清單

📋 第 8 步那個 --scan 是這一課最有用的一行

它掃出來的清單就是「你這一年到底動了什麼」。 不用自己記,也不用怕漏 —— 每支工具留下的備份檔本身就是紀錄。 做完整年之後跑一次,把輸出留起來,明年就知道去年改到哪。

先備份哪些檔

八堂加起來會動到下面這些。每一支腳本第一次寫入前都會自己備份, 所以你不必手動複製 —— 但你應該知道清單長什麼樣子, 因為「腳本的備份」跟「你自己的整包備份」是兩層保險:

檔案哪幾堂會動它
data/database/attrib.dat 四堂:名冊 · 能力值 · 臉 · 大頭照(查編號時只讀)
data/database/rhattrib.dat · lhattrib.dat · pitcher.dat能力值
data/frontend/portrait.big大頭照
data/frontend/splash.big · suonly.big · sushared.big開機畫面
data/models.big做全新的臉(選配那一堂才會動)
data/database/schedule.big賽程年份
語音檔語音(--list 會告訴你是哪一個)

attrib.dat 被四堂共用,是這一輪最該小心的一個檔。 好消息是那四堂各自留下不同檔名的備份,彼此不會蓋掉對方。

做到一半想全部退回去

每一堂各一行,順序不重要 —— 每支工具還原的是自己那個檔的備份, 互不干涉。只跑你真的做過的那幾行:

Windows:

python mvp_player.py "<遊戲資料夾>" --restore

Mac / Linux:

python3 mvp_player.py "<遊戲資料夾>" --restore

Windows:

python mvp_ratings.py --restore-write "<遊戲資料夾>"

Mac / Linux:

python3 mvp_ratings.py --restore-write "<遊戲資料夾>"

Windows:

python mvp_swap_face.py "<遊戲資料夾>" --restore

Mac / Linux:

python3 mvp_swap_face.py "<遊戲資料夾>" --restore

Windows:

python mvp_swap_portrait.py "<遊戲資料夾>" --restore

Mac / Linux:

python3 mvp_swap_portrait.py "<遊戲資料夾>" --restore

Windows:

python mvp_audio.py "<聲音檔>" --restore

Mac / Linux:

python3 mvp_audio.py "<聲音檔>" --restore

Windows:

python mvp_swap_screen.py "<遊戲資料夾>" --restore

Mac / Linux:

python3 mvp_swap_screen.py "<遊戲資料夾>" --restore

Windows:

python mvp_shift_schedule_year.py "<路徑>/schedule.big" --restore

Mac / Linux:

python3 mvp_shift_schedule_year.py "<路徑>/schedule.big" --restore

⚠️ 注意能力值那一堂用的是 --restore-write 不是 --restore, 因為它另外有一個唯讀的分析模式,兩個要分得開。

這一課沒有自己的腳本

上面每一行指令都是別堂課的工具,這一頁一個字都沒有改寫它們。 這樣做的理由是:工具改版的時候只會有一個地方要改。 如果你發現這一頁的某一行跟那一堂寫的不一樣, 以那一堂為準,並且那是值得回報的東西。

本站在這件事上做不到的

📌 重點整理

接下來

整年做完想給別人裝,去打包成一包; 想看這八堂在整體課程裡的位置,去課表④ 年度更新班