program YewCutterBanker; const //-- Start Of Setup --\\ Mask = '' ; //what to rename scar as User = 'password' ; //user Pass = 'password' ; //pass Direction = 'S' ; //direction to run when gettin' 0wn3d Tree1 = 4094064 ; //yew tree colors Tree2 = 4094064 ; Tree3 = 4094064 ; RoadColor = 6184550 ; //Road Color on MM TreeColor = 99080 ; //Color of Tree on MM BankSymb = 0; //Color of Bank Icon on MM(leave at 0 for script to auto pick) PinNumb = 0 ; //pin number to open ur bank.(only if needed) Trips = 25 ; //number of trips to make before stopping. InTime = 75 ; //take a break every X minutes OutTime = 5 ; //break for X minutes ReAttach = True ; //if true script will try and re-attach axehead. Wield = true ; //true to if ur wielding axe and false if not.(script works better if not wielding) EdgeVille = True ; //true to cut yews in edgeville, leave it at true. EntChecks = True ; //true to use my ent finder.(if false it will still check with si's ent finder) SiFindObj = False ; //true to use si's find obj. false to use alternate find obj. //-- End Of Setup -- \\ EntBmpTol = 50 ; //tolerance of the ent checker bmp var Tx, Ty, T1, T2, T3, attached, killed, ents, banks, newpicks, times, fishs, YEntBmp : integer; broke : boolean; {.include si.scar} //Ent Checking Stuff function EntPresent : boolean; begin Result:=CheckEnt; if(EntChecks = true)and (FindBitmapToleranceIn(YEntBmp, tx, ty, 75, 1, 145, 40, EntBmpTol) = true)and (IsUpText('Ch') = true)then Result:=true; end; //Option function function Option(s : string): boolean; begin result:=IsUpText(s); end; //Find Obj function FindObj2(objtext : string; objcolor, tol : integer) : boolean; var ax,ay,x,y:integer; xi,yi,TempHold2,i,TempHold:extended; begin if(FindColorTolerance(x,y,objcolor,1,1,514,336,tol))then begin ax:=257; ay:=168; repeat i:=i+1 yi:=0; repeat yi:=yi+1; TempHold:=Trunc(i/2); TempHold2:=i/2; if(TempHold=TempHold2)then begin ay:=ay+10; end else ay:=ay-10; if(FindColorTolerance(x,y,objcolor,ax-622,ay-696,ax+160,ay+108,tol))then begin MMouse(x,y,1,1); wait(1000); if(Option(objtext))then result:=true; end; until(yi=i)or(result=true) xi:=0; repeat xi:=xi+1; TempHold:=Trunc(i/2); TempHold2:=i/2; if(TempHold=TempHold2)then begin ax:=ax+10; end else ax:=ax-10; if(FindColorTolerance(x,y,objcolor,ax-4114,ay-5647,ax+641,ay+61,tol))then begin MMouse(x,y,1,1); wait(1000); if(Option(objtext))then result:=true; end; until(xi=i)or(result=true) until(ax>=514)or(result=true) end; end; //Modified Anti-Ban from SI function AntiBan2(inTime, outTime, Account: Integer): Boolean; var logtime, randomin, randomout: Integer; begin logtime := ((GetSystemTime - gSiABT) / 1000) / 60; randomin := (InTime * 1000) * 60 + random(InTime * 60); if(logtime >= randomin)then begin LogOut; Result := True; WriteLn('Anti-Ban - Logged Out at '+TheTime); randomout := (OutTime * 1000) * 60 + random(OutTime * 60) Writeln('Waiting ' + inttostr(randomout) + ' Minutes To Log Back In'); Wait(randomout); Login(Account); WriteLn('Anti-Ban - Logged In at '+TheTime); gSiABT := GetSystemTime; end; end; //GetSymbolColor from SSi2 function GetSymbolColor(name : string) : integer; var Bitmap, Color, c, x, y : integer; acc : extended; begin if(lowercase(name) = 'bank')then begin Bitmap := BitmapFromString(15, 5, 'z78DA33B434B4343473B' + '100421364D2D9D2C9C9D4C4CDCDD5D1CCD0C2D5DCC5D00299ED04' + '8226C824B25E43B0998664990C213175116F32B2F9C824B2F9A4B' + 'A1997F9B842865493890F734C9301ACE46928'); Color:=6417151; end; FindDeformedBitmapToleranceIn(Bitmap, x, y, 570, 5, 725, 160, 70, 0, True, acc); if(acc > 0.65)then begin repeat c:=c + 5; if(FindColorTolerance(x, y, Color, x, y, x + 15, y + 5, c))then result:=GetColor(x, y); until(result > 0)or(c > 70); end; FreeBitmap(Bitmap); end; //Mark Time Procedures from SSi2 procedure MarkTime(var TimeMarker:integer); begin TimeMarker:=GetSystemTime; end; function TimeFromMark(var TimeMarker:integer):integer; begin result:=(GetSystemTime - TimeMarker) / 1000; end; //Function that checks if ur inventory is full... function Full : boolean; begin if(IsChatMessage('Your i') = true)and (InvFull = true)then result:=true; end; //Progress Report procedure Report; var avtime : integer; begin if(Wield = true)then killed:= killed + 28 Else killed:= killed + 27; if(ScriptTime(2) > 0)then avtime:= Killed / ScriptTime(2); writeln(''); writeln('<=================Progress Report================>'); writeln('Worked for ' + inttostr(ScriptTime(1)) +' Hour[s] and ' + inttostr(ScriptTime(2)) +' Minute[s] and ' + inttostr(ScriptTime(3)) +' Second[s].'); writeln('Killed and Banked ' + inttostr(Killed) +' Willow Log[s].'); if(ScriptTime(2) > 0)then writeln('Averaging ' + floattostr(AvTime) +' Log[s] per minute.'); if(gSiRandoms[5] > 0)then writeln('Gained ' + inttostr(gSiRandoms[5]) +' WoodCutting Level[s].'); if(NewPicks > 0)then writeln('Withdrawn ' + inttostr(NewPicks) +' New Pick[s].'); if(Attached > 0)then writeln('Re-Attached ' + inttostr(attached) +' AxeHead[s].'); if(ents > 0)then writeln('Waited for ' + inttostr(ents) +' Ent[s].'); if(gSiRandoms[1] > 0)then writeln('Dealt with ' + inttostr(gSiRandoms[1]) + ' Text Random[s].'); if(gSiRandoms[3] > 0)then writeln('Dealt with ' + inttostr(gSiRandoms[3]) + ' Box[s].'); if(gSiRandoms[0] > 0)then writeln('Found ' + inttostr(gSiRandoms[0]) + ' Fight[s].'); if(gSiRandoms[2] > 0)then writeln('Used ' + inttostr(gSiRandoms[2]) + ' Lamp[s].'); writeln('<================================================>'); end; // Randoms procedure RegRandoms; var x, y : integer; begin if(FindColor(x, y, 65535, 10, 25, 511, 334) = true)then begin gSiRandoms[1] := gSiRandoms[1] + 1; TakeScreen('Text',gSiRandoms[1]); TalkToRand(x, y); wait(35 + random(75)); GameTab(4); wait(100 + random(75)); end; CheckRandoms(1, 'WoodCutting', Direction, True, True, srtAll); end; procedure CuttingRandoms; begin RegRandoms; if(ReAttach = true)and(AxeHeadGone(wield) = true)then begin FixAxe(wield); wait(2500 + random(1000)); if(AxeHeadGone(wield) = false)then begin writeln(''); writeln('Found and re-attached pickhead!'); attached:=attached + 1; end; end; if(AxeHeadGone(wield) = true)then begin writeln(''); writeln('Lost axehead... getting a new one!'); broke:=true; Logout; TerminateScript; end; if(BrokenAxe(wield) = true)then begin writeln(''); writeln('Axe broken... getting a new one!'); broke:=true; Logout; TerminateScript; end; end; //Flag. procedure FlagR; begin repeat wait(10); until(FlagPresent = false); end; function FindObjecto(s : string; color, tol : integer): boolean; begin if(SIFindObj = true)then result:=FindObj(tx, ty, s, color, tol) Else result:=FindObj2(s, color, tol); end; procedure CutTree(color1, color2, color3 : integer; tname : string); var tc, rn, x, y, x1, y1, x2, y2, mark : integer; begin rn:=random(3) + 1; case rn of 1 : tc:=color1; 2 : tc:=color2; 3 : tc:=color3; end; rn:=random(2) + 1; if(rn = 1)then begin x1:=218; y1:=118; x2:=282; y2:=186; end Else begin x1:=9; y1:=9; x2:=511; y2:=333; end; if(FindColorSpiralTolerance(x, y, tc, x1, y1, x2, y2, 3) = true)then begin if(Option('Chop ' + tname) = true) or(FindObjecto('Chop ' + tname, tc, 3) = true) and(CheckEnt = false)then begin GetMousePos(x, y); Mouse(x, y, 2, 2, true); wait(175 + random(300)); MarkTime(mark); CuttingRandoms; FlagR; repeat wait(10); CuttingRandoms; if(EntPresent = true)then break; if(TimeFromMark(mark) > 45)then begin MarkTime(mark); wait(100 + random(100)); GetMousePos(x, y); if(Option('Cho') = true)then Mouse(x + 2, y, 5, 5, true) Else MMouse(x + 2, y, 45, 15); end; until(Option('Cho') = false)or(full = true); end; if(EntPresent = true)then begin writeln(''); writeln('Found An Ent!'); ents:=ents + 1; Mouse(647, 82, 2, 2, true); wait(250 + random(1000)); MarkTime(mark); repeat wait(100); CuttingRandoms; until(TimeFromMark(mark) > 30); end; end; end; // MapWalking procedure YewsToBank; //edgeville walking from rsnoobs script. var x, y : integer; begin if(EdgeVille = true)then begin while(not FindColor(x, y, BankS, 620, 30, 695, 105))do if(FindColor(x, y, RoadColor, 635, 30, 685, 45))then MouseFlag(x, y, 2, 2); Mouse(x, y, 2, 2, True); Flag; end Else begin end; End; procedure BankToYews; //edgeville walking from rsnoobs script. var x, y, off: integer; Begin if(EdgeVille = true)then begin x:= 640; y:= 145; if(FindColorSpiral(x, y, RoadColor, 621, 95, 652, 120))then Mouse(x, y, 2, 2, True); Flag; if(Random(2)=0)then begin x:= 635; y:= 85; off:= 10; end Else begin x:= 630; y:= 160; off:= - 10; end; if(FindColorSpiral(x, y, TreeColor, 615, 80, 650, 160))then Mouse(x + 5, y + off, 2, 2, True); Flag; end Else begin end; end; //Close Bank Procedure procedure CloseBank; begin wait(200 + random(175)); Mouse(random(20) + 430, random(3) + 37, 0, 0, true); wait(100 + random(50)); end; //Procedure to bank yews. procedure ClearInv; begin SetRun(true); MakeCompass('N'); YewsToBank; OpenBank2(PinNumb); wait(100 + random(150)); if(Wield = true)then DepositAll Else begin DepositArea(607, 212, 733, 240); DepositArea(566, 256, 730, 452); end; CloseBank; BankToYews; SetRun(false); end; //Procedure to get a new axe out of bank procedure NewAxe; var x, y : integer; begin broke:=false; setrun(true); if(Wield = true)then TakeOff(5); MakeCompass('N'); YewsToBank; OpenBank2(PinNumb); wait(100 + random(150)); DepositAll; wait(400 + random(150)); FixBank; wait(300 + random(150)); if(FindColorTolerance(x, y, gSiAxeH, 74, 61, 110, 88, 3) = false)then begin writeln(''); writeln('Outta picks... terminating'); Logout; TerminateScript; end; Withdraw(1, 1); CloseBank; wait(50 + random(75)); if(Wield = true)then UseItem(1); NewPicks:=NewPicks + 1; BankToYews; SetRun(False); end; procedure SwitchTrees; //by RSnoob var x, y: Integer; begin if(EdgeVille = true)then begin if(FindColor(x, y, TreeColor, 630, 25, 660, 60))then Mouse(x + 2, y + 12, 2, 2, True) else if(FindColor(x, y, TreeColor, 630, 105, 660, 140))then Mouse(x + 2, y, 2, 2, True); end Else begin end; Flag; end; {--- Main Line Of Coding Starts Here ---} begin YEntBmp:= BitmapFromString(2, 10, 'z78DA73357135317074452' + '29D5D9D5D0D8C70B24D8950834B3D121B00ADF01C47'); writeln(''); writeln('YewCutterBanker v. Beta - by RealRune'); writeln(''); writeln('Start in the bank with the banksymbol visible'); writeln(''); writeln('Empty inv except for a pick either wielded or in first slot of inventory'); writeln(''); writeln('Make sure to have extra picks in first Bank Slot'); writeln(''); writeln('Starting Up'); wait(1000); LoadInclude(mask); SetAccount(1, user, pass); GetAxeColors(wield); T1:=Tree1; T2:=Tree2; T3:=Tree3; BankS:=BankSymb; Killed:=0; if(BankS = 0)then BankS:= GetSymbolColor('bank'); if(BankS = 0)then begin writeln(''); writeln('Color finding failed... please input colors urself'); Logout; TerminateScript; end; if(FindColor(tx, ty, BankS, 573, 8, 723, 158) = true)then begin SetRun(true); BankToYews; SetRun(false); end; repeat repeat CutTree(T1, T2, T3, 'down Y'); if(Full = false)then begin SwitchTrees; CuttingRandoms; end; if(Broke = true)then NewAxe; AntiBan2(inTime, outTime, 1); until(full = true); if(Full = true)then begin Times:=times + 1; ClearInv; Report; end; AntiBan2(inTime, outTime, 1); until(times = trips) or (times > trips); end.