SRL Archive - Outdated / Broken

[C]Astralz (Astral-Runecrafter)


Flight

2011-12-12 01:16:58

Maybe I'll spice this thread up later, for now I just wanna get it out there.


SRL Stats Page

Current version: 1.1

Features:
  • Crafts Astral runes on Moonclan Isle
  • Handles all 4 pouches
  • Repairs pouches via Repair Pouch spell or Contact spell
  • Teleports back to the bank via Home teleport or Moonclan teleport
  • Eats user-defined food if you go below a certain health % (also user-defined)
  • Uses HumanMMouse :thumbsup:
  • 100% color
  • Version-checker
  • On-screen progress report
  • Solid break system (By Echo_)
  • World switching option (Switch worlds after every break)
  • SRL Stats
  • Failsafes to ensure endurance

Requirements to run:
  • Newest Simba & SPS (obviously)
  • Lunar Diplomacy quest
  • 40+ Runecrafting
  • 67+ Magic (67 for Contact spell, 69 for Moonclan teleport, 75 + spell unlocked for Repair Rune Pouch spell)

How to use (In-game):
  • Astral runes in first inventory slot
  • Law runes in inventory (for teleporting + repair spells) (you don't need Cosmics/Airs with you all the time, the script will withdraw these)
  • You must be on the Lunar Magics spell book
  • Pure essence + repair runes visible in your first bank page

[Note]:
I've not even tested the Home teleport method, but I don't see why it shouldn't work. If someone could test that, that'd be wonderful. The script should be super stable, I've been running it for hours straight no problems. Have fun, post reports / comments / rants.

~Cheerz

Kyle Undefined

2011-12-12 01:50:20

Ohhh yeah, I'll have to try this out later. Great work on the recent releases!

kingarabian

2011-12-12 03:41:24

Fails trying to Withdraw Air Rune.

Flight

2011-12-12 03:48:20

From: kingarabian
Fails trying to Withdraw Air Rune.


You gotta be kidding me… I tested both repair methods multiple times even for withdrawing runes, it never failed for me. Is it finding the wrong item or just not finding anything at all?

Edit:
I just thought of something. Did you forget to change 'RepairMethod' to "Contact"? It's Spell by default.

kingarabian

2011-12-12 04:04:48

From: Flight
You gotta be kidding me… I tested both repair methods multiple times even for withdrawing runes, it never failed for me. Is it finding the wrong item or just not finding anything at all?

Edit:
I just thought of something. Did you forget to change 'RepairMethod' to "Contact"? It's Spell by default.


RepairMethod = 'contact';
No Idea why it's not withdrawing. It just closes the screen, checks for the spell, does not find the spell, resumes to rcing then repeats.

How in my latest runs it did withdraw my steel pickaxe.

Flight

2011-12-12 04:23:48

From: kingarabian
RepairMethod = 'contact';
No Idea why it's not withdrawing. It just closes the screen, checks for the spell, does not find the spell, resumes to rcing then repeats.

How in my latest runs it did withdraw my steel pickaxe.


I'm out of suggestions, I just cannot understand the problems you've been having. You had similar problems with Naturez, yes?

Try just going down to line 1066 and change those two integers, one should be the 'White' part of an air rune and the other integer the default rune color right beside the white. They must be within 10 or less distance from each other.

kingarabian

2011-12-12 04:32:48

From: Flight
I'm out of suggestions, I just cannot understand the problems you've been having. You had similar problems with Naturez, yes?

Try just going down to line 1066 and change those two integers, one should be the 'White' part of an air rune and the other integer the default rune color right beside the white. They must be within 10 or less distance from each other.


I will take apart your withdrawing Runes procedure and fail proof test it tomorrow. Too depressed.

DaWu

2011-12-12 11:07:35

How many essences per hour this can use up ?

TomTuff

2011-12-12 14:33:54

ZMI next so I can get 82 RC and use this beast? :D

Flight

2011-12-12 20:18:32

From: TomTuff
ZMI next so I can get 82 RC and use this beast? :D


I'd like to. I'll need someone to make a map of underground for SPS.

grats

2011-12-12 20:23:50

From: Flight
I'd like to. I'll need someone to make a map of underground for SPS.


will do!

Scaper

2011-12-13 07:39:26

Looks good wish i still had my main to use this on the way im going with my new char then i can use this soon :D

Runescape Pro

2011-12-13 11:09:24

95k til 82 rc. I can't wait to use this.

Edit: There was a new update today with the chat system… It would be great if you could sort out the contact spell for repairing rune pouches with "space bar" and the numbers. I could do it if I wasn't making bloods for 82 rc to use this script. :P

Flight

2011-12-13 11:26:03

From: Runescape Pro
95k til 82 rc. I can't wait to use this.

Edit: There was a new update today with the chat system… It would be great if you could sort out the contact spell for repairing rune pouches with "space bar" and the numbers. I could do it if I wasn't making bloods for 82 rc to use this script. :P


Does anyone know if the current NPC Chat in SRL still works after the update?

Claymore

2011-12-13 23:52:46

Nope.

Heavenzeyez1

2011-12-15 13:13:01

HpPercent is not functioning for me (I'm not using SMART), so it eats every single time. I'll try with SMART.
Still nothing. It says I'm outdated aswell.

~Eerik.

Flight

2011-12-15 21:54:39

From: Heavenzeyez1
HpPercent is not functioning for me (I'm not using SMART), so it eats every single time. I'll try with SMART.
Still nothing. It says I'm outdated aswell.

~Eerik.


Yeah someone else was having this problem as well. HPPercent is supposed to check your player's stats to get your max Constitution level. I don't know why it works for some people and not others… Anyways I'll put an alternative in V.1.1 in which the user just provides their Constitution level in DeclarePlayers.

Yes the version-checker I believe (now) won't work because it checks for this thread which is members only. I think it can't access this page because the forum thinks it's just a registered user? That's my guess. :p

I'll go ahead and put out V1.1. There's only slight changes.

Heavenzeyez1

2011-12-16 00:35:56

=-=-=-=-=-=-=-= Astralz 1.0 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 5 Minutes and 54 Seconds
Runes crafted: 3737
Exp gained: 20792
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
Longest I can get.
It always ends up after teleporting. Dunno if it can't find the bank or something.
How does it search the bank? Via DTM of the yellow dots? Because every time I log back in after script has stopped, it doesn't have the yellow banker dots visible. Hope this helps,

~Eerik.

Flight

2011-12-16 01:24:36

From: Heavenzeyez1
=-=-=-=-=-=-=-= Astralz 1.0 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 5 Minutes and 54 Seconds
Runes crafted: 3737
Exp gained: 20792
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
Longest I can get.
It always ends up after teleporting. Dunno if it can't find the bank or something.
How does it search the bank? Via DTM of the yellow dots? Because every time I log back in after script has stopped, it doesn't have the yellow banker dots visible. Hope this helps,

~Eerik.


Yeah before if it couldn't find the bank symbol on the map it'd shutdown. The chances of that happening were pretty rare, but I've updated that in V1.1. Give it a try and lemme know how it works for ya.

Heavenzeyez1

2011-12-16 19:22:28

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 2 Hours, 46 Minutes and 29 Seconds
Runes crafted: 8358
Exp gained: 43220
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
I was standing in the bank. :(

~Eerik.

E: Okay, I've ran it like 5 times now, each time it ends up in bank(30 min-3 hours), no error given. :(

~Eerik.

Aegis

2011-12-18 18:17:29

It wasn't able to find any pure essence when this happened:


After opening the bank, the mouse stayed in the same position, which happened to hover over a tab after the bank had been opened. This caused the hover-text thing to cover the essence. Possibly what Heavenzeyez1 is experiencing? Anyways, I simply added a row of junk and placed all my essence/needed items on the lower row to prevent this from happening.

Also, if you have PouchPriority set to True when not using a Giant pouch, it will still try and craft an extra, non-existent set of essence. I realized this when I accidentally left it on. Anyways, thanks for the script! I'll be running it on an account of mine for a while, and I'll be sure to post whatever progress and/or errors I run into.

E: NPC Contact didn't work. Doesn't withdraw Air Runes.
From: kingarabian

No Idea why it's not withdrawing. It just closes the screen, checks for the spell, does not find the spell, resumes to rcing then repeats.


Same as this. Although, I just realized I have it as "Contact", as in, with an uppercase C. I'll try it with a lowercase.

Kyle Undefined

2011-12-18 18:31:37

Moving the mouse after opening the bank probably wouldn't hurt, would help keep this from happening.

Flight

2011-12-18 20:18:24

Try using this 'WithdrawRunes' function:

Function WithdrawRunes(Method: String): Boolean;
var
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;

if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;

if (Lowercase(Method) = 'contact') then
begin
if FindObjEx_F(13422038, 7434871, 15, 8, MSCX, MSCY, ['Air','ir ru'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(275, 475));
ClickMouse2(True);
Wait(RandomRange(275, 475));
end;
end;

CloseBank;

Result := True;

end;

It's what I personally use in V1.2.

mika

2011-12-19 19:58:48

I got a problem, it keeps withdrawing the ess twice. It uses the bank quickly , withdraws ess, fills both my puches, exits bank and once again uses the bank quickly , withdraws ess, fills both my puches, exits bank(even thou i have ess and bank is full) then it continues working just fine. THE SCRIPT WORKS BUT DOUBLE WITHDRAWS.

teleport with spell did the same thing thus wasting an extra law pointlessly but i fixed it by increasing the teletimer by 2 seconds. How can i fix the withdrawing thou?

Runescape Pro

2011-12-20 06:23:28

After a long wait to use this thing because 82 rc took a while, i was excited but a little disappointed. It's not banking correctly for me. It will try to bank at any place and wont go for the dude you can bank with without having the seal of passage. I'm tired now but tomorrow I'll make it work for me. Other than that, maybe just handling the new chat with key strokes for the contact spell which I'll also do. All in all, with only a few adjustments it will be perfect for me, thank you. I'll post a proggy soon.

Claymore

2011-12-20 06:28:10

The problem behind the error in fixing the pouches with contact spell lies in the cosmic rune's uptext. The only way i went about this is if the uptext doesnt exist, it looks for certain colors in the bank slot in which i set up automatically to see if it matches, and if true then click it. So far its running well for me.

Flight

2011-12-20 06:46:08

From: Deathscytex
The problem behind the error in fixing the pouches with contact spell lies in the cosmic rune's uptext. The only way i went about this is if the uptext doesnt exist, it looks for certain colors in the bank slot in which i set up automatically to see if it matches, and if true then click it. So far its running well for me.


http://villavu.com/forum/showpost.php?p=865479&postcount=23

Aegis

2011-12-20 18:27:19

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 4 Hours, 32 Minutes and 30 Seconds
Runes crafted: 11764
Exp gained: 73407
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Achieved this a couple of days ago. Thanks!

Hero

2011-12-23 17:16:18

Great looking script but… After the script runs down to the altar and makes the runes it then teleports back, Attempts to empty pouches, teleports again, banks. Trying to figure out where in the script that it calls the checking twice.



//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'monkfish'; //Lobster / Monkfish / Shark
EatAt = 70; //Eat at this health percent or less
RestAt = 60; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?

//Pouch settings
SS = 4; //Which slot # has your small pouch (0 for not using)
MS = 3; //Which slot # has your medium pouch (0 for not using)
LS = 2; //Which slot # has your large pouch (0 for not using)
GS = 0; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'contact'; //Spell or Contact
PouchPriority = false; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)

//Break settings
BreakIn = 9999; //How long before we take a break? (minutes)
BreakFor = 15; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction


Aegis

2011-12-23 20:39:48

From: MrDerp
Great looking script but… After the script runs down to the altar and makes the runes it then teleports back, Attempts to empty pouches, teleports again, banks. Trying to figure out where in the script that it calls the checking twice.


Hmm, I haven't had this happen to me. I'm currently running it right now semi-flawlessly. For me, it only sometimes has problems withdrawing runes for NPC Contact. For now, I just keep the runes in my inventory to prevent this from being an issue.

I'm not using the Pouch priority thing though, maybe that's why. Only using small, med, and large pouch.

Hero

2011-12-23 21:08:57

Yeah any scenario with pouches seems to mess up when returning to town. Going to try it without pouches at all ( :I ).

Might not be finding the bank? Spammed right after it gets to the teleport return spot and then proceeds to empty the pouches THEN bank.
Warning! You passed a wrong ys to a finder function: -1. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -2. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -2. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -2. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -5. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -5. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -3. That is below 0, thus out of bounds. Setting the value to 0 for now.
Warning! You passed a wrong ys to a finder function: -6. That is below 0, thus out of bounds. Setting the value to 0 for now.

Edit: Even without pouches set it still attempts to find them then teleports again. :3

Flight

2011-12-23 21:16:14

From: Aegis
Hmm, I haven't had this happen to me. I'm currently running it right now semi-flawlessly. For me, it only sometimes has problems withdrawing runes for NPC Contact. For now, I just keep the runes in my inventory to prevent this from being an issue.

I'm not using the Pouch priority thing though, maybe that's why. Only using small, med, and large pouch.


That could be why, yes. Non pouch priority I've basically made blindly. Have you tried using the WithdrawRunes function I posted earlier on this page?

Aegis

2011-12-24 12:13:35

From: Flight
That could be why, yes. Non pouch priority I've basically made blindly. Have you tried using the WithdrawRunes function I posted earlier on this page?


Yeah, it withdraws it sometimes. I think it's just a DTM issue. I've seen the essence/runes severely disfigured sometimes, and I'm sure that could cause some problems. Oh, and..


I've ran this for around 30+ hours in the past week or so. Didn't think of it dying. I should've banked excess runes. Oh well! I probably made someone's day.

:)

Flight

2011-12-25 01:05:28

From: Aegis
Yeah, it withdraws it sometimes. I think it's just a DTM issue. I've seen the essence/runes severely disfigured sometimes, and I'm sure that could cause some problems. Oh, and..


I've ran this for around 30+ hours in the past week or so. Didn't think of it dying. I should've banked excess runes. Oh well! I probably made someone's day.

:)


This would be because of a random event I imagine. SPS doesn't even attempt to look for them while running a path. I watched it do the same thing to me one day, but I'm always around when I use a script. I'm sure sorry that happened, Aegis. :(

Aegis

2011-12-26 21:07:17

From: Flight
This would be because of a random event I imagine. SPS doesn't even attempt to look for them while running a path. I watched it do the same thing to me one day, but I'm always around when I use a script. I'm sure sorry that happened, Aegis. :(


It's fine. But what randoms can you die in?

Flight

2011-12-26 21:28:51

You won't die from randoms, you'll die when you come back from a random in the in the middle of a walk using SPS.

Heavenzeyez1

2012-01-06 07:11:22

Hi, so I'm back from Spain, it was amazing. I started off with your Astral script at first.
Everything works like a charm except pouch repairing. It withrew 25 cosmics and then kept opening and closing the bank forever. Other than that still runs great!

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 14 Minutes and 52 Seconds
Runes crafted: 3085
Exp gained: 15336
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

~Eerik.

Heavenzeyez1

2012-01-06 18:20:45

Okay, now it gets stuck repairing the pouch -> It reaches the dialog part 1.2.3. The options part where you must choose second one: "Can you repair my pouch?" It just opens bank.

~Eerik.

Flight

2012-01-06 20:44:07

Yes I figured it would. My NPC chat fix I guess wasn't added to SRL yet, so I'll have to manually include it in the script. I'll be doing this today for Astralz and Naturez as well.

Heavenzeyez1

2012-01-08 17:35:59

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 36 Minutes and 50 Seconds
Runes crafted: 13796
Exp gained: 72186
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

Nice script, man!!

~Eerik.

Heavenzeyez1

2012-01-10 18:18:33

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 19 Minutes and 28 Seconds
Runes crafted: 24483
Exp gained: 125603
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I dp-ed, so ppl will see how good this script is, much love! <3

~Eerik.

Flight

2012-01-10 19:32:23

From: Heavenzeyez1
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 19 Minutes and 28 Seconds
Runes crafted: 24483
Exp gained: 125603
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I dp-ed, so ppl will see how good this script is, much love! <3

~Eerik.


Very nice indeed. :)

Heavenzeyez1

2012-01-11 05:23:53

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 59 Minutes and 9 Seconds
Runes crafted: 22744
Exp gained: 93921
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 39 Minutes and 29 Seconds
Runes crafted: 31314
Exp gained: 131200
Breaks: 3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 45 Minutes and 55 Seconds
Runes crafted: 29636
Exp gained: 121836
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 22 Minutes and 50 Seconds
Runes crafted: 14340
Exp gained: 59542
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<3

~Eerik.

Scaper

2012-01-13 21:22:00

From: Heavenzeyez1
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 59 Minutes and 9 Seconds
Runes crafted: 22744
Exp gained: 93921
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 39 Minutes and 29 Seconds
Runes crafted: 31314
Exp gained: 131200
Breaks: 3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 45 Minutes and 55 Seconds
Runes crafted: 29636
Exp gained: 121836
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 22 Minutes and 50 Seconds
Runes crafted: 14340
Exp gained: 59542
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<3

~Eerik.



Can I ask are you using pouchs?

Heavenzeyez1

2012-01-14 17:45:33

Yes, I'm using all the pouches. :)
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 22 Minutes and 59 Seconds
Runes crafted: 33378
Exp gained: 145092
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

~Eerik.

PatDuffy

2012-01-14 17:50:15

From: Heavenzeyez1
Yes, I'm using all the pouches. :)


~Eerik.


Dam, I always have an issue of it trying to bank, did you edit anything? :p

Heavenzeyez1

2012-01-14 17:57:44

From: PatDuffy
Dam, I always have an issue of it trying to bank, did you edit anything? :p


I've edited quite a lot there. Waitings and everything. Wanna see my copy?

~Eerik.

PatDuffy

2012-01-14 18:18:27

From: Heavenzeyez1
I've edited quite a lot there. Waitings and everything. Wanna see my copy?

~Eerik.


Depends on if Flight would find offence in it :p

Flight

2012-01-14 21:14:11

Not at all. My priorities remain elsewhere. Post away.

PatDuffy

2012-01-14 21:19:49

From: Flight
Not at all. My priorities remain elsewhere. Post away.


I know that feel :p

I'm so close to finishing my Aviansie killer I can almost taste it literally… I can't be bothered to make fixes for my other scripts if they don't work for a day or two.

Heavenzeyez1

2012-01-15 06:31:01

                  {/////////////////////////////////////////
// ~Astralz by Flight~ //
// //
// Version: 1.1 //
/////////////////////////////////////////}

program Astralz;

{$define SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
//{$i SRL/SRL/Misc/stats.simba}
// {$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = ; //Your (max) Constitution/Hitpoints level
Food = 'lobster'; //Lobster / Monkfish / Shark
EatAt = 70; //Eat at this health percent or less
RestAt = 60; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?

//Pouch settings
SS = 2; //Which slot # has your small pouch (0 for not using)
MS = 3; //Which slot # has your medium pouch (0 for not using)
LS = 4; //Which slot # has your large pouch (0 for not using)
GS = 5; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'spell'; //Spell or Contact
PouchPriority = True; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 15; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction


Var

//Static
Version: String;
XPMod: Extended;
Path_ToAltar: TPointArray;
ReportTime,CommitTime,EssPrice,
AstralPrice,Profit,PostID: Integer;

//Dynamic
RuneCount,Exp,Exp_C,
RuneCount_C: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';
Level[SKILL_HITPOINTS] := HPLevel;
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'Runecrafting';
Active := True;
end;
end;

Function CashStringToInt(S: string): Integer; //Thanks TomTuff!
Var
i, ii: Integer;
Numbs: TStringArray;
Temp: string;
begin
Temp := '';
Numbs := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'b'];
for i := 1 to High(S) do
for ii := 0 to High(Numbs) do
if S[i] = Numbs[ii] then
case ii of
0..9: Temp := Temp + Numbs[ii];
10..12:
begin
Result := StrToInt(Temp);
case ii of
10: Result := Result * 100; //Since price is given to 1 decimal,
11: Result := Result * 100000; //instead of multiplying by the entire
12: Result := Result * 100000000; //factor, you must multiply by factor/10
end;
end;
end;
if (Result = 0) then
Result := StrToInt(Temp);
end;

Function GetPrice(ItemID: Integer): Integer;
begin
Result := CashStringToInt(Between('<td>', '</td>', GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' + IntToStr(ItemID))));
end;

Procedure LoadVars;
begin
Version := '1.1';
PostID := 860614;
XPMod := 8.7;
MarkTime(ReportTime);
MarkTime(CommitTime);
EssPrice := GetPrice(7936);
AstralPrice := GetPrice(9075);
MouseSpeed := RandomRange(17, 19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

Path_ToAltar := [Point(243, 970), Point(291, 978), Point(293, 1031), Point(305, 1086),Point(340, 1123),
Point(376, 1158), Point(399, 1190), Point(433, 1177), Point(449, 1173), Point(460, 1175)];
end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(115,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(115,SRLStats_Username,SRLStats_Password);
end;

// procedure ClearSmartCanvas;
// {$IFDEF SMART}
{ var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except end; }
// {$ELSE}
// begin
// {$ENDIF}
// end;

Procedure Report;
begin
// ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Astralz '+Version+' by Flight =-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Runes crafted: '+IntToStr(RuneCount));
WriteLn('Exp gained: '+IntToStr(Exp));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure Commit;
begin
stats_IncVariable('Astral Runes (Crafted)', RuneCount_C);
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
RuneCount_C := 0;
Exp_C := 0;
MarkTime(CommitTime);
end;

{ Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
// SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(291, 66, 'meJztXQd8VcXylt679CodpRqad' +
'JAqiIggiCAKWHgqdsSCDRFRlKKI7YlPRREEEQghQCokpIf0nltze+' +
'89/++cuTm5KYSUm5c/PPa3Lw9zb87Zs2e+mW9mZ2fvuKOBW/u2rQb' +
'36z5mWL977x5AfcSg3s2bNW3ocf23W5PGjXt37zR6aN9xI/pTH35X' +
'z5YtmjX0uG6d1qJ50zHD+wXccxf6+FGDJo0dFjByIP1nr64dG3p09' +
'ds6tGsNZNHD+vb/NawBUCOH9Kk4D/cM7n0ba35pzZo2IZRNHT/y/X' +
'e3RV2ODDoTeO7MmVXLl9JUt7p155lD2eJ5M77a+0VGSqpaoQwOOjd' +
'94ij8snuX9g09wP9SwysmGZg8dtjWV1/MSE/TabUn/zo2e8q9hLWG' +
'HuCt0Pr17EIzHB4WolIq0q6lREVevnT+4tUr0TMnj8VH3TrfmvLWt' +
'nULsCM84LLFc7VqtVwiL/Z4rCZLscvz9FNr/3eAxqFs9tR742Jjin' +
'1aRHgofg9S3dBjvOkb2BGp9Oc2PSkSCPJzcpITEhPjElOTUwty8x5' +
'/dNmtCrSWJdK1cM5UrUbjsFnlEplRZyABW/3Ig/8jQAOfGT2MmYc5' +
'08YLBHwvwFwe+v+C/PzbQPNL69/rTsacjRt+4fx5oCw3KyslKTknM' +
'1vI46uVysdYebv1gAbpGjW0L+lwSBdQZtDptCqNXqODdDls9vunjc' +
'ennTu0beiR1m9r1OiO4Xf1xJNOmzAyNyebwOVxuoq9OCs+euTX20C' +
're2verAmZsw3r1qQkJylk0rzsHDBG2DJYN7VCjvnHp3d2atfQI/Vn' +
'a9y40YhBvRjpGj8yLTUF4mTU6+GaifhCs96gV2vdDufE0UPwhdYtm' +
'zf0YOu39e3BeA3jRw46eeK4y+6wmS1Om521aG4C2mMrGD992ICeDT' +
'3Sm7vRPMOcnf7n77SUa3KJJDcrJzY6pjCvABbtw/fexqdAIvR/Q4/' +
'Un21Qv+54roljhpwPCiRxshiNGqWqSCAy6416jTYiJJSiQIBkQw+2' +
'Hlun9m3oMd9+4xWzweSw2uwWq9VoNmr1MO7A2t4vdtMXbnnLXq+ta' +
'ZPGFAp4esO60EuXroRHZqVnGPU6fmFBVnoW1Pvc6RPw6V19ujb0SP' +
'3Z+vToTMJz6OABLz1yu21mM56Xl1do0ulBnL45sA9fALds6MHWY4N' +
'vPnY48/ZXLF1gM1kIX0adXilV6NU6IC7mahR0Eb4wsE+3hh7szd16' +
'd+tEwcaTx/86/fc/F4KCRXx+XnYuqGN2ZtbhH78ngWzTqkVDj9RvD' +
'RyYHuqtra9wgTW71SoWiArzCoWFAp1a47BYt77yIr4zpH/3hh5vPb' +
'ahA3qwCzr3ZKdnFLs9YMvgjRajSaNQw6w7nc4Fs+/DF0YO6XNrm/X' +
'6bpg9UmhPrV198fzF40ePnztzJi46NisjMyEuPicra+nCOQw5v+vW' +
'IedtW7cgh3T9mhUcyjwul0mvV0ikRq0ODhp+A3l7YvUj+BpsX0MPu' +
'b4ap3B+OPSNVqU16Y0GrR4/wRiVMkWxp/j1l18gr+FWUrMN0rp1ac' +
'/4KaOHnDpx4vTJU0ePHDl+9Njl8Mj0lLSMtPQTfx2jFwEa39Aj9U9' +
'jgthsmHHhnKkWs5liaxAtk85Yumjk8ThtdqvRRMr8FgsBcQ0uA61r' +
'rFu13KgzkGuGjn+r5EqDVhccdG78yEH4AjhPQw/2pm/3DGaSbVY9v' +
'CQ8JCw85NLRI7///uuRwNNnr4RfyUhNX7tqOdGGhh6mfxoXxAZTys' +
'zMYKMfZnQK5pObJhVJ5BKZRql2WGxTA+7Gl2EBG3rg9dIG9GYWdKb' +
'cO0IkFMJ8A2Iuu6PY5YKDppDI4T7MmRpAGWiNbnPGurW2rVuWMIdD' +
'506fCwm+8M/JU6f/Pn3hXHBCbHxkWAR5wd27dGjokfqn0VrhhFFME' +
'NsLLKcLXkmxu9SaqRUqnUarVWusFitNzi0Wa6XWvk0rerpPd36Ip3' +
'ba7S6HA6YcWIPaUUoVK5YuxKfjRvS/nd9Y90Y5V3NnTIqNirkScfl' +
'i0MUTf/51/mxQTNTV9JTUF57biE/hwTW5JbzgLh3bkmh99P47JfbL' +
'g27QGkrjIRarWqHUaTR6jTYpIZ7ck4YeuP8bHHNapl+6cDbZcTy4x' +
'WRy2mwwZ+CN299683Y831+tUSNvGOS1Lc+np6QnxSddS0yOCA2Pir' +
'icmnxNUFg4bQKTT9v3lggFQC3TEsbjjy4rLtdcbl+gmQ0GpUyuUaq' +
'O/3HkVo3tk4KdNGZoclIix5ktRpNJbzDqDdFXLuMjfAHcsqFHeis0' +
'0vATRg2Oi76aGJd4LTEpOzMzLycnLzdHKZcd2Ps56fMWN/8OkcaNG' +
't0zuDeTxTc1QK1W+YIMvFGn1pZDnkGnxy/3f/H5LRZupdaujddf2P' +
'7WG75PbbNYQCDRl8yfSRrm1mAyDd6GD2Syj9asXGo2GvOyc3OzsoR' +
'8nkxSJBYJLGbjA/dPw6eD+t4Ka5QDenelyGpEeGg5TLmdzvIGjlXv' +
'VrP54P69+KvB/W6pRTSQRtprtnjeDI/biVdvNZmZVTOVWq/VgTa/9' +
'pI3ng88Nm3SmHqTJo0beuA3a2verCmptTOnTzlsNplEqpDJ1EqF2W' +
'QQCni//XyYPm3bumVDj7SujXPNPtv1cUVIlcYbyzaI38F9X956QCP' +
'SCJ0TE3UFTlmRUCyXyKRiicWEN2+MCAudOHowmbNye2Dxn7f8zt/6' +
'aN06M8tn0yeOJmFTK1XFHrfdZpFLpfk5uQ8tup+J6w7s1dDDrGtr2' +
'dzrmq1d9XBFNBm0+kpRxn6k2/PpJ7cY0Dq2a02o2frqFq1aA6Che1' +
'xuOKRGnR5Ye2jRnICyu6onjxs+eeyw21irdRvSn0m82fjEY6BJaoW' +
'akS2PR6fWCHmC4HNB49nyBTd7xKlRoztGsPR41n3jyrlmvij76/jR' +
'ikDTKNWf7vjopgYaPNNWLZp3at+mZ9eOA/t0u3tQb24LuYDHkxYVw' +
'R0DcwZJBmM0G4yCAt7KhxZu3vjEzo/e+/3Xn1OSk1QKJcyc1WzRKJ' +
'Qv/etpNtp/qyWW12sDUceMYd5+Ofyj2WgiuYL7L+KLJKKip9auxke' +
'jh/a92Zcp+3TvTFs/ggLPlEGRx202mCwG5sFjY67ed++IcijTqjSy' +
'Iunuj3f814CGN9K2dQuw3F7dOgEU0A9jh/enPmZ4P3jT+D2sc9UXa' +
'dmiGa7Qp0fnIf27wxGrtP7JlIC7Q4IvFubnA2haldrjcrE82QQdq5' +
'Ip8BswSYeVCb2S7i3VSwYD/hZi8z9VPqWOjbZFTBwzBCoLc8jwc70' +
'RHrFSrsjOyCKq0PMmJwnt27QiSdv2xsskKjazFbZbo1Bzu6cFAj6M' +
'Hb7jizKr0axXa+G87N5Zv0Br1bJ5187tBvS6k7M1VXeGuXUr/1Jgt' +
'jp3aDOwbzeupJJvh5KBd7Do/umPP/rw1tde+vf3314Oj0hNvpadmS' +
'ng8a1mUzkN47DaKyXSLqczJzNr+oRRt4FWo3YXG4Vb+dAip83utNl' +
'AHsAibGaLTCLZ9trLlA/Q9GYONGHwlND44IJZYEe0DutxuHyFx2I2' +
'L543nQSyrLDZLEYzdPuXu3fVB9BaNG/au1unimWmJo0ZOn/W5BVLF' +
'27e9OSH29/59efDeVnZibGx3x38Gr+ZOXkMfY3DWqNGjaAMaSWU69' +
'MmjFqyYPaTa1e/++YbP33/XURY2NWoqPDQkNirVxPi4q4lJSUnJGS' +
'kphbmF/AKCgA0u9VSXLKJmkmScbqcdofL6fK43TB2Htai2W22rLT0' +
'xfNmkmDcBlr1G2m/T3a8D3AxWQFWK5MLodWCUcyYxLzQ/r1u7pXKw' +
'eyOTnBCyBWMtUIilxfJmFSr4tIiGGtWLuXk0xdoTpsDHT7L57t2+h' +
'dorVs2H9Svu6/xmj3l3jUrH9q14/2w0EvQBwqplF/AE/GFsiKJWqH' +
'CyIuEorzsXIlIhHdEXhKRDVBNWp2hldBlD8z9cPvbV8IjAZ+0lBTA' +
'KuhsIHrYpUuXIyLCQ0OvREbGREUnxsdnpadnpWfga2Usmsetkiulo' +
'iLYcfgO8NPR+YW8o7/9+sqLmxfNAXwHEco6tmvtr9m45RutV44fOV' +
'DAKyxRZU61Uiko5H3y0Qf07m7q9DYKqKJ/8ekuu9kKX0yrVGuVGhZ' +
'EdoLbyy8862sIyjloYNGQt48/eM9fQGverMldfbpyt5s+cdTmTesD' +
'T5/OSs8UFPKNegNIhcWMm0LOxbx8HmBut8CyWvGfQh5fIZMCaPCYX' +
'ty8iQSeUAb5x3XSklIyUtJTkq7FRsUkxMRnpqXFxVy9GBwcFBh47s' +
'zZ84HnzgcGBp8LCrsYEnc1JiczE0AT8flFIpFIINSp1fTUZqMRblr' +
'atdSv9n753Kb1C+dMpRoOXIfprD7KoAe6d+kw7K6eXP3V0cP69fof' +
'2wLQl91ZvHjeDIfdxjAoo8lqMitkcrypeTMnBzD7HHs09Bhr31oxq' +
'VbevWaw1y6b3aw3Oiy2YheTzkdCtWf3To6GVQQa7caSiiX+8tHgQ3' +
'EEb+70CV/s/gQGRVpUJJdKefkFcIphv2Bf8nJy8e+C3HywVofNBjI' +
'PsqFSKPAbWDStWmXQ6vgFBQQ0Wgv78/cjzK4WrR4GKP5qXEZqGi6Y' +
'EBsP4xVy4WLIxYuA2LmzZ08cO3bmn38uh4fj9zlcWoJQiGHg+7Kio' +
'r17Pt3wxGqMbXxJsVzOKxwxsFefHp3bt23VqNqhMcba3tWrUjfzfw' +
'pr5B28vfVVk8HgcjjwQpVyeVZG5o/ffkuzgVlt6DHWskEY7h7U2xv' +
'PV5bG82HFvLyxuPjPP44QEYKjij+pCDQKtXlczn17dtcdaL26dizx' +
'nkZ+9skO8HMBj5eTmQWWXpCXD6cYM88vKCzMy8/Jys7PyQUAgTJwD' +
'MZFcrnANOQSKb4GRIBy/HL4Jw5o29/aKiuSKmVKqAUCWnpKamZaOn' +
'5eDouIvnIlKvJy6MVLf5848defx04e/wv+WkZaGmyokMfjFwLpYgG' +
'fJxGL4MaWsVwj+g8d0AMqqH2bVrXYUs1uROpFobZnNqw79vsRtUKZ' +
'nZX56pZ/BdRknz687FYtm+PL1FuCE9xUQQMMmJ43+nKk2WiwWcxQl' +
'XjpSQkJqx9hfJYbbj3D/FP1v5p2GJrRQ/vCXIK71tPTkbEGjs78fa' +
'rS6FliQjwctwC2mhNp6EqABjfO7oCh3/v5p3UEGoeyVcuXyKRSo14' +
'n5PNBz1KTrwFTMokUdFEhk/EKCoV8QX5uHlDG5ESZzcAaBd7NBgOA' +
'VpiXh7+CkaLd7mSys9Kz4MepFWqzwZSfnRcdGYUOchgfE5sYFx8RG' +
'hYREsYA7a8TJ44dB9BCL4bA2MEHhFkUCvhwHLIzM7kN1AP7dAPlrn' +
'uxrx53dqBo56mTf7EzCRXnjUHNZ/lSn+7XzVFv1rQJrD8UYKUR1IC' +
'barsW7aeeOXmsyQBSrme8YKU8MyM9MiJ88rjh+AgTVcWf1xpl5QhJ' +
'fawdcPH8d7a9rtdUkvKh1WioyhCUCRdTpSGBLlpNFlg9/IRPRxbw0' +
'IE65Tp2Z0UO/aXnnylmC5KAIuZl5yYnJKWlpPILeXabFb/UqFQgjb' +
'nZ2blZ2VJxEVBms1gYj4wJUbjtdnt0ZOTnn3wMNTiRzaiHEBLQQG4' +
'xWnidDqtNLBDFRcdGRUZFhkYkxMahR0VeiY2Ojo+JOfzDD1/t33/0' +
'yO/nzgSCOl5LTOLl5wv4/Pzc3AvngyhLv1/PLv56C8SXntu4vkRlO' +
'UHdmZhbcfFrLzFGrWKJpw5tW/XvdWfFMOx944bPmTZ+7vSJ0yeOnl' +
'SSneJfrEEMAO3+JSssXIdFAN5vuHBZRaOEkE3r14AxWkwmt9OhVMg' +
'K8nM/2fEBQaBplev+RMweXDDzcmQk/HTwFpVcxcTHDKV1AJiqmxWa' +
'yWTMzMz49uuvKTM8wN9HZjQpG8+v1Jw9+vBi4l2tfPQ2DYbZjWU0A' +
'2IapVotV9IjHPpqf62BBrbjLfsMkWPdQ7B0pUwu4glA3oqEoiKRyG' +
'I06rV6m9kcffkyaOrGJx6D4wzSS5ttK+1AWaf2bQhoh3/4Dl4bAU0' +
'hlWekpifFJcZcib4UfGHnRx+sXfXI3BmTSD7XrV5x/I8//zn5d9il' +
'kOTERFg92LLMjAzcDp9CczZp7B9WBupOTx1y4YLNbC3HxveyVJwDG' +
'ngp1P6oIX3LgOveEbDa77z5emJsrMfphC3Izcrh5xcKCnjrH1sR4L' +
'9dS21btwQWql6+hKjUjn2VJoT8/BOjbRx2h90mFgmzMtMfWbqAEao' +
'blXsi7+DC+XNKuUIikgBlkExmU4lGy1AdSiRweyqVc7j27A/3lpIw' +
'tR+xNrBvtwA2MS8jPc2oL93IyYQU2Lb11S10004dyhQ/4SwasGDSG' +
'XzH+92hr2sNNEr9Wjhnir1kAJAZXn4hxCYzjYk0iviCLz/7BJRyxs' +
'TRNyQAwAKkAmJJiBg6gKnGMH3iqD9++xWXhV1LTkj4+P331qxcNnt' +
'KQLmAxoTRg/G1P3//PfDMmfOB5+C4RYaFJ8bHf/DuW/QFP0bswTxZ' +
'6j4Yb5mpilC2kZsGoEEOQZzG+FAjQP7l5zf/9cfRlMRrWWmZ2elZh' +
'XkFJr0exp2XV4i5KszNvxwaRqqmjoNs0rgRLDgHsSn3jsBb+Oj9dy' +
'4EBznZBhH6/NOddKhH7bBGgX0oTNgXUjRmk7FILIy5GkUUokvHGyQ' +
'3EtDglWvVGmbLv1qLnzKJDP641WyhQBljUDyVYM1X/rewYeoAJp3S' +
'DzV/uPz8A/v2FLORarfDUexmrJILQ/IUnw8K9BaZ6V4+6kV/aNQa9' +
'Oryafy1BlqHktzdwLOnuaupFAohT1CQm1+Yl3/+7Fl6j6Wmalg/3A' +
'iMun3bVi1bNKs6CtGiWdMRA0vDeuPZ2E45VTx0QA8iYyseeuDShQt' +
'giefPBcJ0wncLu3Qp6vJlKj3t321QXdmaWnNnTCw3k6COePsPL55H' +
'r4CD2MTRg9etfiQyLLQgJy8lMQUou5ZwLTE2IS87BzIGlMFF5RcU5' +
'mfnapSqrLT0ugMNNJW2lqMvun/a4X9/77wO/9HpdEvml1j8GsZher' +
'K++ZIFM1n74tKolXKZNDcna9fHH5LmvOEFCWhsKWOpTq2xmswwbUq' +
'ZQq/RUfapxWQGk6l05OXknw6PGF7nDQJc/U/aOm0yGKzQIzqvjwbU' +
'y8SSOWz9/BGDelUMUdOca5UaWmjzC9AGseb14SXzygibxSIvkoBvp' +
'6Wk0FFQTAiib7fOHdq2aF7jXAvCmi/zgTzgvnBhwFob+STqf/fNN5' +
'cjIqIiIy+cPx8eEoJ/XA6PeP7ZjTSAWty6ikaOyZOPrywzjy5mNVy' +
'v0frqFtjZtasfib0arZDJjDqdVCSGCQOpzs3MzkhNA7gUzNoHY8sk' +
'4iL0IqF42+uv1AVooLW0RQh90tihH733ttvtLq6y5eXlTh7HcO+qA' +
'xeVzQOTL/Hi5k3M07tccBN4BfnxsTGrljMyDx14wyuQH7R29XKHnX' +
'Ht8fhAGW1oAtDg5pgNRkhUxTFXlP/jvzOFAsaO6F+7eePaMLaq1Yx' +
'Jo2VSaTFbWsdqNkMJcLfevGl91dwMHRqj4pg5oNU0G4105sEDe32v' +
'ZrfZoKXlUunaVQ8HsOu/rfxRzx+qg3q5RjL/wNzpEaHhoRdDrkREJ' +
'MbH4V1HX76CPiXgHnw6wK/5P5xjAjNR+tggODY7Xgo0DNlQBmKrlg' +
'cFnuUXFsqlEBsDPE3IEmDF1NOIS0xLTkmOT0q7lpqTkY3fA4Ynjh3' +
'91zNPgZEG1DZnqWXzZiPY8EIAezIXnbNQdXPDrzJbnn7y8VqYA9L8' +
'P/34XTGbJirk89JTU65GXaG0q+rA9s6ObUmLwkY8/+yGQ1/vjwwNA' +
'Vq1KjWsFdw0t8PpGxjhWkX5V8pktQAaaFW3zu0H9L4TgnTP4D5jR9' +
'BC8MDjf/5RzITpXFCeDpsNeCcf4cTxP/HpDYFW6VQT0KgDztXfy0B' +
'2Pz0t1fdqOrVaUFgoEYvJnHWtz3N5mjX1Hlmye+fHsdEx8Mtioq4y' +
'P6OjM9PS3me9M3yhLlG1io0Is49jwmSNwrnwON1KmRJu10OL5m5Yt' +
'yY4KIgqZogEfGmR2Ga1MHsHNBpBAQ+8GiiLj4lLik/8/tChV1547t' +
'FlD0wdfw/3FoCyxjXfUtKpfRuSkwmjBn2wfRvJSVUYc7nRdSrGOfr' +
'9l19IK1b/dq1aeFfQJJIij8cD7hcfExMXE3Py+HH6fTUVLIe16nTY' +
'6M92fVxR/uE3AeM1AlrH9q2p7kfFDsh7Z8jh8K5Tu5myabSCg39IR' +
'RKz3igo4PvSWqphyGTUEoXwML8x6gywy/SFSxeCly6cTetuNcIaAQ' +
'0kn7uXSq7IycwGL4IaJ3e4XouygkAGsBE8IY8PPpYQGw/RvZaYlBA' +
'Xl5qcvHDO1NpR4qobETOGMFfw0PHeC/PzU5OvXTp/MTwkDCPBf8Jt' +
'KRIJoW/x1iwmE6ZIyOPt/fwz4JGmyLeDJzMZnjVHGcwHievMyWPOn' +
'jllt1lMRj3QbbdZK6Vexew+aDiVtIMjJTE5gF24rP4d4QsEsNVpvA' +
'ZFLse0Xwq+8OLmZ2pKfYHZHnd2hE2Buz1uRP/roSyAzUiPjblaqfw' +
'/u4E5SbOa0VqgjEM3qP7GJx7b+eH27w5+FR5yUalUlMyQ22QoEzaE' +
'OjUzJYiZX2qUaolQYjGW3xhSaYOn6fEpjQWzSMkkHaqXM0NzEhEea' +
'jaYYOsVUllGSnp2emZqcgrEnqgjvnPD0FOtG51FtW71IxCVvOwc3D' +
'cjlckYSU5I/PPIbzSNfs//oUD9B+9uqxh2Bm2G25WTmQVrBSobExU' +
'NRxVGDUCTiEQ2OBw63feHDtJRdAElsda7B/UGeDFLtdtqClBSGU/0' +
'5Uvm8QsLrBaTXqcxGvQGvQ421GaxFlfWaKMiRKVIUARDXFOg9e7On' +
'GSx+pEHi5ncWpu0qCgpIT4sJGT5g4v8rt96lKzV7t61o1L5vxh0jm' +
'Jl1Vl/5FaiVzy00Le6Dq7DKSWn3aZVa7hgfjGznOeEUuJMGHxJhVR' +
'RatGutwZR0nBl3+pYyx64v5qjvYMp/sxY3l073mdS4sWSwrzCzLSM' +
'vKwclVyOqRCLRfNmTqL5gbLy+8lrHHX57fDPIr5ALBBKhGJ+AY+XX' +
'5CTlVlPpadbltw0MiwUuoVddPASA6vJolIo2RyzLBi1xLj4+JhYKH' +
'kQSIVMBmYVGx297IG5pSx9QE+Aq44JV0AZ7eBAf3bDOr1eYzYZnA6' +
'7VqNGp/I4lOt7vWY3Ww1a/T8n/q4p0Oi+Lzy7CX/uZkyMEiwCvH3O' +
'1PHVdNCq2TqWnLq+edP6SuVfzBfOZyUNAlkdLjCMXTZasmCm01lma' +
'QbGkSmui1dptnCpjL4NjAUPSyXlgRrmqK/i4kqXHio0j9vpNOlLnc' +
'1nNqyrPtBoux/UAv7QYbdD2tHBjrhbg9GtYlfPA0rSn/zoLpFGnXX' +
'fOJVMbrdaMQD8ZHYHGI1igWDq+JHs6/ZzZg4uyNKzscJCgVRUpJDK' +
'oeVg0KHSlXIlwA7OnJOZCaMGnxGGFf9QKRSYk3ffeoMjikMH9PDLU' +
'RqNGjWiWND4kYN2fPCO02EDykwmgwX/p9dp1SqjQWdkCKS5UmeNvB' +
'tm04dKs33b1prqJQqFgW7BJsLLEwtE1xKTLwQF02P6K/8QE0XE6ZE' +
'H55uNpkrlf+VDi0hLVHNWKYYDaoFXA+HBu8Nl4V9TnpXnOusgXsA4' +
'XczZQ8z+VnvxjcK5PjBzwaP0XXJ9ePHc6gOt5Fy/gWGXLhSzegBEx' +
'VNyd71GAzUOL+CnH76l4vYEt7v6dPXL7iQ6TOGlzU/7pujgcfAzOC' +
'iQbuffqP4dJaULn3lqLSw4DKhaoYRRY5IZtFqNSi0RwaQWZGdkigT' +
'CtGup4LEw8T//8ANlxJEH4a9TVIAyOogKbP/Q1/ttNgssF94nUGaG' +
'e6bTohsMOq1G+fGH2yGl90+fMH/W5A3rVhUW5PvKgFFrgGg9MJcpu' +
'lj98GyTxo3oiagyrcNiM2h0ElHRuTNn6fdVZ15Vs/mcuj5FqypfDI' +
'fav555KqCGS9X0/ZioKKm4CL6zQiLDqzRomVCD2+XC26wOdtTyysd' +
'TeWOAxu5cYxlmUOAZCl12qHYSxd0l9VpFAj4cEGCNOwwaQNMoVfAc' +
'YXAhll9+totbYGLg1rtrXY4h4yhcyIXgirb7pecZfxy+T62vX2lr3' +
'qwJ3fTM3yfNbA6tlV1ONekNvLxCWZFUJVfIJBK4Y4yqVChAI598fB' +
'X3yH17dPHXyWs+KBv83cEDNqvF7XKyQHPCflktZqNeD7N2/NiRWfe' +
'NLRdPwMuiFSKmudxWo+nnf/9AH7WrdtFFyo2ZNHYotJzNbHNYHeBF' +
'MrFk/x6mGK9fTgBv3qyp99T1KffyeYWVyv8br7xAI68RU6U/SU26l' +
'pyQlJqUIuaLmPL4YKQ2O14lc4zXjRpsE2PRPJ7rpUGy2CrzEVMji4' +
'2H/PDdN1PYM2VqVHwPjhIZ4hmTxuz74nOzsZSFgsc6rMy5LRqFWq/' +
'RMkdEOZ1fAG5TvXADo651ieCu7KZXb8jLVd6CL104O6AeqsHQTttp' +
'E0YSuMwGA14QwRz/iWfEy4IJkYhF0qKi2KtRXNBj+F29/OuiEmkHy' +
'n775efyL9jjYTaFOWwHD3xJe1qB8QG974Sn07VzO3pZ8J2Dg87J5f' +
'KgM6e3vvoiJZ3WaHsmkRlcp0SqvLrukw+ZTcR1r3oNlFHCz/SJo1K' +
'SkiqV/+1vvUHTWzEPqupGf7Vvzx4ALT8nryCnQCaW4vVBczLlT6/j' +
'cmk1moT42F8PH963Z/dH778DjL+25V+vv/T86y+/ULGXB53DCf/i1' +
'F/HKXGLUFbT2BeHNfT5MydfPH+u3C0ANMwSx67dbvenH39AL7fWWK' +
'M424Z1qyudk/vYDRp+jzdSqvnGJ1ZT/Tq8fbgndqvN7XSBeIAnQ8+' +
'AsME5iom6QsVP4Dj4MSxAjQvB7dm9s3KZcLvf3fYakZMRg3r7EnXg' +
'vVz1FS5aVSNrSwsrcM+ZnVaG0hA3EbkBvet0ODVjy9jQ7tTx94Rfu' +
'lip/H/EHjcfwByZUeMdGZT7cd+9I55/dsO3B7+KvRptMzPFc1QypU' +
'ln5KJb+7/8fPmD88Fa8SqrSICvtJd/Ix4PgHZw3176dHC/7rWLMLd' +
's3oyYDDnmLzy7wVASgIWFlRfJCGgU0ilm0kF1586epsHX7phRmqv3' +
'3n6zopRlZ2V63QS/7qBs27qFl6xeDC52gaLZKb2cPUHVAPdELBAqZ' +
'DLw5+zMDCJso4f29UtWjG/r0NYbmoZIXwdkbopo0QsFfAAuWEAMBv' +
'4OdaCPq/I3YlAvWISactq+7GIifFWlVKEtIXWYjJXLHgjwKaxUi8a' +
'hbNqEUTFXLleUf7RPdrxPD1i7fU8QcpKfgJI1EdB+c9klg4jw0Als' +
'LWvfPm5Ef9jZ4Xf1HNS3G1Q95q13t/KdAxpUMbNY4HZz5r4u2fu+D' +
'QyfAhTEJM+cZjalGrV6qUiiVWnsFmYdn9kB53Rq1CqFXPbS80w9k9' +
'rtB6F38eOhQxWLMIMUBbApkVVfAaKF6cLdqbe6UXyGzjVYOGcqI1E' +
'uN2098+oNnV4pk8Oc5efmFomEFFiAPPs3I+UOVkIoOLBs8dxKk4RN' +
'JuOjrKgzqr5nF0CMwpIVO+anLmyWYvtvv/GqRFiklCmdbPk+t8tNS' +
'QK1XjnFAxJjnDZ+ZGxUVEX5R9v1sbfgT7kstRbNmkICqTN5sFVqDt' +
'yIdk+PHzkwPDSknLm0mM33s/ErMC5QblytRfOm1dRFPhbNY2B2wpZ' +
'e2l9Au4Nd1oFnRKmAMFh/Hz8GOEP5w26CX4FlwahB54tFwpzszHNn' +
'/wmo4doN14j/RIaFsudPlVmd/+XnfxNlquLPmzdrcvegMuk3VWOtS' +
'ZPGFGRmF0zLNI/TzSxlarRKmSwnK+sxNoecOTujHk5zGMSKNwiVSC' +
'isiDK73f7Ig/Pp7qB2vbp25JIf5s6YCJ6ZkZ4mEPB3fvQeOeOYw1o' +
'H4Wn2vvxst0IiFxQI1HKV1WiG0ps9hQkvVzPhoVxr3KgRbdbAA8bF' +
'xkBaKrpLGDw9ERcghQUEl/bd5UEdI6wCGviIdnZvWLfKd3mLGm1ww' +
'+zVgpD4WjRvyAICwqSvOP0INGqAP4XBZ0+9lxEAi42JwLs9NrNVq1' +
'IV5OaCXCUnJcZER9UaaCRC+Tk5dE4u7dT21RtVuPbQ5JQ0PnH0kD2' +
'f7rwadWUWGw6tYlGDwiCTxw3j8s2gN0ozLtjiQrz8fC7UXB/JMJ07' +
'0GLKXXs/310RZWiUioOZ6dS+DVejD5r50Nf7LSaz7xTl5eXOmzGRJ' +
'r922/RIl549dUqv1pn1Rrxfq8ki4okoobp2q4S013Li6MFUcLui/H' +
'/84XYOZTBJ3bq0H14WX2wR3WnzZ02mmEMVYedeLMebNGZobk42s/3' +
'fZ0sLe6A5497WLpjGAY3JzioJ08EWKKSKQwdqv8O60salK2DavaNn' +
'76jTaArz8mKiokIvXUqMj/vPT/+uNdDocSxsRVw7mLCPgf7hu28Cr' +
'h87BQRISKDVf/r+e7lEolYoN65bXTXQSIFvWr+Gu4vN7JNu4XJZza' +
'Z9ez6jUVVRLaTWrUnjxrS7bcVDCzVKFS36+DbOL7uzkze0CGmBDyW' +
'XSlRKBZwFt6NMFoRMKqWN5wTMmo6H7sXLK4QD7rDagDWXzW7UGaj6' +
'dy2WL7t2bkfX/Gr/l8UMOXeVk//3393GMcahA8rsGQe+nt2w7szfJ' +
'xkxgE/kcYcEB01iIwCV3gsgJX7y6pbNdHGHzUapv/BwgVNiRLULiN' +
'OQMH5m4axkhZfJKdXq/GvR8BR0Tj20CmSebgRPVsOmJ2WmpYWHhgY' +
'HBcVER1OVJLh1tX4ceiMlr8KLtcCzpwm/5QoXAP7cRq3ZUwNOnTyZ' +
'nJBYmFegViiokvP1gAb9HMCFQaiVTWzDGKIvR1ItmupswqpFo/JHk' +
'8YOTUlK0qrUYoFIKZVzGa3vvfMmx5dKZG/UmVMnNSqVRCxSK5VMug' +
'4z0DLrIAaDgaOaNcUa3QXet91sxcvFT4a0eIpJvGsahmpRchbS+jU' +
'rfEfIyT8XY/TFF1Tl+jUrTxw7SueSg72Du1pKYiZU0KPS21HIGs6k' +
'Wq3ycCra4zHqDe+9vZXuUuvUHRobrbJBH2JU8DR1GJtO7y+gNWJrI' +
'pG3DpR9te8Lr1Q6nEzsSA5yVZCekhoRFnYlInLfF5+Rga5dlpSPy+' +
'mLNa/8VDxVoX2bVpwQLl8yHxDLSEvHT4lY/Nt/vGfk4TuV3ovey4J' +
'Zk512Jv5QrnYBk2snFM5lmRgcvfqoMA8PkYzUC89uUEhl6Lx8Hrfn' +
'MeVaMm1h4zrEVSwWFbNblqRisZDHw0+1UqVVq90l9c+pgQ6sXLaIs' +
'xTVH7zv/IMXuRxOSDvIHiWl1zSGOZjdQArDlJZ8zcQWKPCVf1Bl36' +
'e7794Rax9ddviH72ViKewpkwXHbkNAh22FEaRcRDhflQINjoP3rIr' +
'XXsYV4GMyGXR4px5PYUE+SU5dijh5uVaJDoSVt5pMVrMZvOtg3apg' +
'0eB7d+s0umTvPJzZ3/7zs1wigzAwWXB8ES+/UCwQCni8vOyc5ISEd' +
'7dtpbXU4TXZ/lbxcTiBcZXlRVTomNK9BvQuLTwFaIMtFOTm5efm5W' +
'ZlpzCnYGRQvkoVy/SkOna8/w5d3Lcaj8tuh9Z68vFH66gGq25eh2L' +
's0NTkZIBaxBfkZedyJ5hwUTgot0eXPXAhOIgbHhgjvp8YF58Un5Cd' +
'npGVlpGfnVskFDl9MgZNJiM0D10BTwoKV50h0fdVcqVWrTEbTVROx' +
'2ww0u+rX4QWrX3bVvRXu3Z8kJGaLijk+8q/RFIETwovbsHs+158bt' +
'Pxo394472eYgIafurUWiOTgGSCRdMombNdLp0PJshUvB0F9u+fNp5' +
'Joijb1j++MoBNa6lLEacSi2YjLQErAwmhBJL9X3xWU6A1b9a0XZuW' +
'Pe7sgL/yXQDFhKx/bEVGahqz09xshl+AaZGKi6iKSFZ65tUrUcuXL' +
'Ajw5kv0rPUTBXjT1a7Q49jg6bNVXHBT3NrMCM88XzUYwJTOmPrXn0' +
'dButJT0nhsKdeL54Nof8HYEf2vF3IsLSwv4Pvgy1mizI3//u4QXb+' +
'7vxemqUFkyTvb9OTjEEJoqtysHLARLgGgID//oUVz1q1eXnE/NUxY' +
'dkZmbHRMbHRsYhxTokTI48Mt1SiV5b6544N377t3OD0I9BJYdNXWj' +
'b4JK2nQUYqg0+WwO+02smg1WjggwgCHUSWXa1TMAXblxiYSCmGz7F' +
'a7x+n2nihB5s7NeGQ2E2PLYMLQQdisRvO+PbsJZRW9Ei6gRBuofdu' +
'lC8G0xN+1bjso6fow8R4XBNLlcXmcNq8VqCZ1BIGBSb17cG8KJpTt' +
'A++fPuH1l1/ISE/DbJfbLsRU+BeKoKwO//gDbXKn29VFb5CR2rJ5k' +
'9VsgTkjjWFlN3zJJFJAW6VQ7N2zG0PCd97e+tqfvx9JTkxMSUrOzm' +
'AK8ov4wh+//XYqW+gAKKvCEnGF5b0P4+OcwR2A6NJG8npyze5gV6g' +
'J6cFB52CLM1LSsjOygDjfrSLXawDa7k92PLhg9rQJo3AF9IVzpvzn' +
'p++17EkEDpvVbCx9U9AkLN3y7tPHW2YrvbSpNHWnRNFFC/kCE3MRZ' +
'l6g42az2eOg0AP7dEPv3b3TDY0bAe3D7W9VkTdYreZyQektWeAt8w' +
'iUlduCBEJLyZPMHroKifeUtlf3/Fi6u8Nqt5duVXOTd1MdoGHMtMu' +
'S6xCwJfNnbN60/rtvDuTn5Rj03jiY1cxs2If3DRVXzNbBY7ddZ73y' +
'4nPjS85qqXt9AzpNAO6wXCr18kaPR6NSG7jt3m4PHSJjtViEfF70l' +
'SshFy6GXgyBtS3IzX132+s0GBiLqvkeBZDfev2VYh9PkPYL4F7r2F' +
'1vY+vzjCeIK26xdMFsPGlhPsMKgG5okmJXlWUKiotPnjhOnmPF/tz' +
'GJ3QaNVPdLq9ALpH6/lXM1ahnN6zjrBuHuHJuF9GYY3/8Dm4gk0hc' +
'Trxrt1Iu++j9d8sVK7sh1gho3vzAam888W35ubl4QdwOkQC26FnFj' +
'X7EwCeOGZIQG2O3ldkM+5+ffgyo0k+vfvP6aCYzlctz2Gwc4qoDNE' +
'LZ5HHDPtj+VnhYiKHUZrk1GlV+Xq5GrbSYvUZfr9FoVWqlTA52mhQ' +
'X9/STa2mFlDSGX/bINC1ZQYZU+M4YBaC8cHC54IHCT5EWFcXHxp4P' +
'PBd2KSQ8JGTF0oVe7jqw1w0BQiGUf06dLGZLOKKDxoC5yYokv/38E' +
'12nW33WRaHH/GL3TqbQOo+fnZGdmZaZn53HBUMqbVQtmTxHvFkYph' +
'bNm7Zt3YLLlINflpmeISjkWZmAZPmFYbzfA3v3rFq+BI4hfb8c1mh' +
'atr/1BuAPzDLbB5wOhUwWHxN75Nffnt345DMb1j/x2EqKd1U9P5S2' +
'NH/mJLPRWE7+q25KpeKr/V8uf3C+b4XP65Xib9GsKTGxV7f8y+mw6' +
'7QaLgZrt9spD8Qvp97QMCLDQqkWt1FvYEP9zDETh76+8ToaAe18UK' +
'Dvk1osJoVCxissyMrMwD/AHEjA8T/M/9f79656eDGn3/DG+/ToXCM' +
'3uepGea2MEH6263rvAk+qUakwmKSEhMiw8Fe3PE/5xgFsZKk6YyGJ' +
'OvP3SZvFCr0BGqxTa3BBiOjMyUxCY90z1atuNFqFVMrsymHrPqkVS' +
'jalrXKZ1Ol0j5ZstoUXXNFd6llyUAL806tXIm0WbzzcU5mJNJmMEG' +
'bay+mblUpmaMn8mYy4elz4aTToJWJx3NXY8JCwwDOBp0+dunD+/Mp' +
'li28ItNatmtN4fvrhW1/5v16Ljrry9puvPrhg1gQf0wlmApJfRW4P' +
'rezAczEYMI0mOIOmEtr86pbNAbXNA6nYyKl5583XoDc0oOhuF9id3' +
'WYzGY0H9n5RTaD9+P0h7nn1Wm2RWKTXaYrEwoL8XKVSDrUGJXPo4I' +
'E1K5dOLqkhH8Cm1YHp1cfZ69xZbC+/8KzVWongMdWZpDIBj7/jg+1' +
'zpnl3X4L2dO5Q3cwNAtrbb7xiZsoMmkx6g0rGVIh9au0qejv1fcQe' +
'jVmtUHmjbUzMx+VbfcK3ZWZmzC8pH9H7+kdHdSkpPIXX9M6210unj' +
'gmqV7JL5O2trwaUzUqlGFGAT7FBi8mYn5uXknQN/Dz0UujZf06HXL' +
'z4MBvPvKHFp4RMAL9IJDQZyyc3oonFou+/Pbjxice4A2G9r3JEf5j' +
'aju1aV60yod4p4Qp8zGwyqlUqmVRCzg6bB8IA1l8nbVG69bvbXrNb' +
'rTCdzGqaTg/QmY2m6lg0yvSAZnv6qceP/vFbkUgElCUlxF84Hwicv' +
'rLlucdWLGXtb6kRx6sc0h+kpa3/jFgljcMafMaXnn/m+J9/FBbkQ3' +
'Lg2keEh0IM1q1eTnlBHHuvEeRp3nDx7Ix0uUQSffnyoa8PPLRoDl3' +
'N71tgKjavRZOwB7myCTYOdh99xWO4v/3mK6pZB7bZ6UbbjUEjuVLG' +
's+4bB/fh+jakOI2t5IYX6nsFKp8Ll4d267BHfPKTE5MS4xNioq+e+' +
'efMLz8fpjMRblgJjTvB4YG50wLP/ONmDz1JiI8FfQW4uP3pXL9ncB' +
'/YL/hT1RStO9nK0rCAWZmZCrlMIZOKRUKtRg0hIeQyeSB+ktK+Pbo' +
'QqS72pjuaGItmtZoMhq+qYdHAz7kiMFV3KJlB/bozZWf8dKLEDRvM' +
'5Q0LA5Kr0rbmib5w4q53rtB/AWV3lGR1hl68wNQrYw2O28ke7uBwO' +
'ZitcEykDiqFW3cePbQvyFh1rowXBHHlpg48EOq9UqBZzOaKQKPtD9' +
'6/XTDzy88/TYxlzoi8FHxh9yc7Vyxb7D0VaFi/6qyDc5WpritXw/v' +
'jDcI41iK/qw8bOl6/ZoXD4YCNgM9eJBYbDQaqhT5meD8/lrwgoL3L' +
'Ao3Vija9VqdVa+CsHdz/5Q2BdkfJqShDB9AxsgOo4/GhXuBigwNDb' +
'/h9+1U1G+AAuMFdwmvlziTCBN4zuDeEoWvndi3qEBUkrHGH544awh' +
'x+56/SHzdsVCxi0f3TYmOulpN/Hq8Q/imVefHa65rvKGzZvJmvCl2' +
'76uGKN8rNya4ItDtYkaC93tfr1UQZNcre8T1VCv4OmCHAVUe5IqC9' +
'tfUVvU4rFPAL8wvg75Any+yz8Os5hgS0zU8/6Z07twu80cIERsxf7' +
'7+xRbvdGqrBCnOZLQvnTIVaxksEHMoRKqiUumAfwjbCZ98QLo5b4E' +
'Yvbt6ETve63hY//C202eiyKg5Kr2fXjvWRkFaLRkBbMOs+lULO5/H' +
'S01KWc0me/jh9xrfR/vfpE0eXFrJmIvxMfbav9u25DbT/z80XaxVN' +
'BrzU6hdTqrqB8F/vRsBRQ9GVujc4pMRLZ00Zt3jeDFpsqg+U3cHyH' +
'1pHAJaVSgVxe7jV8NQeWnR/gL8PNrrd/N4gLSDnUJjUAYp6knxcFh' +
'fHLWCSuH7zoowahzXOZ68/8t+xXWvC2vQJo55+au2Lz2185qm1lDy' +
'A+/rxnL7b7Xb7f9hatWjWoW0r6vWx2OTbgKaxFQ4RuI2y2+1Wbf8H' +
'1CiRbQ==');

TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 125,5);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;
}
{ Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((RuneCount * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
'',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'',
'Crafted: '+IntToStr(RuneCount)+' runes ('+IntToStr(RPH)+' / hour)',
'',
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'',
'Gained: '+IntToStr(Profit)+' profit'],Point(15,200),16777215);

PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end; }

Procedure Shutdown(Reason: String);
begin
// ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
end;

Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, 8, 8);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
FindColorsTolerance(ATPA2[i], 2216175, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 3636519, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5);
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function FindObjEx_F(ColorA, ColorB, Tol, Bounds, sX, sY: Integer; UpText: TStringArray; Var X, Y: Integer; Debug: Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(sX, sY, TPA, ColorA, MSX1, MSY1, MSX2, MSY2, Tol)
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, Bounds, Bounds);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(sX, sY, ATPA2[i], ColorB, B.X1-Bounds, B.Y1-Bounds, B.X2+Bounds, B.Y2+Bounds, Tol)
if Length(ATPA2[i]) > 0 then
begin
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
if WaitUpTextMulti(UpText, 150) then
begin
Result := True;
if DeBug then
// SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Function CalculateEss: Integer;
var
X,Y,MP,LP,GP,SP,
Total,EDTM: Integer;
begin
Result := 0;

EDTM := DTMFromString('mrAAAAHic42BgYHBigmB7IHYBYjcgDgBiWyA2AWI2RgYGXiDmAWIuIGaHssWAmA+I87IyGRJiYhhiIiIYMlJSGIpyc4GmMsExK5BEx8iAkQCGAQC0RgiX');
SP := DTMFromString('mggAAAHicY2NgYLBkYmDwAmI3ILYFYncg9gRiAUYI5gNiISAWBmIOIA73d2JQkJVkiIwIBepmgmNWIAnDyIARB4YAAI1jBGk=');
MP := DTMFromString('mrAAAAHic42BgYHBiYmCwBGJvILYCYi8gtgNiV6gYLyMCC0GxKBT/B+r397AFkkw4MRcDfsBIAMMAAFX9BKA=');
LP := DTMFromString('mbQAAAHicY2VgYHjHxMDwCYh/APELIH4IxNKMDAzCQKwAxMpALAvEnk4WQNVMKJifARMwYsFgAAApUAYj');
GP := DTMFromString('mggAAAHicY2NgYJjFxMCwAIhXAPE8IO4D4m4glmJkYBAEYhkgVgFiZSAWB+IQX0egLiYMzM+AHTDiwBAAADK5BVg=');

Total := CountItems('dtm', EDTM, []);

if FindDTM(SP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 3);
if FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 6);
if FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 9);
if FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 12);

