SetInventoryLocation() публичный Метод

public SetInventoryLocation ( int equipmentSlot, int column, int row ) : void
equipmentSlot int
column int
row int
Результат void
Пример #1
0
 /// <summary>
 /// Equips an item in an equipment slot
 /// </summary>
 public void EquipItem(Item item, int slot)
 {
     _equipment[slot] = item.DynamicID;
     if (!Items.ContainsKey(item.DynamicID))
         Items.Add(item.DynamicID, item);
     item.Owner = _owner;
     item.Attributes[GameAttribute.Item_Equipped] = true; // Probaly should be handled by Equipable class /fasbat
     item.Attributes.SendChangedMessage(_owner.InGameClient, item.DynamicID);
     item.SetInventoryLocation(slot, 0, 0);            
 }
Пример #2
0
        /// <summary>
        /// Removes an item from the equipment slot it uses
        /// returns the used equipmentSlot
        /// </summary>
        public int UnequipItem(Item item)
        {
            for (int i = 0; i < EquipmentSlots; i++)
            {
                if (_equipment[i] == item.DynamicID)
                {
                    _equipment[i] = 0;
                    item.SetInventoryLocation(-1, -1, -1);
                    item.Owner = null;
                    return i;
                }
            }

            return 0;
        }     
Пример #3
0
        /// <summary>
        /// Equips an item in an equipment slot
        /// </summary>
        public void EquipItem(Item item, int slot)
        {
            _equipment[slot] = item.DynamicID;
            item.Owner = _owner;
            item.SetInventoryLocation(slot, 0, 0);
            if (slot == 4)
            {
                _owner.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand, 0] = item.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
                _owner.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand, 0] = item.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
                _owner.Attributes[GameAttribute.Attacks_Per_Second_Item_MainHand] = item.Attributes[GameAttribute.Attacks_Per_Second_Item_Total];
                _owner.Attributes[GameAttribute.Attacks_Per_Second_Item_Bonus] = item.Attributes[GameAttribute.Attacks_Per_Second_Item_Bonus];
                _owner.RefreshStatistic();

            }
        }
Пример #4
0
 /// <summary>
 /// Equips an item in an equipment slot
 /// </summary>
 public void EquipItem(Item item, int slot)
 {
     _equipment[slot] = item.DynamicID;
     item.Owner = _owner;
     item.SetInventoryLocation(slot, 0, 0);
     item.Attributes[GameAttributeB.Item_Equipped] = true;
     if (slot == (int)EquipmentSlotId.Off_Hand)
     {
         if (_equipment[(int)EquipmentSlotId.Main_Hand] != 0)
         {
             Item mainWeapon = GetEquipment(EquipmentSlotId.Main_Hand);
             GameAttributeMap other = new GameAttributeMap();
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = item.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = 0;
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = item.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = 0;
             other.SendChangedMessage((mainWeapon.Owner as Player).InGameClient, mainWeapon.DynamicID);
         }
     }
     else if (slot == (int)EquipmentSlotId.Main_Hand)
     {
         if (_equipment[(int)EquipmentSlotId.Off_Hand] != 0)
         {
             Item offHandWeapon = GetEquipment(EquipmentSlotId.Off_Hand);
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = item.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = item.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             offHandWeapon.Attributes[GameAttribute.Held_In_OffHand] = true;
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = 0;
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = 0;
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = 0;
             offHandWeapon.Attributes.SendChangedMessage((offHandWeapon.Owner as Player).InGameClient, offHandWeapon.DynamicID);
         }
     }
     if (item.Owner is Player)
     {
         item.Attributes.SendChangedMessage((item.Owner as Player).InGameClient, item.DynamicID); // flag item as equipped, so as not to shown in red color
     }
     _equippedMap = null;
     // compute stats (depends on items)
     AttributeMath.ComputeStats(_owner, GetEquippedMap());
 }
Пример #5
0
        /// <summary>
        /// Removes an item from the equipment slot it uses
        /// returns the used equipmentSlot
        /// </summary>
        public int UnequipItem(Item item)
        {
            for (int i = 0; i < EquipmentSlots; i++)
            {
                if (_equipment[i] == item.DynamicID)
                {
                    _equipment[i] = 0;
                    item.SetInventoryLocation(-1, -1, -1);
                    item.Owner = null;
                    if (i == 4)
                    {
                        _owner.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand, 0] = 0;
                        _owner.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand, 0] = 0;
                        _owner.Attributes[GameAttribute.Attacks_Per_Second_Item_MainHand] = 0;
                        _owner.Attributes[GameAttribute.Attacks_Per_Second_Item_Bonus] = 0;
                        _owner.RefreshStatistic();
                    }
                    return i;
                }
            }

            return 0;
        }     
Пример #6
0
 /// <summary>
 /// Equips an item in an equipment slot
 /// </summary>
 public void EquipItem(Item item, int slot)
 {
     _equipment[slot] = item.DynamicID;
     item.Owner = _owner;
     item.SetInventoryLocation(slot, 0, 0);            
 }
Пример #7
0
        internal Item AddGoldItem(Item collectedItem)
        {
            if (_inventoryGold == null)
            {
                _inventoryGold = ItemGenerator.CreateGold(_owner, collectedItem.Attributes[GameAttribute.Gold]);
                _inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] = collectedItem.Attributes[GameAttribute.Gold];
                _inventoryGold.Owner = _owner;
                _inventoryGold.SetInventoryLocation(18, 0, 0); // Equipment slot 18 ==> Gold
                _inventoryGold.Reveal(_owner);
            }
            else
            {
                _inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] += collectedItem.Attributes[GameAttribute.Gold];
            }

            return _inventoryGold;
        }
Пример #8
0
        /// <summary>
        /// Adds an item to the backpack
        /// </summary>
        public void AddItem(Item item, int row, int column)
        {
            InventorySize size = GetItemInventorySize(item);

            //check backpack boundaries
            if (row + size.Width > Rows || column + size.Width > Columns) return;

            for (int r = row; r < Math.Min(row + size.Height, Rows); r++)
                for (int c = column; c < Math.Min(column + size.Width, Columns); c++)
                {
                    System.Diagnostics.Debug.Assert(_backpack[r, c] == 0, "You need to remove an item from the backpack before placing another item there");
                    _backpack[r, c] = item.DynamicID;
                }

            item.Owner = _owner;
            item.SetInventoryLocation(EquipmentSlot, column, row);
        }
Пример #9
0
 /// <summary>
 /// Removes an item from the backpack
 /// </summary>
 public void RemoveItem(Item item)
 {
     for (int r = 0; r < Rows; r++)
     {
         for (int c = 0; c < Columns; c++)
         {
             if (_backpack[r, c] == item.DynamicID)
             {
                 _backpack[r, c] = 0;
                 item.SetInventoryLocation(-1, -1, -1);
                 item.Owner = null;
             }
         }
     }
 }
Пример #10
0
 /// <summary>
 /// Visually adds rune to skill
 /// </summary>
 /// <param name="rune"></param>
 /// <param name="PowerSNOId"></param>
 /// <param name="skillIndex"></param>
 public void SetRune(Item rune, int PowerSNOId, int skillIndex)
 {
     if ((skillIndex < 0) || (skillIndex > 5))
     {
         return;
     }
     if (rune == null)
     {
         _skillSocketRunes[skillIndex] = 0;
         return;
     }
     _inventoryGrid.RemoveItem(rune);
     rune.Owner = _owner;
     _skillSocketRunes[skillIndex] = rune.DynamicID;
     // position of rune is read from mpq as INDEX of skill in skill kit /xsochor
     var y = MPQStorage.Data.Assets[SNOGroup.SkillKit].FirstOrDefault(x => x.Value.SNOId == _owner.SkillKit);
     for (int i = 0; i < (y.Value.Data as SkillKit).ActiveSkillEntries.Count; i++)
     {
         if ((y.Value.Data as SkillKit).ActiveSkillEntries[i].SNOPower == PowerSNOId)
         {
             rune.SetInventoryLocation(16, i, 0);
             break;
         }
     }
 }
Пример #11
0
        /// <summary>
        /// Removes an item from the equipment slot it uses
        /// returns the used equipmentSlot
        /// </summary>
        public int UnequipItem(Item item)
        {
            for (int i = 0; i < EquipmentSlots; i++)
            {
                if (_equipment[i] == item.DynamicID)
                {
                    _equipment[i] = 0;
                    item.SetInventoryLocation(-1, -1, -1);
                    item.Attributes[GameAttributeB.Item_Equipped] = false;
                    if (item.Attributes[GameAttribute.Held_In_OffHand])
                    {
                        item.Attributes[GameAttribute.Held_In_OffHand] = false;
                        if (_equipment[(int)EquipmentSlotId.Main_Hand] != 0)
                        {
                            Item mainWeapon = GetEquipment(EquipmentSlotId.Main_Hand);
                            mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = 0;
                            mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = 0;
                            mainWeapon.Attributes.SendChangedMessage((mainWeapon.Owner as Player).InGameClient, mainWeapon.DynamicID);
                        }
                    }
                    else if (i == (int)EquipmentSlotId.Main_Hand)
                    {
                        if (_equipment[(int)EquipmentSlotId.Off_Hand] != 0)
                        {
                            Item offHandWeapon = GetEquipment(EquipmentSlotId.Off_Hand);
                            offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = 0;
                            offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = 0;
                            offHandWeapon.Attributes[GameAttribute.Held_In_OffHand] = false;
                            offHandWeapon.Attributes.SendChangedMessage((offHandWeapon.Owner as Player).InGameClient, offHandWeapon.DynamicID);
                        }
                    }
                    // compute stats (depends on items)
                    item.Attributes.SendChangedMessage((item.Owner as Player).InGameClient, item.DynamicID); // unflag item
                    item.Owner = null;
                    _equippedMap = null;
                    AttributeMath.ComputeStats(_owner, GetEquippedMap());
                    return i;
                }
            }

            return 0;
        }     
Пример #12
0
        public Item AddGoldItem(Item collectedItem)
        {
            // the logic is flawed, we shouldn't be creating new gold when it's collected! /raist.

            if (_inventoryGold == null)
            {
                _inventoryGold = ItemGenerator.CreateGold(_owner, collectedItem.Attributes[GameAttribute.Gold]);
                _inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] = collectedItem.Attributes[GameAttribute.Gold];
                _inventoryGold.Owner = _owner;
                _inventoryGold.SetInventoryLocation(18, 0, 0); // Equipment slot 18 ==> Gold
                _inventoryGold.Reveal(_owner);
            }
            else
            {
                _inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] += collectedItem.Attributes[GameAttribute.Gold];
                //_inventoryGold.Attributes.SendChangedMessage(_owner.InGameClient, _inventoryGold.DynamicID); // causes: !!!ERROR!!! Setting attribute for unknown ACD [ANN:1253] [Attribute:ItemStackQuantityLo-1048575:	8669] and client crash /raist.
            }

            return _inventoryGold;
        }
Пример #13
0
        // TODO: The inventory's gold item should not be created here. /komiga
        public void PickUpGold(uint itemID)
        {
            Item collectedItem = _owner.GroundItems[itemID];
            if (_goldItem == null)
            {
                ItemTypeGenerator itemGenerator = new ItemTypeGenerator(_owner.InGameClient);
                _goldItem = itemGenerator.CreateItem("Gold1", 0x00000178, ItemType.Gold);
                _goldItem.Count = collectedItem.Count;
                _goldItem.Owner = _owner;
                _goldItem.SetInventoryLocation(18, 0, 0); // Equipment slot 18 ==> Gold
                _goldItem.Reveal(_owner);
            }
            else
            {
                _goldItem.Count += collectedItem.Count;
            }

            GameAttributeMap attributes = new GameAttributeMap();
            attributes[GameAttribute.ItemStackQuantityLo] = _goldItem.Count;
            attributes.SendMessage(_owner.InGameClient, _goldItem.DynamicID);
        }