SRL Archive - RS3 Crafting

[RS3]Dragon Leather AIO Crafter


footballjds

2013-12-15 17:21:27

AIO Dragon Leather Crafter

Follow this guide to setup RuneScape for botting

Instructions:
  1. Set the const for bank slot of leather
  2. setup the declarePlayers procedure
  3. start the script logged in at Soul Wars bank chest
  4. Camera angle should be up and face north!



Script Features:
Crafts green-royal dragon leather
Crafts vambraces, chaps, bodies and shields


Notes:
  • Script is designed for speed, don't abuse it
  • There is no login functionality, start logged in
  • There is not 6hr fix, don't bot that long
  • Script is barebones but fast and accurate, report bugs

program leather_crafter;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
var
_inv_slot: integer;
whiteCount: TPointArray;
_bank_box, _inv_box, _pack_box: TBox;

const
leather_slot = 10;//1-10

procedure declarePlayers;
begin
setLength(players, 1);
with players[0] do
begin
bankPin := '1234';
strings[0] := 'red';//green,blue,red,black,royal
strings[1] := 'body';//vam,chap,shield,body
isActive := true;
isMember := true;
world := -1;
end;
currentPlayer := 0;
end;

function FindBank: T2DPointArray;
var
searchArea: TBox;
bankChest: TPointArray;
begin
if findColorsTolerance(bankChest, 1053721, mainscreen.getBounds, 10) then
begin
result := bankChest.toATPA(31, 15);
result.sortBySize;
end;
end;

function OpenBank: boolean;
var
timely, i: integer;
boothSpots: T2DPointArray;
begin
if bankScreen.isOpen then exit(true);
timely := getSystemTime + randomRange(11000, 15000);
while (timely > getSystemTime) do
begin
wait(randomRange(50, 200));
if bankScreen.isOpen then exit(true);
boothSpots := FindBank;
if length(boothSpots) < 1 then continue;
boothSpots.sortFromMidPoint(mainscreen.playerPoint);
for i := 0 to high(boothSpots) do
begin
if not(inRange(length(boothSpots[i]), 200, 350)) then continue;
mouse(boothSpots[i].getMiddle, Mouse_Right);
if chooseOption.select(['Use Bank'], randomRange(2500,3500)) then
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_pack_box, MOUSE_MOVE, MOUSE_HUMAN);
result := bankScreen.isOpen(randomRange(2500,3500));
if not(players[CurrentPlayer].bankPin = '') and not result then
if pinscreen.isOpen(randomRange(2500,3500)) then
begin
if not pinScreen.enter(players[CurrentPlayer].bankPin) then
exit else wait(randomRange(100,500));
end;
end;
end;
end;
end;

function doneButton: boolean;
var
bluePoints: TPointArray;
blueArea: TBox;
begin
blueArea := [244,197, 335, 223];
findColorsTolerance(bluePoints, 13278759, blueArea, 44);
result := length(bluePoints) > 145;
status('Done button: ' + toStr(result));
end;

procedure wait_crafting;
var
count, threshold: integer;
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_bank_box, MOUSE_MOVE, MOUSE_HUMAN);
threshold := getSystemTime + randomRange(70000, 90000);
repeat
wait(randomRange(255, 555));
if doneButton then
begin
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(100, 200));
if not(doneButton) then exit;
until (getSystemTime > threshold);
exit;
end;
until (getSystemTime > threshold);
end;

function craft_option: boolean;
const
BORDER_COLOR = 1356525;
var
searchArea, choiceBox: TBox;
borderPoints: TPointArray;
t: integer;
begin
if not productionScreen.isOpen then exit;
searchArea := [51, 104, 242, 145];
choiceBox := intToBox(52, 105, 91, 144);
case players[currentPlayer].strings[1] of
'chap', 'chaps': choiceBox.edit(50, 0, 50, 0);
'body': choiceBox.edit(100, 0, 100, 0);
'shield': choiceBox.edit(150, 0, 150, 0);
end

t := getSystemTime + randomRange(5000, 1000);
while t > getSystemTime do
begin
if not findColors(borderPoints, BORDER_COLOR, searchArea) then
begin
writeln('Unable to select a produce. I think we''re out of thread.');
writeln('Terminating');
terminateScript;
end;
if choiceBox.equals(borderPoints.getBounds) then exit(true);
mouseBox(choiceBox, MOUSE_LEFT, MOUSE_HUMAN);
wait(randomRange(125, 300));
end;
end;

function craft_inventory: boolean;
var
threshold: integer;
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_inv_box, MOUSE_MOVE, MOUSE_HUMAN);
tabBackpack.waitWhileLocked;
wait(randomRange(1, 100));
if not(inRange(_inv_slot, 15, 28)) then _inv_slot := randomRange(15, 28);
if tabBackpack.mouseSlot(_inv_slot, MOUSE_LEFT) then
begin
_inv_slot := randomRange(15, 28);
_inv_box := tabBackpack.getSlotBox(_inv_slot);
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(25, 100));
if getSystemTime > threshold then exit;
status(toStr(toolscreen.isopen));
if toolscreen.isOpen then toolscreen.select('Needle');
until productionscreen.isOpen;
if craft_option then if productionScreen.clickStart then result := true;
end;
end;

procedure mainLoop;
begin
if OpenBank then
begin
wait(randomRange(1, 100));
if bankscreen.deposit([2..28]) then
bankscreen.withdraw(leather_slot, WITHDRAW_AMOUNT_ALL_BUT_ONE, ['']);
bankscreen.close;
if craft_inventory then wait_crafting;
end;
end;

begin
smartEnableDrawing := true;
setupsrl;
declarePlayers;
_inv_slot := randomRange(15, 28);
_inv_box := tabBackpack.getSlotBox(_inv_slot);
_bank_box := [265, 155, 310, 184];
_pack_box := [604, 96, 639, 127];
while isLoggedIn do mainLoop;
end.

Sjoe

2013-12-15 17:24:06

Nice release ;)

footballjds

2013-12-15 17:37:09

From: Sjoe
Nice release ;)


thanks, you'll need toolscreen.simba which will hopefully get added to SRL.

toolscreen.simba can be found here: http://villavu.com/forum/issue.php?issueid=167#note726

NineteenNinetyNine

2013-12-29 17:13:49

I got the script to work up until it finishes crafting the bodies, then it just hovers over the chest without clicking it. Not sure what I did wrong.

EDIT: Zoomed all the way in and it seems to work now, I think it was the armour I was wearing.

Great script! :D:D

Thanatos

2014-01-04 13:40:14

I was just about to put a request in for a script like this when I noticed yours. Thank you so much! It's about time I trained my crafting…or your script did at least ;)

StickToTheScript

2014-01-05 03:23:38

Hey man! Thanks for the script! I used it to get me some extra crafting levels for some quests!! Didnt fail me once!

masongt

2014-02-28 13:19:24

Great script! Worked for all leather types and was very efficient. Thanks!

luxrath

2014-03-07 07:03:16

Hangs at the select armor-piece screen for me…

lendaz

2014-04-28 09:27:13

the script do not click in the chest.I have to manually click and then its correctly get the leathes and make the body.

footballjds

2014-04-28 13:11:22

From: lendaz
the script do not click in the chest.I have to manually click and then its correctly get the leathes and make the body.


script is outdated and needs a rewrite, antiban could be added as well :P

mathozz

2014-07-30 10:09:40

you goin update it?:D

cbrems

2014-09-30 20:22:05

is this working yet??

agent007

2014-11-05 14:57:41

doesn't seem like this script is supported anymore.

hi its me

2014-11-15 09:47:20

:( Can someone make a working one?

Sajon

2015-02-03 16:24:36

i dont think he will update this would of liked to use it for 75 crafting

Enigmatic

2015-02-12 20:15:40

From: Sajon
i dont think he will update this would of liked to use it for 75 crafting


Here fixed it for you

program leather_crafter;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
var
_inv_slot: integer;
whiteCount: TPointArray;
_bank_box, _inv_box, _pack_box: TBox;

const
leather_slot = 1;//1-10

procedure declarePlayers;
begin
setLength(players, 1);
with players[0] do
begin
bankPin := '';
strings[0] := 'blue';//green,blue,red,black,royal
strings[1] := 'body';//vam,chap,shield,body
isActive := true;
isMember := true;
world := -119;
end;
currentPlayer := 0;
end;

function FindBank: T2DPointArray;
var
searchArea: TBox;
bankChest: TPointArray;
begin
if findColorsTolerance(bankChest, 5723999, mainscreen.getBounds, 10) then
begin
result := bankChest.toATPA(31, 15);
result.sortBySize;
end;
end;

function OpenBank: boolean;
var
timely, i: integer;
boothSpots: T2DPointArray;
begin
if bankScreen.isOpen then exit(true);
timely := getSystemTime + randomRange(11000, 15000);
while (timely > getSystemTime) do
begin
wait(randomRange(50, 200));
if bankScreen.isOpen then exit(true);
boothSpots := FindBank;
if length(boothSpots) < 1 then continue;
boothSpots.sortFromMidPoint(mainscreen.playerPoint);
for i := 0 to high(boothSpots) do
begin
if not(inRange(length(boothSpots[i]), 200, 350)) then continue;
mouse(boothSpots[i].getMiddle, Mouse_Right);
if chooseOption.select(['Use Bank'], randomRange(2500,3500)) then
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_pack_box, MOUSE_MOVE, MOUSE_HUMAN);
result := bankScreen.isOpen(randomRange(2500,3500));
if not(players[CurrentPlayer].bankPin = '') and not result then
if pinscreen.isOpen(randomRange(2500,3500)) then
begin
if not pinScreen.enter(players[CurrentPlayer].bankPin) then
exit else wait(randomRange(100,500));
end;
end;
end;
end;
end;

