Advertisement
Makishima

nocd refund botrk exploit heyk

Nov 12th, 2014
1,225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.88 KB | None | 0 0
  1. //rito beni ise al .s.s
  2.  
  3. #region
  4.  
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using LeagueSharp;
  9. using LeagueSharp.Common;
  10.  
  11. #endregion
  12.  
  13. namespace RefundExploiter
  14. {
  15. internal class Program
  16. {
  17. public static Menu Menu;
  18.  
  19. public static List<int> Consumables = new List<int> { 2003, 2004, 2009, 2010, 2037, 2039, 2043, 2044, 2047 };
  20. public static List<int> NoCD = new List<int> { 3074, 3140, 3153, };
  21.  
  22. public static int RefundItemId = 0;
  23. private static byte RefundInventorySlot;
  24.  
  25. public static bool Swapped = false;
  26. public static bool Refunded = false;
  27. public static bool BotrkInSlot = false;
  28.  
  29. private static void Main(string[] args)
  30. {
  31. CustomEvents.Game.OnGameLoad += Game_OnGameLoad;
  32. }
  33.  
  34. private static void Game_OnGameLoad(EventArgs args)
  35. {
  36. Menu = new Menu("RefundExploiter", "RefundExploiter", true);
  37. Menu.AddItem(new MenuItem("Enabled", "Enabled").SetValue(false));
  38. Menu.AddItem(new MenuItem("Consumables", "Exploit Consumables").SetValue(true));
  39. Menu.AddItem(new MenuItem("NoCD", "Exploit No-CD Items").SetValue(true));
  40. Menu.AddItem(new MenuItem("Cast", "Cast").SetValue(new KeyBind(32, KeyBindType.Press)));
  41. Menu.AddToMainMenu();
  42.  
  43. Game.OnGameProcessPacket += Game_OnGameProcessPacket;
  44. Game.OnGameUpdate += Game_OnGameUpdate;
  45. Game.PrintChat("Refund Exploit by Trees and blm95 loaded!");
  46. //rito hire me pls
  47. }
  48.  
  49. private static void Game_OnGameUpdate(EventArgs args)
  50. {
  51. if (!BotrkInSlot || !Menu.Item("Cast").GetValue<KeyBind>().Active)
  52. {
  53. return;
  54. }
  55.  
  56. ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
  57.  
  58. foreach (var p in
  59. ObjectManager.Get<Obj_AI_Hero>()
  60. .Where(h => h.IsValidTarget(500))
  61. .Select(enemy => new Packet.C2S.Cast.Struct(enemy.NetworkId, SpellSlot.Trinket)))
  62. {
  63. Packet.C2S.Cast.Encoded(p).Send();
  64. }
  65. }
  66.  
  67. private static void Game_OnGameProcessPacket(GamePacketEventArgs args)
  68. {
  69. if (!Menu.Item("Enabled").GetValue<bool>())
  70. {
  71. return;
  72. }
  73.  
  74. if (args.PacketData[0] == Packet.S2C.BuyItemAns.Header)
  75. {
  76. var dp = Packet.S2C.BuyItemAns.Decoded(args.PacketData);
  77. if (dp.SpellSlot == SpellSlot.Trinket)
  78. {
  79. return;
  80. }
  81.  
  82. if ((Consumables.Contains(dp.Item.Id) && Menu.Item("Consumables").GetValue<bool>()))
  83. {
  84. Refunded = true;
  85. Packet.C2S.Undo.Encoded().Send();
  86. }
  87. else if (NoCD.Contains(dp.Item.Id) && Menu.Item("NoCD").GetValue<bool>())
  88. {
  89. Refunded = true;
  90. RefundItemId = dp.Item.Id;
  91. RefundInventorySlot = dp.InventorySlot;
  92. Packet.C2S.Undo.Encoded().Send();
  93. }
  94. }
  95. else if (args.PacketData[0] == Packet.MultiPacket.Header &&
  96. args.PacketData[5] == Packet.MultiPacket.UndoConfirm.SubHeader && Refunded)
  97. {
  98. Refunded = false;
  99.  
  100. if (RefundItemId == 0) // consumable item
  101. {
  102. args.Process = false;
  103. return;
  104. }
  105.  
  106. if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Trinket).Name == "nospelldata")
  107. {
  108. SwapToTrinket();
  109. return;
  110. }
  111.  
  112. SellTrinket();
  113. }
  114. else if (args.PacketData[0] == Packet.S2C.SwapItemAns.Header && RefundItemId != 0 && Swapped)
  115. {
  116. var dp = Packet.S2C.SwapItemAns.Decoded(args.PacketData);
  117. if (dp.ToInventorySlot == 6)
  118. {
  119. RecvItemToTrinket(RefundItemId);
  120. RefundItemId = 0;
  121. RefundInventorySlot = 0;
  122. Swapped = false;
  123. }
  124. }
  125. else if (args.PacketData[0] == Packet.S2C.SellItemAns.Header)
  126. {
  127. var dp = Packet.S2C.SellItemAns.Decoded(args.PacketData);
  128. if (dp.SpellSlot == SpellSlot.Trinket)
  129. {
  130. SwapToTrinket();
  131. }
  132. }
  133. }
  134.  
  135. private static void SellTrinket(int networkId = -1)
  136. {
  137. var p = new GamePacket(0x9);
  138. p.WriteInteger(networkId == -1 ? ObjectManager.Player.NetworkId : networkId);
  139. p.WriteByte(6);
  140. p.WriteByte(0);
  141. p.Send();
  142. }
  143.  
  144. private static void SwapToTrinket()
  145. {
  146. Swapped = true;
  147. BotrkInSlot = true;
  148. Packet.C2S.SwapItem.Encoded(new Packet.C2S.SwapItem.Struct(RefundInventorySlot, 6)).Send();
  149. }
  150.  
  151. private static void RecvItemToTrinket(int id)
  152. {
  153. var trinketId = 0;
  154. switch (Game.MapId)
  155. {
  156. case GameMapId.SummonersRift:
  157. trinketId = 3340;
  158. break;
  159. case GameMapId.CrystalScar:
  160. trinketId = 3345;
  161. break;
  162. case GameMapId.HowlingAbyss:
  163. trinketId = 2052;
  164. break;
  165. case GameMapId.TwistedTreeline:
  166. return;
  167. }
  168.  
  169. Packet.S2C.BuyItemAns.Encoded(new Packet.S2C.BuyItemAns.Struct(trinketId, 6, 0xA9)).Process();
  170. }
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement