예제 #1
0
        public override bool MoveItem(Network.WorldClient Client, Database.Models.InventoryItemModel Item, ushort Quantity, bool Add = false)
        {
            if (Add)
            {
                if (Quantity > Item.Quantity)
                {
                    Quantity = (ushort)Item.Quantity;
                }

                InventoryItemModel ObjectEqualize = getSimilarItem(Item);
                int    newQua = Item.Quantity - Quantity;
                String str;

                if (ObjectEqualize == null)
                {
                    if (newQua <= 0)
                    {
                        Client.Character.InventoryCache.RemoveItem(Item);
                        Mount.Items.Add(Item);
                        str = "O+" + Item.ID + "|" + Item.Quantity + "|" + Item.TemplateID + "|" + Item.GetStats().ToItemStats();
                        Client.Send(new ObjectRemoveMessage(Item.ID));
                    }
                    else
                    {
                        Client.Character.InventoryCache.UpdateObjectquantity(Item, newQua);
                        ObjectEqualize = InventoryItemTable.TryCreateItem(Item.TemplateID, Mount, Quantity, Stats: Item.Effects);
                        str            = "O+" + ObjectEqualize.ID + "|" + ObjectEqualize.Quantity + "|" + ObjectEqualize.TemplateID + "|" + ObjectEqualize.GetStats().ToItemStats();
                    }
                }
                else if (newQua <= 0)
                {
                    Client.Character.InventoryCache.RemoveItem(Item);
                    ObjectEqualize.Quantity += Item.Quantity;
                    InventoryItemTable.removeItem(Item.ID);
                    str = "O+" + ObjectEqualize.ID + "|" + ObjectEqualize.Quantity + "|" + ObjectEqualize.TemplateID + "|" + ObjectEqualize.GetStats().ToItemStats();
                    Client.Send(new ObjectRemoveMessage(Item.ID));
                    InventoryItemTable.Update(ObjectEqualize);
                }
                else
                {
                    Client.Character.InventoryCache.UpdateObjectquantity(Item, newQua);
                    ObjectEqualize.Quantity += Quantity;
                    str = "O+" + ObjectEqualize.ID + "|" + ObjectEqualize.Quantity + "|" + ObjectEqualize.TemplateID + "|" + ObjectEqualize.GetStats().ToItemStats();
                    InventoryItemTable.Update(ObjectEqualize);
                }
                Client.Send(new BankUpdateMessage(str));
                Client.Send(new InventoryWeightMessage(0, 2000)); // TODO PODS
                Client.Send(new MountActualPodMessage(Mount));
                MountTable.Update(Mount);
            }
            else
            {
                if (!Mount.Items.Contains(Item))
                {
                    return(false);
                }
                InventoryItemModel ObjectEqualize = Client.Character.InventoryCache.getSimilarInventoryItem(Item);
                int    newQua = Item.Quantity - Quantity;
                String str;

                if (ObjectEqualize == null)
                {
                    if (newQua <= 0)
                    {
                        Mount.Items.Remove(Item);
                        if (Client.Character.InventoryCache.TryMergeItem(Item.TemplateID, Item.GetStats().ToItemStats(), Item.Slot, Item.Quantity))
                        {
                            InventoryItemTable.removeItem(Item.ID);
                        }
                        else
                        {
                            Client.Character.InventoryCache.Add(Item);
                        }
                        str = "O-" + Item.ID;
                    }
                    else
                    {
                        ObjectEqualize = InventoryItemTable.TryCreateItem(Item.TemplateID, Client.Character, Quantity, Stats: Item.Effects);
                        Item.Quantity  = newQua;
                        str            = "O+" + Item.ID + "|" + Item.Quantity + "|" + Item.TemplateID + "|" + Item.GetStats().ToItemStats();
                    }
                }
                else if (newQua <= 0)
                {
                    Mount.Items.Remove(Item);
                    ObjectEqualize.Quantity += Item.Quantity;
                    Client.Send(new ObjectQuantityMessage(ObjectEqualize.ID, ObjectEqualize.Quantity));
                    InventoryItemTable.removeItem(Item.ID);
                    str = "O-" + Item.ID;
                    InventoryItemTable.Update(ObjectEqualize);
                }
                else
                {
                    Item.Quantity            = newQua;
                    ObjectEqualize.Quantity += Quantity;
                    Client.Send(new ObjectQuantityMessage(ObjectEqualize.ID, ObjectEqualize.Quantity));
                    str = "O+" + Item.ID + "|" + Item.Quantity + "|" + Item.TemplateID + "|" + Item.GetStats().ToItemStats();
                    InventoryItemTable.Update(ObjectEqualize);
                }
                Client.Send(new BankUpdateMessage(str));
                Client.Send(new InventoryWeightMessage(0, 2000)); // TODO PODS
                Client.Send(new MountActualPodMessage(Mount));
                MountTable.Update(Mount);
            }
            return(true);
        }
예제 #2
0
 public static void Update(Player character)
 {
     try
     {
         MySqlCommand Command = new MySqlCommand()
         {
             Connection  = DatabaseManager.RealmProvider.getConnection(),
             CommandText = "UPDATE characters SET owner = @owner,name = @name,level = @level,color1 = @color1,color2 = @color2,color3 = @color3,look = @look,sexe = @sexe,classe = @class,map = @map,cell = @CellId,restriction = @res,experience = @experience,kamas = @kamas,capital = @capital,spellboost = @spellboost,lifeper = @lifeper,energy = @energy,ap = @ap,mp = @mp,vitality = @vitality,wisdom = @wisdom,strength = @strength,intell = @intell,agility = @agility,chance = @chance,alignement = @align,honor = @h,deshonor = @ds, stuff= @stuff, spells = @spells, savepos = @spos, zaaps = @za, mount = @mount, mountxpgive = @mxp, wornitem = @witem, seeAlign = @hw, title = @ti, cote = @cote WHERE guid = @guid",
         };
         Command.Prepare();
         Command.Parameters.AddWithValue("@guid", character.ID);
         Command.Parameters.AddWithValue("@owner", character.Owner);
         Command.Parameters.AddWithValue("@name", character.Name);
         Command.Parameters.AddWithValue("@level", character.Level);
         Command.Parameters.AddWithValue("@color1", character.Color1);
         Command.Parameters.AddWithValue("@color2", character.Color2);
         Command.Parameters.AddWithValue("@color3", character.Color3);
         Command.Parameters.AddWithValue("@look", character.Look);
         Command.Parameters.AddWithValue("@sexe", character.Sexe);
         Command.Parameters.AddWithValue("@class", character.Classe);
         Command.Parameters.AddWithValue("@map", character.Map);
         Command.Parameters.AddWithValue("@CellId", character.CellId);
         Command.Parameters.AddWithValue("@res", character.Restriction);
         Command.Parameters.AddWithValue("@experience", character.Experience);
         Command.Parameters.AddWithValue("@kamas", character.Kamas);
         Command.Parameters.AddWithValue("@capital", character.CaractPoint);
         Command.Parameters.AddWithValue("@spellboost", character.SpellPoint);
         Command.Parameters.AddWithValue("@energy", character.Energy);
         Command.Parameters.AddWithValue("@lifeper", character.GetPDVper());
         Command.Parameters.AddWithValue("@ap", character.AP);
         Command.Parameters.AddWithValue("@mp", character.MP);
         Command.Parameters.AddWithValue("@vitality", character.Vitality);
         Command.Parameters.AddWithValue("@wisdom", character.Wisdom);
         Command.Parameters.AddWithValue("@strength", character.Strength);
         Command.Parameters.AddWithValue("@intell", character.Strength);
         Command.Parameters.AddWithValue("@agility", character.Agility);
         Command.Parameters.AddWithValue("@chance", character.Chance);
         Command.Parameters.AddWithValue("@align", character.Alignement);
         Command.Parameters.AddWithValue("@h", character.Honor);
         Command.Parameters.AddWithValue("@ds", character.Deshonor);
         Command.Parameters.AddWithValue("@stuff", character.parseItemsToDB());
         Command.Parameters.AddWithValue("@spells", character.GetSpellBook().ToDatabase());
         Command.Parameters.AddWithValue("@spos", character.SavePos);
         Command.Parameters.AddWithValue("@za", character.parseZaaps());
         Command.Parameters.AddWithValue("@mount", character.Mount != null ? character.Mount.ID : -1);
         Command.Parameters.AddWithValue("@mxp", character.MountXPGive);
         Command.Parameters.AddWithValue("@hw", character.showWings ? 1 : 0);
         Command.Parameters.AddWithValue("@ti", character.Title);
         Command.Parameters.AddWithValue("@cote", character.Cote);
         if (character.InventoryCache == null)
         {
             Command.Parameters.AddWithValue("@witem", ",,,,");
         }
         else
         {
             Command.Parameters.AddWithValue("@witem", character.InventoryCache.SerializeAsDisplayEquipment());
         }
         DatabaseManager.RealmProvider.ExecuteQuery(Command);
         if (character.InventoryCache != null)
         {
             InventoryItemTable.Update(character.InventoryCache);
         }
         if (character.getCharacterGuild() != null)
         {
             CharactersGuildTable.Add(character.getCharacterGuild());
         }
         if (character.Mount != null)
         {
             MountTable.Update(character.Mount);
         }
     }
     catch (System.InvalidOperationException e1)
     {
         DatabaseManager.RealmProvider.Restart();
         Update(character);
     }
     catch (Exception e)
     {
         Logger.Error(e.ToString());
     }
 }