• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 02:22
CET 07:22
KST 15:22
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Intel X Team Liquid Seoul event: Showmatches and Meet the Pros0[ASL20] Finals Preview: Arrival13TL.net Map Contest #21: Voting10[ASL20] Ro4 Preview: Descent11Team TLMC #5: Winners Announced!3
Community News
Weekly Cups (Oct 20-26): MaxPax, Clem, Creator win42025 RSL Offline Finals Dates + Ticket Sales!9BSL21 Open Qualifiers Week & CONFIRM PARTICIPATION1Crank Gathers Season 2: SC II Pro Teams10Merivale 8 Open - LAN - Stellar Fest4
StarCraft 2
General
Intel X Team Liquid Seoul event: Showmatches and Meet the Pros RotterdaM "Serral is the GOAT, and it's not close" Chinese SC2 server to reopen; live all-star event in Hangzhou Weekly Cups (Oct 20-26): MaxPax, Clem, Creator win Could we add "Avoid Matchup" Feature for rankgame
Tourneys
Merivale 8 Open - LAN - Stellar Fest Crank Gathers Season 2: SC II Pro Teams 2025 RSL Offline Finals Dates + Ticket Sales! $5,000+ WardiTV 2025 Championship $3,500 WardiTV Korean Royale S4
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 497 Battle Haredened Mutation # 496 Endless Infection Mutation # 495 Rest In Peace Mutation # 494 Unstable Environment
Brood War
General
Ladder Map Matchup Stats BW General Discussion BSL Team A vs Koreans - Sat-Sun 16:00 CET [ASL20] Ask the mapmakers — Drop your questions BGH Auto Balance -> http://bghmmr.eu/
Tourneys
[ASL20] Grand Finals The Casual Games of the Week Thread BSL21 Open Qualifiers Week & CONFIRM PARTICIPATION ASL final tickets help
Strategy
PvZ map balance How to stay on top of macro? Soma's 9 hatch build from ASL Game 2 Current Meta
Other Games
General Games
Stormgate/Frost Giant Megathread General RTS Discussion Thread Path of Exile Nintendo Switch Thread Dawn of War IV
Dota 2
Official 'what is Dota anymore' discussion LiquidDota to reintegrate into TL.net
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread SPIRED by.ASL Mafia {211640}
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread YouTube Thread The Chess Thread
Fan Clubs
White-Ra Fan Club The herO Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! [Manga] One Piece Korean Music Discussion Series you have seen recently...
Sports
MLB/Baseball 2023 2024 - 2026 Football Thread Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023 NBA General Discussion
World Cup 2022
Tech Support
SC2 Client Relocalization [Change SC2 Language] Linksys AE2500 USB WIFI keeps disconnecting Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Recent Gifted Posts
Blogs
Analysis of the Trump-Lee S…
Peanutsc
Reality "theory" prov…
perfectspheres
The Benefits Of Limited Comm…
TrAiDoS
Our Last Hope in th…
KrillinFromwales
Certified Crazy
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1416 users

APM Monitor for SCII (and other games)

Forum Index > SC2 General
Post a Reply
Normal
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-28 03:19:58
September 09 2014 23:25 GMT
#1
If you are coming from an older version, please run Fresh Start (in Settings) to avoid problems! For example, you are replacing revision 8 with revision 9. You may run into issues because some registry values have changed since the last version. If you have not used the program before, then you don't have to worry.

If you have any questions about the changes in a revision or want more detail on it, just ask. (Change log in the program is under About > What's New?)

Latest version: Revision 9 (1.1.0.9)

About version numbers: For example, the version number will be 1.2.3.4. From left to right, Major, minor, build, revision. I will use all except build. Major won't change much. Revision will change when I release enough updates (to warrant a new revision). Minor will change if I need to make a fix to a certain revision (but not enough for a new revision). Minor numbers will return to 0 when a new revision is out (so if you see a 1, that means I've made a reasonably important fix to the current revision).

********************************************************************************************************************************************
Known Problems

This section is for problems and suggestions that TL members have told me about. I'll be sure to keep it updated.

s = suggestion; b = bug

___________________________________________________________________________________________________
(9/11) b#1: HUD is locked upon first run.

(9/12) b#1 Solved: Unless a value of 1 is found, the HUD remains immovable. At first run, no value is present. So it defaults to not being movable, and the drop down menu reports it is movable. At first run, a value of 1 is created so it can be moved.

(9/11) b#2: Upon first run, selecting font size doesn't function, and HUD Display Settings is 100% broken (null exception).

(9/12) b#2 Solved: I discovered that it had nothing to do with font size. Despite the "Enable sound file alert" check box being off, it was still trying to set a value. Since nothing existed, it resulted in a null exception. It has been changed to ensure a value exists before setting the value, to avert this problem.

In addition to b#2, I discovered an issue with the colors. At first run, the colors default to a tan (or the default Control color). If you don't pick a color, the background goes to tan. The default I decided on was a black backcolor, and a white font color. I changed it to where at first run (or where a value doesn't exist) the correct default colors are selected.

I also discovered I needed to update the "Reset HUD" button. It now resets the additional options in the "HUD Display Settings" window (minimum APM and down).


(9/19) b#3: Hot keys or combining keys (such as Ctrl + A) do not work.

(10/16) b#2 Solved: Alt, Ctrl, and Shift can be combined with keys A through Z, and keys 0 through 9.

(9/10) s#1: Filenames should "roll forward" or be sequential automatically.

(9/24) s#1 Implemented: Filenames can automatically "roll forward" by clicking the Sequential checkbox below the filename. Each time the monitor is started, the filename will increase by 1. For example, test1.txt, test2.txt, test3.txt. If you change the filename, the numbering will reset to 1.

(9/10) s#2: The real-time APM HUD should be capable of transparency.

(9/24) s#2 Implemented: The APM HUD can now be made transparent through the HUD Display Settings dialog.

(9/24) s#3: The APM HUD should be able to work in full screen, as it does in windowed mode applications and games.

(9/10) s#4: The APM monitor cannot be paused.

(10/16) s#4 Implemented: The monitor can be paused by clicking on the yellow flag.

I will also be adding shortcut keys, to s#4. For example, you can press F10 to start the monitor. You can define which F key you want to use. You will also be able to map your chat key as well, so that when you press it, it pauses the game.
____________________________________________________________________________________________________

As of 10/16, I have redone the main window. Let me know what you think. I will probably change the flags to the images typically found on remotes. (e.g. The pause button is represented by two vertical bars.)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Games Tested: Warcraft 3: Reign of Chaos (works), AoE: II (does not work)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

********************************************************************************************************************************************

A month or so ago, I was told by a friend that no good APM monitor existed for SCII. He seemed like the kind of guy that really knew what he was talking about, so I believed him. Not too long ago, I figured I'd look it up anyway. Very quickly, I found a post on this forum with a pretty solid APM monitor. (I found other results as well.) So I am fully aware APM monitors exist; however, I've put far too much effort into this program to just throw it away.

http://starcraft.ltgks.com/

The program, as well as the source, is available on that website. Program is written in Visual Basic. The program detects APM by key/mouse hooks rather than getting information from SCII. I wasn't aware SCII outputted APM information until recently, but I still have no idea where that information is.

As of revision 7, I'm still working on real-time APM color and sound alerts. It seems to work as of this point, but I have a feeling there are problems with it. The HUD doesn't update on a set interval, only when you press a key will you see the new APM. I'm currently working on making it refresh on set intervals, just I'm extremely busy with classes and work. Considering this, sound alerts aren't the greatest but color alerts work quite decently.

I'm also in the process of translating the program. I don't know of any other way than to manually put in the translations. This, obviously, is a big pain when I make changes or additions to text. The current languages are Chinese Simplified and English (although I believe I have a Spanish translation from someone ready to be added).

And this game will work with any RTS game, since it doesn't rely on specific information from one game.

Edit: I should also point this out as it's not very obvious. I'll think of something to make it more obvious in the future. When your real-time HUD is enabled, you can right click on it for options.

[image loading]

Lock HUD: Should be obvious enough. It prevents you from moving the HUD. I was thinking of making the HUD click-through (or "transparent"). Not sure if that would be useful. I also thought of making the HUD visually transparent.

[image loading]

Display Settings: Allows you to change the font size, font color, and background color. You can also set a minimum APM you want to keep as you play. The HUD can change color, and play a sound. As of right now, the sound alert isn't going to very fun (each time you press a key while under the set APM, it will make that sound). Once I get the HUD to refresh on set intervals, it'll work better. I'll also make the sound alert more flexible. (e.g. sound can play on loop every 5 seconds, or it can play a maximum of 3 times every 5 seconds)

Also, I figure this would be good to note: This program writes to the Windows Registry. Not that it's a big deal, but just want to state that up front. This is how the settings can be remembered after program close, and settings can be accessed within the program.

Edit 2: Many controls in the program have tooltips. Place your mouse over a button, textbox, etc to activate the tooltip. For example, to change the location of your report, double click the textbox.

[image loading]
Larkin
Profile Blog Joined January 2012
United Kingdom7161 Posts
September 09 2014 23:27 GMT
#2
Cool that it will work with every RTS game. Interesting to see how hilariously low my APM is for Company of Heroes 2 in comparison.
https://www.twitch.tv/ttalarkin - streams random stuff, high level teamleague, maybe even heroleague
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-10 00:36:40
September 09 2014 23:31 GMT
#3
You've used it already? I don't know how APM is normally calculated, but this will take into account every key and every mouse click you make.
Garnet
Profile Blog Joined February 2006
Vietnam9030 Posts
September 09 2014 23:52 GMT
#4
I got this error. Using windows 8.1 x64.

[image loading]
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-10 01:00:25
September 09 2014 23:59 GMT
#5
Update: Fixed. Problem was that it was pulling the font size for the real-time HUD, before there was a value present (value in the registry). I gave it a default value in the event there isn't one present (specifically for the first time the program starts on a PC).

The fixed source and program are available on the site now.
Garnet
Profile Blog Joined February 2006
Vietnam9030 Posts
September 10 2014 01:25 GMT
#6
does it count mouse clicks?
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 10 2014 04:24 GMT
#7
On September 10 2014 10:25 Garnet wrote:
does it count mouse clicks?


It does. However, you have the option to turn that off in Settings.
cakolas
Profile Joined March 2012
8 Posts
Last Edited: 2014-09-10 11:26:37
September 10 2014 11:24 GMT
#8
Thank you soo much. I was looking for a program like this for a long time but i coudn't find. This program will be very usefull for counting apm in non-starcraft rts games.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 10 2014 12:09 GMT
#9
No problem, glad you like it. The best way you can help me is by spreading the word. I definitely want to get more feedback on this. It's the best way to improve the program.
Fuchsteufelswild
Profile Joined October 2009
Australia2028 Posts
Last Edited: 2014-09-10 13:12:39
September 10 2014 12:24 GMT
#10
Looks good!
I look forward to using this on Age of Empires 2 after playing some Forgotten Empires at a 4 person LAN and wondering how our APM compared (because they're much much slower than most would expect from people who even like RTS games and I'm not).

I'm about to download it but is there no pause function?
I'd like to have Start-Stop functionality for when I want to stop the monitoring and see the results but would also like to be able to Start, Pause, Start, Pause, Start, Stop so I can stop it from monitoring when we pause games but then get it to continue monitoring in the same recording instance by pressing Start again.
This way we could even play many series of games and just have one recording (text file) for the whole lot simply by pausing between matches.

How is scrolling/mouse movement handled?
Would any single mouse movement be treated as 1 action, or does it detect screen scrolling, so that only unit selections (click or box-select) and screen scrolling are counted while movements with no action are not counted?

Let me know if you find a program that can calculate an estimate of APM in a recorded Age of Empires II file.
Actions aren't recorded so much as commands in that but potentially, the typical number of actions could be worked out (produce villager = select town centre with mouse or 'H', click villager icon OR press 'C' = 2 actions either way).
It's been discussed elsewhere but as far as I could find, no one ever pushed on with such a project (or maybe it did but the link was broken when I got there!)

EDIT: I wasn't sure how the registry entry would be handled and after pasting it to one folder and then moving it but realising there was no installer or uninstaller, I was worried the registry entry would be stuffed already (easily fixed though really if you can just find the path entry).
As it happens though, you've made sure it changes the path entry in the Registry based on the last location it was opened from. Nice choice.

Oh, a thought - under Report Location (and any other path specifying prompts), could you allow direct path entry through typing/pasting? I personally find it a real pain to navigate through folders using that view and don't understand why there are some mainstream companies that actually force you to choose locations that way.
Steam, or Divinity - Original Sin or something else made me use that method recently and I just found it surprising (and annoying *shakes fist*) that they didn't allow you to just allow either typing or pasting of the path, nor use a nice window like when you choose "Open" in MS Word or many other programs.
Firefox even. Open. Nice method of finding things, I can easily use Up One Level and whatnot.
Gah, I so loathe this "Navigation Pane"-only way of locating directories and files!

Oh, if I try to change the Real-Time APM text size, even though it works, I get this:
[image loading]
Colours and the total size of the background colour don't appear to work though.
EDIT: Actually, colour does on StarCounter restart, but the total size of the background doesn't seem to be moveable (don't know why it wasn't working but it is now...mouse problems maybe) or resizeable, supposing I'm not missing something. I would appreciate your suggested HUD transparency option and ability to click through the HUD, by the way.

Ah, also, rolling/sequential report names would be a great feature, i.e. have a base name for the series of reports which is followed by -0001 or something like that for the first recorded report, -0002 for the second etc. until either the sequential naming option is turned off, or changed to a different base name, in which case the new series would be named after that base name followed by -0001.

Finally before I go to bed, in Age of Empires II, no hotkeys ('H' for focus on Town Centre, 'C' for build villager, 'B' for build economic(?) building) work while your program is active, even without the HUD. As soon as I turn that off, they all work again. I fiddled around with my keyboard a lot and it was definitely the program.

Example debug to go with the screenshot above:
+ Show Spoiler +
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
at WindowsApplication1.hudSettings.okBTN_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
APM Monitor
Assembly Version: 1.0.0.0
Win32 Version: 5.0.0.0
CodeBase: file:///P:/Program%20Files%20(x86)/StarCounter/StarCounter.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 11.0.50709.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

ZerO - FantaSy - Calm - Nal_rA - Jaedong - NaDa - EffOrt - Bisu - by.hero - StarDust - Welmu - Nerchio - Supernova - Solar - Squirtle - LosirA - Grubby - IntoTheRainbow - Golden... ~~~ Incredible Miracle and Woongjin Stars 화이팅!
WinterStarcraft
Profile Joined June 2012
United States109 Posts
September 10 2014 13:06 GMT
#11
Thank you, been looking for one to replace the mildly disfunctional one on scelight
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-10 13:07:06
September 10 2014 13:06 GMT
#12
On September 10 2014 21:24 Fuchsteufelswild wrote:
Looks good!
I look forward to using this on Age of Empires 2 after playing some Forgotten Empires at a 4 person LAN and wondering how our APM compared (because they're much much slower than most would expect from people who even like RTS games and I'm not).

I'm about to download it and won't be able to test it yet, but is there no pause function?

No pause function at the moment. I'll think about adding one though.

I'd like to have Start-Stop functionality for when I want to stop the monitoring and see the results but would also like to be able to Start, Pause, Start, Pause, Start, Stop so I can stop it from monitoring when we pause games but then get it to continue monitoring in the same recording instance by pressing Start again.
This way we could even play many series of games and just have one recording (text file) for the whole lot simply by pausing between matches.

Ah, yes, I hadn't considered pausing games.

How is scrolling/mouse movement handled?
Would any single mouse movement be treated as 1 action, or does it detect screen scrolling, so that only unit selections (click or box-select) and screen scrolling are counted while movements with no action are not counted?

It only detects right or left clicks.

Let me know if you find a program that can calculate an estimate of APM in a recorded Age of Empires II file.
Actions aren't recorded so much as commands in that but potentially, the typical number of actions could be worked out (produce villager = select town centre with mouse or 'H', click villager icon OR press 'C' = 2 actions either way).
It's been discussed elsewhere but as far as I could find, no one ever pushed on with such a project (or maybe it did but the link was broken when I got there!)

What do you mean by "calculate an estimate of APM"?

I'll reply to the rest of your questions later today.

EDIT: I wasn't sure how the registry entry would be handled and after pasting it to one folder and then moving it but realising there was no installer or uninstaller, I was worried the registry entry would be stuffed already (easily fixed though really if you can just find the path entry).
As it happens though, you've made sure it changes the path entry in the Registry based on the last location it was opened from. Nice choice.

Oh, a thought - under Report Location (and any other path specifying prompts), could you allow direct path entry through typing/pasting? I personally find it a real pain to navigate through folders using that view and don't understand why there are some mainstream companies that actually force you to choose locations that way.
Steam, or Divinity - Original Sin or something else made me use that method recently and I just found it surprising (and annoying *shakes fist*) that they didn't allow you to just allow either typing or pasting of the path, nor use a nice window like when you choose "Open" in MS Word or many other programs.
Firefox even. Open. Nice method of finding things, I can easily use Up One Level and whatnot.
Gah, I so loathe this "Navigation Pane"-only way of locating directories and files!

Oh, if I try to change the Real-Time APM text size, even though it works, I get this:
[image loading]
Colours and the total size of the background colour don't appear to work though.
EDIT: Actually, colour does on StarCounter restart, but the total size of the background doesn't seem to be moveable (don't know why it wasn't working but it is now...mouse problems maybe) or resizeable, supposing I'm not missing something. I would appreciate your suggested HUD transparency option, by the way.

Ah, also, rolling/sequential report names would be a great feature, i.e. have a base name for the series of reports which is followed by -0001 or something like that for the first recorded report, -0002 for the second etc. until either the sequential naming option is turned off, or changed to a different base name, in which case the new series would be named after that base name followed by -0001.

Example debug:
+ Show Spoiler +
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
at WindowsApplication1.hudSettings.okBTN_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
APM Monitor
Assembly Version: 1.0.0.0
Win32 Version: 5.0.0.0
CodeBase: file:///P:/Program%20Files%20(x86)/StarCounter/StarCounter.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 11.0.50709.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


Fuchsteufelswild
Profile Joined October 2009
Australia2028 Posts
Last Edited: 2014-09-10 13:21:31
September 10 2014 13:13 GMT
#13
I realise you're probably in the process of replying to that quote you've just made, but just a note, I edited it even more. :D
I'll come back to reply when I can.

Oh, except regarding this
What do you mean by "calculate an estimate of APM"?


"Actions aren't recorded so much as commands in that (in AoE2) but potentially, the typical number of actions could be worked out (produce villager = select town centre with mouse or 'H', click villager icon OR press 'C' = 2 actions either way).
It's been discussed elsewhere but as far as I could find, no one ever pushed on with such a project (or maybe it did but the link was broken when I got there!)"

In AoE2 you can record the game as long as you tick the box before the game, but the files don't track number of actions per minute but just the commands issued and it was talked about somewhere (probably on http://aoczone.net/).
As I say, the command "produce villager" is pretty much always going to require two actions to trigger, so even though APM are not calculated directly, one could potentially make a program that analyses command lists and assigns predefined numbers of "actions" to each command that was issued.
I believe the thread died off until someone made a post saying they'd created one such tool (unless I'm mixing this up with a post about some other utility...) but then the links didn't work for me.
I don't expect anything like that from this program or from you, it was just an aside because it would be a very nice tool to have (and people had previously discussed the idea)!
ZerO - FantaSy - Calm - Nal_rA - Jaedong - NaDa - EffOrt - Bisu - by.hero - StarDust - Welmu - Nerchio - Supernova - Solar - Squirtle - LosirA - Grubby - IntoTheRainbow - Golden... ~~~ Incredible Miracle and Woongjin Stars 화이팅!
Garnet
Profile Blog Joined February 2006
Vietnam9030 Posts
September 10 2014 13:28 GMT
#14
On September 10 2014 13:24 CalmestRoadkill wrote:
Show nested quote +
On September 10 2014 10:25 Garnet wrote:
does it count mouse clicks?


It does. However, you have the option to turn that off in Settings.

There's no option like that in Settings.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 10 2014 20:17 GMT
#15
On September 10 2014 22:28 Garnet wrote:
Show nested quote +
On September 10 2014 13:24 CalmestRoadkill wrote:
On September 10 2014 10:25 Garnet wrote:
does it count mouse clicks?


It does. However, you have the option to turn that off in Settings.

There's no option like that in Settings.


[image loading]
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 10 2014 20:20 GMT
#16
On September 10 2014 22:13 Fuchsteufelswild wrote:
I realise you're probably in the process of replying to that quote you've just made, but just a note, I edited it even more. :D
I'll come back to reply when I can.

Oh, except regarding this
Show nested quote +
What do you mean by "calculate an estimate of APM"?


"Actions aren't recorded so much as commands in that (in AoE2) but potentially, the typical number of actions could be worked out (produce villager = select town centre with mouse or 'H', click villager icon OR press 'C' = 2 actions either way).
It's been discussed elsewhere but as far as I could find, no one ever pushed on with such a project (or maybe it did but the link was broken when I got there!)"

In AoE2 you can record the game as long as you tick the box before the game, but the files don't track number of actions per minute but just the commands issued and it was talked about somewhere (probably on http://aoczone.net/).
As I say, the command "produce villager" is pretty much always going to require two actions to trigger, so even though APM are not calculated directly, one could potentially make a program that analyses command lists and assigns predefined numbers of "actions" to each command that was issued.
I believe the thread died off until someone made a post saying they'd created one such tool (unless I'm mixing this up with a post about some other utility...) but then the links didn't work for me.
I don't expect anything like that from this program or from you, it was just an aside because it would be a very nice tool to have (and people had previously discussed the idea)!


The program will record every mouse click and keystroke you make. The best way I can translate, would be in Warcraft 3. If I wanted to move a unit (the long way) I would click the unit, click move, and then click where I want the unit to go. That would be 3 actions. I would love to offer the option to combine that into one big action, but I'd need to be able to communicate with the game. And, of course, each game is different.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-12 03:42:56
September 12 2014 03:38 GMT
#17
On September 10 2014 21:24 Fuchsteufelswild wrote:

I didn't see a need for installation. It was easy enough for me to have it be an executable. The program can be moved anywhere without issue, as it doesn't reference static files. You also need administrative privileges to run installers, which some may not have. Unless people demand and installer, I won't make one.

EDIT: I wasn't sure how the registry entry would be handled and after pasting it to one folder and then moving it but realising there was no installer or uninstaller, I was worried the registry entry would be stuffed already (easily fixed though really if you can just find the path entry).
As it happens though, you've made sure it changes the path entry in the Registry based on the last location it was opened from. Nice choice.

Honestly, I thought I was doing the user a favor by having them navigate to the directory. Typing out the folder you want to use is decently long, and most people don't know paths by name. Most of the time you want to save to something at least username level (e.g. C:\Users\User\Desktop). And then, the folder may be deeper than that. And, any user is very prone to mistyping. However, changing the textbox to where it accepts direct entry shouldn't be difficult.


Oh, a thought - under Report Location (and any other path specifying prompts), could you allow direct path entry through typing/pasting? I personally find it a real pain to navigate through folders using that view and don't understand why there are some mainstream companies that actually force you to choose locations that way.

I'm just using the default Open/Save File Dialog :p There might be power packs that include those nicer dialog boxes. Otherwise, I'd have to create one.

Steam, or Divinity - Original Sin or something else made me use that method recently and I just found it surprising (and annoying *shakes fist*) that they didn't allow you to just allow either typing or pasting of the path, nor use a nice window like when you choose "Open" in MS Word or many other programs.
Firefox even. Open. Nice method of finding things, I can easily use Up One Level and whatnot.
Gah, I so loathe this "Navigation Pane"-only way of locating directories and files!

Oh, if I try to change the Real-Time APM text size, even though it works, I get this:
[image loading]
Colours and the total size of the background colour don't appear to work though.

Are you saying you are unable to move the HUD box? Right click and see if "Lock HUD" is checked. If it isn't, click it twice and see if it's movable. Sometimes the settings and the GUI aren't aligned, and I'll have to fix that.

As for the overall size, you can only resize via font change. I did this so the HUD, well, looked like a HUD (not having the typical Windows borders). And I only went up so far in font size because the HUD would be really large, and I figured it would cover relevant portions of the screen. Again, this was initially designed for SC2. Let me know what your specific needs are since it's not SC2.


EDIT: Actually, colour does on StarCounter restart, but the total size of the background doesn't seem to be moveable (don't know why it wasn't working but it is now...mouse problems maybe) or resizeable, supposing I'm not missing something. I would appreciate your suggested HUD transparency option and ability to click through the HUD, by the way.

Good idea. I'm almost sure I thought of something like that, but I probably forgot to look into it. I could probably add that as well as the rolling names to the "file name already exists" dialog.

Ah, also, rolling/sequential report names would be a great feature, i.e. have a base name for the series of reports which is followed by -0001 or something like that for the first recorded report, -0002 for the second etc. until either the sequential naming option is turned off, or changed to a different base name, in which case the new series would be named after that base name followed by -0001.

Yes it definitely is the program. While active, it is doing key/mouse hooks. When it detects keys A through Z (and only keys A through Z), it captures it and then resends it. If any other keys are hit, it ignores them. So combination keys don't work. I had designed this for SC2, but realized it will mostly work with other games. Let me know what combination keys don't work (like it's CTRL + H to activate a hot key), and I'll make it all work.

Finally before I go to bed, in Age of Empires II, no hotkeys ('H' for focus on Town Centre, 'C' for build villager, 'B' for build economic(?) building) work while your program is active, even without the HUD. As soon as I turn that off, they all work again. I fiddled around with my keyboard a lot and it was definitely the program.

Example debug to go with the screenshot above:
+ Show Spoiler +
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
at WindowsApplication1.hudSettings.okBTN_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
APM Monitor
Assembly Version: 1.0.0.0
Win32 Version: 5.0.0.0
CodeBase: file:///P:/Program%20Files%20(x86)/StarCounter/StarCounter.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 11.0.50709.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///P:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 12 2014 08:30 GMT
#18
Updated source and program are available on the website (for bugs 1 and 2). This one is still considered revision 7. I also have a "Fresh Start" option in the works. You will notice it in Settings, but the buttons don't do anything yet. That's to come, with quite a few other improvements.
Garnet
Profile Blog Joined February 2006
Vietnam9030 Posts
September 13 2014 04:26 GMT
#19
How can I display my APM during an SC2 game? I use fullscreen, should I use windowed modes?
Friedobert
Profile Joined July 2014
Germany38 Posts
September 13 2014 06:52 GMT
#20
@ garnet, setting it to windowed mode (fullscreen) in the options tab (of sc2) does it for me.
JinAir - NaNiwa - IdrA - Maru
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 13 2014 09:57 GMT
#21
On September 13 2014 13:26 Garnet wrote:
How can I display my APM during an SC2 game? I use fullscreen, should I use windowed modes?


Only windowed mode will work. As far as I know, the only way I can do a HUD over full screen games is by using DirectX. But I would think windowed mode is practically as good as full screen. I'll add a note in there to alert people it only works in windowed modes.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-15 11:03:33
September 15 2014 11:03 GMT
#22
Sickness, work, and school have been slowing me down. Still working on the program.
Garnet
Profile Blog Joined February 2006
Vietnam9030 Posts
September 19 2014 07:11 GMT
#23
my PC is not good enough to play in Windowed mode though. Would take quite a hit on FPS.
Fuchsteufelswild
Profile Joined October 2009
Australia2028 Posts
Last Edited: 2014-10-17 17:46:08
September 19 2014 19:29 GMT
#24
On September 12 2014 12:38 CalmestRoadkill wrote:Yes it definitely is the program. While active, it is doing key/mouse hooks. When it detects keys A through Z (and only keys A through Z), it captures it and then resends it. If any other keys are hit, it ignores them. So combination keys don't work. I had designed this for SC2, but realized it will mostly work with other games. Let me know what combination keys don't work (like it's CTRL + H to activate a hot key), and I'll make it all work.

Yeah, with a little testing, i realise you mean it only disables their function if it is trying to monitor them for apm and if it does, they will add to the apm counter...but the hotkey likely won't work! >_<

Currently, only the A-Z keys and left and right mouse buttons trigger the APM counter but they don't actually trigger the functions those buttons are meant for.
Well, i'd need A-Z and Ctrl+ A-Z (i use many, not all of them, but ideally it would have all so that I may remap my hotkeys a little if I change my mind about which letter is better for whatever building or unit), as well as the following list:

1-0 and Ctrl+1-0 surprisingly don't work (they're in SC so i'm surprised they weren't be programmed to work already :p They need to still function but trigger APM once)
Spacebar
Backspace
Delete key
Home and End
, (on the same key but need to be scripted separately, right?)
. (on the same key but need to be scripted separately, right?)
/ (on the same key but need to be scripted separately, right?)
[ (on the same key but need to be scripted separately, right?)
] (on the same key but need to be scripted separately, right?)
\ (on the same key but need to be scripted separately, right?)
Shift+G combination
Alt+F, Alt+T, Alt+D, Alt+C, Alt+E, Alt+S, Alt+G, Alt+O, Alt+N, Alt+R
Up, down, left, right need to work, they scroll the screen so typically these sorts of things wouldn't trigger but if mouse clicks count, frankly these should too as screen movement is just as indicative of APM as unit selections and things like that.

I can't help but feel there's got to be a better way than manually coding each button you want to trigger and I'm not sure how you'd get the hotkeys to still work if your urrent method isn't working.

I noticed that if you hold the button (including moues buttons), it actually triggers continuously, which is quite bad for judging real APM really. In SC2, you need that to trigger constantly for zerg but don't really want the APM to trigger more than once or say once per 0.2 seconds or so.
For Age of Empires II, you don't want APM being misrepresented just by holding something too long. Really just one APM trigger (waiting for the key's release rather than trigger) is enough until it is pressed down again.

I noticed that for whatever reason, some letters triggers as if Shift is held down even though it's not. Have you made some hotkeys trigger on Shift being pressed without making sure that it checks to see when it is released? The only reason this shift+letter function works (it queues 5 of the unit) is because the shift+letter functions don't trigger APM.
We obviously need functions to only send Shift if shift is being held down.

Sometimes when trying to test this, I found hotkeys just stopped being monitored in the live APM.
Does it only last a few minutes or is something else going on?

Could you clarify the following?
All three normal mouse buttons (scroll wheel button being the third) as well as the scroll wheel - do they trigger APM without being prevented from working while your script is active?
Wheel up and wheel down, need to trigger once per scroll; this would only lead to artificially increased APM if people are doing it for spam, but people can do that by hitting a button a lot anyway so no worries there.
ZerO - FantaSy - Calm - Nal_rA - Jaedong - NaDa - EffOrt - Bisu - by.hero - StarDust - Welmu - Nerchio - Supernova - Solar - Squirtle - LosirA - Grubby - IntoTheRainbow - Golden... ~~~ Incredible Miracle and Woongjin Stars 화이팅!
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 24 2014 04:11 GMT
#25
On September 19 2014 16:11 Garnet wrote:
my PC is not good enough to play in Windowed mode though. Would take quite a hit on FPS.


What do you mean? I can't imagine full screen being better :p Just lower the resolution. Full screen is simply stretch to fit.
J. Corsair
Profile Joined June 2014
United States470 Posts
September 24 2014 04:23 GMT
#26
very cool man
“...it is human nature, I suppose, to be futile and ridiculous.” - Scaramouche
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-24 08:28:23
September 24 2014 04:43 GMT
#27
On September 20 2014 04:29 Fuchsteufelswild wrote:
Show nested quote +
On September 12 2014 12:38 CalmestRoadkill wrote:Yes it definitely is the program. While active, it is doing key/mouse hooks. When it detects keys A through Z (and only keys A through Z), it captures it and then resends it. If any other keys are hit, it ignores them. So combination keys don't work. I had designed this for SC2, but realized it will mostly work with other games. Let me know what combination keys don't work (like it's CTRL + H to activate a hot key), and I'll make it all work.

Yeah, with a little testing, i realise you mean it only disables their function if it is trying to monitor them for apm and if it does, they will add to the apm counter...but the hotkey likely won't work! >_<

Currently, only the A-Z keys and left and right mouse buttons trigger the APM counter but they don't actually trigger the functions those buttons are meant for.
Well, i'd need A-Z and Ctrl+ A-Z (i use many, not all of them, but ideally it would have all so that I may remap my hotkeys a little if I change my mind about which letter is better for whatever building or unit), as well as the following list:

Most of the development I worked with one player who was guiding me. I guess he didn't use hotkeys, so he didn't request anything outside of A through Z. (I believe I added left and right mouse at the request of someone else.) This is why I decided to ask other people as I knew people used more keys than just A through Z.

1-0 and Ctrl+1-0 surprisingly don't work (they're in SC so i'm surprised they weren't be programmed to work already :p They need to still function but trigger APM once)
Spacebar
Backspace
Delete key
Home and End
, (on the same key but need to be scripted separately, right?)
. (on the same key but need to be scripted separately, right?)
/ (on the same key but need to be scripted separately, right?)
[ (on the same key but need to be scripted separately, right?)
] (on the same key but need to be scripted separately, right?)
(on the same key but need to be scripted separately, right?)

Yes, they all need to be entered in separately.

Shift+G combination
Alt+F, Alt+T, Alt+D, Alt+C, Alt+E, Alt+S, Alt+G, Alt+O, Alt+N, Alt+R
Up, down, left, right need to work, they scroll the screen so typically these sorts of things wouldn't trigger but if mouse clicks count, frankly these should too as screen movement is just as indicative of APM as unit selections and things like that.

Arrow keys don't count because you're not really doing anything. All you're doing is surveying the map. Mouse clicks count because you can select units, move units, build structures, and so forth. Unless arrow keys are capable of more than map surveying, I'll keep it as is. Feel free to challenge this. Better yet, if you can get someone in here that's knowledgeable in how APM is supposed to be calculated, that'd be cool.

Hopefully tonight I'll be able to address most of these issues. I haven't done anything for the last couple weeks due to work and school.

I'm not aware of any better method. I don't have access to the game code, so I have use hooks. Current APM monitors for SC2 use the registry information. SC2 outputs APM information, so it does all the calculating and detecting. All the program has to do is display it. I have to do everything the game would do; however, I have no access so it's difficult.

I can't help but feel there's got to be a better way than manually coding each button you want to trigger and I'm not sure how you'd get the hotkeys to still work if your urrent method isn't working.

I noticed that if you hold the button (including moues buttons), it actually triggers continuously, which is quite bad for judging real APM really. In SC2, you need that to trigger constantly for zerg but don't really want the APM to trigger more than once or say once per 0.2 seconds or so.
For Age of Empires II, you don't want APM being misrepresented just by holding something too long. Really just one APM trigger (waiting for the key's release rather than trigger) is enough until it is pressed down again.

I was hoping most players wouldn't have that issue. I mean obviously you wouldn't want to misrepresent your own APM. However, if throughout the game it's just genuinely difficult to not spam keys, then I understand. I don't know how most of these RTS games play out. I already have a sound alert for key spamming. However, I can set an option so where it prevents excessive key presses. This option would allow you to set the max number of the same key to be pressed within a certain time frame. (e.g. 5 keys within 3 seconds.)


I noticed that for whatever reason, some letters triggers as if Shift is held down even though it's not. Have you made some hotkeys trigger on Shift being pressed without making sure that it checks to see when it is released? The only reason this shift+letter function works (it queues 5 of the unit) is because the shift+letter functions don't trigger APM.
We obviously need functions to only send Shift if shift is being held down.

Not too sure on how the Shift key works. It was just another key that I hadn't implemented yet (although I didn't see a use for it).

Sometimes when trying to test this, I found hotkeys just stopped being monitored in the live APM.
Does it only last a few minutes or is something else going on?

Are you referring to testing the Shift key?

Could you clarify the following?
All three normal mouse buttons (scroll wheel button being the third) as well as the scroll wheel - do they trigger APM without being prevented from working while your script is active?
Wheel up and wheel down, need to trigger once per scroll; this would only lead to artificially increased APM if people are doing it for spam, but people can do that by hitting a button a lot anyway so no worries there.

Left and right mouse are triggered, but only if you allow them to be. There's an option in Settings called "Include mouse Input in report". Anything that I have included will work normally. (This would be keys A through Z, left and right mouse click.) Mouse scroll does not influence APM, and I don't see why it would.

And yes, left and right mouse click work, regardless if "Include Mouse input in Report" is selected. It seems that certain keys are prevented from working. What I mean, for example, is that I do not have keys 0 through 9 included. Yet, they work just fine while the program is active.

[/b]
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 24 2014 05:30 GMT
#28
Considering all the other things that were slowing me down, add my computer to the list. I definitely need a better one, as this one is too slow and too unreliable.

In other news, the HUD can now be set to be transparent. The only "downside" is that you have to click on the text to drag/activate the menu, as the background is transparent.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-09-26 06:15:47
September 24 2014 06:30 GMT
#29
Revision 8 is now available. I still have more to add to revision 8, however. I wanted to release it to show that I'm still working on the project.

The HUD updates in real time (every second), and color/sound alerts work a lot better. You can now set the sound alerts to play as often as you'd like. You can also enable both sound and color alerts at the same time now (you couldn't do that before, for some reason).

The big thing I want to add is hot keys (or combination keys). It looks like it'll take more effort than I thought, so I'm not sure when I'll get it done (soon I hope).

I discovered MSDN had the wrong hex codes for the modifier key, which is why I couldn't get combination keys working. The RegisterHotKey function is intended to be used with 2 keys, which made me assume it'd be easy (since I just left the fsmodifier argument as "Nothing"). I assume I'll be able to pull it off after all!
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
September 28 2014 06:05 GMT
#30
On September 10 2014 22:06 WinterStarcraft wrote:
Thank you, been looking for one to replace the mildly disfunctional one on scelight


Thanks man, means a lot. I never saw this post until now.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-02 06:19:32
October 01 2014 09:44 GMT
#31
Alright guys I updated the source and program (still revision 8). You can use ALT and CTRL with keys A through Z. I've been trying to get Shift to work, but it's not working right.

If I use my existing method of converting the ID numbers to ASCII (to avoid having to write 25 If/Else or Case Selects)...

It triggers multiple Shift combinations (usually 3).

If I don't use the ASCII method...

For example, you hit "Shift + A". It will trigger Shift + A AND the A key.

No idea what's happening but I'll keep trying. Soon, I will add keys 0 through 9. I also want to add pausing the monitor, as well as function keys that can start, pause, and stop the monitor (without having to pull up the program and click the appropriate button). That way, when you're in a game, you can more easily run the program.

Edit: There may be a solution after all, and so far it seems to be working (referring to Shift combinations)!

Edit 2: Shift combinations work successfully (not released yet).
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-05 00:23:10
October 05 2014 00:22 GMT
#32
Source is updated (the EXE link isn't updated; however, you can find the EXE in the source's debug folder if you really want to run the program lol), but compile at your own risk. I'm currently having issues registering keys 0 through 9. 0 through 9 simply does not want to work. I tested it in a new project, on its own, without any ASCII translation and it still didn't work. It was triggering other number keys, and would send the program into an infinite loop. I assume RegisterHotKey has a bug or something. The only idea I have left is to unregister all hotkeys except the one pressed, and then re-register them (explicitly defining each key, line by line (without using loops or ASCII translation)). It'll be a pain, but it should work.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-13 15:09:38
October 10 2014 08:03 GMT
#33
EDIT: I figured it out. Number keys are WORKING! Instead of sending the normal keys 0 through 9, I sent the ones on the keypad. It didn't send the program through an endless loop. I'm hoping this will still work on computers (like many laptops) that don't have those keys. (I don't see why it'll be an issue.) Of course, you use the normal number keys as always. If you use the keypad, I'll have to add that in (so the keypad sends the normal keys).

Edit 2: Shift, CTRL, and ALT, can be combined with 0 through 9! Will be uploading shortly.
guitarizt
Profile Blog Joined March 2009
United States1492 Posts
October 16 2014 01:00 GMT
#34
I'm using the latest version as of today, but I have a problem where it activates my caps lock key when I type. I'm not able to use it while playing because my building hotkeys don't work when I use it.
“There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.” - Hemingway
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-16 17:20:30
October 16 2014 17:19 GMT
#35
Latest EXE version is a few weeks old. I'll try to push out a working build today.

As for everything being caps, it will still do that. However, I don't think it should affect anything. In the current build I have, all combination keys will work (Shift, Alt, and Ctrl, with 0 through 9 and with A through Z).
Solus420
Profile Joined April 2013
United States53 Posts
October 17 2014 03:15 GMT
#36
Added to the Ultimate Starcraft Directory - Programs Section

http://www.teamliquid.net/forum/sc2-strategy/468404-the-ultimate-starcraft-directory
http://www.reddit.com/r/starcraft/comments/2i9clc/the_ultimate_starcraft_directory/
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-17 06:04:14
October 17 2014 04:01 GMT
#37
Thanks dude!

Program is now a ClickOnce application. It will install like any other program. I've done this so deploying and updating is easier.

On October 17 2014 12:15 Solus420 wrote:
Added to the Ultimate Starcraft Directory - Programs Section

http://www.teamliquid.net/forum/sc2-strategy/468404-the-ultimate-starcraft-directory
guitarizt
Profile Blog Joined March 2009
United States1492 Posts
October 17 2014 19:20 GMT
#38
On October 17 2014 02:19 CalmestRoadkill wrote:
Latest EXE version is a few weeks old. I'll try to push out a working build today.

As for everything being caps, it will still do that. However, I don't think it should affect anything. In the current build I have, all combination keys will work (Shift, Alt, and Ctrl, with 0 through 9 and with A through Z).


Thanks for the program. It's the only thing out like this. The only thing is I'll have to wait until the caps issue is fixed because I'm using it for age of kings the conquerors on voobly and I frequently chat with people in game.
“There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.” - Hemingway
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-17 19:53:08
October 17 2014 19:50 GMT
#39
On October 18 2014 04:20 guitarizt wrote:
Show nested quote +
On October 17 2014 02:19 CalmestRoadkill wrote:
Latest EXE version is a few weeks old. I'll try to push out a working build today.

As for everything being caps, it will still do that. However, I don't think it should affect anything. In the current build I have, all combination keys will work (Shift, Alt, and Ctrl, with 0 through 9 and with A through Z).


Thanks for the program. It's the only thing out like this. The only thing is I'll have to wait until the caps issue is fixed because I'm using it for age of kings the conquerors on voobly and I frequently chat with people in game.


Alright. Everything else works properly? If I can fix the caps lock issue, all text will be in lower case. I can't guarantee being able to type like normal (where you can use caps lock and/or the Shift key). However, I don't think being grammatically correct is a big deal while playing.
guitarizt
Profile Blog Joined March 2009
United States1492 Posts
October 18 2014 05:13 GMT
#40
On October 18 2014 04:50 CalmestRoadkill wrote:
Show nested quote +
On October 18 2014 04:20 guitarizt wrote:
On October 17 2014 02:19 CalmestRoadkill wrote:
Latest EXE version is a few weeks old. I'll try to push out a working build today.

As for everything being caps, it will still do that. However, I don't think it should affect anything. In the current build I have, all combination keys will work (Shift, Alt, and Ctrl, with 0 through 9 and with A through Z).


Thanks for the program. It's the only thing out like this. The only thing is I'll have to wait until the caps issue is fixed because I'm using it for age of kings the conquerors on voobly and I frequently chat with people in game.


Alright. Everything else works properly? If I can fix the caps lock issue, all text will be in lower case. I can't guarantee being able to type like normal (where you can use caps lock and/or the Shift key). However, I don't think being grammatically correct is a big deal while playing.


None of my hotkeys work in game still. Even just trying to build stuff or patrol units. I did fresh restart in the program and ran everything stock. I was able to hit caps lock a couple of times to get text in all lowercase which is nice.
“There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.” - Hemingway
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-18 18:14:04
October 18 2014 11:42 GMT
#41
So after a fresh start everything worked? Which hotkeys weren't working? (e.g. Shift + or Alt +, etc.)

Edit: I tested it on Warcraft 3 RoC, and discovered control groups weren't functioning (e.g. CTRL + 0). After some investigating, I figured it out and control groups are working. I also fixed an issue where pause wasn't working (if you paused, stopped, then started, the program wouldn't work as expected).

Keys like ~, TAB, and the Spacebar aren't registered keys. I'll try to add them at some point. Mouse and keyboard combinations (e.g. Shift + Left Click) also will not work. I'm not sure how I'll get that to work.
guitarizt
Profile Blog Joined March 2009
United States1492 Posts
October 18 2014 21:36 GMT
#42
On October 18 2014 20:42 CalmestRoadkill wrote:
So after a fresh start everything worked? Which hotkeys weren't working? (e.g. Shift + or Alt +, etc.)

Edit: I tested it on Warcraft 3 RoC, and discovered control groups weren't functioning (e.g. CTRL + 0). After some investigating, I figured it out and control groups are working. I also fixed an issue where pause wasn't working (if you paused, stopped, then started, the program wouldn't work as expected).

Keys like ~, TAB, and the Spacebar aren't registered keys. I'll try to add them at some point. Mouse and keyboard combinations (e.g. Shift + Left Click) also will not work. I'm not sure how I'll get that to work.


I'm using age of kings. None of the hotkeys work. Like just hitting "h" for town center doesn't work or "b" to open the build menu.
“There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.” - Hemingway
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
Last Edited: 2014-10-20 00:49:53
October 19 2014 05:01 GMT
#43
I'll get it and try it out.

Edit: Just tested WC3: RoC, and it worked fine. Are you using 1.1.0.9? (latest as of now)
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
October 24 2014 05:03 GMT
#44
Just discovered GetASyncKeyState can do much of what RegisterHotKey does. In other words, I found a way to combine the keyboard with the mouse (so Shift + Left Click). I'm finding it a bit touchy, but it shouldn't be any different than holding down a single key.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
November 02 2014 09:28 GMT
#45
Still developing, slowly. Been very busy lately.
CalmestRoadkill
Profile Joined September 2014
United States28 Posts
November 15 2015 00:20 GMT
#46
StarCounter Page

I'd update the original thread, but I can't find any Edit button. New download link as original thread link has been down for some time. I still host the application in case anyone still cares about it. I'd be happy to keep developing if I got even a small following for this project.
Jubinell
Profile Blog Joined September 2009
333 Posts
November 08 2018 04:32 GMT
#47
Sorry for the bump but is this tool still under-development? I would love to get an APM Monitor for Windows (all games in general).
Normal
Please log in or register to reply.
Live Events Refresh
Replay Cast
23:00
Crank Gathers S2: Playoffs D2
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SortOf 62
StarCraft: Brood War
PianO 289
yabsab 71
Bale 40
scan(afreeca) 31
Dota 2
XaKoH 571
NeuroSwarm104
League of Legends
JimRising 796
Reynor56
Counter-Strike
Coldzera 107
Super Smash Bros
hungrybox1227
C9.Mang0251
Mew2King13
Other Games
summit1g15283
Nina51
Organizations
Other Games
gamesdonequick922
StarCraft: Brood War
UltimateBattle 18
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 14 non-featured ]
StarCraft 2
• Berry_CruncH257
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Rush1166
• Lourlo888
• HappyZerGling66
Upcoming Events
The PondCast
2h 38m
OSC
5h 38m
Harstem vs SKillous
Gerald vs Spirit
Krystianer vs TriGGeR
Cham vs Ryung
CrankTV Team League
6h 38m
Team Liquid vs Team Falcon
Replay Cast
1d 3h
WardiTV Invitational
1d 5h
ByuN vs Spirit
herO vs Solar
MaNa vs Gerald
Rogue vs GuMiho
Epic.LAN
1d 5h
CrankTV Team League
1d 6h
BASILISK vs TBD
Replay Cast
2 days
Epic.LAN
2 days
BSL Team A[vengers]
2 days
Dewalt vs Shine
UltrA vs ZeLoT
[ Show More ]
BSL 21
2 days
Sparkling Tuna Cup
3 days
BSL Team A[vengers]
3 days
Cross vs Motive
Sziky vs HiyA
BSL 21
3 days
Wardi Open
4 days
Monday Night Weeklies
4 days
Liquipedia Results

Completed

CSL 2025 AUTUMN (S18)
WardiTV TLMC #15
Eternal Conflict S1

Ongoing

BSL 21 Points
BSL 21 Team A
C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
SOOP Univ League 2025
CranK Gathers Season 2: SC II Pro Teams
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025

Upcoming

SC4ALL: Brood War
YSL S2
BSL Season 21
SLON Tour Season 2
BSL 21 Non-Korean Championship
RSL Offline Finals
WardiTV 2025
RSL Revival: Season 3
Stellar Fest
SC4ALL: StarCraft II
META Madness #9
BLAST Bounty Winter 2026: Closed Qualifier
eXTREMESLAND 2025
ESL Impact League Season 8
SL Budapest Major 2025
BLAST Rivals Fall 2025
IEM Chengdu 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.