SRL Archive - Archive

alevere4 - SRL Member Application


iBlank

2012-05-01 02:41:07

How Long have You Played Runescape?
5 Year(s)


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Pascal, and pascal only!


Are you a member of any other communities?
Sythe.


Tell us about yourself…
From: alevere4
My name is Andrew and I am a junior at the University of Tennessee in Knoxville. I am majoring in Psychology and minoring in Business Administration. I have a girlfriend of 5 years and I have a brand new husky puppy. During the week I am generally doing homework, studying, or doing something that involves Runescape (this site, Sythe, scripting, etc.). I am a huge football fan. Especially, college football. On the weekends I am generally watching sports, hanging out with friends, or hiking with my dog and girlfriend. I have a very active social life so it is hard to constantly be posting and stuff as often as I would like, but would still love to be a part of the members+ community.



Please show us one (or multiple) of your scripts.
Program EssHoundSiphon;
{$DEFINE SMART}
{$i srl/srl.simba}

Const
World = 00; /// Find a world where there is a less populated Law Esshound.
AttackTimer = 6000; /// Wouldn't touch this unless you know what you're doing.

Var
X,Y,XPO,XPN,XPH,TimeGone,K:Integer;

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :=''; // Enter your username here.
Players[0].Pass :=''; // Enter your password here.
Players[0].Nick :=''; // Enter nickname for progres report.
Players[0].Active:=True;
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins'];
Players[0].WorldInfo := [False, World];
End;

Procedure AntiBan;
Begin
Case Random(850) Of
100: SleepAndMoveMouse(500);
200: PickUpMouse;
300: RandomMovement;
400: HoverSkill('Runecrafting',False);
500: CompassMovement(-45,45,true);
End;
End;

Procedure IfRandoms;
Begin
FindNormalRandoms;
AntiBan;
End;

Procedure Proggy;
Begin
If (K >= 3) Then
Begin
ClearDebug;
K := (0)
TimeGone := (GetTimeRunning/1000);
XPN := ((GetXPBar(1))-XPO);
XPH := ((3600*(XPN))/(TimeGone));
Writeln('Time Ran: '+MsToTime(GetTimeRunning,Time_Bare));
Writeln('Gained : '+IntToStr(XPN)+' Exp');
Writeln('Exp/hr : '+IntToStr(XPH));
End Else Exit;
End;

Function IsAttack: Boolean;

Var
CTS: Integer;
TPA: TPointArray;

Begin
CTS := GetColorToleranceSpeed;
Begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.19, 0.85);
FindColorsSpiralTolerance(x, y, TPA, 14010318, 215, 135, 280, 202, 11);
ColorToleranceSpeed(CTS);
result := (Length(TPA) > 0);

If result Then
Exit;
End;
End;

Procedure AttackWait;

Var
T: Integer;

Begin
Marktime(T);
Repeat
If IsAttack Then Marktime(T);
AntiBan;
IfRandoms;
Proggy;
Until(TimeFromMark(T) >= AttackTimer)
End;

Function FindMonster(x, y: Integer): Boolean;

Var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;

Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.08, 2.99);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 15047050, MSX1, MSY1, MSX2, MSY2, 11);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 30, 30);

For I := 0 To High(ATPA) Do
Begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 0, 0);
If(WaitUpTextMulti(['law','aw es','essh','hou','ound'],800)) Then
Begin
Result := True;
GetMousePos(x, y);
Break;
End;
End;
End;

Procedure AttackMonster;
Begin
If FindMonster(X,Y) Then
Begin
ClickMouse2(True)
If DidRedClick Then
Begin
IncEx(K,1);
AttackWait
End Else AttackMonster;
End Else AttackMonster;
End;

Begin;
ClearDebug;
MouseSpeed := RandomRange(10,20);
Smart_Server := 00;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False
SetupSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;
XPO := GetXpBar(1);
K := (0)
MakeCompass('N');
SetAngle(0);
ClearDebug;
Repeat;
AttackMonster;
Until(AllPlayersInactive);
End.



Program AlsAstralCrafter;
{$DEFINE SRL5}
{$DEFINE SMART} // Edit this line out to rn the script in your browser.
{$i SRL/srl.simba}
{$i sps/sps.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const
World = 88; /// Enter world you want to craft Astrals in.
OnScreenProg = 0; /// Eneter 0 for an on screen proggy and 1 for no on screen proggy.
AstralPrice = 145; /// Enter current price of Astrals for accurate valuation.
PP = ''; /// Enter pin here.

Var
X,Y,ARune,PEss,AAltar,GPouch,LPouch,MPouch,SPouch:Integer;
TotalARunes,Trips,TimeGone,APH,TPH,XPN,XPH,CVA,HVA: Integer;
GPouchD,LPouchD,MPouchD: Integer;
ToAltar,ToBank: TPointArray;

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :=''; // Enter your username here.
Players[0].Pass :=''; // Enter your password here.
Players[0].Nick :=''; // Enter nickname for progres report.
Players[0].Active:=True;
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins'];
Players[0].WorldInfo := [False, World];
End;

Procedure AntiBan;
Begin
Case Random(500) Of
100: SleepAndMoveMouse(500);
200: PickUpMouse;
300: RandomMovement;
400: CompassMovement(45,90,true);
End;
End;

Procedure IfRandoms;
Begin
FindNormalRandoms;
AntiBan;
End;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(360,71,'me');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 100,10);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;

Procedure OnScreenUpdate;
Begin

TimeGone := (GetTimeRunning/1000);
APH := ((3600*(TotalARunes))/(TimeGone));
TPH := ((3600*(Trips))/(TimeGone));
XPN := ((TotalARunes)*(8+(3/4)));
XPH := ((3600*(XPN))/(TimeGone));
CVA := ((TotalARunes*AstralPrice))
HVA := ((3600*(CVA))/(TimeGone));

If (OnScreenProg=0) Then
Begin
PrintOnSmart(['Last banked at '+(TheTime)],Point(15,210),16777215);
PrintOnSmart(['Time script has run '+MsToTime(GetTimeRunning,Time_Bare)],Point(15,240),16777215);
PrintOnSmart(['Trips completed: '+IntToStr(Trips)],Point(15,270),16777215);
PrintOnSmart(['Astrals crafted: '+IntToStr(TotalARunes)],Point(15,300),16777215);
End;

Begin
Writeln('');
Writeln('********************** Als Astral Crafter **************************');
Writeln('====================================================================');
Writeln('Time script has run '+MsToTime(GetTimeRunning,Time_Bare));
Writeln('Trips completed: '+IntToStr(Trips)+' | Trips per hour: '+IntToStr(TPH));
Writeln('Astrals crafted: '+IntToStr(TotalARunes)+' | Astrals per hour: '+IntToStr(APH));
Writeln('Xp gained : '+IntToStr(XPN)+' | Xp per hour: '+IntToStr(XPH));
Writeln('Current value : '+IntToStr(CVA)+' | Value per hour: '+IntToStr(HVA));
Writeln('====================================================================');
Writeln('');
End;
End;

Function RunLevel: Integer;
Var
ColourString: String;
Begin
Result:= GetMMLevels('run', ColourString);
End;

Procedure SetDTMs;
Begin
ARune := DTMFromString('mlwAAAHicY2dgYNgJxWuBeDUQHwPi40B8EIinAfEyIF4AxFOBeDIQzwXiJUB8ct1JIMmEFfMDSVyYEQ+GAgBfsgwh');
PEss := DTMFromString('mqAEAAHicE2FgYJjGxMAwGYhnA/EcKAaJ9UHxBCCeBcSLgHgJlN0PxF1A3AnE06H8yVC1T4Bm3gfiu0D8GIhfQPFzKP8aFN+Fin8C4o9A/AqI7wHxayB+A8S3gfgBEOdmZDCUFxUxdDQ1gen8rCyG1IQEhpiICDDNwMCEFyfFxTEE+vqC9YP0sgJFqYkZqYyxAQBJDy0j');
AAltar := DTMFromString('mrAAAAHic42BgYIhiZGAIY4TQqUCcCcSRQOwJxMFA/AGo5jUQfwfi30D8CojvAfEzIP4LxE11LXA8cWIXGPf3d8LZ/EA1+DAjAQwDAN1oF7k=');
GPouch := DTMFromString('mrAAAAHic42BgYHBiYmDwAuIAIPYDYkcgNgZicyC2BOKXQDW3gPgZEH8E4i9A/A6IHwHxTSCOCHABkkw4MT+QxIcZCWAYAAA+owrY');
//GPouchD :=
LPouch := DTMFromString('mlwAAAHicY2dgYOAGYhYgFgZicSDmYYAAJiDmh7IZgVgAKi8ExFxAHOhlB1WFifmherFhRjwYCgCyQwH3');
LPouchD := DTMFromString('mrAAAAHic42BgYOBnZGBgBWJ2IBYEYhkglgRiUSDmBOJZQDVzgXgxEC8F4kVAPB2I+6DYwsQASDLhxPwgO/BgRgIYBgAErQaO');
MPouch := DTMFromString('mwQAAAHic42RgYJjKxMAwHYj7gXgeEM9ngoj1AvFEIJ4NxC+A6m4A8R0ofgPEH4H4NRBfB+KbQBzs4wAkmfBifiBJCDMSgeEAAHKfDtE=');
//MPouchD :=
SPouch := DTMFromString('m1gAAAHic42JgYDjAxMCwE4h3A/ExID4FxPuh7G1AvB2IDwLxc6Dae0B8E4jvAvELIH4PxO+A+CUQP4HK+XnYAEkmgpgfSBKDGYnECAAAl2USAA==');
End;

Procedure FreeDTMSet;
Begin
FreeDTM(ARune);
FreeDTM(PEss);
FreeDTM(AAltar);
FreeDTM(GPouch);
FreeDTM(LPouch);
FreeDTM(MPouch);
FreeDTM(SPouch);
FreeDTM(GPouchD);
FreeDTM(LPouchD);
FreeDTM(MPouchD);
End;

Procedure AllMyPaths;
Begin
SPS_Setup(RUNESCAPE_SURFACE,['0_2','1_2']);
ToAltar := [Point(247, 971), Point(287, 979), Point(287, 1023), Point(287, 1071), Point(307, 1119), Point(347, 1139), Point(375, 1159), Point(395, 1191), Point(439, 1191), Point(467, 1175)];
ToBank := [Point(179, 971), Point(191, 971), Point(211, 975), Point(231, 975), Point(235, 955)];
IfRandoms;
AntiBan;
End;

