Just an update about the project.
The Management server is coded. This handles all DB access. Currently supports SQLite and MySQL. can be installed as a service or run as a console application. I plan to add a management HTTP interface so the servers can be centrally managed by it.
The Game server now loads a players data via the management server. The garage packets were holding up most progress but have those figured out now so can now store upto 4 cars in the garage.
I started working on the shop packets which I have mostly worked out and lead me to working with the H.DAT, P.DAT and S.DAT files as these are used to populate the shop data and retrieve the car details. Which are indeed (as someone already mentioned) protected with Blowfish. So using the ASM code from the client I've been able to get the unprotected versions although I'll probably write code to load the protected files directly (although I may be lazy and just leave the function wrapped in __asm{}). The client gets the car details and shop prices from S.DAT and P.DAT. I'll load these on the server so that values sent from the client are ignored and the server will know if a user alters the packets. (I may even scrap these files from the client data and have the server send a custom packet with this data instead).
I'm working out the structure of the P/S.DAT files. S contains the car spec, model file name, P contains the parts available and price.
The H.DAT is simple. It's essentially the smut filter for when creating handles. Why this is local I don't know. As the server can also send a packet that informs the client the handle can't be used. This is a plain text file (once deciphered) with the strings seperated either by nulls or \r\n (no idea why they don't just stick with 1 terminator). Again I may just scrap this file and have the server handle this.
There was a bug with the client where if you didn't end the client by the GUI the main thread wouldn't end and would fill up the log files (my development client had over 30GB of logs). This was caused by the thread only checking for WM_QUIT and not WM_CLOSE as well. Although this still didn't end the thread in all cases. If you close the window some times the message would hang on WM_NCMBUTTONDOWN and fill up the logs. So fixed that also.
I'm hoping to have a test server up in a few weeks. It's taking a little longer than expected.
I still need to make the menus widescreen but focusing on the game itself at the moment.