View Single Post
  #130  
Old 02-06-2009, 03:16 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Wow, I am surprised that it actually posted that whole item packet. That was pretty big lol.

Anyway, here is how I am breaking down a single item from those examples:

Code:
01 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
01 00 00 00
00 00 00 00
25 53 4c 01
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00

49 6e 74 72 69 63 61 74 65 20 57 6f 6f 64 65 6e 20 46 69 67 75 72 69 6e 65 Name
00 unknown0000
49 6d 62 75 65 64 20 77 69 74 68 20 61 6e 20 61 64 76 65 6e 74 75 72 65 72 27 73 20 73 70 69 72 69 74 Lore
00 unknown0000
49 54 36 33 IDFile
00 unknown0000
bb 88 00 00 ID
01 Weight
01 NoRent
00 NoDrop
00 Size
00 Slots
01 00 00 00 00 00 00 00 Price
7f 03 00 00 Icon
01 unknown0000
00 00 00 00 unknown0000
00 BenefitFlag
00 Tradeskills
0a CR
0a DR
0a PR
0a MR
0a FR
00 Corruption
0f AStr
0f ASta
00 AAgi
0a ADex
00 ACha
00 AInt
0a AWis
5a 00 00 00 HP
50 00 00 00 Mana
00 00 00 00 Endur
14 00 00 00 AC
00 00 00 00 unknown0000
00 00 00 00 unknown0000
00 00 00 00 unknown0000
04 00 00 00 Classes
ff ff 00 00 Races
00 00 00 00 Deity
00 00 00 00 SkillModValue
00 00 00 00 unknown0000
ff ff ff ff SkillModType
00 00 00 00 BaneDmgRace
00 00 00 00 BaneDmgBody
00 00 00 00 BaneDmgRaceAmt
00 00 00 00 BaneDmgAmt
01 Magic
00 00 00 00 CastTime_
33 ReqLevel
00 RecLevel
00 RecSkill
00 00 00 00 BardType
00 00 00 00 BardValue
00 Light
00 Delay
00 00 00 00 ElemDmgType
00 00 00 00 ElemDmgAmt
00 00 00 00 Range
00 00 00 00 Damage
00 00 00 ff Color
0a 00 00 00 ItemType
00 00 00 00 Material
00 00 00 00 unknown0000
00 unknown0000
00 00 80 3f SellRate
00 00 00 00 CombatEffects
00 00 00 00 Shielding
00 00 00 00 StunResist
00 00 00 00 StrikeThrough
00 00 00 00 ExtraDmgSkill
00 00 00 00 ExtraDmgAmt
00 00 00 00 SpellShield
00 00 00 00 Avoidance
00 00 00 00 Accuracy
b9 88 00 00 CharmFileID
00 00 00 00 FactionMod1
00 00 00 00 FactionMod2
00 00 00 00 FactionMod3
00 00 00 00 FactionMod4
00 00 00 00 FactionAmt1
00 00 00 00 FactionAmt2
00 00 00 00 FactionAmt3
00 00 00 00 FactionAmt4
43 48 52 4d 50 6f 50 41 63 63 65 73 73 - CHRMPoPAccess CharmFile
00
00 00 00 00 AugType
00 00 AugRestrict
00 00 AugDistiller
07 AugSlotType
00 00 00 01 AugSlotUnk
00 AugSlotUnk2
00 augslot2type
00 00 00 01  augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01  augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01  augslot2visible
00 augslot2unk2
00 augslot2type
00 00 00 01  augslot2visible
00 augslot2unk2
00 00 00 00 PointType
00 00 00 00 LDoNTheme
00 00 00 00 LDoNPrice
46 00 00 00 UNK098
00 00 00 00 LDoNSold
00 BagType
00 BagSlots
00 BagSize
00 BagWR
00 Book
00 00 BookType
ff ff ff ff Filename
00 LoreGroup
00 ArtifactFlag
00 PendingLoreFlag
00 00 00 00 Favor
00 00 00 00 GuildFavor
00 FVNoDrop
00 DotShielding
00 00 00 00 Attack
00 00 00 00 Regen
00 00 00 00 ManaRegen
00 00 00 00 EnduranceRegen
00 Haste
00 DamageShield
ff ff ff ff unknown0000
00 unknown0000
00 Attuneable
00 NoPet
00 00 unknown0000 ???
00 PotionBelt
00 00 00 00 PotionBeltSlots
01 StackSize
00 NoTransfer
// Stackable
00 QuestItemFlag
00 unknown0000
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 unknown0000
00 00 00 00 Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 MaxCharges
00 00 00 00 CastTime
00 00 00 00 RecastDelay
00 00 00 00 RecastType
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 ProcRate
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
ff ff ff ff Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
ff ff ff ff Effect
00 00 00 00 Type
00 Level2
00 Level
00 00 00 00 unknown0001
00 00 00 00 unknown0002
00 00 00 00 unknown0003
00 00 00 00 unknown0004
00 00 00 00 unknown0005
00 effectname
00 00 00 00 unknown0007
00 purity
00 dsmitigation
00 herostr
00 heroint
00 herowis
00 heroagi
00 herodex
00 herosta
00 herocha
00 00 00 00 heropoison
00 00 00 00 heromagic
00 00 00 00 herofire
00 00 00 00 herodisease
00 00 00 00 herocold
00 00 00 00 herocorruption
00 00 00 00 healamt
00 00 00 00 spelldmg
00 00 00 00 clairvoyance
00 00 00 00 backstabdmg
00 00 00 00 evolvinglevel
00 00 00 00  MaxPower
00 00 00 00 Power
00 space for separating items with augs in them?
00 space for separating items
And that should all be fairly well explained in the packet structure I posted for it in this thread earlier here:

Code:
struct ItemSerialization_Struct {

/*0000*/	uint32 stacksize;
/*0004*/	uint32 unknown004; // 00 00 00 00
/*0008*/	uint32 price;
/*0012*/	uint32 slot;
/*0016*/	uint32 merchcount;
/*0020*/	uint32 unknown020; // 00 00 00 00
/*0024*/	sint32 serialnumber;
/*0028*/	uint32 instnodrop;
/*0032*/	uint32 typepotion;
/*0036*/	uint32 unknown036; // 00 00 00 00
/*0040*/	uint32 unknown040; // 00 00 00 00
/*0044*/	uint32 unknown044; // 00 00 00 00
/*0048*/	uint32 unknown048; // 00 00 00 00
/*0052*/	uint32 unknown052; // 00 00 00 00
/*0056*/	sint32 unknown056; // 00 00 00 01
/*0060*/	Item_Struct item; // Actual Item Struct
/*0000*/	uint8	unknown00x1;		// 00 Break for separating items within items?
/*0000*/	Item_Struct augments;		// Bag Slots/Augments within an item
/*0000*/	uint8	unknown00x2;		// 00 Break for separating items?	

}


/*
** Child struct of Item_Struct:
**	Effect data: Click, Proc, Focus, Worn, Scroll
**
*/
struct ItemClickEffect_Struct {
/*0000*/	sint32	Effect;
/*0004*/	uint32	Type;
/*0008*/	uint8	Level2;
/*0009*/	uint8	Level;
/*0010*/	sint32	MaxCharges;		// Max Charges of this effect
			union {
/*0014*/		uint16  Fulfilment;	// Food fulfilment (How long it lasts)
/*0016*/		sint16  CastTime;	// Cast Time for clicky effects, in milliseconds
			};
/*0018*/	uint32	RecastDelay;		// Delay on Recast in seconds
/*0022*/	uint32	RecastType;		// Recast Type from -1 to 18
/*0026*/	uint32	unknown0005;
/*0030*/	char	effectname[1];		//click name - Default is NULL
/*0031*/	uint32	unknown0007;
/*0035*/
};

