Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program WillowDestroyer;
- {.include SRL/SRL.Scar}
- //////////////////////////////////////////////////////////////////////////////
- //WILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJ/
- //////////////////////////////////////////////////////////////////////////////
- // READ BEFORE RUNNING READ BEFORE RUNNING READ BEFORE RUNNING /
- //////////////////////////////////////////////////////////////////////////////
- // The form is only for player one. if you plan on using multiple players,
- // Fill in declare players (Line 32) with how many players you want to use
- //////////////////////////////////////////////////////////////////////////////
- // The script gets and uses your average time provided by the time you entered
- // in the parameters of the form. (More info in the form) Or use
- //////////////////////////////////////////////////////////////////////////////
- //Globals
- var
- Chopped, Loads, ll, LOL, Tot : integer;
- Exp : extended;
- frmDesign : TForm;
- AvgLbl : TLabel;
- Blbl : TLabel;
- PlUser : TEdit;
- PlPass : TEdit;
- StBut : TButton;
- AvgHelp : TMemo;
- AAvg0 : TEdit;
- AAvg1 : TEdit;
- AAvg2 : TEdit;
- AAvg3 : TEdit;
- AAvg4 : TEdit;
- DfRB : TRadioButton;
- PlNick : TEdit;
- LoadsTD : TEdit;
- procedure DeclarePlayers;
- begin
- HowManyPlayers:= 1; // Make the inactive players[#] green
- NumberOfPlayers(HowManyPlayers); //So you dont get a runtime error :D
- CurrentPlayer := 0;
- ///// fill all of below in correctly
- Players[0].Name := PlUser.Text; //Username
- Players[0].Pass := PlPass.Text; //Password
- Players[0].Nick := PlNick.Text; //Nickname 3-4 letters no first or cap
- Players[0].Active := true;
- Players[0].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?
- {
- Players[1].Name := '123'; //Username
- Players[1].Pass := '123'; //Password
- Players[1].Nick := '123'; //Nickname 3-4 letters no first or cap
- Players[1].Active := true;
- Players[1].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?
- {
- Players[2].Name := PlUser.Text; //Username
- Players[2].Pass := PlPass.Text; //Password
- Players[2].Nick := PlNick.Text; //Nickname 3-4 letters no first or cap
- Players[2].Active := true;
- Players[2].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?}
- end;
- procedure startitup(sender: TObject);
- begin
- frmDesign.ModalResult:= mrOk
- Disguise('Working...');
- end;
- procedure SetRandomObj;
- var RanObj, NoO, x, y, i, T :integer;
- begin
- NoO := BitmapFromString(23, 12, 'beNqNUQEOwiAQ40Fs2RJdnA4j0' +
- '/3/SbO7jnpiNJLLpZT2KCH116G5nZrpEPO5BZ7RjzvDPhc+DYUZjR' +
- 'lb08TdNbxcxI6JmAmNpuXSMTMbjz5bresKF8vjb5XNwsUhmMwtbwQ' +
- 'IIfgX6V3EyAANerClS2nklhiW6nZm9vrqFRqiLl6aXCbQ+OcQnirh' +
- 'jyT4qSX13ugxwP3SiYESXQwm0Eve6z+9BFDC9UhdxQBDLD1IYfHU8' +
- 'NSXvpgu5qQxW0JiJuc/MnnVQ1mQLdM2GTk3bLcwhq8qxls9AVo+Ey' +
- 'o=');
- RanObj := BitmapFromString(14, 14, 'beNp1kj0Lg2AMhN8fJ52ko6' +
- 'M4ttS1YJdSKE5O/cX6wMH1CPhyQ3K5fJi4DK/5ui7D7zuB571/TJf' +
- 'b2AEM3ASMo8lTwQIlpmD/NCH1YujoLmJ4FitkPhP1GFuuBnBoe49U' +
- 'zsRSJ5XALgVdM5WghLBL4lmRoszu2vlZYn6sD+Rhcg+p9HWssayQ2' +
- 'GL0A7T2l4mnnfcsV4sFyvI1xawH8tTePw==');
- GameTab(tab_Objectives);
- if(FindBitmapToleranceIn(NoO,x,y,mix1,miy1,mix2,miy2,20)) then
- begin
- Writeln('Setting Objective')
- If(FindBitmapToleranceIn(RanObj,x,y,mix1,miy1,mix2,miy2,20)) then
- begin
- Wait(200+Random(500));
- Mouse(x,y,3,3,true);
- MarkTime(T);
- repeat
- Wait(500+Random(250))
- Inc(i)
- until (GetColor(111, 35) = 3342540) or (TimeFromMark(T) = 5000);
- if not(GetColor(111, 35) = 3342540) then Exit;
- case Random(6) of
- 0..1: Mouse(94, 104, 60, 40, true);
- 2: Mouse(257, 104, 60, 40, true);
- 3: Mouse(422, 104, 60, 40, true);
- 4: Mouse(94, 238, 60, 40, true);
- 5: Mouse(257, 238, 60, 40, true);
- 6: Mouse(422, 238, 60, 40, true);
- end;
- FreeBitmap(NoO);
- FreeBitmap(RanObj);
- end else
- if(not(FindBitmapToleranceIn(NoO,x,y,mix1,miy1,mix2,miy2,20))) then
- begin
- srl_Warn( 'SetRandomObjective', 'Objective already set' ,1);
- Exit;
- FreeBitmap(NoO);
- FreeBitmap(RanObj);
- end;
- end;
- end;
- procedure RandomTabs;
- var I :integer;
- begin
- begin
- for I:= 0 to RandomRange(1,3) do
- begin
- case Random(16) of
- 0: GameTab(tab_Combat);
- 1: GameTab(tab_Stats);
- 2: GameTab(tab_Quest);
- 3: GameTab(tab_Diary);
- 4: GameTab(tab_Inv);
- 5: GameTab(tab_Equip);
- 6: GameTab(tab_Prayer);
- 7: GameTab(tab_Magic);
- 8: GameTab(tab_Friends);
- 9: GameTab(tab_Ignore);
- 10: GameTab(tab_Clan);
- 11: GameTab(tab_Options);
- 12: GameTab(tab_Emotes);
- 13: GameTab(tab_Music);
- 14: GameTab(tab_Notes);
- end;
- Wait(RandomRange(100,300));
- MMouse(RandomRange(MIX1, MIX2), RandomRange(MIY1, MIY2), 0, 0);
- Wait(RandomRange(100,300));
- end;
- Wait(RandomRange(200,400));
- end;
- end;
- procedure LogProg;
- begin
- Writeln('Terminating script because of no available players');
- TerminateScript;
- end;
- procedure LogCheck;
- begin
- if(not(Loggedin))then
- begin
- Writeln('Logged out somehow');
- if(AllPlayersInactive)then LogProg;
- Writeln('Going on to next player');
- NextPlayer(False);
- end;
- end;
- procedure AntiBan; forward;
- procedure LvlProof;
- begin
- SaveScreenshot('LvlProof' + IntToSTR(ll) + '.bmp');
- ll := ll +1;
- ClickToContinue;
- AntiBan;
- end;
- procedure DProg;
- begin
- Writeln('No other players to continue with, terminating');
- TerminateScript;
- end;
- procedure DeathCheck;
- begin
- if(FindDead)then
- begin
- Writeln('Died somehow');
- if(AllPlayersInactive)then DProg;
- NextPlayer(False);
- end;
- end;
- procedure AntiBan;
- begin
- LogCheck;
- DeathCheck;
- if(ClickContinue(false, true)) then LvlProof;
- case random(70) of
- 0:HoverSkill('mining',false);
- 1:SleepAndMoveMouse(1000+random(500));
- 2:randomrclick;
- 3:pickupmouse;
- 4:RandomMovement;
- 5:SetRandomObj;
- 6:RandomTabs;
- end;
- if(ClickContinue(false, true)) then LvlProof;
- wait(223+random(277))
- end;
- procedure DepoBox; forward;
- procedure WTB;
- var
- x, y, BTM, R : integer;
- SymbolAccuracy, E : extended;
- begin
- BTM := DTMFromString('78DA637CCAC4C0F0930105181B1B32FC87B2F' +
- 'F0301E377A09A2F103E3354FCEB5708CD08E583D5FC2042CD7FFC' +
- '6A003E5E1317');
- if (PointInBox(Point(X, Y), IntToBox(MMCX, MMCY, MMCX + 3, MMCY + 3))) then Exit;
- if(FindDTMRotated(BTM, x, y, MMX1, MMY1, MMX2, MMY2, -1, 2, 0.5, E )) then
- begin
- Mouse(x, y, 2, 2, true);
- Case Random(2) of
- 0: R := 180 - RandomRange(1,5);
- 1: R := 180 + RandomRange(1,5);
- end;
- MakeCompass(R);
- Flag;
- FreeDTM(BTM);
- DepoBox;
- end else
- if(not(FindDTMRotated(BTM, x, y, MMX1, MMY1, MMX2, MMY2, -1, 2, 0.5, E ))) then
- begin
- SymbolAccuracy := 0.6;
- if(FindSymbol( x, y, 'bank'))then
- begin
- SymbolAccuracy := 0.8;
- Mouse( x, y, 2, 2, true);
- Case Random(2) of
- 0: R := 180 - RandomRange(1,5);
- 1: R := 180 + RandomRange(1,5);
- end;
- MakeCompass(R);
- Flag;
- FreeDTM(BTM);
- DepoBox;
- end;
- end;
- end;
- procedure DestroyWill; forward;
- procedure WTF; //Walk To Fish, yea i know...
- var
- x, y, R : integer;
- SymbolAccuracy : extended;
- begin
- SymbolAccuracy := 0.6;
- if(FindSymbol( x, y, 'fish'))then
- begin
- SymbolAccuracy := 0.8;
- Mouse( x, y, 2, 2, true);
- case Random(2) of
- 0: R := 90 - RandomRange(1,5);
- 1: R := 90 + RandomRange(1,5);
- end;
- MakeCompass(R);
- Flag;
- DestroyWill;
- end;
- end;
- procedure DepoBox;
- var
- WIL, x, y : integer;
- begin
- WIL := DTMFromString('78DA637CC6C4C0D0CDC8800C4CF50518F8813' +
- '448F43F103082D434A3AA61606002933051C6F7407E270135EF80' +
- 'FC4904D4DC07F2A71350730DC8EFC1AF06007D2E0D52');
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.00, 0.06);
- if(FindColorSpiralTolerance(x, y, 6316132, MSX1, MSY1, MSX2, MSY2, 5))then
- SetColorSpeed2Modifiers(0.2, 0.2);
- ColorToleranceSpeed(1);
- begin
- MMouse(x, y, 1, 1);
- if(WaitUpText('ox', 100+ Random(50)))then
- begin
- Mouse(x, y, 1, 1, true);
- Wait(2357+Random(243));
- if(FindDTM(Wil, x, y, MSX1, MSY1, MSX2, MSY2))then
- begin
- Mouse(x, y, 2, 2, false)
- WaitOption('ll', 100+Random(50))
- CloseWindow;
- FreeDTM(WIL);
- Loads := Loads +1;
- WTF;
- end;
- end;
- end;
- end;
- function Experience( Amount : integer; Exp : extended): extended;
- begin
- Result := Amount*Exp;
- end;
- function AvgArray( Time : TIntegerArray): Integer;
- var
- Res, Tot, I : integer;
- begin
- for I := 0 to High(Time) do IncEx( Tot , Time[I]);
- Res := Tot div Length(Time);
- Result := Res;
- end;
- function IncArray(Arr : array of variant; TArr :TVariantArray): TVariantArray;
- begin
- Arr := Tarr;
- Result := Arr;
- end;
- procedure SetArrayAut;
- begin
- case random(2) of
- 0: LOL := 15000 + RandomRange(1,1000);
- 1: LOL := 15000 - RandomRange(1,1000);
- end;
- end;
- procedure SetArrayMan;
- var
- A, B, C, D, E : integer;
- AArray: array of integer;
- begin
- A := StrToInt(AAvg0.Text)*1000;
- B := StrToInt(AAvg1.Text)*1000;
- C := StrToInt(AAvg2.Text)*1000;
- D := StrToInt(AAvg3.Text)*1000;
- E := StrToInt(AAvg4.Text)*1000;
- SetArrayLength(AArray, 4);
- AArray := [A, B, C, D, E];
- Lol := AvgArray(AArray);
- end;
- procedure ChooseArraying;
- begin
- case DfRB.checked of
- True : SetArrayAut;
- False : SetArrayMan;
- end;
- end;
- procedure IsChopper;
- var
- OT : integer;
- begin
- while (not(InvFull)) and (TimeFromMark(Tot) > LOL) do
- begin
- MarkTime(OT);
- while (not(InvFull)) and (TimeFromMark(OT) > LOL) do
- begin
- AntiBan;
- Wait(RandomRange(1,350))
- end;
- MarkTime(Tot);
- ChooseArraying;
- end;
- end;
- procedure DestroyWill;
- var
- tpa : tpointarray;
- X, Y, I, J, K : integer;
- EExp : extended;
- begin
- X := MSCX;
- Y := MSCY;
- if(not(loggedin)) then exit;
- if(InvFull)then WTB;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.27, 0.98);
- FindColorsSpiralTolerance(X, Y, TPA, 4024921, msx1, msy1, msx2, msy2, 7);
- SetColorSpeed2Modifiers(0.2, 0.2);
- ColorToleranceSpeed(1);
- MakeCompass('E');
- if(GetArrayLength(TPA) > 0)then
- begin
- mmouse(tpa[0].x, tpa[0].y, 3, 3);
- if(waituptext('illow',300+random(200)))then
- begin
- I := InvCount;
- Getmousepos(X,Y);
- mouse(tpa[0].x, tpa[0].y, 3, 3, true);
- wait(100+random(25))
- Flag;
- Wait(923+Random(87))
- MarkTime(Tot);
- ChooseArraying;
- IsChopper;
- if(TimeFromMark(Tot) > LOL) then exit;
- J := InvCount;
- K := J-I;
- Chopped := Chopped +K;
- EExp := Experience( K, 67.5);
- Exp := Exp + EExp;
- if(InvFull)then WTB;
- end;
- end;
- end;
- procedure InItForm;
- begin
- frmDesign := CreateForm;
- frmDesign.Left := 263;
- frmDesign.Top := 137;
- frmDesign.Width := 348;
- frmDesign.Height := 252;
- frmDesign.Caption := 'Willow Destroyer by : Junkj';
- frmDesign.Color := clAqua;
- frmDesign.Font.Color := clWindowText;
- frmDesign.Font.Height := -11;
- frmDesign.Font.Name := 'MS Sans Serif';
- frmDesign.Font.Style := [];
- frmDesign.Visible := False;
- frmDesign.PixelsPerInch := 96;
- AvgLbl := TLabel.Create(frmDesign);
- AvgLbl.Parent := frmDesign;
- AvgLbl.Left := 176;
- AvgLbl.Top := 96;
- AvgLbl.Width := 153;
- AvgLbl.Height := 13;
- AvgLbl.Caption := 'Gets the avg time from each log.';
- Blbl := TLabel.Create(frmDesign);
- Blbl.Parent := frmDesign;
- Blbl.Left := 32;
- Blbl.Top := 144;
- Blbl.Width := 81;
- Blbl.Height := 13;
- Blbl.Caption := 'Current Build: 1.0';
- PlUser := TEdit.Create(frmDesign);
- PlUser.Parent := frmDesign;
- PlUser.Left := 24;
- PlUser.Top := 16;
- PlUser.Width := 129;
- PlUser.Height := 21;
- PlUser.TabOrder := 8;
- PlUser.Text := 'Username';
- PlPass := TEdit.Create(frmDesign);
- PlPass.Parent := frmDesign;
- PlPass.Left := 24;
- PlPass.Top := 48;
- PlPass.Width := 129;
- PlPass.Height := 21;
- PlPass.TabOrder := 9;
- PlPass.Text := 'Password';
- StBut := TButton.Create(frmDesign);
- StBut.Parent := frmDesign;
- StBut.Left := 24;
- StBut.Top := 168;
- StBut.Width := 129;
- StBut.Height := 40;
- StBut.Caption := 'Start';
- StBut.TabOrder := 10;
- StBut.OnClick := @Startitup;
- AvgHelp := TMemo.Create(frmDesign);
- AvgHelp.Parent := frmDesign;
- AvgHelp.Left := 160;
- AvgHelp.Top := 16;
- AvgHelp.Width := 177;
- AvgHelp.Height := 72;
- AvgHelp.Lines.Add('To fill this in, get the time it ');
- AvgHelp.Lines.Add('takes you to get a log five times. ');
- AvgHelp.Lines.Add('This helps the script adapt to');
- AvgHelp.Lines.Add('your chopping specs.');
- AvgHelp.TabOrder := 11;
- AAvg0 := TEdit.Create(frmDesign);
- AAvg0.Parent := frmDesign;
- AAvg0.Left := 176;
- AAvg0.Top := 120;
- AAvg0.Width := 41;
- AAvg0.Height := 21;
- AAvg0.TabOrder := 12;
- AAvg0.Text := '0';
- AAvg1 := TEdit.Create(frmDesign);
- AAvg1.Parent := frmDesign;
- AAvg1.Left := 232;
- AAvg1.Top := 120;
- AAvg1.Width := 40;
- AAvg1.Height := 21;
- AAvg1.TabOrder := 13;
- AAvg1.Text := '1';
- AAvg2 := TEdit.Create(frmDesign);
- AAvg2.Parent := frmDesign;
- AAvg2.Left := 288;
- AAvg2.Top := 120;
- AAvg2.Width := 40;
- AAvg2.Height := 21;
- AAvg2.TabOrder := 14;
- AAvg2.Text := '2';
- AAvg3 := TEdit.Create(frmDesign);
- AAvg3.Parent := frmDesign;
- AAvg3.Left := 200;
- AAvg3.Top := 152;
- AAvg3.Width := 41;
- AAvg3.Height := 21;
- AAvg3.TabOrder := 15;
- AAvg3.Text := '3';
- AAvg4 := TEdit.Create(frmDesign);
- AAvg4.Parent := frmDesign;
- AAvg4.Left := 264;
- AAvg4.Top := 152;
- AAvg4.Width := 41;
- AAvg4.Height := 21;
- AAvg4.TabOrder := 16;
- AAvg4.Text := '4';
- DfRB := TRadioButton.Create(frmDesign);
- DfRB.Parent := frmDesign;
- DfRB.Left := 176;
- DfRB.Top := 184;
- DfRB.Width := 153;
- DfRB.Height := 24;
- DfRB.Caption := 'Use default time? (~15 sec)';
- DfRB.TabOrder := 17;
- PlNick := TEdit.Create(frmDesign);
- PlNick.Parent := frmDesign;
- PlNick.Left := 24;
- PlNick.Top := 80;
- PlNick.Width := 128;
- PlNick.Height := 21;
- PlNick.TabOrder := 18;
- PlNick.Text := 'Nick (3-4 letters of name)';
- LoadsTD := TEdit.Create(frmDesign);
- LoadsTD.Parent := frmDesign;
- LoadsTD.Left := 24;
- LoadsTD.Top := 112;
- LoadsTD.Width := 41;
- LoadsTD.Height := 21;
- LoadsTD.TabOrder := 19;
- LoadsTD.Text := 'Loads';
- 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 GProgg;
- begin
- Writeln('Succesfully finished player['+ IntToStr(CurrentPlayer) + '] run.');
- if(AllPlayersInactive)then exit;
- Writeln('Moving on to next player');
- end;
- procedure ScriptTerminate;
- begin
- Writeln('==================Willow-Destroyer================');
- Writeln('|Chopped a total of ' + IntToStr(Chopped) + ' logs');
- Writeln('|Did ' + IntToStr(Loads) + ' loads');
- Writeln('|Ran for ' + (TimeRunning));
- Writeln('|Total amount for all players');
- Writeln('========================JUNKJ=====================');
- end;
- begin
- SetUpSRL;
- ClearDebug;
- SafeInitForm;
- SafeShowFormModal;
- Wait(1000+Random(500))
- DeclarePlayers;
- ActivateClient;
- GraphicsSet := True;
- repeat
- SetAngle(True);
- MakeCompass('E');
- repeat
- DestroyWill;
- LogCheck;
- DeathCheck;
- if(ClickContinue(false, true)) then LvlProof;
- until(Loads >= Players[CurrentPlayer].Integers[0])
- LogOut;
- GProgg;
- NextPlayer(false);
- until(AllPlayersInactive);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement