XConquer

AutoHunt Exp Done! by Pezzi Tomas

Dec 30th, 2019
63
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Crean o Reemplazan la Clase MsgHanUp o AutoHunt.cs
  2.  
  3. using ArgCO.Client;
  4. using ArgCO.Database;
  5. using ArgCO.Game;
  6. namespace ArgCO.Network.GamePackets
  7. {
  8.     public unsafe class AutoHunt
  9.     {
  10.         public enum Mode : byte
  11.         {
  12.             None,
  13.             Start,
  14.             EndAuto,
  15.             EXPGained,
  16.             Unknown4,
  17.             Unknown5,
  18.             KilledBy,
  19.             ChangedMap
  20.         }
  21.         byte[] Packet;
  22.         public AutoHunt()
  23.         {
  24.             Packet = new byte[100];
  25.             fixed (byte* Pack = Packet)
  26.             {
  27.                 *(ushort*)(Pack + (Packet.Length - 8)) = 0;
  28.                 *((ushort*)(Pack + 2)) = 1070;
  29.             }
  30.         }
  31.         public Mode Action
  32.         {
  33.             get { return (Mode)Packet[4]; }
  34.             set { fixed (byte* Pack = Packet) *((byte*)(Pack + 4)) = (byte)value; }
  35.         }
  36.         public ushort Icon
  37.         {
  38.             get { return BitConverter.ToUInt16(Packet, 6); }
  39.             set { fixed (byte* Pack = Packet) *((ushort*)(Pack + 6)) = value; }
  40.         }
  41.         public ulong EXPGained
  42.         {
  43.             get { return BitConverter.ToUInt64(Packet, 14); }
  44.             set { fixed (byte* Pack = Packet) *((ulong*)(Pack + 14)) = value; }
  45.         }
  46.         public uint Unknown
  47.         {
  48.             get { return BitConverter.ReadUint(Packet, 22); }
  49.             set { fixed (byte* Pack = Packet) *((uint*)(Pack + 22)) = value; }
  50.         }
  51.         public string KilledName
  52.         {
  53.             set { Writer.WriteStringWithLength(value, 23, Packet); }
  54.         }
  55.         public byte[] ToArray()
  56.         {
  57.             fixed (void* Pack = Packet)
  58.                 return Packet;
  59.         }
  60.         public void Deserialize(byte[] Pack)
  61.         {
  62.             Packet = Pack;
  63.         }
  64.         public static void Looter(GameState client)
  65.         {
  66.             if (client.Inventory.Count <= 38)
  67.             {
  68.                 return;
  69.             }
  70.             else
  71.             {
  72.                 client.Send(Constants.FullInventory);
  73.             }
  74.          
  75.            
  76.             if (client.Inventory.Count > 39)
  77.             {
  78.  
  79.                 if (client.Entity.VIPLevel >= 4)
  80.                 {
  81.                     if (client.Inventory.Count < 40)
  82.                     {
  83.                         foreach (var obj in client.Screen.Objects)
  84.                         {
  85.                             if (obj.MapObjType == MapObjectType.Item)
  86.                             {
  87.                                 var floorItem = obj as FloorItem;
  88.                                 if (floorItem == null) continue;
  89.                                 if (floorItem.ValueType == FloorItem.FloorValueType.Money)
  90.                                 {
  91.                                     client.Send(Constants.PickupGold(floorItem.Value));
  92.                                     client.SendScreen(floorItem, false);
  93.                                     client.Entity.Money += floorItem.Value;
  94.                                     floorItem.Type = 2;
  95.                                     client.RemoveScreenSpawn(floorItem, true);
  96.                                 }
  97.                                 if (floorItem.ValueType == FloorItem.FloorValueType.Item)
  98.                                 {
  99.                                     if (floorItem.ItemID == 729911 || floorItem.ItemID == 3001133 || floorItem.ItemID == 729912 || floorItem.ItemID == 3001134 || floorItem.ItemID == 729911 ||
  100.                                         floorItem.ItemID == 3001135 || floorItem.ItemID == 720663)
  101.                                     {
  102.                                         client.Inventory.Add(floorItem.Item, Enums.ItemUse.CreateAndAdd);
  103.                                     }
  104.                                     if (floorItem.ItemID == FloorItem.FlameLotus || floorItem.ItemID == FloorItem.AuroraLotus) return;
  105.                                     if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, floorItem.X, floorItem.Y) <= 15)
  106.                                     {
  107.                                         if (floorItem.Owner == null) continue;
  108.                                         if (floorItem.Owner == client)
  109.                                         {
  110.                                             Data data = new Data(true);
  111.                                             data.ID = Data.Jump;
  112.                                             data.dwParam = (uint)((floorItem.Y << 16) | floorItem.X);
  113.                                             data.X = floorItem.X;
  114.                                             data.Y = floorItem.Y;
  115.                                             data.UID = client.Entity.UID;
  116.                                             client.SendScreen(data);
  117.                                             client.Entity.X = floorItem.X;
  118.                                             client.Entity.Y = floorItem.Y;
  119.                                             if (client.Entity.X == floorItem.X && client.Entity.Y == floorItem.Y)
  120.                                             {
  121.                                                 FloorItem item = new FloorItem(true);
  122.                                                 item.Type = 3;
  123.                                                 item.UID = client.Entity.UID;
  124.                                                 item.X = floorItem.X;
  125.                                                 item.Y = floorItem.Y;
  126.                                                 if (client.Inventory.Count > 39)
  127.                                                 {
  128.                                                     client.Send(Constants.FullInventory);
  129.                                                     return;
  130.                                                 }
  131.                                                 client.SendScreen(item, false);
  132.                                                 floorItem.Type = 2;
  133.                                                 client.RemoveScreenSpawn(floorItem, true);
  134.                                                 client.Map.RemoveFloorItem(floorItem);
  135.                                                 if (floorItem.Item != null)
  136.                                                     if (floorItem.Item.ID != 0)
  137.                                                     {
  138.                                                         if (ConquerItemInformation.BaseInformations.ContainsKey(floorItem.Item.ID))
  139.                                                             client.Send(Constants.PickupItem(ConquerItemInformation.BaseInformations[floorItem.Item.ID].Name));
  140.                                                     }
  141.                                                 foreach (GameState state in Kernel.GamePool.Values)
  142.                                                 {
  143.                                                     state.Screen.Remove(floorItem);
  144.                                                 }
  145.                                                 if (floorItem.Item != null)
  146.                                                     if (floorItem.Item.MobDropped)
  147.                                                     {
  148.                                                         ConquerItemInformation iteminfo = new ConquerItemInformation(floorItem.Item.ID, floorItem.Item.Plus);
  149.                                                         if (floorItem.ItemID == 729911 || floorItem.ItemID == 3001133 || floorItem.ItemID == 729912 || floorItem.ItemID == 3001134 || floorItem.ItemID == 729911 ||
  150.                                         floorItem.ItemID == 3001135 || floorItem.ItemID == 720663)
  151.                                                         {
  152.                                                             client.Inventory.Add(floorItem.Item, Enums.ItemUse.CreateAndAdd);
  153.                                                         }
  154.                                                         if (iteminfo.BaseInformation.StackSize == 0)
  155.                                                         {
  156.                                                             client.Inventory.Add(floorItem.Item, Enums.ItemUse.CreateAndAdd);
  157.                                                         }
  158.                                                         else
  159.                                                         {
  160.                                                             ConquerItem _ExistingItem;
  161.                                                             if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
  162.                                                             {
  163.                                                                 _ExistingItem.StackSize++;
  164.                                                                 _ExistingItem.MaxStackSize = iteminfo.BaseInformation.StackSize;
  165.                                                                 ConquerItemTable.UpdateStack(_ExistingItem);
  166.                                                                 _ExistingItem.Mode = Enums.ItemMode.Update;
  167.                                                                 _ExistingItem.Send(client);
  168.                                                             }
  169.                                                             else
  170.                                                             {
  171.                                                                 client.Inventory.Add(floorItem.Item, Enums.ItemUse.CreateAndAdd);
  172.                                                             }
  173.                                                         }
  174.                                                     }
  175.                                             }
  176.                                         }
  177.                                     }
  178.                                 }
  179.                             }
  180.                         }
  181.                     }
  182.                 }
  183.                 client.Send(Constants.FullInventory);
  184.                 return;
  185.             }
  186.         }
  187.         public static void Process(byte[] packet, Client.GameState client)
  188.         {
  189.             AutoHunt AutoHunt = new AutoHunt();
  190.             AutoHunt.Deserialize(packet);
  191.             switch (AutoHunt.Action)
  192.             {
  193.                 case AutoHunt.Mode.Start:
  194.                     {
  195.                         AutoHunt.Action = AutoHunt.Mode.Start;
  196.                         client.Entity.AddFlag3((ulong)Update.Flags3.AutoHunting);
  197.                         client.Entity.AutoHuntEXP = 0;
  198.                         client.Entity.InAutoHunt = true;
  199.                         break;
  200.                     }
  201.                 case AutoHunt.Mode.EndAuto:
  202.                     {
  203.                         AutoHunt.Action = AutoHunt.Mode.EndAuto;
  204.                         AutoHunt.EXPGained = client.Entity.AutoHuntEXP;
  205.                         client.IncreaseExperience(client.Entity.AutoHuntEXP, false);
  206.                         client.Entity.RemoveFlag3((ulong)Update.Flags3.AutoHunting);
  207.                         client.Entity.AutoHuntEXP = 0;
  208.                         client.Entity.InAutoHunt = false;
  209.                         break;
  210.                     }
  211.                 case AutoHunt.Mode.EXPGained:
  212.                     {
  213.                         AutoHunt.Action = AutoHunt.Mode.EXPGained;
  214.                         AutoHunt.EXPGained = client.Entity.AutoHuntEXP;
  215.                         client.IncreaseExperience(client.Entity.AutoHuntEXP, false);
  216.                         client.Entity.RemoveFlag3((ulong)Update.Flags3.AutoHunting);
  217.                         client.Entity.AutoHuntEXP = 0;
  218.                         client.Entity.InAutoHunt = false;
  219.                         break;
  220.                     }
  221.                 default: System.Console.WriteLine("[AutoHunt] Unknown Action: " + AutoHunt.Action + ""); break;
  222.             }
  223.             client.Send(AutoHunt.ToArray());
  224.         }
  225.     }
  226. }
  227.  
  228. ===========================================================
  229. En MsgHandler.cs o PacketHandler.cs Pegaran (PacketSection)
  230. AutoHunt.Process(packet, client);
  231. ===========================================================
  232. en GameState / GameClient buscamos : void IncreaseExp y dentro de la Variable buscaran algo asi :
  233. if (Entity.Level < 140) y debajo pegaran :
  234.  if (Entity.InAutoHunt)//Si les da Error lo cambian por InHangUp
  235.                 {
  236.                     Entity.AutoHuntEXP += experience;
  237.                 }
  238. ===========================================================
  239.  
  240. Nada Mas! Todos los derechos reservados Pezzi Tomas 2020! C#
RAW Paste Data