Result := Total;

FreeDTM(EDTM);
FreeDTM(SP);
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end;

Result := True;
end;

Function NearBank: Boolean;
var
X,X2,Y,Y2,D,D2: Integer;
begin
Result := (FoundSymbol(1, X, Y, D) or FoundSymbol(2, X2, Y2, D2));
end;

{Function FoundBank: Boolean;
var
X,Y,DTM: Integer;
begin
DTM := DTMFromString('mbQAAAHicY2VgYKhgYmDoAOJ2IO4F4nogjgKKewFxMBAHALEfEGelBDI8+/wOjr29PBgkgeKsSBjEZ8SCwQAAx4EOzw==');
Result := DtmRotated(DTM, X, Y, MMX1, MMY1, MMX2, MMY2);
FreeDTM(DTM);
end;}

Function WalkToBank: Boolean;
var
X,Y,D,I: Integer;
label
Start;
begin
Result := False;
if not NearBank then Exit;

Start:
if FoundSymbol(1, X, Y, D) then
begin
HumanMMouse(X+5, Y+5, 1, 1);
ClickMouse2(True);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
Inc(I);
if (I > 2) then
Shutdown('Failed to find bank');
MouseMM(MMCX-13, MMCY-5, 2, 2);
While IsMoving do
Wait(1);
GoTo Start;
end;
Wait(1500 + Random(500));
end;

Function WalkToAltar: Boolean;
begin
Result := False;

SPS_WalkPath(Path_ToAltar);
if FlagPresent then
FFlag(2)
else
While IsMoving do
Wait(1);

Result := True;

end;

Function BankTeleport(How: String): Boolean;
var
X,Y,TeleTimer,I,T,
SpellBMP: Integer;
label
Start;
begin
Result := False;
case lowercase(How) of
'spell':
begin
SpellBMP := BitmapFromString(7, 6, 'meJxjmMHAAEO8rWJc3NyMDCA2a4IU' +
'nxgvkAQKGsmzQwQ5TcWADCAJFAzWBgnCtQAFw4Mk+qwZgGw4gohAV' +
'AIRUCWQ3WfFABSE6AIAIEkPdA==');
TeleTimer := 5000;
end;
'home':
begin
SpellBMP := BitmapFromString(6, 7, 'meJz7dGTfJzBK0/UBonpNH30ZOSAC' +
'iiQrOUBEAqSN5VklICJABGRDRJ7uXYksAmFDuEsDY+FsCPf69HwgA' +
'2gakH24qPjGnLYDkVkAYSkrQg==');
TeleTimer := 5000;
end;
end;

Start:
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindBitmapToleranceIn(SpellBMP, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
I := 0;
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
Gametab(tab_Inv);

MarkTime(T)
repeat
FindNormalRandoms;
if (TimeFromMark(T) > TeleTimer) then
Exit;
if NearBank then
break;
until(False)
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell bitmap')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
goto Start;
end;
end;

Result := NearBank;

FreeBitmap(SpellBMP);
end;

Function OpenBooth: Boolean;
var
X,Y,T: Integer;
label
Start;
begin
Gametab(tab_Inv);
Result := False;

Start:
if FindObjEx_F(8949653, 2508118, 10, 10, MSCX, MSCY, ['Bank','booth'], X, Y, False) then
begin
ClickMouse2(False);
if not WaitOption('quick', 300) then
goto Start;

FFlag(0);
Wait(1000 + Random(1000));
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (BankScreen) or (PinScreen) then
break;
Wait(100);
until(false)

if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin)
else
Shutdown('No PIN # given');

