Yeah, that's a problem for the back right targets, right? I had that problem a few times, that's why instead of using DTMs to find the targets (Just a silly thing I decided to do), I made a non CTS 2 version of my mousing function that uses TPAs and ATPAs. You can borrow it if you want. It'll get the closest target to the center of the screen.
By the way, you should do a check to see if you have moved out of the range and attempt to fix it by walking back to the proper zone. That's what I do since misclicks seem to be very hard to avoid with the script sometimes due to different computers and latency.
Just in case: W and H in my function are the width and height of the pixel, so you should set those to about 10 ~ 15 for the targets.
Here it is:
Simba Code:
// Non CTS 2 version of R_MouseTPA
function R_MouseObj(Text: string; Col, Tol, W, H: Integer): Boolean;
var
X, Y, I, T, maxT: Integer;
P: TPoint;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
if (not(LoggedIn)) then
Exit;
FindNormalRandoms;
I := 0;
T := 0;
maxT := (RandomRange(15000, 25000));
MarkTime(T);
repeat
if (not(LoggedIn)) then
Exit;
FindNormalRandoms;
if (TimeFromMark(T) >= maxT) then
begin
Write('We were unable to find the object.');
Result := False;
Exit;
end;
FindColorsSpiralTolerance(X, Y, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);
if (Length(TPA) > 0) then
Break;
Write('The object is not on the screen. Waiting.');
AntiBan;
Wait(RandomRange(500, 1500));
until(False);
// What to do if the length of TPA is greater than 0
ATPA := (TPAToATPAEx(TPA, W, H));
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
if (ENABLE_DEBUG_MODE) then
DebugATPABounds(ATPA);
for I := 0 to High(ATPA) do
begin
if (not(LoggedIn)) then
Exit;
FindNormalRandoms;
P := (MiddleTPA(ATPA[I]));
HumanMMouse(P.X, P.Y, 5, 5);
Result := (WaitUpText(Text, RandomRange(850, 1500)));
if (Result) then
Break;
AntiBan;
Wait(RandomRange(250, 500));
end;
if (not(Result)) then
Write('We were unable to mouse the object.');
end;