Well it was time to get 99 range and instead of reinventing the wheel I decided to play with your script a little bit! Great script I only made a few changes. The biggest thing is in relation to getting our hp and prayer levels. Sometimes the srl function is unreliable and so it returns -1 for hp and/or prayer which caused the script to either try to telly away or drink a pot when not needed, so I just put checks in to make sure it wasn't -1 before drinking a pot and/or tele away. It only started to become a little unstable in the past few months (the hp detection for my lrc script was having the same issue)
I also took out a few unneccesary backups as your already built functions work 100%
A couple logic errors here and there, but nothing that would break the script. Just simplifying everything
I went ahead and auto detect when you should drink a prayer pot based on what your prayer level is (45% drained) and same with HP and eating so you don't have to rely on a user messing up the settings :P
Good stuff is that all of your dtms work flawlessly! For both flasks and reg pots, even the varrock teletab dtm worked for at least a housetab too. The only thing with that is the point that is found for the dtm is the very bottom of the pot so I had the Y values default Y-7 so the randomness starts from the center for the item.
I also put in the antiban I use in most of my scripts, nothing special. Oh and flights mouse movements as well.
Overall it is an awesome script, I just can't help playing with any script I use sorry! And thanks for the 99!
Here is the version that I used, If you have any questions about it or want me to take it down don't hesitate to ask!
Program TigerChinner;
{$DEFINE SMART}
{$I SRL/SRL.Simba}
{$I SRL/SRL/Misc/SmartGraphics.Simba}
//Wear a Ring Of Life!
//Look at inventory setup in the thread for best performance.
//Go to Ape Atoll Dungeon. BEFORE going in, wield your Greegree.
//Run to wherever you want to run the script.
//MAKE SURE you at least have Protect From Melee in Quick Prayers.
//MAKE SURE your HP level isn't less than 50% before you start the script.
///////////////////////////////////////////////////////////////////////
// //
// Begin of user setup //
// Fill in the fields below //
// //
///////////////////////////////////////////////////////////////////////
Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
With Players[0] Do
Begin
Name := '';
Pass := '';
Member := True;
Active := True;
End;
End;
//////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //
// Don't touch below this line unless you know what you're doing!! //
// //
//////////////////////////////////////////////////////////////////////////////////////////////////////
Var
StartingExperience,XP,RedChinDTM,SharkDTM,PrayerDTM,RangePotDTM,AntiPoisonDTM,DrinkRange,
DrinkPrayerRenewals,TeleDTM,ExtremeRangeDTM,PrayerRenewalDTM,ProggyTime: Integer;
XPH,HP,DrinkPrayer: Extended;
Const
ScriptVersion = '1.0';
RangePotMins = 8;
MinPrayer = 200;
Procedure SetDTMs;
Begin
RedChinDTM := DTMFromString('mlwAAAHicY2dgYFjAxMAwHYhnM0HYS4B4FRCvBuKDjAwMR4D4GBCfgeITQHwIiB0UOIG6mbBiESCJCzPiwVAAAOvQCv0=');
AntiPoisonDTM := DTMFromString('mWAAAAHicY2FgYIhmYWAIBeI4IE4G0UwQnADEsUC8QjwEqIoJjiWBJDJmRMMgAAAYBASI');
SharkDTM := DTMFromString('mlwAAAHicY2dgYChkYmAoB+IqIK4B4gYoOxOIZRkZGKSBWB6IlYBYG4h1gFgNiEMdDRimVacy9JcmMHQXxTG4m2kwxHmYMvDx8TFwAc3FhRnxYCgAAFFKC0Y=');
PrayerDTM := DTMFromString('mggAAAHicY2NgYGADYgEg5gViDiBmYYAAGM0KxOxQDGIbzi8DkkwYWA5IYsOMODAEAACm8QJc==');
RangePotDTM := DTMFromString('mbQAAAHicY2VgYOAEYkEgFgFiXiBmBWJ2BggAsbmgamxm7QeSTChYBKoPGTNiwWAAAJlHAms=');
TeleDTM := DTMFromString('mlwAAAHicY2dgYJjGwsDQAcQ9QDwZiGcB8QIgXgKimRgYFgLxCjQMEpdRPA7UzYQViwBJXJgRD4YCAJ5+CnE=');
ExtremeRangeDTM := DTMFromString('mggAAAHicY2NgYHjPyMDwFIhfAvEHIP4KxD+AWAeItYBYH4gNgFgPiDWBuHWKLlAXEwYWAZLYMCMODAEAa+EIhw==');
PrayerRenewalDTM := DTMFromString('mWAAAAHicY2FgYLBnYWCwAGIbIHYDYkZmCGaC0jmifEBVTHDMDySRMSMaBgEAe1sB9A==');
End;
Procedure Fr33DTMs;
Begin
FreeDTM(RedChinDTM);
FreeDTM(AntiPoisonDTM);
FreeDTM(SharkDTM);
FreeDTM(PrayerDTM);
FreeDTM(RangePotDTM);
FreeDTM(TeleDTM);
FreeDTM(ExtremeRangeDTM);
FreeDTM(PrayerRenewalDTM);
End;
Function WaitLoggedIn(Time:Integer): Boolean;
Var
T: Integer;
Begin
MarkTime(T);
Repeat
SRL_ResetNavBar;
If TimeFromMark(T)>Time Then
Begin
Result:=False;
Exit;
End;
Until (GetColor(472, 490) = 16777215);
Result:=True;
End;
{*******************************************************************************
All of these mouse movements are credited to bandland100 and flight
*******************************************************************************}
//By Bandland100, modified to shift mouse speeds after every step
procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
case Random(50) of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
end;
if (W < 1) then
W := 1;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
// SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
end;
Procedure HumanMouseBox(X1, Y1, X2, Y2: Integer);
Var
FX, FY: Integer;
Begin
GaussBox(FX,FY,X1,Y1,X2,Y2);
HumanMMouse(FX,FY,0,0)
End;
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,D: extended;
lastX,lastY,MSP,W,TDist,T: integer;
sqrt2,sqrt3,sqrt5,PDist,maxStep: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
TDist := Distance(Round(xs), Round(ys), Round(xe), Round(ye));
if (TDist < 1) then
TDist := 1;
MarkTime(T);
repeat
if (TimeFromMark(T)>5000) then
break;
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if (dist < 1) then
dist := 1;
PDist := (dist/TDist);
if (PDist < 0.01) then
PDist := 0.01;
{
These constants seem smooth to me, but
feel free to modify these settings however
you wish.
}
if (PDist >= 0.15) then //15% (or higher) dist to destination
begin
D := (Round((Round(dist)*0.3))/5);
if (D < 20) then
D := 20;
end else if (PDist < 0.15) then
begin
if ((PDist <= 0.15) and (PDist >= 0.10)) then //10%-15%
D := RandomRange(8, 13)
else if (PDist < 0.10) then //< 10%
D := RandomRange(4, 7);
end;
if (D <= Round(dist)) then
maxStep := D
else
maxStep := Round(dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if (hypot(veloX, veloY) > maxStep) then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
W := (Random((Round(100/MSP)))*6);
if (W < 5) then
W := 5;
W := Round(W*1.2);
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MMouse(Round(xe), Round(ye), 0, 0);
MouseSpeed := MSP;
end;
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,MS: integer;
begin
MS := MouseSpeed;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, RandomRange(eX-ranX, eX+ranX), RandomRange(eY-ranY,eY+ranY), 8, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
MouseSpeed := MS;
end;
Procedure OffMM(Direction, WaitTime, RandomWait: Integer);
Var
W,H,RX,RY: Integer;
Begin
GetClientDimensions(W,H);
H:=H+50;
RX := RandomRange(0,W);
RY := RandomRange(0,H);
Case (Direction) Of
0..1: HumanMMouse(W/2,RandomRange(-110,-60),RX,0);
2: HumanMMouse(RandomRange(-50,-10),H/2,0,RY);
3: HumanMMouse(W/2,H+RandomRange(10,50),RX,0);
4: HumanMMouse(W+RandomRange(10,50),H/2,0,RY);
End;
Wait(WaitTime+Random(RandomWait));
End;
//by Home
function AreaToBoxArray(const AreaX1, AreaY1, AreaX2, AreaY2, Width, Height: Integer): TBoxArray;
var
AreaW, AreaH: Integer;
BoxX, BoxY: Integer;
x, y, i: Integer;
begin
// Calculate the area dimensions
AreaW := AreaX2 - AreaX1 + 1;
AreaH := AreaY2 - AreaY1 + 1;
// Calculate the number of boxes in each dimension
BoxX := AreaW div Width;
if AreaW mod Width <> 0 then Inc(BoxX);
BoxY := AreaH div Height;
if AreaH mod Height <> 0 then Inc(BoxY);
// Set the number of boxes
SetLength(Result, BoxX * BoxY);
// Calculate the boxes
i := 0;
for y := 0 to BoxY - 1 do
for x := 0 to BoxX - 1 do
begin
Result[i] := IntToBox(AreaX1 + x * Width,
AreaY1 + y * Height,
Min(AreaX2, AreaX1 + (x + 1) * Width - 1),
Min(AreaY2, AreaY1 + (y + 1) * Height - 1));
Inc(i);
end;
end;
Procedure CheckMovingObjs(RClick: Boolean);
var
TBA: TBoxArray;
MidBox: TPoint;
TIA: TIntegerArray;
H,I,J,X,Y,T: Integer;
TPA,PBox: TPointArray;
RCOpts: Array of TOptions;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(1);
SetColorSpeed2Modifiers(0.2, 0.2);
PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
TBA := AreaToBoxArray(MSX1, MSY1, MSX2, MSY2, 35, 35);
TIA := PixelShiftMulti(TBA, 300);
for H := 0 to High(TBA) do
begin
if (TIA[H] > 100) then
begin
MidBox := MiddleBox(TBA[H]);
SetArrayLength(TPA, Length(TPA)+1);
TPA[High(TPA)] := MidBox;
end;
end;
ClearTPAFromTPAWrap(TPA, PBox, TPA);
if (Length(TPA) < 1) then Exit;
I := Random(Length(TPA));
HumanMMouse(TPA[I].X, TPA[I].Y, 5, 5);
if RClick then
begin
ClickMouse2(False);
RCOpts := GetChooseOptions('All');
J := Length(RCOpts);
Wait(RandomRange(J*75, J*120));
MarkTime(T);
repeat
GetMousePos(X, Y);
BrakeMMouse(X-10,Y-10,15,5);
if (TimeFromMark(T) > 5000) then
break;
until(not FindTextEx(X,Y,['Choose','Option'],['UpCharsEx'],MSX1,MSY1,MSX2,MSY2))
if FindTextEx(X,Y,['Choose','Option'],['UpCharsEx'],MSX1,MSY1,MSX2,MSY2) then
MMouse(RandomRange(MIX1,MIX2),RandomRange(MIY1,MIY2),0,0);
end;
end;
Procedure Antiban;
Var
I: Integer;
Begin
I := Random(800);
Case I Of
1..3: Begin RandomRClick; End;
4..7: Begin HoverSkill('Range',False); GameTab(Tab_Inv); End;
8..11: Begin CheckMovingObjs(True); End;
12..200: Begin SleepAndMoveMouse(RandomRange(400,500)); End;
201..300: Begin OffMM(Random(4),RandomRange(1500,2000),1000); End;
301..600: Begin Wait(RandomRange(250,1000)); End;
End;
Wait(RandomRange(1150,2350));
End;
Procedure CheckStuff;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
If FindNormalRandoms Then
Begin
If Not WaitLoggedIn(1000) Then
TerminateScript;
SetAngle(SRL_ANGLE_HIGH);
End;
End;
Function PoisonCheck: Boolean;
Var
X,Y: Integer;
Begin
Result:= FindColorSpiralTolerance(X,Y,3140371,695,22,712,38,10);
End;
Procedure EquipChin;
Var
X,Y: Integer;
Begin
If Not FindDTM(RedChinDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Exit;
HumanMMouse(X,Y,5,5);
If WaitUptextMulti(['ield', 'hinch', 'chinchomp'], 600) Then
ClickMouse2(True);
End;
Function HPLevel: Integer;
Var
ColourString: String;
Begin
Result:= GetMMLevels('HP',ColourString);
End;
Function PrayerLevel: Integer;
Var
ColourString: String;
Begin
Result:= GetMMLevels('Prayer',ColourString);
End;
Function IsPrayerOn: Boolean;
Var
TPA: TPointArray;
CTS: Integer;
Begin
Result:=False;
If (PrayerLevel < 2) And (PrayerLevel <> -1) Then
Exit;
CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.11, 1.02);
Result:= FindColorsSpiralTolerance(723, 70, TPA, 8767378, 708, 53, 737, 85, 27);
SetToleranceSpeed2Modifiers(0.2, 0.2);
ColorToleranceSpeed(CTS);
End;
Procedure TurnPrayerOn;
Var
T: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If IsPrayerOn Then
Exit;
If (PrayerLevel<3) And (PrayerLevel<>-1) Then
Exit;
HumanMouseBox(706,55,739,87);
ClickMouse2(True);
MarkTime(T);
Repeat
If (PrayerLevel<3) And (PrayerLevel<>-1) Then
Break;
Wait(Random(100));
CheckStuff;
Until (IsPrayerOn) Or (TimeFromMark(T)>5000);
End;
Function RenewPrayer: boolean;
Var
X,Y,T: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
GameTab(Tab_Inv);
MarkTime(T);
Repeat
If ((PrayerLevel<=DrinkPrayer) And (PrayerLevel<>-1)) Then
Begin
If FindDTM(PrayerDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
HumanMMouse(X,Y-8,5,5);
If (WaitUptextMulti(['rayer ','Prayer flask','lask'],500)) Then
Begin
ClickMouse2(True);
Wait(RandomRange(1500,2500));
Result:= PrayerLevel>0;
If Result Then
TurnPrayerOn;
End;
End Else
Exit;
End Else
Break;
Until ((TimeFromMark(T) > 5000) Or (Result));
Result:= IsPrayerOn;
TurnPrayerOn;
End;
Procedure CheckPrayer;
Var
X,Y: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If Not RenewPrayer Then
If (PrayerLevel<MinPrayer) And (FindDTM(TeleDTM,X,Y,MIX1,MIY1,MIX2,MIY2)) And (PrayerLevel<>-1) Then
Begin
HumanMMouse(X,Y,5,5);
If (WaitUptextMulti(['reak','arrock','arrock tele','eleport'],600)) Then
ClickMouse2(True);
Wait(10000 + Random(3000));
Writeln('We teleported and logged out.');
Repeat
Logout;
Until (Not(WaitLoggedIn(1000)));
TerminateScript;
End Else
Begin
If ((PrayerLevel<MinPrayer) And (PrayerLevel<>-1)) Or ((HPLevel<HP) And (HPLevel<>-1)) Then
Begin
Writeln('Your prayer level is too low, attempting to logout!');
Logout;
TerminateScript;
End;
End;
TurnPrayerOn;
End;
Procedure Heal;
Var
X,Y,T: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If (HPLevel<HP) And (HPLevel<>-1) Then
Begin
MarkTime(T);
Repeat
If FindDTM(SharkDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
HumanMMouse(X,Y,5,5);
If (WaitUptextMulti(['hark','Eat','shark'],600)) Then
Begin
ClickMouse2(True);
Wait(2000 + Random(500));
End;
End Else
Break;
Until ((TimeFromMark(T) > 3000) Or (HPLevel >= HP));
End;
End;
Procedure DrinkRangePot;
Var
X,Y: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If (TimeFromMark(DrinkRange) < (RangePotMins * 60 * 1000 +Random(150000))) Then
Exit;
If FindDTM(RangePotDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Or FindDTM(ExtremeRangeDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
HumanMMouse(X,Y-8,5,5);
If (WaitUptextMulti(['rink','anging','otion','xtreme'],600)) Then
ClickMouse2(True);
MarkTime(DrinkRange);
End;
End;
Procedure HealPoison;
Var
X,Y: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If PoisonCheck Then
If FindDTM(AntiPoisonDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
HumanMMouse(X,Y-8,5,5);
If (WaitUptextMulti(['rink','nti','oison'],600)) Then
ClickMouse2(True);
Wait(2000 + Random(500));
End;
End;
Procedure DrinkPrayerRenewal;
Var
X,Y: Integer;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
If TimeFromMark(DrinkPrayerRenewals)<(300000+Random(60000)) Then
Exit;
If FindDTM(PrayerRenewalDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
HumanMMouse(X,Y-8,5,5);
If (WaitUptextMulti(['renewal','newal'],600)) Then
ClickMouse2(True);
MarkTime(DrinkPrayerRenewals);
End;
End;
Procedure PrintSmart;
Begin
SMART_ClearCanvas;
SMART_DrawText(30, 250, SmallChars, TimeRunning, clWhite);
SMART_DrawText(30, 272, SmallChars, ToStr(XP) + ' XP Gained', clWhite);
SMART_DrawText(30, 294, SmallChars, ToStr(XPH) + ' XP/Hour', clWhite);
End;
Procedure ProgressReport;
Begin
ClearDebug;
XP := Round((GetXPBarTotal - StartingExperience));
XPH := Round(XP * (3600.0 / (GetTimeRunning / 1000.0)));
Writeln('==========TigerChinner==========');
Writeln('==========Version: '+ScriptVersion+'==========');
Writeln('Time Running: ' + TimeRunning);
Writeln('Experience Earned: ' + IntToStr(XP));
Writeln('Experience/Hour: ' + ToStr(XPH));
Writeln('================================');
Case Round(XPH) Of
0..200000: Writeln('Your xp/hr sucks! Sorry...');
200001..300000: Writeln('Your xp/hr is pretty good, keep it up!');
300001..500000: Writeln('Your xp/hr is awesome, you rock!');
500001..800000: Writeln('Your xp/hr is UNREAL YOU WIN RUNESCAPE');
End;
PrintSmart;
MarkTime(ProggyTime);
End;
Procedure Setup;
Var
X,Y: Integer;
Begin
{$IFDEF SIMBAMAJOR980}
SMART_SERVER := 10;
SMART_MEMBERS := TRUE;
SMART_SIGNED := TRUE;
SMART_SUPERDETAIL := FALSE;
{$ELSE}
SMART_FIXSPEED := TRUE;
SRL_SixHourFix := True;
{$ENDIF}
SetupSRL;
AddOnTerminate('Fr33DTMs');
SetDTMs;
DeclarePlayers;
If Not WaitLoggedIn(1000) Then
Begin
Writeln('Please login player at desired spot with greegree equipped');
TerminateScript;
End;
ClearDebug;
GameTab(Tab_Inv);
If Not FindDTM(TeleDTM,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Writeln('Cannot detect teletab, please have one in inventory');
Writeln('Shutting down');
TerminateScript;
End Else
Writeln('Teletab detected, script will telly when out of prayer');
SetAngle(SRL_ANGLE_HIGH);
StartingExperience := GetXPBarTotal;
HP:=GetSkillLevel(Skill_Hitpoints);
HP:=(HP*10*0.40);
Writeln('Will attempt to heal you if your life points go below '+ToStr(HP));
DrinkPrayer:=GetSkillLevel(Skill_Prayer);
DrinkPrayer:=(DrinkPrayer*10*0.45);
Writeln('Will drink a prayer dose when your prayer goes below '+ToStr(DrinkPrayer));
MarkTime(ProggyTime);
End;
Procedure MainLoop;
Begin
If Not WaitLoggedIn(1000) Then
Exit;
CheckStuff;
Heal;
DrinkPrayerRenewal;
CheckPrayer;
DrinkRangePot;
HealPoison;
If (PrayerLevel>=DrinkPrayer) Then
Antiban;
EquipChin;
If TimeFromMark(ProggyTime)>25000 Then
ProgressReport;
End;
Begin
Setup;
Repeat
MainLoop;
Until (Not (WaitLoggedIn(1000)));
End.
Couple of proggys:
Time Running: 1 Hours, 18 Minutes and 21 Seconds
Experience Earned: 626292
Experience/Hour: 479533
================================
========Version: 1.0=========
Time Running: 1 Hours, 18 Minutes and 23 Seconds
Experience Earned: 643431
Experience/Hour: 492452
================================
Time Running: 1 Hours, 18 Minutes and 26 Seconds
Experience Earned: 634317
Experience/Hour: 485216
================================
Only have enough supplies for the length of run ;)