After hitting the roadblock of being unable to implement cURL, or other request libraries, and having to find a workaround, I thought of an okay-ish solution.
Basically, we can't show a terminal after each lap time, so instead we could keep a log of all of the lap times, and then during the Post Game Carnage Report, or next time the main screen of the game is viewer, fetch the log of lap times, and make a bulk submission of lap times.
With this solution, I had to add an additional field to the json of "timestamp", as I am currently relying on the time of the request as the lap time, which won't work in the instance of the bulk request.
I managed to get this working in about 3 hours, and we are now able to bulk submit times. I have not yet written the API endpoint for this, so currently the requests send to Mockaroo.
During this testing, I found a new bug. The memory address I use to get the player's CD Key Hash seems to sometimes be empty. It will be there at one point, and then the next point it will be empty. I am using the 0x006B7FBD address, though maybe this isn't the best address to use, maybe there is a different one that I have not yet found?
The solution for this one is to switch from hashed cd keys, to device uuids which I can fetch using io.popen, and running the wmic csproduct get uuid
I have now committed these changed up to the Git repo.
The next step I want to do it to refactor the web server to use Laravel 11, as the current integration is quite old. This would mean I can now use Livewire for the UI components, and migrate from using Bootstrap to Tailwind for styling.
This would also include rebuilding the APIs, and user management system, as this is quite buggy at the moment.