SRL Archive - Archive

TotalKillz - SRL Member Application


Total

2012-04-08 23:47:47

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
A little bit of Visual Basic and Pascal.


Are you a member of any other communities?
Sythe(although I don't post much)


Tell us about yourself…
From: TotalKillz
Oh hai der. My name is Ken and I'm 20 years old. I am going to college for a bachelors in computer science and plan to program in some way in the future. Writing scripts is a way for me to practice what I may be doing in the future. I am a really big computer gamer, and I love being competitive. I have a runescape account that is pretty high ranking(no botting) and I have several 200m's. Being competitive helps me to script because I always want to make my script better than another persons or even better than the current version I have. :P Some other games I have played/play are LoL, aion, silkroad, diablo 2, and a bunch of other random MMOs.



Please show us one (or multiple) of your scripts.
Here is the first script I made. It has many visible flaws and is kinda messy, but its actually pretty robust and has some nice options.


program TotalMiner;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}

{$IFDEF SMART}
{$i srl/srl/misc/paintsmart.simba}
{$ENDIF}

//Script Setup
const
Gems = 0; //0=Keep gems 1=Drop gems
Ore = 2; //0=Copper 1=Tin 2=Both
Click = 2; //0=Left 1=Right 2=Both
Bank = 0; //0=Home teleport 1=Walk to bank 2=Power mine
t = 5000; //Time before reclicking rock(Default 5 seconds)
StartLocation = 0; //0=Mine/Not Full Invy
//1=Mine/Full Invy
//2=Bank/Not Full Invy
//3=Bank/Full Invy
//4-Lumby Castle/Not Full Invy
//5=Lumby Castle/Full Invy
SapphireDTM = 'mlwAAAHicY2dgYMhhYmBIBeJsIC4F4iIgzgDiFCDWZWRgUAdiVUYI2wyITaFsfqF8BmGxXgZe/mQGLh5/Bm7eEAZ+wVygWDcDP9BcXJgRD4YCAF3oCJE=';
EmeraldDTM = 'mlwAAAHicY2dgYHBhYmCwAWJXILZigvA9gdgLiJ8B5e8D8T0gfgnE74D4FRA/BWK+NAEGoUZRBu4gHjDNm8TPwB3Cy8DpwsXAD5THhRnxYCgAAMz3DCM=';
RubyDTM = 'mlwAAAHicY2dgYNgNxDuAeAMQbwXiA1C8D4hnAPEEIJ4JxAuAeCEQTwfiSUAcLsjD4MfPxZAnxs8QCmQ78nAy2PJwMLjzcTLwA+VxYUY8GAoAbMIMng==';
DiamondDTM = 'mggAAAHicY2NgYKgB4mIgrgXiFiCuhPKLgDgbiouR1E3o6mLYuXEDQ31VFUNaUhJDV0sLw7b16xn4gXLYMCMODAEA8fQP7g==';
Version = 2.3;


procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := ''; // Username
Pass := ''; // Password
Pin := ''; // Pin
Active := True; // Set to true if you want to use Player 0
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Mining;
end;
end;

var
x, y, i, Inv, Cop, Tin, Loads : Integer;

procedure Antiban;
begin
if(not(LoggedIn))then Exit;
begin
case Random(100) of
33: RandomRClick;
66: PickUpMouse;
100: ExamineInv;
end;
end;
end;

procedure Proggy;
begin
ClearDebug;
Writeln('//////TotalMiner V' + ToStr(Version) + '//////');
Writeln('Copper mined: ' + IntToStr(Tin));
Writeln('Tin mined: ' + IntToStr(Cop));
case Bank of
0:
begin
Writeln('Inventories banked: ' + IntToStr(Loads))
end;
1:
begin
Writeln('Inventories banked: ' + IntToStr(Loads))
end;
2:
begin
Writeln('Inventories dropped: ' + IntToStr(Loads))
end;
end;
Writeln('Running for: ' + MsToTime(GetTimeRunning, Time_Bare));
Writeln('///////////////////////////');
end;

Function Mining: Boolean;
var
PBox: TBox;
begin
PBox := IntToBox(245, 130, 285, 195);
Result := (AveragePixelShift(PBox, 250, 500) > 400);
end;

function FindCopper(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box : TBox;
begin
if(not(LoggedIn))then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.06, 1.75);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 7184624, MSX1, MSY1, MSX2, MSY2, 10);
SortTPAFrom(TPA, Point(MSCX, MSCY));
ATPA := TPAtoATPAEx(TPA, 20, 20);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
MMouse(MP.X, MP.Y, 4, 4);
if(WaitUptextMulti(['opper'], 750))then
begin
x := MP.X; y := MP.Y;
Result := True;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

function FindTin(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box : TBox;
begin
if(not(LoggedIn))then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 2.63);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 13158631, MSX1, MSY1, MSX2, MSY2, 13);
SortTPAFrom(TPA, Point(MSCX, MSCY));
ATPA := TPAtoATPAEx(TPA, 20, 20);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
MMouse(MP.X, MP.Y, 4, 4);
if(WaitUptextMulti(['Tin ore'], 750))then
begin
x := MP.X; y := MP.Y;
Result := True;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Procedure MineCopper;
var
x, y, Timer: Integer;
Box : TBox;
Begin
if(not(LoggedIn))then Exit;
If InvFull then
begin
Players[CurrentPlayer].Loc := 'to bank'
Exit;
end;
Box := IntToBox(MSCX - 10, MSCY - 25, MSCX + 15, MSCY + 15);
repeat
if(not(FindNormalRandoms))then
SetRun(True);
begin
Inv := InvCount + 1;
if(FindCopper(x, y))then
begin
Wait(RandomRange(150, 250));
Case Click of
0:
begin
Mouse(x, y, 3, 3, true);
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv = InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
1:
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(200,300));
ChooseOption('opper');
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv = InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
2:
case random(2) of
0:
begin
Mouse(x, y, 3, 3, true);
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv = InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
1:
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(200,300));
ChooseOption('opper');
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv = InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
end;
end;
end;
end;
case Gems of
0:
begin
Exit;
end;
1:
begin
if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;
end;
until ((Inv <= InvCount) or Not Mining);
end;

Procedure MineTin;
var
x, y, Timer : Integer;
Box : TBox;
Begin
if(not(LoggedIn))then Exit;
SetRun(True);
Box := IntToBox(MSCX - 10, MSCY - 25, MSCX + 15, MSCY + 15);
repeat
if(not(FindNormalRandoms))then
begin
if(FindTin(x, y))then
begin
Wait(RandomRange(150, 250));
Case Click of
0:
begin
Mouse(x, y, 3, 3, true);
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv <= InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
1:
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(200,300));
ChooseOption('Tin');
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv <= InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
2:
case random(2) of
0:
begin
Mouse(x, y, 3, 3, true);
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv <= InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
1:
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(200,300));
ChooseOption('Tin');
MarkTime(Timer);
repeat
AntiBan;
Wait(500+Random(200));
until ((Inv <= InvCount) or (TimeFromMark(Timer) > t)) or Not Mining;
Exit;
end;
end;
end;
end;
end;
case Gems of
0:
begin
Exit;
end;
1:
begin
if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;
end;
until ((Inv <= InvCount) or Not Mining);
end;

procedure MineOres;
begin
SetRun(True);
While InvCount < 28 do
begin;
repeat
case Ore of
0:
begin
Inv := InvCount + 1
MineCopper;
if Inv = InvCount then
begin
Inc(Cop);
end;
end;
1:
begin
Inv := InvCount + 1;
MineTin;
if Inv = InvCount then
begin
Inc(Tin);
end;
end;
2:
case random(2) of
0:
begin
Inv := InvCount + 1;
repeat
MineCopper;
until(InvFull) or (inv <= invcount) or Not Mining;
if Inv = InvCount then
begin
Inc(Cop);
end;
end;
1:
begin
Inv := InvCount + 1;
repeat
MineTin;
until(InvFull) or (inv <= invcount) or Not Mining;
if Inv = InvCount then
begin
Inc(Tin);
end;
end;
end;
end;
until InvFull;
Inc(Loads);
Players[CurrentPlayer].Loc:='to bank';
Proggy;
end;
if InvFull then;
begin
case Bank of
0:
begin
Players[CurrentPlayer].Loc := 'hometele';
Exit;
end;
1:
begin
Players[CurrentPlayer].Loc := 'to stairs';
Exit;
end;
2:
begin
Players[CurrentPlayer].Loc := 'drop ore';
Exit;
end;
end;
end
end;

procedure DropOre;
begin
for i:=1 to 28 do
begin
if(not(LoggedIn))then exit;
if(not(FindNormalRandoms))then;
MMouseItem(i);
If IsUpText('ore') then;
MouseItem(i, 0);
Wait(RandomRange(50,100));
ChooseOption('Drop');
Wait(RandomRange(100,150));
end;
Players[CurrentPlayer].Loc:='start mining';
Exit;
end;

procedure HomeTeleport;
var
HomeTeleDTM, LumbridgeDTM, WalkDTM, TeleTimer : Integer;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
HomeTeleDTM := DTMFromString('mlwAAAHicY2dgYLBjYmCwAGJnIHYFYksgNgVidyB+CpS/D8T3gPgVEL8B4idA/BiI9x35xNA25wZWjA8w4sFQAADuVBZf');
LumbridgeDTM := DTMFromString('mggAAAHicY2NgYHBnZGCwAGJXINYD4lgg9gbiD0C5p0B8F4gZgXwmIH4BZK/efpDh4OQmhj0TGxjun9jMcPngTAZ1+3AGfqAcNsyIA0MAABLwELA=');
WalkDTM := DTMFromString('mbQAAAHicY2VgYPBhYmCIA+JYIJ4AxAkgNlC8FIiDgTgEiM2BOCjUm6GqppChtCybwThFGIz5geLomBELBgMAcKEJCg==');
Gametab(Tab_Magic);
if FindDTM(HomeTeleDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, true);
Wait(RandomRange(1500,2000));
end;
If FindDTM(LumbridgeDTM,x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 3, 3, true);
MarkTime(TeleTimer);
repeat
Antiban;
Wait(500);
until (TimeFromMark(TeleTimer) > 25000) or (FindDTM(WalkDTM, x, y, MMX1, MMY1, MMX2, MMY2) or FindSymbol(x, y, 'altar'));
if (TimeFromMark(TeleTimer) > 25000) then
begin
Writeln('Failed to home teleport');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end else
Wait(5000);
end;
Players[CurrentPlayer].Loc:='to stairs';
FreeDTM(HomeTeleDTM);
FreeDTM(LumbridgeDTM);
FreeDTM(WalkDTM);
end;

