速查 › 球員資料
球員資料檔的真相
想改球員能力的人最多,踩坑的也最多。這頁講三件事: 這些檔案其實是純文字、每一格有個會害你取錯值的前綴、 以及大部分「能力值」根本不是 0-99 的能力值。
先說清楚這頁的數字是從哪一份遊戲量的
本頁的項目數、檔案數、覆蓋率,量的是一台裝過台灣模組的遊戲。 剛安裝好的原版數字小很多 —— 例如臉皮 504 對 894、大頭照 1,487 對 6,638、 語音號碼 1,673 對 4,343。
格式與結構的部分兩邊一樣,那是遊戲程式決定的; 會變的是「有幾個」。完整對照見 原版與這台機器差在哪。
先講結論:這一頁講的 attrib.dat 與 pitcher.dat 裡,只有兩個欄位可以安全寫入 0-99 的數值
speed(跑壘速度)和 fastball_control(快速球控球)。
這兩個檔裡其他你以為是「力量」「選球」「三振能力」的欄位,格式跟你想的不一樣,
硬寫進去會破壞資料。下面有實測數據。
⚠️ 「力量」另有一個真的是 0-99 的欄位,但不在這兩個檔裡 ——
在 rhattrib.dat/lhattrib.dat 的 lrattrib_power
(本站測試機實測值域 0–98、平均 25.9),連同 pitcher.dat 的
pitchattrib_stamina(0–92、平均 45.8),做法見
成績換算成能力值那一課。
下面那張表判 ❌ 的「力量」,指的是 attrib.dat 第 42 欄
playerattrib_starpower(0-4 星級),兩者不要混。
⚠️ 這頁的數字量自本站測試機,你的會不一樣
本站測試機的 attrib.dat 檔案日期是 2026 年 8 月、
pitcher.dat 是 2023 年 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 | ❌ 語意不同 |
| 打擊率 / 投手總評 | — | 遊戲內部計算 | ❌ 沒有對應欄位 |
實測數值分佈(這是判斷依據)
把真實檔案裡每個欄位的數值分佈跑出來,就知道它們是什麼尺度:
| 欄位 | 最大值 | 平均 | 代表什麼 |
|---|---|---|---|
| starpower | 4 | — | 0-4 的星級,不是 0-99 |
| platediscipline | 13 | — | 0-13 的小級數 |
| fastball_velocity | — | 88.6 | 球速(英里/小時),是物理量 |
| fastball_control | 98 | 47 | 範圍與 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 / 1 | first_name / last_name | attrib.dat | 姓名 |
| 18 | platediscipline | attrib.dat | 選球,0-13 |
| 22 | speed | attrib.dat | 跑壘速度,可安全寫入 |
| 28 | battingstance | attrib.dat | 打擊姿勢(外觀) |
| 42 | starpower | attrib.dat | 明星等級,0-4 |
| 2 | stamina | pitcher.dat | 投球體力 |
| 6 | fastball_control | pitcher.dat | 快速球控球,範圍相容 |
| 7 | fastball_velocity | pitcher.dat | 快速球球速(mph) |
| 18 / 22 | pitch4_type / pitch4_velocity | pitcher.dat | 第四球種的種類與球速 |
| 28 | pitcher_delivery | pitcher.dat | 投球姿勢(外觀) |
五、改之前的紀律
- 先備份 ——
attrib.dat一壞,整份名單的球員屬性就沒了。 - 改
attrib.dat本體,不是.csv。 - 取值記得處理索引前綴,不然你會改到隔壁欄位。
- 只動確認過的欄位,看不懂的欄位不要碰。
- 一次改一項,進遊戲確認,不要一次改五個欄位再一起測。
📌 重點整理
- 一句話
attrib.dat與pitcher.dat其實是自帶欄位名稱的純文字 CSV,但每一格都有會害你取錯值的索引前綴,而且大部分「能力值」根本不是 0-99 的能力值。 - 這兩個檔裡只有兩個欄位可以安全寫入 0-99
attrib.dat的speed(跑壘速度)與pitcher.dat的fastball_control(快速球控球,實測最大 98、平均 47)。這兩個檔裡其他你以為是力量、選球、三振能力的欄位,硬寫進去會破壞資料。⚠️ 但「力量」另有一個真的是 0-99 的欄位不在這兩個檔裡 ——rhattrib.dat/lhattrib.dat的lrattrib_power(實測 0–98),做法見成績換算成能力值那一課。 - 最容易取錯值的地方 每一格的內容是「索引 空格 實際值」,速度 5 那一格存的是字串
"22 5"。而且資料列的格子數比 header 多一個(行首多了列 ID),直接split(',')[22]會錯位一格;拿到"22 5"之後還要再切一次空格才是真正的值。 - 判斷一個欄位能不能寫,兩個門檻 最大值 ≤ 20 是壓縮尺度(
starpower0-4 星級、platediscipline0-13 小級數),別寫 0-99 進去;平均值 ≥ 70 可能是物理量(fastball_velocity平均 88.6,那是球速英里數,寫 95 進去你改的是球速不是三振能力)。兩個都不中才有機會安全寫入。 - 這一頁自己加的但書:欄號會變 格式不變,但「哪一欄是什麼」會變。46 個欄位裡有 27 個在剛安裝好的原版與社群名冊之間位置不同(
skin_tone從第 12 欄搬到第 38 欄、audioid原版第 17 社群第 16)。兩份原版(英文與中文)彼此完全相同,所以分界是原版 vs 社群名冊,不是語言。永遠不要記欄號,要在執行時從表頭找欄位名。 - 這頁的數字量自哪一份 測試機的
attrib.dat是 2026 年 8 月(內容自 2026-04-14 的快照以來逐位元組沒變過,只是時間戳被後來的操作換掉)、pitcher.dat是 2023 年 5 月,都被模組換過。剛安裝好的原版數字小很多:臉皮 504 對 894、大頭照 1,487 對 6,638、語音號碼 1,673 對 4,343。跟名單內容有關的數字你自己跑會不一樣。 - 兩個會白忙一場的坑 同資料夾裡的
attrib.dat.csv寫法跟attrib.dat一模一樣(不是比較好讀的那一份),而且本站測試機上的那一份是另一份舊名冊(3,167 列、2,278 列沒有姓名、停在 2017 年);遊戲執行時讀的是attrib.dat,只改.csv遊戲讀不到。另外有些文件把欄位數寫成 47/30,那是把 header 結尾那個;終止格子也算了進去,本站數的是 46/29 個具名欄位。 - 本站沒驗的 標「可以寫」只代表格式安全,不代表遊戲真的把那個數字當成該項能力用,真正的對齊需要實際玩遊戲觀察,本站不做效果保證。把 0-99 寫進 0-4 的欄位遊戲會怎麼處理超出範圍的值,沒有人實測過,能確定的只有原本的星級資訊會被破壞。