Script 1
program HyperFletch;
{$DEFINE SMART}
{$i srl-6/srl.simba}
{$i sps/lib/sps-rs3.simba}
{$i srl-6/lib/misc/srlplayerform.simba}
var
i, x, y, S, C, TO_CUT, logsC, bowsS,
logsPH, bowsPH : integer;
prodScreenT, progScreenT, bankScreenT, tscrt, findBT : TTimeMarker;
TPA : TPointArray;
ATPA : T2DPointArray;
procedure initPlayerForm();
begin
with playerForm do
begin
name := 'HyperFletch';
scriptHelpThread := ' ';
editBoxLabels := ['Number to cut/string', 'QuickKey'];
editBoxDefaults := ['1000', '2'];
comboBoxLabels := ['Action', 'Location', 'Length'];
comboBoxDefaults := ['Cut', 'VarrockWest', 'Long'];
setLength(comboBoxItems, length(comboBoxLabels));
comboBoxItems[0] := ['Cut', 'String'];
comboBoxItems[1] := ['Lumbridge', 'ShantayPass', 'VarrockWest', 'VarrockEast'];
comboBoxItems[2] := ['Long', 'Short'];
end;
end;
procedure declarePlayers();
begin
players.setup(playerForm.players);
currentPlayer := 0;
for i := 0 to high(players) do
with players[i] do
begin
TO_CUT := strToInt(playerForm.players[i].settings[0]); //number to cut
strings[0] := playerForm.players[i].settings[1]; //quickkey
strings[1] := playerForm.players[i].settings[2]; //action
strings[2] := playerForm.players[i].settings[3]; //location
strings[3] := playerForm.players[i].settings[4]; //length
end;
end;
procedure antiban();
begin
case random(100) of
1..10 : hoverSkill(SKILL_FLETCHING);
11 : wait(randomRange(2000, 3500));
25..45 : mouseOffClient(OFF_CLIENT_RANDOM);
41 : pickUpMouse();
99 : wait(randomRange(3000, 4500));
end;
end;
//Chooses product based on user specification
procedure whatLength();
begin
if not isLoggedIn() then
exit();
case (players[currentPlayer].strings[3]) of
'Long' :begin
if toolScreen.isOpen then toolScreen.select('Knife');
prodScreenT.start();
repeat
if productionScreen.isOpen() then productionScreen.selectBox(4);
if productionScreen._getSelectedBox(4) then
productionScreen.clickStart();
until (progressScreen.isOpen) or (prodScreenT.getTime() > 70000);
inc(C);
end;
'Short' :begin
if toolScreen.isOpen then toolScreen.select('Knife');
prodScreenT.start();
repeat
if productionScreen.isOpen() then productionScreen.selectBox(2);
if productionScreen._getSelectedBox(2) then
productionScreen.clickStart();
until (progressScreen.isOpen) or (prodScreenT.getTime() > 70000);
inc(C);
end;
end;
end;
//Find banker in Varrock west bank and clicks to open
procedure findVarWest();
begin
if not isLoggedIn() then
exit;
if not bankScreen.isOpen then
begin
findColorsSpiralTolerance(x, y, TPA, 4663352, mainScreen.getBounds(), 7, colorSetting(2, 0.33, 1.10));
if length(TPA) < 1 then
exit;
ATPA := TPA.toATPA(20, 20);
ATPA.filterBetween(0, 10);
ATPA.sortFromMidPoint(mainScreen.playerPoint);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['ank', 'anker'], 1000) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
end;
end;
//Find banker in Varrock east bank and clicks to open
procedure findVarEast();
begin
if not isLoggedIn() then
exit;
if not bankScreen.isOpen then
begin
findColorsSpiralTolerance(x, y, TPA, 5057346, mainScreen.getBounds(), 10, colorSetting(2, 0.45, 0.72));
if length(TPA) < 1 then
exit;
ATPA := TPA.toATPA(20, 20);
ATPA.filterBetween(0, 10);
ATPA.sortFromMidPoint(mainScreen.playerPoint);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['ank', 'anker'], 1000) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
end;
end;
//Finds Shantay chest
procedure findShanChest();
begin
if not isLoggedIn() then
exit;
if not bankScreen.isOpen then
begin
findColorsSpiralTolerance(x, y, TPA, 3876917, mainScreen.getBounds(), 3, colorSetting(2, 0.41, 1.06));
if length(TPA) < 1 then
exit;
ATPA := TPA.toATPA(20, 40);
ATPA.filterBetween(0, 10);
ATPA.sortFromMidPoint(mainScreen.playerPoint);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['hest', 'pen'], 1000) then
begin
fastClick(MOUSE_LEFT);
break();
end;
end;
end;
end;
//Opens the bank/chest and withdraws items
procedure openBanker();
begin
if not isLoggedIn() then
exit;
case (players[currentPlayer].strings[2]) of
'Lumbridge' :begin
if not bankScreen.isOpen() then
bankScreenT.start();
repeat
bankScreen.Open(BANK_CHEST_LUMBRIDGE);
wait(randomRange(100, 300));
until (bankScreen.isOpen) or (findBT.getTime > 10000);
if bankScreen.isOpen then
wait(randomRange(100, 300));
bankScreenT.start();
repeat
bankScreen.clickButton(3);
until (not bankScreen.isOpen()) or (bankScreenT.getTime > 30000);
if (not tabBackpack.isFull()) then
begin
wait(random(500));
if(not tabBackpack.isFull()) then
begin
terminateScript();
end;
end;
end;
'ShantayPass' :begin
findBT.start();
repeat
findShanChest();
wait(randomRange(100, 300));
until (bankScreen.isOpen) or (findBT.getTime > 10000);
if bankScreen.isOpen then
wait(randomRange(100, 300));
bankScreenT.start();
repeat
bankScreen.clickButton(3);
until (not bankScreen.isOpen()) or (bankScreenT.getTime > 30000);
if (not tabBackpack.isFull()) then
begin
wait(random(500));
if(not tabBackpack.isFull()) then
begin
terminateScript();
end;
end;
end;
'VarrockWest' :begin
if not bankScreen.isOpen() then
bankScreenT.start();
repeat
findVarWest();
wait(randomRange(100, 300));
until (bankScreen.isOpen) or (findBT.getTime > 10000);
if bankScreen.isOpen then
wait(randomRange(100, 300));
bankScreenT.start();
repeat
bankScreen.clickButton(3);
until (not bankScreen.isOpen()) or (bankScreenT.getTime > 30000);
if (not tabBackpack.isFull()) then
begin
wait(random(500));
if(not tabBackpack.isFull()) then
begin
terminateScript();
end;
end;
end;
'VarrockEast' :begin
if not bankScreen.isOpen() then
bankScreenT.start();
repeat
findVarEast();
wait(randomRange(100, 300));
until (bankScreen.isOpen) or (findBT.getTime > 10000);
if bankScreen.isOpen then
wait(randomRange(100, 300));
bankScreenT.start();
repeat
bankScreen.clickButton(3);
until (not bankScreen.isOpen()) or (bankScreenT.getTime > 30000);
if (not tabBackpack.isFull()) then
begin
wait(random(500));
if(not tabBackpack.isFull()) then
begin
terminateScript();
end;
end;
end;
end;
end;
//Calls tool/production screen and starts
procedure fletchNow();
begin
if not isLoggedIn() then
exit();
case (players[currentPlayer].strings[1]) of
'Cut' :begin
tscrT.start();
repeat
sendKeys(Players[CurrentPlayer].Strings[0], 30 + Random(30), 30 + Random(30));
wait(200 + random(150));
until (toolScreen.isOpen) or (productionScreen.isOpen) or (tscrT.getTime > 10000);
if toolScreen.isOpen then toolScreen.select('Knife');
whatLength();
end;
'String' :begin
tscrT.start();
repeat
sendKeys(Players[CurrentPlayer].Strings[0], 30 + Random(30), 30 + Random(30));
wait(200 + random(150));
until (productionScreen.isOpen) or (tscrT.getTime > 10000);
if productionScreen.isOpen then
prodScreenT.start();
repeat
productionScreen.clickStart()
until (progressScreen.isOpen) or (prodScreenT.getTime > 10000);
inc(S);
end;
end;
end;
procedure areWeProg();
begin
if not isLoggedIn() then
exit();
if progressScreen.isOpen() then
progScreenT.start();
repeat
wait(randomRange(1000, 1999));
antiban();
until (not progressScreen.isOpen() or (progScreenT.getTime() > 70000));
if not progressScreen.isOpen() then
wait(200 + random(200));
end;
procedure progressReport();
begin
if not isLoggedIn() then
exit;
logsC := C * 28;
bowsS := S * 14;
logsPH := round((logsC * 60) / (getTimeRunning() / 60000));
bowsPH := round((bowsS * 60) / (getTimeRunning() / 60000));
clearDebug();
writeln('#########################################');
writeln('##############HyperFletch################');
writeln('Time Running: ' + timeRunning());
writeln('Bows Strung: ' + intToStr(bowsS) + ' p/h: ' + intToStr(bowsPH));
writeln('Logs Cut: ' + intToStr(logsC) + ' p/h: ' + intToStr(logsPH));
end;
begin
clearDebug();
smartShowConsole := false;
disableSRLDebug := true;
initPlayerForm();
runPlayerForm();
if not playerForm.isScriptReady then
exit();
declarePlayers();
setupSRL();
if not isLoggedIn() then
begin
players[currentPlayer].login();
exitTreasure();
minimap.clickCompass();
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
repeat
openBanker();
fletchNow();
areWeProg();
progressReport();
until (not isLoggedIn()) or (TO_CUT = (S * 14)) or (TO_CUT = (C * 28));
writeln('We are done, logging out');
players[currentPlayer].logout();
end.
Script 2
program HyperBar_n_Baller;
{$DEFINE SMART}
{$i srl-6/srl.simba}
{$i sps/lib/sps-rs3.simba}
{$i srl-6/lib/misc/srlplayerform.simba}
{ ______________________________________
|\ \
| \ \
| \ \
| #######################################
| # This is made for lumbridge #
| # Setup preset 1 with; #
| # 9 iron, 18 coal #
\ # Profit is based on buying the ore #
\ # XP is rounded #
\#######################################
}
var
Runs, x, y, i, BARS_TO_DO, PRICE_OF_COAL, PRICE_OF_IRON,
PRICE_OF_CBALL, barsSmelted, ballsMade,
ballP, ironP, coalP, xpGained, xpPerHour, profitMade, profitPerHour : integer;
makeB, openB, openF, makeC : TTimeMarker;
pathToFurnace, pathToChest, TPA : TPointArray;
ATPA: T2DPointArray;
Lumbridge: TSPSArea;
procedure initPlayerForm();
begin
with playerForm do
begin
name := 'HyperBar''n''Baller';
scriptHelpThread := '';
editBoxLabels := ['Bars to do', 'Price of coal', 'Price of iron', 'Price of cball'];
editBoxDefaults := ['1000', '373', '220', '335'];
end;
end;
procedure declarePlayers();
begin
players.setup(playerForm.players);
currentPlayer := 0;
with players[0] do
begin
BARS_TO_DO := strToInt(playerForm.players[0].settings[0]);
PRICE_OF_COAL := strToInt(playerForm.players[0].settings[1]);
PRICE_OF_IRON := strToInt(playerForm.players[0].settings[2]);
PRICE_OF_CBALL := strToInt(playerForm.players[0].settings[3]);
end;
end;
procedure antiban();
begin
case random(100) of
1 : hoverSkill(SKILL_SMITHING);
11 : wait(randomRange(2000, 3500));
25 : mouseOffClient(OFF_CLIENT_RANDOM);
41 : pickUpMouse();
60 : boredHuman();
99 : wait(randomRange(5000, 7500));
end;
end;
procedure findFurnace();
begin
if not isLoggedIn() then
exit;
findColorsSpiralTolerance(x, y, TPA, 5269873, mainScreen.getBounds(), 5, colorSetting(2, 0.28, 0.67));
if length(TPA) < 1 then
exit;
ATPA := TPA.toATPA(20, 20);
ATPA.filterBetween(0, 10);
ATPA.sortFromMidPoint(mainScreen.playerPoint);
for i := 0 to high(ATPA) do
begin
mouse(middleTPA(ATPA[i]), MOUSE_MOVE);
if isMouseOverText(['urnace', 'nace'], 1000) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
end;
procedure walkToAndUse(toDo: string);
begin
if not isLoggedIn() then
exit();
case toDo of
'bank' :begin
pathToChest := [Point(200, 146), Point(144, 132)];
if Lumbridge.walkPath(pathToChest) then
minimap.waitPlayerMoving();
wait(randomRange(250, 500));
openB.start();
repeat
bankScreen.Open(BANK_CHEST_LUMBRIDGE);
wait(randomRange(500, 800));
if bankScreen.isOpen() then
bankScreen.clickButton(BANK_BUTTON_PRESET_1);
wait(randomRange(500, 800));
until (tabBackpack.isFull()) or (openB.getTime() > 30000);
end;
'furnace' :begin
pathToFurnace := [Point(143, 132), Point(200, 144)];
Lumbridge.walkPath(pathToFurnace);
if Lumbridge.walkPath(pathToFurnace) then
minimap.waitPlayerMoving();
wait(randomRange(250, 500));
findFurnace();
wait(randomRange(500, 800));
if productionScreen.isOpen(5000) then
productionScreen.selectBox(5);
wait(randomRange(300, 500));
productionScreen.clickStart();
wait(randomRange(1500, 2750));
if progressScreen.isOpen() then
makeB.start();
repeat
wait(randomRange(1000, 2500));
antiban();
until (not progressScreen.isOpen()) or (makeB.getTime() > 120000);
if not progressScreen.isOpen() then
findFurnace();
if productionScreen.isOpen(5000) then
productionScreen.clickStart();
wait(randomRange(1500, 2750));
if progressScreen.isOpen() then
makeC.start();
repeat
wait(randomRange(3000, 5500));
antiban();
until (not progressScreen.isOpen()) or (makeC.getTime() > 120000);
end;
end;
end;
procedure progressReport();
begin
barsSmelted := Runs * 9;
ballsMade := Runs * 36;
ballP := ballsMade * PRICE_OF_CBALL;
ironP := barsSmelted * PRICE_OF_IRON;
coalP := ((barsSmelted * PRICE_OF_COAL) * 2);
xpGained := round((barsSmelted * 17) + ((ballsMade / 4) * 25));
xpPerHour := round((xpGained * 60) / (getTimeRunning() / 60000));;
profitMade := (ballP - (ironP + coalP));
profitPerHour := round((profitMade * 60) / (getTimeRunning() / 60000));
clearDebug();
writeln('#########################################');
writeln('############HyperBar n Ball##############');
writeln('Time running: ' + timeRunning());
writeln('Bars smelted: ' + intToStr(barsSmelted));
writeln('Balls made: ' + intToStr(ballsMade));
writeln('XP Gained: ' + intToStr(xpGained));
writeln('XP Gained p/h: ' + intToStr(xpPerHour));
writeln('Profit Made: ' + intToStr(profitMade));
writeln('Profit Made p/h: ' + intToStr(profitPerHour));
end;
//main loop
begin
clearDebug();
smartShowConsole := false;
disableSRLDebug := True;
initPlayerForm();
runPlayerForm();
if not playerForm.isScriptReady then terminateScript();
declarePlayers();
setupSRL();
Lumbridge.setup('LUMBY_SPS_01', RUNESCAPE_OTHER);
exitTreasure();
if not isLoggedIn() then
players[currentPlayer].login() else
wait(randomRange(3000,5000));
writeln('Just getting ready');
mainScreen.setAngle(MS_ANGLE_HIGH);
minimap.setAngle(MM_DIRECTION_NORTH);
repeat
walkToAndUse('bank');
walkToAndUse('furnace');
inc(Runs);
progressReport();
until (Runs = (BARS_TO_DO / 9)) or (not isLoggedIn());
if Runs = (BARS_TO_DO / 9) then
players[currentPlayer].logout();
end.