Wait(RandomRange(175, 350));

end;

Result := BankScreen;
end;

Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
ItemFail := 0;
Start:
if not BankScreen then
Exit;

FixBank;

Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');

if BankScreen then
begin
if FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 20) then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
end else
begin
if (ItemFail > 3) then
Shutdown('Out of essence');

Inc(ItemFail);
if (ItemFail = 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
else if (ItemFail > 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
Wait(RandomRange(1750, 2205));
goto Start;
end;
end;

FreeBitmap(Ess);
end;

Function DepositEss: Boolean;
var
T,Slot: Integer;
begin
if not BankScreen then exit;

Slot := RandomRange(9, 20);
MouseItem(Slot, 0);
Wait(RandomRange(50, 115));
WaitOption('Deposit-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Result := False;
if not InvFull then
break;
until(False)

Result := (not InvFull);
end;

Function WithdrawRunes(Method: String): Boolean;
var
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;

if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;

if (Lowercase(Method) = 'contact') then
begin
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
end;


CloseBank;

Result := True;

end;


Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'Choose a character', UpCharsEx, 190, 30, 325, 55);
end;

Function ContactRepair: Boolean;
var
T,T2,T3, TTT: Integer;
begin
TTT:=0;
MarkTime(T);
repeat
Writeln('1');
FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)

if ContactScreen then
begin
Writeln('2');
MouseBox(455, 230, 465, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
Writeln('3');
end;
Wait(5000 + Random(5000));
MarkTime(T2);
MarkTime(TTT);
repeat
Writeln('4');
FindNormalRandoms;
if ClickToContinue then
MarkTime(T2);
Writeln('5');
Wait(RandomRange(125, 275));
if (TimeFromMark(TTT) > 15000) then
break;
if (TimeFromMark(T2) > 6000) then
begin
Writeln('6');
MouseBox(100, 410, 400, 425, 1);
end;
until(false)

MarkTime(T3);
repeat
Writeln('7');
FindNormalRandoms;
if (TimeFromMark(T3) > 2000) then
Exit;
Writeln('8');
if ClickToContinue then
MarkTime(T3);
Writeln('9');
Wait(RandomRange(125, 275));
until(false)

Result := True;

end;

Function RepairPouches(Method: String): Boolean;
var
X,Y,X2,Y2,Slot,MP,LP,
GP,Spell: Integer;
label
Start;
begin
Start:
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');

'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

if (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
Slot := CoordsToItem(X, Y);
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X2, Y2, 550, 200, 720, 435) then
begin
MMouse(X2, Y2, 5, 5);
Wait(Random(100));
if (Lowercase(Method) = 'spell') then
begin
if WaitUpText('epair',RandomRange(250,350)) then
begin
ClickMouse2(True);
Wait(RandomRange(20, 75));
MouseItem(Slot, 1);
Wait(RandomRange(1575, 2150));
Writeln('Pouch repaied');
end;
end else if (Lowercase(Method) = 'contact') then
begin
if WaitUpText('Contact',RandomRange(250,350)) then
begin
ClickMouse2(True);
if ContactRepair then
Writeln('Pouches repaied');
end;
end;
end;
end;

if (not FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
Result := True
else
goto Start;

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
FreeBitmap(Spell);
end;

Function CheckPouches: Boolean;
var
X,Y,MP,LP,
GP: Integer;
begin

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

Result := (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2));

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function CraftRunes: Boolean;
var
X,Y,RNew,ROld,
Seq,A,B: Integer;
label
Start;
begin
Seq := 0;
A := Round((CalculateEss*EssPrice));
IncEx(Exp, Round((CalculateEss*XPMod)));
IncEx(Exp_C, Round((CalculateEss*XPMod)));
ROld := getAmountBox(invBox(1));

Start:
if FindObjEx_F(6514535, 10133921, 15, 10, MSCX+50, MSCY, ['Craft','rune','Altar'], X, Y, False) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
FFlag(0);

if (Seq < 2) then
HumanMMouse(640, 220, 15, 15)
else
HumanMMouse(745, 180, 5, 5);

Wait(RandomRange(975, 1325));
While IsMoving do
Wait(1);
Wait(RandomRange(105, 215));
end;

if (Seq = 0) then
begin
if PouchPriority then
begin
if HandlePouches(2, 2) then
Seq := 1;
end else
if HandlePouches(1, 2) then
Seq := 2;

goto Start;
end;

if (Seq = 1) then
begin
if HandlePouches(3, 2) then
Seq := 2;
goto Start;
end;

if (Seq = 2) then
Result := True;

if Result then
begin
RNew := getAmountBox(invBox(1));
IncEx(RuneCount_C, (RNew-ROld));
IncEx(RuneCount, (RNew-ROld));
B := ((RNew-ROld)*AstralPrice);
IncEx(Profit, (B-A));
//OnScreen;
end;
end;

Procedure Eat;
var
DTM,X,Y,X2,
Y2,T: Integer;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;

Case lowercase(Food) of
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
end;

if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Withdraw-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (HPPercent >= 90) then
break;
if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X2, Y2, 5, 5);
ClickMouse2(False);
WaitOption('Eat', 300);
Wait(RandomRange(1000, 1500));
MarkTime(T);
end;
until(false)

end;

if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Deposit-All', 300);
Wait(RandomRange(425, 675));
end;

FreeDTM(DTM);
end;

Function HandleBank: Boolean;
var
S: String;
T,T2: Integer;
begin
Result := False;

if BankScreen then
begin

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PouchPriority then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(1, 1) then
WithdrawEss;
end;
end;

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if InvFull then
break;
until(false)

if InvFull then
begin
Wait(RandomRange(375, 550));

if CheckPouches then
if WithdrawRunes(Lowercase(RepairMethod)) then
if RepairPouches(Lowercase(RepairMethod)) then
if OpenBooth then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if BankScreen then
break;
until(false)

WithdrawEss;
end;


HumanMMouse(670, 100, 5, 5);

if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90,100));

