Originally Posted by
MaiN
Yes, item names aren't stored in there. They're provided by the server IIRC.
Errr....
Code:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ItemInfo
{
/// int
public int EntryLength;
/// int
public int ClassId;
/// int
public int SubClassId;
/// int
public int Unk0;
/// int
public int DisplayInfoId;
/// int
public int Rarity;
/// int
public int TypeFlags;
/// int
public int BuyPrice;
/// int
public int Faction;
/// int
public int SellPrice;
/// int
public int EquipSlot;
/// int
public int AllowedClasses;
/// int
public int AllowedRaces;
/// int
public int ItemLevel;
/// int
public int RequiredLevel;
/// int
public int RequiredSkill;
/// int
public int RequiredSkillLevel;
/// int
public int RequireSpell;
/// int
public int RequiredHonorRank;
/// int
public int RequiredCityRank;
/// int
public int RequiredReputationFaction;
/// int
public int RequiredReputationRank;
/// int
public int UniqueCount;
/// int
public int MaxStackSize;
/// int
public int BagSlots;
/// int
public int NumberOfStats;
/// int[10]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I4)]
public int[] StatId;
/// int[10]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I4)]
public int[] StatValue;
/// int[2]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I4)]
public int[] Unk1;
/// float[2]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.R4)]
public float[] DamageMin;
/// float[2]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.R4)]
public float[] DamageMax;
/// int[2]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.I4)]
public int[] DamageType;
/// int
public int ResistPhysical_Armor;
/// int
public int ResistHoly;
/// int
public int ResistFire;
/// int
public int ResistNature;
/// int
public int ResistFrost;
/// int
public int ResistShadow;
/// int
public int ResistArcane;
/// int
public int WeaponDelay;
/// int
public int AmmoType;
/// float
public float RangeModifier;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellId;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellTriggerId;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellCharges;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellCooldown;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellCategory;
/// int[5]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.I4)]
public int[] SpellCategoryCooldown;
/// int
public int BondId;
/// char*
[MarshalAs(UnmanagedType.LPStr)]
public string Description;
/// int
public int BookTextId;
/// int
public int BookPages;
/// int
public int BookStationaryId;
/// int
public int BeginQuestId;
/// int
public int LockPickSkillRequired;
/// int
public int MaterialId;
/// int
public int SheathId;
/// int
public int RandomPropertyId;
/// int
public int RandomPropertyId2;
/// int
public int BlockValue;
/// int
public int ItemSetId;
/// int
public int DurabilityValue;
/// int
public int ItemAreaId;
/// int
public int ItemMapId;
/// int
public int BagFamily;
/// int
public int totemCategory;
/// int[3]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] SocketColor;
/// int[3]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] SocketUnk;
/// int
public int SocketBonus;
/// int
public int GemProperties;
/// int
public int DisenchantSkillLevel;
/// float
public float ArmorDamageModifier;
/// int
public int ItemExtendedCost;
/// int
public int ItemLimitId;
/// int
public int Unk2;
/// char*
[MarshalAs(UnmanagedType.LPStr)]
public string Name;
}
The cache stores the name... you just need to 'request' it from the server, or have seen the item already (so it's in your cache already).
If that's what you meant by 'the server has to send it' then I retract my response!