Mr. Doctor
2010-02-26 00:24:28
7 Year(s)
Are you affilated in anyway with Jagex LTD?
NO
Were you Referred to SRL?
What is your general programming knowledge?
SCAR
Are you a member of any other communities?
Moparisthebest, TheHDD(Never works though), PSforums and some others.
Tell us about yourself…
From: Mr. Doctor
14 now. I'm a lot better at SCAR and my attitude changed a lot(Maybe). Want to be a game developer when I grow up.
Please show us one (or multiple) of your scripts.
program WillowDestroyer;
{.Include srl\srl\Misc\Smart.scar}
{.include SRL/SRL.Scar}
//////////////////////////////////////////////////////////////////////////////
//WILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJ/
//////////////////////////////////////////////////////////////////////////////
// READ BEFORE RUNNING READ BEFORE RUNNING READ BEFORE RUNNING /
//////////////////////////////////////////////////////////////////////////////
// Chops and banks willows at Draynor Village
//////////////////////////////////////////////////////////////////////////////
// The form is only for player one. if you plan on using multiple players,
// Fill in declare players (Start setup from line 41) 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;
/////////////////////////START OF SETUP////////////////////////////////////
/////////////////////////SMART-SETUP///////////////////////////////////////
const
SmartWorld = 152;
Members = False;
SignedClient = True;
HighDetail = False;
////////////////////////PLAYER-SETUP///////////////////////////////////////
procedure DeclarePlayers;
begin
HowManyPlayers:= 1; // Make the inactive players[#] green
NumberOfPlayers(HowManyPlayers); //So you dont get a runtime error :D
CurrentPlayer := 0;
//////////////////////Players[0] is already set by form////////////////////
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?
////////////////////////////Fill in if using multiple players//////////////
{
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;
///////////////////////////////END OF SETUP/////////////////////////////////
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(FindDTMRotated(BTM, x, y, MMX1, MMY1, MMX2, MMY2, -1, 2, 0.5, E )) then
if (PointInBox(Point(X, Y), IntToBox(MMCX, MMCY, MMCX + 3, MMCY + 3))) then Exit;
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;
FreeDTM(WIL);
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
Smart_Server := SmartWorld;
Smart_Members := Members;
Smart_Signed := SignedClient;
Smart_SuperDetail := HighDetail;
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.