Advertisement
alexdubovyck

Энсейдж скрипт

Dec 22nd, 2017
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Ensage;
  5. using Ensage.Common;
  6. using Ensage.Common.Extensions;
  7. using Ensage.Common.Menu;
  8.  
  9. namespace Bounty_Hunter
  10. {
  11. internal class Program
  12. {
  13.  
  14. private static bool _active, _rActive;
  15. private static Ability _q, _r;
  16. private static Hero _me, _e;
  17. private static Item _urn, _ethereal, _dagon, _halberd, _mjollnir, _orchid, _abyssal, _mom, _shiva, _mail, _bkb, _satanic, _medall;
  18. private static readonly Menu Menu = new Menu("BountyHunter", "BountyHunter", true, "npc_dota_hero_bounty_hunter");
  19.  
  20. private static void OnLoadEvent(object sender, EventArgs args)
  21. {
  22. if (ObjectManager.LocalHero.ClassId != ClassId.CDOTA_Unit_Hero_BountyHunter) return;
  23. Menu.AddItem(new MenuItem("enabled", "Enabled").SetValue(true));
  24. Menu.AddItem(new MenuItem("orbwalk", "orbwalk").SetValue(true));
  25. Menu.AddItem(new MenuItem("keyBind", "Combo key").SetValue(new KeyBind('D', KeyBindType.Press)));
  26.  
  27. Menu.AddItem(new MenuItem("KeyR", "Use Auto Track").SetValue(new KeyBind('R', KeyBindType.Toggle)));
  28. Menu.AddItem(
  29. new MenuItem("Skills", "Skills").SetValue(new AbilityToggler(new Dictionary<string, bool>
  30. {
  31. {"bounty_hunter_track", true},
  32. {"bounty_hunter_shuriken_toss", true}
  33. })));
  34. Menu.AddItem(
  35. new MenuItem("Items", "Items:").SetValue(new AbilityToggler(new Dictionary<string, bool>
  36. {
  37. {"item_mask_of_madness", true},
  38. {"item_heavens_halberd", true},
  39. {"item_mjollnir", true},
  40. {"item_orchid", true}, {"item_bloodthorn", true},
  41. {"item_urn_of_shadows", true},
  42. {"item_ethereal_blade", true},
  43. {"item_veil_of_discord", true},
  44. {"item_abyssal_blade", true},
  45. {"item_shivas_guard", true},
  46. {"item_blade_mail", true},
  47. {"item_black_king_bar", true},
  48. {"item_satanic", true},
  49. {"item_medallion_of_courage", true},
  50. {"item_solar_crest", true}
  51. })));
  52. Menu.AddItem(new MenuItem("Heel", "Min targets to BKB").SetValue(new Slider(2, 1, 5)));
  53. Menu.AddItem(new MenuItem("Heelm", "Min targets to BladeMail").SetValue(new Slider(2, 1, 5)));
  54. Menu.AddToMainMenu();
  55. Game.OnUpdate += Game_OnUpdate;
  56. }
  57. private static void OnCloseEvent(object sender, EventArgs args)
  58. {
  59. Game.OnUpdate -= Game_OnUpdate;
  60. Menu.RemoveFromMainMenu();
  61. } // OnClose
  62. static void Main()
  63. {
  64. Events.OnLoad += OnLoadEvent;
  65. Events.OnClose += OnCloseEvent;
  66. }
  67.  
  68. public static void Game_OnUpdate(EventArgs args)
  69. {
  70. _me = ObjectManager.LocalHero;
  71. if (!Game.IsInGame || _me == null || _me.ClassId != ClassId.CDOTA_Unit_Hero_BountyHunter) return;
  72. if (!Menu.Item("enabled").IsActive())
  73. return;
  74.  
  75. _active = Game.IsKeyDown(Menu.Item("keyBind").GetValue<KeyBind>().Key);
  76.  
  77. _rActive = Menu.Item("KeyR").GetValue<KeyBind>().Active;
  78. _q = _me.Spellbook.SpellQ;
  79. _r = _me.Spellbook.SpellR;
  80.  
  81.  
  82.  
  83. var enemies = ObjectManager.GetEntities<Hero>()
  84. .Where(x => x.Team != _me.Team && x.IsAlive && x.IsVisible && !x.IsIllusion && !x.IsMagicImmune())
  85. .ToList();
  86. if (_active)
  87. {
  88. _e = _me.ClosestToMouseTarget(1800);
  89. if (_e == null)
  90. return;
  91. _mom = _me.FindItem("item_mask_of_madness");
  92. _urn = _me.FindItem("item_urn_of_shadows");
  93. _dagon = _me.Inventory.Items.FirstOrDefault(x => x.Name.Contains("item_dagon"));
  94. _ethereal = _me.FindItem("item_ethereal_blade");
  95. _halberd = _me.FindItem("item_heavens_halberd");
  96. _mjollnir = _me.FindItem("item_mjollnir");
  97. _orchid = _me.FindItem("item_orchid") ?? _me.FindItem("item_bloodthorn");
  98. _abyssal = _me.FindItem("item_abyssal_blade");
  99. _mail = _me.FindItem("item_blade_mail");
  100. _bkb = _me.FindItem("item_black_king_bar");
  101. _satanic = _me.FindItem("item_satanic");
  102. _medall = _me.FindItem("item_medallion_of_courage") ?? _me.FindItem("item_solar_crest");
  103. _shiva = _me.FindItem("item_shivas_guard");
  104.  
  105. if (Menu.Item("orbwalk").GetValue<bool>() && _me.Distance2D(_e) <= 1900)
  106. {
  107. Orbwalking.Orbwalk(_e, 0, 1600, true, true);
  108. }
  109. if (_active && _me.Distance2D(_e) <= 1400 && _e != null && _e.IsAlive && !_me.IsInvisible())
  110. {
  111. if (
  112. _q != null && _q.CanBeCasted() && _me.Distance2D(_e) <= 1500
  113. &&
  114. Menu.Item("Skills").GetValue<AbilityToggler>().IsEnabled(_q.Name)
  115. && Utils.SleepCheck("Q")
  116. )
  117. {
  118. _q.UseAbility(_e);
  119. Utils.Sleep(200, "Q");
  120. }
  121. if (
  122. _r != null && _r.CanBeCasted() && _me.Distance2D(_e) <= 1500
  123. && Menu.Item("Skills").GetValue<AbilityToggler>().IsEnabled(_r.Name)
  124. && !_me.HasModifier("modifier_bounty_hunter_wind_walk")
  125. && !_me.IsChanneling()
  126. && Utils.SleepCheck("R")
  127. )
  128. {
  129. _r.UseAbility(_e);
  130. Utils.Sleep(200, "R");
  131. }
  132.  
  133. if ( // MOM
  134. _mom != null
  135. && _mom.CanBeCasted()
  136. && _me.CanCast()
  137. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_mom.Name)
  138. && Utils.SleepCheck("mom")
  139. && _me.Distance2D(_e) <= 700
  140. )
  141. {
  142. _mom.UseAbility();
  143. Utils.Sleep(250, "mom");
  144. }
  145. if ( // Mjollnir
  146. _mjollnir != null
  147. && _mjollnir.CanBeCasted()
  148. && _me.CanCast()
  149. && !_e.IsMagicImmune()
  150. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_mjollnir.Name)
  151. && Utils.SleepCheck("mjollnir")
  152. && _me.Distance2D(_e) <= 900
  153. )
  154. {
  155. _mjollnir.UseAbility(_me);
  156. Utils.Sleep(250, "mjollnir");
  157. } // Mjollnir Item end
  158. if ( // Medall
  159. _medall != null
  160. && _medall.CanBeCasted()
  161. && Utils.SleepCheck("Medall")
  162. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_medall.Name)
  163. && _me.Distance2D(_e) <= 700
  164. )
  165. {
  166. _medall.UseAbility(_e);
  167. Utils.Sleep(250, "Medall");
  168. } // Medall Item end
  169. if ( // Hellbard
  170. _halberd != null
  171. && _halberd.CanBeCasted()
  172. && _me.CanCast()
  173. && !_e.IsMagicImmune()
  174. && (_e.NetworkActivity == NetworkActivity.Attack
  175. || _e.NetworkActivity == NetworkActivity.Crit
  176. || _e.NetworkActivity == NetworkActivity.Attack2)
  177. && Utils.SleepCheck("halberd")
  178. && _me.Distance2D(_e) <= 700
  179. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_halberd.Name)
  180. )
  181. {
  182. _halberd.UseAbility(_e);
  183. Utils.Sleep(250, "halberd");
  184. }
  185. if (_orchid != null && _orchid.CanBeCasted() && _me.Distance2D(_e) <= 900 &&
  186. Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_orchid.Name) && Utils.SleepCheck("orchid"))
  187. {
  188. _orchid.UseAbility(_e);
  189. Utils.Sleep(100, "orchid");
  190. }
  191.  
  192. if (_shiva != null && _shiva.CanBeCasted() && _me.Distance2D(_e) <= 600
  193. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_shiva.Name)
  194. && !_e.IsMagicImmune() && Utils.SleepCheck("Shiva"))
  195. {
  196. _shiva.UseAbility();
  197. Utils.Sleep(100, "Shiva");
  198. }
  199.  
  200. if (_ethereal != null && _ethereal.CanBeCasted()
  201. && _me.Distance2D(_e) <= 700 && _me.Distance2D(_e) <= 400
  202. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_ethereal.Name) &&
  203. Utils.SleepCheck("ethereal"))
  204. {
  205. _ethereal.UseAbility(_e);
  206. Utils.Sleep(100, "ethereal");
  207. }
  208.  
  209. if (_dagon != null
  210. && _dagon.CanBeCasted()
  211. && _me.Distance2D(_e) <= 500
  212. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled("item_dagon")
  213. && Utils.SleepCheck("dagon"))
  214. {
  215. _dagon.UseAbility(_e);
  216. Utils.Sleep(100, "dagon");
  217. }
  218. if ( // Abyssal Blade
  219. _abyssal != null
  220. && _abyssal.CanBeCasted()
  221. && _me.CanCast()
  222. && !_e.IsStunned()
  223. && !_e.IsHexed()
  224. && Utils.SleepCheck("abyssal")
  225. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_abyssal.Name)
  226. && _me.Distance2D(_e) <= 400
  227. )
  228. {
  229. _abyssal.UseAbility(_e);
  230. Utils.Sleep(250, "abyssal");
  231. } // Abyssal Item end
  232. if (_urn != null && _urn.CanBeCasted() && _urn.CurrentCharges > 0 && _me.Distance2D(_e) <= 400
  233. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_urn.Name) && Utils.SleepCheck("urn"))
  234. {
  235. _urn.UseAbility(_e);
  236. Utils.Sleep(240, "urn");
  237. }
  238. if ( // Satanic
  239. _satanic != null &&
  240. _me.Health <= (_me.MaximumHealth * 0.3) &&
  241. _satanic.CanBeCasted() &&
  242. _me.Distance2D(_e) <= _me.AttackRange + 50
  243. && Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_satanic.Name)
  244. && Utils.SleepCheck("satanic")
  245. )
  246. {
  247. _satanic.UseAbility();
  248. Utils.Sleep(240, "satanic");
  249. } // Satanic Item end
  250. if (_mail != null && _mail.CanBeCasted() && (enemies.Count(x => x.Distance2D(_me) <= 650) >=
  251. (Menu.Item("Heelm").GetValue<Slider>().Value)) &&
  252. Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_mail.Name) && Utils.SleepCheck("mail"))
  253. {
  254. _mail.UseAbility();
  255. Utils.Sleep(100, "mail");
  256. }
  257. if (_bkb != null && _bkb.CanBeCasted() && (enemies.Count(x => x.Distance2D(_me) <= 650) >=
  258. (Menu.Item("Heel").GetValue<Slider>().Value)) &&
  259. Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(_bkb.Name) && Utils.SleepCheck("bkb"))
  260. {
  261. _bkb.UseAbility();
  262. Utils.Sleep(100, "bkb");
  263. }
  264. }
  265. }
  266.  
  267. if (_rActive && _me.IsAlive && _r != null && _r.CanBeCasted())
  268. if (!_me.HasModifier("modifier_bounty_hunter_wind_walk") || _me.IsVisibleToEnemies)
  269. foreach (var v in enemies)
  270. {
  271. var checkMod = v.Modifiers.Where(y => y.Name == "modifier_bounty_hunter_track").DefaultIfEmpty(null).FirstOrDefault();
  272. var invItem = v.FindItem("item_glimmer_cape") ?? v.FindItem("item_invis_sword") ?? v.FindItem("item_silver_edge") ?? v.FindItem("item_glimmer_cape");
  273. if (
  274. ((v.ClassId == ClassId.CDOTA_Unit_Hero_Riki || v.ClassId == ClassId.CDOTA_Unit_Hero_Broodmother
  275. || v.ClassId == ClassId.CDOTA_Unit_Hero_Clinkz || v.ClassId == ClassId.CDOTA_Unit_Hero_Invoker
  276. || v.ClassId == ClassId.CDOTA_Unit_Hero_SandKing || v.ClassId == ClassId.CDOTA_Unit_Hero_TemplarAssassin
  277. || v.ClassId == ClassId.CDOTA_Unit_Hero_Treant || v.ClassId == ClassId.CDOTA_Unit_Hero_PhantomLancer
  278. )
  279. || (
  280. v.Modifiers.Any(x =>
  281. (x.Name == "modifier_riki_permanent_invisibility"
  282. || x.Name == "modifier_mirana_moonlight_shadow"
  283. || x.Name == "modifier_treant_natures_guise"
  284. || x.Name == "modifier_weaver_shukuchi"
  285. || x.Name == "modifier_broodmother_spin_web_invisible_applier"
  286. || x.Name == "modifier_item_invisibility_edge_windwalk"
  287. || x.Name == "modifier_rune_invis"
  288. || x.Name == "modifier_clinkz_wind_walk"
  289. || x.Name == "modifier_item_shadow_amulet_fade"
  290. || x.Name == "modifier_item_silver_edge_windwalk"
  291. || x.Name == "modifier_item_edge_windwalk"
  292. || x.Name == "modifier_nyx_assassin_vendetta"
  293. || x.Name == "modifier_invisible"
  294. || x.Name == "modifier_invoker_ghost_walk_enemy")))
  295. || (invItem != null && invItem.Cooldown <= 0)
  296. || v.Health <= (v.MaximumHealth * 0.5))
  297. && _me.Distance2D(v) <= _r.GetCastRange() + _me.HullRadius
  298. && (!v.HasModifier("modifier_bounty_hunter_track") || checkMod != null && checkMod.RemainingTime <= 2)
  299. && Utils.SleepCheck("R"))
  300. {
  301. _r.UseAbility(v);
  302. Utils.Sleep(300, "R");
  303. }
  304. }
  305. }
  306.  
  307. }
  308. }
  309. на заметку
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement