static void ItemChange(WorldClient client, CMSG msgID, BinReader data)
        {
            INVSLOT sel    = (INVSLOT)data.ReadByte();
            byte    target = data.ReadByte();

            ItemObject aObj = client.Player.Inventory.GetItem(sel);
            ItemObject bObj = client.Player.Inventory.GetItem(target);

            aObj.DBItem.OwnerSlot = (byte)target;
            DBManager.SaveDBObject(aObj.DBItem);
            if (bObj != null)
            {
                bObj.DBItem.OwnerSlot = (byte)sel;
                DBManager.SaveDBObject(bObj.DBItem);
            }

            client.Player.Inventory.ItemMove((int)sel, (int)target);

            // Check new stats of items
            StatManager.CalculateNewStats(client.Player);

            client.Player.UpdateData();

//			Chat.System(client, "Item Move : " + sel + " To slot " + target);

            return;
        }
Exemple #2
0
        static bool OnLevel(WorldClient client, string input)
        {
            if (client.Player.AccessLvl < ACCESSLEVEL.TEMPGM)
            {
                Chat.System(client, "You do not have access to this command");
                return(true);
            }
            string[] split = input.Split(' ');
            if (split.Length != 2)
            {
                return(false);
            }
            int level = 0;

            try
            {
                if (split[1].StartsWith("0x"))
                {
                    level = int.Parse(split[1].Substring(2), System.Globalization.NumberStyles.HexNumber);
                }
                else
                {
                    level = int.Parse(split[1]);
                }
            }
            catch (Exception)
            {
                Chat.System(client, "Invalid level.");
                return(true);
            }

            if (level < 1 | level > 255)
            {
                Chat.System(client, "level must be between 1 and 255!");
                return(true);
            }

            if (client.Player.Selection == null)
            {
                Chat.System(client, "You must have a valid object targeted!");
                return(true);
            }

            LivingObject mob      = ((LivingObject)client.Player.Selection);
            string       mob_name = mob.Name;

            Chat.System(client, "Setting " + mob_name + " ( " + client.Player.Selection.GUID + " )  level to " + level);
            mob.Level = level;
            StatManager.CalculateNewStats(mob);
            mob.Health = mob.MaxHealth;
            mob.Power  = mob.MaxPower;
            mob.UpdateData();
            return(true);
        }
        static void ItemDestroy(WorldClient client, CMSG msgID, BinReader data)
        {
            byte    bag = data.ReadByte();
            INVSLOT sel = (INVSLOT)data.ReadByte();

            ItemObject aObj = client.Player.Inventory.GetItem(sel);

            DBManager.DeleteDBObject(aObj.DBItem);
            client.Player.Inventory.RemoveItem((int)sel);
            // Check new stats of items
            StatManager.CalculateNewStats(client.Player);
            client.Player.UpdateData();
            return;
        }
        static void ItemAutoEquip(WorldClient client, CMSG msgID, BinReader data)
        {
            byte    bag = data.ReadByte();
            INVSLOT sel = (INVSLOT)data.ReadByte();

            ItemObject aObj = client.Player.Inventory.GetItem(sel);
            //need to work on sawp items here...
            ItemObject bObj = client.Player.Inventory.GetItem((byte)aObj.Template.InvType);

            int target = 0;

            #region Right INVTYPE for each weapon

            switch ((INVTYPE)aObj.Template.InvType)
            {
            case INVTYPE.AMMO:

                target = 23;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.BAG:

                target = 23;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.BODY:

                target = 3;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.CHEST:

                target = 4;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.CLOAK:

                target = 14;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.FEET:

                target = 7;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.FINGER:

                target = 10;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.HAND:

                target = 9;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.HEAD:

                target = 0;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.HOLDABLE:

                target = 23;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.LEGS:

                target = 6;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.NECK:

                target = 1;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.RANGED:

                target = 17;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.ROBE:

                target = 4;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.SHIELD:

                target = 16;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.SHOULDER:

                target = 2;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.TABARD:

                target = 18;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.THROWN:

                target = 17;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.TRINKET:

                target = 23;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.TWOHANDEDWEAPON:

                target = 15;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.WEAPON:

                target = 15;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.WEAPONMAINHAND:

                target = 15;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.WEAPONOFFHAND:

                target = 16;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.WAIST:

                target = 5;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;

            case INVTYPE.WRIST:

                target = 8;
                aObj.DBItem.OwnerSlot = ((byte)target);
                break;
            }

            #endregion

            DBManager.SaveDBObject(aObj.DBItem);
            client.Player.Inventory.ItemMove((int)sel, (int)target);

            //...and here.
            if (bObj != null)
            {
                bObj.DBItem.OwnerSlot = (byte)sel;
                DBManager.SaveDBObject(bObj.DBItem);
            }

            StatManager.CalculateNewStats(client.Player);
            client.Player.UpdateData();

            return;
        }