本文整理汇总了C#中GameObjectNewPathEventArgs类的典型用法代码示例。如果您正苦于以下问题:C# GameObjectNewPathEventArgs类的具体用法?C# GameObjectNewPathEventArgs怎么用?C# GameObjectNewPathEventArgs使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
GameObjectNewPathEventArgs类属于命名空间,在下文中一共展示了GameObjectNewPathEventArgs类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ObjAiHeroOnOnNewPath
private static void ObjAiHeroOnOnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.IsValid<AIHeroClient>())
{
if (!DetectedDashes.ContainsKey(sender.NetworkId))
{
DetectedDashes.Add(sender.NetworkId, new DashItem());
}
if (args.IsDash)
{
var path = new List<Vector2> { sender.ServerPosition.To2D2() };
path.AddRange(args.Path.ToList().To2D2());
DetectedDashes[sender.NetworkId].StartTick = Utils.TickCount;
DetectedDashes[sender.NetworkId].Speed = args.Speed;
DetectedDashes[sender.NetworkId].StartPos = sender.ServerPosition.To2D2();
DetectedDashes[sender.NetworkId].Unit = sender;
DetectedDashes[sender.NetworkId].Path = path;
DetectedDashes[sender.NetworkId].EndPos = DetectedDashes[sender.NetworkId].Path.Last();
DetectedDashes[sender.NetworkId].EndTick = DetectedDashes[sender.NetworkId].StartTick +
(int)
(1000 *
(DetectedDashes[sender.NetworkId].EndPos.Distance7(
DetectedDashes[sender.NetworkId].StartPos) / DetectedDashes[sender.NetworkId].Speed));
DetectedDashes[sender.NetworkId].Duration = DetectedDashes[sender.NetworkId].EndTick - DetectedDashes[sender.NetworkId].StartTick;
CustomEvents.Unit.TriggerOnDash(DetectedDashes[sender.NetworkId].Unit, DetectedDashes[sender.NetworkId]);
}
else
{
DetectedDashes[sender.NetworkId].EndTick = 0;
}
}
}
示例2: OnNewPath
public static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (!sender.IsMe)
{
return;
}
Modes.PermaActive.CatchAxe();
}
示例3: DrawFake
private static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault()!=lastEndpoint)
{
lastEndpoint = args.Path.LastOrDefault();
if (!attacking)
Hud.ShowClick(ClickType.Move, Game.CursorPos);
else
Hud.ShowClick(ClickType.Attack, Game.CursorPos);
lastTime = Game.Time;
}
}
示例4: OnNewPath
private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.Type != GameObjectType.obj_AI_Hero || !_mainMenu.Item("enabled").GetValue<bool>()) return;
if (!_detectors.ContainsKey(sender.NetworkId))
{
var detectors = new List<IDetector> { new SacOrbwalkerDetector(), new LeaguesharpOrbwalkDetector() };
detectors.ForEach(detector => detector.Initialize((Obj_AI_Hero)sender));
_detectors.Add(sender.NetworkId, detectors);
}
else
_detectors[sender.NetworkId].ForEach(detector => detector.FeedData(args.Path.Last()));
}
示例5: OnNewPath
private void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.Type != GameObjectType.AIHeroClient || !_mainMenu["enabled"].Cast<CheckBox>().CurrentValue) return;
if (!_detectors.ContainsKey(sender.NetworkId))
{
var detectors = new List<IDetector> { new SacOrbwalkerDetector(), new LeaguesharpOrbwalkDetector() };
detectors.ForEach(detector => detector.Initialize((AIHeroClient)sender));
_detectors.Add(sender.NetworkId, detectors);
}
else
_detectors[sender.NetworkId].ForEach(detector => detector.FeedData(args.Path.Last()));
}
示例6: Obj_AI_Hero_OnNewPath
/// <summary>
/// OnNewPath event for average reaction time calculations
/// </summary>
private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (!sender.IsEnemy || !sender.IsChampion() || args.IsDash)
return;
EnemyData enemy = EnemyInfo[sender.NetworkId];
lock (enemy.m_lock)
{
if (args.Path.Length < 2)
{
if (!enemy.IsStopped)
{
enemy.StopTick = Environment.TickCount;
enemy.LastWaypointTick = Environment.TickCount;
enemy.IsStopped = true;
enemy.Count = 0;
enemy.AvgTick = 0;
enemy.AvgPathLenght = 0;
}
}
else
{
List<Vector2> wp = args.Path.Select(p => p.To2D()).ToList();
if (!enemy.LastWaypoints.SequenceEqual(wp))
{
if (!enemy.IsStopped)
{
enemy.AvgTick = (enemy.Count * enemy.AvgTick + (Environment.TickCount - enemy.LastWaypointTick)) / ++enemy.Count;
enemy.AvgPathLenght = ((enemy.Count - 1) * enemy.AvgPathLenght + wp.PathLength()) / enemy.Count;
}
enemy.LastWaypointTick = Environment.TickCount;
enemy.IsStopped = false;
enemy.LastWaypoints = wp;
if (!enemy.IsWindupChecked)
{
if (Environment.TickCount - enemy.LastAATick < 300)
enemy.AvgOrbwalkTime = (enemy.AvgOrbwalkTime * enemy.OrbwalkCount + (enemy.LastWaypointTick - enemy.LastWindupTick)) / ++enemy.OrbwalkCount;
enemy.IsWindupChecked = true;
}
}
}
EnemyInfo[sender.NetworkId] = enemy;
}
}
示例7: ObjAiHeroOnOnNewPath
private static void ObjAiHeroOnOnNewPath(Obj_AI_Base unit, GameObjectNewPathEventArgs args)
{
if (unit.Type == GameObjectType.obj_AI_Hero)
{
if (testMenu.Item("TestSpellEndTime").GetValue<bool>())
{
Console.WriteLine("Dash windup: " + (EvadeUtils.TickCount - EvadeSpell.lastSpellEvadeCommand.timestamp));
}
if (args.IsDash && testMenu.Item("ShowDashInfo").GetValue<bool>())
{
var dist = args.Path.First().Distance(args.Path.Last());
Console.WriteLine("Dash Speed: " + args.Speed + " Dash dist: " + dist);
}
}
}
示例8: Obj_AI_Hero_OnNewPath
void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if(!IsActive() || !sender.IsMe)
return;
for (int i = 0; i < args.Path.Length; i++)
{
var point = args.Path[i];
Obj_AI_Turret baseTurret = ObjectManager.Get<Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 1425, true, point));
if (baseTurret != null)
{
float dist =
args.Path[i - 1].Distance(
baseTurret.ServerPosition) - 1425f - 20f;
Vector3 newPos = args.Path[i - 1].Extend(point, dist);
ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
}
}
}
示例9: DrawFake
/// <summary>
/// The on new path fake.
/// Currently used for the second style of fake clicks
/// </summary>
/// <param name="sender">
/// The sender.
/// </param>
/// <param name="args">
/// The args.
/// </param>
public static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault() != lastEndpoint
&& args.Path.LastOrDefault().Distance(player.ServerPosition) >= 5f
&& fakeclick["Enable"].Cast<CheckBox>().CurrentValue
&& fakeclick["clicktype2"].Cast<CheckBox>().CurrentValue)
{
lastEndpoint = args.Path.LastOrDefault();
if (!attacking)
{
Hud.ShowClick(ClickType.Move, Game.CursorPos);
}
else
{
Hud.ShowClick(ClickType.Attack, Game.CursorPos);
}
lastTime = Game.Time;
}
}
示例10: Obj_AI_Base_OnNewPath
/// <summary>
/// OnNewPath event for the detect rengar leap
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void Obj_AI_Base_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.IsMe && args.IsDash && sender.CharData.BaseSkinName == "Rengar")
{
Events.FireOnAttack(this, m_lastTarget);
m_lastAATick = Utils.TickCount - Game.Ping / 2;
m_lastWindUpTime = (int)(sender.AttackCastDelay * 1000);
m_lastAttackCooldown = (int)(sender.AttackDelay * 1000);
m_lastAttackCompletesAt = m_lastAATick + m_lastWindUpTime;
m_lastAttackPos = ObjectManager.Player.ServerPosition.LSTo2D();
m_attackInProgress = true;
m_rengarAttack = true;
if (m_baseAttackSpeed == 0.5f)
SetOrbwalkValues();
}
}
示例11: ObjAiHeroOnOnNewPath
private static void ObjAiHeroOnOnNewPath(Obj_AI_Base unit, GameObjectNewPathEventArgs args)
{
if (unit.Type == GameObjectType.obj_AI_Hero)
{
if (testMenu.Item("TestSpellEndTime").GetValue<bool>())
{
//ConsolePrinter.Print("Dash windup: " + (EvadeUtils.TickCount - EvadeSpell.lastSpellEvadeCommand.timestamp));
}
if (args.IsDash && testMenu.Item("ShowDashInfo").GetValue<bool>())
{
var dist = args.Path.First().Distance(args.Path.Last());
ConsolePrinter.Print("Dash Speed: " + args.Speed + " Dash dist: " + dist);
}
if (unit.IsMe && testMenu.Item("EvadeTesterPing").GetValue<bool>()
&& args.Path.Count() > 1)
{
//ConsolePrinter.Print("Received Path ClickTime: " + (EvadeUtils.TickCount - lastRightMouseClickTime));
}
if (unit.IsMe)
{
//Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.Last().To2D(), 500));
//Draw.RenderObjects.Add(new Draw.RenderCircle(args.Path.First().To2D(), 500));
}
}
}
示例12: DrawFake
/// <summary>
/// The on new path fake.
/// Currently used for the second style of fake clicks
/// </summary>
/// <param name="sender">
/// The sender.
/// </param>
/// <param name="args">
/// The args.
/// </param>
private static void DrawFake(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (sender.IsMe && lastTime + deltaT < Game.Time && args.Path.LastOrDefault() != lastEndpoint &&
args.Path.LastOrDefault().Distance(player.ServerPosition) >= 5f && root.Item("Enable").IsActive() &&
root.Item("Click Mode").GetValue<StringList>().SelectedIndex == 1)
{
lastEndpoint = args.Path.LastOrDefault();
if (!attacking)
{
ShowClick(Game.CursorPos, ClickType.Move);
}
else
{
ShowClick(Game.CursorPos, ClickType.Attack);
}
lastTime = Game.Time;
}
}
示例13: Hero_OnNewPath
private void Hero_OnNewPath(Obj_AI_Base hero, GameObjectNewPathEventArgs args)
{
if (ObjectCache.menuCache.cache["AutoSetPingOn"].GetValue<bool>() == false)
{
return;
}
if (!hero.IsMe)
{
return;
}
var path = args.Path;
if (path.Length > 1 && !args.IsDash)
{
var movePos = path.Last().To2D();
if (checkPing
&& lastIssueOrderArgs.Process == true
&& lastIssueOrderArgs.Order == GameObjectOrder.MoveTo
&& lastIssueOrderArgs.TargetPosition.To2D().Distance(movePos) < 3
&& myHero.Path.Count() == 1
&& args.Path.Count() == 2
&& myHero.IsMoving)
{
//Draw.RenderObjects.Add(new Draw.RenderPosition(myHero.Path.Last().To2D(), 1000));
Draw.RenderObjects.Add(new Draw.RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000));
Draw.RenderObjects.Add(new Draw.RenderLine(myHero.Position.To2D(), myHero.Path.Last().To2D(), 1000));
//Draw.RenderObjects.Add(new Draw.RenderCircle(lastMoveToServerPos, 1000, System.Drawing.Color.Red, 10));
var distanceTillEnd = myHero.Path.Last().To2D().Distance(myHero.Position.To2D());
float moveTimeTillEnd = 1000 * distanceTillEnd / myHero.MoveSpeed;
if (moveTimeTillEnd < 500)
{
return;
}
var dir1 = (myHero.Path.Last().To2D() - myHero.Position.To2D()).Normalized();
var ray1 = new Ray(myHero.Position.SetZ(0), new Vector3(dir1.X, dir1.Y, 0));
var dir2 = (args.Path.First().To2D() - args.Path.Last().To2D()).Normalized();
var pos2 = new Vector3(args.Path.First().X, args.Path.First().Y, 0);
var ray2 = new Ray(args.Path.First().SetZ(0), new Vector3(dir2.X, dir2.Y, 0));
Vector3 intersection3;
if (ray2.Intersects(ref ray1, out intersection3))
{
var intersection = intersection3.To2D();
var projection = intersection.ProjectOn(myHero.Path.Last().To2D(), myHero.Position.To2D());
if (projection.IsOnSegment && dir1.AngleBetween(dir2) > 20 && dir1.AngleBetween(dir2) < 160)
{
Draw.RenderObjects.Add(new Draw.RenderCircle(intersection, 1000, System.Drawing.Color.Red, 10));
var distance = //args.Path.First().To2D().Distance(intersection);
lastMoveToServerPos.Distance(intersection);
float moveTime = 1000 * distance / myHero.MoveSpeed;
//Console.WriteLine("waa: " + distance);
if (moveTime < 1000)
{
if (numExtraDelayTime > 0)
{
sumExtraDelayTime += moveTime;
avgExtraDelayTime = sumExtraDelayTime / numExtraDelayTime;
pingList.Add(moveTime);
}
numExtraDelayTime += 1;
if (maxExtraDelayTime == 0)
{
maxExtraDelayTime = ObjectCache.menuCache.cache["ExtraPingBuffer"].GetValue<Slider>().Value;
}
if (numExtraDelayTime % 100 == 0)
{
pingList.Sort();
var percentile = ObjectCache.menuCache.cache["AutoSetPercentile"].GetValue<Slider>().Value;
int percentIndex = (int)Math.Floor(pingList.Count() * (percentile / 100f)) - 1;
maxExtraDelayTime = Math.Max(pingList.ElementAt(percentIndex) - Game.Ping,0);
ObjectCache.menuCache.cache["ExtraPingBuffer"].SetValue(new Slider((int)maxExtraDelayTime, 0, 200));
pingList.Clear();
Console.WriteLine("Max Extra Delay: " + maxExtraDelayTime);
}
Console.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping,0));
}
}
}
}
//.........这里部分代码省略.........
示例14: Obj_AI_Hero_OnNewPath
private static void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
if (!(sender is Obj_AI_Hero))
{
return;
}
if (!StoredPaths.ContainsKey(sender.NetworkId))
{
StoredPaths.Add(sender.NetworkId, new List<StoredPath>());
}
var newPath = new StoredPath { Tick = Utils.TickCount, Path = args.Path.ToList().To2D() };
StoredPaths[sender.NetworkId].Add(newPath);
if (StoredPaths[sender.NetworkId].Count > 50)
{
StoredPaths[sender.NetworkId].RemoveRange(0, 40);
}
}
示例15: OnNewPath
/// <summary>
/// On new path event.
/// </summary>
/// <param name="sender">
/// The sender.
/// </param>
/// <param name="args">
/// The args.
/// </param>
private static void OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
{
//EventDash(sender, args);
}