PDA

View Full Version : [Crafting] [RS3]Battlestaff crafter AIO[300k exp/hour]



footballjds
12-16-2013, 08:03 PM
AIO Battlestaff Crafter

Instructions:

Set the const for bank slot of orb
Set the const for bank slot of staff
setup the declarePlayers procedure
start the script logged in at Soul Wars bank chest
Camera angle should be up and face north!




Script Features:
Crafts water, earth, fire and air battlestaves


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 battlestaff_crafter;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
var
_bank_box, _inv_box, _pack_box: TBox;

const
orb_slot = 9;//1-10
staff_slot = 10;//1-10
orb_type = 'air';//water,earth,fire,air

procedure declarePlayers;
begin
setLength(players, 1);
with players[0] do
begin
bankPin := '1234';
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(30000, 45000);
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 orb_type of
'earth': choiceBox.edit(50, 0, 50, 0);
'fire': choiceBox.edit(100, 0, 100, 0);
'air': 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 supplies.');
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, 25));
if tabBackpack.mouseSlot(11, MOUSE_LEFT) then
if tabBackpack.mouseSlot(16, MOUSE_LEFT) then
begin
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(25, 100));
if getSystemTime > threshold then exit;
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.quickDeposit(QUICK_DEPOSIT_INVENTORY) then
if bankscreen.withdraw(orb_slot, 14, ['']) then
if bankscreen.withdraw(staff_slot, 14, ['']) then
if bankscreen.close then
if craft_inventory then wait_crafting;
end;
end;

begin
smartEnableDrawing := true;
setupsrl;
declarePlayers;
_inv_box := tabBackpack.getSlotBox(11);
_bank_box := [265, 155, 310, 184];
_pack_box := [399, 565, 429, 586];
while isLoggedIn do mainLoop;
end.

Sjoe
12-16-2013, 08:04 PM
sweettt :)

whitevans1
01-18-2014, 04:41 AM
If you have the script just click the orb it will bring up the crafting menu. I found this to be faster and more effective. So you can take out the line where it selects the battle staff as well. Also when the script is done creating 14 staffs it locks up and won't reopen the bank and craft more. Anyone having this problem as well? I would fix this if I knew how.

Shindigs
02-02-2014, 06:02 PM
Yo can you update this? it tries to do the old method and i just end up wielding one of the battlestaffs. now you just need to click the orb

Ashaman88
02-02-2014, 06:17 PM
Yo can you update this? it tries to do the old method and i just end up wielding one of the battlestaffs. now you just need to click the orb

I'm not sure how this works, but assuming it's like most skilling nowadays you could just try and use my fletcher doing the string option and see if it works

Wu-Tang Clan
02-02-2014, 07:14 PM
I was thinking about doing a fire battlestaff runner that uses the 80 agility shortcut, might end up using this after.
PS. Congratulations on the release

ququ
02-06-2014, 09:24 PM
uhm why not use bankscreen.open ?

Ollie99
01-13-2016, 10:45 PM
AIO Battlestaff Crafter

Instructions:

Set the const for bank slot of orb
Set the const for bank slot of staff
setup the declarePlayers procedure
start the script logged in at Soul Wars bank chest
Camera angle should be up and face north!




Script Features:
Crafts water, earth, fire and air battlestaves


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 battlestaff_crafter;
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
var
_bank_box, _inv_box, _pack_box: TBox;

const
orb_slot = 9;//1-10
staff_slot = 10;//1-10
orb_type = 'air';//water,earth,fire,air

procedure declarePlayers;
begin
setLength(players, 1);
with players[0] do
begin
bankPin := '1234';
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(30000, 45000);
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 orb_type of
'earth': choiceBox.edit(50, 0, 50, 0);
'fire': choiceBox.edit(100, 0, 100, 0);
'air': 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 supplies.');
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, 25));
if tabBackpack.mouseSlot(11, MOUSE_LEFT) then
if tabBackpack.mouseSlot(16, MOUSE_LEFT) then
begin
threshold := getSystemTime + randomRange(5000, 10000);
repeat
wait(randomRange(25, 100));
if getSystemTime > threshold then exit;
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.quickDeposit(QUICK_DEPOSIT_INVENTORY) then
if bankscreen.withdraw(orb_slot, 14, ['']) then
if bankscreen.withdraw(staff_slot, 14, ['']) then
if bankscreen.close then
if craft_inventory then wait_crafting;
end;
end;

begin
smartEnableDrawing := true;
setupsrl;
declarePlayers;
_inv_box := tabBackpack.getSlotBox(11);
_bank_box := [265, 155, 310, 184];
_pack_box := [399, 565, 429, 586];
while isLoggedIn do mainLoop;
end.

is it possible you could update this with the new method?

Thanks

jrowe
01-14-2016, 09:09 AM
is it possible you could update this with the new method?

Thanks
The layout is there, if you want to change a function all you have to do is update it yourself.. I had no coding experience when I joined the community here, I can now make my own basic scripts and have an overall basic understanding of SRL. It's quite simple to learn once you grasp the concepts.

Here's a guide by The Mayor that helped me understand the fundamentals https://villavu.com/forum/showthread.php?t=107757

Good luck

Ollie99
01-14-2016, 01:43 PM
The layout is there, if you want to change a function all you have to do is update it yourself.. I had no coding experience when I joined the community here, I can now make my own basic scripts and have an overall basic understanding of SRL. It's quite simple to learn once you grasp the concepts.

Here's a guide by The Mayor that helped me understand the fundamentals https://villavu.com/forum/showthread.php?t=107757

Good luck

Thank you very much, I will look into this :)

Hodor123
02-20-2016, 07:14 PM
I had about 20k air orbs lying around, I pass them around bot it down 20k battlestaffs on the account.

thanks for sharing the script though.