struct ItemProcEffect_Struct {
/*0000*/	sint32	Effect;
/*0004*/	uint32	Type;
/*0008*/	uint8	Level2;
/*0009*/	uint8	Level;
/*0010*/	uint32	unknown0001;
/*0014*/	uint32	unknown0002;
/*0018*/	uint32	unknown0003;
/*0022*/	uint32	unknown0004;
/*0026*/	sint32	ProcRate;		// Proc Rate - 100 is default
/*0030*/	char	effectname[1];		//proc name - Default is NULL
/*0031*/	uint32	unknown0007;
/*0035*/
};

struct ItemWornFocusScrollEffect_Struct {
/*0000*/	sint32	Effect;
/*0004*/	uint32	Type;
/*0008*/	uint8	Level2;
/*0009*/	uint8	Level;
/*0010*/	uint32	unknown0001;
/*0014*/	uint32	unknown0002;
/*0018*/	uint32	unknown0003;
/*0022*/	uint32	unknown0004;
/*0026*/	uint32	unknown0005;
/*0030*/	char	effectname[1];		//focus, worn, or scroll name - Default is NULL
/*0031*/	uint32	unknown0007;
/*0035*/
};

struct ItemAugmentSlot_Struct {
/*0000*/	uint8	AugSlotType;		// LDoN: Augment Slot 1-5 Type
/*0001*/	sint32	AugSlotVisible;		// LDoN: Augment Slot 1-5 Unknown
/*0005*/	uint8	AugSlotUnk2;		// LDoN: Augment Slot 1-5 Unknown
/*0006*/
};	

#define MAX_AUGMENT_SLOTS 5

struct Item_Struct {
	// Non packet based field
	// uint8	MinStatus; 
	// bool	LoreFlag;		// This will be true if LoreGroup is non-zero
	// bool	SummonedFlag;		// Unused in SoF

