Add me to msn(The butterfly, I will you give me mine).
Works 100%.
Edit:
This is all you need for the actual Bank-Opening.
SCAR Code:
function FindEdgeBank(var TempX, TempY:integer; MaxTime :integer):boolean;
var
TempTpa,Temp2Tpa,Temp1: TpointArray;
Temp: T2DPointArray;
CTS,Temp2X, Temp2Y, H, I, Timer:integer;
begin
Debug('Trying to find the Edgeville bank in '+IntToStr(MaxTime)+ ' ms.');
MarkTime(Timer);
CTS := GetColortoleranceSpeed;
ColortoleranceSpeed(3);
FindColorsSpiraltolerance(TempX, TempY, TempTPA, 3296088, MSX1 + 175, MSY1 + 125, MSX2 - 110, MSY2 - 110, 5);
FindColorsSpiraltolerance(Temp2X, Temp2Y, Temp2TPA, 2768457, MSX1 + 175, MSY1 + 125, MSX2 - 110, MSY2 - 110, 5);
Temp1:= CombineTPA(TempTPA,Temp2Tpa);
Temp:= TPAtoATPAEx(Temp1, 40, 30);//Change the Bigness.
SortATPASize(Temp, True);
H:=High(Temp);
for I := 0 to H do
begin
MiddleTPAEx(Temp[i], TempX, TempY);
MMouse(TempX, TempY, 5, 5);
Wait(50 + Random(50));
Result:= IsUpText('ank');
if (TimeFromMark(Timer) > MaxTime) then Break;
if Result and not (TimeFromMark(Timer) > MaxTime) then Debug('Found Edgeville bank in '+IntToStr(TimeFromMark(Timer))+' ms.');
if Result then
begin
GetMousePos(TempX, TempY);
Break;
end;
end;
ColortoleranceSpeed(CTS);
end;
procedure HBankScreen;
var
Timer: integer;
begin
if not LoggedIn then Exit;
MarkTime(Timer);
repeat
Wait(50 + Random(25));
until(BankScreen) or ((TimeFromMark(Timer) > 5000)) or (PinScreen);
if PinScreen then InPin(Players[CurrentPlayer].Pin);
end;
procedure HOpenBank;
var
Timer, A, B :integer;
begin
if not LoggedIn then Exit;
if BankScreen then Exit;
MarkTime(Timer);
repeat
if FindEdgeBank(A, B, 5000) then
begin
Mouse(A, B, 0, 0, False);
Wait(10 + Random(40));
ChooseOptionMulti(['uickly', 'ooth']);
end;
HBankscreen;
until(TimeFromMark(Timer) > (4 * 5 * 1000)+Random(500)) or BankScreen;
if not Bankscreen then LogOut;
end;
Just some neat DTM Banking stuff, I could put Deposit and Withdraw together, but it works fine.
If you add the DTM part you only need a Global variable DTM integer.
SCAR Code:
//Loads an DTM into the DTM variable,
//when WDTM matches one of the strings below it will load that DTM into the DTM variable.
procedure LDTM(WDTM:string);
begin
case lowercase(WDTM) of
'to bank': DTM := LoadToBank;//DTMFromString('78DA639CCEC4C050CA80023CF83919FE03694' +
//'620FE0F048CF3116A18A16AFEFC6142E1332E06F20B09A89907E4' +
//'D711A1A60DBF1A0084AE12D0');
'to well': DTM := LoadToWell; //DTMFromString('78DA63F46762603065400105F99A0CFF81342' +
//'310FF0702C62AA09A5054357FFE30816946289FB10EC80F24A0A6' +
//'12C88F23424D1A01358B81FC46543575DDF3184490D5AC02AA292' +
//'1A06636504D3B01351B816A32F0AB0100A5481D51');
'clay': DTM := DTMFromString('78DA637460606070634001F3DB22194480342' +
'310FF0702460B20C385010D30229140DA0E48781150E30E245C09' +
'A8F101124E04D480DCEB805F0D00927908CA');
'soft clay': DTM := DTMFromString('78DA631465606070664001D901BC0C22409A1' +
'188FF0301230790E1CE8006189148202D04247C09A8510012AE04' +
'D42802093B026A7808AB0100856206FE');
'bucket': DTM := DTMFromString('78DA637466626078C8800212BD25194480342' +
'310FF0702462BA09A970C6880118904D24E40359F08A8F126C21C' +
'2FA09AF704D45813560300E16B0C05');
'bucket of water': DTM := DTMFromString('78DA637462626078C880026A6AE7308800694' +
'620FE0F048C964035CF18D000231209A49D816A3E1150E30354F3' +
'94801A2BA09AB704D47803D5BCC2AF060077E80CC7');
else
Debug('DTM: '+ WDTM +' doesn'+#39+'t exist.');
end;
end;
function FDTM(WDTM:string; var AA, BB :integer; X1, Y1, X2, Y2:integer):boolean;
begin
LDTM(WDTM);
Result := FindDTM(DTM, AA, BB, X1, Y1, X2, Y2);
if Result then Debug(WDTM+' Found! at: '+inttostr(AA)+','+inttostr(BB)) else Debug(WDTM+' Not Found!');
FreeDTM(DTM);
end;
function HWithdraw(WDTM:string; Amount:integer):boolean;
var
AA, BB :integer;
XNeeded:boolean;
Str:string;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;
Result := FDTM(WDTM, AA, BB, MSX1, MSY1, MSX2, MSY2);
if Result then
begin
Debug('Found '+WDTM +' DTM, trying to withdraw it.');
case Amount of
0 : XNeeded := false;
1 : XNeeded := false;
2..4 : XNeeded := true;
5 : XNeeded := false;
6..9 : XNeeded := true;
10 : XNeeded := false;
end;
if Amount > 10 then XNeeded := true;
if Amount > 27 then XNeeded := false;
If Amount = 1 then
begin
Mouse(AA, BB, 10, 10, True);
Debug('Witdrawed '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
if XNeeded then
begin
Mouse(AA, BB, 10, 10, false);
if Chooseoption(IntToStr(Amount)) then Exit;
ChooseOption('X');
Wait(1000 + Random(500));
TypeSend(InttoStr(Amount));
if Result then Debug('Witdrawed '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
if not XNeeded then
begin
if (Amount > 27) or (Amount < 1) then Str := 'All' else Str := InttoStr(Amount);
Mouse(AA, BB, 10, 10, false);
Result := ChooseOption(Str);
if Result then Debug('Witdrawed '+InttoStr(Amount)+' '+WDTM) else Debug('Failed to withdraw '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
end;
Wait(150 + Random(100));
end;
function HDeposit(WDTM:string; Amount:integer):boolean;
var
AA, BB :integer;
XNeeded:boolean;
Str :string;
begin
if not LoggedIn then exit;
if not BankScreen then exit;
Result := FDTM(WDTM, AA, BB, MIX1, MIY1, MIX2, MIY2);
if Result then
begin
Debug('Found '+WDTM +' DTM, trying to withdraw it.');
case Amount of
0 : XNeeded := false;
1 : XNeeded := false;
2..4 : XNeeded := true;
5 : XNeeded := false;
6..9 : XNeeded := true;
10 : XNeeded := false;
end;
if Amount > 10 then XNeeded := true;
if Amount > 27 then XNeeded := false;
If Amount = 1 then
begin
Mouse(AA, BB, 10, 10, True);
Debug('Deposited '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
if XNeeded then
begin
Mouse(AA, BB, 10, 10, false);
if Chooseoption(IntToStr(Amount)) then Exit;
ChooseOption('X');
Wait(1000 + Random(500));
TypeSend(InttoStr(Amount));
if Result then Debug('Witdrawed '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
if not XNeeded then
begin
if (Amount > 27) or (Amount < 1) then Str := 'All' else Str := InttoStr(Amount);
Mouse(AA, BB, 10, 10, false);
Result := ChooseOption(Str);
if Result then Debug('Deposited '+InttoStr(Amount)+' '+WDTM) else Debug('Failed to withdraw '+InttoStr(Amount)+' '+WDTM);
Exit;
end;
end;
Wait(150 + Random(100));
end;
You can use these too:
SCAR Code:
function CountItem(WDTM:String):Integer;
begin
GameTab(tab_Inv);
LDTM(WDTM);
Result := CountItemsIn('inv','dtm', DTM, []);
if (Result > 0) then Debug(IntToStr(Result) + ' ' + WDTM + 's (Count)');
FreeDTM(DTM);
end;
function CountItemStack(WDTM:String):Integer;
var
A, B :Integer;
begin
if FDTM(WDTM, A, B, MSX1, MSY1, MSX2, MSY2) then
begin
Result := GetAmount(A, B);
Debug(IntToStr(Result)+ ' ' + WDTM + 's found(Stack)');
end;
end;