SCAR Code:
program Footballjds_ULTIMATE_LONGBOW_STRINGER;
{=========================================================================]
[ NAME : Any Longbow Stringer ]
[ WRITER : Footballjds ]
[ CATEGORY : Fletching ]
[ DESCRIPTION : Strings And Banks Any Longbow ]
[ USAGE : To Raise Your Fletching Level ]
[ AUTOCOLOR : Yes ]
[ CONTACT : Pm Or Footballjds2000 On AIM ]
[=========================================================================]
[ Instructions. ]
[=========================================================================]
[ 1. USE Runescape With Low Detail, Very Bright. ]
[ 2. Set your Screen To 32 bit TRUE color. ]
[ 3. Position Players In Bank ]
[ 4. Set Playernames And Passwords / SRL Id And Pass in Player Setup ]
[ 5. You Do Not Have To Drag Cross Hair Over Client! Amazing Aint It? ]
[ 6. Start Logged Out ]
[ 7. Please Post Proggies/Bugs ]
[=========================================================================}
{.include srl/srl.scar}
{.include /srl/srl/skill/Magic.scar}
var
Loads, EXPFactor, LBS, LBU, BS, RespondedToLevel, x, y, LevelsGained, LogoutLoads,
MBX1, MBY1, MBX2, MBY2, AntiBans, BSclr : integer;
WhatBank, WhichLongbow, Your_SRL_ID, Your_SRL_Pass : string;
BrainInInventory1, doned : boolean;
Errorses : array of string;
////////////////////////////////////////////////////////////////////////////////
procedure StatusReport(What, SecondWhat : string);
begin
Status(What + ' --- ' + SecondWhat + ' /been running for ' + TimeRunning + ' \');
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure Error(what : string; fatel : boolean);
begin
Writeln('Error, please report this! ' + what);
SetArrayLength(Errorses, GetArrayLength(Errorses) + 1);
Errorses[GetArrayLength(Errorses) - 1] := what + '| Fatel = ' + BoolToStr(fatel);
CloseWindow;
if fatel then
begin
LogoutLoads := 0;
Players[CurrentPlayer].Active := False;
LogOut;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
const UseLevelRespond = True;//Use Level Responder?
procedure PlayerSetup;
begin
LampSkill := 'fletching'//If It Finds Lamp What Skill?
ReinCarnate := True; //[True / False]Use DeathWalkback?
Your_SRL_ID := ''; //Don't have this? Go to:
Your_SRL_Pass := ''; //http://www.stats.srl-forums.com/
WhichLongbow := 'Yew'; //Normal, Oak, Willow, Maple, Yew, Magic
CurrentPlayer := 0; //Int!
HowManyPlayers := 1; //Int!
WhatBank := 'veb'; //See list below!
NumberOfPlayers(HowManyPlayers);
{*******************************************************************************
Valid arguments are:
'pc' = Pest Control :D
'akb' = Al Kharid /|\ 'lb' = Lumbridge /|\ 'veb' = Varrock East /|\ 'vwb' = Varrock West
'feb' = Falador East /|\ 'fwb' = Falador West /|\ 'db' = Draynor /|\ 'eb' = Edgeville Bank
*******************************************************************************}
Players[0].Name := 'Username'; //UserName
Players[0].Pass := 'Password'; //Password
Players[0].Nick := 'sern'; //Nick Name
Players[0].Active := True; //Use This Player [ True / False ]
Players[0].Integers[0] := 70; //Number Of Loads
Players[0].Strings[0] := ''; //BankPin [If Any]
Players[0].Booleans[0] := True; //Use Walkback if Lost? [True / False]
Players[0].Integers[1] := 11; //Logout Every How many loads?
Players[0].Integers[2] := 2; //Stay Logged Out for how many minutes?
// Never logging out is not smart, but if you don't want to logout
// change Integers[1] to something around 99999.
////////////////////////////////////////////////////////////////////////////////
case WhichLongbow of
'Normal' : EXPFactor := 10 ;
'Oak' : EXPFactor := 25 ;
'Willow' : EXPFactor := 41 ;
'Maple' : EXPFactor := 58 ;
'Yew' : EXPFactor := 75 ;
'Magic' : EXPFactor := 91 ;
end;
MBX1 := 21;
MBY1 := 58;
MBX2 := 467;
MBY2 := 287;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure Setup;
begin
if (not(LoggedIn)) Then
EXIT;
GameTab(4);
SetChat('Off', 2);
wait(189+random(90));
SetAngle(True);
MakeCompass('N');
FindNormalRandoms;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure LoadDTMS(which : string);
begin
case which of
'LBU' : LBU := DTMFromString('78DA639CC2C0C0E0C78006181978C02494378' +
'908351380842F01359389500332C78B809A5E22D4F400094F026A' +
'FA8084071176B91150D345849AE940228A809A994022920873C20' +
'8A89906244288888B20DC6AFE0301006F3811FB');
'BS' : BS := DTMFromString('78DA638C656060F0634001CD15910C3C409A1' +
'188FF030163109011C58006189148209D0A242209A88925C29C6C' +
'201142404D0A90F025A0268808350140C293809A7022DC9C8E198' +
'658FD15805F0D0014AD0D12');
'all' : begin
LBU := DTMFromString('78DA639CC2C0C0E0C78006181978C02494378' +
'908351380842F01359389500332C78B809A5E22D4F400094F026A' +
'FA8084071176B91150D345849AE940228A809A994022920873C20' +
'8A89906244288888B20DC6AFE0301006F3811FB');
BS := DTMFromString('78DA638C666060F06740038C0C3C609281E13' +
'F103006011951B8D58079494022125585A88808AA9A4C20114EC0' +
'9C6420E14B404D0090F0C4AF0600173D08AD');
LBS := DTMFromString('78DA63F462646078C680028AB23219F881345' +
'086E13F1030BA00590F19D000231209A4DD8950E30B64BD26A0C6' +
'9F08352140D647026A0281AC9704D480FC7E9F801A3F20EB317E3' +
'500905F103C');
end;
'LBS' : LBS := DTMFromString('78DA63F462646078C680028AB23219F881345' +
'086E13F1030BA00590F19D000231209A4DD8950E30B64BD26A0C6' +
'9F08352140D647026A0281AC9704D480FC7E9F801A3F20EB317E3' +
'500905F103C');
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure FreeEm(which : string);
begin
case which of
'all' : begin
FreeDTM(LBU);
FreeDTM(LBS);
FreeDTM(BS);
end;
'LBU' : FreeDTM(LBU);
'BS' : FreeDTM(BS);
'LBS' : freeDTM(LBS);
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function ColorDTM(DTMd : integer; var color : integer) : boolean;
begin
if not(FindDTM(DTMd, x, y, MIX1, MIY1, MIX2, MIY2)) then EXIT;
color := GetColor(x, y);
Result := True;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function CountDTM(Area, WhatDTM : string; Stack, LoadThem : boolean) : integer;
var
DTM : integer;
begin
if LoadThem then LoadDTMS(WhatDTM);
case WhatDTM of
'BS' : DTM := BS;
'LBS' : DTM := LBS;
'LBU' : DTM := LBU;
end;
if Stack then Result := AmountDTM(Area, DTM)
else Result := CountItemsDtm(Area, DTM);
if LoadThem then FreeEm(WhatDTM);
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure LevelRespond;
Var
Chats: TStringArray;
I, L: Integer;
begin
if not UseLevelRespond then EXIT;
if not LoggedIn then EXIT;
Chats := ['hing lv', 'hing lev', 'tchin lvl'];
for I := 0 To 2 Do
begin
if InChat(Chats[i]) then
begin
inc(RespondedToLevel);
L := GetSkillInfo('fletching', False);
case Random(9) of
0: TypeSend(IntToStr(L));
1: TypeSend('Me '+IntToStr(L));
2: TypeSend(IntToStr(L) + ' here');
3: TypeSend('...'+IntToStr(L));
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');
end;
wait(1000 + Random(500));
Exit;
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function LogoutSleepLogin(SleepTimeInMin : integer): boolean;
var
RandSleepTime : integer;
begin
Result := False;
RandSleepTime := random(60000);
if (Logout) then
begin
StatusReport('Sleeping...', 'ZZZZZZzzz.....');
Writeln('Logged Out');
Writeln('Waiting: ' + (IntToStr(SleepTimeInMin)) + 'Minutes Plus Random: ' + (IntToStr(RandSleepTime)) + ' MiliSeconds');
wait(60000 * SleepTimeInMin + RandSleepTime);
LogInPlayer;
Result := True;
end else
begin
Writeln('Error Occured While Logging Out, Script Terminated');
TerminateScript;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////\
function IsOption(txt: string): Boolean;
var
x1, y1, x2, y2, LeftCorner, RightCorner, x, y: Integer;
begin
Result := False;
LeftCorner := BitmapFromString(4, 4, 'z78DA33753135313137C5' +
'411A600064715CEA914500CACE13F0');
RightCorner := BitmapFromString(4, 4, 'z78DA33753135313137' +
'C5200D30002E35F8C501C9C013F0');
if (FindBitmap(LeftCorner, x1, y1)) and (FindBitmap(RightCorner, x2, y2)) then
begin
if (FindText(x, y, txt, upchars, x1, y1, x2, 502)) then
begin
Result := True;
end
else
begin
MMouse(x1 - 50, y1 - 50, 40, y2-y1);
Wait(200 + Random(100));
end;
end;
FreeBitmap(LeftCorner);
FreeBitmap(RightCorner);
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function ClickItem(Item, OffSetX, OfSetY : integer; left, WaitColor : boolean) : boolean;
var
TB: TBox;
i : integer;
begin
if not LoggedIn then EXIT;
FindNormalRandoms;
GameTab(4);
if not(ExistsItem(Item)) then
begin
Writeln('Error, There is nothing in inventory slot ' + IntToStr(Item));
EXIT;
end;
GetInvItemBounds(Item, TB);
for I := 0 to 5 do
begin
if WaitColor and FindColor(x, y, 16777215, MIX1, MIY1, MIX2, MIY2) then break;
Mouse((TB.x1 + TB.x2)/2, (TB.y1 + TB.y2)/2, OffSetX, OfSetY, left);
Wait(75 + random(20));
if not(WaitColor) then break;
end;
Result := (I <= 5);
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function UseItemWithItem2(Item1, Item2 : integer; left : boolean) : boolean;
var
I : integer;
begin
Result := False;
I := 0;
if not(ExistsItem(28)) or (CountDTM('Inv', 'LBS', false, True) = 14) then doned := True;
if doned then EXIT;
if left then ClickItem(Item1, 7, 7, True, True)else
begin
ClickItem(Item1, 7, 7, False, True);
while not(ChooseOption('se')) and not(I >=400) do
begin
wait(22 + random(23));
inc(I);
end;
if I >= 400 then EXIT;
I := 0;
end;
wait(324 + random(242));
doned := not(ExistsItem(28)) or (CountDTM('Inv', 'LBS', false, True) = 14);
if doned then EXIT;
if left then
begin
Result := ClickItem(Item2, 5, 5, True, False);
end else
begin
ClickItem(Item2, 7, 7, False, False);
while not(ChooseOption('se')) and not(I >=400) do
begin
wait(22 + random(23));
inc(I);
end;
Result := (I < 400);
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function HomeTeleport : boolean;
var
DoneWaited : integer;
begin
Result := False;
if (CastSpell(1)) then
begin
wait(700+random(200));
if (IsChatBlackTextAnyLine('minutes')) then
begin
Writeln('Sorry But Couldn''t Home Tele');
EXIT;
end else
begin
repeat
Wait(1000+random(500));
DoneWaited := DoneWaited + 1;
until (not(LoggedIn)) or (DoneWaited >= 14);
if (DoneWaited >= 14) and (LoggedIn) then
Result := True;
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
{Function Origanly Made By: Jukka, it clicked in the middle of the two fountains in
lumby. Then I(Footballjds) edited it and added auto color along with some other things}
function FindLumbyCenter(ToleranceLvl : Integer; Click: Boolean): Boolean;
var
aPoint: TPoint;
TPA: TPointArray;
tmpTPA: array of TPointArray;
I, tmpLength, FountColor, FountColorTol: Integer;
begin
Result := False;
repeat
if FindColorTolerance(x, y, 10375772, MMX1, MMY1, MMX2, MMY2, FountColorTol) then
Break;
FountColorTol := FountColorTol + 1;
until (FountColorTol >= ToleranceLvl) or (not(loggedIn));
if (not(LoggedIn)) then
EXIT;
if (FountColorTol >= ToleranceLvl) then
begin
Writeln('Unable To Get The Fountain Color');
Writeln('The Max ToleranceLvl To Use Was Set At: ' + IntToStr(ToleranceLvl));
EXIT;
end;
FountColor := GetColor(x, y);
WriteLn('We Found The FountainColor: ' + IntToStr(FountColor));
WriteLn('With A Tolerance Lvl Of: ' + IntToStr(FountColorTol));
if (FindColorsTolerance(Tpa, FountColor, MMX1, MMy1, MMx2, MMy2, 0)) then
begin
tmpTPA := TPAtoATPA(TPA, 10);
tmpLength := getarraylength(tmpTPA);
setarraylength(Tpa, tmpLength);
for I := 0 to tmpLength - 1 do
Tpa[i] := MiddleTPA(tmpTPA[i]);
aPoint := MiddleTPA( TPA );
if( aPoint.X > 0)and( aPoint.Y > 0)then
begin
if(Click)then
begin
Mouse( aPoint.X, aPoint.Y, 5, 5, True);
Result := True;
CountFlag(0);
end else
MMouse( aPoint.X, aPoint.Y, 5, 5 );
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function RWalkToBank : boolean;
var
StairCaseTol, StairCaseColor : integer;
RandomMMDirection : string;
begin
Result := False;
case random(3) of
0: RandomMMDirection := 'E';
1: RandomMMDirection := 'W';
2: RandomMMDirection := 'S';
end;
MakeCompass(RandomMMDirection);
wait(random(1000));
MakeCompass('N');
wait(random(1000));
SetAngle(True);
if (RadialRoadWalk(FindRoadColor, 300, 257, 27, 1, 1)) then
begin
CountFlag(0);
wait(random(1000));
if (RadialRoadWalk(RoadColor, 206, 198, 35, 1, 1)) then
begin
CountFlag(0);
wait(random(1000));
if (RadialRoadWalk(RoadColor, 280, 265, 32, 1, 1)) then
begin
CountFlag(0);
wait(500 + random(1000));
repeat
if FindColorTolerance(x, y, 737374, 4, 181, 232, 335, StairCaseTol) then
Break;
StairCaseTol := StairCaseTol + 1;
until (StairCaseTol >= 12);
if (StairCaseTol >= 12) then
EXIT;
MMouse(x, y, 5, 5);
wait(200+random(200));
if (IsUpTextMultiCustom(['limb', 'up', 'b-', '-u'])) then
begin
StairCaseColor := GetColor(x, y);
Mouse(x, y, 0, 0, True);
CountFlag(0);
Wait(2000+random(1500));
if (FindObjCustom(x, y, (['limb', 'up', 'b-', '-u']), [StairCaseColor], 0)) then
begin
Mouse(x, y, 5, 2, False);
Wait(300+random(100));
if (ChooseOption('up')) then
begin
Wait(2500+random(1500));
if (RadialWalk( 195836, -10, 30, 65, 1, 1)) then
Result := True;
end;
end;
end;
end;
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function WalkBack : boolean;
var
Tries2 : integer;
begin
Result := False;
Writeln('Bank Not Found, Using Walkback.');
if not loggedIn then EXIT;
FindNormalRandoms;
if not loggedIn then EXIT;
if not(HomeTeleport) then EXIT;
if not(FindLumbyCenter(25, True)) then EXIT;
if (RWalkToBank) then
begin
repeat
LevelRespond;
OpenBankFast('lb');
Wait(1000+random(100));
Tries2 := Tries2 + 1;
until (BankScreen) Or (PinScreen) Or (Tries2 >= 10);
if PinScreen then InPin(Players[CurrentPlayer].Strings[0]);
Wait(250 + random(250));
if (BankScreen) then
begin
Result := True;
Writeln('W00T Walk Back Worked!');
WhatBank := 'lb';
end else Writeln('WalkBack Phailed, Sorry, ;-(');
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function BrainInInventory : boolean;
begin
GameTab(4);
Result := (((CountDTM('Inv', 'BS', False, True)
+ CountDTM('Inv', 'LBU', False, True)) = 28)
and (CountDTM('Inv', 'BS', False, True) = 14));
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
{*******************************************************************************
function InvCount: Integer;
By: RsN, Edited by Footballjds to fit his purepose(in this script)
Description: Returns amount of items in your inventory
*******************************************************************************}
function InvenCount: Integer;
var
i: Integer;
begin
for i := 1 to 28 do
if (ExistsItem(i)) then
Result := Result + 1;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function OpenPCBank : boolean;
var
DTM, x, y, time : integer;
angle : extended;
begin
MakeCompass('n');
DTM := DTMFromString('78DA63B4606460B8CB8002EA8AC3184480342' +
'394CF680F64DDC1ADE63F1030C60059FF207222503587574B3288' +
'2199030058350BF7');
MarkTime(time);
if not findDTMRotated(DTM, x, y, MSX1, MSY1, MSX2, MSY2, radians(30), Radians(30), 0.05, angle)then
begin
Writeln('blah');
Writeln(IntToStr(TimeFromMark(time)));
FreeDTM(DTM);
EXIT;
end;
FreeDTM(DTM);
Writeln(IntToStr(TimeFromMark(time)));
MMouse(x, y, 3, 4);
wait(50);
if not(IsUpTextMultiCustom(['ooth', 'ank', 'k bo', 'se Ba'])) then EXIT;
Mouse(x, y, 4, 4, False);
wait(350 + random(250));
ChooseOption('quickly');
wait(400);
FFlag(0);
wait(500 + random(240));
Result := BankScreen;
MMouse(MSCX, MSCY, 120, 120);
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function OpenUpBank : boolean;
Var
Tries : Integer;
begin
Result := False;
if not LoggedIn then EXIT;
if BrainInInventory then
begin
Result := True;
BrainInInventory1 := True;
EXIT;
end;
if (FindNormalRandoms) then SRLRandomsReport;
StatusReport('Opening The Bank:' , WhatBank);
repeat
if WhatBank = 'pc' then OpenPCBank else
OpenBankFast(WhatBank);
Wait(250+random(100));
FFlag(0);
Tries := Tries + 1;
until (BankScreen) Or (PinScreen) Or (Tries >= 5);
If Tries > 4 Then
begin
if (Players[CurrentPlayer].Booleans[0] = False) then
begin
Error('Opening Bank Error', True);
end else if not(WalkBack) then Error('WalkBack Failed Error', True);
end;
Tries := 0;
if PinScreen Then
InPin(Players[CurrentPlayer].Strings[0]);
FixBank;
Result := BankScreen;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function BrainInBank : boolean;
var i : integer;
begin
Result := False;
//Deciding How To Bank
if FindBox then
begin
CloseBank;
SolveBox;
OpenUpBank;
wait(200 + random(200));
end;
if not BankScreen then EXIT;
if InvenCount >= 14 then
begin
Deposit(15, 28, 1);
wait(100 + random(100));
Result := InvenCount = 14;
for i := 1 to 28 do result := ExistsItem(i);
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function WithdrawFromBank1st : boolean;
var
Tries, TempX, TempY, TemX, TemY : integer;
begin
Result := False;
if not LoggedIn then EXIT;
if not(BankScreen) then if OpenUpBank then Tries := 0
else begin
Error('Error With Bank, no Bank Screen', True);
FreeEm('all');
EXIT;
end;
StatusReport('Banking' , 'Using Method 1');
DepositAll;
LoadDTMS('all');
if not(FindDTM(LBU, TempX, TempY, MBX1, MBY1, MBX2, MBY2)) or
not(FindDTM(BS, TemX, Temy, MBX1, MBY1, MBX2, MBY2)) and BankScreen then
begin
Error('Error, No DTMs found in Bank', True);
EXIT;
end;
FreeEm('all');
if not bankScreen then EXIT;
Mouse(TemX, TemY, 10, 10, False);
GetMousePos(x, y);
wait(223 + random(145));
if not(IsOption('string')) then
begin
repeat
Mouse(x, y, 1, 1, False);
wait(240 + random(200));
if(IsOption('string')) and ChooseOption('X') then BREAK;
inc(Tries);
until(Tries >= 5);
if Tries >= 5 then
begin
Error('Error While Withrdrawing', False);
EXIT;
end;
end else ChooseOption('X');
Tries := 0;
repeat
wait(20+random(30));
inc(Tries);
until FindColor (x, y, 8388608, 259, 426, 259, 426) or (Tries >= 300);
if (Tries>299) then
begin
Error('Error While Withrdrawing', False);
EXIT;
end;
Tries := 0;
wait(50 + random(100));
TypeSend('14');
Wait(150+random(300));
Mouse(TempX - 3, TempY, 10, 10, False);
GetMousePos(x, y);
wait(323 + random(245));
if not(IsOption('(u)')) then
begin
repeat
Mouse(x, y, 1, 1, False);
wait(240 + random(200));
if IsOption('(u)') and ChooseOption('All') then BREAK;
inc(Tries);
until(Tries >= 5);
if Tries >= 5 then
begin
Error('Error While Withrdrawing', False);
EXIT;
end;
end else if not ChooseOption('All') then
begin
Error('Error While Withrdrawing', False);
EXIT;
end;
wait(200 + random(105));
for Tries := 0 to 11 do
begin
if BankScreen then CloseBank else BREAK;
wait(124 + random(123));
end;
result := (InvenCount = 28) and
(CountDTM('Inv', 'BS', false, True) = 14);
LoadDTMS('BS');
if Result then ColorDTM(BS, BSclr);
FreeEm('BS');
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function WithdrawFromBank : boolean;
var
Tries, Waited, TempX, TempY, TemX, TemY : integer;
begin
Result := False;
if BrainInInventory1 then
begin
BrainInInventory1 := false;
Result := True;
EXIT;
end;
if not(BrainInBank) then
begin
Result := WithdrawFromBank1st;
EXIT;
end;
if not(BankScreen) then if OpenUpBank then Tries := 0
else begin
Error('Error With Bank, no Bank Screen', True);
EXIT;
end;
StatusReport('Banking' , 'Starting The ' + IntToStr(Loads + 1) + ' Load');
LoadDTMS('all');
if not(FindDTM(LBU, TempX, TempY, MBX1, MBY1, MBX2, MBY2)) or
not(FindDTM(BS, TemX, Temy, MBX1, MBY1, MBX2, MBY2)) and BankScreen then
begin
Error('Error With Bank, no Bs or no LBU', True);
FreeEm('all');
EXIT;
end;
if not(BankScreen) then EXIT;
FreeEm('all');
Mouse(TemX, TemY, 10, 10, False);
GetMousePos(x, y);
wait(223 + random(145));
if not(IsOption('string')) then
begin
repeat
Mouse(x, y, 1, 1, False);
wait(240 + random(200));
if(IsOption('string')) and ChooseOption('All') then BREAK;
inc(Waited);
until(Waited >= 5);
if Waited >= 5 then
begin
Error('Error With, Withdrawing BS', true);
EXIT;
end;
end else if not ChooseOption('All') then
begin
Error('Error With, Withdrawing BS', true);
EXIT;
end;
Waited := 0;
wait(200+random(50));
Deposit(1, 14, 2);
wait(150+random(76));
Mouse(TempX - 3, TempY, 10, 10, False);
GetMousePos(x, y);
wait(323 + random(245));
if not(IsOption('(u)')) then
begin
repeat
Mouse(x, y, 1, 1, False);
wait(240 + random(200));
if IsOption('(u)') and ChooseOption('All') then BREAK;
inc(Waited);
until(Waited >= 5);
if Waited >= 5 then
begin
Error('Error With, Withdrawing Unstrungs', true);
EXIT;
end;
end else if not ChooseOption('All') then
begin
Error('Error With, Withdrawing Unstrungs', true);
EXIT;
end;
wait(200 + random(105));
for Waited := 0 to 11 do
begin
if BankScreen then CloseBank else BREAK;
wait(124 + random(123));
end;
result := (InvenCount = 28) and
(CountDTM('Inv', 'BS', false, True) = 14);
LoadDTMS('BS');
if Result then ColorDTM(BS, BSclr);
FreeEm('BS');
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure AntiBanRandom; forward;
procedure ProgressReport(clear : boolean); forward;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function StringThem(RRange1, RRange2, RRange3, RRange4 : integer) : boolean;
var
Tries, ItemOne, ItemTwo, I : integer;
begin
Result := False;
Tries := 0;
GameTab(4);
LoadDTMS('LBU');
repeat
wait(20+random(30));
inc(Tries);
until FindDTM(LBU, x, y, MIX1, MIY1, MIX2, MIY2) or (Tries >= 400);
FreeEm('LBU');
if (Tries >= 400) then
begin
Error('Error WHile Waiting For Unstrungs', False);
EXIT;
end;
for I := 0 to 2 do
begin
if FindColor(x, y, 128, 136, 361, 170, 381) then break;
ItemOne := RandomRange(RRange1, RRange2);
ItemTwo := RandomRange(RRange3, RRange4);
if random(12) > 1 then UseItemWithItem2(ItemOne, ItemTwo, True)else
UseItemWithItem2(ItemOne, ItemTwo, False);
if doned then
begin
Result := True;
EXIT;
end;
wait(65+random(34));
repeat
wait(50 + random(50));
Tries := Tries + 1;
until(FindColorTolerance(x, y, 128, 136, 361, 170, 381, 2)) Or (Tries >= 360);
if FindColorTolerance(x, y, 128, 136, 361, 170, 381, 2) then
begin
I := 0;
break;
end;
end;
if not(I = 0) then
begin
Error('Error While Waiting For String Bows Option', False);
Exit;
end;
Tries := 0;
MouseBox(182, 393, 341, 455, 2);
repeat
Wait(234 + random(234));
if ChooseOption('ll') then Break;
inc(Tries);
until Tries >= 10;
Result := Tries <= 10;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure WaitWhileString;
var
LastTime, utoh : integer;
ToLong : boolean;
begin
LoadDTMS('BS');
repeat
LastTime := CountDTM('Inv', 'BS', False, False);
StatusReport('Stringing...' , IntToStr(LastTime) + ' Left To String');
wait(500 + Random(250));
AntiBanRandom;
LevelRespond;
if not(LastTime > CountDTM('Inv', 'BS', False, False)) then Inc(utoh)
else utoh := 0;
if utoh >= 5 then ToLong := True;
if ToLong then
begin
ToLong := False;
utoh := 0;
if FindNpcChatText('letching', nothing) then
begin
inc(LevelsGained);
ClickToContinue;
wait(200+random(100));
clickToContinue;
end;
StringThem(14, 15, 28, 29);
end;
if FindFight then
begin
StatusReport('Found Fight' , 'Runing North From it!');
RunAway('N', True, 1, 5000);
SRLRandomsReport;
wait(200+random(100));
StringThem(14, 15, 28, 29);
end;
if FindNormalRandoms then
begin
SRLRandomsReport;
wait(200+random(100));
StringThem(14, 15, 28, 29);
end;
until (not ExistsItem(28)) or (LastTime = 0) or (not(LoggedIn));
FreeEm('BS');
if not(LoggedIn) then Error('Error With, Logged Out While Fletching', True);
Loads := Loads + 1;
StatusReport('Just Compleated Load' , IntToStr(Loads));
LogoutLoads := LogoutLoads + 1;
ReportVars[0] := ReportVars[0] + 14;
ReportVars[1] := ReportVars[1] + (EXPFactor * 14);
ProgressReport(True);
if (LogoutLoads >= (Players[CurrentPlayer].Integers[1] + Random(7))) and (not( Loads >= Players[CurrentPlayer].Integers[0] )) then
begin
LogoutLoads := 0;
LogoutSleepLogin(Players[CurrentPlayer].Integers[2]);
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure AntiBanRandom;
begin
inc(AntiBans);
case random(700) of
1, 2, 3: begin
KeyDown(VK_Down);
Wait(random(1000));
KeyUp(VK_Down);
KeyDown(VK_Up);
Wait(500 + random(1000));
KeyUp(VK_Up);
end;
5, 6, 7: begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
end;
9, 10, 11: begin
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
end;
13, 14, 15: begin
KeyDown(VK_Up);
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Up);
Wait(random(800));
KeyUp(VK_Left);
end;
17, 18: HoverSkill('random', False);
19, 20, 21, 22: PickUpMouse;
24: AlmostLogout;
26: BoredHuman;
28, 29, 30, 31: HoverSkill('fletching', False);
else AntiBans := AntiBans - 1;
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
var LRT : Integer;
procedure ProgressReport(clear : boolean);
Begin
if clear then ClearDebug;
Writeln('==========================================');
Writeln('-§ Any Longbow Stringer By: FootBalljds §-');
Writeln('- Thanks SRL Team!!! -');
Writeln('==========================================');
Writeln('Been Making Bows For You For');
Writeln(TimeRunning);
Writeln('Gained ' + IntToStr(Loads*14*EXPFactor) + ' Exp');
Writeln('Strung ' + IntToStr(Loads*14) + ' ' + WhichLongbow + ' Longbows');
Writeln('Did ' + IntToStr(Loads) + ' Loads');
if (LevelsGained > 0) then
Writeln('Gained ' + IntToStr(LevelsGained) + ' Levels');
if (RespondedToLevel > 0 ) then
Writeln('Level Responded ' + IntToStr(RespondedToLevel) + ' Times');
if (AntiBans > 0) then
Writeln('Performed ' + IntToStr(AntiBans) + ' AntiBans');
Writeln('==========================================');
If LRT >= 315000 Then
Begin
SendSRLReport;
MarkTime(LRT);
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Procedure MainLoop;
begin
if not LoggedIn then
begin
Writeln('Rarw');
LoginPlayer;
if not LoggedIn then TERMINATESCRIPT;
Setup;
end;
repeat
MouseSpeed := 17 + random(2) - Random(2);
if (not(LoggedIn)) or (Players[CurrentPlayer].Active = False) then
begin
Players[CurrentPlayer].Active := False;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
Writeln('No More Active Players');
Writeln('Terminating');
TerminateScript;
end;
end;
LoginPlayer;
Setup;
end;
if (OpenUpBank) then
begin
wait(100+random(50));
if (WithdrawFromBank) then
begin
wait(100+random(50));
if StringThem(1, 15, 15, 29) then WaitWhileString;
end;
end;
until ( Loads >= Players[CurrentPlayer].Integers[0] );
If LoggedIn Then
begin
LogOut;
LogoutLoads := 0;
end;
Players[CurrentPlayer].Active := False;
CurrentPlayer := 0;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
Writeln('No More Active Players');
Writeln('Terminating');
TerminateScript;
end;
end;
NextPlayer(False);
if not LoggedIn then
LoginPlayer;
Loads := 0;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure DisplayName;
begin
ClearDebug;
Writeln(' .____ ___. ');
Wait(200);
Writeln(' | | ____ ____ ____\_ |__ ______ _ __');
Wait(200);
Writeln(' | | / _ \ / \ / ___\| __ \ / _ \ \/ \/ /');
Wait(200);
Writeln(' | |__( <_> ) | \/ /_/ > \_\ ( <_> ) / ');
Wait(200);
Writeln(' |_______ \____/|___| /\___ /|___ /\____/ \/\_/ ');
Wait(200);
Writeln(' \/ \//_____/ \/ ');
Wait(200);
Writeln(' _________ __ .__ ');
Wait(200);
Writeln(' / _____// |________|__| ____ ____ ___________ ');
Wait(200);
Writeln(' \_____ \\ __\_ __ \ |/ \ / ___\_/ __ \_ __ \');
Wait(200);
Writeln(' / \| | | | \/ | | \/ /_/ > ___/| | \/');
Wait(200);
Writeln(' /_______ /|__| |__| |__|___| /\___ / \___ >__| ');
Wait(200);
Writeln(' \/ \//_____/ \/ ');
wait(400);
Writeln('Created By: Footballjds');
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure ScriptTerminate;
var
I : integer;
begin
SendSRLReport;
ProgressReport(False);
if GetArrayLength(Errorses) > 0 then
begin
for I := 0 to GetArrayLength(Errorses) - 1 do
Writeln('Error ' + IntToStr(i) + Errorses[i]);
Writeln('Please Report The Above ERrors :D');
end;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
begin
DisplayName;
SetupSRL;
PlayerSetup;
SRLID := Your_SRL_ID;
SRLPassword := Your_SRL_Pass; if (SRLID = '') or (SRLPassword = '') then begin SRLID := '3546'; SRLPassword := 'jesse123123'; end;
ScriptId := '537';
ClearDebug;
ActivateClient;
Wait(500 + Random(500));
MarkTime(LRT);
repeat
MainLoop;
until False;
end.
////////////////////////////////////////////////////////////////////////////////