NKN
2012-04-24 16:31:08
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
C++,ActionScript3
Are you a member of any other communities?
MPGH
Tell us about yourself…
Please show us one (or multiple) of your scripts.
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
C++,ActionScript3
Are you a member of any other communities?
MPGH
Tell us about yourself…
From: NKN
Well, my name's Chris. I find it fun to program, play football, and Martial Arts.This is also my second application, exactly two weeks from the date Markus said I could re-apply.
Please show us one (or multiple) of your scripts.
program Clayer;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i SPS/SPS.simba}
{$i srl/srl/misc/paintsmart.simba}
//{$i ObjectDTM/ObjDTMInclude.simba} Keep commented out unless using Object DTM's.
var
Ore:Integer;
Const
SRLStats_User = '';
SRLStats_Password = '';
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // This is set to the total amount of players (more on multiplayer later ;)), for now, just keep it set as 1
NumberOfPlayers(HowManyPlayers); // This is a procedure in SRL which sets up player arrays (also, more on that later), this will always be the same
CurrentPlayer := 0; // This is the player to start with; the first player will always be 0 (you'll find out when you learn all about arrays)
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
{
Players[1].Name := ''; // Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[1].Active := True; // Set to true if you want to use Player 0
Players[1].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[1].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];}
{
Players[2].Name := ''; // Username
Players[2].Pass := ''; // Password
Players[2].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[2].Active := True; // Set to true if you want to use Player 0
Players[2].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[2].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];}
{
Players[3].Name := ''; // Username
Players[3].Pass := ''; // Password
Players[3].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[3].Active := True; // Set to true if you want to use Player 0
Players[3].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[3].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence']; }
end;
procedure Progress;
var
OrePH,XPPH,GPPH:Integer;
begin
OrePH := Round((Ore * 3600) / (GetTimeRunning / 1000));
XPPH := Round(((Ore * 5) * 3600) / (GetTimeRunning / 1000));
GPPH := Round(((Ore * 150) * 3600) / (GetTimeRunning / 1000));
ClearDebug;
Writeln('***********Power Clayer**********');
Writeln('* ~By NKN~ ');
Writeln('*Ore Mined: ' + IntToStr(Ore) + ' (' + IntToStr(OrePH) + ' P/H)');
Writeln('*XP earned: ' + IntToStr(Ore * 5)+ ' (' + IntToStr(XPPH) + ' P/H)');
Writeln('*GP Made: ' + IntToStr(Ore * 275)+ ' (' + IntToStr(GPPH) + ' P/H)');
Writeln('*Total Time: ' + TimeRunning);
Writeln('********************************');
end;
procedure Antiban;
begin
FindNormalRandoms;
case Random(80) of
0: RandomRClick;
2: PickUpMouse;
3: RandomMovement;
4: BoredHuman;
5: ExamineInv;
7: SetAngle(SRL_ANGLE_HIGH);
8: Wait(750 + random(750));
end;
end;
function FindBankTeller(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box,SearchArea : TBox;
begin
if not LoggedIn then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.04,0.27);
SearchArea := IntToBox((MSCX - 200),(MSCY - 100),(MSCX),(MSCY + 150));
SMART_DrawBoxEx(True,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,3169130,MSCX -200,MSCY - 100 ,MSCX,MSCY + 150,3);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(False,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('ank',750))then
begin
While(InvCount > 15) do
begin
x := MP.x; y := MP.y;
Result := True
SMART_ClearCanvas;
Mouse(x,y,0,0,True);
WaitFunc(@BankScreen, 10 + Random(15), 10000);
Deposit(2,28,True);
Writeln('Depotsitied');
Ore := Ore+28
stats_IncVariable('Clay (Mined)',27);
stats_IncVariable('Total Exp Gained',140);
Antiban;
end;
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
end;
procedure WalkToWater;
var
myPath:TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE,['11_7']);
myPath := [Point(4566, 3137), Point(4581, 3134), Point(4595, 3134),
Point(4616, 3134), Point(4627, 3141), Point(4646, 3149), Point(4667, 3148),
Point(4679, 3143), Point(4679, 3120), Point(4679, 3096), Point(4679, 3077),
Point(4682, 3054), Point(4682, 3031), Point(4680, 3003), Point(4678, 2981),
Point(4679, 2963), Point(4685, 2942)];
SPS_WalkPath(myPath);
AntiBan;
end;
function FindClay(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box,SearchArea : TBox;
begin
if not LoggedIn then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.01,1.92);
SearchArea := IntToBox((MSCX - 100),(MSCY - 50),(MSCX + 100),(MSCY + 150));
SMART_DrawBoxEx(True,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,7056078,MSCX -100,MSCY-50 ,MSCX + 100,MSCY + 150,10);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(True,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('lay',750))then
begin
x := MP.x; y := MP.y;
Result := True
SMART_ClearCanvas;
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
end;
procedure MineClay;
var x,y,ClayCount,failed,totalfail:Integer;
begin
Antiban;
if(InvCount = 28) then Exit;
while(InvCount < 28) do
if(FindClay(x,y)) then
begin
ClayCount := InvCount
Mouse(x,y,4,4,True)
if(InvCount < 28) then
WaitInvMinCount((ClayCount + 1),5000);
if(InvCount = 28) then
Exit;
end;
end;
Procedure WalkToOre;
var
myPath:TPointArray;
begin
if(InvCount = 28) then
Exit;
SPS_Setup(RUNESCAPE_SURFACE,['11_7']);
myPath := [Point(4567, 2907), Point(4568, 2931), Point(4539, 2934),
Point(4524, 2944), Point(4522, 2971), Point(4522, 3024), Point(4522, 3067),
Point(4540, 3107), Point(4555, 3122), Point(4569, 3140)];
SPS_WalkPath(myPath);
end;
procedure WalkToBank;
var
x,y:Integer;
myPath:TPointArray;
begin
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,4,4,True)
FFlag(3);
end;
Writeln('To Bank');
SPS_Setup(RUNESCAPE_SURFACE,['11_7']);
myPath := [Point(4568, 3138), Point(4555, 3117), Point(4543, 3092),
Point(4529, 3069), Point(4522, 3050), Point(4518, 3024), Point(4518, 3003),
Point(4517, 2989), Point(4517, 2972), Point(4518, 2959), Point(4531, 2949),
Point(4541, 2940), Point(4553, 2932), Point(4571, 2929), Point(4578, 2922),
Point(4575, 2911), Point(4574, 2899), Point(4566, 2899)];
SPS_WalkPath(myPath);
Writeln('Route finished');
FindBankTeller(x,y);
end;
procedure MakeSoft;
var
x,y:Integer;
begin
repeat
InvMouse(2,1);
if(FindColorSpiralTolerance(x,y,12299645,MSX1,MSY1,MSX2,MSY2,5)) then
begin
Writeln('Found it, boss!');
Mouse(x,y,3,3,True);
WaitFindColor(x,y,869470,MCX1,MCY1,MCX2,MCY2,5,15000);
if(FindColorSpiralTolerance(x,y,869470,MCX1,MCY1,MCX2,MCY2,5)) then
begin
Mouse(x,y,4,4,True)
Writeln('Softening!');
WaitColorGoneIn(5273743,MIX1,MIY1,MIX2,MIY2,2,60000);
end;
end;
InvMouse(28,3);
until (IsUpText('oft'));
WalkToBank;
end;
procedure Mainloop;
begin
repeat
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('N');
GameTab(tab_Inv);
SRLRandomsReport;
Stats_Commit;
Progress;
WalkToOre;
MineClay;
// WalkToWater;
// MakeSoft;
WalkToBank;
until AllPlayersInactive
end;
begin
// These 4 lines HAVE to be set BEFORE you call SetupSRL;
Smart_Server := 25;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
ClearDebug;
SetupSRLStats(965, SRLStats_User, SRLStats_Password);
SetupSRL;
//ObjDTM_Setup;
DeclarePlayers; // Calls the procedure, you can't forget this!
LoginPlayer;
Mainloop; // You want your player to login, right?
end.
program Pro Range;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i SPS/SPS.simba}
{$i srl/srl/misc/paintsmart.simba}
//{$i ObjectDTM/ObjDTMInclude.simba} Keep commented out unless using Object DTM's.
var
StartTickets,TotalTickets:Integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // This is set to the total amount of players (more on multiplayer later ;)), for now, just keep it set as 1
NumberOfPlayers(HowManyPlayers); // This is a procedure in SRL which sets up player arrays (also, more on that later), this will always be the same
CurrentPlayer := 0; // This is the player to start with; the first player will always be 0 (you'll find out when you learn all about arrays)
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
{
Players[1].Name := ''; // Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[1].Active := True; // Set to true if you want to use Player 0
Players[1].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[1].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];}
{
Players[2].Name := ''; // Username
Players[2].Pass := ''; // Password
Players[2].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[2].Active := True; // Set to true if you want to use Player 0
Players[2].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[2].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];}
{
Players[3].Name := ''; // Username
Players[3].Pass := ''; // Password
Players[3].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[3].Active := True; // Set to true if you want to use Player 0
Players[3].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[3].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence']; }
end;
procedure Antiban;
begin
FindNormalRandoms;
case Random(80) of
0: RandomRClick;
1: HoverSkill('Range',False);
2: PickUpMouse;
3: RandomMovement;
4: BoredHuman;
5: ExamineInv;
6: MakeCompass('N');
7: SetAngle(SRL_ANGLE_HIGH);
8: Wait(5000)
end;
end;
procedure OpenBox;
var
x,y:Integer;
begin
if(FindColorTolerance(x,y,65535,MSCX - 25, MSCY - 25, MSCX + 25, MSCY + 25,1)) then
begin
Writeln('Box open');
if(FindColorTolerance(x,y,1053204,MSCX - 250, MSCY - 150, MSCX + 250, MSCY + 150, 1)) then
Mouse(x,y,4,4,True);
end;
end;
function WaitOnText(txt: TStringArray; action: fnct_ActionOptions; time:Integer): boolean; //Gotten from SRL includes, just decided to change it around
var
x, y, finaltime: integer;
chars: TStringArray;
begin
chars := [UpChars, CharsNPC];
finaltime := GetSystemTime + Time;
while(finaltime > GetSystemTime) do
begin
if (findTextEx(x, y, txt, chars, MCX1, MCY1, MCX2, MCY2)) then
begin
case action of
Move: MMouse(x, y, 6, 3);
ClickLeft: Mouse(x, y, 6, 3, mouse_Left);
ClickRight: Mouse(x, y, 6, 3, mouse_Right);
end;
result := true;
exit;
end;
end;
end;
function FindJudge(var x,y:integer):Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS,Clicked : Integer;
Box,SearchArea : TBox;
begin
OpenBox;
if(FindColorTolerance(x,y,856926,MIX1,MIY1,MIX2,MIY2,1)) then Exit;
Ftab(26);
if(WearingItem(4)) then Exit;
FindNormalRandoms;
SMART_ClearCanvas;
if not LoggedIn then Exit;
Writeln('Starting hunt for judge...');
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
//SetColorSpeed2Modifiers(0.23,0.95);
SearchArea := IntToBox((MSCX - 150),(MSCY - 150),(MSCX + 150),(MSCY+150));
SMART_DrawBoxEx(False,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,3313827,MSCX -150,MSCY - 150 ,MSCX+150,MSCY+150,17);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(False,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('udge',5000))then
begin
x := MP.x; y := MP.y;
SMART_ClearCanvas;
Mouse(x,y,0,0,False);
Wait(RandomRange(200,400));
if(ChooseOption('Compete')) then
begin
WaitOnText(['Yes','es'],Clickleft,5000);
Writeln('Bought arrows');
end else
begin
Mouse(x,y,4,4,True);
FindJudge(x,y);;
end;
end;
Break;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
Writeln('...finished buying');
end;
Wait(500);
end;
procedure FindArrows;
var
a,x,y : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS,Clicked : Integer;
Box,SearchArea : TBox;
begin
OpenBox;
FindNormalRandoms;
SMART_ClearCanvas;
if not LoggedIn then Exit;
Writeln('Equipping arrows');
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
//SetColorSpeed2Modifiers(0.71,3.24);
SearchArea := IntToBox((MIX1),(MIY1),(MIX2),(MIY2));
SMART_DrawBoxEx(False,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,856926,MIX1,MIY1 ,MIX2,MIY2,1);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(True,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('Bronze',500))then
begin
x := MP.x; y := MP.y;
SMART_ClearCanvas;
repeat
Mouse(x,y,0,0,True);
until not(FindColorsSpiralTolerance(MSCX,MSCY,TPA,856926,MIX1,MIY1 ,MIX2,MIY2,1));
end;
Break;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
Writeln('...finished buying');
end;
Wait(500);
end;
procedure FindTargets;
var
a,x,y : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS,Clicked : Integer;
Box,SearchArea : TBox;
begin
OpenBox;
SetAngle(SRL_ANGLE_LOW)
FindNormalRandoms;
SMART_ClearCanvas;
if not LoggedIn then Exit;
Writeln('Clicking those targets!');
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
//SetColorSpeed2Modifiers(0.16,1.17);
SearchArea := IntToBox((MSCX - 200),(MSCY - 150),(MSCX + 200),(MSCY + 150));
SMART_DrawBoxEx(False,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,11301216,MSCX - 200,MSCY - 150,MSCX + 200,MSCY + 150,9);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(False,Box,clYellow);
While(WearingItem(4)) do
begin
Wait(500+random(300));
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('arget',500))then
begin
Writeln('Found targets');
x := MP.x; y := MP.y;
SMART_ClearCanvas;
Mouse(x,y,0,0,True);
OpenBox;
end else
FindTargets;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
Writeln('...finished using arrows');
SetAngle(SRL_ANGLE_HIGH)
end;
procedure Mainloop;
var
x,y:Integer;
begin
SetAngle(SRL_ANGLE_HIGH)
MakeCompass(RandomRange(30,45));
Antiban;
FindJudge(x,y);
FindArrows;
FIndTargets;
end;
begin
// These 4 lines HAVE to be set BEFORE you call SetupSRL;
Smart_Server := 26;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
ClearDebug;
SetupSRL;
//ObjDTM_Setup;
DeclarePlayers; // Calls the procedure, you can't forget this!
LoginPlayer;
SetAngle(SRL_ANGLE_HIGH);
repeat
Mainloop;
until(AllPlayersInactive);
end.
program Herblore;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i SPS/SPS.simba}
{$i srl/srl/misc/paintsmart.simba}
{$i srl/srl/misc/debug.simba}
//{$i ObjectDTM/ObjDTMInclude.simba} Keep commented out unless using Object DTM's.
var
Cleaned,Mixed,x,y,Finished:Integer;
Act:String;
const
SRLStats_User = '';
SRLStats_Password = '';
procedure DeclarePlayers;
begin
HowManyPlayers := 1; // This is set to the total amount of players (more on multiplayer later ;)), for now, just keep it set as 1
NumberOfPlayers(HowManyPlayers); // This is a procedure in SRL which sets up player arrays (also, more on that later), this will always be the same
CurrentPlayer := 0; // This is the player to start with; the first player will always be 0 (you'll find out when you learn all about arrays)
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Act := 'Unf';//Unf for Unfinished, Clean for Cleaning
{
Players[1].Name := ''; // Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[1].Active := True; // Set to true if you want to use Player 0
Players[1].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[1].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Act := ''}
end;
procedure Antiban;
begin
FindNormalRandoms;
case Random(80) of
0: RandomRClick;
1: HoverSkill('Herblore',False);
2: PickUpMouse;
3: RandomMovement;
4: BoredHuman;
5: ExamineInv;
6: MakeCompass('N');
7: SetAngle(SRL_ANGLE_HIGH);
8: Wait(5000)
end;
end;
procedure Progress;
var
HerbsPH,PotsPH:Integer;
begin
HerbsPH := Round((Cleaned * 3600) / (GetTimeRunning / 1000));
PotsPH := Round((Mixed * 3600) / (GetTimeRunning / 1000));
ClearDebug;
Writeln('***********Power Herbs**********');
Writeln('* ~By NKN~ ');
if (LowerCase(Act) = 'clean') then
Writeln('*Herbs cleaned: ' + IntToStr(Cleaned) + ' (' + IntToStr(HerbsPH) + ' P/H)');
if (LowerCase(Act) = 'unf') then
Writeln('*Potions mixed: ' + IntToStr(Mixed)+ ' (' + IntToStr(PotsPH) + ' P/H)');
Writeln('*Total Time: ' + TimeRunning);
Writeln('********************************');
end;
Function RemovePointsFromTPA(TPA: TPointArray; Point: TPoint; DeleteAll: Boolean): TPointArray;//Credit goes to Ggzz for //this one, I didn't understand how it worked at the time.
var
I, L: Integer;
begin
L:= High(TPA);
For I:= 0 To L do
if (TPA[I] = Point) then
begin
DeleteValueInTPA(TPA, I);
if (Not DeleteAll) then
break;
end;
Result:= TPA;
end;
function Create(var x,y:Integer):Boolean;
var
a,TmpCTS,ai,Herbs:Integer;
TPA:TPointArray;
ATPA:T2DPointArray;
MP,LC:TPoint;
Box,SearchArea:TBox;
HA:Int64;
begin
FindNormalRandoms;
Finished := -1
Finished := Finished + 1;
Writeln('Failed: '+IntToStr(Finished)+' many times');
SMART_ClearCanvas;
if(Finished > 1) then
begin
Writeln('Out of Materials');
Logout;
TerminateScript;
end;
if(Act = 'Clean') then
begin
MouseSpeed := 100+Random(150);
repeat
SearchArea := IntToBox(MIX1,MIY1 + 5, MIX2, MIY2 - 5)
SMART_DrawBoxEx(False,SearchArea,clPurple);
Herbs := DTMFromString('78DA6364616160B8C7C8800C9C4C6519FE036' +
'99828E31F660686F3A86A181898207230359F816AAE1350F315A8E63' +
'E0135FF806A9E1050C30974F36D026A98816AAE1250C34D580D00FBF' +
'80C9F');
FindDTMS(Herbs,TPA,MIX1,MIY1 + 5, MIX2, MIY2 - 5);
ATPA := TPAtoATPAEx(TPA, 15, 15);
HA := High(ATPA);
for a:= 0 to HA do
begin
begin
MP := MiddleTPA(ATPA[a]);
LC := Point(MP.x,MP.y);
TPA := RemovePointsFromTPA(TPA,LC,False);
Box := IntToBox((MP.x - 15),(MP.y - 15), (MP.x + 15),(MP.y + 15));
SMART_DrawBoxEx(False,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('imy',100))then
begin
x := MP.X; y := MP.Y;
Result := True;
Mouse(x,y,3,3,True);
ai := CoordsToItem(x,y);
if(ItemActivated(ai)) then
ClickMouse2(Mouse_right);
Finished := 0
end;
end;
end;
until not FindDTMS(Herbs,TPA,MIX1,MIY1 + 5, MIX2, MIY2 - 5);
Writeln('Inventory clean!');
FreeDTM(Herbs);
end else
begin
InvMouse(14,mouse_left)
InvMouse(15,Mouse_left)
Wait(1100+random(200));
if(FindColorTolerance(x,y,2070783,MCX1,MCY1,MCX2,MCY2,15)) then
begin
Finished := 0
Writeln('Found orange text');
SearchArea := IntToBox((MCCX - 20),(MCCY - 20),(MCCX + 20),(MCCY + 20));
SMART_DrawBoxEx(True,SearchArea,clPurple);
if(FindColorTolerance(x,y,131072,MCCX - 20, MCCY - 20, MCCX + 20, MCCY + 20,5)) then
begin
Mouse(x,y,4,4,mouse_left);
WaitInvMaxCount(14,60000);
end;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
end;
function FindBankTeller(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS,Clicked : Integer;
Box,SearchArea : TBox;
begin
FindNormalRandoms;
If(WaitOption('Cancel',100)) then ChooseOption('Cancel');
If(BankScreen) then CloseBank;
SMART_ClearCanvas;
if not LoggedIn then Exit;
Writeln('Starting banking');
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.08,0.10);
SearchArea := IntToBox((MSCX - 150),(MSCY - 50),(MSCX),(MSCY));
SMART_DrawBoxEx(True,SearchArea,clPurple);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,2905700,MSCX -150,MSCY - 100 ,MSCX,MSCY + 75,5);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(True,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('ank',500))then
begin
x := MP.x; y := MP.y;
Result := True
SMART_ClearCanvas;
Mouse(x,y,0,0,True);
Clicked := Clicked + 1
if(Clicked > 3) then
begin
FindBankTeller(x,y);
Clicked := 0
end;
if(WaitFunc(@BankScreen, 10 + Random(15), 4000)) then
begin
if(BankScreen) then
begin
QuickDeposit(SRL_DEPOSIT_ALL);
Writeln('Depotsitied');
case Lowercase(Act) of
'clean':
begin
Cleaned := Cleaned + 28;
stats_IncVariable('Herbs Cleaned',28);
end;
'unf':
begin
Mixed := Mixed + 14;
stats_IncVariable('Unf. Potions Made',14);
end;
end;
begin
if(Act = 'Clean') then
begin
Withdraw(0,0,28);
CloseBank;
end else
begin
MouseBankSlot(1,3);
Wait(200);
if not (IsUpTextMultiCustom(['Pot','oti','imy'])) then
begin
Withdraw(0,0,14);
Withdraw(1,0,14);
CloseBank;
end else
begin
Writeln('Out of materials');
Logout;
TerminateScript;
CloseBank;
end;
Antiban;
end;
end;
end;
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
Writeln('Finished banking');
end;
Wait(500);
end;
procedure MainLoop;
var
x,y,i:integer;
begin
SetAngle(SRL_ANGLE_HIGH);
SRLRandomsReport;
Stats_Commit;
gametab(tab_Inv);
Progress;
FindBankTeller(x,y);
Create(x,y);
end;
begin
// These 4 lines HAVE to be set BEFORE you call SetupSRL;
Smart_Server := 26;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
ClearDebug;
SetupSRL;
SetupSRLStats(1022, SRLStats_User, SRLStats_Password);
//ObjDTM_Setup;
DeclarePlayers; // Calls the procedure, you can't forget this!
LoginPlayer;
repeat
MainLoop;
until AllPlayersInactive;
end.