private void OnSpellStartChange(MenuComponent sender, ValueChangedArgs e) { //e.Process = false; spellStartPosition = myHero.ServerPosition; RenderObjects.Add(new RenderCircle(spellStartPosition.To2D(), 1000, Color.Red, 100, 20)); }
private void Game_OnIssueOrder(Obj_AI_Base hero, Obj_AI_BaseIssueOrderEventArgs args) { if (!hero.IsMe) { return; } if (TestMenu["(TestPath)"].Enabled) { var tPath = MyHero.GetPath(args.Target.Position); foreach (var point in tPath) { var point2D = point.To2D(); RenderObjects.Add(new RenderCircle(point2D, 500)); } } if (args.OrderType != OrderType.MoveTo) { return; } if (TestMenu["(EvadeTesterPing)"].Enabled) { ConsolePrinter.Print("Sending Path ClickTime: " + (Environment.TickCount - _lastRightMouseClickTime)); } var heroPos = ObjectCache.MyHeroCache.ServerPos2D; var pos = args.Target.Position.To2D(); var speed = ObjectCache.MyHeroCache.MoveSpeed; _startWalkTime = Environment.TickCount; foreach (var entry in SpellDetector.Spells) { var spell = entry.Value; var walkDir = (pos - heroPos).Normalized(); var spellTime = Environment.TickCount - spell.StartTime - spell.Info.SpellDelay; var spellPos = spell.StartPos + spell.Direction * spell.Info.ProjectileSpeed * (spellTime / 1000); //ConsolePrinter.Print("aaaa" + spellTime); var movingCollisionTime = MathUtils.GetCollisionTime(heroPos, spellPos, walkDir * (speed - 25), spell.Direction * (spell.Info.ProjectileSpeed - 200), ObjectCache.MyHeroCache.BoundingRadius, spell.Radius, out var isCollision); if (!isCollision) { continue; } if (true) { ConsolePrinter.Print("movingCollisionTime: " + movingCollisionTime); } } }
private void Game_OnCastSpell(Obj_AI_Base sender, SpellBookCastSpellEventArgs args) { if (!sender.IsMe) { return; } if (TestMenu["TestPath"].Enabled) { RenderObjects.Add(new RenderCircle(args.End.To2D(), 500)); } }
private void Render_OnPresent() { foreach (var spell in SpellDetector.DrawSpells.Values) { var spellPos = spell.CurrentSpellPosition; if (spell.HeroId != MyHero.NetworkId) { continue; } switch (spell.SpellType) { case SpellType.Line: if (Vector2.Distance(spellPos, MyHero.ServerPosition.To2D()) <= MyHero.BoundingRadius + spell.Radius && Environment.TickCount - spell.StartTime > spell.Info.SpellDelay && Vector2.Distance(spell.StartPos, MyHero.ServerPosition.To2D()) < spell.Info.Range) { RenderObjects.Add(new RenderCircle(spellPos, 1000, Color.Red, (int)spell.Radius, 10)); Aimtec.SDK.Util.DelayAction.Queue(100, () => SpellDetector.DeleteSpell(spell.SpellId), new CancellationToken(false)); // DelayAction.Add(1, () => SpellDetector.DeleteSpell(spell.SpellId)); } else { Render.Circle(new Vector3(spellPos.X, spellPos.Y, MyHero.Position.Z), (int)spell.Radius, 50, Color.White); } break; case SpellType.Circular: if (Environment.TickCount - spell.StartTime >= spell.EndTime - spell.StartTime) { if (!MyHero.ServerPosition.To2D().InSkillShot(spell, MyHero.BoundingRadius)) { continue; } RenderObjects.Add(new RenderCircle(spellPos, 1000, Color.Red, (int)spell.Radius)); Aimtec.SDK.Util.DelayAction.Queue(100, () => SpellDetector.DeleteSpell(spell.SpellId), new CancellationToken(false)); } break; case SpellType.Cone: // SPELL TESTER if (Environment.TickCount - spell.StartTime >= spell.EndTime - spell.StartTime) { if (MyHero.ServerPosition.To2D().InSkillShot(spell, MyHero.BoundingRadius)) { Aimtec.SDK.Util.DelayAction.Queue(100, () => SpellDetector.DeleteSpell(spell.SpellId), new CancellationToken(false)); } } break; } } }
private void Game_OnCastSpell(Obj_AI_Base sender, SpellBookCastSpellEventArgs args) { if (!sender.IsMe) { return; } if (testMenu["TestPath"].As <MenuBool>().Enabled) { RenderObjects.Add(new RenderCircle(args.End.To2D(), 500)); } lastSpellCastTimeEx = EvadeUtils.TickCount; }
private void Render_OnPresent() { foreach (var spell in SpellDetector.drawSpells.Values) { var spellPos = spell.currentSpellPosition; if (spell.heroID == myHero.NetworkId) { if (spell.spellType == SpellType.Line) { if (Vector2.Distance(spellPos, myHero.ServerPosition.To2D()) <= myHero.BoundingRadius + spell.radius && EvadeUtils.TickCount - spell.startTime > spell.info.spellDelay && Vector2.Distance(spell.startPos, myHero.ServerPosition.To2D()) < spell.info.range) { RenderObjects.Add(new RenderCircle(spellPos, 1000, Color.Red, (int)spell.radius, 10)); DelayAction.Add(1, () => SpellDetector.DeleteSpell(spell.spellID)); } else { Render.Circle(new Vector3(spellPos.X, spellPos.Y, myHero.Position.Z), (int)spell.radius, 50, Color.White); } } else if (spell.spellType == SpellType.Circular) { if (EvadeUtils.TickCount - spell.startTime >= spell.endTime - spell.startTime) { if (myHero.ServerPosition.To2D().InSkillShot(spell, myHero.BoundingRadius)) { RenderObjects.Add(new RenderCircle(spellPos, 1000, Color.Red, (int)spell.radius, 5)); DelayAction.Add(1, () => SpellDetector.DeleteSpell(spell.spellID)); } } } else if (spell.spellType == SpellType.Cone) { // SPELL TESTER if (EvadeUtils.TickCount - spell.startTime >= spell.endTime - spell.startTime) { if (myHero.ServerPosition.To2D().InSkillShot(spell, myHero.BoundingRadius)) { DelayAction.Add(1, () => SpellDetector.DeleteSpell(spell.spellID)); } } } } } }
private void Game_OnCreateObj(GameObject sender) { var missile = sender as MissileClient; if (missile != null && missile.SpellCaster.IsMe) { if (lastSpellCastArgs.Process) { //Draw.RenderObjects.Add(new Draw.RenderPosition(lastSpellCastServerPos, 1000, System.Drawing.Color.Red, 10)); RenderObjects.Add(new RenderCircle(missile.StartPosition.To2D(), 1000, Color.Red, 10)); var distance = lastSpellCastServerPos.Distance(missile.StartPosition.To2D()); var moveTime = 1000 * distance / myHero.MoveSpeed; Console.WriteLine("Extra Delay: " + moveTime); } } }
public Object3D AddObject(string fileName) { var newObjectData = DataHandler.ReadFile(fileName); Object3D newObject = null; void Add(object sender, FrameEventArgs e) { newObject = new Object3D(newObjectData); RenderObjects.Add(newObject); RenderFrame -= Add; } RenderFrame += Add; while (newObject == null) { } return(newObject); }
private void Game_ProcessSpell(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args) { if (!(hero is Obj_AI_Hero)) { return; } if (TestMenu["(ShowProcessSpell)"].Enabled) { ConsolePrinter.Print(args.SpellData.Name + " CastTime: " + (hero.SpellBook.CastEndTime - Game.ClockTime)); ConsolePrinter.Print("CastRadius: " + args.SpellData.CastRadius); } if (args.SpellData.Name == "YasuoQW") { RenderObjects.Add(new RenderCircle(args.Start.To2D(), 500)); RenderObjects.Add(new RenderCircle(args.End.To2D(), 500)); } _lastHeroSpellCastTime = Environment.TickCount; foreach (var entry in SpellDetector.Spells) { var spell = entry.Value; if (spell.Info.SpellName != args.SpellData.Name || spell.HeroId != hero.NetworkId) { continue; } if (spell.Info.IsThreeWay == false && spell.Info.IsSpecial == false) { ConsolePrinter.Print("Time diff: " + (Environment.TickCount - spell.StartTime)); } } if (hero.IsMe) { _lastSpellCastTime = Environment.TickCount; } }
private void Game_OnCastSpell(Obj_AI_Base sender, SpellBookCastSpellEventArgs e) { checkPing = false; if (!sender.IsMe) { return; } lastSpellCastArgs = e; if (myHero.HasPath && myHero.Path.Count() > 0) { lastSpellCastServerPos = EvadeUtils.GetGamePosition(myHero, Game.Ping); lastSpellCastEndPos = myHero.Path.Last().To2D(); checkPing = true; RenderObjects.Add(new RenderCircle(lastSpellCastServerPos, 1000, Color.Green, 10)); } }
private static void Game_OnCreateObj(GameObject sender) { var missile = sender as MissileClient; if (missile == null || !missile.SpellCaster.IsMe) { return; } if (!_lastSpellCastArgs.Process) { return; } RenderObjects.Add(new RenderCircle(missile.StartPosition.To2D(), 1000, Color.Red, 10)); var distance = _lastSpellCastServerPos.Distance(missile.StartPosition.To2D()); var moveTime = 1000 * distance / MyHero.MoveSpeed; Console.WriteLine("Extra Delay: " + moveTime); }
private static void Game_OnCastSpell(Obj_AI_Base sender, SpellBookCastSpellEventArgs e) { _checkPing = false; if (!sender.IsMe) { return; } _lastSpellCastArgs = e; if (!MyHero.HasPath || !MyHero.Path.Any()) { return; } _lastSpellCastServerPos = EvadeUtils.GetGamePosition(MyHero, Game.Ping); MyHero.Path.Last().To2D(); _checkPing = true; RenderObjects.Add(new RenderCircle(_lastSpellCastServerPos, 1000, Color.Green, 10)); }
private void Game_OnCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args) { var hero = sender.Owner; _checkPing = false; if (!hero.IsMe) { return; } _lastSpellCastArgs = args; if (MyHero.IsMoving && MyHero.Path.Count() > 0) { _lastSpellCastServerPos = EvadeUtils.GetGamePosition(MyHero, Game.Ping); _lastSpellCastEndPos = MyHero.Path.Last().To2D(); _checkPing = true; RenderObjects.Add(new RenderCircle(_lastSpellCastServerPos, 1000, Color.Green, 10)); } }
private static void Hero_OnNewPath(Obj_AI_Base hero, Obj_AI_BaseNewPathEventArgs args) { if (!ObjectCache.MenuCache.Cache["AutoSetPingOn"].Enabled) { return; } if (!hero.IsMe) { return; } var path = args.Path; if (path.Length <= 1 || args.IsDash) { return; } var movePos = path.Last().To2D(); if (_checkPing && _lastIssueOrderArgs.ProcessEvent && _lastIssueOrderArgs.OrderType == OrderType.MoveTo && _lastIssueOrderArgs.Target.Position.To2D().Distance(movePos) < 3 && MyHero.Path.Length == 1 && args.Path.Length == 2 && MyHero.HasPath) { RenderObjects.Add(new RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000)); RenderObjects.Add(new RenderLine(MyHero.Position.To2D(), MyHero.Path.Last().To2D(), 1000)); var distanceTillEnd = MyHero.Path.Last().To2D().Distance(MyHero.Position.To2D()); var moveTimeTillEnd = 1000 * distanceTillEnd / MyHero.MoveSpeed; if (moveTimeTillEnd < 500) { return; } var myHeroPosition = new Vector3(MyHero.Position.X, MyHero.Position.Y, MyHero.Position.Z); var dir1 = (MyHero.Path.Last().To2D() - MyHero.Position.To2D()).Normalized(); var ray1Startpos = new Vector3(myHeroPosition.X, myHeroPosition.Y, 0); var ray1Dir = new Vector3(dir1.X, dir1.Y, 0); var dir2 = (args.Path.First().To2D() - args.Path.Last().To2D()).Normalized(); var argsPathFirst = new Vector3(args.Path.First().X, args.Path.First().Y, args.Path.First().Z); var ray2Startpos = new Vector3(argsPathFirst.X, argsPathFirst.Y, 0); var ray2Dir = new Vector3(dir2.X, dir2.Y, 0); var intersection = ray2Startpos.To2D(). Intersection(ray2Startpos.To2D().ExtendDir(ray2Dir.To2D(), args.Path.Length), ray1Startpos.To2D(), ray1Startpos.To2D().ExtendDir(ray1Dir.To2D(), args.Path.Length)); if (intersection.Intersects) { var intersection3 = intersection.Point.To3D(); var x = intersection3.To2D().X; var y = intersection3.To2D().Y; var intersectionAt = new Vector2(x, y); var projection = intersectionAt.ProjectOn(MyHero.Path.Last().To2D(), MyHero.Position.To2D()); if (projection.IsOnSegment && dir1.AngleBetween(dir2) > 20 && dir1.AngleBetween(dir2) < 160) { RenderObjects.Add(new RenderCircle(intersectionAt, 1000, Color.Red, 10)); var distance = _lastMoveToServerPos.Distance(intersectionAt); var moveTime = 1000 * distance / MyHero.MoveSpeed; if (moveTime < 1000) { if (_numExtraDelayTime > 0) { PingList.Add(moveTime); } _numExtraDelayTime += 1; if (_maxExtraDelayTime == 0) { _maxExtraDelayTime = ObjectCache.MenuCache.Cache["ExtraPingBuffer"].As <MenuSlider>().Value; } if (_numExtraDelayTime % 100 == 0) { PingList.Sort(); var percentile = ObjectCache.MenuCache.Cache["AutoSetPercentile"].As <MenuSlider>().Value; var percentIndex = (int)Math.Floor(PingList.Count * (percentile / 100f)) - 1; _maxExtraDelayTime = Math.Max(PingList.ElementAt(percentIndex) - Game.Ping, 0); ObjectCache.MenuCache.Cache["ExtraPingBuffer"].As <MenuSlider>().Value = (int)_maxExtraDelayTime; //(new MenuSlider((int)maxExtraDelayTime, 0, 200)); PingList.Clear(); Console.WriteLine("Max Extra Delay: " + _maxExtraDelayTime); } Console.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping, 0)); } } } } _checkPing = false; }
//private void GameObject_OnIntegerPropertyChange(GameObject obj, GameObjectIntegerPropertyChangeEventArgs args) //{ // if (obj.IsMe) // { // if (args.Property != "mExp" && args.Property != "mGold" && args.Property != "mGoldTotal") // { // ConsolePrinter.Print("Int" + args.Property + ": " + args.NewValue); // } // } //} private void Game_OnIssueOrder(Obj_AI_Base hero, Obj_AI_BaseIssueOrderEventArgs args) { if (!hero.IsMe) { return; } if (args.OrderType == OrderType.HoldPosition) { var path = myHero.Path; var heroPoint = ObjectCache.myHeroCache.serverPos2D; if (path.Length > 0) { var movePos = path[path.Length - 1].To2D(); var walkDir = (movePos - heroPoint).Normalized(); //circleRenderPos = EvadeHelper.GetRealHeroPos(); //heroPoint;// +walkDir * ObjectCache.myHeroCache.moveSpeed * (((float)ObjectCache.gamePing) / 1000); } } if (testMenu["(TestPath)"].As <MenuBool>().Enabled) { var tPath = myHero.GetPath(args.Target.Position); var lastPoint = Vector2.Zero; foreach (var point in tPath) { var point2D = point.To2D(); RenderObjects.Add(new RenderCircle(point2D, 500)); //Render.Circle.DrawCircle(new Vector3(point.X, point.Y, point.Z), ObjectCache.myHeroCache.boundingRadius, Color.Violet, 3); } } /* * if (args.OrderType == OrderType.MoveTo) * { * if (testingCollision) * { * if (args.TargetPosition.To2D().Distance(testCollisionPos) < 3) * { * //var path = myHero.GetPath(); * //circleRenderPos * * args.Process = false; * } * } * }*/ if (args.OrderType == OrderType.MoveTo) { if (testMenu["(EvadeTesterPing)"].As <MenuBool>().Enabled) { ConsolePrinter.Print("Sending Path ClickTime: " + (EvadeUtils.TickCount - lastRightMouseClickTime)); } var heroPos = ObjectCache.myHeroCache.serverPos2D; var pos = args.Target.Position.To2D(); var speed = ObjectCache.myHeroCache.moveSpeed; startWalkPos = heroPos; startWalkTime = EvadeUtils.TickCount; foreach (var entry in SpellDetector.spells) { var spell = entry.Value; var spellPos = spell.currentSpellPosition; var walkDir = (pos - heroPos).Normalized(); var spellTime = EvadeUtils.TickCount - spell.startTime - spell.info.spellDelay; spellPos = spell.startPos + spell.direction * spell.info.projectileSpeed * (spellTime / 1000); //ConsolePrinter.Print("aaaa" + spellTime); var isCollision = false; var movingCollisionTime = MathUtils.GetCollisionTime(heroPos, spellPos, walkDir * (speed - 25), spell.direction * (spell.info.projectileSpeed - 200), ObjectCache.myHeroCache.boundingRadius, spell.radius, out isCollision); if (isCollision) { if (true) //spellPos.Distance(spell.endPos) / spell.info.projectileSpeed > movingCollisionTime) { ConsolePrinter.Print("movingCollisionTime: " + movingCollisionTime); } } } } }
private void Game_ProcessSpell(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args) { if (!(hero is Obj_AI_Hero)) { return; } if (testMenu["(ShowProcessSpell)"].As <MenuBool>().Enabled) { ConsolePrinter.Print( args.SpellData.Name + " CastTime: " + (hero.SpellBook.CastEndTime - Game.ClockTime)); ConsolePrinter.Print("CastRadius: " + args.SpellData.CastRadius); /*foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(args.SData)) * { * string name = descriptor.Name; * object value = descriptor.As(args.SData); * ConsolePrinter.Print("{0}={1}", name, value); * }*/ } if (args.SpellData.Name == "YasuoQW") { RenderObjects.Add( new RenderCircle(args.Start.To2D(), 500)); RenderObjects.Add( new RenderCircle(args.End.To2D(), 500)); } //ConsolePrinter.Print(EvadeUtils.TickCount - lastProcessPacketTime); //circleRenderPos = args.SpellData.ParticleStartOffset.To2D(); /*Draw.RenderObjects.Add( * new Draw.RenderPosition(args.Start.To2D(), Evade.GetTickCount + 500)); * Draw.RenderObjects.Add( * new Draw.RenderPosition(args.End.To2D(), Evade.GetTickCount + 500));*/ /*float testTime; * * * testTime = Evade.GetTickCount; * for (int i = 0; i < 100000; i++) * { * var testVar = ObjectCache.myHeroCache.boundingRadius; * } * ConsolePrinter.Print("Test time1: " + (Evade.GetTickCount - testTime)); * * testTime = Evade.GetTickCount; * var cacheVar = ObjectCache.myHeroCache.boundingRadius; * for (int i = 0; i < 100000; i++) * { * var testVar = cacheVar; * } * ConsolePrinter.Print("Test time1: " + (Evade.GetTickCount - testTime));*/ // ConsolePrinter.Print("NetworkID: " + args.MissileNetworkId); lastHeroSpellCastTime = EvadeUtils.TickCount; foreach (var entry in SpellDetector.spells) { var spell = entry.Value; if (spell.info.spellName == args.SpellData.Name && spell.heroID == hero.NetworkId) { if (spell.info.isThreeWay == false && spell.info.isSpecial == false) { ConsolePrinter.Print("Time diff: " + (EvadeUtils.TickCount - spell.startTime)); } } } if (hero.IsMe) { lastSpellCastTime = EvadeUtils.TickCount; } }
private void SpellMissile_OnCreate(GameObject obj) { /*if (sender.Name.ToLower().Contains("minion") || sender.Name.ToLower().Contains("turret") || sender.Type == GameObjectType.obj_GeneralParticleEmitter) || { || return; || } || || if (sender.IsValid<MissileClient>()) || { || var tMissile = sender as MissileClient; || if (tMissile.SpellCaster.Type != GameObjectType.obj_AI_Hero) || { || return; || } || } || || ConsolePrinter.Print(sender.Type + " : " + sender.Name);*/ if (obj.IsValid && obj.Type == GameObjectType.MissileClient) { var mis = (MissileClient)obj; if (mis.SpellCaster is Obj_AI_Hero && mis.SpellData.ConsideredAsAutoAttack) { ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Missile Speed " + mis.SpellData.MissileSpeed); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: LineWidth " + mis.SpellData.LineWidth); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Range " + mis.SpellData.CastRange); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Accel " + mis.SpellData.MissileAccel); } } //ConsolePrinter.Print(obj.Name + ": " + obj.Type); if (!obj.IsValid || obj.Type != GameObjectType.MissileClient) { return; } if (testMenu["ShowMissileInfo"].As <MenuBool>().Value == false) { return; } var missile = (MissileClient)obj; if (!(missile.SpellCaster is Obj_AI_Hero)) { return; } var testMissileSpeedStartTime = EvadeUtils.TickCount; var testMissileSpeedStartPos = missile.Position.To2D(); DelayAction.Add(250, () => { if (missile != null && missile.IsValid && !missile.IsDead) { testMissileSpeedStartTime = EvadeUtils.TickCount; testMissileSpeedStartPos = missile.Position.To2D(); } }); testMissile = missile; testMissileStartTime = EvadeUtils.TickCount; ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Est.CastTime: " + (EvadeUtils.TickCount - lastHeroSpellCastTime)); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Missile Name " + missile.SpellData.Name); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Missile Speed " + missile.SpellData.MissileSpeed); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Accel " + missile.SpellData.MissileAccel); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Max Speed " + missile.SpellData.MissileMaxSpeed); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: LineWidth " + missile.SpellData.LineWidth); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Range " + missile.SpellData.CastRange); //ConsolePrinter.Print("Angle " + missile.SpellData.CastConeAngle); /*ConsolePrinter.Print("Offset: " + missile.SpellData.ParticleStartOffset); * ConsolePrinter.Print("Missile Speed " + missile.SpellData.MissileSpeed); * ConsolePrinter.Print("LineWidth " + missile.SpellData.LineWidth); * circleRenderPos = missile.SpellData.ParticleStartOffset.To2D();*/ //ConsolePrinter.Print("Acquired: " + (EvadeUtils.TickCount - lastSpellCastTime)); RenderObjects.Add( new RenderCircle(missile.StartPosition.To2D(), 500)); RenderObjects.Add( new RenderCircle(missile.EndPosition.To2D(), 500)); DelayAction.Add(750, () => { if (missile != null && missile.IsValid && !missile.IsDead) { var dist = missile.Position.To2D().Distance(testMissileSpeedStartPos); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Est.Missile speed: " + 1000 * (dist / (EvadeUtils.TickCount - testMissileSpeedStartTime))); } }); SpellData spellData; if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team && missile.SpellData.Name != null && SpellDetector.onMissileSpells.TryGetValue(missile.SpellData.Name, out spellData) && missile.StartPosition != null && missile.EndPosition != null) { if (missile.StartPosition.Distance(myHero.Position) < spellData.range + 1000) { var hero = missile.SpellCaster; if (hero.IsVisible) { foreach (var entry in SpellDetector.spells) { var spell = entry.Value; if (spell.info.missileName == missile.SpellData.Name && spell.heroID == missile.SpellCaster.NetworkId) { if (spell.info.isThreeWay == false && spell.info.isSpecial == false) { ConsolePrinter.Print("Acquired: " + (EvadeUtils.TickCount - spell.startTime)); } } } } } } }
private void OnSpellEndChange(MenuComponent sender, ValueChangedArgs e) { SpellEndPostion = MyHero.ServerPosition; RenderObjects.Add(new RenderCircle(SpellEndPostion.To2D(), 1000, Color.Red, 100, 20)); }
private void Hero_OnNewPath(Obj_AI_Base hero, GameObjectNewPathEventArgs args) { if (!Config.Properties.GetBool(ConfigValue.AutoSetPing)) { 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)); RenderObjects.Add(new RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000)); RenderObjects.Add(new 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) { RenderObjects.Add(new RenderCircle(intersection, 1000, Color.Red, 10)); var distance = //args.Path.First().To2D().Distance(intersection); _lastMoveToServerPos.Distance(intersection); float moveTime = 1000 * distance / MyHero.MoveSpeed; //ConsoleDebug.WriteLine("waa: " + distance); if (moveTime < 1000) { if (_numExtraDelayTime > 0) { _sumExtraDelayTime += moveTime; _avgExtraDelayTime = _sumExtraDelayTime / _numExtraDelayTime; _pingList.Add(moveTime); } _numExtraDelayTime += 1; if (_maxExtraDelayTime == 0) { _maxExtraDelayTime = Config.Properties.GetInt(ConfigValue.ExtraPingBuffer); } if (_numExtraDelayTime % 100 == 0) { _pingList.Sort(); var percentile = ConfigValue.AutoSetPingPercentile.GetInt(); int percentIndex = (int)Math.Floor(_pingList.Count() * (percentile / 100f)) - 1; _maxExtraDelayTime = Math.Max(_pingList.ElementAt(percentIndex) - Game.Ping, 0); _maxExtraDelayTime.SetTo(ConfigValue.ExtraPingBuffer); _pingList.Clear(); ConsoleDebug.WriteLine("Max Extra Delay: " + _maxExtraDelayTime); } ConsoleDebug.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping, 0)); } } } } _checkPing = false; } }
private void Hero_OnNewPath(Obj_AI_Base hero, Obj_AI_BaseNewPathEventArgs args) { if (ObjectCache.menuCache.cache["AutoSetPingOn"].As <MenuBool>().Value == false) { return; } if (!hero.IsMe) { return; } var path = args.Path; if (path.Length > 1 && !args.IsDash) { var movePos = path.Last().To2D(); if (checkPing && lastIssueOrderArgs.ProcessEvent && lastIssueOrderArgs.OrderType == OrderType.MoveTo && lastIssueOrderArgs.Target.Position.To2D().Distance(movePos) < 3 && myHero.Path.Count() == 1 && args.Path.Count() == 2 && myHero.HasPath) { //Draw.RenderObjects.Add(new Draw.RenderPosition(myHero.Path.Last().To2D(), 1000)); RenderObjects.Add(new RenderLine(args.Path.First().To2D(), args.Path.Last().To2D(), 1000)); RenderObjects.Add(new 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()); var moveTimeTillEnd = 1000 * distanceTillEnd / myHero.MoveSpeed; if (moveTimeTillEnd < 500) { return; } /*SharpDX.*/ var myHeroPosition = new /*SharpDX.*/ Vector3(myHero.Position.X, myHero.Position.Y, myHero.Position.Z); var dir1 = (myHero.Path.Last().To2D() - myHero.Position.To2D()).Normalized(); //SharpDX.Vector2 dir1sharpdx = new SharpDX.Vector2(myHero.Position.X, myHero.Position.Y); //var ray1 = new Ray(myHeroPosition.SetZ(0), new SharpDX.Vector3(dir1.X, dir1.Y, 0)); var ray1startpos = new Vector3(myHeroPosition.X, myHeroPosition.Y, 0); var ray1dir = new Vector3(dir1.X, dir1.Y, 0); //Vector3 ray1 = ray1startpos.ExtendDir(ray1dir, args.Path.Length); var dir2 = (args.Path.First().To2D() - args.Path.Last().To2D()).Normalized(); //var pos2 = new Vector3(args.Path.First().X, args.Path.First().Y, 0); /*SharpDX.*/ var argsPathFirst = new /*SharpDX.*/ Vector3(args.Path.First().X, args.Path.First().Y, args.Path.First().Z); //var ray2 = new Ray(argsPathFirst.SetZ(0), new SharpDX.Vector3(dir2.X, dir2.Y, 0)); var ray2startpos = new Vector3(argsPathFirst.X, argsPathFirst.Y, 0); var ray2dir = new Vector3(dir2.X, dir2.Y, 0); //Vector3 ray2 = ray2startpos.ExtendDir(ray2dir, args.Path.Length); /*SharpDX.*/ //Vector3 intersection3; var intersection = ray2startpos.To2D() .Intersection(ray2startpos.To2D().ExtendDir(ray2dir.To2D(), args.Path.Length), ray1startpos.To2D(), ray1startpos.To2D().ExtendDir(ray1dir.To2D(), args.Path.Length)); if (intersection.Intersects) { var intersection3 = intersection.Point.To3D(); var x = intersection3.To2D().X; var y = intersection3.To2D().Y; var intersectionAT = new Vector2(x, y); var projection = intersectionAT.ProjectOn(myHero.Path.Last().To2D(), myHero.Position.To2D()); if (projection.IsOnSegment && dir1.AngleBetween(dir2) > 20 && dir1.AngleBetween(dir2) < 160) { RenderObjects.Add(new RenderCircle(intersectionAT, 1000, Color.Red, 10, 5)); var distance = //args.Path.First().To2D().Distance(intersection); lastMoveToServerPos.Distance(intersectionAT); var 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"].As <MenuSlider>() .Value; } if (numExtraDelayTime % 100 == 0) { pingList.Sort(); var percentile = ObjectCache.menuCache.cache["AutoSetPercentile"].As <MenuSlider>() .Value; var percentIndex = (int)Math.Floor(pingList.Count() * (percentile / 100f)) - 1; maxExtraDelayTime = Math.Max(pingList.ElementAt(percentIndex) - Game.Ping, 0); ObjectCache.menuCache.cache["ExtraPingBuffer"].As <MenuSlider>().Value = (int)maxExtraDelayTime; //(new MenuSlider((int)maxExtraDelayTime, 0, 200)); pingList.Clear(); Console.WriteLine("Max Extra Delay: " + maxExtraDelayTime); } Console.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping, 0)); } } } //if (ray2.Intersects(ref ray1, out intersection3)) //{ // //var intersection = intersection3.To2D(); // float x = intersection3.To2D().X; // float y = intersection3.To2D().Y; // Vector2 intersectionAT = new Vector2(x, y); // var projection = intersectionAT.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(intersectionAT, 1000, System.Drawing.Color.Red, 10, 5)); // var distance = //args.Path.First().To2D().Distance(intersection); // lastMoveToServerPos.Distance(intersectionAT); // 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"].As<MenuSlider>().Value; // } // if (numExtraDelayTime % 100 == 0) // { // pingList.Sort(); // var percentile = ObjectCache.menuCache.cache["AutoSetPercentile"].As<MenuSlider>().Value; // int percentIndex = (int)Math.Floor(pingList.Count() * (percentile / 100f)) - 1; // maxExtraDelayTime = Math.Max(pingList.ElementAt(percentIndex) - Game.Ping, 0); // ObjectCache.menuCache.cache["ExtraPingBuffer"].As<MenuSlider>().Value = // (int)maxExtraDelayTime; //(new MenuSlider((int)maxExtraDelayTime, 0, 200)); // pingList.Clear(); // Console.WriteLine("Max Extra Delay: " + maxExtraDelayTime); // } // Console.WriteLine("Extra Delay: " + Math.Max(moveTime - Game.Ping, 0)); // } // } //} } checkPing = false; } }
public void Insert(Model9 model, Entity e, MetaModel metaModel, string metaName) { RenderObjects.Add(new Common.Tuple <Model9, Entity, string>(model, e, metaName)); }
private void SpellMissile_OnCreate(GameObject obj) { if (obj.IsValid && obj.Type == GameObjectType.MissileClient) { var mis = (MissileClient)obj; if (mis.SpellCaster is Obj_AI_Hero && mis.SpellData.ConsideredAsAutoAttack) { ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Missile Speed " + mis.SpellData.MissileSpeed); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: LineWidth " + mis.SpellData.LineWidth); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Range " + mis.SpellData.CastRange); ConsolePrinter.Print("[" + mis.SpellData.Name + "]: Accel " + mis.SpellData.MissileAccel); } } if (!obj.IsValid || obj.Type != GameObjectType.MissileClient) { return; } if (!TestMenu["ShowMissileInfo"].Enabled) { return; } var missile = (MissileClient)obj; if (!(missile.SpellCaster is Obj_AI_Hero)) { return; } var testMissileSpeedStartTime = Environment.TickCount; var testMissileSpeedStartPos = missile.Position.To2D(); DelayAction.Add(250, () => { if (!missile.IsValid || missile.IsDead) { return; } testMissileSpeedStartTime = Environment.TickCount; testMissileSpeedStartPos = missile.Position.To2D(); }); _testMissile = missile; _testMissileStartTime = Environment.TickCount; ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Est.CastTime: " + (Environment.TickCount - _lastHeroSpellCastTime)); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Missile Name " + missile.SpellData.Name); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Missile Speed " + missile.SpellData.MissileSpeed); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Accel " + missile.SpellData.MissileAccel); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Max Speed " + missile.SpellData.MissileMaxSpeed); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: LineWidth " + missile.SpellData.LineWidth); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Range " + missile.SpellData.CastRange); RenderObjects.Add(new RenderCircle(missile.StartPosition.To2D(), 500)); RenderObjects.Add(new RenderCircle(missile.EndPosition.To2D(), 500)); DelayAction.Add(750, () => { if (!missile.IsValid || missile.IsDead) { return; } var dist = missile.Position.To2D().Distance(testMissileSpeedStartPos); ConsolePrinter.Print("[" + missile.SpellData.Name + "]: Est.Missile speed: " + 1000 * (dist / (Environment.TickCount - testMissileSpeedStartTime))); }); if (missile.SpellCaster == null || missile.SpellCaster.Team == MyHero.Team || missile.SpellData.Name == null || !SpellDetector.OnMissileSpells.TryGetValue(missile.SpellData.Name, out var spellData) || missile.StartPosition == null || missile.EndPosition == null) { return; } if (!(missile.StartPosition.Distance(MyHero.Position) < spellData.Range + 1000)) { return; } var hero = missile.SpellCaster; if (!hero.IsVisible) { return; } foreach (var entry in SpellDetector.Spells) { var spell = entry.Value; if (spell.Info.MissileName != missile.SpellData.Name || spell.HeroId != missile.SpellCaster.NetworkId) { continue; } if (spell.Info.IsThreeWay == false && spell.Info.IsSpecial == false) { ConsolePrinter.Print("Acquired: " + (Environment.TickCount - spell.StartTime)); } } }