hi so i am trying to make it so my ai moves to and object but the thing is that it jitters a lot and i have tried many ways to try to make it stop but nothing is working here is the code where the mouse movement is triggered
(i tried to delete the jitter code but that just made it so it does not move at all, anyways here is the code in C#):
[DllImport("user32.dll")]
private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
private static Random MouseRandom = new();
private static Point CubicBezier(Point start, Point end, Point control1, Point control2, Point control3, Point control4, Point control5, Point control6, Point control7, Point control8, Point control9, Point control10, Point control11, Point control12, Point control13, Point control14, Point control15, Point control16, Point control17, Point control18, Point control19, Point control20, double t)
{
double u = 1 - t;
double tt = t * t;
double uu = u * u;
double uuu = uu * u;
double ttt = tt * t;
double x = uuu * start.X + 10 * uu * t * control1.X + 45 * u * tt * control2.X + 120 * t * tt * control3.X + 210 * u * tt * t * control4.X + 252 * tt * tt * control5.X + 210 * u * ttt * control6.X + 120 * tt * ttt * control7.X + 45 * t * ttt * control8.X + 10 * uu * ttt * control9.X + uuu * control10.X + ttt * end.X;
double y = uuu * start.Y + 10 * uu * t * control1.Y + 45 * u * tt * control2.Y + 120 * t * tt * control3.Y + 210 * u * tt * t * control4.Y + 252 * tt * tt * control5.Y + 210 * u * ttt * control6.Y + 120 * tt * ttt * control7.Y + 45 * t * ttt * control8.Y + 10 * uu * ttt * control9.Y + uuu * control10.Y + ttt * end.Y;
return new Point((int)x, (int)y);
}
private async Task DoTriggerClick()
{
int TimeSinceLastClick = (int)(DateTime.Now - LastClickTime).TotalMilliseconds;
int Trigger_Delay_Milliseconds = (int)(aimmySettings["Trigger_Delay"] * 1000);
if (TimeSinceLastClick >= Trigger_Delay_Milliseconds || LastClickTime == DateTime.MinValue)
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
await Task.Delay(20);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
LastClickTime = DateTime.Now;
}
return;
}
private void MoveCrosshair(int detectedX, int detectedY)
{
double Alpha = aimmySettings["Mouse_Sens"];
double Beta = aimmySettings["Mouse_SensY"];
int halfScreenWidth = ScreenWidth / 2;
int halfScreenHeight = ScreenHeight / 2;
int targetX = detectedX - halfScreenWidth;
int targetY = detectedY - halfScreenHeight;
// Aspect ratio correction factor
double aspectRatioCorrection = (double)ScreenWidth / ScreenHeight;
targetY = (int)(targetY * aspectRatioCorrection);
// Introduce random jitter
int MouseJitter = (int)aimmySettings["Mouse_Jitter"];
int jitterX = MouseRandom.Next(-MouseJitter, MouseJitter);
int jitterY = MouseRandom.Next(-MouseJitter, MouseJitter);
targetX += jitterX;
targetY += jitterY;
// Define Bezier curve control points
Point start = new(0, 0); // Current cursor position (locked to center screen)
Point end = new(targetX, targetY);
Point control1 = new Point(start.X + (end.X - start.X) / 40, 0);
Point control2 = new Point(start.X + 0.2 * (end.X - start.X) / 40, 0);
Point control3 = new Point(start.X + 0.4 * (end.X - start.X) / 40, 0);
Point control4 = new Point(start.X + 0.6 * (end.X - start.X) / 40, 0);
Point control5 = new Point(start.X + 0.8 * (end.X - start.X) / 40, 0);
Point control6 = new Point(start.X + 0.10 * (end.X - start.X) / 40, 0);
Point control7 = new Point(start.X + 0.12 * (end.X - start.X) / 40, 0);
Point control8 = new Point(start.X + 0.14 * (end.X - start.X) / 40, 0);
Point control9 = new Point(start.X + 0.16 * (end.X - start.X) / 40, 0);
Point control10 = new Point(start.X + 0.18 * (end.X - start.X) / 40, 0);
Point control11 = new Point(start.X + 0.20 * (end.X - start.X) / 40, 0);
Point control12 = new Point(start.X + 0.22 * (end.X - start.X) / 40, 0);
Point control13 = new Point(start.X + 0.24 * (end.X - start.X) / 40, 0);
Point control14 = new Point(start.X + 0.26 * (end.X - start.X) / 40, 0);
Point control15 = new Point(start.X + 0.28 * (end.X - start.X) / 40, 0);
Point control16 = new Point(start.X + 0.30 * (end.X - start.X) / 40, 0);
Point control17 = new Point(start.X + 0.32 * (end.X - start.X) / 40, 0);
Point control18 = new Point(start.X + 0.34 * (end.X - start.X) / 40, 0);
Point control19 = new Point(start.X + 0.36 * (end.X - start.X) / 40, 0);
Point control20 = new Point(start.X + 0.38 * (end.X - start.X) / 40, 0);
Point control21 = new Point(0, start.Y + (end.Y - start.Y) / 40);
Point control22 = new Point(0, start.Y + 0.2 * (end.Y - start.Y) / 40);
Point control23 = new Point(0, start.Y + 0.4 * (end.Y - start.Y) / 40);
Point control24 = new Point(0, start.Y + 0.6 * (end.Y - start.Y) / 40);
Point control25 = new Point(0, start.Y + 0.8 * (end.Y - start.Y) / 40);
Point control26 = new Point(0, start.Y + 0.10 * (end.Y - start.Y) / 40);
Point control27 = new Point(0, start.Y + 0.12 * (end.Y - start.Y) / 40);
Point control28 = new Point(0, start.Y + 0.14 * (end.Y - start.Y) / 40);
Point control29 = new Point(0, start.Y + 0.16 * (end.Y - start.Y) / 40);
Point control30 = new Point(0, start.Y + 0.18 * (end.Y - start.Y) / 40);
Point control31 = new Point(0, start.Y + 0.20 * (end.Y - start.Y) / 40);
Point control32 = new Point(0, start.Y + 0.22 * (end.Y - start.Y) / 40);
Point control33 = new Point(0, start.Y + 0.24 * (end.Y - start.Y) / 40);
Point control34 = new Point(0, start.Y + 0.26 * (end.Y - start.Y) / 40);
Point control35 = new Point(0, start.Y + 0.28 * (end.Y - start.Y) / 40);
Point control36 = new Point(0, start.Y + 0.30 * (end.Y - start.Y) / 40);
Point control37 = new Point(0, start.Y + 0.32 * (end.Y - start.Y) / 40);
Point control38 = new Point(0, start.Y + 0.34 * (end.Y - start.Y) / 40);
Point control39 = new Point(0, start.Y + 0.36 * (end.Y - start.Y) / 40);
Point control40 = new Point(0, start.Y + 0.38 * (end.Y - start.Y) / 40);
// Calculate new position along the Bezier curve
Point newPosition = CubicBezier(start, end, control1, control2, control3, control4, control5, control6, control7, control8, control9, control10, control11, control12, control13, control14, control15, control16, control17, control18, control19, control20, 1 - Alpha);
Point newPosition2 = CubicBezier(start, end, control21, control22, control23, control24, control25, control26, control27, control28, control29, control30, control31, control32, control33, control34, control35, control36, control37, control38, control39, control40, 1 - Beta);
mouseMove((int)newPosition.X, (int)newPosition2.Y);
if (toggleState["TriggerBot"])
{
Task.Run(DoTriggerClick);
}
}