function ClimbDown(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box : TBox;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.27, 0.35);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 10989232, MSX1, MSY1, MSX2, MSY2, 5);
SortTPAFrom(TPA, Point(MSCX, MSCY));
ATPA := TPAtoATPAEx(TPA, 30, 30);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
{$IFDEF SMART}
SMART_DrawBoxEx(True, Box, clYellow);
{$ENDIF}
MMouse(MP.X, MP.Y, 4, 4);
if WaitUptextMulti(['limb'], 750) then
begin
x := MP.X; y := MP.Y;
Result := True
GetMousePos(x, y);
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Function FindBankBooth(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS: Integer;
Box : TBox;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.15, 0.41);
if FindColorsSpiralTolerance(MSCX, MSCY, TPA, 9409693, MSX1, MSY1, MSX2, MSY2, 7) then
begin
SortTPAFrom(TPA, Point(MSCX, MSCY));
ATPA := TPAtoATPAEx(TPA, 20, 20);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
{$IFDEF SMART}
SMART_DrawBoxEx(True, Box, clYellow);
{$ENDIF}
MMouse(MP.X, MP.Y, 4, 4);
if WaitUptextMulti(['ooth'], 750) then
begin
x := MP.X; y := MP.Y;
Result := True
GetMousePos(x, y);
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

procedure Banking;
var
CopperDTM, TinDTM, BankBoothDTM, StrangeRockDTM : Integer;
begin
CopperDTM := DTMFromString('mlwAAAHicY2dgYHBhYmBwAGI3IPYDYh8o3wKInwDlbwLxbSC+D8QvgfgdED8F4v05lgzRHkYMu7MtGTJDrBh2ZVkwxHoZM0S4GTLwA+VxYUY8GAoAC/4QKQ==');
TinDTM := DTMFromString('mlwAAAHicY2dgYMhnYmBIBuJMIC4A4gogLoXynzBA8A0gvgXEd4H4JRC/A+nLymKI9jBi8LDSYIiNjGBI9jdnSE1MZIhwM2TgB8rjwox4MBQAAFdbEGQ=');
BankBoothDTM := DTMFromString('mwQAAAHic42RgYGBlBBJAzA7EvFAMYjMC8R8GCC4H4iogrgbiSiAuAeJiKC6Fim1YNo9h3ZI5DJN6Ohg2Lp/PMHNiL8PU3g6GSd1tDLMm9zKsXTyHgR+ojhBmJALDAQAaPhcd');
StrangeRockDTM := DTMFromString('mlwAAAHicY2dgYMhjYmDIAuJCIC4D4gIgzgTiZCDmZGRgYAFiViDmBmJ+IOYCYjYgdnKwZ6gqLwXjuTOnMcRERTBoaqiDMT/QXFyYEQ+GAgAZYQsb');
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
if FindBankBooth(x, y) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('ank booth', 4000) then
begin
repeat
FindBankBooth(x, y);
Mouse(x, y, 3, 3, true);
Wait(RandomRange(1000, 1500));
until PinScreen or BankScreen;
if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin);
if BankScreen then
if FindDTM(CopperDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(100,200));
ChooseOption('All');
Wait(RandomRange(1000, 1200));
end;
if FindDtm(TinDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, false);
Wait(RandomRange(100,200));
ChooseOption('All');
Wait(RandomRange(1000,1200));
end;
if FindDTM(StrangeRockDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
repeat
Mouse(x, y, 3, 3, true);
Wait(RandomRange(200,300));
until Not FindDTM(StrangeRockDTM, x, y, MIX1, MIY1, MIX2, MIY2);
case Gems of
0:
begin
if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
repeat
Mouse(x, y, 2, 2, true);
Wait(RandomRange(200,300));
until Not FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2);
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
repeat
Mouse(x, y, 2, 2, true);
Wait(RandomRange(200,300));
until Not FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2);
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
repeat
Mouse(x, y, 2, 2, true);
Wait(RandomRange(200,300));
until Not FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2);
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
repeat
Mouse(x, y, 2, 2, true);
Wait(RandomRange(200,300));
until Not FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2);
end;
1:
begin
FreeDTM(CopperDTM);
FreeDTM(TinDTM);
FreeDTM(BankBoothDTM);
FreeDTM(StrangeRockDTM);
Proggy;
Players[CurrentPlayer].Loc := 'from banker to stairs'
Exit;
end;
end;
end;
end else
begin
Writeln('Couldnt find bank');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end;
FreeDTM(CopperDTM);
FreeDTM(TinDTM);
FreeDTM(BankBoothDTM);
FreeDTM(StrangeRockDTM);
Proggy;
Players[CurrentPlayer].Loc := 'from banker to stairs'
end;

procedure PathToLumbyCastle;
var
x, y: Integer;
Q: Array [0..10] of Integer;
aFound: Extended;
begin
Q[0] := DTMFromString('mbQAAAHicY2VgYJjAxMBQDsSVQNwDxDOB2JIBgj2A2B+IPYE4K8GNQSVCiCEqOgKM42PsGfiB4uiYEQsGAwB8UQkJ');
Q[1] := DTMFromString('mbQAAAHicY2VgYOhmYmCIA+J8IC4B4hlArAAUlwBiMyB2AmJzIA4KNGMIrEhjyEpwY4iPtGdIiTdn4AeKo2NGLBgMAFcfCLQ=');
Q[2] := DTMFromString('mbQAAAHicY2VgYKhhYmDwAeJ0IK4H4n4glgWKqwCxCRDbALEFEGcluDEEVqQxqEQIgdmRoYYM/EBxdMyIBYMBADm/CEI=');
Q[3] := DTMFromString('mggAAAHicY2NgYGhhYmAIB+J0IK4G4m4gngzEykA5DSA2AWILIDZlgIhlJbgxeOXFMbgkyTCkxTgzuLqZMlhYqjLwA+WwYUYcGAIAKqwJoA==');
Q[4] := DTMFromString('mggAAAHicY2NgYChnYmBIAuJoIC4D4i4g7gViJaCcKhAHALELEBsAsTQQp8U4M5hZajOYJIkxZCW4Mdg564DF+IFy2DAjDgwBABIXCWc=');
Q[5] := DTMFromString('mggAAAHicY2NgYChmYmCIBOIYIM4C4nIgrgViWQYI1gNiYyBWA2JFIE6MdGCY0ZXCkJXgxmBnp8xgYiTLEBtqy8APlMOGGXFgCAAADrMJfA==');
Q[6] := DTMFromString('mggAAAHicY2NgYAhmYmBwBuIyIA4E4hQgDgFiZaCcChArAbEJEOsAsRMQBwX5MNQVBTP8+80KZpvoKTF018Uw8APlsGFGHBgCAEOKCp0=');
Q[7] := DTMFromString('mggAAAHicY2NgYEhmYmDwBeJwIA4G4kwgLgNiWaCcIhDrA7ENEBsAsRwQ29npM7S21DG4uKkzNJeHMwQF+TCYGagw8APlsGFGHBgCAPJRCVE=');
Q[8] := DTMFromString('mbQAAAHicY2VgYPBhYmCIA+JYIJ4AxAkgNlC8FIiDgTgEiM2BOCjUm6GqppChtCybwThFGIz5geLomBELBgMAcKEJCg==');
Q[9] := DTMFromString('mggAAAHicY2NgYHBiYWAIAWJXIHYD4jAgDgVie0YGhjwgDgZifSD2AmITIK6vq2RwTJBm6OpsAWNnFzUGeydVBn6gWdgwIw4MAQBVtQqx');
Q[10] := DTMFromString('mbQAAAHicY2VgYAhhYmBoAuIcIE4D4hIQDRQvBOJ0KO0MxJO6ehjUgsXAdGioLpjmB4qjY0YsGAwA2EAKzA==');
MouseSpeed := 18;
MakeCompass('n');
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(6);
repeat
Wait(50 + Random(25));
until FindDTMRotated(Q[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[5], 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[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[6], 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[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[7], 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[8], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[8], 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[9], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[9], 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[10], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound);
end;
if FindDTMRotated(Q[10], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
end;
FreeDTMs(Q);
Wait(2000);
Players[CurrentPlayer].Loc := 'up stairs';
end;

procedure PathToMines;
var
PathToMine : TPointArray;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
begin
SPS_Setup(RUNESCAPE_SURFACE,['11_10','11_9','12_9']);
PathToMine := [Point(4660, 3821), Point(4665, 3821), Point(4669, 3821), Point(4674, 3821), Point(4679, 3821), Point(4684, 3820), Point(4689, 3818), Point(4695, 3815), Point(4696, 3811), Point(4698, 3806), Point(4698, 3800), Point(4698, 3793), Point(4697, 3787), Point(4704, 3785), Point(4712, 3785), Point(4718, 3785), Point(4725, 3785), Point(4733, 3785), Point(4738, 3785), Point(4748, 3787), Point(4759, 3787), Point(4763, 3791), Point(4765, 3794), Point(4768, 3796), Point(4772, 3800), Point(4773, 3805), Point(4776, 3812), Point(4777, 3816), Point(4777, 3822), Point(4779, 3828), Point(4780, 3834), Point(4783, 3841), Point(4783, 3847), Point(4784, 3855), Point(4792, 3859), Point(4799, 3865), Point(4802, 3872), Point(4804, 3878), Point(4804, 3882), Point(4805, 3889), Point(4807, 3896), Point(4807, 3906), Point(4806, 3910), Point(4804, 3913), Point(4802, 3922), Point(4800, 3929), Point(4798, 3937), Point(4795, 3946), Point(4792, 3960), Point(4790, 3972), Point(4788, 3983), Point(4786, 3993), Point(4785, 4000), Point(4783, 4010), Point(4781, 4017), Point(4778, 4025), Point(4774, 4032), Point(4771, 4039), Point(4766, 4045), Point(4762, 4054), Point(4758, 4060), Point(4755, 4064), Point(4749, 4068)];
if SPS_WalkPath(PathToMine) then
begin
Wait(1000);
end else
begin
Writeln('Failed to walk to mine');
Players[CurrentPlayer].Loc := 'restart at mine'
Exit;
end;
end;
Players[CurrentPlayer].Loc := 'start mining'
end;

procedure PathToBanker;
var
BankBoothsDTM : Integer;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
BankBoothsDTM := DTMFromString('m1gAAAHic42JgYKhlYmBIB+IYII4H4kwgbgTiFiDuBeI5QNwPxCpAtZZAbADETkDsDsRuQBwIxM5AbAfE+kB8+SkLAxM7K0NhST6YBuHSimIUOrcgm4EfqJYYzEgkRgAAbVAPPw==');
If RadialWalkTolerance(7959932, 10, 25, 45, 1, 1, 32) then
begin
FFlag(0);
Players[CurrentPlayer].Loc := 'at bank';
Wait(1000);
end else
begin
Writeln('Couldnt find bank');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end;
FreeDTM(BankBoothsDTM);
end;

procedure PathToStairsFromBanker;
var
c, StairsDTM, Stairs : Integer;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
StairsDTM := DTMFromString('mwQAAAHicjczBCkBAAIThsSVtDvvyTlxcLLXbSspJXkmUohRDm9yY+prbLwGsNNNGh7fTQhONJAUQkvAiUi8xDX2H2lVwViNLE7SNQalzWFPcf1FsfQl+eHYCOsIbfw==');
c := GetColorToleranceSpeed;
SetColorToleranceSpeed(1);
If RadialWalkTolerance(7959932, 195, 200, 55, 1, 1, 32) then
begin
MarkTime(Stairs);
Wait(1500);
if FindDTM(StairsDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Players[CurrentPlayer].Loc := 'down stairs'
FreeDTM(StairsDTM);
Exit;
end else
if TimeFromMark(Stairs) > 2000 then
begin
Players[CurrentPlayer].Loc := 'down stairs'
FreeDTM(StairsDTM);
Exit;
end;
end else
begin
if Not ClimbDown(x, y) then
Writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine'
FreeDTM(StairsDTM);
Exit;
end;
SetColorspeed2Modifiers(0.2, 0.2);
SetColorToleranceSpeed(c);
Players[CurrentPlayer].Loc := 'down stairs'
end;

Procedure ClimbDown2;
var
MiniMapDTM, MiniMapDTM2, StairsDTM : Integer;
aFound : Extended;
begin
MiniMapDTM := DTMFromString('mggAAAHicY2NgYGhiYmBYBcQ2QBwGxLOAOAWIY4FyMUBsBcTKQCwLxGJA7BusxaAQLALGedm5DF0dHQye/uoMkkA5bJgRB4YAAEOUCis=');
MiniMapDTM2 := DTMFromString('mlwAAAHicY2dgYJjNxMAQCcRhQJwIxHOBeBYQpwOxAVBeFYhNgdgFiG2AOB2IE4G4tqaWob6unqGrs5OBkZGNoaigCEyDsAhQHhdmxIOhAACR7Au+');
StairsDTM := DTMFromString('mwQAAAHicjczBCkBAAIThsSVtDvvyTlxcLLXbSspJXkmUohRDm9yY+prbLwGsNNNGh7fTQhONJAUQkvAiUi8xDX2H2lVwViNLE7SNQalzWFPcf1FsfQl+eHYCOsIbfw==');
repeat
if FindDTMRotated(StairsDTM, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 1, 1, true);
Wait(RandomRange(750,1000));
end else
if ClimbDown(x, y) then
begin
Mouse(x, y, 2, 2, true);
Wait(RandomRange(1000, 1200));
MMouse(x, y, 2, 2);
end else
writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine';
until FindDTM(MiniMapDTM2, x, y, MMX1, MMY1, MMX2, MMY2) or FindSymbol(x, y, 'spin');
if FindDTM(MiniMapDTM2, x, y, MMX1, MMY1, MMX2, MMY2) or FindSymbol(x, y, 'spin') then
if FindDTM(StairsDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('own');
Wait(RandomRange(750, 1000));
end else
if ClimbDown(x, y) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('own');
Wait(RandomRange(750, 1000));
end else
if not ClimbDown(x, y) then
begin
writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end;
Players[CurrentPlayer].Loc := 'to mine';
FreeDTM(MiniMapDTM);
FreeDTM(MiniMapDTM2);
FreeDTM(StairsDTM);
end;

function ClimbUp(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS: Integer;
Box : TBox;
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.22, 0.14);
if FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5661552, MSX1, MSY1, MSX2, MSY2, 3) then
begin
SortTPAFrom(TPA, Point(MSCX, MSCY));
ATPA := TPAtoATPAEx(TPA, 30, 30);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
{$IFDEF SMART}
SMART_DrawBoxEx(True, Box, clYellow);
{$ENDIF}
MMouse(MP.X, MP.Y, 4, 4);
if WaitUptextMulti(['aircase'], 750) then
begin
x := MP.X; y := MP.Y;
Result := True
GetMousePos(x, y);
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Procedure ClimbUp2;
var
MiniMapDTM, BankBoothDTM, StairsDTM : Integer;
begin
BankBoothDTM := DTMFromString('mlwAAAHicY2dgYKhjYmCIBOIIIE4E4g4g7gPiuUCsApTXAGITILYCYicg1gJiWyD+85eBITc3naGtrZ6BhY2Zobq6hKG0NB/M5gfK48KMeDAUAADUggzO');
MiniMapDTM := DTMFromString('mlwAAAHicY2dgYJjNxMAQCcRhQJwIxHOBeBYQpwOxAVBeFYhNgdgFiG2AOB2IE4G4tqaWob6unqGrs5OBkZGNoaigCEyDsAhQHhdmxIOhAACR7Au+');
StairsDTM := DTMFromString('mwQAAAHicjczBCkBAAIThsSVtDvvyTlxcLLXbSspJXkmUohRDm9yY+prbLwGsNNNGh7fTQhONJAUQkvAiUi8xDX2H2lVwViNLE7SNQalzWFPcf1FsfQl+eHYCOsIbfw==');
repeat
if FindDTM(StairsDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 1, 1, true);
Wait(RandomRange(1800, 2000));
end else
if ClimbUp(x, y) then
begin
Mouse(x, y, 2, 2, true);
Wait(RandomRange(1000, 1200));
MMouse(x, y, 2, 2);
Wait(1500);
end else
writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine';
until Not DidYellowClick and FindSymbol(x, y, 'spin');
if FindDTM(MiniMapDTM, x, y, MMX1, MMY1, MMX2, MMY2) or FindSymbol(x, y, 'spin') then
if FindDTM(StairsDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('up');
Wait(RandomRange(750, 1000));
end else
if ClimbUp(x, y) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('up');
Wait(RandomRange(750, 1000));
end else
begin
writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end;
Players[CurrentPlayer].Loc := 'to banker'
FreeDTM(BankBoothDTM);
FreeDTM(MiniMapDTM);
FreeDTM(StairsDTM);
end;

procedure FindStage;
begin
case StartLocation of
0: Players[CurrentPlayer].Loc := 'start mining';
1: Players[CurrentPlayer].Loc := 'to bank';
2: Players[CurrentPlayer].Loc := 'from banker to stairs';
3: Players[CurrentPlayer].Loc := 'at bank';
4: Players[CurrentPlayer].Loc := 'to mine';
5: Players[CurrentPlayer].Loc := 'to stairs';
end;
end;

procedure MainLoop;
begin
if Not LoggedIn then
LoginPlayer;
SetAngle(0);
MakeCompass('n');
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
repeat
case Players[CurrentPlayer].Loc of
'to bank':
case Bank of
0: HomeTeleport;
1: PathToLumbyCastle;
2: DropOre;
end;
'start mining':
case Ore of
0: MineCopper;
1: MineTin;
2: MineOres;
end;
'at bank': Banking;
'to mine': PathToMines;
'drop ore': DropOre;
'up stairs': ClimbUp2;
'hometele': HomeTeleport;
'to stairs': PathToLumbyCastle;
'statue to mine': PathToMines;
'to banker': PathToBanker;
'down stairs': ClimbDown2;
'from banker to stairs':PathToStairsFromBanker;
'restart at mine':
begin
writeln('Restart script near mine or bank or fix your user settings.');
Logout;
exit;
end;
end;
until AllPlayersInactive
end;

begin
{$IFDEF SMART}
Smart_Server := 83;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
SetupSRL();
ClearDebug();
DeclarePlayers();
LoginPlayer();
SetAngle(0);
MakeCompass('n');
FindStage;
MainLoop();
Proggy;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
end.

Here is my 2nd script that I made which picks up papayas from fruit bat spec, notes them, and banks/goes to obelisk when needed. Its pretty stable and I have multiple 6 hour + proggies for it. Some of the ideas came from PatDuffy's fruit bat script, but its written completely different.


program TotalPapaya;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
{$i srl/srl/skill/summoning.simba}
{$i srl/srl/misc/debug.simba}

{$IFDEF SMART}
{$i srl/srl/misc/paintsmart.simba}
{$ENDIF}

const
PapayaPrice = 1874; //
ScrollPrice = 258; //
ScrollSlot = 1; //
PapayaSlot = 2; //
Version = 1.0; //

Var
X, Y, FruitBatDTM,LawRuneDTM, PapayaInvyDTM, CenterPointDTM, StartScroll, CurrentScroll, UsedScroll, PapProfit, ScrollLoss : Integer;
aFound: Extended;
SumPoints6DTM, SumPoints0DTM, BatDTM, SpecDTM, SumPoints3DTM, StartPapaya, CurrentPapaya, GainedPapaya, ProfitPerHour : Integer;
SumPoints96DTM, Timer, BoundsX, BoundsY, RingDTM, SpellDTM, FullSpecDTM, BankDTM, BankBoothDTM, BackupCenterDTM, EarthRuneDTM, AirRuneDTM, TotalProfit : Integer;
PathToObby : Array [0..7] of Integer;
PathToCenter : Array [0..7] of Integer;
Ring : Boolean;

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := ''; // Username
Pass := ''; // Password
Pin := ''; // Pin
Active := True; // Set to true if you want to use Player 0
end;
end;

procedure Antiban;
begin
if(not(LoggedIn))then Exit;
begin
case Random(100) of
10: RandomRClick;
30: PickUpMouse;
89: ExamineInv;
end;
end;
end;

procedure Proggy;
begin
CurrentScroll := GetAmountBox(InvBox(ScrollSlot));
UsedScroll := StartScroll - CurrentScroll;
PapProfit := (GainedPapaya * PapayaPrice);
ScrollLoss := (UsedScroll * ScrollPrice);
GainedPapaya := CurrentPapaya - StartPapaya;
TotalProfit := (PapProfit) - (ScrollLoss);
ProfitPerHour := (3600*(TotalProfit)/(GetTimeRunning/1000));
Writeln('//////TotalPapaya V' + ToStr(Version) + '//////');
Writeln('Papayas gained: ' + ToStr(GainedPapaya));
Writeln('Scrolls used: ' + ToStr(UsedScroll));
Writeln('Profit earned: ' + ToStr(TotalProfit) + '(' + ToStr(ProfitPerHour) + ' GP/Hour)');
Writeln('Running for: ' + MsToTime(GetTimeRunning, Time_Bare))
Writeln('///////////////////////////');
end;

procedure GetDTMs;
begin
CenterPointDTM := DTMFromString('mlwAAAHicY2dgYOBlZGDIB+JIKD4MFOsA4iVAPBeIs4E4BYhNgTgYiOuAOA2Ire2kGXKTPRgqspwZIvzVGHy8PMHYyVWOgR8ojwsz4sFQAADBNwxy');
PapayaInvyDTM := DTMFromString('mggAAAHicY2NgYChmZmDIBeIsIM4H4jIgLgRiQSYGBl4gFgZiCSAWAWI2IO6YJcqwdLcUw7zNEgx9C8UYEnL5Ger6hRn4gWZhw4w4MAQAAGiSCuM=');
FruitBatDTM := DTMFromString('mlwAAAHicY2dgYHBmYmCwAWJPIHYFYjsg9gNiCyAOYWRgCALiQCCOAOJwIA6D4okn7BhatlkwzHmmCGdv2ziPobgghYEfaC4uzIgHQwEAbjAPsQ==');
SumPoints6DTM := DTMFromString('mwQAAAHic42RgYHBkYmBwg2J3ILaE4hAg9gPiKCC+CVR3GYhvAfF1IL4ExHeBeC8Q7wPiQ0Asu+YMg3jNQjA9Z8ZUBrGquQwyM44yBE2MZdjh5MRgGrCYgR+ojhBmJALDAQCz6xbo');
SumPoints0DTM := DTMFromString('mggAAAHicY2NgYGhkYmCwAuIwIPYH4iggPgzEN4By14F4NxDvBeKDUP6cGVMZ6msqGYImxjLscHJiMA1YzDBr+mQGfqAcNsyIA0MAADD7EFQ=');
SumPoints3DTM := DTMFromString('mggAAAHicY2NgYOhkYmDoA+JmJgi7A8rnQMLMQMwPxKxALDv3NMPCubMY3O2NGWSmHwbTc2ZMZeAHmoUNM+LAEAAAwRIL9Q==');
SumPoints96DTM := DTMFromString('mbQAAAHicY2VgYOBgZmBgAmJ+IJ7JxMAwCYi/MzIw/IDi+0B8D4hnTpvMILvqNIOTlQFD0MRYhh1OTgzYACMWDAYAVH0MgQ==');
BatDTM := DTMFromString('mbQAAAHicY2VgYGBkRGBWIP4DFKsD4gogbgHiWiCuAeI5PW0M+XGhDF05MQwRoQEMIYG+DPxAcXTMiAWDAQCBKAni');
SpecDTM := DTMFromString('mggAAAHicY2NgYLBkYmCwAmJnINYBYkMgtgXiX0C590D8F4gZGRkYPgFpNiDdPXsLw789Cgzfrjaj0PxAeWyYEQeGAABIeBGo');
FullSpecDTM := DTMFromString('mggAAAHicY2NgYDjDxMDQAMTszAwMs4D0FCCeB8SfGRkYvgHxDyC+AcS3gfgeEEsvOcwgM/MYg8zy4wxBE2MZdjg5MZgGLGbgB5qFDTPiwBAAAKN9ETY=');
PathToObby[0] := DTMFromString('mggAAAHicY2NgYJjOxMAwEYinAXEzEDcBcQAIA+WMgFgZiLOBOA6IVYHYxVuRQSGUnyEsIpTBA8g2iBcGY36gHDbMiANDAAArNAlI');
PathToObby[1] := DTMFromString('mggAAAHicY2NgYFjFxMCwEohXAPFyIF4GxNOBOB4oFwnEjkDsDcRmQBwFxHb2sgzxvtoMyYG6DDa2VgzyIQIM/gG+DPxAOWyYEQeGAACuJwqa');
PathToObby[2] := DTMFromString('mbQAAAHicY2VgYJjGxMBQBMXFQJwCxNFAcTsg9gLiCCCOB+IYL1mG9EA9huAAP4ZkXx0Gfx9PBn6gODpmxILBAABiKQil');
PathToObby[3] := DTMFromString('mlwAAAHicY2dgYOhhYmDoAuJQIE4F4jgouwOI04HyoUAcDMSeQOwPxJZAXAzEXraKDEaxIgzpgXoMwQF+DE42smC2d64JAz9QHhdmxIOhAABl1gtz');
PathToObby[4] := DTMFromString('mbQAAAHicY2VgYGhgYmCoAOJmIJ4IxKlAXAkULwbiQiAuAOIAII6M1GQwihVh8M41YVAKFmDwd9Zh4AeKo2NGLBgMAHK8CJs=');
PathToObby[5] := DTMFromString('mbQAAAHicY2VgYJjAxMDQCsS5QFwFxJVAnAgU9wRiXyD2AGJLIPYPVWVQCuVnMIoXZvDON2aIiAhl4AeKo2NGLBgMAEpACDI=');
PathToObby[6] := DTMFromString('mggAAAHicY2NgYJjExMAwGYgbgbgSiNOBuAKIU4ByAUAcCcTZQBwLxGZAHJQgy6AUyg/GRvHCDN75xmA2P1AOG2bEgSEAADzACW4=');
PathToObby[7] := DTMFromString('mggAAAHicY2NgYOhjYmAoBuISIE4G4hggbgPiPKBcPBDbA7EnEEdCae8AZQalUH44NooXZnAzEmTgB8phw4w4MAQAAPhUCKE=');
PathToCenter[0] := DTMFromString('mbQAAAHicY2VgYAhkYmDwA+IIIM4GYlsgtgeKewBxNBDbArEZEIcmaDKYJAqDsUo4P5jmB4qjY0YsGAwA1cUGtA==');
PathToCenter[1] := DTMFromString('mbQAAAHicY2VgYIhkYmDIAeJoIK6Bsi2A4tZA7ArELkAcBcTBkWoMKuH8DCaJwgza0hxgNj9QHB0zYsFgAADfTgaa');
PathToCenter[2] := DTMFromString('mggAAAHicY2NgYAhnYmCIBuIcIC4F4lgg9gZhoJwjENsDcRIQpwNxFBAHR6oxmCQKM6iE84Oxb6ExmOYHymHDjDgwBAAA2/oIpQ==');
PathToCenter[3] := DTMFromString('mbQAAAHicY2VgYIhnYmCoZILQGUCcDcR2QHFfIA4C4lQo28dFgcEkURiMVcL5GXwLjRn4geLomBELBgMAEGYHdA==');
PathToCenter[4] := DTMFromString('mbQAAAHicY2VgYIhlYmAoBeI+IM6GYjugeCYQpwKxFRCHAXGcpwyDSaIwGKuE8zP4Fhoz8APF0TEjFgwGACp5B8A=');
PathToCenter[5] := DTMFromString('mggAAAHicY2NgYAhgYmAIAWJfKG6E4hCgnBMQmwKxNxD7AnEmSMxBkyE4yJshM1QXjE0ShRl8C40Z+IFy2DAjDgwBABCNCYk=');
PathToCenter[6] := DTMFromString('mbQAAAHicY2VgYHBjYmAoAeIiIC4A4nwg9mWAYAcgNgJiLSB28ZBjSA7QYrC3s2DIDNVlMEkUZuAHiqNjRiwYDAALMAdw');
PathToCenter[7] := DTMFromString('m1gAAAHic42JgYChkYmBoA+IaIG4A4lYgzgbiJCDOgOJZQFwOVNsIxB1A3A3FmUCcD8VtQBwGxDZuMgzyUQIM9h6yYLajtxyDb4gXGIPY5raSYHl+oFpiMCORGAEAfHgQ0A==');
RingDTM := DTMFromString('mggAAAHicY2NgYNjLxMCwEYj3AfFWJgh/GxBXMDIw1ANxCxC3AXEtEFcDsfgcKYZzm+QYGvOFGa5sl2e4sVuBob9GlIEfaBY2zIgDQwAAM04PsQ==');
BankDTM := DTMFromString('mlwAAAHicY2dgYAhhYmDwBOJkIHYF4gogdgfiLCCuBsrXAHEOEOcD8QwgTgDiWhB7cjdDQ00JQ2S8NENanCZDW/dkhllTexmy0uIZ+IHyuDAjHgwFAKpTD7A=');
BankBoothDTM := DTMFromString('mggAAAHicY2NgYNBgZGCQBGJlIFYDYh0g1gbi+UC5FUA8CYjXQtnTgbgwJZxh+YIFDDfOn2OYOXkyQ25iCENLWRoDP1AOG2bEgSEAAGq1Dtw=');
LawRuneDTM := DTMFromString('mggAAAHicY2NgYLBlZGAwAmIPILYDYhcgNgfiQqBcPhSXA3EWFMurXGMI9vdnmDFxIkOAry+YD8L8QDlsmBEHhgAAd+YLVw==');
EarthRuneDTM := DTMFromString('mlwAAAHicY2dgYJjKyMAwC4j7oHg+EC8E4i4gzgfK5wFxLhCXAHExlJ0FxDE2vHDs7uLC0NnSzDBz8mSGpLg4Bn6gPC7MiAdDAQCnyg7H');
AirRuneDTM := DTMFromString('mggAAAHicY2NgYDjAyMCwE4iPA/FZID4CxNuBOBcolwnE2VBcAsR5QHz3yhU4njdjBkNGSgpDTEQEAz9QDhtmxIEhAAAwTBMc');
SpellDTM := DTMFromString('mlwAAAHicY2dgYAhjYmCIAOIQIA4A4iggjgbiPCB2ZWRg8IBiByC2A2JvIHYH4n1HPjGs3PsUjLvbjoFxVuQBhpSEKAZ+oLm4MCMeDAUAYbISQA==');
BackupCenterDTM := DTMFromString('mggAAAHicY2NgYJgDxL6MDAzpQNoBiMOA+CSQnwekJwKxGhBbALEJVK21rTRDUrAjg4+XJxg7ucox+NgqMuACjDgwBAAAN/kJgQ==');
end;

procedure LoseDTMs;
begin
FreeDTM(CenterPointDTM);
FreeDTM(PapayaInvyDTM);
FreeDTM(FruitBatDTM);
FreeDTM(SumPoints6DTM);
FreeDTM(SumPoints0DTM);
FreeDTM(SumPoints3DTM);
FreeDTM(BatDTM);
FreeDTM(SpecDTM);
FreeDTM(SumPoints96DTM);
FreeDTM(FullSpecDTM);
FreeDTMs(PathToObby);
FreeDTMs(PathToCenter);
FreeDTM(RingDTM);
FreeDTM(BankDTM);
FreeDTM(BankBoothDTM);
FreeDTM(LawRuneDTM);
FreeDTM(AirRuneDTM);
FreeDTM(EarthRuneDTM);
FreeDTM(SpellDTM);
FreeDTM(BackupCenterDTM);
end;

function UsingBat : Boolean;
var
tmpCTS : Integer;
TPA : TPointArray;
begin
SetColorspeed2Modifiers(0.56, 0.14);
tmpCTS := GetColorToleranceSpeed;
SetColorToleranceSpeed(2);
if FindColorsSpiralTolerance(MSCX, MSCY, TPA, 4738126, MSX1, MSY1, MSX2, MSY2, 5) then
begin
Result := True;
end else
Result := False;
SetColorspeed2Modifiers(0.2, 0.2);
SetColorToleranceSpeed(tmpCTS);
if UsingFamiliar then
begin
Result := True;
end else
Result := False;
end;

function HasRing : Boolean;
begin
FTab(tab_Equip);
if FindDTM(RingDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Result := True
end else
Result := False
end;

Function InteractFamiliarMod(Option:String): Boolean;
begin
if (not LoggedIn) then exit;
if not UsingBat then
Result:=False;

if UsingBat then
begin
if (Option = '') then
begin
MouseBox(695,140,740,155,1);
Result := True;
end else
begin
MouseBox(695,140,740,155,2);
if ChooseOption(Option) then
Result := True
else
srl_Warn('InteractFamiliar', 'Incorrect option', warn_AllVersions);
end;
end else
begin
srl_Warn('InteractFamiliar', 'No familiar present!', warn_AllVersions);
Result:=False;
Exit;
end;
Wait(100 + Random(50));
end;

function NoPoints : Boolean;
var
tmpCTS : Integer;
TPA : TPointArray;
begin
if FindDTM(SumPoints3DTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Result := True;
end else
Result := False;
tmpCTS := GetColorToleranceSpeed;
SetColorToleranceSpeed(1);
if FindColorsSpiralTolerance(MICX, MICY, TPA, 13149469, MIX1, MIY1, MIX2, MIY2, 5) then
begin
Result := False;
end else
Result := True;
SetColorspeed2Modifiers(0.2, 0.2);
SetColorToleranceSpeed(tmpCTS);
end;

Procedure SummonFamiliar;
Var
x, y : Integer;
Begin
Writeln('Summoning Familiar');
if (GetSummonPoints < 8) then
begin
Players[CurrentPlayer].Loc := 'Walk to obby';
Exit;
end;
if FindBlackChatMessage('efore') then
begin
Players[CurrentPlayer].Loc := 'Walk to obby';
Exit;
end;
FTab(tab_Inv);
If FindDTM(FruitBatDTM, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Mouse(X, Y, 5, 5, false);
Wait(RandomRange(250, 500));
ChooseOption('ummon');
Wait(RandomRange(2000,2200));
Players[CurrentPlayer].Loc := 'Center';
Exit;
End Else
Writeln('Couldnt find fruitbat in inventory');
Players[CurrentPlayer].Loc := 'Tele';
End;

Procedure CenterPoint;
Begin
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if FindDTMRotated(CenterPointDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('Found DTM 1');
Mouse(x, y, 2, 2, false);
ChooseOption('Walk here');
FFlag(0);
end else
if FindDTMRotated(BackupCenterDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('Found DTM 2');
Mouse(x, y, 2, 2, false);
ChooseOption('Walk here');
FFlag(0);
end else if FindDTMRotated(PathToCenter[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Writeln('Found DTM 3');
Mouse(x, y, 2, 2, true);
FFlag(0);
end;
BoundsX := MSCX;
BoundsY := MSCY;
Players[CurrentPlayer].Loc := 'Special'
End;

Function FindPineapples(var x, y : Integer) : Boolean;
var
a, InvCounter : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS, i : Integer;
Box, MyBox : TBox;
Begin
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if InvFull then
begin
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
if(not(LoggedIn))then Exit;
MyBox := IntToBox((BoundsX - 100), (BoundsY - 100), (BoundsX + 100), (BoundsY + 100));
SMART_DrawBoxEx(True, MyBox, clRed);
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.39, 1.70);
FindColorsSpiralTolerance(BoundsX, BoundsY, TPA, 2994389, BoundsX-100, BoundsY-100, BoundsX+100, BoundsY+100, 9);
SortTPAFrom(TPA, Point(BoundsX, BoundsY));
ATPA := TPAtoATPAEx(TPA, 20, 20);
for a := 0 to High(ATPA) do
begin
if InvFull then
begin
Writeln('Sending to note');
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
InvCounter := InvCount + 1;
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.X - 5), (MP.Y - 5), (MP.X + 5), (MP.Y + 5));
{$IFDEF SMART}
SMART_DrawBoxEx(True, Box, clYellow);
{$ENDIF}
Mouse(MP.X, MP.Y, 2, 2, false);
if OptionsExist(['aya'], false) then
begin
Wait(RandomRange(310, 400));
ChooseOptionMulti(['ake Pa', 'aya']);
for i := 0 to 15 do
begin
Wait(150);
if InvCounter = InvCount then
Break;
end;
Result := True;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Inc(CurrentPapaya);
Wait(800);
Break;
end else
begin
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Wait(RandomRange(300, 460));
ChooseOption('Cancel');
DeleteValueInTPA(ATPA[a], a);
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Function FindPapayas(var x, y : Integer) : Boolean;
var
a, InvCounter : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS, i : Integer;
Box, MyBox : TBox;
Begin
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if InvFull then
begin
Writeln('Sending to note');
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
if(not(LoggedIn))then Exit;
MyBox := IntToBox((BoundsX - 100), (BoundsY - 100), (BoundsX + 100), (BoundsY + 100));
SMART_DrawBoxEx(True, MyBox, clRed);
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.26, 1.30);

FindColorsSpiralTolerance(BoundsX, BoundsY, TPA, 2667406, BoundsX-100, BoundsY-100, BoundsX+100, BoundsY+100, 10);

SortTPAFrom(TPA, Point(BoundsX, BoundsY));
ATPA := TPAtoATPA(TPA,25);
for a := 0 to High(ATPA) do
begin
if InvFull then
begin
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
InvCounter := InvCount + 1;
MiddleTPAEx(ATPA[a], x, y);
{$IFDEF SMART}
SMART_DrawBoxEx(True, Box, clYellow);
{$ENDIF}
Mouse(x, y, 1, 1, false);
if OptionsExist(['aya'], false) then
begin
ChooseOptionMulti(['aya', 'ake Pa']);
for i := 0 to 15 do
begin
Wait(150);
if InvCounter = InvCount then
Break;
end;
Result := True;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Wait(800);
Inc(CurrentPapaya)
Break;
end else
begin
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Wait(RandomRange(350, 490));
ChooseOption('Cancel');
DeleteValueInTPA(ATPA[a], a);
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Procedure PickUpPapaya;
Begin
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if(not(LoggedIn))then Exit;
repeat
if InvFull then
begin
Writeln('Set to note');
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
until not FindPapayas(x, y);
Players[CurrentPlayer].Loc := 'Pick Up2';
End;

Procedure PickUpPineapples;
begin
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if(not(LoggedIn))then Exit;
repeat
if InvFull then
begin
Writeln('Set to note');
Players[CurrentPlayer].Loc := 'Note';
Exit;
end;
until not FindPineapples(x, y);
Players[CurrentPlayer].Loc := 'Center';
end;

procedure PathToObelisk;
var
T1 : Integer;
begin
if FindDTMRotated(PathToObby[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToObby[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToObby[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
Players[CurrentPlayer].Loc := 'Use obby';
end;
end;

procedure PathToCenterPoint;
var
T1 : Integer;
begin
if FindDTMRotated(PathToCenter[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
repeat
Wait(50 + Random(25));
until FindDTMRotated(PathToCenter[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(T1) > 10000);
end;
if FindDTMRotated(PathToCenter[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
if(not(LoggedIn))then Exit;
if(not(FindNormalRandoms))then
Mouse(x, y, 3, 3, True);
FFlag(6);
MarkTime(T1);
Players[CurrentPlayer].Loc := 'Special';
end else if FindSymbol(x, y, 'farming spot') then
Mouse(x, y, 0, 0, true);
Players[CurrentPlayer].Loc := 'Special';
end;

procedure UseObelisk;
var
TPA : TPointArray;
i : Integer;
begin
Wait(3000);
repeat
Writeln('Started obby');
repeat
Writeln('waiting');
if FindColorsSpiralTolerance(x, y, TPA, 6189689, MSX1, MSY1, MSX2, MSY2, 4) then
if FindObjTPA(x, y, 6189689, 4, 2, 2, 2, 4, ['enew']) then
Mouse(x, y, 2, 2, true);
Wait(500);
until Not DidYellowClick;
for i := 0 to 25 do
begin
Wait(200);
if (GetSummonPoints > 8) then
Break;
end;
until (GetSummonPoints > 8)
Wait(1000);
Players[CurrentPlayer].Loc := 'Walk to center';
Exit;
end;

Procedure UseSpecial;
var
TPA : TPointArray;
begin
While TimeFromMark(Timer) < RandomRange(28000,31000) do
begin
Antiban;
Wait(RandomRange(1500, 2000));
end;
InteractFamiliarMod('')
Writeln('Speccing');
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
if ((FindColorsSpiralTolerance(x, y, TPA, 1515552, MIX1, MIY1, MIX2, MIY2, 0))) then
begin
Writeln('Out of scrolls');
PickUpPapaya;
PickUpPineapples;
Players[CurrentPlayer].Loc := 'Logout';
Exit;
end;
if UsingBat then
begin;
FindDTM(SpecDTM, x, y, MIX1, MIY1, MIX2, MIY2);
Repeat
Wait(RandomRange(200, 460));
Mouse(x, y, 0, 0, true);
until NoPoints;
MarkTime(Timer);
Players[CurrentPlayer].Loc := 'Pick Up';
Exit;
end else
Players[CurrentPlayer].Loc := 'To Obelisk';
end;

procedure UseRing;
begin
FTab(tab_Equip);
If FindDTM(RingDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('astle');
repeat
Wait(200);
until FindSymbol(x, y, 'bank');
Players[CurrentPlayer].Loc := 'Find bank';
end else
Writeln('Didnt have ring of duelling equipped');
end;

procedure OpenBankz;
var
i : Integer;
begin
if FindDTM(LawRuneDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Players[CurrentPlayer].Loc := 'Tele back';
Exit;
end;
if FindDTM(BankDTM, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Mouse(x + 50, y + 5, 0, 0, true);
Flag;
Ring := HasRing;
Wait(2000);
FindDTMRotated(BankBoothDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound);
Mouse(x, y, 0, 0, true);
Players[CurrentPlayer].Loc := 'Bank';
end;
end;

procedure Bank;
begin
repeat
Wait(200);
until FindDTM(FruitBatDTM, x, y, MSX1, MSY1, MSX2, MSY2);
if FindDTM(PapayaInvyDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('All');
Wait(RandomRange(400, 600));
end;
if Not Ring then
begin
FindDTM(RingDTM, x, y, MSX1, MSY1, MSX2, MSY2);
Mouse(x, y, 5, 5, true);
repeat
Wait(100);
until FindDTM(RingDTM, x, y, MIX1, MIY1, MIX2, MIY2);
Mouse(x, y, 5, 5, false);
WaitOption('ear', 2000);
end;
if FindDTM(FruitBatDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('10');
Wait(RandomRange(700, 800));
FindDTM(LawRuneDTM, x, y, MSX1, MSY1, MSX2, MSY2);
Mouse(x, y, 2, 2, true);
Wait(RandomRange(300, 540));
FindDTM(EarthRuneDTM, x, y, MSX1, MSY1, MSX2, MSY2);
Mouse(x, y, 2, 2, true);
Wait(RandomRange(250, 430));
FindDTM(AirRuneDTM, x, y, MSX1, MSY1, MSX2, MSY2);
Mouse(x, y, 2, 2, true);
CloseWindow;
Players[CurrentPlayer].Loc := 'Tele back';
Exit;
end else
Writeln('Out of fruit bats');
Players[CurrentPlayer].Loc := 'Logout';
end;

procedure TeleBack;
begin
FTab(tab_Magic);
Wait(1000);
FindDTM(SpellDTM, x, y, MIX1, MIY1, MIX2, MIY2);
Mouse(x, y, 2, 2, true);
repeat
wait(100);
until FindDTMRotated(PathToCenter[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound)
Players[CurrentPlayer].Loc := 'Walk to center'
Exit;
end;

Procedure NotePapayas;
var
i : Integer;
Begin
ClearDebug;
Proggy;
if(not(UsingBat))then
begin
Players[CurrentPlayer].Loc := 'Summon bat';
Exit;
end;
FTab(tab_Inv);
repeat
FindDTM(PapayaInvyDTM, X, Y, MIX1, MIY1, MIX2, MIY2);
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200, 300));
ChooseOption('Use');
repeat
Wait(100);
until FindObjTPA(X, Y, 1067802, 11, 2, 2, 2, 4, ['ool']);
Mouse(x, y, 2, 2, false);
if OptionsExist(['Use'], false) then
begin
ChooseOption('Use');
for i := 0 to 20 do
begin
Wait(200);
if (InvCount < 28) then
Break;
end;
end else
ChooseOption('Cancel');
Wait(RandomRange(600, 800));
until (InvCount < 28)
Players[CurrentPlayer].Loc := 'Center';
End;

procedure FindStage;
var
TPA : TPointArray;
begin
if FindDTMRotated(CenterPointDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) or FindSymbol(x, y, 'farming spot') then
begin
Writeln('Set to center')
Players[CurrentPlayer].Loc := 'Center';
Exit;
end;
if FindColorsSpiralTolerance(x, y, TPA, 6317668, MMX1, MMY1, MMX2, MMY2, 20) and FindSymbol(x, y, 'bank') then
begin
Writeln('Set to bank');
Players[CurrentPlayer].Loc := 'Find bank';
Exit;
end else
Writeln('Couldnt find stage');
end;

Procedure MainLoop;
Begin
ClickNorth(0);
SetAngle(0);
FTab(tab_Inv);
FindStage;
StartScroll := GetAmountBox(InvBox(ScrollSlot));
CurrentScroll := StartScroll;
StartPapaya := GetAmountBox(InvBox(PapayaSlot));
CurrentPapaya := StartPapaya;
repeat
case Players[CurrentPlayer].Loc of
'Summon bat' : SummonFamiliar;
'Special' : UseSpecial;
'Center' : CenterPoint;
'Note' : NotePapayas;
'Pick Up' : PickUpPapaya;
'Pick Up2' : PickUpPineapples;
'Walk to obby' : PathToObelisk;
'Use obby' : UseObelisk;
'Walk to center' : PathToCenterPoint;
'Tele' : UseRing;
'Find bank' : OpenBankz;
'Bank' : Bank;
'Tele back' : TeleBack;
'Logout' : begin CloseWindow; Logout; end;
end;
until AllPlayersInactive;
End;

begin
{$IFDEF SMART}
Smart_Server := 83;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
SetupSRL();
ClearDebug();
DeclarePlayers();
LoginPlayer();
GetDTMs;
AddOnTerminate('LoseDTMs');
AddOnTerminate('SMART_ClearCanvas');
AddOnTerminate('Proggy');
MainLoop();
LoseDTMs;
SMART_ClearCanvas;
TerminateScript();
end.

For my 4th script, I wanted to make something to release, so I made a gnome agility advanced course script. It has gotten some good progress reports from people on the thread and I try to help out people if they have problems. Here is the thread : http://villavu.com/forum/showthread.php?t=78912 and here is the script


program TotalGnomes;
{$DEFINE SMART}
{$i srl/srl.simba}

{$IFDEF SMART}
{$i srl/srl/misc/paintsmart.simba}
{$ENDIF}

const
Version = 1.5;
Log = 1; //0=Logout after failing x times, 1=Dont logout
Attempts = 3; //Number of attemps to try an obstacle before stopping
////////////////////////////////////////////////////////
//If you are under 88 agility, fill out the info below//
////////////////////////////////////////////////////////
Food = 'Lobster'; //Name of your food[case sensitive], can also use part
//of the name of the food (e.g. 'ark';)
HP = 99; //HP Level
Agility = 99; //Agility Level

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := ''; // Username
Pass := ''; // Password
Pin := ''; // Pin
BoxRewards := ['Coins', 'oins'];
Level[SKILL_HITPOINTS] := HP;
Active := True; // Set to true if you want to use Player 0
end;
end;

var
LogDTM, ClimbDTM, StartDTM, XPGained, BranchDTM, Branch2DTM, Branch2BackupDTM,
BarrierBackupDTM, RunWallDTM, PoleDTM, BarrierDTM, PoleSpotDTM,
BarrierSpotDTM, RunWallBackupDTM, Runs, RunsPerHour, StartXP, PoleBackupDTM,
XPPerHour, LapTime : Integer;

procedure LoadDTMs;
begin
StartDTM := DTMFromString('mggAAAHicY2NgYIhkYmDIAeIUIPYEYj8gLgDiEKBcPBDHAnE6EGcAsSUQBzpqMcQ5yzBEeasytGdqgNlqwQIM/EA5bJgRB4YAABERCVw=');
LogDTM := DTMFromString('mrAAAAHic42BgYGBjZGAQAOI/QPYHIJYGslmh+DAQX2aA4EtAfAWIrwHxSSDeDcSmQJwa5sJgpqfCEOZpxeDt4gjGeRG2DJZ6CgyNSR4M/EA1+DAjAQwDAArwEAk=');
ClimbDTM := DTMFromString('mrAAAAHic42BgYPgNxE+B+A4QizEyMCgA8R8gOxNI9wJpAyA2AmJtKFsLiJWB2AuIg4G4OT8CjB1NVMC0nZEyQ4iDPlycH6gGH2YkgGEAANGuD3g=');
BranchDTM := DTMFromString('mbQAAAHicY2VgYFBjZGBQB2IdIFYFYikgDgSKe0JxHBAHAXGSvzlDQqADQ1qQFUOohyVDUXYyAz9QHB0zYsFgAADeKgeH');
Branch2DTM := DTMFromString('mwQAAAHic42RgYNBnZGAwAGJdILYGYmUgdgFieyBWB+JyoJoaIG4D4kIgbgbiaiBuBeIkIE4HYgEgTg20ZAjztGKIdDdi8HfWZfB11GZIzFEEsk0ZDDUVGdwczBj4geoIYUYiMBwAAGNLDXo=');
Branch2BackupDTM := DTMFromString('mbQAAAHicY2VgYDBkZGBQBGIrINYD4gggXg0UnwnE14B4KxBfAOLUQEsGf2ddhp7mSoZIb2uG1CxFBn6gODpmxILBAACkrAoR');
RunWallDTM := DTMFromString('mbQAAAHicY2VgYJAGYmEgVgZiBSB2AmJ/ILaF0glAvACI21tLGDKCdRm8bRQZnExkGKrTXRj4geLomBELBgMA7LgHrA==');
RunWallBackupDTM := DTMFromString('mbQAAAHicY2VgYBAEYnYg5gFiPiCWBeJSIC4D4jog7gDiaiD2tlFkaG0uZqivzWOY0F7D0JptzcAFFEfHjFgwGAAAPk0JQw==');
PoleSpotDTM := DTMFromString('mbQAAAHicY2VgYKhlZGDoAWJfIE4H8puA9E4gPR2Ke4CYCyhWkerCEDSpi8G/t5XBREuWwSYrhYEfKIeOGbFgMAAA5PkKjA==');
PoleDTM := DTMFromString('mggAAAHicY2NgYHgBxIKMDAyKQPwIyH4IxNeAWASIZaBYEoh5gFgIiB3tLBjWTSkF4/jSdjD29XRm4AfKYcOMODAEAADxcgxT');
PoleBackupDTM := DTMFromString('mbQAAAHicY2VgYHgNxE+B+CsQbwZiR0YGBmEgrQDESkDMCsQsQOzpas+wfkopGIPYvp7ODPxAcXTMiAWDAQDoEQpR');
BarrierDTM := DTMFromString('mlwAAAHicY2dgYLgPxI+A+A6UfRqIP0HZFUBcDsXpUBokxsfIwOBmo8+waXo5GEuL8DNEetswhHtZMSTFhjLwA9Xgwox4MBQAALyOEJk=');
BarrierBackupDTM := DTMFromString('mbQAAAHicY2VgYPgKxAKMDAxfgPQbIH4HxNOguBNKOwPl108pBWNxQV6GcE8rhtiIQAZ+oBw6ZsSCwQAAhF8MPg==');
BarrierSpotDTM := DTMFromString('mWAAAAHicY2FgYNgGxGuAeC8Q7wDiSUDcAMT1QCzKyMBgrifPsHFaORjHRQYy8APFkTEjGgYBAC+uCcs=');
end;

procedure Free;
begin
FreeDTM(StartDTM);
FreeDTM(LogDTM);
FreeDTM(ClimbDTM);
FreeDTM(BranchDTM);
FreeDTM(Branch2DTM);
FreeDTM(RunWallDTM);
FreeDTM(RunWallBackupDTM);
FreeDTM(PoleDTM);
FreeDTM(PoleBackupDTM);
FreeDTM(BarrierDTM);
FreeDTM(PoleSpotDTM);
FreeDTM(BarrierSpotDTM);
FreeDTM(Branch2BackupDTM);
FreeDTM(BarrierBackupDTM);
end;

procedure Proggy;
begin
ClearDebug;
XPGained := (GetXPBarTotal - StartXP);
XPPerhour :=(3600*(XPGained))/((GetTimeRunning/1000));
RunsPerHour := (3600*(Runs))/((GetTimeRunning/1000));
LapTime := ((GetTimeRunning/1000))/(Runs);
Writeln('/////////////TotalGnomes V' + ToStr(Version) + '/////////////');
Writeln('Laps Completed: ' + ToStr(Runs) + '(' + ToStr(RunsPerHour) + ' Laps/Hour)');
Writeln('Thats ' + ToStr(LapTime) + ' seconds per lap!');
Writeln('Exp gained: ' + ToStr(XPGained) + ' exp' + '(' + ToStr(XPPerHour) + ' Exp/Hour)');
Writeln('Running for: ' + MsToTime(GetTimeRunning, Time_Bare));
Writeln('/////////////////////////////////////////');
end;

procedure Antiban;
begin
case Random(100) of
0..20: begin GetXP(SKILL_AGILITY); Wait(RandomRange(400, 600)); GameTab(tab_Inv); end;
20..40: RandomRClick;
41..60: PickUpMouse;
end;
end;

function FindTPAs(var x, y : Integer) : Boolean;
var
a, Colors, Tol : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP, StartPoint : TPoint;
tmpCTS : Integer;
Uptexts : String;
HMod, SMod : Extended;
begin
if(not(LoggedIn))then Exit;
Case Players[CurrentPlayer].Loc of
'Log' : begin Uptexts := 'balance'; HMod := 0.31; SMod := 0.28; Colors := 3754070; StartPoint := Point(260, 215); Tol := 1; end;
'Net' : begin Uptexts := 'Climb'; HMod := 0.20; SMod := 0.19; Colors := 5663872; StartPoint := Point(280, 60); Tol := 2; end;
'Branch1' : begin Uptexts := 'Tree'; HMod := 0.08; SMod := 2.18; Colors := 3755100; StartPoint := Point(250, 120); Tol := 2; end;
'Branch2' : begin Uptexts := 'Tree'; HMod := 0.39 SMod := 0.38; Colors := 3624802; StartPoint := Point(307, 124); Tol := 1; end;
'Wall' : begin Uptexts := 'across'; HMod := 0.13; SMod := 0.19; Colors := 7702409; StartPoint := Point(213, 144); Tol := 5; end;
'Pole' : begin Uptexts := 'Pole'; HMod := 0.38; SMod := 0.28; Colors := 3949126; StartPoint := Point(230, 20); Tol := 3; end;
'Barrier' : begin Uptexts := 'over'; HMod := 0.15; SMod := 0.83; Colors := 7771825; StartPoint := Point(255, 224); Tol := 2; end;
end;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorspeed2Modifiers(HMod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Colors, MSX1, MSY1, MSX2, MSY2, Tol);
SortTPAFrom(TPA, StartPoint);
ATPA := TPAtoATPAEx(TPA, 10, 10);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
MMouse(MP.X, MP.Y, 4, 4);
if WaitUpTextMulti([Uptexts], 1000) then
begin
GetMousePos(x, y);
ClickMouse2(mouse_left);
Result := True;
{$IFDEF SMART}
SMART_ClearCanvas;
{$ENDIF}
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

function FailsafeTPAs : Boolean;
var
x, y, ObsTimer, CurrentXP, Angle, Time, HPP : Integer;
Uptexts, CompassDir : String;
begin
HPP := HPPercent;
CurrentXP := GetXPBarTotal;
case Players[CurrentPlayer].Loc of
'Log' : begin Uptexts := 'log'; CompassDir := 's'; Angle := 1; Time := 10000; end;
'Net' : begin Uptexts := 'net'; CompassDir := 's'; Angle := 0; Time := 8000; end;
'Branch1' : begin Uptexts := 'branch #1'; CompassDir := 's'; Angle := 0; Time := 8000; end;
'Branch2' : begin Uptexts := 'branch #2'; CompassDir := 's'; Angle := 0; Time := 8000; end;
'Wall' : begin Uptexts := 'wall'; CompassDir := 'n'; Angle := 1; Time := 20000; end;
'Pole' : begin Uptexts := 'pole'; CompassDir := 'n'; Angle := 0; Time := 20000; end;
'Barrier' : begin Uptexts := 'barrier'; CompassDir := 'n'; Angle := 0; Time := 9000 end;
end;
Writeln('Couldnt find ' + Uptexts + ', trying TPA backup.');
if FindTPAs(x, y) then
begin
MarkTime(ObsTimer);
MakeCompass(CompassDir);
SetAngle(Angle);
repeat
Wait(200);
Until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > Time) or (HPP > HPPercent);
if TimeFromMark(ObsTimer) > Time then
begin
Writeln('Took too long to do obstacle, trying again.');
Result := False;
Exit;
end else
Result := True;
Exit;
end else
begin
Result := False;
Writeln('Couldnt find TPA.');
end;
end;

procedure Eat;
var
i : Integer;
begin
if HPPercent >40 then
begin
Writeln('No need to eat, over 40% HP');
Exit;
end;
for i := 1 to 28 do
begin
if HPPercent < 75 then
begin
if ExistsItem(i) then
begin
MMouseItem(i);
if WaitUptext(Food, 1000) then
begin
ClickMouse2(mouse_left);
Wait(2500);
end;
end;
end else
Exit;
end;
end;

procedure ClickLog;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Log';
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(LogDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('across', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
MakeCompass('s');
SetAngle(1);
MMouse(260, 60, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 10000);
if TimeFromMark(ObsTimer) > 10000 then
begin
Continue;
end else
Exit;
end else
ClickNorth(0);
SetAngle(0);
if FailsafeTPAs then
Exit;
end else
ClickNorth(0);
SetAngle(0);
if FailsafeTPAs then
Exit;
end;
if i = Attempts then
Writeln('Couldnt find log. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Climb;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Net';
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(ClimbDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('net', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
SetAngle(0);
MMouse(255, 105, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 10000);
if TimeFromMark(ObsTimer) > 10000 then
begin
Continue;
end else
Wait(1000);
Exit;
end else
MakeCompass('s');
SetAngle(1);
if FailsafeTPAs then
Exit;
end else
MakeCompass('s');
SetAngle(1);
if FailsafeTPAs then
Exit;
end;
if i = Attempts then
Writeln('Couldnt find net. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Branch1;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Branch1';
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(BranchDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('branch', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
MMouse(265, 135, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 10000);
if TimeFromMark(ObsTimer) > 10000 then
begin
Continue;
end else
Wait(500);
Exit;
end else
begin
SetAngle(0);
if FailsafeTPAs then
Exit;
end;
end else
begin
SetAngle(0);
if FailsafeTPAs then
Exit;
end;
end;
if i = Attempts then
Writeln('Couldnt find Branch #1. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Branch2;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Branch2';
if IsUpText('ere') then
begin
ClickMouse2(mouse_left);
end;
Wait(RandomRange(300, 350));
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(Branch2DTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Branch2BackupDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('Tree', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
MMouse(80, 115, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 10000);
if TimeFromMark(ObsTimer) > 10000 then
begin
Continue;
end else
Wait(300);
Exit;
end else
begin
Wait(500);
if FailsafeTPAs then
Exit;
end;
end else
begin
Wait(500);
if FailsafeTPAs then
Exit;
end;
end;
if i = Attempts then
Writeln('Couldnt find Branch #2. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure RunWall;
var
x, y, i, CurrentXP, ObsTimer, HPP : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
HPP := HPPercent;
Players[CurrentPlayer].Loc := 'Wall';
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(RunWallDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(RunWallBackupDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('Run', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
ClickNorth(1);
MMouse(385, 180, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 20000) or (HPP > HPPercent);
if TimeFromMark(ObsTimer) > 20000 then
begin
Continue;
end else
Wait(300);
Exit;
end else
begin
MakeCompass('s');
SetAngle(0);
if FailsafeTPAs then
Exit;
end;
end else
begin
MakeCompass('s');
SetAngle(0);
if FailsafeTPAs then
Exit;
end;
end;
if i = Attempts then
Writeln('Couldnt find wall. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Pole;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Pole';
if FindDTMRotated(PoleSpotDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 2, 2, true);
end;
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(PoleDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(PoleBackupDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x + 60, y, 2, 2);
if WaitUpText('Swing', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
SetAngle(0);
Wait(RandomRange(3000, 4000));
Antiban;
MMouse(225, 140, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 20000);
if TimeFromMark(ObsTimer) > 20000 then
begin
Continue;
end else
Exit;
end else
begin
ClickNorth(1);
SetAngle(1);
if FailsafeTPAs then
Exit;
end;
end else
begin
ClickNorth(1);
SetAngle(1);
if FailsafeTPAs then
Exit;
end;
end;
if i = Attempts then
Writeln('Couldnt find pole. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Barrier;
var
x, y, i, CurrentXP, ObsTimer : Integer;
aFound : Extended;
begin
CurrentXP := GetXPBarTotal;
Players[CurrentPlayer].Loc := 'Barrier';
if FindDTMRotated(BarrierSpotDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 2, 2, true);
end;
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(BarrierDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(BarrierBackupDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUpText('Jump', 2000) then
begin
ClickMouse2(mouse_left);
MarkTime(ObsTimer);
Wait(RandomRange(3000, 3500));
MMouse(580, 85, 6, 6);
repeat
Wait(200);
until (CurrentXP <> GetXPBarTotal) or (TimeFromMark(ObsTimer) > 10000);
if TimeFromMark(ObsTimer) > 10000 then
begin
Continue;
end else
Exit;
end else
begin
Wait(1000);
if FailsafeTPAs then
Exit;
end;
end else
begin
Wait(1000);
if FailsafeTPAs then
Exit;
end;
end;
if i = Attempts then
Writeln('Couldnt find barrier. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure Start;
var
x, y, i, ObsTimer : Integer;
aFound : Extended;
begin
Players[CurrentPlayer].Loc := 'Start';
for i := 0 to (Attempts - 1) do
begin
if(Not(LoggedIn))then Exit;
if(Not(FindNormalRandoms))then
if FindDTMRotated(StartDTM, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x - 13, y + 5, 2, 2, true);
MarkTime(ObsTimer);
repeat
Wait(200);
until Flag or (TimeFromMark(ObsTimer) > 5000);
MMouse(260, 210, 6, 6);
Inc(Runs);
Proggy;
Wait(1000);
Exit;
end else
Writeln('Couldnt find start ' + ToStr(i + 1) + ' times, trying again.');
end;
if i = Attempts then
Writeln('Couldnt find start. Logging out.');
Proggy;
Case Log of
0: begin Logout; TerminateScript; end;
1: Exit;
end;
end;

procedure MainLoop;
begin
LoadDTMs;
StartXP := GetXPBarTotal;
Runs := 0;
ClickNorth(0);
repeat
if Agility < 88 then
Eat;
ClickLog;
Climb;
Branch1;
Branch2;
RunWall;
Pole;
Barrier;
Start;
until AllPlayersInactive;
Free;
end;

begin
{$IFDEF SMART}
Smart_Server := 83;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
SetupSRL();
ClearDebug();
DeclarePlayers();
LoginPlayer();
AddOnTerminate('Free');
MainLoop();
end.

I also have an astral rcing script and a nature runecrafting script I'm working on but can't post due to character limit. >.<

I haven't looked at many other scripts, which I think I will start doing soon to see what other people do to make them better. If you have any tips for me to get closer to being a member, let me know. :)

Oh and I'd like to thank the whole community for being so helpful, people in IRC when they not trolling around(lol), all of the tutorials, and quick responses to help posts are all awesome. Also would like to give a big thanks to YoHoJo for his awesome first script tutorial because thats what got me started in the first place. :D

Sin

2012-04-09 00:26:13

While you show good use of the SRL Include, you do not have the activity and/or longevity required to become a SRL Member.
For now it's a no from me.

Total

2012-04-09 00:30:29

Alright. If I dont make it I will reapply in a couple of months. :P

Sin

2012-04-09 00:33:10

Wait, I see a Huge error in the mining script.
Tell me if you can find it.

[XoL]

2012-04-09 00:33:19

No from me. Sorry. It appears you know what you are doing (and good enough for SRL members but like sin said, its not about ONLY being able to script.) Also check standards , I am pretty sure I saw some flaws but I only glanced (will look closer later)

Try to follow this guide to become a SRL member:
http://villavu.com/forum/showthread.php?t=74195

Also one thing I really think is important is being community focused, you have 88 posts and have been here since March 2012 (Longevity is nice to have)! Posting actively not only shows you genuinely care for the community it also helps your chances of getting accepted.

These guides can help you with that:
http://villavu.com/forum/showthread.php?t=72050
http://villavu.com/forum/showthread.php?t=66084

Anyway, sorry for the roughness. Good luck.

Total

2012-04-09 00:39:13

From: Sin
Wait, I see a Huge error in the mining script.
Tell me if you can find it.


Lol, I know there are tons of errors as it was my first script, but I thought it showed how I've been progressing. Are you talking about an infinite loop that occurs if you home teleport and it fails to find the DTM, thus eternally teleporting? Or something else. xD

From: R4nd0m
No from me. Sorry. It appears you know what you are doing (and good enough for SRL members but like sin said, its not about ONLY being able to script.) Also check standards , I am pretty sure I saw some flaws but I only glanced (will look closer later)

Try to follow this guide to become a SRL member:
http://villavu.com/forum/showthread.php?t=74195

Also one thing I really think is important is being community focused, you have 88 posts and have been here since March 2012 (Longevity is nice to have)! Posting actively not only shows you genuinely care for the community it also helps your chances of getting accepted.

These guides can help you with that:
http://villavu.com/forum/showthread.php?t=72050
http://villavu.com/forum/showthread.php?t=66084

Anyway, sorry for the roughness. Good luck.


I like constructive criticism and I completely understand. I will look at these guides and see how I can improve. Thanks.

Sin

2012-04-09 00:46:37


if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;

What's wrong there? :p

Total

2012-04-09 00:51:00

no begin and ends


if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
end;

That would be correct no? :p

bolshak25

2012-04-09 00:54:59

I like the second script more due to the none leaking issue with your dtms unlike the first one.
In the first one you have
 if FindDTM(MiniMapDTM, x, y, MMX1, MMY1, MMX2, MMY2) or FindSymbol(x, y, 'spin') then
if FindDTM(StairsDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('up');
Wait(RandomRange(750, 1000));
end else
if ClimbUp(x, y) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('up');
Wait(RandomRange(750, 1000));
end else
begin
writeln('Couldnt find stairs');
Players[CurrentPlayer].Loc := 'restart at mine';
Exit;
end;
Players[CurrentPlayer].Loc := 'to banker'
FreeDTM(BankBoothDTM);
FreeDTM(MiniMapDTM);
FreeDTM(StairsDTM);
end;

if it got into the couldnt find stairs it wouldnt free the dtms.

also
case Bank of
0:
begin
Writeln('Inventories banked: ' + IntToStr(Loads))
end;
1:
begin
Writeln('Inventories banked: ' + IntToStr(Loads))
end;
2:
begin
Writeln('Inventories dropped: ' + IntToStr(Loads))
end;
end;
Writeln('Running for: ' + MsToTime(GetTimeRunning, Time_Bare));
Writeln('///////////////////////////');
end;

you dont need the begins and ends for one line things.
case Bank of
0:
Writeln('Inventories banked: ' + IntToStr(Loads))
1:
Writeln('Inventories banked: ' + IntToStr(Loads))
2:
Writeln('Inventories dropped: ' + IntToStr(Loads));
Writeln('Running for: ' + MsToTime(GetTimeRunning, Time_Bare));
Writeln('///////////////////////////');
end;

You are very new here, so im going to vote no. If you continue to be an active part of the community and keep scripting next time youll most likely get a yes from me

Total

2012-04-09 00:58:33

Ah ok thanks for the tips. :) I was wondering when I made my first script where the non freed DTMs where coming from and looks like you found it. As for the case statements I know this now, just wasn't sure at the time because I hadn't messed with case statements much.

Sin

2012-04-09 01:13:52

Yup, got it in one :P

Sir Ducksworthy

2012-04-09 06:00:33

If it wasn't for your lack of longevity/activity It would be a yes from me.
Your studying computer science and I see you have adequate scripting skill's all ready since joining which combined show that you have a higher potential then some to progress more quickly and develop more.. That really is a valuable thing I believe anyway :)

Good luck with your study's!

Total

2012-04-09 18:15:41

Thanks. I applied thinking that being an SRL Member meant you knew how to script, but I didn't really think about the community aspect of things. I'm going to begin to post around and attempting to help people/release more scripts so that I have better chances next time.

P.S.-Guy who said yes, you rock. :p

Markus

2012-04-10 06:21:04

Voted yes. Skimmed through the scripts which look fine and you got the right attitude so you sure get there.
And in my very humble opinion, people with only 4 months of longevity here don't have the right to vote no because of longevity, especially if they got members themselves within 1 month and a week of being here at SRL (you know who I'm looking at).

Total

2012-04-10 14:46:12

Thanks for that. :p Maybe I still have a chance. Was looking grim with a 0-5 in the beginning xD.

Sin

2012-04-10 15:26:08

Id actually like to change my vote to a yes.
You can take CnC very well and I love your attitude.
@Markus, I had over 400 posts in that month, surely that's gotta count for something? :L

Total

2012-04-10 15:55:13

That would be awesome if possible haha. Thanks.

Sin

2012-04-10 15:59:40

Haha it feels wierd tbh, me (15 Years Young), giving you (20 years old) advice on something.

Mind rape broski.

[XoL]

2012-04-10 17:12:32

I don't know if marcus is aiming that at me if so I apologize but I don't think I am changing my direction here.

I like to check 100% of the people with under 200 posts to see how useful their posts are, to be perfectly honest I would love it if you spent a little more time in other sections I see you do on occasion but I personally believe we should see SRL members everywhere as they are generally the "community" leaders.

I LOVE THIS: http://villavu.com/forum/showthread.php?t=79344
Asking for help is like +100 for me, but a little more community would EASILY change my vote.

Sorry again, don't hate me :P

Markus

2012-04-10 17:18:46

From: Sin
@Markus, I had over 400 posts in that month, surely that's gotta count for something? :L


Yea, you almost beat DeiJaiVui's record.

Edit: changed your vote.

Total

2012-04-10 17:29:43

From: R4nd0m
I don't know if marcus is aiming that at me if so I apologize but I don't think I am changing my direction here.

I like to check 100% of the people with under 200 posts to see how useful their posts are, to be perfectly honest I would love it if you spent a little more time in other sections I see you do on occasion but I personally believe we should see SRL members everywhere as they are generally the "community" leaders.

I LOVE THIS: http://villavu.com/forum/showthread.php?t=79344
Asking for help is like +100 for me, but a little more community would EASILY change my vote.

Sorry again, don't hate me :P


Nah I understand. I'll try and get around more. As wrong as that sounds.

eska

2012-04-13 06:51:46

Think I saw a mistake in your script. You should see it right away.
if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));

I've also noticed that this code repeat itself in MineCopper and in MineTin. You should make it into a function called… lets say "ManageGems" or "DropGems". Not only will it remove useless code, it will make your Mine function smaller, simplier and easier to understand.

I like that you use TPA, DTM, radial walk, SPS (ain't impressive but it's good to know how to use it), Failsafe in almost all your loops, decent standards (I like to make my script near perfect standard, but I'm not a standard nazi when it comes to look at others people script).

You are quite new, but who am I to talk like this? I joined SRL 1 day before you did… and applied for SRL member 2 week before you did. I kinda rushed things lol.
You seem to be pretty active. I've seen you quite a few time on the forum. I believe you could become a great asset to this community.

Yes for me.
Edit: It would seem I'm not the only one who found it :p I didn't read other post to keep neutrality.

Kyle Undefined

2012-04-13 09:36:08

You could also turn the DTMs of the gems into TPAs and use a custom Type to store the information ;)

rice

2012-04-13 13:07:39

i say yes just stay more active

Total

2012-04-13 13:39:13

From: sir eska eau
Think I saw a mistake in your script. You should see it right away.
if FindDTM(DTMFromString(SapphireDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(EmeraldDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(RubyDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));
if FindDTM(DTMFromString(DiamondDTM), x, y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 2, 2, false);
Wait(RandomRange(200,300));
ChooseOption('Drop')
Wait(RandomRange(200,300));

I've also noticed that this code repeat itself in MineCopper and in MineTin. You should make it into a function called… lets say "ManageGems" or "DropGems". Not only will it remove useless code, it will make your Mine function smaller, simplier and easier to understand.

I like that you use TPA, DTM, radial walk, SPS (ain't impressive but it's good to know how to use it), Failsafe in almost all your loops, decent standards (I like to make my script near perfect standard, but I'm not a standard nazi when it comes to look at others people script).

You are quite new, but who am I to talk like this? I joined SRL 1 day before you did… and applied for SRL member 2 week before you did. I kinda rushed things lol.
You seem to be pretty active. I've seen you quite a few time on the forum. I believe you could become a great asset to this community.

Yes for me.
Edit: It would seem I'm not the only one who found it :p I didn't read other post to keep neutrality.


Yeah I know there are many things I can improve on the script, but I havent gotten around to it since I've learned a lot more. If you look at my agility script the code is much more neat and I make use of arrays etc. I was really just trying anything I found in the tutorial section on that script so I could find out how it works and what the pros/cons are to using them.

From: Kyle Undefined
You could also turn the DTMs of the gems into TPAs and use a custom Type to store the information ;)


If I go back to my miner to fix the code(which I might do soon) then I'll see what I can do. :p

From: rice
i say yes just stay more active


Thanks!

Kyle Undefined

2012-04-13 13:54:34

Take a look at my Gem Miner if you need to understand it more.

Griff

2012-04-13 14:20:13

Yes from me. I like your attitude, which makes up for your longetivity for me. You seem to be a quick learner.

'Toxin

2012-04-13 17:58:44

No from me strictly based off of longevity and activity. You do have the ability and as Griff previously stated, you are for sure a quick learner, however me personally I'm a stickler for newer members.

Total

2012-04-13 19:20:57

From: Kyle Undefined
Take a look at my Gem Miner if you need to understand it more.


Will do.

From: Griff
Yes from me. I like your attitude, which makes up for your longetivity for me. You seem to be a quick learner.


Thanks, I don't know if I'm a quick learner but I find scripting fun so I tend to do it hours at a time in my spare time. :p

[QUOTE='Toxin;988781]No from me strictly based off of longevity and activity. You do have the ability and as Griff previously stated, you are for sure a quick learner, however me personally I'm a stickler for newer members.

Thats fine. I understand the longevity st00f.

Looks like the votes are split. Z0mg. What do I need to get in? 65%?

Jakkle

2012-04-14 23:22:25

From just reading through this thread, to me, you seem to have a great attitude.
Even tho you haven't been here long your activity is decent which shows you must be looking around and posting. Apart from your standards and things that people have pointed out, you seem to have a good enough knowledge of scripting. You also seen what you should of done when asked what was wrong.

Good luck with you app :)

Edit: I like this a lot, like I said great attitude :)

From: TotalKillz
Thanks, I don't know if I'm a quick learner but I find scripting fun so I tend to do it hours at a time in my spare time. :p


~Jakkle

Total

2012-04-19 20:54:00

Well if I do need 65% and apps close in 2 weeks then I assume I won't get in this time but don't worry, I'll be back ;). Wanted to bump in case anyone else wanted to vote before it closes in a couple of days.

bg5

2012-04-22 05:38:47

Voted yes ,your scripts are quite good in reference to your longevity.

Abu

2012-04-22 09:41:05

From: TotalKillz
Well if I do need 65% and apps close in 2 weeks then I assume I won't get in this time but don't worry, I'll be back ;). Wanted to bump in case anyone else wanted to vote before it closes in a couple of days.


Nope, you just need majority of votes.

:D

nielsie95

2012-05-06 13:11:10

Welcome in!