{================================================= ========================]
[ SRL Willow Buyer+Banker ]
[ ]
[ NAME : SRL Template. ]
[ WRITER : Cheesehunk ]
[ CATEGORY : Buying/Collecting ]
[ DESCRIPTION : Walks from Draynor to lumby, and buys Willow's. ]
[ USAGE : Start at Draynor bank, with money in bank. ]
[ AUTOCOLOR : Yes ]
[ NOTES : My first SRL/Real Runescape script. ]
[ CREDS+THANKS: phantombmx(Used his FindGerrant+Hourly Rate) ]
[ Fakawi(Banker DTM's)+Wizzup (RadialRoadWalk=P) ]
[ SRL Dev's+contributors(Awesome include) ]
[ CONTACT :
cheesehunk@hotmail.com ]
[ ]
[ ]
[================================================== =======================]
[ This script will walk from Draynor Bank, to the General ]
[ store in Lumbridge, buy 27 Willow logs, then ]
[ return to the bank. ]
[================================================== =======================]
[ ]
[ Version History ]
[================================================== =======================]
[ Version 0.75 - Initial release. ]
[ Version 0.76 - Fixed some time bugs, made it more humanlike. ]
[ Version 0.80 - Added Per hour rate (Mostly copied from Phantom's ]
[ FeatherBuyer.) Added A LOT of AntiBan procedures, and ]
[ made it so that you can choose if you want to use ]
[ AntiBan or not. ]
[ ]
[================================================== =======================]
[ Instructions. ]
[================================================== =======================]
[ 1. USE Runescape with Low Detail, Very Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Set Playernames and Passwords in DeclarePlayers. ]
[ 4. SET HOWMANYPLAYERS inside DeclarePlayers. ]
[ 5. Place money in first bank slot. ]
[ 6. Be sure to have your inventroy empty. ]
[ 7. ALIGN MINIMAP to PERFECT NORTH. ]
[
http://img86.imageshack.us/img86/683...pwillow7to.png ]
[ 8. Start script with player beside the most southern bank booth. ]
[================================================== =======================}
program WillowBanker;
{.include SRL/SRL.scar}
{.include SRL/SRL/misc/DraynorColorFinder.scar}
{.include SRL/SRL/misc/amount.scar}
var
FX, FY,
RandomAntiBanMark, PeeBreakMark, RunMark,
CashLeft, WillowsLeft, Willows,
Doors, WillowCol, House2Color,
DB1, DB2, DB3, Buy10, NewDoor, Trade : integer;
//******************** Set These Constants if Needed ********************//
Const StartPlayer = 2; // Determines who will play first
Loads = 2; // Number of loads before switching Players(2-4 is best.)
CHEESEDebug = True; // Set to false, if you don't want to know whats going on=P
UseBenMouse = True; // Set to false if you do not wish to you Bens Mouse.
MouseSpeeed = 23; // The speed of the mouse.
UseAntiBan = True; // True, or False, do you want to use Antiban procedures?
//*********************** Declare your players ***************************//
Procedure DeclarePlayers;
begin
HowManyPlayers := 5;
CurrentPlayer:=StartPlayer;
NumberOfPlayers(HowManyPlayers); // set arraylength
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Loc :='Bank';
Players[0].Active:=True;
end;
{
Do not touch below here, unless asked,
or you know what you are doing.
You may use parts of the script all you want, just
be sure to credit me!
}
//************************************************** **********************//
Const VersionNumber = '0.80'; // Compliant with Rev 728+
//*********************** Progress Reports *******************************//
procedure PlayerStats;
var Active: string;
var PWillows,i: Integer;
begin
PWillows:=Players[CurrentPlayer].Banked*27;
writeln('[]++----------------------------------++[]');
writeln('Name : '+ Players[CurrentPlayer].Name+', Number : '+ inttostr(CurrentPlayer));
writeln('Worked for : '+ inttostr(Players[CurrentPlayer].Worked)+' minutes, Banked : '+ inttostr(Players[CurrentPlayer].Banked) + ' Load[s]');
writeln('Willows : '+ inttostr(PWillows));
if Players[CurrentPlayer].Active=True then Active:='True' else Active:='False';
writeln('Active : '+ Active+', Loc : '+ Players[CurrentPlayer].loc);
writeln('[]++----------------------------------++[]');
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then Active:='True' else Active:='False';
writeln( (inttostr(i))+' : '+Players[i].name+ ' = '+Active)
writeln('. - B :'+inttostr(Players[i].Banked)+' Times.'+
' - : '+IntToStr(Players[i].Worked)+' mins.'+' - Loc: '+Players[i].loc);
end
writeln('[]++----------------------------------++[]');
end;
//************************************************** **********************//
procedure ProgressReport;
var SSeconds, RoundedRate, Hours, Minutes, Seconds: integer;
Rate: Extended;
begin
Hours:= ScriptTime(1);
Minutes:= ScriptTime(2);
Seconds:= ScriptTime(3);
if(Hours>0) then begin SSeconds:=SSeconds+(Hours*3600); end;
if(Minutes>0) then begin SSeconds:=SSeconds+(Minutes*60); end;
if(Seconds>0) then begin SSeconds:=SSeconds+Seconds; end;
if(Willows>0) then
begin
Rate:= (Willows/SSeconds)*3600;
RoundedRate:= Round(Rate);
end;
begin
WriteLn(' ');
WriteLn('<============== -'+VersionNumber+'- Progress Report ===============>');
Writeln('Worked for '+ TimeRunning);
WriteLn('Banked '+IntToStr(banks)+' Loads[s].');
WriteLn('About '+IntToStr(Willows)+' Willows.');
if (Willows>0) then
WriteLn('Averaging about '+IntToStr(RoundedRate)+' Willows per hour.');
Writeln('Opened '+IntToStr(Doors)+' Door[s].');
SRLRandomsReport;
Writeln(' ');
end;
PlayerStats;
end;
//*********************Fakawi's OpenBankQuiet Edited***************************//
Function OpenDraynorQuiet(X1, Y1, X2, Y2: integer):Boolean;
var
DraynorCounter,
Dx, Dy, tol, Mark2, Mark3:integer;
var
acc, accthres:extended;
begin
DraynorCounter := BitmapFromString(34, 1, 'z78DA658E4B0' +
'E80300844AF34FCB45DAA70FF2B89B40B12339997F0C980BA 5C98' +
'06837A7AE828CE74551F77FF51CBCD1FC5D90136961428281 6E59' +
'683EF94207AF2BA55C9948672BFB2FB7D5A1F6E8A10D0C927 4552' +
'39FD022AE92A73');
SendArrowSilentWait(0,1000+Random(500));
MarkTime(Mark3);
Tol:=1;
accthres:=0.6;
repeat
FindDeformedBitmapToleranceIn(DraynorCounter, Dx, Dy, X1, Y1, X2, Y2, tol, 4, True, acc);
if (acc >= accthres) then
begin
MMouse(Dx, Dy, 0, 0);
if IsUpTextMulti('e Bank','Booth','ooth') then
begin
GetMousePos(Dx, Dy);
Mouse(Dx, Dy, 0, 0, False);
if ChooseOption(Dx, Dy, 'uickly') then
begin
MarkTime(Mark2);
repeat
Wait(10);
if TimeFromMark(Mark2) > 20000 then
begin
writeln('couldnt find the bank. Exiting');
Exit;
end;
until BankScreen;
end;
Result := True;
Exit;
end;
end;
wait(100);
FindNormalRandoms;
tol := tol + 4; if tol >= 20 then
begin
tol := 1;
accthres := accthres - 0.1;
if accthres < 0.2 then
begin
writeln('couldnt find the bank. Exiting');
Exit;
end;
end;
until TimeFromMark(Mark3) > 60000;
FreeBitMap(DraynorCounter);
end;
//************************************************** **************************//
function FindDraynorHouse2Color: Integer;
var C,TX,TY,DraynorHouse2:integer;
begin
DraynorHouse2 := BitmapFromString(5, 5, 'z78DA333135B030343' +
'319642400FD271E79');
while (C<65) do
begin
C:=C+5;
if FindBitMapToleranceIn(DraynorHouse2,TX,TY,626,28,6 58,46,C) then
begin
House2Color:=GetColor(Tx,TY);
Result:=House2Color;
break;
end
end
FreeBitMap(DraynorHouse2);
if Result = 0 then writeln('ERROR:= Red House Color NOT Found');
end;
//************************************************** **************************//
function FindDraynorRockColor2: Boolean;
var BMPRock,C,TX,TY: Integer;
var Found: Boolean;
begin
BMPRock := BitmapFromString(5, 5, 'z78DA33B2303632723531327' +
'1363145268D7088134FE23701228BAC0659040062C61FD7')
while (C<100) do
begin
C:=C+5;
If FindBitMapToleranceIn(BMPRock,TX,TY,630,105,675,13 1,C) then
begin
RockColor:=GetColor(TX,TY);
Found:=True;
Result:=True;
break;
end
end
if Found=False then writeln('Rock NOT Found');
FreeBitMap(BMPRock);
end;
//************************************************** **********************//
Procedure FindDraynorBankColor;
var C: integer;
begin
C:=0;
repeat
C:=C+1;
wait(100);
BankColor := GetSymbolColor(x,y,'bank');
until (C>100) or (BankColor<>0);
if CheeseDebug then Writeln('BankColor :='+IntToStr(BankColor));
if (C>100) then
begin
Writeln('ERROR: Bank color could not be found, please restart script.')
TerminateScript;
end;
end;
//************************************************** **************************//
Procedure GetWillowColor;
var BMPWillow,C,FX,FY:integer;
begin
C:=0;
BMPWillow := BitmapFromString(8, 9, 'z78DA8DD04B0A80500885E' +
'12D651ECFAD61DDC7FE975460816141937FF48962211B5094 1BC4' +
'6B9BC97C976832624BF26C84F6AFA95F3E34FBAB138B0EEB8 6538' +
'6BEF80FE9458349CD530F19AF9AB148F5460968953537FAF3 0343' +
'27D2BAEEBE37377BBFEDFA52FAFF01834A5D0C');
repeat
C:=C+5;
wait(500+random(500));
until(FindBitmapToleranceIn(BMPWillow,FX,FY,70,109 ,462,300,C));
begin
WillowCol:=GetColor(FX,FY);
if CheeseDebug then Writeln('WillowColor = '+IntToStr(WillowCol));
end;
FreeBitmap(BMPWillow);
end;
//************************************************** **************************//
Procedure GetDraynorColors;
begin
SymbolAccuracy:=0.4;
FindDraynorRoadColor(584,48,616,64);
if CheeseDebug then Writeln('RoadColor :='+IntToStr(RoadColor))
FindDraynorRockColor2;
if(RockColor=0) then TerminateScript;
if CheeseDebug then Writeln('RockColor :='+IntToStr(RockColor))
FindDraynorWaterColor;
if(WaterColor=0) then TerminateScript;
if CheeseDebug then Writeln('WaterColor:='+IntToStr(WaterColor));
FindDraynorHouseColor;
if(HouseColor=0) then TerminateScript;
if CheeseDebug then Writeln('HouseColor:='+IntToStr(HouseColor));
FindDraynorHouse2Color;
if(House2Color=0) then TerminateScript;
if CheeseDebug then Writeln('House2Color:='+IntToStr(HouseColor));
FindDraynorBankColor;
SymbolAccuracy:=0.8;
end;
//************************************************** **************************//
Procedure LoadStuff;
begin
Buy10 := BitmapFromString(26, 2, 'z78DA33753135313177430206' +
'6000619BE2908588E322DDDC2C0D4C0C2024CC3484082E35C 8262' +
'08BE0721B329B5A6EC32582A91700559645C4');
Trade := BitmapFromString(25, 3, 'z78DA737303010324E08' +
'60470896302038A01C4140449BAABA8653B3E115242805A21 861E' +
'32A8B200C0216355');
NewDoor := BitmapFromString(4, 4, 'z78DA333733B530703147224' +
'D5D4DCC0C2CCC31C52D4D8CF0883B9A3A0145304800F20015 0F');
DB1 := DTMFromString('78DA636C67626008664001FFFFFF67F80FA 41' +
'921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0 AA09' +
'C7AF06000153117B');
DB2 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA 41' +
'921ECFF8C3540353EA86AFEFC61621081AA0101C63AA09A10 22D4' +
'44E057030001B5117D');
DB3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA 41' +
'921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40 026A' +
'6A816A42F1AB010000781176');
end;
//************************************************** **********************//
Procedure SetUp;
begin
SetupSRL;
MarkTime(RandomAntiBanMark);
MarkTime(PeeBreakMark);
LoadStuff;
DeclarePlayers;
if (UseBenMouse) then BenMouse:=True
else BenMouse:=False;
MouseSpeed:=MouseSpeeed+random(2);
begin
ActivateClient;
LoginPlayer;
wait(500+random(500));
GetDraynorColors;
Willows:=0;
end;
end;
//************************************************** **********************//
Procedure RunAway;
begin
SetRun(true);
MouseFindFlag(648,35,1,-1);
FFlag(10);
BoredHuman;
wait(random(1000));
MouseFindFlag(648,135,1,1);
FFlag(10);
case (Random(6)+1) of
1: TypeSend('ughh');
2: TypeSend('=P');
3: TypeSend('lol');
4: TypeSend('****');
5: TypeSend('stupid randoms');
6: Wait(10);
end;
end;
//************************************************** **************************//
Procedure RClickExamine;
begin
MMouse(Random(MSX2), Random(MSY2), 0, 0);
If IsUpText('opti') then
begin
GetMousePos(x,y);
Mouse(x, y, 0, 0, False);
case Random(3) of
0: ChooseOption(x, y, 'Examine');
1: ChooseOption(x, y, 'Cancel');
2: MMouse(Random(MSX2), Random(MSY2), 0, 0);
end;
Wait(Random(50) + Random(50));
end;
end;
//************************************************** **************************//
procedure PeeBreakEvery(mins : Integer);
var PeeMark: Integer;
begin
if ((TimeFromMark(PeeBreakMark) / 1000) / 60 >= mins) then
begin
MarkTime(PeeBreakMark);
MarkTime(PeeMark);
repeat
Wait(1);
FindNormalRandoms;
until ((TimeFromMark(PeeMark) >= 15000+Random(60000)) or (not(LoggedIn)))
end;
end;
//************************************************** **************************//
procedure SetRunEvery(mins : integer; Run : Boolean);
begin
if ((TimeFromMark(RunMark) /1000) / 60 >= mins) then
begin
MarkTime(RunMark);
SetRun(Run);
end;
end;
//************************************************** **************************//
procedure RandomAntiBanEvery(mins : Integer);
var PantiBan: integer;
UnRounded: Extended;
begin
if ((TimeFromMark(RandomAntiBanMark) /1000) / 60 >= mins) then
begin
MarkTime(RandomAntiBanMark);
UnRounded:=Random(30)+11 / 10;
PantiBan:=Round(UnRounded);
case Pantiban of
1: begin GameTab(12) RandomEmote; end;
2: GameTab(1+Random(12));
3: RClickExamine;
4: WWait(5000+Random(3000));
end;
end;
end;
//************************************************** **************************//
Procedure CheeseBan;
begin
RandomChatEvery(8+random(10));
BoredEvery(10+random(10));
PickUpMouseEvery(5+random(10));
LeaveScreenEvery(5+random(5));
HoverEvery(25+random(20),'random');
RandomRClickEvery(15+random(5));
PeeBreakEvery(45+random(45));
SetRunEvery(20+random(10),True);
RandomAntiBanEvery(10+random(15));
end;
//************************************************** **************************//
procedure FindRandoms;
begin
FindNormalRandoms;
if (FindFight) then RunAway;
if(InBlack)then
begin
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
if UseAntiBan then CheeseBan;
end;
//************************************************** **************************//
procedure BoredWhileFlagExistsDist(distance : integer);
begin
repeat
if (not(HumanCircleFlag(distance))) then
begin
MMouse((Random(MSX1+MSX2))+2/2,Random(MSY1+MSY2)+2/2,0,0);
Case Random(6) of
0: SendArrowSilentWait( ((Random(2) * 2) + 1), 1000 + Random(200) );
1: SendArrowSilentWait( ((Random(2) * 2)), 1000 + Random(200) );
2: SendArrowSilentWait( ((Random(2) * 2) + 1), 200 + Random(200) );
3: SendArrowSilentWait( ((Random(2) * 2)), 200 + Random(200) );
4: SendArrowSilentWait( ((Random(2) * 2) + 1), 20 + Random(20) );
5: SendArrowSilentWait( ((Random(2) * 2)), 20 + Random(20) );
end;
end;
until(HumanCircleFlag(distance));
end;
//************************************************** **************************//
Function WhereAreWe: String;
begin
SymbolAccuracy:=0.4;
if FindSymbol(x,y,'store') or FindSymbol(x,y,'furnace') then
begin
Players[CurrentPlayer].Loc:='Store';
Result:='Store';
end;
if FindMMColor(x,y,BankColor) or FindColor(x,y,House2Color,MMX1,MMY1,MMX2,MMY2) then
begin
Players[CurrentPlayer].Loc:='Bank';
Result:='Bank';
end;
if (InBlack) then
begin
Players[CurrentPlayer].Loc:='In Black';
Result:='In Black';
Players[CurrentPlayer].Active:=False;
end
if Result='' then
begin
Result:='Lost';
Players[CurrentPlayer].Loc:='Lost';
Players[CurrentPlayer].Active:=False;
end;
if (CheeseDebug) then Writeln('Location := '+(Result));
SymbolAccuracy:=0.8;
end;
//************************************************** **************************//
Procedure OpenDoor;
var XD,XY: Integer;
begin
if FindBitMapToleranceIn(NewDoor,XD,XY,150,85,510,333 ,20) then
begin
MMouse(XD,XY,0,0);
if IsUpTextMulti('Ope','pen','Open') then
begin
if CheeseDebug then writeln('Opening Shop Door..');
Doors:= Doors+1;
Mouse(XD,XY,0,0,true);
end;
end;
end;
//************************************************** **************************//
Function CashInInv: Boolean;
var MoneyInventory : integer;
begin
if (FindItemColorTol(1347761,15)) then
begin
CountInvSlot(MoneyInventory,1,1);
if (CheeseDebug) then Writeln('Cash in inventory:= '+IntToStr(MoneyInventory))
end;
if (MoneyInventory<324) then
begin
Result:=False;
end else Result:=True;
end;
//************************************************** **************************//
Procedure WalkToStore;
var SX,SY: integer;
begin
if not LoggedIn then Exit;
MarkTime(Mark);
Players[CurrentPlayer].Loc:='To Store';
if CheeseDebug then writeln('Walking to store...');
RadialRoadWalk(RoadColor,20,90,45,0,1);
LinearRoadWalk(RoadColor,90,35,0,0);
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>120000) then begin Logout; Exit; end
RadialRoadWalk(RoadColor,410,335,45,0,0);
FindRandoms;
until FindColor(x,y,RockColor,625,20,720,80);
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>360000) then begin Logout; Exit; end;
RadialRoadWalk(RoadColor,120,45,47,0,-1);
FindRandoms;
until FindColor(x,y,WaterColor,660,10,720,80);
RadialRoadWalk(RoadColor,45,100,45,0,0);
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>420000) then begin Logout; Exit; end;
RadialRoadWalk(RoadColor,190,115,40,0,0);
FindRandoms;
until(FindColor(x,y,HouseColor,590,100,700,155));
if FindColor(SX,SY,HouseColor,590,100,700,155) then
begin
case (Random(2)+1) of
1: begin wait(250+random(250)) Mouse(SX,SY,10,10,true) end
2: begin wait(250+random(250)) ClickMMColor(HouseColor) end
end;
WWait(4000+random(2000));
FFlag(2+random(2));
OpenDoor;
end;
Players[CurrentPlayer].Loc:='Store';
if CheeseDebug then writeln('We are now at the store');
end;
//************************************************** ***********************//
Procedure WalkToDraynorBank;
var BX,BY:integer;
begin
if not LoggedIn then Exit;
MarkTime(Mark);
if CheeseDebug then writeln('Walking to bank...');
Players[CurrentPlayer].Loc:='To Bank';
OpenDoor;
RadialRoadWalk(RoadColor,0,45,45,-1,1);
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>120000) then begin Logout; Exit; end
RadialRoadWalk(RoadColor,390,320,40,-1,1);
FindRandoms;
until(FindColor(x,y,HouseColor,633,4,715,41));
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>240000) then begin Logout; Exit; end
RadialRoadWalk(RoadColor,250,330,45,0,0);
until(FindColor(x,y,RockColor,596,2,689,45));
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>240000) then begin Logout; Exit; end
RadialRoadWalk(RoadColor,240,320,45,0,0);
until(FindColor(x,y,RoadColor,594,113,689,162));
RadialRoadWalk(RoadColor,190,250,50,0,0);
repeat
if (not (Loggedin)) then break;
if(TimeFromMark(Mark)>240000) then begin Logout; Exit; end
RadialRoadWalk(RoadColor,160,240,40,1,1);
until (FindColor(BX,BY,BankColor,MMX1,MMY1,MMX2,MMY2) or FindColor(BX,BY,House2Color,576,22,608,90))
Mouse(BX+random(5),BY+random(2),3,3,true);
BoredWhileFlagExistsDist(5+random(2));
PerfectNorth;
Flag;
DTM3Flag(DB1,DB2,DB3,true);
PerfectNorth;
end;
//************************************************** **********************//
Procedure WithdrawCash;
var CashNeeded, MoneyInInv : integer;
begin
FixBank;
wait(50);
CashLeft:= amountcolor('bank',1347761,10);
if CheeseDebug then WriteLn('Cash Left:= '+IntToStr(CashLeft)+' gp');
if (CashLeft<324) then
begin
Writeln('Not enough cash, Logging out.');
Players[CurrentPlayer].Loc:='Not enough cash';
Players[CurrentPlayer].Active:=False;
repeat
Wait(1000);
FindRandoms;
Logout;
until(not(LoggedIn));
end;
if (CashLeft>324) then
begin
MoneyInInv:=amountcolor('inv',1347761,20);
CashNeeded:=324-MoneyInInv
if CheeseDebug then writeln('Whipping out cash.');
Withdraw(1,1,CashNeeded);
end;
end;
//*****************Based off Phantom's FindGerrant****************************//
function FindSalesman:Boolean;
var a,b,C,d,e:integer;
begin
if(GetColor(334, 40)=2070783)then
begin
Result:=True;
Exit;
end;
a:=246;
b:=163;
if(FindColorSpiralTolerance(a,b,5465723,10,10,500, 330,3))or
(FindColorSpiralTolerance(a,b,5926277,10,10,500,33 0,3))or
(FindColorSpiralTolerance(a,b,5663104,10,10,500,33 0,3))then
begin
MMouse(a,b,0,0);
Wait(100+random(50));
C:=0;
if IsUpTextMulti('hop','Shop','Sho') then
begin
Mouse(a,b,0,0,false);
Wait(100+random(20));
if(FindBitMapToleranceIn(Trade,d,e,MSX1,MSY1,MSX2, MSY2,C)) then
begin
Mouse(d,e,10,2,true);
Flag;
SleepAndMoveMouse(1000+random(1000));
end;
end;
if(GetColor(334, 40)=2070783)then
begin
Result:=True;
Exit;
end;
end;
SendArrowSilentWait(1,100+random(300));
end;
//************************************************** **********************//
Function WillowsInStore : Boolean;
begin
while (WillowCol=0) do
begin
GetWillowColor;
wait(1);
end;
if(FindColor(FX,FY,WillowCol,70,109,462,300)) then
begin
MarkTime(Mark);
FX:=FX+Random(4);
FY:=FY+Random(4);
repeat
MMouse(FX,FY,0,0);
Wait(500+(500));
until(IsUpTextMulti('ill','ogs','llow') or (TimeFromMark(Mark)>60000))
if IsUpTextMulti('ill','ogs','llow') then Result:=True;
end;
WillowsLeft:=amountcolor('shop',WillowCol,0);
if CheeseDebug then Writeln('Willows in store = '+IntToStr(WillowsLeft));
end;
//************************************************** **********************//
Procedure BuyTheWillows;
var RX,RY,WX,WY,X1,Y1:integer;
begin
MarkTime(Mark);
repeat
if(FindColor(WX,WY,WillowCol,70,109,462,300)) then
begin
RX:=FX;
RY:=FY;
MMouse(RX,RY,0,0);
if IsUpTextMulti('ill','ogs','llow') then
begin
if CheeseDebug then writeln('Buying the logs=P');
repeat
Mouse(RX,RY,0,0,False);
Wait(250+random(250));
if(FindBitmapToleranceIn(Buy10,X1,Y1,19,178,989,52 8,5))then Mouse(X1,Y1,10,1,true);
Wait(500+random(500));
RX:=RX+Random(4);
RY:=RY+Random(4);
until ExistsItem(27) or (TimeFromMark(Mark)>120000);
end;
end;
until ExistsItem(27) or (TimeFromMark(Mark)>160000);
repeat
CloseWindow;
wait(100+random(100));
until (not (ShopScreen));
end;
//************************************************** **********************//
procedure Bank;
begin
if not LoggedIn then Exit;
FindRandoms;
MarkTime(Mark);
repeat
if (not(Loggedin)) then break;
if (not OpenDraynorQuiet(140,101,320,215)) then OpenBankQuiet('db');
until((BankScreen) or (TimeFromMark(Mark)>60000));
if(BankScreen)then
if CheeseDebug then writeln('Banking Items');
Wait(250+random(250));
FixBank;
DepositAll;
Wait(200+random(200));
WithdrawCash;
CloseWindow;
Banks:=Banks+1;
Willows:=Willows+27;
Players[CurrentPlayer].Banked:=Players[CurrentPlayer].Banked+1;
Players[CurrentPlayer].loc:='Bank';
end;
//************************************************** ***********************//
//
// Main EventLoop
//
//************************************************** ***********************//
begin
Setup;
repeat
OpenDraynorQuiet(205,90,250,200);
wait(50+random(50));
until (BankScreen);
WithdrawCash;
repeat
CloseWindow;
wait(500+random(500));
until (not(BankScreen));
repeat
ActivateClient;
SetChat('off',3);
WhereAreWe;
if Players[CurrentPlayer].loc='Bank' then
begin
MakeCompass('N');
if not(CashInInv) then
begin
MarkTime(Mark);
repeat
if (not(Loggedin)) then break;
if (not OpenDraynorQuiet(205,90,250,200)) then OpenBankQuiet('db');
until((BankScreen) or (TimeFromMark(Mark)>60000));
WithDrawCash;
repeat
CloseWindow
Wait(250+random(250));
until(not(BankScreen));
end;
FindDraynorRoadColor(549,5,676,95);
WalkToStore;
end;
if Players[CurrentPlayer].Loc='Store' then
begin
MarkTime(Mark);
repeat
OpenDoor;
if not Loggedin or (TimeFromMark(Mark)>60000) then break;
wait(50+random(50));
until(FindSalesman)
if(WillowsInStore) then BuyTheWillows;
PerfectNorth;
FindDraynorRoadColor(644,30,710,115);
WalkToDraynorBank;
Bank;
FindRandoms;
ProgressReport;
end;
if ((LoggedIn) and (Players[CurrentPlayer].Banked mod Loads = 0)) then
begin
SetChat('off',3);
repeat
Wait(1000);
FindNormalRandoms;
until(not(LoggedIn));
NextPlayer(True);
end;
if (not(Loggedin)) then NextPlayer(False);
until(False);
end.
//Long Live SCAR. We miss you Kaitnieks.