View Full Version : Item Struct
mByte
10-31-2002, 11:17 AM
Can somebody post the Item Struct for 3.10 please. My Visual Studio .Net took a dive and I cannot find the dvd.
Thanks,
Trumpcard
10-31-2002, 12:08 PM
/*
** Generic Item structure
** Length: 244 bytes
** Used in:
** itemShopStruct(0c20), itemReceivedPlayerStruct(5220),
** itemPlayerStruct(6421), bookPlayerStruct(6521),
** containerPlayerStruct(6621), summonedItemStruct(7821),
** tradeItemStruct(df20),
*/
#define ITEM_STRUCT_SIZE 360
#define SHORT_BOOK_ITEM_STRUCT_SIZE 264
#define SHORT_CONTAINER_ITEM_STRUCT_SIZE 276
struct Item_Struct
{
/*0000*/ char name[64]; // Name of item
/*0064*/ char lore[80]; // Lore text
/*0144*/ char idfile[6]; // Not sure what this is used for
/*0150*/ sint16 flag;
/*0152*/ uint8 unknown0150[22]; // Placeholder
/*0174*/ uint8 weight; // Weight of item
/*0175*/ sint8 nosave; // Nosave flag 1=normal, 0=nosave, -1=spell?
/*0176*/ sint8 nodrop; // Nodrop flag 1=normal, 0=nodrop, -1=??
/*0177*/ uint8 size; // Size of item
/*0178*/ int8 type;
/*0179*/ uint8 unknown0178; // ***Placeholder
/*0180*/ uint16 item_nr; // Unique Item number
/*0182*/ uint16 icon_nr; // Icon Number
/*0184*/ sint16 equipSlot; // Current Equip slot
/*0186*/ uint8 unknwn0186[2]; // Equip slot cont.?
/*0188*/ uint32 equipableSlots; // Slots where this item goes
/*0192*/ sint32 cost; // Item cost in copper
/*0196*/ uint8 unknown0196[32]; // ***Placeholder
union
{
struct
{
// 0228- have different meanings depending on flags
/*0228*/ sint8 STR; // Strength
/*0229*/ sint8 STA; // Stamina
/*0230*/ sint8 CHA; // Charisma
/*0231*/ sint8 DEX; // Dexterity
/*0232*/ sint8 INT; // Intelligence
/*0233*/ sint8 AGI; // Agility
/*0234*/ sint8 WIS; // Wisdom
/*0235*/ sint8 MR; // Magic Resistance
/*0236*/ sint8 FR; // Fire Resistance
/*0237*/ sint8 CR; // Cold Resistance
/*0238*/ sint8 DR; // Disease Resistance
/*0239*/ sint8 PR; // Poison Resistance
/*0240*/ uint16 HP; // Hitpoints
/*0242*/ uint16 MANA; // Mana
/*0244*/ uint16 AC; // Armor Class
/*0246*/ uint8 MaxCharges; // Maximum number of charges, for rechargable? (Sept 25, 2002)
/*0247*/ sint8 GMFlag; // GM flag 0 - normal item, -1 - gm item (Sept 25, 2002)
/*0248*/ uint8 light; // Light effect of this item
/*0249*/ uint8 delay; // Weapon Delay
/*0250*/ uint8 damage; // Weapon Damage
/*0251*/ sint8 effecttype0; // 0=combat, 1=click anywhere w/o class check, 2=latent/worn, 3=click anywhere EXPENDABLE, 4=click worn, 5=click anywhere w/ class check, -1=no effect
/*0252*/ uint8 range; // Range of weapon
/*0253*/ uint8 skill; // Skill of this weapon, refer to weaponskill chart
/*0254*/ sint8 magic; // Magic flag
// 00 (0000) = ???
// 01 (0001) = magic
// 12 (1100) = ???
// 14 (1110) = ???
// 15 (1111) = ???
/*0255*/ sint8 level0; // Casting level
/*0256*/ uint8 material; // Material?
/*0257*/ uint8 unknown0258[3]; // ***Placeholder
/*0260*/ uint32 color; // Amounts of RGB in original color
/*0264*/ uint8 unknown0264[2]; // ***Placeholder (Asiel: Has to do with Diety, will unwrap later)
/*0266*/ uint16 spellId0; // SpellID of special effect
/*0268*/ uint16 classes; // Classes that can use this item
/*0270*/ uint8 unknown0270[2]; // ***Placeholder
union
{
struct
{
/*0272*/ uint16 races; // Races that can use this item
/*0274*/ sint8 unknown0274[2]; // ***Placeholder
/*0276*/ sint8 stackable; // 1= stackable, 3 = normal, 0 = ? (not stackable)
} normal;
};
/*0277*/ uint8 level; // Casting level
union // 0278 has different meanings depending on an stackable
{
/*0278*/ sint8 number; // Number of items in stack
/*0278*/ sint8 charges; // Number of charges (-1 = unlimited)
};
/*0279*/ sint8 effecttype; // 0=combat, 1=click anywhere w/o class check, 2=latent/worn, 3=click anywhere EXPENDABLE, 4=click worn, 5=click anywhere w/ class check, -1=no effect
/*0280*/ uint16 spellId; // spellId of special effect
/*0282*/ uint8 unknown0282[10]; // ***Placeholder 0288
/*0292*/ uint32 casttime; // Cast time of clicky item in miliseconds
/*0296*/ uint8 unknown0296[16]; // ***Placeholder
/*0312*/ uint16 skillModPercent; // Skill mod value in % (Sept 25, 2002)
/*0314*/ sint16 skillModId; // Skill mod index (Sept 25, 2002)
/*0316*/ uint8 unknown0315[44]; // Bane and Elemental dmg struct (writing it now, hopefully will be up soon)
} common;
struct // Book Structure (flag == 0x7669)
{
/*0228*/ sint8 unknown0172[6]; // ***Placeholder
/*0234*/ char file[15]; // Filename of book text on server
/*0249*/ sint8 unknown0190[15]; // ***Placeholder
} book;
struct // containers flag == 0x5400 or 0x5450
{
/*0228*/ sint8 unknown0212[41]; // ***Placeholder
/*0269*/ uint8 numSlots; // number of slots in container
/*0270*/ sint8 unknown0214; // ***Placeholder
/*0271*/ sint8 sizeCapacity; // Maximum size item container can hold
/*0272*/ uint8 weightReduction; // % weight reduction of container
/*0273*/ uint8 unknown0273[3]; // ***Placeholder
} container;
};
};
Psychobabble
11-25-2002, 06:45 PM
Hello again.
I am in the process of writing a program to read all the blobs in this file and dump most of it into individual columns in a database for a little project i have going.
What I am looking for is detailed info, if any of you have gathered it on certain byte values.
Particularly I am looking for flag nomenclature for /*0188*/ uint32 equipableSlots; // Slots where this item goes. I assume these are bit flags with some padding - I dont recall having 32 slots on all characters, but i am sure there are extras here reserved for whatever reason.
Anyone have this data?
Thanks in advance,
Psychobabble
Lurker_005
11-26-2002, 03:54 AM
I'm sure windcatchers admin tool has a file that lists the slots. Also ShowEQ probably does as well.
Psychobabble
11-26-2002, 03:37 PM
I have already checked the ShowEQ sources and associated files and can't find that info. Don't recall ShowEQ ever deciphering Item data extensively to begin with, beyond name and item no.
where can I find this windcatchers admin tool?
if anyone knows the actual bit data and can post here it would be greatly appreciated.
Pb
Lurker_005
11-26-2002, 04:37 PM
Well since I know where this is, here is the info copied from some code Kaiyodo wrote.
if(strstr(SlotText, "EAR"))
CombinedVal += (2+16); // L and R
if(strstr(SlotText, "HEAD"))
CombinedVal += 4;
if(strstr(SlotText, "FACE"))
CombinedVal += 8;
if(strstr(SlotText, "NECK"))
CombinedVal += 32;
if(strstr(SlotText, "SHOULDERS"))
CombinedVal += 64;
if(strstr(SlotText, "ARMS"))
CombinedVal += 128;
if(strstr(SlotText, "BACK"))
CombinedVal += 256;
if(strstr(SlotText, "WRIST"))
CombinedVal += (512+1024); // L and R
if(strstr(SlotText, "RANGE"))
CombinedVal += 2048;
if(strstr(SlotText, "HANDS"))
CombinedVal += 4096;
if(strstr(SlotText, "PRIMARY"))
CombinedVal += 8192;
if(strstr(SlotText, "SECONDARY"))
CombinedVal += 16384;
if(strstr(SlotText, "FINGERS"))
CombinedVal += (32768+65536); // L and R
if(strstr(SlotText, "CHEST"))
CombinedVal += 131072;
if(strstr(SlotText, "LEGS"))
CombinedVal += 262144;
if(strstr(SlotText, "FEET"))
CombinedVal += 524288;
if(strstr(SlotText, "WAIST"))
CombinedVal += 1048576;
if(strstr(SlotText, "AMMO"))
CombinedVal += 2097152;
Psychobabble
11-27-2002, 05:55 AM
thank you much, sir. I did actually visit Kaiyodo's site and downloaded EQItemEdit - but didnt see any sources. Which program is that from?
Many thanks
Pb
Psychobabble
12-01-2002, 10:24 AM
Hey Lurker, I went back to Kaiyodo's site and pulled all the sources but didnt find the code you posted - any chance of posting a link to that particular codebase? Now I'm looking for the bit data for races and classes, of course ;)
Thanks.
Pb
Kaiyodo
12-02-2002, 01:12 AM
The program Lurker got the code from was never released to the public at large, it was from a program I made to convert his magelo data into item struct entries.
If you want the source it's at http://www.geocities.com/Kaiyodouk/Lurker_005/
The actual program won't be of any use without the magic datafiles, but the code should still work.
K.
Psychobabble
12-03-2002, 07:22 PM
Thanks Kaiyodo for the link. I ended up using your eqItemEditor and manually searching for the bitmaps for race, diety and class. I truly appreciate your work.
For dieties, I found no items marked with just the first bit. Would that be the Nameless perhaps ? ;)
On a somewhat different topic, I have been reading several of your posts. Heh, you should be working at Frontier Developments and help them make Elite 4 uber. =)
Cheers,
Pb
entmike 2.0
01-21-2003, 06:34 AM
Does anybody have the resulting blob structure? I am doing a little personal project and know little c++ so I am having trouble determining what all these values mean. I see the packet structure above and that makes sense but I need to know the structure of it in the database after it's been "SQL-ized"
Can anybody point me in the right direction? Feel free to IM me if you like.
Thanks in advance.
Lurker_005
01-21-2003, 11:44 AM
The item blob structure is defined in the EQEmu source, eq_packet_structs.h
The .sql files have several characters "escaped" a \ is listed as \\ in the text file since \ is the escape character for mysql See the mysql docs for more on other escaped characters.
entmike 2.0
01-22-2003, 04:42 AM
Thank you, I figured out later last nite through staring at each record that \0 = a blank space etc, so I think I am on the right track. I know jack crap about MySQL so I thought the \ was a field delimitter for the longest time. Seems it's just one blob of info =\ Thanks for confirming for me. I'll refer to the docs for the other escape chars (don't know what \n and \r are yet, but you have pointed me in the right direction)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.