SCAR Code:
procedure Circle(MidX,MidY,rad,sAngle,eAngle: Integer; accuracy,xOffset,yOffset: Extended);
var
x,y,dloop,eloop: Integer;
angle: Extended;
begin
angle := sAngle;
X := MidX + Round(xOffset * (rad * Cos(Radians(angle - 90))));
Y := MidY + Round(yOffset * (rad * Sin(Radians(angle - 90))));
HoldMouse(x,y,True);
Sleep(500);
if(sAngle > eAngle) then
eloop := Round((sAngle - eAngle) * (1/accuracy))
else
eloop := Round((eAngle - sAngle) * (1/accuracy));
repeat
if(sAngle < eAngle) then
angle := angle + accuracy
else
angle := angle - accuracy;
Inc(dloop);
X := MidX + Round(xOffset * (rad * Cos(Radians(angle - 90))));
Y := MidY + Round(yOffset * (rad * Sin(Radians(angle - 90))));
movemouse(x,y);
Wait(5);
until (dloop >= eloop);
ReleaseMouse(x,y,True);
end;
MidX and MidY are the starting points, rad is the radius of the circle, sAngle is the start angle and eAngle is the end angle, accuracy is how accurate you want the circle points to be (0.5 recomended though 1 works well too) and xOffset and yOffset change the shape of it into an eclipse with the widest point being rad * xOffset and the highest point being rad * yOffset ;)