{=========================================================================] [ Stupid3ooo's PowerMiner ] [ version: 3.92 ] [=========================================================================] | Description: | | A macro that you can run in any mine. It'll mine a full load of either| | tin, copper, iron, or coal and drop it once it's full, then continue | | minning. | | Instructions: | | 1.V-bright, 32bit resolution. | | 2.Need SCAR version 2.0.2. | | 3.Run script next to the full rock you want to mine. | | 4.Recomended to have extra pickaxes in your inventory. | | 5.Click and drag the crosshair over the Runescape client. | | Then press the green arrow. | | 6.To set your own colors go to lines 30-35.(Optional) | | 7.For general SCAR help go to: | | http://www.kaitnieks.com/files/SCARGUIDE/SCARGUIDE.htm | | 8.Be sure to open SSI2.txt for more options. | [=========================================================================] [ Thanks to, RS Cheating community ] [ *PLEASE POST ANY BUGS/HELP IN THE FORUMS OR E-MAIL ] [ RSTradeMonkey@hotmail.com ] [ If you like pwease donate to me :) at: ] [ http://www.stupid3ooo.fizzstudios.com/donate ] [=========================================================================} program StupidPowerMiner; {.include SSI2.txt} {.include BoxBreaker.txt} const //=//================Colors(Leave as 0 to let script find)=============\=\\ RockColor1= 2041921;//Colors of rocks in main screen. RockColor2= 2371662; RockColor3= 2503250; MMPickColor= 2575992;//Pick symbol color. [SS:2575992] MMOreColor= 4010803;//Mini map ore color. [SS:4010803] //=\\=================================================================//=\\ //=\\ Under the varibles you may disable the forms and setup options. //=\\ //=\\=================================================================//=\\ var OreCol,OreTol1,OreTol2,DroppedOres,OreType,Beer,MapOreColor,MapPickColor, NotStuckMark,RunMark,MaxWait,SetRunTime:integer; XpPerOre:extended; RockDirection,RunDirection:string; Look4Gas,DropAllButPick,StartScript,UseForm,ScarScape,LogsOut,Chats,Rotates:boolean; frmDesign,frmMore:TForm; labPassword,labUsername,labOreType,labRunDirection,labMaxWait,labMaxWait2, labSetRunTime,labSetRunTime2:TLabel; cboxOreType,cboxRunDirection:TComboBox; edtUsername,edtPassword,edtSetRunTime,edtMaxWait:TEdit; bMoreOptions,bStart,bSave,bDonate:TButton; cbLook4Gas,cbLogsOut,cbChats,cbDropAllButPick,cbRotates,cbScarScape:TCheckBox; procedure Setup; begin //=//==============================Setup===============================\=\\ UseForm:= true;//If you want to use the GUI in the beginning. Username:='';//Username Password:='';//Password ScarScape:= true;//Set to true if you are using ScarScape. LogsOut:= true;//If you want to log out every so often for antiban. Chats:= true;//If you want to randomly chat for anti-ban. Look4Gas:= true;//Set to false if you are having trouble with it constantly finding gas. Rotates:= false;//If you want to randomly rotate the screen for anti-ban. MaxWait:= 10;//Maximum time in seconds to wait while mining a rock. SetRunTime:= 300;//Sets run every chosen amount of seconds. RunDirection:= 'N';//Direction to run away from. DropAllButPick:= false;//If you want to drop gems, gold, etc. instead of just ores. //=\\=================================================================//=\\ end; //DO NOT TOUCH BELOW //==============================Misc Procedures===============================\\ Procedure ProgressReport;//modified from Phalanx's script var RHours,Minutes,Seconds,RMinutes,RSeconds,avtime:LongInt; Time:string; begin Seconds:=(GetSystemTime-ST) div 1000; Minutes:=Seconds div 60; RHours:=Minutes div 60; Time:=inttostr(Seconds)+' Seconds'; if(DroppedOres>0)then avtime:=Seconds/DroppedOres; if Minutes<>0 then begin RSeconds:=Seconds Mod (Minutes*60); Time:=inttostr(Minutes)+' Minutes and '+inttostr(RSeconds)+' Seconds'; end; if RHours<>0 then begin RMinutes:=Minutes Mod (RHours*60); RSeconds:=Seconds Mod (Minutes*60); Time:=inttostr(RHours)+' Hours, '+inttostr(RMinutes)+ ' Minutes and '+inttostr(RSeconds)+' Seconds'; end; writeln(' '); writeln('<=================Progress Report================>'); writeln('Worked for '+Time); writeln('Dropped '+inttostr(DroppedOres)+' ore[s].'); writeln('Gained '+floattostr(XpPerOre*DroppedOres)+'xp.'); if(avtime>0)then writeln('Currently Averaging about '+inttostr(3600/avtime)+ ' ores and '+floattostr((3600/avtime)*XpPerOre)+' xp an hour.'); writeln('Random Event Report:'); if(fights>0)then writeln(' Fought '+inttostr(fights)+' time[s].'); if(talks>0)then writeln(' Talked to '+inttostr(talks)+' random event[s].'); if(lamps>0)then writeln(' Used lamps '+inttostr(lamps)+' time[s].'); if(boxes>0)then writeln(' Solved '+inttostr(boxes)+' box[es].'); if(logs>0)then writeln(' Logged in '+inttostr(logs)+' time[s].'); writeln('<================================================>'); end; procedure GetOreType; begin if(OreType=1)then//1-Copper begin OreCol:=4550039; OreTol1:=15;OreTol2:=35; XpPerOre:= 17.5; end; if(OreType=2)then//2-Tin begin OreCol:=7895169; OreTol1:=15;OreTol2:=35; XpPerOre:= 17.5; end; if(OreType=3)then//3-Iron begin OreCol:=2371664; OreTol1:=5;OreTol2:=25; XpPerOre:= 35; end; if(OreType=4)then//4-coal begin OreCol:=2900546; OreTol1:=5;OreTol2:=13; XpPerOre:= 50; end; end; procedure SetColors; begin OreColor1:=RockColor1; OreColor2:=RockColor2; OreColor3:=RockColor3; MapPickColor:=MMPickColor; MapOreColor:=MMOreColor; end; //=========================Color Finding Procedures===========================\\ procedure FindRockDirection; begin if(MapPickColor>0)then begin if(FindColorSpiral(x,y,MapPickColor,668,5,725,160))then RockDirection:='W'; if(FindColorSpiral(x,y,MapPickColor,575,5,628,160))then RockDirection:='E'; if(FindColorSpiral(x,y,MapPickColor,575,103,725,160))then RockDirection:='N'; if(FindColorSpiral(x,y,MapPickColor,575,5,725,68))then RockDirection:='S'; end; end; function FindMapOreColor:integer; var MapOre,MapOre2:integer; begin MapOre := BitmapFromString(3, 3, '3D2C345948546D5D624A39416D5D626D5D625948546D5D626D5D62' + ''); MapOre2 := BitmapFromString(3, 3, '061115222D35364243131E22364243364243222D35364243364243' + ''); if(FindBitmapsProgressiveTol(MapOre,MapOre2,0,0,0,65,5,587,41,705,118))then Result:=GetColor(x+1,y+1); FreeBitmap(MapOre); FreeBitmap(MapOre2); end; procedure FindColors; var c:integer; begin WriteLn('Finding colors please Wait...'); repeat c:=c+1; if(MapOreColor>0)and(MapPickColor>0)and(OreColor1>0)and(OreColor2>0)and (OreColor3>0)then Break; FindOreColors(OreCol,OreTol1,OreTol2); MapPickColor:=GetSymbolColor('mining spot'); MapOreColor:=FindMapOreColor; if(c>=10)then begin WriteLn('Could not find colors, please stand next to a full rock and '+ 'make sure the mining spot symbol is visible in the minimap, then'+ ' run the script again'); TerminateScript; end; until(c>10) end; //========================Random Protection Procedures========================\\ procedure ReturnToRocks; begin if(not(FindMMColor(MapPickColor)))then begin if(FindMMColor(MapOreColor))then begin Mouse(x,y,1,1,true); Flag; end else if(not(FindMMColor(MapPickColor)))and (not(FindMMColor(MapOreColor)))then begin writeln('Lost!!!'); TerminateScript; end; end; if(FindColorSpiral(x,y,MapPickColor,565,5,725,160))then begin Mouse(x,y,1,1,true); Flag; if(not(RockDirection=''))then RoadWalk(MapOreColor,RockDirection); end; end; procedure TimedProcedures; begin if(TimeFromMark(NotStuckMark)>60000)then begin ReturnToRocks; MarkTime(NotStuckMark); end; if(TimeFromMark(RunMark)>SetRunTime*1000)then begin MarkTime(RunMark); SetRun(true); end; end; procedure FindRandoms; begin FindNormalRandoms; AntiBan; FindDoctor; FindBox; if(FindFight)then begin RunAwayDirection(RunDirection); Wait(5000+random(1000)); RunBack; end; if(not(FindPick))then begin ClickItemBmpTol(PickHandle,50,false); ChooseOption('Drop'); end; if(FindColor(x,y,OreColor,210,130,300,220))then begin if(Look4Gas)then begin if(FindGas(x,y))then begin WriteLn('Waiting for gas...'); Wait(25000+random(2000)); end; end; end; end; //============================Main Screen Procedures==========================\\ procedure DropIfNeeded; begin if(InventoryFull)then begin Beer := BitmapFromString(5, 5, '000001C9C1C9CDC5CDD0CAD0CDC5CD000001D7D1D7D9D2D8DAD5D9' + 'DDD9DD564D42000001E6E2E6E7E4E7E8E5E8564D42000001C09018' + 'F4F2F4F2F0F2544A3B000001C09018C09018C09018'); DroppedOres:=DroppedOres+(CountItemBmpTol(Ore,50)); if(FindItemBmpTol(Beer,50))then begin ClickAllItemsNameWait('Drop','Eat',0); ClickAllItemsNameWait('Drop','Drink',0); end; if(DropAllButPick)then begin ClickAllItemsNameWait('Drop','Use',0); end else ClickAllItemsBmpTolWait('Drop',Ore,50,0); ProgressReport; FreeBitmap(Beer); end; end; procedure Mine; var SysTime:integer; begin SetRandomOreColor; if(FindObj('Mine',OreColor,5))then begin if(not(FindGas(x,y)))then begin Mouse(x,y,r,r,true); if(FlagPresent)then begin Flag; Wait(500+random(500)); end; MarkTime(SysTime); repeat if(not(FindColorSpiral(x,y,OreColor,210,130,300,220)))then Break; FindRandoms; Wait(500+Random(500)); until(not(GetColor(109,430)=0)and(not(GetColor(195,426)=0)))or (TimeFromMark(SysTime)>=MaxWait*1000) MarkTime(NotStuckMark); end; end; end; //====================================Form====================================\\ procedure ShowFormModal; begin frmDesign.ShowModal; end; procedure ShowMoreModal; begin frmMore.ShowModal; end; procedure SafeShowForm; var v: TVariantArray; begin setarraylength(V, 0); ThreadSafeCall('InitForm', v); setarraylength(V, 0); ThreadSafeCall('ShowFormModal', v); end; procedure SafeMore; var v: TVariantArray; begin setarraylength(V, 0); ThreadSafeCall('InitMore', v); end; procedure Start(sender: TObject); begin frmDesign.Caption:= frmDesign.Caption + '.'; frmDesign.ModalResult:= mrOk; StartScript:=true; end; procedure More(sender: TObject); var v: TVariantArray; begin SafeMore; setarraylength(V, 0); ThreadSafeCall('ShowMoreModal', v); end; procedure SaveOptions; begin case cboxRunDirection.Text of 'North': RunDirection:='N'; 'South': RunDirection:='S'; 'East' : RunDirection:='E'; 'West': RunDirection:='W'; end; Look4Gas:=cbLook4Gas.State; LogsOut:=cbLogsOut.State; Chats:=cbChats.State; Rotates:=cbRotates.State; DropAllButPick:=cbDropAllButPick.State; MaxWait:=strtoint(edtMaxWait.Text); SetRunTime:=strtoint(edtSetRunTime.Text); end; procedure Save(sender: TObject); begin frmMore.Caption:= frmMore.Caption + '.'; frmMore.ModalResult:= mrOk; SaveOptions; end; procedure Donate(sender: TObject); begin OpenWebPage('http://www.stupid3ooo.fizzstudios.com/donate/'); end; procedure InitForm; begin frmDesign := CreateForm; frmDesign.Left := 359; frmDesign.Top := 225; frmDesign.Width := 258; frmDesign.Height := 204; frmDesign.Caption := 'StupidPowerMiner'; frmDesign.Color := clWhite; frmDesign.Font.Color := clWindowText; frmDesign.Font.Height := -11; frmDesign.Font.Name := 'MS Sans Serif'; frmDesign.Font.Style := []; frmDesign.Visible := False; frmDesign.PixelsPerInch := 96; labPassword := TLabel.Create(frmDesign); labPassword.Parent := frmDesign; labPassword.Left := 96; labPassword.Top := 44; labPassword.Width := 46; labPassword.Height := 13; labPassword.Caption := 'Password'; labUsername := TLabel.Create(frmDesign); labUsername.Parent := frmDesign; labUsername.Left := 96; labUsername.Top := 6; labUsername.Width := 48; labUsername.Height := 13; labUsername.Caption := 'Username'; labOreType := TLabel.Create(frmDesign); labOreType.Parent := frmDesign; labOreType.Left := 96; labOreType.Top := 80; labOreType.Width := 44; labOreType.Height := 13; labOreType.Caption := 'Ore Type'; cbScarScape := TCheckBox.Create(frmMore); cbScarScape.Parent := frmDesign; cbScarScape.Left := 88; cbScarScape.Top := 151; cbScarScape.Width := 80; cbScarScape.Height := 17; cbScarScape.Hint := 'Check if you are using ScarScape.'; cbScarScape.ShowHint := True; cbScarScape.Caption := 'ScarScape?'; if(ScarScape)then begin cbScarScape.Checked := True; cbScarScape.State := cbChecked; end; edtUsername := TEdit.Create(frmDesign); edtUsername.Parent := frmDesign; edtUsername.Left := 64; edtUsername.Top := 20; edtUsername.Width := 121; edtUsername.Height := 21; edtUsername.TabOrder := 1; edtUsername.Text := Username; edtPassword := TEdit.Create(frmDesign); edtPassword.Parent := frmDesign; edtPassword.Left := 64; edtPassword.Top := 58; edtPassword.Width := 121; edtPassword.Height := 21; edtPassword.PasswordChar := '*'; edtPassword.Text := Password; bMoreOptions := TButton.Create(frmDesign); bMoreOptions.Parent := frmDesign; bMoreOptions.Left := 178; bMoreOptions.Top := 151; bMoreOptions.Width := 70; bMoreOptions.Height := 17; bMoreOptions.Caption := 'More Options'; bMoreOptions.OnClick:= @More; cboxOreType := TComboBox.Create(frmDesign); cboxOreType.Parent := frmDesign; cboxOreType.Left := 64; cboxOreType.Top := 94; cboxOreType.Width := 121; cboxOreType.Height := 21; cboxOreType.ItemHeight := 13; cboxOreType.Text := 'Copper'; cboxOreType.Items.Add('Copper'); cboxOreType.Items.Add('Tin'); cboxOreType.Items.Add('Iron'); cboxOreType.Items.Add('Coal'); bStart := TButton.Create(frmDesign); bStart.Parent := frmDesign; bStart.Left := 87; bStart.Top := 121; bStart.Width := 75; bStart.Height := 25; bStart.Caption := 'Start'; bStart.TabOrder := 5; bStart.OnClick:= @Start; bDonate := TButton.Create(frmDesign); bDonate.Parent := frmDesign; bDonate.Left := 1; bDonate.Top := 144; bDonate.Width := 75; bDonate.Height := 25; bDonate.Caption := 'Donate Plz'; bDonate.TabOrder := 13; bDonate.OnClick:= @Donate; end; procedure InitMore; begin frmMore := CreateForm; frmMore.Left := 261; frmMore.Top := 118; frmMore.Width := 294; frmMore.Height := 170; frmMore.Caption := 'More Options'; frmMore.Color := clWhite; frmMore.Font.Color := clWindowText; frmMore.Font.Height := -11; frmMore.Font.Name := 'MS Sans Serif'; frmMore.Font.Style := []; frmMore.Visible := False; frmMore.PixelsPerInch := 96; labRunDirection := TLabel.Create(frmMore); labRunDirection.Parent := frmMore; labRunDirection.Left := 75; labRunDirection.Top := 10; labRunDirection.Width := 184; labRunDirection.Height := 13; labRunDirection.Caption := 'Direction to run away in case of a fight.'; labMaxWait := TLabel.Create(frmMore); labMaxWait.Parent := frmMore; labMaxWait.Left := 5; labMaxWait.Top := 29; labMaxWait.Width := 196; labMaxWait.Height := 13; labMaxWait.Caption := 'Maximum time to Wait while mining a rock:'; labMaxWait2 := TLabel.Create(frmMore); labMaxWait2.Parent := frmMore; labMaxWait2.Left := 243; labMaxWait2.Top := 32; labMaxWait2.Width := 40; labMaxWait2.Height := 13; labMaxWait2.Caption := 'seconds'; labSetRunTime := TLabel.Create(frmMore); labSetRunTime.Parent := frmMore; labSetRunTime.Left := 5; labSetRunTime.Top := 47; labSetRunTime.Width := 66; labSetRunTime.Height := 13; labSetRunTime.Caption := 'Set run every:'; labSetRunTime2 := TLabel.Create(frmMore); labSetRunTime2.Parent := frmMore; labSetRunTime2.Left := 114; labSetRunTime2.Top := 50; labSetRunTime2.Width := 40; labSetRunTime2.Height := 13; labSetRunTime2.Caption := 'seconds'; cboxRunDirection := TComboBox.Create(frmMore); cboxRunDirection.Parent := frmMore; cboxRunDirection.Left := 5; cboxRunDirection.Top := 5; cboxRunDirection.Width := 65; cboxRunDirection.Height := 21; cboxRunDirection.DropDownCount := 4; cboxRunDirection.ItemHeight := 13; cboxRunDirection.TabOrder := 8; cboxRunDirection.Text := 'North'; case RunDirection of 'N': cboxRunDirection.Text:='North'; 'S': cboxRunDirection.Text:='South'; 'E' : cboxRunDirection.Text:='East'; 'W': cboxRunDirection.Text:='West'; end; cboxRunDirection.Items.Add('North'); cboxRunDirection.Items.Add('South'); cboxRunDirection.Items.Add('East'); cboxRunDirection.Items.Add('West'); cbLook4Gas := TCheckBox.Create(frmMore); cbLook4Gas.Parent := frmMore; cbLook4Gas.Left := 6; cbLook4Gas.Top := 100; cbLook4Gas.Width := 86; cbLook4Gas.Height := 13; cbLook4Gas.Hint := 'Uncheck if you have trouble with the script stopping for gas too often.'; cbLook4Gas.Caption := 'Look for gas?'; cbLook4Gas.ParentShowHint := False; cbLook4Gas.ShowHint := True; cbLook4Gas.TabOrder := 9; if(Look4Gas=true)then begin cbLook4Gas.State := cbChecked; cbLook4Gas.Checked := True; end; edtMaxWait := TEdit.Create(frmMore); edtMaxWait.Parent := frmMore; edtMaxWait.Left := 204; edtMaxWait.Top := 27; edtMaxWait.Width := 38; edtMaxWait.Height := 21; edtMaxWait.MaxLength := 3; edtMaxWait.TabOrder := 10; edtMaxWait.Text := inttostr(MaxWait); cbLogsOut := TCheckBox.Create(frmMore); cbLogsOut.Parent := frmMore; cbLogsOut.Left := 6; cbLogsOut.Top := 66; cbLogsOut.Width := 66; cbLogsOut.Height := 17; cbLogsOut.Hint := 'Check to log out about every 3 hours for anti-ban.'; cbLogsOut.Caption := 'Logs out?'; cbLogsOut.ParentShowHint := False; cbLogsOut.ShowHint := True; cbLogsOut.TabOrder := 11; if(LogsOut)then begin cbLogsOut.Checked := True; cbLogsOut.State := cbChecked; end; cbChats := TCheckBox.Create(frmMore); cbChats.Parent := frmMore; cbChats.Left := 6; cbChats.Top := 82; cbChats.Width := 54; cbChats.Height := 17; cbChats.Hint := 'Check to chat random prashes every so often for anti-ban.'; cbChats.Caption := 'Chats?'; cbChats.ParentShowHint := False; cbChats.ShowHint := True; if(Chats)then begin cbChats.Checked := True; cbChats.State := cbChecked; end; cbChats.TabOrder := 12; cbDropAllButPick := TCheckBox.Create(frmMore); cbDropAllButPick.Parent := frmMore; cbDropAllButPick.Left := 6; cbDropAllButPick.Top := 114; cbDropAllButPick.Width := 102; cbDropAllButPick.Height := 17; cbDropAllButPick.Hint := 'If you want the script to drop other items like gems and random ' + 'items it might pick up.'; cbDropAllButPick.ShowHint := True; cbDropAllButPick.Caption := 'Drop all but pick?'; cbDropAllButPick.TabOrder := 13; if(DropAllButPick)then begin cbDropAllButPick.Checked := True; cbDropAllButPick.State := cbChecked; end; edtSetRunTime := TEdit.Create(frmMore); edtSetRunTime.Parent := frmMore; edtSetRunTime.Left := 74; edtSetRunTime.Top := 45; edtSetRunTime.Width := 38; edtSetRunTime.Height := 21; edtSetRunTime.TabOrder := 14; edtSetRunTime.Text := inttostr(SetRunTime); cbRotates := TCheckBox.Create(frmMore); cbRotates.Parent := frmMore; cbRotates.Left := 78; cbRotates.Top := 66; cbRotates.Width := 97; cbRotates.Height := 17; cbRotates.Hint := 'If you want to randomly rotate the camera every so often for ant' + 'i-ban.'; cbRotates.ShowHint := True; cbRotates.Caption := 'Rotate?'; cbRotates.TabOrder := 16; if(Rotates)then begin cbRotates.Checked := True; cbRotates.State := cbChecked; end; bSave := TButton.Create(frmMore); bSave.Parent := frmMore; bSave.Left := 227; bSave.Top := 119; bSave.Width := 57; bSave.Height := 15; bSave.Caption := 'Save'; bSave.TabOrder := 15; bSave.OnClick:= @Save; end; procedure StartForm; begin if(UseForm)then begin SafeMore; SafeShowForm; if(StartScript=false)then TerminateScript; SaveOptions; case cboxOreType.Text of 'Copper': OreType:=1; 'Tin': OreType:=2; 'Iron': OreType:=3; 'Coal': OreType:=4; end; Username:= edtUsername.Text; Password:= edtPassword.Text; if(Username='')or(Password='')then begin Username:='No Username'; Password:='No Password'; end; ActivateClient; Wait(1000+random(500)); ChatsOff; end; end; //==================================Main Line=================================\\ begin SetupSSI; Setup; StartForm; GetOreType; SetColors; FindColors; if(FindPickHeadColor)then begin MarkTime(NotStuckMark); MarkTime(RunMark); FindRockDirection; writeln('Map pick color: '+inttostr(MapPickColor)+' Map ore color: ' +inttostr(MapOreColor)+' Rock direction: '+RockDirection); repeat TimedProcedures; DropIfNeeded; FindRandoms; Mine; Wait(100+random(50)); until(false) end; end.