Add the variable lastReadingPilotsWithNoGoodStanding to the app state.
Update lastReadingPilotsWithNoGoodStanding with every reading from the game client.
Compute pilotsWithNoGoodStanding: This is a bit different than the subsetOfUsersWithNoGoodStanding in the earlier version, because we now extract the pilot names from the UI elements. We need the names because we store them in the app state and also use them to display the new arrivals.
Use the previous state of lastReadingPilotsWithNoGoodStanding to compute the set of newPilotsWithNoGoodStanding.
Make the alarm/beep depend on newPilotsWithNoGoodStanding not being empty.
I modified my version to work with a “bad” list rather than a “good” list, as I was getting random beeps while jumping with the scout. This also eliminated the beep on startup caused by the character seeing itself in local.
Yes, you can use app 9b150ee958… with multiple clients. You would pick the game client by having the game client window in front at the time the app starts. When the app starts, it sees all game clients and selects the one that has the topmost window.
It then remembers that selection for the session, independent of later changes to the Z-order.
After the app has read from the game client at least once, you can leave the game client in the background.
It is not optimized for scenarios with less than one-gigabyte storage available. The botengine for Windows is a tool for developing bots. It is less optimized for only running a bot. Collecting training data is an essential part of development. Also, much of the storage use is for time travel functionality.
I get the need to store the data when running the bot, but if possible it would be more convenient if the files were deleted afterwards. The bot ended up taking over 45GB of data on my SSD. I am now manually deleting them after every run.