function doneButton: boolean;
var
bluePoints: TPointArray;
blueArea: TBox;
begin
blueArea := [244,197, 335, 223];
findColorsTolerance(bluePoints, 13278759, blueArea, 44);
result := length(bluePoints) > 145;
status('Done button: ' + toStr(result));
end;

procedure wait_crafting;
var
count, threshold: integer;
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_bank_box, MOUSE_MOVE, MOUSE_HUMAN);
threshold := getSystemTime + randomRange(70000, 90000);
repeat
wait(randomRange(255, 555));
if doneButton then
begin
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(100, 200));
if not(doneButton) then exit;
until (getSystemTime > threshold);
exit;
end;
until (getSystemTime > threshold);
end;

function craft_option: boolean;
const
BORDER_COLOR = 1356525;
var
searchArea, choiceBox: TBox;
borderPoints: TPointArray;
t: integer;
begin
if not productionScreen.isOpen then exit;
searchArea := [51, 104, 242, 145];
choiceBox := intToBox(52, 105, 91, 144);
case players[currentPlayer].strings[1] of
'chap', 'chaps': choiceBox.edit(50, 0, 50, 0);
'body': choiceBox.edit(100, 0, 100, 0);
'shield': choiceBox.edit(150, 0, 150, 0);
end

t := getSystemTime + randomRange(5000, 1000);
while t > getSystemTime do
begin
if not findColors(borderPoints, BORDER_COLOR, searchArea) then
begin
writeln('Unable to select a produce. I think we''re out of thread.');
writeln('Terminating');
terminateScript;
end;
if choiceBox.equals(borderPoints.getBounds) then exit(true);
mouseBox(choiceBox, MOUSE_LEFT, MOUSE_HUMAN);
wait(randomRange(125, 300));
end;
end;

function craft_inventory: boolean;
var
threshold: integer;
begin
wait(randomRange(1, 20));
if random(10)>0 then mouseBox(_inv_box, MOUSE_MOVE, MOUSE_HUMAN);
tabBackpack.waitWhileLocked;
wait(randomRange(1, 100));
if not(inRange(_inv_slot, 15, 28)) then _inv_slot := randomRange(15, 28);
if tabBackpack.mouseSlot(_inv_slot, MOUSE_LEFT) then
begin
_inv_slot := randomRange(15, 28);
_inv_box := tabBackpack.getSlotBox(_inv_slot);
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(25, 100));
if getSystemTime > threshold then exit;
status(toStr(toolscreen.isopen));
if toolscreen.isOpen then toolscreen.select('Needle');
until productionscreen.isOpen;
if craft_option then if productionScreen.clickStart then result := true;
end;
end;

procedure mainLoop;
begin
if OpenBank then
begin
wait(randomRange(1, 100));
if bankscreen.deposit([2..28]) then
bankscreen.withdraw(leather_slot, WITHDRAW_AMOUNT_ALL_BUT_ONE, ['']);
bankscreen.close;
if craft_inventory then wait_crafting;
end;
end;

begin
smartEnableDrawing := true;
setupsrl;
declarePlayers;
_inv_slot := randomRange(15, 28);
_inv_box := tabBackpack.getSlotBox(_inv_slot);
_bank_box := [265, 155, 310, 184];
_pack_box := [604, 96, 639, 127];
while isLoggedIn do mainLoop;
end.

Setup:
Soul Wars Bank
Compass: North
Hides: First Bank Slot
Craft: Put the hide on hotkey 1 in actionbar
> F9 / Run