SCAR Code:
{ _ _ _
| \ _____
| \ | |
| \ | | o
| | | | /
| | |_____| S
| / | \
| / | \
|_ _ _/ | \
~ SCRIPT!
}
// Any longbow maker by DR v1.0
// By: Dude_Richard
// Version: 1.0
// Last update: 13/02/2007
// Category: Fletching (cutter)
// Instrutions
// 1.) Drag the crosshair that is in the toolbar of SCAR onto
// the Runescape sclient you are using.
// 2.) Fill out your stats information if you would like on
// lines 79 and 80.
// 3.) Place your player in lummy bank (might work with other,
// but I'm not sure as it runs on colors)with a knife AND
// a full invent of any logs.
// 4.) Click run in the toolbar of SCAR
// 5.) Fill out the form that should apear
// 6.) You should now be autoing completely fine
// Notes
// Enter your SRL stats ID (this is the up to 4 digit number you got,
// NOT the username you use.
// If you don't know SRL stats its basically a way for people to show
// off their scripts and how much they have autoed, to register simply
// go to [url]http://stats.srl-forums.com[/url] and it tells you what you have
// to do there. If you like this script, I would apreciate if you were
// to use this feature.
// Version History
// V1.0: This version, nothing new added as it is still the
// first version!
// Credits to NaumanAkhlaq for the banking procedure and editing
// to make it run flawlessly
// Please post your proggies and errors on the thread which has
// this script
Program LongbowFletcher;
{.include srl/srl.scar}
{.include srl/srl/misc/Users.scar}
{.include SRL/SRL/skill/Fighting.scar}
var
Loads, Tries, x, y, AntiBanned, Responded, runTime: integer;
frmDesign : TForm;
GroupBox1 : TGroupBox;
CheckBox1 : TCheckBox;
Edit1 : TEdit;
Edit2 : TEdit;
Edit3 : TEdit;
Edit4 : TEdit;
Edit5 : TEdit;
Button1 : TButton;
Edit6 : TEdit;
Loads1 : integer;
Const
StatsID = '_'; //See notes
StatsPass = '_';//as above ^^
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
procedure StartClick(sender: TObject);
begin
frmDesign.ModalResult:= mrOk;
Loads1:= StrToInt(Edit5.text)
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure Form;
Begin
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 114;
frmDesign.Width := 300;
frmDesign.Height := 340;
frmDesign.Caption := 'Any Longbow Maker';
frmDesign.Color := clMaroon;
frmDesign.Font.Color := clRed;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'Comic Sans MS';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
GroupBox1 := TGroupBox.Create(frmDesign);
GroupBox1.Parent := frmDesign;
GroupBox1.Left := 16;
GroupBox1.Top := 32;
GroupBox1.Width := 249;
GroupBox1.Height := 241;
GroupBox1.Caption := 'DR'#39's any longbow maker setup';
GroupBox1.Font.Color := clMaroon;
GroupBox1.Font.Height := -11;
GroupBox1.Font.Name := 'Comic Sans MS';
GroupBox1.Font.Style := [];
GroupBox1.ParentFont := False;
GroupBox1.TabOrder := 0;
CheckBox1 := TCheckBox.Create(GroupBox1);
CheckBox1.Parent := GroupBox1;
CheckBox1.Left := 120;
CheckBox1.Top := 24;
CheckBox1.Width := 121;
CheckBox1.Height := 41;
CheckBox1.Caption := 'Use every 50 sleep?';
CheckBox1.TabOrder := 0;
Edit1 := TEdit.Create(GroupBox1);
Edit1.Parent := GroupBox1;
Edit1.Left := 144;
Edit1.Top := 64;
Edit1.Width := 73;
Edit1.Height := 23;
Edit1.TabOrder := 1;
Edit1.Text := 'Password';
Edit2 := TEdit.Create(GroupBox1);
Edit2.Parent := GroupBox1;
Edit2.Left := 24;
Edit2.Top := 64;
Edit2.Width := 73;
Edit2.Height := 23;
Edit2.TabOrder := 2;
Edit2.Text := 'Username';
Edit3 := TEdit.Create(GroupBox1);
Edit3.Parent := GroupBox1;
Edit3.Left := 24;
Edit3.Top := 104;
Edit3.Width := 73;
Edit3.Height := 23;
Edit3.TabOrder := 3;
Edit3.Text := 'PIN';
Edit4 := TEdit.Create(GroupBox1);
Edit4.Parent := GroupBox1;
Edit4.Left := 144;
Edit4.Top := 104;
Edit4.Width := 73;
Edit4.Height := 23;
Edit4.TabOrder := 4;
Edit4.Text := 'Nickname';
Edit5 := TEdit.Create(GroupBox1);
Edit5.Parent := GroupBox1;
Edit5.Left := 24;
Edit5.Top := 144;
Edit5.Width := 73;
Edit5.Height := 23;
Edit5.TabOrder := 5;
Edit5.Text := 'Loads';
Button1 := TButton.Create(GroupBox1);
Button1.Parent := GroupBox1;
Button1.Left := 48;
Button1.Top := 184;
Button1.Width := 145;
Button1.Height := 41;
Button1.Caption := 'Start Any Longbow Maker';
Button1.TabOrder := 6;
Button1.OnClick := @StartClick
Edit6 := TEdit.Create(GroupBox1);
Edit6.Parent := GroupBox1;
Edit6.Left := 144;
Edit6.Top := 144;
Edit6.Width := 73;
Edit6.Height := 23;
Edit6.TabOrder := 7;
Edit6.Text := 'Log type';
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('Form', v);
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Var
Knife, Log: integer;
Procedure LoadDTMs;
Begin
Knife := DTMFromString('78DA6354626060906000036608C550535CCC2' +
'007A41981F83F1030AA001952A86AD62F5E045703028C208E3CAA' +
'9A504B2E54350A404201554DB6072FAA1A6920A18AAAA6A7A9115' +
'50DC82DEAA86A4A737351D5A861FA0B248BAC06000BE50E33');
Log := DTMFromString('78DA639CC9C4C0F088010514FAF2318832323' +
'00011C37F2060EC06AA79CC800618914820DD0154F386809A5940' +
'35EF08A8590254F38A809AC940351FF0AB0100D0AD0DF2');
End;
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := Edit2.text;
Players[0].Pass := Edit1.text;
Players[0].Nick := Edit4.text;
Players[0].Integers[0] := Loads1;
Players[0].Strings[0] := Edit3.text;
Players[0].Active := True;
Players[0].Strings[1] := Edit6.text;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure Fletch;
Begin
If not (LoggedIn) then
Exit;
If (FindDTM(Knife,x,y,MIX1,MIY1,MIX2,MIY2))then
Begin
Disguise('Beginning to fletch');
Mouse(x, y, 1, 1, true);
WriteLN('Clicked Knife');
WriteLN('Clicking log');
end;
Wait (500 + random(300));
If not (FindDTM(Knife,x,y,MIX1,MIY1,MIX2,MIY2))then
Begin
WriteLN('Couldnt find knife');
WriteLN('Make sure one was in your inventory');
WriteLN('Logging out and terminating script');
Logout;
Exit;
TerminateScript;
end;
If (FindDTM(Log,x,y,MIX1,MIY1,MIX2,MIY2))then
Begin
Mouse(x, y, 2, 2, true);
WriteLN('Clicked Log');
WriteLN('Waiting to make longbow');
Wait(500 + random(300));
end;
If not (FindDTM(Log,x,y,MIX1,MIY1,MIX2,MIY2))then
Begin
WriteLN('Couldnt find any logs');
WriteLN('Must have had an error banking');
WriteLN('Logging out and terminating script');
Logout;
Exit;
TerminateScript;
end;
Wait(500 + random(300));
Begin
MouseBox(290, 383, 351, 449, 2);
ChooseOption('X');
Wait(1000);
TypeSend('27');
Disguise('Making longs(u)');
end;
Wait(1000 + random(3000));
ReportVars[0] := ReportVars[0] + 1;
ReportVars[1] := ReportVars[1] + 27;
SendSRLReport;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure GetThingFromBank;
Var
Resultx : Boolean;
Begin
If not LoggedIn then
Exit;
If InvFull Then
Begin
GameTab(4);
Begin
Repeat
If FindObjCustom(x,y,['Use','Bank','Booth'],[5405328,5339277,804444],5) or
FindObjCustom(x,y,['Use','Bank','Booth'],[6518912,2838878,2579566],5) then
Mouse(x,y,0,0,False);
ChooseOption('uickly');
Wait(1000+Random(2000));
Tries:=Tries+1;
If PinScreen Then
InPin(Players[CurrentPlayer].Strings[1]);
FixBank;
ResultX := BankScreen;
Until(BankScreen) or (Tries >= 6);
If BankScreen then
Begin
MouseBox(610, 220, 634, 245, 2);
Chooseoption('All');
Disguise('Banking');
MMouse(95-Random(5), 77+Random(5),2,2);
If IsUpText('ogs') then
Begin
Mouse(95-Random(5), 77+Random(5),2,2,False);
ChooseOption('All');
wait(1000+Random(200));
CloseBank;
end;
end;
end;
Loads := Loads + 1;
end;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure LoginSleepLogout;
Begin
If (CheckBox1.checked) then
Begin
If(runTime = 0) Then
MarkTime(runTime)
Else If(TimeFromMark(runTime)>=(3000000)) Then
Begin
Disguise('Sleeping...zzz...');
Logout;
Wait(300000 + random (60000));
LoginPlayer;
MarkTime(runTime);
End;
End;
End;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure AntiBan;
Begin
If not LoggedIn then
Exit;
Case random(16) of
1: Begin
KeyDown(VK_Down);
Wait(random(1000));
KeyUp(VK_Down);
KeyDown(VK_Up);
Wait(500 + random(1000));
KeyUp(VK_Up);
MakeCompass('n');
GameTab(4);
Wait(48000+random(3000));
end;
2: Begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
MakeCompass('n');
GameTab(4);
Wait(48000+random(3000));
end;
3: Begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
MakeCompass('n');
GameTab(4);
Wait(48000+random(3000));
end;
4: Begin
KeyDown(VK_Up);
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Up);
Wait(random(800));
KeyUp(VK_Left);
MakeCompass('n');
GameTab(4);
Wait(48000+random(3000));
end;
5: Begin
HoverSkill('random', False);
GameTab(4);
Wait(48000+random(3000));
end;
6: Begin
HoverSkill('Fletching', False);
GameTab(4);
Wait(48000+random(3000));
end;
7: Begin
PickupMouse;
Wait(48000+random(3000));
end;
8: Begin
BoredHuman;
Wait(48000+random(3000));
end;
9,10,11,12: Begin
MMouse(116-Random(100), 285-Random(256),60,60);
end;
13,14,15,16: Begin
MMouse(MSX1,MSY1,1,1);
end;
end;
AntiBanned := AntiBanned + 1;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure DetailsCheck;
Begin
If ((Players[CurrentPlayer].Name) = 'Username') then
Begin
ClearDebug;
WriteLn('You need to enter a username to run this');
Wait(1000);
WriteLn('Please restart script and enter the correct details');
Wait(1000);
TerminateScript;
end;
If ((Players[CurrentPlayer].Pass) = 'Password') then
Begin
ClearDebug;
WriteLn('You need to enter a password to run this');
Wait(1000);
WriteLn('Please restart script and enter the correct details');
Wait(1000);
TerminateScript;
end;
If ((Players[CurrentPlayer].Nick) = 'Nickname') then
Begin
ClearDebug;
WriteLn('You need to enter a nickname to run this');
Wait(1000);
WriteLn('Please restart script and enter the correct details');
Wait(1000);
TerminateScript;
end;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure StatsCheck;
Begin
If ((StatsID) = '_') then
Begin
ClearDebug;
WriteLn('You haven'#39't entered a stats ID');
Wait(1000);
WriteLn('Script will continue but you can'#39't use stats');
Wait(1500);
Exit;
end;
If ((StatsPass) = '_') then
Begin
ClearDebug;
WriteLn('You haven'#39't entered a stats pass');
WriteLn('Script will continue but you can'#39't use stats');
end;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Function InChatLine(myString: string): Boolean;
Begin
Result := ( pos(myString, TheLine) <> 0 );
End;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Function ChatBack: Boolean;
Begin
SaveToChatLog;
if ( OldLine = TheLine ) or ( pos(Players[CurrentPlayer].Nick, TheName) <> 0 ) then
Exit;
if InChatLine(Players[CurrentPlayer].Nick) then
Begin
Wait(1000 + Random(500));
case Random(6) of
0: TypeSend('hello');
1: TypeSend('hi');
2: TypeSend('hey');
3: TypeSend('hey you');
4: TypeSend('yo');
5: TypeSend('sup?');
End;
Result := True;
Exit;
End;
if InChatLine('hi ') or InChatLine('ello') or InChatLine('sup') or
InChatLine('whats up') then
Begin
Wait(1000 + Random(500));
case Random(4) of
0: TypeSend('hello');
1: TypeSend('hey');
2: TypeSend('hey there');
3: TypeSend('hi');
End;
Result := True;
Exit;
End;
if InChatLine('lol') or InChatLine('hehe') or InChatLine('hihi') or
InChatLine('haha') then
Begin
Wait(1000 + Random(500));
case Random(4) of
0: TypeSend('...');
1: TypeSend('lool');
2: TypeSend('rofl');
End;
Result := True;
Exit;
End;
Result := True;
Exit;
Responded := Responded + 1;
End;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
procedure LevelRespond;
var
Chats : TStringArray;
I, L: Integer;
Begin
If not LoggedIn then
Exit;
Chats := ['tching l', 'hing lv', 'hing le', 'tchin lvl', 'etch lv'];
for I := 0 to 4 do
begin
if InChat(Chats[i]) then
begin
inc(Responded);
L := GetSkillInfo('fletching', False);
case Random(11) of
0: TypeSend(IntToStr(L)+', close to'+IntToStr(L+1));
1: TypeSend('Me '+ IntToStr(L));
2: TypeSend(IntToStr(L) + ' over here');
3: Begin
TypeSend('Lemme check...');
Wait(500 + random(3000));
TypeSend('...' + IntToStr(L));
end;
4: TypeSend('Im ' + IntToStr(L));
5: TypeSend('only ' + IntToStr(L));
6: TypeSend('Pfft, only ' + IntToStr(L));
7: begin
TypeSend('onky ' + IntToStr(L));
TypeSend('*only');
end;
8: TypeSend('My Fletching is only ' + IntToStr(L) + ' ...lol');
9: TypeSend('Not very good...only '+IntToStr(L));
10: TypeSend(IntToStr(L) + ', going for 99')
end;
wait(1000 + Random(500));
Exit;
end;
Responded := Responded + 1;
end;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure AntiRandoms;
Begin
FindNormalRandoms;
ChatBack;
If (FindFight) then
Begin
MakeCompass('N');
RunAway('N', true, 1, 10000);
RunAway('S', true, 1, 10000);
end;
SRLRandomsReport;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure FreeDTMs;
Begin
If (Loads >= Players[CurrentPlayer].Integers[0]) then
Begin
FreeDTM(log);
FreeDTM(knife);
end;
end;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure Siggy;
Begin
ClearDebug;
WriteLN('Dude_Richard.......')
Wait(1000)
WriteLN('Presents.......')
Wait(1200)
WriteLN('The One the Only.......')
Wait(1300)
WriteLN('Any Longbow Maker v1.0!')
Wait(1500)
End;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Procedure Proggy;
Begin
ClearDebug
WriteLn('<<<<<<<<<<<<Any Longbow Fletcher>>>>>>>>>>>>');
WriteLn('Fletched '+Players[CurrentPlayer].Strings[1] +' for ' + TimeRunning + ' ');
WriteLn('Made ' + IntToStr(Loads * 27) + ' Longbows (u)');
If (Players[CurrentPlayer].Strings[1]) = 'normal'then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 10) +' XP');
end;
If (Players[CurrentPlayer].Strings[1]) = 'oak' then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 25) +' XP');
end;
If (Players[CurrentPlayer].Strings[1]) = 'willow' then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 41) +' XP');
end;
If (Players[CurrentPlayer].Strings[1]) = 'maple' then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 58) +' XP');
end;
If (Players[CurrentPlayer].Strings[1]) = 'yew' then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 75) +' XP');
end;
If (Players[CurrentPlayer].Strings[1]) = 'magic' then
Begin
WriteLn('Earnt ' + IntToStr(Loads * 27 * 91) +' XP');
end;
WriteLn('Did ' + IntToStr(AntiBanned) + ' Antibans');
WriteLn('Responded ' + IntToStr(Responded) + ' times');
WriteLn('<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>');
WriteLn(' ')
Wait(2000 + random(200))
SRLRandomsReport;
End;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
Begin
SetupSRL;
ScriptID := '640';
SRLID := StatsID;
SRLPassword := StatsPass;
LoadDTMs;
StatsCheck;
Siggy;
Case random(8) of
1: Disguise('iTunes');
2: Disguise('Windows Live Messenger');
3: Disguise('AIM');
4: Disguise('Internet Explorer ');
5: Disguise('Google');
6: Disguise('Microsoft Word');
7: Disguise('Control Panel');
8: Disguise('Windows Help Centre');
end;
SafeInitForm;
SafeShowFormModal;
DeclarePlayers;
DetailsCheck;
ActivateClient;
LoginPlayer;
Loads:=Loads -1;
Repeat
LoginSleepLogout;
LevelRespond;
Antirandoms;
GetThingFromBank;
Fletch;
Antiban;
until (Loads >= Players[CurrentPlayer].Integers[0])
FreeDTMs;
SendSRLReport;
Proggy;
Logout;
end.
////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////