////////////////////////////////////////////////////////////////////////// ///////////////////////// MY FIRST RUNESCAPE SCRIPT ///////////////// ///////////////////////// ANY TREE ANYWHERE POWERCUTTER ///////////////// ///////////////////////// SCRIPT BY YOHOJO ///////////////// ///////////////////////// RELEASED NOVEMBER 12,2005 ///////////////// ///////////////////////// QUESTIONS?COMMENTS?ADVICE? ///////////////// ///////////////////////// THEN IM ME ON AIM: YOHOJO88 ///////////////// /////////////////////////////////////////////////////////////////////////// {History V1.0 Working with no anti-ent and axe fix V1.1 Added more randome movements and made less detectable V1.2 Added crappy ent protection and axe fix V1.3 Added progress report! V1.4 Added form! V1.5 Added very sexy ent protection(hasn't been tested yet) and fixed axe head finding V1.6 Added PWENED'S axehead finding procedure which i edited a bunch to work with Si.Scar V1.7 S0oper Do0per Axe ehad fixer added. Worked if equiped or not =)! V1.8 Sharpened up axe fixing procedure even more. Should work perfect now V1.9 Made script logout after certain ammount of loads were cut. } program Powercutter; {.include si.scar} var x,y:integer; cut,dropped: Integer; UserName:string; PassWord:string; frmDesign : TForm; Label1 : TLabel; Label2 : TLabel; Label3 : TLabel; Button1 : TButton; asdfUsername : TEdit; asdfPassword : TEdit; const ///////////////////////////////////SETUP///////////////////////////////////////////// TreesColor1=1066044 ;//color of tree in gamescreen TreesColor2=1452064 ;//color of tree in gamescreen TreesColor3=1986624 ;//color of tree in gamescreen Equiped= False;//true for equpied false for not CutTime=6500;//Take it takes to walk to/cut down a tree(eggagerate it) LoadsToCut=15;//Number of loads you want to cut untill logging out LampSkill='WoodCutting';//What you want to use lamps on ///////////////////////////////END OF SETUP//////////////////////////////// procedure Tutorial1(senter: TObject); begin writeln('button pressed'); frmDesign.Caption:=(frmDesign.Caption+('.')); frmDesign.ModalResult:= mrok end; Procedure ClickHumanA(xa, ya : integer; Click : boolean); begin {A little procedure PWND created to simluate human clicking :p} Holdmouse(xa, ya, click); wait(50 + random (50)); Releasemouse(xa, ya, click); end; Procedure Getaxecolor; var A1,A2,A3,H:Integer; begin Writeln('Getting axe and handle colors') Wait(300) if(Equiped=False)then begin Gametab(4); A1 := (Getcolor(590, 220)) A2 := (Getcolor(590, 218)) A3 := (Getcolor(587, 219)) H := (Getcolor(579, 230)) Writeln('Axe colors ' + inttostr(A1)+ ' ' + inttostr(A2) + ' ' + inttostr(A3)) Writeln('Handle color ' + inttostr(H)) end; if(Equiped=True)then begin Gametab(5); A1 := (Getcolor(595, 296)) A2 := (Getcolor(597, 296)) A3 := (Getcolor(594, 294)) H := (Getcolor(586, 306)) Writeln('Axe colors ' + inttostr(A1)+ ' ' + inttostr(A2) + ' ' + inttostr(A3)) Writeln('Handle color ' + inttostr(H)) end; end; Function Axelost : boolean; var x, y,a1,a2,a3: integer; begin if(equiped=true)then gametab(5) If(findcolortolerance(x, y, A1, 560, 210, 740, 460, 5)) or (findcolortolerance(x, y, A2, 560, 210, 740, 460, 5)) or (findcolortolerance(x, y, A3, 560, 210, 740, 460, 5)) then result := true if(equiped=false)then gametab(4) If(findcolortolerance(x, y, A1, 560, 210, 740, 460, 5)) or (findcolortolerance(x, y, A2, 560, 210, 740, 460, 5)) or (findcolortolerance(x, y, A3, 560, 210, 740, 460, 5)) then result := true else result := false end; Procedure FixTheAxe; Var x, y,a1,a2,a3,h : integer; begin if(Axelost = false)and (Equiped=False)then begin repeat if FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)then Mouse(x,y,2,2,true) if(not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)))or (not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)))or (not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)))then If(findcolortolerance(x, y, 1, 1, 5, 725, 160, 5))then Mouse(x, y,2,2,true) Flag; If FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)then Mouse(x, y,2,2,true) until((findcolortolerance(x, y, A1, 1, 1, 740, 460, 5)) or (findcolortolerance(x, y, A2, 1, 1, 740, 460, 5)) or (findcolortolerance(x, y, A3, 1, 1, 740, 460, 5))) begin if (FindObjEx(x, y,'Axe',560, 210, 740, 460,A1, 5, 300, 300,true))or FindObjEx(x, y,'Axe',560, 210, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Axe',560, 210, 740, 460,A3, 5, 300, 300,true)then Mouse(x, y,1,1,true) wait(500 + random(500)) If(findcolortolerance(x, y, h, 565, 5, 725, 160, 5))then Mouse(x, y,2,2,true) end; end; if(Axelost = false)and (Equiped=True)then begin Gametab(5); if (findcolortolerance(x,y,H,560, 210, 740, 460, 5))then Mouse(x,y,2,2,true) Gametab(4); repeat if FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)then Mouse(x,y,2,2,true) if(not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)))or (not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)))or (not(FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)))then If(findcolortolerance(x, y, 1, 1, 5, 725, 160, 5))then Mouse(x, y,2,2,true) Flag; If FindObjEx(x, y,'Take A',1, 1, 740, 460,A1, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Take A',1, 1, 740, 460,A3, 5, 300, 300,true)then Mouse(x, y,2,2,true) until((findcolortolerance(x, y, A1, 1, 1, 740, 460, 5)) or (findcolortolerance(x, y, A2, 1, 1, 740, 460, 5)) or (findcolortolerance(x, y, A3, 1, 1, 740, 460, 5))) begin if (FindObjEx(x, y,'Axe',560, 210, 740, 460,A1, 5, 300, 300,true))or FindObjEx(x, y,'Axe',560, 210, 740, 460,A2, 5, 300, 300,true)or FindObjEx(x, y,'Axe',560, 210, 740, 460,A3, 5, 300, 300,true)then Mouse(x, y,1,1,true) wait(500 + random(500)) If(findcolortolerance(x, y, h, 565, 5, 725, 160, 10))then Mouse(x, y,2,2,true) end; end; end; procedure Antirandoms; begin CheckRandoms(1,LampSkill,'N',false,false,srtAll) DropUseless; writeln('Checking Randoms'); end; Function Antient: boolean;//My own Ent Detection Function var ENTCHOP:integer; begin ENTCHOP := BitmapFromString(8, 16, 'z78DA3330A0377003025492' + '1895B844F08B136FF2F0564F6A7892175F431100009E0198F1'); begin if FindBitmapToleranceIn(ENTCHOP,x, y, 2, 3,366, 21,25)then result:=true; end; begin if (not(FindBitmapIn(ENTCHOP,x, y, 2, 3,366, 21)))then result:=false; end; end; Procedure Check4Ent;//My own Ent Detection Procedure var cx,cy:integer; begin if(FindObj(cx, cy, 'Chop', TreesColor1, 5)) or (FindObj(cx, cy, 'Chop', TreesColor2, 5))or (FindObj(cx, cy, 'Chop', TreesColor3, 5))then Mouse(cx,cy,1,1,true) if (Antient=true) then begin writeln('!HOLY SHIT! Thats an ent!') Mouse(650, 90,3,3,true); wait(500+Random(500)); Mouse(643, 74,3,3,True); wait (25000+Random(5000)); end; if (Antient=false)then begin writeln('Entless Tree') end; end; procedure choptree1; var cx,cy:integer; begin if (not(FindObj(cx, cy, 'Chop', TreesColor1, 5))) or (not(FindObj(cx, cy, 'Chop', TreesColor2, 5)))or (not(FindObj(cx, cy, 'Chop', TreesColor3, 5)))then writeln('Could not find a tree. Please re-choose colors') if FindObj(cx, cy, 'Chop', TreesColor1, 5) or FindObj(cx, cy, 'Chop', TreesColor2, 5)or FindObj(cx, cy, 'Chop', TreesColor3, 5)then Mouse(cx,cy,3,5,true); writeln('Tree Found') writeln('Chopping Tree..') wait(3000) if FindObj(cx, cy, 'Chop', TreesColor1, 5) then Movemousesmooth(cx,cy); if (not(FindObj(cx, cy, 'Chop', TreesColor1, 5)))then if FindObj(cx, cy, 'Chop', TreesColor2, 5)then Movemousesmooth(cx,cy); if (not(FindObj(cx, cy, 'Chop', TreesColor2, 5)))then if FindObj(cx, cy, 'Chop', TreesColor3, 5)then Movemousesmooth(cx,cy); Check4Ent; wait(cuttime+Random(500)); Sendarrowsilentwait(3+random(4),500+Random(500)); end; procedure DropLogs; var x,y,dtmlogs, dropO:integer; begin writeln('Dropping Logs') repeat dtmLogs:= DTMFromString('78DA633CC4C4C0F090910119B4A4DA323C04D' + '220D1FF40C07800A8E626AA1A882C8C04D29B806A9E1250B307A8' + 'E61D0135E7816A5E10507316A8E6010135A7816AAEE35703009B0' + 'B11B0'); dropO := BitmapFromString(7, 14, 'z78DA3330182CC00D07C0A506' + 'BFF8C0AA24DE47C3090000FE4E7AA1'); if(findDTM(dtmlogs,x,y,560, 212, 736, 464))then mouse(x,y,5,5,false) Wait(200+Random(500)); if (findbitmap(dropO,x,y))then Mouse(x,y,5,3,true) Wait(910+Random(500)); until(not(findDTM(dtmlogs,x,y,560, 212, 736, 464))) cut:=cut+27 dropped:=dropped+1 writeln('All Logs Dropped') end; procedure off; begin SetChat('off', 1); SetChat('off', 2); SetChat('off', 3); end; procedure ProgressReport; begin Writeln(' '); Writeln(' '); writeln(' Yohojos Any Tree Anywhere Powercutter Progress Report') writeln(' You have dropped ' +inttostr(cut)+' logs') writeln(' You have dropped ' +inttostr(dropped)+' load(s)') writeln(' You have worked for ' +ScriptTime2(2)) Writeln(' You have Ran Away From ' + inttostr(gSiRandoms[4]) + ' Attacks'); Writeln(' You have Solved ' + inttostr(gSiRandoms[7]) + ' Boxes'); Writeln(' You have Talked To ' + inttostr(gSiRandoms[1]) + ' Randoms'); Writeln(' You have Gained ' +inttostr(gSiRandoms[5]) + ' Levels'); Writeln(' You have Completed '+inttostr(gSiRandoms[6]) +' Eye Tests'); end; procedure FinalProgressReport; begin Writeln(' '); Writeln(' '); writeln(' Yohojos Any Tree Anywhere Powercutter Final Progress Reprot') writeln(' !Your Autoing Sesion Has Been Completed!') writeln(' You have dropped ' +inttostr(cut)+' logs') writeln(' You have dropped ' +inttostr(dropped)+' load(s)') writeln(' You have worked for ' +ScriptTime2(2)) Writeln(' You have Ran Away From ' + inttostr(gSiRandoms[4]) + ' Attacks'); Writeln(' You have Solved ' + inttostr(gSiRandoms[7]) + ' Boxes'); Writeln(' You have Talked To ' + inttostr(gSiRandoms[1]) + ' Randoms'); Writeln(' You have Gained ' +inttostr(gSiRandoms[5]) + ' Levels'); Writeln(' You have Completed '+inttostr(gSiRandoms[6]) +' Eye Tests'); end; procedure logout1; var x,y:integer; begin if(not(findcolorspiral(x,y,TreesColor1,1, 0,514, 336)) or(findcolorspiral(x,y,TreesColor2,1, 0,514, 336)) or(findcolorspiral(x,y,TreesColor3,1, 0,514, 336)))then Logout; end; procedure InitForm; begin frmDesign := CreateForm; frmDesign.Left := 289; frmDesign.Top := 161; frmDesign.Width := 589; frmDesign.Height := 395; frmDesign.Caption := 'frmDesign'; frmDesign.Color := clBtnFace; frmDesign.Font.Color := clWindowText; frmDesign.Font.Height := -11; frmDesign.Font.Name := 'WP MultinationalB Roman'; frmDesign.Font.Style := [fsBold, fsItalic]; frmDesign.Visible := False; frmDesign.PixelsPerInch := 96; Label1 := TLabel.Create(frmDesign); Label1.Parent := frmDesign; Label1.Left := 51; Label1.Top := 30; Label1.Width := 95; Label1.Height := 24; Label1.Alignment := taCenter; Label1.Caption := 'User Name'; Label1.Font.Color := clWindowText; Label1.Font.Height := -20; Label1.Font.Name := 'MS Sans Serif'; Label1.Font.Style := []; Label1.ParentFont := False; Label2 := TLabel.Create(frmDesign); Label2.Parent := frmDesign; Label2.Left := 450; Label2.Top := 30; Label2.Width := 91; Label2.Height := 24; Label2.Alignment := taCenter; Label2.Caption := 'Pass Word'; Label2.Font.Color := clWindowText; Label2.Font.Height := -20; Label2.Font.Name := 'Times'; Label2.Font.Style := []; Label2.ParentFont := False; Label3 := TLabel.Create(frmDesign); Label3.Parent := frmDesign; Label3.Left := 450; Label3.Top := 47; Label3.Width := 33; Label3.Height := 14; Label3.Caption := '(Its Bleeped Out)'; Label3.Font.Color := clWindowText; Label3.Font.Height := -11; Label3.Font.Name := 'Times'; Label3.Font.Style := [fsBold, fsItalic]; Label3.ParentFont := False; Button1 := TButton.Create(frmDesign); Button1.Onclick:=@Tutorial1; Button1.Parent := frmDesign; Button1.Left := 261; Button1.Top := 261; Button1.Width := 78; Button1.Height := 25; Button1.Caption := 'Start Chopping'; Button1.TabOrder := 8; asdfUsername := TEdit.Create(frmDesign); asdfUsername.Parent := frmDesign; asdfUsername.Left := 41; asdfUsername.Top := 60; asdfUsername.Width := 121; asdfUsername.Height := 30; asdfUsername.Font.Color := clWindowText; asdfUsername.Font.Height := -20; asdfUsername.Font.Name := 'Times New Roman'; asdfUsername.Font.Style := []; asdfUsername.ParentFont := False; asdfUsername.TabOrder := 9; asdfUsername.Text := ''; asdfPassword := TEdit.Create(frmDesign); asdfPassword.Parent := frmDesign; asdfPassword.Left := 440; asdfPassword.Top := 60; asdfPassword.Width := 121; asdfPassword.Height := 29; asdfPassword.Font.Color := clWindowText; asdfPassword.Font.Height := -20; asdfPassword.Font.Name := 'Wingdings 3'; asdfPassword.Font.Style := [fsBold, fsItalic]; asdfPassword.ParentFont := False; asdfPassword.TabOrder := 10; asdfPassword.Text := ''; end; procedure SafeInitForm; var v: TVariantArray; begin setarraylength(V, 0); ThreadSafeCall('InitForm', v); end; procedure ShowFormModal; begin frmDesign.ShowModal; end; procedure SafeShowFormModal; var v: TVariantArray; begin setarraylength(V, 0); ThreadSafeCall('ShowFormModal', v); end; procedure FormNames; begin username:=asdfusername.text password:=asdfpassword.text end; begin SafeInitForm; SafeShowFormModal; FormNames; activateclient; LoadInclude('Windows Media Player'); SetAccount(1,UserName,PassWord); Login(1) wait(1000) off; Getaxecolor; repeat Antirandoms; Choptree1; FixTheAxe; wait(10); if(InvCount = 28)then ProgressReport; if(InvCount = 28)then DropLogs until(dropped>=(LoadsToCut)); Logout; FinalProgressReport; Terminatescript; end.