SRL Archive - RS3 Runecrafting

AstralCrafter


white_lycan

2014-03-06 03:57:30

Hey guys, i never really planned on releasing this but i was recently banned from runescape due to this script (only thing i bot) BUT it was completely my fault got careless and didn't really care. I made over 1m astral runes in a couple months. Sold it all recently and was banned shortly there after. The script runs, or i should say ran pretty great. it was able to run for 6hours until runescape would force log the account.

Now onto the script. i made this script, or i edited this script from an astral script VWXZ made.

I also grabbed a stats report from a script i had a while back from Ryguy and just changed it up to work with this script. All the values are probably off because i sort of stopped updating it as i continued editing the script. I feel like i heavily edited this script but im a complete newb so what do i know. Working on this has actually taught me a whole lot, which won't come in handy with runescape anymore but i think it will with project spark aha! im dont with all the text, NOW to features.

Features -
supports small medium, large, and giant pouches.
uses moon teleport spell to tele to moonclan after crafting runes
has some fail safes in there (may have removed them don't remember)
uses the repair pouch spell on pouches(i left the original npc contact in there but you can find out how to change it im sure)
has some antibans in there as well
at the start of the script it will setup the camera to the correct positioning
I also made some comment on each procedure i have explaining what its suppose to do. i tried to make it as clean as possible.
thats about it i think.

Instructions-
you need to have your pure ess in the top most right slot in the bank in your current tab.
slot one of your backpack needs to have the giant pouch, slot 2 large, slot 3 medium, and slot 4 is small
make sure you have a earth staff, law, cosmic, and astral runes in your inventory. i put them at the very bottom of my inventory
action bar needs to be set like this - slot 1 teleport to moon clan, slot 3 small, slot 4 medium, slot 5 large,slot 6 giant, and slot 9 repair pouch spell. you also need to put 0_0MOONCLAN file in runescape surfaces folder and you should be golden if i havnt forgotten anything.

The script looks for the bank symbol when it first starts, if it doesn't find one it will teleport to the moonclan and then begin doing what it does. if it detects a full inventory on start up it will begin making its way to the altar. so you should be able to start it where ever you want as long as there isnt a bank symbol in the mini map never really tested it but seemed to work fine. i was always pretty paranoid so i would always manually type in my user and pass and pin before starting the script, just a heads up.

Although im completely done with this script (only account i had is banned so yeah) i'd still like to hear what you guys think and if you noticed any errors or mistakes i made in the code. it'd be cool if you went and downloaded VWXZ script from the link above and see the differences ( i think the one iedited was his rev3).

i apologize for so much text, i was never good at explaining stuff in a simple way. enjoy.

Clarity

2014-03-06 04:02:11

Dang, sorry to hear about the ban. But wow that's a lot of astrals.

Grats on release! :D Nice to have a moneymaking RC script around, but I guess we shouldn't abuse it too much? What was the nature of your ban? Did you suicide 24/7 or something?

Might want to remove the link, I believe we are not supposed to leak non-public scripts that aren't our own.

white_lycan

2014-03-06 09:24:53

oh i thought it was in a public area in the forums. i think the he completely stopped working on the script anyways and if probably outdated. i'll remove the link.

yeah i pretty much said fuck it and went all in on botting this past month and a half. i've been paying for membership for the past like 3 years straight and barely even played. i maybe logged in like once every 3 months just to see how my discontinued item was doing in price. i would run the script when i woke up at like 5am and have team viewer running. When i was on campus or away from my computer i would sign in on my phone and reload runescape if it logged me out. i would do this until i went to bed at around 12.so pretty much 24/7. oh well i get what i deserve. just know that runscape is lacking a few discontinued items ;P

sculpt0r

2014-03-07 01:19:43

Is this about how the non-bank part is supposed to be setup? Save for the giant pouch which i don't have, of course.

http://imgur.com/SnuUYQ7

white_lycan

2014-03-07 09:12:03

yep looks good, you can comment out fillpouch1 and it shouldnt worry about the giant one. make sure you get rid of one of the withdraw procedures or itll withraw ess twice in a row, not too big of an issue though

Thief

2014-03-07 22:40:26

The script breaks if the minimap gets messed up for me. I recommend adding a failsafe like teleing somewhere else then back to moonclan again to fix the minimap.

I'll try and make it myself first and post it here if others want it. :)

white_lycan

2014-03-08 17:43:47

From: Thief
The script breaks if the minimap gets messed up for me. I recommend adding a failsafe like teleing somewhere else then back to moonclan again to fix the minimap.

I'll try and make it myself first and post it here if others want it. :)


i always have the mini map issue when i first login, where the minimap is just black. thats why i never used the auto login thing. all you need to do to get the minimap fixed is walk down the path from the bank and once you reach the first monster the map will reload and be fixed. after its fixed it never turned black and was perfect. thats the only way i could ever get it fixed. if you can get the bot to fix the minimap more power to you man.

robsworld6

2014-04-03 02:51:54

Script looks pretty good, but is there any possibility to turn of the pouch support? I cannot find one.

Nevermind! Works pretty well, I trimmed out the bag parts of the script and it is going pretty strong. Nice job!

jarofhearts

2014-04-08 14:00:24

The script is having trouble banking. I set it up with a filled inventory and pouches and it makes the first run fine, then teleports back to the bank. When it opens the bank though it just clicks in the top-left corner.

Simba prints this error: "=====Withdrawing essence=====
– WARNING: bankscreen.withdraw(): Invalid slot 10"

I have my pure ess in the top right of my bank. Any ideas on how to fix this?

boobooo42

2014-04-08 16:11:57

From: jarofhearts
The script is having trouble banking. I set it up with a filled inventory and pouches and it makes the first run fine, then teleports back to the bank. When it opens the bank though it just clicks in the top-left corner.

Simba prints this error: "=====Withdrawing essence=====
– WARNING: bankscreen.withdraw(): Invalid slot 10"

I have my pure ess in the top right of my bank. Any ideas on how to fix this?

Banking is broken since the banking update, be patient.

jarofhearts

2014-04-09 10:17:06

From: boobooo42
Banking is broken since the banking update, be patient.


Alright, I wasn't aware of this.

Hei

2014-04-20 09:22:46

It's been awhile since I've played, so I'm not 100% sure about the recent updates but banking seems to be working now, just fine for me. My only problem with the script is that every time it gets to the crafting altar, it goes to talk to the Oneiromancer and the script error is telling me that it cannot exit out of the NPC chat.

Edit: problem solved, I had my brightness on the right setting, but for some reason it was still detecting the Oneiromancer as the altar, I fiddled with it until it worked.

iP3RF3CT SA1NTS

2014-04-20 17:15:11

Does the script works without the pouches?
DOES it works with no runes in the inventory?
Thanks ^^

miniking

2014-05-05 01:23:00

I think this script needs updating. It is going out of control when I start to run it. I'm standing right in front of the bank and it says it can't find the bank. then it just goes to the top left of the screen and right clicks over and over again.

b12hitman

2014-05-23 04:56:31

Most likely because of bank icon update on the map

J_R

2014-06-14 00:19:40

This is a very good script, the only problem (other than the oneromancer one which was fixed by changing the color) was that it occasionally goes to the altar without any essence, but that's probably because of my lag and is pretty rare anyway. It runs like a charm, thanks!

EvilCabbage

2014-06-30 04:00:03

Looking forward to testing this once I have the requirements on my bot account. Thanks for the release :)

