Simba Code:
function FindRoach(var P: TPoint): Boolean;
var
CTS, I, Len, C: Integer;
TPA, TPA2, Temp, BTPA: TPointArray;
ATPA, NATPA: Array of TPointArray;
B, Mid: TBox;
TP: TPoint;
begin
Result := False;
ClearScreen;
if not LoggedIn then Exit;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.41, 0.83);//find wings
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2387585, MSX1, MSY1, MSX2, MSY2, 12);
SetColorspeed2Modifiers(0.06, 0.27);//find body
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 1650514, MSX1, MSY1, MSX2, MSY2, 6);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (Length(TPA) < 1) or (Length(TPA2) < 1) then
begin
m_Debug('Roach - Found no colors', True);
Exit;
end;
BTPA := CombineTPA(TPA, TPA2);//add them together
ClearDoubleTPA(BTPA);
ATPA := SplitTPA(BTPA, 7);//split into different
SetLength(NATPA, Length(ATPA));
C := 0;
for i := 0 to High(ATPA) do
begin
Len := Length(ATPA[i]);
if (Len < 300) then Continue;
TP := MiddleTPA(ATPA[i]);
if FindDeath(TP) then Continue;
SortTPAFrom(ATPA[i], Point(MSCY, MSCY));
NATPA[C] := ATPA[i];
Inc(C);
if Debug then
begin
B := GetTPABounds(ATPA[i]);
SMART_DrawBoxEx(False, B, clWhite);
end;
end;
SetLength(NATPA, C);
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
//if Debug then DrawDotsMulti(False, NATPA);
For i := High(NATPA) downto 0 do
begin
B := GetTPABounds(NATPA[i]);
TP := MiddleTPA(NATPA[i]);
if FindDeath(TP) then Continue;
MMouse(TP.x, TP.y, 12, 12);
If(WaitUpTextMulti(['ttack', 'ockroach', 'roach sol', 'soldier'], 550)) then
begin
Result := True;
GetMousePos(P.x, P.y);
if Debug then SMART_DrawBoxEx(False, B, clGreen);
m_Debug('Roach - ', False);
m_Debug(' Length: ' +ToStr(Length(NATPA[i])), False);
m_Debug(' Bounds: ' +ToStr(GetTPABounds(NATPA[i])), False);
Exit;
end else
begin
if Debug then Smart_DrawBoxEx(False, B, clRed);
m_Debug('Not Roach - ', False);
m_Debug(' Length: ' +ToStr(Length(NATPA[i])), False);
m_Debug(' Bounds: ' +ToStr(GetTPABounds(NATPA[i])), False);
end;
end;
end;