Quote:
Originally Posted by KLS
(I really wish I had a packet log from this client).
|
LOL, tell me about it! One single packet log from 9/7/07 that had a person loging in a single time would have made this project 100X easier lol.
The only thing that has gotten me this far is help from the ShowEQ source and EQLive logs from ShowEQ and the rest has been just "best guess" work. The good thing is that even if something is wrong in the packet, most structures will still let you get in game. Then, once in game, I just check what is wrong and mess with the structure until it looks correct.
For items, if you can get one single item to load at all, I think getting the rest of it working won't be too bad. I am more than happy to tweak the items serialization. I just need something to go by whether there is just an encode being done in the SoF.cpp, or a whole new way of handling those packets. Once I see how you are doing it, I think I should be able to figure it out from there.
Here is what I would do:
1. Start with a character with just 1 simple items (cloth cap maybe) on them.
2. Try logging into the game with the serialization you have setup for it (shouldn't need to be perfect just yet).
3. If the client hangs, crashes or disconnects on logging in, then check the EQ dbg.txt file in the everquest/logs directory.
4. It should say something about loading the item and then have a number next to it. That number should be the slot it thinks the item is in.
5. If that slot is wrong, then slot_id is in the wrong spot in the serialization. Try moving it until it picks up the correct slot ID that the item is in on the character.
6. If it reports the correct slot, then we know we should be good up to that point. I imagine once it does that, it may actually load all of the way in game.
7. I don't think there were any new fields added or changed since SoF was released, so the total packet size should be the same.
8. Try inspecting the item if you get this far, and if the name doesn't show up, then name probably needs to be moved a bit.
9. The item might not show up at all if the icon field is in the wrong place. The position of this field is probably one of the most important for starting work on this. Really, I can't imagine that the position of the icon field could vary more than 20 bytes from where it currently is in the structure I provided. If anything, it may be sooner. I doubt it would be later than where it is on EQLive.
10. Once Icon and Name are showing up properly, it should just be a matter of checking item stats and verifying that they all line up properly. Maybe some super item with a little of each stat could be set just to show what fields are what.
I am very willing to help with the guess work of lining up the structure. I only need a working system to use to send binary instead of a string. Once that system is in, feel free to update it on the SVN and just leave the code in that sends the inventory as a 0 sized packet until we get the inventory stuff worked out. The 0 sized inventory packet is forced in the SoF.cpp for now in the clientinventory encode I think. Otherwise it tries to send the string and crashes horribly.
Quote:
Originally Posted by Andrew80k
What do you need for a dump? I got my client today so could provide you with something in the next day or so.
|
She needs the item packets from the server to the client. Unfortunately, that is something we have to make and cannot collect with the emulator/SoF client together. I have provided an example from EQLive (and can send more examples if needed), and I imagine that SoF should be the same or very similar to EQLive considering no new fields have been added as far as I know. The only things I can think of that might have been added may be herioc resist stats, but I can't really verify that. I am just going by what I see on 13th floor and other info I find here and there.