any chance someone could make a bot for some of the earlier agility courses. Early game leveling is my most hated form of leveling lol. So if someone could make a bot for gnome basic, and barbarian basic. That would be awesome :)
Printable View
any chance someone could make a bot for some of the earlier agility courses. Early game leveling is my most hated form of leveling lol. So if someone could make a bot for gnome basic, and barbarian basic. That would be awesome :)
There is already a gnome basic. Lemme paste my latest version here.
Simba Code:program Brose_Gnome_Basic_Agility;
{$DEFINE SMART} // comment this line out if you don't want to use SMART
{$i srl-6/srl.simba}
{$I SPS/lib/SPS-RS3.Simba}
////////////// Setup the usual stuff here ////////////////////////
procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := ' ';
password := ' ';
isActive := true;
isMember := true;
world := -1;
end;
currentPlayer := 0;
end;
//This progress report is stolen from Ashaman's Advanced Gnome Agility with minor modifications
const
SCRIPT_VERSION = '1.3'; // updated on 24 Jan 2014
BREAK_TIME = 30;
BREAK_DURATION = 15;
TIME_LIMIT = 120; //in minutes
{//////////// Read Me Please? ////////////////////////
1. Please setup the interface as per the default settings
2. Please set camera type to RS3 - It only works with RS3 at the moment
3. Set minimap north and zoom all the way out before you start the script
4. If you want to be able to track your xp, then please put it at the position
above the chatbox...
5. Position your player 1 square north of the balancing log before you start
6, Please babysit the script when it is running.
//////////////////////////////////////////////////////////////////////////////}
var
BreakTime, lapCount, XP, startingXP, lapsPH, XPH, antibanCount, actAfkCount: integer;
procedure progressReport;
begin
XP := (chatBox.getXPBar - startingXP);
XPH := round(XP * (3600.0 / (getTimeRunning / 1000.0)));
lapsPH := round((lapCount * (3600.0 / (getTimeRunning / 1000.0))));
writeln('|===========================================================|');
writeln('| Brose Basic Gnome Agility v' + padR(toStr(SCRIPT_VERSION), 19), '|');
writeln('|===========================================================|');
writeln(padR('| Running For: ' + timeRunning, 60) + '|');
writeln(padR('| Laps: ' + groupDigits(lapCount, ','), 40) + padR('Laps/H: ' + groupDigits(lapsPH, ','), 20) + '|');
writeln(padR('| Exp Earned: ' + groupDigits(XP, ','), 40) + padR('Exp/Hour: ' + groupDigits(XPH, ','), 20) + '|');
writeln(padR('| Antibans performed: ' + groupDigits(antibanCount, ','), 40) + padR('AFK Count: ' + groupDigits(actafkcount, ','), 20) + '|');
writeln('|___________________________________________________________|');
writeln('|___________________________________________________________|');
end;
/////////////////////////////////////////////////////////////////////////
procedure paintStatus(status: string);
begin
{$IFDEF SMART}
try
smartImage.clear();
smartImage.drawText('Status: ' + status, point(chatbox.x2 - 320, chatbox.y2 - 19), smallChars, false, 255);
except
end;
{$ENDIF}
end;
procedure antiBan();
var
i: integer;
begin
if not isLoggedIn then
exit;
i := random(100);
if i < 9 then
begin
writeln('[ Activating antiban ]');
paintStatus('Activating antiban...');
case i of
0: wait(randomrange(5000,12000));//RandomRClickItem();
1: begin
MouseOffClient(Random(5));
wait(randomrange(3000,7000));
end;
2: PickUpMouse;
3: MouseMovingObject();
4: SleepAndMoveMouse(200 + Random(50));
5: begin
Boredhuman;
wait(randomrange(1000,7000));
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
6: hoverRandomSkill();
7: begin
randomCameraAngle(MS_ANGLE_HIGH);
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
8: begin
tabStats.getSkillLevel(SKILL_AGILITY);
hoverSkill(SKILL_AGILITY);
wait(gaussRangeInt(3000,5000));
end;
end;
inc(antibanCount);
end;
end;
procedure actAFK();
var
i,k : integer;
begin
i:= gaussRangeInt(60000,360000);
k:= round (i/1000)
case Random(100) of
0..1: begin
writeln(padR('[ Acting AFK For: ' + inttostr(k), 1) + 'secs ]');
paintStatus(padR('Going AFK for: ' + inttostr(k), 1) + 'secs...');
wait (i);
inc (actafkCount);
end;
end;
end;
procedure boing();
begin
PlaySound('Includes/sounds/boing.wav');
end;
procedure humanLike();
begin
if random(4) = 2 then
smallRandomMouse();
if random(4) = 2 then
pickUpMouse();
//if random(14)=2 then
//minimap.setAngle(randomRange(-85, 85));
if random(6)=2 then
SleepAndMoveMouse(200 + Random(50));
if random(15)=2 then
mouseOffClient(random(5));
end;
procedure loginPlayer();
begin
players[currentPlayer].login();
wait(randomRange(4000, 6000));
paintStatus('Setting up player');
minimap.clickCompass();
mainScreen.setZoom(TRUE);
mainscreen.setAngle(MS_ANGLE_HIGH);
exitTreasure();
claimTicket();
closePollWindow();
//MiningLevel[currentPlayer] := tabStats.getSkillLevel(SKILL_MINING);
mainScreen.setZoom(true);
end;
(*procedure resetSwitchTimer();
var
ran: Integer;
begin
ran := round((players[currentPlayer].integers[SWITCH_AFTER] * 60000) * 0.2);
SwitchTime := (getSystemTime() + (players[currentPlayer].integers[SWITCH_AFTER] * 60000) + randomRange(-ran, ran));
end; *)
procedure resetBreakTimer();
var
ran: Integer;
begin
ran := round((BREAK_TIME * 60000) * 0.2);
BreakTime := ((getSystemTime() + BREAK_TIME * 60000) + randomRange(-ran, ran));
end;
(*function switchPlayers(active: Boolean): Boolean;
begin
if players.getActive() < 2 then
exit(false);
paintStatus('Switching players');
if players.next(active) then
begin
result := true;
loginPlayer();
resetBreakTimer();
//resetSwitchTimer();
end;
end; *)
function timeUntil(time: Integer): String;
var
H, M, S: Integer;
begin
convertTime((time - getSystemTime()), H, M, S);
result := (toStr(H)+ 'h ' + toStr(M)+ 'm ' + toStr(S)+ 's');
end;
procedure takeBreak();
var
H, M, S, breakFor, timeLeft, ran: Integer;
breakDuration: TTimeMarker;
begin
if (getSystemTime() >= BreakTime) then
begin
//TotalBreakTime[currentPlayer].start();
paintStatus('Taking a break');
if random(2) = 0 then
players[currentPlayer].logout()
else
players[currentPlayer].exitToLobby();
ran := round((BREAK_DURATION * 60000) * 0.2);
breakFor := (BREAK_DURATION * 60000) + randomRange(ran, -ran);
convertTime(breakFor, H, M, S);
writeLn('You are breaking for: ' + toStr(H)+ 'h ' + toStr(M)+ 'm ' + toStr(S)+ 's');
breakDuration.start();
repeat
timeLeft := breakFor - breakDuration.getTime();
convertTime(timeLeft, H, M, S);
writeLn('Ending break in: ' + toStr(H)+ 'h ' + toStr(M)+ 'm ' + toStr(S)+ 's');
wait(25000 + random(4000));
until breakFor < breakDuration.getTime();
//inc(players[currentPlayer].integers[P_TOTAL_BREAKS]);
resetBreakTimer();
//TotalBreakTime[currentPlayer].pause();
loginPlayer();
//rockTimer.reset();
//rockTimer.start();
end;
end;
procedure logBalance();
var
logBalance: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
logBalance := intToBox(280, 216, 299, 241);
Repeat
mouseBox(logBalance, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(logBalance, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['og balance']) or (j>= 30);
if (j>= 30) then
Repeat
writeln('Couldnt find log... I think I am 1 sq North... Failsafe kicking in...');
mouse(290, 257, 5, 5, MOUSE_MOVE);
wait(randomRange(1000, 1500));
inc(j);
until isMouseOverText(['og balance']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the balancing log - Terminating Script');
terminateScript();
end else
begin
case random(8) of
0: begin
mouseBox(logBalance, MOUSE_right);
chooseoption.select(['alk-across']);
end;
1..7: mouseBox(logBalance, MOUSE_LEFT);
end;
end;
writeln('1. Walking across log balance');
paintStatus('1. Walking across log balance');
humanLike();
wait(randomrange(6300,7300));
antiBan();
end;
procedure obstacleNet1();
var
obstacleNet1: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
obstacleNet1 := intToBox(247, 325, 288, 331);
Repeat
mouseBox(obstacleNet1, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(obstacleNet1, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['bstacle']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the obstacle net - Terminating Script');
terminateScript();
end else
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['limb-over']);
end;
1..7: fastClick(mouse_left);
end;
writeln('2. Climbing up the obstacle net');
paintStatus('2. Climbing up the obstacle net');
humanLike();
wait(randomrange(4300,5200));
antiBan();
end;
procedure treeBranch1();
var
treeBranch1: TBox;
x, y, i, j, k, m: integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin;
if not isLoggedIn() then
exit;
mousespeed :=(randomrange(20,40));
treeBranch1 := intToBox(289, 235, 295, 257);
mouseBox(treeBranch1, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(treeBranch1, MOUSE_Move);
end;
if isMouseOverText(['ree branch']) then
begin
writeln('3. Climbing up the tree branch');
paintStatus('3. Climbing up the tree branch');
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['limb']);
end;
1..7: fastClick(mouse_left);
end;
end else
begin;
findColorsSpiralTolerance(x, y, TPA, 3428455, mainScreen.getbounds(), 4, colorSetting(2, 0.06, 0.38));
if length(TPA) < 1 then
exit;
smartImage.clearArea(mainScreen.getBounds());
mouseSpeed := randomRange(20, 40);
ATPA := TPA.toATPA(5, 15);
ATPA.sortFromMidPoint(mainscreen.playerPoint);
smartImage.debugATPA(ATPA);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
wait(randomRange(1000, 2000));
inc(j);
if isMouseOverText(['ree branch']) then
begin
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['limb']);
end;
1..7: fastClick(mouse_left);
end;
writeln('3. Climbing up the tree branch');
paintStatus('3. Climbing up the tree branch');
end;
break;
end;
end;
if (j > 60) then
begin
writeln('Cannot find the damn tree branch - terminating script');
terminateScript();
end;
//Repeat
wait(randomrange(1200,2200));
antiBan();
inc(k);
//until chatbox.findTextOnLines(['climb the', 'platform abov'], [0..2]) or (k > 30);
end;
procedure balancingRopeMethod1();
var
balancingRopeMethod1: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
balancingRopeMethod1 := intToBox(431, 202, 440, 202);
Repeat
mouseBox(balancingRopeMethod1, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(balancingRopeMethod1, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['alancing']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the balancing rope - Terminating Script');
terminateScript();
end else
if isMouseOverText(['alancing']) then
begin
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['alk-on']);
end;
1..7: fastClick(mouse_left);
end;
end;
antiBan();
writeln('4. Walking across balancing rope - Method 1');
paintStatus('4. Walking across balancing rope - Method 1');
humanLike();
wait(randomrange(7500,8500));
antiBan();
end;
procedure balancingRopeMethod2();
var
platform, balancingRopeMethod2: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
platform := intToBox(1521, 218, 1533, 227);
balancingRopeMethod2 := intToBox(1418, 228, 1426, 229);
mouseBox(platform, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(platform, MOUSE_Move);
end;
if isMouseOverText(['trainer']) then
begin
fastclick(Mouse_right);
wait(randomrange(500,800));
chooseoption.select(['alk here']);
end else fastclick(mouse_left);
wait(randomRange(2000,3000));
Repeat
mouseBox(balancingRopeMethod2, MOUSE_Move);
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['alancing']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the balancing rope - Terminating Script');
terminateScript();
end else
if isMouseOverText(['alancing']) then
begin
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['alk-on']);
end;
1..7: fastClick(mouse_left);
end;
end;
antiBan();
writeln('4. Walking across balancing rope - Method 2');
paintStatus('4. Walking across balancing rope - Method 2');
humanLike();
wait(randomrange(7400,8400));
antiBan();
end;
procedure balancingRope();
begin;
case random(6) of
0..5: balancingRopeMethod1();
6: balancingRopeMethod2();
end;
end;
procedure treeBranch2();
var
treeBranch2: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
treeBranch2 := intToBox(420, 187, 421, 212);
Repeat
mouseBox(treeBranch2, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(treeBranch2, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['ree branch']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the tree branch - Terminating Script');
terminateScript();
end else
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['limb-down']);
end;
1..7: fastClick(mouse_left);
end;
writeln('5. Climbing down tree branch');
paintStatus('5. Climbing down tree branch');
humanLike();
wait(randomrange(3000,4000));
antiBan();
end;
procedure obstacleNet2();
var
obstacleNet2: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
minimap.clickCompass();
obstacleNet2 := intToBox(200, 38, 225, 75);
Repeat
mouseBox(obstacleNet2, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(obstacleNet2, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['bstacle']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the obstacle net - Terminating Script');
terminateScript();
end else
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['limb-over']);
end;
1..7: fastClick(mouse_left);
end;
mouseBox(obstacleNet2, MOUSE_LEFT);
writeln('6. Climbing over the obstacle net');
paintStatus('6. Climbing over the obstacle net');
humanLike();
wait(randomrange(6500,7500));
//antiBan();
end;
procedure obstaclePipeLeftMethod1();
var
obstaclePipeLeftMethod1: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
obstaclePipeLeftMethod1 := intToBox(255, 112, 271, 128);
Repeat
mouseBox(obstaclePipeLeftMethod1, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(obstaclePipeLeftMethod1, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['pipe']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the obstacle pipe - Terminating Script');
terminateScript();
end else
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['queeze']);
end;
1..7: fastclick(mouse_left);
end;
writeln('7. Squeezing through obstacle pipe - method 1');
paintStatus('7. Squeezing through obstacle pipe - method 1');
humanLike();
wait(randomrange(7100,8100));
antiBan();
end;
procedure obstaclePipeLeftMethod2();
var
obstaclePipeLeftMethod2: TBox;
j: integer;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
obstaclePipeLeftMethod2 := intToBox(247, 57, 272, 85);
mainScreen.setAngle(MS_ANGLE_HIGH);
Repeat
mouseBox(obstaclePipeLeftMethod2, MOUSE_Move);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(obstaclePipeLeftMethod2, MOUSE_Move);
end;
wait(randomRange(300, 800));
inc(j);
if isMouseOverText(['trainer']) then
wait(5000);
until isMouseOverText(['pipe']) or (j>= 60);
if (j>= 60) then
begin
writeln('Sorry... I cannot find the obstacle pipe - Terminating Script');
terminateScript();
end else
case random(8) of
0: begin
fastClick(mouse_right);
chooseoption.select(['queeze']);
end;
1..7: fastClick(mouse_left);
end;
writeln('7. Squeezing through obstacle pipe - method 2');
paintStatus('7. Squeezing through obstacle pipe - method 2');
humanLike();
wait(randomrange(7100,8100));
antiBan();
end;
procedure obstaclePipe();
begin;
case random(2) of
0: begin
obstaclePipeLeftMethod1();
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
1: obstaclePipeLeftMethod2();
end;
end;
procedure walkToStarting();
var
walkToStarting: TBox;
begin;
if not isLoggedIn then
exit;
mousespeed :=(randomrange(20,40));
walkToStarting := intToBox(3, 220, 13, 233);
mouseBox(walkToStarting, MOUSE_MOVE);
if random(4)=2 then
begin
smallRandomMouse();
mouseBox(walkToStarting, MOUSE_Move);
end;
if isMouseOverText(['trainer', 'impling']) then
begin
fastclick(Mouse_right);
wait(randomrange(500,800));
chooseoption.select(['alk here']);
end else fastclick(mouse_left);
writeln('Lap completed! Walking to the starting point');
paintStatus('Lap completed! Walking to the starting point');
humanLike();
inc(lapCount);
wait(randomrange(5000,6000));
antiBan();
end;
procedure mainloop();
begin
if not isLoggedIn() then
exit;
claimTicket();
logBalance();
obstacleNet1();
treeBranch1();
balancingRope();
treeBranch2();
obstacleNet2();
obstaclePipe();
walkToStarting();
actAFK();
clearDebug();
takeBreak();
progressReport();
end;
begin
clearDebug();
{$IFDEF SMART}
smartEnableDrawing := true;
{$ENDIF}
setupSRL();
declarePlayers(); // Set up your username/pass
if not isLoggedIn() then // If player isn't logged in then
begin
players[currentPlayer].login(); // Log them in
exitTreasure();
claimTicket();
mainScreen.setZoom(true);
minimap.setAngle(MM_DIRECTION_NORTH); // Make compass north and angle high
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
startingXP := chatBox.getXPBar;
disableSRLDebug := true;
clearDebug();
addOnTerminate('boing');
resetBreakTimer();
repeat
mainloop();
Until not isLoggedIn() or ((getTimeRunning() / 60000) > TIME_LIMIT);
if ((getTimeRunning() / 60000) > TIME_LIMIT) then
begin
WriteLn('Time limit reached - terminating script!');
players[currentPlayer].logout();
terminateScript();
end;
terminateScript();
end.
if you want sound notification when the script stops for whatsoever reason, extract the sounds.rar and place the boing.wav in a new folder called sounds in the includes folder.
Disclaimer: As with all scripts... use at your own risk. If you look at the script you will realise it is basically full of tbox click tbox click. It is a pretty crude way of going about things. It works well but.. hmm.. have to exercise some restraint. I have used it for long long hours before.. It would be better if you modify it to your own liking. Stare at it when running it for the first time... if you dont like how the script runs, change it yourself or dont use it. You have been warned.
yeah I actually used your script for my first lot of agility levels :) So thanks a lot for that :)