FC 26 HUB/LUA/CSV EXPORT

ARTICLE 67TWO EXPORTERS / TWO CONTRACTS

TURN A SEASON
INTO DATA.

Use season stats for a player-by-competition archive; use fixtures for one calendar file per competition. Run in Career Mode, protect the first dated output and validate its exact field count before building a dashboard or history.

RUN BEFORE ROLLOVERARCHIVE FIRST OUTPUTCHECK EXACT HEADERJOIN BY IDSKEEP RAW DATE & TIME

01 / DIRECT ANSWER

Export once, archive immediately, validate before analysis

FC 26 Live Editor publishes two different Lua CSV exporters. export_season_stats.lua writes one dated 16-column player-stat file and excludes zero-appearance rows. export_fixtures.lua writes a dated 10-column file for every competition it discovers and represents unplayed scores as TBD,TBD. Both require an active Career and write to the Windows Desktop.

01 / RUNActive Career

Both files stop at their Career Mode assertion outside a loaded Career.

02 / PRESERVERename the first export

Same-day output can be recreated with write mode; keep a clean original.

03 / PROVEValidate the contract

Accept 16 stats fields or 10 fixture fields—never silently shifted rows.

02 / INTENT ROUTING

Choose by the historical question you want to answer

PLAYER PERFORMANCE16

Season stats

One row per available player–competition pair with appearances above zero. Best for season awards, player histories and competition splits.

FILE
SEASON_STATS_DD_MM_YYYY.csv
KEY
playerid + competition
MOMENT
Before season rollover
OPEN SOURCE ↗
MATCH CALENDAR10

Fixtures

One row per valid fixture, separated into competition files. Best for schedules, results, opponent analysis and match ledgers.

FILE
FIXTURES_{competition}_DD_MM_YYYY.csv
KEY
competition + teams + date + time
STATE
score or paired TBD
OPEN SOURCE ↗

03 / OUTPUT CONTRACT

Shared destination does not mean shared semantics

CONTRACTSEASON STATSFIXTURES
Output count

One dated file

One dated file per competition

Row entity

Player × competition

Fixture

Source path

Database + helper APIs + GetPlayersStats()

Process memory + helper APIs

Incomplete state

Rows with appearances = 0 omitted

Both scores become TBD

Completion proof

LOGGER “Done”

No final log line in source

Ordering

Not guaranteed: pairs()

Memory-list iteration order

04 / ORIGINAL DATA TOOL

Inspect the CSV before Excel, Sheets or a dashboard

The local inspector recognises both exact headers, tests row width and IDs, checks score pairs or numeric counters, detects practical duplicate keys and creates a copyable receipt. It does not execute Lua or upload the file.

LOCAL DATA ROOM / NO UPLOAD

CSV MATCH INSPECTOR

Open an exporter file or paste its contents. Detection and checks run only in this browser.

fixture_sample.csv257 BYTES
QUOTED CSV PARSERDATA NEVER LEAVES DEVICE
Built-in samples are synthetic. The inspector validates output shape, not Live Editor runtime compatibility.LOCAL / READ-ONLY

VALIDATION LIMIT: a structural PASS means the file matches the published shape. It cannot prove that fixed memory offsets fit your running build or that every underlying game field is semantically correct.

05 / 16-FIELD STATS SCHEMA

One row is one player in one competition

Treat playerid plus competition as the practical row identity. The same player can legitimately appear more than once across competitions; row position is not a stable key.

01position

Position label from the player’s preferredposition1.

02playerid

Player entity ID; use it as the stable join key.

03playername

Resolved display name; human-readable, not the join key.

04team

Team name resolved when the player list is built.

05competition

Competition name for this stat row.

06appearances

Only rows with a value above zero are exported.

07AVG

Two-decimal average calculated by the script.

08MOTMs

Player-of-the-match count; source marks mapping “Not sure”.

09goals

Goals in this player–competition row.

10assists

Assists in this player–competition row.

11yellow_cards

Yellow-card count.

12two_yellow

Second-yellow count; source marks mapping “Not sure”.

13red_cards

Red-card count.

14saves

Save count; source marks mapping “Not sure”.

15goals_conceded

Goals conceded; source marks mapping “Not sure”.

16cleansheets

Clean-sheet count.

AVG IN SOURCEappearances > 1 → (raw avg ÷ appearances) ÷ 10appearances = 1 → raw avg ÷ 10formatted to 2 decimals

06 / 10-FIELD FIXTURE SCHEMA

One row is one scheduled or completed match

Team IDs are resolved through standings records, while competition, names and the two scores are written into each line. Keep raw date and time fields untouched until their encoding is proven for your dataset.

01competition

Competition name; also becomes part of the filename.

02compobjid

Competition object ID.

03hometeamid

Home team ID resolved through standings data.

04awayteamid

Away team ID resolved through standings data.

05hometeam

Resolved home-team name.

06homescore

Integer when complete; otherwise TBD.

07awayscore

Integer when complete; otherwise TBD.

08awayteam

Resolved away-team name.

09date

Raw integer read from fixture memory.

10time

Raw integer read from fixture memory.

COMPLETED2 — 1

Both score cells are numeric.

NOT COMPLETEDTBD — TBD

Both score cells use the literal text value.

07 / FILE LIFECYCLE

The date labels a run—not a unique snapshot

STATS%USERPROFILE%\Desktop\SEASON_STATS_DD_MM_YYYY.csv

The file is opened with w+. Another run on the same day reuses and replaces that path.

FIXTURES%USERPROFILE%\Desktop\FIXTURES_{competition}_DD_MM_YYYY.csv

The first row for each competition creates its file with w+; following rows reopen it in append mode.

SAFE ARCHIVE NAME2026-08-18_Club_SaveSlot_PreRollover_SEASON_STATS_source.csv

Add ISO date, Career identity, save slot and capture moment outside the source filename. Keep the original CSV immutable; transform a working copy.

08 / DATA CONFIDENCE

Separate observed code from unresolved field meaning

HIGH / EXECUTABLEHeader, path, filters and write modes

Directly visible in the current official source.

CONDITIONAL / BUILDFixture memory layout

Pointer chain, offsets and 0x18 item size are explicit, but runtime fit depends on the active build.

REVIEW / AUTHOR NOTEFour stats mappings

MOTMs, saves, goals_conceded and two_yellow sit directly below a “Not sure” comment.

DO NOT UPGRADE UNCERTAINTY: the CSV inspector checks the values’ shape. It deliberately does not relabel the four author-marked mappings as verified football semantics.

09 / CSV FORMAT BOUNDARY

Commas are delimiters, but the exporters do not quote names

Both files write comma-separated values directly. The stats script uses table.concat(row, ","); the fixtures script uses a comma-based string.format. Neither source wraps text in quotes or escapes embedded commas.

EXPECTED / 10 CELLSPremier League,13,1,5,Arsenal,TBD,TBD,Chelsea,20261226,1730
SHIFTED / 11 CELLSPremier League,13,1,5,Manchester, City,TBD,TBD,Chelsea,20261226,1730

Why the checker accepts quoted input: downstream tools may repair a working copy into standards-compliant quoted CSV. Detection still requires the exact official column names and order.

10 / CONTROLLED EXPORT

Build a repeatable season-close data protocol

  1. 01
    PAIRRecord game build and LE_VERSION

    Keep version proof beside the export; the fixture script has a tighter memory-layout contract.

  2. 02
    CAREERLoad the intended save and date

    Both scripts require Career Mode. For stats, export before the season resets them.

  3. 03
    SOURCEOpen the official Lua file

    Use the creator repository source you reviewed, not a renamed attachment or mirror.

  4. 04
    RUN ONCEExecute and preserve first output

    Stats logs Done. Fixtures has no final completion line; verify all expected competition files on Desktop.

  5. 05
    ARCHIVERename and copy before rerun

    Protect the source snapshot from the same-day write path.

  6. 06
    VALIDATECheck header, row width and keys

    Use the local inspector; investigate every shifted row, impossible ID or mixed TBD score pair.

  7. 07
    TRANSFORMAnalyse a working copy

    Sort and enrich by IDs. Do not infer identity from names or current row order.

11 / FAILURE ROUTING

The first failed boundary chooses the next check

ASSERT: CAREER MODEWrong context

Load a Career before executing either file.

NO STATS ROWSAppearance filter

Only valid players with appearances above zero enter the export.

MISSING COMP FILENo valid fixture row

A fixture file is created only when the loop encounters that competition.

SHIFTED COLUMNSUnescaped comma

Inspect text names and preserve the raw file before repairing a copy.

SAME-DAY FILE CHANGEDWrite mode

The dated path is not a run ID. Restore the archived first export.

FIXTURE CRASH / BAD DATABuild contract

Stop rerunning and report the exact game/editor pair with source and logs.

12 / VIDEO & INTENT AUDIT

Search demand exists; exact exporter documentation does not

Four targeted YouTube searches produced 60 result slots but only 17 unique videos. The results clustered around a general Live Editor tutorial, Career setup, face importing, mod installation and spreadsheet charting—not a current, authoritative walkthrough of these two FC 26 files.

60SEARCH SLOTS
17UNIQUE VIDEOS

CLOSEST WORKFLOW: a March 2025 FC 25 Live Editor tutorial; useful only for broad UI vocabulary.

CURRENT CAREER INTENT: FC 26 startup and PlayStyle analysis videos show demand for season evidence.

NO EXACT MATCH: no result can replace the two current official source files for field or write semantics.

EVIDENCE RULINGVIDEO EXPLAINS DEMAND. CODE DEFINES THE DATA.

No transcript claim is promoted into a technical fact about these exporters.

13 / FAQ

FC 26 CSV export questions answered at source level

01Which official script exports player statistics?

Use export_season_stats.lua. It writes one dated SEASON_STATS_DD_MM_YYYY.csv file to the Windows Desktop.

02Which script exports fixtures?

Use export_fixtures.lua. It writes a separate dated FIXTURES_{competition}_DD_MM_YYYY.csv file for each competition found in the valid fixture list.

03Do the scripts edit my Career save?

Their intended result is an external CSV file, not a Career database write. Still use an active Career because both scripts assert that Career Mode is loaded.

04When should I export season statistics?

The script author says the game resets season statistics at the beginning of each season, so preserve the file before advancing into the next season.

05Does running the stats exporter twice append data?

No. It opens the dated file with w+, so a second run on the same date replaces that filename. Rename or archive the first copy before rerunning.

06Does the fixture exporter create one combined file?

No. It creates one file per competition, writes the header once for that competition, then appends its fixture rows.

07What does TBD mean in score columns?

The fixture exporter writes TBD to both score cells when its game-completion flag is false. Completed fixtures receive numeric scores.

08What format are fixture date and time?

The published script only exports the raw integer values read from memory; it does not document a human-facing date/time encoding. Preserve the raw values instead of guessing.

09Can names containing commas break the CSV?

The official scripts concatenate values with commas and do not add CSV quoting. A comma inside a player, team or competition name can therefore shift the row into extra columns.

10Why can fixture export be version-sensitive?

It reads internal process structures through a pointer chain, fixed offsets and a fixed item size. That creates a tighter build contract than the stats exporter’s database/helper calls.

11Can row order change between season-stat exports?

Yes. The script iterates Lua tables with pairs, which does not promise a stable order. Join and compare by playerid plus competition, not row number.

12Does the checker upload my Career data?

No. The CSV inspector is browser-only: File.text reads the chosen file locally and the page contains no upload action.

14 / EVIDENCE LEDGER

Code controls behavior; official docs control interfaces

Technical claims are anchored to creator-owned source, Wiki, manifest and changelog. The video audit is kept as audience-intent evidence and is not used to redefine the CSV fields.