private static void Flick(MouseInjector injector, Point target, Point position, double speed, double horizontalSensitivity, double verticalSensitivity, int timestepMs, int triggerDelayMs, int cooldownMs, bool trigger) { double ex = 0.0; double ey = 0.0; var screenx = target.X - position.X; var screeny = target.Y - position.Y; var mousex = screenx * horizontalSensitivity; var mousey = screeny * verticalSensitivity; var distance = Math.Sqrt(mousex * mousex + mousey * mousey); var time = distance / speed; var frames = (int)Math.Ceiling((time * 1000) / timestepMs); if (frames > 0) { for (int i = 0; i < frames; ++i) { var dx = ex + (double)mousex / frames; var dy = ey + (double)mousey / frames; var px = (int)Math.Round(dx); var py = (int)Math.Round(dy); ex = dx - px; ey = dy - py; if (px != 0 || py != 0) { injector.Move(px, py); } if (i < frames - 1) { Thread.Sleep(timestepMs); } else if (trigger) { Thread.Sleep(triggerDelayMs); var rng = new Random(); injector.Click(0, rng.Next(50, 80)); } } } else if (trigger) { Thread.Sleep(triggerDelayMs); var rng = new Random(); injector.Click(0, rng.Next(50, 80)); } if (cooldownMs > 0) { Thread.Sleep(cooldownMs); } }
public void Trigger(MouseInjector injector, Point current, Point target, Rectangle region, Esp esp, ref bool aim, double dt) { time += dt; if (Conditions != Condition.Never) { if (target != Point.Empty && esp != null) { esp.Add(new CircleShape(new Point(target.X, target.Y), Proximity, Color.Transparent, Color.Yellow, 1)); } bool trigger = (aim == true && (Conditions & Condition.WhenAiming) != 0) || (aim == false && (Conditions & Condition.WhenNotAiming) != 0); if (trigger && time >= TriggerRate) { var distanceSq = current.DistanceSq(target); if (distanceSq <= Proximity * Proximity) { injector.Click(TriggerButton, 50); time = 0.0; if (ContinueAiming == false) { aim = false; } } } } }