速查 › 球員資料

球員資料檔的真相

想改球員能力的人最多,踩坑的也最多。這頁講三件事: 這些檔案其實是純文字、每一格有個會害你取錯值的前綴、 以及大部分「能力值」根本不是 0-99 的能力值

先說清楚這頁的數字是從哪一份遊戲量的

本頁的項目數、檔案數、覆蓋率,量的是一台裝過台灣模組的遊戲剛安裝好的原版數字小很多 —— 例如臉皮 504 對 894、大頭照 1,487 對 6,638、 語音號碼 1,673 對 4,343。

格式與結構的部分兩邊一樣,那是遊戲程式決定的; 會變的是「有幾個」。完整對照見 原版與這台機器差在哪

先講結論:這一頁講的 attrib.datpitcher.dat 裡,只有兩個欄位可以安全寫入 0-99 的數值

speed(跑壘速度)和 fastball_control(快速球控球)。 這兩個檔裡其他你以為是「力量」「選球」「三振能力」的欄位,格式跟你想的不一樣, 硬寫進去會破壞資料。下面有實測數據。

⚠️ 「力量」另有一個真的是 0-99 的欄位,但不在這兩個檔裡 —— 在 rhattrib.datlhattrib.datlrattrib_power (本站測試機實測值域 0–98、平均 25.9),連同 pitcher.datpitchattrib_stamina(0–92、平均 45.8),做法見 成績換算成能力值那一課。 下面那張表判 ❌ 的「力量」,指的是 attrib.dat 第 42 欄 playerattrib_starpower(0-4 星級),兩者不要混。

⚠️ 這頁的數字量自本站測試機,你的會不一樣

本站測試機的 attrib.dat 檔案日期是 2026 年 8 月pitcher.dat2023 年 5 月 —— 都被模組換過,裝的是一份混了大聯盟與台灣球員的名單。 (2026-09-05 訂正:這裡原本寫 attrib.dat 是 2026 年 4 月。 檔案日期現在量到的是 2026-08-29;內容沒有變過 —— 本站 2026-04-14 那份快照裡的 attrib.dat 與現役這一份 sha256 相同, 只是後來的操作換掉了時間戳。)

所以像「3,247 位球員」「某某球員的識別碼是多少」這種跟名單內容有關的數字, 你自己跑會得到別的結果

不會變的是格式:欄位有幾個、每一格怎麼寫、資料怎麼分隔 —— 那是遊戲程式決定的,換名單也不會變。
⚠️ 但「哪一欄是什麼」會變。本站實測 46 個欄位裡有 27 個 在剛安裝好的原版與社群名冊之間位置不同(skin_tone 從第 12 欄搬到第 38 欄, 中間的欄位各前移一格;audioid 原版第 17、社群名冊第 16)。 兩份剛安裝好的原版(英文與中文)彼此完全相同,所以分界是原版 vs 社群名冊,不是語言。 永遠不要記欄號,要在執行時從表頭找欄位名 —— 本站的腳本都是這樣做的。 這頁講的規則對你成立,數字與欄號不一定。

同樣的道理本站在字型音訊動畫那幾頁也標過。

一、它們其實是 CSV

檔名叫 .dat,很容易以為是二進位。用十六進位工具看開頭:

30 20 66 69 72 73 74 5f    → 解讀成文字就是「0 first_」

這是自帶欄位名稱的 CSV 文字檔。位置在 data\database\

檔案內容具名欄位
attrib.dat打者屬性:身體、裝備、薪水、少數能力46
pitcher.dat投手球種設計:體力、球種、控球、球速29
bstats.dat打擊統計(出賽、得分、盜壘…),不是能力值

欄位數是實際數過的:header 列除了具名欄位外,結尾還有一個 ; 終止格子。 有些文件寫 47 / 30,是把那個 ; 也算進去了。

二、⚠ 每一格都帶索引前綴

這是最容易讓人取錯值的地方。一列資料長這樣:

0f58f3c1b,0 Default,1 Default,2 51,...,22 5,...,42 0,...,45 11689,;
    ↑     ↑
  列 ID   每一格的內容是「索引 空格 實際值」

所以「速度 = 5」這一格,實際內容是字串 "22 5",不是 "5"

兩個連帶的陷阱

1. 資料列的格子數比 header 多一個,因為行首多了列 ID。 直接 split(',')[22] 會拿到錯位一格的內容。

2. 拿到 "22 5" 之後還要再切一次空格才是真正的值 5

另外還有一個 attrib.dat.csv

同資料夾裡有個 attrib.dat.csv。它不是比較好讀的那一份: 每一格的寫法跟 attrib.dat 一模一樣(一樣有索引前綴、一樣沒有引號), 差別只有表頭多一格 hex、行尾多一個逗號。而遊戲執行時讀的是 attrib.dat —— 只改 .csv 遊戲讀不到,白改。

⚠️ 更要緊的是:本站測試機上的那一份是另一份舊名冊, 不是同一份資料的另一種寫法 —— 3,167 列對 attrib.dat 的 3,247 列, 其中 2,278 列連姓名都是空的,兩邊的姓名只有 126 個對得上,檔案日期停在 2017 年。 拿它查球員,查到的會是過期或空白的值。(這是本站這台機器的狀況,你那份不一定一樣。)

三、大部分「能力值」不是 0-99

如果你想把球員真實數據換算成遊戲能力,會發現 EA 根本沒有做一套 0-99 的綜合能力值。 常見的六種能力對到遊戲欄位,情況各不相同:

你想改的對應欄位類型可以寫嗎
跑壘速度attrib.dat[22] speed直接對應可以
控球pitcher.dat[6] fastball_control範圍相容可以
力量rhattrib.dat/lhattrib.dat[3] lrattrib_power
(不是 attrib.dat[42] starpower,那是 0-4 星級)
0-99 尺度(測試機實測 0–98、平均 25.9)✅ 但不在本頁這兩個檔裡,見成績換算那一課
選球attrib.dat[18] platediscipline小級數 0-13❌ 格式不相容
三振能力pitcher.dat[7] fastball_velocity球速 mph❌ 語意不同
打擊率 / 投手總評遊戲內部計算❌ 沒有對應欄位

實測數值分佈(這是判斷依據)

把真實檔案裡每個欄位的數值分佈跑出來,就知道它們是什麼尺度:

欄位最大值平均代表什麼
starpower40-4 的星級,不是 0-99
platediscipline130-13 的小級數
fastball_velocity88.6球速(英里/小時),是物理量
fastball_control9847範圍與 0-99 相容

把 0-99 的數字寫進 0-4 的欄位會怎樣? 這兩者的格式不相容 —— 欄位預期的是 0 到 4,你給它 85, 遊戲怎麼處理超出範圍的值沒有人實測過,但可以確定的是原本的星級資訊會被破壞

fastball_velocity 更微妙:它實測 0 到 100、其中 96.7% 落在 80 到 99 (另有 25 列是 0,那是沒有快速球的野手列),碰巧跟 0-99 重疊, 所以寫進去不會「超出範圍」,但那個欄位的意思是球速幾英里, 不是「三振能力有多強」。寫 95 進去,你改的是球速不是三振能力。

判斷一個欄位能不能寫,兩個門檻

最大值 ≤ 20 → 這是壓縮尺度(星級、小級數),別寫 0-99 進去。

平均值 ≥ 70 → 可能是物理量(球速平均 88.6、體重平均 102.2),語意跟能力值不同。

兩個都不中,才有機會安全寫入。

⚠️ 這兩道門檻抓不到身高。身高也是物理量,但它存的是 英吋減 48,整欄平均只有 25.3(本站測試機;剛安裝好的原版 25.4)、最大值 35 —— 兩道門檻都不會亮,照這兩道走會把它誤判成「有機會安全寫入」。 想動身高請先看球員資料檔全欄位清單

誠實邊界:範圍相容不等於語意正確

上面的驗證只證明「寫進去不會超出範圍」,不代表遊戲真的把那個數字當成該項能力用。 真正的對齊需要實際玩遊戲觀察。本站標「可以寫」的欄位,意思是 格式安全,不是效果保證

四、已識別的欄位

下面是本站最早識別出來的十來欄。 完整的 46 欄 + 29 欄清單(含實測值域)見 球員資料檔全欄位清單

索引欄位名檔案說明
0 / 1first_name / last_nameattrib.dat姓名
18platedisciplineattrib.dat選球,0-13
22speedattrib.dat跑壘速度,可安全寫入
28battingstanceattrib.dat打擊姿勢(外觀)
42starpowerattrib.dat明星等級,0-4
2staminapitcher.dat投球體力
6fastball_controlpitcher.dat快速球控球,範圍相容
7fastball_velocitypitcher.dat快速球球速(mph)
18 / 22pitch4_type / pitch4_velocitypitcher.dat第四球種的種類與球速
28pitcher_deliverypitcher.dat投球姿勢(外觀)

五、改之前的紀律

📌 重點整理

接下來