{ ½½ $ ½½ $ The $ ½½½½½½½ ½½½ ½½ ½½½ $ - Bank Pinner - $ ½½½ ½½ ½½½ ½½½ ½½ ½½½½ by ½½½ ½½ ½½ $ ½½½½½½ ~ AFireInside ~ $ ½½½½½½ $ ½½½½½½ $ ½½½½½½ $ + This include will enter any ½½ ½½½ bank pin into runescape so you ½½½ ½½ ½½½ can access your bank while ½½½½ ½½ ½½½ $ autoing. ½½½ ½½ ½½½ + It works with any 4 number pin ½½ ½½ ½½½ $ and even though the numbers get ½½½½½½½½½ mixed around. ½ $ $ +People using your scripts only $ ½½ need to enter their pin and this $ will successfully bank with it. ~*-Usage-*~:(this part is for the scripters.) To use this in your script, simply use the command EnterBankPin(); The procedure requires a String such as EnterBankPin('1234'); It is probably best to use a constant for the bank pin so the user can enter their's when they run your script. +Place this command in your script right after you dealt with the banker and you are on the first pin screen. If the screen does not come up or the person does not use a pin, it will simply bypass the procedure. +Any errors in this procedure will terminate the script. There will be a description in the box below and a screenshot will be saved to the script directory. +Rememeber to save this to your includes folder to use. +Try to not copy code from this to use separately in your own script. Just use this include for your bank pins. (=======================================================) ||||| The Code |||||| (=======================================================) (-----------------------) | Constant Declarations | (-----------------------} const digitw = 7; //Digit bitmap width digith = 10; //Digit bitmap height tolerancebp = 150; //Tolerance for recognizing digits borderfix = 5; //Pixel fix to remove error in cell recognition // Constants for determining cell dimensions topleftx1 = 40; toplefty1 = 110; topleftx2 = 95; toplefty2 = 165; cellwidth = 55; widthspace = 40; vertspace = 15; oddonex1 = 310; oddoney1 = 110; oddonex2 = 370; oddoney2 = 165; {-----------------------) | Variable Declarations | (-----------------------} //cell dimension arrays var x1arr:array[1..10] of Integer; var y1arr:array[1..10] of Integer; var x2arr:array[1..10] of Integer; var y2arr:array[1..10] of Integer; var digit:array[1..10] of Integer; //Holds bitmaps for the cell digits var cell:array[1..10] of Integer; //Temproary stoarge of digits in the cells. var p:array[1..4] of Integer; //the separate digits of the input pin var bpx,bpy, //x and y coord holders for this include pinstep, //Tracks what step of the pin process your on redbank //DTM for the topleft red text. Indicates bank pin screen :Integer; {-----------------------) | Prints an Integer | (-----------------------} Procedure Print(i:Integer; j:String); begin Writeln(j+': '+inttostr(i)); end; {-------------------------) | Divides pin into 4 ints | (-------------------------} Procedure SplitPin(str:String); //divided into p[1]-p[4] respectively begin if(not(length(str)=4))then begin Writeln('The pin you entered is not 4 digits!'); Writeln('You must type you pin as 4 numbners'); Writeln('without anyspaces. Ex: ''2915'' with single quotes'); Writeln('Terminating Script'); TerminateScript; end; p[1]:=strtoint(copy(str,1,1)); p[2]:=strtoint(copy(str,2,1)); p[3]:=strtoint(copy(str,3,1)); p[4]:=strtoint(copy(str,4,1)); end; {-----------------------) | Mouse Procedure | (-----------------------} Procedure BpMouse(x,y,ranx,rany:Integer; click:String); begin x:=x-ranx/2+ranx; y:=y-rany/2+rany; MoveMouseSmooth(x,y); wait(10+random(20)); if(click = 'left')then begin holdmouse(x,y,true); wait(random(30)+15); releasemouse(x,y,true); end else if(click = 'right')then begin holdmouse(x,y,false); wait(random(30)+15); releasemouse(x,y,false); end else if(click = 'move')then begin end else writeln('Move input error: '+click); end; {-----------------------) | Recover cell digits | (-----------------------} Procedure RecoverDigits; //Cells numbered 1-9 like a phone and 10 is the odd one. They are entered by number //into array cell[]. Its integer value is 1-10 depending on its digit. var i,j,k:Integer; error:boolean; begin repeat error:=false; for i:=1 to 10 do begin j:=0; repeat j:=j+1; if(j>10)then error:=true; wait(10); if(FindbitmapTolerancein(digit[j],bpx,bpy,x1arr[i],y1arr[i],x2arr[i],y2arr[i],tolerancebp))then break; until(j=10); cell[i]:=j; if(cell[i]=10)then cell[i]:=0; end; k:=k+1; until((error=false)or(k>10)); if(k>=10)then begin writeln('Cannot retrieve all digits...'); writeln('Terminating script...'); writeln('Check script folder to see a screenshot of when this happened'); SaveScreenShot('Bank_Pinner_Error'); TerminateScript; end; //for i:=1 to 10 do print(cell[i],inttostr(i)); end; {--------------------------) | Clicks on a digit cell | (--------------------------} Procedure ClickCell(number:Integer); var i:Integer; begin i:=0; repeat i:=i+1; if(i>10)then break; if(number=cell[i])then break; until(i>10); if(i>10)then begin writeln('Cannot retrieve all digits...'); writeln('Terminating script...'); writeln('Check script folder to see a screenshot of when this happened'); SaveScreenShot('Bank_Pinner_Error'); TerminateScript; end; BpMouse(x1arr[i]+cellwidth/2,y1arr[i]+cellwidth/2,5,5,'left'); end; {--------------------------) | Creates Arrays for cells | (--------------------------} Procedure SetupArrays; var i,j,k,l:Integer; begin k:=cellwidth+widthspace-borderfix; l:=topleftx1-k; for i:=1 to 3 do for j:=1 to 3 do x1arr[(i-1)*3+j]:=l+j*k; k:=cellwidth+widthspace+borderfix; l:=topleftx2-k; for i:=1 to 3 do for j:=1 to 3 do x2arr[(i-1)*3+j]:=l+j*k; k:=cellwidth+vertspace-borderfix; l:=toplefty1-k; for i:=1 to 3 do for j:=1 to 3 do y1arr[(i-1)*3+j]:=l+i*k; k:=cellwidth+vertspace+borderfix; l:=toplefty2-k; for i:=1 to 3 do for j:=1 to 3 do y2arr[(i-1)*3+j]:=l+i*k; x1arr[10]:=oddonex1; y1arr[10]:=oddoney1; x2arr[10]:=oddonex2; y2arr[10]:=oddoney2; //for i:=1 to 9 do print(x1arr[i],inttostr(i)); {for i:=1 to 9 do begin BpMouse(x1arr[i],y1arr[i],1,1,'move'); wait(250); BpMouse(x1arr[i],y2arr[i],1,1,'move'); wait(250); BpMouse(x2arr[i],y2arr[i],1,1,'move'); wait(250); BpMouse(x2arr[i],y1arr[i],1,1,'move'); wait(250); end;} end; {------------------------) | Prepares digit bitmaps | (------------------------} Procedure PrepareBitmaps; //Separates numbers into individual integers from bitmap canvas into array digit[]. var canvas,i:integer; begin for i:=1 to 10 do digit[i]:=bitmapfromstring(digitw,digith,''); canvas :=BitmapFromString(70, 10, 'z78DAED57B10DC030087B89AD1' + 'FF0FF499DAA662932D8666A860EC88282C12111EFC9BCF2F97E9D' + '1353E3112412B1F6D6FD07B74FC4B3CA678DA9ED3C128F8EE3F95' + '888CF6E0DBB966E1D8298411F478E2C78C56090EEEC1C1CCDB2E3' + 'B3D0CED126475DB5DF54245C1F986ED1D644CB91E38ED0FA646E0' + 'A5E07909DC4C7916AE2DC1CA9F456A5AE3B1C69D59EE9B49F23C7' + '66C55483B7EFCFAC7BF7E67B7EB6D5ABF6A2EE1B76A606BEFDEA3' + 'C3763376DCA'); for i:=1 to 10 do copycanvas(getbitmapcanvas(canvas),getbitmapcanvas(digit[i]),(i-1)*digitw,0,i*digitw,digith,0,0,digitw,digith); //displaydebugimgwindow(10,150); //for i:=1 to 10 do SafeDrawBitmap(digit[i],getdebugcanvas,0,i*14); freebitmap(canvas); end; {-----------------------) | Loads DTMs | (-----------------------} Procedure LoadDTMsbp; begin redbank:=DTMFromString('78DA635463606098CA8002FE03B108103382D' + '840C00852330FB71A1060B4C36F0E584D20905848404D28909841' + '404D1C1176D513A1663290584440CD7C20310BBF1A0008E41660'); end; {=======================) | Main Procedure | (=======================} Procedure EnterBankPin(pin:String); //You need to use Enterbankpin() with the pin everytime you want to use in yoru script. //Note, put the number between quotes like '1234' because it is taken as a string. begin LoadDTMsbp; if(FindDTM(redbank,bpx,bpy,5,5,150,75))then begin PrepareBitmaps; SetupArrays; SplitPin(pin); for pinstep:=1 to 4 do begin Recoverdigits; wait(500+Random(250)); ClickCell(p[pinstep]); wait(500+random(250)); BpMouse(5,5,5,5,'move'); wait(100+random(500)); end; end else begin writeln('Did not see pin screen. Either you allready'); writeln('entered it this session, you are not on the'); writeln('bank screen, or you do not have a pin to enter.'); end; end; {-----------------------) | End of Include | (-----------------------}