Result := True;

end;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if NearBank then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
// ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
// OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
end;

Procedure MainLoop;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearBank then
begin
if InvFull then
WalkToAltar
else
if WalkToBank then
if OpenBooth then
HandleBank;
end else if SPS_PosOnMM(Point(465, 1175)) then
if CraftRunes then
BankTeleport(Lowercase(TeleMethod));
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;

CheckStats;

LoadVars;
//CheckVersion;
//HPPercent;
// ClearSmartCanvas;
// OnScreen;

SPS_Setup(RUNESCAPE_SURFACE, ['0_2','1_2']);
SPS_Continue := True;

Repeat

if not LoggedIn then
begin
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
end;

BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if (TimeFromMark(CommitTime)>=30000) then
Commit;

if (TimeFromMark(ReportTime)>=5000) then
Report;

MainLoop;
Until(AllPlayersInactive)

end.

{{{==Script shutdown==}}}
----Reason: Out of essence----
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 13 Minutes and 38 Seconds
Runes crafted: 11630
Exp gained: 47947
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
~Eerik.

Scaper

2012-01-15 14:01:51

your versionw ont walk for me :/

Heavenzeyez1

2012-01-15 15:43:28

From: Scaper
your versionw ont walk for me :/


Are you running latest SPS? Make sure you are running latest everything.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 26 Minutes and 0 Seconds
Runes crafted: 22118
Exp gained: 92552
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Still going strong.
Another one:
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 7 Minutes and 51 Seconds
Runes crafted: 26516
Exp gained: 113112
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Welcome to Runescape.
***
'Runescape has been updated.'
Runescape has been updated! Please restart Simba.
Successfully executed.

~Eerik.

Heavenzeyez1

2012-01-17 00:22:58

For some reason it doesn't seem to find the bank symbol from MM anymore.
Sorry for double post. I will look into it later anyway, just notifying. :)

~Eerik.

PatDuffy

2012-01-17 21:32:29

From: Heavenzeyez1
For some reason it doesn't seem to find the bank symbol from MM anymore.
Sorry for double post. I will look into it later anyway, just notifying. :)

~Eerik.


I make a version last night that walked to the bank using DDTM, ran it for 6 1/2 hours last night making around 19k Astrals.

                  {/////////////////////////////////////////
// ~Astralz by Flight~ //
// //
// Version: 1.1 //
/////////////////////////////////////////}

program Astralz;

{$define SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
//{$i SRL/SRL/Misc/stats.simba}
// {$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'shark'; //Lobster / Monkfish / Shark
EatAt = 70; //Eat at this health percent or less
RestAt = 50; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?

//Pouch settings
SS = 0; //Which slot # has your small pouch (0 for not using)
MS = 2; //Which slot # has your medium pouch (0 for not using)
LS = 3; //Which slot # has your large pouch (0 for not using)
GS = 0; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'Spell'; //Spell or Contact
PouchPriority = True; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 3; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 2; //Random minutes to add/subjtract from break duraction


Var

//Static
Version: String;
XPMod: Extended;
Path_ToAltar: TPointArray;
ReportTime,CommitTime,EssPrice,
AstralPrice,Profit,PostID: Integer;

//Dynamic
RuneCount,Exp,Exp_C,
RuneCount_C: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';
Level[SKILL_HITPOINTS] := HPLevel;
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'Runecrafting';
Active := True;
end;
end;

Function CashStringToInt(S: string): Integer; //Thanks TomTuff!
Var
i, ii: Integer;
Numbs: TStringArray;
Temp: string;
begin
Temp := '';
Numbs := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'b'];
for i := 1 to High(S) do
for ii := 0 to High(Numbs) do
if S[i] = Numbs[ii] then
case ii of
0..9: Temp := Temp + Numbs[ii];
10..12:
begin
Result := StrToInt(Temp);
case ii of
10: Result := Result * 100; //Since price is given to 1 decimal,
11: Result := Result * 100000; //instead of multiplying by the entire
12: Result := Result * 100000000; //factor, you must multiply by factor/10
end;
end;
end;
if (Result = 0) then
Result := StrToInt(Temp);
end;

Function GetPrice(ItemID: Integer): Integer;
begin
Result := CashStringToInt(Between('<td>', '</td>', GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' + IntToStr(ItemID))));
end;

Procedure LoadVars;
begin
Version := '1.1';
PostID := 860614;
XPMod := 8.7;
MarkTime(ReportTime);
MarkTime(CommitTime);
EssPrice := GetPrice(7936);
AstralPrice := GetPrice(9075);
MouseSpeed := RandomRange(17, 19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

Path_ToAltar := [Point(243, 970), Point(291, 978), Point(293, 1031), Point(305, 1086),Point(340, 1123),
Point(376, 1158), Point(399, 1190), Point(433, 1177), Point(449, 1173), Point(460, 1175)];
end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(115,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(115,SRLStats_Username,SRLStats_Password);
end;

// procedure ClearSmartCanvas;
// {$IFDEF SMART}
{ var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except end; }
// {$ELSE}
// begin
// {$ENDIF}
// end;

Procedure Report;
begin
// ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Astralz '+Version+' by Flight =-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Runes crafted: '+IntToStr(RuneCount));
WriteLn('Exp gained: '+IntToStr(Exp));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure Commit;
begin
stats_IncVariable('Astral Runes (Crafted)', RuneCount_C);
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
RuneCount_C := 0;
Exp_C := 0;
MarkTime(CommitTime);
end;

{ Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
// SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(291, 66, 'meJztXQd8VcXylt679CodpRqad' +
'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' +
'1CiRbQ==');

TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 125,5);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;
}
{ Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((RuneCount * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
'',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'',
'Crafted: '+IntToStr(RuneCount)+' runes ('+IntToStr(RPH)+' / hour)',
'',
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'',
'Gained: '+IntToStr(Profit)+' profit'],Point(15,200),16777215);

PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end; }

Procedure Shutdown(Reason: String);
begin
// ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
end;

Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, 8, 8);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
FindColorsTolerance(ATPA2[i], 2216175, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 3636519, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5);
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function FindObjEx_F(ColorA, ColorB, Tol, Bounds, sX, sY: Integer; UpText: TStringArray; Var X, Y: Integer; Debug: Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(sX, sY, TPA, ColorA, MSX1, MSY1, MSX2, MSY2, Tol)
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, Bounds, Bounds);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(sX, sY, ATPA2[i], ColorB, B.X1-Bounds, B.Y1-Bounds, B.X2+Bounds, B.Y2+Bounds, Tol)
if Length(ATPA2[i]) > 0 then
begin
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
if WaitUpTextMulti(UpText, 150) then
begin
Result := True;
if DeBug then
// SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Function CalculateEss: Integer;
var
X,Y,MP,LP,GP,SP,
Total,EDTM: Integer;
begin
Result := 0;

EDTM := DTMFromString('mrAAAAHic42BgYHBigmB7IHYBYjcgDgBiWyA2AWI2RgYGXiDmAWIuIGaHssWAmA+I87IyGRJiYhhiIiIYMlJSGIpyc4GmMsExK5BEx8iAkQCGAQC0RgiX');
SP := DTMFromString('mggAAAHicY2NgYLBkYmDwAmI3ILYFYncg9gRiAUYI5gNiISAWBmIOIA73d2JQkJVkiIwIBepmgmNWIAnDyIARB4YAAI1jBGk=');
MP := DTMFromString('mrAAAAHic42BgYHBiYmCwBGJvILYCYi8gtgNiV6gYLyMCC0GxKBT/B+r397AFkkw4MRcDfsBIAMMAAFX9BKA=');
LP := DTMFromString('mbQAAAHicY2VgYHjHxMDwCYh/APELIH4IxNKMDAzCQKwAxMpALAvEnk4WQNVMKJifARMwYsFgAAApUAYj');
GP := DTMFromString('mggAAAHicY2NgYJjFxMCwAIhXAPE8IO4D4m4glmJkYBAEYhkgVgFiZSAWB+IQX0egLiYMzM+AHTDiwBAAADK5BVg=');

Total := CountItems('dtm', EDTM, []);

if FindDTM(SP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 3);
if FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 6);
if FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 9);
if FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 12);

Result := Total;

FreeDTM(EDTM);
FreeDTM(SP);
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end;

Result := True;
end;

Function NearBank: Boolean;
var
X,X2,Y,Y2,D,D2: Integer;
begin
Result := (FoundSymbol(1, X, Y, D) or FoundSymbol(2, X2, Y2, D2));
end;

{Function FoundBank: Boolean;
var
X,Y,DTM: Integer;
begin
DTM := DTMFromString('mbQAAAHicY2VgYKhgYmDoAOJ2IO4F4nogjgKKewFxMBAHALEfEGelBDI8+/wOjr29PBgkgeKsSBjEZ8SCwQAAx4EOzw==');
Result := DtmRotated(DTM, X, Y, MMX1, MMY1, MMX2, MMY2);
FreeDTM(DTM);
end;}

Function WalkToBank: Boolean;
var
X,Y,D,I,DTM: Integer;
aFound:Extended;
label
Start;
begin
Result := False;
if not NearBank then Exit;

Start:
if FoundSymbol(1, X, Y, D) then
begin
HumanMMouse(X+1, Y+1, 1, 1);
ClickMouse2(True);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
DTM:=DTMFromString('mggAAAHicY2NgYOhmYmCYC8TzgPg+EF8A4h1A3A6UKwHiC0C8FoirgXgvEBfnhDL01fmBcfeU2Qzlub4MjtaaDPxAOWyYEQeGAABGXw/I');
if FindDTMRotated(DTM,X,Y,MMX1,MMY1,MMX2,MMY2,-Pi/4,Pi/4,Pi/30,aFound) then
begin
HumanMMouse(X+1, Y+1, 1, 1);
ClickMouse2(True);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
FreeDTM(DTM);
end else
begin
Inc(I);
if (I > 2) then
Shutdown('Failed to find bank');
FreeDTM(DTM);
MouseMM(MMCX-13, MMCY-5, 2, 2);
While IsMoving do
Wait(1);
GoTo Start;
end;
Wait(1500 + Random(500));
end;
end;

Function WalkToAltar: Boolean;
begin
Result := False;

SPS_WalkPath(Path_ToAltar);
if FlagPresent then
FFlag(2)
else
While IsMoving do
Wait(1);

Result := True;

end;

Function BankTeleport(How: String): Boolean;
var
X,Y,TeleTimer,I,T,
SpellBMP: Integer;
label
Start;
begin
Result := False;
case lowercase(How) of
'spell':
begin
SpellBMP := BitmapFromString(7, 6, 'meJxjmMHAAEO8rWJc3NyMDCA2a4IU' +
'nxgvkAQKGsmzQwQ5TcWADCAJFAzWBgnCtQAFw4Mk+qwZgGw4gohAV' +
'AIRUCWQ3WfFABSE6AIAIEkPdA==');
TeleTimer := 5000;
end;
'home':
begin
SpellBMP := BitmapFromString(6, 7, 'meJz7dGTfJzBK0/UBonpNH30ZOSAC' +
'iiQrOUBEAqSN5VklICJABGRDRJ7uXYksAmFDuEsDY+FsCPf69HwgA' +
'2gakH24qPjGnLYDkVkAYSkrQg==');
TeleTimer := 5000;
end;
end;

Start:
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindBitmapToleranceIn(SpellBMP, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
I := 0;
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
Gametab(tab_Inv);

MarkTime(T)
repeat
FindNormalRandoms;
if (TimeFromMark(T) > TeleTimer) then
Exit;
if NearBank then
break;
until(False)
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell bitmap')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
goto Start;
end;
end;

Result := NearBank;

FreeBitmap(SpellBMP);
end;

Function OpenBooth: Boolean;
var
X,Y,T: Integer;
label
Start;
begin
Gametab(tab_Inv);
Result := False;

Start:
if FindObjEx_F(8949653, 2508118, 10, 10, MSCX, MSCY, ['Bank','booth'], X, Y, False) then
begin
ClickMouse2(False);
if not WaitOption('quick', 300) then
goto Start;

FFlag(0);
Wait(1000 + Random(1000));
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (BankScreen) or (PinScreen) then
break;
Wait(100);
until(false)

if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin)
else
Shutdown('No PIN # given');

Wait(RandomRange(175, 350));

end;

Result := BankScreen;
end;

Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
ItemFail := 0;
Start:
if not BankScreen then
Exit;

FixBank;

Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');

if BankScreen then
begin
if WithDraw(0,0,28) then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
end else
begin
if (ItemFail > 3) then
Shutdown('Out of essence');

Inc(ItemFail);
if (ItemFail = 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
else if (ItemFail > 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
Wait(RandomRange(1750, 2205));
goto Start;
end;
end;

FreeBitmap(Ess);
end;

Function DepositEss: Boolean;
var
T,Slot: Integer;
begin
if not BankScreen then exit;

Slot := RandomRange(9, 20);
MouseItem(Slot, 0);
Wait(RandomRange(50, 115));
WaitOption('Deposit-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Result := False;
if not InvFull then
break;
until(False)

Result := (not InvFull);
end;

Function WithdrawRunes(Method: String): Boolean;
var
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;

if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;

if (Lowercase(Method) = 'contact') then
begin
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
end;


CloseBank;

Result := True;

end;


Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'Choose a character', UpCharsEx, 190, 30, 325, 55);
end;

Function ContactRepair: Boolean;
var
T,T2,T3, TTT: Integer;
begin
TTT:=0;
MarkTime(T);
repeat
Writeln('1');
FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)

if ContactScreen then
begin
Writeln('2');
MouseBox(455, 230, 465, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
Writeln('3');
end;
Wait(5000 + Random(5000));
MarkTime(T2);
MarkTime(TTT);
repeat
Writeln('4');
FindNormalRandoms;
if ClickToContinue then
MarkTime(T2);
Writeln('5');
Wait(RandomRange(125, 275));
if (TimeFromMark(TTT) > 15000) then
break;
if (TimeFromMark(T2) > 6000) then
begin
Writeln('6');
MouseBox(100, 410, 400, 425, 1);
end;
until(false)

MarkTime(T3);
repeat
Writeln('7');
FindNormalRandoms;
if (TimeFromMark(T3) > 2000) then
Exit;
Writeln('8');
if ClickToContinue then
MarkTime(T3);
Writeln('9');
Wait(RandomRange(125, 275));
until(false)

Result := True;

end;

Function RepairPouches(Method: String): Boolean;
var
X,Y,X2,Y2,Slot,MP,LP,
GP,Spell: Integer;
label
Start;
begin
Start:
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');

'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

if (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
Slot := CoordsToItem(X, Y);
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X2, Y2, 550, 200, 720, 435) then
begin
MMouse(X2, Y2, 5, 5);
Wait(Random(100));
if (Lowercase(Method) = 'spell') then
begin
if WaitUpText('epair',RandomRange(250,350)) then
begin
ClickMouse2(True);
Wait(RandomRange(20, 75));
MouseItem(Slot, 1);
Wait(RandomRange(1575, 2150));
Writeln('Pouch repaied');
end;
end else if (Lowercase(Method) = 'contact') then
begin
if WaitUpText('Contact',RandomRange(250,350)) then
begin
ClickMouse2(True);
if ContactRepair then
Writeln('Pouches repaied');
end;
end;
end;
end;

if (not FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
Result := True
else
goto Start;

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
FreeBitmap(Spell);
end;

Function CheckPouches: Boolean;
var
X,Y,MP,LP,
GP: Integer;
begin

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

Result := (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2));

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function CraftRunes: Boolean;
var
X,Y,RNew,ROld,
Seq,A,B: Integer;
label
Start;
begin
Seq := 0;
A := Round((CalculateEss*EssPrice));
IncEx(Exp, Round((CalculateEss*XPMod)));
IncEx(Exp_C, Round((CalculateEss*XPMod)));
ROld := getAmountBox(invBox(1));

Start:
if FindObjEx_F(6514535, 10133921, 15, 10, MSCX+50, MSCY, ['Craft','rune','Altar'], X, Y, False) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
FFlag(0);

if (Seq < 2) then
HumanMMouse(640, 220, 15, 15)
else
HumanMMouse(745, 180, 5, 5);

Wait(RandomRange(975, 1325));
While IsMoving do
Wait(1);
Wait(RandomRange(105, 215));
end;

if (Seq = 0) then
begin
if PouchPriority then
begin
if HandlePouches(2, 2) then
Seq := 1;
end else
if HandlePouches(1, 2) then
Seq := 2;

goto Start;
end;

if (Seq = 1) then
begin
if HandlePouches(3, 2) then
Seq := 2;
goto Start;
end;

if (Seq = 2) then
Result := True;

if Result then
begin
RNew := getAmountBox(invBox(1));
IncEx(RuneCount_C, (RNew-ROld));
IncEx(RuneCount, (RNew-ROld));
B := ((RNew-ROld)*AstralPrice);
IncEx(Profit, (B-A));
//OnScreen;
end;
end;

Procedure Eat;
var
DTM,X,Y,X2,
Y2,T: Integer;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;

Case lowercase(Food) of
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
end;

if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Withdraw-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (HPPercent >= 90) then
break;
if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X2, Y2, 5, 5);
ClickMouse2(False);
WaitOption('Eat', 300);
Wait(RandomRange(1000, 1500));
MarkTime(T);
end;
until(false)

end;

if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Deposit-All', 300);
Wait(RandomRange(425, 675));
end;

FreeDTM(DTM);
end;

Function HandleBank: Boolean;
var
S: String;
T,T2: Integer;
begin
Result := False;

if BankScreen then
begin

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PouchPriority then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(1, 1) then
WithdrawEss;
end;
end;

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if InvFull then
break;
until(false)

if InvFull then
begin
Wait(RandomRange(375, 550));

if CheckPouches then
if WithdrawRunes(Lowercase(RepairMethod)) then
if RepairPouches(Lowercase(RepairMethod)) then
if OpenBooth then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if BankScreen then
break;
until(false)

WithdrawEss;
end;


HumanMMouse(670, 100, 5, 5);

if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90,100));

Result := True;

end;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if NearBank then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
// ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
// OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
end;

Procedure MainLoop;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearBank then
begin
if InvFull then
WalkToAltar
else
if WalkToBank then
if OpenBooth then
HandleBank;
end else if SPS_PosOnMM(Point(465, 1175)) then
if CraftRunes then
BankTeleport(Lowercase(TeleMethod));
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;

CheckStats;

LoadVars;
//CheckVersion;
//HPPercent;
// ClearSmartCanvas;
// OnScreen;

SPS_Setup(RUNESCAPE_SURFACE, ['0_2','1_2']);
SPS_Continue := True;

Repeat

if not LoggedIn then
begin
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
end;

BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if (TimeFromMark(CommitTime)>=30000) then
Commit;

if (TimeFromMark(ReportTime)>=5000) then
Report;

MainLoop;
Until(AllPlayersInactive)

end.

Heavenzeyez1

2012-01-18 17:13:48

Yeah, thanks a lot, I finished my version like 4 hours ago also! :)
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 44 Minutes and 49 Seconds
Runes crafted: 15808
Exp gained: 70060
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Still going strong! ;)
{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 2 Minutes and 58 Seconds
Runes crafted: 19728
Exp gained: 87236
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
Another one:
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 5 Minutes and 27 Seconds
Runes crafted: 27018
Exp gained: 115327
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
And one more:
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 20 Minutes and 40 Seconds
Runes crafted: 21864
Exp gained: 96382
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
~Eerik.

Scaper

2012-01-20 16:14:28

Heavenz? could i get your updated version please

'Toxin

2012-01-20 16:33:43

From: Scaper
Heavenz? could i get your updated version please


+1 to that, me too :$ I would like to make some astrals like your amazing 6+ hr proggys o.O

Scaper

2012-01-20 16:46:55

Tried all ways now and it wont find the bank :/

Flight

2012-01-20 19:51:35

Yeah I haven't worked on / used this script in ages. Heavenz if you don't mind uploading your own version that'd be just fine and I'll add it to the OP. If you decide against it then that's okay as well, I'll work on it myself. Just busy with other projects, ya know.

Heavenzeyez1

2012-01-21 09:15:36

Yeah, sure, no problem.
                  {/////////////////////////////////////////
// ~Astralz by Flight~ //
// //
// Version: 1.1 //
/////////////////////////////////////////}

program Astralz;

{$define SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
//{$i SRL/SRL/Misc/stats.simba}
// {$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = 79; //Your (max) Constitution/Hitpoints level
Food = 'lobster'; //Lobster / Monkfish / Shark
EatAt = 70; //Eat at this health percent or less
RestAt = 60; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?

//Pouch settings
SS = 2; //Which slot # has your small pouch (0 for not using)
MS = 3; //Which slot # has your medium pouch (0 for not using)
LS = 4; //Which slot # has your large pouch (0 for not using)
GS = 5; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'spell'; //Spell or Contact
PouchPriority = True; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 15; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction


Var

//Static
Version: String;
XPMod: Extended;
Path_ToAltar: TPointArray;
ReportTime,CommitTime,EssPrice,
AstralPrice,Profit,PostID: Integer;

//Dynamic
RuneCount,Exp,Exp_C,
RuneCount_C: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';
Level[SKILL_HITPOINTS] := HPLevel;
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'Runecrafting';
Active := True;
end;
end;

Function CashStringToInt(S: string): Integer; //Thanks TomTuff!
Var
i, ii: Integer;
Numbs: TStringArray;
Temp: string;
begin
Temp := '';
Numbs := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'b'];
for i := 1 to High(S) do
for ii := 0 to High(Numbs) do
if S[i] = Numbs[ii] then
case ii of
0..9: Temp := Temp + Numbs[ii];
10..12:
begin
Result := StrToInt(Temp);
case ii of
10: Result := Result * 100; //Since price is given to 1 decimal,
11: Result := Result * 100000; //instead of multiplying by the entire
12: Result := Result * 100000000; //factor, you must multiply by factor/10
end;
end;
end;
if (Result = 0) then
Result := StrToInt(Temp);
end;

Function GetPrice(ItemID: Integer): Integer;
begin
Result := CashStringToInt(Between('<td>', '</td>', GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' + IntToStr(ItemID))));
end;

Procedure LoadVars;
begin
Version := '1.1';
PostID := 860614;
XPMod := 8.7;
MarkTime(ReportTime);
MarkTime(CommitTime);
EssPrice := GetPrice(7936);
AstralPrice := GetPrice(9075);
MouseSpeed := RandomRange(17, 19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

Path_ToAltar := [Point(243, 970), Point(291, 978), Point(293, 1031), Point(305, 1086),Point(340, 1123),
Point(376, 1158), Point(399, 1190), Point(433, 1177), Point(449, 1173), Point(460, 1175)];
end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(115,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(115,SRLStats_Username,SRLStats_Password);
end;

// procedure ClearSmartCanvas;
// {$IFDEF SMART}
{ var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except end; }
// {$ELSE}
// begin
// {$ENDIF}
// end;

Procedure Report;
begin
// ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Astralz '+Version+' by Flight =-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Runes crafted: '+IntToStr(RuneCount));
WriteLn('Exp gained: '+IntToStr(Exp));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure Commit;
begin
stats_IncVariable('Astral Runes (Crafted)', RuneCount_C);
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
RuneCount_C := 0;
Exp_C := 0;
MarkTime(CommitTime);
end;

{ Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
// SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(291, 66, 'meJztXQd8VcXylt679CodpRqad' +
'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' +
'1CiRbQ==');

TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 125,5);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;
}
{ Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((RuneCount * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
'',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'',
'Crafted: '+IntToStr(RuneCount)+' runes ('+IntToStr(RPH)+' / hour)',
'',
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'',
'Gained: '+IntToStr(Profit)+' profit'],Point(15,200),16777215);

PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end; }

Procedure Shutdown(Reason: String);
begin
// ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
end;

Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
begin

Exit;
end;
ATPA := TPAtoATPAEx(TPA, 8, 8);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
begin
FindColorsTolerance(ATPA2[i], 2802162, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 3)
end
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 3636519, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5);
Result := (Length(ATPA2[i]) > 0);
if Result then
begin

MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function FindObjEx_F(ColorA, ColorB, Tol, Bounds, sX, sY: Integer; UpText: TStringArray; Var X, Y: Integer; Debug: Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(sX, sY, TPA, ColorA, MSX1, MSY1, MSX2, MSY2, Tol)
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, Bounds, Bounds);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(sX, sY, ATPA2[i], ColorB, B.X1-Bounds, B.Y1-Bounds, B.X2+Bounds, B.Y2+Bounds, Tol)
if Length(ATPA2[i]) > 0 then
begin
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
if WaitUpTextMulti(UpText, 150) then
begin
Result := True;
if DeBug then
// SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Function CalculateEss: Integer;
var
X,Y,MP,LP,GP,SP,
Total,EDTM: Integer;
begin
Result := 0;

EDTM := DTMFromString('mrAAAAHic42BgYHBigmB7IHYBYjcgDgBiWyA2AWI2RgYGXiDmAWIuIGaHssWAmA+I87IyGRJiYhhiIiIYMlJSGIpyc4GmMsExK5BEx8iAkQCGAQC0RgiX');
SP := DTMFromString('mggAAAHicY2NgYLBkYmDwAmI3ILYFYncg9gRiAUYI5gNiISAWBmIOIA73d2JQkJVkiIwIBepmgmNWIAnDyIARB4YAAI1jBGk=');
MP := DTMFromString('mrAAAAHic42BgYHBiYmCwBGJvILYCYi8gtgNiV6gYLyMCC0GxKBT/B+r397AFkkw4MRcDfsBIAMMAAFX9BKA=');
LP := DTMFromString('mbQAAAHicY2VgYHjHxMDwCYh/APELIH4IxNKMDAzCQKwAxMpALAvEnk4WQNVMKJifARMwYsFgAAApUAYj');
GP := DTMFromString('mggAAAHicY2NgYJjFxMCwAIhXAPE8IO4D4m4glmJkYBAEYhkgVgFiZSAWB+IQX0egLiYMzM+AHTDiwBAAADK5BVg=');

Total := CountItems('dtm', EDTM, []);

if FindDTM(SP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 3);
if FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 6);
if FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 9);
if FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 12);

Result := Total;

FreeDTM(EDTM);
FreeDTM(SP);
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end;

Result := True;
end;

Function NearBank: Boolean;
var
X,X2,Y,Y2,D,D2: Integer;
begin
Result := (FoundSymbol(1, X, Y, D) or FoundSymbol(2, X2, Y2, D2));


end;

{Function FoundBank: Boolean;
var
X,Y,DTM: Integer;
begin
DTM := DTMFromString('mbQAAAHicY2VgYKhgYmDoAOJ2IO4F4nogjgKKewFxMBAHALEfEGelBDI8+/wOjr29PBgkgeKsSBjEZ8SCwQAAx4EOzw==');
Result := DtmRotated(DTM, X, Y, MMX1, MMY1, MMX2, MMY2);
FreeDTM(DTM);
end;}

Function WalkToBank: Boolean;
var
X,Y,D,I: Integer;
label
Start;
begin
Result := False;
if not NearBank then Exit;

Start:
if FoundSymbol(1, X, Y, D) then
begin

HumanMMouse(X+5, Y+5, 1, 1);

ClickMouse2(True);

if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
Inc(I);
if (I > 2) then
Shutdown('Failed to find bank');

MouseMM(MMCX-13, MMCY-5, 2, 2);

While IsMoving do
Wait(1);
GoTo Start;
end;
Wait(1500 + Random(500));
end;

Function WalkToAltar: Boolean;
begin
Result := False;

SPS_WalkPath(Path_ToAltar);
if FlagPresent then
FFlag(2)
else
While IsMoving do
Wait(1);

Result := True;

end;

Function BankTeleport(How: String): Boolean;
var
X,Y,TeleTimer,I,T,
SpellBMP: Integer;
label
Start;
begin
Result := False;
case lowercase(How) of
'spell':
begin
SpellBMP := BitmapFromString(7, 6, 'meJxjmMHAAEO8rWJc3NyMDCA2a4IU' +
'nxgvkAQKGsmzQwQ5TcWADCAJFAzWBgnCtQAFw4Mk+qwZgGw4gohAV' +
'AIRUCWQ3WfFABSE6AIAIEkPdA==');
TeleTimer := 5000;
end;
'home':
begin
SpellBMP := BitmapFromString(6, 7, 'meJz7dGTfJzBK0/UBonpNH30ZOSAC' +
'iiQrOUBEAqSN5VklICJABGRDRJ7uXYksAmFDuEsDY+FsCPf69HwgA' +
'2gakH24qPjGnLYDkVkAYSkrQg==');
TeleTimer := 5000;
end;
end;

Start:
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindBitmapToleranceIn(SpellBMP, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
I := 0;
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
Gametab(tab_Inv);

MarkTime(T)
repeat
FindNormalRandoms;
if (TimeFromMark(T) > TeleTimer) then
Exit;
if NearBank then
break;
until(False)
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell bitmap')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
goto Start;
end;
end;

Result := NearBank;

FreeBitmap(SpellBMP);
end;

Function OpenBooth: Boolean;
var
X,Y,T: Integer;
label
Start;
begin
Gametab(tab_Inv);
Result := False;

Start:
if FindObjEx_F(8949653, 2508118, 10, 10, MSCX, MSCY, ['Bank','booth'], X, Y, False) then
begin
ClickMouse2(False);
if not WaitOption('quick', 300) then
goto Start;

FFlag(0);
Wait(1000 + Random(1000));
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (BankScreen) or (PinScreen) then
break;
Wait(100);
until(false)

if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin)
else
Shutdown('No PIN # given');

Wait(RandomRange(175, 350));

end;

Result := BankScreen;
end;

Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
ItemFail := 0;
Start:
if not BankScreen then
Exit;

FixBank;

Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');

if BankScreen then
begin
if FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 20) then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
end else
begin
if (ItemFail > 3) then
Shutdown('Out of essence');

Inc(ItemFail);
if (ItemFail = 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
else if (ItemFail > 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
Wait(RandomRange(1750, 2205));
goto Start;
end;
end;

FreeBitmap(Ess);
end;

Function DepositEss: Boolean;
var
T,Slot: Integer;
begin
if not BankScreen then exit;

Slot := RandomRange(9, 20);
MouseItem(Slot, 0);
Wait(RandomRange(50, 115));
WaitOption('Deposit-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Result := False;
if not InvFull then
break;
until(False)

Result := (not InvFull);
end;

Function WithdrawRunes(Method: String): Boolean;
var
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;

if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;

if (Lowercase(Method) = 'contact') then
begin
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
end;


CloseBank;

Result := True;

end;


Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'Choose a character', UpCharsEx, 190, 30, 325, 55);
end;

Function ContactRepair: Boolean;
var
T,T2,T3, TTT: Integer;
begin
TTT:=0;
MarkTime(T);
repeat

FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)

if ContactScreen then
begin

MouseBox(455, 230, 465, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);

end;
Wait(5000 + Random(5000));
MarkTime(T2);
MarkTime(TTT);
repeat

FindNormalRandoms;
if ClickToContinue then
MarkTime(T2);

Wait(RandomRange(125, 275));
if (TimeFromMark(TTT) > 15000) then
break;
if (TimeFromMark(T2) > 6000) then
begin

MouseBox(100, 410, 400, 425, 1);
end;
until(false)

MarkTime(T3);
repeat

FindNormalRandoms;
if (TimeFromMark(T3) > 2000) then
Exit;

if ClickToContinue then
MarkTime(T3);

Wait(RandomRange(125, 275));
until(false)

Result := True;

end;

Function RepairPouches(Method: String): Boolean;
var
X,Y,X2,Y2,Slot,MP,LP,
GP,Spell: Integer;
label
Start;
begin
Start:
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');

'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

if (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
Slot := CoordsToItem(X, Y);
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X2, Y2, 550, 200, 720, 435) then
begin
MMouse(X2, Y2, 5, 5);
Wait(Random(100));
if (Lowercase(Method) = 'spell') then
begin
if WaitUpText('epair',RandomRange(250,350)) then
begin
ClickMouse2(True);
Wait(RandomRange(20, 75));
MouseItem(Slot, 1);
Wait(RandomRange(1575, 2150));
Writeln('Pouch repaied');
end;
end else if (Lowercase(Method) = 'contact') then
begin
if WaitUpText('Contact',RandomRange(250,350)) then
begin
ClickMouse2(True);
if ContactRepair then
Writeln('Pouches repaied');
end;
end;
end;
end;

if (not FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
Result := True
else
goto Start;

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
FreeBitmap(Spell);
end;

Function CheckPouches: Boolean;
var
X,Y,MP,LP,
GP: Integer;
begin

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

Result := (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2));

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function CraftRunes: Boolean;
var
X,Y,RNew,ROld,
Seq,A,B: Integer;
label
Start;
begin
Seq := 0;
A := Round((CalculateEss*EssPrice));
IncEx(Exp, Round((CalculateEss*XPMod)));
IncEx(Exp_C, Round((CalculateEss*XPMod)));
ROld := getAmountBox(invBox(1));

Start:
if FindObjEx_F(6514535, 10133921, 15, 10, MSCX+50, MSCY, ['Craft','rune','Altar'], X, Y, False) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
FFlag(0);

if (Seq < 2) then
HumanMMouse(640, 220, 15, 15)
else
HumanMMouse(745, 180, 5, 5);

Wait(RandomRange(975, 1325));
While IsMoving do
Wait(1);
Wait(RandomRange(105, 215));
end;

if (Seq = 0) then
begin
if PouchPriority then
begin
if HandlePouches(2, 2) then
Seq := 1;
end else
if HandlePouches(1, 2) then
Seq := 2;

goto Start;
end;

if (Seq = 1) then
begin
if HandlePouches(3, 2) then
Seq := 2;
goto Start;
end;

if (Seq = 2) then
Result := True;

if Result then
begin
RNew := getAmountBox(invBox(1));
IncEx(RuneCount_C, (RNew-ROld));
IncEx(RuneCount, (RNew-ROld));
B := ((RNew-ROld)*AstralPrice);
IncEx(Profit, (B-A));
//OnScreen;
end;
end;

Procedure Eat;
var
DTM,X,Y,X2,
Y2,T: Integer;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;

Case lowercase(Food) of
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
end;

if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Withdraw-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (HPPercent >= 90) then
break;
if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X2, Y2, 5, 5);
ClickMouse2(False);
WaitOption('Eat', 300);
Wait(RandomRange(1000, 1500));
MarkTime(T);
end;
until(false)

end;

if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Deposit-All', 300);
Wait(RandomRange(425, 675));
end;

FreeDTM(DTM);
end;

Function HandleBank: Boolean;
var
S: String;
T,T2: Integer;
begin
Result := False;

if BankScreen then
begin

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PouchPriority then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(1, 1) then
WithdrawEss;
end;
end;

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if InvFull then
break;
until(false)

if InvFull then
begin
Wait(RandomRange(375, 550));

if CheckPouches then
if WithdrawRunes(Lowercase(RepairMethod)) then
if RepairPouches(Lowercase(RepairMethod)) then
if OpenBooth then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if BankScreen then
break;
until(false)

WithdrawEss;
end;


HumanMMouse(670, 100, 5, 5);

if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90,100));

Result := True;

end;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if NearBank then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
// ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
// OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
end;

Procedure MainLoop;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearBank then
begin
if InvFull then
WalkToAltar
else
if WalkToBank then
if OpenBooth then
HandleBank;
end else if SPS_PosOnMM(Point(465, 1175)) then
if CraftRunes then
BankTeleport(Lowercase(TeleMethod));
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;

CheckStats;

LoadVars;
//CheckVersion;
//HPPercent;
// ClearSmartCanvas;
// OnScreen;

SPS_Setup(RUNESCAPE_SURFACE, ['0_2','1_2']);
SPS_Continue := True;

Repeat

if not LoggedIn then
begin
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
end;

BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if (TimeFromMark(CommitTime)>=30000) then
Commit;

if (TimeFromMark(ReportTime)>=5000) then
Report;

MainLoop;
Until(AllPlayersInactive)

end.
Hope you enjoy it! ;)
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 25 Minutes and 52 Seconds
Runes crafted: 32326
Exp gained: 137790
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<3
~Eerik.

PatDuffy

2012-01-21 15:14:45

just hit the 49k Astral runes crafted mark according to SRL Stats. I absolutely love you for making this and giving me a way to get up my least favorite skill on my Main.

Heavenzeyez1

2012-01-22 09:22:42

Glad you got it working now! :)
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 26 Minutes and 9 Seconds
Runes crafted: 32648
Exp gained: 136390
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Astral Runes (Crafted) : 547028 
<3
Another one:
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 16 Minutes and 23 Seconds
Runes crafted: 30112
Exp gained: 122644
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
And now I ran out of ess:

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 5 Minutes and 43 Seconds
Runes crafted: 4980
Exp gained: 21696
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
~Eerik.

Griff

2012-01-23 10:57:07

Going hard, working great except I lost my pouches when I logged back on.

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 11 Minutes and 30 Seconds
Runes crafted: 6730
Exp gained: 39598
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Thanks :)

Heavenzeyez1

2012-01-23 13:26:51

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 4 Hours, 33 Minutes and 52 Seconds
Runes crafted: 19106
Exp gained: 80672
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Ended up in Prison Pete! :)

~Eerik.

Flight

2012-01-23 20:36:02

Wonderful reports guys, keep 'em rolling in.

PatDuffy

2012-01-23 21:23:01

I keep forgetting to save my overnight reports :(

Went from 62-76 RC on my main so far though, 90% this 10% Natures.

Heavenzeyez1

2012-01-24 10:23:30

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 23 Minutes and 6 Seconds
Runes crafted: 32548
Exp gained: 133808
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I keep posting every single proggy I get, this script is pure epicness! I <3 you, Flight! :)

~Eerik.

RISK

2012-01-24 20:34:01

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 1 Minutes and 0 Seconds
Runes crafted: 19118
Exp gained: 86048
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Heavenzeyez1

2012-01-24 23:37:37

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 14 Minutes and 8 Seconds
Runes crafted: 19482
Exp gained: 96312
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<3

~Eerik.

Runescape Pro

2012-01-24 23:51:49

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 3 Minutes and 45 Seconds
Runes crafted: 11143
Exp gained: 80095
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Thank you!!!! <3

Heavenzeyez1

2012-01-25 12:05:18

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 56 Minutes and 44 Seconds
Runes crafted: 24846
Exp gained: 104388
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Oh, btw, guys, don't sell the astralz below mid, as soon as I posted my fix, they started falling. :( (don't really think it's because of us, just mentioning. :) )
Thank you, will keep posting in! ;)

~Eerik.

Runescape Pro

2012-01-25 14:02:15

I won't, dw. I've been stocking up:P

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 5 Minutes and 10 Seconds
Runes crafted: 11095
Exp gained: 71042
BrExp gained: 71042
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
^Still running.

The first time I got this running smoothly was because of your update heaven and I would like to thank you and flight. This is how it went down.
day1: From 43 to 53.
day2: I'm pretty sure I have passed lvl 58.

To keep from getting banned I'm going to go pk. Thanks again guys :)

Heavenzeyez1

2012-01-26 00:09:06

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 15 Minutes and 32 Seconds
Runes crafted: 29474
Exp gained: 128456
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
No problem! :)
Anyhow, here's another one for you, dearest Flight! <3

~Eerik.

Runescape Pro

2012-01-26 04:10:15

I've had this go til the token thing(fake rs update) at least 3 times now. BEAST :D

Heavenzeyez1

2012-01-27 04:01:59

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 4 Hours, 10 Minutes and 52 Seconds
Runes crafted: 18776
Exp gained: 77767
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 19 Minutes and 37 Seconds
Runes crafted: 13208
Exp gained: 54337
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
***** STR: FOUND RANDOM: 'Leo The Gravedigger' *****
Screenshot of: Found Leo The Gravedigger random 3 Hours, 19 Minutes and 59 Seconds
Leo solver currently broken, logging out.
***** STR: 'Leo The Gravedigger' RANDOM SOLVING FAILED! *****
Successfully executed.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Failed finding essence 1 times
Failed finding essence 2 times
Failed finding essence 3 times
Failed finding essence 4 times

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 36 Minutes and 13 Seconds
Runes crafted: 15252
Exp gained: 62622
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.

~Eerik.

putonajonny

2012-01-27 21:23:50

One of many proggies: I'll try to remember to save more:
No Pouches:

Heavenzeyez1

2012-01-28 01:58:32

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 10 Minutes and 47 Seconds
Runes crafted: 31048
Exp gained: 130478
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

<3
~Eerik.

putonajonny

2012-01-28 03:06:10

I have moded this script quite a lot, and bulked out the report section:

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
[ Time Running: 5 Hours, 22 Minutes and 51 Seconds]
[ Runes crafted: 12416 ]
[ Exp gained: 85869 ]
[ Breaks: 2 ]
[ Profit Made: 1901k ]
[ Current Level: 67 ]
[ XP/Hour: 16k ]
[ XP to Next Level: 55k ]
[ XP to Level 70: 188k ]
[ Time To Next Level: 03h 29m 28s ]
[ Time To Level 70: 11h 48m 00s ]
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Heavenzeyez1

2012-01-28 10:17:00

Putonajonny, nice report there! :)
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 7 Minutes and 16 Seconds
Runes crafted: 29580
Exp gained: 129081
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 22 Minutes and 43 Seconds
Runes crafted: 31350
Exp gained: 134086
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
~Eerik.

Griff

2012-01-29 22:57:31

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 2 Minutes and 50 Seconds
Runes crafted: 15933
Exp gained: 95772
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Thanks again!

putonajonny

2012-01-30 11:50:52

From: Griff
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 2 Minutes and 50 Seconds
Runes crafted: 15933
Exp gained: 95772
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Thanks again!



wow wow wow, proggy over 6 hours? how?

Heavenzeyez1

2012-01-30 12:10:57

From: putonajonny
wow wow wow, proggy over 6 hours? how?


Half of my proggys are over 6h aswell. Runescape won't "throw" you out when you have reached 6 hours, it just won't let you log back in after you have logged out for some reason(usually break). ;)

~Eerik.

Kyle Undefined

2012-01-30 12:12:21

RS throws me out for some weird reason, maybe they don't like me :/

Heavenzeyez1

2012-01-30 12:16:33

From: Kyle Undefined
RS throws me out for some weird reason, maybe they don't like me :/

Even when you take breaks? :O

~Eerik.

Kyle Undefined

2012-01-30 12:18:48

Yeah, when I reach the 6.5 hour mark, I'll be doing something and I'll just get thrown off. Even happens to me when I'm playing legit. I had one account do an 8 hour proggy, but it was a fresh account.

Heavenzeyez1

2012-01-30 12:51:24

Failed finding essence 1 times
Failed finding essence 2 times
Failed finding essence 3 times
Failed finding essence 4 times

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 50 Minutes and 57 Seconds
Runes crafted: 7642
Exp gained: 33126
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Ran out of ess again, dang.

~Eerik.

Griff

2012-01-30 12:55:17

I usually don't get over 6 hours either, I just post my longest ones XD

Edit:
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 18 Minutes and 38 Seconds
Runes crafted: 17250
Exp gained: 99197
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Heavenzeyez1

2012-01-31 00:19:10

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 8 Minutes and 21 Seconds
Runes crafted: 21078
Exp gained: 132291
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 3 Hours, 55 Minutes and 10 Seconds
Runes crafted: -11644
Exp gained: 63313
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
***** STR: FOUND RANDOM: 'Evil Bob'S Island' *****
Screenshot of: Found Evil Bob'S Island random 3 Hours, 55 Minutes and 46 Seconds
***** STR: 'Evil Bob'S Island' RANDOM SOLVING FAILED! *****
Successfully executed.
<3

~Eerik.

PatDuffy

2012-01-31 23:50:52

Since the new update messed things up a little, I took the time to fix it….all of 5 minutes. Made a DTM for map-walking from the teleport spot to the bank since it kept failing there, and also changed the text it searched for while banking. It's working good for me, and might save others time.

I see no harm in posting the updated version since others have done the same before.

                  {/////////////////////////////////////////
// ~Astralz by Flight~ //
// //
// Version: 1.1 //
/////////////////////////////////////////}

program Astralz;

{$define SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
//{$i SRL/SRL/Misc/stats.simba}
// {$i SRL/SRL/misc/paintsmart.simba}

Const

//SRL Stats
SRLStats_Username = 'PatDuffy';
SRLStats_Password = 'lolzleftmypassinhere';

//General settings
TeleMethod = 'spell'; //Spell or Home
HPLevel = 79; //Your (max) Constitution/Hitpoints level
Food = 'shark'; //Lobster / Monkfish / Shark
EatAt = 60; //Eat at this health percent or less
RestAt = 50; //Rest at this run energy or less
SwitchWorlds = True; //Switch worlds after break?

//Pouch settings
SS = 5; //Which slot # has your small pouch (0 for not using)
MS = 2; //Which slot # has your medium pouch (0 for not using)
LS = 3; //Which slot # has your large pouch (0 for not using)
GS = 4; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'spell'; //Spell or Contact
PouchPriority = True; //Use 'PouchPriority'? (STRONGLY recommended when using Giant pouches)

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 5; //How long will we break for? (minutes)
Bir = 13; //Random minutes to add/subtract from how long until we break
Bfr = 2; //Random minutes to add/subjtract from break duraction


Var

//Static
Version: String;
XPMod: Extended;
Path_ToAltar: TPointArray;
ReportTime,CommitTime,EssPrice,
AstralPrice,Profit,PostID: Integer;

//Dynamic
RuneCount,Exp,Exp_C,
RuneCount_C: Integer;

//Break variables
w,x,y,z,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;


Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';
Level[SKILL_HITPOINTS] := HPLevel;
BoxRewards := ['XP','xp','lamp'];
// LampSkill := 'Runecrafting';
Active := True;
end;
end;

Function CashStringToInt(S: string): Integer; //Thanks TomTuff!
Var
i, ii: Integer;
Numbs: TStringArray;
Temp: string;
begin
Temp := '';
Numbs := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'b'];
for i := 1 to High(S) do
for ii := 0 to High(Numbs) do
if S[i] = Numbs[ii] then
case ii of
0..9: Temp := Temp + Numbs[ii];
10..12:
begin
Result := StrToInt(Temp);
case ii of
10: Result := Result * 100; //Since price is given to 1 decimal,
11: Result := Result * 100000; //instead of multiplying by the entire
12: Result := Result * 100000000; //factor, you must multiply by factor/10
end;
end;
end;
if (Result = 0) then
Result := StrToInt(Temp);
end;

Function GetPrice(ItemID: Integer): Integer;
begin
Result := CashStringToInt(Between('<td>', '</td>', GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' + IntToStr(ItemID))));
end;

Procedure LoadVars;
begin
Version := '1.1';
PostID := 860614;
XPMod := 8.7;
MarkTime(ReportTime);
MarkTime(CommitTime);
EssPrice := GetPrice(7936);
AstralPrice := GetPrice(9075);
MouseSpeed := RandomRange(17, 19);

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);

Path_ToAltar := [Point(243, 970), Point(291, 978), Point(293, 1031), Point(305, 1086),Point(340, 1123),
Point(376, 1158), Point(399, 1190), Point(433, 1177), Point(449, 1173), Point(460, 1175)];
end;

Procedure CheckVersion;
var
Page,NewVer: String;
begin
Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
NewVer := Between('Current version: ', '<br />', Page);

if Version <> NewVer then
ShowMessage('Your script is out of date!')
else
Exit;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(115,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(115,SRLStats_Username,SRLStats_Password);
end;

// procedure ClearSmartCanvas;
// {$IFDEF SMART}
{ var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except end; }
// {$ELSE}
// begin
// {$ENDIF}
// end;

Procedure Report;
begin
// ClearDebug;
WriteLn('=-=-=-=-=-=-=-= Astralz '+Version+' by Flight =-=-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Runes crafted: '+IntToStr(RuneCount));
WriteLn('Exp gained: '+IntToStr(Exp));
WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

MarkTime(ReportTime);
end;

Procedure Commit;
begin
stats_IncVariable('Astral Runes (Crafted)', RuneCount_C);
stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
Stats_Commit;
RuneCount_C := 0;
Exp_C := 0;
MarkTime(CommitTime);
end;

{ Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
// SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
Pic2 := BitmapFromString(291, 66, 'meJztXQd8VcXylt679CodpRqad' +
'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' +
'1CiRbQ==');

TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
DrawBitmap(Pic2, Canvas, 125,5);
FreeBitmap(Pic);
FreeBitmap(Pic2);
end;
}
{ Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((RuneCount * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

PrintOnSmart(['Version: '+Version+' (by Flight)',
'',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'',
'Crafted: '+IntToStr(RuneCount)+' runes ('+IntToStr(RPH)+' / hour)',
'',
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'',
'Gained: '+IntToStr(Profit)+' profit'],Point(15,200),16777215);

PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
end; }

Procedure Shutdown(Reason: String);
begin
// ClearDebug;
Writeln('');
WriteLn('{{{==Script shutdown==}}}');
Writeln('----Reason: '+Reason+'----');
Writeln('');
Wait(RandomRange(1000,1300));
CloseBank;
Report;
Logout;
TerminateScript;
end;

Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
begin

Exit;
end;
ATPA := TPAtoATPAEx(TPA, 8, 8);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
begin
FindColorsTolerance(ATPA2[i], 2802162, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 3)
end
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 3636519, B.X1-8, B.Y1-8, B.X2+8, B.Y2+8, 5);
Result := (Length(ATPA2[i]) > 0);
if Result then
begin

MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Function FindObjEx_F(ColorA, ColorB, Tol, Bounds, sX, sY: Integer; UpText: TStringArray; Var X, Y: Integer; Debug: Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(sX, sY, TPA, ColorA, MSX1, MSY1, MSX2, MSY2, Tol)
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, Bounds, Bounds);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(sX, sY, ATPA2[i], ColorB, B.X1-Bounds, B.Y1-Bounds, B.X2+Bounds, B.Y2+Bounds, Tol)
if Length(ATPA2[i]) > 0 then
begin
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
if WaitUpTextMulti(UpText, 150) then
begin
Result := True;
if DeBug then
// SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));
GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Function CalculateEss: Integer;
var
X,Y,MP,LP,GP,SP,
Total,EDTM: Integer;
begin
Result := 0;

EDTM := DTMFromString('mrAAAAHic42BgYHBigmB7IHYBYjcgDgBiWyA2AWI2RgYGXiDmAWIuIGaHssWAmA+I87IyGRJiYhhiIiIYMlJSGIpyc4GmMsExK5BEx8iAkQCGAQC0RgiX');
SP := DTMFromString('mggAAAHicY2NgYLBkYmDwAmI3ILYFYncg9gRiAUYI5gNiISAWBmIOIA73d2JQkJVkiIwIBepmgmNWIAnDyIARB4YAAI1jBGk=');
MP := DTMFromString('mrAAAAHic42BgYHBiYmCwBGJvILYCYi8gtgNiV6gYLyMCC0GxKBT/B+r397AFkkw4MRcDfsBIAMMAAFX9BKA=');
LP := DTMFromString('mbQAAAHicY2VgYHjHxMDwCYh/APELIH4IxNKMDAzCQKwAxMpALAvEnk4WQNVMKJifARMwYsFgAAApUAYj');
GP := DTMFromString('mggAAAHicY2NgYJjFxMCwAIhXAPE8IO4D4m4glmJkYBAEYhkgVgFiZSAWB+IQX0egLiYMzM+AHTDiwBAAADK5BVg=');

Total := CountItems('dtm', EDTM, []);

if FindDTM(SP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 3);
if FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 6);
if FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 9);
if FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2) then
IncEx(Total, 12);

Result := Total;

FreeDTM(EDTM);
FreeDTM(SP);
FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, 0);
Wait(RandomRange(20, 75));
if (Seq = 1) then
ChooseOption('Fill')
else
ChooseOption('Empty');
end;

end;

Result := True;
end;

Function NearBank: Boolean;
var
X,X2,Y,Y2,D,D2: Integer;
begin
Result := (FoundSymbol(1, X, Y, D) or FoundSymbol(2, X2, Y2, D2));


end;

{Function FoundBank: Boolean;
var
X,Y,DTM: Integer;
begin
DTM := DTMFromString('mbQAAAHicY2VgYKhgYmDoAOJ2IO4F4nogjgKKewFxMBAHALEfEGelBDI8+/wOjr29PBgkgeKsSBjEZ8SCwQAAx4EOzw==');
Result := DtmRotated(DTM, X, Y, MMX1, MMY1, MMX2, MMY2);
FreeDTM(DTM);
end;}

Function WalkToBank: Boolean;
var
X,Y,D,I,DTM: Integer;
aFound:Extended;
label
Start;
begin
Result := False;
if not NearBank then Exit;
DTM:=DTMFromString('78DA630C636660D8C98002723282183480342' +
'394CFB815A8E625AA9A96093318E490D59C00AAD947404D3450CD595' +
'435ED55DEA86ACA816A561250D30354731E55CDEC8961A86A8871730' +
'9500D0B235EBB00765816A0');

Start:
if FindDTMRotated(DTM,x,y,MMX1,MMY1,MMX2,MMY2,-Pi/4,Pi/4,Pi/60,aFound) then
begin
HumanMMouse(x,y,3,3);
Mouse(X,y,0,0,mouse_Left);
if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
if FoundSymbol(1, X, Y, D) then
begin

HumanMMouse(X+5, Y+5, 1, 1);

ClickMouse2(True);

if FlagPresent then
FFlag(4)
else
While IsMoving do
Wait(1);
Result := True;
end else
begin
Inc(I);
if (I > 2) then
Shutdown('Failed to find bank');

MouseMM(MMCX-13, MMCY-5, 2, 2);

While IsMoving do
Wait(1);
GoTo Start;
end;
end;
Wait(1500 + Random(500));
end;

Function WalkToAltar: Boolean;
begin
Result := False;

SPS_WalkPath(Path_ToAltar);
if FlagPresent then
FFlag(2)
else
While IsMoving do
Wait(1);

Result := True;

end;

Function BankTeleport(How: String): Boolean;
var
X,Y,TeleTimer,I,T,
SpellBMP: Integer;
label
Start;
begin
Result := False;
case lowercase(How) of
'spell':
begin
SpellBMP := BitmapFromString(7, 6, 'meJxjmMHAAEO8rWJc3NyMDCA2a4IU' +
'nxgvkAQKGsmzQwQ5TcWADCAJFAzWBgnCtQAFw4Mk+qwZgGw4gohAV' +
'AIRUCWQ3WfFABSE6AIAIEkPdA==');
TeleTimer := 5000;
end;
'home':
begin
SpellBMP := BitmapFromString(6, 7, 'meJz7dGTfJzBK0/UBonpNH30ZOSAC' +
'iiQrOUBEAqSN5VklICJABGRDRJ7uXYksAmFDuEsDY+FsCPf69HwgA' +
'2gakH24qPjGnLYDkVkAYSkrQg==');
TeleTimer := 5000;
end;
end;

Start:
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindBitmapToleranceIn(SpellBMP, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
I := 0;
HumanMMouse(X, Y, 5, 5);
ClickMouse2(True);
Gametab(tab_Inv);

MarkTime(T)
repeat
FindNormalRandoms;
if (TimeFromMark(T) > TeleTimer) then
Exit;
if NearBank then
break;
until(False)
end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell bitmap')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
goto Start;
end;
end;

Result := NearBank;

FreeBitmap(SpellBMP);
end;

Function OpenBooth: Boolean;
var
X,Y,T: Integer;
label
Start;
begin
Gametab(tab_Inv);
Result := False;

Start:
if FindObjEx_F(8949653, 2508118, 10, 10, MSCX, MSCY, ['Bank','booth'], X, Y, False) then
begin
ClickMouse2(False);
if not WaitOption('Bank', 300) then
goto Start;

FFlag(0);
Wait(1000 + Random(1000));
MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (BankScreen) or (PinScreen) then
break;
Wait(100);
until(false)

if PinScreen then
if (Players[CurrentPlayer].Pin <> '') then
InPin(Players[CurrentPlayer].Pin)
else
Shutdown('No PIN # given');

Wait(RandomRange(175, 350));

end;

Result := BankScreen;
end;

Function WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
ItemFail := 0;
Start:
if not BankScreen then
Exit;

FixBank;

Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
'+gB5qx01w==');

if BankScreen then
begin
if FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 20) then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
end else
begin
if (ItemFail > 3) then
Shutdown('Out of essence');

Inc(ItemFail);
if (ItemFail = 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
else if (ItemFail > 0) then
Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
Wait(RandomRange(1750, 2205));
goto Start;
end;
end;

FreeBitmap(Ess);
end;

Function DepositEss: Boolean;
var
T,Slot: Integer;
begin
if not BankScreen then exit;

Slot := RandomRange(9, 20);
MouseItem(Slot, 0);
Wait(RandomRange(50, 115));
WaitOption('Deposit-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Result := False;
if not InvFull then
break;
until(False)

Result := (not InvFull);
end;

Function WithdrawRunes(Method: String): Boolean;
var
X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

if InvFull then
begin
if not BankScreen then
OpenBooth
else if BankScreen then
DepositEss;
Wait(RandomRange(350, 625));
end;

if FindObjEx_F(1954517, 6579305, 15, 8, MSCX, MSCY, ['osm','smic','ic rune'], X, Y, False) then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(25, 75));
ClickMouse2(True);
Wait(RandomRange(350, 675));
end;

if (Lowercase(Method) = 'contact') then
begin
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
MouseBox(176, 100, 196, 117, 1);
Wait(RandomRange(275, 475));
end;


CloseBank;

Result := True;

end;


Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'Choose a character', UpCharsEx, 190, 30, 325, 55);
end;

Function ContactRepair: Boolean;
var
T,T2,T3, TTT: Integer;
begin
TTT:=0;
MarkTime(T);
repeat

FindNormalRandoms;
if (TimeFromMark(T) > 4000) then
Exit;
if ContactScreen then
break;
until(false)

if ContactScreen then
begin

MouseBox(455, 230, 465, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);

end;
Wait(5000 + Random(5000));
MarkTime(T2);
MarkTime(TTT);
repeat

FindNormalRandoms;
if ClickToContinue then
MarkTime(T2);

Wait(RandomRange(125, 275));
if (TimeFromMark(TTT) > 15000) then
break;
if (TimeFromMark(T2) > 6000) then
begin

MouseBox(100, 410, 400, 425, 1);
end;
until(false)

MarkTime(T3);
repeat

FindNormalRandoms;
if (TimeFromMark(T3) > 2000) then
Exit;

if ClickToContinue then
MarkTime(T3);

Wait(RandomRange(125, 275));
until(false)

Result := True;

end;

Function RepairPouches(Method: String): Boolean;
var
X,Y,X2,Y2,Slot,MP,LP,
GP,Spell: Integer;
label
Start;
begin
Start:
Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
'DJlKvQ=');

'contact':
Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
'YAAA0ZFcCA==');
end;

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

if (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or
FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
Slot := CoordsToItem(X, Y);
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X2, Y2, 550, 200, 720, 435) then
begin
MMouse(X2, Y2, 5, 5);
Wait(Random(100));
if (Lowercase(Method) = 'spell') then
begin
if WaitUpText('epair',RandomRange(250,350)) then
begin
ClickMouse2(True);
Wait(RandomRange(20, 75));
MouseItem(Slot, 1);
Wait(RandomRange(1575, 2150));
Writeln('Pouch repaied');
end;
end else if (Lowercase(Method) = 'contact') then
begin
if WaitUpText('Contact',RandomRange(250,350)) then
begin
ClickMouse2(True);
if ContactRepair then
Writeln('Pouches repaied');
end;
end;
end;
end;

if (not FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) and
not FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2)) then
Result := True
else
goto Start;

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
FreeBitmap(Spell);
end;

Function CheckPouches: Boolean;
var
X,Y,MP,LP,
GP: Integer;
begin

MP := DTMFromString('mggAAAHicY2NgYDjCxMCwC4gPA/F2ID4BxMeB+CVQ7j0QfwDit0D8DoifArG3tyODraUJg5a6CpDHBMesQBKGkQEjDgwBAKipDDM=');
LP := DTMFromString('mggAAAHicY2NgYJjFxMDQBcQLgHghEM8E4glALMjIwCAExNxALAzEYlCsqaYM1MWEgVkZsANGHBgCAPSrBJs=');
GP := DTMFromString('mbQAAAHicY2VgYNjBxMCwC4j3AvEqIF4ExAKMDAwsQCwCxGJALAjEpoZ6QNVMKJiVARMwYsFgAACZvASF');

Result := (FindDTM(MP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(LP, X, Y, MIX1, MIY1, MIX2, MIY2) or FindDTM(GP, X, Y, MIX1, MIY1, MIX2, MIY2));

FreeDTM(MP);
FreeDTM(LP);
FreeDTM(GP);
end;

Function CraftRunes: Boolean;
var
X,Y,RNew,ROld,
Seq,A,B: Integer;
label
Start;
begin
Seq := 0;
A := Round((CalculateEss*EssPrice));
IncEx(Exp, Round((CalculateEss*XPMod)));
IncEx(Exp_C, Round((CalculateEss*XPMod)));
ROld := getAmountBox(invBox(1));

Start:
if FindObjEx_F(6514535, 10133921, 15, 10, MSCX+50, MSCY, ['Craft','rune','Altar'], X, Y, False) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
FFlag(0);

if (Seq < 2) then
HumanMMouse(640, 220, 15, 15)
else
HumanMMouse(745, 180, 5, 5);

Wait(RandomRange(975, 1325));
While IsMoving do
Wait(1);
Wait(RandomRange(105, 215));
end;

if (Seq = 0) then
begin
if PouchPriority then
begin
if HandlePouches(2, 2) then
Seq := 1;
end else
if HandlePouches(1, 2) then
Seq := 2;

goto Start;
end;

if (Seq = 1) then
begin
if HandlePouches(3, 2) then
Seq := 2;
goto Start;
end;

if (Seq = 2) then
Result := True;

if Result then
begin
RNew := getAmountBox(invBox(1));
IncEx(RuneCount_C, (RNew-ROld));
IncEx(RuneCount, (RNew-ROld));
B := ((RNew-ROld)*AstralPrice);
IncEx(Profit, (B-A));
//OnScreen;
end;
end;

Procedure Eat;
var
DTM,X,Y,X2,
Y2,T: Integer;
begin
if not LoggedIn then Exit;
if not BankScreen then Exit;

Case lowercase(Food) of
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
end;

if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Withdraw-5', 300);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if (HPPercent >= 90) then
break;
if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X2, Y2, 5, 5);
ClickMouse2(False);
WaitOption('Eat', 300);
Wait(RandomRange(1000, 1500));
MarkTime(T);
end;
until(false)

end;

if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(X, Y, 5, 5);
ClickMouse2(False);
WaitOption('Deposit-All', 300);
Wait(RandomRange(425, 675));
end;

FreeDTM(DTM);
end;

Function HandleBank: Boolean;
var
S: String;
T,T2: Integer;
begin
Result := False;

if BankScreen then
begin

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PouchPriority then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(1, 1) then
WithdrawEss;
end;
end;

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 5000) then
Exit;
if InvFull then
break;
until(false)

if InvFull then
begin
Wait(RandomRange(375, 550));

if CheckPouches then
if WithdrawRunes(Lowercase(RepairMethod)) then
if RepairPouches(Lowercase(RepairMethod)) then
if OpenBooth then
begin
MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if BankScreen then
break;
until(false)

WithdrawEss;
end;


HumanMMouse(670, 100, 5, 5);

if (GetMMLevels('run',S) <= RestAt) then
RestUntil(RandomRange(90,100));

Result := True;

end;

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s: integer;
begin
if not LoggedIn then Exit;

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if NearBank then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
// ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
// OnScreen;
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-Bir * 60000, Bir * 60000);
z := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
end;

Procedure MainLoop;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearBank then
begin
if InvFull then
WalkToAltar
else
if WalkToBank then
if OpenBooth then
HandleBank;
end else if SPS_PosOnMM(Point(465, 1175)) then
if CraftRunes then
BankTeleport(Lowercase(TeleMethod));
end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;

CheckStats;

LoadVars;
//CheckVersion;
//HPPercent;
// ClearSmartCanvas;
// OnScreen;

SPS_Setup(RUNESCAPE_SURFACE, ['0_2','1_2']);
SPS_Continue := True;

Repeat

if not LoggedIn then
begin
LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);
end;

BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if (TimeFromMark(CommitTime)>=30000) then
Commit;

if (TimeFromMark(ReportTime)>=5000) then
Report;

MainLoop;
Until(AllPlayersInactive)

end.

Heavenzeyez1

2012-02-01 09:06:17

Thank you, running it again! Will edit later with proggy! ;)
Keep selling astrals with mid or higher! :)
~Eerik.

'Toxin

2012-02-01 11:31:11

Hopefully they'll continue to rise, they're doing very well lately in terms of pricing.

kingarabian

2012-02-02 06:02:33

Hmm it's not detecting/finding the bank.

Heavenzeyez1

2012-02-02 10:01:19

Use the fix provided:
Failed finding essence 1 times
Failed finding essence 2 times
Failed finding essence 3 times
Failed finding essence 4 times

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 2 Hours, 10 Minutes and 15 Seconds
Runes crafted: 10046
Exp gained: 41748
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
<3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 1 Hours, 34 Minutes and 45 Seconds
Runes crafted: 5000
Exp gained: 28454
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 4 Hours, 19 Minutes and 10 Seconds
Runes crafted: 18246
Exp gained: 76680
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
~Eerik.

kingarabian

2012-02-02 11:36:24

From: Heavenzeyez1
Use the fix provided:
Failed finding essence 1 times
Failed finding essence 2 times
Failed finding essence 3 times
Failed finding essence 4 times

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 2 Hours, 10 Minutes and 15 Seconds
Runes crafted: 10046
Exp gained: 41748
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
<3

~Eerik.

I am, I don't know why its not detecting it.

{{{==Script shutdown==}}}
—-Reason: Failed to find bank—-

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 11 Seconds
Runes crafted: 0
Exp gained: 0
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Heavenzeyez1

2012-02-06 12:24:27

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 3 Minutes and 1 Seconds
Runes crafted: 29362
Exp gained: 120984
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 34 Minutes and 2 Seconds
Runes crafted: 27570
Exp gained: 114168
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
***** STR: FOUND RANDOM: 'Freaky Forester' *****
Screenshot of: Found Freaky Forester random 6 Hours, 36 Minutes and 4 Seconds
Forester: We should talk to the freaky forester.
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Did not find Freaky Forester!
Forester: Can't find the Forester.
***** STR: 'Freaky Forester' RANDOM SOLVING FAILED! *****
Successfully executed.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Failed finding essence 1 times
Failed finding essence 2 times
Failed finding essence 3 times
Failed finding essence 4 times

{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 1 Minutes and 53 Seconds
Runes crafted: 19418
Exp gained: 88591
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 2 Minutes and 23 Seconds
Runes crafted: 23720
Exp gained: 102764
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 18 Minutes and 41 Seconds
Runes crafted: 24702
Exp gained: 102666
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 12 Minutes and 56 Seconds
Runes crafted: 30454
Exp gained: 125540
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 3 Minutes and 5 Seconds
Runes crafted: 9256
Exp gained: 37914
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 7 Hours, 7 Minutes and 41 Seconds
Runes crafted: 28564
Exp gained: 122614
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 6 Hours, 48 Minutes and 44 Seconds
Runes crafted: 27368
Exp gained: 116371
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<3

~Eerik.

Runescape Pro

2012-02-15 00:18:52

The update today broke this. Idk what's happening but it keeps clicking on the alter. Maybe the pouch detection failed.

EDIT: It was the RedClick check.

PatDuffy

2012-02-15 08:32:25

From: Runescape Pro
The update today broke this. Idk what's happening but it keeps clicking on the alter. Maybe the pouch detection failed.

EDIT: It was the RedClick check.


Yea, that's fixed in the latest SRL updated

Runescape Pro

2012-02-15 09:30:10

Just a little tip for whoever this could help:

This DTM has been working great for me:
DTM:=DTMFromString('mQwAAAHicY2ZgYBAFYhEgFgLi6UA8C0qn+fGC8btLKgzIgBEJAwEA0wYFcA==');

And I modified the OpenBooth procedure to open the bank in case it right clicks a banker. Add a TStringArry to the variables in that function. Then assign that variable with:
BankBooth:= ['ank B', 'ank S'];
And put this where the wait option was:
if not WaitOptionMulti(BankBooth, 300) then
goto Start;

Some minimal tweaks but I just thought I would share.

Heavenzeyez1

2012-02-15 14:01:50

Keep selling the astrals for higher than mid, we're getting the price back! <3
Script still runs well, thanks Runescape Pro! :)
{{{==Script shutdown==}}}
----Reason: Out of essence----

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 5 Hours, 43 Minutes and 6 Seconds
Runes crafted: 22334
Exp gained: 95251
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Successfully executed.
~Eerik.

PatDuffy

2012-03-18 20:45:46

It's been over a month since I last used this script, meaning a month without any updates.

I decided to pull it out for some bonus exp runecrafting, expecting to have to update quite a bit of the script. To my surprise, it still worked perfectly, with the exception of a small update to the SPS Path to the bank.

This is still one of the best scripts I have used, and the longevity of its stability is outstanding.

faster789

2012-03-18 21:03:01

Awesome ^ ! Will try this just now. :) and post how it goes

Flight

2012-03-18 21:10:40

Ha, well I'm surprised. :p

PatDuffy

2012-03-18 21:27:45

From: Flight
Ha, well I'm surprised. :p


So was I :p

Well I kinda lied, I did have to make 1 other change in the banking procedure. The current bitmap for pure ess was only working 1/2 the time, so I just changed it to a Withdraw(0,0,28) because I couldn't be bothered to make a new bitmap for it :p

=-=-=-=-=-=-=-= Astralz 1.1 by Flight =-=-=-=-=-=-=
Time Running: 38 Minutes and 2 Seconds
Runes crafted: 3016
Exp gained: 12354
Breaks: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Heavenzeyez1

2012-03-30 08:31:57

Hey,
It's been a while now, I've been inactive due to school. Exams coming around the corner..
Anyhow, Flight, my dear friend, I love you! :) <3
I reached RC 99 already a while ago, this script is just pure epicness. :)
Here's a pic for you:
(Anyway, I'm using your heavy-rodder now to 99 fishing.)

Much love,
~Eerik.

Flight

2012-03-30 09:07:30

From: Heavenzeyez1
Hey,
It's been a while now, I've been inactive due to school. Exams coming around the corner..
Anyhow, Flight, my dear friend, I love you! :) <3
I reached RC 99 already a while ago, this script is just pure epicness. :)
Here's a pic for you:
(Anyway, I'm using your heavy-rodder now to 99 fishing.)

Much love,
~Eerik.


Woah congratulations pal, that's awesome! :)

footballjds

2012-05-24 14:18:03

Flight, if you add support for massive pouch i'll abuse your script for a few weeks ;)

Mjordan

2012-05-24 17:18:09

From: footballjds
Flight, if you add support for massive pouch i'll abuse your script for a few weeks ;)


Ditto here. Just got 99 RC in the Runespan and now I'm looking to make enough astrals for 99 farming.