Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.35 KB | None | 0 0
  1. using ConquerOnline.Client;
  2. using ConquerOnline.Database;
  3. using ConquerOnline.Game;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Drawing;
  7. using ConquerOnline;
  8. using ConquerOnline.Interfaces;
  9. using BitConverter = ConquerOnline.BitConverter;
  10.  
  11. namespace ConquerOnline.Network.GamePackets
  12. {
  13.     public class ItemUsage : Writer, IPacket
  14.     {
  15.         public uint[] Batch
  16.         {
  17.             get
  18.             {
  19.                 uint[] items = new uint[dwExtraInfo];
  20.                 for (int i = 0; i < dwExtraInfo; i++)
  21.                 {
  22.                     items[i] = BitConverter.ToUInt32(Buffer, 91 + 4 * i);
  23.                 }
  24.                 return items;
  25.             }
  26.             set
  27.             {
  28.                 if (value != null)
  29.                 {
  30.                     dwExtraInfo = (uint)value.Length;
  31.                     for (int i = 0; i < dwExtraInfo; i++)
  32.                     {
  33.                         Write(value[i], 91 + 4 * i, Buffer);
  34.                     }
  35.                 }
  36.             }
  37.         }
  38.         public const byte
  39.         BuyFromNPC = 1,
  40.         SellToNPC = 2,
  41.         RemoveInventory = 3,
  42.         EquipItem = 4,
  43.         Unknown5 = 5,
  44.         UnequipItem = 6,
  45.         ArrowReload = 8,
  46.         ViewWarehouse = 9,
  47.         WarehouseDeposit = 10,
  48.         WarehouseWithdraw = 11,
  49.         Repair = 14,
  50.         VIPRepair = 15,
  51.         DragonBallUpgrade = 19,
  52.         MeteorUpgrade = 20,
  53.         ShowBoothItems = 21,
  54.         AddItemOnBoothForSilvers = 22,
  55.         RemoveItemFromBooth = 23,
  56.         BuyFromBooth = 24,
  57.         UpdateDurability = 25,
  58.         FireWorks = 26,
  59.         AddItemOnBoothForConquerPoints = 29,
  60.         Ping = 27,
  61.         Enchant = 28,
  62.         RedeemGear = 32,
  63.         ClaimGear = 33,
  64.         Unknown = 34,
  65.         SocketTalismanWithItem = 35,
  66.         SocketTalismanWithCPs = 36,
  67.         DropItem = 37,
  68.         DropMoney = 38,
  69.         GemCompose = 39,
  70.         Bless = 40,
  71.         Accessories = 41,
  72.         MainEquipment = 44,
  73.         AlternateEquipment = 45,
  74.         ItemsReturned = 50,
  75.         ToristSuper = 51,
  76.         ChatItem = 52,
  77.         ObtinedPoints = 53,
  78.         LowerEquipment = 54,
  79.         ItemSell = 55,
  80.         ExtraInventory = 56,
  81.         SocketerMan = 43,
  82.         MergeStackableItems = 48,
  83.         SplitStack = 49,
  84.         RuneInterface = 91;
  85.  
  86.         private byte[] Buffer;
  87.         public ItemUsage(bool Create)
  88.         {
  89.             if (Create)
  90.             {
  91.                 Buffer = new byte[112];
  92.                 Write(104, 0, Buffer);
  93.                 Write(1009, 2, Buffer);
  94.                 Write((uint)Time32.timeGetTime().GetHashCode(), 4, Buffer);
  95.             }
  96.         }
  97.         public uint UID
  98.         {
  99.             get { return BitConverter.ToUInt32(Buffer, 8); }
  100.             set { Write(value, 8, Buffer); }
  101.         }
  102.         public ulong dwParam
  103.         {
  104.             get { return BitConverter.ToUInt32(Buffer, 12); }
  105.             set { Write(value, 12, Buffer); }
  106.         }
  107.         public uint dwParam2
  108.         {
  109.             get { return BitConverter.ToUInt32(Buffer, 91); }
  110.             set { Write(value, 91, Buffer); }
  111.         }
  112.         public byte ID
  113.         {
  114.             get
  115.             {
  116.                 return Buffer[20];
  117.             }
  118.             set
  119.             {
  120.                 Buffer[20] = value;
  121.             }
  122.         }
  123.         public uint TimeStamp
  124.         {
  125.             get { return BitConverter.ToUInt32(Buffer, 22); }
  126.             set { Write(value, 22, Buffer); }
  127.         }
  128.         public uint dwParam2_
  129.         {
  130.             get { return BitConverter.ToUInt32(Buffer, 24); }
  131.             set { Write(value, 24, Buffer); }
  132.         }
  133.         public uint dwParam3
  134.         {
  135.             get { return BitConverter.ToUInt32(Buffer, 28); }
  136.             set { Write(value, 28, Buffer); }
  137.         }
  138.         public uint dwParam4
  139.         {
  140.             get { return BitConverter.ToUInt32(Buffer, 32); }
  141.             set { Write(value, 32, Buffer); }
  142.         }
  143.         public uint dwExtraInfo
  144.         {
  145.             get { return BitConverter.ToUInt32(Buffer, 26); }
  146.             set { Write(value, 26, Buffer); }
  147.         }
  148.         public uint dwExtraInfo2
  149.         {
  150.             get { return BitConverter.ToUInt32(Buffer, 30); }
  151.             set { Write(value, 30, Buffer); }
  152.         }
  153.         public uint dwExtraInfo3
  154.         {
  155.             get { return BitConverter.ToUInt32(Buffer, 34); }
  156.             set { Write(value, 34, Buffer); }
  157.         }
  158.         public byte CristalCount
  159.         {
  160.             get { return Buffer[58]; }
  161.             set { Buffer[58] = value; }
  162.         }
  163.         public byte[] ToArray()
  164.         {
  165.             return Buffer;
  166.         }
  167.         public void Deserialize(byte[] buffer)
  168.         {
  169.             Buffer = buffer;
  170.         }
  171.         public void Send(GameClient client)
  172.         {
  173.             client.Send(Buffer);
  174.         }
  175.         public static void Process(byte[] packet, GameClient client)
  176.         {
  177.             if (client.Action != 2) return;
  178.  
  179.             ItemUsage usage = new ItemUsage(false);
  180.             usage.Deserialize(packet);
  181.             if (client.Entity.Alive || usage.ID == Ping)
  182.             {
  183.                 if (usage.ID == Ping)
  184.                 {
  185.                     client.Send(usage);
  186.                     return;
  187.                 }
  188.             }
  189.         }
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement