速查 › 兩套球員編號
兩套球員編號
每一位球員同時掛著兩個完全無關的號碼。
一個是四位數,決定他的大頭照與播報語音;
另一個是 c###,決定他的臉皮。
搞混這兩個,是改球員外觀最常見的第一個錯。
先說清楚這頁的數字是從哪一份遊戲量的
本頁的項目數、檔案數、覆蓋率,量的是一台裝過台灣模組的遊戲。 剛安裝好的原版數字小很多 —— 例如臉皮 504 對 894、大頭照 1,487 對 6,638、 語音號碼 1,673 對 4,343。
格式與結構的部分兩邊一樣,那是遊戲程式決定的; 會變的是「有幾個」。完整對照見 原版與這台機器差在哪。
⚠️ 跟名單內容有關的數字,你的會不一樣
本站測試機的球員名單被模組換過,裝的是一份混了大聯盟與台灣球員的名單。
(2026-09-06 訂正:這裡原本拿檔案日期當佐證,寫「attrib.dat 檔案日期 2026 年 4 月」。
檔案日期不能當證據 —— 複製與同步都會動到它。現在量到的是 2026-08-29,
而它跟本站 2026 年 4 月那份備份裡的 attrib.dat sha256 相同,
代表被換掉的只有時間戳、內容一個位元組都沒改。「被模組換過」本身照舊成立,
那是從名冊內容看出來的,不是從日期。)
所以「幾位球員」「某某球員是幾號」這類數字,你自己跑會得到別的結果。
不會變的是格式 —— 表頭怎麼寫、每一格怎麼標編號、資料怎麼分隔,那是遊戲程式決定的。
⚠️ 會變的不只是數量,還有欄位的順序:本站實測 46 個欄位裡有 27 個在原版與社群名冊之間位置不同(skin_tone 從第 12 欄搬到第 38 欄,中間的欄位各前移一格)。所以永遠不要記欄號,要在執行時從表頭找欄位名。
答案就寫在檔案第一行
球員資料檔的第一行是欄位表,兩個號碼各佔一欄:
10 playerattrib_face ← 臉皮號碼(c### 的數字部分)
17 playerattrib_audioid ← 球員本人的四位數號碼
18 playerattrib_photo ← 這一欄不是編號
⚠️ 上面那三個欄號只對「剛安裝好的原版」成立
本站 2026-08-28 拿三份名冊逐欄比對,發現社群名冊的欄位順序不一樣:
| 欄位 | 剛安裝好的原版 (英文與中文相同) | 社群名冊 (含本站測試機) |
|---|---|---|
playerattrib_face | 10 | 10 |
playerattrib_audioid | 17 | 16 |
playerattrib_photo | 18 | 17 |
playerattrib_skin_tone | 12 | 38 ← 就是它搬家 |
46 個欄位裡有 27 個位置不同。原因是 skin_tone 從第 12 欄搬到了第 38 欄,
第 12 到 38 欄之間的每一欄都往前挪了一格(它後面還有 ditty、salary
一直到 birthday 共 7 欄,所以不是搬到最後一欄)。face 在第 10 欄,
剛好落在挪動範圍之外,所以兩邊都一樣 —— 這也是為什麼只看一個欄位很容易以為沒事。
所以不要抄上面那三個數字。正確做法是打開你自己那份名冊的第一行, 照欄位名字找。本站每一支會讀名冊的腳本都是這樣做的,兩種排列都能用。
兩個陷阱,先講清楚
一、audioid 這個名字騙人。
它字面是「語音編號」,但它同時決定大頭照。
一個號碼兩個用途,欄位名只寫了其中一個。
二、photo 不是大頭照編號。
實測整份名冊只有三種值:1(2,908 人)、0(198 人)、2(141 人)。
它是開關,不是號碼。
看到欄位名就猜用途,猜錯的機率比想像高。以資料為準。
證明兩個號碼真的無關
如果兩套號碼其實是同一套(例如取後三碼、或差一個固定值),這一頁就不用寫了。 所以先證明它們毫無數字關係。
拿十五位同時有大頭照、語音、臉皮三種素材的球員來看 (這十五組數字你重現不了 —— 它們量自本站測試機上那份 2009 年台灣之光名冊, 遊戲現在裝著的那份名單裡已經沒有這些人):
| 球員 | 四位數 大頭照 + 語音 |
臉皮 |
|---|---|---|
| 上原浩治 | 6107 | c873 |
| 倪福德 | 6503 | c862 |
| 增菘瑋 | 6465 | c119 |
| 李振昌 | 3497 | c038 |
| 林哲瑄 | 4631 | c496 |
| 林彥峰 | 3494 | c183 |
| 林旺億 | 3488 | c214 |
| 洪晨恩 | 3493 | c423 |
| 田澤純一 | 6203 | c813 |
| 羅嘉仁 | 3500 | c691 |
| 羅國輝 | 9146 | c167 |
| 詹智堯 | 3429 | c229 |
| 郭嚴文 | 3501 | c874 |
| 鄭凱文 | 3509 | c882 |
| 鄭錡鴻 | 3506 | c892 |
十五個對子,沒有一個對得上任何規律。 不是取後三碼、不是相減固定值、不是同一個數。
整份名冊也是同一個答案
不只這十五人。把整份名冊的 3,247 列兩欄拿來比,
face 剛好等於 audioid 的只有 27 列 ——
而這 27 列裡有 25 列是姓名空白、兩欄都寫 0 的預留列,
真的有名字又剛好相等的只有 2 位(Chris Rabago 907、Troy Stokes Jr 912)。
這裡說「列」不說「人」是有原因的:名冊第一列是
姓名兩欄都寫 Default 的範本列,不是球員;
另外還有 25 列是姓名兩欄都空白、hidden 寫 1 的預留列。
3,247 列裡有名字的是 3,222 列。算比例的時候要記得它們都在裡面。
大頭照與語音的檔案,都用這個號碼命名
四位數不只是大頭照的檔名。同一個號碼會出現在三個倉庫的檔名裡:
| 倉庫 | 檔名長相 | 裝什麼 |
|---|---|---|
| frontend\portrait.big | 6107.fsh | 大頭照 |
| audio\cd\spch_pbp\pnamedat.big | 6107a.dat 6107c.dat 6107d.dat |
播報員唸這個人的名字 |
| audio\spch_pbp\pnamehdr.big | 6107a.hdr 等 | 上面那些語音的檔頭 |
語音為什麼是 a/c/d 三個,以及為什麼很多球員根本沒有語音檔,
見播報音訊那頁。
這個對應的覆蓋率是多少
本站拿剛安裝好的原版對了一遍:
portrait.big 裡檔名是四位數字的圖 | 1,487 |
名冊裡非 0 的 audioid | 1,300 |
| 兩邊都有的 | 1,232(94.8%) |
| 有號碼但沒有圖的 | 68 |
| 有圖但沒有人用那個號碼的 | 255 |
所以「照片檔名 = 球員的 audioid」不是推測,是對得起來的。
剩下那 68 個沒有圖的,遊戲畫面上會顯示什麼,本站還沒實機看過;
至於那 255 張沒人用的圖是怎麼來的,未解本站沒有查出來
——(2026-09-05 訂正:這裡原本寫「是名單換過之後留下來的」,那是編出來的成因。
這一格量的就是剛安裝好、名單沒被動過的原版,不能說是名單換過留下來的。)
900 是一道硬邊界
這是整頁最重要的一節。臉皮號碼不是想給幾號就給幾號 —— 它是有限的。
| 量到的 | 數字 |
|---|---|
models.big 裡的 cNNN.fsh 檔案 |
894 個 範圍 c001–c900 |
| c900 以上的臉皮檔 | 0 個 |
| 名冊裡用到 900 以上的值 | 15 個 901–915 |
| 那 15 個值蓋住多少球員 | 2,510 / 3,247 77.3% 分母是全部 3,247 列;只算有名字的 3,222 列是 77.9% |
| 那 2,510 人裡有臉皮檔的 | 0 人 |
face 在 1–900 的人有臉皮檔的 | 711 / 712 99.9% 唯一的例外是 c219,名冊指派了它,models.big 裡卻沒有這個檔 |
所以規則是:
≤900 是專屬臉,≥901 是罐頭臉
face 小於等於 900 → 指向 models.big 裡一個真的臉皮檔,這個人有自己的臉。
face 大於等於 901 → 沒有任何檔案,是遊戲內建的共用長相。
大部分球員用的是罐頭臉。(本站測試機 77.3%;剛安裝好的原版是 84.1% —— 模組加臉之後比例反而降了。)你在遊戲裡看到一堆人長得像,不是錯覺。
「901 以上沒有檔案」這句話很強,所以本站不靠任何解析器 ——
直接把 data\ 底下每一個檔案的每一個位元組掃過一遍,
找 c901.fsh 到 c915.fsh 這十五個檔名:
掃過 912 個檔 · 2.02 GB
c901 ~ c915 十五個全部 0 命中
對照組(證明掃描器沒壞):
c498.fsh → models.big ✔
c890.fsh → models.big ✔
c695.fsh → models.big ✔
上面這兩個數字是 2026-08-24 寫上站的當時量到的。
那之後測試機的 data\ 底下又多放了幾份備份資料夾(球場與語系檔各留了一份原版),
所以現在同一棵樹會數到更多檔案,你不會剛好數到 912 個檔。
結論(十五個全部 0 命中、三個對照組都命中 models.big)本站 2026-09-05
在現在這棵樹上重跑過一次(1,091 個檔、3.28 GiB),仍然成立。
為什麼一定要有對照組
本站第一次做這個檢查是用 grep,十五個全是 0 命中,看起來完美。
但對照組也是 0 命中 ——
grep 對這種二進位檔會靜默失效,找得到的東西也回報找不到。
沒有對照組,就是拿一個壞掉的工具去背書結論。 任何「我找過了,沒有」的宣稱,都要先證明「我找得到已知存在的東西」。
⚠️ 「cNNN.fsh」這個檔名不是臉皮專屬的
本站原本以為「叫 c123.fsh 的就是臉皮」。不對。
frontend\coopunis.big(Cooperstown 經典球衣)也用同一套檔名,
裡面有 122 個 cNNN.fsh(c001–c122),
其中 c116.fsh 在 models.big 裡根本不存在。
分辨的方法在檔案內部,不在檔名:
| 來自 | 幾個 | 內部標記 |
|---|---|---|
models.big(臉皮) | 894 | 全部帶 fa |
coopunis.big(球衣) | 122 | G357c0 / G357c1 一個 fa 都沒有 |
所以這頁講的 894,範圍是「已經裝在 models.big 裡的臉皮」,
不是「全遊戲叫這個名字的檔案」。兩者相差一個 c116。
這一條是本站上線後才發現的。原本的寫法把「檔名唯一」當成不用檢驗的前提 —— 跟副檔名會騙人是同一類錯。
為什麼當年得「搶」別人的號碼
把上面兩件事接起來,就得到一個結論:
想給新球員一張專屬臉,你需要一個沒人用的 c### 空位
而 models.big 裡總共只有 894 個位子,
而且遊戲出貨時沒有任何 901 以上的臉皮檔。
未驗
「能不能自己新增一個 c901.fsh 讓遊戲讀到」——
本站沒有測過。已知的只有「原本沒有」,不是「不能有」。
所以幫一位台灣球員做臉,實際上是在做一件事: 找一個現有的號碼,把它改成新的人。
📌 本站手上有一份 2009 年的名單,可以看見當年有多擠
你的遊戲不會有這個檔 —— 這是本站測試機上留著的一份 2009 年台灣模組的舊名單,跟當年那份說明書同一天的日期。 下面這組數字你重現不了,本站把它單獨標出來:
臉皮檔總數 = 894
球員指派 = 872
教練指派 = 24
合計指派 = 896 (兩邊沒有一個號碼重複)
其中有檔的 = 890 (c116 c125 c170 c177 c188 c219 名冊指派了,
models.big 裡卻沒有這個檔)
沒有人用的 = c695 · c703 · c831 · c870
飽和度 = 890 / 894 = 99.6%
894 個位子,只剩四個空的。
當年那份說明書的備註欄寫的是這種句子: 「把某位大聯盟投手的臉皮編號給予之」「移除某位球員並給予臉皮編號」 「共用弟弟的臉皮」。 那不是風格,是沒有空號可以用。
你自己的遊戲上量到的數字會不一樣 —— 現在這份名單用掉的位子比較少, 因為它更依賴罐頭臉。規則相同,擁擠程度不同。
一個數字就把「有多擠」講完了
上面那組 99.6% 是「還剩幾個空位」。但擁擠還有第二種量法, 而且這一種不必知道總共有幾個位子: 數同一個臉皮編號被幾位球員共用。
| 名冊 | 球員 | 用到的編號 | 被兩人以上共用的編號 | 最多幾人共用一個 |
|---|---|---|---|---|
| 剛安裝好的英文原版 | 2,921 | 465 | 0 | 1 |
| 2009 台灣之光名冊(讀者重現不了) | 3,222 | 872 | 49 | 4 |
| 本站測試機現在的名單 | 3,247 | 699 | 13 | 2 |
EA 出貨的那份,一個共用都沒有。2,921 位球員、465 個臉皮編號, 一人一號,乾乾淨淨。2009 那份社群名冊有 49 個編號被兩人以上共用。 這是「號碼不夠用」最直接的證據 —— 不必聽誰說,也不必先知道 894 這個數字。
共用最極端的兩個:
c529四個人共用:門倉健、野口茂樹、大塚晶則、高橋健 —— 當年那份說明書的備註欄就寫著「NPB 模組設定臉皮共用c529」。c214三個人共用:林旺衛、林旺億跟 Babe Ruth。 說明書寫「共用弟弟林旺億的c214臉皮」—— 兄弟共用一張是省號碼,而他們還得跟 Babe Ruth 共用同一張。
- 那批 2007-2009 收藏,現在的名單還指派著(18 個)
- 那批收藏,現在的名單沒有指派(8 個)
- 2009 名冊裡有球員在用
- 2009 名冊裡球員沒有用到
- 誰都沒有用的四個
models.big 裡真的有檔案,缺的六號是 c116
c125 c170 c177 c188 c219。)
整片綠色就是「沒有空位」的樣子。
滑鼠移到亮色那 26 格會顯示是誰、來源是誰
—— 那 26 個就是二十六個資料夾那一頁講的那批收藏。
這張圖跟介面座標圖一樣是從量到的數字直接畫出來的,
不是手繪也不是截圖。
⚠️ 空心的四格(
c695 c703
c831 c870)是把教練也算進去之後
誰都沒用到的;圖上的深色格子只算球員,所以深色格子比四個多。怎麼自己查一位球員的兩個號碼
用記事本或任何文字編輯器打開 data\database\attrib.dat,搜球員的英文姓氏。
找到那一列之後,先回頭看第一行的欄位表,
確認你手上這一份的 playerattrib_face 與 playerattrib_audioid
各是第幾欄(剛安裝好的原版是 10 與 17,社群名冊是 10 與 16),
再去看以那兩個編號開頭的兩格:
(社群名冊的排法:face 第 10 欄、audioid 第 16 欄)
...,10 183,...,16 3494,...
同一列在剛安裝好的原版裡,第二格會寫成 17 3494 ——
每一格的前綴數字是跟著欄號走的,所以照著欄位名找、不要照著數字找。
臉皮是 c183(models.big 裡的 c183.fsh)、
本人號碼是 3494(大頭照 3494.fsh、語音 3494a/c/d.dat)。
每一格都帶著自己的欄位編號當前綴,這是這個檔的通則 ——
見球員資料檔的真相。
⚠️ 上面這一列是從那份 2009 名單抄下來的(就是上面十五人表裡的林彥峰),
拿來示範一列長什麼樣子;你自己那份名冊裡不會有 3494 這個號碼,
要查的是你自己搜到的那一列。
一個順手抓到的教訓
本站測試機上有 95 個依「球員名 + 編號 + 來源」命名的素材資料夾。 把資料夾名字上的編號跟資料夾裡面真正的檔名逐一比對:
| 素材 | 一致 |
|---|---|
| 大頭照 | 45 / 46 |
| 語音 | 23 / 23 |
| 臉皮 | 26 / 26 |
不一致的那一個:資料夾名字寫 4976,裡面的檔案是 4967.fsh。
去名單裡查,4967 才是對的 ——
而且當年的說明書也把同一個數字寫顛倒了。
資料夾名字只是給人看的便條紙
錯的是人打的標籤,遊戲讀到的檔案是好的。 兩邊對不上的時候,以裡面的檔案加上名單為準。
這頁不能告訴你什麼
一件這頁不教的,三件本站沒有做到的事
一、這一頁不教你怎麼換臉皮,它只講號碼制度。動手的是另外兩課:
幫球員換一張臉(只改名冊那一欄,
指定某位球員改用哪一張現成的臉皮)、做一張新的球員臉皮
(把空位現在的貼圖匯出來、在原圖上改成你自己的圖,再匯回 models.big)。
二、901–915 這 15 個罐頭臉長什麼樣,本站沒有查出來。
只知道沒有對應的檔案。未解
三、四位數號碼是誰決定的、能不能自己指定,本站沒有驗過。
只證實了「改了那一欄,大頭照與語音會跟著換到哪個檔名」這件事的對應關係。
四、那 68 個有號碼卻沒有圖的人,遊戲畫面上會顯示什麼,本站沒有實機看過;
255 張沒人用的圖是怎麼來的,也沒有查出來。未解
(2026-09-06 訂正:第一條原本寫「本站沒有教你怎麼換掉一張臉皮…那需要 3D 模型與貼圖工具」。 那兩課後來做了,而且做一張新的球員臉皮是在匯出來的原圖上改 256×512 的 2D 貼圖,不必動 3D 模型工具。)
📌 重點整理
- 一句話 每位球員同時掛著兩個完全無關的號碼,四位數管大頭照與播報語音、
c###管臉皮,而臉皮的位子是有限的。 - 兩個號碼真的無關 整份名冊 3,247 列(有名字的 3,222 列)裡,
face剛好等於audioid的只有 27 列,而這 27 列裡有 25 列是姓名空白、兩欄都寫 0 的預留列,真的有名字又剛好相等的只有 2 位。四位數同時決定三個倉庫的檔名(6107.fsh、6107a/c/d.dat、對應的.hdr);拿剛安裝好的原版對,1,300 個非 0 的audioid有 1,232 個找得到圖,命中 94.8%。 - 900 是一道硬邊界(全頁最重要) 這台機器的
models.big有 894 個cNNN.fsh(範圍 c001 到 c900),901 以上 0 個。名冊裡用 901 到 915 的 2,510 人(77.3%)一個臉皮檔都沒有,那是遊戲內建的共用長相;剛安裝好的原版罐頭臉比例更高,84.1%。你在遊戲裡看到一堆人長得像,不是錯覺。 - 欄位名跟欄號都會騙人
audioid字面是「語音編號」,實際上同時決定大頭照;photo不是大頭照編號,它只有 1、0、2 三種值,是開關。更麻煩的是欄位順序會變:46 個欄位裡有 27 個在原版與社群名冊之間位置不同(skin_tone從第 12 欄搬到第 38 欄)。永遠不要記欄號,要打開你自己那份名冊的第一行照欄位名找。 - 本站訂正:檔名不代表身分 原本以為「叫
c123.fsh的就是臉皮」,不對。frontend\coopunis.big(經典球衣)用同一套檔名,裡面有 122 個cNNN.fsh,其中c116.fsh在models.big裡根本不存在。分辨的方法在檔案內部:臉皮全部帶fa,球衣是G357c0/G357c1。 - 「我找過了,沒有」要先證明自己找得到 第一次驗「901 以上沒有檔案」是用
grep,十五個全是 0 命中,看起來完美,但對照組也是 0 命中:grep對這種二進位檔會靜默失效。改成逐位元組掃 912 個檔、2.02 GB 之後,對照組 c498、c890、c695 才命中,結論才站得住。 - 擁擠還有第二種量法,而且不必知道總共有幾個位子 數「同一個臉皮編號被幾位球員共用」——剛安裝好的英文原版是 0 個(2,921 位球員、465 個編號,一人一號),2009 那份台灣之光名冊是 49 個,最多一個號碼四個人(門倉健、野口茂樹、大塚晶則、高橋健);還有一個號碼
c214同時掛著林旺衛、林旺億跟 Babe Ruth。本站測試機現在這份是 13 個。頁上那張 900 格的圖就是把這件事畫出來。 - 這解釋了當年為什麼要「搶」號碼 本站測試機上留著一份 2009 年的名單(讀者重現不了,已單獨標明):894 個檔,球員指派了 872 個號碼、教練 24 個,兩邊沒有一個重複,合計指派 896 個 —— 其中 890 個在
models.big裡真的有檔(另外六個號碼名冊指派了卻沒有檔),只剩四個空號,飽和度 890 / 894 = 99.6%。當年說明書寫「把某位大聯盟投手的臉皮編號給予之」不是風格,是沒有空號可以用。 - 本站沒驗的 能不能自己新增一個
c901.fsh讓遊戲讀到,本站沒有測過,已知的只有「原本沒有」,不是「不能有」;901 到 915 那 15 個罐頭臉長什麼樣沒查出來;四位數號碼是誰決定的、能不能自己指定也沒驗過;那 68 個有號碼卻沒有圖的人遊戲畫面上會顯示什麼沒有實機看過,255 張沒人用的圖是怎麼來的也沒有查出來。另外跟名單內容有關的數字量自一台裝過台灣模組的機器,你自己跑會得到別的結果,不會變的是格式。
接下來
- 大頭照 portrait.big —— 四位數那一半的倉庫
- 模型與臉皮 models.big ——
c###那一半的倉庫 - 球員資料檔的真相 —— 兩個欄位所在的檔案怎麼讀
- 球員代號對照表 —— 同一個檔裡其他「是代號不是數值」的欄位
- 播報音訊系統 —— 語音那一半