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…
Please show us one (or multiple) of your scripts.
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!
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.