Hey Howk I need your help. *turns on the Arhowk Signal* =)
Though yeah I really do need your help since not many people on hive has adventured into this area, its about locally creating items. I've run into quite a few problems however I think I know how to fix most of them by making a duplicate item at the exact same spot with no model and same abilities as the item for that one player. However there's one thing bugging me and its that people desync if you click on your item. Is there stuff you couldn't fix?
Edit: Would hiding and then unhiding work better? Like make the item for everyone then move an item there with no model for everyone else so pathing doesn't mess up? Also that one thing that bugged me is when a player selects the object/item.... Does it check pathing?
I've wanted to add ELO ranking myself, actually, but didn't have time.
I tried once to do it Nestharus' codeless save/load, but the syncing time was too long for some reason :O
If you're willing, then sure, it'd be great addition, but how did you think of doing it? With save codes?
int/uint matters when numbers are either negative (if you read them in as uint you will get a huge positive number instead), or very big (> 2^30, in which case if you read them as int, you will get negative numbers).
For MDX specifically it almost never matters, but the keyframes should use int because (while I am not sure if this is valid in-game) I have seen a model with negative frames.
Another place is references, e.g. material ID references, texture animation ID references, and so on. The format uses the number -1 to say the reference is NULL. If you read that as int, it's indeed -1, if you read that as uint, it's 2^31-1 (in my code I used the uint representation for some reason, which is why you can see the number 4294967295 everywhere).
All Blizzard games use small endian as far as I know, so that the least important byte is read first. Unless you are on a big endian machine (which is very unlikely), any sort of reading mechanism will give you the correct number.
Floats are saved as binary in the IEEE 754 format. Simply read the bytes into a float variable.
Assuming you have a C FILE* (or use some C++ equivalent):