Moderator: MacroQuest Developers
Code: Select all
/*0x090*/ struct _CONTENTSARRAY *pContentsArray;
/*0x094*/ DWORD NumOfSlots2;
/*0x098*/ DWORD NumOfSlots3;
/*0x09c*/ BYTE Unknown0x9c[0x2];
/*0x09e*/ WORD ItemSlot; //invslot/which bag its in
/*0x0a0*/ WORD ItemSlot2; //bagslot if in bag, if on cursr this is FFFF
/*0x0a2*/ BYTE Unknown0xa2[0x2e];
/*0x0d0*/ BYTE EvolvingExpOn;Code: Select all
/*0x0058*/ struct _CONTENTSARRAY* pContentsArray;
/*0x005c*/ DWORD NumOfSlots2;
/*0x0060*/ BYTE Unknown0x0060[0x28];
/*0x0088*/ DOUBLE EvolvingExpPct;
/*0x0090*/ BYTE Unknown0x0088[0x1c];
/*0x00ac*/ DWORD Price;
/*0x00b0*/ BYTE Unknown0x00b0[0x24];
/*0x00d4*/ BYTE EvolvingExpOn;Code: Select all
// actual size 0x158 for eqgame.exe dated july 15 2013 - eqmule
typedef struct _CONTENTS {
/*0x0000*/ void* vtable;
/*0x0004*/ DWORD ItemType; // ? 1 = normal, 2 = pack ?
/*0x0008*/ void* punknown;
/*0x000c*/ BYTE Unknown0x000c[0x38];
/*0x0044*/ DWORD MerchantQuantity;
/*0x0048*/ BYTE Unknown0x0048[0x8];
/*0x0050*/ DWORD NumOfSlots1;
/*0x0054*/ BYTE Unknown0x0054[0x4];
/*0x0058*/ struct _CONTENTSARRAY* pContentsArray;
/*0x005c*/ DWORD NumOfSlots2;
/*0x0060*/ BYTE Unknown0x0060[0x6];
/*0x0066*/ WORD ItemSlot; // Inventory slot id
/*0x0068*/ WORD ItemSlot2; // Bag slot id, starts at 0 for first slot in bag, or FFFF if item is on cursor
/*0x006a*/ BYTE Unknown0x006a[0x1e];
/*0x0088*/ DOUBLE EvolvingExpPct;
/*0x0090*/ BYTE Unknown0x0088[0x1c];
/*0x00ac*/ DWORD Price;
/*0x00b0*/ BYTE Unknown0x00b0[0x24];
/*0x00d4*/ BYTE EvolvingExpOn;
/*0x00d5*/ BYTE Unknown0x00d5[0xb];
/*0x00e0*/ struct _ITEMINFO* Item1;
/*0x00e4*/ BYTE Unknown0x00e4[0x4];
/*0x00e8*/ DWORD StackCount;
/*0x00ec*/ BYTE Unknown0x00ec[0x14];
/*0x0100*/ DWORD MerchantSlot; // slot id on a merchant
/*0x0104*/ BYTE Unknown0x0104[0x4];
/*0x0108*/ DWORD Power;
/*0x010c*/ BYTE Unknown0x010c[0xc];
/*0x0118*/ DWORD Open;
/*0x011c*/ BYTE IsEvolvingItem;
/*0x011d*/ BYTE Unknown0x011d[0x3];
/*0x0120*/ DWORD Charges;
/*0x0124*/ BYTE Unknown0x0124[0x4];
/*0x0128*/ DWORD EvolvingCurrentLevel;
/*0x012c*/ BYTE Unknown0x012c[0x10];
/*0x013c*/ DWORD EvolvingMaxLevel;
/*0x0140*/ BYTE Unknown0x0140[0xc];
/*0x014c*/ struct _ITEMINFO* Item2;
/*0x0150*/ BYTE Unknown0x150[0x8];
/*0x0158*/
} CONTENTS, *PCONTENTS;
I have no idea why, im gonna download vs 2012 express today and see for myself.Gomer wrote:The EQMule zip doesn't build at all for me under VS2012 express while ieatacid's zips do just fine. I ended up just figuring out which files are updated and only copying those over.
donations for this month's patches.that is a setting I kept on purpose since the vs2012 runtime libraries doesn't support windows xp, and I know a lot of users are still on that system.warlock45 wrote:not sure about him but for me a number of the files are using 2010 format.
donations for this month's patches.its just pointers to the same itemstruct, sometimes item1 is valid other times its item2, I don't know why.vsab wrote:As a matter of interest, why is there an Item1 and Item2? What do they represent in game?
donations for this month's patches.Actually, two things...EqMule wrote:its just pointers to the same itemstruct, sometimes item1 is valid other times its item2, I don't know why.vsab wrote:As a matter of interest, why is there an Item1 and Item2? What do they represent in game?
We have a function that checks which one of them that has the valid pointer and just return that one...
I was referring to _ITEMINFO Item1 and Item2 in my answer to vsab, not talking about ItemSlot an ItemSlot2 which btw are in the correct place in the struct posted above.Gnits wrote:Actually, two things...EqMule wrote:its just pointers to the same itemstruct, sometimes item1 is valid other times its item2, I don't know why.vsab wrote:As a matter of interest, why is there an Item1 and Item2? What do they represent in game?
We have a function that checks which one of them that has the valid pointer and just return that one...
1) 0717 does not have ItemSlot and ItemSlot2 as i just checked where they should be in the MQ2Datatypes.h and .cpp
2) ItemSlot and ItemSlot2 are a direct reference to what the new command does for item activation. I have found that it is always accurate. More over if you use both in the command on a worn item, 2 comes back null i think... But regardless, the commandline still works. It seems to be a very accurate reference to items on ones person. Basically it is top slot (worn item or bag) then interior slot in a container or null or something.
Gnits
EDIT: Ok, i am referring to the missing item. I am not sure what this is referring to but it is used in MQ2GearScore.
donations for this month's patches.Thanks, I'm guessing the function in question is:-EqMule wrote:its just pointers to the same itemstruct, sometimes item1 is valid other times its item2, I don't know why.vsab wrote:As a matter of interest, why is there an Item1 and Item2? What do they represent in game?
We have a function that checks which one of them that has the valid pointer and just return that one...
Code: Select all
GetItemFromContents()