program KylesEsswraithExtractor;
{$DEFINE SMART}
{$i srl/srl.simba}
{$I SRL/SRL/Misc/Debug.Simba}
const
{* Don't touch *}
Version = '1.5';
{* SRL Stats *}
SRLStats_Username = '';
SRLStats_Password = '';
{* Object Constants *}
objUndeadSoul = 0;
objLivingSoul = 1;
objSoulWraith = 2;
objBloodySkulls = 3;
objBloodPool = 4;
objBloodWraith = 5;
objSkulls = 6;
objDeathWraith = 7;
objJumper = 8;
objShifter = 9;
objNebula = 10;
objWaterEssling = 11;
objVine = 12;
objLawHound = 13;
objCosmicHound = 14;
objChaosHound = 15;
objAstralHound = 16;
objNatureHound = 17;
objBodyHound = 18;
objCCloud = 19;
objAirEss = 20;
objWaterPool = 21;
objFleshyGrowth = 22;
objFireStorm = 23;
objEarthEss = 24;
objRockFrag = 25;
objFireball = 26;
objMindEssling = 27;
objCyclone = 28;
(* Break settings *)
SwitchWorlds = True; // Switch worlds after a break?
TakeBreaks = False; // Take Breaks during runtime?
BreakIn = 180; // How long before we take a break? (minutes)
BreakFor = 20; // How long will we break for? (minutes)
Bir = 13; // Random minutes to add/subtract from how long until we break
Bfr = 5; // Random minutes to add/subjtract from break duraction
Floors = 3; // Which Floor are you on? 1,2,3? This is to make it only search on your island
// If it starts to bug out, set it to 0
Debug = True; // If things aren't working, set this to true and tell us what it says
// Or if you want to narrow down colors to make script even better :)
type
{* TObj Type *}
TObj = record
Hue, Sat : Extended;
Name: string;
UpText : TStringArray;
ObjID, Color, Tol, LvlReq, Max, Min, IXP: Integer;
end;
type
{* TObjectArray Type *}
TObjectArray = array of TObj;
var
{* Script Variables *}
StartXP, XPH, XP, TP, RCt, RCLvl, TW, CurrentXP, EssenceDTM, EX, EY,IslandColor,IslandTol: Integer;
Objects : TObjectArray;
IslandHue, IslandSat : Extended;
Higher, SafeNub : Boolean;
TB: Tbox;
(* Break variables *)
w, x, y, z, RealBTime, CurrentBTime, BreakRounds : Integer;
procedure DeclarePlayers();
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := ''; // Your RuneScape Account Name
Pass := ''; // Your RuneScape Account Password
Active := True; // Use in the Script. True / False.
// This is for searching for specific Objects, add / remove as needed. Order doesn't matter
Integers := [objUndeadSoul, objLivingSoul, objSoulWraith, objBloodySkulls, objBloodPool, objBloodWraith, objSkulls, objJumper, objShifter, objNatureHound];
end;
end;
procedure SetDTM;
begin
EssenceDTM := DTMFromString('mrAAAAHic42BgYHBkYmDwAGIXILYBYksodgdiXyB+DlTzCIgfQvEzIP4AxG+A+CkQW5ibMRjo64ExiG1tZcHg6uLE4O7mwmBsZMjABVSDDzMSwDAAAJ3CDvU=');
end;
procedure Fr33DTM;
begin
FreeDTM(EssenceDTM);
end;
procedure DebugThis(s : string);
begin
if(Debug)then
WriteLn(s);
end;
procedure SetupObjects();
begin
SetLength(Objects, 29);
with Objects[objBloodWraith] do
begin
ObjID := objBloodWraith;
Name := 'Blood esswraith';
UpText := ['lood ess', 'ood essw', 'Siphon Blood esswraith'];
Color := 6263962;
Tol := 15;
Hue := 0.12;
Sat := 0.72;
LvlReq := 77;
Max := 250;
Min := 50;
IXP := 77;
end;
with Objects[objDeathWraith] do
begin
ObjID := objDeathWraith;
Name := 'Death esswraith';
UpText := ['eath ess', 'iphon De', 'ath essw', 'Siphon Death esswraith'];
Color := 5278586;
Tol := 26;
Hue := 0.04;
Sat := 0.58;
LvlReq := 65;
Min := 0;
Max := 1000;
IXP := 60;
end;
with Objects[objSoulWraith] do
begin
ObjID := objSoulWraith;
Name := 'Soul esswraith';
UpText := ['oul ess', 'iphon So', 'oul essw', 'Siphon Soul esswraith'];
Color := 6251056;
Tol := 24;
Hue := 0.25;
Sat := 1.01;
LvlReq := 90;
Min := 0;
Max := 1000;
IXP := 108;
end;
with Objects[objLivingSoul] do
begin
ObjID := objLivingSoul;
Name := 'Living Soul';
UpText := ['Siphon Living', 'on Liv', 'iving', 'oul'];
Color := 12867973;
Tol := 9;
Hue := 0.51;
Sat := 0.99;
LvlReq := 90;
Min := 0;
Max := 1000;
IXP := 213;
end;
with Objects[objJumper] do
begin
ObjID := objJumper;
Name := 'Jumper';
UpText := ['Siphon Jumper', 'on Jum', 'Jumper', 'mper'];
Color := 16624975;
Tol := 7;
Hue := 0.02;
Sat := 1.70;
LvlReq := 54;
Min := 10;
Max := 50;
IXP := 107;
end;
with Objects[objBloodPool] do
begin
ObjID := objBloodPool;
Name := 'Blood Pool';
UpText := ['Siphon Blood Pool', 'on blo', 'blood', 'od poo'];
Color := 1252488;
Tol := 10;
Hue := 0.02;
Sat := 1.70;
LvlReq := 77;
Min := 80;
Max := 250;
IXP := 146;
end;
with Objects[objNebula] do
begin
ObjID := objNebula;
Name := 'Nebula';
UpText := ['Siphon Nebula', 'on Neb', 'Nebula', 'bula'];
Color := 8988293;
Tol := 6;
Hue := 1.15;
Sat := 3.71;
LvlReq := 40;
Min := 55;
Max := 1000;
IXP := 85;
end;
with Objects[objSkulls] do
begin
ObjID := objSkulls;
Name := 'Skulls';
UpText := ['Siphon Skulls', 'on Sku', 'Skulls', 'ulls'];
Color := 9748431;
Tol := 7;
Hue := 0.02;
Sat := 1.70;
LvlReq := 65;
Min := 3;
Max := 1000;
IXP := 120;
end;
with Objects[objUndeadSoul] do
begin
ObjID := objUndeadSoul;
Name := 'Undead Soul';
UpText := ['ndead', 'oul', 'ndead So', 'd Soul'];
Color := 10979231;
Tol := 4;
Hue := 0.48;
Sat := 0.61;
LvlReq := 95;
Min := 0;
Max := 1000;
IXP := 255;
end;
with Objects[objBloodySkulls] do
begin
ObjID := objBloodySkulls;
Name := 'Bloody Skulls';
UpText := ['Bloody', 'skulls', 'oody', 'kulls'];
Color := 396358;
Tol := 2;
Hue := 0.15;
Sat := 1.52;
LvlReq := 83;
Min := 5;
Max := 1000;
IXP := 176;
end;
with Objects[objShifter] do
begin
ObjID := objShifter;
Name := 'Shifter';
UpText := ['Siphon Shifter', 'on Shi', 'Shifter', 'ifter'];
Color := 1830421;
Tol := 7;
Hue := 0.02;
Sat := 1.70;
LvlReq := 54;
Max := 900;
Min := 400;
IXP := 87;
end;
with Objects[objWaterEssling] do
begin
ObjID := objWaterEssling;
Name := 'WaterEssling';
UpText := ['Water Essling', 'ater', 'er essl', 'ssling'];
Color := 12085388;
Tol := 17;
Hue := 1.29;
Sat := 0.99; //messed up for now
LvlReq := 5;
Max := 0;
Min := 0;
IXP := 13;
end;
with Objects[objVine] do
begin
ObjID := objVine;
Name := 'Vine';
UpText := ['Vine', 'phon V', 'on v'];
Color := 1200463;
Tol := 18;
Hue := 0.28;
Sat := 1.75;
LvlReq := 17;
Max := 900;
Min := 60;
IXP := 36;
end;
with Objects[objCCloud] do
begin
ObjID := objCCloud;
Name := 'Chaotic Cloud';
UpText := ['Siphon Chaotic', 'on Chaotic', 'Chaotic', 'haotic Cloud'];
Color := 2167590;
Tol := 4;
Hue := 2.03;
Sat := 2.57;
LvlReq := 35;
Min := 20;
Max := 1000;
IXP := 62;
end;
with Objects[objCosmicHound] do
begin
ObjID := objCosmicHound;
Name := 'Cosmic Esshound';
UpText := ['osmic', 'osmic ess', 'Cosmic', 'Siphon Cosmic', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 27;
Min := 250;
Max := 700;
IXP := 27;
end;
with Objects[objChaosHound] do
begin
ObjID := objChaosHound;
Name := 'Chaos Esshound';
UpText := ['haos', 'haos ess', 'Chaos', 'Siphon Chaos', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 35;
Min := 250;
Max := 700;
IXP := 31;
end;
with Objects[objAstralHound] do
begin
ObjID := objAstralHound;
Name := 'Astral Esshound';
UpText := ['stral', 'stral ess', 'Astral', 'Siphon Astral', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 40;
Min := 250;
Max := 700;
IXP := 36;
end;
with Objects[objNatureHound] do
begin
ObjID := objNatureHound;
Name := 'Nature Esshound';
UpText := ['ature', 'ature ess', 'Nature', 'Siphon Nature', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 44;
Min := 250;
Max := 700;
IXP := 44;
end;
with Objects[objLawHound] do
begin
ObjID := objLawHound;
Name := 'Law esshound';
UpText := ['Siphon Law', 'on Law', 'Law', 'aw ess', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 54;
Min := 250;
Max := 700;
IXP := 54;
end;
with Objects[objBodyHound] do
begin
ObjID := objBodyHound;
Name := 'Body esshound';
UpText := ['Siphon Body', 'on Bod', 'Body', 'ody ess', 'hound', 'ound'];
Color := 14448236;
Tol := 24;
Hue := 0.06;
Sat := 1.43;
LvlReq := 20;
Min := 250;
Max := 700;
IXP := 24;
end;
with Objects[objAirEss] do
begin
ObjID := objAirEss;
Name := 'Air essling';
UpText := ['ir ess', 'iphon Air', 'Siphon Air essling'];
Color := 15187588;
Tol := 20;
Hue := 0.05;
Sat := 2.04;
LvlReq := 1;
Max := 250;
Min := 50;
IXP := 10;
end;
with Objects[objWaterPool] do
begin
ObjID := objWaterPool;
Name := 'Water Pool';
UpText := ['ter poo', 'iphon Wat', 'Siphon Water pool', 'ater pool'];
Color := 15187588;
Tol := 20;
Hue := 0.05;
Sat := 2.04;
LvlReq := 5;
Max := 250;
Min := 50;
IXP := 11;
end;
with Objects[objFleshyGrowth] do
begin
ObjID := objFleshyGrowth;
Name := 'Fleshy Growth';
UpText := ['eshy grow', 'iphon Fle', 'Siphon Fleshy growth', 'shy gro'];
Color := 4082573;
Tol := 11;
Hue := 0.07;
Sat := 0.49;
LvlReq := 20;
Max := 250;
Min := 50;
IXP := 47;
end;
with Objects[objFireStorm] do
begin
ObjID := objFireStorm;
Name := 'Fire Storm';
UpText := ['ire sto', 'iphon Fir', 'Siphon Fire storm', 'ire sto'];
Color := 2571174;
Tol := 3;
Hue := 0.19;
Sat := 4.75;
LvlReq := 27;
Max := 250;
Min := 50;
IXP := 42;
end;
with Objects[objEarthEss] do
begin
ObjID := objEarthEss;
Name := 'Earth essling';
UpText := ['rth ess', 'iphon Ear', 'Siphon Earth essling', 'arth essl'];
Color := 4744582;
Tol := 15;
Hue := 0.04;
Sat := 0.32;
LvlReq := 1;
Max := 250;
Min := 50;
IXP := 15;
end;
with Objects[objRockFrag] do
begin
ObjID := objRockFrag;
Name := 'Rock Fragment';
UpText := ['Siphon Rock', 'on Roc', 'Rock', 'Fragment'];
Color := 3434345;
Tol := 13;
Hue := 0.41;
Sat := 0.46;
LvlReq := 9;
Min := 60;
Max := 900;
IXP := 29;
end;
with Objects[objFireball] do
begin
ObjID := objFireball;
Name := 'Fireball';
UpText := ['Siphon Fireball', 'on Fire', 'reball', 'fireball'];
Color := 1924282;
Tol := 12;
Hue := 0.36;
Sat := 1.10;
LvlReq := 14;
Min := 60;
Max := 900;
IXP := 35;
end;
with Objects[objMindEssling] do
begin
ObjID := objMindEssling;
Name := 'Mind Essling';
UpText := ['Mind Essling', 'ind', 'nd essl', 'ssling'];
Color := 7905200;
Tol := 17;
Hue := 0.21;
Sat := 0.40;
LvlReq := 1;
Max := 150;
Min := 2;
IXP := 30;
end;
with Objects[objCyclone] do
begin
ObjID := objCyclone;
Name := 'Cyclone';
UpText := ['Siphon Cyclone', 'clone', 'yclone', 'cyclone'];
Color := 2698292;
Tol := 6;
Hue := 0.51;
Sat := 1.10;
LvlReq := 1;
Min := 80;
Max := 900;
IXP := 19;
end;
end;
function GetObject(vObj : Integer) : TObj;
begin
Result := Objects[vObj];
end;
function GetObjectByXP(xp : Integer) : TObj;
var
i : Integer;
begin
for i := 0 to High(Objects) do
if(Objects[i].IXP = xp)then
Result := Objects[i];
end;
procedure AddObject(var objArr : TObjectArray; ObjID : Integer);
begin
SetLength(objArr, Length(objArr) + 1);
objArr[High(objArr)] := GetObject(ObjID);
end;
procedure FilterObjects();
var
tmpObjects : TObjectArray;
i : Integer;
begin
for i := 0 to High(Objects) do
// if(InIntArray(Players[CurrentPlayer].Integers, Objects[i].ObjID))then
AddObject(tmpObjects, Objects[i].ObjID);
SetLength(Objects, High(tmpObjects));
Objects := tmpObjects;
end;
procedure SortObjects();
var
tmpObjects : TObjectArray;
TIA : TIntegerArray;
i : Integer;
begin
SetLength(TIA, Length(Objects));
for i := 0 to High(Objects) do
TIA[i] := Objects[i].IXP;
Quicksort(TIA);
InvertTIA(TIA);
SetLength(tmpObjects, Length(Objects));
for i := 0 to High(TIA) do
tmpObjects[i] := GetObjectByXP(TIA[i]);
Objects := tmpObjects;
end;
procedure SetFalse(reason : string);
begin
WriteLn(reason);
Players[CurrentPlayer].Active := False;
end;
function K_FindObj(var x, y, vObj : Integer) : Boolean;
var
fObj : TObj;
a, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
fObj := GetObject(vObj);
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
with fObj do
begin
SetColorSpeed2Modifiers(Hue, Sat);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Color, TB.X1, TB.Y1, TB.X2, TB.Y2, Tol);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
DebugThis(Name);
for a := 0 to H do
begin
MiddleTPAEx(atpa[a], X, Y);
DebugThis(tostr(Length(atpa[a])));
if((Length(atpa[a]) < Min) or (Length(atpa[a]) > Max))then
Continue;
MMouse(X, Y, 5, 5);
if(WaitUpTextMulti(UpText, RandomRange(350,450)))then
begin
ClickMouse2(True);
if(DidRedClick)then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := True;
Exit;
end;
end else
if(IsUptextMultiCustom(['esswraith', 'wraith', 'raith', 'Floating ess', 'Float', 'ing ess', 'Floating essence']))then
begin
Clickmouse2(False);
if(WaitOptionMulti(UpText, 800))then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := True;
Exit;
end;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
Function FindObjectPlatform: Boolean;
var
CTS, I, L: Integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
Result:= False;
If SafeNub Then
Begin
TB:= IntToBox(MSX1, MSY1, MSX2, MSY2);
Result:=True;
Exit;
End;
CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(IslandHue, IslandSat);
FindColorsTolerance(TPA, IslandColor, MSX1, MSY1, MSX2, MSY2, IslandTol);
ATPA:= FloodFillTPA(TPA);
SortATPASize(ATPA,True);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
If Debug Then
DebugATPABounds(ATPA);
If Length(TPA) < 1 then
Exit;
L:= High(ATPA);
For I:= 0 To L do
Begin
TB:= GetTPABounds(ATPA[I]);
If Not (PointInBox(Point(MSCX, MSCY),TB)) then
begin
if I=L then
begin
writeln('at high, point is not inside');
exit;
end else
continue;
end else break;
end;
DebugThis(tostr(TB));
Result:=True;
end;
function FindWizard: Boolean;
var
a, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 1.65);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5357278, MSX1, MSY1, MSX2, MSY2, 18);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
DebugThis('Wizard');
for a := 0 to H do
begin
MiddleTPAEx(atpa[a], X, Y);
DebugThis(tostr(Length(atpa[a])));
if((Length(atpa[a]) < 100) Or (Length(atpa[a]) > 2000))then
Continue;
MMouse(X, Y, 5, 5);
if(WaitUpTextMulti(['Wizard', 'zard', 'izard'], 750))then
begin
repeat
InvMouse(RandomRange(2, 8), 3);
until(WaitUpTextMulti(['rune', 'une'], RandomRange(1800, 2000)));
ClickMouse2(False);
if(not(WaitOptionMulti(['Use', 'Use ', 'se '],RandomRange(800, 900))))then
Exit;
MMouse(X, Y, 5, 5);
if(WaitUpTextMulti(['Wizard', 'zard', 'izard'], 750))then
begin
ClickMouse2(True);
if(DidRedClick)then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := True;
MarkTime(TW);
Exit;
end;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
procedure AntiBan();
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
case (Random(1000)) of
0 : RandomRClick;
1 : HoverSkill('random', False);
2 : ExamineInv;
3 : MouseSpeed := (RandomRange(10, 12));
4 : begin HoverSkill('Runecrafting', False); Wait(RandomRange(2000, 4000)); end;
5 : begin PickUpMouse; SleepAndMoveMouse(1500 + Random(500)); end;
6 : begin GameTab(tab_Stats); Wait(1500 + Random(500)); GameTab(tab_Inv); end;
7 .. 100 : Wait(RandomRange(750, 2000));
101: begin BoredHuman; SetAngle(SRL_ANGLE_HIGH); end;
end;
end;
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor : Integer) : Boolean;
var
h, m, s : Integer;
begin
if not LoggedIn then Exit;
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
RealBTime := ((x + z) / 60000);
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x + z) - TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
until(TimeFromMark(CurrentBTime) > (x + z));
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
procedure Proggy;
begin
ClearDebug();
Stats_Commit;
XP := (GetXPBarTotal - StartXP);
XPH:= Round(((XP) / (GetTimeRunning / 1000)) * 3600);
Writeln('======== Kyle''s Esswraith Extractor =========');
WriteLn('You are using Version ' + Version);
Writeln('Time Running: ' + TimeRunning);
Writeln('Experience Earned: ' + IntToStr(XP));
Writeln('Experience/Hour: ' + IntToStr(XPH));
Writeln('=============================================');
MarkTime(TP);
end;
Procedure GetMoreEssence;
var
a, h, t: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
MarkTime(T);
repeat
if(not(LoggedIn))then Exit;
if(TimeFromMark(t) > 30000)then
SetFalse('Failed to get more essence.');
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.47, 0.04);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 4013632, MSX1, MSY1, MSX2, MSY2, 15);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
DebugThis('Rocks');
for a := 0 to H do
begin
MiddleTPAEx(atpa[a], X, Y);
DebugThis(tostr(Length(atpa[a])));
if((Length(atpa[a]) < 50) Or (Length(atpa[a]) > 2000))then
Continue;
MMouse(X, Y, 5, 5);
if(WaitUpTextMulti(['Collect', 'llect', 'Float'], 750))then
begin
ClickMouse2(True);
if(DidRedClick)then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
end else
if(not(IsUptextMultiCustom(['Walk', 'lk here', 'here'])))then
begin
Clickmouse2(False);
if(WaitOptionMulti(['Collect', 'llect', 'Float'], 800))then
begin
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
until FindDTM(EssenceDTM,X,Y,MIX1,MIY1,MIX2,MIY2);
end;
procedure ScriptSetup();
begin
SetupObjects();
SortObjects();
SetAngle(SRL_ANGLE_HIGH);
StartXP := GetXPBarTotal;
RCLvl := GetSkillLevel(SKILL_RUNECRAFTING);
Gametab(tab_Inv);
Higher := False;
SafeNub:= False;
Case Floors Of
0 : Begin SafeNub:=True; End;
1 : Begin IslandHue:=0.19; IslandSat:=0.71; IslandColor:=3112315; IslandTol:=12; End;
2 : Begin IslandHue:=3.58; IslandSat:=0.43; IslandColor:=8224087; IslandTol:=14; End;
3 : Begin IslandHue:=0.12; IslandSat:=0.73; IslandColor:=9145506; IslandTol:=12; End;
End;
end;
procedure MainLoop();
var
fObj : TObj;
x, y, i, InitialXP, UpdateXP, t: Integer;
Label
Waiting;
begin
repeat
repeat
if not loggedin then loginplayer;
FindNormalRandoms;
if(TakeBreaks)then BreakHandler(BreakIn, BreakFor, Bir, Bfr);
if(TimeFromMark(TW) > 600000)then
FindWizard;
if not WaitFindDTMEX(EssenceDTM, EX, EY, MIX1, MIY1, MIX2, MIY2, 100, 2000) then
GetMoreEssence;
if(TimeFromMark(RCt) > (3600000 + RandomRange(-1800000, 1800000)))then
begin
RCLvl := GetSkillLevel(SKILL_RUNECRAFTING);
MarkTime(RCt);
end;
for i := 0 to High(Objects) do
begin
fObj := GetObject(i);
if(RCLvl >= fObj.LvlReq)then
begin
if(FindObjectPlatform)then
if(K_FindObj(x, y, i))then
begin
Waiting:
if(TimeFromMark(TP) > 60000)then
Proggy;
Wait(RandomRange(500, 750));
InitialXP := GetXPBarTotal;
CurrentXP := fObj.IXP;
MarkTime(T);
repeat
Wait(100);
if(FindNormalRandoms)then
begin
if(not(LoggedIn))then
SetFalse('Not Logged in');
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('N');
end;
if(TimeFromMark(T) > RandomRange(7000, 7200))then
Break;
AntiBan;
for i := 0 to High(Objects) do
begin
fObj := GetObject(i);
if(RCLvl >= fObj.LvlReq) And (CurrentXP < fObj.IXP)then
if(FindObjectPlatform)then
if(K_FindObj(x, y, i))then
begin
Higher := True;
Break;
end;
end;
if(Higher)then
Break;
UpdateXP := GetXPBarTotal;
if(UpdateXP > InitialXP)then
begin
InitialXP := GetXPBarTotal;
T := 0;
MarkTime(T);
end;
until(False);
if(Higher)then
begin
Higher := False;
Goto Waiting;
end;
end;
end;
end;
if(FindNormalRandoms)then
begin
if(not(LoggedIn))then
SetFalse('Not Logged in');
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('N');
end;
until(not(LoggedIn));
if(Players[CurrentPlayer].Active)then
SetFalse('Not Logged in');
NextPlayer(Players[CurrentPlayer].Active);
ScriptSetup();
until(AllPlayersInactive);
end;
begin
Smart_Server := 10;
Smart_Members := True;
Smart_Signed := True;
SetupSRL();
SetupSRLStats(1036, SRLStats_Username, SRLStats_Password);
{* Initial Break Settings *}
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
ActivateClient();
DeclarePlayers();
LoginPlayer();
while(not(RSReady()))do
Wait(9000);
AddOnTerminate('Fr33DTM');
SetDtm;
MarkTime(TP);
MarkTime(RCt);
ScriptSetup();
if(not(WaitFindDTMEX(EssenceDTM, EX, EY, MIX1, MIY1, MIX2, MIY2, 100, 2000)))then
GetMoreEssence;
MainLoop;
end.