SCAR Code:
program SwitchSpotTest;
type
TDTMPoints = record
MainPoint : TDTMPointDef;
SubPoints : array [0..2] of TDTMPointDef;
end;
var
MasterDTM : array [0..3] of TDTM;
TDTMArray : array [0..3] of TDTMPoints;
CenterDTM, ULDTM, LLDTM, LRDTM : integer;
procedure AssembleDTM;
var
i,mark : integer;
begin
MarkTime(mark);
TDTMArray[0].MainPoint.x := 652;
TDTMArray[0].MainPoint.y := 81;
TDTMArray[0].MainPoint.areasize := 1;
TDTMArray[0].MainPoint.areashape := 0;
TDTMArray[0].MainPoint.color := 0;
TDTMArray[0].MainPoint.tolerance := 255;
TDTMArray[0].Subpoints[0].x := 624;
TDTMArray[0].Subpoints[0].y := 53;
TDTMArray[0].Subpoints[0].areasize := 3;
TDTMArray[0].Subpoints[0].areashape := 0;
TDTMArray[0].Subpoints[0].color := RoadColor;
TDTMArray[0].Subpoints[0].tolerance := 0;
TDTMArray[0].Subpoints[1].x := 675;
TDTMArray[0].Subpoints[1].y := 52;
TDTMArray[0].Subpoints[1].areasize := 3;
TDTMArray[0].Subpoints[1].areashape := 0;
TDTMArray[0].Subpoints[1].color := RoadColor;
TDTMArray[0].Subpoints[1].tolerance := 0;
TDTMArray[0].Subpoints[2].x := 623;
TDTMArray[0].Subpoints[2].y := 103;
TDTMArray[0].Subpoints[2].areasize := 3;
TDTMArray[0].Subpoints[2].areashape := 0;
TDTMArray[0].Subpoints[2].color := RoadColor;
TDTMArray[0].Subpoints[2].tolerance := 0;
TDTMArray[1].MainPoint.x := 624;
TDTMArray[1].MainPoint.y := 52;
TDTMArray[1].MainPoint.areasize := 1;
TDTMArray[1].MainPoint.areashape := 0;
TDTMArray[1].MainPoint.color := RoadColor;
TDTMArray[1].MainPoint.tolerance := 0;
TDTMArray[1].Subpoints[0].x := 676;
TDTMArray[1].Subpoints[0].y := 53;
TDTMArray[1].Subpoints[0].areasize := 3;
TDTMArray[1].Subpoints[0].areashape := 0;
TDTMArray[1].Subpoints[0].color := RoadColor;
TDTMArray[1].Subpoints[0].tolerance := 0;
TDTMArray[1].Subpoints[1].x := 623;
TDTMArray[1].Subpoints[1].y := 104;
TDTMArray[1].Subpoints[1].areasize := 3;
TDTMArray[1].Subpoints[1].areashape := 0;
TDTMArray[1].Subpoints[1].color := RoadColor;
TDTMArray[1].Subpoints[1].tolerance := 0;
TDTMArray[1].Subpoints[2].x := 678;
TDTMArray[1].Subpoints[2].y := 105;
TDTMArray[1].Subpoints[2].areasize := 3;
TDTMArray[1].Subpoints[2].areashape := 0;
TDTMArray[1].Subpoints[2].color := RoadColor;
TDTMArray[1].Subpoints[2].tolerance := 0;
TDTMArray[2].MainPoint.x := 623;
TDTMArray[2].MainPoint.y := 106;
TDTMArray[2].MainPoint.areasize := 1;
TDTMArray[2].MainPoint.areashape := 0;
TDTMArray[2].MainPoint.color := RoadColor;
TDTMArray[2].MainPoint.tolerance := 0;
TDTMArray[2].Subpoints[0].x := 622;
TDTMArray[2].Subpoints[0].y := 54;
TDTMArray[2].Subpoints[0].areasize := 3;
TDTMArray[2].Subpoints[0].areashape := 0;
TDTMArray[2].Subpoints[0].color := RoadColor;
TDTMArray[2].Subpoints[0].tolerance := 0;
TDTMArray[2].Subpoints[1].x := 677;
TDTMArray[2].Subpoints[1].y := 51;
TDTMArray[2].Subpoints[1].areasize := 3;
TDTMArray[2].Subpoints[1].areashape := 0;
TDTMArray[2].Subpoints[1].color := RoadColor;
TDTMArray[2].Subpoints[1].tolerance := 0;
TDTMArray[2].Subpoints[2].x := 677;
TDTMArray[2].Subpoints[2].y := 106;
TDTMArray[2].Subpoints[2].areasize := 3;
TDTMArray[2].Subpoints[2].areashape := 0;
TDTMArray[2].Subpoints[2].color := RoadColor;
TDTMArray[2].Subpoints[2].tolerance := 0;
TDTMArray[3].MainPoint.x := 676;
TDTMArray[3].MainPoint.y := 106;
TDTMArray[3].MainPoint.areasize := 1;
TDTMArray[3].MainPoint.areashape := 0;
TDTMArray[3].MainPoint.color := RoadColor;
TDTMArray[3].MainPoint.tolerance := 0;
TDTMArray[3].Subpoints[0].x := 674;
TDTMArray[3].Subpoints[0].y := 51;
TDTMArray[3].Subpoints[0].areasize := 3;
TDTMArray[3].Subpoints[0].areashape := 0;
TDTMArray[3].Subpoints[0].color := RoadColor;
TDTMArray[3].Subpoints[0].tolerance := 0;
TDTMArray[3].Subpoints[1].x := 624;
TDTMArray[3].Subpoints[1].y := 51;
TDTMArray[3].Subpoints[1].areasize := 3;
TDTMArray[3].Subpoints[1].areashape := 0;
TDTMArray[3].Subpoints[1].color := RoadColor;
TDTMArray[3].Subpoints[1].tolerance := 0;
TDTMArray[3].Subpoints[2].x := 622;
TDTMArray[3].Subpoints[2].y := 104;
TDTMArray[3].Subpoints[2].areasize := 3;
TDTMArray[3].Subpoints[2].areashape := 0;
TDTMArray[3].Subpoints[2].color := RoadColor;
TDTMArray[3].Subpoints[2].tolerance := 0;
for i := 0 to 3 do
begin
MasterDTM[i].MainPoint := TDTMArray[i].MainPoint;
MasterDTM[i].Subpoints := TDTMArray[i].Subpoints;
Case i of
0: CenterDTM := AddDTM(MasterDTM[i]);
1: ULDTM := AddDTM(MasterDTM[i]);
2: LLDTM := AddDTM(MasterDTM[i]);
3: LRDTM := AddDTM(MasterDTM[i]);
end;
end;
Writeln('AssembleDTM took '+IntToStr(TimeFromMark(mark))+' msecs');
end;
{*******************************************************************************
function ClosestCoords(var returncoords : TPoint; origincoords : TPoint;
numbers : TPointArray) : integer;
By: Infantry001
Description: ReturnCoords is the TPoint from Numbers that is closest to the
origincoords. Returns array number of the closest point.
*******************************************************************************}
function ClosestCoords(var returncoords : TPoint; origincoords : TPoint; numbers : TPointArray) : integer;
var
i,Closest,temp : integer;
begin
Closest := 1000;
for i := 0 to getarraylength(numbers) - 1 do
begin
if (Distance(OriginCoords.x,OriginCoords.y,Numbers[i].x,Numbers[i].y) < closest) then
begin
result := i;
returncoords.x := Numbers[i].x;
returncoords.y := Numbers[i].y;
Closest := Distance(OriginCoords.x,OriginCoords.y,Numbers[i].x,Numbers[i].y);
end;
end;
writeln('Closest coords are '+IntToStr(returncoords.x)+','+IntToStr(returncoords.x));
end;
function SwitchSpot : boolean;
var
i,Closest,spread : integer;
iX,iY,yX,yY,wX,wY : integer;
angle : extended;
TPT : array [0..2] of TPoint;
Click,MMC : TPoint;
begin
writeln('Switching spots');
if not LoggedIn then exit;
for i := 0 to 2 do
begin
Case i of
0: if FindDTMRotated(CenterDTM,iX,iY,MMX1,MMY1,MMX2,MMY2,Radians(-20),
Radians(20),0.005,angle) then
begin
writeln('Found '+IntToStr(i)+' dtm');
TPT[i].x := iX;
TPT[i].y := iY;
end;
1: if FindDTMRotated(ULDTM,iX,iY,MMX1,MMY1,MMX2,MMY2,Radians(-20),
Radians(20),0.005,angle) then
begin
writeln('Found '+IntToStr(i)+' dtm');
TPT[i].x := iX;
TPT[i].y := iY;
end;
2: if FindDTMRotated(LLDTM,iX,iY,MMX1,MMY1,MMX2,MMY2,Radians(-20),
Radians(20),0.005,angle) then
begin
writeln('Found '+IntToStr(i)+' dtm');
TPT[i].x := iX;
TPT[i].y := iY;
end;
end;
Wait(5);
end;
MMC.x := MMCX;
MMC.y := MMCY;
Closest := ClosestCoords(Click,MMC,TPT);
for i := 0 to 2 do
begin
if i <> closest then
begin
repeat
if FindColorSpiralTolerance(yX,yY,195836,TPT[i].x - spread,
TPT[i].y - spread,TPT[i].x + spread,TPT[i].y + spread,7) then
begin
if FindColorSpiralTolerance(wX,wY,16777215,yx - 2,yy - 2,yx + 2,yy + 2,3) then
begin
writeln('Player fighting Monk');
result := false;
break;
end else
begin
MouseFlag(yX,yY,3,3);
result := true;
break;
end;
end else
begin
if spread > 15 then
begin
writeln('No monk in DTM'+IntToStr(i));
result := false;
break;
end;
spread := spread + 5;
end;
Wait(5);
until(result or (spread > 15))
end;
Wait(5);
end;
if not Result then writeln('Fightable Monks not found') else
writeln('SwitchSpot returns true');
end;
begin
SwitchSpot;
end.