Wu-Tang Clan
2013-08-20 14:53:03
Ecclesiastes 7:9
"Be not quick in your spirit to become angry, for anger lodges in the heart of fools."
Update on script
So far, I have done a little bit of the script. At the moment it is not functioning but I have received some messages asking if I was even working on it.
It is not ready to be run yet, nor will it even load SMART!
program jdDivOGL;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
//{$I Sps/Sps.Simba}
// Most of this script is either copy and pasted from the include, or closely rendered fromt he include.
// This script would not have been remade if not for the help of Uri (Skype)/ Serajin (SRL)
// Thanks for the motivation from rtrty10
// SRL-6 is a bitch to learn
// Hopefully this script helps a few other people learn some SRL-6 lingo
// JDDivination, by Wu-Tang Clan
const
Which = 'Experience';
// Energy - Convert memories into divine energy
// Experience - Convert memories into divination experience
// Combo - !NOT RECOMMENDED! Combine both energy and memories to get more experience
// When using combo, it is recommended that you use the Energy setting for a while beforehand
Where = 'Digsite';
// Draynor - Level 1-10
// Falador - Level 10-20
// Digsite - Level 20-30
// Seers V - Level 30-40 (Unstable, maps usually do not function properly, Digsite advised)
// Relleka - Level 40-50
// Karamja - Level 50-60
// 50+ please spot me an account
var
rfail, pFail: Integer;
procedure declarePlayers();
begin
players.setup([''], '');
currentPlayer := 0;
end;
{procedure Walk;
//*Contains paths for walking to and from the rift
var
myPath:TPointArray;
begin
case Where of
// I am fully aware that these can be done easier/less code...
'Draynor':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['10_9']);
myPath := [Point(4265, 3739)];
SPS_WalkPath(myPath);
end;
'Falador':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['9_7']);
myPath := [Point(3816, 2986)];
SPS_WalkPath(myPath);
end;
'Digsite':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['12_7']);
myPath := [Point(5016, 3014)];
SPS_WalkPath(myPath);
end;
'Seers V':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['6_7']);
myPath := [Point(2718, 2943)];
SPS_WalkPath(myPath);
end;
'Relleka':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['7_5']);
myPath := [Point(2857, 2197)];
SPS_WalkPath(myPath);
end;
'Karamja':
begin
writeLn('Walking to Rift');
SPS_Setup(RUNESCAPE_SURFACE, ['8_10']);
myPath := [Point(3339, 4388)];
SPS_WalkPath(myPath);
end;
end;
end;}
function isInMotion(): Boolean;
//*If backpack count changes, this will result true
begin
if tabBackpack.waitForShift(5000) then
begin
Result := True;
end;
end;
function isInvFull(): Boolean;
begin
//*Will result true if the inventory is full
// Can be done a number of ways:
{if (tabBackpack.isItemInSlot(28)) then
WriteLn('There is an item in slot 28, must convert for Divination XP.')
Result := True;
if (tabBackpack.count(28)) then
WriteLn('We have a full inventory, time to convert it to XP.');
Result := True;}
if (tabBackpack.isFull) then
WriteLn('Full backpack, attempting to convert for XP.');
Result := True;
end;
function isBackpackUp(): Boolean;
//*Opens up the backpack (DEVELOPMENT ->) and closes any currently open interfaces that aren't backpack
var
p: TPoint;
begin
if not (tabBackpack.isOpen()) then
begin
tabBackpack.Open();
end;
{if (gameTabs.areMultiOpen()) then
begin
if not (gameTabs._findTab(p, TAB_BACKPACK, gameTabs._getActiveTabBox())) then
repeat
gameTabs.findX(p);
mouse(p.rand(3), MOUSE_LEFT);
until (gameTabs.areAnyOpen());
end;}
end;
function isMouseoverTextDiv():Boolean;
//*Returns true if the Mouseover Text for the spring or wisp is found
begin
if (isMouseOverText(['arvest'], 1000)) then
WriteLn('We have found a suitable Divination object to harvest.');
Result := True;
end;
function ConvDialogue(): Boolean;
//*Returns true if "convert" is found in the chatbox while converting Divination objects
var
P: Tpoint;
begin
if findText(p, clWhite, 5, ['onvert'], [UpCharsEx], chatbox.getBounds()) then
writeln('We must be converting or earning XP.');
Result := True;
end;
function Chronicle(): Boolean;
//*Returns true if there is any Chronicle fragment alerts in the inventory
var
P: Tpoint;
begin
if findText(p, clWhite, 5, ['arvest'], [UpCharsEx], chatbox.getBounds()) then
writeln('We must be harvesting memories or energy.');
Result := True;
end;
procedure FindRift;
//*Finds the rift in order to convert memories and energy
var
TPA: Array of TPoint;
ATPA: T2DPointArray;
Box: TBox;
TheCTS, I, X, Y, H : Integer;
P: Tpoint;
begin
Writeln('FindRift;');
begin
theCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.21, 0.47);
FindColorsSpiralTolerance(x,y,TPA,4520078, mainscreen.getBounds(),10);
ATPA := TPAToATPAEx(TPA, 25, 25);
SetColorToleranceSpeed(theCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);
H := High(ATPA);
If Length(ATPA) = 0 Then
begin
writeln('No points found for FindRift;');
Inc(Rfail);
Exit;
end;
For I := 0 To H Do
begin
SortATPASize(ATPA,True);
//SortATPAFrom(ATPA, Point(301,175));
WriteLn('ATPA Length: ' + IntToStr (Length(ATPA)));
MiddleTPAEx(ATPA[I], X, Y);
Mouse(Point(P.x + random(5), P.y + random(8)), mouse_Move, MOUSE_HUMAN);
fastClick(mouse_Right);
if (isMouseOverText(['onvert'], 1000)) then
begin
WriteLn('We have found Rift!');
Wait(1000+random(500));
break;
end;
Wait(1000+Random(500));
end;
//debugatpabounds(atpa);
end;
SetColorToleranceSpeed(theCTS);
SetToleranceSpeed2Modifiers(0.2, 0.2);
end;
procedure FindDivObj;
//*Finds Divination NPC's and harvests from them
var
TPA: Array of TPoint;
ATPA: T2DPointArray;
Box: TBox;
TheCTS, I, X, Y, H : Integer;
P: Tpoint;
begin
Writeln('FindDivObj;');
theCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);
SetToleranceSpeed2Modifiers(0.29, 0.29);
FindColorsSpiralTolerance(x,y,TPA,15899741, mainscreen.getBounds(),10);
ATPA := TPAToATPAEx(TPA, 25, 25);
SetColorToleranceSpeed(theCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);
H := High(ATPA);
If Length(ATPA) = 0 Then
begin
Wait(1500+Random(500));
WriteLn('FindPale = False');
Inc(Pfail);
Exit;
end;
For I := 0 To H Do
begin
//SortATPASize(ATPA,True);
SortATPAFrom(ATPA, Point(301,175));
WriteLn('ATPA Length: ' + IntToStr (Length(ATPA)));
MiddleTPAEx(ATPA[I], X, Y);
Mouse(Point(P.x + random(5), P.y + random(8)), mouse_Move, MOUSE_HUMAN);
fastClick(mouse_Right);
if (isMouseOverText(['arvest'], 1000)) then
begin
WriteLn('We have found a Divination object!');
Wait(5000+random(500));
break;
end;
end;
//debugatpabounds(atpa);
SetColorToleranceSpeed(theCTS);
SetToleranceSpeed2Modifiers(0.2, 0.2);
end;
procedure Convert;
//*Depending on which const you used, this will convert your memories/energy in the UI popup
begin
Writeln('Convert;');
//Walk;
Wait(1500+Random(500));
FindRift;
Wait(3000+Random(700));
if (GetColor(343,142) = 986895) then
begin
case (Which) of
'Energy':
begin
mouseBox(inttobox(175,199,182,205), MOUSE_LEFT);
Wait(1000);
While (ConvDialogue) do Wait(1000+Random(500));
If (tabBackpack.isEmpty) then exit;
end;
'Experience':
begin
mouseBox(inttobox(296,201,301,205), MOUSE_LEFT);
Wait(1000);
While (ConvDialogue) do Wait(1000+Random(500));
if (tabBackpack.isEmpty) then exit;
end;
'Combo':
begin
mouseBox(inttobox(389,212,395,215), MOUSE_LEFT);
Wait(1000);
While (ConvDialogue) do Wait(1000+Random(500));
if (tabBackpack.isEmpty) then Exit;
end;
end;
end;
end;
procedure MainLoop;
//*Contains the procedures and functions written for this script
var
MainScreenBounds : TBox;
begin
MainScreenBounds := mainScreen.GetBounds();
repeat
FindDivObj;
Convert;
until(False);
end;
begin
setupSRL();
MainLoop;
end.

3. Drag the crosshairs from Simba to SMART. This is what the crosshairs look like:
4. Put your mouse on the SMART client and read the numbers on the bottom left of Simba, then put your mouse a few pixels away from the SMART client. If you get negative numbers when you put your mouse away from the client you are doing it right, otherwise try retargetting SMART.