SCAR Code:
{
Put logs in first bank slot, bow strings in second
Have atleast one bow(u) in slot 3 (or just place holder if just alching/cutting)
have nats in slot 4 and in slot 5 have a finished bow(atleast one)
or the item you wish to alch
Have knife in inv slot 1 if you are cutting
have fun:)
author: Moggy
}
program StringAndAlch;
{.include SRL\SRL.scar}
var
NumCut,NumStrung,NumAlched: Integer;
NumToTake,NumToTakeS: Integer;
NumToCut,WhichType: String;
DoingNow: Integer;
Sleepy1,Sleepy2,Sleepy3: Integer;
HighAlch, LowAlch: Integer; //DTM
CanAlch: Boolean;
x3,y3: Integer;
frmDesign : TForm;
Label1 : TLabel;
Label2 : TLabel;
Label3,Label4,Label5,Label6,Label7,Label8,Label9,Label10 : TLabel;
Edit1 : TEdit;
Edit2 : TEdit;
Edit3,Edit4,Edit5,Edit6,Edit7 : TEdit;
Button1 : TButton;
Username,Password,Nick,pin : String;
ComboBox1,ComboBox2,ComboBox3 : TComboBox;
DoAlching,DoStringing,DoCutting : Boolean;
MaxCut,MaxString,MaxAlch : Integer;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := Username;
Players[0].Pass := Password;
Players[0].Nick := Nick;
Players[0].Active :=True;
end;
Procedure Setup;
begin
ActivateClient;
SetUpSRL;
DisguiseScar('RuneScape - the massive online adventure game by Jagex Ltd');
Username := Edit1.Text;
Password := Edit2.Text;
Nick := Edit3.Text;
MaxCut := StrToInt(Edit4.Text);
MaxString := StrToInt(Edit5.Text);
MaxAlch := StrToInt(Edit6.Text);
pin := Edit7.Text;
case ComboBox1.Text of
'Shorts' :
begin
DoCutting := True;
WhichType := 'Shorts';
end;
'SLongs' :
begin
DoCutting := True;
WhichType := 'Longs';
end;
'Stocks' :
begin
DoCutting := True;
WhichType := 'Stocks';
end;
'False' : DoCutting := False;
end;
case ComboBox2.Text of
'True' : DoStringing := True;
'False' : DoStringing := False;
end;
case ComboBox3.Text of
'True' : DoAlching := True;
'False' : DoAlching := False;
end;
DeclarePlayers;
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
end;
Procedure RandomExamine;
var
x2,y2: Integer;
begin
MouseBox(9,10,504,322,2);
Wait(700+Random(350));
ChooseOption(x2,y2, 'xamine');
Wait(100+Random(350));
end;
procedure Spin;
var
SpinArray : Array[0..3] of Char;
begin
SpinArray[0] := 'n';
SpinArray[1] := 'e';
SpinArray[2] := 's';
SpinArray[3] := 'w';
MakeCompass(SpinArray[Random(4)]);
MakeCompass('n');
end;
procedure SpinR;
begin
KeyDown(40);
Sleep(1000 +Random(421)+Random(123));
KeyDown(39);
Sleep(1000 +Random(421)+Random(123));
case Random(2) of
0:
Begin
KeyUp(39);
Wait(10+random(19));
KeyUp(40);
Wait(random(100));
end;
1:
Begin
KeyUp(40);
Wait(10+random(19));
KeyUp(39);
Wait(random(100));
end;
end;
end;
procedure SpinLU;
begin
KeyDown(37);
Sleep(1000 +Random(421)+Random(123));
KeyDown(38);
Sleep(1000 +Random(421)+Random(123));
case Random(2) of
0:
Begin
KeyUp(37);
Wait(10+random(19));
KeyUp(38);
Wait(random(100));
end;
1:
Begin
KeyUp(38);
Wait(10+random(19));
KeyUp(37);
Wait(random(100));
end;
end;
end;
procedure BoredTalk;
begin
case Random(9) of
0: TypeSend('Doooodeeedoooo');
1: TypeSend('why is this so boring *cries*');
2: TypeSend('BawChikaWahwaahh');
3: TypeSend('Come on you stunts let''s have some aphex acid!');
4: TypeSend('What is the world coming too?');
5: TypeSend('Le''mme alone, i dont wanna trade with you');
6: TypeSend('Shut up');
7: TypeSend('come on ailine');
8: TypeSend('Dance!');
end;
end;
function OpenBank6: Boolean; //modded from one in SRL by Stupid3ooo / Mutant Squirrle
var
c: Integer;
begin
MakeCompass('n');
if (FindObj(x, y, 'Use Bank', 539728, 10)) then
begin
Mouse(x, y, 1, 1, False);
if (ChooseOption(x, y, 'quickly')) then
begin
Flag;
repeat
Wait(100);
c := c + 1
until (BankScreen) or (c >= 50) or PinScreen;
end;
end;
if BankScreen then
Begin
Result := True;
end;
if PinScreen then
Begin
Result := True;
Writeln('Pin entered');
InPin(pin);
end;
end;
procedure DepositCuts;
begin
OpenBank6;
Wait(500+random(230));
MouseItem(2,false);
Wait(700+random(230));
ChooseOption(x,y,'Store All');
end;
procedure Boredom;
begin
case Random(9) of
0:
begin
case DoingNow of
1:
begin
SleepAndMoveMouse(7568 + random(1425));
HoverSkill('Fletching', false);
SleepAndMoveMouse(Sleepy3);
end;
2:
begin
SleepAndMoveMouse(7568+random(1425));
HoverSkill('Fletching', false);
Wait(1500+Random(150));
HoverSkill('Random', false);
SleepAndMoveMouse(Sleepy3);
end;
3:
begin
SleepAndMoveMouse(100+random(142));
HoverSkill('Magic', false);
Wait(1500+Random(150));
HoverSkill('Random', false);
SleepAndMoveMouse(Sleepy3);
end;
end;
end;
1:
begin
BoredTalk;
SleepAndMoveMouse(Sleepy1);
end;
2:
begin
Spin;
SleepAndMoveMouse(Sleepy2);
end;
3:
begin
SpinR;
SleepAndMoveMouse(Sleepy2);
end;
4:
begin
SpinLU;
Sleep(Sleepy2);
end;
5:
begin
PickUpMouse;
SleepAndMoveMouse(Sleepy1);
end;
6: SleepAndMoveMouse(Sleepy1);
7: SleepAndMoveMouse(Sleepy1);
8:
begin
RandomExamine;
SleepAndMoveMouse(Sleepy1);
end;
end;
end;
Procedure FindRandoms;
begin
FindNormalRandoms;
end;
procedure chop;
var
x,y: Integer;
begin
FixBank;
Withdraw(1,1,NumToTake);
CloseBank;
UseItem(1);
UseItem(2);
case WhichType of
'shorts':
begin
MouseBox(58,381,145,439,2);
end;
'longs':
begin
MouseBox(213,376,301,429,2);
end;
'stocks':
begin
MouseBox(379,383,448,428,2);
end;
end;
Wait(500+Random(160));
ChooseOption(x, y, 'Make X');
Wait(500+Random(160));
TypeSend(NumToCut);
Wait(100+Random(150));
FindRandoms;
Wait(100+Random(150));
Boredom;
Wait(100+Random(150));
FindRandoms;
Wait(100+Random(150));
DepositCuts;
Wait(15+Random(20));
CloseBank;
end;
procedure LoadDTMs; //made by WhoCares357
begin
HighAlch := DTMFromString('78DA63E4666060E0674001BFBEF130FC02D28' +
'C40FC1F081885800C2E0634C08844026990194C04D4B001091E02' +
'6A9830DD83A106E46661026A448184007E3500757D07B4');
LowAlch := DTMFromString('78DA63E46760601064400106070D187E01694' +
'620FE0F048C0240063B031A60442281B43090E027A04608488810' +
'50C305242408A8610612A204D4B063FA0B430D0761BB00CAA8072' +
'0');
end;
Procedure Cutting;
begin
DoingNow := 1;
Writeln('Now begining to cut ' +IntToStr(MaxCut)+' '+WhichType);
NumCut := 0;
MouseBox(570,215,593,236,0);
Wait(1000+random(500));
repeat
if (LoggedIn) and IsUpTextMulti('Kni','nif','ife') then
if (MaxCut-NumCut)> 27 then
begin
Sleepy1 := 48000+random(8000);
Sleepy2 := 45000+random(3000);
Sleepy3 := 40000+random(3000);
NumToTake := 27;
NumToCut := '27';
Wait(1000+Random(500));
OpenBank6;
Wait(1000+Random(500));
Chop;
NumCut := NumCut+27;
end
else
begin
NumToTake := MaxCut-NumCut;
NumToCut := IntToStr(NumToTake);
Sleepy1 := 2000*NumToTake+random(4000);
Sleepy2 := 2000*NumToTake+random(2000);
Sleepy3 := 2000*NumToTake+Random(2000);
Wait(1000+Random(500));
OpenBank6;
Wait(1000+Random(500));
Chop;
NumCut := NumCut+(MaxCut-NumCut);
end
else LogOut;
Until(NumCut >= MaxCut) or not(LoggedIn) ;
ClearDebug;
Writeln('I have cut ' +IntToStr(NumCut)+ ' '+WhichType);
end;
Procedure StringThem;
begin
Wait(10+random(25));
OpenBank6;
Wait(100+random(250));
FixBank;
Wait(100+random(250));
Withdraw(2,1,1);
Wait(600+random(250));
Withdraw(3,1,1);
Wait(600+random(250));
Withdraw(2,1,NumToTakeS-1);
Wait(500+random(250));
Withdraw(3,1,NumTotakeS-1);
Wait(500+random(250));
CloseBank;
Wait(10+random(25));
UseItem(1);
Wait(10+random(25));
UseItem(2);
Wait(10+random(25));
MouseBox(213,376,301,429,2);
Wait(100+random(250));
ChooseOption(x,y,'Make All');
Wait(100+random(250));
FindRandoms;
Wait(100+random(250));
Boredom;
Wait(100+random(250));
FindRandoms;
Wait(100+random(250));
OpenBank6;
Wait(1000+random(250));
DepositAll;
Wait(1000+random(250));
CloseBank;
Wait(300+random(250));
end;
Procedure Stringing;
Begin
DoingNow := 2;
Writeln('Now begining to string ' +IntToStr(MaxString)+' '+WhichType);
Wait(1000+random(500));
if not InvEmpty then
begin
OpenBank6;
Wait(10+random(25));
FixBank;
Wait(100+random(250));
DepositAll;
Wait(10+random(25));
CloseBank;
end;
repeat
if (LoggedIn) then
if (MaxString-NumStrung)> 14 then
begin
Sleepy1 := 18000+Random(3500);
Sleepy2 := 16000+Random(3500);
Sleepy3 := 10000+Random(2500);
NumToTakeS := 14;
Wait(1000+Random(500));
StringThem;
NumStrung := NumStrung+14;
end
else
if (MaxString-NumStrung)< 14 then
begin
Sleepy1 := ((MaxString-NumStrung)*1500)+Random(3500);
Sleepy2 := ((MaxString-NumStrung)*1500)+Random(3500);
Sleepy3 := ((MaxString-NumStrung)*1300)+Random(500);
NumToTakeS := MaxString-NumStrung;
Wait(1000+Random(500));
StringThem;
NumStrung := NumStrung+(MaxString-NumStrung);
end
else TerminateScript;
Until(NumStrung = MaxString) or not(LoggedIn) ;
end;
Procedure Alching;
Begin
Sleepy1 := 3000+random(500);
Sleepy2 := 2500+random(500);
Sleepy3 := 2000+random(500);
LoadDTMs;
NumAlched := 0;
DoingNow := 3;
Writeln('Now begining to Alch ' +IntToStr(MaxAlch)+' '+WhichType);
OpenBank6;
Wait(1000+random(500));
DepositAll;
Wait(1000+random(500));
CloseBank;
if InvEmpty then
begin
Wait(1000+random(500));
OpenBank6;
FixBank;
Wait(1000+random(500));
MouseBox(371,305,448,318,1);
Withdraw(4,1,MaxAlch);
Wait(1000+random(500));
Withdraw(5,1,MaxAlch);
Wait(1000+random(500));
CloseBank;
Wait(400+random(150));
if GetSkillLevel('Magic')<21 then
begin
CanAlch := False;
end
else
begin
CanAlch := True;
end;
if CanAlch = True then
GameTab(7);
repeat
begin
GameTab(7);
if FindDTM(HighAlch, x3, y3, 558, 210, 738, 446) then
begin
Mouse(x3,y3,2,2,True);
Wait(1000+random(100));
MouseBox(616,217,634,236,1);
Wait(2500+random(100));
NumAlched := NumAlched+1;
end
else if FindDTM(LowAlch, x3, y3, 710, 249, 733, 276) then
begin
Mouse(x3,y3,2,2,True);
Wait(1000+random(100));
MouseBox(616,217,634,236,1);
Wait(2500+random(100));
NumAlched := NumAlched+1;
end
else
begin
writeln('Logging out');
LogOut;
end;
FindRandoms;
end;
until not (LoggedIn) or (NumAlched >= MaxAlch);
end;
end;
procedure Setupmain(sender: TObject);
begin
Setup;
case DoCutting of
True:
begin
case DoStringing of
True:
begin
case DoAlching of
True:
begin
Cutting;
Stringing;
Alching;
end;
False:
begin
Cutting;
Stringing;
end;
end;
end;
False:
begin
case DoAlching of
True:
begin
Cutting;
Alching;
end;
True:
begin
Cutting;
end;
end;
end;
end;
end;
False:
begin
case DoStringing of
True:
begin
case DoAlching of
True:
begin
Stringing;
Alching;
end;
False:
begin
Stringing;
end;
end;
end;
False:
begin
case DoAlching of
True:
begin
Alching;
end;
False:
begin
TerminateScript;
end;
end;
end;
end;
end;
end;
end;
procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 114;
frmDesign.Width := 300;
frmDesign.Height := 350;
frmDesign.Caption := 'frmDesign';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
Label1 := TLabel.Create(frmDesign);
Label1.Parent := frmDesign;
Label1.Left := 22;
Label1.Top := 24;
Label1.Width := 46;
Label1.Height := 22;
Label1.Caption := 'UserName';
Label2 := TLabel.Create(frmDesign);
Label2.Parent := frmDesign;
Label2.Left := 22;
Label2.Top := 45;
Label2.Width := 46;
Label2.Height := 13;
Label2.Caption := 'Password';
Label3 := TLabel.Create(frmDesign);
Label3.Parent := frmDesign;
Label3.Left := 22;
Label3.Top := 66;
Label3.Width := 46;
Label3.Height := 13;
Label3.Caption := 'NickName';
Label4 := TLabel.Create(frmDesign);
Label4.Parent := frmDesign;
Label4.Left := 22;
Label4.Top := 196;
Label4.Width := 46;
Label4.Height := 13;
Label4.Caption := 'How many to cut?';
Label5 := TLabel.Create(frmDesign);
Label5.Parent := frmDesign;
Label5.Left := 22;
Label5.Top := 217;
Label5.Width := 46;
Label5.Height := 13;
Label5.Caption := 'How many to string?';
Label6 := TLabel.Create(frmDesign);
Label6.Parent := frmDesign;
Label6.Left := 22;
Label6.Top := 238;
Label6.Width := 46;
Label6.Height := 13;
Label6.Caption := 'How many to alch?';
Label7 := TLabel.Create(frmDesign);
Label7.Parent := frmDesign;
Label7.Left := 22;
Label7.Top := 119;
Label7.Width := 46;
Label7.Height := 13;
Label7.Caption := 'Cut Bows?';
Label8 := TLabel.Create(frmDesign);
Label8.Parent := frmDesign;
Label8.Left := 22;
Label8.Top := 142;
Label8.Width := 46;
Label8.Height := 13;
Label8.Caption := 'String Bows?';
Label9 := TLabel.Create(frmDesign);
Label9.Parent := frmDesign;
Label9.Left := 22;
Label9.Top := 163;
Label9.Width := 46;
Label9.Height := 13;
Label9.Caption := 'Alch?';
Label10 := TLabel.Create(frmDesign);
Label10.Parent := frmDesign;
Label10.Left := 22;
Label10.Top := 87;
Label10.Width := 46;
Label10.Height := 13;
Label10.Caption := 'Pin';
Edit1 := TEdit.Create(frmDesign);
Edit1.Parent := frmDesign;
Edit1.Left := 120;
Edit1.Top := 20;
Edit1.Width := 121;
Edit1.Height := 21;
Edit1.TabOrder := 8;
Edit1.Text := 'Username';
Edit1.Text := LoadSetting('UserPassSaver', 'Username');
Edit2 := TEdit.Create(frmDesign);
Edit2.Parent := frmDesign;
Edit2.Left := 120;
Edit2.Top := 41;
Edit2.Width := 121;
Edit2.Height := 21;
Edit2.TabOrder := 9;
Edit2.Text := 'Password';
Edit2.PasswordChar:= '*';
Edit2.Text := LoadSetting('UserPassSaver', 'Password');
Edit3 := TEdit.Create(frmDesign);
Edit3.Parent := frmDesign;
Edit3.Left := 120;
Edit3.Top := 62;
Edit3.Width := 121;
Edit3.Height := 21;
Edit3.TabOrder := 9;
Edit3.Text := 'Nickname';
Edit3.Text := LoadSetting('UserPassSaver', 'Nick');
Edit4 := TEdit.Create(frmDesign);
Edit4.Parent := frmDesign;
Edit4.Left := 120;
Edit4.Top := 194;
Edit4.Width := 121;
Edit4.Height := 21;
Edit4.TabOrder := 9;
Edit5 := TEdit.Create(frmDesign);
Edit5.Parent := frmDesign;
Edit5.Left := 120;
Edit5.Top := 215;
Edit5.Width := 121;
Edit5.Height := 21;
Edit5.TabOrder := 9;
Edit6 := TEdit.Create(frmDesign);
Edit6.Parent := frmDesign;
Edit6.Left := 120;
Edit6.Top := 236;
Edit6.Width := 121;
Edit6.Height := 21;
Edit6.TabOrder := 9;
Edit7 := TEdit.Create(frmDesign);
Edit7.Parent := frmDesign;
Edit7.Left := 120;
Edit7.Top := 83;
Edit7.Width := 121;
Edit7.Height := 21;
Edit7.TabOrder := 9;
Edit7.Text := '0000';
ComboBox1 := TComboBox.Create(frmDesign);
ComboBox1.Parent := frmDesign;
ComboBox1.Left := 120;
ComboBox1.Top := 116;
ComboBox1.Width := 121;
ComboBox1.Height := 21;
ComboBox1.ItemHeight := 13;
ComboBox1.TabOrder := 11;
ComboBox1.Text := 'Cut Logs?';
ComboBox1.Items.Add('Shorts');
ComboBox1.Items.Add('Longs');
ComboBox1.Items.Add('Stocks');
ComboBox1.Items.Add('False');
ComboBox2 := TComboBox.Create(frmDesign);
ComboBox2.Parent := frmDesign;
ComboBox2.Left := 120;
ComboBox2.Top := 138;
ComboBox2.Width := 121;
ComboBox2.Height := 21;
ComboBox2.ItemHeight := 13;
ComboBox2.TabOrder := 11;
ComboBox2.Text := 'String Bows?';
ComboBox2.Items.Add('True');
ComboBox2.Items.Add('False');
ComboBox3 := TComboBox.Create(frmDesign);
ComboBox3.Parent := frmDesign;
ComboBox3.Left := 120;
ComboBox3.Top := 160;
ComboBox3.Width := 121;
ComboBox3.Height := 21;
ComboBox3.ItemHeight := 13;
ComboBox3.TabOrder := 11;
ComboBox3.Text := 'Alch?';
ComboBox3.Items.Add('True');
ComboBox3.Items.Add('False');
Button1 := TButton.Create(frmDesign);
Button1.Parent := frmDesign;
Button1.OnClick := @Setupmain;
Button1.Left := 94;
Button1.Top := 261;
Button1.Width := 75;
Button1.Height := 25;
Button1.Caption := 'Start!!';
Button1.TabOrder := 10;
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;
begin
SafeInitForm;
SafeShowFormModal;
FreeForm(frmDesign);
LogOut;
Writeln('I have cut ' +IntToStr(NumCut)+ ' '+WhichType+',');
Writeln('I have strung' +IntToStr(NumStrung)+ ' '+WhichType+);
Writeln('and I have Alched' +IntToStr(NumAlched)+ ' items.');
end.