Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #136  
Old 02-10-2009, 05:06 PM
leslamarch
Discordant
 
Join Date: Sep 2006
Location: Green Bay, WI
Posts: 436
Default

Quick question guys,
for the most part is this already enabled? I was going to check this out when I have time, Just was wondering if this is set to go with normal server compile or is something else needed to be defined before compile?
Reply With Quote
  #137  
Old 02-10-2009, 07:07 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

It is disabled on the SVN revisions for now by default. Mainly because we don't want everyone to try using it on public servers and causing zone crashes due to any unknown bugs. Once it is fairly bug free and complete, it will probably be enabled by default.

For now, you just have to edit the /common/patches/patches.cpp and uncomment the #define line at the top to enable SoF. Then compile and it should be enabled.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #138  
Old 02-10-2009, 07:48 PM
leslamarch
Discordant
 
Join Date: Sep 2006
Location: Green Bay, WI
Posts: 436
Default

Quote:
Originally Posted by trevius View Post
It is disabled on the SVN revisions for now by default. Mainly because we don't want everyone to try using it on public servers and causing zone crashes due to any unknown bugs. Once it is fairly bug free and complete, it will probably be enabled by default.

For now, you just have to edit the /common/patches/patches.cpp and uncomment the #define line at the top to enable SoF. Then compile and it should be enabled.
Thanks trevius,
I hope i get time to mess with this coming up here, Your work on this has been amazing
Reply With Quote
  #139  
Old 02-10-2009, 09:57 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I'm going to remove the define next time I commit fyi, it's pretty pointless to have it in there. Any server op that finds a patch causes a problem or doesn't want a certain client to be able to connect can just remove the patch register line.

And in the same sense if you want it off by default just comment out the code that registers it.

btw I'm very lost on items atm (I really wish I had a packet log from this client).
Reply With Quote
  #140  
Old 02-10-2009, 11:24 PM
Andrew80k
Dragon
 
Join Date: Feb 2007
Posts: 659
Default

Quote:
Originally Posted by KLS View Post

btw I'm very lost on items atm (I really wish I had a packet log from this client).
What do you need for a dump? I got my client today so could provide you with something in the next day or so.
Reply With Quote
  #141  
Old 02-10-2009, 11:27 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Quote:
Originally Posted by KLS View Post
(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 View Post
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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 02-11-2009 at 07:30 AM..
Reply With Quote
  #142  
Old 02-10-2009, 11:55 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

So far I've gotten: Client crash (but I figured it out), then created an empty item then moved some fields around and the item disappeared completely!
Reply With Quote
  #143  
Old 02-11-2009, 12:46 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Quote:
Originally Posted by KLS View Post
So far I've gotten: Client crash (but I figured it out), then created an empty item then moved some fields around and the item disappeared completely!
Ahh, sweet! At least it sounds like you are making some progress. If you can get an empty item, the rest shouldn't be too bad to work out. I think the only other hard part might be getting augs/bags working properly. But, then again, an aug/bag should just be items within items. Once the other fields are correct, it should just be figuring out where the item within an item should be placed.

Any way you could update the SVN with the version you had with an empty item in it? I am guessing that means you actually saw an icon for the item? If you made it that far, I am pretty sure I could get most of the rest of it worked out in a night or 2. As long as you leave the encode on the clientinventory to send a 0 size packet, then it shouldn't effect anyone who is just trying to log into SoF normally without items. I can just comment that part out so it actually tries to load items while I work on it.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #144  
Old 02-11-2009, 01:40 AM
Andrew80k
Dragon
 
Join Date: Feb 2007
Posts: 659
Default

Ahhh, I see. That's tough sledding uphill both ways.
Reply With Quote
  #145  
Old 02-11-2009, 02:08 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I've got this now:


I've purposely filled it with strings lacking null terminators to try to find the name area, and succeeded... sorta I still gotta nail down which one it is but it's a start.

Anyone wants to inform me what that green background means I'd greatly appreciate it. I've obviously got slot correct, but the rest of the header seems to be hit and miss. I have a feeling it's very different from the live packet you linked.
Reply With Quote
  #146  
Old 02-11-2009, 02:23 AM
jenco420
Banned
 
Join Date: Jan 2006
Location: /dev/null
Posts: 99
Default

If i remember correctly it has something to do with evolving items.
Reply With Quote
  #147  
Old 02-11-2009, 03:52 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I would look at how the Titanium items headers are and compare that with the live one I posted. I imagine it is somewhere in between. If you have the slot ID right, then it should just mean that you have to add an int 32 or int16 extra into the header, so it doesn't pick up part of the header where it thinks name should begin. I don't know where that * is coming from, maybe you are sending the number 42 as an int8 which as a string gets converted to a *?

Oh yeah, and before someone tries it and can't figure out what happened, I wanted to mention that right now, you need to keep your character level at level 75 or less when using SoF. Anything over 75 (via #level) will result in setting your character's hps to 5 for some reason, even though everything else like skills and others seem to be ok. Then, if you try zoning at any level over 75, it seems to crash the client every time right after the zone loads. I think it is actually crashing when the spawns are sent, so it is probably an issue with the spawn struct that is causing it. I really hope that there isn't a restriction on the client that is causing the level 75+ issue. The actual eqgame.exe was created before SoF was released and was ran on Live when the max level was still 75. But since one of the key features of SoF was a max level of 80, I am betting that it isn't a restriction of the client, and instead, an issue with a struct that can be fixed. Maybe there is just a new field that needs to be set to allow a player to exceed level 75. Though, I would think at least with GM mode on, it should work ok, but it doesn't. I am sure we can figure it out at some point.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #148  
Old 02-11-2009, 06:06 AM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

I have some live packet traces from July 2008 when I was working on the Pet Buff window. Maybe they will have some Item packets that are closer to the SoF structs than the current live packets. I'll upload them when I get home tonight in case they are of any use.

EDIT: Here: http://www.rama.demon.co.uk/EQLive-Jul24-2008.rar

Inventory begins at:
Code:
Jul 24 2008 14:16:41:004 [Decoded] [Server->Client] [Size: 142031]
[OPCode: 0x1899]

Last edited by Derision; 02-11-2009 at 09:18 PM..
Reply With Quote
  #149  
Old 02-11-2009, 02:35 PM
Andrew80k
Dragon
 
Join Date: Feb 2007
Posts: 659
Default

Quote:
Originally Posted by KLS View Post
I've got this now:

Anyone wants to inform me what that green background means I'd greatly appreciate it. I've obviously got slot correct, but the rest of the header seems to be hit and miss. I have a feeling it's very different from the live packet you linked.
The green background was used for 2 things in EQ(at least) that I can think of. The first and the one you are interested in, is to indicate an evolving item. Matters not if it was fully evolved only that it does evolve. The second was in the bazaar in trader mode. Once an item was set with a price and added to the "selling" list the background turned green.

The "*" in the name indicated that is was a starting item given to you or something like that. The initial weapon, and backpack in the tutorial were like that and the burlap shirt given by the Guildmaster when you turned in your note all had the asterisk. There might be more, I think it had to do with making them not sellable to merchants, but I'm not 100% sure of that.
Reply With Quote
  #150  
Old 02-11-2009, 03:42 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Yeah the * was just part of the string I was brute forcing. I'm pretty sure something in the header just wasn't getting set right. As I didn't actually change anything but the values in the header to get the name to show up... and no matter what I change icon seems to stay the same so I don't think I'm close to it yet.

And incidentally I found a packet log from a little after sof, but not same client version. It's pretty similar to derisions and both match up with my expectations of where things will be so we'll see.

Last edited by KLS; 02-12-2009 at 12:04 AM..
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 05:47 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3