教學 › 一次更新整個年度
一次更新整個年度
名冊、能力值、臉、大頭照、語音、開機畫面、賽程 —— 七樣東西各自有課,這一課不教任何新東西。 它只回答那七堂課都沒回答的四個問題:先做哪一件、做完怎麼確認真的成了、 卡住要回哪一堂、全部做完怎麼一次還原。
難度
★★☆ 每一堂都不難,難的是順序
時間
約 113 分鐘(八堂加打包)
可以還原嗎
可以,每一堂各一行
🛟 動手之前:先完整備份整個遊戲資料夾
把整個遊戲資料夾複製一份到別的地方, 包括裡面存放紀錄的資料夾。不要挑檔案,整包複製最省事也最保險。
「紀錄」是指這些(它們跟遊戲檔混在同一個資料夾裡):
Support\MVP Baseball 2005\—— 遊戲自己建的, 裡面是設定(MVPOptions_Options.sav)與手把設定 (controller.cfg)。剛安裝好時沒有這個資料夾,玩過才出現。- 王朝、老闆模式、名單與玩家檔案的存檔(
*_Franchise.sav、*_Owner Mode.sav、*_Rosters.sav、*_Profile.sav)—— 沒有固定的資料夾名,你或你裝的模組包叫它什麼它就叫什麼。找不到就用這一行找:
dir /s /b "〔你的遊戲資料夾〕\*.sav"
find "〔你的遊戲資料夾〕" -name "*.sav"
上面第一行 Windows、第二行 Mac。 本站每一支工具都會自己備份它要動的那一個檔, 但那只保得住那一個檔 —— 整包備份保的是「你玩到現在的一切」。 完整做法看備份與還原 SOP。
⚡ 只想趕快做完?照這八步
- 先確認備份在(這一步不能跳)
Windows:
python mvp_check_backup.py "<遊戲資料夾>"Mac / Linux:
python3 mvp_check_backup.py "<遊戲資料夾>" - 名冊:整批匯出成 CSV,用 Excel 改完再匯回去
Windows:
python mvp_player.py "<遊戲資料夾>" --export players.csvMac / Linux:
python3 mvp_player.py "<遊戲資料夾>" --export players.csvWindows:
python mvp_player.py "<遊戲資料夾>" --import players.csv --applyMac / Linux:
python3 mvp_player.py "<遊戲資料夾>" --import players.csv --apply - 能力值:用真實成績算,不要用手感填
Windows:
python mvp_ratings.py --fit "<遊戲資料夾>"Mac / Linux:
python3 mvp_ratings.py --fit "<遊戲資料夾>"Windows:
python mvp_ratings.py --write "<遊戲資料夾>" ratings.csv --applyMac / Linux:
python3 mvp_ratings.py --write "<遊戲資料夾>" ratings.csv --apply - 臉:指到一張現成的臉
Windows:
python mvp_swap_face.py "<遊戲資料夾>" --find OhtaniMac / Linux:
python3 mvp_swap_face.py "<遊戲資料夾>" --find Ohtani - 大頭照:先查編號,再換圖
Windows:
python mvp_swap_portrait.py "<遊戲資料夾>" --find OhtaniMac / Linux:
python3 mvp_swap_portrait.py "<遊戲資料夾>" --find Ohtani - 語音:把播報員唸的名字換掉
Windows:
python mvp_audio.py "<聲音檔>" --listMac / Linux:
python3 mvp_audio.py "<聲音檔>" --list - 開機畫面與賽程年份
Windows:
python mvp_swap_screen.py "<遊戲資料夾>" --infoMac / Linux:
python3 mvp_swap_screen.py "<遊戲資料夾>" --infoWindows:
python mvp_shift_schedule_year.py "<路徑>/schedule.big" 2040 --applyMac / Linux:
python3 mvp_shift_schedule_year.py "<路徑>/schedule.big" 2040 --apply - 打包成一包給別人裝
Windows:
python mvp_pack.py "<遊戲資料夾>" --scanMac / 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,
因為它另外有一個唯讀的分析模式,兩個要分得開。
這一課沒有自己的腳本
上面每一行指令都是別堂課的工具,這一頁一個字都沒有改寫它們。 這樣做的理由是:工具改版的時候只會有一個地方要改。 如果你發現這一頁的某一行跟那一堂寫的不一樣, 以那一堂為準,並且那是值得回報的東西。
本站在這件事上做不到的
- 沒有「一鍵更新整年」的按鈕。 八堂還是要一堂一堂跑。 本站沒有把它們串成一支腳本,因為每一堂中間都需要你自己判斷 (這張圖好不好看、這個能力值合不合理),串起來只會讓錯誤更難找。
- 本站的工具只會改現有的球員,不會幫你多加一位。
⚠️ 但要說清楚:名冊的列數不是固定的 ——
剛安裝好的原版
attrib.dat是 2,922 行 (這一段數的是檔案的實體行數、含第一行表頭;站上其他頁說的 「原版 2,921 位球員」是扣掉表頭的同一件事,差的就是那一行), 這台機器上那份台灣模組是 3,248 行, 而且rhattrib.dat、career.dat一起長到同一個數字、pitcher.dat從 1,431 到 1,619, 只有team.dat兩邊都是 127(那是對照組)。 二十年前的社群就加得了。 本站沒做的是「用工具安全地加一列」—— 那要同時動好幾個檔而且對齊,風險比改現有的高很多。 所以這一輪的做法是把現有的人改成新的人。 - 能力值有五個欄位本站算不出來,工具會直接拒絕輸出。 那不是故障,是不編數字給你。理由寫在 那一堂。
- 這份順序沒有找真的學生跑過。 依賴關係是從各堂實際讀寫哪個檔推出來的(可以自己驗), 但「照這個順序做起來最順」是推論,不是實測出來的結果。
📌 重點整理
- 一句話 七樣東西各自有課,這一課只回答順序、驗證、還原這三件事。
- 只有兩條硬性先後 備份要最先;名冊要在 能力值/臉/大頭照/語音之前 —— 因為那四樣都是對著某一位球員做的。
- 開機畫面與賽程不依賴任何東西,卡住的時候可以先做這兩堂。
- 每一支會寫檔的工具都是不加
--apply就只預覽, 第一次寫入前自動備份,各自有一行還原(能力值那一支是--restore-write);還原順序不重要。 第 1 步的備份檢查與第 8 步的--scan全程唯讀,沒有東西要還原。 - 最該小心的檔是
attrib.dat,四堂共用它, 但四堂的備份檔名不同,不會互相蓋掉。 - 每一階段都有不必進遊戲的驗證方式,語音那一堂還可以直接用耳朵聽。
- 最有用的一行是
mvp_pack.py --scan, 它掃出來的就是「你這一年到底改了什麼」。 - 本站沒驗的 這個順序是從各堂實際讀寫哪個檔推出來的, 沒有找學生照著跑過;總時數 113 分是各堂標示時間的加總,不是計時量到的。