本文整理汇总了C#中Hero.Distance2D方法的典型用法代码示例。如果您正苦于以下问题:C# Hero.Distance2D方法的具体用法?C# Hero.Distance2D怎么用?C# Hero.Distance2D使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hero
的用法示例。
在下文中一共展示了Hero.Distance2D方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Game_OnUpdate
public static void Game_OnUpdate(EventArgs args)
{
me = ObjectManager.LocalHero;
if (me.ClassID != ClassID.CDOTA_Unit_Hero_Axe)
return;
if (me == null)
return;
if (Blink == null)
Blink = me.FindItem("item_blink");
if (Chop == null)
Chop = me.Spellbook.Spell4;
if (me.HasItem(ClassID.CDOTA_Item_UltimateScepter))
{
_chopDmg = new int[3] { 300, 425, 550 };
}
else
{
_chopDmg = new int[3] { 250, 325, 400 };
}
var ChopDmg = _chopDmg[Chop.Level - 1];
if (Menu.Item("toggle").GetValue<bool>())
{
var enemies = ObjectMgr.GetEntities<Hero>().Where(x => x.IsVisible && x.IsAlive && !x.IsIllusion && x.Team != me.Team && x.Health <= ChopDmg).ToList();
foreach (var hero in enemies)
{
var distance = me.Distance2D(hero);
if (target == null || distance < minimumDistance)
{
target = hero;
}
}
if (target != null && Utils.SleepCheck("chop") && Chop.CanBeCasted() && me.IsAlive && target.IsAlive)
{
if (Blink != null && me.Distance2D(target) > 400 && me.Distance2D(target) < Blink.CastRange && Utils.SleepCheck("blink") && Blink.CanBeCasted() && me.Health > 250)
{
Blink.UseAbility(target.Position);
Utils.Sleep(150 + Game.Ping, "blink");
}
else
{
if (target != null && Chop != null)
{
Chop.UseAbility(target);
target = null;
Utils.Sleep(150 + Game.Ping, "chop");
}
}
}
}
}
示例2: Game_OnUpdate
private static void Game_OnUpdate(EventArgs args)
{
if (target == null) return;
if (!_loaded)
{
if (!Game.IsInGame || me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_PhantomAssassin)
{
return;
}
}
_loaded = true;
Game.PrintMessage(
"<font face='Comic Sans MS, cursive'><font color='#00aaff'>" + Menu.DisplayName + " By Bopby" +
" loaded!</font> <font color='#aa0000'>v" + Assembly.GetExecutingAssembly().GetName().Version,
MessageType.LogMessage);
me = ObjectMgr.LocalHero;
target = me.ClosestToMouseTarget(Menu.Item("targetsearchrange").GetValue<Slider>().Value);
var handle = me.Handle;
var distance = me.Distance2D(target);
var inv = me.Inventory.Items;
var enumerable = inv as Item[] ?? inv.ToArray();
var dagger = enumerable.Any(x => x.Name == "item_blink" && x.Cooldown == 0);
if (!me.IsAlive) return
;
if (target != null && Menu.Item("keyBind").GetValue<KeyBind>().Active == true)
{
SpellsUsage(me, target, distance, dagger);
}
}
示例3: Game_OnUpdate
public static void Game_OnUpdate(EventArgs args)
{
if (!Game.IsInGame)
return;
me = ObjectMgr.LocalHero;
if (Menu.Item("toggle").GetValue<bool>())
{
var dagon = me.Inventory.Items.FirstOrDefault(x => x.Name.Contains("item_dagon"));
var enemy = ObjectMgr.GetEntities<Hero>()
.Where(x => x.Team != me.Team && x.IsAlive && x.IsVisible && !x.IsIllusion && !x.UnitState.HasFlag(UnitState.MagicImmune))
.ToList();
foreach (var i in enemy)
{
var linken = i.Inventory.Items.FirstOrDefault(x => x.Name == "item_sphere");
var sphere = i.Modifiers.Any(x => x.Name == "modifier_item_sphere_target");
var ta = i.Modifiers.Any(x => x.Name == "modifier_templar_assassin_refraction_damage");
var dazzle = i.Modifiers.Any(x => x.Name == "modifier_dazzle_shallow_grave");
var abaddon = i.Modifiers.Any(x => x.Name == "modifier_abaddon_borrowed_time");
var bm = i.Modifiers.Any(x => x.Name == "modifier_item_blade_mail_reflect");
var pipe = i.Modifiers.Any(x => x.Name == "modifier_item_pipe_barrier");
if (dagon.CanBeCasted() && Utils.SleepCheck("dagon"))
{
if ((linken != null && linken.Cooldown == 0) || (sphere || ta || dazzle || abaddon || bm || pipe || i.IsMagicImmune()))
return;
var range = DagonRange[dagon.Level - 1];
var damage = Math.Floor(DagonRange[dagon.Level - 1] * (1 - i.MagicDamageResist));
if (me.Distance2D(i) < range && i.Health < damage)
dagon.UseAbility(i);
}
}
}
}
示例4: GetComplexDamage
private static double GetComplexDamage(uint level, Hero enemy, Hero me, double damage)
{
switch (me.ClassID)
{
case ClassID.CDOTA_Unit_Hero_AntiMage:
return Math.Floor((enemy.MaximumMana - enemy.Mana)*damage);
case ClassID.CDOTA_Unit_Hero_DoomBringer:
var lvldeath = new[] {new[] { 6, 125 }, new[] { 5, 175 }, new[] { 4, 225 }, new[] { 3, 275 }};
return Math.Floor((enemy.Level == 25 || enemy.Level % lvldeath[level][0] == 0) ? (enemy.MaximumHealth * 0.20 + lvldeath[level][1]) : (lvldeath[level][1]));
case ClassID.CDOTA_Unit_Hero_Mirana:
if (me.Distance2D(enemy) < 200)
return (damage * 1.75);
return damage;
case ClassID.CDOTA_Unit_Hero_Necrolyte:
return Math.Floor((enemy.MaximumHealth - enemy.Health) * damage);
case ClassID.CDOTA_Unit_Hero_Nyx_Assassin:
var tempBurn = damage*Math.Floor(enemy.TotalIntelligence);
return enemy.Mana < tempBurn ? enemy.Mana : tempBurn;
case ClassID.CDOTA_Unit_Hero_Obsidian_Destroyer:
if (me.TotalIntelligence > enemy.TotalIntelligence)
return ((Math.Floor(me.TotalIntelligence) - Math.Floor(enemy.TotalIntelligence))*damage);
return 0;
case ClassID.CDOTA_Unit_Hero_Elder_Titan:
var pasDmg = new[] {1.12, 1.19, 1.25, 1.25};
var pas = me.Spellbook.Spell3.Level;
if (pas != 0)
{
if (enemy.Modifiers.FirstOrDefault(modifier => modifier.Name == "modifier_elder_titan_natural_order") == null)
return (pasDmg[pas] * damage);
return damage;
}
return damage;
case ClassID.CDOTA_Unit_Hero_Shadow_Demon:
var actDmg = new[] {1, 2, 4, 8, 16};
var poison = enemy.Modifiers.FirstOrDefault(modifier => modifier.Name == "modifier_shadow_demon_shadow_poison");
if (poison != null)
{
var poisonStack = poison.StackCount;
if (poisonStack != 0 && poisonStack < 6)
return (actDmg[poisonStack])*damage;
if (poisonStack > 5)
return (damage * 16) + ((poisonStack - 5) * 50);
}
return 0;
case ClassID.CDOTA_Unit_Hero_Legion_Commander:
var bonusCreep = new[] {14, 16, 18, 20};
var bonusHero = new[] {20, 35, 50, 65};
var heroDmg = ObjectMgr.GetEntities<Hero>().Where(hero => hero.IsAlive && hero.Team == me.GetEnemyTeam() && hero.IsVisible && hero.Health > 0 && enemy.Distance2D(hero) < 330).ToList().Count * bonusHero[level];
var creepDmg = ObjectMgr.GetEntities<Unit>().Where(unit => ((unit.ClassID == ClassID.CDOTA_BaseNPC_Creep && unit.ClassID != ClassID.CDOTA_BaseNPC_Creature && !unit.IsAncient) || unit.ClassID == ClassID.CDOTA_Unit_VisageFamiliar || unit.ClassID == ClassID.CDOTA_Unit_Undying_Zombie || unit.ClassID == ClassID.CDOTA_Unit_SpiritBear || unit.ClassID == ClassID.CDOTA_Unit_Broodmother_Spiderling || unit.ClassID == ClassID.CDOTA_Unit_Hero_Beastmaster_Boar || unit.ClassID == ClassID.CDOTA_Unit_Hero_Beastmaster_Hawk || unit.ClassID == ClassID.CDOTA_BaseNPC_Invoker_Forged_Spirit) && unit.Team != me.Team && unit.IsAlive && unit.IsVisible && unit.Health > 0 && enemy.Distance2D(unit) < 350).ToList().Count * bonusCreep[level];
return Math.Floor((damage + heroDmg + creepDmg));
case ClassID.CDOTA_Unit_Hero_Zuus:
var hp = new[] {.05, .07, .09, .11};
if (me.Spellbook.Spell3.Level > 0 && me.Distance2D(enemy) < 1000)
damage = (damage + ((hp[me.Spellbook.Spell3.Level]) * enemy.Health));
return damage;
}
return damage;
}
示例5: Game_OnUpdate
public static void Game_OnUpdate(EventArgs args)
{
if (!Game.IsInGame) return;
_me = ObjectMgr.LocalHero;
if (_me == null || _me.ClassID != ClassID.CDOTA_Unit_Hero_Morphling)
{
return;
}
if (!_activated) return;
if ((_target == null || !_target.IsVisible) && !_me.IsChanneling())
_me.Move(Game.MousePosition);
if (_target == null || _me.Distance2D(_target) > 500)
_target = _me.ClosestToMouseTarget(1000);
//Skills & Items
waveform = _me.Spellbook.Spell1;
adapt = _me.Spellbook.Spell2;
eblade = _me.FindItem("item_ethereal_blade");
bkb = _me.FindItem("item_black_king_bar");
if (_target != null && _target.IsAlive && !_target.IsInvul())
{
if (!Utils.SleepCheck("Morph_Wait")) return;
var targetDistance = _me.Distance2D(_target);
var attackRange = 1000;
if (targetDistance <= attackRange && waveform != null && waveform.CanBeCasted() && Utils.SleepCheck("waveform"))
{
waveform.UseAbility(_target.Position);
Utils.Sleep(150 + Game.Ping, "waveform");
}
else if (bkb !=null && _bkbToggle && Utils.SleepCheck("BKB"))
{
bkb.UseAbility();
Utils.Sleep(150 + Game.Ping, "BKB");
}
else if (eblade != null && eblade.CanBeCasted() && Utils.SleepCheck("eblade"))
{
eblade.UseAbility(_target);
Utils.Sleep(150 + Game.Ping, "eblade");
}
else if (adapt != null && adapt.CanBeCasted() && Utils.SleepCheck("adapt"))
{
adapt.UseAbility(_target);
Utils.Sleep(150 + Game.Ping, "adapt");
}
}
}
示例6: CheckTree
public bool CheckTree(Hero hero, Vector3 position, TimberChain timberChain)
{
var distance = Math.Max(timberChain.GetCastRange(), hero.Distance2D(position));
var endPoint = hero.Position.Extend(position, distance);
var delay = Game.RawGameTime + timberChain.CastPoint + Game.Ping / 1000;
return
GetAvailableTrees(hero, endPoint, distance, delay, timberChain.Speed)
.Any(x => IsPointOnLine(x.Position, hero.Position, endPoint, 20));
}
示例7: Execute
/// <summary>
/// The execute.
/// </summary>
/// <param name="hero">
/// The hero.
/// </param>
/// <returns>
/// The <see cref="bool" />.
/// </returns>
public bool Execute(Hero hero)
{
if (!Variables.Damage.GetSuicideDamage().ContainsKey(hero.ClassID))
{
return false;
}
if (!Utils.SleepCheck(hero.ClassID + "Techies.AutoDetonate"))
{
return false;
}
if (Variables.Damage.GetSuicideDamage()[hero.ClassID] >= hero.Health)
{
var pos = hero.NetworkPosition;
if (hero.NetworkActivity == NetworkActivity.Move)
{
pos = Prediction.InFront(
hero,
(float)((Game.Ping / 1000 + Variables.Techies.GetTurnTime(hero)) * hero.MovementSpeed));
}
if (pos.Distance2D(Variables.Techies) < hero.Distance2D(Variables.Techies))
{
pos = hero.Position;
}
if (!(pos.Distance2D(Variables.Techies) < this.SuicideRadius))
{
return false;
}
if (Variables.Techies.Distance2D(pos) > 100)
{
pos = (pos - Variables.Techies.Position) * 99 / pos.Distance2D(Variables.Techies)
+ Variables.Techies.Position;
}
Variables.SuicideAbility.UseAbility(pos);
Utils.Sleep(500, "Techies.Suicide");
return true;
}
return false;
}
示例8: TeleportCancel
//(float dist, Modifier mod, Hero friendly)
public static void TeleportCancel(Hero friendly)
{
var dist = friendly.Distance2D(ObjectMgr.LocalHero); //Distance from team mate to 'me'
if (dist <= Variables.me.Spellbook.Spell1.CastRange && friendly.Name != Variables.me.Name) //Within hook range
foreach (var mod in friendly.Modifiers)
if (mod.Name.Contains("teleporting")) //Affected by teleport
{
var distance = dist;
var speed = 1600;
var time = distance / speed;
var hookAirTime = time * 2;
var remainingTime = mod.RemainingTime;
if (!(remainingTime - hookAirTime >= 0))
Drawing.DrawText("HOOK NOW", Drawing.WorldToScreen(friendly.Position), Color.Red, FontFlags.AntiAlias | FontFlags.Outline);
else
Drawing.DrawText("WAIT " + Math.Round((remainingTime - hookAirTime), 1, MidpointRounding.AwayFromZero), Drawing.WorldToScreen(friendly.Position), Color.Cyan, FontFlags.AntiAlias | FontFlags.Outline);
}
}
示例9: Heal
private static void Heal(Hero self, Ability healSpell, float[] amount, uint range, int targettingType,
bool targetSelf = true)
{
if (healSpell != null && healSpell.CanBeCasted() && !self.IsChanneling())
{
if (self.IsAlive && !self.IsChanneling() &&
(!self.IsInvisible() || !me.Modifiers.Any(x => x.Name == "modifier_treant_natures_guise")) &&
self.Distance2D(fountain) > 2000)
{
var heroes = targetSelf
? ObjectMgr.GetEntities<Hero>()
.Where(
entity =>
entity.Team == self.Team && self.Distance2D(entity) <= range && !entity.IsIllusion &&
entity.IsAlive)
.ToList()
: ObjectMgr.GetEntities<Hero>()
.Where(
entity =>
entity.Team == self.Team && self.Distance2D(entity) <= range && !entity.IsIllusion &&
entity.IsAlive && !Equals(entity, me)).ToList();
if (heroes.Any())
{
foreach (var ally in heroes)
{
if (ally.Health <= (ally.MaximumHealth*0.7) && healSpell.CanBeCasted() &&
self.Distance2D(fountain) > 2000 && IsInDanger(ally) &&
ally.Health + amount[healSpell.Level - 1] <= ally.MaximumHealth && (me.ClassID != ClassID.CDOTA_Unit_Hero_WitchDoctor || !me.Spellbook.SpellW.IsToggled))
{
if (targettingType == 1)
CastHeal(healSpell, ally);
else if (targettingType == 2)
CastHeal(healSpell);
else if (targettingType == 3 && Utils.SleepCheck("ToggleHeal"))
{
/*if (healSpell.CanBeCasted() && Utils.SleepCheck("ToggleHeal"))
{
if (!healSpell.IsToggled)
{
CastHeal(healSpell);
Utils.Sleep(1000 + Game.Ping, "ToggleHeal");
}
}*/
CastHeal(healSpell, null, true);
Utils.Sleep(1000 + Game.Ping, "ToggleHeal");
}
}
else if (targettingType == 3 && ally.Health > (ally.MaximumHealth*0.7) && healSpell.IsToggled &&
Utils.SleepCheck("ToggleHeal"))
{
healSpell.ToggleAbility();
Utils.Sleep(1000 + Game.Ping, "ToggleHeal");
}
}
}
}
}
}
示例10: GetSmartDamage
private static double GetSmartDamage(uint level, Hero me, IReadOnlyList<double> damage)
{
var baseDmg = damage[(int)level];
switch (me.ClassID)
{
case ClassID.CDOTA_Unit_Hero_Alchemist:
var stun = me.Modifiers.FirstOrDefault(modifier => modifier.Name == "modifier_alchemist_unstable_concoction");
if (stun == null) return 0;
if (stun.ElapsedTime < 4.8)
return Math.Floor(stun.ElapsedTime * baseDmg);
return (float)Math.Floor(4.8 * baseDmg);
case ClassID.CDOTA_Unit_Hero_Morphling:
var agi = Math.Floor(me.TotalAgility);
var dmg = agi / Math.Floor(me.TotalStrength);
if (dmg > 1.5)
return Math.Floor(0.5 * level * agi + baseDmg);
if (dmg < 0.5)
return Math.Floor(0.25 * agi + baseDmg);
if (dmg >= 0.5 && dmg <= 1.5)
return Math.Floor(0.25 + ((dmg - 0.5) * (0.5 * level - 0.25)) * agi + baseDmg);
break;
case ClassID.CDOTA_Unit_Hero_Visage:
var soul = me.Modifiers.FirstOrDefault(modifier => modifier.Name == "modifier_visage_soul_assumption");
if (soul != null)
return 20 + 65 * soul.StackCount;
return 20;
case ClassID.CDOTA_Unit_Hero_Undying:
var count = ObjectMgr.GetEntities<Unit>().Where(unit => ((unit.ClassID == ClassID.CDOTA_BaseNPC_Creep && unit.ClassID != ClassID.CDOTA_BaseNPC_Creature && !unit.IsAncient) || unit.ClassID == ClassID.CDOTA_Unit_Undying_Zombie || unit.ClassID == ClassID.CDOTA_Unit_SpiritBear || unit.ClassID == ClassID.CDOTA_Unit_Broodmother_Spiderling || unit.ClassID == ClassID.CDOTA_Unit_Hero_Beastmaster_Boar || unit.ClassID == ClassID.CDOTA_Unit_Hero_Beastmaster_Hawk || unit.ClassID == ClassID.CDOTA_BaseNPC_Invoker_Forged_Spirit || unit.ClassID == ClassID.CDOTA_Unit_Courier || unit.ClassID == ClassID.CDOTA_BaseNPC_Hero) && unit.IsAlive && unit.IsVisible && unit.Health > 0 && me.Distance2D(unit) < 1300);
var num = count.Count() - 2;
var bonus = new uint[] { 18, 22, 26, 30 };
if (num < baseDmg)
return num * bonus[level];
return baseDmg * bonus[level];
}
return baseDmg;
}
示例11: LetsTryCastSpell
private static void LetsTryCastSpell(Hero me, Hero target, Ability spellForCast, bool nextSpell=false)
{
var ss = me.FindSpell("invoker_sun_strike");
var icewall = me.FindSpell("invoker_ice_wall");
var blast = me.FindSpell("invoker_deafening_blast");
var tornado = me.FindSpell("invoker_tornado");
var emp = me.FindSpell("invoker_emp");
/*
var coldsnap = me.FindSpell("invoker_cold_snap");
var ghostwalk = me.FindSpell("invoker_ghost_walk");
var forge = me.FindSpell("invoker_forge_spirit");
var emp = me.FindSpell("invoker_emp");
var alacrity = me.FindSpell("invoker_alacrity");
*/
var meteor = me.FindSpell("invoker_chaos_meteor");
var eulmodif = target.Modifiers.FirstOrDefault(x => x.Name == "modifier_eul_cyclone" || x.Name == "modifier_invoker_tornado");
/*foreach (var source in target.Modifiers.ToList())
{
PrintInfo(source.Name+": "+source.RemainingTime);
}*/
var timing = Equals(spellForCast, ss)
? 1.7
: Equals(spellForCast, meteor)
? 1.3
: Equals(spellForCast, blast)
? me.Distance2D(target)/1100 + Game.Ping/1000
: (Equals(spellForCast, icewall))
? 2.5
: Equals(spellForCast, emp) ? 2.9 : 0;
if (eulmodif!=null && eulmodif.RemainingTime<=timing)
{
if (icewall != null && Equals(spellForCast, icewall))
{
CastIceWall(me, target, me.Distance2D(target) <= 250,icewall);
}
else
{
UseSpell(spellForCast, target,me);
//Game.PrintMessage(spellForCast.Name+" (2)", MessageType.ChatMessage);
//PrintInfo("caster "+spellForCast.Name+" with timing "+timing);
Utils.Sleep(250, "StageCheck");
_stage++;
}
}
else if (eulmodif == null /*&& !Equals(spellForCast, ss)*/)
{
if (icewall != null && Equals(spellForCast, icewall))
{
CastIceWall(me, target, me.Distance2D(target) <= 300, icewall);
}
else
{
var time = 250f;
if (Equals(spellForCast, tornado))
{
if (nextSpell) time += me.Distance2D(target)/spellForCast.GetProjectileSpeed()*1000 + Game.Ping;
spellForCast.CastSkillShot(target, me.Position,spellForCast.Name);
//Game.PrintMessage("CastSkillShot "+spellForCast.CastSkillShot(target, me.Position,spellForCast.Name),MessageType.ChatMessage);
}
else
{
//Game.PrintMessage("suka: " + spellForCast.Name,MessageType.ChatMessage);
UseSpell(spellForCast, target,me);
}
Utils.Sleep(time, "StageCheck");
_stage++;
}
}
}
示例12: Game_OnUpdate
public static void Game_OnUpdate(EventArgs args)
{
me = ObjectManager.LocalHero;
if (!Game.IsInGame || me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_BountyHunter) return;
if (!Menu.Item("enabled").IsActive())
return;
Active = Game.IsKeyDown(Menu.Item("keyBind").GetValue<KeyBind>().Key);
RActive = Menu.Item("KeyR").GetValue<KeyBind>().Active;
Q = me.Spellbook.SpellQ;
R = me.Spellbook.SpellR;
var enemies = ObjectManager.GetEntities<Hero>()
.Where(x => x.Team != me.Team && x.IsAlive && x.IsVisible && !x.IsIllusion && !x.IsMagicImmune())
.ToList();
if (Active)
{
e = me.ClosestToMouseTarget(1800);
if (e == null)
return;
mom = me.FindItem("item_mask_of_madness");
urn = me.FindItem("item_urn_of_shadows");
dagon = me.Inventory.Items.FirstOrDefault(x => x.Name.Contains("item_dagon"));
ethereal = me.FindItem("item_ethereal_blade");
halberd = me.FindItem("item_heavens_halberd");
mjollnir = me.FindItem("item_mjollnir");
orchid = me.FindItem("item_orchid") ?? me.FindItem("item_bloodthorn");
abyssal = me.FindItem("item_abyssal_blade");
mail = me.FindItem("item_blade_mail");
bkb = me.FindItem("item_black_king_bar");
satanic = me.FindItem("item_satanic");
medall = me.FindItem("item_medallion_of_courage") ?? me.FindItem("item_solar_crest");
Shiva = me.FindItem("item_shivas_guard");
if (Menu.Item("orbwalk").GetValue<bool>() && me.Distance2D(e) <= 1900)
{
Orbwalking.Orbwalk(e, 0, 1600, true, true);
}
if (Active && me.Distance2D(e) <= 1400 && e != null && e.IsAlive && !me.IsInvisible())
{
if (
Q != null && Q.CanBeCasted() && me.Distance2D(e) <= 1500
&& Menu.Item("Skills").GetValue<AbilityToggler>().IsEnabled(Q.Name)
&& Utils.SleepCheck("Q")
)
{
Q.UseAbility(e);
Utils.Sleep(200, "Q");
}
if (
R != null && R.CanBeCasted() && me.Distance2D(e) <= 1500
&& Menu.Item("Skills").GetValue<AbilityToggler>().IsEnabled(R.Name)
&& !me.HasModifier("modifier_bounty_hunter_wind_walk")
&& !me.IsChanneling()
&& Utils.SleepCheck("R")
)
{
R.UseAbility(e);
Utils.Sleep(200, "R");
}
if ( // MOM
mom != null
&& mom.CanBeCasted()
&& me.CanCast()
&& Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(mom.Name)
&& Utils.SleepCheck("mom")
&& me.Distance2D(e) <= 700
)
{
mom.UseAbility();
Utils.Sleep(250, "mom");
}
if ( // Mjollnir
mjollnir != null
&& mjollnir.CanBeCasted()
&& me.CanCast()
&& !e.IsMagicImmune()
&& Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(mjollnir.Name)
&& Utils.SleepCheck("mjollnir")
&& me.Distance2D(e) <= 900
)
{
mjollnir.UseAbility(me);
Utils.Sleep(250, "mjollnir");
} // Mjollnir Item end
if ( // Medall
medall != null
&& medall.CanBeCasted()
&& Utils.SleepCheck("Medall")
&& Menu.Item("Items").GetValue<AbilityToggler>().IsEnabled(medall.Name)
&& me.Distance2D(e) <= 700
)
{
medall.UseAbility(e);
Utils.Sleep(250, "Medall");
} // Medall Item end
if ( // Hellbard
halberd != null
//.........这里部分代码省略.........
示例13: TryToDispell
private static void TryToDispell(Hero me, List<Item> toList, bool both, bool main, bool tempest)
{
var target = main ? _mainHero : tempest ? me : null;
if (both)
{
var underShit = me.IsSilenced() || me.IsHexed() /*|| me.DebuffState*/;
var isSilenced2 = _mainHero.IsSilenced();
if (isSilenced2)
{
foreach (var item in toList.Where(item => me.Distance2D(_mainHero) <= 600))
{
item.UseAbility(_mainHero);
Utils.Sleep(500, item.Name + me.Handle);
}
}
if (underShit)
{
foreach (var item in toList)
{
item.UseAbility(me);
Utils.Sleep(500, item.Name + me.Handle);
}
}
foreach (var hero in Ensage.Common.Objects.Heroes.GetByTeam(me.Team).Where(x=>x.IsAlive && x.Distance2D(me)<=600 && (x.IsHexed() || x.IsSilenced())))
{
foreach (var item in toList)
{
item.UseAbility(hero);
Utils.Sleep(500, item.Name + me.Handle);
}
}
}
else
{
var isSilenced = target.IsSilenced();
if (!isSilenced) return;
foreach (var item in toList.Where(x => me.Distance2D(target) <= 600))
{
item.UseAbility(target);
Utils.Sleep(500, item.Name + me.Handle);
}
}
}
示例14: CalculateDamage
//.........这里部分代码省略.........
(float)(bonusDamage + agi * multi),
DamageType.Magical,
source,
false,
minusMagicResistancePerc: minusMagicResistancePerc);
break;
case "mirana_starfall":
var radiusMax = ability.GetAbilityData("starfall_secondary_radius");
if (!DamageDictionary.TryGetValue(ability, out bonusDamage))
{
bonusDamage =
Convert.ToSingle(
Game.FindKeyValues(name + "/AbilityDamage", KeyValueSource.Ability)
.StringValue.Split(' ')[level - 1]);
DamageDictionary.Add(ability, bonusDamage);
LevelDictionary.Add(ability, level);
}
else if (LevelDictionary[ability] != level)
{
LevelDictionary[ability] = level;
bonusDamage =
Convert.ToSingle(
Game.FindKeyValues(name + "/AbilityDamage", KeyValueSource.Ability)
.StringValue.Split(' ')[level - 1]);
DamageDictionary[ability] = bonusDamage;
}
outgoingDamage = target.DamageTaken(
bonusDamage,
DamageType.Magical,
source,
data.MagicImmunityPierce,
minusMagicResistancePerc: minusMagicResistancePerc);
if (source.Distance2D(target) < radiusMax)
{
outgoingDamage *= 2;
}
break;
case "item_ethereal_blade":
hero = source;
var primaryAtt = hero.PrimaryAttribute;
if (primaryAtt == Attribute.Agility)
{
bonusDamage = 2 * hero.TotalAgility;
}
else if (primaryAtt == Attribute.Intelligence)
{
bonusDamage = 2 * hero.TotalIntelligence;
}
else if (primaryAtt == Attribute.Strength)
{
bonusDamage = 2 * hero.TotalStrength;
}
if (!DamageDictionary.TryGetValue(ability, out tempDmg))
{
tempDmg = ability.GetAbilityData(data.DamageString);
DamageDictionary.Add(ability, tempDmg);
LevelDictionary.Add(ability, level);
}
else if (LevelDictionary[ability] != level)
{
LevelDictionary[ability] = level;
tempDmg = ability.GetAbilityData(data.DamageString);
DamageDictionary[ability] = tempDmg;
示例15: Combo
//public readonly Menu farm = new Menu("FarmMode", "FarmMode");
public void Combo()
{
if (me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_Meepo || !Game.IsInGame) return;
if(!me.IsAlive) return;
activated = Game.IsKeyDown(Menu.Item("keyBind").GetValue<KeyBind>().Key);
PoofKey = Game.IsKeyDown(Menu.Item("poofKey").GetValue<KeyBind>().Key);
PoofAutoMode = Menu.Item("poofAutoMod").GetValue<KeyBind>().Active;
SafePoof = Menu.Item("poofSafe").IsActive();
dodge = Menu.Item("Dodge").GetValue<KeyBind>().Active;
var checkObj = ObjectManager.GetEntities<Unit>().Where(x => (x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Lane
|| x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege
|| x.ClassID == ClassID.CDOTA_BaseNPC_Creep
|| x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Neutral
|| x.HasInventory
|| x.ClassID == ClassID.CDOTA_Unit_SpiritBear) && x.IsAlive && x.Team != me.Team && x.IsValid).ToList();
var meepos = ObjectManager.GetEntities<Hero>().Where(x => x.IsControllable && x.IsAlive && x.ClassID == ClassID.CDOTA_Unit_Hero_Meepo).ToList();
List<Unit> fount = ObjectManager.GetEntities<Unit>().Where(x => x.Team == me.Team && x.ClassID == ClassID.CDOTA_Unit_Fountain).ToList();
//blink = me.FindItem("item_blink");
e = ObjectManager.GetEntities<Hero>()
.Where(x => x.IsAlive && x.Team != me.Team && !x.IsIllusion)
.OrderBy(x => GetDistance2D(x.Position, meepos.OrderBy(y => GetDistance2D(x.Position, y.Position)).FirstOrDefault().Position))
.FirstOrDefault();
/**************************************************DODGE*************************************************************/
var f = ObjectManager.GetEntities<Hero>()
.Where(x => x.IsAlive && x.Team == me.Team && !x.IsIllusion && x.IsControllable && x.ClassID == ClassID.CDOTA_Unit_Hero_Meepo)
.OrderBy(x => GetDistance2D(x.Position, fount.OrderBy(y => GetDistance2D(x.Position, y.Position)).FirstOrDefault().Position))
.FirstOrDefault();
var meeposCount = meepos.Count();
Ability[] q = new Ability[meeposCount];
for (int i = 0; i < meeposCount; ++i) q[i] = meepos[i].Spellbook.SpellQ;
Ability[] w = new Ability[meeposCount];
for (int i = 0; i < meeposCount; ++i) w[i] = meepos[i].Spellbook.SpellW;
if (dodge && me.IsAlive)
{
var baseDota =
ObjectManager.GetEntities<Unit>().Where(unit => unit.Name == "npc_dota_base" && unit.Team != me.Team).ToList();
if (baseDota != null)
{
for (int t = 0; t < baseDota.Count(); ++t)
{
for (int i = 0; i < meeposCount; ++i)
{
float angle = meepos[i].FindAngleBetween(baseDota[t].Position, true);
Vector3 pos = new Vector3((float)(baseDota[t].Position.X - 710 * Math.Cos(angle)), (float)(baseDota[t].Position.Y - 710 * Math.Sin(angle)), 0);
if (meepos[i].Distance2D(baseDota[t]) <= 700 && !meepos[i].HasModifier("modifier_bloodseeker_rupture") && Utils.SleepCheck(meepos[i].Handle + "MoveDodge"))
{
meepos[i].Move(pos);
Utils.Sleep(120, meepos[i].Handle + "MoveDodge");
// Console.WriteLine("Name: " + baseDota[t].Name);
// Console.WriteLine("Speed: " + baseDota[t].Speed);
// Console.WriteLine("ClassID: " + baseDota[t].ClassID);
// Console.WriteLine("Handle: " + baseDota[t].Handle);
// Console.WriteLine("UnitState: " + baseDota[t].UnitState);
}
}
}
}
var thinker =
ObjectManager.GetEntities<Unit>().Where(unit => unit.Name == "npc_dota_thinker" && unit.Team != me.Team).ToList();
if (thinker != null)
{
for (int i = 0; i < thinker.Count(); ++i)
{
for (int j = 0; j < meeposCount; ++j)
{
float angle = meepos[j].FindAngleBetween(thinker[i].Position, true);
Vector3 pos = new Vector3((float)(thinker[i].Position.X - 360 * Math.Cos(angle)), (float)(thinker[i].Position.Y - 360 * Math.Sin(angle)), 0);
if (meepos[j].Distance2D(thinker[i]) <= 350 && !meepos[j].HasModifier("modifier_bloodseeker_rupture"))
{
if (Utils.SleepCheck(meepos[j].Handle + "MoveDodge"))
{
meepos[j].Move(pos);
Utils.Sleep(350, meepos[j].Handle + "MoveDodge");
}
}
}
}
}
foreach (var v in meepos)
{
if (Utils.SleepCheck(v.Handle + "_move") && v.Health <= v.MaximumHealth / 100 * Menu.Item("healh").GetValue<Slider>().Value
&& !v.HasModifier("modifier_bloodseeker_rupture")
//.........这里部分代码省略.........