Function FindBB(x, y: Integer): Boolean;

Var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;

Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.22, 0.13);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2574168, MSX1, MSY1, MSX2, MSY2, 3);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 30, 30);

For I := 0 To High(ATPA) Do
Begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 0, 0);
If(WaitUpTextMulti(['Ban','ank','Boo','oot','oth'],500)) Then
Begin
Result := True;
GetMousePos(x, y);
Break;
End;
End;
End;

Procedure CheckRest;
Begin;
If (RunLevel <= 35) Then
Repeat
SetRest;
Wait(RandomRange(1500,2000));
IfRandoms;
AntiBan;
Until (RunLevel >= (70+Random(15)));
End;

Procedure Banking;
Begin;
If (FindBB(X,Y)) Then
Begin
Repeat
ClickMouse2(True);
Wait(RandomRange(700,900));
If PinScreen Then InPin(PP);
Wait(RandomRange(2750,3250));
Until BankScreen;
If FindDTM(ARune,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
IncEx(TotalARunes,(GetAmount(x,y)));
IncEx(Trips,1);
OnScreenUpdate;
Mouse(x,y,3,3,False);
Wait(RandomRange(700,850));
ChooseOption('ll');
End;
Mouse(53,153,5,5,False);
Wait(RandomRange(700,850));
ChooseOption('ll');
End Else
Begin
SymbolAccuracy := 0.50
FindSymbol(x,y,'bank');
Mouse(x,y,0,0,true);
Wait(RandomRange(1000,1300));
SymbolAccuracy := 0.80
Banking;
End;
IfRandoms;
Wait(RandomRange(500,750));
End;

Procedure FillPouches;
Begin;

If FindDTM(GPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(RandomRange(650,850));
ChooseOption('ill');
Wait(RandomRange(1000,1250));
Mouse(53,153,5,5,False);
Wait(RandomRange(700,850));
ChooseOption('ll');
End;

If FindDTM(LPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(RandomRange(650,850));
ChooseOption('ill');
Wait(RandomRange(1000,1250));
End;

If FindDTM(MPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(RandomRange(650,850));
ChooseOption('ill');
Wait(RandomRange(1000,1250));
End;

If FindDTM(SPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(RandomRange(650,850));
ChooseOption('ill');
Wait(RandomRange(1000,1250));
End;

If InvFull Then Exit
Else
Begin
Mouse(53,153,5,5,False);
Wait(RandomRange(700,850));
ChooseOption('ll');
End;

Wait(RandomRange(500,750));
CloseBank;
IfRandoms;
AntiBan;
End;

Procedure WalkToAltar;
Begin
SetRun(True);
SPS_WalkPath(ToAltar);
Wait(RandomRange(3500,3700));
IfRandoms;
AntiBan;
End;

procedure WalkToBank;
Begin
SetRun(True);
SPS_WalkPath(ToBank);
Wait(RandomRange(1000,1500));
IfRandoms;
AntiBan;
End;

Procedure CraftARune;
Begin
If (FindObj(x,y,'ltar',11318452,0) or FindObj(x,y,'ltar',9081233,0)) Then
Begin
Mouse(x,y,5,5,true);
End Else
Begin
WalkToAltar;
CraftARune;
End;
Wait(RandomRange(1250,1750));
IfRandoms;
End;

Procedure EmptyPouches;
Begin;

If FindDTM(GPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Wait(RandomRange(700,800));
Mouse(x,y,3,3,true);
Wait(RandomRange(600,900));
CraftARune;
End;

If FindDTM(LPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Wait(RandomRange(700,800));
Mouse(x,y,3,3,true);
Wait(RandomRange(600,900));
End;

If FindDTM(MPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Wait(RandomRange(700,800));
Mouse(x,y,3,3,true);
Wait(RandomRange(600,900));
End;

If FindDTM(SPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Wait(RandomRange(700,800));
Mouse(x,y,3,3,true);
Wait(RandomRange(600,900));
End;

If FindDTM(PEss,x,y,MIX1,MIY1,MIX2,MIY2) Then CraftARune;

IfRandoms;

End;

/// All credit goes to ReadySteadyGo

Function LunarIsleHome: Boolean;

Var
HomeTele, x, y: Integer;

Begin
Wait(500);
If (IsChatBoxTextBetween('advanced', clblack, 7, 8) or
IsChatBoxTextBetween('Runecrafting', clblack, 7, 8) or
IsChatBoxTextBetween('reached', clblack, 7, 8)) then Wait(RandomRange(13000,15000));
Result := False;
If Not GameTab(tab_Magic) Then
Exit;
HomeTele := DTMFromString('mggAAAHicY2NgYNjGxMCwiQlBrwbinUD8Gyj3H4pB7L8w/Pcvw74jn8AYxG6bc4PBR7OeQRIohw0z4sAQAADcGhiV');
If FindDTM(HomeTele,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
MMouse(x, y, 3, 3);
If WaitUptext('ome', 1000) Then
Begin
ClickMouse2(mouse_Left);
If WaitFunc(@LodestoneScreen, 250, 4000) Then
Result := LodestoneTeleport('Lunar Isle');
Wait(RandomRange(1200, 1500));
If LodestoneScreen Then
Begin
ClickMouse2(mouse_Left);
Wait(RandomRange(600, 900));
Result := not LodestoneScreen;
End;
End;
End;
FreeDTM(HomeTele);
Wait(RandomRange(17000,18000));
End;

Procedure MainLoop;
Begin;
CheckRest;
Banking;
FillPouches;
WalkToAltar;
CraftARune;
EmptyPouches;
LunarIsleHome;
WalkToBank;
IfRandoms;
End;

Begin
Smart_Server := 86;
Smart_Signed := True;
Smart_Members := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
LogInPlayer;
SetDtms;
AllMyPaths;
TotalARunes := 0
Trips := 0
ClearDebug;
Smart_ClearCanvas;
wait(1000);
PrintOnSmart(['A progress report will appear after first load. Good luck!'],Point(15,300),16777215);
MakeCompass('N');
SetAngle(0);
Repeat
MainLoop;
Until (False)
FreeDTMSet;
End.



program Als_Heavenly_Scale_Collector;
{$DEFINE SRL5}
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i ObjectDTM/ObjDTMInclude.simba}
{$i sps/sps.simba}
{$i srl/srl/skill/fighting.simba}

const
WTRA = 620; /// Enter health at which you want to withdraw food and eat at. Must be at least 50 below max HP.
World = 02; /// Enter orld you want to collect scales in.
C = (1000); /// Enter the price you plan on selling scales at for accurate profit display.
B = ''; /// Enter bank pin here.
OnScreen = (0); /// Enter 0 for on screen proggy and 1 for no on screen proggy

Var
x,y,CrumblingWallBank,CrumblingWallDung,DungeonEntrance,PipeEntrance,Lobby: Integer;
DragonScale,FallyTab,EmptyDish,HalfDish,FullDish,DragonHide,S,Money_Now,MPH: Integer;
TimeGone,Scales_Collected,SPH,SC: Integer;
Q: Array [0..4] of Integer;
SPH2,ScalesNow,MoneyNow,MPH2,Info1,Info2,Info3,Info4,Info5: String;
aFound: Extended;

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :=''; /// Username goes here.
Players[0].Pass :=''; /// Password goes here.
Players[0].Nick :=''; /// Nickname for progress report.
Players[0].Active:=True;
Players[0].BoxRewards := ['oins','mote','ostume'];
Players[0].WorldInfo := [False, World];
end;

Procedure OnScreenUpdate;
begin;
TimeGone := (GetTimeRunning/1000);
ScalesNow := IntToStr(Scales_Collected);
Money_Now := (Scales_Collected*(C))
MoneyNow := IntToStr(Money_Now);
MPH := (3600*(Money_Now))/((TimeGone));
MPH2 := IntToStr(MPH)
SPH := (3600*(Scales_Collected))/((TimeGone));;
SPH2 := IntToStr(SPH);
Info1 := ('Scales Collected = ' + ScalesNow)
Info2 := ('Scales Per Hour = ' + SPH2)
Info3 := ('Current Profit = ' + MoneyNow)
Info4 := ('Profit Per Hour = ' + MPH2)
Info5 := ('Total Time Ran = ' + MsToTime(GetTimeRunning,Time_Bare));

If (OnScreen = 0) then
begin;
SMART_ClearCanvas;
SMART_DrawText(10,050,LoginChars,Info1,clYellow);
SMART_DrawText(10,070,LoginChars,Info2,clYellow);
SMART_DrawText(10,090,LoginChars,Info3,clYellow);
SMART_DrawText(10,110,LoginChars,Info4,clYellow);
SMART_DrawText(10,130,LoginChars,Info5,clYellow);
end;

begin
ClearDebug;
Writeln('******************************************************************');
Writeln('*/////////---------- Scale Collecting Heaven ----------\\\\\\\*');
Writeln('*/////////----------____________________________----------\\\\\\\*');
Writeln('******************************************************************');
Writeln('');
Writeln('////////////////////////////////' + Players[0].Nick + '///////////////////////////////////////');
Writeln('*/////////You have acquired : ' + ScalesNow + ' scales -/- Thats ' + SPH2 + ' scales per hour //////////');
Writeln('*/////////You have profited : ' + MoneyNow + ' moneys -/- Thats ' + MPH2 + ' moneys per hour //////');
Writeln('*/////////Total time running : ' + MsToTime(GetTimeRunning,Time_Bare) + ' /////////////////////////////');
Writeln('');
end;
end;

Procedure OnScreenCheck;
begin;
SC := CountItems('dtm', DragonScale, []);
IncEx(Scales_Collected, SC);
OnScreenUpdate;
end;

Procedure AntiBan;
begin
case Random(900) of
100: RandomRClick;
200: PickUpMouse;
300: RandomMovement;
end;
end;

procedure IfRandoms;
begin
FindNormalRandoms;
If not LoggedIn then TerminateScript;
AntiBan;
end;

Procedure SetObjectDTMs;
begin;
CrumblingWallBank := DTMFromString('mAAEAAHic42FgYGBnZGCYAKTnA/EqIA4A8qOBOA2IfwL5N4BYAsi+CqRNgPQRIN0Dxd1A3ArFLUCsCMTqQKwDxA+A+C6IvnWQob2tESsOilQH4zAgvnVlD8ONS7sZ+IF6SMGMJGJkAADrph/0');
CrumblingWallDung := DTMFromString('mwQAAAHic42RgYFAD4kIgDgViWwZUwA3ELEBcAMTToWKZQFwHxMVAnA3Ei4A4BoifPzzB0NnRDMaxUYEMob6WcHzn2j6Gu9cPMPAD1RHCjERgOAAAmGYT0Q==');
DungeonEntrance := DTMFromString('mrAAAAHic42BgYHBhZGBwYITQnkDsBcRuQGwPxDZAbA1UYwbEJlDaBojtoNgSiHl4efFifqAafJiRAIYBALCaBak=');
PipeEntrance := DTMFromString('mbQAAAHicY2VgYEgAYn8gzgPiGCBOBuLpQDwViCcDcR8QzwHihiQNhqxIG4aUEAuGND8FhpoUcwZ+oDg6ZsSCwQAAtVIJ/w==');
DragonScale := DTMFromString('mrAAAAHic42BgYGAHYh4ozcQAAWxAzAvE/FA2CDACMTMQcwExH5QGq+OPhOrEjvmh5uDCjAQwDAAAkXcBfA==');
FallyTab := DTMFromString('mFQEAAHic42VgYOABYkEGVMAEFRcDYmkglkHC4kDMC1XHDsTcQCwExJJQLAXEEkAsDFXHClXbOXce1GRUnJaUiFUchPmBJKmYkQyMAgB+bgVi');
EmptyDish := DTMFromString('mwQAAAHic42RgYOAHYiYGCOAGYhEglgZicSDmA2JWIOYCYgEg5oTKgzAPkj4QnR9iBGXhxvxQ+/BhRiIwHAAAIKoCbw==');
HalfDish := DTMFromString('mlwAAAHicY2dgYMhhYmAoB+JUII4H4gwgLgXiAiB+zADBb4D4LhDfgNIgfpCyJJBkwor5gSQuzIgHQwEAfCEKRA==');
FullDish := DTMFromString('mAAEAAHic42FgYBAEYmkgFgdiESDmAWJmBghgAWIuIBYGYgkglgFidiiGqYGp44aaJQLFAlCx8kxnIMlENOYHkqRgRhIxMgAA/kwDNQ==');
DragonHide := DTMFromString('mwQAAAHic42RgYDjExMBwBojPAfFpID4CxLuBeBMQbwPig0AcwMjA4AbE/kAcAcRxQBwDxMFA7AHETkDMxeMJNI0JL+YHkoQwIxEYDgCNFArH');
end;

Procedure SetWalkingDTMs;
begin;
Q[0] := DTMFromString('mggAAAHicY2NgYIhkYmCIB+IcIM4F4jwmiJgUUE6MAULrArE3EBsDcXKKAYNyiAiDrQkXg3GcBBhHOcsz8APlsGFGHBgCAI83B8s=');
Q[1] := DTMFromString('mlwAAAHicY2dgYPBkYmAIBeJoIK4A4nogrgTibCA2AsqLQrEKEFsBsQMQZwKxm5cKQ1v3HDA2jpNgUA4RAdOBNjIM/EB5XJgRD4YCADrtC1E=');
Q[2] := DTMFromString('mwQAAAHic42RgYLBjYmDwBuIgII4B4mwgrgRiPyC2B2IrIHYFqlMGYj0gNgJiE5A+IG4C4iIgjgbi0mJlhrbeGRjYOEEEjJXDBBj4geoIYUYiMBwAAPz3EVA=');
Q[3] := DTMFromString('mwQAAAHic42RgYHBnYmCIBeIyIC4H4logbgbiLiDWB2IjIA4DqmsEYmEgVgVifSC2AmJnIA4GYlcgLk02YsjNTGNo652Bga3U+Bi0pDgZ+IHqCGFGIjAcAABYvhHT');
Q[4] := DTMFromString('m6wAAAHic42ZgYPBkYmDoA+I4ILZngvC9gNgPiAOheD4QrwFibaD6diDuBOIAIA4E4mggTgPiXCCuAmINILYEmeunxFCcn82QGe/C0NY7Ay/mB6onFjOSgJEAAAyfGWM=');
end;

Procedure FreeAllDtms;
begin;
FreeDTM(CrumblingWallBank);
FreeDTM(CrumblingWallDung);
FreeDTM(DungeonEntrance);
FreeDTM(PipeEntrance);
FreeDTM(DragonScale);
FreeDTM(FallyTab);
FreeDTM(EmptyDish);
FreeDTM(HalfDish);
FreeDTM(FullDish);
FreeDTM(DragonHide);
FreeDTM(Q[0]);
FreeDTM(Q[1]);
FreeDTM(Q[2]);
FreeDTM(Q[3]);
FreeDTM(Q[4]);
end;

Function HPLevel: Integer;
var
ColourString: String;
begin
Result:= GetMMLevels('HP', ColourString);
end;

Procedure HealthCheck;
begin;
if (HPLevel <= (WTRA)) then
begin;
Writeln('Withdrawing lobsters and eating till health is back up!');
Lobby := DTMFromString('mggAAAHicY2NgYHBgZGDwA2I3IHYCYiMgNgTiLKBcIhDnAXElEBcAcQYQrw+TAJJMGJgfSGLDjDgwBAAABHQFlw==');
Repeat;
FindDTM(Lobby,x,y,MSX1,MSY1,MSX2,MSY2);
Mouse(x,y,5,5,true);
wait(randomrange(1400,1500));
FindDTM(Lobby,x,y,MIX1,MIY1,MIX2,MIY2);
Mouse(x,y,5,5,false);
wait(randomrange(1400,1500));
ChooseOption('Eat');
wait(randomrange(2350,2500));
Until (HPLevel >= (WTRA+random(50)))
FreeDTM(Lobby);
end else
begin
Writeln('Health is above the set requirement!');
exit;
end;
end;

Procedure RelocateNow;
begin;
If InvFull then exit;
Writeln('No scales found, relocating!');
SPS_WalkToPos(Point(415, 307));
while IsMoving do wait(50+random(50));
IfRandoms;
end;

function FindScale(x, y: Integer): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;

begin
If InvFull then exit;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.30, 1.81);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 8071195, MSX1, MSY1, MSX2, MSY2, 7);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 10, 10);

For I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 0, 0);
If(WaitUpTextMulti(['B','Bl','lue','dr','rag','gon','sc','ale','le','hi','id','de'],3000)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;

Procedure StartPicking;
begin;

if InvFull then Exit;

if (FindScale(X,Y)) then
begin
ClickMouse2(True);
Writeln('Clicked scale!')
wait(randomrange(2250,3000));
while IsMoving do wait(50+random(25));
StartPicking;
end;

if not (FindScale(X,Y)) then RelocateNow;

IfRandoms;
end;

Procedure ToTheCenter;
begin;
Mouse(540,25,10,10,true);
SetAngle(0);
Writeln('To the middle, then we commence the collecting!');
SPS_WalkToPos(Point(407, 311));
while isMoving do wait(50+random(50));
end;

Procedure CheckPipe;
begin;

if IsChatBoxTextBetween('use', clblack, 7, 8) then
begin;
Writeln('Uh oh, looks like the pipe is in use! Waiting our turn.');
MarkTime(S);
Repeat;
Wait(RandomRange(2900,3100));
MMouse(258,142,3,3)
if (WaitUptextMulti(['bsta','ip'], 1000)) then ClickMouse2(True);
Wait(RandomRange(5750,6000));
Until TimeFromMark(S)>=(9300);
end;

if IsChatBoxTextBetween('gilit', clblack, 7, 8) then
begin;
if FindDtm(FullDish, x, y, MIX1, MIY1, MIX2, MIY2) or FindDtm(HalfDish, x, y, MIX1, MIY1, MIX2, MIY2) then
begin;
Writeln('You cant enter the pipe without eating your pie, silly!');
MMouse(x, y, 3, 3);
ClickMouse2(True);
wait(randomrange(1600,1800))
MMouse(258,142,3,3)
if (WaitUptextMulti(['bsta','ip'], 1000)) then ClickMouse2(True);
Wait(RandomRange(5750,6000));
end;
end;
end;

Procedure EnterPipe;
begin;

MakeCompass('e');

wait(randomrange(1250,1500));

if FindDTMRotated(PipeEntrance,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi/60, aFound) then
begin;
MMouse(x, y, 2, 2);
if (WaitUptextMulti(['bsta','ip'], 5000)) then ClickMouse2(True);
Writeln('Squeezing through the pipe!');
Wait(RandomRange(6500,6750));
end;

if not FindDTMRotated(PipeEntrance,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi/60, aFound) then
begin;
Wait(RandomRange(3000,3500));
EnterPipe;
end;
end;

Procedure EatPie;
begin;
while IsMoving do wait(75+random(75));
if FindDtm(FullDish, x, y, MIX1, MIY1, MIX2, MIY2) or FindDtm(HalfDish, x, y, MIX1, MIY1, MIX2, MIY2) then
begin;
MMouse(x, y, 3, 3);
ClickMouse2(True);
wait(randomrange(1600,1800))
exit;
end;
end;

Procedure EnterDungeon;
begin;
while IsMoving do wait(75+random(75));
if FindDTMRotated(DungeonEntrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi, aFound) then
begin;
MMouse(x, y, 5, 5);
if (WaitUptext('teps',500)) then ClickMouse2(True);
Writeln('Entering the dungeon!');
wait(randomrange(3000,4000));
while IsMoving do wait(75+random(75));
end else
begin;
if FindSymbol(x,y,'dungeon') then
begin;
Mouse(x,y,0,0,true)
Wait(RandomRange(1250,1500));
while IsMoving do wait(75+random(75));
EnterDungeon;
end else
begin;
IfRandoms;
Writeln('No dungeon found, terminating script!');
LogOut;
TerminateScript;
end;
end;
end;

Procedure DungeonP1;
begin;
SetRun(True);
ObjDTM_Walk('61:21:4:0:7:128:48:1:7:70:67:1:7:70:39:1:7:62:95:4:49:12:49:33:78:34:79:12', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('28:42:4:1:7:90:78:1:7:82:59:1:7:90:51:1:7:82:30:4:18:30:54:30:54:62:17:62', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('21:49:5:1:7:58:114:1:7:97:99:1:7:42:98:1:7:133:63:1:7:39:79:4:7:66:48:66:43:26:18:29', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('35:59:3:1:7:101:110:2:7:90:68:2:7:43:83:4:23:48:24:71:58:71:56:45', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('64:54:4:2:7:74:84:2:7:85:95:2:7:89:80:2:7:130:80:4:58:47:58:61:75:61:74:46', 1, 100, 80, True);
Wait(500);
while IsMoving do wait(75+random(75));
end;

Procedure DungeonP2;
begin;
SetRun(True);
if FindDTMRotated(Q[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(0);
end;
end;

procedure DungPaths;
begin
SymbolAccuracy := 0.5
DungeonP1;
if FindSymbol(x,y,'dungeon') then
begin;
SymbolAccuracy := 0.8
EnterDungeon;
exit;
end;
DungeonP2;
if FindSymbol(x,y,'dungeon') then
begin;
SymbolAccuracy := 0.8
EnterDungeon;
exit;
end;
if not FindSymbol(x,y,'dungeon') then
begin
Writeln('Failed to make it to the dungeon, logging out!');
LogOut;
TerminateScript;
end;
end;

Procedure ClimbWall;
begin;

SetAngle(0);

if FindObjEx(x,y,['cru','umb','ling'],[13362410,12243671,12704223],200,7,233,195,240,200) then
begin
MMouse(x,y,0,0);
wait(250);
If WaitUpTextMulti(['cru','umb','ling'],200) then
begin
ClickMouse2(True);
Writeln('Over the wall, and on to the dungeon!');
Wait(RandomRange(5000,5500));
DungPaths;
end;
end;

if FindObjEx(x,y,['cru','umb','ling'],[13362410,12243671,12704223],200,7,233,160,240,170) then
begin
MMouse(x,y,0,0);
wait(250);
If WaitUpTextMulti(['cru','umb','ling'],200) then
begin
ClickMouse2(True);
Writeln('Over the wall, and on to the dungeon!');
Wait(RandomRange(5000,5500));
DungPaths;
end;
end;

if FindObjEx(x,y,['cru','umb','ling'],[13362410,12243671,12704223],200,7,233,130,240,140) then
begin
MMouse(x,y,0,0);
wait(250);
If WaitUpTextMulti(['cru','umb','ling'],200) then
begin
ClickMouse2(True);
Writeln('Over the wall, and onto the dungeon!');
Wait(RandomRange(5000,5500));
DungPaths;
end;
end;

IfRandoms;
end;

Procedure ToWallF;
begin;
SetRun(True);
Writeln('To the wall!');
ObjDTM_Walk('43:90:2:1:7:11:70:1:7:11:91:4:24:72:25:106:59:106:59:70', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('50:114:4:1:7:103:119:1:7:115:111:1:7:50:103:1:7:50:75:4:37:104:37:127:64:127:64:103', 1, 100, 80, True);
Wait(500);
while IsMoving Do Wait(100+random(50));
ClimbWall;
end;

Procedure FallyTablet;
begin;
if FindDtm(FallyTab, x, y, MIX1, MIY1, MIX2, MIY2) then
begin;
WriteLn('Inventory is full, for Falador!')
repeat
MMouse(x, y, 2, 2);
wait(randomrange(500,750));
if (WaitUptext('ador', 750)) then ClickMouse2(True);
wait(randomrange(2850,3000))
until ObjDTM_InArea('81:68:1:1:7:113:129:4:45:28:46:100:123:102:121:28', True)
or ObjDTM_InArea('82:68:1:0:7:60:103:4:43:41:44:125:115:124:114:38', True)
or ObjDTM_InArea('82:64:1:0:7:106:99:4:47:35:45:112:132:113:125:34', True)
or ObjDTM_InArea('81:69:1:0:7:115:48:4:51:38:51:98:119:99:118:34', True)
end;
end;

procedure ToBankF1;
begin
Mouse(540,25,10,10,true);
SetAngle(0);
SetRun(True);
ObjDTM_Walk('31:83:2:0:7:59:107:0:7:106:104:4:12:71:12:98:54:98:53:70', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('51:112:2:0:7:51:133:1:7:83:132:4:36:101:37:124:66:121:65:100', 1, 100, 80, True);
Wait(500);
while IsMoving do wait(75+random(50));
wait(RandomRange(1500,2000));
Exit;
end;

procedure ToBankF2;
begin
Mouse(540,25,10,10,true);
SetAngle(0);
SetRun(True);
ObjDTM_Walk('31:86:2:0:7:106:104:0:7:114:53:4:16:72:16:99:54:100:53:72', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('51:112:2:0:7:51:133:1:7:83:132:4:36:101:37:124:66:121:65:100', 1, 100, 80, True);
Wait(500);
while IsMoving do wait(75+random(50));
wait(RandomRange(1500,2000));
Exit;
end;

procedure ToBankF3;
begin
Mouse(540,25,10,10,true);
SetAngle(0);
SetRun(True);
ObjDTM_Walk('32:81:2:0:7:59:106:0:7:114:53:4:16:65:16:97:52:98:51:65', 1, 100, 80, True);
Wait(500);
ObjDTM_Walk('51:112:2:0:7:51:133:1:7:83:132:4:36:101:37:124:66:121:65:100', 1, 100, 80, True);
Wait(500);
while IsMoving do wait(75+random(50));
wait(RandomRange(1500,2000));
Exit;
end;

function IsAtBank: Boolean;
begin
Result := ObjDTM_InArea('80:80:5:0:7:78:105:1:7:112:105:1:7:87:135:1:7:18:95:1:7:19:73:4:61:57:61:94:99:93:96:55', True);
end;

procedure BankPaths;
begin
Writeln('On to the bank!')
ToBankF1;
if IsAtBank then exit;
ToBankF2;
if IsAtBank then exit;
ToBankF3;
if IsAtBank then exit;
end;

Procedure BankAccount;
begin
if not LoggedIn then Exit;
if not IsAtBank then BankPaths;
repeat
OpenBankFast('fwb');
wait(500 + random(500));
if PinScreen then InPin(B);
wait(500 + random(500));
until(BankScreen);
IfRandoms;
end;

Procedure Banking;
begin
if not LoggedIn then exit;

OnScreenCheck;

if FindDTM(DragonScale, x, y, MIX1, MIY1, MIX2, MIY2) then
begin;
Writeln('Depositing our dragonscales!')
wait(700+random(300));
mouse(x,y,3,3,false);
wait(700+random(300));
ChooseOption('eposit-All');
end;

repeat
if FindDTM(DragonHide, x, y, MIX1, MIY1, MIX2, MIY2) then
begin;
Writeln('Depositing our dragon hides!')
wait(700+random(300));
mouse(x,y,3,3,false);
wait(700+random(300));
ChooseOption('eposit');
end;
until not FindDTM(DragonHide, x, y, MIX1, MIY1, MIX2, MIY2);

if FindDTM(EmptyDish, x, y, MIX1, MIY1, MIX2, MIY2)then
begin;
Writeln('Depositing empty pie dish!')
repeat
wait(700+random(300));
mouse(x,y,3,3,true);
until not FindDTM(EmptyDish, x, y, MIX1, MIY1, MIX2, MIY2);
if not FindDTM(FullDish, x, y, MIX1, MIY1, MIX2, MIY2) or FindDTM(HalfDish, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Withdrawing new summer pie!');
repeat
FindDTM(FullDish, x, y, MSX1, MSY1, MSX2, MSY2)
wait(250+random(250));
mouse(x,y,3,3,true);
wait(1500);
until FindDTM(FullDish, x, y, MIX1, MIY1, MIX2, MIY2);
end;
end;

HealthCheck;

if not (FindDTM(FullDish, x, y, MIX1, MIY1, MIX2, MIY2) or FindDTM(HalfDish, x, y, MIX1, MIY1, MIX2, MIY2)) then Banking;

CloseBank;

IfRandoms;
end;

Procedure MainLoop;
begin;
Mouse(540,25,20,20,true);
SetAngle(0);
ToWallF;
EatPie;
EnterPipe;
CheckPipe;
ToTheCenter;
Repeat;
StartPicking;
RelocateNow;
Until InvFull;
FallyTablet;
BankPaths;
BankAccount;
Banking;
end;

Begin;
ClearDebug
MouseSpeed := RandomRange(10,20);
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False
SetupSRL;
ObjDTM_Setup;
ActivateClient;
DeclarePlayers;
LoginPlayer;
SMART_ClearCanvas;
SetObjectDTMs;
SetWalkingDTMs;
SPS_Setup(RUNESCAPE_OTHER,['TAVERLY_DUNGEON']);
Repeat;
Mainloop;
Until(AllPlayersInactive);
FreeAllDTMs;
End.


I use a custom SPS map for this fisher, so if any wants to try it let me know and I can get it to you!

Program Als_LRC_Fisher;
{$DEFINE SRL5}
{$DEFINE SMART} // Edit this line out to run the script in your browser.
{$i SRL/srl.simba}
{$i sps/sps.simba}
{$i srl/srl/skill/fighting.simba}
{$i SRL/SRL/misc/paintsmart.simba}

//////////////////////// Fill The Variables Below In \\\\\\\\\\\\\\\\\\\\\\\\\\\

Const
WTRA = 550; // Enter how low health can go before resting.
FishTimer = 6000; // Do NOT touch this variable.
World = 88; // Enter world you want to fish in.
PP = ''; // Enter your pin here.
OnScreenProg = 0; // 0 for an On Screen Report or 1 for no On Screen Report.
FishType = 0; // 0 to catch Rock Tails and 1 to catch Cave Fish.

/////////////////////////////// NO Touchy \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Var
x,y,fish,bankbox,FC,Fish_Caught,Fish_XP,XP,XPPH,FPH,TimeGone,P: Integer;
fshield,fdamage: Integer;
FishCaught,FishXP,Info1,Info2,Info3,Info4,XPPH2,FPH2,FFC: String;
ToFish,ToBankBox,FSpot1,FSpot2,FSpot3,Restart,RunAwayN: TPointArray;

////////////////////////// Fill In Log In Info \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :=''; // Enter your username here.
Players[0].Pass :=''; // Enter your password here.
Players[0].Nick :=''; // Enter nickname for progres report.
Players[0].Active:=True;
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins'];
Players[0].WorldInfo := [False, World];
End;

////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
///////////////////////DO NOT TOUCH ANYTHING PAST HERE \\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Procedure AntiBan;
Begin
Case Random(500) Of
100: SleepAndMoveMouse(500);
200: PickUpMouse;
300: RandomMovement;
400: HoverSkill('Fishing',False);
500: CompassMovement(45,90,true);
End;
End;

Procedure IfRandoms;
Begin
FindNormalRandoms;
LampSkill := 'summoning';
AntiBan;
End;

procedure SmartProggy;
var
ourPhoto : Integer;
begin
ourPhoto := BitmapFromString(510, 135, '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');
SMART_DrawBitmap(false,ourPhoto,Point(5,15));
FreeBitmap(ourPhoto);
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(360,71,'me');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 100,10);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;

Procedure OnScreenUpdate;
Begin

Begin
FC := CountItems('dtm', Fish, []);
XP := (FC*380);
IncEx(Fish_Caught, FC);
IncEx(Fish_XP, XP);
TimeGone := (GetTimeRunning/1000);
FishCaught := IntToStr(Fish_Caught);
FishXP := IntToStr(Fish_XP);
XPPH := (3600*(Fish_XP))/((TimeGone));
FPH := (3600*(Fish_Caught))/((TimeGone));
XPPH2 := IntToStr(XPPH);
FPH2 := IntToStr(FPH);
Info1 := ('Fish Caught = ' + FishCaught)
Info2 := ('Fising XP = ' + FishXP)
Info3 := ('Fish Per Hr = ' + FPH2)
Info4 := ('Xp Per Hr = ' + XPPH2)
End;

If (OnScreenProg=0) Then
Begin
PrintOnSmart(['Last banked at '+(TheTime)],Point(15,210),16777215);
PrintOnSmart([MsToTime(GetTimeRunning,Time_Bare)],Point(15,240),16777215);
PrintOnSmart([Info1+' so '+Info3],Point(15,265),16777215);
PrintOnSmart([Info2+' so '+Info4],Point(15,295),16777215);
End;

Begin
Writeln('');
Writeln('====================================================================');
Writeln('************************ Als LRC Fisher ****************************');
Writeln('====================================================================');
Writeln('You have caught ' + FishCaught + ' fish. That equals ' + FPH2 + ' fish per hour!');
Writeln('You have gained ' + FishXP + ' xp. That equals ' + XPPH2 + ' xp per hour!');
Writeln('====================================================================');
Writeln('************************ Als LRC Fisher ****************************');
Writeln('====================================================================');
Writeln('');
End;

End;

Procedure SetDTMs;
Begin
Fish := DTMFromString('mrAAAAHic42BgYMhmYmDIBOJCIK4C4iIgzgHiRCCOBeLnQDV3gfgWlH4LxJ+B+AMQvwBij2APIMmEE3MBSXyYkQCGAQD1rAvw');
BankBox := DTMFromString('mggAAAHicY2NgYDgJxKeheA8QbwPie0C8AIhboGJNQLwTiGcAcU91HENyuDNDWbITQ060LUNRggNDYqgjAz9QDhtmxIEhAABB1g9T');
FShield := DTMFromString('mrAAAAHic42BgYOAFYgEg5gdiHiBmB2I+IGaBijECMRMQs0LlQOJcUBqkl9XUCS8mBBgJYBgAAK0nBH8=');
FDamage := DTMFromString('mbQAAAHicY2VgYNBmhGAdINYDYn0glgZiBSBWBmI5IJYA4nQ2NoYEPj4wns3DA6a5gPrRMSMWDAYAIPEEVA==');
End;

Procedure FreeDTMSet;
Begin
FreeDTM(Fish);
FreeDTM(BankBox);
FreeDTM(FShield);
FreeDTM(FDamage);
End;

Function HPLevel: Integer;

Var
ColourString: String;

Begin
Result:= GetMMLevels('HP', ColourString);
End;

Procedure AllMyPaths;
Begin
ToFish := [Point(303, 303), Point(307, 323), Point(279, 363), Point(249, 404)];
ToBankBox := [Point(147, 379), Point(191, 379), Point(231, 387), Point(279, 379), Point(303, 335), Point(307, 299), Point(287, 287)];
RunAwayN := [Point(185, 385), Point(235, 385), Point(275, 370), Point(305, 330), Point(288, 287)];
FSpot1 := [Point(247, 407)];
FSpot2 := [Point(183, 400)];
FSpot3 := [Point(150, 380)];
Restart := [Point(180, 395), Point(220, 395), Point(251, 395)];
End;

Procedure HealthCheck;
Begin
If HPLevel < (WTRA) Then
Begin
If (Not FindSymbolIn(x,y,'Bank',600,60,640,100)) Then SPS_WalkPath(ToBankBox);
Writeln('Resting until hp gets back up!');
setrest;
Repeat;
If (not LoggedIn) Then LoginPlayer;
wait(randomrange(1500,2500));
AntiBan;
Until HPLevel > (WTRA + random(150));
End;
End;

Procedure ToFishing;
Begin
HealthCheck;
SetRun(True);
MakeCompass('n');
SPS_WalkPath(ToFish);
While isMoving Do
wait(100+random(50));
IfRandoms;
End;

Function FindPulley(x, y: Integer): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;

begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 0.18);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6521492, MSX1, MSY1, MSX2, MSY2, 3);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 60, 60);

For I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 0, 0);
If(WaitUpTextMulti(['dep','osit','pul','ull','ley','lif','ift'],500)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;

Procedure Banking;
Begin

If (FindPulley(X,Y)) Then
Begin
If Not FindDTM(Fish,x,y,MIX1,MIY1,MIx2,MIY2) then ToFishing;
FC := CountItems('dtm', Fish, []);
XP := (FC*380);
FFC := IntToStr(FC);
Writeln('Trying to bank ' + FFC + ' fish!');
OnScreenUpdate;
ClickMouse2(True);
Wait(RandomRange(2250,2750));
If PinScreen Then InPin(PP);
Wait(RandomRange(1000,1250));
If FindDTM(Fish, x, y, MSX1, MSY1, MSX2, MSY2) Then
Begin
Mouse(x,y,3,3,False);
Wait(RandomRange(700,850));
ChooseOption('ll');
ToFishing;
End Else ToFishing;
End Else
Begin
SymbolAccuracy := 0.50
FindSymbol(x,y,'bank');
Mouse(x,y,0,0,true);
Wait(RandomRange(1000,1300));
SymbolAccuracy := 0.80
Banking;
End;;
End;

Procedure ToBank;
Begin
SetRun(True);
MakeCompass('n');
SPS_WalkPath(ToBankBox);
While isMoving Do
wait(100+random(50));
IfRandoms;
Banking;
End;

Procedure RunAwayNow;
Begin
SetRun(True);
MakeCompass('n');
Writeln('Fight detected. To the bank!');
SPS_WalkPath(RunAwayN);
While isMoving Do wait(100+random(50));
Writeln('Banking, then returning to fish!');
Banking;
IfRandoms;
End;


////Courtesy of putonajonny
Procedure CheckFight;
Begin
If InFight Then
Begin
Writeln('Checking for fight....');
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow;
Wait(250);
if(FindDTM(FShield, x, y, MSX1, MSY1, MSX2, MSY2) Or FindDTM(FDamage, x, y, MSX1, MSY1, MSX2, MSY2)) Then
RunAwayNow Else Writeln('No fight detected. Back to fishing!');
End;
End;

Function PColor: Integer;

Var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;

Begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.10, 1.00);

FindColorsSpiralTolerance(MSCX, MSCY, arP, 859691, MSX1, MSY1, MSX2, MSY2, 2);
If (Length(arP) = 0) Then
Begin
//Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
End;

arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);

For i := 0 to arL Do
Begin
ColorToXYZ(arC[i], X, Y, Z);

If (X >= 1.12) And (X <= 2.02) And (Y >= 1.07) And (Y <= 1.93) And (Z >= 0.45) And (Z <= 0.74) Then
Begin
Result := arC[i];
//Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
End;
End;

ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

If (i = arL + 1) Then
//Writeln('AutoColor failed in finding the color.');
End;

Function IsFishing: Boolean;

Var
CTS: Integer;
TPA: TPointArray;

Begin
CTS := GetColorToleranceSpeed;

Begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.07, 0.75);
FindColorsSpiralTolerance(x, y, TPA, PColor, 245, 130, 285, 195, 3);
ColorToleranceSpeed(CTS);
result := (Length(TPA) > 0);

If result Then
Exit;

End;
End;

Procedure FishingWait;

Var
T: Integer;

Begin

Marktime(T);

Repeat

CheckFight;

If IsFishing Then
Marktime(T);

If (InvCount=28) or (FindNPCChatText('carry',Nothing)) Then
Begin
WriteLn('All full. Time to bank the fish!');
ToBank;
End;

AntiBan;

IfRandoms;

Until(TimeFromMark(T) >= FishTimer)

Exit;
End;

Function FindFishingSpot(var fx, fy: Integer): Boolean;

Var
arP: TPointArray;
ararP: T2DPointArray;
tmpCTS, i, arL: Integer;
P: TPoint;

Begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.10, 0.40);

If not(FindColorsTolerance(arP, 11971492, MSX1, MSY1, MSX2, MSY2, 10)) Then
Begin
//Writeln('No Rocktail spot found. Relocating....');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
End;

SortTPAFrom(arP, Point(MSCX, MSCY));
ararP := SplitTPAEx(arP, 10, 10);
arL := High(ararP);

For i := 0 to arL Do
Begin
P := MiddleTPA(ararP[i]);
MMouse(P.x, P.y, 5, 5);
If (waituptext('ockt', 1000)) Then
Begin;
Result := True;
Break;
End;
End;

ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

If (i = arL + 1) Then
Begin
//Writeln('No Rocktail spot found. Relocating....');
Exit;
End;

GetMousePos(fx, fy);
End;

function FindFishingSpotC(var fx, fy: Integer): Boolean;
var
arP: TPointArray;
ararP: T2DPointArray;
tmpCTS, i, arL: Integer;
P: TPoint;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.10, 0.40);

if not(FindColorsTolerance(arP, 11971492, MSX1, MSY1, MSX2, MSY2, 10)) then
begin
//Writeln('No Rocktail spot found. Relocating....');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;

SortTPAFrom(arP, Point(MSCX, MSCY));
ararP := SplitTPAEx(arP, 10, 10);
arL := High(ararP);

for i := 0 to arL do
begin
P := MiddleTPA(ararP[i]);
MMouse(P.x, P.y, 5, 5);
if (waituptext('vefis', 1000)) then
begin;
Result := True;
Break;
end;
end;

ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

if (i = arL + 1) then
begin
//Writeln('No Rocktail spot found. Relocating....');
Exit;
end;

GetMousePos(fx, fy);
end;

Procedure StartFishing;
Var
X,Y: Integer;
begin;
CheckFight;

if (not FindSymbol(x,y,'fish')) then ToFishing;

if (FishType=0) then
begin;
if (FindFishingSpot(X, Y)) then
begin;
wait(300+randomrange(200,400));
ClickMouse2(True);
while isMoving do
wait(100+random(50));
Writeln('Starting to fish!');
FishingWait;
end;

if not (FindFishingSpot(X, Y)) then
begin;
Writeln('No spot found, relocating...');
end;
end;

if (FishType=1) then
begin;
if (FindFishingSpotC(X, Y)) then
begin;
wait(300+randomrange(200,400));
ClickMouse2(True);
while isMoving do
wait(100+random(50));
Writeln('Starting to fish!');
FishingWait;
end;

if not (FindFishingSpotC(X, Y)) then
begin;
Writeln('No spot found, relocating...');
end;
end;

IfRandoms;
end;

Procedure Relocate;
Begin;

MarkTime(P);
Repeat;
If InvFull or (FindNPCChatText('carry',Nothing)) Then
Begin
WriteLn('All full. Time to bank the fish!');
ToBank;
End;

If FindSymbolIn(x,y,'Fish',620,30,750,120) Then
Begin
HealthCheck;
WriteLn('Moving to spot 2...');
SetRun(True);
MakeCompass('n');
SPS_WalkPath(FSpot2);
While isMoving Do
wait(100+random(50));
IfRandoms;
StartFishing;
End;

If FindSymbolIn(x,y,'Fish',575,85,635,125) Then
Begin
HealthCheck;
WriteLn('Moving to spot 3...');
SetRun(True);
MakeCompass('n');
SPS_WalkPath(FSpot3);
While isMoving Do
wait(100+random(50));
IfRandoms;
StartFishing;
End;

If FindSymbolIn(x,y,'Mine',605,60,640,90) Then
Begin
HealthCheck;
WriteLn('Back to spot 2...');
SetRun(True);
MakeCompass('n');
SPS_WalkPath(FSpot2);
While isMoving Do
wait(100+random(50));
If (FindFishingSpot(X, Y)) Then
Begin
StartFishing;
End Else
Begin
HealthCheck;
Writeln('Back to spot 1...');
SPS_WalkPath(FSpot1);
StartFishing;
End;
End;
Until (TimeFromMark(P) >= 5000)

IfRandoms;
End;

Procedure MainLoop;
Begin
If Not (LoggedIn) Then Exit;
SetDTMs;
MakeCompass('n');
SetAngle(0);
ToFishing;
StartFishing;
Relocate;
FreeDTMSet;
End;

Begin;
ClearDebug
MouseSpeed := RanDomRange(10,20);
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False
SetupSRL;
SPS_Setup(RUNESCAPE_OTHER,['living_rock_caverns']);
ActivateClient;
DeclarePlayers;
LoginPlayer;
SMART_ClearCanvas;
wait(1000);
PrintOnSmart(['A progress report will appear after banking. Good luck!'],Point(15,255),16777215);
SmartProggy;
OnScreenUpdate;
AllMyPaths;
Repeat;
Mainloop;
Until(AllPlayersInactive);
SMART_ClearCanvas;
OnScreenUpdate;
End.


Program Als_Fire_Rune_Crafter;
{$DEFINE SRL5}
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i ObjectDTM/ObjDTMInclude.simba}
{$i sps/sps.simba}

Const
World = 70; /// Enter world you craft fires in.
BX = ''; /// Enter bank pin here.
OnScreen = (0); /// 0 for screen progress report on and 1 for it off.
XPPerT = (203); /// Enter how much xp you get for accurate xp display.
/// My suggestion, is do one trip before starting the script with
/// the same amount of pouches you will use and a dueling ring in
/// your inventory to see how much xp you get.

Var
x,y, Trips,CurrentXP,XPH,TimeGone: Integer;
Dring,Essence,FRune,GPouch,LPouch,MPouch,SPouch,FAltar,TheMid1,TheMid2,TheMid3: Integer;
afound: extended;

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :=''; /// Username goes here.
Players[0].Pass :=''; /// Password goes here.
Players[0].Nick :=''; /// Enter few letters of your display name for progress report and random detection.
Players[0].Active:=True;
Players[0].BoxRewards := ['oins','mote','ostume'];
Players[0].WorldInfo := [False, World];
End;

Procedure SetTheDTMs;
Begin
DRing := DTMFromString('mrAAAAHic42BgYEgB4lggTgPiLCidAMSRQBwBxMlAXATEhVC1cUCcBMTpQJwHxOJzpYEkE07MDyTxYUYCGAYA2j4HrQ==');
Essence := DTMFromString('m1gAAAHic42JgYDAFYnUg1oKyHYHYGYqtgVgXKp8DxFlAXArElUBcDMQZQJwHxBVAXA7E+UDs7uICJJkIYn4gSQxmJBIjAADQBAgI');
FRune := DTMFromString('mrAAAAHic42BgYGgF4kYg7gTiyUDcBsTlQFwBxJOA+DIUXwLiG0D8EIivAfEZID4HxDMVxeCYgYEJA/MDSXyYkQCGAQDCYw3N');
GPouch := DTMFromString('mrAAAAHic42BgYHBiYmDwAuIAIPYDYkcgNgZicyC2BOKXQDW3gPgZEH8E4i9A/A6IHwHxTSCOCHABkkw4MT+QxIcZCWAYAAA+owrY');
LPouch := DTMFromString('mlwAAAHicY2dgYOAGYiYGCOABYnEgFgZiFiDmB2IuIBaCigsAMSNUbaCXHVQnJk6B6sWGGfFgKAAAx6YCTA==');
MPouch := DTMFromString('mwQAAAHic42RgYJjKxMAwHYj7gXgeEM9ngoj1AvFEIJ4NxC+A6m4A8R0ofgPEH4H4NRBfB+KbQBzs4wAkmfBifiBJCDMSgeEAAHKfDtE=');
SPouch := DTMFromString('m1gAAAHic42JgYDjAxMCwE4h3A/ExID4FxPuh7G1AvB2IDwLxc6Dae0B8E4jvAvELIH4PxO+A+CUQP4HK+XnYAEkmgpgfSBKDGYnECAAAl2USAA==');
FAltar := DTMFromString('m1gAAAHic42JgYAhiZGCIB+JYII4BYhcgtgbiKCAuA+J8IA4F4v0MELwZiE8D8UogPg/EN4H4JBBvhIrFRsej4OjocIbU1EQwjo+PBvNjYyMZ+IFqicGMRGIEAAAFkhaa');
TheMid1 := DTMFromString('m1gAAAHic42JgYJjMxMBgAcSlQNwExNVA3AjEy4F4BRA3A/ESIK4Aqo0EYhMgFgVidSBWA2JrIDYC4logrgPiYC9zhk/ns+BYRUGGwcVIiOH6jjgwP9RDn8HHUYuBH6iWGMxIJEYAAOT0Fpo=');
TheMid2 := DTMFromString('mrAAAAHic42BgYJjCxMCQDsQ5QNwJxCuBuAKIw4A4BMQGqqkE4j4gng7ElkBsAsTJQNwCxMFe5gxWpmxgrC7JyfDpfBYK5geqwYcZCWAYAACazBJx');
TheMid3 := DTMFromString('maQEAAHicrcw9C0EBFMbxh8EqiyhvZRAlxL3EwqAkyUs2JESsBosyXC+TskiZ5JP6X2xGTv06z+nU45F0cUrWxwEnXHHHAzecscMAE8wxwxBjrOlZYQMLexyx1fu3wBRLhBBBEN4PP7r1vNrVpHq1lEYdU8NW7nXbu1FJvLKt38yqaLiUTERVzgRkxn0qGTEV0mG56fmV4w++5gmYNBuF');
End;

Procedure FreeTheDTMs;
Begin;
FreeDTM(DRing);
FreeDTM(Essence);
FreeDTM(FRune);
FreeDTM(GPouch);
FreeDTM(LPouch);
FreeDTM(MPouch);
FreeDTM(SPouch);
FreeDTM(FAltar);
FreeDTM(TheMid1);
FreeDTM(TheMid2);
FreeDTM(TheMid3);
End;

Procedure AntiBan;
Begin
Case Random(500) Of
100: SleepAndMoveMouse(500);
200: PickUpMouse;
300: RandomMovement;
400: HoverSkill('RuneCrafting',False);
500: CompassMovement(45,90,true);
End;
End;

Procedure IfRandoms;
Begin
FindNormalRandoms;
AntiBan;
End;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);

Var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;

Begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(360,71,'me');
TPH := High(TP);
For I := 0 to TPH do
Begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
For B := 0 to High(TTP) Do
Begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
End;
End;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 100,10);
FreeBitmap(Pic);
FreeBitmap(Pic2);
End;

Procedure OnScreenProggy;
Begin;
AntiBan;
TimeGone := (GetTimeRunning/1000);
CurrentXP := (Trips*XPPerT);
XPH := ((Currentxp*3600)/TimeGone);

If (OnScreen=0) Then
Begin
SMART_ClearCanvas;
PrintOnSmart(['Last banked at '+(TheTime)],Point(15,210),16777215);
PrintOnSmart([MsToTime(GetTimeRunning,Time_Bare)],Point(15,240),16777215);
PrintOnSmart(['Trips = '+IntToStr(Trips)],Point(15,265),16777215);
PrintOnSmart(['Current xp = '+IntToStr(CurrentXP)+' so '+IntToStr(XPH)+' xp/hr!'],Point(15,295),16777215);
End;
End;

Procedure OpenChest;
Begin;
If OpenBankChest(SRL_BANK_SW) Then
Begin;
Wait(RandomRange(2750,3250));
If PinScreen then
Repeat;
InPin(BX);
Wait(RandomRange(1000,1250));
Until BankScreen;
End Else
Begin
SymbolAccuracy := 0.5;
FindSymbol(x,y,'Bank');
Mouse(x,y,3,3,true);
Wait(RandomRange(1700,2300));
OpenChest;
SymbolAccuracy := 0.8;
End;;
FixBank;
IfRandoms;
End;

Procedure DepositFRunes;
Begin;
If FindDTM(FRune,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ll');
Wait(1000)
Until not FindDTM(FRune,x,y,MIX1,MIY1,MIX2,MIY2)
End;
IfRandoms;
Exit;
End;

Procedure WithDrawEssence;
Begin;
If FindDTM(Essence,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ll');
Wait(1250);
Until InvFull;
End Else
Begin
Writeln('No essence found, logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;

Procedure WithDrawRing;
Begin;
If Not FindDTM(DRing,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
If FindDTM(DRing,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,true);
Wait(RandomRange(1000,1300));
Until FindDTM(DRing,x,y,MIX1,MIY1,MIX2,MIY2)
End Else
Begin
Writeln('No dueling ring found. Logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;
Exit;
End;

Procedure FillPouches;
Begin;

If FindDTM(GPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ill');
Wait(1000);
If FindDTM(Essence,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ithdraw-all');
Wait(1000);
Until InvFull;
End Else
Begin
Writeln('No essence found, logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;

If FindDTM(LPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ill');
Wait(1000);
If FindDTM(Essence,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ll');
Wait(1000);
Until InvFull;
End Else
Begin
Writeln('No essence found, logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;

If FindDTM(MPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ill');
Wait(1000);
If FindDTM(Essence,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ll');
Wait(700);
Until InvFull;
End Else
Begin
Writeln('No essence found, logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;

If FindDTM(SPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ill');
Wait(1000);
If FindDTM(Essence,x,y,MSX1,MSY1,MSX2,MSY2) Then
Begin
Repeat
Mouse(x,y,3,3,false);
Wait(700);
ChooseOption('ll');
Wait(700);
Until InvFull;
End Else
Begin
Writeln('No essence found, logging out and terminating script!');
LogOut;
TerminateScript;
End;
End;
CloseBank;
AntiBan;
End;

Procedure RingToAltar;
Begin;
MakeCompass('N');
SetAngle(0);
If FindDTM(DRing,x,y,MIX1,MIY1,MIX2,MIY2) then
Begin
Mouse(x,y,3,3,false);
Wait(1000);
ChooseOption('ub');
Wait(1500);
TypeSend('1');
Wait(RandomRange(3800,4200));
End;
AntiBan;
End;

Procedure AltarPath1;
Begin;
SetRun(True);
ObjDTM_Walk('37:35:3:2:7:41:102:7:7:33:129:7:7:17:52:4:24:31:24:52:53:52:51:21', 2, 100, 10, True);
Wait(500);
ObjDTM_Walk('94:53:4:7:7:54:62:7:7:62:74:7:7:48:100:7:7:125:32:4:80:40:80:66:107:66:106:40', 0, 100, 10, True);
Wait(500);
While IsMoving Do wait(75+random(75));
End;

Procedure AltarPath2;
Begin;
SetRun(True);
ObjDTM_Walk('46:32:3:2:7:47:101:7:7:39:127:7:7:12:58:4:28:26:28:60:65:59:61:18', 2, 100, 10, True);
Wait(500);
ObjDTM_Walk('114:56:3:7:7:57:66:7:7:66:78:7:7:81:70:4:93:45:93:70:131:69:131:40', 0, 100, 10, True);
Wait(500);
While IsMoving Do wait(75+random(75));
End;

Procedure AltarPath3;
Begin;
SetRun(True);
ObjDTM_Walk('52:25:3:7:7:39:127:7:7:40:23:2:7:47:101:4:38:17:38:50:75:48:61:11', 2, 100, 10, True);
Wait(500);
ObjDTM_Walk('113:59:3:7:7:95:31:7:7:127:34:7:7:81:70:4:93:33:93:74:141:71:130:27', 0, 100, 10, True);
Wait(500);
While IsMoving Do wait(75+random(75));
End;

Function AtAltar: Boolean;
Begin;
Result := ObjDTM_InArea('98:81:3:7:7:47:89:7:7:66:79:7:7:115:60:4:64:51:64:102:127:102:127:51',true);
End;

Procedure ToTheAltar;
Begin;
SymbolAccuracy := 0.50
If FindSymbol(x,y,'altar') Then
Begin
Mouse(x,y,3,3,true);
Wait(RandomRange(3250,3750));
End;
SymbolAccuracy := 0.80
If AtAltar then Exit;
AltarPath1;
Wait(500);
If AtAltar Then Exit;
AltarPath2;
Wait(500);
If AtAltar Then Exit;
AltarPath3;
Wait(500);
If AtAltar Then Exit;
End;

Function FindAltar(x, y: Integer): Boolean;
Var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;

Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.01, 1.74);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2842337, MSX1, MSY1, MSX2, MSY2, 13);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 10, 10);

For I := 0 To High(ATPA) Do
Begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 0, 0);
If(WaitUpTextMulti(['Mys','yste','rio','ous','rui','ins'],700)) Then
Begin
Result := True;
GetMousePos(x, y);
Break;
End;
End;
End;

Procedure EnterTheAltar;
Begin;
If (FindAltar(X,Y)) then
Begin
ClickMouse2(True);
Wait(RandomRange(4000,5000));
AntiBan;
End Else
Begin
FindSymbol(x,y,'altar');
Mouse(x,y,3,3,false);
Wait(150);
While IsMoving Do wait(75+random(75));
EnterTheAltar;
End;
End;

Procedure ToMiddle;
Begin;
///ObjDTM_Walk('113:112:3:2:7:73:121:2:7:73:105:2:7:101:138:4:90:93:90:124:132:124:132:93', 0, 100, 10, True);
///Wait(2500);
///If FindDTMRotated(FAltar,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi, aFound) Then Exit;
///ObjDTM_Walk('112:112:3:2:7:99:72:2:7:20:62:2:7:27:104:4:95:93:96:125:134:126:134:94', 0, 100, 10, True);
///Wait(2500);
///If FindDTMRotated(FAltar,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi, aFound) Then Exit;
///ObjDTM_Walk('110:112:4:2:7:102:139:2:7:77:142:2:7:69:113:2:7:73:88:4:91:95:92:131:127:132:125:94', 0, 100, 10, True);
///Wait(2500);
///If FindDTMRotated(FAltar,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi, aFound) Then Exit;
Mouse(663,117,5,5,True);
Wait(RandomRange(4000,4250));
If IsMoving Then Wait(500);
IfRandoms;
End;

Procedure CraftFRune;
Begin;
If FindDTMRotated(FAltar,x,y,MSX1,MSY1,MSX2,MSY2,-Pi/4, Pi/4, Pi, aFound) Then
Begin
Mouse(x,y,5,5,true);
Wait(RandomRange(3500,4000));
End Else
Begin
IfRandoms;
CraftFRune;
End;
IfRandoms;
AntiBan;
End;

Procedure EmptyPouches;
Begin;

IfRandoms;
AntiBan;

If FindDTM(GPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,true);
Wait(1250);
CraftFRune;
End;

If FindDTM(LPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,true);
Wait(1250);
CraftFRune;
End;

If FindDTM(MPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,true);
Wait(1250);
CraftFRune;
End;

If FindDTM(SPouch,x,y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(x,y,3,3,true);
Wait(1250);
CraftFRune;
End;
End;

Procedure RingToChest;
Begin;
If FindDTM(DRing,x,y,MIX1,MIY1,MIX2,MIY2) then
Begin
Mouse(x,y,3,3,false);
Wait(1000);
ChooseOption('ub');
Wait(1500);
TypeSend('2');
Wait(RandomRange(3800,4200));
End;
IfRandoms;
End;

Procedure ToTheChest;
Begin;
SymbolAccuracy := 0.5;
If FindSymbol(x,y,'Bank') Then
Begin
Mouse(x,y,3,3,true);
Wait(RandomRange(1700,2300));
End;
SymbolAccuracy := 0.8;
IncEx(Trips, 1);
OnScreenProggy;
End;

Procedure MainLoop;
Begin;
SetAngle(0);
SetTheDTMs;
OpenChest;
DepositFRunes;
WithDrawRing;
WithDrawEssence;
FillPouches;
RingToAltar;
ToTheAltar;
EnterTheAltar;
ToMiddle;
CraftFRune;
EmptyPouches;
RingToChest;
ToTheChest;
FreeTheDTMs;
End;

Begin;
ClearDebug
MouseSpeed := RandomRange(10,20);
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False
SetupSRL;
ObjDTM_Setup;
ActivateClient;
DeclarePlayers;
LoginPlayer;
SMART_ClearCanvas;
Wait(1000);
PrintOnSmart(['A progress report will appear after first trip. Good luck!'],Point(15,255),16777215);
Trips := 0
Repeat;
Mainloop;
Until(AllPlayersInactive);
End.

Abu

2012-05-01 02:44:42

Could you please post your different scrips in separate
 tags?

Thanks.


EDIT: Now done. Easier to read :D

masterBB

2012-05-01 02:46:48

Scripts looks good after a quick view. But I don't really know you. Why do want to become a SRL member?

I have a girlfriend of 5 years


Woah, so you like 'm young? :garfield:

Abu

2012-05-01 02:48:52

From: masterBB

I have a girlfriend of 5 years

Woah, so you like 'm young? :garfield:


Don't wanna go off topic but LOL! You always do that!

Even with that Dungeoneering 'Teen' thread…

iBlank

2012-05-01 02:54:36

From: abu_jwka
Could you please post your different scrips in separate
 tags?

Thanks.


EDIT: Now done. Easier to read :D


Sorry, the original application is a little confusing on how it asks for the scripts! But got them in Simba codes now. I can also attach them, wouldn't let me do that through the application. Should I?

From: masterBB
Scripts looks good after a quick view. But I don't really know you. Why do want to become a SRL member?

Woah, so you like 'm young? :garfield:


I really want to become a member so I can learn more! But yea, I know I am not all that well known. Like I said I have to find time to get a post in, but that should change after this week when I finish my finals.

P.S. Yea, her age has really been coming between us lately. I just feel like we are at different places in our lives right now, but I can't figure out why… :tongue:

Abu

2012-05-01 02:57:12

From: alevere4
Sorry, the original application is a little confusing on how it asks for the scripts! But got them in Simba codes now. I can also attach them, wouldn't let me do that through the application. Should I?


Yeh it is, I remember when I applied…

Anyway, no need to attach them, just fine now :)

Sin

2012-05-01 09:47:34

Well i'm sorta disapointed in you.
I thought that the script you made (LRC Fisher) was supposed to be private for you only.
Ashaman told me that he helped you out on the script provided that you kept it private.
Not cool bro..

iBlank

2012-05-01 10:28:50

From: Sin
Well i'm sorta disapointed in you.
I thought that the script you made (LRC Fisher) was supposed to be private for you only.
Ashaman told me that he helped you out on the script provided that you kept it private.
Not cool bro..


The internet leaves a lot of room for misunderstandings in case you haven't noticed quite yet. Me and Ashman have talked through PMs and cleared that issue up. We are all from different places and and are all different ages. What means something to someone does not mean something to someone else. I can assure you, I never said the script would be specifically for me. Like I said, misunderstanding but we have discussed it in PMs since then.

I would suggest not becoming "disappointed" in someone till you understand the breadth of the situation. There is always 2 sides to every story. Regardless, thanks for your input.

Sin

2012-05-01 10:39:26

Well, I guess that's Asha's fault :p No worries bro, I still love you <3

Either way, you're too new and have minimal activity, so it's a No from me this time.
Also, your standards are a bit off.

Ashaman88

2012-05-01 10:48:01

Yes, it was a misunderstanding. When I said keep it private, I think he thought I meant just not a public release (but ok to sell).

We did clear it up. That being said code is pretty good, but this is a community rank and not enough of that imo.

Er1k

2012-05-01 10:57:42

Apart from the runespan script, do you have public scripts? Are you the guy who pmed me sometime back then about something?

I am impressed by the amount of work you managed to pull out, but I would like to look at the community work more.

iBlank

2012-05-01 11:02:20

From: ashaman88
Yes, it was a misunderstanding. When I said keep it private, I think he thought I meant just not a public release (but ok to sell).

We did clear it up. That being said code is pretty good, but this is a community rank and not enough of that imo.


I really appreciate you coming in here and clearing that up. You are a good guy. Also, I definitely understand your opinion. I will work on getting community involvement up!

From: Er1k
Apart from the runespan script, do you have public scripts? Are you the guy who pmed me sometime back then about something?

I am impressed by the amount of work you managed to pull out, but I would like to look at the community work more.


I do not besides the Runespan script. Something I need to work. I did PM you, and you helped me greatly ;)

Er1k

2012-05-01 11:44:30

I'm thinking, if you could maybe spend some time in the help sections helping newbies, or contribute to SRL include, or maybe release something (not abuse-able or something that's been made so many times), that would make you a good addition to the member ranks.

You don't really have to do all of above, but if you could do something you like that helps the community as a whole, I think that will speak for yourself more than 10 flawless scripts could have done.

I shouldn't be voting yes really, but sometimes I don't think it's very nice of us to discourage applicants with 0 yes and all nos. Last time some applicant was apparently very upset about it and pretty much ragequit, and I guess you deserve a token of recognition.

Maybe you can take my yes as encouragement and work from here. I look forward to seeing you being more active in the community. Good luck :)

iBlank

2012-05-01 12:14:16

From: Er1k
I'm thinking, if you could maybe spend some time in the help sections helping newbies, or contribute to SRL include, or maybe release something (not abuse-able or something that's been made so many times), that would make you a good addition to the member ranks.

You don't really have to do all of above, but if you could do something you like that helps the community as a whole, I think that will speak for yourself more than 10 flawless scripts could have done.

I shouldn't be voting yes really, but sometimes I don't think it's very nice of us to discourage applicants with 0 yes and all nos. Last time some applicant was apparently very upset about it and pretty much ragequit, and I guess you deserve a token of recognition.

Maybe you can take my yes as encouragement and work from here. I look forward to seeing you being more active in the community. Good luck :)


I will take your yes to mean you are the only (sorry, now one of two ;)) intelligent one on the this board :p

But, in all seriousness, thanks for all the advice. I will definitely look into all of those suggestions.

Kyle Undefined

2012-05-01 12:31:31

From: alevere4
I will take your yes to mean you are the only (sorry, now one of two ;)) intelligent one on the this board :p

But thanks for all the advice. I will definitely look into all of those suggestions.


Are you calling people who voted no "unintelligent"?

iBlank

2012-05-01 12:34:42

From: Kyle Undefined
Are you calling people who voted no "unintelligent"?


Surely you can get the sarcasm…. Do you really think I am dating a five year old as well lol?

Edit - I added "in all seriousness" just in case. Didn't expect anyone to take that seriously. And for the record, you are all so so intelligent ;)

Kyle Undefined

2012-05-01 12:38:31

From: alevere4
Surely you can get the sarcasm…. Do you really think I am dating a five year old as well lol?


Surely you can understand that sarcasm isn't transferred over the internet ;) I knew masterBB was joking about the five year old thing, I knew better than that.

Abu

2012-05-01 12:47:21

From: alevere4
I will take your yes to mean you are the only (sorry, now one of two ;)) intelligent one on the this board :p


The second would be me. I made my mind up to vote yes very early on but held back to see what others had to say. Er1k basically just said what I would have said :p

Just to expand though, being an SRL Member is also being a community member (masterbb's words), but your scripting ability made me push yes.

@other members, respect my vote :)

iBlank

2012-05-01 14:29:16

From: abu_jwka
The second would be me. I made my mind up to vote yes very early on but held back to see what others had to say. Er1k basically just said what I would have said :p

Just to expand though, being an SRL Member is also being a community member (masterbb's words), but your scripting ability made me push yes.

@other members, respect my vote :)


I will work on being more active in the community, for sure. Thanks for the input!

[XoL]

2012-05-01 17:31:09

No sorry, although your scripts show promise I am not a huge fan of the activity level. Beign SRL member doesn't really open up too many doors for learning; it opens up doors for helping. You can learn without SRL members, but the main purpose of the rank is to help the community in which we serve. Activity = key.

:)

Some things I like to see that result in me voting yes
—
You helping people in the HELP section
Having over 200 posts
Being here for over a month

fre

2012-05-01 17:46:12

Yes,
but a girfriend of 5 years old is a little weird.

iBlank

2012-05-01 18:03:50

From: R4nd0m
No sorry, although your scripts show promise I am not a huge fan of the activity level. Beign SRL member doesn't really open up too many doors for learning; it opens up doors for helping. You can learn without SRL members, but the main purpose of the rank is to help the community in which we serve. Activity = key.

:)

Some things I like to see that result in me voting yes
—
You helping people in the HELP section
Having over 200 posts
Being here for over a month


Thanks for the comments.

From: fre
Yes,
but a girfriend of 5 years old is a little weird.


Just glad to know something like that doesn't affect your voting! ;)

Gala

2012-05-01 19:33:13

From: fre
Yes,
but a girfriend of 5 years old is a little weird.


I hope he means for 5 years..

iBlank

2012-05-02 01:39:41

Can I ask why I got negative reputation for applying for members and the person put "kindly fuck off retard."? That being an exact quote. That came at 6:20pm (Eastern) if any would like to see, if you can, who voted around that time.

Kyle Undefined

2012-05-02 01:42:34

That seems harsh, and not needed.

iBlank

2012-05-02 01:48:02

From: Kyle Undefined
That seems harsh, and not needed.


Not to mention, quite contrary to what R4nd0m was saying about what members are here for…

Edit - Just when, I had a little bad taste in my mouth Abu is here to save the day! He gave me positive rep to make up for the negative rep and he didn't even mention it here to get recognition. People like Abu are a rare kind. You truly are a good guy.

Sin

2012-05-02 09:36:27

From: alevere4
Not to mention, quite contrary to what R4nd0m was saying about what members are here for…

Edit - Just when, I had a little bad taste in my mouth Abu is here to save the day! He gave me positive rep to make up for the negative rep and he didn't even mention it here to get recognition. People like Abu are a rare kind. You truly are a good guy.


Sucking up + rep complaining aren't the best ways to get people on your side lol.

Also, a little helpful tip about FindObj** -

if FindObj(vars) then
MOuse(x,y,5,5,True);


The Mouse isn't needed, FindObj automatically moves the mouse to the object, it just makes it botlike, know what I mean?

Basically this happens -

[X] <– Object, [X x] <– Moves mouse to bigger X, then clicks smaller x.

iBlank

2012-05-02 09:41:55

From: Sin
Sucking up + rep complaining aren't the best ways to get people on your side lol.

Also, a little helpful tip about FindObj** -

if FindObj(vars) then
MOuse(x,y,5,5,True);


The Mouse isn't needed, FindObj automatically moves the mouse to the object, it just makes it botlike, know what I mean?

Basically this happens -

[X] <– Object, [X x] <– Moves mouse to bigger X, then clicks smaller x.


You do realize I wasn't complaining about the actual neg rep and asking for pos rep right? I was just saying that somebody should probably be a little mature or at least put their name in the rep so we can discuss why they have such an issue with me. No one would have even known if I got +rep unless I said something but I wanted to say something because Abu needs the recognition. He is a great guy. That's not complaining to get + rep.

And thanks for the pointer.

Sin

2012-05-02 09:43:31

From: alevere4
You do realize I wasn't complaining about the actual neg rep and asking for pos rep right? I was just saying that somebody should probably be a little mature or at least put their name in the rep so we can discuss why they have such an issue with me. No one would have even known if I got +rep unless I said something but I wanted to say something because Abu needs the recognition. He is a great guy. That's not complaining to get + rep.

And thanks for the pointer.


From: alevere4
Can I ask why I got negative reputation for applying for members and the person put "kindly fuck off retard."? That being an exact quote. That came at 6:20pm (Eastern) if any would like to see, if you can, who voted around that time.


I'd say you're complaining but whatever.

iBlank

2012-05-02 09:46:08

From: Sin
I'd say you're complaining but whatever.


I am complaining about the "kindly fuck off retard" statement. With a brother who has autism that is an extremely derogatory comment. I would be complaining if it was said in a comment, pm, and so on. The complaint has to do with the person who is hiding behind an anonymous statement, not the negative reputation.

[XoL]

2012-05-02 16:58:39

From: alevere4
I am complaining about the "kindly fuck off retard" statement. With a brother who has autism that is an extremely derogatory comment. I would be complaining if it was said in a comment, pm, and so on. The complaint has to do with the person who is hiding behind an anonymous statement, not the negative reputation.


I don't know who would do that but that is really unacceptable :/. Sorry you received negative rep like that.

iBlank

2012-05-02 17:17:00

From: R4nd0m
I don't know who would do that but that is really unacceptable :/. Sorry you received negative rep like that.


No need to apologize! The ones of you who have taken the time to explain why you voted and offered ways I could change your votes, from nos to yeses, have more than made up for the comment. I do appreciate your apology though.

nielsie95

2012-05-06 11:41:16

Looks like you're not getting in this time.
You may try again in two weeks.