本文整理汇总了C#中Obj_AI_Hero.GetDashInfo方法的典型用法代码示例。如果您正苦于以下问题:C# Obj_AI_Hero.GetDashInfo方法的具体用法?C# Obj_AI_Hero.GetDashInfo怎么用?C# Obj_AI_Hero.GetDashInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Obj_AI_Hero
的用法示例。
在下文中一共展示了Obj_AI_Hero.GetDashInfo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SpellPrediction
public static bool SpellPrediction(Spell spell, Obj_AI_Hero target,bool collisionable)
{
//
var dist = ObjectManager.Player.Distance(target.Position);
var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition-40;
var dister = target.Position.Extend(target.GetWaypoints()[1].To3D(), target.GetWaypoints()[1].To3D().Distance(target.Position) + 50);
// var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition - 40;
var wts = Drawing.WorldToScreen(target.Position);
var wtsx = target.GetWaypoints()[1];
Drawing.DrawLine(wts[0], wts[1], wtsx[0], wtsx[1], 2f, System.Drawing.Color.Red);
var e = pos1.Distance(target.GetWaypoints()[1].To3D());
pos1.Extend(target.GetWaypoints()[1].To3D(), -e);
Render.Circle.DrawCircle(dister, 10, System.Drawing.Color.GreenYellow, 2);
Render.Circle.DrawCircle(pos1, 10, System.Drawing.Color.BlueViolet, 2);
//
var point = PointsAroundTheTarget(target.Position, target.BoundingRadius + 50).FirstOrDefault(t => t.IsWall());
if (point.X != 0 && point.Y != 0 && point.Z != 0)
{
if (MinionCollideLine(ObjectManager.Player.Position, ExtendWallpos(target, point), spell,collisionable)) return false;
Render.Circle.DrawCircle(ExtendWallpos(target, point), 10, System.Drawing.Color.Brown, 2);
spell.Cast(ExtendWallpos(target, point));
return true;
}
else
{
var range = spell.Range;
if (target.Position.Distance(ObjectManager.Player.Position) < target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
{
range -= 100;
}
if (!spell.IsInRange(target, range)) return false;
/*if (target.IsFacing(ObjectManager.Player) && target.Position.Distance(ObjectManager.Player.Position) > target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
{
if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
{
Game.PrintChat("Casteando por inface");
spell.Cast(target.Position);
return true;
}
}*/
// code of dashes
if (target.IsDashing())
{
float timeforArrive=(target.Position.Distance(target.GetDashInfo().EndPos.To3D()))/target.GetDashInfo().Speed;
float grabtime =( ObjectManager.Player.Position.Distance(target.GetDashInfo().EndPos.To3D())
/ spell.Speed)+spell.Delay;
if (timeforArrive<grabtime)
{
spell.Cast(target.GetDashInfo().EndPos);
return true;
}
}
/* if (target.IsImmovable) // check for cc guys
{
if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
spell.Cast(target.Position);
return true;
}*/
// if(target.IsChannelingImportantSpell())
if (target.IsWindingUp && !target.IsMelee())
{
if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
spell.Cast(target.Position);
return true;
}
if (target.Position.Distance(ObjectManager.Player.Position) <= 300)
{
CastToDirection( target, spell,collisionable);
}
else
{
var oldPos = target.GetWaypoints()[0].To3D();
var h = false;
Utility.DelayAction.Add(Game.Ping + 1000, () => h = Next(target, oldPos, spell,collisionable));
return h;
}
}
return false;
}
示例2: HandleQ
public void HandleQ(Obj_AI_Hero comboTarget)
{
var QPrediction = Variables.Spells[SpellSlot.Q].GetPrediction(comboTarget);
if (QPrediction.Hitchance >= HitChance.High)
{
var QPushDistance = 250;
var QAccuracy = 20;
var PlayerPosition = ObjectManager.Player.ServerPosition;
var BeamStartPositions = new List<Vector3>()
{
QPrediction.CastPosition,
QPrediction.UnitPosition,
comboTarget.ServerPosition,
comboTarget.Position
};
if (comboTarget.IsDashing())
{
BeamStartPositions.Add(comboTarget.GetDashInfo().EndPos.To3D());
}
var PositionsList = new List<Vector3>();
var CollisionPositions = new List<Vector3>();
foreach (var position in BeamStartPositions)
{
var collisionableObjects = Variables.Spells[SpellSlot.Q].GetCollision(position.To2D(),
new List<Vector2>() { position.Extend(PlayerPosition, -QPushDistance).To2D() });
if (collisionableObjects.Any())
{
if (collisionableObjects.Any(h => h is Obj_AI_Hero) &&
(collisionableObjects.All(h => h.IsValidTarget())))
{
Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
break;
}
for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
{
CollisionPositions.Add(position.Extend(PlayerPosition, -i));
}
}
for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
{
PositionsList.Add(position.Extend(PlayerPosition, -i));
}
}
if (PositionsList.Any())
{
//We don't want to divide by 0 Kappa
var WallNumber = PositionsList.Count(p => p.IsWall()) * 1.3f;
var CollisionPositionCount = CollisionPositions.Count;
var Percent = (WallNumber + CollisionPositionCount) / PositionsList.Count;
var AccuracyEx = QAccuracy / 100f;
if (Percent >= AccuracyEx)
{
Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
}
}
}
else if (QPrediction.Hitchance == HitChance.Collision)
{
var QCollision = QPrediction.CollisionObjects;
if (QCollision.Count == 1)
{
Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
}
}
}
示例3: GetDashingPrediction
/// <summary>
/// Gets Predicted position while target is dashing
/// </summary>
private static Vector2 GetDashingPrediction(Obj_AI_Hero target, Spell s, out HitChance hc, Vector3 rangeCheckFrom)
{
if (target.IsDashing())
{
var dashInfo = target.GetDashInfo();
float dashPassedDistance = (Utils.TickCount - dashInfo.StartTick) / 1000f * dashInfo.Speed;
Vector2 currentDashPos = dashInfo.StartPos + (dashInfo.EndPos - dashInfo.StartPos).Normalized() * dashPassedDistance;
float targetDistance = rangeCheckFrom.To2D().Distance(currentDashPos);
float flyTime = 0f;
if (s.Speed != 0) //skillshot with a missile
{
Vector2 Vt = (dashInfo.Path[dashInfo.Path.Count - 1] - dashInfo.Path[0]).Normalized() * dashInfo.Speed;
Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
Vector2 Vr = Vs - Vt;
flyTime = targetDistance / Vr.Length();
}
int dashLeftTime = dashInfo.EndTick - Utils.TickCount;
float t = flyTime + s.Delay + Game.Ping / 1000f;
if (dashLeftTime >= t * 1000f)
{
float distance = t * dashInfo.Speed;
hc = HitChance.Dashing;
for (int i = 0; i < dashInfo.Path.Count - 1; i++)
{
float d = dashInfo.Path[i + 1].Distance(dashInfo.Path[i]);
if (distance == d)
return dashInfo.Path[i + 1];
else if (distance < d)
return dashInfo.Path[i] + distance * (dashInfo.Path[i + 1] - dashInfo.Path[i]).Normalized();
else distance -= d;
}
}
}
hc = HitChance.Impossible;
return rangeCheckFrom.To2D();
}