Aces High Bulletin Board
General Forums => Hardware and Software => Topic started by: steely07 on July 25, 2026, 07:57:56 PM
-
AHStats — your main-arena career, without the copy-paste
All credit to Spatula for the orig idea, this app is all new code, but Spatula was the inspiration!
It scrapes your pilot and squad info from the HiTech stats site into a local database and gives you a career summary, per-tour breakdowns, a kills-by-plane matrix, squad rosters and arena leaderboards — with charts, and CSV/HTML export if you want to take it elsewhere.
Only one full career is loaded in it so far, which is mine, so every demo number below is me — warts included. Consider it a worked example rather than a brag:
212 tours, April 2001 to June 2026. 2,786 hours in the air — 116 days of my life, apparently.
Hurricane Mk IIC: 1,290 kills. More than a third of everything the per-plane pages tracked, and nearly 8× the next type. I also died in it 962 times, so it earned its keep.
Ship gunners have killed me 216 times. I have killed a ship gunner zero times. The app will tell you this in a nice sortable grid, in case you enjoy watching a man confront himself.
The P-51D and I are dead even — 153 to 156 — after twenty-five years. Some things just don't resolve.
The point isn't my flak problem, it's that once your own career's in there, all of this is a click. Best tour, best rank, which plane actually earns its slot, who keeps killing you — it's all queryable.
One caveat: the per-plane matrix covers 3,624 of my 6,595 career kills, because those pages only exist for tours where HTC published them. The career totals are complete; the per-plane view is as complete as the source allows, and the app says so rather than pretending.
Get it: AHStats.exe from the releases page, no Python needed. Defender may flag it as a false positive on first run — that's the usual PyInstaller single-exe heuristic, not the app doing anything; restore it from quarantine, or build from source yourself, the code's all in the repo.
Getting it running
1. Download. Grab AHStats.exe from the releases page. That's the whole thing — no Python, no installer, no dependencies. Put it wherever you like and double-click it.
Defender may flag it as a false positive on first run. That's the usual PyInstaller single-exe heuristic, not the app doing anything; restore it from quarantine, or build from source yourself — the code's all in the repo. It keeps its database and log in %LOCALAPPDATA%\AHStats, so it won't scatter files where you put the exe.
2. First sync. Type your in-game ID in the Pilot/Squad ID box, click the arena you actually fly (Melee for most people), leave Sync Mode on Full History, and hit Sync Full History.
Then go and do something else. It's pulling every tour that arena has ever had — In my case 226 of them for Melee — and it deliberately waits 3 seconds between requests so it isn't hammering HTC's server for a hobby project. Expect 15 to 35 minutes for a long career, less if you started recently. The progress bar tells you where it's up to, Stop quits cleanly, and if you close the app mid-sync it offers to resume from where it stopped next time you open it.
You only ever do that once. After the first run it fetches just the new tour, which takes seconds.
3. Look at it. The tabs are populated from that point on: Career Summary for the lifetime totals, Tour Detail for one tour, Tour History for all of them in one grid, Kills by Plane for the matrix. Every grid sorts on a left-click and filters on a right-click, and exports to CSV or HTML if you want it elsewhere.
For a squad, flip the pilot/squad toggle and put the squad name in the same box. For someone else's squad roster, the Squad tab takes any player name and any tour.
https://github.com/steelington/AHStats (https://github.com/steelington/AHStats)
(https://i.imgur.com/f7Rj3ln.png)
(https://i.imgur.com/vNNuMfk.png)
(https://i.imgur.com/zvkImzY.png)
(https://i.imgur.com/03qmbDR.png)
(https://i.imgur.com/Vw1NO9f.png)
(https://i.imgur.com/lEIT7Zi.png)
(https://i.imgur.com/qFRB5p9.png)
-
Was having fun with this before I left for vacation. Awesome job!
Did you get it to work with multiple IDs over a career?
-
Yep, you can, it's the Career View row, just under the Pilot/Squad ID box. The feature is called identity groups.
How to set one up:
1. Sync each name separately first. Syncing always hits literal game IDs, so put each old handle in the Pilot/Squad ID box and run Sync Full History for each one in turn. The group is a view over data you've already got, not a way to fetch it.
2. Click Manage Groups... next to Career View.
3. Give it a Group Name (the placeholder suggests MyTotals) and list the Game IDs comma-separated — MDJOE, Fugitive. It needs at least two, or it won't save.
4. Save, then close.
5. Pick the group from the Career View dropdown. Career Summary, Tour History, Kills by Plane and Graphs now sum every ID in the group as one career, and the status line marks it [group: MyTotals] so you can tell what you're looking at.
To edit one later, reopen the dialog and choose it from the Existing group dropdown — it loads the name and IDs back into the fields for you to re-save. Delete Selected removes it.
Three things worth knowing:
- Groups are per type. A pilot group only appears while the pilot/squad toggle is on pilot. Flip to squad and it vanishes — that's by design, not a bug.
- The ID box still drives syncing. With a group active, an empty ID box makes Sync fall back to syncing every member in turn, which is usually what you want when a new tour lands. If the box has a name in it, that name is what gets synced.
- Exports don't follow the group. Export Tours CSV, Export Plane Kills CSV and Export HTML Report all read the ID box directly, so they give you the single ID, not the summed career, the grids merge, the exports don't yet.
-
Awesome! Can't wait to mess with it when I get home.
Thanks for all the work on this!
-
:x :x :x :x :x :x :x :x :x :x
Looks awesome!
-
Yep, you can, it's the Career View row, just under the Pilot/Squad ID box. The feature is called identity groups.
Looks awesome! :aok :salute
I'll be using it soon. I manually downloaded my stats way back for a big chunk of my early career... curious how it's changed since my return, plus picking up other arenas; I played a lot of CT & AvA and those stats still exist, but stats are not enabled in the new AvA arena.
-
This is super awesome! However, I am not sure how to use it l :old:. Can you walk am old fart through it? I see a folder tree with lots of clicks lol. Did I miss the instructions?
-
This is super awesome! However, I am not sure how to use it l :old:. Can you walk am old fart through it? I see a folder tree with lots of clicks lol. Did I miss the instructions?
Click this link..... https://github.com/steelington/AHStats/releases/download/v1.0.4/AHStats.exe
It will download an exe file. Save it to a harddrive
Using the file manager right click the exe file and click "show more" then click "create desktop icon".
Grab and drop the new icon to the desktop.
Double clicking the icon opens the app.
Once open, type your name in the top box, select the arena you want to info from, then click the "sync history" button. A pop up should tell you about how long it will take to gather the info, click ok and wait.
Once its done downloading the data you can use the buttons to view the data in the big box.
Refreshing the download isnt as long each time because the app remembers the old data downloads and so it only searches for the recent ones that have not been down loaded.
I have found an issue with it when combining multiple names for a single player, but other than that it is fun checking the data out.
-
I can not get any MA data before Tour 93, it says only 227 tours are available- "Fetch Tours" doesn't get any results prior Tour 93.
Would also be nice if you could manually enter a range for downloading data in addition to download all tours or specifically selecting a single one from drop down list (cumbersome).
Edit: I can download earlier Late War MA tours by selecting "All", but of course this also makes the tool trying to download lots of tour data from Arenas "Lusche" never flew in. Also, MA data earlier than tour 93 is missing from Career Stats if you select MA only.
-
Also, Groups seem to be limited to 10 Id entries, So I can't get my total career stats shown :old:
-
Thaks Fuji for your message, and Mr Snail, great feedback also, I'll look into these issues and come up with a fix over the next couple of days, make a new version and post back here when done!
<S>!
-
New release, issues addressed :)
https://github.com/steelington/AHStats/releases/tag/v1.1.0
-
Fixes
- Pre-Tour-93 Main Arena tours are visible again. Tours with unprefixed ids (Tour92 and older) were filed under an arena no picker offered, so with Melee (MA) selected nothing before Tour 93 showed up — in Career Summary, Tour History, Kills by Plane or Graphs. Only "All" reached them, and that dragged in every other arena. They now sit in Melee (MA), which is the arena that continues them (Tour 92 ends 2007-09-30, LW Tour 93 begins 2007-10-01 — one unbroken career). On a full cache that's 81 extra tours: 307 instead of 226, back to Tour 12 / 2000-12-26.
- Existing databases repair themselves on first launch of the new version — nothing to re-sync, nothing to delete.
- Listing the same game ID twice in an identity group no longer kills the save — it used to fail outright and lose the whole group. Repeats are now ignored.
- The tour picker's dropdown arrow works from a cold start. Pickers were only filled after a sync, or after changing arena/pilot, so on a fresh launch the arrow looked dead. All four pickers (Single Tour sync, Tour Detail, Squad, Arena Planes) now load from the local cache when the window opens.
- Typing a tour name actually selects that tour. Previously the box took your typing but synced whatever was selected before — on a fresh launch, always the newest tour. The box is now read at the moment you click the button. Typed text ranks the same way the list does, so "Tour 21" gets Tour 21, not Tour 210–219; text matching nothing is discarded rather than quietly syncing the wrong tour.
New
- Era column on Tour History and on Kills by Plane grouped by model — marks the pre-split tours "Main Arena" so you can tell which side of the 2007 split a tour is on.
- Tour Range sync mode, alongside Full History and Single Tour. Type a first and last tour number and sync just that stretch. Read within the selected arena; backwards entry works.
- Type-to-filter tour pickers everywhere. The old option menus were a 300-entry column with tiny scroll arrows, no scrollbar and no mouse wheel. Now type "92" and it's there; wheel and scrollbar work, Enter takes the first match.
- Identity group editor shows every ID at once — multi-line box, one ID per line (commas still accepted), with a live count. The old single-line box scrolled earlier names out of sight, which read as a ~10-name limit. There was never a limit.
- Sync progress that looks alive. Taller bar in its own row, plus a line underneath redrawing 4×/second: which tour of how many, percent, elapsed, and a measured estimate of time remaining. Covers full history, tour range, single tour, resumed syncs and plane backfill.
- Standing note on the Squad tab explaining that "so-and-so is not part of a squad" is HiTech's own answer for some players/tours, not an AHSTATS bug.
- Tour labels vary by era — "Tour 47", "Late War Tour 200", "Melee Tour 318" — but filtering on the number alone finds any of them.
- HiTech's own dropdown starts at Tour 12, so Tours 1–11 aren't fetchable by any version.
- Reporters credited in the changelog: The Fugitive and Lusche.
-
This is cool! :x Awesome work Steely! Can't wait to check it out.
You may want to post this to the general discussion so more people see it.
:rock
-
Bumping because this is a nifty program.
Great work, Steely.
-
Thanks everyone who reported issues, I will make one more new release later today, and add an update check into it, as I've made several new versions since the orig one, and announcing it here, I feel like people may miss the post.
The updater will check github for a new version on launch and let you know a newer version is available, it'll be up to you if you want to update, I will not be collecting any info via the updater, and feel free to not grab the latest version, or block the app from connecting to github, I just want to make sure everyone gets the fixes, that's all.
Will announce it here when done!
-
The drop down arrow still doesnt work for me but typing in the tour you want to check does work well.
As a side not can you make a "light" colored version for us old guys? The dark colors make it hard to see sometimes. No big deal, was just saying :bolt:
-
Fugi, grab the latest one and let me know on the drop down, should be working now, I'll work on a light theme for sure :)
https://github.com/steelington/AHStats/releases/tag/v1.1.5
-
New version, light theme added, and an update check so you'll always know if there's a new version.
grab here : https://github.com/steelington/AHStats/releases/tag/v1.2.0
-
Should it work on my android..
Eagler
-
Excellent Steely! Works great! Thanks for the work!
-
I can't get the program to work. Tried a half dozen times with the original and updated versions. Windows7.
I click run and the loading circle on my screen goes around for a few seconds and then nothing.
With Task Manager open, the cpu is doing something. But when I stop the stats process, the cpu goes to 0%.
-
Eagler, no, it's windows only, sorry
Caldera, I don't have a windows 7 machine to test on unfortunately, so I'm not going to be able to troubleshoot what's happening there, sorry again!
-
Eagler, no, it's windows only, sorry
Caldera, I don't have a windows 7 machine to test on unfortunately, so I'm not going to be able to troubleshoot what's happening there, sorry again!
I have one, it gave me some dll file errors, "cant find api-ms-win-core-path-l1-1-0.dll as well as a I think python runtime error. I could get the "details" if you want to mess with it.
-
This error is usually caused by the missing Visual C++ Redistributable for Visual Studio 2015 on your Windows. You can include the dll or user install the software. You may have to use an install process to register the dll. Depends the path you choose to go.
-
First obtain the file.
Where you put a DLL file depends on what the file is for. Most of the time, you should place it directly inside the specific game or program folder where the main .exe file is located, or into Windows system directories like C:\Windows\System32 for 64-bit files and C:\Windows\SysWOW64 for 32-bit files. If you are going to be moving the folder you probably want to put it in Windows System32 or SysWOW64 folders.
Sometimes to can right click the file and it may give some install option. In other words some may be self-installing,
You may need to register the .dll for it to work.
To Register a .dll file
1) Open Admin CMD: Press the Windows key, type cmd, right-click, and choose Run as administrator.
2) Type the Command: Enter regsvr32 followed by the path of the file.
Example: regsvr32 "C:\MyFolder\myfile.dll"
3)Press Enter: A success message box will appear if the registration works.
Important Details
64-bit vs 32-bit systems: Most users on 64-bit Windows running 32-bit DLLs should use the tool in the SysWOW64 folder (C:\Windows\SysWOW64\regsvr32.exe) rather than System32.
Unregistering: If you need to remove a registration later, add a /u flag to the command: regsvr32 /u "C:\path\to\file.dll".
Common Errors: If you see an error like module failed to load, verify that the file path is correct or that the DLL supports self-registration (not all DLL files are designed to be registered via regsvr32).
-
Steely, would this program be able to find "most of" stats? As in, most kills in a tour, by a single pilot, in a specific plane.
If this were possible, we could have some interesting records to shoot for. Getting an all time record in a near 30 year old game would be pretty cool.
Example:
A6M5b - 499 kills by (?) in Tour 104
P-51D - 947 kills by (?) in Tour 67
Spitfire Mk. I - 258 kills by (?) in Tour 33
-
Steely, would this program be able to find "most of" stats? As in, most kills in a tour, by a single pilot, in a specific plane.
If this were possible, we could have some interesting records to shoot for. Getting an all time record in a near 30 year old game would be pretty cool.
Example:
A6M5b - 499 kills by (?) in Tour 104
P-51D - 947 kills by (?) in Tour 67
Spitfire Mk. I - 258 kills by (?) in Tour 33
it would require an extra layer of hitting the stats pages and working with the data - the info is available, tho'
-
Shane is correct, that said, Snailman might have that information stashed already if you asked nicely :)
-
Steely, would this program be able to find "most of" stats? As in, most kills in a tour, by a single pilot, in a specific plane.
If this were possible, we could have some interesting records to shoot for. Getting an all time record in a near 30 year old game would be pretty cool.
Example:
A6M5b - 499 kills by (?) in Tour 104
P-51D - 947 kills by (?) in Tour 67
Spitfire Mk. I - 258 kills by (?) in Tour 33
The data is there, btw
A6M5b - 377 kills by Grey92 in Tour 104
P-51D - 469 kills by WildBil1 in Tour 67
Spitfire Mk. I - 68 kills by Spork42 in Tour 33
Easy enough to find. Pick a plane and you should be able to check as far back as you want. Recent I'm sure is far different than the earlier tours.
-
Yes, the information is there. But it will take an insane amount of time to look through more than 300 tours worth of it.
Just for the hell of it, I tried starting on the A-20. Checked Tour 320 and down the line. I noped out after Tour 307. It takes longer than you think and that's just one plane. I want the records for ALL of them. It would take forever. :old:
-
I ran the program yesterday while sitting out the rain from Hurricane Isaias and was (unhappily) reminded of just how badly I suck in a fighter :joystick: :old:
I inadventantly closed out the active screen and have not been able to find a saved file of the downloaded info. Does it exist somewhere or do I need to rerun the exe?
Great proggy Steely!! Was fun having a quick peak at Memory Lane.
-
I ran the program yesterday while sitting out the rain from Hurricane Isaias and was (unhappily) reminded of just how badly I suck in a fighter :joystick: :old:
I inadventantly closed out the active screen and have not been able to find a saved file of the downloaded info. Does it exist somewhere or do I need to rerun the exe?
Great proggy Steely!! Was fun having a quick peak at Memory Lane.
the personal data compilations seems to be cached somewhere. I haven't noticed a similar delay when making a new inquiry compared to first time. Where the cache is located, I dunno, I briefly looked for it.
-
Glad you enjoyed the trip down Memory Lane!
Nothing was lost. Everything it downloaded is saved in %LOCALAPPDATA%\AHStats\ahstats.db (paste %LOCALAPPDATA%\AHStats into the Explorer address bar to see it). Just run the exe again, type your ID in the same box and press Sync Full History. It already has the old tours, so it only checks the current one and it's done in seconds, not the long first download.
If you want a copy outside the app, every grid has an export, and there's a full HTML report too.