2012-05-03 17:46:35
How Long have You Played Runescape?
10 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
No
What is your general programming knowledge?
Just Pascal
Are you a member of any other communities?
EpicNPC, MarkeeDragon < old forums I used to use back in the day.
Tell us about yourself…
From: GOOGLE
My name is Brett I am 20 years old I am a very laid back, caring guy. I am currently still in school trying to get my degree in physical therapy, which was motivated when I was in a water tubing accident unfortunately "broke my arm", crazy story behind that. I have always been interested in computers and was introduced to script writing by a friend and found it intriguing since. As far as my life hobbies baseball is a big part of me and always was since I was young, but lately I have been getting into world events and so called "conspiracy theory's."
Please show us one (or multiple) of your scripts.
Script #1
Changed Few Things To increase Performance If anyone is testing.
=-=-=-=-=-=- AstralRcRunner -=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-By Google-=-=–=-=-=-=-=-=-=-=
Time Running 2:2:21
Runs Done:87
Astrals Made:8838
Astrals Per Hour:4334
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Program AstralRcGoogle;
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i SPS/sps.simba}
{V1.0.4
White Hair Messes Up
On The Obelisk Sometimes}
{
''~``
( o o )
+------------------.oooO--(_)--Oooo.------------------+
| AstralCrafter V1.0.4 |
| By: GOOGLE |
|*****************************************************|
| Instructions |
| 1) Start Lunar Bank |
| 2) If Using Bunyip Have Him in Same Tab |
| 3) NPC Repair So Have Cosmics | Air Runes | Astral |
| 4) If Using auto Setup Have All Mats in Same Tab |
| 4) Turn Auto Retal Off |
| 5) Start Script! :) |
| .oooO |
| ( ) Oooo. |
+---------------------\ (----( )--------------------+
\_) ) /
(_/
======== POST PROGY + FEEDBACK ON THE FORUMS =======}
Var
Tele: Integer;
X, Y, i: Integer;
MonkFish: Integer;
EndX, EndY: Integer;
Chat, Chat2:Integer;
Clock: TIntegerArray;
NpcSpell, Darkmage: Integer;
Buny, BunyI: Integer;
ToBank, ToAltar, ToObe: TPointArray;
Giant, Large, Medium, Small: Integer;
RunesPerHour, RuneCount, Runs: Integer;
Ess, Air, Tries, Cosmic, Astral, Count, AstralClip, Law, LawB, AstralI: Integer;
//***************Edit Below*****************//
//******************************************//
//******************************************//
Const
UseSetup = ('No'); // Withdraws all mats + Setup
UsePouches = ('Yes'); //Yes for Pouch No For None
UseFamiliar = ('Yes'); // Yes For Familiar No For None
//UseMPouch = ('No'); // Yes For Massive No For None
{^^^ Feat Not Added Yet}
//UsePouchRepair = ('No'); // Yes For Pouch Repair No For None
{^^^ Feat Not Added Yet}
SRLStats_Username = ''; // Your SRL Stats Username
SRLStats_Password = ''; // Your SRL Stats Password
NumbOfPlayers = 1; //How many players are you using
StartPlayer = 0; //Player to start with 0 meaning first!
{---------------Script Info-----------------}
{---------------Script Info-----------------}
Author = 'GOOGLE';
ScriptName = 'AstralRc V1.0.4';
Version = '1.0.4'; //Script Version
{-------------------------------------------}
{-------------------------------------------}
Procedure DeclarePlayers;
Begin
NumberOfPlayers(NumbOfPlayers);
CurrentPlayer := StartPlayer;
for i := 0 to NumbOfPlayers-1 do
Players[i].BoxRewards := ['amp', 'XP', 'ostume'];
With Players[0] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End;
//Remove '{ }' Brackets If Using Multiple Chars
{ // First Bracket
With Players[1] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End;
With Players[2] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End; } // Second Bracket
End;
//**************Stop Editing****************//
//******************************************//
//******************************************//
{*********************************************
Procedure CallThangs;
By: GOOGLE
Description: Loads The BitMaps + Dtms
**********************************************}
Procedure CallThangs;
Begin
Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');
Tele := DTMFromString('maQEAAHicpc1LCoNgDIXR+0M34Nix+EBKBSnVRflAapWK6AY67nL9wEAHzmzg3JBkEE/S6yKN6NDjjRkLVusTBrSoUZkGT9ycdEeE0HqM1O23HAVKPGzOcEVie31Rfgh3mk8G+q/Of/851AYlgw1H');
Air := DTMFromString('mlwAAAHicY2eAADYg5gZifiAWhGI+qLgYEItA5biAmAWq59HNG0CSCQtmZJCDqsUGGPFgKAAARFoDcg==');
Cosmic := DTMFromString('mwQAAAHic42RgYGBlgAB2IOYGYn4o5gNiTiBmAWIRIJYFYhkgloTy+aHyzFD9N67JAUkmvNgISHIx4AeMRGA4AAB7DQMQ');
DarkMage := DTMFromString('mwQAAAHic42RgYFjIyMCwCIinAPFKIJ4PxH1A3AbEDVDMA8RfgWoZGCH4JQME/2aAyCkC8fr+UobtU6sYFFS1GOSU1Rl4eXkxMD9QPSHMSASGAwAGuA7p');
NpcSpell := DTMFromString('mAAEAAHiclc3BCkBAFIXhM8rOI6GQyOuNJGWB8nDmJfw1d2E5Tn2b0+2eQtKeRSduXDisWzHDY8GGzkklKrQYMJkRPRrUdhfCw4pLlutf0j9H37yvEQ2A');
Buny := DTMFromString('mfgEAAHicE2JgYFgAxIuAeBUQrwTiNUC8DopBYouBeBYQTwbiiUj0bCCeBsQzofJroGYtgdKrgXgDEG8H4l1AvAeIdwPxDiDeBMQroGoWQO3YCLWzsDQeSDKRjQP8bRlyC6MZWBkoA8xAzAbEjFTCmAAAyVkbDQ==');
BunyI := DTMFromString('mvQEAAHicE2VgYFjMxMCwCIiXAvEqIF4LxRugGMReAVUzG4inAfFkJAziz4TieVBzBBgZGJiRMCsQ8wCxIBCLA7EMEMsBsTyUlgZiMag8LxBzATE7kn6Q3pLKRKBrmaiGs7PCGdiBLDYqYpB5jDTAWAEAguwR/w==');
Astral := DTMFromString('mKgEAAHic42NgYLBlZGBwB2IvIPaGsp2A2BqITYBYH4gNobQTVMwSiLOAehOBOA2I84C4DIiroLgCKlYCxOlAHAfECVD69PrTQJKJZCwJJNnJwIxkYlQAAF21DDM=');
AstralI := DTMFromString('mfgEAAHicrczPCkAADMDh8QhuXk5KSuEgSryUB3H3JwcHxUEpvICf7ObI6tvWtmaJSGSKpCiQo9T+rjESZLrz4cJRHgKEmPjVYcSABas881Pt2HBonfW+R4sGdVWTzc9s+SeMn7zjAhhzGp8=');
AstralClip := DTMFromString('mVAEAAHicE2BgYMhlYmAoBOISIK4A4iogrgTiMqh4DhCnAHECEk5kguhLBeLHQDNuAPFNIL4HxE+B+DUQvwfiz1D8EYjfAfFzIH4IxLegekD4xNoTQJKJbCzHQBlgpBCjAwDX8BfJ');
Law := DTMFromString('mKgEAAHicnc07CoAwEIThSQ5g5QFsPL8YUEECaSL4whN4GH9hG0sz8DHFDmwlKXlpwYXTZMzYETBaT4jY3ruTOkQMyDjMimT97nrbBjTtzVf/W62yuELfPLffFm0=');
LawB := DTMFromString('mPwEAAHicpcvBCkBQEIXhGYqNktyFkmvhaSkbpchGiSfyQP7FLGR5nfpmcZqTi0ihIjU8WjSoUCJDivjFWZ9gZj9iwoodJy5zYMNiPz0G2/ju5kYBVJyER3/45AETrwtL');
Giant := DTMFromString('m6wAAAHic42aAAGYg5gZiISAWg2IQmxeI+aCYE0rLQrEUEItD1fFA5Vmg5jECcbi/E5BkIgobAUkuBuIAIwkYCQAAk2gChA==');
Large := DTMFromString('mrAAAAHic42BgYHBhYmBwBWJPKO0HxF5AbAHETkDMx8jA8A+ojgFIswAxLxCLQLEYEDvbGgMlmXBifgb8gAliNE4MAwBfsAR9');
Medium:= DTMFromString('mlwAAAHicY2dgYMhjYmAoBeJkIE4B4hIgzgHifCDmYYRgLiAWgmJRIP4D1OdqbwokmbBifgbcAKSCEQeGAgBswQVI');
Small := DTMFromString('mAAEAAHicbczBCoJAFIXhMwNF2MiQ+ghuXbd2F0RlD+ZWRRJ61H5lCNG58N0Dh8t1kjor9fjgG7ILOWLCgDY4G+mAIxwy5BBSnGBxQYJbfdXreefA7rybx5JVWfw7z57Fxm9Sq28mItav5wer+wsg');
MonkFish := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
End;
{*********************************************
Procedure FreeThangs;
By: GOOGLE
Description: Frees All Dtms + Bitmaps
**********************************************}
Procedure FreeThangs;
Begin
FreeBitMap(Ess);
FreeDTM(Tele);
FreeDTM(Air);
FreeDTM(Cosmic);
FreeDTM(DarkMage);
FreeDTM(NpcSpell);
FreeDTM(Buny);
FreeDTM(BunyI);
FreeDTM(Astral);
FreeDTM(AstralI);
FreeDTM(AstralClip);
FreeDTM(Law);
FreeDTM(LawB);
FreeDTM(Giant);
FreeDTM(Large);
FreeDTM(Medium);
FreeDTM(Small);
FreeDTM(MonkFish);
End;
{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;
{*******************************************************************************
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
By: Flight
*******************************************************************************}
procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist: extended;
lastX,lastY,MSP,W,maxStep,D: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
repeat
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
D := Random((Round(dist)/3));
if (D > 100) then
D := RandomRange(90, 100);
if (D < 5) then
D := RandomRange(5, 8);
maxStep := D;
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
W := (Random(100/MSP))*3;
if (W < 5) then
W := 5;
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
{*******************************************************************************
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
By: Flight
*******************************************************************************}
procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y: integer;
begin
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, eX, eY, 9, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
end;
{*********************************************
Procedure DragM;
By: NaumanAkhlaQ
Description: Leftclicks StartX, StartY and
drags mouse to EndX, EndY..
**********************************************}
Procedure DragM(StartX, StartY, SRandX, SRandY, EndX, EndY, ERandX, ERandY: Integer);
begin
MMouse(StartX, StartY, SRandX, SRandY);
Wait(150 + Random(20));
GetMousePos(StartX, StartY);
HoldMouse(StartX, StartY, mouse_left);
Wait(250 + Random(320));
MMouse(EndX, EndY, ERandX, ERandY);
Wait(250 + Random(120));
GetMousePos(EndX, EndY);
ReleaseMouse(EndX, EndY, mouse_left);
end;
{*********************************************
Function CountAstrals;
By: GOOGLE
Description: Counts The Astral Runes After
Being Crafted And Prints to Progress Report.
**********************************************}
Function CountAstrals: Integer;
Begin
If FindDTM(AstralI, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Count := GetAmount(X,Y);
Result:= Count;
End;
{*******************************************************************************
Function UsingFamiliar: Boolean;
By: Flight
Description: Returns if we currently have a Summoning familiar.
*******************************************************************************}
Function UsingFamiliar: Boolean;
Begin
Result := FindColorTolerance(X,Y,11192179,695,130,720,155,20);
End;
{***********************************************
Function ChargePoints: Boolean;
By: Google
Description: Returns The Orange Number Color
For Summoning.
************************************************}
Function ChargePoints: Boolean;
Begin
//Result := FindcolorTolerance(X,Y,2070783,731,151,728,151,20);
Result := FindcolorTolerance(X,Y,65535,728,146,730,148,20);
Result := FindcolorTolerance(X,Y,2070783,730,144,730,151,20);
End; {Orange^^}
{*********************************************
Procedure ProgressReport;
By: GOOGLE
Description: Proggy in Debug w/ ActionText
For Showing Which Procedure its on.
**********************************************}
Procedure ProgressReport;
Begin
ClearDebug;
RunesPerHour := Round((Runecount)/ (GetTimeRunning / 3600000.0));
Clock := [0,0,0];
ConvertTime(GetTimeRunning,Clock[0],Clock[1],Clock[2]);
WriteLn('=-=-=-=-=-=- AstralRcRunner -=-=-=-=-=-=-=-=-=');
WriteLn('=-=-=-=-=-=-=-=-By Google-=-=--=-=-=-=-=-=-=-=');
WriteLn('Time Running ' +tostr(Clock[0])+':'+tostr(Clock[1])+':'+tostr(Clock[2]));
WriteLn('Runs Done:' +IntToStr(runs));
WriteLn('Astrals Made:' +IntToStr(RuneCount));
WriteLn('Astrals Per Hour:' +IntToStr(RunesPerHour));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
End;
{*********************************************
Procedure Bank;
By: GOOGLE
Description: ACA auto color function for
Bank Colors.
**********************************************}
function Bank: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.17, 0.09);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 5662320, MSX1, MSY1, MSX2, MSY2, 4);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 10.51) and (X <= 16.00) and (Y >= 10.94) and (Y <= 16.63) and (Z >= 8.56) and (Z <= 12.97) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
{*********************************************
Procedure OpenBooth;
By: GOOGLE
Description: Custom BankFinding For Lunar
Isle.
**********************************************}
Function OpenBooth:Boolean;
Var
a, h: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
Begin
If(not(LoggedIn)) Then Exit;
FindNormalRandoms;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.72);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5662320, MSX1, MSY1, MSX2, MSY2, 4);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
for a := 0 to H do
Begin
MiddleTPAEx(atpa[a], X, Y);
BrakeMMouse(X, Y, 5, 5);
If (WaitUpTextMulti(['Bank', 'booth', 'ooth', 'ank', 'Bank Booth'], 750)) Then
Begin
ClickMouse2(False);
Wait(150 + Random(50));
ChooseOption('Bank');
Wait(900 + Random(150));
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result:= True;
Exit;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
{**********************************************
Procedure OpenB;
By: GOOGLE
Description: Handles Opening the Bank W\
Failsafes.
**********************************************}
Procedure OpenB;
Begin
OpenBooth;
While (IsMoving) Do
Wait(950 + Random(150));
If Not (BankScreen) Then
Begin
Repeat
OpenBooth;
Tries := Tries+1
Until(BankScreen)Or(Tries > 4)
If (Tries > 4) Then
Logout;
End;
End;
{*********************************************
Procedure WalkBank;
By: GOOGLE
Description: Uses Sps Walking to walk from
Teleport spot to bank.
**********************************************}
Procedure WalkBank;
Begin
GameTab(Tab_Inv)
SPS_Setup(RUNESCAPE_SURFACE,['0_2']);
ToBank := [Point(241, 957), Point(242, 957),
Point(243, 956), Point(238, 958), Point(240, 958)];
SPS_WALKPath(ToBank);
Wait(750 + Random(270));
End;
{*********************************************
Function Teleport: Boolean;
By: GOOGLE
Description: Teleports using Moonclan
Tele.
**********************************************}
Function Teleport: Boolean;
Begin
If (LoggedIn) then
Begin
If Not FindNormalRandoms then
Begin
GameTab(Tab_Magic);
Wait(400);
If FindDTM(Tele,X,Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
MMouse(x,y,5,5);
Wait(600 + Random(50));
ClickMouse2(True);
End;
WalkBank;
End;
End;
End;
{*********************************************
Procedure WalkAltar;
By: GOOGLE
Description: Uses Sps Walking To Walk From
The Bank To The Altar, If It Gets Lost
It Will Re-teleport And Re-Walk The Path Again.
**********************************************}
Procedure GoToAltar;
Begin
SPS_Setup(RUNESCAPE_SURFACE,['0_2','1_2']);
ToAltar := [Point(252, 971), Point(289, 972),
Point(292, 1026), Point(292, 1035), Point(294, 1042),
Point(295, 1047), Point(295, 1053), Point(295, 1060),
Point(298, 1067), Point(299, 1074), Point(304, 1079),
Point(309, 1084), Point(312, 1089), Point(316, 1093),
Point(320, 1099), Point(324, 1105), Point(330, 1109),
Point(337, 1113), Point(343, 1118), Point(347, 1123),
Point(353, 1129), Point(358, 1134), Point(363, 1139),
Point(369, 1145), Point(413, 1179), Point(418, 1176),
Point(424, 1175), Point(430, 1175), Point(438, 1175),
Point(463, 1177)];
SPS_WalkPath(ToAltar);
If Not (SPS_WalkPath(ToAltar)) Then
Begin
Teleport;
GoToAltar;
End;
End;
{*********************************************
Function AltarColor: Integer;
By: GOOGLE
Description: ACA Autocolor Function for
the Altar Colors.
**********************************************}
function AltarColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.56, 0.09);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 8025464, MSX1, MSY1, MSX2, MSY2, 6);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 13.21) and (X <= 22.64) and (Y >= 13.55) and (Y <= 23.21) and (Z >= 15.81) and (Z <= 26.96) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
{*********************************************
Procedure Altar;
By: GOOGLE
Description: Finds The Altar Using Custom
Finding Method.
**********************************************}
Function FindAltar: Boolean;
Var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I, Retry: Integer;
Begin
FindNormalRandoms;
While(ismoving) Do
Wait(550 + Random(350));
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, AltarColor, MSX1, MSY1, MSX2, MSY2, 3);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 5);
SortATPASize(TPAA, True);
For I := 0 to High(TPAA) Do
If GetArraylength(TPAA[i]) > 5 Then
Begin
Repeat
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
BrakeMMouse(X, Y, 15, 15);
Wait(200 + Random(150));
If (IsUpTextMultiCustom(['Altar', 'tar','Alt','ltar'])) Then
Begin
GetMousePos(X, Y);
ClickMouse2(True);
//Wait(150 + Random(50));
//ChooseOption('Altar');
Writeln('Found Altar Clicking It');
Wait(2000 + Random(250));
Result:= True;
Exit;
End;
Until (Retry = 7);
Break;
End;
End;
{*********************************************
Function ClickAltar: Boolean;
By: GOOGLE
Description: Clicks The Altar Used for Pouch
Method.
**********************************************}
Function ClickAltar: Boolean;
Var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS: Integer;
Begin
FindNormalRandoms;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, AltarColor, MSX1, MSY1, MSX2, MSY2, 6);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 5);
SortATPASize(TPAA, True);
For I := 0 to High(TPAA) Do
If GetArraylength(TPAA[i]) > 5 Then
Begin
MiddleTPAEx(TPAA[i], X, Y);
BrakeMMouse(X, Y, 15, 15);
Wait(430 + Random(150));
If (IsUpTextMultiCustom(['Altar', 'tar','Alt','ltar'])) Then
Begin
GetMousePos(X, Y);
ClickMouse2(True);
Writeln('Crafting Runes');
Wait(1000 + Random(200));
Result:= True;
Exit;
End;
Break;
End;
End;
{*********************************************
Procedure DoAstrals;
By: GOOGLE
Description: Handles The Pouches When Crafting
At The Altar.
**********************************************}
Procedure DoAstrals;
Begin
If Usepouches = ('Yes') Then
Begin
FindAltar;
While(ismoving) Do
Wait(200 + Random(150));
End;
If FindDTM(Giant, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
SleepandMoveMouse(300);
End;
ClickAltar;
CountAstrals;
Wait(1200 + Random(200));
If FindDTM(Large, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
//Wait(250 + Random(50));
End;
If FindDTM(Medium, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
//Wait(250 + Random(50));
End;
If FindDTM(Small, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
//Wait(250 + Random(50));
End;
ClickAltar;
CountAstrals;
Teleport;
If UsePouches = ('No') Then
Begin
FindAltar;
CountAstrals;
Teleport;
End;
End;
{*********************************************
Procedure WEssence;
By: GOOGLE
Description: Handles Withdrawing Essence.
**********************************************}
Procedure WEssence;
Begin
Begin
If FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 45) then
Begin
HumanMMouse(X, Y, 5, 5);
Wait(150 + Random(50));
ClickMouse2(False);
Wait(200 + Random(50));
ChooseOption('All');
End;
End;
End;
{*********************************************
Procedure DEssence;
By: GOOGLE
Description: Handles Depositing Essence From
The Invetory.
**********************************************}
Procedure DEssence;
Begin
Begin
If FindBitMapTolerancein(Ess, X, Y, MIX1, MIY1, MIX2, MIY2, 45) Then
Begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(RandomRange(700, 400));
ChooseOption('Deposit-5');
End;
End;
End;
{*********************************************
Procedure DepositAstral;
By: GOOGLE
Description: Handles Depositing The Crafted
Astral Runes From the Invetory.
**********************************************}
Procedure DepositAstral;
Begin
Begin
If FindDTM(AstralI, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 4,4);
ClickMouse2(False);
Wait(200 + Random(100));
ChooseOption('Deposit-All');
Wait(1000 + Random(150));
End;
If FindDTM(AstralClip, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 4,4);
ClickMouse2(False);
Wait(200 + Random(100));
ChooseOption('Deposit-All');
Wait(1000 + Random(150));
End;
End;
End;
{*********************************************
Function GiantDecay: Boolean;
By: GOOGLE
Description: Finds The Giant Decayed Pouch in
The First Slot using ATPA.
**********************************************}
Function GiantDecay: 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.42, 0.08);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3356987, MIX1, MIY1, MIX2, MIY2, 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));
Result := True;
End;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;
{*********************************************
Procedure HandleFood;
By: GOOGLE
Description: Finds The Food, Eats And Deposits
If At 60% Info in HandleBank.
**********************************************}
Procedure HandleFood;
Begin
If(not(LoggedIn))then Exit;
If(not(FindNormalRandoms))Then
If FindDTM(MonkFish, x, y, MIX1, MIY1, MIX2, MIY2) Then
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False)
Wait(100 + Random(50));
ChooseOption('Withdraw-5');
Wait(1000 + Random(50));
Repeat
If(Not(LoggedIn))Then Exit;
If(Not(FindNormalRandoms))Then
If FindDTM(MonkFish, x, y, MIX1, MIY1, MIX2, MIY2) Then
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False)
Wait(100 + Random(50));
ChooseOption('Eat');
Wait(1000 + Random(50));
Until (HPPercent = 100);
If FindDTM(MonkFish, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Repeat
If FindDTM(MonkFish, X, Y, MIX1, MIY1, MIX2, MIY2) Then
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False);
Wait(100 + Random(50));
ChooseOption('Deposit-All');
Until Not FindDTM(MonkFish, x, y, MIX1, MIY1, MIX2, MIY2);
End;
End;
{*********************************************
Function ObeliskColor: Boolean;
By: GOOGLE
Description: ACA Autocolor Function
For The Obelisk Colors.
**********************************************}
function ObeliskColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.86, 0.38);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 8822916, MSX1, MSY1, MSX2, MSY2, 20);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 12.58) and (X <= 54.59) and (Y >= 15.37) and (Y <= 58.83) and (Z >= 19.11) and (Z <= 61.89) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
{*********************************************
Function FindObelisk: Boolean;
By: GOOGLE
Description: Finds The Altar with custom
finding method using ACA color Function.
**********************************************}
Function FindObelisk: Boolean;
Var
x, y: Integer;
TPAA: T2DPointArray; // The Variables of the Functions
TPA: TPointArray;
CTS, I, Retry: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, ObeliskColor, MSX1, MSY1, MSX2, MSY2, 20); // Enter the Color and Tolerance Here at the Right place.
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 5); //Put the Width and Heigh here
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 2 Then // Set How Much Points you need for your function to take Action
Begin
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
Wait(500 + Random(200));
if (IsUpTextMultiCustom(['Small Obelisk', 'lisk', 'obe', 'mall'])) then // Enter The name of Your NPC or Monster
Begin
GetMousePos(X, Y);
ClickMouse2(True);
Wait(1850 + Random(200));
Result:= True
Exit;
End;
End;
End;
{*********************************************
Procedure Obelisk
By: GOOGLE
Description: Handles The Obelisk Procedure
If it needs to recharge it will walk to the
obelisk, charge then run to altar.
**********************************************}
Procedure Obelisk;
Begin
If ChargePoints = True Then
Begin
SPS_Setup(RUNESCAPE_SURFACE,['0_2']);
ToObe := [Point(289, 971), Point(290, 969), Point(291, 969)];
SPS_WALKPath(ToObe);
Wait(1200 + Random(200));
FindObelisk;
GoToAltar;
End;
End;
{*********************************************
Function WithdrawSupps: Boolean;
By: GOOGLE
Description: If Familiar Is Not Out During Banking
It Will Find The Pouch And Summon It.
**********************************************}
Function WithdrawSupps: Boolean;
Begin
If UseFamiliar = ('Yes') Then
Begin
If UsingFamiliar = False Then
Begin
DEssence;
Wait(400 + Random(200));
If FindDTM(BunyI, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Writeln('Found The Pouch');
Begin
HumanMMouse(X, Y, 3, 3);
ClickMouse2(True);
Wait(200 + Random(150));
End;
CloseBank;
Wait(400 + Random(340));
GameTab(Tab_Inv);
If FindDTM(BunyI, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False);
Wait(100 + Random(50));
ChooseOption('Summon');
Wait(200 + Random(200));
End;
OpenB;
If FindDTM(BunyI, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(X, Y, 3, 3);
Wait(200 + Random(123));
ClickMouse2(True);
End;
End;
End;
End;
{*********************************************
Function NPCContact: Boolean;
By: GOOGLE
Description: Handles The Npc Repair When "FillPouch"
Finds The Degraded Pouch.
**********************************************}
Function NPCContact: Boolean;
Var
Chat, Chat2:Integer;
Begin
Wait(300 + Random(350));
DEssence;
WriteLn('Repairing The Giant Pouch')
Wait(250 + Random(150));
If FindDTM(Air, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(100 + Random(50));
ClickMouse2(True);
Wait(400 + Random(100));
If FindDTM(Cosmic, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(400 + Random(100));
Begin
If FindDTM(Astral, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(400 + Random(100));
End;
End;
CloseBank;
Wait(1200 + Random(50));
GameTab(Tab_Magic);
If FindDTM(NpcSpell, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
MMouse(x,y,4,4);
ClickMouse2(True);
GameTab(Tab_Inv);
Wait(1500 + Random(150));
MMouse(487, 219, 0, 0);
ClickMouse2(True);
Wait(RandomRange(300, 400));
If FindDTM(DarkMage, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
MMouse(x,y,5,5);
ClickMouse2(True);
Wait(6500 + Random(250));
Repeat
Inc(Chat);
TypeSend(' ');
Wait(1200 + Random(250));
Until(Chat > 5);
Wait(400 + Random(200));
FindNPCChatText('repair',Clickleft);
ClickMouse2(True);
Repeat
Inc(Chat2);
TypeSend(' ');
Wait(1250 + Random(250));
Until(Chat2 > 1);
End;
End;
OpenB;
End;
End;
End;
{*********************************************
Function FillPouch: Boolean;
By: GOOGLE
Description: Handles Filling The Pouches
If It Finds the Giant Degrade It Will Then
Do NpcRepair.
**********************************************}
Function FillPouch: Boolean;
Begin
If UsePouches =('Yes') then
Begin
If GiantDecay Then
Begin
NpcContact;
WEssence;
End else
Begin
WEssence;
Wait(75 + Random(35));
End;
If FindDTM(Giant,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
Wait(75 + Random(35));
WEssence;
End Else
Wait(75 + Random(35));
If FindDTM(Large,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
End;
If FindDTM(Medium,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
End;
If FindDTM(Small,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
End;
Begin
End;
WEssence;
If UsePouches = ('No') Then
WEssence;
End;
End;
Procedure HandleBanking;
Begin
If (BankScreen) or (PinScreen) Then
Begin
If (PinScreen) Then
Repeat
InPin(Players[0].Pin);
Until (BankScreen);
If (Bankscreen) Then
Begin
If (HpPercent < 60) Then
Begin
HandleFood;
End;
DepositAstral;
WithdrawSupps;
FillPouch;
End;
End;
End;
{*********************************************
Procedure SetupInvetory;
By: GOOGLE
Description: Just A Feat I Added That Will
Withdraw Pouches Out Of The Bank And Set Them
Up In Invetory.
**********************************************}
Procedure SetupInvetory;
Begin
If UseSetup =('Yes') Then
Begin
OpenB;
End;
If FindDTM(Giant, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Large, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Medium, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Small, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(700 + Random(200));
End;
If FindDTM(LawB, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(False);
Wait(100 + Random(200));
ChooseOption('Withdraw-All')
End;
CloseBank;
Wait(500 + Random(100));
If FindDTM(Law, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(579, 373, 580, 376);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(100 + Random(300));
ReleaseMouse(579, 371, Mouse_Left);
End;
If FindDTM(Large, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(579, 269, 581, 268);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(100 + Random(300));
ReleaseMouse(579, 269, Mouse_Left);
End;
If FindDTM(Medium, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(578, 304, 578, 304);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(100 + Random(300));
ReleaseMouse(579, 303, Mouse_Left);
End;
If FindDTM(Small, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(579, 339, 579, 341);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(400 + Random(300));
ReleaseMouse(579, 339, Mouse_Left);
Wait(400 + Random(200));
End;
End;
Begin
Smart_Server := 18;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
MouseSpeed := RandomRange(18, 22);
ClearDebug;
SetupSRL;
CallThangs;
Addonterminate('FreeThangs')
DeclarePlayers;
LoginPlayer;
SetAngle(SRL_ANGLE_HIGH);
HpPercent;
SetupInvetory;
GameTab(Tab_Inv);
Repeat
ProgressReport;
OpenB;
HandleBanking;
Obelisk;
GoToAltar
DoAstrals;
ProgressReport;
Inc(Runs);
IncEx(RuneCount, CountAstrals)
Until(Not (Loggedin));
FreeThangs;
Terminatescript();
End.Made Quite a few changes removed most DTMS , changed to Bitmaps > Increased performance and speed, now gets 4800 - 5250 R|PH at 91+
Script #2
Program NatureRcGraahkGoogle;
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i sps/sps.simba}
{
''~``
( o o )
+------------------.oooO--(_)--Oooo.------------------+
| NatureRcGraahk V1.0.4 |
| By: GOOGLE |
|*****************************************************|
| Instructions |
| 1) Start At Front Cw Chest |
| 2) Have Graahk Pouches Same Tab As Mats |
| 3) NPC Repair So Have Cosmics | Air Runes | Astral |
| 4) If Using auto Setup Have All Mats in Same Tab |
| 5) Have Ring Of Dueling Equiped B4 Starting |
| 6) Start Script! :) |
| .oooO |
| ( ) Oooo. |
+---------------------\ (----( )--------------------+
\_) ) /
(_/
======== POST PROGY + FEEDBACK ON THE FORUMS =======}
Var
x, y, i: Integer;
EndX, EndY: Integer;
Clock: TIntegerArray;
ToAltar: TPointArray;
NeedNewRing: Boolean;
ToObe, ObAltar: TPointArray;
Giant, Large, Medium, Small: Integer;
NpcSpell, Darkmage, Tries, runs: Integer;
Pouch, Count, Ring, RuneCount: Integer;
Ess, Air, Cosmic, Astral, Nature, RunesPerHour: Integer;
//***************Edit Below*****************//
//******************************************//
//******************************************//
Const
UsePouches = ('Yes'); //Yes for Pouch no for None
UseSetup = ('No'); // Withdraws all mats + Setup
SRLStats_Username = ''; // Your SRL Stats Username
SRLStats_Password = ''; // Your SRL Stats Password
NumbOfPlayers = 1; //How many players are you using
StartPlayer = 0; //Player to start with 0 meaning first!
{---------------Script Info-----------------}
{---------------Script Info-----------------}
Author = 'GOOGLE';
ScriptName = 'NatureRcGraahk V1.0.4';
Version = '1.0.4'; //Script Version
{-------------------------------------------}
{-------------------------------------------}
Procedure DeclarePlayers;
Begin
NumberOfPlayers(NumbOfPlayers);
CurrentPlayer := StartPlayer;
for i := 0 to NumbOfPlayers-1 do
Players[i].BoxRewards := ['amp', 'XP', 'ostume'];
With Players[0] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End;
//Remove '{ }' Brackets If Using Multiple Chars
{ // First Bracket
With Players[1] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End;
With Players[2] Do
Begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := '';
Member := True;
Active := True;
End; } // Second Bracket
End;
//**************Stop Editing****************//
//******************************************//
//******************************************//
{*********************************************
Procedure CallThangs;
By: GOOGLE
Description: Loads The BitMaps + Dtms
**********************************************}
Procedure CallThangs;
Begin
Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');
Air := BitmapFromString(6, 7, 'meJwrr6g9d/4GBNXVtzQ0tpWWVcNF' +
'amubgYIlJZVwkerqRqBgUVE5XKSysh4oWFBQChcpr6gFiuTlFcNFg' +
'GYCleXkFKKJAABvUVGI');
Astral := BitmapFromString(4, 6, 'meJw7tvr4MRJRampmWnp2RmZuYmJq' +
'cnI6hAsASeUuIQ==');
Cosmic := BitmapFromString(5, 9, 'meJwrr6gtr6iVOXMegkpKKkvLquHc' +
'oqJyoAgQQbgFBaVAESCCK4ALAhlZ2fk5OYV5ecUQ8YzMXIgIhJuWn' +
'g0UgetKTc0EisC5ADbBRHE=');
Nature := BitmapFromString(6, 4, 'meJwTqRcUqRfMys7PySkUAbMhKCMz' +
'FyiILJKWng0URBZJTc0ECkLYAOUoFDE=');
Pouch := BitmapFromString(6, 8, 'meJxzrLrmWHUtJLseiBZs3bVo2x4g' +
'1zGiFCI4f/MOoCBcBIjmbdoOFISoByK4IFxkxuoNs9dvnrNhq03hc' +
'SB36oq101atm7l2E1AQKAJEU5atBgoClQEF+xYsmbh4xaSlK4GCQG' +
'VAQQDCQVAe');
Ring := BitmapFromString(5, 7, 'meJwTnygiPlFEqFQAgqRXiAMRGldi' +
'qggECebW8yfk8wbFi3UIAZFo8wzh8i7BrGr+uFw/vyDJBbukFu6RW' +
'rxXpHYiUI3MpvNyu27IH3woMXOTUHEbANLDIWk=');
DarkMage := DTMFromString('mwQAAAHic42RgYFjIyMCwCIinAPFKIJ4PxH1A3AbEDVDMA8RfgWoZGCH4JQME/2aAyCkC8fr+UobtU6sYFFS1GOSU1Rl4eXkxMD9QPSHMSASGAwAGuA7p');
NpcSpell := DTMFromString('mAAEAAHiclc3BCkBAFIXhM8rOI6GQyOuNJGWB8nDmJfw1d2E5Tn2b0+2eQtKeRSduXDisWzHDY8GGzkklKrQYMJkRPRrUdhfCw4pLlutf0j9H37yvEQ2A');
Giant := DTMFromString('m6wAAAHic42aAAGYg5gZiISAWg2IQmxeI+aCYE0rLQrEUEItD1fFA5Vmg5jECcbi/E5BkIgobAUkuBuIAIwkYCQAAk2gChA==');
Large := DTMFromString('mrAAAAHic42BgYHBhYmBwBWJPKO0HxF5AbAHETkDMx8jA8A+ojgFIswAxLxCLQLEYEDvbGgMlmXBifgb8gAliNE4MAwBfsAR9');
Medium:= DTMFromString('mlwAAAHicY2dgYMhjYmAoBeJkIE4B4hIgzgHifCDmYYRgLiAWgmJRIP4D1OdqbwokmbBifgbcAKSCEQeGAgBswQVI');
Small := DTMFromString('mAAEAAHicbczBCoJAFIXhMwNF2MiQ+ghuXbd2F0RlD+ZWRRJ61H5lCNG58N0Dh8t1kjor9fjgG7ILOWLCgDY4G+mAIxwy5BBSnGBxQYJbfdXreefA7rybx5JVWfw7z57Fxm9Sq28mItav5wer+wsg');
End;
{*********************************************
Procedure FreeThangs;
By: GOOGLE
Description: Frees All Dtms + Bitmaps
**********************************************}
Procedure FreeThangs;
Begin
FreeDTM(Giant);
FreeDTM(Large);
FreeDTM(Medium);
FreeDTM(Small);
FreeDTM(DarkMage);
FreeDTM(NpcSpell);
FreeBitMap(Ess);
FreeBitMap(Nature);
FreeBitMap(Air);
FreeBitMap(Cosmic);
FreeBitMap(Astral);
FreeBitMap(Pouch);
FreeBitMap(Ring);
End;
{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;
{*******************************************************************************
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
By: Flight
*******************************************************************************}
procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist: extended;
lastX,lastY,MSP,W,maxStep,D: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
repeat
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
D := Random((Round(dist)/3));
if (D > 100) then
D := RandomRange(90, 100);
if (D < 5) then
D := RandomRange(5, 8);
maxStep := D;
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
W := (Random(100/MSP))*3;
if (W < 5) then
W := 5;
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
{*******************************************************************************
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
By: Flight
*******************************************************************************}
procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y: integer;
begin
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, eX, eY, 9, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
end;
{*********************************************
Procedure DragM;
By: NaumanAkhlaQ
Description: Leftclicks StartX, StartY and
drags mouse to EndX, EndY..
**********************************************}
Procedure DragM(StartX, StartY, SRandX, SRandY, EndX, EndY, ERandX, ERandY: Integer);
begin
MMouse(StartX, StartY, SRandX, SRandY);
Wait(150 + Random(20));
GetMousePos(StartX, StartY);
HoldMouse(StartX, StartY, mouse_left);
Wait(250 + Random(320));
MMouse(EndX, EndY, ERandX, ERandY);
Wait(250 + Random(120));
GetMousePos(EndX, EndY);
ReleaseMouse(EndX, EndY, mouse_left);
end;
{*********************************************
Function CountNatures;
By: GOOGLE
Description: Counts The Nature Runes After
Being Crafted And Prints to Progress Report.
**********************************************}
Function CountNatures: Integer;
Begin
If FindBitMapTolerancein(Nature, X, Y, MIX1, MIY1, MIX2, MIY2, 55) then
Count := GetAmount(X,Y);
Result:= Count;
End;
{*********************************************
Procedure ProgressReport;
By: GOOGLE
Description: Proggy in Debug w/ ActionText
For Showing Which Procedure its on.
**********************************************}
Procedure ProgressReport;
Begin
ClearDebug;
RunesPerHour := Round((Runecount)/ (GetTimeRunning / 3600000.0));
Clock := [0,0,0];
ConvertTime(GetTimeRunning,Clock[0],Clock[1],Clock[2]);
WriteLn('=-=-=-=-=-=- NatureRcGraahk -=-=-=-=-=-=-=-=-=');
WriteLn('=-=-=-=-=-=-=-=-By Google-=-=--=-=-=-=-=-=-=-=');
WriteLn('Time Running ' +tostr(Clock[0])+':'+tostr(Clock[1])+':'+tostr(Clock[2]));
WriteLn('Runs Done:' +IntToStr(runs));
WriteLn('Natures Made:' +IntToStr(RuneCount));
WriteLn('Nats Per Hour:' +IntToStr(RunesPerHour));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
End;
{*******************************************************************************
Function UsingFamiliar: Boolean;
By: Flight
Description: Returns if we currently have a Summoning familiar.
*******************************************************************************}
Function UsingFamiliar: Boolean;
Begin
Result := FindColorTolerance(X,Y,11192179,695,130,720,155,20);
End;
{***********************************************
Function ChargePoints: Boolean;
By: Google
Description: Returns The Orange Number Color
For Summoning.
************************************************}
Function ChargePoints: Boolean;
Begin
//Result := FindcolorTolerance(X,Y,2070783,731,151,728,151,20);
Result := FindcolorTolerance(X,Y,65535,728,146,730,148,20);
Result := FindcolorTolerance(X,Y,2070783,730,144,730,151,20);
End; {Orange^^}
{*********************************************
Procedure WEssence;
By: GOOGLE
Description: Handles Withdrawing Essence.
**********************************************}
Procedure WEssence;
Begin
Begin
If FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 45) then
Begin
HumanMMouse(X, Y, 5, 5);
Wait(150 + Random(50));
ClickMouse2(False);
Wait(200 + Random(50));
ChooseOption('All');
End;
End;
End;
{*********************************************
Procedure DEssence;
By: GOOGLE
Description: Handles Depositing Essence From
The Invetory.
**********************************************}
Procedure DEssence;
Begin
Begin
If FindBitMapTolerancein(Ess, X, Y, MIX1, MIY1, MIX2, MIY2, 45) Then
Begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(RandomRange(700, 400));
ChooseOption('Deposit-5');
End;
End;
End;
{*********************************************
Procedure DepositNat;
By: GOOGLE
Description: Handles Depositing The Crafted
Nature Runes From the Invetory.
**********************************************}
Procedure DepositNat;
Begin
If FindBitMapTolerancein(Nature, X, Y, MIX1, MIY1, MIX2, MIY2, 55) then
Begin
HumanMMouse(X, Y, 4,4);
ClickMouse2(False);
Wait(150 + Random(100));
ChooseOption('Deposit-All');
End;
End;
{*********************************************
Function WaitXpIncrease: Boolean;
By: S1n
**********************************************}
function WaitXPIncrease(Time:Integer):Boolean;
var
First,Second,t:Integer;
begin
First := GetXPBarTotal;
MarkTime(T);
repeat
wait(10);
Second := GetXPBarTotal;
if TimeFromMark(t) > Time then
begin
Result := False;
Exit;
end;
until(Second > First);
Result := True;
end;
{*********************************************
Procedure OpenB;
By: GOOGLE
Description: Opens The Castle Wars Bank
If It Fails It Will Retry 3 Times And Log
Out If It Doesn't Get To The Bank Screen.
**********************************************}
Procedure OpenB;
Begin
Repeat
OpenBankChest(SRL_BANK_CW);
Wait(1);
Until(BankScreen);
If Not (BankScreen) Then
Begin
Repeat
OpenBankChest(SRL_Bank_CW);
Tries := Tries+1
Until(BankScreen)Or(Tries > 10)
If (Tries > 10) Then
Logout;
End;
End;
{*********************************************
Procedure WalkCwChest;
By: GOOGLE
Description: Finds The Bank Symbol At CastleWars
And Walks To It, Will Rety 5 Times If It Fails
To Find The Symbol.
**********************************************}
Procedure WalkCwChest;
Begin
If ((Findsymbol(X,Y,'Bank'))) Then
Begin
MMouse(X,Y,3,3);
Wait(100 + Random(50));
ClickMouse2(True)
Wait(3750 + Random(700));
End;
If (Not((Findsymbol(X,Y,'Bank')))) Then
Begin
Repeat
Wait(600 + Random(200));
Tries := Tries+1
Until((Findsymbol(X,Y,'Bank')))Or(Tries > 5)
If (Tries > 5) Then
Logout;
End;
End;
{*********************************************
Procedure WithdrawSupps;
By: GOOGLE
Description: Finds The Familiar In The Bank
Withdraws It And Summons it, Using Multiple DTMs
Becasue Of Item Clipping Lately.
**********************************************}
Procedure WithdrawSupps;
Begin
If UsingFamiliar = False Then
Begin
If FindBitMapTolerancein(Pouch, X, Y, MSX1, MSY1, MSX2, MSY2, 15) Then
Begin
HumanMMouse(X, Y, 3, 3);
ClickMouse2(True);
Wait(200 + Random(150));
End;
CloseBank;
Wait(400 + Random(340));
GameTab(Tab_Inv);
If FindBitMapTolerancein(Pouch, X, Y, MIX1, MIY1, MIX2, MIY2, 15) Then
Begin
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False);
Wait(75 + Random(15));
ChooseOption('Summon');
End;
OpenBankChest(SRL_BANK_CW);
If FindBitMapTolerancein(Pouch, X, Y, MIX1, MIY1, MIX2, MIY2, 15) Then
Begin
HumanMMouse(X, Y, 3, 3);
ClickMouse2(False);
Wait(100 + Random(50));
ChooseOption('Deposit-All');
End;
End;
End;
{*********************************************
Function Teleport: Boolean;
By: GOOGLE
Description: Goes To The Equipment Tab + Ring
Slot and Teleports, And Checks The Uptext
To See If We Need a New Ring.
**********************************************}
Function Teleport: Boolean;
Begin
Gametab(Tab_Equip);
Wait(175 + Random(25));
MouseBox(680,367,714,398,0);
ChooseOption('Castle');
If FindBitMapTolerancein(Ring, X, Y, MIX1, MIY1, MIX2, MIY2, 15) Then
BrakeMMouse(X, Y, 7, 7);
Wait(1175 + Random(15));
If(IsupText('Ring of duelling (1)'))Then
NeedNewRing:= True;
Gametab(Tab_Inv);
Wait(1675 + Random(225));
FindNormalRandoms;
End;
{*********************************************
Procedure TeleportAltar;
By: GOOGLE
Description: If We Dont Have a Familiar Out
It Will Open Bank And Summon One, If a Familiar
Is Out It Will use Static Coords To The Summoning
Icon and Click Teleport.
**********************************************}
Procedure TeleportAltar;
Begin
MouseBox(696,139,713,152,1); {MMouse(708,143,15,15);}
If UsingFamiliar = False Then
Begin
OpenB;
DEssence;
WithdrawSupps;
WEssence;
End;
Begin
ClickMouse2(True);
FindNormalRandoms;
Repeat
Wait(100);
until(FindNPCChatText('port',ClickLeft));
End;
End;
{*********************************************
Function WithdrawRing: Boolean;
By: GOOGLE
Description: Withdraws Ring of Dueling From
The First Bank Slot In Bank And Equips It.
Uses Static Finding.
**********************************************}
Function WithdrawRing: Boolean;
Begin
If(NeedNewRing)Then
Begin
If FindBitMapTolerancein(Ring, X, Y, MSX1, MSY1, MSX2, MSY2, 15) Then
Begin
BrakeMMouse(X, Y, 7, 7);
ClickMouse2(True)
Wait(735 + Random(135));
End;
If FindBitMapTolerancein(Ring, X, Y, MIX1, MIY1, MIX2, MIY2, 15) Then
Begin
BrakeMMouse(X, Y, 7, 7);
ClickMouse2(False)
Wait(175 + Random(15));
ChooseOption('Wear');
NeedNewRing:= False;
End;
End;
End;
{*********************************************
Function AltarColor: Integer;
By:
Description: ACA Function for the Myterious
Ruins Color.
**********************************************}
function AltarColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.10, 2.20);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 6483106, MSX1, MSY1, MSX2, MSY2, 9);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 38.93) and (X <= 58.23) and (Y >= 55.15) and (Y <= 79.28) and (Z >= 14.99) and (Z <= 32.95) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
{*********************************************
Procedure Altar;
By: GOOGLE
Description: Finds The Mysterious Ruins
Using Custom ATPA Finding.
**********************************************}
Function Altar:Boolean;
Var
a, h: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
Begin
If(not(LoggedIn)) Then Exit;
FindNormalRandoms;
While (IsMoving) Do Wait(75 + Random(15));
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.72);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, AltarColor, MSX1, MSY1, MSX2, MSY2, 4);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
for a := 0 to H do
Begin
MiddleTPAEx(atpa[a], X, Y);
BrakeMMouse(X, Y, 16, 16);
If WaitUpTextMulti(['Mysterious','ruins'],12000) Then
Begin
ClickMouse2(True);
Writeln('Found Ruins Clicking It');
Result:= True;
Exit;
End;
End;
End;
{
Procedure Altar;
Begin
While (IsMoving) Do Wait(175 + Random(75));
If FindObjCustom(X, Y, ['Mysterious ruins', 'Enter'],[AltarColor], 2) Then
Begin
BrakeMMouse(X, Y, 16, 16);
ClickMouse2(True);
End;
End; }
{
Procedure EnterRuins;
Begin
Altar;
If (Not((Altar))) Then
Begin
Repeat
Wait(600 + Random(200));
Tries := Tries+1
Until((Altar))Or (Tries > 6)
If (Tries > 6) Then
TeleportAltar;
WalkAltar;
End;
End; }
{*********************************************
Procedure EnterClickAltar;
By: GOOGLE
Description: Waits 5 Seconds when Zoning in the
Altar Then uses Static Coords To Click Altar.
**********************************************}
Procedure EnterClickAltar;
Begin
MouseBox(226,6,279,12,3); {HumanMMouse(266,24,15,5);}
If WaitUpTextMulti(['raft','tar','une','rune','run','Cra'],12000) Then
Begin
ClickMouse2(True);
SleepAndMoveMouse(375);
Wait(3000);
CountNatures;
End;
End;
{*********************************************
Procedure WalkAltar;
By: GOOGLE
Description: Uses Sps Walking To Walk From
The Graahk Teleport Spot To The Mysterious
Ruins, If It Gets Lost It Will Re-teleport
And Re-Walk The Path Again.
**********************************************}
Procedure WalkAltar;
Begin
SPS_Setup(RUNESCAPE_SURFACE,['7_11','8_11'])
ToAltar := [Point(3034, 4638), Point(3046, 4638),
Point(3059, 4644), Point(3065, 4640), Point(3071, 4636),
Point(3080, 4636), Point(3086, 4636), Point(3092, 4636),
Point(3100, 4636), Point(3106, 4636), Point(3110, 4636),
Point(3118, 4636), Point(3125, 4636), Point(3132, 4636),
Point(3139, 4637), Point(3145, 4637), Point(3152, 4637),
Point(3159, 4638), Point(3166, 4639), Point(3173, 4639),
Point(3178, 4639), Point(3184, 4639), Point(3192, 4639),
Point(3202, 4641), Point(3210, 4641), Point(3219, 4641),
Point(3228, 4641), Point(3237, 4642), Point(3241, 4642),
Point(3248, 4642), Point(3255, 4642), Point(3263, 4641),
Point(3270, 4640), Point(3276, 4640), Point(3282, 4637),
Point(3286, 4633), Point(3308, 4605)];
SPS_WalkPath(ToAltar);
If SPS_WalkPath(ToAltar) Then
WriteLn('Were At the Altar');
Begin
Altar;
End;
End;
{*********************************************
Procedure ProgressReport;
By: GOOGLE
Description: After it Walks to the Altar It
Will use These Static Coords to Craft again
If Using pouches, Choose Static finding becasue
I Really liked the random pixel movement, never
click around the same area twice.
**********************************************}
Procedure PouchAltar;
Begin
//If FindBitMapTolerancein(Nature, X, Y, MIX1, MIY1, MIX2, MIY2, 55) then
Begin
BrakeMMouse(261,89,50,50);{HumanMMouse Is Botlike Here?}
If WaitUpTextMulti(['raft','tar','une','rune','run','Cra'],12000) Then
Begin
ClickMouse2(True);
//Wait(575 + Random(245));{975}
End;
End;
End;
{*********************************************
Procedure DoNats;
By: GOOGLE
Description: Handles The Pouches When Crafting
At The Altar.
**********************************************}
Procedure DoNats;
Begin
If UsePouches = ('Yes') Then
Begin
If FindDTM(Giant, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
BrakeMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
SleepandMoveMouse(300);
//WaitXPIncrease(6000);
End;
PouchAltar;
Wait(1350 + Random(200));
If FindDTM(Large, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
BrakeMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
End;
If FindDTM(Medium, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
BrakeMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
End;
If FindDTM(Small, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
BrakeMMouse(X, Y, 7, 7);
Wait(100 + Random(50));
ClickMouse2(True);
End;
PouchAltar;
WaitXPIncrease(6000);
Teleport;
WalkCwChest;
If UsePouches = ('No') Then
Begin
EnterClickAltar;
Wait(200 + Random(200));
CountNatures;
ProgressReport;
Wait(150 + Random(75));
Teleport;
WalkCwChest;
End;
End;
End;
{*********************************************
Function GiantDecay: Boolean;
By: GOOGLE
Description: Finds The Giant Decayed Pouch in
The First Slot using ATPA.
**********************************************}
Function GiantDecay: 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.42, 0.08);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3356987, MIX1, MIY1, MIX2, MIY2, 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));
Result := True;
End;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;
{*********************************************
Procedure ObeliskColor;
By: GOOGLE
Description: ACA Function for the Obelisk Color.
**********************************************}
function ObeliskColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.06, 0.47);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 5205851, MSX1, MSY1, MSX2, MSY2, 8);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 7.12) and (X <= 17.35) and (Y >= 9.00) and (Y <= 22.22) and (Z >= 5.62) and (Z <= 14.20) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
{*********************************************
Procedure FindObelisk;
By: GOOGLE
Description: Finds The Obelisk With Custom Finding
Method + ACA Color Function.
**********************************************}
Function FindObelisk:Boolean;
Var
a, h: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
tmpCTS : Integer;
Begin
If(not(LoggedIn)) Then Exit;
FindNormalRandoms;
While (IsMoving) Do Wait(175 + Random(75));
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.72);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, ObeliskColor, MSX1, MSY1, MSX2, MSY2, 2);
ATPA := TPAtoATPAEx(TPA, 20, 20);
SortATPASize(ATPA,True);
H := High(ATPA);
for a := 0 to H do
Begin
MiddleTPAEx(atpa[a], X, Y);
BrakeMMouse(X, Y, 5, 5);
If WaitUpTextMulti(['Small Obelisk', 'lisk', 'obe', 'mall'],12000) Then
Begin
ClickMouse2(True);
Wait(1375 + Random(150));
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result:= True;
Exit;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
{
Procedure FindObelisk;
Begin
While (IsMoving) Do Wait(175 + Random(75));
If FindObjCustom(X, Y, ['Small Obelisk', 'obe'],[ObeliskColor], 10) Then
Begin
BrakeMMouse(X, Y, 16, 16);
ClickMouse2(True);
End;
End; }
{*********************************************
Procedure ObeliskAltar;
By: GOOGLE
Description: Uses Sps Walking From The Obelisk
To The Altar.
**********************************************}
Procedure ObeliskAltar;
Begin
FindNormalRandoms;
SPS_Setup(RUNESCAPE_SURFACE,['7_11','8_11']);
ObAltar := [Point(3247, 4560), Point(3259, 4559), Point(3264, 4559), Point(3266, 4565), Point(3270, 4569), Point(3273, 4576), Point(3277, 4576), Point(3302, 4596)];
//ObAltar := [Point(3247, 4561), Point(3250, 4561),
//Point(3254, 4558), Point(3260, 4558), Point(3267, 4560),
//Point(3274, 4565), Point(3278, 4570), Point(3284, 4572),
//Point(3288, 4576), Point(3295, 4582), Point(3309, 4590)];
SPS_WalkPath(ObAltar);
If SPS_WALKPATH(ObAltar) Then
Begin
FindNormalRandoms;
WriteLn('At The Altar');
//Altar;
End;
End;
{*********************************************
Procedure ToObelisk;
By: GOOGLE
Description: Uses Sps Walking From The Graahk
Teleport Spot To The Obelisk, If It Gets lost
It Will Reteleport with Graahk and WalkAltar.
**********************************************}
Procedure ToObelisk;
Begin
//If ChargePoints = True Then
Begin
SPS_Setup(RUNESCAPE_SURFACE,['7_11','8_11'])
ToObe := [Point(3041, 4641), Point(3049, 4639), Point(3052, 4639), Point(3060, 4639), Point(3065, 4639), Point(3068, 4639), Point(3071, 4638), Point(3080, 4636), Point(3089, 4636), Point(3104, 4636), Point(3110, 4634), Point(3116, 4632), Point(3123, 4629), Point(3127, 4628), Point(3133, 4627), Point(3140, 4625), Point(3147, 4622), Point(3152, 4618), Point(3159, 4611), Point(3163, 4605), Point(3172, 4598), Point(3173, 4592), Point(3177, 4590), Point(3181, 4585), Point(3185, 4579), Point(3192, 4572), Point(3236, 4563)];
//ToObe := [Point(3039, 4640), Point(3054, 4640),
//Point(3066, 4642), Point(3079, 4639), Point(3094, 4638),
//Point(3101, 4637), Point(3114, 4632), Point(3130, 4626),
//Point(3140, 4624), Point(3149, 4619), Point(3162, 4612),
//Point(3167, 4601), Point(3173, 4595), Point(3176, 4586),
// Point(3179, 4577), Point(3187, 4568), Point(3196, 4562),
//Point(3231, 4565)];
SPS_WalkPath(ToObe);
If SPS_WALKPATH(ToObe) Then
WriteLn('At Obe');
Begin
FindObelisk;
ObeliskAltar;
End;
End;
End;
{*********************************************
Procedure WithdrawPouch;
By: GOOGLE
Description: If Familiar Is Not Out During Banking
It Will Find The Pouch And Summon It.
**********************************************}
Procedure WithdrawPouch;
Begin
Wait(500+random(250));
If UsingFamiliar = False Then
Begin
HumanMMouse(98,108,4,4);
Wait(450 + Random(200));
If IsupText('Spirit graahk pouch') Then
ClickMouse2(True);
Wait(200 + Random(100));
End;
If UsingFamiliar = False Then
HumanMMouse(317,110,4,4);
Wait(450 + Random(237));
If IsupText('Summoning potion') Then
Begin
WriteLn('Found Potion Withdrawing');
Wait(450 + Random(200));
ClickMouse2(True);
CloseBank;
GameTab(Tab_Inv);
Wait(400 + Random(340));
If UsingFamiliar = False Then
HumanMMouse(663,232,2,2);
Wait(450 + Random(200));
If IsupText('Summoning potion') Then
Begin
ClickMouse2(True)
Wait(400 + Random(200));
End;
Begin
Writeln('Familiar Still Out');
End;
End;
End;
{*********************************************
Function NPCContact: Boolean;
By: GOOGLE
Description: Handles The Npc Repair When "FillPouch"
Finds The Degraded Pouch.
**********************************************}
Function NPCContact: Boolean;
Begin
MouseSpeed := 24
Wait(300 + Random(350));
DEssence;
WriteLn('Starting Npc Repair')
Wait(250 + Random(150));
If FindBitMapTolerancein(Air, X, Y, MSX1, MSY1, MSX2, MSY2, 15) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(100 + Random(50));
ClickMouse2(True);
Wait(400 + Random(100));
If FindBitMapTolerancein(Cosmic, X, Y, MSX1, MSY1, MSX2, MSY2, 25) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(400 + Random(100));
Begin
If FindBitMapTolerancein(Astral, X, Y, MSX1, MSY1, MSX2, MSY2, 25) Then
Begin
MMouse(X,Y,7,7);
ClickMouse2(True);
Wait(400 + Random(100));
End;
End;
CloseBank;
Wait(1200 + Random(50));
GameTab(Tab_Magic);
If FindDTM(NpcSpell, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
MMouse(x,y,4,4);
ClickMouse2(True);
GameTab(Tab_Inv);
Wait(95 + Random(35));
MMouse(487, 219, 0, 0);
ClickMouse2(True);
Wait(175 + Random(75));
If FindDTM(DarkMage, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
MMouse(x,y,5,5);
ClickMouse2(True);
Wait(6000 + Random(250));
Begin
Repeat
wait(100);
Until(FindNPCChatText('ello',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('break',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('agic',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('byss',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('needed',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('hat',Nothing));
MouseBox(233,463,288,471,1);
Repeat
wait(100);
Until(FindNPCChatText('pouches',ClickLeft));
Repeat
wait(100);
Until(FindNPCChatText('grading',Nothing));
MouseBox(233,463,288,471,1);
wait(1500);
If FindNPCChatText('leave',Nothing) Then
Begin
GameTab(tab_Inv);
OpenBankChestEdge(SRL_BANK_CW);
Repeat
wait(100);
Until(BankScreen);
End;
End;
End;
End;
End;
End;
End;
{*********************************************
Function FillPouch: Boolean;
By: GOOGLE
Description: Handles Filling The Pouches
If It Finds the Giant Degrade It Will Then
Do NpcRepair.
**********************************************}
Function FillPouch: Boolean;
Begin
If UsePouches =('Yes') then
Begin
If GiantDecay Then
Begin
NpcContact;
WEssence;
End else
Begin
MouseSpeed := 30;
WEssence;
Wait(200 + Random(200));
End;
If FindDTM(Giant,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
Wait(100 + Random(50));
WEssence;
End Else
Wait(200 + Random(40));
If FindDTM(Large,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
End;
If FindDTM(Medium,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
End;
If FindDTM(Small,x,y,MIX1,MIY1,MIX2,MIY2)then
Begin
HumanMMouse(X, Y, 7, 7);
ClickMouse2(False);
ChooseOption('Fill');
MouseSpeed := 22;
End;
Begin
End;
WEssence;
If UsePouches = ('No') Then
WEssence;
End;
MouseSpeed := 22;
End;
{*********************************************
Procedure HandleBanking;
By: GOOGLE
Description: Handles All Banking.
**********************************************}
Procedure HandleBanking;
Begin
If (BankScreen) or (PinScreen) Then
Begin
If (PinScreen) Then
Repeat
InPin(Players[0].Pin);
Until (BankScreen);
If (Bankscreen) Then
Begin
Depositnat;
Wait(350 + Random(220));
WithdrawRing();
Wait(350 + Random(220));
WithdrawSupps;
FillPouch;
End;
End;
End;
{*********************************************
Procedure SetupInvetory;
By: GOOGLE
Description: Just A Feat I Added That Will
Withdraw Pouches Out Of The Bank And Set Them
Up In Invetory.
**********************************************}
Procedure SetupInvetory;
Begin
If UseSetup =('Yes') Then
Begin
OpenB;
End;
If FindDTM(Giant, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Large, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Medium, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(1500 + Random(200));
End;
If FindDTM(Small, X, Y, MSX1, MSY1, MSX2, MSY2) Then
Begin
HumanMMouse(X, Y, 7, 7);
Wait(200 + Random(150));
ClickMouse2(True);
Wait(700 + Random(200));
End;
If FindDTM(Large, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(579, 269, 581, 268);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(100 + Random(300));
ReleaseMouse(579, 269, Mouse_Left);
End;
If FindDTM(Medium, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(578, 304, 578, 304);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(100 + Random(300));
ReleaseMouse(579, 303, Mouse_Left);
End;
If FindDTM(Small, X, Y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Wait(600 + Random(200));
MMouse(X, Y, 7, 7);
Wait(150 + Random(50));
HoldMouse(X, Y, Mouse_Left);
Wait(400 + Random(320));
MMouse(579, 339, 579, 341);
Wait(600 + Random(150));
GetMousePos(EndX, EndY);
Wait(400 + Random(300));
ReleaseMouse(579, 339, Mouse_Left);
Wait(400 + Random(200));
End;
End;
Begin
Smart_Server := 18;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
ClearDebug;
SetupSRL;
CallThangs;
Addonterminate('FreeThangs')
DeclarePlayers;
LoginPlayer;
SetAngle(SRL_ANGLE_HIGH);
FindNormalRandoms;
Repeat
ProgressReport;
OpenB;
HandleBanking;
TeleportAltar;
ToObelisk;
WalkAltar;
EnterClickAltar;
DoNats;
Inc(Runs);
IncEx(RuneCount, CountNatures);
Until(Not (Loggedin));
FreeThangs;
Terminatescript();
End.