View Single Post
  #154  
Old 02-12-2009, 01:50 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I just noticed that your items are showing up in the old item UI window like Titanium. I prefer the old one (Titanium version) to the new window for item stats on Live. I thought it was already changed in SoF though. Or, is there an option somewhere that lets you decide which one to use? I know I saw a screenshot of an item from SoF when it was being beta tested, and it had the new item window. Maybe they still used the old one when that particular build was made?

Also, I looked at the SendAA packets from Derision's ShowEQ log and it looks like it lines up the same as EQLive does now. Same size and layout of the structure as far as I can tell. Here is an example of one of those packets without any extra effects on it:

Code:
Jul 24 2008 14:16:39:296 [Decoded] [Server->Client] [Size: 104]
[OPCode: 0x2c77]
000 | ba 00 00 00 01 ba 00 00 00 ba 00 00 00 ba 00 00  | ................ 
016 | 00 ba 00 00 00 3b 00 00 00 03 00 00 00 47 00 00  | .....;.......G.. 
032 | 00 01 00 00 00 00 00 00 00 00 00 00 00 03 00 00  | ................ 
048 | 00 d4 0a 00 00 07 00 00 00 07 00 00 00 00 08 00  | ................ 
064 | 00 01 00 00 00 ff ff ff ff ff ff ff ff 03 00 00  | ................ 
080 | 00 00 00 00 00 00 00 00 03 00 00 00 ff ff ff ff  | ................ 
096 | 00 00 00 00 00 00 00 00                          | ........
One thing to help alot with items is the 13th floor:
http://eqitems.13th-floor.org/

Just search for the item you are trying to break down and then look at the raw data. It should help a ton when lining up the fields.

I also use HexVis alot or Windows Calculator for converting the hex easily to see if it matches 13th floor.

Code:
3 bytes of 0x00 usually sometimes the last byte is 0x01, all bags seem to have the last byte as 0x01
That last uint8 is Item Type. It is 00 for normal items, 01 for bags and should be 02 for books. This should be done on the Serialization because I think it tells the client how treat the item when you right click it. Since you can't read books or use clickies if an item is inside a bag, it should be because the item type isn't sent when they are inside a bag, so the client knows only to show the item stats.


Just from looking at the log Derision posted, here is my best guess for item Serialization (pretty much matches with what KLS has so far):

Code:
35 00 00 00 - Not sure what this is.  Maybe a total items count?
//This field only got sent before the first item.  No other items have it.

01 00 00 00 uint32 stacksize;
00 00 00 00 uint32 unknown004;
1c 00 00 00 uint32 slot;
00 00 00 00 uint32 price;
01 00 00 00 uint32 merchcount;
00 00 00 00 uint32 unknown020;
1a b9 02 00 uint32 serialnumber;
00 00 00 00 uint32 instnodrop;
00 00 00 00 uint32 unknown032;
00 00 00 00 uint32 typepotion;
00 00 00 00 uint32 unknown040;
00 00 00 00 uint32 unknown044;
00 00 00 00 uint32 unknown048;
00 00 00 00 uint32 unknown052;
00 00 00 00 uint32 unknown056;
00 uint8 unknown060;
00 uint8 unknown061; 
01 uint8 itemtype; // this is a bag
Here is the best breakdown I can figure for the beginning of the Item Struct:
Code:
4a 6f 75 72 6e 65 79 6d 61 6e 27 73 20 42 6f 6f 74 73 00 | Journeyman's Boots - char Name
4a 6f 75 72 6e 65 79 6d 61 6e 27 73 20 42 6f 6f 74 73 00 | Journeyman's Boots - char Lore
49 54 36 33 00  | IT63 - char IDFile
fc 08 00 00 | 2300 - uint32 ID
19 | 2.5 - uint8 Weight
01 - uint8 NoRent
00 00 - uint16 NoDrop
01 - uint8 Size
00 00 08 00 | 524288 - uint32 Slots
00 00 00 00 - uint32 Price
fc 02 00 00 | 764 - uint32 Icon
01 - uint8 unknown0013
01 00 00 00 - uint32 unknown0014
00 - bool BenefitFlag
00 - bool	Tradeskills
00 - sint8	CR
00 - sint8	DR
00 - sint8	PR
00 - sint8	MR
00 - sint8	FR
00 - sint8	Corruption
00 - sint8	AStr
00 - sint8	ASta
00 - sint8	AAgi
00 - sint8	ADex
00 - sint8	ACha
00 - sint8	AInt
00 - sint8	AWis
00 00 00 00 - sint32	HP
00 00 00 00 - sint32	Mana
00 00 00 00 - uint32	Endur
01 00 00 00 - sint32	AC
00 00 00 00 - sint32	unknown0015
00 00 00 00 - sint32	unknown0016
00 00 00 00 - sint32	unknown0017
ff ff 00 00 - sint32	Classes
ff ff 00 00 - sint32	Races
00 00 00 00 - sint32	Deity
00 00 00 00 - sint32	SkillModValue
00 00 00 00 - uint32	unknown0038
ff ff ff ff - uint32	SkillModType
00 00 00 00 - uint32	BaneDmgRace
00 00 00 00 - uint32	BaneDmgBody
00 00 00 00 - uint32	BaneDmgRaceAmt
00 00 00 00 - sint32	BaneDmgAmt
01 00 00 00 - bool	Magic
00 00 00 00 - sint32	CastTime_
00 - uint8	ReqLevel
00 - uint8	RecLevel
00 - uint8	RecSkill
00 00 00 00 - uint32	BardType
00 00 00 00 - sint32	BardValue
00 - sint8	Light
00 - uint8	Delay
00 - uint8	ElemDmgType
00 00 00 00 - uint32	ElemDmgAmt
00 00 00 00 - uint32	Range
00 00 00 00 - uint32	Damage
00 00 00 ff - uint32	Color
0a - uint8	ItemType
01 00 00 00 - uint8	Material
00 00 00 00 - uint32	unknown0060
00 00 00 00 - uint8	unknown0061
00 00 c6 42 - uint32	SellRate
Most of the rest of it should line up with the structure breakdown I posted for EQLive items. I can work out the rest of it if needed. I will definitely check into these logs more later tonight.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote