Hello,
I'm attempting to make a procedure that will walk from Draynor bank to the Willow trees, and it's not working so well. 
Actually, since it's there, the walking from the Willows to the bank doesn't work either. 
I've tried playing with the tolerances and Area sizes, but nothing seemed to help.
All it does is login, writes the Water/Rock colors in the debug box, then logs out, saying it "Couldn't walk to Willows.".
I compared mine to Dark Arcana's and they're very similar, except his has failsafes. So I really don't know what's wrong.
SCAR Code:
program DraynorWillows;
{.include SRL\SRL.scar}
var
x, y : Integer;
const
RunOn = True;//Set False to turn run off.
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].Integers[0] := 270;//How many logs to cut?
Players[0].BoxRewards := ['Xp', 'mote', 'ostume'];
end;
function S_LoadWalks(WalkNumber : Integer): Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..3] of TDTMPointDef;
TempTDTM: TDTM;
begin
case WalkNumber of
1: begin
dtmMainPoint.x := 835;
dtmMainPoint.y := 335;
dtmMainPoint.AreaSize := 5;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := FindWaterColor;//2715252
dtmMainPoint.Tolerance := 5;
dtmSubPoints[0].x := 835;
dtmSubPoints[0].y := 335;
dtmSubPoints[0].AreaSize := 5;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := FindWaterColor;//2848632
dtmSubPoints[0].Tolerance := 5;
dtmSubPoints[1].x := 827;
dtmSubPoints[1].y := 329;
dtmSubPoints[1].AreaSize := 5;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := FindWaterColor;//2713716
dtmSubPoints[1].Tolerance := 5;
dtmSubPoints[2].x := 828;
dtmSubPoints[2].y := 346;
dtmSubPoints[2].AreaSize := 5;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := FindWaterColor;//2581102
dtmSubPoints[2].Tolerance := 5;
dtmSubPoints[3].x := 838;
dtmSubPoints[3].y := 332;
dtmSubPoints[3].AreaSize := 5;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := FindWaterColor;//2847096
dtmSubPoints[3].Tolerance := 5;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
2: begin
dtmMainPoint.x := 849;
dtmMainPoint.y := 296;
dtmMainPoint.AreaSize := 5;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 3815998;
dtmMainPoint.Tolerance := 10;
dtmSubPoints[0].x := 849;
dtmSubPoints[0].y := 296;
dtmSubPoints[0].AreaSize := 5;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 3815998;
dtmSubPoints[0].Tolerance := 10;
dtmSubPoints[1].x := 853;
dtmSubPoints[1].y := 300;
dtmSubPoints[1].AreaSize := 5;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 3815998;
dtmSubPoints[1].Tolerance := 10;
dtmSubPoints[2].x := 845;
dtmSubPoints[2].y := 289;
dtmSubPoints[2].AreaSize := 5;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 3815998;
dtmSubPoints[2].Tolerance := 10;
dtmSubPoints[3].x := 849;
dtmSubPoints[3].y := 300;
dtmSubPoints[3].AreaSize := 5;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 3815998;
dtmSubPoints[3].Tolerance := 10;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
end;
end;
procedure W_WalkToWillows;
var
W_ToWillows : Integer;
begin
if not LoggedIn then Exit;
W_ToWillows := S_LoadWalks(1)
if DTMRotated(W_ToWillows, x, y, MMX1, MMY1, MMX2, MMY2)then
begin
Mouse(x + 30, y, 4, 4, True);
Writeln('Walking to trees.');
FFlag(5);
end else
begin
Writeln('Couldn''t walk to Willows.');
Logout;
Exit;
end;
FreeDTM(S_LoadWalks(1));
end;
function W_WalkToBank: Boolean;
var
W_ToBank : Integer;
begin
if not LoggedIn then Exit;
W_ToBank := S_LoadWalks(2);
if DTMRotated(W_ToBank, x, y, MMX1, MMY1, MMX2, MMY2)then
begin
Mouse(x, y, 4, 4, True);
Writeln('Inventory full, walking to bank.');
FFlag(1);
Result := True;
end else
begin
Writeln('Couldn''t walk to bank.');
Logout;
Exit;
end;
FreeDTM(S_LoadWalks(2));
end;
procedure F_Setup;
begin
ClearDebug;
//SMARTSetupEx(152, False, True, False);
//Wait(5000);
//SetTargetDC(SmartGetDC);
SetupSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;
SetAngle(True);
if RunOn then SetRun(True);
end;
begin
F_Setup;
W_WalkToWillows;
//W_WalkToBank;
end.
Thanks.