	// Packet based fields
	// uint8	ItemClass;		// Item Type: 0=common, 1=container, 2=book
	char	Name[1];		// Variable Length String for Name
	uint8	unknown0001;		// 00 Break between Strings
	char	Lore[1];		// Variable Length String for Item Lore Text
	uint8	unknown0002;		// 00 Break between Strings
	char	IDFile[1];		// Variable Length String for Visible Model Number - IT63
	uint8	unknown0003;		// 00 Break between Strings
	uint32	ID;			// Unique ID (also PK for DB)
	uint8	Weight;			// Item weight * 10
	uint8	NoRent;			// No Rent: 0=norent, 255=not norent
	uint8	NoDrop;			// No Drop: 0=nodrop, 255=not nodrop
	uint8	Size;			// Size: 0=tiny, 1=small, 2=medium, 3=large, 4=giant
	uint8	Slots;			// Bitfield for which slots this item can be used in
	char	Price[8];		// Item cost (?) maybe int64?
	uint32	Icon;			// Icon Number
	uint8	unknown0013;		// UNK013 - 01
	uint32	unknown0014;		// UNK014 - One of these are probably int32	
	bool	BenefitFlag;		// Does this have a benefit flag?
	bool	Tradeskills;		// Is this a tradeskill item?
	sint8	CR;			// Save vs Cold
	sint8	DR;			// Save vs Disease
	sint8	PR;			// Save vs Poison
	sint8	MR;			// Save vs Magic
	sint8	FR;			// Save vs Fire
	sint8	Corruption;		// New Save vs Corruption ****
	sint8	AStr;			// Strength
	sint8	ASta;			// Stamina
	sint8	AAgi;			// Agility
	sint8	ADex;			// Dexterity
	sint8	ACha;			// Charisma
	sint8	AInt;			// Intelligence
	sint8	AWis;			// Wisdom
	sint32	HP;			// HP
	sint32	Mana;			// Mana	
	uint32	Endur;			// Endurance
	sint32	AC;			// AC	
	uint32	unknown0015;		// 
	uint32	unknown0016;		// 
	uint32	unknown0017;		// 
	uint32	Classes;		// Bitfield of classes that can equip item (1 << class#)
	uint32	Races;			// Bitfield of races that can equip item (1 << race#)
	uint32	Deity;			// Bitmask of Deities that can equip this item
	sint32	SkillModValue;		// % Mod to skill specified in SkillModType
	uint32	unknown0038;		// UNK038 - Default is 0
	uint32	SkillModType;		// Type of skill for SkillModValue to apply to
	uint32	BaneDmgRace;		// Bane Damage Race
	uint32	BaneDmgBody;		// Bane Damage Body
	uint32	BaneDmgRaceAmt;		// Bane Damage Race Amount
	sint32	BaneDmgAmt;		// Bane Damage Body Amount
	bool	Magic;			// True=Magic Item, False=not
	sint32	CastTime_;		// Cast Time in Milliseconds
	uint8	ReqLevel;		// Required Level to use item
	uint8	RecLevel;		// Recommended level to use item
	uint8	RecSkill;		// Recommended skill to use item (refers to primary skill of item)
	uint32	BardType;		// Bard Skill Type
	sint32	BardValue;		// Bard Skill Amount
	sint8	Light;			// Light
	uint8	Delay;			// Delay * 10
	uint32	ElemDmgType;		// Elemental Damage Type (1=magic, 2=fire)
	uint32	ElemDmgAmt;		// Elemental Damage
	uint32	Range;			// Range of item
	uint32	Damage;			// Delay between item usage (in 0.1 sec increments)
	uint32	Color;			// RR GG BB 00 <-- as it appears in pc
	uint32	ItemType;		// Item Type/Skill (itemClass* from above)
	uint32	Material;		// Item material type
	uint32	unknown0060;		// UNK060 - Default is 0
	uint8	unknown0061;		// UNK061 - Default is 0
	float	SellRate;		// Sell rate
	sint32	CombatEffects;		// PoP: Combat Effects +
	sint32	Shielding;		// PoP: Shielding %
	sint32	StunResist;		// PoP: Stun Resist %
	sint32	StrikeThrough;		// PoP: Strike Through %
	uint32	ExtraDmgSkill;		// PoP: Extra Damage Skill
	uint32	ExtraDmgAmt;		// PoP: Extra Damage Amount
	sint32	SpellShield;		// PoP: Spell Shield %
	sint32	Avoidance;		// PoP: Avoidance +
	sint32	Accuracy;		// PoP: Accuracy +
	uint32	CharmFileID;		// ID of the Charm File
	sint32	FactionMod1;		// Faction Mod 1
	sint32	FactionAmt1;		// Faction Amt 1
	sint32	FactionMod2;		// Faction Mod 2
	sint32	FactionAmt2;		// Faction Amt 2
	sint32	FactionMod3;		// Faction Mod 3
	sint32	FactionAmt3;		// Faction Amt 3
	sint32	FactionMod4;		// Faction Mod 4
	sint32	FactionAmt4;		// Faction Amt 4
	char	CharmFile[1];		// Name of the Charm File
	uint8	unknown0062;		// 00 Break between Strings
	uint32	AugType;
	uint16	AugRestrict;
	uint16	AugDistiller;
	ItemAugmentSlot_Struct augslots[MAX_AUGMENT_SLOTS]; //Augment Slots
	uint32	PointType;
	uint32	LDoNTheme;
	uint32	LDoNPrice;
	uint32	unknown0098;		// UNK098
	uint32	LDoNSold;
	uint8	BagType;		// 0:Small Bag, 1:Large Bag, 2:Quiver, 3:Belt Pouch ... there are 50 types
	uint8	BagSlots;		// Number of slots: can only be 2, 4, 6, 8, or 10
	uint8	BagSize;		// 0:TINY, 1:SMALL, 2:MEDIUM, 3:LARGE, 4:GIANT 
	uint8	BagWR;			// 0->100
	uint8	Book;			// 0=Not bool, 1=Book
	uint16	BookType;
	uint32	Filename;		// Filename for book data
	uint8	LoreGroup;		// LoreGroup seems to have replaced LoreFlag
	bool	ArtifactFlag;		// Flag as an Artifact
	bool	PendingLoreFlag;	// ???  Maybe just unknown?
	uint32	Favor;			// Individual favor
	uint32	GuildFavor;		// Guild favor
	uint8   FVNoDrop;		// Firiona Vie nodrop flag
	uint8	DotShielding;		// May need to be moved to the PoP stuff ****
	uint32	Attack;
	uint32	Regen;
	uint32	ManaRegen;
	uint32	EnduranceRegen;
	uint8	Haste;
	uint8	DamageShield;
	uint32	unknown0120;		// UNK120 - Default is -1 	
	uint8	unknown0121;		// UNK121 - Default is 0 		
	bool	Attuneable;
	bool	NoPet;
	uint16	unknown0124;		// UNK124 - Default 0
	bool	PotionBelt;
	uint32	PotionBeltSlots;
	uint8	StackSize;
	bool	NoTransfer;		//Swapped Positions with StackSize ****
	// bool	Stackable;		//Not in 13th Floor ???
	bool	QuestItemFlag;
	uint8	unknown0131;		// UNK131 - Default is 0	
	uint8	unknown0132[19];		// UNK132 - Default is 0	
	ItemClickEffect_Struct Click;
	ItemProcEffect_Struct Proc;
	ItemWornFocusScrollEffect_Struct Worn, Focus, Scroll;
	uint32	unknown0193;//UNK193 - Default is 0
	uint8	purity;			//purity - Newly Added - Default is 0, but some go up to 75
	uint8	dsmitigation;		//dsmitigation - Newly Added - Default is 0, but some are up to 2
	uint8	herostr;		//heroic_str - Newly Added - Default is 0
	uint8	heroint;		//heroic_int - Newly Added - Default is 0
	uint8	herowis;		//heroic_wis - Newly Added - Default is 0
	uint8	heroagi;		//heroic_agi - Newly Added - Default is 0
	uint8	herodex;		//heroic_dex - Newly Added - Default is 0
	uint8	herosta;		//heroic_sta - Newly Added - Default is 0
	uint8	herocha;		//heroic_cha - Newly Added - Default is 0
	uint32	heropoison;		//HeroicSvPoison - Newly Added - Default is 0
	uint32	heromagic;		//HeroicSvMagic - Newly Added - Default is 0
	uint32	herofire;		//HeroicSvFire - Newly Added - Default is 0
	uint32	herodisease;		//HeroicSvDisease - Newly Added - Default is 0
	uint32	herocold;		//HeroicSvCold - Newly Added - Default is 0
	uint32	herocorruption;		//HeroicSvCorruption - Newly Added - Default is 0
	uint32	healamt;		//healamt - Newly Added - Default is 0, but some are up to 9
	uint32	spelldmg;		//spelldmg - Newly Added - Default is 0, but some are up to 9
	uint32	clairvoyance;		//clairvoyance - Newly Added - Default is 0, but some are up to 10
	uint32	backstabdmg;		//backstabdmg - Newly Added - Default is 0, but some are up to 65
	uint32	evolvinglevel;		//evolvinglevel - Newly Added - Default is 0, but some are up to 7
	uint32	MaxPower;		//MaxPower - Newly Added
	uint32	Power;			//Power - Newly Added

};
After reviewing it a bit more, it looks like there was already code to handle the click/proc/worn/focus/spell section properly. And also one for handling the augments section, so those extra structs here are probably not needed, if it is just set to work the same as the current item structure.

Also, I am only pretty sure of the structure up to the end of the click/proc/worn/focus/spell section, so everything after that is just a guess that will probably need to be moved around later after we can test and see what is what. It should be pretty easy to figure out unknown fields just by changing them and seeing what gets changed.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote