SCAR Code:
{.include srl/srl.scar}
{.include srl/srl/extended/xmapwalk.scar}
{.include srl/srl/misc/amount.scar}
{.include srl/srl/skill/woodcutting.scar}
const
////////////////////
//////SETUP/////////
////////////////////
MSMouseWait = 200 ;//Amount of time to wait for mouse clicks on the main screen
InvMouseWait = 300 ;//Amount of time to wait for mouse clicks on the inventory
ChatMouseWait = 200 ;//Amount of time to wait for mouse clicks on the chat screen
OtherMouseWait = 0 ;//Amount of time to wait for other mouse clicks
WorldLoadingTimeOut = 20000 ;//Maximum amount of time to load a world
////////////////////
/////END SETUP//////
////////////////////
////////////////////
///OTHER CONSTS/////
////////////////////
max1=116; //My area vars
may1=50;
max2=380;
may2=266;
BankSymbolCol=4758447;
////////////////////
//END OTHER CONSTS//
////////////////////
var
road1,road2,road3,road4,road5,DeadBmp,WaterSymbol,FlagBmp,m1bmp,BlueBubble,RedBubble:integer;
BubbleMark:Longint;
procedure dpm(mx,my,rx,ry:integer;left:boolean;area:string);
var WaitMs:integer;
begin
if(area = 'inv') then begin
WaitMs :=InvMouseWait;
end else begin
if(area = 'ms') then begin
WaitMs :=MSMouseWait;
end else begin
if(area = 'chat') then begin
WaitMs :=chatMouseWait;
end else begin
WaitMs :=OtherMouseWait;
end;
end;
end;
WaitMs := WaitMs + random(WaitMs / 5);
MMouse(mx,my,rx,ry);
getmousepos(x,y);
wait(WaitMs);
Mouse(x,y,0,0,left);
end;
function dpmText(mx,my,rx,ry:integer;left:boolean;area,text:string):boolean;
var WaitMs:integer;
begin
if(area = 'inv') then begin
WaitMs :=InvMouseWait;
end else begin
if(area = 'ms') then begin
WaitMs :=MSMouseWait;
end else begin
WaitMs :=OtherMouseWait;
end;
end;
WaitMs := WaitMs + random(WaitMs / 5);
MMouse(mx,my,rx,ry);
getmousepos(x,y);
wait(WaitMs);
Result:=IsUpText(text);
if(Result) then Mouse(x,y,0,0,left);
end;
procedure DPSetupNoLogout;
begin
SetupSRL;
MouseSpeed:=1;
RoadColor:=0;
Road1:= BitmapFromString(7, 7, 'z78DA33B334333233341B25F1920018' +
'BF3CDF'); //used
Road2:= BitmapFromString(5, 7, 'z78DA337731373137351F46240010BE' +
'2E37'); //used
Road3:= BitmapFromString(7, 8, 'z78DA337533B500C251924A240020D7' +
'4A99'); //used
Road4:= BitmapFromString(6, 6, 'z78DA3373310381614702002A1C2F89' +
''); //used
Road5:= BitmapFromString(6, 5, 'z78DA333337333075331B522400D3B5' +
'2725');//used
WaterSymbol:=BitmapFromString(7, 6, 'z78DA8DCE310AC0300C03C02F352484' +
'7894ACF6FF4FEAE045C54B1761EC43F8E8E8DE6BEDEB199E0982F' +
'4ACBD22A1AC79CC491108C44796E9B2F24F676FF6DFDC74D9AF6E' +
'5CBE58533B7B');
FlagBmp:=BitmapFromString(1, 2, 'FF0000FF0000');
m1bmp:=BitmapFromString(4, 3, 'z78DA33753135313137C5411A60005C' +
'E20023EC0E8F');
DeadBmp:=BitmapFromString(30, 1, 'z78DA7373330002B721450200CCCB2' +
'6E9');
// BlueBubble:=BitmapFromString(10, 1, 'z78DA3330363035373500932606260' +
// '66E6EC824A6B801927A0080CA0CA9');
// RedBubble:=BitmapFromString(10, 1, 'z78DA3373323034307436000164D20' +
// 'C431C22824C020073030C22');
ActivateClient;
wait(500);
end;
procedure DPSetup;
begin
DPSetupNoLogout;
if(LoggedIn) then Logout;
end;
function DPEnemyDead:boolean;
begin
Result:=FindBitMapIn(DeadBmp,x,y,116, 50,380,266);
end;
procedure DPFlag;
var FlagMark:longint;
begin
MarkTime(FlagMark);
wait(50+random(10));
repeat
wait(10);
until(not(FindBitmapIn(FlagBmp,x, y, 559, 0, 735, 166)) or (TimeFromMark(FlagMark)>45000) );
wait(300+random(50));
end;
Procedure DPSCSSOpenWorld(world:integer);
var
LaunchMark:LongInt;
begin
SCSSLoadWorld(world, True);
MarkTime(LaunchMark);
wait(4000+random(500));
repeat
wait(100);
if(TimeFromMark(LaunchMark)>WorldLoadingTimeOut)then
DPSCSSOpenWorld(world);
until(getcolor(310, 244)=65535);
end;
procedure DPFightMode(fightmode:integer);
begin
if(not(fightmode=1)) then begin
Mouse(558, 190,3,3,true);
if(fightmode=2) then MMouse(691, 272,5,5);
if(fightmode=3) then MMouse(609, 322,5,5);
if(fightmode=4) then MMouse(690, 323,5,5);
wait(200+random(300));
getmousepos(x,y);
ClickMouse(x,y,true);
end;
end;
procedure FalsePlayers;
var
i:integer;
Active:string;
begin
writeln('****False Players****');
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then Active:='True' else Active:='False';
if((Active = 'False') and not((Players[i].Name) = '')) then writeln(Players[i].Name);
end;
writeln('*********************');
end;
Function DPInFight:boolean;
begin
//if(FindBitMapIn(BlueBubble,x,y,max1,may1,max2,may2) or FindBitMapIn(RedBubble,x,y,max1,may1,max2,may2)) then MarkTime(BubbleMark);
if(FindColor(x,y,65899,max1,may1,max2,may2) or FindColor(x,y,7668995,max1,may1,max2,may2)) then MarkTime(BubbleMark);
Result:=TimeFromMark(BubbleMark)<700;
end;
Function DPInFightHealthBar:boolean;
begin
Result:=FindColor(x,y,65280,max1,may1,max2,may2) or FindColor(x,y,255,max1,may1,max2,may2);
end;
procedure DPFindRandoms;
begin
CloseWindow;
FindTalk;
FindMime ;
FindMaze ;
FindQuiz ;
FindDemon ;
FindScapeRune;
FindTalk ;
FindLamp(LampSkill);
if(FindNewBox) then SolveBox;
if(NoGameTab ) then begin WriteLn('No Gametab'); Logout; End;
end;
procedure DPFindRandsFight(RunDir:string);
begin
if(not(LoggedIn)) then Exit;
DPFindRandoms;
if(FindFight) then begin
RunAwayDirection(RunDir);
wait(5000);
RunBack;
end;
end;
{*******************************************************************************
function FindObj(var cx, cy: Integer; Text: String; color, tolerance: Integer): Boolean;
By: Stupid3ooo
Description: Finds Object.
*******************************************************************************}
function DPFindObj(var cx, cy: Integer; Text: String; color, tolerance: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
if (FindMSColorTol(x, y, color, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
break;
a := a + 1;
if (a = 1) then
c := c + 1;
if (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end;
if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end;
if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end;
if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, color, x1, y1, x2, y2, tolerance)) then
begin
x:=x+0;
y:=y+0;
MMouse(x, y, 0, 0)
cx := x; cy := y;
wait(100+random(10));
if (IsUpText(Text)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
function DPFindObjMultiText(var cx, cy: Integer; Text1,Text2,Text3: String; color, tolerance: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
if (FindMSColorTol(x, y, color, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
break;
a := a + 1;
if (a = 1) then
c := c + 1;
if (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end;
if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end;
if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end;
if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, color, x1, y1, x2, y2, tolerance)) then
begin
x:=x+0;
y:=y+0;
MMouse(x, y, 0, 0)
cx := x; cy := y;
wait(100+random(10));
if (IsUpText(Text1) or IsUpText(Text2) or IsUpText(Text3)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
function DPClickMenuOption(MenuOption:string):boolean;
var
mx1,my1,mx2,my2:integer;
TempRe,TR2:boolean;
begin
if(FindBitMapIn(m1bmp,mx1,my1,1,1,753, 485)) then begin
mx1:=mx1;
my1:=my1+18;
//if FindBitMapIn(m2bmp,mx2,my2,mx1+10,my1+20,753, 485) then begin
//Writeln('Found Menu Box');
TempRe:=ClickText(MenuOption,mx1,my1,760, 502);
TR2:=true;
// end;
end;
if(not(TR2)) then begin
writeln('Didn?t Find Menu Box');
TempRe:= ClickText(MenuOption,1,1,753, 485);
end;
Result:=TempRe;
end;
function DPAtObjCol(ObjCol,Tolerance:integer;UpText,Option:string):boolean;
var
re2:boolean;
begin
if(DPFindObj(x,y,UpText,ObjCol,Tolerance)) then begin
Mouse(x,y,0,0,false);
wait(100+random(50));
re2:=DPClickMenuOption(Option);
if(re2) then begin
wait(50+random(50));
DPFlag;
wait(600+random(200));
end;
end;
Result:=re2;
end;
function DPAtObjCol2(ObjCol,Tolerance:integer;UpText:string):boolean;
var
re2:boolean;
begin
if(DPFindObj(x,y,UpText,ObjCol,Tolerance)) then begin
ClickMouse(x,y,true);
re2:=true;
if(re2) then begin
wait(50+random(50));
DPFlag;
wait(600+random(200));
end;
end;
Result:=re2;
end;
function DPAtObjColMulti(ObjCol,Tolerance:integer;UpText1,UpText2,UpText3,Option:string):boolean;
var
re2:boolean;
begin
if(DPFindObjMultiText(x,y,UpText1,UpText2,UpText3,ObjCol,Tolerance)) then begin
Mouse(x,y,0,0,false);
wait(100+random(50));
re2:=DPClickMenuOption(Option);
if(re2) then begin
wait(50+random(50));
DPFlag;
wait(600+random(200));
end;
end;
Result:=re2;
end;
function DPInNpcTalk:boolean;
begin
Result:=FindColor(x,y, 16711680, 183, 445, 374, 453) or FindColor(x,y, 16777215, 183, 445, 374, 453) ;
end;
Function DPAtObjDeformed(BMP:integer;UpText,Option:string):boolean;
begin
Result:=FindObjectDeformed(x,y,UpText,UpText,BMP,MSX1,MSY1,MSX2,MSY2);
if(Result) then begin
Mouse(x,y,0,0,false);
wait(100+random(50));
Result:=DPClickMenuOption(Option);
if(not(Result)) then MMouse(x-100,y-100,50,50);
wait(50+random(50));
DPFlag;
wait(900+random(200));
end;
end;
Function DPOpenBank:boolean;
begin
Result:=DPAtObjCol(5591128,20,'oot','quickly');
if(Result=false) then Result:=DPAtObjCol(606551,20,'oot','quickly');
if(Result=false) then Result:=DPAtObjCol(606551,500,'oot','quickly');
end;
procedure DPDeposit(slot, toslot, thetype: Integer);
var
slotnumber, col, row,wx,wy: Integer;
begin
if (BankScreen) then
begin
slotnumber := slot;
while (slotnumber < toslot) do
begin
if ((slotnumber mod 4) = 0) then
col := 3
else
col := (slotnumber mod 4) - 1;
row := (slotnumber - 1) / 4;
if (FindColor(x, y, 65536, (571 + 47 * col), (215 + 36 * row), (601 + 47 * col), (245 + 36 * row))) then
begin
if (thetype = 1) then
dpm(x, y, 5, 5, True,'inv');
if (thetype = 2) then
begin
dpm(x, y+5, 2, 2,false,'inv');
wait(10);
if (ChooseOption(x, y, 'All')) then
Wait(700 + Random(100));
end;
end;
slotnumber := slotnumber + 1;
end;
end;
end;
Function DPBanking(StartSlot:integer):boolean;
begin
if(DPOpenBank) then begin
Result:=true;
DPDeposit(StartSlot,28,2);
wait(500+random(500));
MMouse(486, 40,5,5);
getmousepos(x,y);
wait(250+random(50));
ClickMouse(x,y,true);
wait(200+random(100));
end;
end;
procedure DPNextPlayer(Active: Boolean);
begin
if not Active then begin
Players[CurrentPlayer].Active := False;
end;
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
CurrentPlayer := 0;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
CurrentPlayer := 0;
Wait(300); // Everybody False. Endless Loop.
end;
end;
end;
procedure DPLoginPlayer;
var
ClickHereToPlay, tx, ty, CHx, CHy, c: Integer;
begin
ClickHereToPlay := BitmapFromString(33, 1, 'z78DA758E510E80300843' +
'AF54C0E2F6E94CB8FF9134123392693FFA41FA4A23A6F0888443D' +
'26DC000A7DCE7F458F23EE444E721444B6A0F53D58FE44F4365B7' +
'067D37AC3D95AADF2F50962C79');
if (not (LoggedIn)) then
begin
Wait(100);
MMouse(458, 291,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
Writeln(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Name);
Wait(100 + Random(100));
TypeSend(Players[CurrentPlayer].Pass);
Wait(100 + Random(100));
MMouse(305, 323,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
MarkTime(Mark);
repeat
Wait(1000);
if TimeFromMark(Mark) > 20000 then
begin
writeln('20 seconds have passed, Nextplayer');
MMouse(462, 334,10,1);
wait(200+random(100));
getmousepos(x,y);
ClickMouse(x,y,true);
wait(200+random(200));
DPNextPlayer(False);
DPLoginPlayer;
FreeBitmap(ClickHereToPlay);
Exit;
end;
until (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390, 20));
Wait(1000 + Random(500));
Mouse(CHx, CHy, 50, 20, True); // Clicks randomly on the button
repeat
Wait(100+random(1000));
c := c + 1;
until (LoggedIn) or (c >= 600);
end;
if NickNameBMP <> 0 then
FreeBitmap(NickNameBMP);
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars); // Screenname
FreeBitmap(ClickHereToPlay);
end;
function DPLoginPlayer2:boolean;
var
ClickHereToPlay, tx, ty, CHx, CHy, c: Integer;
begin
ClickHereToPlay := BitmapFromString(33, 1, 'z78DA758E510E80300843' +
'AF54C0E2F6E94CB8FF9134123392693FFA41FA4A23A6F0888443D' +
'26DC000A7DCE7F458F23EE444E721444B6A0F53D58FE44F4365B7' +
'067D37AC3D95AADF2F50962C79');
if (not (LoggedIn)) then
begin
Wait(100);
MMouse(458, 291,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
Writeln(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Name);
Wait(100 + Random(100));
TypeSend(Players[CurrentPlayer].Pass);
Wait(100 + Random(100));
MMouse(305, 323,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
MarkTime(Mark);
repeat
Wait(1000);
if TimeFromMark(Mark) > 40000 then
begin
writeln('40 seconds have passed, False');
MMouse(462, 334,10,1);
wait(200+random(100));
getmousepos(x,y);
ClickMouse(x,y,true);
wait(200+random(200));
FreeBitmap(ClickHereToPlay);
Exit;
end;
until (getcolor(364, 340)= 16777215);
Wait(1000 + Random(500));
Mouse(364, 340, 5, 5, True); // Clicks randomly on the button
repeat
Wait(100+random(1000));
c := c + 1;
until (LoggedIn) or (c >= 600);
end;
if NickNameBMP <> 0 then
FreeBitmap(NickNameBMP);
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars); // Screenname
FreeBitmap(ClickHereToPlay);
Result:=true;
end;
procedure DPLoginPlayerSpecific(uname,pword:string);
var
ClickHereToPlay, tx, ty, CHx, CHy, c: Integer;
begin
ClickHereToPlay := BitmapFromString(33, 1, 'z78DA758E510E80300843' +
'AF54C0E2F6E94CB8FF9134123392693FFA41FA4A23A6F0888443D' +
'26DC000A7DCE7F458F23EE444E721444B6A0F53D58FE44F4365B7' +
'067D37AC3D95AADF2F50962C79');
if (not (LoggedIn)) then
begin
Wait(100);
MMouse(458, 291,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
Writeln(uname);
TypeSend(uname);
Wait(100 + Random(100));
TypeSend(pword);
Wait(100 + Random(100));
MMouse(305, 323,10,5);
getmousepos(x,y);
wait(200+random(200));
ClickMouse(x,y,true);
wait(200+random(500));
MarkTime(Mark);
repeat
Wait(1000);
until (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390, 20));
Wait(1000 + Random(500));
Mouse(CHx, CHy, 50, 20, True); // Clicks randomly on the button
repeat
Wait(100+random(1000));
c := c + 1;
until (LoggedIn) or (c >= 600);
end;
FreeBitmap(ClickHereToPlay);
end;
function DPFindAxeHeadColor: Boolean;
begin
GameTab(4);
GameTab(4);
begin
Head := GetColor(590, 220);
Head2 := GetColor(587, 219);
Head3 := GetColor(588, 218);
Result:= true;
end;
end;
Procedure DPSetupPlayer;
begin
PerfectNorth;
SetRun(true);
SetChat('Off',2);
SetChat('Off',3);
DPFindAxeHeadColor;
end;
procedure DPGetRoadColor;
begin
FindBitmapsProgressiveTol(road1, road2, road3, road4, road5, 100, 1, 603, 26, 677, 130);
RoadColor:=GetColor(x+1,y+1);
writeln('RoadColor: '+inttostr(RoadColor));
end;
function DPRadialWalk(TheColor: Integer; StartRadial, EndRadial: Integer; Radius: Integer):boolean;
var
i,X1,Y1:integer;
begin
for i := StartRadial to EndRadial do
begin
x1 := Round(Radius * Sine(i)) + 646;
y1 := Round(-Radius * Cose(i)) + 84;
if FindColor(X, Y, TheColor, X1, Y1, X1 + 1, Y1 + 1) then
begin
Mouse(x,y,0,0,true);
Result := True;
FFlag(10);
Exit;
end;
end;
end;
function DPLinearRoadWalk(Degrees,Radius:integer):boolean ;
var i:integer;
begin
DPGetRoadColor;
i:=0;
repeat
i:=i+10;
until(DPRadialWalk(RoadColor,Degrees-i,Degrees+i,Radius) or (i>180));
if(not(i>180)) then Result:=true;
if(Result) then writeln('Degrees Difference: '+inttostr(i)) else writeln('Couldn"t find road in specified radius');
wait(1500+random(500));
DPFlag;
wait(100+random(100));
end;
procedure DPToDeformed(bitmap,xdiff,ydiff:integer);
var dx,dy:integer;
begin
if(not(LoggedIn)) then Exit;
FindDeformed(dx,dy,bitmap,576, 3,727, 160);
wait(50+random(50));
Mouse(dx+xdiff,dy+ydiff,0,0,true);
wait(200+random(100));
DPFlag;
wait(100+random(100));
end;
procedure DPToDeformedArea(bitmap,xdiff,ydiff,a,b,c,d:integer);
var dx,dy:integer;
begin
if(not(LoggedIn)) then Exit;
FindDeformed(dx,dy,bitmap,a,b,c,d);
wait(50+random(50));
Mouse(dx+xdiff,dy+ydiff,0,0,true);
wait(200+random(100));
DPFlag;
wait(100+random(100));
end;
function DPAtInvItemDeformed(BMP:integer;Option:string):boolean;
begin
FindDeformed(x,y,BMP,556, 205 ,742, 464);
MMouse(x+1,y+1,0,0);
getmousepos(x,y);
wait(100+random(100));
Mouse(x,y,0,0,false);
wait(100+random(100));
if(ChooseOption(x,y,Option)) then begin
wait(1000+random(500));
Result:=true;
end;
end;
function DPIsInLumby:boolean;
var SAcc:extended;
begin
//result:=FindSymbol(x,y,'water') and (FindSymbol(x,y,'guide'));
FindDeformedBitmapToleranceIn(WaterSymbol, x, y, 596, 14, 697, 76, 50, 0, True, SAcc);
if(SAcc>(0.5)) then begin
FindDeformedBitmapToleranceIn(WaterSymbol, x, y, 575, 75, 704, 156, 50, 0, True, SAcc);
if(SAcc>(0.5)) then Result:=true;
end;
end;
procedure DPTalkNpc;
var i:integer;
begin
while(FindColor(x,y,16711680,98, 446,435, 449) or FindColor(x,y,16777215,98, 446,435, 449)) do begin dpm(304, 447,20,1,true,'chat');
wait(1000+random(100));
end;
end;
function DPFindEnt: Boolean;
var
i : Integer;
begin
if(Option2('Chop'))then
begin
//if(FindColorTolerance(x, y, 250065, 84, 92, 19, 40))then
if(FindColorTolerance(x, y, 383705, 9, 9, 233, 24, 20))or
(FindColorTolerance(x, y, 65535, 9, 9, 233, 24, 20))then
begin
for i := 1 to 2 do
begin
Mouse(648, 83, 1, 1, True)
Flag;
end;
WriteLn('Found ent! Waiting for it to go away');
Wait(40000 + random(5000));
Result := True;
EntsAvoided := EntsAvoided + 1;
end;
end;
end;
procedure DPDropAllItemsExceptFirst;
var
rx, ry, m, n : Integer;
begin
Status('Dropping Logs');
Gametab(4)
begin
for M:=1 to 7 do
begin
for n:=1 to 4 do
begin
rx := 544 + (n * 42)
ry := 192 + (m * 36)
if(not((M=1)and(n=1)))
then
begin
mmouse(rx, ry, 5, 5)
wait(100 + random(100));
getmousepos(x, y)
mouse(x, y, 0, 0, false);
wait(100 + random(50));
if(ClickText('Drop', MIX1, MIY1, MIX2, MIY2))then
begin
wait(150 + random(210));
end else
mmouse(233, 123, 50, 50)
end;
end;
end;
end;
end;
Procedure DPRotateScreen;
begin
KeyDown(VK_LEFT);
Wait(500 + random(200));
KeyUp(VK_LEFT);
end;
function DPHaveLostHead:boolean;
begin
GameTab(4);
if not (GetColor(590,220) = Head) then
if not (GetColor(587,219) = Head2) then
if not (GetColor(588,218) = Head3) then
result:=true;
end;
procedure DPFindHead;
var tries:integer;
begin
if(not(DPHaveLostHead)) then Exit;
Writeln('Axe head has been lost, trying to find it now...');
Wait(2000+random(1000));
repeat
tries:=tries+1;
If(not(DPAtObjCol2(Head,30,'ead'))) then DPRotateScreen;
until(AttachHead or (tries>9));
PerfectNorth;
end;
procedure PickUpItem(ItemColor,ItemTol:integer);
begin
x:=266;
y:=163;
if(FindColorSpiralTolerance(x,y,ItemColor,max1,may1,max2,may2,ItemTol)) then if(dpmText(x,y,0,0,true,'Take','ms')) then DPFlag;
end;
function DPToNearestYellowDot(Offset:Boolean):boolean;
begin
x:=648;
y:=83;
Result:=FindColorSpiralTolerance(x,y,62965,565, 13,728, 159,5);
if(Result) then begin
if(Offset) then Mouse(x,y+6,0,0,true) else Mouse(x,y,0,0,true);
DPFlag;
end;
end;
procedure DPToColorArea(color,a,b,c,d:integer);
var CurTol:integer;
begin
CurTol:=-1;
repeat
CurTol:=CurTol+1;
until(FindColorTolerance(x,y,color,a,b,c,d,CurTol));
dpm(x,y,4,4,true,'mm');
DPFlag;
end;
procedure DPToBank;
begin
DPToColorArea(BankSymbolCol,566, 13,724, 154);
end;
Function DPFindDefSpAcc(var dx,dy:integer; bitmap:integer;acc:extended;tol,range ,a,b,c,d:integer):boolean;
var RetAcc,RetAngle:extended;
begin
//FindDeformedBitmapToleranceRotationIn(bitmap,x, y,a,b,c,d,tol,range, RetAcc,0.087,0.0, 6.3,RetAngle);
FindDeformedBitmapToleranceIn(bitmap, dx, dy,a,b,c,d,tol,range,true, RetAcc);
result:=acc>=RetAcc;
writeln(inttostr(trunc(RetAcc*100)));
end;
Function DPIsColorTol(cx,cy,col,tol:integer):boolean;
begin
result:=findcolortolerance(x,y,col,cx,cy,cx,cy,tol);
end;
function DPHaveFishingEquip:boolean;
begin
result:=DPIsColorTol(579, 218,6437,15) or DPIsColorTol(588, 215,65536,15);
end;
procedure DPUpdateMMColor(var col:integer);
var CurTol:integer;
begin
CurTol:=-1;
repeat
CurTol:=CurTol+1;
until(FindColorTolerance(x,y,col,564, 6,728, 166,CurTol));
col:=getcolor(x,y);
end;