Exemple #1
0
        private void PlaceItem(D3ActorCommonData d3ACD)
        {
            switch ((ItemPlacement)d3ACD.Placement)
            {
            case ItemPlacement.Merchant:
                throw new NotImplementedException("Merchant items");

            /*NPC merchant;
             * if (npcs.TryGetValue(d3ACD.OwnerID, out merchant))
             * {
             *  if (merchant.Inventory == null)
             *      merchant.Inventory = new Inventory(10, 60);
             *  merchant.Inventory.AddItem(CreateItem(d3ACD));
             * }
             * break;*/
            case ItemPlacement.PlayerBackpack:
                this.Me.Backpack.AddItem(CreateItem(d3ACD));
                break;

            case ItemPlacement.PlayerStash:
                this.Me.Stash.AddItem(CreateItem(d3ACD));
                break;

            case ItemPlacement.PlayerGold:
                if (d3ACD.GBID != Offsets.GOLD_GBID)
                {
                    Log.Warn("Unrecognized item " + d3ACD.ModelName + " in the gold slot");
                    break;
                }
                this.Me.Gold = d3ACD.Attributes[D3Attribute.ItemStackQuantityLo].Value;
                break;

            case ItemPlacement.PlayerBracers:
            case ItemPlacement.PlayerFeet:
            case ItemPlacement.PlayerHands:
            case ItemPlacement.PlayerHead:
            case ItemPlacement.PlayerLeftFinger:
            case ItemPlacement.PlayerLeftHand:
            case ItemPlacement.PlayerLegs:
            case ItemPlacement.PlayerNeck:
            case ItemPlacement.PlayerRightFinger:
            case ItemPlacement.PlayerRightHand:
            case ItemPlacement.PlayerShoulders:
            case ItemPlacement.PlayerTorso:
            case ItemPlacement.PlayerWaist:
                this.Me.Outfit.AddItem((ItemPlacement)d3ACD.Placement, CreateItem(d3ACD));
                break;

            case ItemPlacement.Unknown1:
            case ItemPlacement.Unknown2:
            case ItemPlacement.Unknown3:
            case ItemPlacement.Unknown4:
            case ItemPlacement.Unknown5:
            default:
                throw new MemoryReadException("Unknown item placement " + d3ACD.Placement +
                                              " for " + d3ACD.ModelName, d3ACD.Pointer);
            }
        }
Exemple #2
0
        private Item CreateItem(D3ActorCommonData d3ACD)
        {
            Actor          templateActor = ActorTemplates.Actors[d3ACD.SnoID];
            ItemDefinition itemDef       = ItemDefinitions.Definitions[(int)d3ACD.GBID];
            ItemType       type          = ItemTypes.Types[itemDef.ItemTypeHash];
            Item           item          = Item.CreateInstance((Item)templateActor, itemDef, -1, d3ACD.AcdID, AABB.Zero,
                                                               Vector2f.Zero, d3ACD.WorldID, d3ACD.SceneID, type, d3ACD.Placement, d3ACD.InventoryX,
                                                               d3ACD.InventoryY);

            item.InstanceID = d3ACD.AcdID;
            return(item);
        }