Armoth

2014-07-20 21:38:27

Well I got this to work as far as starting out, it fills my pouches with ess then puts ess in my inventory but when its time to go run to the altar it says:
(More repeating text than this but I shortened the error message)
– WARNING: sps.getPlayerPos(): Didn't find enough matches accurately calc your postion
– sps.getPlayerPos(): result = {X = -1, Y = -1}, took 639 ms
– WARNING: sps.getPlayerPos(): Didn't find enough matches accurately calc your postion
– sps.getPlayerPos(): result = {X = -1, Y = -1}, took 686 ms
– sps.walkPath(): result = False
==============Crafting runes!===============
==============Done crafting runes!===============
as if it had already ran to the altar and gotten back. Is there any way to fix this?

twirap

2014-08-02 03:49:23

I am new to the forum and looking to contribute to writing scripts. I am having difficulty setting up my very first script as I cannot find the surfaces folder…Did RS change and this script is too out-dated? If someone is able to help me get set-up with the RC I can pay through Paypal.

b12hitman

2014-08-02 06:07:16

From: twirap
I am new to the forum and looking to contribute to writing scripts. I am having difficulty setting up my very first script as I cannot find the surfaces folder…Did RS change and this script is too out-dated? If someone is able to help me get set-up with the RC I can pay through Paypal.


C:\Simba\Includes\SPS\img\runescape_surface should go in here

twirap

2014-08-02 18:39:26

This is the error I get now. I deleted SMART code since I am using browser:

Loaded Font UpChars07_s
Loaded Font UpCharsEx
Loaded Font XPChars
Loaded Font UpChars_s
Loading extension Extensions\associate.sex
Extension Enabled
Loading extension Extensions\srl.sex
Extension Enabled
SRL Updater Enabled!
Plugins Updater Enabled!
SPS Updater Enabled!
New window: 722482
Exception in Script: Unknown declaration "SmartEnableDrawing" at line 43, column 5
Compiled successfully in 2121 ms.
– setupSRL()
—- Setting up SRL…
—- HINT: You are not using SMART, be sure to use Simba's crosshairs to select the RS client.
—- Waiting up to 5 minutes for RS to load…
Exception in Script: Runtime error: "Range check error" at line 760, column 13 in file "C:\Simba\Includes\SRL-6\lib\core\players.simba"
The following bitmaps were not freed: [Minimap Mask]
File[C:\Simba\Includes\SRL-6/logs/SRL log (02-08-14 at 06.38.07 PM).txt] has not been freed in the script, freeing it now.

twirap

2014-08-02 18:43:52


twirap

2014-08-02 19:00:27

Note: I don't have any pouches….I will get them when I hit 80 rc but for now I am not using any pouches….Why isn't the script doing anything?

The Mayor

2014-08-03 00:58:36

This hasn't been updated since March, I doubt it will run smooth. There may or may not be an astral crafter in SRL junior+

twirap

2014-08-03 13:51:33

From: The Mayor
This hasn't been updated since March, I doubt it will run smooth. There may or may not be an astral crafter in SRL junior+


After about 3 hours of tinkering after I read the tutorial on how to script SIMBA I was able to get it to work. I made some modifications and now I am getting 1100 astral per hour without any pouches.

I got logged out so IDK how to make it relogin and one of my laptop is constantly on to keep botting since I haven't figured out how to make SMART not crash and ogl. I am looking forward to write some scripts and contribute once I finish reading the 2nd tutorial on navigating the minimap and map.

Thank you everyone. I will perhaps post the code I have after I made edits. If someone knows how to fix the ogl issue on smart and if you know how I can auto login back after a logout then that would be great to know.


I've tried to fix some remaining bugs it has such as leaving the bank 20% of the time with no essense and 10% of the time it misses the withdrawal.

These are the errors in log:

==================Should be at the bank!==================
– ERROR: bankScreen.deposit(): Unable to deposit since bankscreen isn't open


the second error:
=====Withdrawing essence=====
– WARNING: bankscreen.withdraw(): Invalid slot 1


If someone is willing then I can share the edited code and you can try to fix it. I tried to put an if and repeat until statement in the code to fix it but either I don't know how to properly code those or something hangs up. I have been a programmer for C# and PHP for a while so I am still trying to get the hang of SIMBA scripting.

steelmuffin

2014-08-16 15:08:39

Is this working smoothly?

twirap

2014-08-16 21:10:40

it is a bit out dated and needs tweaks to make it run for a while…the current one misclicks and sits there doing nothing.

420

2014-09-22 03:27:56

In case anyone is interested, I fixed a few things, just set your brightness to maximum in the game graphics settings and this will work. Also removed emptying pouches due to update. Lunar tele action bar 1 and npc contact action bar 2 and it runs great.



Program AstralCrafterRS3; //cleaned up
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
{$I sps/lib/sps-rs3.simba}

const
ColorAltar = 8885396;
ColorTolAltar = 10;
ColorDecayedPouch = 2698287;
ColorTolDecayedPouch = 5;
ColorCountDecayedPouch = 20;
ColorAbyssMage = 1381655;
ColorTolAbyssMage = 10;
ColorBanker = 4234358;
ColorTolBanker = 10;

var
PathBank: TPointArray;
PathBankToAltar: TPointArray;
MyScriptTimer: TTimeMarker;
TripsMade: Integer;
WE, FL, FM, FS, EG, EL, EM, ES, telefails, SlotNum: Integer;
p: tpoint;
DTMBank: Integer;

label
WalkToAltarLabel, TeleToMoonClanLabel, WithdrawEssLabel;

procedure WaitRandom(MsecToWait: Integer); //procedure that makes random wait time
begin
Wait(MsecToWait + Random(Round(MsecToWait / 5.0)));
end;

procedure LoadResources; //loads up all the resources the script uses (paths and dtms)
begin
DTMBank := DTMFromString('mggAAAHicY2NgYOhjgeAOIJ4GxF1APAWILwHlTgDxWSi+B8Q3gLih0pihvDKX4cLCTIb+Ag+Gy4uzGXZNiGPABRhxYAgAALlpEZo=');
PathBank := [Point(157, 206), Point(139, 193)];
PathBankToAltar := [Point(207, 209), Point(196, 220), Point(184, 288), Point(190, 290), Point(177, 290), Point(217, 324), Point(206, 329), Point(194, 338), Point(212, 368), Point(223, 361), Point(236, 352), Point(248, 362), Point(242, 367), Point(234, 372), Point(248, 384), Point(257, 374), Point(264, 366), Point(271, 362), Point(281, 388), Point(270, 388), Point(264, 389), Point(281, 416), Point(288, 427), Point(296, 433), Point(313, 430), Point(313, 418), Point(327, 423), Point(331, 432), Point(341, 424), Point(345, 411)];
end;

procedure SetUp; //set up for the script to run
begin
SmartEnableDrawing := True;
SetUpSrl;
LoadResources;
Sps.Setup('0_0MOONCLAN', RUNESCAPE_SURFACE);
TripsMade := 0;
writeLn('=====Setting up player camera!=====');
minimap.setAngle(MM_DIRECTION_NORTH);
TRSMainscreen.setAngle(MS_ANGLE_HIGH);
mouseScroll(p, 50+Random(20));
writeLn('=====Setting up complete!=====');
end;

procedure WhereAreWe; //Locates where the character is and determines whether to teleport or not
begin
If not (minimap.findsymbol(p, MM_SYMBOL_BANK, minimap.getbounds)) then
begin
writeLn('=====Could not find bank, now teleporting=====');
ActionBar.ClickSlot(1);
end
end;

procedure Antiban; //performs an antiban
var
i: integer;
begin
if not isLoggedIn then
exit;
i := random(500);
case i of
1..12: begin pickUpMouse(); writeLn('==PickUpMouse==') end;
13..18: begin randomRClickItem(); writeLn('==randomRClickItem==') end;
19..26: begin sleepAndMoveMouse(random(2000) + 750); writeLn('==SleepAndMoveMouse==') end;
27..32: begin smallRandomMouse(); writeLn('==SmallRandomMouse==') end;
33..50: begin mouseOffClient(OFF_CLIENT_RANDOM); writeLn('==MouseOffClient==') end;
51..79: begin hoverSkill(Skill_Runecrafting); writeLn('==HoverSkillRunecrafting==') end;
80..95: begin ; writeLn('==;==') end;
96..120: begin hoverSkill(Skill_Magic); writeLn('==HoverSkillMagic==') end;
end
end;

procedure ChatBoxOpen; //checks if the chat box is open, if so it hits continue until its closed
begin
if conversationBox.isOpen then
begin
repeat
writeLn('==============Ahhh chatbox is open, now closing!===============');
Conversationbox.Continue(True, True);
until(not conversationBox.isOpen);
writeLn('==============Chat closed!===============');
//WaitRandom(1000);
end
end;

procedure TeleToMoonclan; //Teleports to the Moonclan using the Action bar slot 1 + initializes antiban
begin
writeLn('==============Teleporting to MoonClan================');
ActionBar.ClickSlot(1);
Antiban;
wait(2500 + randomrange(100,150));
end;

procedure WalkToBank; // Checks for full inventory, if full it exits WalkToBank and jumps to WalkToAltar, if not it walks to the Bank
begin
if (tabBackpack.isFull) then
begin
writeln('======seems like theres no need to bank, going to altar======');
goto WalkToAltarLabel;
end else
begin
writeLn('================= Walking to bank!=======================');
Sps.WalkPath(PathBank);
writeLn('==================Should be at the bank!==================');
WaitRandom(400);
end
end;

function HavePouchesDecayed: Boolean; //function for decayed pouch indentification
begin
Result := False;
writeln('no decayed pouches found');
for SlotNum := 1 to 4 do
begin
if CountColorTolerance(ColorDecayedPouch, TabBackpack.GetSlotBox(SlotNum), ColorTolDecayedPouch) > ColorCountDecayedPouch then
begin
writeLn('Detected decayed pouch in slot ' + IntToStr(SlotNum));
Result := True;
Break;
end
end
end;

procedure CastRepairSpell; //casts pouch repair spell in actionbar slt 9 repeats until no pouches are decayed
begin
Repeat
ActionBar.ClickSlot(9);
Mouse(tabBackpack.getSlotBox(SlotNum).GetMiddle, MOUSE_LEFT);
wait(900 + randomrange(100,150));
until (HavePouchesDecayed = False);
end;

procedure CastNpcContact; //casts npc contact to repair pouches actionbar slt2
begin
writeLn('==============Using NPC contact!===============');
ActionBar.ClickSlot(2);
WaitRandom(1000);
end;

procedure SelectAbyssMage;
var
TpaAbyssMage: TPointArray;
AtpaAbyssMage: T2DPointArray;
begin
writeLn('==============Looking for Dark Mage!===============');
MouseScroll(MainScreen.GetBounds.GetMiddle, 4);
WaitRandom(500);
if FindColorsTolerance(TpaAbyssMage, ColorAbyssMage, MainScreen.GetBounds, ColorTolAbyssMage) then
begin
AtpaAbyssMage := TpaAbyssMage.ToAtpa(20);
SortAtpaSize(AtpaAbyssMage, True);
TpaAbyssMage := AtpaAbyssMage[Low(AtpaAbyssMage)];
Mouse(MedianTpa(TpaAbyssMage), MOUSE_LEFT);
WaitRandom(6000);
end
end;

procedure ChatWithAbyssMage;
var
IX: Integer; b: string;
begin
for IX := 1 to 6 do
begin
writeLn('==============Clicking continue!===============');
ConversationBox.Continue(True, True);
WaitRandom(1000);
end
ConversationBox.SelectOption(['Can you repair mv pouches?']);
writeLn('==============Selecting repair pouches!===============');
wait(500 + randomrange(100,150));
for IX := 1 to 2 do
begin
writeLn('==============Clicking continue!===============');
wait(500 + randomrange(100,150));
ConversationBox.Continue(True, True);
end
end;

procedure RepairPouches; //goes through the procedures to repair pouches
begin
//CastRepairSpell;
CastNpcContact;
SelectAbyssMage;
ChatWithAbyssMage;
end;

procedure RepairPouchesIfNeeded; //if pouches need repair this begins the process
begin
writeln('======checking pouches======');
if HavePouchesDecayed = true then
begin
writeLn('==============Beggining repair pouches!===============');
RepairPouches;
end
end;

procedure OpenBank; //tires to find banker,if found it left clicks on it to open bank, if pin screen is open it terminates script. it then checks to see if bank is open, if it is then it exits procedure, if it isnt open it goes to TeleToMoonClan
var
ColorsFound: TPointArray;
MidPoint: TPoint;
begin
if FindColorsTolerance(ColorsFound, ColorBanker, MainScreen.GetBounds, ColorTolBanker) then
begin
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
wait(900 + randomrange(50,100));
if pinscreen.isOpen() then
begin
Writeln('======pin screen open, terminating script======');
terminateScript();
end
end
begin
wait(1500 + randomrange(50,100));
if bankscreen.isOpen then
goto WithdrawessLabel;
end
end;

procedure WithdrawEss; //check to see if bank is open, if so it withdraws essense until pack is full or its tried 5 or more times. if bank is not open it goes to TeleToMoonClanLabel.
begin
//repeat
writeLn('=====Withdrawing essence=====');
BankScreen.Withdraw(10, WITHDRAW_AMOUNT_ALL, ['']);
wait(1500 + randomrange(5,20));
//inc(WE);
//until bankscreen.getPackCount = 28 or (WE >= 2);
end
procedure FillPouches1; //looks for giant pouch, rightclicks it, selects fill, and repeats until pack=16 or its tried 2 times
var
FG: Integer;
begin
repeat
writeLn('==============Filling up the Giant pouch===============');
Mouse(BankScreen.GetPackSlotBox(1).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Giant pouch'], 0.70);
wait(1000 + randomrange(50,100));
inc(FG);
until ((bankscreen.getPackCount = 16) or (FG > 2));
end;

procedure FillPouches2; //does the same at fillpouch1 but for large=19, medium=13, and small=10
var
FL, FM, FS: Integer;
begin
repeat
writeLn('==============Filling up the large pouch===============');
Mouse(BankScreen.GetPackSlotBox(2).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Large pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FL);
until ((bankscreen.getPackCount = 19) or (FL >= 2));
repeat
writeLn('==============Filling up the Medium pouch===============');
Mouse(BankScreen.GetPackSlotBox(3).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Medium pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FM);
until ((bankscreen.getPackCount = 13) or (FM >= 2));
repeat
writeLn('==============Filling up the small pouch===============');
Mouse(BankScreen.GetPackSlotBox(4).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Small pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FS);
until ((bankscreen.getPackCount = 10) or (FS >= 2));
end;

procedure BankStep; //performs included procedures in this order withdrawess,fillpouches1,withdrawess,fillpouches2,withdrawess, and closes bank
var OB: integer;
begin
WaitRandom(200);
WithdrawEss;
FillPouches1;
WithdrawEss;
FillPouches2;
WithdrawEss;
WaitRandom(30);
BankScreen.Close;
WaitRandom(25);
end;

procedure WalkToAltar; //walks to the altar
begin
writeLn('==============Walking to the Altar!===============');
Sps.WalkPath(PathBankToAltar);
wait(randomrange(100,500));
end;

procedure CraftRunes(WaitLonger: Boolean); //finds altar colors, if found it clicks altar. does some stuff im not sure is necessary - probably needs afailsafe
var
ColorsFound: TPointArray;
MidPoint: TPoint;
begin
if FindColorsTolerance(ColorsFound, ColorAltar, MainScreen.GetBounds, ColorTolAltar) then
begin
writeLn('==============Crafting runes!===============');
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
writeLn('==============Done crafting runes!===============');
wait(1500 + randomrange(100,150));
end else
MiniMap.WaitFlag;
if (WaitLonger) then
begin
wait(900 + randomrange(100,150));
end

end;


procedure CraftStep; //combines CraftRunes
var
craftfailure: integer;
begin
repeat
CraftRunes(True);
wait(900 + randomrange(100,150));
inc(craftfailure);
if (craftfailure >=3) then
begin
writeln('===oh shit, need to teleport!!===');
ActionBar.ClickSlot(1);
exit;
end
until ((TabBackPack.Count < 11) or (craftfailure >= 3));
ChatBoxOpen;
writeLn('==============Completely done crafting!===============');
claimTicket();
end;

procedure PrintStatsReport; //makes the stats report - time run, runescrafted, runescrafted p/r, trips made, trips p/h, profit, profit p/r
var
runescrafted, profit, profitPerHour, runesPerHour, tripsPerHour: integer;
begin
runescrafted := TripsMade * 100;
profit := (runescrafted * 344);
profitPerHour := round((profit * 60) / (MyScriptTimer.getTime() / 60000));
runesPerHour := round((runescrafted * 60) / (MyScriptTimer.getTime() / 60000));
tripsPerHour := Round((TripsMade * 60) / (MyScriptTimer.getTime() / 60000));

writeLn('========================================================');
writeLn('Astral Crafter');
writeLn('Time Run: ' + MsToTime(MyScriptTimer.getTime, TIME_FORMAL));
writeLn('Runescrafted: ' + intToStr(runescrafted));
writeLn('Runescrafted Per Hour: ' + intToStr(runesPerHour));
writeLn('Trips Made: ' + intToStr(TripsMade));
writeLn('Trips Per Hour: ' + intToStr(tripsPerHour));
writeLn('Profit Made: ' + intToStr(profit));
writeLn('Per Hour: ' + intToStr(profitPerHour));
writeLn('========================================================');
end;

procedure MainLoopIteration; //the mainloop!
begin
//RestartScript:
WaitRandom(500);
WalkToBank;
RepairPouchesIfNeeded;
OpenBank;
WithdrawEssLabel:
WithdrawEss;
FillPouches1;
WithdrawEss;
FillPouches2;
WithdrawEss;
WaitRandom(30);
BankScreen.Close;
WaitRandom(25);
WalkToAltarLabel:
WalkToAltar;
CraftStep;
TeleToMoonClanLabel:
TeleToMoonclan;
TripsMade := TripsMade + 1;
//cleardebug;
PrintStatsReport;
end;

begin //the brain
SetUp;
whereAreWe;
MyScriptTimer.start;
repeat
MainLoopIteration;
until False;
end.




ALSO: I didn't like using the same npc contact for each instance of the script I was using so here:

add this to the const (under ColorTolBanker = 10; at the top):

ColorMage = 1447447;
debug = true;

and replace


procedure RepairPouches; //goes through the procedures to repair pouches
begin
//CastRepairSpell;
CastNpcContact;
SelectAbyssMage;
ChatWithAbyssMage;
end;

with


procedure RepairPouches; //goes through the procedures to repair pouches
begin
//CastRepairSpell;
CastNpcContact;
//SelectAbyssMage;
//ChatWithAbyssMage;
end;


and replace



procedure CastRepairSpell; //casts pouch repair spell in actionbar slt 9 repeats until no pouches are decayed
begin
Repeat
ActionBar.ClickSlot(9);
Mouse(tabBackpack.getSlotBox(SlotNum).GetMiddle, MOUSE_LEFT);
wait(900 + randomrange(100,150));
until (HavePouchesDecayed = False);
end;

procedure CastNpcContact; //casts npc contact to repair pouches actionbar slt2
begin
writeLn('==============Using NPC contact!===============');
ActionBar.ClickSlot(2);
WaitRandom(1000);
end;

with



procedure CastNpcContact; //casts npc contact to repair pouches actionbar slt2
var
ColorsFound: TPointArray;
MidPoint: TPoint;
jew:= Point(297,209);
begin
writeLn('==============Using NPC contact!===============');
ActionBar.ClickSlot(2);
WaitRandom(1000);

if debug then
writeln('Gut');

mouseScroll(jew.rand(16), 4);

WaitRandom(1000);

if debug then
writeln('Sehr Gut!');

if FindColorsTolerance(ColorsFound, ColorMage, MainScreen.GetBounds, ColorTolBanker) then
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
wait(900 + randomrange(50,100))
repeat

conversationBox.continue(true, true);

until(conversationBox.findOption(['epair']))

if (conversationBox.selectOption(['epair'])) then
writeln('Ich hasse Hippies!');

repeat

wait(50+random(10));

until(conversationBox.continue(true,true))

end;

enjoy hippies@

xSorrels

2014-09-23 19:42:07

Wish this would be updated.

Really need RC script for 30-90.

victordono

2014-10-23 16:29:33

From: xSorrels
Wish this would be updated.

Really need RC script for 30-90.


doesn't what 420 posted work

xSorrels

2014-10-23 19:10:05

I figured that.

I ended up using Claritys RC script.

Thanks tho!

Xlr

2014-11-02 19:12:41

Gz on release !

But there is a little problem for me, i do not use any pouches, I do not have 69 magic for moon tele (wouldnt that be cheaper and easier to use lodestones ?), and script after walking to bank, keep right clicking on the very left top corner of the screen.. :s

================= Walking to bank!=======================
-- sps.getPlayerPos(): result = {X = 150, Y = 202}, took 406 ms
---- Waiting while the player is moving...
-- sps.walkPath(): result = True
==================Should be at the bank!==================
======checking pouches======
no decayed pouches found
=====Withdrawing essence=====
-- WARNING: bankscreen.withdraw(): Invalid slot 10
==============Filling up the Giant pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the Giant pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the Giant pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
=====Withdrawing essence=====
-- WARNING: bankscreen.withdraw(): Invalid slot 10
==============Filling up the large pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the large pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the Medium pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the Medium pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the small pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
==============Filling up the small pouch===============
-- TRSChooseOption._select():
---- Options found: [Walk here, Cancel]
------ TRSChooseOption.close(): result = true
---- Failed to find any text matches
-- TRSChooseOption._select() result = false
=====Withdrawing essence=====
-- WARNING: bankscreen.withdraw(): Invalid slot 10

Obquility

2014-11-28 18:21:24

Thanks to 420 this script works great. Look above guys^
I wish I could add familiar support, but i'm pretty new to this simba scripting. I've changed it all so it runs smoothly (Banking, Clicking Alter etc). It also supports NPC contact thanks to 420.
Here it is, just copy paste this into the current script:
Program AstralCrafterRS3; //cleaned up
{$DEFINE SMART}
{$I SRL-6/SRL.simba}
{$I sps/lib/sps-rs3.simba}

const
ColorAltar = 7958133;
ColorTolAltar = 20;
ColorDecayedPouch = 2698287;
ColorTolDecayedPouch = 5;
ColorCountDecayedPouch = 20;
ColorAbyssMage = 1381655;
ColorTolAbyssMage = 10;
ColorBanker = 9011069;
ColorTolBanker = 10;
ColorMage = 1447447;
debug = true;

var
PathBank: TPointArray;
PathBankToAltar: TPointArray;
MyScriptTimer: TTimeMarker;
TripsMade: Integer;
WE, FL, FM, FS, EG, EL, EM, ES, telefails, SlotNum: Integer;
p: tpoint;
DTMBank: Integer;

label
WalkToAltarLabel, TeleToMoonClanLabel, WithdrawEssLabel;

procedure WaitRandom(MsecToWait: Integer); //procedure that makes random wait time
begin
Wait(MsecToWait + Random(Round(MsecToWait / 5.0)));
end;

procedure LoadResources; //loads up all the resources the script uses (paths and dtms)
begin
DTMBank := DTMFromString('mggAAAHicY2NgYOhjgeAOIJ4GxF1APAWILwHlTgDxWSi+B8Q3gLih0pihvDKX4cLCTIb+Ag+Gy4uzGXZNiGPABRhxYAgAALlpEZo=');
PathBank := [Point(157, 206), Point(139, 193)];
PathBankToAltar := [Point(207, 209), Point(196, 220), Point(184, 288), Point(190, 290), Point(177, 290), Point(217, 324), Point(206, 329), Point(194, 338), Point(212, 368), Point(223, 361), Point(236, 352), Point(248, 362), Point(242, 367), Point(234, 372), Point(248, 384), Point(257, 374), Point(264, 366), Point(271, 362), Point(281, 388), Point(270, 388), Point(264, 389), Point(281, 416), Point(288, 427), Point(296, 433), Point(313, 430), Point(313, 418), Point(327, 423), Point(331, 432), Point(341, 424), Point(345, 411)];
end;

procedure SetUp; //set up for the script to run
begin
SmartEnableDrawing := True;
SetUpSrl;
LoadResources;
Sps.Setup('0_0MOONCLAN', RUNESCAPE_SURFACE);
TripsMade := 0;
writeLn('=====Setting up player camera!=====');
minimap.setAngle(MM_DIRECTION_NORTH);
TRSMainscreen.setAngle(MS_ANGLE_HIGH);
mouseScroll(p, 50+Random(20));
writeLn('=====Setting up complete!=====');
end;

procedure WhereAreWe; //Locates where the character is and determines whether to teleport or not
begin
If not (minimap.findsymbol(p, MM_SYMBOL_BANK, minimap.getbounds)) then
begin
writeLn('=====Could not find bank, now teleporting=====');
ActionBar.ClickSlot(1);
end
end;

procedure Antiban; //performs an antiban
var
i: integer;
begin
if not isLoggedIn then
exit;
i := random(500);
case i of
1..12: begin pickUpMouse(); writeLn('==PickUpMouse==') end;
13..18: begin randomRClickItem(); writeLn('==randomRClickItem==') end;
19..26: begin sleepAndMoveMouse(random(2000) + 750); writeLn('==SleepAndMoveMouse==') end;
27..32: begin smallRandomMouse(); writeLn('==SmallRandomMouse==') end;
33..50: begin mouseOffClient(OFF_CLIENT_RANDOM); writeLn('==MouseOffClient==') end;
51..79: begin hoverSkill(Skill_Runecrafting); writeLn('==HoverSkillRunecrafting==') end;
80..95: begin ; writeLn('==;==') end;
96..120: begin hoverSkill(Skill_Magic); writeLn('==HoverSkillMagic==') end;
end
end;

procedure ChatBoxOpen; //checks if the chat box is open, if so it hits continue until its closed
begin
if conversationBox.isOpen then
begin
repeat
writeLn('==============Ahhh chatbox is open, now closing!===============');
Conversationbox.Continue(True, True);
until(not conversationBox.isOpen);
writeLn('==============Chat closed!===============');
//WaitRandom(1000);
end
end;

procedure TeleToMoonclan; //Teleports to the Moonclan using the Action bar slot 1 + initializes antiban
begin
writeLn('==============Teleporting to MoonClan================');
ActionBar.ClickSlot(1);
Antiban;
wait(2500 + randomrange(100,150));
end;

procedure WalkToBank; // Checks for full inventory, if full it exits WalkToBank and jumps to WalkToAltar, if not it walks to the Bank
begin
if (tabBackpack.isFull) then
begin
writeln('======seems like theres no need to bank, going to altar======');
goto WalkToAltarLabel;
end else
begin
writeLn('================= Walking to bank!=======================');
Sps.WalkPath(PathBank);
writeLn('==================Should be at the bank!==================');
WaitRandom(400);
end
end;

function HavePouchesDecayed: Boolean; //function for decayed pouch indentification
begin
Result := False;
writeln('no decayed pouches found');
for SlotNum := 1 to 4 do
begin
if CountColorTolerance(ColorDecayedPouch, TabBackpack.GetSlotBox(SlotNum), ColorTolDecayedPouch) > ColorCountDecayedPouch then
begin
writeLn('Detected decayed pouch in slot ' + IntToStr(SlotNum));
Result := True;
Break;
end
end
end;

procedure CastRepairSpell; //casts pouch repair spell in actionbar slt 9 repeats until no pouches are decayed
begin
Repeat
ActionBar.ClickSlot(9);
Mouse(tabBackpack.getSlotBox(SlotNum).GetMiddle, MOUSE_LEFT);
wait(900 + randomrange(100,150));
until (HavePouchesDecayed = False);
end;

procedure CastNpcContact; //casts npc contact to repair pouches actionbar slt2
var
ColorsFound: TPointArray;
MidPoint: TPoint;
jew:= Point(297,209);
begin
writeLn('==============Using NPC contact!===============');
ActionBar.ClickSlot(2);
WaitRandom(1000);

if debug then
writeln('Gut');

mouseScroll(jew.rand(16), 4);

WaitRandom(1000);

if debug then
writeln('Sehr Gut!');

if FindColorsTolerance(ColorsFound, ColorMage, MainScreen.GetBounds, ColorTolBanker) then
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
wait(900 + randomrange(50,100))
repeat

conversationBox.continue(true, true);

until(conversationBox.findOption(['epair']))

if (conversationBox.selectOption(['epair'])) then
writeln('Ich hasse Hippies!');

repeat

wait(50+random(10));

until(conversationBox.continue(true,true))

end;

procedure SelectAbyssMage;
var
TpaAbyssMage: TPointArray;
AtpaAbyssMage: T2DPointArray;
begin
writeLn('==============Looking for Dark Mage!===============');
MouseScroll(MainScreen.GetBounds.GetMiddle, 4);
WaitRandom(500);
if FindColorsTolerance(TpaAbyssMage, ColorAbyssMage, MainScreen.GetBounds, ColorTolAbyssMage) then
begin
AtpaAbyssMage := TpaAbyssMage.ToAtpa(20);
SortAtpaSize(AtpaAbyssMage, True);
TpaAbyssMage := AtpaAbyssMage[Low(AtpaAbyssMage)];
Mouse(MedianTpa(TpaAbyssMage), MOUSE_LEFT);
WaitRandom(6000);
end
end;

procedure ChatWithAbyssMage;
var
IX: Integer; b: string;
begin
for IX := 1 to 6 do
begin
writeLn('==============Clicking continue!===============');
ConversationBox.Continue(True, True);
WaitRandom(1000);
end
ConversationBox.SelectOption(['Can you repair mv pouches?']);
writeLn('==============Selecting repair pouches!===============');
wait(500 + randomrange(100,150));
for IX := 1 to 2 do
begin
writeLn('==============Clicking continue!===============');
wait(500 + randomrange(100,150));
ConversationBox.Continue(True, True);
end
end;

procedure RepairPouches; //goes through the procedures to repair pouches
begin
CastRepairSpell;
//CastNpcContact;
//SelectAbyssMage;
//ChatWithAbyssMage;
end;

procedure RepairPouchesIfNeeded; //if pouches need repair this begins the process
begin
writeln('======checking pouches======');
if HavePouchesDecayed = true then
begin
writeLn('==============Beggining repair pouches!===============');
RepairPouches;
end
end;

procedure OpenBank; //tires to find banker,if found it left clicks on it to open bank, if pin screen is open it terminates script. it then checks to see if bank is open, if it is then it exits procedure, if it isnt open it goes to TeleToMoonClan
var
ColorsFound: TPointArray;
MidPoint: TPoint;
begin
if FindColorsTolerance(ColorsFound, ColorBanker, MainScreen.GetBounds, ColorTolBanker) then
begin
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
wait(900 + randomrange(50,100));
if pinscreen.isOpen() then
begin
Writeln('======pin screen open, terminating script======');
terminateScript();
end
end
begin
wait(1500 + randomrange(50,100));
if bankscreen.isOpen then
goto WithdrawessLabel;
end
end;

procedure WithdrawEss; //check to see if bank is open, if so it withdraws essense until pack is full or its tried 5 or more times. if bank is not open it goes to TeleToMoonClanLabel.
begin
//repeat
writeLn('=====Withdrawing essence=====');
BankScreen.Withdraw(10, WITHDRAW_AMOUNT_ALL, ['']);
wait(1500 + randomrange(5,20));
//inc(WE);
//until bankscreen.getPackCount = 28 or (WE >= 2);
end
procedure FillPouches1; //looks for giant pouch, rightclicks it, selects fill, and repeats until pack=16 or its tried 2 times
var
FG: Integer;
begin
repeat
writeLn('==============Filling up the Giant pouch===============');
Mouse(BankScreen.GetPackSlotBox(1).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Giant pouch'], 0.70);
wait(1000 + randomrange(50,100));
inc(FG);
until ((bankscreen.getPackCount = 16) or (FG > 2));
end;

procedure FillPouches2; //does the same at fillpouch1 but for large=19, medium=13, and small=10
var
FL, FM, FS: Integer;
begin
repeat
writeLn('==============Filling up the large pouch===============');
Mouse(BankScreen.GetPackSlotBox(2).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Large pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FL);
until ((bankscreen.getPackCount = 19) or (FL >= 2));
repeat
writeLn('==============Filling up the Medium pouch===============');
Mouse(BankScreen.GetPackSlotBox(3).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Medium pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FM);
until ((bankscreen.getPackCount = 13) or (FM >= 2));
repeat
writeLn('==============Filling up the small pouch===============');
Mouse(BankScreen.GetPackSlotBox(4).GetMiddle, MOUSE_RIGHT);
ChooseOption.Select(['Fill Small pouch'], 0.80);
wait(1000 + randomrange(50,100));
inc(FS);
until ((bankscreen.getPackCount = 10) or (FS >= 2));
end;

procedure BankStep; //performs included procedures in this order withdrawess,fillpouches1,withdrawess,fillpouches2,withdrawess, and closes bank
var OB: integer;
begin
WaitRandom(200);
WithdrawEss;
FillPouches1;
WithdrawEss;
FillPouches2;
WithdrawEss;
WaitRandom(30);
BankScreen.Close;
WaitRandom(25);
end;

procedure WalkToAltar; //walks to the altar
begin
writeLn('==============Walking to the Altar!===============');
Sps.WalkPath(PathBankToAltar);
wait(randomrange(100,500));
end;

procedure CraftRunes(WaitLonger: Boolean); //finds altar colors, if found it clicks altar. does some stuff im not sure is necessary - probably needs afailsafe
var
ColorsFound: TPointArray;
MidPoint: TPoint;
begin
if FindColorsTolerance(ColorsFound, ColorAltar, MainScreen.GetBounds, ColorTolAltar) then
begin
writeLn('==============Crafting runes!===============');
MidPoint := MedianTpa(ColorsFound);
Mouse(MidPoint, MOUSE_LEFT);
writeLn('==============Done crafting runes!===============');
wait(1500 + randomrange(100,150));
end else
MiniMap.WaitFlag;
if (WaitLonger) then
begin
wait(900 + randomrange(100,150));
end

end;


procedure CraftStep; //combines CraftRunes
var
craftfailure: integer;
begin
repeat
CraftRunes(True);
wait(900 + randomrange(100,150));
inc(craftfailure);
if (craftfailure >=3) then
begin
writeln('===oh shit, need to teleport!!===');
ActionBar.ClickSlot(1);
exit;
end
until ((TabBackPack.Count < 11) or (craftfailure >= 3));
ChatBoxOpen;
writeLn('==============Completely done crafting!===============');
claimTicket();
end;

procedure PrintStatsReport; //makes the stats report - time run, runescrafted, runescrafted p/r, trips made, trips p/h, profit, profit p/r
var
runescrafted, profit, profitPerHour, runesPerHour, tripsPerHour: integer;
begin
runescrafted := TripsMade * 100;
profit := (runescrafted * 344);
profitPerHour := round((profit * 60) / (MyScriptTimer.getTime() / 60000));
runesPerHour := round((runescrafted * 60) / (MyScriptTimer.getTime() / 60000));
tripsPerHour := Round((TripsMade * 60) / (MyScriptTimer.getTime() / 60000));

writeLn('========================================================');
writeLn('Astral Crafter');
writeLn('Time Run: ' + MsToTime(MyScriptTimer.getTime, TIME_FORMAL));
writeLn('Runescrafted: ' + intToStr(runescrafted));
writeLn('Runescrafted Per Hour: ' + intToStr(runesPerHour));
writeLn('Trips Made: ' + intToStr(TripsMade));
writeLn('Trips Per Hour: ' + intToStr(tripsPerHour));
writeLn('Profit Made: ' + intToStr(profit));
writeLn('Per Hour: ' + intToStr(profitPerHour));
writeLn('========================================================');
end;

procedure MainLoopIteration; //the mainloop!
begin
//RestartScript:
WaitRandom(500);
WalkToBank;
RepairPouchesIfNeeded;
OpenBank;
WithdrawEssLabel:
WithdrawEss;
FillPouches1;
WithdrawEss;
FillPouches2;
WithdrawEss;
WaitRandom(30);
BankScreen.Close;
WaitRandom(25);
WalkToAltarLabel:
WalkToAltar;
CraftStep;
TeleToMoonClanLabel:
TeleToMoonclan;
TripsMade := TripsMade + 1;
//cleardebug;
PrintStatsReport;
end;

begin //the brain
SetUp;
whereAreWe;
MyScriptTimer.start;
repeat
MainLoopIteration;
until False;
end.
If you wish to change between NPC Contact/Repair Rune Pouch (the latter is better but has to be unlocked through livid farm)see below for which lines to comment out (//):

NPC Contact:
procedure RepairPouches; //goes through the procedures to repair pouches
begin
//CastRepairSpell;
CastNpcContact;
SelectAbyssMage;
ChatWithAbyssMage;
end;


Repair Rune Pouches (preferred)
procedure RepairPouches; //goes through the procedures to repair pouches
  begin
CastRepairSpell;
//CastNpcContact;
//SelectAbyssMage;
//ChatWithAbyssMage;
end;

Great Script, Thanks :)