SRL Archive - First Scripts

Advanced Barbarian Agility


anyhow

2012-01-03 04:25:53

I've wrote this long time ago…but I haven't published it because there're lots of parties last week:D

now…have it a try

A hat tip to [Nathan] for his skeleton of this script!!!(Some functions is copied from his Ape Atoll Agility script and his drawings too lol)

[Nathan], I can remove the script if it's not okay for you:duh:

No food eating and antiban atm, so use it carefully!

Basic Setup
———————————–
SERVER = ; //Replace with desired server number (key in the server number, without apostrophes)
Username = ''; (Your username, put it between the apostrophes)
Password = ''; (Your password, put it between the apostrophes)
Nickname = ''; (put 3-4 letters of your character name in it, between the apostrophes)
ar = 0; //AntiRandom switch (0 = off, 1 = on)

(the following are used by me for debugging, feel free to turn it on if you want:))
mmdebug = 0; //mmBlack function debug switch (0 = off, 1 = on)
debugwfloor = 0; //Wfloor function debug switch (0 = off, 10~14 = on)

owner5

2012-01-03 04:46:42

syntax error on line 17. =S

anyhow

2012-01-03 06:15:25

From: owner5
syntax error on line 17. =S

you have to key in the server number, without apostrophes

LemonHaze

2012-01-03 10:15:53

It works, but it only does 30k exp/hr
and it checks agility exp waaaaay to much.
The antiban and the speed are the things you have to work on :)
Thx a lot for the script, cause this is the only advanced agility script that does work for me.

Failed4life

2012-01-31 21:01:20

Here is a revised version, i made the script faster. Please do not use Spottier Cape because its color is the same as one of the colors used in the script. Other items that interfere with the script are the Gorilla Mask and the Agile Legs. (These 2 items dont really matter if u have on or not but i highly advise u dont use the Spottier Cape.)

Also the paint doesnt work. I cannot remove it tho because i dont have the rights to do that

program AdvanceBarbarianAgility;
{$DEFINE SMART}
{$i srl/srl.scar}
{$i sps/sps.simba}
{$I SRL/SRL/misc/paintsmart.scar}

// Author: Anyhow
// Version: 1.0 Beta
// Runs Advance Barbarian Agility Course
// Does not eat currently so only run if your are 93+ agility
// No antiban and no breaks yet, be cautious
// A hattip to [Nathan] for his skeleton of this script


//SETUP
const
SERVER = 86; //Replace with desired server number
Username = '';
Password = '';
Nickname = '';
ar = 0; //AntiRandom switch (0 = off, 1 = on)
mmdebug = 0; //mmBlack function debug switch (0 = off, 1 = on)
debugwfloor = 0; //Wfloor function debug switch (0 = off, 10~14 = on)

//Vars
var x,y:LongInt;
var startingExp,currentExp,laps:Integer;
var gainedExp:Extended;
var myPos: TPoint;
var reRunUpWall: Boolean;

function MSToHour(mstime :Extended): Extended;
begin
result := mstime/3600000;
end;
procedure AntiRandoms;
begin
if ((not LoggedIn) or (ar = 0)) then Exit;
FindNormalRandoms; // find random events
end;

function mmBlack:Boolean;
var blackSpot : array [0..7] of TPoint;
var color : array [0..7] of Integer;
var i,kk,res:Integer;
begin

result:= false;
blackSpot[0]:= Point(587,43);
blackSpot[1]:= Point(575,112);
blackSpot[2]:= Point(577,115);
blackSpot[3]:= Point(672,122);
blackSpot[4]:= Point(627,139);
blackSpot[5]:= Point(611,134);
blackSpot[6]:= Point(622,152);
blackSpot[7]:= Point(622,152);

color[0]:= 512;
color[1]:= 393990;
color[2]:= 198400;
color[3]:= 65537;
color[4]:= 131072;
color[5]:= 1797;
color[6]:= 459782;
color[7]:= 328705;

res := 0;
for i := 0 to 7 do
begin
for kk := 0 to 7 do
begin
if(FindColorTolerance(x,y,color[kk],blackSpot[i].x,blackSpot[i].y,blackSpot[i].x,blackSpot[i].y,7)) then
begin
res := res + 1;
//debug
if mmdebug = 1 then
writeln('i = ' + inttostr(i) + ' kk = ' + inttostr(kk));
end;
end;
end;

if(res > 7) then
result:= true;
end;

function Wfloor:Integer;


begin
result:= 99;

if((FindColorTolerance(x,y,2247007,633,56,633,56,15) or
FindColorTolerance(x,y,2247007,629,52,629,52,15) or
FindColorTolerance(x,y,2247007,628,60,628,60,15) or
FindColorTolerance(x,y,2247007,634,51,634,51,15) or
FindColorTolerance(x,y,2247007,633,60,633,60,15) or
FindColorTolerance(x,y,2247007,629,49,629,49,15)) and
FindColorTolerance(x,y,395009,634,84,634,84,15) and
(mmblack())) then
result:= 10;

if((FindColorTolerance(x,y,1655633,615,84,615,84,15) or
FindColorTolerance(x,y,1521998,621,57,621,57,15)) and
(mmblack())) then
result:= 11;

if((FindColorTolerance(x,y,1853268,630,113,630,113,15) or
FindColorTolerance(x,y,1853268,636,116,636,116,15)) and (mmblack())) then
result:= 12;

if(FindColorTolerance(x,y,4873321,530,184,530,184,15) and (mmblack())) then
result:= 13;

if((FindColorTolerance(x,y,2180188,621,113,621,113,15) or
FindColorTolerance(x,y,2180188,625,114,625,114,15) or
FindColorTolerance(x,y,2180188,627,112,627,112,15) or
FindColorTolerance(x,y,2180188,622,113,622,113,15)) and
FindColorTolerance(x,y,393218,643,114,643,114,15) and
FindColorTolerance(x,y,393218,632,114,632,114,15) and
not(FindColorTolerance(x,y,4873321,530,184,530,184,15))and
(mmblack())) then
result:= 14;

//Debug
if debugwfloor = 10 then
begin
writeln('Debug Start');
writeln(FindColorTolerance(x,y,2247007,633,56,633,56,15));
writeln(FindColorTolerance(x,y,2247007,629,52,629,52,15));
writeln(FindColorTolerance(x,y,2247007,628,60,628,60,15));
writeln(FindColorTolerance(x,y,2247007,634,51,634,51,15));
writeln(FindColorTolerance(x,y,2247007,633,60,633,60,15));
writeln('Debug End');
end;
if debugwfloor = 14 then
begin
writeln('Debug Start');
writeln(FindColorTolerance(x,y,2180188,621,113,621,113,15));
writeln(FindColorTolerance(x,y,2180188,625,114,625,114,15));
writeln(FindColorTolerance(x,y,2180188,627,112,627,112,15));
writeln(FindColorTolerance(x,y,393218,643,114,643,114,15));
writeln(FindColorTolerance(x,y,393218,632,114,632,114,15));
writeln(FindColorTolerance(x,y,4873321,530,184,530,184,15));
writeln('Debug End');
end;

end;

Procedure sleepWhileMMBlack();
var t:Integer;

begin
t := 0;
while((mmBlack) and (t < 25)) do
begin
sleep(250+random(5))
t:=t+1;
writeln('SLeeping while mm is blacked');
end;
end;

function distanceTo(var point:TPoint): Extended;
var myLoc:TPoint;
begin
myLoc:= SPS_GetMyPos();
Result:= Sqrt((Sqr((Abs((point.x - myLoc.x)))) + Sqr((Abs((point.y - myLoc.y))))))
end;


procedure FreeAll;
begin
ClearRSCanvas(SMART_Canvas.canvas);
//SMART_FreeDebug; <- contains a bug, don't use this.
writeln('free');
end;

procedure Paint;
begin

SMART_DrawBox(IntToBox(5,35,350,160));
SMART_DrawTextEx(False,80,40,'UpChars','Advance Barbarian Agility By: [Anyhow]', clBlue);
SMART_DrawTextEx(False,10,60,'UpChars','Time running: ' + TimeRunning, clBlue);
SMART_DrawTextEx(False,10,80,'UpChars','Laps run: ' + inttostr(laps), clBlue);
SMART_DrawTextEx(False,10,100,'UpChars','Experience gained: ' + inttostr( (currentExp-startingExp) ), clBlue);
SMART_DrawTextEx(False,10,120,'UpChars','Current Experience: ' + inttostr(currentExp), clBlue);
SMART_DrawTextEx(False,10,140,'UpChars','XP/hr: ' + inttostr(Round(gainedExp/MSToHour(gettimerunning))), clBlue);

end;

function checkAgility:Integer;
begin
currentExp:=GetXP(SKILL_AGILITY);

if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);
if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);
if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);
if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);
if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);
if(currentExp=-1) then
currentExp:=GetXP(SKILL_AGILITY);

result:=currentExp;

end;



//Rewrite of FindObjEx to try a max of 12 times before giving up
//Useful in case we move and script doesn't detect it
function FindObjEx2(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray;
Tol, Step, xs, ys, xe, ye: Integer): Boolean;
var
CurX, CurY, a, b, c, i, zzz: Integer;
Start: Boolean;
begin
for b := 0 to (GetArrayLength(Color)-1) do
begin
if (FindColorSpiralTolerance(cx, cy, color[b], xs, ys, xe, ye, Tol)) then
begin
zzz:= zzz+1;
Start := True;
Break;
end;
end;
if (Start) then
begin
CurX := Round((xs + xe) div 2);
CurY := Round((ys + ye) div 2) - Step;
i := 1;
repeat
for c := 1 to i do
begin
case a of
0: begin //To allow for beginning offset and loop
a := a + 1;
i := 0;
CurY := CurY + Step;
end;
1: CurX := CurX + Step;
2: CurY := CurY - Step;
3: CurX := CurX - Step;
4: CurY := CurY + Step;
end;
if (CurX >= xs) and (CurX <= xe) and (CurY >= ys) and (CurY <= ye) then
begin
try
for b := 0 to (GetArrayLength(Color)-1) do
begin
if (FindColorTolerance(cx, cy, Color[b], CurX-(Step div 2), CurY-(Step div 2), CurX+(Step div 2), CurY+(Step div 2), Tol)) then
begin
MMouse(cx, cy, 3, 3);
zzz:= zzz+1;
writeln('zzz:');
writeln(zzz);
If (WaitUptextMulti(Text, 300)) then
begin
GetMousePos(cx, cy);
Result := True;
Exit;
end;
end;
end;
except
end;
end;
end;
a := a + 1;
if a mod 5 = 0 then a := 1;
if (a = 1) or (a = 3) then i := i + 1;
until (zzz > 12) or (Result) or ((CurX > xe) and (CurY > ye))
end;
end;

procedure sleepWhileMoving();
var t:Integer;

begin
t := 0;
while((IsMoving) and (t < 12)) do
begin
sleep(250+random(5))
writeln('Sleeping while moving');
t:=t+1;
end;
end;

function getLocation(): integer;
var myPos, First, Second, Third, Fourth: TPoint;
begin
result := 0;
if (mmblack = true) then
result := Wfloor()
else
begin
First := Point(2045, 2430); //Beginning Point
Second := Point(2045, 2445); //After swinging the rope
Third := Point(2005, 2460); //After log balancing
Fourth := Point(1940, 2415); //Before running up the wall

myPos := SPS_GetMyPos();

if ((distanceTo(First) <= 5) and (myPos.y < 2435)) then
begin
result:=1;
end;
if (distanceTo(Second) <= 5) then
begin
result:=2;
end;

if (distanceTo(Third) <= 15) then
begin
reRunUpWall := True;
result:=3;
end;

if (reRunUpWall = True) then
result:=3;

if (myPos = Fourth) then
begin
result:=4;
end;


end;
end;
procedure handleObstacle(spot: integer);

begin
writeln(spot);
if (spot = 0) then
begin
AntiRandoms;
writeln('Walk to beginning Point(2045, 2430)');
SPS_WalkToPos(Point(2045, 2430));
sleepWhileMoving();
end;

if (spot = 1) then
begin
writeln('Swing on rope');
if FindObjEx2(x, y, ['wing', 'on'], [861482], 5, 50, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 3, 3, True);
sleep(2200+random(175));
sleepWhileMoving();
end;
end;

if (spot = 2) then
begin
writeln('Walk across log balance');
if FindObjEx2(x, y, ['walk', 'cross'], [7830921], 5, 50, MSX1, MSY1, MSX2, MSY2) then
begin
MMouse(x,y,5,5);
Mouse(x, y, 3, 3, True);
sleep(1900+random(150));
sleepWhileMoving();
end;
end;

if (spot = 3) then
begin
writeln('Run up wall');
SPS_WalkToPos(Point(1996, 2478));
writeln(SPS_GetMyPos());
if FindObjEx(x, y, ['Run'], [4349815], 5, 30, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 3, 3, True);
sleep(6400+random(150));
sleepWhileMoving();
end;
end;

if (spot = 10) then
begin
if (reRunUpwall = True) then
reRunUpwall := False;
AntiRandoms;
writeln('Climb up wall');
if FindObjEx(x, y, ['limb', 'up'], [3624802], 5, 40, 174, 78, 253, 247) then
begin
Mouse(x, y, 0, 0, True);
sleep(3300+random(150));
sleepWhileMoving();
end;
end;

if (spot = 11) then
begin
writeln('Fire Spring Device');
if FindObjEx(x, y, ['ire'], [7713234,7317446], 5, 40, 105, 110, 361, 272) then
begin
Mouse(x, y, 0, 0, True);
sleep(4300+random(150));
sleepWhileMoving();
end;
end;

if (spot = 12) then
begin
writeln('Cross Balance Beam');
if FindObjEx(x, y, ['ross'], [6580073, 5329748], 5, 30, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 0, 0, True);
sleep(2000+random(150));
sleepWhileMoving();
end;
end;
if (spot = 13) then
begin
writeln('Jump over gap');
if FindObjEx(x, y, ['ump'], [3691876], 5, 40, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 0, 0, True);
sleep(2000+random(150));
sleepWhileMoving();
end;
end;

if (spot = 14) then
begin
AntiRandoms;
writeln('Slide down roof');
if FindObjEx(x, y, ['lide', 'own'], [4674652], 5, 30, 276, 105, 373, 250) then
begin
Mouse(x, y, 0, 0, True);
sleep(1800+random(150));
if(Random(100) > 0) then
begin
checkAgility;
writeln('Current Exp : ' + inttostr(currentExp));
end;
sleepWhileMoving();
laps:=laps+1;
end;
end;

end;



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

Players[0].Name := Username;
Players[0].Pass := Password;
Players[0].Nick := Nickname;
Players[0].Active := True;

end;

procedure LogMeIn;
begin
LoginPlayerToLob;
OpenWorldScreen;
SelectWorld(SERVER);
LoginPlayer;
end;
begin

Smart_Server := SERVER;
Smart_Members := True;

//Setup
SetupSRL;
DeclarePlayers;
SPS_Setup(RUNESCAPE_SURFACE, ['4_5','4_6']);
AddOnTerminate('FreeAll');
if not(LoggedIn) then
LogMeIn;
while not(LoggedIn) do
sleep(1000);
startingExp:= checkAgility();
Writeln('Starting exp: ' + inttostr(startingExp));
ClickNorth(True);
while(true) do //Main loop
begin
while not(LoggedIn) do
LoginPlayer;
handleObstacle(getLocation());
gainedExp:= (currentExp-startingExp);
Paint;
myPos := SPS_GetMyPos();
writeln(Wfloor());
writeln(myPos);
writeln(mmBlack);
end;

end.

farmer jack

2012-02-01 03:47:12

add some antiban and itll be a good script bro.. its the easy part afterall :)

Failed4life

2012-02-01 07:03:28

Idk how to do antiban :/ but it kinda has some already, it hovers over the agility skillguide button when finishing the course

farmer jack

2012-02-01 08:18:43

Head over to the tutorials section, its a simple as making an aatiban procedure, usually using the case statement and making it so when the procedure is called theres a slight chane it will do one of the antiban movements.. its seriously easy, have alook and if you need further help pm me

imscaredtolosemymain

2012-02-01 10:55:02

i am running this at the moment, and looking over the script trying to add summer pie support for below 90 agility.

the 'checkagility' function - what is this? i see what it does in game but what is it as i cant find the command documentation. is it some form of plug in or something already in simba?

SOrry for very nooby question, but jsut trying to learn by pulling scripts apart line be line.

Failed4life

2012-02-01 15:34:50

i added antiban and removed the paint, but idk how to make a progress report >.< farmer jack if u could help me out on that part ill post the newer version of the script asap :)

I also changed a few colors to minimize missclicks

Hoppers

2012-02-01 19:45:01

I try to run the script but I get the message

Exception in Script: Unable to find file 'srl/srl.scar' used from ''


What should I do to fix this problem?