Advertisement
shekohex

ConquerItemTable.cs

Jul 8th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 14.31 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using Arab_TQ.Network.GamePackets;
  4. using System.Collections.Generic;
  5.  
  6. namespace Arab_TQ.Database
  7. {
  8.     public class ConquerItemTable
  9.     {
  10.         public static void LoadItems(Client.GameClient client)
  11.         {
  12.             using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("EntityID", client.Entity.UID))
  13.             using (var reader = new MySqlReader(cmd))
  14.             {
  15.                 while (reader.Read())
  16.                 {
  17.                     var item = deserialzeItem(reader);
  18.                     if (!Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID))
  19.                         continue;  
  20.                     HandleInscribing(item, client);
  21.                     ItemAddingTable.GetAddingsForItem(item);
  22.                     if (item.Warehouse == 0)
  23.                     {
  24.                         switch (item.Position)
  25.                         {
  26.                             case 0: client.Inventory.Add(item, Game.Enums.ItemUse.None); break;
  27.                             default:
  28.                                 if (item.Position > 40) continue;
  29.                                 if (client.Equipment.Free((byte)item.Position))
  30.                                     client.Equipment.Add(item, Game.Enums.ItemUse.None);
  31.                                 else
  32.                                 {
  33.                                     if (client.Inventory.Count < 40)
  34.                                     {
  35.                                         item.Position = 0;
  36.                                         client.Inventory.Add(item, Game.Enums.ItemUse.None);
  37.                                         if (client.Warehouses[Arab_TQ.Game.ConquerStructures.Warehouse.WarehouseID.StoneCity].Count < 20)
  38.                                             client.Warehouses[Arab_TQ.Game.ConquerStructures.Warehouse.WarehouseID.StoneCity].Add(item);
  39.                                         UpdatePosition(item);
  40.                                     }
  41.                                 }
  42.                                 break;
  43.                         }
  44.                     }
  45.                     else
  46.                     {
  47.                         if (item != null)
  48.                         {
  49.                             Arab_TQ.Game.ConquerStructures.Warehouse.WarehouseID whID = (Game.ConquerStructures.Warehouse.WarehouseID)item.Warehouse;
  50.                             if (client.Warehouses.ContainsKey(whID))
  51.                             {
  52.                                 client.Warehouses[whID].Add(item);
  53.                             }
  54.                         }
  55.                     }
  56.                 }
  57.             }
  58.         }
  59.         private static ConquerItem deserialzeItem(MySqlReader reader)
  60.         {
  61.             ConquerItem item = new Network.GamePackets.ConquerItem(true);
  62.             item.ID = reader.ReadUInt32("Id");
  63.             item.UID = reader.ReadUInt32("Uid");
  64.             //item.Durability = reader.ReadUInt16("Durability");
  65.            
  66.               //  if (item.MaximDurability == 0)
  67.              //   {
  68.                   item.Durability = 70;
  69.                     item.MaximDurability = 70;
  70.             //    }
  71.            
  72.            // item.MaximDurability = reader.ReadUInt16("MaximDurability");
  73.             item.Durability = item.MaximDurability;
  74.             item.Position = reader.ReadUInt16("Position");
  75.             item.Agate = reader.ReadString("Agate");
  76.             item.SocketProgress = reader.ReadUInt32("SocketProgress");
  77.             item.PlusProgress = reader.ReadUInt32("PlusProgress");
  78.             item.SocketOne = (Game.Enums.Gem)reader.ReadUInt16("SocketOne");
  79.             item.SocketTwo = (Game.Enums.Gem)reader.ReadUInt16("SocketTwo");
  80.             item.Effect = (Game.Enums.ItemEffect)reader.ReadUInt16("Effect");
  81.             item.Mode = Game.Enums.ItemMode.Default;
  82.             item.Plus = reader.ReadByte("Plus");
  83.             item.Bless = reader.ReadByte("Bless");
  84.             item.Bound = reader.ReadBoolean("Bound");
  85.             item.Enchant = reader.ReadByte("Enchant");
  86.             item.Lock = reader.ReadByte("Locked");
  87.             item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64("UnlockEnd"));
  88.             item.Suspicious = reader.ReadBoolean("Suspicious");
  89.             item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64("SuspiciousStart"));
  90.             item.Color = (Game.Enums.Color)reader.ReadUInt32("Color");
  91.             item.Warehouse = reader.ReadUInt16("Warehouse");
  92.             item.StackSize = reader.ReadUInt16("StackSize");
  93.             item.RefineItem = reader.ReadUInt32("RefineryItem");
  94.  
  95.             if (item.ID == 300000)
  96.             {
  97.                 uint NextSteedColor = reader.ReadUInt32("NextSteedColor");
  98.                 item.NextGreen = (byte)(NextSteedColor & 0xFF);
  99.                 item.NextBlue = (byte)((NextSteedColor >> 8) & 0xFF);
  100.                 item.NextRed = (byte)((NextSteedColor >> 16) & 0xFF);
  101.             }
  102.  
  103.             Int64 rTime = reader.ReadInt64("RefineryTime");
  104.             if (item.RefineItem > 0 && rTime != 0)
  105.             {
  106.                 item.RefineryTime = DateTime.FromBinary(rTime);
  107.                 if (DateTime.Now > item.RefineryTime)
  108.                 {
  109.                     item.RefineryTime = new DateTime(0);
  110.                     item.RefineItem = 0;
  111.                 }
  112.             }
  113.             if (item.Lock == 2)
  114.                 if (DateTime.Now >= item.UnlockEnd)
  115.                     item.Lock = 0;
  116.             return item;
  117.         }
  118.         public static void HandleInscribing(ConquerItem item, Client.GameClient client, bool detained = false)
  119.         {
  120.             if (client.Entity.GuildID != 0)
  121.             {
  122.                 if (client.Guild != null)
  123.                 {
  124.                     int itemPosition = Network.PacketHandler.ArsenalPosition(item.ID);
  125.                     if (itemPosition != -1)
  126.                     {
  127.                         var arsenal = client.Guild.Arsenals[itemPosition];
  128.                         if (arsenal.Unlocked)
  129.                         {
  130.                             if (arsenal.ItemDictionary.ContainsKey(item.UID))
  131.                             {
  132.                                 var arsenalItem = arsenal.ItemDictionary[item.UID];
  133.                                 arsenalItem.Update(item, client);
  134.                                 item.Inscribed = true;
  135.                                 client.ArsenalDonations[itemPosition] += arsenalItem.DonationWorth;
  136.                             }
  137.                         }
  138.                     }
  139.                 }
  140.             }
  141.         }
  142.         public static ConquerItem LoadItem(uint UID)
  143.         {
  144.             using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("UID", UID))
  145.             using (var reader = new MySqlReader(cmd))
  146.                 if (reader.Read())
  147.                     return deserialzeItem(reader);
  148.             return new ConquerItem(true);
  149.         }
  150.  
  151.         public static void AddItem(ref ConquerItem Item, Client.GameClient client)
  152.         {
  153.             try
  154.             {
  155.                 using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("items"))
  156.                     cmd.Insert("ID", Item.ID).Insert("UID", Item.UID)
  157.                         .Insert("Plus", Item.Plus).Insert("Bless", Item.Bless)
  158.                         .Insert("Enchant", Item.Enchant).Insert("SocketOne", (byte)Item.SocketOne)
  159.                         .Insert("SocketTwo", (byte)Item.SocketTwo).Insert("Durability", Item.Durability)
  160.                         .Insert("MaximDurability", Item.MaximDurability).Insert("SocketProgress", Item.SocketProgress)
  161.                         .Insert("PlusProgress", Item.PlusProgress).Insert("Effect", (ushort)Item.Effect)
  162.                         .Insert("Bound", Item.Bound).Insert("Locked", Item.Lock).Insert("UnlockEnd", Item.UnlockEnd.Ticks)
  163.                         .Insert("Suspicious", Item.Suspicious).Insert("SuspiciousStart", Item.SuspiciousStart.Ticks).Insert("NextSteedColor", 0)
  164.                         .Insert("Color", (ushort)Item.Color).Insert("Position", Item.Position).Insert("StackSize", Item.StackSize)
  165.                         .Insert("RefineryItem", Item.RefineItem).Insert("RefineryTime", Item.RefineryTime.Ticks).Insert("EntityID", client.Entity.UID)
  166.                         .Execute();
  167.             }
  168.             catch (Exception e)
  169.             {
  170.                 //Console.WriteLine(e);
  171.                 DeleteItem(Item.UID);
  172.                 AddItem(ref Item, client);
  173.             }
  174.         }
  175.         private static void UpdateData(ConquerItem Item, string column, object value)
  176.         {
  177.             UpdateData(Item.UID, column, value);
  178.         }
  179.         private static void UpdateData(uint UID, string column, object value)
  180.         {
  181.             using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
  182.                 cmd.Update("items").Set(column, value.ToString())
  183.                     .Where("UID", UID).Execute();
  184.         }
  185.         public static void UpdateBless(ConquerItem Item)
  186.         {
  187.             UpdateData(Item, "Bless", Item.Bless);
  188.         }
  189.         public static void UpdateItemAgate(ConquerItem Item)
  190.         {
  191.             string agate = "";
  192.             if (Item.ID == 720828)
  193.             {
  194.                 foreach (string coord in Item.Agate_map.Values)
  195.                 {
  196.                     agate += coord + "#";
  197.                     UpdateData(Item, "agate", agate);
  198.                 }
  199.             }
  200.         }
  201.         public static void UpdateColor(ConquerItem Item)
  202.         {
  203.             UpdateData(Item, "Color", (uint)Item.Color);
  204.         }
  205.         public static void UpdateStack(ConquerItem Item)
  206.         {
  207.             UpdateData(Item, "StackSize", Item.StackSize);
  208.         }
  209.         public static void UpdateEnchant(ConquerItem Item)
  210.         {
  211.             UpdateData(Item, "Enchant", Item.Enchant);
  212.         }
  213.         public static void UpdateLock(ConquerItem Item)
  214.         {
  215.             UpdateData(Item, "Locked", Item.Lock);
  216.             UpdateData(Item, "UnlockEnd", Item.UnlockEnd.ToBinary());
  217.         }
  218.         public static void UpdateSockets(ConquerItem Item)
  219.         {
  220.             UpdateData(Item, "SocketOne", (byte)Item.SocketOne);
  221.             UpdateData(Item, "SocketTwo", (byte)Item.SocketTwo);
  222.         }
  223.         public static void UpdateSocketProgress(ConquerItem Item)
  224.         {
  225.             UpdateData(Item, "SocketProgress", Item.SocketProgress);
  226.         }
  227.         public static void UpdateNextSteedColor(ConquerItem Item)
  228.         {
  229.             UpdateData(Item, "NextSteedColor", Item.NextGreen | (Item.NextBlue << 8) | (Item.NextRed << 16));
  230.         }
  231.         public static void UpdateRefineryItem(ConquerItem Item)
  232.         {
  233.             UpdateData(Item, "RefineryItem", Item.RefineItem);
  234.         }
  235.         public static void UpdateRefineryTime(ConquerItem Item)
  236.         {
  237.             UpdateData(Item, "RefineryTime", Item.RefineryTime.Ticks);
  238.         }
  239.         public static void UpdateDurabilityItem(ConquerItem Item)
  240.         {
  241.         }
  242.         public static void UpdateLocation(ConquerItem Item, Client.GameClient client)
  243.         {
  244.             using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
  245.                 cmd.Update("items").Set("EntityID", client.Entity.UID)
  246.                     .Set("Position", Item.Position).Set("Warehouse", Item.Warehouse)
  247.                     .Where("UID", Item.UID).Execute();
  248.         }
  249.         public static void UpdatePosition(ConquerItem Item)
  250.         {
  251.             using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
  252.                 cmd.Update("items").Set("Position", Item.Position).Set("Warehouse", Item.Warehouse)
  253.                     .Where("UID", Item.UID).Execute();
  254.         }
  255.         public static void UpdatePlus(ConquerItem Item)
  256.         {
  257.             UpdateData(Item, "Plus", Item.Plus);
  258.         }
  259.         public static void UpdateBound(ConquerItem Item)
  260.         {
  261.             UpdateData(Item, "Bound", 0);
  262.         }
  263.         public static void UpdatePlusProgress(ConquerItem Item)
  264.         {
  265.             UpdateData(Item, "PlusProgress", Item.PlusProgress);
  266.         }
  267.         public static void UpdateItemID(ConquerItem Item, Client.GameClient client)
  268.         {
  269.             UpdateData(Item, "ID", Item.ID);
  270.         }
  271.         public static void RemoveItem(uint UID)
  272.         {
  273.             using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
  274.                 cmd.Update("items").Set("EntityID", 0)
  275.                     .Set("Position", 0).Where("UID", UID).Execute();
  276.         }
  277.         public static void DeleteItem(uint UID)
  278.         {
  279.             using (var cmd = new MySqlCommand(MySqlCommandType.DELETE))
  280.                 cmd.Delete("items", "UID", UID).Execute();
  281.         }
  282.         public static void ClearPosition(uint EntityID, byte position)
  283.         {
  284.             using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
  285.                 cmd.Update("items").Set("EntityID", 0).Set("Position", 0)
  286.                     .Where("EntityID", EntityID).And("Position", position).Execute();
  287.         }
  288.         public static void RefineryUpdate(ConquerItem Item, Client.GameClient client)
  289.         {
  290.         }
  291.  
  292.         public static void ClearNulledItems()
  293.         {
  294.             Dictionary<uint, int> dict = new Dictionary<uint, int>();
  295.             using (var c = new MySqlCommand(MySqlCommandType.SELECT).Select("detaineditems"))
  296.             using (var r = c.CreateReader())
  297.                 while (r.Read())
  298.                     dict[r.ReadUInt32("ItemUID")] = 0;
  299.             //cmd.Where("UID", r.ReadUInt32("ItemUID"));
  300.  
  301.             using (var c = new MySqlCommand(MySqlCommandType.SELECT).Select("claimitems"))
  302.             using (var r = c.CreateReader())
  303.                 while (r.Read())
  304.                     dict[r.ReadUInt32("ItemUID")] = 0;
  305.             //cmd.Where("UID", r.ReadUInt32("ItemUID"));
  306.             var array = dict.Keys.ToArray();
  307.             foreach (var item in array)
  308.                 using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("items")
  309.                     .Set("entityid", 1).Where("entityid", 0).And("uid", item))
  310.                     cmd.Execute();
  311.  
  312.             using (var cmd = new MySqlCommand(MySqlCommandType.DELETE).Delete("items", "entityid", 0))
  313.                 cmd.Execute();
  314.             Console.WriteLine("Cleared items with EntityID = 0");
  315.         }
  316.     }
  317. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement