Log in

View Full Version : [C][SRL5]ZMI-Extreme



Pages : 1 2 3 [4] 5 6 7 8 9

Sogalishis
02-12-2012, 02:05 AM
i did i changed it to .5 and its still doing the same thing. is changing the tolerance suppose to make the difference?

Austintheman
02-12-2012, 04:22 AM
i did i changed it to .5 and its still doing the same thing. is changing the tolerance suppose to make the difference?

Yes.
Is your map 500x500? Double check both. Your map is probably 100x100.

Sogalishis
02-12-2012, 08:02 AM
how do i check the size of my map and how do i change it. do you think maybe we can skype seassion and you can help me please

burni
02-12-2012, 03:11 PM
[=====================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=====================================]
[ Run Time : 7 Hr 6 Min 2 Sec ]
[ Exp Gained : 262578 ]
[ Loads Completed : 300 ]
[ Monkfish Ate : 22 ]
[ Pouches Repaired : 0 ]
[ Breaks : 1 ]
[=====================================]
[ ZMI-Extreme 1.5 ]
[=====================================]

Le Jingle
02-13-2012, 03:43 AM
Very awesome: proof;
*
[ Run Time : 4 Hr 30 Min 44 Sec ]
[ Loads Completed : 187 ]

:}

evanescence
02-13-2012, 04:09 AM
Error: Exception: Access violation at line 142
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap]


lol, help please

burni
02-13-2012, 06:18 AM
Error: Exception: Access violation at line 142
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap]


lol, help please

I'm getting that same error with a different script, i'll let you know if I figure it out. Nothing yet.

World
02-13-2012, 07:33 AM
how do i check the size of my map and how do i change it. do you think maybe we can skype seassion and you can help me please

Download the SPS map attached on the first post of this thread and save it somewhere you will remember. Next check the properties of the image by right clicking it and see what the dimensions are (it was 100x100 for me). Once you determine this go into paint and change the dimensions to 500 x 500 and strech the image out. Save. Place the image where it is supposed to go in the simba folder and you are set :D.

World

abma2
02-13-2012, 09:02 PM
---

sckwarrior
02-13-2012, 09:09 PM
Is there a way I can disable S.M.A.R.T. with this script?

illuminatiswag
02-13-2012, 10:51 PM
Read the OP.... Change your TOLERANCE.

Changing the tolerance is not the solution to main solution is to add the SPS map

evanescence
02-14-2012, 12:11 AM
SMART Initialized.
Loaded: Server 86, Members: True, Signed: True, Super Detail: False.


whats that mean?

evanescence
02-14-2012, 03:34 AM
ok ignore my above mentioned error, i have a diffrnet problem, it just keeps clicking on the run button, does nothing else, any ideas guys?

rol prodigy
02-14-2012, 04:11 AM
SMART Initialized.
Loaded: Server 86, Members: True, Signed: True, Super Detail: False.


whats that mean?

doesn't mean anything smart should open up. and start running.

Adobe
02-14-2012, 05:07 AM
After awhile, it just sits at altar trying to take essence out of pouch and clicks altar,sits there til i reset it

rol prodigy
02-14-2012, 05:13 AM
After awhile, it just sits at altar trying to take essence out of pouch and clicks altar,sits there til i reset it



is this recurring, has it happened on more than one occasion while you were running the script?

evanescence
02-14-2012, 05:28 AM
its doing the same thing again, just keeps clicking on run button and wont do anything else..

can someone assist me please? thank you :redface:

rol prodigy
02-14-2012, 05:48 AM
I don't know exactly what the problem is because mine is working fine. Are all your things updates that might not even have an effect on anyting but just a question. I had this problem when I originally started with this script can't remember what fixed it tho..

edit: I also remember a while back flight stating that he thought it was most likely an sps error.

evanescence
02-14-2012, 05:52 AM
ty, will try again tomorrow

wister1
02-14-2012, 03:35 PM
with jagex new update script is unable to craft at ZMI as of now, what happens is that when he get to the alter it will spam clicking it without emptying pouches or doing anything else, just spam clicking the altar, thats the only bug ive found as of now

rol prodigy
02-14-2012, 04:21 PM
^^ correct and there will be a runescapr update in about 30mins ofc...

burni
02-14-2012, 04:41 PM
with jagex new update script is unable to craft at ZMI as of now, what happens is that when he get to the alter it will spam clicking it without emptying pouches or doing anything else, just spam clicking the altar, thats the only bug ive found as of now

Ya, thats only bug im seeing as well.

hitz
02-14-2012, 07:25 PM
Ya, thats only bug im seeing as well.

if u start and script go recharge prayer,the script spam-click the prayer altar too.

burni
02-14-2012, 08:11 PM
if u start and script go recharge prayer,the script spam-click the prayer altar too.

ya doesnt surprise me, I don't use prayer when i run this.

sckwarrior
02-14-2012, 08:24 PM
yep, looks like the script is down, was watching and it kept spamming the altar, saw some other guy start it up and stop at the atar then log out :p

niqje
02-14-2012, 09:14 PM
It keeps spam clicking the altar, so I couldn't see if the withdrawing from the pouches work and so also not the teleporting and running back to the bank. The running to the altar works great! If you can fix the spam clicking I will look it up again.
(can't fix it myself since i'm still learning to script)

Edit: After teleporting myself it ran to the prayer altar, where it would continue on click the prayer altar.

Good luck!

riwu
02-14-2012, 10:05 PM
to fix the spam-clicking at altar, uncomment/del the 2 lines at line 19xx (use control F and search for "if not didredclick"
i.e.

// if not DidRedClick then
// goto Start;
this essentially removes a failsafe but u shdnt have problem clicking anyway, so thats the most simple solution i can think of in 1min w/o having to fix the DidRedClick.
Do the same for prayer part (remove the "if" and "not")


as for those having trouble walking (eg. use safe path), it has never happened to me so im not sure what is causing it. Make sure u READ and FOLLOW ALL the instructions carefully.

Ancient
02-15-2012, 12:15 AM
to fix the spam-clicking at altar, uncomment/del the 2 lines at line 19xx (use control F and search for "if not didredclick"
i.e.

// if not DidRedClick then
// goto Start;
this essentially removes a failsafe but u shdnt have problem clicking anyway, so thats the most simple solution i can think of in 1min w/o having to fix the DidRedClick.
Do the same for prayer part (remove the "if" and "not")


as for those having trouble walking (eg. use safe path), it has never happened to me so im not sure what is causing it. Make sure u READ and FOLLOW ALL the instructions carefully.

This works, and 1 more thing, i think banking slowed down also :s
PS: love this script, git me 75-95 rc atm :D

Adobe
02-15-2012, 01:39 AM
THANK YOU SO FKIN MUCH@$)(#%()
98 rc
http://prntscr.com/65bam
82-98 in 12 days 6 hours

rol prodigy
02-15-2012, 02:02 AM
mine wont log in on it's own.. it's like fuck that I'm typing pass/user in but fuck! clicking log in!

Jim
02-15-2012, 03:42 AM
THANK YOU SO FKIN MUCH@$)(#%()
98 rc
http://prntscr.com/65bam
82-98 in 12 days 6 hours

Are you babysitting or did you somehow get all the randoms to work for the bot to run that long?

Nedd
02-15-2012, 04:32 AM
I've deleted the 2 lines for spamming the crafting altar but does the same for prayer altar, you say, do the same for the pray bit, I've searched through pray and can't find a line that shows prayer low it will pray at altar?

Ownageful
02-15-2012, 05:07 AM
walking to altar is not working.. keeps going back and forth and keeps spamming run

burni
02-15-2012, 07:05 AM
Are you babysitting or did you somehow get all the randoms to work for the bot to run that long?

It didnt literally run that long. Before update script ran 6.5 to 7.5 hrs flawless before you get random, so you can plan on when you need to reset it.

Jim
02-15-2012, 07:15 AM
It didnt literally run that long. Before update script ran 6.5 to 7.5 hrs flawless before you get random, so you can plan on when you need to reset it.

I usually get them every 3-4, so I need to check up on it every 20mins or so

lorenzo
02-15-2012, 09:09 AM
how can u fix that prayer spamm clicking plz help

lorenzo
02-15-2012, 09:36 AM
i fixed that spamm problem but he keeps spamm cilcking on empty the pouches :S

Ancient
02-15-2012, 01:12 PM
how can u fix that prayer spamm clicking plz help

Just run the script without prayer..
It worked for me and runned until random today (6 hours)

On line 25:
UsePrayer = False; //Use ranged protection prayers?

^that will work

lorenzo
02-15-2012, 01:14 PM
he wont bank anymore all he do is tele and clickin on the bank when he needs to pay mind runes he will run away and click on the tele and runs back and click on the bank agian and runs and then he tele agian and runs back click on the bank and run away and tele away hwo to fixxx

illuminatiswag
02-15-2012, 03:16 PM
he wont bank anymore all he do is tele and clickin on the bank when he needs to pay mind runes he will run away and click on the tele and runs back and click on the bank agian and runs and then he tele agian and runs back click on the bank and run away and tele away hwo to fixxx

Look on previous post for fucks sake you people keep posting the same over and over if you would look you would have seen someone posted a temp fix Jesus fucking Christ

wister1
02-15-2012, 07:24 PM
although the temp fix works for the spam clicking on altar there is an issue with banking, that i may say its true, he takes alot of time to find the banker of he indeed finds it

Ancient
02-15-2012, 09:11 PM
although the temp fix works for the spam clicking on altar there is an issue with banking, that i may say its true, he takes alot of time to find the banker of he indeed finds it

I dont have problems with banking, running for 5hours+ atm..
Soo.... You all facking liars ! xD

pkerfan
02-15-2012, 10:07 PM
Just started using this today. What hourly xp are you getting? Mine seems low at 25k/hour after 2 hours Im 96 rc too

uverworld
02-15-2012, 11:37 PM
Just started using this today. What hourly xp are you getting? Mine seems low at 25k/hour after 2 hours Im 96 rc too

Hey, im 91 RC and averaging between 33k-38k exp/hour.
Thanks to riwu for the temp fix , appreciate it :D

stu
02-16-2012, 12:31 AM
mine just stands there constantly clicking run over and over again :/

Ancient
02-16-2012, 12:53 AM
Just started using this today. What hourly xp are you getting? Mine seems low at 25k/hour after 2 hours Im 96 rc too

I have 95 rc and 99 Agi and can get like 42-45k exp/h max in a 6 hour run.
But atm there are some bugs, u will need to wait ;p

Flight
02-16-2012, 01:56 AM
mine just stands there constantly clicking run over and over again :/

Are your graphics settings all on lowest? Did you correctly download the SPS image attached (500x500 dimensions) to the main post? Did you paste that in the "runecrafting_altars" file in the SPS include? Did you adjust your tolerance for runecrafting_altars from 0.2 to 0.5 in SPS.simba?

lorenzo
02-16-2012, 07:38 AM
he wont eat food.. whuit is that??? why he wont eat food i got my settings on 50 and mponkfish is in the top of my bank nexxt to my pure essence normally it works but now he just wont eat anymore

stu
02-16-2012, 08:56 AM
Are your graphics settings all on lowest? Did you correctly download the SPS image attached (500x500 dimensions) to the main post? Did you paste that in the "runecrafting_altars" file in the SPS include? Did you adjust your tolerance for runecrafting_altars from 0.2 to 0.5 in SPS.simba?

1.yes
2.i just downloaded the file and put it into the folder, how do i change it to 500x500?
3.yes
4.yes

thanks for the reply

stu
02-16-2012, 08:59 AM
oh ok im being an idiot, its 100x100 ill change now

momotron
02-16-2012, 11:16 AM
[=======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=======================================]
[ Run Time : 5 Hr 57 Min 30 Sec ]
[ Exp Gained : 221108 ]
[ Loads Completed : 245 ]
[ Monkfish Ate : 38 ]
[ Pouches Repaired : 3 ]
[ Breaks : 0 ]
[=======================================]
[ ZMI-Extreme 1.5 ]
[=======================================]

this is fresh out the kutchen!

pkerfan
02-16-2012, 12:34 PM
Very nice prog

Brow
02-16-2012, 03:17 PM
Started using this script today and I can actually say it's better than any other script I've used for ZMI before. Great script, Flight. Thanks! :D

teamemb99
02-16-2012, 04:43 PM
sorry but im a bit new to this in " Simply download the SPS map file attached to this post and paste it in "Includes > SPS > img > runecrafting_altars."

how do i copt the image i cant find the "includes" and when i open simba the and pres on sps well just to update ect i dont see how i can copy the image. could any1 give me some advice ?

Thanks

Brow
02-16-2012, 05:18 PM
sorry but im a bit new to this in " Simply download the SPS map file attached to this post and paste it in "Includes > SPS > img > runecrafting_altars."

how do i copt the image i cant find the "includes" and when i open simba the and pres on sps well just to update ect i dont see how i can copy the image. could any1 give me some advice ?

Thanks

Go to your C drive on your computer > Simba > Includes > SPS

Hope that helped :)

Brow

teamemb99
02-16-2012, 06:03 PM
ok m8 gona try ty

pkerfan
02-16-2012, 06:12 PM
To copy the image you click the thumbnail then right click and save image as. Once you've saved it locate the file and move it into the folder stated.

epic vulture
02-16-2012, 06:37 PM
Does it run the long route too?

Mat
02-16-2012, 06:43 PM
Does it run the long route too?
I believe not, but its possible to change it.
Mat

holyarcher65
02-17-2012, 03:06 AM
mine wont bank after first trip. anyone with same problem?

evanescence
02-17-2012, 03:29 AM
takes a little bit of time to find the bank and does try withdrawing essence more than once and at CA clickes twice and takes some time before it teles, thats all the problems i get so far.. any cnages guys? i could do? to speed it up?

MrBubbles
02-17-2012, 03:29 AM
mine wont bank after first trip. anyone with same problem?
Can you further describe what's happening?

evanescence
02-17-2012, 04:12 AM
the time it takes to find banker is really fucking up my exp per hour..any explanations please guys???? that really the only problem i have with the script. other than that its awsome

wister1
02-17-2012, 07:28 AM
the time it takes to find banker is really fucking up my exp per hour..any explanations please guys???? that really the only problem i have with the script. other than that its awsome

unfortunatly i described the same thing a few posts ago, but noone believed and answered bot was workin... oh well the problem is indeed in banking, he takes alot to find the banker if he indeed finds it but for some reasons this doesnt seem to be happenning to everyone though

Tocholoko
02-17-2012, 08:40 AM
[======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[======================================]
[ Run Time : 2 Hr 3 Min 33 Sec ]
[ Exp Gained : 83063 ]
[ Loads Completed : 92 ]
[ Monkfish Ate : 14 ]
[ Pouches Repaired : 0 ]
[ Breaks : 0 ]
[======================================]
[ ZMI-Extreme 1.5 ]
[======================================]
40k/Hr :P

Thanks alot riwu for the temp fix; It works like a charm here is a great proggy i got of two hours rc'ing before getting 97 :D
__________________________________________________ ____________

btw if people are still having problems with the spam clicking at pray altar i suggest you disable the prayer feature and as riwu posted at line 19XX press ctrl +f on the zmi script and look for "if not DidRedClick then" put these "//"in front of it like so
//if not DidRedClick then
//goto Start;
i believe its line 1965 and 1966 for everyone.

Noke
02-17-2012, 01:11 PM
My bot will not use Earth runes???

kragon
02-17-2012, 02:22 PM
It suddently jsut starts tleporting then running to bank and teleporting again. What's the problem and how can I fix it?

Brow
02-17-2012, 03:19 PM
Mine has worked fine since starting to use it, great exp and no problems teleporting/banking. I'm no scripter of any sort but just make sure you've done everything Flight mentions in the OP. Have you done: "Also, go to Includes > SPS > sps.simba, and change the tolerance on line 96 (Tolerance := 0.2) to 0.5:" ?

Noke
02-17-2012, 04:10 PM
Does Not Work... Earth Runes??
Guess I need fire.

Mat
02-17-2012, 05:51 PM
It suddently jsut starts tleporting then running to bank and teleporting again. What's the problem and how can I fix it?
I believe this is his fail safe if it doesn't find bank.


Mine has worked fine since starting to use it, great exp and no problems teleporting/banking. I'm no scripter of any sort but just make sure you've done everything Flight mentions in the OP. Have you done: "Also, go to Includes > SPS > sps.simba, and change the tolerance on line 96 (Tolerance := 0.2) to 0.5:" ?
Correct.


Does Not Work... Earth Runes??
Guess I need fire.
I also believe so. There like 2 gp difference? not much

Mat

pkerfan
02-17-2012, 08:41 PM
Use mind runes to pay the banker.

stupidface
02-17-2012, 10:49 PM
I am having a few problems with the bot.

1. I can't get it to bank - it opens the rune dialog twice, then teleports, runs back, and repeats. I've tried fire runes and mind runes.
2. (Once I bank for it) I can't get it to run to the altar. It spam clicks the run icon.
3. (Once I run to the altar for it) It will use the altar fine and teleport/return to the bank fine. However, once at the bank, it is unable to use the bank.

I am using min-graphics, max-brightness.
I have adjusted the tolerance.
I am using the 500x500 attached map png.
I have commented out the Didredclick line for fixing the altar spamclick.
I am not using prayer.

If anyone can offer any advice, I'd appreciate it.

orzo kaar
02-18-2012, 06:25 AM
I can get the script to work i just can't get it to do what i want. I want it to craft fire runes but it just runs in some random direction

kushal
02-18-2012, 08:45 AM
the script works very well, the only issue i have seen, is when the pouch is damaged and can't hold as much pure essence in it, the script doesn't repair it using the "contact" method i set the script up properly, and even stated that it should use contact to repair pouches in the script.

am i doing something wrong?

momotron
02-18-2012, 10:13 AM
Gentlemen, just a warning! Be sure to have your declared food in your bank, my monkfish ran out and i didn't realise :P I had an unpleasant surprise when i looked at the script and found him spawned in Varrock with items missing :P

So learn off my mistake and always check!!! I should have known tbh! No worries though :) you make money at ZMI so i'll surely make it back!


the script works very well, the only issue i have seen, is when the pouch is damaged and can't hold as much pure essence in it, the script doesn't repair it using the "contact" method i set the script up properly, and even stated that it should use contact to repair pouches in the script.

Are you on lunars? Have you done the quest needed for Contact? Have you got the cosmics showing in your bank tab!?

Flight
02-18-2012, 11:00 AM
the script works very well, the only issue i have seen, is when the pouch is damaged and can't hold as much pure essence in it, the script doesn't repair it using the "contact" method i set the script up properly, and even stated that it should use contact to repair pouches in the script.

am i doing something wrong?



Are you on lunars? Have you done the quest needed for Contact? Have you got the cosmics showing in your bank tab!?

Those are pretty much the questions I would ask. Besides those, does the script detect that you have a damaged pouch? Does it take deposit 5 essence and attempt to withdraw runes? Which runes does it correctly withdraw?

one1988
02-18-2012, 11:14 AM
do i need to do dream mentor to repair pouches?

Flight
02-18-2012, 11:19 AM
do i need to do dream mentor to repair pouches?

Nope, because I've not even started that quest yet. ;) Just regular lunars to use Contact to repair your pouches or if using the Repair Rune Pouches spell you need to unlock it via the Livid Farm minigame.

one1988
02-18-2012, 11:45 AM
ok :) sounds good thanks.

Mat
02-18-2012, 12:26 PM
Gonna be using this on my second :D after Lunar Dipo <3 Just getting 61 crafting :P
Mat

wister1
02-18-2012, 02:51 PM
the script didnt work for me like 2 days ago but since yesterday it has been running almost flawless (only problem i found is that sometimes at altar it will spam click the pouches until i manually tele out and log out so that the script restarts the cycle on its own), i believe the problem i had was not having the SRL/SPS update which i did yesterday after noticing there were new updates so i guess people having the same problems including banking should check if there are new updates

fretje12
02-18-2012, 04:00 PM
wow i need to try this. im on my road to 99 runecrafting :P this will be great.

teamemb99
02-18-2012, 08:27 PM
cant wait to test this out

Mat
02-18-2012, 10:50 PM
[======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[======================================]
[ Run Time : 1 Hr 26 Min 4 Sec ]
[ Exp Gained : 23951 ]
[ Loads Completed : 38 ]
[ Lobster Ate : 0 ]
[ Pouches Repaired : 0 ]
[ Breaks : 0 ]
[======================================]
[ ZMI-Extreme 1.5 ]
[======================================]

On a Lvl 52 :P
Cheers Flight Another Amazing script

teamemb99
02-19-2012, 12:32 AM
hey testes this its absolutely flawless only thing i noticed it was not doin it wasnt filling/emptying small pouch and im pretty sure i did the correct number while filling its position well cant complain tysm for a flawles script

Mat
02-19-2012, 01:21 AM
hey testes this its absolutely flawless only thing i noticed it was not doin it wasnt filling/emptying small pouch and im pretty sure i did the correct number while filling its position well cant complain tysm for a flawles script
I've Found it doesn't fill small sometime, also it sometimes fails to find bank in W70, so I hoped to a world with me and this guy working Flawless so far.
Mat
Edit:My 1000th Post <3

Flight
02-19-2012, 02:33 AM
hey testes this its absolutely flawless only thing i noticed it was not doin it wasnt filling/emptying small pouch and im pretty sure i did the correct number while filling its position well cant complain tysm for a flawles script

Hm hm... Are you sure you have the right inventory slot # for each pouch? Also not too long ago someone pointed out that when a pouch is repaired it's automatically moved to the first open inventory slot available. I'll have to spend some time and make something to first: detect which type of pouch has decayed and knowing that move it back to its original slot.

I personally never had this problem because I always keep my pouches at slot 4-7 (already near the top).


I've Found it doesn't fill small sometime, also it sometimes fails to find bank in W70, so I hoped to a world with me and this guy working Flawless so far.
Mat
Edit:My 1000th Post <3

Hm well if two people say the same thing about a specific pouch it's worth looking into myself. When I get my normal internet back I'll do just that.

And congratulations, Mat! :spot:

Mat
02-19-2012, 03:00 PM
I love this script <3 50 - 63 in a night :P
Mat

dizzymauler
02-19-2012, 03:03 PM
I get logged out every time after my player casts the NPC contact spell to repair pouches. It says something like "The following bitmaps were not freed [36][37][38] etc." Anyone else having this problem?

Leonoras
02-19-2012, 04:27 PM
Runnin is not working so well, it starts running the dangerous path but than it clicks on safe one and try to continue with the safe on but after 10s it fails.

EDIT: nevermind, I got it :)

wister1
02-19-2012, 04:41 PM
Runnin is not working so well, it starts running the dangerous path but than it clicks on safe one and try to continue with the safe on but after 10s it fails.

EDIT: nevermind, I got it :)

you probably didnt put the map in SPS, or if you did it may not be 500x500, worth checking page 1 with the instructions

Haider
02-20-2012, 02:24 AM
....

Haider
02-20-2012, 02:27 AM
the bot can't bank properly, it climbs down the ladder tries to find the guy and idk what happens. It doesnt bank and teles out the altar after like 5 seconds. takes my guy like 10 tries to bank, wasting all my profit even at 87 rc :\, this slows the xp rate by a lot too.

and does the spell book have to be in a certain order to repair pouches?

Note
02-20-2012, 07:31 AM
I have followed all the guide lines .. this scripts works fine.. its great tbh but after lets say one hour? or close to it.. it banks.. runs to alter.. then it just stands there flicking back from spell book to inventory? then repeating unless i have to disable smart and teleport then re-enable smart .. other wise script works fine.

dangerousgoods
02-20-2012, 09:33 AM
Thank you very much for giving me 99 runecrafting AND keeping my social life.

I'm actually learning a lot from your scripts, nice structure for a nub to learn from.

Great script, great scripter !

teamemb99
02-20-2012, 02:12 PM
[======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[======================================]
[ Run Time : 4 Hr 3 Min 54 Sec ]
[ Exp Gained : 170280 ]
[ Loads Completed : 186 ]
[ Monkfish Ate : 18 ]
[ Pouches Repaired : 2 ]
[ Breaks : 0 ]
[======================================]
[ ZMI-Extreme 1.5 ]
[======================================]
longest proggy i got w/o it getting stuck TY <3 this edxp is with 93 rc

Brute259
02-20-2012, 03:13 PM
Hey I keep getting this error

[Error] (20:3): is ('=') expected at line 19
Compiling failed.

Would anyone happen to know how to fix it?

Note
02-20-2012, 04:25 PM
Hey I keep getting this error

[Error] (20:3): is ('=') expected at line 19
Compiling failed.

Would anyone happen to know how to fix it?

your missing "=" that sign at line 19 i think i should look like this

SRLStats_Password = '';

i hope this helps?

Note
02-20-2012, 04:28 PM
[======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[======================================]
[ Run Time : 4 Hr 3 Min 54 Sec ]
[ Exp Gained : 170280 ]
[ Loads Completed : 186 ]
[ Monkfish Ate : 18 ]
[ Pouches Repaired : 2 ]
[ Breaks : 0 ]
[======================================]
[ ZMI-Extreme 1.5 ]
[======================================]
longest proggy i got w/o it getting stuck TY <3 this edxp is with 93 rc

Really nice proggy dude how did you manage to get it to run for so long! mine was doing fine for about 1hr 53mins.. till it came to repair pouch and it just seemd to take out 1 cosmic and not the 2 air runes for contact cast.. and it just kept on taking out pure ess banked.. 1 cosmic.. then full invyed pure ess then just ran to the alter.. then just yeah faild from then on O_O

Brute259
02-20-2012, 04:46 PM
your missing "=" that sign at line 19 i think i should look like this

SRLStats_Password = '';

i hope this helps?

No, it didn't :/ I still cant figure out the problem, but i do appreciate you tryin to help! It has the equal sign the line itself looks like this..

SRLStats_Password = ''; (My pass here)

Esschers
02-20-2012, 08:22 PM
Not sure if I understand you right but you should write your SRLStats password (if you have one). Just leave it blank if you don't have. If you want to fill it out you'd have to write:

SRLStats_Password = 'SRL password here'; not behind it.

Haider
02-20-2012, 08:37 PM
wtf.. how do u guys get it to work for more than 30 mins getting like 40k xp/hr

i get like 15k xp/hr and im 87 rc.

the thing doesnt bank properly, it climbs down the ladder tries to find the guy and idk what happens. It doesnt bank and teles out the altar after like 5 seconds. takes my guy like 10 tries to bank, wasting all my profit even at 87 rc :\, this slows the xp rate by a lot too. then it doesnt repair pouches, keeps trying to cast repair pouches instead of "contact"

Austintheman
02-20-2012, 09:20 PM
wtf.. how do u guys get it to work for more than 30 mins getting like 40k xp/hr

i get like 15k xp/hr and im 87 rc.

the thing doesnt bank properly, it climbs down the ladder tries to find the guy and idk what happens. It doesnt bank and teles out the altar after like 5 seconds. takes my guy like 10 tries to bank, wasting all my profit even at 87 rc :\, this slows the xp rate by a lot too. then it doesnt repair pouches, keeps trying to cast repair pouches instead of "contact"



Are you sure you set it to 'contact' and not 'repair'?? Double check the script.
Also, double check your graphic settings.

Esschers
02-20-2012, 09:49 PM
@Austin,

I have the same problem as Haider, about 20k exp/h at level 85 or so. Also it keeps tping once or twice before it actually finds the bank. Is this because im using it on world 70?

PS. I have exactly the same settings as in the "Setting up RS to Auto" thread
PS2. After better inspection I realize it's only having trouble with the banking part (can't find the bank and then teleports)

Austintheman
02-20-2012, 10:43 PM
@Austin,

I have the same problem as Haider, about 20k exp/h at level 85 or so. Also it keeps tping once or twice before it actually finds the bank. Is this because im using it on world 70?

PS. I have exactly the same settings as in the "Setting up RS to Auto" thread
PS2. After better inspection I realize it's only having trouble with the banking part (can't find the bank and then teleports)

Well, I just ran the script to find a fix for the problems, however it's not able to craft any runes. It withdraws essence and runs to the altar, but when it gets there and crafts the one load of runes, it keeps spamming the altar. I guess it's not recognizing that it has completed a load of ess.

Hopefully flight can get a fix for this.

Leonoras
02-20-2012, 11:04 PM
I have now this problem

[===========================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[===========================]
[ Run Time : 49 Sec ]
[ Exp Gained : 1 ]
[ Loads Completed : 0 ]
[ Monkfish Ate : 0 ]
[ Pouches Repaired : 0 ]
[ Breaks : 0 ]
[===========================]
[ ZMI-Extreme 1.5 ]
[===========================]
Successfully executed.
The following bitmaps were not freed: [45, 46, 47, 48, 49]

After a few minutes it crashes, anybody got idea why?

Chris6564
02-21-2012, 12:55 AM
http://img577.imageshack.us/img577/1691/b4f954f9914d4b25908c3b3.png
Don't understand what is wrong :V

Flight
02-21-2012, 03:02 AM
wtf.. how do u guys get it to work for more than 30 mins getting like 40k xp/hr

i get like 15k xp/hr and im 87 rc.

the thing doesnt bank properly, it climbs down the ladder tries to find the guy and idk what happens. It doesnt bank and teles out the altar after like 5 seconds. takes my guy like 10 tries to bank, wasting all my profit even at 87 rc :\, this slows the xp rate by a lot too. then it doesnt repair pouches, keeps trying to cast repair pouches instead of "contact"



Hm, are you using W70? I'm getting reports that the script has difficulty finding the banker in that world. I could work more on the banker-finding routines when I get my internet back.

Also about your pouch repairing. You're quite sure your line 35 is correctly set to 'contact'?

RepairMethod = 'contact';




@Austin,

I have the same problem as Haider, about 20k exp/h at level 85 or so. Also it keeps tping once or twice before it actually finds the bank. Is this because im using it on world 70?

PS. I have exactly the same settings as in the "Setting up RS to Auto" thread
PS2. After better inspection I realize it's only having trouble with the banking part (can't find the bank and then teleports)

I could be because of W70. Quite a few people say it works just fine on any other world. I'm going to look into this soon because honestly if the script works on any world, it should be W70.

Thanks for the info, by the way.


Well, I just ran the script to find a fix for the problems, however it's not able to craft any runes. It withdraws essence and runs to the altar, but when it gets there and crafts the one load of runes, it keeps spamming the altar. I guess it's not recognizing that it has completed a load of ess.

Hopefully flight can get a fix for this.

Yeah I've heard reports of this. I'll have to rework the whole crafting system it seems. This I can probably do without internet but it'll have to wait until I do have internet before I can test it. Thank you for the info.


I have now this problem

[===========================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[===========================]
[ Run Time : 49 Sec ]
[ Exp Gained : 1 ]
[ Loads Completed : 0 ]
[ Monkfish Ate : 0 ]
[ Pouches Repaired : 0 ]
[ Breaks : 0 ]
[===========================]
[ ZMI-Extreme 1.5 ]
[===========================]
Successfully executed.
The following bitmaps were not freed: [45, 46, 47, 48, 49]

After a few minutes it crashes, anybody got idea why?

What does it say above that in the black debug box? It should say something like "{{{==Script shutdown==}}}", "Reason:" and it'll say why it shutdown. If you can provide me with that info I'd have alot more to go off of you see.

Note
02-21-2012, 03:17 AM
[=======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=======================================]
[ Run Time : 4 Hr 53 Min 42 Sec ]
[ Exp Gained : 160007 ]
[ Loads Completed : 188 ]
[ Monkfish Ate : 63 ]
[ Pouches Repaired : 0 ]
[ Breaks : 2 ]
[=======================================]
[ ZMI-Extreme 1.5 ]
[=======================================]

finaly! was waiting so long to make the dev of this script happy :P i like postin long proggys :DD thnx flight bro u rock! :D ur scripts are pure sexyness plus i learn to do a little scripting from them my self XD cheers will be posting more :D

Nataurs
02-21-2012, 05:27 AM
I'll have to spend some time and make something to first: detect which type of pouch has decayed and knowing that move it back to its original slot.

Maybe add DTM's for every pouch then do something like


if not ExistsItem(GIANT_POUCH_SLOT) then
if FindDTM(GiantPouch, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
DragItem(CoordsToItem(x, y), GIANT_POUCH_SLOT);
Wait(RandomRange(500, 750));
end;

Mat
02-21-2012, 06:50 AM
[=======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=======================================]
[ Run Time : 5 Hr 50 Min 50 Sec ]
[ Exp Gained : 121945 ]
[ Loads Completed : 193 ]
[ Lobster Ate : 74 ]
[ Pouches Repaired : 0 ]
[ Breaks : 1 ]
[=======================================]
[ ZMI-Extreme 1.5 ]
[=======================================]

:)

Flight
02-21-2012, 07:10 AM
... plus i learn to do a little scripting from them my self XD cheers will be posting more :D

Two thumbs up for this statement. :thumbsup:

burni
02-21-2012, 07:29 AM
jagex made randoms more frequent with one of the updates recently -.- Before I was running 6-7 hours every single time with no random and now I get a random every 2-3 hours. Anyone else notice this?

script still works great though 75-94 rc so far :)

Le Jingle
02-21-2012, 09:13 AM
jagex made randoms more frequent with one of the updates recently -.- Before I was running 6-7 hours every single time with no random and now I get a random every 2-3 hours. Anyone else notice this?

script still works great though 75-94 rc so far :)

If you want to run the ZMI script w/o a good chance for randoms, manually get a random (via cooking/some other skill that gives fast exp), and start the ZMI script right after. Considering the 6 hour duration, and ~40k Rc Exp per hour, your chances for a random (after starting it right after one) would be low.

Great script btw, helped me learn a few things! :>

burni
02-21-2012, 09:37 AM
If you want to run the ZMI script w/o a good chance for randoms, manually get a random (via cooking/some other skill that gives fast exp), and start the ZMI script right after. Considering the 6 hour duration, and ~40k Rc Exp per hour, your chances for a random (after starting it right after one) would be low.

Yes I know, but I was coming back to computer and my char would be in a random. Then I do random, restart script, and see script only ran for ~2 hrs and I'm in a random again. This was happening for a few days, but I was also dungeoneering all week. Maybe now that I'm done with dg for a week or so it will go back to normal lol.

Of course now that I'm studying/watching script its been running for 3.5 hrs no random, so maybe its back to normal for me :)

Note
02-21-2012, 11:25 AM
http://i42.tinypic.com/28vr9l1.png


So here it is! 6hour proggy! >:P can any one beat this ;)
did i say flight was awsome? ;).. anyways all came crashing litrraly like 2mins after i prt scrnd this picture got a random called "pick the odd one out" it did one of them sucessfully but after the 2nd one it faild so it logged me out =( , but overall 6hours! in that 6hours i was gone to the beach cought some waves came back .. what do you know , script created by a Genius still working like a pro! , p.s i saw it taking the "long route at a stage" not sure it completed it or not but when i came back it was still working !

Flight i think all im trying to say is ! your a freaking scripting king! now times this by a zillion! :D thnx mate

sorry! edit.. erm if you look on the pic notice how it says "- something amouts left till next level.." i dont know why it does that but it does , but the script does the job thats all i care about! but still weird wondering why it does that O_O

Note
02-21-2012, 11:42 AM
jagex made randoms more frequent with one of the updates recently -.- Before I was running 6-7 hours every single time with no random and now I get a random every 2-3 hours. Anyone else notice this?

script still works great though 75-94 rc so far :)


If you want to run the ZMI script w/o a good chance for randoms, manually get a random (via cooking/some other skill that gives fast exp), and start the ZMI script right after. Considering the 6 hour duration, and ~40k Rc Exp per hour, your chances for a random (after starting it right after one) would be low.

Great script btw, helped me learn a few things! :>

=o to the original question O_O erm i bot for a long amout of time as you can see but .. one thing for sure is i normaly get my randoms around the 4hr 50 -5hours of continues botting mark.. im not sure if this is just me but yeah... oh p.s thnx for the advice "le jingle" sounds like a safe way to bypass it , but might i suggest a breaking system ? as the script has the feature of it , use it?:D i have my breaks set for

//Break settings
BreakIn = 143; //How long before we take a break? (minutes)
BreakFor = 1; //How long will we break for? (minutes)
Bir = 1; //Random minutes to add/subtract from how long until we break
Bfr = 1; //Random minutes to add/subjtract from break duration


sorry i hope i helped =\ but yes perhaps give this a try??

Esschers
02-21-2012, 12:03 PM
@Flight

Thank you for looking into it, if I can be of any help by testing some things let me know

burni
02-21-2012, 12:52 PM
I guess things are back to normal for me.

[=======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=======================================]
[ Run Time : 6 Hr 47 Min 15 Sec ]
[ Exp Gained : 264020 ]
[ Loads Completed : 292 ]
[ Monkfish Ate : 17 ]
[ Pouches Repaired : 0 ]
[ Breaks : 1 ]
[=======================================]
[ ZMI-Extreme 1.5 ]
[=======================================]

Leonoras
02-21-2012, 02:05 PM
Hm, are you using W70? I'm getting reports that the script has difficulty finding the banker in that world. I could work more on the banker-finding routines when I get my internet back.

Also about your pouch repairing. You're quite sure your line 35 is correctly set to 'contact'?

RepairMethod = 'contact';





I could be because of W70. Quite a few people say it works just fine on any other world. I'm going to look into this soon because honestly if the script works on any world, it should be W70.

Thanks for the info, by the way.



Yeah I've heard reports of this. I'll have to rework the whole crafting system it seems. This I can probably do without internet but it'll have to wait until I do have internet before I can test it. Thank you for the info.



What does it say above that in the black debug box? It should say something like "{{{==Script shutdown==}}}", "Reason:" and it'll say why it shutdown. If you can provide me with that info I'd have alot more to go off of you see.

I got it, I had no cosmics in pure ess tab for repair pouch, that was the bug that he logged out when no cosmic. But anyways thanks for help :)

Note
02-21-2012, 02:18 PM
Ok sorry re-editing this post.. so all works fine im just going to detail the problems i hope this makes sence..

Issue number 1- Giant degraded pouch > its casts the "contact" spell then it hovers over all the npc's , not scrolling down to the NPC that actually repairs the pouch.

Issue number 2-It gets confused sometimes , due to the new update "22/02/2012" you dont have to right click and empty pouch you can direct left click on the pouch to empty it. maybe some one can look into that ..

Everything else works fine ,starting from banking works fine opens bank using runes > Deposits > withdraws pure essences> fills the Medium and large pouch , walks fantasticly to the alter crafts runes and teleports > REPEATS awsomesly .. just the above stated problems are playing up =\

PLEASE! can someone any one fix this Asap i would really! appreciate it!

Thank you
Zac

P.s MINOR FIX FOR NOW! For the mean time if any one who is reading this i suggest you either use no pouches at all or only use the medium and large pouches, this is working fine for me , statistics show that with just thoes two pouches i am able to get 33k runecrafting experiance per hour.

I hope this helps!

Thank you
Zac

Flight
02-21-2012, 02:24 PM
Yeah maybe I can work on it with this junk internet. It's not fast/stable enough to even load SMART but it might be enough to update the contact repairing and the new pouch features.

Note
02-21-2012, 02:38 PM
Yeah maybe I can work on it with this junk internet. It's not fast/stable enough to even load SMART but it might be enough to update the contact repairing and the new pouch features.

No homo i love you bro , if you need me to test it or something im more the willing im going to be active on this thread for about another 3-4hours :P then i have to go to work =\..

pkerfan
02-21-2012, 02:43 PM
With the new update efficiency should be increased by alot as it's just a single right click once at the altar. If this could be sorted quickly it'd be really nice. Trying to do it myself now but not doing so good.

burni
02-21-2012, 02:46 PM
Also, is there a reason it empties the large pouch first? rather than giant pouch. This is pretty minor and maybe its just me, but once in a while 1 or ess can get stuck in pouch because after crafting ess from large pouch there is less than 12 inventory slots.

I may try the regular 'repair' spell since 'contact' is goofing up, but last time i tried it was bugged.

Note
02-21-2012, 02:48 PM
With the new update efficiency should be increased by alot as it's just a single right click once at the altar. If this could be sorted quickly it'd be really nice. Trying to do it myself now but not doing so good.

yes , yes i should be a lot! efficent , emptying and filling the pouches is fine, there is a 1/100 guessing that it may or may not fail. but repairing pouches is completely .. erm broken i guess you can say if you are using the "contact" spell can i know how you are solveing this ? can you post the code you have got so far ? perhaps if its good or it may need just a little more tweaking Flight may be able to assist? =o working together is allways good! :D

Sorry i think i may have miss read your comment.."pkerfan"

erm
but once in a while 1 or ess can get stuck in pouch because after crafting ess from large pouch there is less than 12 inventory slots. I posted a progress report with a picture , my pouch set up didnt fail , meaning it used all the essence in all the pouches , if your using the small pouch i really dont think it would do much of a help it just takes up a space and doesnt really improve your exp/h..

P.s good luck on the "repair" pouch spell i hope it works for ya , i wish i had done livid farm for that..

Borland
02-21-2012, 02:55 PM
Flight this may interest you, in "Other news" section of latest dominion tower update, little note saying

- Runecrafting essence pouches now have the left-click option dynamically switch between "Empty" and "Fill" depending on whether it has essence inside.

This should stop the rare bug where the emptying or filling would mess up. It never stopped the script just made it do a run without filling all...

Thanks to this new effigy update I'm having to slave bot agility, soon as that's done I'm back to using this script ;)

Note
02-21-2012, 03:12 PM
Im going to take a break from botting i guess =O will still be active on this thread. am just going to watch movies or something till the fix for repairing pouches is completed. Wish you all the best Flight and other's who are trying to solve the matter.

wister1
02-21-2012, 04:21 PM
with the new rs update the script will also need an update


Dominion Tower Boss - Sunfreet


One of the highlights of Runefest 2011 was the A Character Is Born insider session, where our intrepid artists collaborated with a hall full of RuneScape fans to create a new monster, the Sunfreet, to be featured in the Dominion Tower.



The beast has now manifested within the tower, and can be faced in Special Mode. This flying monstrosity rains fire from above before closing for the kill with teeth, claws and its lethal tail; at combat level 530, the Sunfreet is sure to test the toughest of you. There’s also an easier encounter, featuring a level 80 Sunfreet. This fight is an opportunity for everyone, even those without the skills or completed quests usually required, to try some hands-on Dominion Tower action.

Those defeating the high-level Sunfreet will have the achievement recorded on their dominion marker, and the marker will change visually to commemorate the victory. While there are no rewards for defeating the easier version, it's a great way for lower levelled players to see what's in store once they meet the requirements.

--------------------------------------------------------------------------------

Since the Dominion Tower has launched, we've received a wealth of feedback from you on how to improve the content. Accordingly, we’ve made the following changes:
•You can now carry multiple sets of goliath, swift and spellcaster gloves. No more trekking back to the tower halfway through a Slayer task! The gloves also last longer before they degrade.
•Where a fight requires access to the standard spellbook for elemental spells, such as the dagannoth mothers, your spellbook will automatically switch to the standard book when the fight begins. It will switch back afterwards.
•Power-up items can now be exchanged for XP books. Have a surplus of scorpion meat or a proliferation of potions? Simply click the 'exchange' option on your reward chest to convert any unwanted consumables therein to tomes of XP.
•Better and more varied spectator angles are available. There are now more ways to view the action, and the camera will track the combatant by default.
•Adamant arrows and bolts will no longer appear as rewards, meaning better loot, more often.
•It's now possible to skip taunt and victory cutscenes, so you can get right into the action or straight on to your next match.
•We’ve upped the conversion rate of dominion factor-to-XP to a level that we feel is competitive. We’ll be keeping an eye on this in the near future and tweaking if necessary, but we hope the extra XP will be icing on the cake of the awesome combat and rewards available in the tower.

We’d love to hear your thoughts on this, so feel free to join the discussion on the forums.

Enjoy!

Mod Tim

In Other News

- A new "Total XP" tooltip has been added on the stat interface when hovering over the total level gained.

- Runecrafting essence pouches now have the left-click option dynamically switch between "Empty" and "Fill" depending on whether it has essence inside.
- Hati and Skoll have returned to their icy homes. Remember that you still have until the 17th of May 2012 to use up your XP boosts from the gloves and boots

Second last sentence says it all...

tallmantreee
02-21-2012, 05:30 PM
going to be useing this later today most likely im starting a new 24/7 rc'er and 24/7 essence miner so i can always have ess to power through with.

Note
02-21-2012, 05:40 PM
going to be useing this later today most likely im starting a new 24/7 rc'er and 24/7 essence miner so i can always have ess to power through with.

Just a little heads up , it currntley doesnt repair pouches through the "contact" spell.

Anthano215
02-21-2012, 05:42 PM
Just a little heads up , it currntley doesnt repair pouches through the "contact" spell.
It was doing it fine last night, but not so much today.
Also there seems to be a few issues where my character will forget to turn prayer on so I have to turn it on myself then resume it. Sometimes it will try to fill pouches before withdrawing the essence. Been working flawless other than those things

Note
02-21-2012, 05:55 PM
there has been a runescape update that why the repair pouch via "contact" is not working .. as for other issues you are saying im not aware of hasn't happend to me im running it without pouches or prayer :)

Mat
02-21-2012, 06:42 PM
Try this on Line 1733

MouseBox(480, 230, 490, 290, 1);

May work not sure tho.
Mat
E:Not working changing it agian

Mat
02-21-2012, 07:09 PM
Just Replace this function with this temp fix!

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

then on the first MouseBox Put this:

MouseBox(480, 230, 485, 290, 1);

Mat

Noke
02-21-2012, 07:10 PM
As for choosing the pouches in a certain order find this section:

//Pouch settings
SS = 1; //Which slot # has your small pouch (0 for not using)
MS = 2; //Which slot # has your medium pouch (0 for not using)
LS = 4; //Which slot # has your large pouch (0 for not using)
GS = 3; //Which slot # has your giant pouch (0 for not using)
RepairMethod = 'Contact'; //Spell or Contact

Make your LS number 4 and your GS number 3!!

Note
02-21-2012, 08:21 PM
Just Replace this function with this temp fix!

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

then on the first MouseBox Put this:

MouseBox(480, 230, 485, 290, 1);

Mat

OMG thank you!!! :D

Note
02-21-2012, 08:27 PM
{/////////////////////////////////////////
// ~ZMI-Extreme by Flight~ //
// //
// Version: 1.5 //
/////////////////////////////////////////}

program ZMIExtreme;
{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i SRL/SRL/misc/reports.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const

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

//General settings
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'monkfish'; //Trout, Tuna, Lobster, Swordfish, Monkfish, Shark
EatAt = 80; //Eat at this health percent or less
UsePrayer = False; //Use ranged protection prayers?
RuneType = 'fire'; //Type of rune to use for bank payment (20 runes per session)
RestAt = 55; //Run energy % to rest at (after banking)
SwitchWorlds = True; //Switch worlds after a break?

//Pouch settings
SS = 0; //Which slot # has your small pouch (0 for not using)
MS = 0; //Which slot # has your medium pouch (0 for not using)
LS = 0; //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

//Break settings
BreakIn = 143; //How long before we take a break? (minutes)
BreakFor = 1; //How long will we break for? (minutes)
Bir = 1; //Random minutes to add/subtract from how long until we break
Bfr = 1; //Random minutes to add/subjtract from break duration

Var
MPoint: TPoint;
Version: String;
Exp,Exp_C,ReportTime,Runs,
CommitTime,FoodC,RepairC,
XPToLvl: Integer;
PP1,PP2,OptionsSet: Boolean;
Path_ToAltar,Path_ToAltar2: TPointArray;
LCols,ACols: TIntegerArray;

//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 := Skill_Runecrafting;
Active := True;
end;
end;

Procedure LoadVars;
begin

Version := '1.5';

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

Path_ToAltar := [Point(160, 545), Point(160, 600), Point(165, 655), Point(175, 715),
Point(235, 710), Point(285, 720), Point(330, 720)];

Path_ToAltar2 := [Point(160, 545), Point(160, 585), Point(160, 635), Point(165, 685),
Point(190, 725), Point(235, 715), Point(285, 720), Point(330, 720)];

LCols := [789517, 921102, 1052689]; //Ladder colors
ACols := [7500141, 8092534, 8355706]; //Altar colors

Case Lowercase(RuneType) of
'fire': MPoint := Point(340, 125);
'body': MPoint := Point(105, 170);
'mind': MPoint := Point(200, 80);
'air': MPoint := Point(300, 200);
end;

PP1 := (not (LS = 0));
PP2 := (not (GS = 0));

end;

Procedure Report;
begin
ClearDebug;

SRLProgressReport(ResultDebugBox, 'ZMI-Extreme', 'Flight', '1.5',
['Run time', 'Exp gained', 'Loads completed', Capitalize(Food)+' ate',
'Pouches repaired', 'Breaks'],
[MsToTime(GetTimeRunning, Time_Abbrev), Exp, Runs, FoodC, RepairC, TotalBreaks]);

MarkTime(ReportTime);
end;

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

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

Procedure DrawLogo;
var
Pic: Integer;
Canvas: TCanvas;
begin
SmartSetDebug(True);
Pic := BitmapFromString(367, 40, 'meJztXQebVFW2rZPuubHJICA5Z' +
'xUUxDHQgIqKYGAUUQaZEZCHaQTUUXTAAQQBETEgosIASg7vD7 5V6/' +
'QtbndXVd+6VdCtr/fXw8dg9amT9t5rx1MqNUZSzgrDo1F01Pff87y' +
'XjHna856z9nUpx5dKXqkkGhwvP2FkXSpZIUZgFi0dOZBySivG sRiq' +
'VBrQiqH6qRnyhRh9O69iPzVE4K9xSs2XcroQdwkxVMqJkBtx/Ftb2' +
'//m+YmiE563Vqn7KGFKlAOKfzZMnMn9vr8tio4JMVKpe6Sc1KJlC r' +
'I/vuLuUqmtyaHC8AsOGAnRL096i7D/nrWvav1QvzDpAyS1bgfk8Lz' +
'Vnvei563z/S3WbvS8NVo/AKYTYiB+lJpn7bog2BtFP9cRKUlyIwz3' +
'RNG3QfAvKcdQKM2hVMlJytq/heG+OP4lSa5jQDCsMautXduq1UbR2' +
'SS5VCrFlCr5J9aVjHmSIvQIJDA2p6/eZEnxHnKxJsfngbUSIRLsE0' +
'R6qhf6Lgkx3Np/JMmFIPikmdPsp5aQEG1SjgUIwaFYux4mTGrIrA+' +
'CD8LwYBR9h58g2GXMMxAOABtR9BN+gmA3ZA4kDPi9qmDx/bc5/lCl' +
'FuaDKAKgCJyeJFcrg4ThbqVmW7upBQsVw41ZlSQXMWwcX8eUh Jhee' +
'DisHeMEwQ7K4b+22hBrCQVB8JGTyUlyGQda4xQwc0+p6SkzCq Xm4A' +
'fblX4AUii6Q1NuhKScEcenubrr1r7RL0x6l6BSw/BIHismSc77/pt' +
'aPwr7FHdPylFaL7V2q5RTfP+9qr8CbAPthj8hi4BtckxH+P7W OP6p' +
's/V0WKlZvr8jn2KtPXQZXM0x5vHKyEIMghlVWPkCemEQorUPyKd9 i' +
'qQQo+P418w2ngmCPdZu8LyX6eRRziWFA4W4hlonFn1Rysmd9x nyNj' +
'EGB70Bcr7XVlOFYiGGABbyZt6M45Owi3t7Sv/PSRjzFCAHrorWj+A' +
'iCTEMPwAqUs4EnMAP/h0MCM0LrtH6fnxGyvFSjoYwUepeY5ZBRQfB' +
'p1kskcKSbRgHWpvH/TuOPsd8jOetxd3oJpRWYZJSTiu+TjFEiBFCD' +
'IBl7cbE5KWcCJSSb2JVKI5PxPEprDEMvyMy6ROEXYrjs9k9DI L3jW' +
'mH1qDFOpzGS+h5L0DCp5z4X60XZNS6wce0XhbHP2ZUyfXcGuG 2E8S' +
'a1n/BD6wbgsyzWE4x71w/9RIpmt4hzepbBOEThvu6CBNYTOAypWYG' +
'wU6qxeO0j3okX+uF1YTJGoAfa/+n0LQlEBT4SKkHoJQrYwKlcGLfc' +
'UWNDyrHU2BuMeYJTFjr5YXm1koCRDRmOWR+xkL8gu4voCbrJD/OxZ' +
'muzvZxPh+6j7qQojx5NAi2R9EJ8CydEp9X++SdJ9/zXofogLailLu' +
'ERRU7xH7qawRVGEXf4nLSZXoFN5Bu20nQgMY8w+O+AuXoYig9 kV/x' +
'u3YWTRshTADaC0wPTAQVhrsXBB9VBoQuA1CBEPD9zQXGZPjgH +Ayr' +
'BSQCQNq/WChcVpLkbWblZoRRV+nmMTZhhD+FoI0in5IYcbVOD4dhv' +
'txQDRaq5JgvLWN3hK/7+h9peZiIdAOuFf09n8hxMjenlQ/tYQU2Bz' +
'sj2sJHMIrpylPYDRNBLvF8UXcbaXuyTEUbq/Cr1Rz5G7ht1xufHra' +
'814B7+P6Ob9rymWfab04ik4zbNH4oPoR8KPvbwcYgI1A90se3 HUHy' +
'AOXQXRTYlyg11rQPIQ8iXEiSk3HnIUYRNneBz3GPRD2GYsKw2 MQ40' +
'BcgCXGPN1X42j91BhBQbuoDT0tkyBPfH+r7+8Ar4XhISBqYFE KmVw' +
'kxJAkqZLWAg2LYaGGGkezg2GP+P7OrOlEE/t5azf4/rsF7qEQA31/' +
'F8MH63GTaSkca3SQ20ZhEHxs7Rtc5kmuzvT98G5+AsiM45+hn koMC' +
'kfRyUzIqZ/+wOT8IRQmW6EywKHkrJ9gj1j7nlKzeZPzRuuEGJwkv2' +
'c8fjfj+IYTArDrwbkEAI0BWtgydNNd6Ww0bZByAqyeQuGJAUK MdX4' +
'/rA5WEt0veaXlHSCl5vv+JrdSCHuAqCajYH2JfOBMGGgwXYUYAD Bs' +
'zEu9PaV+apaEGBfHp1IPXtl1gH8Dz8bxJShEY55sXBvKincUk IZfM' +
'Rhc4OQA4IrnPUfXxOLGBpVjYNFkJYkxy2EIeN4LnreqwRk6Ul JOTV' +
'nVcLZHCo1zu4iWVzkiLOUohtrfqe0V+YORUnOdP02pOVgmY8H umvW' +
'bOX9Q8qDZu8RuGNJ9CZgzir7Xur3A4Uo5HfDVsQCUjuethEiB QeG8' +
'phAmwDlR9A3zYPN7AsuZvRV3LuYMeCxEmzHPav1UozNMKUiS8 wRjb' +
'2L83LAkZGB6IixBV2cEaASR63mvYUXGLGGVU8WCE814M5gOep WSJK' +
'SoP9x3fKe5qTqaDcOD7hyVmkb/zyL8KeWM1GE14M9k0P3pScrJUPT' +
'ZaEuS3AiCPWCxKPrO2k043GIjB8H+OL7ovGop4DkOYeJ5q2n+ n6Aw' +
'OcqU2jxRoTJBKEXRjxVvSRB87ILaGLOosh6GX3TLB7bBZKLoh 7qSU' +
'wgxyvM2YtPC8MsoOs0Y6zX8MNlvLOHcpSg6BjvRmJVSzmQBwg AKli' +
'LFPrDpwnA/Zebgto7Shn1/BGQiCURLaWln1epRG8dn01t3HohL60X' +
'YXibrQp5Hvv8RDqW/SOoPQVJOA0eAEVz8Io7P0Zf+RKk0kEyqC+vT' +
'INiFYZkoezxjj6zEjbJ2S5pqsgqKCT+lUs74i6COvpEJCb2t1 CzKq' +
'FHF5lkqI+1p6XyAnfYRKVVddTkBFeDKScVSKVYKCnQgLayOZW ItDL' +
'wKlkW3AUsAnyh1j+c9Q2/26PS/5p/bDByKtX8j+mp3Stz3iyXn3Dm' +
'izTKeAaYSwG2SXGSC3FEgNxYCu8B0YszjkLpMEiiH9mDm4AiC 4H0m' +
'mUTObx+GBwBxe3tB/dQjaTBOklzGD47MmBWetzbVJs1QuawYmIT2w' +
'ozOiWqvlZjr6KAFbhFEAVQ8YG2OYSWV/i1JEsenPO9FjOb727ok3e' +
'Um2CZTwa2c28u4wGG415jHaolQJsacZbLcjDS96jcINPAIg7N DsZ+' +
'QNk4m48+KD8olm8XxmSD41NpXGdsd3aMfG0tz3iHwGjaKSz7v ec/3' +
'cVgCDQXTD3A0DL/FDjjUB20Vhl/F8UmsyPc3Y9OwIbCglZoL5cXih' +
'Y3GLDPmOZqNd7NKYpm1f8d687no/3gx8T8RAXXElaAt8LmrI27R4I' +
'Y5lpfAEBluOuAMYSgs971R9JVSU6F3jFna04DQ5glsrqxoYpz UsND' +
'v+aL+OmXtG3F8DYAEUhSCAjitVmMEQouJuOHOFwrcBeuDsHxI iuJ8' +
'Icay1QN28i5YN5BUrFlYix/oXFd1AuiOOUMu0RNVR54IpeZhD9s6M' +
'lqhqS9BFjW4wIDmVaObo8ibkusqEGefCNu2Sz4AzZYAOwN8kk 0PwA' +
'ZSnV0Jgu2sIdLdvrHH0KFiNXRLWtnkpHKxdmHz/89HQowAI7vAShj' +
'uAZszLe0vzQ8Mxa31YnAcEzIPAEswk/a072+tVLBWAtAA7U4gZNwm' +
'MnOdnLoBW023dl1aAna94jPB7wICKdVYPKhCkGOYIdsyLIKux LC43' +
'rUkKhOAx2q9jAHus64bQ7UPavZCGQY8r9T91m4Lw28AV8ApsK fwg+' +
'Xg62AQQWvX96PijCp8R2k/mt4DT+sHYelAKOFPgEmob4imMDwehkd' +
'9/10mgB11gfgg2Asupktzav6APi3HY9hYLjBqJAztviLCl0bRYRw Z' +
'LFlrX2fgfhIQCEZ2ITxODwb1MmASHCiTmgo4RrB7Q7ReggUCW ObOo' +
'ixOtHP/EwS7GQGcrPXC/qJmehGTIPgwTdJYz4qbT8ACTY8cGrMatz' +
'29zLuAZjEyc7wr4qLcyyiOL1U8b7x+06DWiZDLAp/1iW28YAHUHMQ' +
'IuA/zhMSTcoLz2rngSxieyO1y6UrGLPf9t/AVYfg5oc4Z3PbaHxfM' +
'ki2b/7hRdT/ZhXz8Ir4CW0Fj51zq8Kmf9i+48O8ruM7zXoCUBv4He' +
'1bydrLaP4qOgyshG/EDqegK+fGNSs2GXYZfzBkDgjrAbOnpPUicZr' +
't7yCHocFI0QET6L2NYeDiGI4xj9egEgjTI1UFADgCBmB62ouI 8x63' +
'DbtAFlNcD35li2KT0m92HwdnVqv44Cec2pWgsDFqvDQfhULHD WncW' +
'Ed0BajiJGuebTdWAdHWdG4t6HrI0OAg+wjh0t66CMsJ9o67vo t0Uz' +
'qVzPtu1zibMTw4AOO4D3wkxSusF0D6wIFyDBdgOvv8O3cXFKA DHGf' +
'Mk9GYc/0K3yUs9aS4FGQKOpmnTqEqCwJxtzFMwfNj2YVH9LyKnrMz' +
'uSY8/bJp0r2tcw9qHsQSKExm5huR8JmdrOxpo05zEpntcMBXw1t2g' +
'M+d9z3uFAspj+fZ4/N3z1oXh3lKHYLmXosYwhqUpUR8y5jnmu55iw' +
'fgk4ChGpopJEixtHJtuHaL8fA4ol0G9qpQY084YpcCHG89sNF o/DF' +
'kt5UjIrlR0f0U3e34fo2TosNhiO0aAeiWMbxIO3QqsKDUXYBt MhMt' +
'PDT5C6waStaQcX9F3YFgcOh16QUvcemA0Yj8DvcZcsgk1Pojr NxLX' +
'CZAjjm9V7tCTv9FFRiBPougEts6luhEtv06FONWFVKjp3ilaE WZxk' +
'+P4Z0BxVz4Qxz/m+0XR9FHK+sIfe4gpwUDoIitwWLQZrzlbD+qAnU' +
'xW4vPMacHFHp5+8grdvFnyqENzQTilHqA/uS2KvnG+Ux7W6ErKB63' +
'CXQ7wGPMsa7jmGfN4kvxGu7VU19+SYM6QA0GwHftfw1TMQ2Dw JUHw' +
'b5hLsPgwDvQOpFnmAxpYl20NIMSW4T8pNb9Uji6dyJ3erIjVJ UagY' +
'6fMLJ73fBQdZTJn2c2eE8xrvYIFbo/Rf55T9XfaPUhseq2/hkplmK' +
'xwrfcAIsYB2BPf3wJ8mPFq7k9bQOciXJIwPFn59W5XrknSwP/QjLh' +
'dcXwBZ13no0pN5yXEhZyOFbFUZwuAPVHxYKg5ZsaWYSRdLuet 3cEN' +
'NPg8QCZ4igb4C8WsYCoywPjD0DiYMO4J+8f2BdJBsLOL/eJ60rJk+' +
'wVrt8A003opbpQxKyAS6d/4OYr+S/H7le+/RxOsGYknlHqQboGJkO' +
'3s8XKadqiLv8PwXApFBmkD4c+GDxYWqLNbIU/q4ltAuwW0FwbH8e/' +
'sylgwCgN0Aejrct6i6ExasuS+OvS8l4PgAG6gtX/H/jDNL3IQlOXJ' +
'43sa3gNkZdZ3XMHwRFPjIDaVascgzHESnEkPlUSMk67GoWBz2 NW23' +
'rJcSxD2qJnU+RCHMHY5yrE8matR7e8kvKd1O91Z2KIPgmB3EP wLej' +
'kIPm/ryFTPyVASSC8jiPa2NmkZAp86cT0gRByf6cndLajg/kkfyyJ' +
'sNeQGOzhNwHZhdYBewOrsoLiO7QcdATPHPNmPIFqlzO+4uEUQ oWF4' +
'jIZYO8sYd4B/C4xzOwiXLY5vWXxs9zTG82DQbWMAeiwVhyTjhLQfE' +
'/4L2HMQLcphrbBVSzRtJtCrORNfmiTnwbY4BWg0Zn2Uo1c8qcO4 2K' +
'400mEngJkartRYqYXUMmB8RcDzO0u9CpOFlq80F2Wi4LdKPRJ FPyf' +
'JBdgj1EfzuTmRU+UUwotzpPoMtPYtunMDyh/ArWuQmcAV5PSyvwUw' +
'jGYjduYysFmdsYSYDBGk9aP0lj9X56shPXAPAXjApNh27vyMz DhDr' +
'd3s8sEAjcAUYDSuJScl7J11Iop+hVAC9GUPNM/dFsgoqPK2cqFczh' +
'JLA9hQuajUIK3tiiOj6BdIb9x/V1GeQ1JJ+uHXMuXg5zA8wXc3/qr' +
'1kwSiliyT9ZVBY85l16aLjAg/VYhxRBjiLF501is9jdfYn7lPELsN' +
'fAqudE3yoUSACrBFMO4YWL+jGSYQVsYAAg1zTuO0zUg5ehtFX 7N/1' +
'BJwaMYDfIYtQKucO1CE58Eoe4kgEObtUex8I7xQhXBJsp2KAV +xV6' +
'76GBsJEQf2p6xbSkyVU29aNp4qd9AFJgHkg84FvMkYp4o7M5S 53Gt' +
'yONJD6ESm2fw7/RfZGXJY9jkcI0QCWYfr7VxVkLQMMXQQzBwXJnCG' +
'J+5JFB2y9rU8S8JsfR/w41VjlvD/JpSuIl3wOhbOHAFf5AOKgTErK' +
'w5P4GFnP7aQXJczAAxIbCgs1n7mPL686IgI8156SoH23yuWZQ 2ADd' +
'wL6ybrlOhLrVDbcPnBcThiLJbZLN/0atWbovV6oIvlRU/FNtg+lfJ' +
't5s9U918xveS0q8hmdAkW7rNYYNMgSrO/3DXKsSM4UzYxBsqdofVy' +
'Ke9r/C0VixnCfmFl5ak4vgx9TZ3bff9VJSHZ5XXXGNCwLnUflDhAj' +
'vsKOhVhKi5kL3d33OUuZL7/Pvaz0oPU9zfRknLKtGz+QPO6WFJbOV' +
'VgEiaZr0xewhaGjmaD0/kA/BnAA5t6O8taQ5gD1N31hYkV4m5MGLr' +
'Y999m1uiq1j1Yc4vYhvFt6qxTsMJ6dDMWIDY1LZH3k8I+bcYo NzNz' +
'e00qWs/1mRpVjWPSeikby8+jlX2hwULI20EC1mi2DpR3eLDnrXR9w' +
'lmzWU83USpecLVFYBBwkNb3t6KRXQA2ASfyYkgCid+C4AMaIz 3yRR' +
'fCDicEvTfZ7XweL1iSRiHdnyJ7T9yGwMypm+0fwRgkxnB1WyX 2s5r' +
'Etw9ec01T2W3sQpqzN4h7ddMFI+j3nu48Zta+zWKltzPOUnw+ Ij6v' +
'SeB95o3fxGExU+sHY1a4FUEjs+X4enraf6DMHFR7JMMeXNPZl auc2' +
'kEr7HaFxaWcBbkKKxsXLH07qbUOmftdfwAIw2beZpJyJlQAdK UL4r' +
'R19EHqE+1B2KgEfz4K3eoqjoNgL4+sN2UddD2b2t0qBTXmMTB I6vw' +
'8wVtdj/BhukoiZyuxX/cerrFJiqm/PCemnNOGzNWo7C0/mAINmEVf' +
'zJLardQCwuA3ff9Dsr/vjE1cIfdh399e1w0yns69FRRNmt80muWfE' +
'xloGEpHyvps/3P26ul4WyoMv8SVgJEFCQzoAtwVxyczM7zKlOxaws' +
'SQ9ye7vHHmDU7hF3XUXdLSCVkh8jthz7TaCxHMXh5KLdDOpKk DbOt' +
'6tZFsq/xULnJxDXzYI7rlvAlB+qyryKOUXl/Ye4DNh5bE5mTuzI6+' +
'gEyYKnaIkXqJG8UiwSnU+L2ZY8mWU5/SyS/p743o6vyBYcFDfJyxZ' +
'wsR95C2QEge2c3f/byZhwnSYUfz20WGvy4WcH9pvdh1/e0SiA/DY/' +
'h3SCocB51sku6CFcAMrqSip2iUNmaZS9iGRWDta8zlm83deAL iiE7' +
'dpzqPoKPoXFamgeVT/HxDCAiT00lyvpKUBbwBa6vb9yo650e6ZlOu' +
'IgOgKwy/hsDU+uk4vs4E9Z+YygvOHcP35updsyD40L3T57xnzFK4y' +
'j25LYyDVUOYJMkN6qmCL03UHvwumDYu8xN6jcm6I4oN5XkbXB zHub' +
'MgWPqI99WZXXwCYBLTz6bxGb6hvSfooK8net4rzFC12DG+i1G OFkX' +
'RcSa3TOTLR7mm55Ki2zqa/y9jeXWTvRktzdUJbP55M40lfc1XPxoi' +
'AZ7qIknSiDxERzmKCtZjKHw4H6c7CJSFy8OC0HprZ+rLwWw2J jAGH' +
'cIrXFCGLdmzIwgp52QnAIWS9m+/wUo0zf4MC5yT1jkPu8WavVJpIB' +
'+lequLmwviCPOXcnRqocCUnkq1VR8iSsb9L2fFLGQjPe23qbh SuFw' +
'yNogumNxec2gxEEsGVOb+fwipCwkAo7tQDdqYINgTRUfYHvBp J7Fb' +
'FEttkhRPv/yQDZ85G89Z9UolrOeUlNar+aCepVO9Pb1FlyhDNmHfW' +
'IDzXU7fNbg+bRqzBvZCXZ0uGWjr4XCZpDQfwjYIPkjndsaYxx sFcp' +
'h/FH2fiqMLrP74mFmytwxh1oCfdnWgnvfX9HR6INfiOMvRLCMd5d K' +
'tIaAYue60cIjH1PQ+zrkNd24ZlowNSSc8ELvnEjsZoe5SJOth et1f' +
'lmkrtzR82PlviSt+8/13+MhvfYTv0W2+MyNJyrUkrai7qUMx1E1bR' +
'yF/yynkK+ejnOuPmuJ0sReysJ9E6R0nBa3BoqHeJ9rsn7gGC5B17v ' +
'2ppo9MuYRhQp2caY0+hYNv7Zs0pTuCdLxFV6CPAJUh1V2GCcx waF5' +
'WYfRMYAG3OugF39+uVK1qgnL6PbCiEONrDwYzcBn/AuTwBIx35/hi' +
'MWMB/TI8beZzitGTEp2N9zrDh0bK+Sj6CRiMutjLKeG1bq+8QpKBO' +
'tJ5UHHxGPbt4ttJYAM6H3WaxHKN5ZArOvsNDMtmtzjHLORe5+ Xc5b' +
'oZszJ0KJsc3sUEv2XugTau9CJFUI/yUACPab2Ur0jc5A8kyd7CL9z' +
'lI0EJ+VhbOTQ89zbkQiQuq5kG4w18ketF3/g4lu/93eSVng+9E4Zf' +
'tRxHFSOy54GMCjtEazFnIlC2bF+yHvw+z/sbvaaXwnC/K2bMM5ArT' +
'MbecodXsS/NWfbGPM7ajXFpdwLInCEQ7JgkXaB5Tty6nVdqBtMquj' +
'O+YNqnC3lIrr0622q9EEvjgwJb3QOFYPw8q6ux5GEuLsOFKKY h7al' +
'odkqYHZxtY88MsQi9U7lZEHzmmoLi3xly6r5pMgj2MyVgOmbF 95v2' +
's/qpC1kH8CDxCJYOZzeKTU1vQsJj2g7hZLuTEZC8m3MJuEUARfTb 4' +
'Kw/gEyjz7yZ2qI8ZLVeAHlCk6Hlr7BBvQ7CumAOx/E54G2YjVF0sk' +
'B0m3kpxnWgtXYbJszQf++7XktlYTIx+4iwA6V1laBLjU6ofSY zjjy' +
'HTQ8WgOvdhWFPlcn8wMScy6QKg0X/K/SmSwsE7MdGdWnLwB6tA4Gg' +
'cLuYpZDH3w5O2Uv2PEnf8qjOYlyyjmZBOo2hdO5VHTaAfmS5l nDdl' +
'pjJ2cwhDkkdGusgyqCFjXmWfSNnsRwp5jQaG5+tLb7sAkswPi XMJc' +
'r26nJJiJGpJFkYht8RC3UffAzDQwPdK72sxLzF4M7H4gq1+J9 cAvA' +
'IVoC2d5dgrnql2gIHVN4rh1rhXRpLpmtmq63L55dyHu/kgGo2KWDh' +
'NNadrWVcu7WkmGyzOI7PE7xNgTRmRmLDROg4FWySJBfZ2nowQ yd9h' +
'Nq62LkMf0Q1PqzYLhKHCy0/i7VsD0PkWruR75hvYzTzdXpgTlq7JQ' +
'0I9kgD2M1pDbAfC4EH1oZGIWu3v2THpx97DA13TLrsYzlKdXm UzxT' +
'OTPMHjJTTXHJmiY3aoFjpFa8yZzYcKJfpUdfvrL1F+UnE8RXH MoBM' +
'NJ/zeF3qtZzS+sHs83AVG4dNlV+tbyixs9CiOL7GJMDqhQnl/8W/s' +
'qzyBr24WYPFY9RmJwsHBta1ZcrTYA7/jm4YQBOd/tfdSfyFWWQ7qL' +
'CGE74OrrFLvosicZKBa4cF8cieGO9H0WGocq0fogk2iEON6O6 Hd09' +
'aAFoTprY2lCmYmbPUrQubk9Y2NjwOoBp2mJtzLo2S9J1ef+Vk v+zd' +
'ow8QSGMh+Ma58QkzRqXX2FKnjGTNyyKabPsyEcOXtX5EqftTM SLyQ' +
'fSQtsz4PL4a1qovhPrgQ/Yv5hh8GGuvpuFGpZD7ahDsJnie50IwTO' +
'76p+9vdvHxqjN0zfooSf7TouMrQ98o+iZNA1N1+gkzFrPENa0 luKp' +
'OdM3dyJ5mGGK2Jfa4qD/nNhcXiOMbnle95McFi1M2P9WtoZl2mfnM' +
'hTvLBh3dj15RLAxyYpns3GlWQoxja+iuT/p2+WGg+S9svTWdrpV3s' +
'UzARXbm3AqtzVetD8fxmaq/jiWw1GtCF5vX8zbwdc5FnFjLDQfFZm' +
'KbnGOh6NuRGORNaFJqxm+p0erk+/UC4Sa7NLD0+h1kGGtxl8dVAey' +
't3aT1E8wbv9faV1gmczktP7F8HVVSqlcysXsU7+UHRIDqCYdy eQaA' +
'TJR6gAw4hR6AHk9E0FsylZWV7zucybP4HuYPzhfSCYfL1tk1o +FOU' +
'1Mp32jdq39tUt4NKUczZBOLx1X3CRizmpla+Orf+azzOUaOqh NThr' +
'7IcM1VAC3WIPd4EK7++lc+jVQVVHisPTzLwvkLLEnogs0UJkb Ldyr' +
'b8O639p3UE9VBuCEs0/iK1Trt7B7fRcRZ5wru/gNwxbqqg2H4OUxC' +
'Co338PdKu2PMKgh2uf5InMDnziGMP9kQ+ELny3yaavSI6z2eO ZHRv' +
'Crd/UXNkwnDY1AEzCPaU7RRrWbl5jY2SVjeR1wlWSLkG+QiC91/eB' +
'8CNmreWGmvCuFPFTPUtSSls32/Ug83/tUFmopotkjaS3H3TT63ieI' +
'NmU0bDfbUsxDvLFUL0ma5G+q7d5S6B/c/CD5u9OG2uiRZW/GS64YB' +
'JgqC/VhXEHxIcDgIYpYdtP7BtoHlPL0w/DfTgWoWxZOXZ/I53YOs8' +
'F1LeJkLR7nedD1G39iReFRVyc8m7Z+wjdIQrR9gGdR67K1Scw FlIR' +
'U97zX2qXAl27LahmtI/mw0ihVV82izzKCDbh4wCVsrrKFd3O58s2k' +
'facW/DHd/p72j2M31AT7tF2A/XQocg79eHP/CNwtufXupbM9ugurP' +
's2ONkHBtSDFnMEuOZmi1qNxDA+qbGrwvdncXYiwdqiOz8gR3O 03G9' +
'pxeYBl7xIqwxeVOPyluYU/mz6hYG94fugQLEITANFxaNt7MGXgS1E' +
'E+71i5mxwRzhxMgPkb03viOOEs8VbrAgCzhWxQsAR4Dxai4zj IbSK' +
'lisdJ0cZUBEj1e7bMZp65JY8Ufy+mMOFusGP5Y+TfhfhhLwuI uFku' +
'Rb/+rxvzDH7XlV8RgFnculpqrjNuOYrvhaR1iIX9UnYxc+9C5kr/h' +
'w4xn9pzsFLztV7eWXiWd9v14rsNezMEMJiP+5xooiW4YPMT52 gK+5' +
'K35BZRdwwj1t3ApNOneRDXmft0ma99XUlP5JDv72RPiXPYFpx aE4X' +
'Pomi3OqX1Q2G4D0ZxM+8a0HCe1usvbUk5hl3+vqYhgz2/3pf88w0T' +
'+JSVfYe5nJvQ/sCBzNzIk6Kp+JjLhzBSsq68OL4WBLutfQs/+Eu28' +
'Q5ETS1pg4/hP+HzkNV5mk4w130zZtv8JtRY21y6gj9pzlKWRCZj+/' +
'CLk5q1GyMYQ8QduAGoiYMDTjbmec97lc1elmI36CZNWHs1nKi gV+p' +
'3BNgN4o75V7c7/eBOEOOGD/n+O9a+UVTA9inCPXdd2Rurlfs/VkgA' +
'rw==');

Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, 90, 15);
FreeBitmap(Pic);
end;

Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
if (Exp < 1) then
Exp := 1;

XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((Runs * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

SMART_DrawTextMulti(True, True, ['Version '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'XP to next lvl: '+IntToStr(XPToLvl-Exp),
'Load done: '+IntToStr(Runs)+' ('+IntToStr(RPH)+' / hour)'],
Point(15, 255), SmallCharsNS, 16777215);

SMART_DrawTextMulti(False, True, ['Time till break: '+MsToTime(TTB,Time_Bare)], Point(575, 445), SmallCharsNS, 65280);

DrawLogo;
end;

Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;

Function RunesMenu: Boolean;
var
X,Y: Integer;
begin
Result := FindText(x, y, 'light', UpCharsEx, 145, 275, 360, 315);
end;

Function UsingQuickPrayers: Boolean;
Var
X,Y: Integer;
begin
Result := FindColorTolerance(X, Y, 9154193, 710, 75, 730, 85, 20);
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;

Procedure ActivateQuickPrayer;
begin
if UsingQuickPrayers then Exit;

HumanMMouse(723, 70, 10, 10);
ClickMouse2(True);
end;

Function LowPrayer: Boolean;
begin
Result := FindColorTolerance(X, Y, 255, 740, 70, 760, 80, 10)
end;

Function GetClosestMMDot(WhatDot: String): TPoint;
var
TPA: TPointArray;
begin
TPA := GetMiniMapDots(WhatDot);
if (Length(TPA) < 1) then
Exit;

SortTPAFrom(TPA, Point(MMCX, MMCY));
Result := TPA[0];
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);

if ((Ident = 1) or (Ident = 2) or (Ident = 5) or (Ident = 6)) then
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMCX+10, MMY2, 10)
else
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 10);

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 10, 10);
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], 16382969, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (white)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 1244922, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (yellow)
else if (Ident = 3) then
FindColorsTolerance(ATPA2[i], 2413294, B.X1, B.Y1, B.X2, B.Y2, 5) //Bank
else if (Ident = 4) then
FindColorsTolerance(ATPA2[i], 2370858, B.X1, B.Y1, B.X2, B.Y2, 5) //Hunter
else if (Ident = 5) then
FindColorsTolerance(ATPA2[i], 1787389, B.X1, B.Y1, B.X2, B.Y2, 5) //Big arrow
else if (Ident = 6) then
FindColorsTolerance(ATPA2[i], 2763504, B.X1, B.Y1, B.X2, B.Y2, 5); //Dungeon
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Function NearSymbol(Which: Integer): Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(Which, X, Y, D);
end;

Function AboveGround: Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(4, X, Y, D);
end;

Function NearLadder: Boolean;
var
X,Y,D: Integer;
begin
Result := False;

if FoundSymbol(6, X, Y, D) then
begin
Result := (D < 15);
Exit;
end;

if FoundSymbol(1, X, Y, D) then
Result := (D < 15);

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)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

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, 800) then
begin
Result := True;
ColorToleranceSpeed(CTS);

if DeBug then
SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));

GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
Var
h, s, t: Extended;
I,II : integer;
HSLColor : Array[1..3] of Extended;
HSL : Array[0..1] of Array[1..3] of Extended;
begin;
For I:= 1 to 3 do
begin;
HSL[0][i] := 255;
end;

For I:= 0 to High(Colors) do
begin;
ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
For II:= 1 to 3 do
begin;
HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
end;
end;

H := (HSL[1][1] - HSL[0][1]);
S := (HSL[1][2] - HSL[0][2]);
T := (HSL[1][3] - HSL[0][3]);

try
HueMods := (H/T);
SatMods := (S/T);
Tolerance := Round(t);
except
HueMods := 0;
SatMods := 0;
Tolerance := Round(0.0);
end;

Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
end;

Procedure SetPrayers;
var
X,Y,X2,Y2,T,T2: Integer;
PPoint: TPoint;
label
MoveM;
begin
{Right-click prayer icon}
HumanMMouse(724, 70, 8, 8);
ClickMouse2(False);
WaitOption('elect', 400);

{Wait for the quick-prayer selection menu}
MarkTime(T);
repeat
if TimeFromMark(T) > 5000 then
Exit;
if FindColorTolerance(X, Y, 8499692, 610, 445, 630, 465, 10) then
break;
until(false);

{Determine the player's prayer type & choose the right protection prayer}
if (FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) or FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230)) then
begin
if FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) then
PPoint := Point(671, 274)
else if FindText(X, Y, 'rayers', StatChars, 630, 200, 690, 230) then
PPoint := Point(670, 343);

{Check if prayers are already set}
if not FindColorTolerance(X2, Y2, 461806, PPoint.X-10, PPoint.Y-10, PPoint.X+10, PPoint.Y+10, 10) then
begin
MoveM:
if not LoggedIn then Exit;

HumanMMouse(671, 274, 4, 4);

if WaitUpText('elect', 400) then
begin
ClickMouse2(True);
Wait(RandomRange(175, 350));
end else
goto MoveM;
end else
Writeln('Prayers already selected');

{Hit confirm}
HumanMMouse(645, 456, 15, 5);
ClickMouse2(True);
end;

{Wait for the prayer selection to be confirmed}
MarkTime(T2);
repeat
if TimeFromMark(T2) > 5000 then
Exit;
if (not FindText(x, y, 'urses', StatChars, 630, 200, 690, 230) and (not FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230))) then
break;
until(false);

OptionsSet := True;
Gametab(Tab_Inv);

Writeln('Quick-prayers set');

end;

Function TeleportOut: Boolean;
var
X,Y,I,DTM: Integer;
Angle: Extended;
label
Start;
begin
Result := False;
ColorToleranceSpeed(1);

DTM := DTMFromString('mWAAAAHicY2FgYNjGxMCwBYj3MkHYjIwMDH +A4v+AmAPItra2YjDUPclw8ZAnGPMDxZExExoGAQBaKgrC');

Start:
if not LoggedIn then Exit;
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindDTMRotated(DTM, X, Y, MIX1, MIY1, MIX2, MIY2, (-Pi/4), (Pi/4), (Pi/60), Angle) then
begin
I := 0;
HumanMMouse(X, Y, 7, 7);
ClickMouse2(True);
Gametab(tab_Inv);
HumanMMouse(580, 115, 15, 15);

if not WaitFunc(@AboveGround, 100, 6000) then
Exit;

end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell DTM')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
FindNormalRandoms;
Gametab(tab_Magic);
Wait(RandomRange(125, 275));
goto Start;
end;
end;

Result := NearSymbol(4);
SetRun(True);

FreeDTM(DTM);
end;

Function FindLadder(Var X, Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;

Start:
FindNormalRandoms;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(130, 170, TPA, 3029573, MSX1, MSY1, MSCX, MSY2, 15)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 20, 20);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(130, 170, ATPA2[i], 921102, B.X1, B.Y1, B.X2, B.Y2, 15)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;
end;
ColorToleranceSpeed(CTS);
if Loop then
goto Start;

end;

Function FindChaosAltar(Var X, Y: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3685505, MSX1, MSY1, MSX2, MSY2, 20)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 30, 30);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin

B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(MSCX, MSCY, ATPA2[i], 11908541, B.X1, B.Y1, B.X2, B.Y2, 20)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;

end;
end;

Function WalkToLadder: Boolean;
var
X,Y,Dist: Integer;
label
Start;
begin
Result := False;

Start:
if not LoggedIn then Exit;
FindNormalRandoms;

if FoundSymbol(6, X, Y, Dist) then //Dungeon
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if FoundSymbol(1, X, Y, Dist) then //Altar
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if ((not NearSymbol(6)) and (not NearSymbol(1))) then
begin
Writeln('Failed to find symbols, static walking');
Mouse(580, 120, 4, 4, True);
Wait(RandomRange(255, 360));
if FlagPresent then
FFlag(0)
else
While IsMoving_F do
Wait(1);
goto Start;
end;

end;

Function HandleAltar: Boolean;
var
A,B: Boolean;
X,Y,T,I: Integer;
label
Start;
begin
Result := False;

if not LowPrayer then
begin
Result := True;
Exit;
end;

A := False;
B := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
if not LoggedIn then Exit;
FindNormalRandoms;

if FindChaosAltar(X, Y) then
begin

if WaitUpTextMulti(['ay-at', 'aos alt'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOption('ray-at', 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindChaosAltar(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin
While IsMoving_F do
Wait(1);

ActivateQuickPrayer;

Result := True;
Exit;
end;

end;

Function HandleLadder: Boolean;
var
A,B,C: Boolean;
X,Y,T,T2,I: Integer;
label
Start;
begin
Result := False;
A := False;
B := False;
C := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
FindNormalRandoms;

if FindLadder(X, Y) then
begin

if WaitUpTextMulti(['limb', 'mb L', 'adder'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOptionMulti(['limb', 'b L'], 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
if NearSymbol(3) then
begin
Result := True;
Exit;
end;

Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindLadder(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if NearSymbol(3) then
break;
until(false)

Result := NearSymbol(3);
end;

if C then
goto Start;

end;

Function BankToAltar: Boolean;
begin
Result := False;

//No more walking east!
if not InvFull then Exit;
if NearSymbol(4) then Exit;

SetRun(True);

case RandomRange(1, 2) of
1: SPS_WalkPath(Path_ToAltar);
2: SPS_WalkPath(Path_ToAltar2);
end;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Result := True;

end;

Function FindBanker(Var X,Y: Integer): Boolean;
var
TPA,PBox: TPointArray;
HMod,SMod: Extended;
L,i,CTS,MSP,Col,
CType,Tol: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
if not LoggedIn then Exit;

PBox := TPAFromBox(IntToBox(240, 130, 275, 185));

CTS := GetColorToleranceSpeed;

Start:
if BankScreen then
begin
Result := True;
Exit;
end;

if (CType = 2) then
begin
Col := 6453887;
Tol := 7;
HMod := 0.10;
SMod := 0.11;
end else if (CType = 3) then
begin
Col := 5273721;
Tol := 6;
HMod := 0.07;
SMod := 0.11;
end;

if (CType = 0) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6848905, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if (CType = 1) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5800071, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if ((CType = 2) or (CType = 3)) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);
ColorToleranceSpeed(CTS);
end;

TPA := ClearTPAFromTPA(TPA, PBox);

if (Length(TPA) < 1) then
begin
Inc(CType);
if (CType > 3) then
Exit;
goto Start;
end;

ATPA := TPAToATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);

for i := 0 to L do
begin

MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;

if WaitUpTextMulti(['niola'], 400) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end;

end;

end;

Function OpenBankEniola: Boolean;
var
X,Y,T,T2,
BFail: Integer;
GoOn: Boolean;
label
Start;
begin
Result := False;
GoOn := False;

Start:
if BankScreen then
begin
Result := True;
Exit;
end;

FindNormalRandoms;
if not LoggedIn then Exit;

if FindBanker(X, Y) then
begin
GoOn := True
end else
begin
Inc(BFail);

if (BFail = 1) then
MouseFlag(620, 105, 5, 5, 0);

While IsMoving_F do
Wait(1);

if (BFail > 10) then
begin
TeleportOut;
Exit;
end;

goto Start;
end;

if GoOn then
begin
ClickMouse2(False);
if not WaitOptionMulti(['ank', 'nk E'], 500) then
goto Start;

While IsMoving_F do
Wait(1);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Exit;
if RunesMenu then
break;
until(false);

if RunesMenu then
begin
HumanMMouse(MPoint.X, MPoint.Y, 7, 7);
ClickMouse2(True);

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 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;
end;

Result := BankScreen;
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
'trout' : DTM := DTMFromString('mlwAAAHicY2dgYCgD4kIgzgbiAiCuAOJaIG 4EYhUgVgRiTSDWBWJtqJg8EGfERAJJJqxYDkjiwox4MBQAALdh Bks=');
'tuna' : DTM := DTMFromString('mlwAAAHicY2dgYFAAYikgFgFiCShfHYh1gF gFiOWBWA2I9YBYFyonC8QpEWFAkgkrFoGahw0z4sFQAABkyQOa ');
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'swordfish' : DTM := DTMFromString('mlwAAAHicY2dgYGhmZGDoBuKJQNwHxJ2MEL FyIJZhgGAFIFYCYmUglofSzTFdQJIJK+YCknI4MCMeDAUA/+8G2A==');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB +Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAA Z90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1g fiEqBcAxBXA3EzEJcCcQsQd+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);
if WaitOption('Eat', 300) then
begin
Wait(RandomRange(705, 815));
MarkTime(T);
Inc(FoodC);
end;
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 WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
Start:
if not BankScreen then
Exit;

ColorToleranceSpeed(1);
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
HumanMMouse(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, mouse_right);
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
ABMP,CBMP,X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

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

ColorToleranceSpeed(1);

ABMP := BitmapFromString(7, 7, 'meJy7efPxzZuPCwvLiosrSkurboK5' +
'EJSfXwIRh4tk5xTk5hUhq8nIyMnKykMWAaK0tCw0EWRDIAhoD tBwN' +
'HMgggArDGec');
CBMP := BitmapFromString(7, 5, 'meJyTvXBJFoaKiytKS6sg7Ny8IiDK' +
'zy8pLCyDiGRk5GRl5WXnFEDEIYJpaVlwcbg5KSkZEHEgggsCA OmnNDQ=');

if FindBitmapToleranceIn(CBMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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 FindBitmapToleranceIn(ABMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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;
FreeBitmap(ABMP);
FreeBitmap(CBMP);

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, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 4) then
begin
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 5) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end;

Result := True;
end;

Function FindDecayedPouch(Var Slot: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,X,Y: Integer;
ATPA: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
ReturnValues([3422525, 3619647, 3751234], Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MIX1, MIY1, MIX2, MIY2, Tol);
ColorToleranceSpeed(CTS);

if (Length(TPA) < 1) then
Exit;
ATPA := TPAToATPAEx(TPA, 18, 18);
SortATPAFrom(ATPA, Point(650, 330));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
if (GetArrayLength(ATPA[i])>10) then
begin
MiddleTPAEx(ATPA[i], X, Y);
Slot := CoordsToItem(X, Y);
Result := True;
end;
end;

end;

Function CheckPouches: Boolean;
var
S: Integer;
begin
Result := FindDecayedPouch(S);
end;

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

Function ContactRepair: Boolean;
var
T,T2,T3: Integer;
begin

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

if ContactScreen then
begin
MouseBox(480, 230, 485, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
end;

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 6000) then
Exit;
if ClickToContinue then
MarkTime(T2);
Wait(RandomRange(125, 275));
if FindNPCChatText('epai', ClickLeft) then
break;
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,Slot,Spell: Integer;
label
Start;
begin
ColorToleranceSpeed(1);

Start:
FindNormalRandoms;
if not LoggedIn then Exit;

Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6J bYBA' +
'DJlKvQ=');

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

if FindDecayedPouch(Slot) then
begin
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X, Y, 550, 200, 720, 435) then
begin
MMouse(X, Y, 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, mouse_left);
Wait(RandomRange(1575, 2150));
Inc(RepairC);
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
begin
Inc(RepairC);
Writeln('Pouches repaied');
end;
end;
end;
end;
end;

if not FindDecayedPouch(Slot) then
Result := True
else
goto Start;

FreeBitmap(Spell);
end;

Procedure HandleBank;
var
S: String;
T: Integer;
begin

if BankScreen then
begin

Mouse(370, 305, 6, 6, True);

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PP2 then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(3, 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 OpenBankEniola then
if WithdrawEss then
if CloseBank then
Exit;

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

end;

end;

Function FindAltar(Var X,Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,F,MSP: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;
CTS := GetColorToleranceSpeed;

Start:
ColorToleranceSpeed(2);
ReturnValues(ACols, Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);

if (Length(TPA) < 1) then
Exit;

ATPA := TPAToATPAEx(TPA, 20, 20);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);

for i := 0 to L do
begin
if (GetArrayLength(ATPA[i]) > 30) then
begin
B := GetTPABounds(ATPA[i]);

MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;
if WaitUpTextMulti(['-rune', 'unec', 'rafting'], 555) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end else
begin
Inc(F);
if (F > 7) then
Exit;
Loop := True;
Break;
end;

end;
end;
if Loop then
goto Start;

end;

Function CraftRunes: Boolean;
var
X,Y,Seq: Integer;
A,B: LongInt;
label
Start;
begin
Seq := 0;
A := Round(GetXPBarTotal);

Start:
if not LoggedIn then Exit;

if FindAltar(X, Y) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
While IsMoving_F do
Wait(1);

if (Seq < 3) then
begin
HumanMMouse(640, 220, 15, 15);
Wait(RandomRange(675, 1125));
While IsMoving_F do
Wait(1);
Wait(RandomRange(105, 165));
end else
begin
GameTab(tab_Magic);
Wait(RandomRange(675, 930));
end;

end else
begin
SetRun(True);
BankToAltar;
FindNormalRandoms;
SetRun(True);
goto Start;
end;

if (Seq = 0) then
begin
if PP1 then //Large pouch
begin
if HandlePouches(4, 2) then
Seq := 1;
end else if not PP1 then
if HandlePouches(5, 2) then
Seq := 3;

goto Start;
end;

if (Seq = 1) then
begin
if PP2 then //Giant pouch
begin
if HandlePouches(2, 2) then
Seq := 2;

goto Start;
end else if not PP2 then
if HandlePouches(5, 2) then
Seq := 3;

goto Start;

end;

if (Seq = 2) then
begin
if HandlePouches(5, 2) then
Seq := 3;

goto Start;
end;

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

if Result then
begin
B := Round(GetXPBarTotal);
Inc(Runs);
IncEx(Exp, (B-A));
IncEx(Exp_C, (B-A));
OnScreen;
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 NearSymbol(3) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
CloseBank;
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 SuperDuperLooper;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearSymbol(3) then //Bank
begin
if not InvFull then
if OpenBankEniola then
HandleBank
else
Exit
else if InvFull then
if BankToAltar then
if CraftRunes then
TeleportOut
else
While IsMoving_F do
Wait(1)
else
While IsMoving_F do
Wait(1);
end else if NearLadder then //At the ladder
begin
if UsePrayer then
begin
if HandleAltar then
HandleLadder;
end else
HandleLadder;
end else if (NearSymbol(4) and (not NearLadder)) then //Teleport area
begin
WalkToLadder;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
end else if ((not NearSymbol(3)) and (not NearSymbol(4)) //We're either at the altar or lost
and (not NearLadder)) then
if not CraftRunes then
TeleportOut;

end;

begin
Smart_Server := 70;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
setupSRL();
DeclarePlayers;

LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);

SPS_Setup(runecrafting_altars, ['0_1']);
SPS_Continue := True;

LoadVars;
SetupSRLStats(157, SRLStats_Username, SRLStats_Password);
Smart_ClearCanvas;

ToggleXPBar(True);
XPToLvl := XPTillNextLevel(Skill_Runecrafting);

if UsePrayer then
begin
SetPrayers;
ActivateQuickPrayer;
end;

OnScreen;

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;

SuperDuperLooper;

Until(AllPlayersInactive)

end.

Script Fully working! supporting "contact spell and repairing pouches like a pro thanks to Mat For the fix!

All Credits go to its respective owners :spot:

Mat
02-21-2012, 08:44 PM
<3.

wister1
02-21-2012, 09:10 PM
although i didnt need the fix because im using repair spell its good you gave such a quick fix for people who needed

ps: i know ive said this and flight said he will look onto it but i say again just in case: banking at w70 when its full of people at zmi can sometimes be very difficult because there wont be the right click banking option, only the name of the banker which requires it to go to the name so that the option to bank shows up

its always better to craft at w70, plenty of people so plenty of targets, which allows us to not need prayer and theres less chance to get reported

Mat
02-21-2012, 09:20 PM
I always crafter other worlds as a Human can find the bank on w70 no problem but as were colour it finds people so I always go a different world.
Mat

Note
02-21-2012, 10:44 PM
although i didnt need the fix because im using repair spell its good you gave suck a quick fix for people who needed it

yeah i cant use the repair spell option 137k produce points lol i have like 13k ..

but yes as long as it works im happy! im sure others will be too using this method, Thank you again matt :)

Mat
02-21-2012, 10:46 PM
No Problem :)
Mat

tutkubakay
02-22-2012, 12:16 AM
{/////////////////////////////////////////
// ~ZMI-Extreme by Flight~ //
// //
// Version: 1.5 //
/////////////////////////////////////////}

program ZMIExtreme;
{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i SRL/SRL/misc/reports.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const

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

//General settings
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'monkfish'; //Trout, Tuna, Lobster, Swordfish, Monkfish, Shark
EatAt = 80; //Eat at this health percent or less
UsePrayer = False; //Use ranged protection prayers?
RuneType = 'fire'; //Type of rune to use for bank payment (20 runes per session)
RestAt = 55; //Run energy % to rest at (after banking)
SwitchWorlds = True; //Switch worlds after a break?

//Pouch settings
SS = 0; //Which slot # has your small pouch (0 for not using)
MS = 0; //Which slot # has your medium pouch (0 for not using)
LS = 0; //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

//Break settings
BreakIn = 143; //How long before we take a break? (minutes)
BreakFor = 1; //How long will we break for? (minutes)
Bir = 1; //Random minutes to add/subtract from how long until we break
Bfr = 1; //Random minutes to add/subjtract from break duration

Var
MPoint: TPoint;
Version: String;
Exp,Exp_C,ReportTime,Runs,
CommitTime,FoodC,RepairC,
XPToLvl: Integer;
PP1,PP2,OptionsSet: Boolean;
Path_ToAltar,Path_ToAltar2: TPointArray;
LCols,ACols: TIntegerArray;

//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 := Skill_Runecrafting;
Active := True;
end;
end;

Procedure LoadVars;
begin

Version := '1.5';

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

Path_ToAltar := [Point(160, 545), Point(160, 600), Point(165, 655), Point(175, 715),
Point(235, 710), Point(285, 720), Point(330, 720)];

Path_ToAltar2 := [Point(160, 545), Point(160, 585), Point(160, 635), Point(165, 685),
Point(190, 725), Point(235, 715), Point(285, 720), Point(330, 720)];

LCols := [789517, 921102, 1052689]; //Ladder colors
ACols := [7500141, 8092534, 8355706]; //Altar colors

Case Lowercase(RuneType) of
'fire': MPoint := Point(340, 125);
'body': MPoint := Point(105, 170);
'mind': MPoint := Point(200, 80);
'air': MPoint := Point(300, 200);
end;

PP1 := (not (LS = 0));
PP2 := (not (GS = 0));

end;

Procedure Report;
begin
ClearDebug;

SRLProgressReport(ResultDebugBox, 'ZMI-Extreme', 'Flight', '1.5',
['Run time', 'Exp gained', 'Loads completed', Capitalize(Food)+' ate',
'Pouches repaired', 'Breaks'],
[MsToTime(GetTimeRunning, Time_Abbrev), Exp, Runs, FoodC, RepairC, TotalBreaks]);

MarkTime(ReportTime);
end;

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

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

Procedure DrawLogo;
var
Pic: Integer;
Canvas: TCanvas;
begin
SmartSetDebug(True);
Pic := BitmapFromString(367, 40, 'meJztXQebVFW2rZPuubHJICA5Z' +
'xUUxDHQgIqKYGAUUQaZEZCHaQTUUXTAAQQBETEgosIASg7vD7 5V6/' +
'QtbndXVd+6VdCtr/fXw8dg9amT9t5rx1MqNUZSzgrDo1F01Pff87y' +
'XjHna856z9nUpx5dKXqkkGhwvP2FkXSpZIUZgFi0dOZBySivG sRiq' +
'VBrQiqH6qRnyhRh9O69iPzVE4K9xSs2XcroQdwkxVMqJkBtx/Ftb2' +
'//m+YmiE563Vqn7KGFKlAOKfzZMnMn9vr8tio4JMVKpe6Sc1KJlC r' +
'I/vuLuUqmtyaHC8AsOGAnRL096i7D/nrWvav1QvzDpAyS1bgfk8Lz' +
'Vnvei563z/S3WbvS8NVo/AKYTYiB+lJpn7bog2BtFP9cRKUlyIwz3' +
'RNG3QfAvKcdQKM2hVMlJytq/heG+OP4lSa5jQDCsMautXduq1UbR2' +
'SS5VCrFlCr5J9aVjHmSIvQIJDA2p6/eZEnxHnKxJsfngbUSIRLsE0' +
'R6qhf6Lgkx3Np/JMmFIPikmdPsp5aQEG1SjgUIwaFYux4mTGrIrA+' +
'CD8LwYBR9h58g2GXMMxAOABtR9BN+gmA3ZA4kDPi9qmDx/bc5/lCl' +
'FuaDKAKgCJyeJFcrg4ThbqVmW7upBQsVw41ZlSQXMWwcX8eUh Jhee' +
'DisHeMEwQ7K4b+22hBrCQVB8JGTyUlyGQda4xQwc0+p6SkzCq Xm4A' +
'fblX4AUii6Q1NuhKScEcenubrr1r7RL0x6l6BSw/BIHismSc77/pt' +
'aPwr7FHdPylFaL7V2q5RTfP+9qr8CbAPthj8hi4BtckxH+P7W OP6p' +
's/V0WKlZvr8jn2KtPXQZXM0x5vHKyEIMghlVWPkCemEQorUPyKd9 i' +
'qQQo+P418w2ngmCPdZu8LyX6eRRziWFA4W4hlonFn1Rysmd9x nyNj' +
'EGB70Bcr7XVlOFYiGGABbyZt6M45Owi3t7Sv/PSRjzFCAHrorWj+A' +
'iCTEMPwAqUs4EnMAP/h0MCM0LrtH6fnxGyvFSjoYwUepeY5ZBRQfB' +
'p1kskcKSbRgHWpvH/TuOPsd8jOetxd3oJpRWYZJSTiu+TjFEiBFCD' +
'IBl7cbE5KWcCJSSb2JVKI5PxPEprDEMvyMy6ROEXYrjs9k9DI L3jW' +
'mH1qDFOpzGS+h5L0DCp5z4X60XZNS6wce0XhbHP2ZUyfXcGuG 2E8S' +
'a1n/BD6wbgsyzWE4x71w/9RIpmt4hzepbBOEThvu6CBNYTOAypWYG' +
'wU6qxeO0j3okX+uF1YTJGoAfa/+n0LQlEBT4SKkHoJQrYwKlcGLfc' +
'UWNDyrHU2BuMeYJTFjr5YXm1koCRDRmOWR+xkL8gu4voCbrJD/OxZ' +
'muzvZxPh+6j7qQojx5NAi2R9EJ8CydEp9X++SdJ9/zXofogLailLu' +
'ERRU7xH7qawRVGEXf4nLSZXoFN5Bu20nQgMY8w+O+AuXoYig9 kV/x' +
'u3YWTRshTADaC0wPTAQVhrsXBB9VBoQuA1CBEPD9zQXGZPjgH +Ayr' +
'BSQCQNq/WChcVpLkbWblZoRRV+nmMTZhhD+FoI0in5IYcbVOD4dhv' +
'txQDRaq5JgvLWN3hK/7+h9peZiIdAOuFf09n8hxMjenlQ/tYQU2Bz' +
'sj2sJHMIrpylPYDRNBLvF8UXcbaXuyTEUbq/Cr1Rz5G7ht1xufHra' +
'814B7+P6Ob9rymWfab04ik4zbNH4oPoR8KPvbwcYgI1A90se3 HUHy' +
'AOXQXRTYlyg11rQPIQ8iXEiSk3HnIUYRNneBz3GPRD2GYsKw2 MQ40' +
'BcgCXGPN1X42j91BhBQbuoDT0tkyBPfH+r7+8Ar4XhISBqYFE KmVw' +
'kxJAkqZLWAg2LYaGGGkezg2GP+P7OrOlEE/t5azf4/rsF7qEQA31/' +
'F8MH63GTaSkca3SQ20ZhEHxs7Rtc5kmuzvT98G5+AsiM45+hn koMC' +
'kfRyUzIqZ/+wOT8IRQmW6EywKHkrJ9gj1j7nlKzeZPzRuuEGJwkv2' +
'c8fjfj+IYTArDrwbkEAI0BWtgydNNd6Ww0bZByAqyeQuGJAUK MdX4' +
'/rA5WEt0veaXlHSCl5vv+JrdSCHuAqCajYH2JfOBMGGgwXYUYAD Bs' +
'zEu9PaV+apaEGBfHp1IPXtl1gH8Dz8bxJShEY55sXBvKincUk IZfM' +
'Rhc4OQA4IrnPUfXxOLGBpVjYNFkJYkxy2EIeN4LnreqwRk6Ul JOTV' +
'nVcLZHCo1zu4iWVzkiLOUohtrfqe0V+YORUnOdP02pOVgmY8H umvW' +
'bOX9Q8qDZu8RuGNJ9CZgzir7Xur3A4Uo5HfDVsQCUjuethEiB QeG8' +
'phAmwDlR9A3zYPN7AsuZvRV3LuYMeCxEmzHPav1UozNMKUiS8 wRjb' +
'2L83LAkZGB6IixBV2cEaASR63mvYUXGLGGVU8WCE814M5gOep WSJK' +
'SoP9x3fKe5qTqaDcOD7hyVmkb/zyL8KeWM1GE14M9k0P3pScrJUPT' +
'ZaEuS3AiCPWCxKPrO2k043GIjB8H+OL7ovGop4DkOYeJ5q2n+ n6Aw' +
'OcqU2jxRoTJBKEXRjxVvSRB87ILaGLOosh6GX3TLB7bBZKLoh 7qSU' +
'wgxyvM2YtPC8MsoOs0Y6zX8MNlvLOHcpSg6BjvRmJVSzmQBwg AKli' +
'LFPrDpwnA/Zebgto7Shn1/BGQiCURLaWln1epRG8dn01t3HohL60X' +
'YXibrQp5Hvv8RDqW/SOoPQVJOA0eAEVz8Io7P0Zf+RKk0kEyqC+vT' +
'INiFYZkoezxjj6zEjbJ2S5pqsgqKCT+lUs74i6COvpEJCb2t1 CzKq' +
'FHF5lkqI+1p6XyAnfYRKVVddTkBFeDKScVSKVYKCnQgLayOZW ItDL' +
'wKlkW3AUsAnyh1j+c9Q2/26PS/5p/bDByKtX8j+mp3Stz3iyXn3Dm' +
'izTKeAaYSwG2SXGSC3FEgNxYCu8B0YszjkLpMEiiH9mDm4AiC 4H0m' +
'mUTObx+GBwBxe3tB/dQjaTBOklzGD47MmBWetzbVJs1QuawYmIT2w' +
'ozOiWqvlZjr6KAFbhFEAVQ8YG2OYSWV/i1JEsenPO9FjOb727ok3e' +
'Um2CZTwa2c28u4wGG415jHaolQJsacZbLcjDS96jcINPAIg7N DsZ+' +
'QNk4m48+KD8olm8XxmSD41NpXGdsd3aMfG0tz3iHwGjaKSz7v ec/3' +
'cVgCDQXTD3A0DL/FDjjUB20Vhl/F8UmsyPc3Y9OwIbCglZoL5cXih' +
'Y3GLDPmOZqNd7NKYpm1f8d687no/3gx8T8RAXXElaAt8LmrI27R4I' +
'Y5lpfAEBluOuAMYSgs971R9JVSU6F3jFna04DQ5glsrqxoYpz UsND' +
'v+aL+OmXtG3F8DYAEUhSCAjitVmMEQouJuOHOFwrcBeuDsHxI iuJ8' +
'Icay1QN28i5YN5BUrFlYix/oXFd1AuiOOUMu0RNVR54IpeZhD9s6M' +
'lqhqS9BFjW4wIDmVaObo8ibkusqEGefCNu2Sz4AzZYAOwN8kk 0PwA' +
'ZSnV0Jgu2sIdLdvrHH0KFiNXRLWtnkpHKxdmHz/89HQowAI7vAShj' +
'uAZszLe0vzQ8Mxa31YnAcEzIPAEswk/a072+tVLBWAtAA7U4gZNwm' +
'MnOdnLoBW023dl1aAna94jPB7wICKdVYPKhCkGOYIdsyLIKux LC43' +
'rUkKhOAx2q9jAHus64bQ7UPavZCGQY8r9T91m4Lw28AV8ApsK fwg+' +
'Xg62AQQWvX96PijCp8R2k/mt4DT+sHYelAKOFPgEmob4imMDwehkd' +
'9/10mgB11gfgg2Asupktzav6APi3HY9hYLjBqJAztviLCl0bRYRw Z' +
'LFlrX2fgfhIQCEZ2ITxODwb1MmASHCiTmgo4RrB7Q7ReggUCW ObOo' +
'ixOtHP/EwS7GQGcrPXC/qJmehGTIPgwTdJYz4qbT8ACTY8cGrMatz' +
'29zLuAZjEyc7wr4qLcyyiOL1U8b7x+06DWiZDLAp/1iW28YAHUHMQ' +
'IuA/zhMSTcoLz2rngSxieyO1y6UrGLPf9t/AVYfg5oc4Z3PbaHxfM' +
'ki2b/7hRdT/ZhXz8Ir4CW0Fj51zq8Kmf9i+48O8ruM7zXoCUBv4He' +
'1bydrLaP4qOgyshG/EDqegK+fGNSs2GXYZfzBkDgjrAbOnpPUicZr' +
't7yCHocFI0QET6L2NYeDiGI4xj9egEgjTI1UFADgCBmB62ouI 8x63' +
'DbtAFlNcD35li2KT0m92HwdnVqv44Cec2pWgsDFqvDQfhULHD WncW' +
'Ed0BajiJGuebTdWAdHWdG4t6HrI0OAg+wjh0t66CMsJ9o67vo t0Uz' +
'qVzPtu1zibMTw4AOO4D3wkxSusF0D6wIFyDBdgOvv8O3cXFKA DHGf' +
'Mk9GYc/0K3yUs9aS4FGQKOpmnTqEqCwJxtzFMwfNj2YVH9LyKnrMz' +
'uSY8/bJp0r2tcw9qHsQSKExm5huR8JmdrOxpo05zEpntcMBXw1t2g' +
'M+d9z3uFAspj+fZ4/N3z1oXh3lKHYLmXosYwhqUpUR8y5jnmu55iw' +
'fgk4ChGpopJEixtHJtuHaL8fA4ol0G9qpQY084YpcCHG89sNF o/DF' +
'kt5UjIrlR0f0U3e34fo2TosNhiO0aAeiWMbxIO3QqsKDUXYBt MhMt' +
'PDT5C6waStaQcX9F3YFgcOh16QUvcemA0Yj8DvcZcsgk1Pojr NxLX' +
'CZAjjm9V7tCTv9FFRiBPougEts6luhEtv06FONWFVKjp3ilaE WZxk' +
'+P4Z0BxVz4Qxz/m+0XR9FHK+sIfe4gpwUDoIitwWLQZrzlbD+qAnU' +
'xW4vPMacHFHp5+8grdvFnyqENzQTilHqA/uS2KvnG+Ux7W6ErKB63' +
'CXQ7wGPMsa7jmGfN4kvxGu7VU19+SYM6QA0GwHftfw1TMQ2Dw JUHw' +
'b5hLsPgwDvQOpFnmAxpYl20NIMSW4T8pNb9Uji6dyJ3erIjVJ UagY' +
'6fMLJ73fBQdZTJn2c2eE8xrvYIFbo/Rf55T9XfaPUhseq2/hkplmK' +
'xwrfcAIsYB2BPf3wJ8mPFq7k9bQOciXJIwPFn59W5XrknSwP/QjLh' +
'dcXwBZ13no0pN5yXEhZyOFbFUZwuAPVHxYKg5ZsaWYSRdLuet 3cEN' +
'NPg8QCZ4igb4C8WsYCoywPjD0DiYMO4J+8f2BdJBsLOL/eJ60rJk+' +
'wVrt8A003opbpQxKyAS6d/4OYr+S/H7le+/RxOsGYknlHqQboGJkO' +
'3s8XKadqiLv8PwXApFBmkD4c+GDxYWqLNbIU/q4ltAuwW0FwbH8e/' +
'sylgwCgN0Aejrct6i6ExasuS+OvS8l4PgAG6gtX/H/jDNL3IQlOXJ' +
'43sa3gNkZdZ3XMHwRFPjIDaVascgzHESnEkPlUSMk67GoWBz2 NW23' +
'rJcSxD2qJnU+RCHMHY5yrE8matR7e8kvKd1O91Z2KIPgmB3EP wLej' +
'kIPm/ryFTPyVASSC8jiPa2NmkZAp86cT0gRByf6cndLajg/kkfyyJ' +
'sNeQGOzhNwHZhdYBewOrsoLiO7QcdATPHPNmPIFqlzO+4uEUQ oWF4' +
'jIZYO8sYd4B/C4xzOwiXLY5vWXxs9zTG82DQbWMAeiwVhyTjhLQfE' +
'/4L2HMQLcphrbBVSzRtJtCrORNfmiTnwbY4BWg0Zn2Uo1c8qcO4 2K' +
'400mEngJkartRYqYXUMmB8RcDzO0u9CpOFlq80F2Wi4LdKPRJ FPyf' +
'JBdgj1EfzuTmRU+UUwotzpPoMtPYtunMDyh/ArWuQmcAV5PSyvwUw' +
'jGYjduYysFmdsYSYDBGk9aP0lj9X56shPXAPAXjApNh27vyMz DhDr' +
'd3s8sEAjcAUYDSuJScl7J11Iop+hVAC9GUPNM/dFsgoqPK2cqFczh' +
'JLA9hQuajUIK3tiiOj6BdIb9x/V1GeQ1JJ+uHXMuXg5zA8wXc3/qr' +
'1kwSiliyT9ZVBY85l16aLjAg/VYhxRBjiLF501is9jdfYn7lPELsN' +
'fAqudE3yoUSACrBFMO4YWL+jGSYQVsYAAg1zTuO0zUg5ehtFX 7N/1' +
'BJwaMYDfIYtQKucO1CE58Eoe4kgEObtUex8I7xQhXBJsp2KAV +xV6' +
'76GBsJEQf2p6xbSkyVU29aNp4qd9AFJgHkg84FvMkYp4o7M5S 53Gt' +
'yONJD6ESm2fw7/RfZGXJY9jkcI0QCWYfr7VxVkLQMMXQQzBwXJnCG' +
'J+5JFB2y9rU8S8JsfR/w41VjlvD/JpSuIl3wOhbOHAFf5AOKgTErK' +
'w5P4GFnP7aQXJczAAxIbCgs1n7mPL686IgI8156SoH23yuWZQ 2ADd' +
'wL6ybrlOhLrVDbcPnBcThiLJbZLN/0atWbovV6oIvlRU/FNtg+lfJ' +
't5s9U918xveS0q8hmdAkW7rNYYNMgSrO/3DXKsSM4UzYxBsqdofVy' +
'Ke9r/C0VixnCfmFl5ak4vgx9TZ3bff9VJSHZ5XXXGNCwLnUflDhAj' +
'vsKOhVhKi5kL3d33OUuZL7/Pvaz0oPU9zfRknLKtGz+QPO6WFJbOV' +
'VgEiaZr0xewhaGjmaD0/kA/BnAA5t6O8taQ5gD1N31hYkV4m5MGLr' +
'Y999m1uiq1j1Yc4vYhvFt6qxTsMJ6dDMWIDY1LZH3k8I+bcYo NzNz' +
'e00qWs/1mRpVjWPSeikby8+jlX2hwULI20EC1mi2DpR3eLDnrXR9w' +
'lmzWU83USpecLVFYBBwkNb3t6KRXQA2ASfyYkgCid+C4AMaIz 3yRR' +
'fCDicEvTfZ7XweL1iSRiHdnyJ7T9yGwMypm+0fwRgkxnB1WyX 2s5r' +
'Etw9ec01T2W3sQpqzN4h7ddMFI+j3nu48Zta+zWKltzPOUnw+ Ij6v' +
'SeB95o3fxGExU+sHY1a4FUEjs+X4enraf6DMHFR7JMMeXNPZl auc2' +
'kEr7HaFxaWcBbkKKxsXLH07qbUOmftdfwAIw2beZpJyJlQAdK UL4r' +
'R19EHqE+1B2KgEfz4K3eoqjoNgL4+sN2UddD2b2t0qBTXmMTB I6vw' +
'8wVtdj/BhukoiZyuxX/cerrFJiqm/PCemnNOGzNWo7C0/mAINmEVf' +
'zJLardQCwuA3ff9Dsr/vjE1cIfdh399e1w0yns69FRRNmt80muWfE' +
'xloGEpHyvps/3P26ul4WyoMv8SVgJEFCQzoAtwVxyczM7zKlOxaws' +
'SQ9ye7vHHmDU7hF3XUXdLSCVkh8jthz7TaCxHMXh5KLdDOpKk DbOt' +
'6tZFsq/xULnJxDXzYI7rlvAlB+qyryKOUXl/Ye4DNh5bE5mTuzI6+' +
'gEyYKnaIkXqJG8UiwSnU+L2ZY8mWU5/SyS/p743o6vyBYcFDfJyxZ' +
'wsR95C2QEge2c3f/byZhwnSYUfz20WGvy4WcH9pvdh1/e0SiA/DY/' +
'h3SCocB51sku6CFcAMrqSip2iUNmaZS9iGRWDta8zlm83deAL iiE7' +
'dpzqPoKPoXFamgeVT/HxDCAiT00lyvpKUBbwBa6vb9yo650e6ZlOu' +
'IgOgKwy/hsDU+uk4vs4E9Z+YygvOHcP35updsyD40L3T57xnzFK4y' +
'j25LYyDVUOYJMkN6qmCL03UHvwumDYu8xN6jcm6I4oN5XkbXB zHub' +
'MgWPqI99WZXXwCYBLTz6bxGb6hvSfooK8net4rzFC12DG+i1G OFkX' +
'RcSa3TOTLR7mm55Ki2zqa/y9jeXWTvRktzdUJbP55M40lfc1XPxoi' +
'AZ7qIknSiDxERzmKCtZjKHw4H6c7CJSFy8OC0HprZ+rLwWw2J jAGH' +
'cIrXFCGLdmzIwgp52QnAIWS9m+/wUo0zf4MC5yT1jkPu8WavVJpIB' +
'+lequLmwviCPOXcnRqocCUnkq1VR8iSsb9L2fFLGQjPe23qbh SuFw' +
'yNogumNxec2gxEEsGVOb+fwipCwkAo7tQDdqYINgTRUfYHvBp J7Fb' +
'FEttkhRPv/yQDZ85G89Z9UolrOeUlNar+aCepVO9Pb1FlyhDNmHfW' +
'IDzXU7fNbg+bRqzBvZCXZ0uGWjr4XCZpDQfwjYIPkjndsaYxx sFcp' +
'h/FH2fiqMLrP74mFmytwxh1oCfdnWgnvfX9HR6INfiOMvRLCMd5d K' +
'tIaAYue60cIjH1PQ+zrkNd24ZlowNSSc8ELvnEjsZoe5SJOth et1f' +
'lmkrtzR82PlviSt+8/13+MhvfYTv0W2+MyNJyrUkrai7qUMx1E1bR' +
'yF/yynkK+ejnOuPmuJ0sReysJ9E6R0nBa3BoqHeJ9rsn7gGC5B17v ' +
'2ppo9MuYRhQp2caY0+hYNv7Zs0pTuCdLxFV6CPAJUh1V2GCcx waF5' +
'WYfRMYAG3OugF39+uVK1qgnL6PbCiEONrDwYzcBn/AuTwBIx35/hi' +
'MWMB/TI8beZzitGTEp2N9zrDh0bK+Sj6CRiMutjLKeG1bq+8QpKBO' +
'tJ5UHHxGPbt4ttJYAM6H3WaxHKN5ZArOvsNDMtmtzjHLORe5+ Xc5b' +
'oZszJ0KJsc3sUEv2XugTau9CJFUI/yUACPab2Ur0jc5A8kyd7CL9z' +
'lI0EJ+VhbOTQ89zbkQiQuq5kG4w18ketF3/g4lu/93eSVng+9E4Zf' +
'tRxHFSOy54GMCjtEazFnIlC2bF+yHvw+z/sbvaaXwnC/K2bMM5ArT' +
'MbecodXsS/NWfbGPM7ajXFpdwLInCEQ7JgkXaB5Tty6nVdqBtMquj' +
'O+YNqnC3lIrr0622q9EEvjgwJb3QOFYPw8q6ux5GEuLsOFKKY h7al' +
'odkqYHZxtY88MsQi9U7lZEHzmmoLi3xly6r5pMgj2MyVgOmbF 95v2' +
's/qpC1kH8CDxCJYOZzeKTU1vQsJj2g7hZLuTEZC8m3MJuEUARfTb 4' +
'Kw/gEyjz7yZ2qI8ZLVeAHlCk6Hlr7BBvQ7CumAOx/E54G2YjVF0sk' +
'B0m3kpxnWgtXYbJszQf++7XktlYTIx+4iwA6V1laBLjU6ofSY zjjy' +
'HTQ8WgOvdhWFPlcn8wMScy6QKg0X/K/SmSwsE7MdGdWnLwB6tA4Gg' +
'cLuYpZDH3w5O2Uv2PEnf8qjOYlyyjmZBOo2hdO5VHTaAfmS5l nDdl' +
'pjJ2cwhDkkdGusgyqCFjXmWfSNnsRwp5jQaG5+tLb7sAkswPi XMJc' +
'r26nJJiJGpJFkYht8RC3UffAzDQwPdK72sxLzF4M7H4gq1+J9 cAvA' +
'IVoC2d5dgrnql2gIHVN4rh1rhXRpLpmtmq63L55dyHu/kgGo2KWDh' +
'NNadrWVcu7WkmGyzOI7PE7xNgTRmRmLDROg4FWySJBfZ2nowQ yd9h' +
'Nq62LkMf0Q1PqzYLhKHCy0/i7VsD0PkWruR75hvYzTzdXpgTlq7JQ' +
'0I9kgD2M1pDbAfC4EH1oZGIWu3v2THpx97DA13TLrsYzlKdXm UzxT' +
'OTPMHjJTTXHJmiY3aoFjpFa8yZzYcKJfpUdfvrL1F+UnE8RXH MoBM' +
'NJ/zeF3qtZzS+sHs83AVG4dNlV+tbyixs9CiOL7GJMDqhQnl/8W/s' +
'qzyBr24WYPFY9RmJwsHBta1ZcrTYA7/jm4YQBOd/tfdSfyFWWQ7qL' +
'CGE74OrrFLvosicZKBa4cF8cieGO9H0WGocq0fogk2iEON6O6 Hd09' +
'aAFoTprY2lCmYmbPUrQubk9Y2NjwOoBp2mJtzLo2S9J1ef+Vk v+zd' +
'ow8QSGMh+Ma58QkzRqXX2FKnjGTNyyKabPsyEcOXtX5EqftTM SLyQ' +
'fSQtsz4PL4a1qovhPrgQ/Yv5hh8GGuvpuFGpZD7ahDsJnie50IwTO' +
'76p+9vdvHxqjN0zfooSf7TouMrQ98o+iZNA1N1+gkzFrPENa0 luKp' +
'OdM3dyJ5mGGK2Jfa4qD/nNhcXiOMbnle95McFi1M2P9WtoZl2mfnM' +
'hTvLBh3dj15RLAxyYpns3GlWQoxja+iuT/p2+WGg+S9svTWdrpV3s' +
'UzARXbm3AqtzVetD8fxmaq/jiWw1GtCF5vX8zbwdc5FnFjLDQfFZm' +
'KbnGOh6NuRGORNaFJqxm+p0erk+/UC4Sa7NLD0+h1kGGtxl8dVAey' +
't3aT1E8wbv9faV1gmczktP7F8HVVSqlcysXsU7+UHRIDqCYdy eQaA' +
'TJR6gAw4hR6AHk9E0FsylZWV7zucybP4HuYPzhfSCYfL1tk1o +FOU' +
'1Mp32jdq39tUt4NKUczZBOLx1X3CRizmpla+Orf+azzOUaOqh NThr' +
'7IcM1VAC3WIPd4EK7++lc+jVQVVHisPTzLwvkLLEnogs0UJkb Ldyr' +
'b8O639p3UE9VBuCEs0/iK1Trt7B7fRcRZ5wru/gNwxbqqg2H4OUxC' +
'Co338PdKu2PMKgh2uf5InMDnziGMP9kQ+ELny3yaavSI6z2eO ZHRv' +
'Crd/UXNkwnDY1AEzCPaU7RRrWbl5jY2SVjeR1wlWSLkG+QiC91/eB' +
'8CNmreWGmvCuFPFTPUtSSls32/Ug83/tUFmopotkjaS3H3TT63ieI' +
'NmU0bDfbUsxDvLFUL0ma5G+q7d5S6B/c/CD5u9OG2uiRZW/GS64YB' +
'JgqC/VhXEHxIcDgIYpYdtP7BtoHlPL0w/DfTgWoWxZOXZ/I53YOs8' +
'F1LeJkLR7nedD1G39iReFRVyc8m7Z+wjdIQrR9gGdR67K1Scw FlIR' +
'U97zX2qXAl27LahmtI/mw0ihVV82izzKCDbh4wCVsrrKFd3O58s2k' +
'facW/DHd/p72j2M31AT7tF2A/XQocg79eHP/CNwtufXupbM9ugurP' +
's2ONkHBtSDFnMEuOZmi1qNxDA+qbGrwvdncXYiwdqiOz8gR3O 03G9' +
'pxeYBl7xIqwxeVOPyluYU/mz6hYG94fugQLEITANFxaNt7MGXgS1E' +
'E+71i5mxwRzhxMgPkb03viOOEs8VbrAgCzhWxQsAR4Dxai4zj IbSK' +
'lisdJ0cZUBEj1e7bMZp65JY8Ufy+mMOFusGP5Y+TfhfhhLwuI uFku' +
'Rb/+rxvzDH7XlV8RgFnculpqrjNuOYrvhaR1iIX9UnYxc+9C5kr/h' +
'w4xn9pzsFLztV7eWXiWd9v14rsNezMEMJiP+5xooiW4YPMT52 gK+5' +
'K35BZRdwwj1t3ApNOneRDXmft0ma99XUlP5JDv72RPiXPYFpx aE4X' +
'Pomi3OqX1Q2G4D0ZxM+8a0HCe1usvbUk5hl3+vqYhgz2/3pf88w0T' +
'+JSVfYe5nJvQ/sCBzNzIk6Kp+JjLhzBSsq68OL4WBLutfQs/+Eu28' +
'Q5ETS1pg4/hP+HzkNV5mk4w130zZtv8JtRY21y6gj9pzlKWRCZj+/' +
'CLk5q1GyMYQ8QduAGoiYMDTjbmec97lc1elmI36CZNWHs1nKi gV+p' +
'3BNgN4o75V7c7/eBOEOOGD/n+O9a+UVTA9inCPXdd2Rurlfs/VkgA' +
'rw==');

Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, 90, 15);
FreeBitmap(Pic);
end;

Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
if (Exp < 1) then
Exp := 1;

XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((Runs * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

SMART_DrawTextMulti(True, True, ['Version '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'XP to next lvl: '+IntToStr(XPToLvl-Exp),
'Load done: '+IntToStr(Runs)+' ('+IntToStr(RPH)+' / hour)'],
Point(15, 255), SmallCharsNS, 16777215);

SMART_DrawTextMulti(False, True, ['Time till break: '+MsToTime(TTB,Time_Bare)], Point(575, 445), SmallCharsNS, 65280);

DrawLogo;
end;

Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;

Function RunesMenu: Boolean;
var
X,Y: Integer;
begin
Result := FindText(x, y, 'light', UpCharsEx, 145, 275, 360, 315);
end;

Function UsingQuickPrayers: Boolean;
Var
X,Y: Integer;
begin
Result := FindColorTolerance(X, Y, 9154193, 710, 75, 730, 85, 20);
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;

Procedure ActivateQuickPrayer;
begin
if UsingQuickPrayers then Exit;

HumanMMouse(723, 70, 10, 10);
ClickMouse2(True);
end;

Function LowPrayer: Boolean;
begin
Result := FindColorTolerance(X, Y, 255, 740, 70, 760, 80, 10)
end;

Function GetClosestMMDot(WhatDot: String): TPoint;
var
TPA: TPointArray;
begin
TPA := GetMiniMapDots(WhatDot);
if (Length(TPA) < 1) then
Exit;

SortTPAFrom(TPA, Point(MMCX, MMCY));
Result := TPA[0];
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);

if ((Ident = 1) or (Ident = 2) or (Ident = 5) or (Ident = 6)) then
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMCX+10, MMY2, 10)
else
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 10);

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 10, 10);
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], 16382969, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (white)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 1244922, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (yellow)
else if (Ident = 3) then
FindColorsTolerance(ATPA2[i], 2413294, B.X1, B.Y1, B.X2, B.Y2, 5) //Bank
else if (Ident = 4) then
FindColorsTolerance(ATPA2[i], 2370858, B.X1, B.Y1, B.X2, B.Y2, 5) //Hunter
else if (Ident = 5) then
FindColorsTolerance(ATPA2[i], 1787389, B.X1, B.Y1, B.X2, B.Y2, 5) //Big arrow
else if (Ident = 6) then
FindColorsTolerance(ATPA2[i], 2763504, B.X1, B.Y1, B.X2, B.Y2, 5); //Dungeon
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Function NearSymbol(Which: Integer): Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(Which, X, Y, D);
end;

Function AboveGround: Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(4, X, Y, D);
end;

Function NearLadder: Boolean;
var
X,Y,D: Integer;
begin
Result := False;

if FoundSymbol(6, X, Y, D) then
begin
Result := (D < 15);
Exit;
end;

if FoundSymbol(1, X, Y, D) then
Result := (D < 15);

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)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

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, 800) then
begin
Result := True;
ColorToleranceSpeed(CTS);

if DeBug then
SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));

GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
Var
h, s, t: Extended;
I,II : integer;
HSLColor : Array[1..3] of Extended;
HSL : Array[0..1] of Array[1..3] of Extended;
begin;
For I:= 1 to 3 do
begin;
HSL[0][i] := 255;
end;

For I:= 0 to High(Colors) do
begin;
ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
For II:= 1 to 3 do
begin;
HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
end;
end;

H := (HSL[1][1] - HSL[0][1]);
S := (HSL[1][2] - HSL[0][2]);
T := (HSL[1][3] - HSL[0][3]);

try
HueMods := (H/T);
SatMods := (S/T);
Tolerance := Round(t);
except
HueMods := 0;
SatMods := 0;
Tolerance := Round(0.0);
end;

Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
end;

Procedure SetPrayers;
var
X,Y,X2,Y2,T,T2: Integer;
PPoint: TPoint;
label
MoveM;
begin
{Right-click prayer icon}
HumanMMouse(724, 70, 8, 8);
ClickMouse2(False);
WaitOption('elect', 400);

{Wait for the quick-prayer selection menu}
MarkTime(T);
repeat
if TimeFromMark(T) > 5000 then
Exit;
if FindColorTolerance(X, Y, 8499692, 610, 445, 630, 465, 10) then
break;
until(false);

{Determine the player's prayer type & choose the right protection prayer}
if (FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) or FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230)) then
begin
if FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) then
PPoint := Point(671, 274)
else if FindText(X, Y, 'rayers', StatChars, 630, 200, 690, 230) then
PPoint := Point(670, 343);

{Check if prayers are already set}
if not FindColorTolerance(X2, Y2, 461806, PPoint.X-10, PPoint.Y-10, PPoint.X+10, PPoint.Y+10, 10) then
begin
MoveM:
if not LoggedIn then Exit;

HumanMMouse(671, 274, 4, 4);

if WaitUpText('elect', 400) then
begin
ClickMouse2(True);
Wait(RandomRange(175, 350));
end else
goto MoveM;
end else
Writeln('Prayers already selected');

{Hit confirm}
HumanMMouse(645, 456, 15, 5);
ClickMouse2(True);
end;

{Wait for the prayer selection to be confirmed}
MarkTime(T2);
repeat
if TimeFromMark(T2) > 5000 then
Exit;
if (not FindText(x, y, 'urses', StatChars, 630, 200, 690, 230) and (not FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230))) then
break;
until(false);

OptionsSet := True;
Gametab(Tab_Inv);

Writeln('Quick-prayers set');

end;

Function TeleportOut: Boolean;
var
X,Y,I,DTM: Integer;
Angle: Extended;
label
Start;
begin
Result := False;
ColorToleranceSpeed(1);

DTM := DTMFromString('mWAAAAHicY2FgYNjGxMCwBYj3MkHYjIwMDH +A4v+AmAPItra2YjDUPclw8ZAnGPMDxZExExoGAQBaKgrC');

Start:
if not LoggedIn then Exit;
Gametab(tab_Magic);
Wait(RandomRange(375, 550));

if FindDTMRotated(DTM, X, Y, MIX1, MIY1, MIX2, MIY2, (-Pi/4), (Pi/4), (Pi/60), Angle) then
begin
I := 0;
HumanMMouse(X, Y, 7, 7);
ClickMouse2(True);
Gametab(tab_Inv);
HumanMMouse(580, 115, 15, 15);

if not WaitFunc(@AboveGround, 100, 6000) then
Exit;

end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell DTM')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
FindNormalRandoms;
Gametab(tab_Magic);
Wait(RandomRange(125, 275));
goto Start;
end;
end;

Result := NearSymbol(4);
SetRun(True);

FreeDTM(DTM);
end;

Function FindLadder(Var X, Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;

Start:
FindNormalRandoms;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(130, 170, TPA, 3029573, MSX1, MSY1, MSCX, MSY2, 15)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 20, 20);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(130, 170, ATPA2[i], 921102, B.X1, B.Y1, B.X2, B.Y2, 15)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;
end;
ColorToleranceSpeed(CTS);
if Loop then
goto Start;

end;

Function FindChaosAltar(Var X, Y: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3685505, MSX1, MSY1, MSX2, MSY2, 20)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 30, 30);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin

B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(MSCX, MSCY, ATPA2[i], 11908541, B.X1, B.Y1, B.X2, B.Y2, 20)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;

end;
end;

Function WalkToLadder: Boolean;
var
X,Y,Dist: Integer;
label
Start;
begin
Result := False;

Start:
if not LoggedIn then Exit;
FindNormalRandoms;

if FoundSymbol(6, X, Y, Dist) then //Dungeon
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if FoundSymbol(1, X, Y, Dist) then //Altar
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if ((not NearSymbol(6)) and (not NearSymbol(1))) then
begin
Writeln('Failed to find symbols, static walking');
Mouse(580, 120, 4, 4, True);
Wait(RandomRange(255, 360));
if FlagPresent then
FFlag(0)
else
While IsMoving_F do
Wait(1);
goto Start;
end;

end;

Function HandleAltar: Boolean;
var
A,B: Boolean;
X,Y,T,I: Integer;
label
Start;
begin
Result := False;

if not LowPrayer then
begin
Result := True;
Exit;
end;

A := False;
B := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
if not LoggedIn then Exit;
FindNormalRandoms;

if FindChaosAltar(X, Y) then
begin

if WaitUpTextMulti(['ay-at', 'aos alt'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOption('ray-at', 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindChaosAltar(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin
While IsMoving_F do
Wait(1);

ActivateQuickPrayer;

Result := True;
Exit;
end;

end;

Function HandleLadder: Boolean;
var
A,B,C: Boolean;
X,Y,T,T2,I: Integer;
label
Start;
begin
Result := False;
A := False;
B := False;
C := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
FindNormalRandoms;

if FindLadder(X, Y) then
begin

if WaitUpTextMulti(['limb', 'mb L', 'adder'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOptionMulti(['limb', 'b L'], 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
if NearSymbol(3) then
begin
Result := True;
Exit;
end;

Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindLadder(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if NearSymbol(3) then
break;
until(false)

Result := NearSymbol(3);
end;

if C then
goto Start;

end;

Function BankToAltar: Boolean;
begin
Result := False;

//No more walking east!
if not InvFull then Exit;
if NearSymbol(4) then Exit;

SetRun(True);

case RandomRange(1, 2) of
1: SPS_WalkPath(Path_ToAltar);
2: SPS_WalkPath(Path_ToAltar2);
end;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Result := True;

end;

Function FindBanker(Var X,Y: Integer): Boolean;
var
TPA,PBox: TPointArray;
HMod,SMod: Extended;
L,i,CTS,MSP,Col,
CType,Tol: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
if not LoggedIn then Exit;

PBox := TPAFromBox(IntToBox(240, 130, 275, 185));

CTS := GetColorToleranceSpeed;

Start:
if BankScreen then
begin
Result := True;
Exit;
end;

if (CType = 2) then
begin
Col := 6453887;
Tol := 7;
HMod := 0.10;
SMod := 0.11;
end else if (CType = 3) then
begin
Col := 5273721;
Tol := 6;
HMod := 0.07;
SMod := 0.11;
end;

if (CType = 0) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6848905, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if (CType = 1) then
begin
ColorToleranceSpeed(3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5800071, MSX1, MSY1, 510, 330, 4);
ColorToleranceSpeed(CTS);
end else if ((CType = 2) or (CType = 3)) then
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);
ColorToleranceSpeed(CTS);
end;

TPA := ClearTPAFromTPA(TPA, PBox);

if (Length(TPA) < 1) then
begin
Inc(CType);
if (CType > 3) then
Exit;
goto Start;
end;

ATPA := TPAToATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);

for i := 0 to L do
begin

MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;

if WaitUpTextMulti(['niola'], 400) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end;

end;

end;

Function OpenBankEniola: Boolean;
var
X,Y,T,T2,
BFail: Integer;
GoOn: Boolean;
label
Start;
begin
Result := False;
GoOn := False;

Start:
if BankScreen then
begin
Result := True;
Exit;
end;

FindNormalRandoms;
if not LoggedIn then Exit;

if FindBanker(X, Y) then
begin
GoOn := True
end else
begin
Inc(BFail);

if (BFail = 1) then
MouseFlag(620, 105, 5, 5, 0);

While IsMoving_F do
Wait(1);

if (BFail > 10) then
begin
TeleportOut;
Exit;
end;

goto Start;
end;

if GoOn then
begin
ClickMouse2(False);
if not WaitOptionMulti(['ank', 'nk E'], 500) then
goto Start;

While IsMoving_F do
Wait(1);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Exit;
if RunesMenu then
break;
until(false);

if RunesMenu then
begin
HumanMMouse(MPoint.X, MPoint.Y, 7, 7);
ClickMouse2(True);

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 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;
end;

Result := BankScreen;
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
'trout' : DTM := DTMFromString('mlwAAAHicY2dgYCgD4kIgzgbiAiCuAOJaIG 4EYhUgVgRiTSDWBWJtqJg8EGfERAJJJqxYDkjiwox4MBQAALdh Bks=');
'tuna' : DTM := DTMFromString('mlwAAAHicY2dgYFAAYikgFgFiCShfHYh1gF gFiOWBWA2I9YBYFyonC8QpEWFAkgkrFoGahw0z4sFQAABkyQOa ');
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'swordfish' : DTM := DTMFromString('mlwAAAHicY2dgYGhmZGDoBuKJQNwHxJ2MEL FyIJZhgGAFIFYCYmUglofSzTFdQJIJK+YCknI4MCMeDAUA/+8G2A==');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB +Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAA Z90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1g fiEqBcAxBXA3EzEJcCcQsQd+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);
if WaitOption('Eat', 300) then
begin
Wait(RandomRange(705, 815));
MarkTime(T);
Inc(FoodC);
end;
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 WithdrawEss: Boolean;
var
X,Y,Ess,ItemFail: Integer;
label
Start;
begin
Start:
if not BankScreen then
Exit;

ColorToleranceSpeed(1);
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
HumanMMouse(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, mouse_right);
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
ABMP,CBMP,X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

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

ColorToleranceSpeed(1);

ABMP := BitmapFromString(7, 7, 'meJy7efPxzZuPCwvLiosrSkurboK5' +
'EJSfXwIRh4tk5xTk5hUhq8nIyMnKykMWAaK0tCw0EWRDIAhoD tBwN' +
'HMgggArDGec');
CBMP := BitmapFromString(7, 5, 'meJyTvXBJFoaKiytKS6sg7Ny8IiDK' +
'zy8pLCyDiGRk5GRl5WXnFEDEIYJpaVlwcbg5KSkZEHEgggsCA OmnNDQ=');

if FindBitmapToleranceIn(CBMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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 FindBitmapToleranceIn(ABMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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;
FreeBitmap(ABMP);
FreeBitmap(CBMP);

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, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

end else if (Method = 4) then
begin
//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end else if (Method = 5) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
end;

Result := True;
end;

Function FindDecayedPouch(Var Slot: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,X,Y: Integer;
ATPA: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
ReturnValues([3422525, 3619647, 3751234], Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MIX1, MIY1, MIX2, MIY2, Tol);
ColorToleranceSpeed(CTS);

if (Length(TPA) < 1) then
Exit;
ATPA := TPAToATPAEx(TPA, 18, 18);
SortATPAFrom(ATPA, Point(650, 330));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
if (GetArrayLength(ATPA[i])>10) then
begin
MiddleTPAEx(ATPA[i], X, Y);
Slot := CoordsToItem(X, Y);
Result := True;
end;
end;

end;

Function CheckPouches: Boolean;
var
S: Integer;
begin
Result := FindDecayedPouch(S);
end;

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

Function ContactRepair: Boolean;
var
T,T2,T3: Integer;
begin

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

if ContactScreen then
begin
MouseBox(480, 230, 485, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(380, 80, 435, 160, 1);
end;

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 6000) then
Exit;
if ClickToContinue then
MarkTime(T2);
Wait(RandomRange(125, 275));
if FindNPCChatText('epai', ClickLeft) then
break;
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,Slot,Spell: Integer;
label
Start;
begin
ColorToleranceSpeed(1);

Start:
FindNormalRandoms;
if not LoggedIn then Exit;

Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6J bYBA' +
'DJlKvQ=');

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

if FindDecayedPouch(Slot) then
begin
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X, Y, 550, 200, 720, 435) then
begin
MMouse(X, Y, 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, mouse_left);
Wait(RandomRange(1575, 2150));
Inc(RepairC);
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
begin
Inc(RepairC);
Writeln('Pouches repaied');
end;
end;
end;
end;
end;

if not FindDecayedPouch(Slot) then
Result := True
else
goto Start;

FreeBitmap(Spell);
end;

Procedure HandleBank;
var
S: String;
T: Integer;
begin

if BankScreen then
begin

Mouse(370, 305, 6, 6, True);

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PP2 then
begin
if HandlePouches(2, 1) then
WithdrawEss;
if HandlePouches(3, 1) then
WithdrawEss;
end else
begin
if HandlePouches(3, 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 OpenBankEniola then
if WithdrawEss then
if CloseBank then
Exit;

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

end;

end;

Function FindAltar(Var X,Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,F,MSP: Integer;
ATPA: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;
CTS := GetColorToleranceSpeed;

Start:
ColorToleranceSpeed(2);
ReturnValues(ACols, Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);

if (Length(TPA) < 1) then
Exit;

ATPA := TPAToATPAEx(TPA, 20, 20);
SortATPAFrom(ATPA, Point(MSCX,MSCY));
L := High(ATPA);
SetArrayLength(ATPA, L+1);

for i := 0 to L do
begin
if (GetArrayLength(ATPA[i]) > 30) then
begin
B := GetTPABounds(ATPA[i]);

MiddleTPAEx(ATPA[i], X, Y);
MSP := MouseSpeed;
MouseSpeed := (RandomRange(26, 33));
HumanMMouse(X, Y, 15, 15);
MouseSpeed := MSP;
if WaitUpTextMulti(['-rune', 'unec', 'rafting'], 555) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end else
begin
Inc(F);
if (F > 7) then
Exit;
Loop := True;
Break;
end;

end;
end;
if Loop then
goto Start;

end;

Function CraftRunes: Boolean;
var
X,Y,Seq: Integer;
A,B: LongInt;
label
Start;
begin
Seq := 0;
A := Round(GetXPBarTotal);

Start:
if not LoggedIn then Exit;

if FindAltar(X, Y) then
begin
ClickMouse2(True);
if not DidRedClick then
goto Start;
While IsMoving_F do
Wait(1);

if (Seq < 3) then
begin
HumanMMouse(640, 220, 15, 15);
Wait(RandomRange(675, 1125));
While IsMoving_F do
Wait(1);
Wait(RandomRange(105, 165));
end else
begin
GameTab(tab_Magic);
Wait(RandomRange(675, 930));
end;

end else
begin
SetRun(True);
BankToAltar;
FindNormalRandoms;
SetRun(True);
goto Start;
end;

if (Seq = 0) then
begin
if PP1 then //Large pouch
begin
if HandlePouches(4, 2) then
Seq := 1;
end else if not PP1 then
if HandlePouches(5, 2) then
Seq := 3;

goto Start;
end;

if (Seq = 1) then
begin
if PP2 then //Giant pouch
begin
if HandlePouches(2, 2) then
Seq := 2;

goto Start;
end else if not PP2 then
if HandlePouches(5, 2) then
Seq := 3;

goto Start;

end;

if (Seq = 2) then
begin
if HandlePouches(5, 2) then
Seq := 3;

goto Start;
end;

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

if Result then
begin
B := Round(GetXPBarTotal);
Inc(Runs);
IncEx(Exp, (B-A));
IncEx(Exp_C, (B-A));
OnScreen;
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 NearSymbol(3) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
CloseBank;
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 SuperDuperLooper;
begin
if not LoggedIn then Exit;
FindNormalRandoms;

if NearSymbol(3) then //Bank
begin
if not InvFull then
if OpenBankEniola then
HandleBank
else
Exit
else if InvFull then
if BankToAltar then
if CraftRunes then
TeleportOut
else
While IsMoving_F do
Wait(1)
else
While IsMoving_F do
Wait(1);
end else if NearLadder then //At the ladder
begin
if UsePrayer then
begin
if HandleAltar then
HandleLadder;
end else
HandleLadder;
end else if (NearSymbol(4) and (not NearLadder)) then //Teleport area
begin
WalkToLadder;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
end else if ((not NearSymbol(3)) and (not NearSymbol(4)) //We're either at the altar or lost
and (not NearLadder)) then
if not CraftRunes then
TeleportOut;

end;

begin
Smart_Server := 70;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
setupSRL();
DeclarePlayers;

LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);

SPS_Setup(runecrafting_altars, ['0_1']);
SPS_Continue := True;

LoadVars;
SetupSRLStats(157, SRLStats_Username, SRLStats_Password);
Smart_ClearCanvas;

ToggleXPBar(True);
XPToLvl := XPTillNextLevel(Skill_Runecrafting);

if UsePrayer then
begin
SetPrayers;
ActivateQuickPrayer;
end;

OnScreen;

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;

SuperDuperLooper;

Until(AllPlayersInactive)

end.

Script Fully working! supporting "contact spell and repairing pouches like a pro thanks to Mat For the fix!

All Credits go to its respective owners :spot:

IT is working PERFECT!! Thank you!! :spot:

Tocholoko
02-22-2012, 03:04 AM
Is the Code safe? can anyone verify this please.

p.s: not being a prick just don't want to lose bank.

RISK
02-22-2012, 03:04 AM
It's very safe, Tocholoko. :) You don't have to worry at all!

Austintheman
02-22-2012, 03:34 AM
Just thought I'd let flight note that my problem earlier was fixed--I didn't update my SRL/client. :o

Tocholoko
02-22-2012, 04:02 AM
It's very safe, Tocholoko. :) You don't have to worry at all!

all right thanks abunch for a reply.

itz_Adren
02-22-2012, 06:18 AM
when i run it when it starts it seems to click the run on and off rapidly nonstop. any ideas on fixing this?

burni
02-22-2012, 07:11 AM
when i run it when it starts it seems to click the run on and off rapidly nonstop. any ideas on fixing this?

check the size of the map that you saved, needs to be 500x500 or try reading former posts

Leonoras
02-22-2012, 07:58 AM
My bot died eventhough he had monfish in tab with essence, do you think it is bug or bot needs to be fixed to eat properly?

Note
02-22-2012, 09:36 AM
when i run it when it starts it seems to click the run on and off rapidly nonstop. any ideas on fixing this?

Did you follow all the guide lines?

And have you download the SPS map file attached to this post and pasted it in "Includes > SPS > img > runecrafting_altars.? The image has to be 500x500

Also have you went to Includes > SPS > sps.simba, and change the tolerance on line 96 (Tolerance := 0.2) to 0.5: ?

I hope this helped , Read some of the previous pages Flight has answerd some of the other peoples questions that may or may not relate to this , have another look at the very first page?

Thank you
Zac

Note
02-22-2012, 09:41 AM
My bot died eventhough he had monfish in tab with essence, do you think it is bug or bot needs to be fixed to eat properly?

Erm can ask you which slot is your monk fish in? because i noticed that if your monk fish is the very first slot , meaning the slot that creats the new tab , it doesnt detect the monk fish there so id just suggest just moving the fish over? if that how it is in your bank? and erm make sure that all the items , I.e , runess ,ess , food are all in the same tab and open that tab then close the bank , and start your client , so when you run the bot and when it opens the bank it be only looking at that tab if you know what i mean?

sorry other then that i dont know what else i can suggest , good luck hope this helpd.

Zac

itz_Adren
02-22-2012, 12:45 PM
Ok fixed it picture was 100x100 thanks guys will post proggy soon

lorenzo
02-22-2012, 01:07 PM
it wont fix the pouches whit the lunar spells :S

wister1
02-22-2012, 01:21 PM
it wont fix the pouches whit the lunar spells :S

if your using the contact spell to repair pouches check page 36 for a fix...

its not that difficult to read is it?




Just Replace this function with this temp fix!

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

then on the first MouseBox Put this:

MouseBox(480, 230, 485, 290, 1);

Mat

Flight
02-22-2012, 01:44 PM
Yeah I'm quite sure 'Contact' repairing is broken at the moment from what I've heard recently. Unfortunately I don't have stable internet even now so I'm not able to work on & test it myself, but I remember seeing some temporary fixes on page 36 of this thread, if you're interested.

Note
02-22-2012, 01:59 PM
Just Replace this function with this temp fix!

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

then on the first MouseBox Put this:

MouseBox(480, 230, 485, 290, 1);

Mat

For all using Contact repair pouch method Mat has found us a temp fix imo working awsomely for the past 3 hours just replace the "Function ContactScreen: Boolean;" from line 1710-1717 and replace the Very first mouseBox at line 1735 with MouseBox(480, 230, 485, 290, 1); and it should repair them or just copy the codes that i have pasted on page 36 what ever works for you :D

rol prodigy
02-22-2012, 05:39 PM
anyone know what to do about the deaths died twice now like an idiot had to many runes lost like 4m.


Edit: well atleast now we know I'm retarded... No monkfish in the top rows.. wow sleep tight fuck..

Mat
02-22-2012, 05:47 PM
anyone know what to do about the deaths died twice now like an idiot had to many runes lost like 4m.


Edit: well atleast now we know I'm retarded... No monkfish in the top rows.. wow sleep tight fuck..
What do you mean Wow Sleep tight fuck..?

rol prodigy
02-22-2012, 05:48 PM
means I just completely failed, and should fucking facepalm.


I'm talking bout myself lol..

Mat
02-22-2012, 05:49 PM
means I just completely failed, and should fucking facepalm.


I'm talking bout myself lol..
Ow :P I have my MonkFish any where and it works.
Mat sure its didn't fail on sps?

Anthano215
02-22-2012, 05:50 PM
Any specific spot you guys are having your pouches? It still seems to try to empty a pouch but miss the click then try to craft runes.

rol prodigy
02-22-2012, 05:51 PM
you could have monkfish at the bottom of your bank and it'll work?

Note
02-22-2012, 06:06 PM
O_O i keep all my runecrafting needs in one tab i.e all runes craftes ,essence and the food supply making it easy for the client to work more quickly and without any confusion if i may. and anthon215 my med large and giant pouches are in order of 2,3,4 and it has never done that O_O well not that i know off .. but the script works flawlessly give or take the chances of it failing or being sucessfull at a random...

rol prodigy
02-22-2012, 06:36 PM
It never completes randoms for me but that has nothing to do with the script, that's the client. I have my giant in 3 my large in 4 and med in 5 the small is useless at high levels just a space/time consumer.

Wizzer Gizzer
02-22-2012, 08:23 PM
my bot cant bank, should i try to use a new rune? im currently using mind runes

Mat
02-22-2012, 08:56 PM
my bot cant bank, should i try to use a new rune? im currently using mind runes
Try Fires, Does it open the bank screen?
Mat

Note
02-22-2012, 09:40 PM
Try Fires, Does it open the bank screen?
Mat

Hey mat sorry erm i was wondering if you knew how to make it direct right click the pouches when it is at the alter ? insted of left click >empty >craft then repeat for all the other pouches .. i tryd lol but i failed O_O .. i just messed with the numbers i saw yohojo saying 1 is left click and 2 is right click.. lol is all i rememberd .. but yeah if you know how it could be done would be awsome!

BTW Congrats on the nataure script!:spot:

riwu
02-22-2012, 09:54 PM
Hey mat sorry erm i was wondering if you knew how to make it direct right click the pouches when it is at the alter ? insted of left click >empty >craft then repeat for all the other pouches .. i tryd lol but i failed O_O .. i just messed with the numbers i saw yohojo saying 1 is left click and 2 is right click.. lol is all i rememberd .. but yeah if you know how it could be done would be awsome!

BTW Congrats on the nataure script!:spot:

to fix the new pouch update:
change all the mouse_right in HandlePouches to mouse_left, and del/uncomment the subsequent few lines containing WaitOption etc.
eg.
at line ~15xx
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
to

begin
MouseItem(SS, mouse_left);
// Wait(RandomRange(20, 75));
// if (Seq = 1) then
// WaitOptionMulti(['ill', 'Fill'], 400)
// else
// WaitOptionMulti(['mpty', 'Empty'], 400);
end;

do the same for all other pouches.
Havnt been rcing recently so i have yet to test if this fix works but it shd :D

Note
02-22-2012, 10:02 PM
to fix the new pouch update:
change all the mouse_right in HandlePouches to mouse_left, and del/uncomment the subsequent few lines containing WaitOption etc.
eg.
at line ~15xx
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
if (Seq = 1) then
WaitOptionMulti(['ill', 'Fill'], 400)
else
WaitOptionMulti(['mpty', 'Empty'], 400);
end;
to

begin
MouseItem(SS, mouse_left);
// Wait(RandomRange(20, 75));
// if (Seq = 1) then
// WaitOptionMulti(['ill', 'Fill'], 400)
// else
// WaitOptionMulti(['mpty', 'Empty'], 400);
end;

do the same for all other pouches.
Havnt been rcing recently so i have yet to test if this fix works but it shd :D

That wont work sorry , when its the bank pahse it needs to right click then fill..

Edit-I think it has to do with the "seq" i was reading and i noticed that it like tells it to follow the sequeses , im not a scripter but yeah thats just my thoughts on it..

riwu
02-22-2012, 10:32 PM
That wont work sorry , when its the bank pahse it needs to right click then fill..

oh u mean the only thing that is changed is u dont have to right click to empty pouches? still the same for filling?
then i guess it shd be something like this
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

do the same for rest..u only have to do for 1 method but im not sure which pouch setting u using so just do all and it will be fine.

off to school now..if theres any more issue i'll try help tonight :)

Note
02-22-2012, 10:44 PM
oh u mean the only thing that is changed is u dont have to right click to empty pouches? still the same for filling?
then i guess it shd be something like this
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

do the same for rest..u only have to do for 1 method but im not sure which pouch setting u using so just do all and it will be fine.

off to school now..if theres any more issue i'll try help tonight :)

Even with that code still right clicks =( , but i do appreciate you trying to help thank you! , have fun at school.

Wizzer Gizzer
02-22-2012, 11:24 PM
aight thanks for that, my bot also likes to mash the run button if you could help me with a solution

Note
02-22-2012, 11:28 PM
aight thanks for that, my bot also likes to mash the run button if you could help me with a solution

tell me more? like what do you mean

Wizzer Gizzer
02-22-2012, 11:36 PM
FIXED.

also is there a way to slow down the mouse speed?

Haider
02-23-2012, 02:46 AM
y wont it acces the bank!!!!!!!!!!

comes down the ladder, tries to look for the banked, waits 2 seconds then teles!

!!!!!!!

Flight
02-23-2012, 03:44 AM
y wont it acces the bank!!!!!!!!!!

comes down the ladder, tries to look for the banked, waits 2 seconds then teles!

!!!!!!!

I just made a new bank-finder, wanna do some testing with me?

Haider
02-23-2012, 03:46 AM
k, sure y not

itz_Adren
02-23-2012, 04:46 AM
Flight, you sir are a god and make amazing scripts, if only I could script like you. Anyways here is the proggy I promised.


[=======================================]
[ ZMI-Extreme 1.5 ]
[ by Flight ]
[=======================================]
[ Run Time : 5 Hr 42 Min 24 Sec ]
[ Exp Gained : 190990 ]
[ Loads Completed : 235 ]
[ Monkfish Ate : 165 ]
[ Pouches Repaired : 0 ]
[ Breaks : 1 ]
[=======================================]
[ ZMI-Extreme 1.5 ]
[=======================================]
I used npc contact to repair pouches and it didn't say that i repaired pouches. just thought i'd let you know not a something I really care about just though I'd tell you. I averaged 33.4k xp/hr, and 41Loads/hr, and completed 235 runs FLAWLESSLY! This is at 94rc btw. Thanks for the script and keep up the good work can't wait to see 1.6.

Wizzer Gizzer
02-23-2012, 04:48 AM
k, sure y not


way to be....

now thats what i call respect..

Haider
02-23-2012, 05:23 AM
ty for the script

Flight
02-23-2012, 05:35 AM
I haven't sent it yet. :/

rsdanny
02-23-2012, 10:35 AM
Hi guys,

Im fairly new to this type of botting, but have set-up with using the guides

When i hit compile it gives an error on line 70: LampSkill.

Searched along the forum but couldn't find an answer.

Hope someone can help me with this (probly small) problem

Regards, Danny

Flight
02-23-2012, 10:55 AM
Hi guys,

Im fairly new to this type of botting, but have set-up with using the guides

When i hit compile it gives an error on line 70: LampSkill.

Searched along the forum but couldn't find an answer.

Hope someone can help me with this (probly small) problem

Regards, Danny

Just put "//" (minus the "") in front of line 70. This will simply comment out that line.

Edit:
By the way, make sure that SPS image you downloaded from the main post is 500x500 pixels rather than 100x100. This is a very common mistake people make.

rsdanny
02-23-2012, 11:23 AM
Thanks Flight, passed the compile part,

Now i try to run it and it's pretending to go through the hard way but makes "a last second save"and walk a little part up the easy route and get's confused :S

Confirmed that the pic is 500x500 pixels

wister1
02-23-2012, 11:39 AM
Flight if you need some testing i can help you too :), although theres some bugs needing fix the script can still run preatty well

Flight
02-23-2012, 11:44 AM
Ok everyone who was having problems from V1.5, post them here.

So far I've fixed:

Banker-finding
All pouch handling

Kajutsky
02-23-2012, 11:46 AM
so many instructions... im confused <_<

rsdanny
02-23-2012, 11:57 AM
Walk problem, doesn't know where to go to. First click is of Hard route, second click is into the Easy route

riwu
02-23-2012, 12:09 PM
Even with that code still right clicks =( , but i do appreciate you trying to help thank you! , have fun at school.

are u sure it doesn't work? back from sch and im testing with my edited script now, works perfectly as usual, right click to fill, left click to empty. I believe u somehow edited wrongly/didnt chg the whole thing. Anyway here is the whole edited function (just replace this with ur HandlePouches function)
Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;

//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;

//Giant pouch
if not (GS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(GS, mouse_left);
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(GS, mouse_left);
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;

//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;

end else if (Method = 4) then
begin
//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;
end else if (Method = 5) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;
end;

Result := True;
end;
srry for the bad standard XD, lazy to space it

im getting ~50 load/hr when not laggin now. the only obstacle that prevent me from getting suomi-like xp rate is the walking which uses flag to detect when it reaches a point, so by the time flag disappears and script react to click on next point u'd already paused a sec.
And sadly my current scripting knowledge dont permit me to think of a better way of perfectly smooth walking (unless instructing the script to click on next point after a prefixed period of time, which i think may not be reliable). Any suggestion Flight? Nevertheless its a pretty great script, good work Flight :f:

lorenzo
02-23-2012, 01:06 PM
it wont repair the pouches whit talking to the dark mage on lunar book it open the npc contact and close it agian and run whitout fixing it :S u know how to fix that? thanks

riwu
02-23-2012, 01:09 PM
it wont repair the pouches whit talking to the dark mage on lunar book it open the npc contact and close it agian and run whitout fixing it :S u know how to fix that? thanks

the solution is on the last few page i think, look back abit and try find it. i only use repairpouch so i know nth abt the npc contact

Flight
02-23-2012, 01:53 PM
Yeah Contact repair will be fixed in 1.6. Anything else guys?

Esschers
02-23-2012, 03:01 PM
Haven't found anything else

Flight
02-23-2012, 03:10 PM
Who would like to test 1.6? Wister1, I know you will, I'll send a copy to you.

Mat
02-23-2012, 03:16 PM
Send it my way flight:)
Mat

Haider
02-23-2012, 03:35 PM
flight, i meant ty for taking the time to update the script


Who would like to test 1.6? Wister1, I know you will, I'll send a copy to you.

and i would love to test the new script :)

Note
02-23-2012, 03:44 PM
are u sure it doesn't work? back from sch and im testing with my edited script now, works perfectly as usual, right click to fill, left click to empty. I believe u somehow edited wrongly/didnt chg the whole thing. Anyway here is the whole edited function (just replace this with ur HandlePouches function)
Function HandlePouches(Method, Seq: Integer): Boolean;
begin
Result := False;

if (Method = 1) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;

//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;

//Giant pouch
if not (GS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(GS, mouse_left);
end;

end else if (Method = 2) then
begin

//Giant pouch
if not (GS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(GS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(GS, mouse_left);
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;

//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;

end else if (Method = 4) then
begin
//Large pouch
if not (LS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(LS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(LS, mouse_left);
end;
end else if (Method = 5) then
begin
//Small pouch
if not (SS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(SS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(SS, mouse_left);
end;

//Medium pouch
if not (MS = 0) then
begin
if (Seq = 1) then
begin
MouseItem(MS, mouse_right);
Wait(RandomRange(20, 75));
WaitOptionMulti(['ill', 'Fill'], 400)
end
else
MouseItem(MS, mouse_left);
end;
end;

Result := True;
end;
srry for the bad standard XD, lazy to space it

im getting ~50 load/hr when not laggin now. the only obstacle that prevent me from getting suomi-like xp rate is the walking which uses flag to detect when it reaches a point, so by the time flag disappears and script react to click on next point u'd already paused a sec.
And sadly my current scripting knowledge dont permit me to think of a better way of perfectly smooth walking (unless instructing the script to click on next point after a prefixed period of time, which i think may not be reliable). Any suggestion Flight? Nevertheless its a pretty great script, good work Flight :f:

Thank you bro sorry i just got up is like 4am erm , yes the right clicking works fine now :D! banks fine , im sure with mats Npc "contact" fix this fairly modified script thanks to you to is working awsomely for me ! i cant wat to see the up dates on the 1.6 by the scripting king himself ! :D

beast SRL comunity! :D you guys rock!

P.s hey flight im not sure if any one has made a comment on this ! but erm do you think if there is a way you can make the walking a little bit quicker? like it clicks the mouse 500ms or maybe even exactly a second b4 it reaches flag on the mini map other then that , with all the fixes since the update , running med ,large,giant pouch im geting 43k exp per hour!~ thnx!

Zac


EDIT!! i wana test 1.6 plz!! <33 thnxx sorry send it pm? ima go brush me teeth xD thnx

Note
02-23-2012, 03:50 PM
it wont repair the pouches whit talking to the dark mage on lunar book it open the npc contact and close it agian and run whitout fixing it :S u know how to fix that? thanks


Just Replace this function with this temp fix!

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
//Result := FindText(x, y, 'Choose a character', UpCharsEx, 170, 10, 340, 30);
Wait(1200+Random(300));
Result := True;
end;

then on the first MouseBox Put this:

MouseBox(480, 230, 485, 290, 1);

Mat

Respect to mat fora quick fix thank you.

Flight
02-23-2012, 03:55 PM
I'm quite limited by SPS. I've tried using a few methods and it seems the current methods for walking to the altar are always the fastest. But regardless, should I come across any method that works smooth / faster I'll do what I can, that's for sure.

Also, I finally got whatever bug you guys were having with the script spam-clicking the altar. I didn't see how it was caused personally but I was around to see the aftermath. Anyways, I put in a sure failsafe that will kick in after X amount of clicks on the altar that should exit the 'CraftRunes' function and continue on with the script.

Sorry, Mat & wister1, the copies I sent you two don't have this as I just recently (just a matter of minutes ago) patched it up. I think I'll just post the version here. Only use it if you'd like to help me test it. Should you come across any bugs please do post here and be specific about how they occurred.


{/////////////////////////////////////////
// ~ZMI-Extreme by Flight~ //
// //
// Version: 1.6 //
/////////////////////////////////////////}

program ZMIExtreme;
{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i SRL/SRL/misc/reports.simba}
{$i SRL/SRL/misc/paintsmart.simba}

Const

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

//General settings
HPLevel = 99; //Your (max) Constitution/Hitpoints level
Food = 'monkfish'; //Trout, Tuna, Lobster, Swordfish, Monkfish, Shark
EatAt = 70; //Eat at this health percent or less
UsePrayer = False; //Use ranged protection prayers?
RuneType = 'mind'; //Type of rune to use for bank payment (20 runes per session)
RestAt = 60; //Run energy % to rest at (after banking)
SwitchWorlds = True; //Switch worlds after a break?

//Pouch settings
SS = 7; //Which slot # has your small pouch (0 for not using)
MS = 6; //Which slot # has your medium pouch (0 for not using)
LS = 5; //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

//Break settings
BreakIn = 180; //How long before we take a break? (minutes)
BreakFor = 25; //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 duration


Fill = 0; //Ignore
Empty = 1; //Ignore

Var
MPoint: TPoint;
Version: String;
Exp,Exp_C,ReportTime,Runs,
CommitTime,FoodC,RepairC,
XPToLvl,OldXP: Integer;
PP1,PP2,OptionsSet,AddRun: Boolean;
Path_ToAltar,Path_ToAltar2: TPointArray;
LCols,ACols: TIntegerArray;

//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 := Skill_Runecrafting;
Active := True;
end;
end;

Procedure LoadVars;
begin

Version := '1.6';

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

Path_ToAltar := [Point(160, 545), Point(160, 600), Point(165, 655), Point(175, 715),
Point(235, 710), Point(285, 720), Point(330, 720)];

Path_ToAltar2 := [Point(160, 545), Point(160, 585), Point(160, 635), Point(165, 685),
Point(190, 725), Point(235, 715), Point(285, 720), Point(330, 720)];

LCols := [789517, 921102, 1052689]; //Ladder colors
ACols := [7500141, 8092534, 8355706]; //Altar colors

Case Lowercase(RuneType) of
'fire': MPoint := Point(340, 125);
'body': MPoint := Point(105, 170);
'mind': MPoint := Point(200, 80);
'air': MPoint := Point(300, 85);
'water': MPoint := Point(152, 128);
end;

PP1 := (not (GS = 0));
PP2 := (not (LS = 0));
AddRun := False;

end;

Procedure Report;
begin
ClearDebug;

SRLRandomsReport;
SRLProgressReport(ResultDebugBox, 'ZMI-Extreme', 'Flight', Version,
['Run time', 'Exp gained', 'Loads completed', Capitalize(Food)+' ate',
'Pouches repaired', 'Breaks'],
[MsToTime(GetTimeRunning, Time_Abbrev), Exp, Runs, FoodC, RepairC, TotalBreaks]);

MarkTime(ReportTime);
end;

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

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

Procedure DrawLogo;
var
Pic: Integer;
Canvas: TCanvas;
begin
SmartSetDebug(True);
Pic := BitmapFromString(367, 40, 'meJztXQebVFW2rZPuubHJICA5Z' +
'xUUxDHQgIqKYGAUUQaZEZCHaQTUUXTAAQQBETEgosIASg7vD7 5V6/' +
'QtbndXVd+6VdCtr/fXw8dg9amT9t5rx1MqNUZSzgrDo1F01Pff87y' +
'XjHna856z9nUpx5dKXqkkGhwvP2FkXSpZIUZgFi0dOZBySivG sRiq' +
'VBrQiqH6qRnyhRh9O69iPzVE4K9xSs2XcroQdwkxVMqJkBtx/Ftb2' +
'//m+YmiE563Vqn7KGFKlAOKfzZMnMn9vr8tio4JMVKpe6Sc1KJlC r' +
'I/vuLuUqmtyaHC8AsOGAnRL096i7D/nrWvav1QvzDpAyS1bgfk8Lz' +
'Vnvei563z/S3WbvS8NVo/AKYTYiB+lJpn7bog2BtFP9cRKUlyIwz3' +
'RNG3QfAvKcdQKM2hVMlJytq/heG+OP4lSa5jQDCsMautXduq1UbR2' +
'SS5VCrFlCr5J9aVjHmSIvQIJDA2p6/eZEnxHnKxJsfngbUSIRLsE0' +
'R6qhf6Lgkx3Np/JMmFIPikmdPsp5aQEG1SjgUIwaFYux4mTGrIrA+' +
'CD8LwYBR9h58g2GXMMxAOABtR9BN+gmA3ZA4kDPi9qmDx/bc5/lCl' +
'FuaDKAKgCJyeJFcrg4ThbqVmW7upBQsVw41ZlSQXMWwcX8eUh Jhee' +
'DisHeMEwQ7K4b+22hBrCQVB8JGTyUlyGQda4xQwc0+p6SkzCq Xm4A' +
'fblX4AUii6Q1NuhKScEcenubrr1r7RL0x6l6BSw/BIHismSc77/pt' +
'aPwr7FHdPylFaL7V2q5RTfP+9qr8CbAPthj8hi4BtckxH+P7W OP6p' +
's/V0WKlZvr8jn2KtPXQZXM0x5vHKyEIMghlVWPkCemEQorUPyKd9 i' +
'qQQo+P418w2ngmCPdZu8LyX6eRRziWFA4W4hlonFn1Rysmd9x nyNj' +
'EGB70Bcr7XVlOFYiGGABbyZt6M45Owi3t7Sv/PSRjzFCAHrorWj+A' +
'iCTEMPwAqUs4EnMAP/h0MCM0LrtH6fnxGyvFSjoYwUepeY5ZBRQfB' +
'p1kskcKSbRgHWpvH/TuOPsd8jOetxd3oJpRWYZJSTiu+TjFEiBFCD' +
'IBl7cbE5KWcCJSSb2JVKI5PxPEprDEMvyMy6ROEXYrjs9k9DI L3jW' +
'mH1qDFOpzGS+h5L0DCp5z4X60XZNS6wce0XhbHP2ZUyfXcGuG 2E8S' +
'a1n/BD6wbgsyzWE4x71w/9RIpmt4hzepbBOEThvu6CBNYTOAypWYG' +
'wU6qxeO0j3okX+uF1YTJGoAfa/+n0LQlEBT4SKkHoJQrYwKlcGLfc' +
'UWNDyrHU2BuMeYJTFjr5YXm1koCRDRmOWR+xkL8gu4voCbrJD/OxZ' +
'muzvZxPh+6j7qQojx5NAi2R9EJ8CydEp9X++SdJ9/zXofogLailLu' +
'ERRU7xH7qawRVGEXf4nLSZXoFN5Bu20nQgMY8w+O+AuXoYig9 kV/x' +
'u3YWTRshTADaC0wPTAQVhrsXBB9VBoQuA1CBEPD9zQXGZPjgH +Ayr' +
'BSQCQNq/WChcVpLkbWblZoRRV+nmMTZhhD+FoI0in5IYcbVOD4dhv' +
'txQDRaq5JgvLWN3hK/7+h9peZiIdAOuFf09n8hxMjenlQ/tYQU2Bz' +
'sj2sJHMIrpylPYDRNBLvF8UXcbaXuyTEUbq/Cr1Rz5G7ht1xufHra' +
'814B7+P6Ob9rymWfab04ik4zbNH4oPoR8KPvbwcYgI1A90se3 HUHy' +
'AOXQXRTYlyg11rQPIQ8iXEiSk3HnIUYRNneBz3GPRD2GYsKw2 MQ40' +
'BcgCXGPN1X42j91BhBQbuoDT0tkyBPfH+r7+8Ar4XhISBqYFE KmVw' +
'kxJAkqZLWAg2LYaGGGkezg2GP+P7OrOlEE/t5azf4/rsF7qEQA31/' +
'F8MH63GTaSkca3SQ20ZhEHxs7Rtc5kmuzvT98G5+AsiM45+hn koMC' +
'kfRyUzIqZ/+wOT8IRQmW6EywKHkrJ9gj1j7nlKzeZPzRuuEGJwkv2' +
'c8fjfj+IYTArDrwbkEAI0BWtgydNNd6Ww0bZByAqyeQuGJAUK MdX4' +
'/rA5WEt0veaXlHSCl5vv+JrdSCHuAqCajYH2JfOBMGGgwXYUYAD Bs' +
'zEu9PaV+apaEGBfHp1IPXtl1gH8Dz8bxJShEY55sXBvKincUk IZfM' +
'Rhc4OQA4IrnPUfXxOLGBpVjYNFkJYkxy2EIeN4LnreqwRk6Ul JOTV' +
'nVcLZHCo1zu4iWVzkiLOUohtrfqe0V+YORUnOdP02pOVgmY8H umvW' +
'bOX9Q8qDZu8RuGNJ9CZgzir7Xur3A4Uo5HfDVsQCUjuethEiB QeG8' +
'phAmwDlR9A3zYPN7AsuZvRV3LuYMeCxEmzHPav1UozNMKUiS8 wRjb' +
'2L83LAkZGB6IixBV2cEaASR63mvYUXGLGGVU8WCE814M5gOep WSJK' +
'SoP9x3fKe5qTqaDcOD7hyVmkb/zyL8KeWM1GE14M9k0P3pScrJUPT' +
'ZaEuS3AiCPWCxKPrO2k043GIjB8H+OL7ovGop4DkOYeJ5q2n+ n6Aw' +
'OcqU2jxRoTJBKEXRjxVvSRB87ILaGLOosh6GX3TLB7bBZKLoh 7qSU' +
'wgxyvM2YtPC8MsoOs0Y6zX8MNlvLOHcpSg6BjvRmJVSzmQBwg AKli' +
'LFPrDpwnA/Zebgto7Shn1/BGQiCURLaWln1epRG8dn01t3HohL60X' +
'YXibrQp5Hvv8RDqW/SOoPQVJOA0eAEVz8Io7P0Zf+RKk0kEyqC+vT' +
'INiFYZkoezxjj6zEjbJ2S5pqsgqKCT+lUs74i6COvpEJCb2t1 CzKq' +
'FHF5lkqI+1p6XyAnfYRKVVddTkBFeDKScVSKVYKCnQgLayOZW ItDL' +
'wKlkW3AUsAnyh1j+c9Q2/26PS/5p/bDByKtX8j+mp3Stz3iyXn3Dm' +
'izTKeAaYSwG2SXGSC3FEgNxYCu8B0YszjkLpMEiiH9mDm4AiC 4H0m' +
'mUTObx+GBwBxe3tB/dQjaTBOklzGD47MmBWetzbVJs1QuawYmIT2w' +
'ozOiWqvlZjr6KAFbhFEAVQ8YG2OYSWV/i1JEsenPO9FjOb727ok3e' +
'Um2CZTwa2c28u4wGG415jHaolQJsacZbLcjDS96jcINPAIg7N DsZ+' +
'QNk4m48+KD8olm8XxmSD41NpXGdsd3aMfG0tz3iHwGjaKSz7v ec/3' +
'cVgCDQXTD3A0DL/FDjjUB20Vhl/F8UmsyPc3Y9OwIbCglZoL5cXih' +
'Y3GLDPmOZqNd7NKYpm1f8d687no/3gx8T8RAXXElaAt8LmrI27R4I' +
'Y5lpfAEBluOuAMYSgs971R9JVSU6F3jFna04DQ5glsrqxoYpz UsND' +
'v+aL+OmXtG3F8DYAEUhSCAjitVmMEQouJuOHOFwrcBeuDsHxI iuJ8' +
'Icay1QN28i5YN5BUrFlYix/oXFd1AuiOOUMu0RNVR54IpeZhD9s6M' +
'lqhqS9BFjW4wIDmVaObo8ibkusqEGefCNu2Sz4AzZYAOwN8kk 0PwA' +
'ZSnV0Jgu2sIdLdvrHH0KFiNXRLWtnkpHKxdmHz/89HQowAI7vAShj' +
'uAZszLe0vzQ8Mxa31YnAcEzIPAEswk/a072+tVLBWAtAA7U4gZNwm' +
'MnOdnLoBW023dl1aAna94jPB7wICKdVYPKhCkGOYIdsyLIKux LC43' +
'rUkKhOAx2q9jAHus64bQ7UPavZCGQY8r9T91m4Lw28AV8ApsK fwg+' +
'Xg62AQQWvX96PijCp8R2k/mt4DT+sHYelAKOFPgEmob4imMDwehkd' +
'9/10mgB11gfgg2Asupktzav6APi3HY9hYLjBqJAztviLCl0bRYRw Z' +
'LFlrX2fgfhIQCEZ2ITxODwb1MmASHCiTmgo4RrB7Q7ReggUCW ObOo' +
'ixOtHP/EwS7GQGcrPXC/qJmehGTIPgwTdJYz4qbT8ACTY8cGrMatz' +
'29zLuAZjEyc7wr4qLcyyiOL1U8b7x+06DWiZDLAp/1iW28YAHUHMQ' +
'IuA/zhMSTcoLz2rngSxieyO1y6UrGLPf9t/AVYfg5oc4Z3PbaHxfM' +
'ki2b/7hRdT/ZhXz8Ir4CW0Fj51zq8Kmf9i+48O8ruM7zXoCUBv4He' +
'1bydrLaP4qOgyshG/EDqegK+fGNSs2GXYZfzBkDgjrAbOnpPUicZr' +
't7yCHocFI0QET6L2NYeDiGI4xj9egEgjTI1UFADgCBmB62ouI 8x63' +
'DbtAFlNcD35li2KT0m92HwdnVqv44Cec2pWgsDFqvDQfhULHD WncW' +
'Ed0BajiJGuebTdWAdHWdG4t6HrI0OAg+wjh0t66CMsJ9o67vo t0Uz' +
'qVzPtu1zibMTw4AOO4D3wkxSusF0D6wIFyDBdgOvv8O3cXFKA DHGf' +
'Mk9GYc/0K3yUs9aS4FGQKOpmnTqEqCwJxtzFMwfNj2YVH9LyKnrMz' +
'uSY8/bJp0r2tcw9qHsQSKExm5huR8JmdrOxpo05zEpntcMBXw1t2g' +
'M+d9z3uFAspj+fZ4/N3z1oXh3lKHYLmXosYwhqUpUR8y5jnmu55iw' +
'fgk4ChGpopJEixtHJtuHaL8fA4ol0G9qpQY084YpcCHG89sNF o/DF' +
'kt5UjIrlR0f0U3e34fo2TosNhiO0aAeiWMbxIO3QqsKDUXYBt MhMt' +
'PDT5C6waStaQcX9F3YFgcOh16QUvcemA0Yj8DvcZcsgk1Pojr NxLX' +
'CZAjjm9V7tCTv9FFRiBPougEts6luhEtv06FONWFVKjp3ilaE WZxk' +
'+P4Z0BxVz4Qxz/m+0XR9FHK+sIfe4gpwUDoIitwWLQZrzlbD+qAnU' +
'xW4vPMacHFHp5+8grdvFnyqENzQTilHqA/uS2KvnG+Ux7W6ErKB63' +
'CXQ7wGPMsa7jmGfN4kvxGu7VU19+SYM6QA0GwHftfw1TMQ2Dw JUHw' +
'b5hLsPgwDvQOpFnmAxpYl20NIMSW4T8pNb9Uji6dyJ3erIjVJ UagY' +
'6fMLJ73fBQdZTJn2c2eE8xrvYIFbo/Rf55T9XfaPUhseq2/hkplmK' +
'xwrfcAIsYB2BPf3wJ8mPFq7k9bQOciXJIwPFn59W5XrknSwP/QjLh' +
'dcXwBZ13no0pN5yXEhZyOFbFUZwuAPVHxYKg5ZsaWYSRdLuet 3cEN' +
'NPg8QCZ4igb4C8WsYCoywPjD0DiYMO4J+8f2BdJBsLOL/eJ60rJk+' +
'wVrt8A003opbpQxKyAS6d/4OYr+S/H7le+/RxOsGYknlHqQboGJkO' +
'3s8XKadqiLv8PwXApFBmkD4c+GDxYWqLNbIU/q4ltAuwW0FwbH8e/' +
'sylgwCgN0Aejrct6i6ExasuS+OvS8l4PgAG6gtX/H/jDNL3IQlOXJ' +
'43sa3gNkZdZ3XMHwRFPjIDaVascgzHESnEkPlUSMk67GoWBz2 NW23' +
'rJcSxD2qJnU+RCHMHY5yrE8matR7e8kvKd1O91Z2KIPgmB3EP wLej' +
'kIPm/ryFTPyVASSC8jiPa2NmkZAp86cT0gRByf6cndLajg/kkfyyJ' +
'sNeQGOzhNwHZhdYBewOrsoLiO7QcdATPHPNmPIFqlzO+4uEUQ oWF4' +
'jIZYO8sYd4B/C4xzOwiXLY5vWXxs9zTG82DQbWMAeiwVhyTjhLQfE' +
'/4L2HMQLcphrbBVSzRtJtCrORNfmiTnwbY4BWg0Zn2Uo1c8qcO4 2K' +
'400mEngJkartRYqYXUMmB8RcDzO0u9CpOFlq80F2Wi4LdKPRJ FPyf' +
'JBdgj1EfzuTmRU+UUwotzpPoMtPYtunMDyh/ArWuQmcAV5PSyvwUw' +
'jGYjduYysFmdsYSYDBGk9aP0lj9X56shPXAPAXjApNh27vyMz DhDr' +
'd3s8sEAjcAUYDSuJScl7J11Iop+hVAC9GUPNM/dFsgoqPK2cqFczh' +
'JLA9hQuajUIK3tiiOj6BdIb9x/V1GeQ1JJ+uHXMuXg5zA8wXc3/qr' +
'1kwSiliyT9ZVBY85l16aLjAg/VYhxRBjiLF501is9jdfYn7lPELsN' +
'fAqudE3yoUSACrBFMO4YWL+jGSYQVsYAAg1zTuO0zUg5ehtFX 7N/1' +
'BJwaMYDfIYtQKucO1CE58Eoe4kgEObtUex8I7xQhXBJsp2KAV +xV6' +
'76GBsJEQf2p6xbSkyVU29aNp4qd9AFJgHkg84FvMkYp4o7M5S 53Gt' +
'yONJD6ESm2fw7/RfZGXJY9jkcI0QCWYfr7VxVkLQMMXQQzBwXJnCG' +
'J+5JFB2y9rU8S8JsfR/w41VjlvD/JpSuIl3wOhbOHAFf5AOKgTErK' +
'w5P4GFnP7aQXJczAAxIbCgs1n7mPL686IgI8156SoH23yuWZQ 2ADd' +
'wL6ybrlOhLrVDbcPnBcThiLJbZLN/0atWbovV6oIvlRU/FNtg+lfJ' +
't5s9U918xveS0q8hmdAkW7rNYYNMgSrO/3DXKsSM4UzYxBsqdofVy' +
'Ke9r/C0VixnCfmFl5ak4vgx9TZ3bff9VJSHZ5XXXGNCwLnUflDhAj' +
'vsKOhVhKi5kL3d33OUuZL7/Pvaz0oPU9zfRknLKtGz+QPO6WFJbOV' +
'VgEiaZr0xewhaGjmaD0/kA/BnAA5t6O8taQ5gD1N31hYkV4m5MGLr' +
'Y999m1uiq1j1Yc4vYhvFt6qxTsMJ6dDMWIDY1LZH3k8I+bcYo NzNz' +
'e00qWs/1mRpVjWPSeikby8+jlX2hwULI20EC1mi2DpR3eLDnrXR9w' +
'lmzWU83USpecLVFYBBwkNb3t6KRXQA2ASfyYkgCid+C4AMaIz 3yRR' +
'fCDicEvTfZ7XweL1iSRiHdnyJ7T9yGwMypm+0fwRgkxnB1WyX 2s5r' +
'Etw9ec01T2W3sQpqzN4h7ddMFI+j3nu48Zta+zWKltzPOUnw+ Ij6v' +
'SeB95o3fxGExU+sHY1a4FUEjs+X4enraf6DMHFR7JMMeXNPZl auc2' +
'kEr7HaFxaWcBbkKKxsXLH07qbUOmftdfwAIw2beZpJyJlQAdK UL4r' +
'R19EHqE+1B2KgEfz4K3eoqjoNgL4+sN2UddD2b2t0qBTXmMTB I6vw' +
'8wVtdj/BhukoiZyuxX/cerrFJiqm/PCemnNOGzNWo7C0/mAINmEVf' +
'zJLardQCwuA3ff9Dsr/vjE1cIfdh399e1w0yns69FRRNmt80muWfE' +
'xloGEpHyvps/3P26ul4WyoMv8SVgJEFCQzoAtwVxyczM7zKlOxaws' +
'SQ9ye7vHHmDU7hF3XUXdLSCVkh8jthz7TaCxHMXh5KLdDOpKk DbOt' +
'6tZFsq/xULnJxDXzYI7rlvAlB+qyryKOUXl/Ye4DNh5bE5mTuzI6+' +
'gEyYKnaIkXqJG8UiwSnU+L2ZY8mWU5/SyS/p743o6vyBYcFDfJyxZ' +
'wsR95C2QEge2c3f/byZhwnSYUfz20WGvy4WcH9pvdh1/e0SiA/DY/' +
'h3SCocB51sku6CFcAMrqSip2iUNmaZS9iGRWDta8zlm83deAL iiE7' +
'dpzqPoKPoXFamgeVT/HxDCAiT00lyvpKUBbwBa6vb9yo650e6ZlOu' +
'IgOgKwy/hsDU+uk4vs4E9Z+YygvOHcP35updsyD40L3T57xnzFK4y' +
'j25LYyDVUOYJMkN6qmCL03UHvwumDYu8xN6jcm6I4oN5XkbXB zHub' +
'MgWPqI99WZXXwCYBLTz6bxGb6hvSfooK8net4rzFC12DG+i1G OFkX' +
'RcSa3TOTLR7mm55Ki2zqa/y9jeXWTvRktzdUJbP55M40lfc1XPxoi' +
'AZ7qIknSiDxERzmKCtZjKHw4H6c7CJSFy8OC0HprZ+rLwWw2J jAGH' +
'cIrXFCGLdmzIwgp52QnAIWS9m+/wUo0zf4MC5yT1jkPu8WavVJpIB' +
'+lequLmwviCPOXcnRqocCUnkq1VR8iSsb9L2fFLGQjPe23qbh SuFw' +
'yNogumNxec2gxEEsGVOb+fwipCwkAo7tQDdqYINgTRUfYHvBp J7Fb' +
'FEttkhRPv/yQDZ85G89Z9UolrOeUlNar+aCepVO9Pb1FlyhDNmHfW' +
'IDzXU7fNbg+bRqzBvZCXZ0uGWjr4XCZpDQfwjYIPkjndsaYxx sFcp' +
'h/FH2fiqMLrP74mFmytwxh1oCfdnWgnvfX9HR6INfiOMvRLCMd5d K' +
'tIaAYue60cIjH1PQ+zrkNd24ZlowNSSc8ELvnEjsZoe5SJOth et1f' +
'lmkrtzR82PlviSt+8/13+MhvfYTv0W2+MyNJyrUkrai7qUMx1E1bR' +
'yF/yynkK+ejnOuPmuJ0sReysJ9E6R0nBa3BoqHeJ9rsn7gGC5B17v ' +
'2ppo9MuYRhQp2caY0+hYNv7Zs0pTuCdLxFV6CPAJUh1V2GCcx waF5' +
'WYfRMYAG3OugF39+uVK1qgnL6PbCiEONrDwYzcBn/AuTwBIx35/hi' +
'MWMB/TI8beZzitGTEp2N9zrDh0bK+Sj6CRiMutjLKeG1bq+8QpKBO' +
'tJ5UHHxGPbt4ttJYAM6H3WaxHKN5ZArOvsNDMtmtzjHLORe5+ Xc5b' +
'oZszJ0KJsc3sUEv2XugTau9CJFUI/yUACPab2Ur0jc5A8kyd7CL9z' +
'lI0EJ+VhbOTQ89zbkQiQuq5kG4w18ketF3/g4lu/93eSVng+9E4Zf' +
'tRxHFSOy54GMCjtEazFnIlC2bF+yHvw+z/sbvaaXwnC/K2bMM5ArT' +
'MbecodXsS/NWfbGPM7ajXFpdwLInCEQ7JgkXaB5Tty6nVdqBtMquj' +
'O+YNqnC3lIrr0622q9EEvjgwJb3QOFYPw8q6ux5GEuLsOFKKY h7al' +
'odkqYHZxtY88MsQi9U7lZEHzmmoLi3xly6r5pMgj2MyVgOmbF 95v2' +
's/qpC1kH8CDxCJYOZzeKTU1vQsJj2g7hZLuTEZC8m3MJuEUARfTb 4' +
'Kw/gEyjz7yZ2qI8ZLVeAHlCk6Hlr7BBvQ7CumAOx/E54G2YjVF0sk' +
'B0m3kpxnWgtXYbJszQf++7XktlYTIx+4iwA6V1laBLjU6ofSY zjjy' +
'HTQ8WgOvdhWFPlcn8wMScy6QKg0X/K/SmSwsE7MdGdWnLwB6tA4Gg' +
'cLuYpZDH3w5O2Uv2PEnf8qjOYlyyjmZBOo2hdO5VHTaAfmS5l nDdl' +
'pjJ2cwhDkkdGusgyqCFjXmWfSNnsRwp5jQaG5+tLb7sAkswPi XMJc' +
'r26nJJiJGpJFkYht8RC3UffAzDQwPdK72sxLzF4M7H4gq1+J9 cAvA' +
'IVoC2d5dgrnql2gIHVN4rh1rhXRpLpmtmq63L55dyHu/kgGo2KWDh' +
'NNadrWVcu7WkmGyzOI7PE7xNgTRmRmLDROg4FWySJBfZ2nowQ yd9h' +
'Nq62LkMf0Q1PqzYLhKHCy0/i7VsD0PkWruR75hvYzTzdXpgTlq7JQ' +
'0I9kgD2M1pDbAfC4EH1oZGIWu3v2THpx97DA13TLrsYzlKdXm UzxT' +
'OTPMHjJTTXHJmiY3aoFjpFa8yZzYcKJfpUdfvrL1F+UnE8RXH MoBM' +
'NJ/zeF3qtZzS+sHs83AVG4dNlV+tbyixs9CiOL7GJMDqhQnl/8W/s' +
'qzyBr24WYPFY9RmJwsHBta1ZcrTYA7/jm4YQBOd/tfdSfyFWWQ7qL' +
'CGE74OrrFLvosicZKBa4cF8cieGO9H0WGocq0fogk2iEON6O6 Hd09' +
'aAFoTprY2lCmYmbPUrQubk9Y2NjwOoBp2mJtzLo2S9J1ef+Vk v+zd' +
'ow8QSGMh+Ma58QkzRqXX2FKnjGTNyyKabPsyEcOXtX5EqftTM SLyQ' +
'fSQtsz4PL4a1qovhPrgQ/Yv5hh8GGuvpuFGpZD7ahDsJnie50IwTO' +
'76p+9vdvHxqjN0zfooSf7TouMrQ98o+iZNA1N1+gkzFrPENa0 luKp' +
'OdM3dyJ5mGGK2Jfa4qD/nNhcXiOMbnle95McFi1M2P9WtoZl2mfnM' +
'hTvLBh3dj15RLAxyYpns3GlWQoxja+iuT/p2+WGg+S9svTWdrpV3s' +
'UzARXbm3AqtzVetD8fxmaq/jiWw1GtCF5vX8zbwdc5FnFjLDQfFZm' +
'KbnGOh6NuRGORNaFJqxm+p0erk+/UC4Sa7NLD0+h1kGGtxl8dVAey' +
't3aT1E8wbv9faV1gmczktP7F8HVVSqlcysXsU7+UHRIDqCYdy eQaA' +
'TJR6gAw4hR6AHk9E0FsylZWV7zucybP4HuYPzhfSCYfL1tk1o +FOU' +
'1Mp32jdq39tUt4NKUczZBOLx1X3CRizmpla+Orf+azzOUaOqh NThr' +
'7IcM1VAC3WIPd4EK7++lc+jVQVVHisPTzLwvkLLEnogs0UJkb Ldyr' +
'b8O639p3UE9VBuCEs0/iK1Trt7B7fRcRZ5wru/gNwxbqqg2H4OUxC' +
'Co338PdKu2PMKgh2uf5InMDnziGMP9kQ+ELny3yaavSI6z2eO ZHRv' +
'Crd/UXNkwnDY1AEzCPaU7RRrWbl5jY2SVjeR1wlWSLkG+QiC91/eB' +
'8CNmreWGmvCuFPFTPUtSSls32/Ug83/tUFmopotkjaS3H3TT63ieI' +
'NmU0bDfbUsxDvLFUL0ma5G+q7d5S6B/c/CD5u9OG2uiRZW/GS64YB' +
'JgqC/VhXEHxIcDgIYpYdtP7BtoHlPL0w/DfTgWoWxZOXZ/I53YOs8' +
'F1LeJkLR7nedD1G39iReFRVyc8m7Z+wjdIQrR9gGdR67K1Scw FlIR' +
'U97zX2qXAl27LahmtI/mw0ihVV82izzKCDbh4wCVsrrKFd3O58s2k' +
'facW/DHd/p72j2M31AT7tF2A/XQocg79eHP/CNwtufXupbM9ugurP' +
's2ONkHBtSDFnMEuOZmi1qNxDA+qbGrwvdncXYiwdqiOz8gR3O 03G9' +
'pxeYBl7xIqwxeVOPyluYU/mz6hYG94fugQLEITANFxaNt7MGXgS1E' +
'E+71i5mxwRzhxMgPkb03viOOEs8VbrAgCzhWxQsAR4Dxai4zj IbSK' +
'lisdJ0cZUBEj1e7bMZp65JY8Ufy+mMOFusGP5Y+TfhfhhLwuI uFku' +
'Rb/+rxvzDH7XlV8RgFnculpqrjNuOYrvhaR1iIX9UnYxc+9C5kr/h' +
'w4xn9pzsFLztV7eWXiWd9v14rsNezMEMJiP+5xooiW4YPMT52 gK+5' +
'K35BZRdwwj1t3ApNOneRDXmft0ma99XUlP5JDv72RPiXPYFpx aE4X' +
'Pomi3OqX1Q2G4D0ZxM+8a0HCe1usvbUk5hl3+vqYhgz2/3pf88w0T' +
'+JSVfYe5nJvQ/sCBzNzIk6Kp+JjLhzBSsq68OL4WBLutfQs/+Eu28' +
'Q5ETS1pg4/hP+HzkNV5mk4w130zZtv8JtRY21y6gj9pzlKWRCZj+/' +
'CLk5q1GyMYQ8QduAGoiYMDTjbmec97lc1elmI36CZNWHs1nKi gV+p' +
'3BNgN4o75V7c7/eBOEOOGD/n+O9a+UVTA9inCPXdd2Rurlfs/VkgA' +
'rw==');

Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, 90, 15);
FreeBitmap(Pic);
end;

Procedure OnScreen;
Var
XPH,RPH,TTB: Integer;
begin
if (Exp < 1) then
Exp := 1;

XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
RPH := Round((Runs * 3600) / (GetTimeRunning / 1000));
TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

SMART_DrawTextMulti(True, True, ['Version '+Version+' (by Flight)',
''+MsToTime(GetTimeRunning, Time_Abbrev),
'Runecrafting XP: '+IntToStr(Exp)+' ('+IntToStr(XPH)+' / hour)',
'XP to next lvl: '+IntToStr(XPToLvl-Exp),
'Load done: '+IntToStr(Runs)+' ('+IntToStr(RPH)+' / hour)'],
Point(15, 255), SmallCharsNS, 16777215);

SMART_DrawTextMulti(False, True, ['Time till break: '+MsToTime(TTB,Time_Bare)], Point(575, 445), SmallCharsNS, 65280);

DrawLogo;
end;

Function IsMoving_F: Boolean;
begin
Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
end;

Function RunesMenu: Boolean;
var
X,Y: Integer;
begin
Result := FindText(x, y, 'light', UpCharsEx, 145, 275, 360, 315);
end;

Function UsingQuickPrayers: Boolean;
Var
X,Y: Integer;
begin
Result := FindColorTolerance(X, Y, 9154193, 710, 75, 730, 85, 20);
end;

//By Bandland100, modified to shift mouse speeds after every step
procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,la stDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;

case Random(50) of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
end;
if (W < 1) then
W := 1;

if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));

step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;

if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));

MouseSpeed := MSP;
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));
SuperWindMouse(X, Y, X2, Y2, 9, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Procedure ActivateQuickPrayer;
begin
if UsingQuickPrayers then Exit;

HumanMMouse(723, 70, 10, 10);
ClickMouse2(True);
end;

Function LowPrayer: Boolean;
begin
Result := FindColorTolerance(X, Y, 255, 740, 70, 760, 80, 10)
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);

if ((Ident = 1) or (Ident = 2) or (Ident = 5) or (Ident = 6)) then
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMCX+10, MMY2, 10)
else
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 10);

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 10, 10);
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], 16382969, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (white)
else if (Ident = 2) then
FindColorsTolerance(ATPA2[i], 1244922, B.X1, B.Y1, B.X2, B.Y2, 5) //Altar (yellow)
else if (Ident = 3) then
FindColorsTolerance(ATPA2[i], 2413294, B.X1, B.Y1, B.X2, B.Y2, 5) //Bank
else if (Ident = 4) then
FindColorsTolerance(ATPA2[i], 2370858, B.X1, B.Y1, B.X2, B.Y2, 5) //Hunter
else if (Ident = 5) then
FindColorsTolerance(ATPA2[i], 1787389, B.X1, B.Y1, B.X2, B.Y2, 5) //Big arrow
else if (Ident = 6) then
FindColorsTolerance(ATPA2[i], 2763504, B.X1, B.Y1, B.X2, B.Y2, 5); //Dungeon
Result := (Length(ATPA2[i]) > 0);
if Result then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Function NearSymbol(Which: Integer): Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(Which, X, Y, D);
end;

Function AboveGround: Boolean;
var
X,Y,D: Integer;
begin
Result := FoundSymbol(4, X, Y, D);
end;

Function NearLadder: Boolean;
var
X,Y,D: Integer;
begin
Result := False;

if FoundSymbol(6, X, Y, D) then
begin
Result := (D < 15);
Exit;
end;

if FoundSymbol(1, X, Y, D) then
Result := (D < 15);

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)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

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, 800) then
begin
Result := True;
ColorToleranceSpeed(CTS);

if DeBug then
SMART_DrawBox(IntToBox(X-Bounds, Y-Bounds, X+Bounds, Y+Bounds));

GetMousePos(X, Y);
Exit;
end;
end;
end;
end;
end;

Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
Var
h, s, t: Extended;
I,II : integer;
HSLColor : Array[1..3] of Extended;
HSL : Array[0..1] of Array[1..3] of Extended;
begin;
For I:= 1 to 3 do
begin;
HSL[0][i] := 255;
end;

For I:= 0 to High(Colors) do
begin;
ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
For II:= 1 to 3 do
begin;
HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
end;
end;

H := (HSL[1][1] - HSL[0][1]);
S := (HSL[1][2] - HSL[0][2]);
T := (HSL[1][3] - HSL[0][3]);

try
HueMods := (H/T);
SatMods := (S/T);
Tolerance := Round(t);
except
HueMods := 0;
SatMods := 0;
Tolerance := Round(0.0);
end;

Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
end;

Procedure SetPrayers;
var
X,Y,X2,Y2,T,T2: Integer;
PPoint: TPoint;
label
MoveM;
begin
{Right-click prayer icon}
HumanMMouse(724, 70, 8, 8);
ClickMouse2(False);
WaitOption('elect', 400);

{Wait for the quick-prayer selection menu}
MarkTime(T);
repeat
if TimeFromMark(T) > 5000 then
Exit;
if FindColorTolerance(X, Y, 8499692, 610, 445, 630, 465, 10) then
break;
until(false);

{Determine the player's prayer type & choose the right protection prayer}
if (FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) or FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230)) then
begin
if FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) then
PPoint := Point(671, 274)
else if FindText(X, Y, 'rayers', StatChars, 630, 200, 690, 230) then
PPoint := Point(670, 343);

{Check if prayers are already set}
if not FindColorTolerance(X2, Y2, 461806, PPoint.X-10, PPoint.Y-10, PPoint.X+10, PPoint.Y+10, 10) then
begin
MoveM:
if not LoggedIn then Exit;

HumanMMouse(671, 274, 4, 4);

if WaitUpText('elect', 400) then
begin
ClickMouse2(True);
Wait(RandomRange(175, 350));
end else
goto MoveM;
end else
Writeln('Prayers already selected');

{Hit confirm}
HumanMMouse(645, 456, 15, 5);
ClickMouse2(True);
end;

{Wait for the prayer selection to be confirmed}
MarkTime(T2);
repeat
if TimeFromMark(T2) > 5000 then
Exit;
if (not FindText(x, y, 'urses', StatChars, 630, 200, 690, 230) and (not FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230))) then
break;
until(false);

OptionsSet := True;
Gametab(Tab_Inv);

Writeln('Quick-prayers set');

end;

Function TeleportOut: Boolean;
var
X,Y,I,DTM: Integer;
Angle: Extended;
label
Start;
begin
Result := False;
ColorToleranceSpeed(1);

DTM := DTMFromString('mWAAAAHicY2FgYNjGxMCwhQlCbwZiRkYGhj 9AcQ4g/R9IW1tbMRjqnmS4eMiT4fXrVwz8QDFkzISGQQAAddcLnQ==');

Start:
if not LoggedIn then Exit;
Gametab(tab_Magic);

if FindDTMRotated(DTM, X, Y, MIX1, MIY1, MIX2, MIY2, (-Pi/4), (Pi/4), (Pi/60), Angle) then
begin
I := 0;
HumanMMouse(X, Y, 7, 7);
ClickMouse2(True);
Gametab(tab_Inv);
HumanMMouse(580, 115, 15, 15);

if not WaitFunc(@AboveGround, 100, 6000) then
Exit;

end else
begin
Inc(I);
if (I > 3) then
Shutdown('Failed to find spell DTM')
else
begin
Writeln('Failed to find spell '+IntToStr(I)+' time');
FindNormalRandoms;
Gametab(tab_Magic);
Wait(RandomRange(125, 275));
goto Start;
end;
end;

Result := NearSymbol(4);
SetRun(True);

FreeDTM(DTM);
end;

Function FindLadder(Var X, Y: Integer): Boolean;
var
B: TBox;
Loop: Boolean;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
label
Start;
begin
Result := False;
Loop := False;

Start:
FindNormalRandoms;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(130, 170, TPA, 3029573, MSX1, MSY1, MSCX, MSY2, 15)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 20, 20);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(130, 170, ATPA2[i], 921102, B.X1, B.Y1, B.X2, B.Y2, 15)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;
end;
ColorToleranceSpeed(CTS);
if Loop then
goto Start;

end;

Function FindChaosAltar(Var X, Y: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3685505, MSX1, MSY1, MSX2, MSY2, 20)

if Length(TPA) < 1 then
begin
ColorToleranceSpeed(CTS);
Exit;
end;

ATPA := TPAtoATPAEx(TPA, 30, 30);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);

for i := 0 to L do
begin

B := GetTPABounds(ATPA[i]);
with B do
begin
FindColorsSpiralTolerance(MSCX, MSCY, ATPA2[i], 11908541, B.X1, B.Y1, B.X2, B.Y2, 20)
if Length(ATPA2[i]) > 0 then
begin
ColorToleranceSpeed(CTS);
MiddleTPAEx(ATPA2[i], X, Y);
HumanMMouse(X, Y, 5, 5);
Result := True;
Exit;
end;
end;

end;
end;

Function WalkToLadder: Boolean;
var
X,Y,B,Dist: Integer;
label
Start;
begin
Result := False;

if AddRun then
begin
B := Round(GetXPBarTotal);
Inc(Runs);
IncEx(Exp, (B-OldXP));
IncEx(Exp_C, (B-OldXP));
OnScreen;
AddRun := False;
end;

Start:
if not LoggedIn then Exit;
FindNormalRandoms;

if FoundSymbol(6, X, Y, Dist) then //Dungeon
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if FoundSymbol(1, X, Y, Dist) then //Altar
begin

HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(RandomRange(755, 910));
HumanMMouse(255, 210, 30, 30);
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

if NearLadder then
begin
Result := True;
Exit;
end else
goto Start;

end else if ((not NearSymbol(6)) and (not NearSymbol(1))) then
begin
Writeln('Failed to find symbols, static walking');
Mouse(580, 120, 4, 4, True);
Wait(RandomRange(255, 360));
if FlagPresent then
FFlag(0)
else
While IsMoving_F do
Wait(1);
goto Start;
end;

end;

Function HandleAltar: Boolean;
var
A,B: Boolean;
X,Y,T,I: Integer;
label
Start;
begin
Result := False;

if not LowPrayer then
begin
Result := True;
Exit;
end;

A := False;
B := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
if not LoggedIn then Exit;
FindNormalRandoms;

if FindChaosAltar(X, Y) then
begin

if WaitUpTextMulti(['ay-at', 'aos alt'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOption('ray-at', 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

B := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindChaosAltar(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin
While IsMoving_F do
Wait(1);

ActivateQuickPrayer;

Result := True;
Exit;
end;

end;

Function HandleLadder: Boolean;
var
A,B,C: Boolean;
X,Y,T,T2,I: Integer;
label
Start;
begin
Result := False;
A := False;
B := False;
C := False;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Start:
MarkTime(T);
repeat
FindNormalRandoms;

if FindLadder(X, Y) then
begin

if WaitUpTextMulti(['limb', 'mb L', 'adder'], 400) then
begin

ClickMouse2(True);

if DidRedClick then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end else
begin

ClickMouse2(False);
if WaitOptionMulti(['limb', 'b L'], 500) then
begin
if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
B := True;
break;
end else
begin
C := True;
break;
end;

end;
end;

if (TimeFromMark(T) > 7000) then
begin
A := True;
break;
end;

until(false)

if A then
begin
if NearSymbol(3) then
begin
Result := True;
Exit;
end;

Inc(I);

Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
FFlag(0);
While IsMoving_F do
Wait(1);

if (I > 3) then
begin
if not FindLadder(X, Y) then
begin
if TeleportOut then
begin
Wait(RandomRange(2100, 2600));
I := 0;
Exit;
end;
end;
end;

Wait((RandomRange(600, 775)));
goto Start;

end;

if B then
begin

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 5000) then
Exit;
if NearSymbol(3) then
break;
until(false)

Result := NearSymbol(3);
end;

if C then
goto Start;

end;

Function BankToAltar: Boolean;
begin
Result := False;

//No more walking east!
if not InvFull then Exit;
if NearSymbol(4) then Exit;

SetRun(True);

case RandomRange(1, 2) of
1: SPS_WalkPath(Path_ToAltar);
2: SPS_WalkPath(Path_ToAltar2);
end;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);

Result := True;

end;

Function FindBanker(Var X,Y: Integer): Boolean;
var
TPA,PBox: TPointArray;
i,a,CTS: Integer;
ATPA: T2DPointArray;
Cols,Tols: TIntegerArray;
HMods,SMods: Array of Extended;
begin
Result := False;
if not LoggedIn then Exit;

PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
CTS := GetColorToleranceSpeed;

if BankScreen then
begin
Result := True;
Exit;
end;

Cols := [5929086, 5992822, 5995648, 6585989];
Tols := [9, 7, 10, 7];
HMods := [0.15, 0.06, 0.19, 0.09];
SMods := [0.46, 0.11, 0.39, 0.17];

for i := 0 to High(Cols) do
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HMods[i], SMods[i]);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Cols[i], MSX1, MSY1, MSX2, MSY2, Tols[i]);
ColorToleranceSpeed(CTS);

TPA := ClearTPAFromTPA(TPA, PBox);
if (Length(TPA) > 0) then break;

end;

if (Length(TPA) < 1) then Exit;

ATPA := TPAToATPAEx(TPA, 40, 40);
SortATPAFrom(ATPA, Point(MSCX,MSCY));

for a := 0 to High(ATPA) do
begin

MiddleTPAEx(ATPA[a], X, Y);
HumanMMouse(X, Y, 15, 15);

if WaitUpTextMulti(['niola'], 400) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end;

end;

end;

Function OpenBankEniola: Boolean;
var
X,Y,T,T2: Integer;
GoOn: Boolean;
label
Start;
begin
Result := False;
GoOn := False;

Start:
if BankScreen then
begin
Result := True;
Exit;
end;

FindNormalRandoms;
if not LoggedIn then Exit;

if FindBanker(X, Y) then
begin
GoOn := True
end else
begin

if SPS_PosOnMM(Point(160, 535)) then
SPS_WalkToPos(Point(160, 535));

While IsMoving_F do
Wait(1);

goto Start;
end;

if GoOn then
begin
ClickMouse2(False);
if not WaitOptionMulti(['ank', 'nk E'], 500) then
goto Start;

While IsMoving_F do
Wait(1);

MarkTime(T);
repeat
FindNormalRandoms;
if (TimeFromMark(T) > 3000) then
Exit;
if RunesMenu then
break;
until(false);

if RunesMenu then
begin
HumanMMouse(MPoint.X, MPoint.Y, 7, 7);
ClickMouse2(True);

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 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;
end;

Result := BankScreen;
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
'trout' : DTM := DTMFromString('mlwAAAHicY2dgYCgD4kIgzgbiAiCuAOJaIG 4EYhUgVgRiTSDWBWJtqJg8EGfERAJJJqxYDkjiwox4MBQAALdh Bks=');
'tuna' : DTM := DTMFromString('mlwAAAHicY2dgYFAAYikgFgFiCShfHYh1gF gFiOWBWA2I9YBYFyonC8QpEWFAkgkrFoGahw0z4sFQAABkyQOa ');
'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
'swordfish' : DTM := DTMFromString('mlwAAAHicY2dgYGhmZGDoBuKJQNwHxJ2MEL FyIJZhgGAFIFYCYmUglofSzTFdQJIJK+YCknI4MCMeDAUA/+8G2A==');
'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB +Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAA Z90L0w==');
'shark' : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1g fiEqBcAxBXA3EzEJcCcQsQd+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);
if WaitOption('Eat', 300) then
begin
Wait(RandomRange(705, 815));
MarkTime(T);
Inc(FoodC);
end;
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', 400);
Wait(RandomRange(425, 675));
end;

FreeDTM(DTM);
end;

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

ColorToleranceSpeed(1);
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
HumanMMouse(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, mouse_right);
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
ABMP,CBMP,X,Y: Integer;
begin
Result := False;
if not LoggedIn then Exit;

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

ColorToleranceSpeed(1);

ABMP := BitmapFromString(7, 7, 'meJy7efPxzZuPCwvLiosrSkurboK5' +
'EJSfXwIRh4tk5xTk5hUhq8nIyMnKykMWAaK0tCw0EWRDIAhoD tBwN' +
'HMgggArDGec');
CBMP := BitmapFromString(7, 5, 'meJyTvXBJFoaKiytKS6sg7Ny8IiDK' +
'zy8pLCyDiGRk5GRl5WXnFEDEIYJpaVlwcbg5KSkZEHEgggsCA OmnNDQ=');

if FindBitmapToleranceIn(CBMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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 FindBitmapToleranceIn(ABMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) 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;
FreeBitmap(ABMP);
FreeBitmap(CBMP);

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, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

end else if (Method = 2) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

end else if (Method = 3) then
begin
//Small pouch
if not (SS = 0) then
begin
MouseItem(SS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

//Medium pouch
if not (MS = 0) then
begin
MouseItem(MS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

end else if (Method = 4) then
begin

//Large pouch
if not (LS = 0) then
begin
MouseItem(LS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

end else if (Method = 5) then
begin

//Giant pouch
if not (GS = 0) then
begin
MouseItem(GS, mouse_move);
Wait(RandomRange(20, 75));
if (Seq = Fill) then
begin
ClickMouse2(False);
WaitOptionMulti(['ill', 'Fill'], 400)
end else
ClickMouse2(True);
end;

end;

Result := True;
end;

Function FindDecayedPouch(Var Slot: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
Hmod,Smod: Extended;
L,i,Tol,CTS,Col,X,Y: Integer;
ATPA: T2DPointArray;
begin
Result := False;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
ReturnValues([3422525, 3619647, 3751234], Hmod, Smod, Col, Tol);
SetColorSpeed2Modifiers(Hmod, SMod);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MIX1, MIY1, MIX2, MIY2, Tol);
ColorToleranceSpeed(CTS);

if (Length(TPA) < 1) then
Exit;
ATPA := TPAToATPAEx(TPA, 18, 18);
SortATPAFrom(ATPA, Point(650, 330));
L := High(ATPA);
SetArrayLength(ATPA, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
if (GetArrayLength(ATPA[i])>10) then
begin
MiddleTPAEx(ATPA[i], X, Y);
Slot := CoordsToItem(X, Y);
Result := True;
end;
end;

end;

Function CheckPouches: Boolean;
var
S: Integer;
begin
Result := FindDecayedPouch(S);
end;

Function ContactScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x, y, 'onest', StatChars, 30, 50, 110, 80);
end;

Function ContactRepair: Boolean;
var
T,T2,T3: Integer;
begin

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

if ContactScreen then
begin
MouseBox(483, 240, 491, 290, 1);
Wait(RandomRange(275, 480));
MouseBox(410, 110, 450, 150, 1);
end;

MarkTime(T2);
repeat
FindNormalRandoms;
if (TimeFromMark(T2) > 6000) then
Exit;
if ClickToContinue then
MarkTime(T2);
Wait(RandomRange(125, 275));
if FindNPCChatTextMulti(['Repa', 'epai'], ClickLeft) then
break;
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,Slot,Spell: Integer;
label
Start;
begin
ColorToleranceSpeed(1);

Start:
FindNormalRandoms;
if not LoggedIn then Exit;

Case Lowercase(Method) of
'spell':
Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6J bYBA' +
'DJlKvQ=');

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

if FindDecayedPouch(Slot) then
begin
Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
GameTab(tab_Magic);
Wait(Random(100));
if FindBitmapIn(Spell, X, Y, 550, 200, 720, 435) then
begin
MMouse(X, Y, 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, mouse_left);
Wait(RandomRange(1575, 2150));
Inc(RepairC);
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
begin
Inc(RepairC);
Writeln('Pouches repaied');
end;
end;
end;
end;
end;

if not FindDecayedPouch(Slot) then
Result := True
else
goto Start;

FreeBitmap(Spell);
end;

Procedure HandleBank;
var
S: String;
T: Integer;
begin

if BankScreen then
begin

Mouse(370, 305, 6, 6, True);

if (HPPercent <= EatAt) then
Eat;

WithdrawEss;

if PP1 then
begin
if HandlePouches(5, Fill) then
WithdrawEss;
if HandlePouches(2, Fill) then
WithdrawEss;
end else
if HandlePouches(2, Fill) then
WithdrawEss;
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 OpenBankEniola then
if WithdrawEss then
if CloseBank then
Exit;

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

end;

end;

Function FindAltar(Var X,Y: Integer): Boolean;
var
TPA,PBox: TPointArray;
i,a,CTS: Integer;
ATPA: T2DPointArray;
Cols,Tols: TIntegerArray;
HMods,SMods: Array of Extended;
begin
Result := False;
if not LoggedIn then Exit;

PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
CTS := GetColorToleranceSpeed;

if BankScreen then
begin
Result := True;
Exit;
end;

Cols := [6514550];
Tols := [9];
HMods := [0.23];
SMods := [0.20];

for i := 0 to High(Cols) do
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HMods[i], SMods[i]);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Cols[i], MSX1, MSY1, MSX2, MSY2, Tols[i]);
ColorToleranceSpeed(CTS);

TPA := ClearTPAFromTPA(TPA, PBox);
if (Length(TPA) > 0) then break;

end;

if (Length(TPA) < 1) then Exit;

ATPA := TPAToATPAEx(TPA, 30, 30);
SortATPAFrom(ATPA, Point(MSCX,MSCY));

for a := 0 to High(ATPA) do
begin

MiddleTPAEx(ATPA[a], X, Y);
HumanMMouse(X, Y, 15, 15);

if WaitUpTextMulti(['-rune', 'unec', 'rafting'], 500) then
begin
Result := True;
GetMousePos(X, Y);
Exit;
end;

end;

end;

Function CraftRunes: Boolean;
var
X,Y,D,F,Seq: Integer;
label
ClickAltar;
begin
Seq := 0;
D := 0;
OldXP := Round(GetXPBarTotal);

ClickAltar:
if not LoggedIn then Exit;
if (D > 4) then
Seq := 3;

if FindAltar(X, Y) then
begin
ClickMouse2(True);
Inc(D);
if not DidRedClick then
goto ClickAltar;

While IsMoving_F do
Wait(1);

if (Seq < 3) then
begin
HumanMMouse(640, 220, 15, 15);
Wait(RandomRange(675, 1125));

While IsMoving_F do
Wait(1);

Wait(RandomRange(105, 165));
end else if (Seq = 3) then
GameTab(tab_Magic);

end else
begin
if (F > 4) then
begin
TeleportOut;
Exit;
end;

Inc(F);
SetRun(True);
BankToAltar;
FindNormalRandoms;
SetRun(True);

goto ClickAltar;
end;

{Handle first set of pouches}
if (Seq = 0) then
begin
if PP1 then //Giant pouch
begin
if HandlePouches(5, Empty) then
Seq := 1;
end else if ((not PP1) and PP2) then //Large pouch only
begin
if HandlePouches(4, Empty) then
Seq := 1;
end else if ((not PP1) and (not PP2)) then //No Giant/Large pouches
if HandlePouches(3, Empty) then
Seq := 3;

goto ClickAltar;
end;

{Handle second set of pouches}
if (Seq = 1) then
begin
if PP2 then //Large pouch
if HandlePouches(4, Empty) then
Seq := 2
else if not PP2 then
if HandlePouches(3, Empty) then
Seq := 3;

goto ClickAltar;

end;

{Handle third set of pouches}
if (Seq = 2) then
begin
if HandlePouches(3, Empty) then
Seq := 3;

goto ClickAltar;
end;

{Exit pouch-handling}
if (Seq = 3) then
begin
AddRun := True;
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 NearSymbol(3) then
begin
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
CloseBank;
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 SuperDuperLooper;
begin
if not LoggedIn then Exit;
FindNormalRandoms;
MouseSpeed := (RandomRange(11, 16));

if NearSymbol(3) then //Bank
begin
if not InvFull then
if OpenBankEniola then
HandleBank
else
Exit
else if InvFull then
if BankToAltar then
if CraftRunes then
TeleportOut
else
While IsMoving_F do
Wait(1)
else
While IsMoving_F do
Wait(1);
end else if NearLadder then //At the ladder
begin
if UsePrayer then
begin
if HandleAltar then
HandleLadder;
end else
HandleLadder;
end else if (NearSymbol(4) and (not NearLadder)) then //Teleport area
begin
WalkToLadder;

if FlagPresent then
FFlag(1)
else
While IsMoving_F do
Wait(1);
end else if ((not NearSymbol(3)) and (not NearSymbol(4)) //We're either at the altar or lost
and (not NearLadder)) then
if not CraftRunes then
TeleportOut;

end;

begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
setupSRL();
DeclarePlayers;

LoginPlayer;
ClickNorth(SRL_ANGLE_HIGH);

SPS_Setup(runecrafting_altars, ['0_1']);
SPS_Continue := True;

LoadVars;
SetupSRLStats(157, SRLStats_Username, SRLStats_Password);
Smart_ClearCanvas;

ToggleXPBar(True);
XPToLvl := XPTillNextLevel(Skill_Runecrafting);

if UsePrayer then
begin
SetPrayers;
ActivateQuickPrayer;
end;

OnScreen;

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;

SuperDuperLooper;

Until(AllPlayersInactive)

end.

Mat
02-23-2012, 04:04 PM
Flight one thing on your SPS Path, you could make your own sps area as such so you can use the path creator to get your points? and make them closer as I found it clicks a point that is stupidly close to it self which a human wouldn't, if you need me to explain more pm me and I'll send you my msn :)
Mat

Note
02-23-2012, 04:11 PM
Gah testing 1.6 , nekminut..Runescape will update in 45 minutes :(

Script Review 1.6 IMO

First of all i like the new repair pouch function :D was lucky enough to get it :) 10 minutes in to the 1.6 testing :D

Repairing pouch > contact spell > WORKS LIKE A CHARM!

Running to the alter is a bit slow bit slow but it has made no diffrence since 1.5 so it allright

Banking "personaly i had no problems with banking before either so yeah"> withdrawing > Filling pouches > running to alter > precices clicking atler and pouches "LEFT CLICKING! <3!" working awsome asz!

Eating to full working just fine and dandy

Teleporting works fine as usuall :) as typing this and watching the script it has been about 15minutes of watching the 1.6 version and i like it :) thank you Flight

http://i39.tinypic.com/2jf16s7.png

If you see in the pic it has xp to next level - something amouts im not sure why it does that O_O but it sometimes is resolved when i stop and restart the script so yeah :) other then that! all is well

Not sure what the runescape update was but the script is still running fine.

Note
02-23-2012, 08:36 PM
Gah testing 1.6 , nekminut..Runescape will update in 45 minutes :(

Script Review 1.6 IMO

First of all i like the new repair pouch function :D was lucky enough to get it :) 10 minutes in to the 1.6 testing :D

Repairing pouch > contact spell > WORKS LIKE A CHARM!

Running to the alter is a bit slow bit slow but it has made no diffrence since 1.5 so it allright

Banking "personaly i had no problems with banking before either so yeah"> withdrawing > Filling pouches > running to alter > precices clicking atler and pouches "LEFT CLICKING! <3!" working awsome asz!

Eating to full working just fine and dandy

Teleporting works fine as usuall :) as typing this and watching the script it has been about 15minutes of watching the 1.6 version and i like it :) thank you Flight

http://i39.tinypic.com/2jf16s7.png

If you see in the pic it has xp to next level - something amouts im not sure why it does that O_O but it sometimes is resolved when i stop and restart the script so yeah :) other then that! all is well

Not sure what the runescape update was but the script is still running fine.

Update , running the script for about close to 1 hour ran into a problem as it comes to the alter it crafts the runes but for some reason at some times it just thinks it still has runes in its inventory and its pouches so it just keeps clicking empty pouch over and over again then it just stands their untill i have to restart script =\

wister1
02-23-2012, 09:34 PM
Update , running the script for about close to 1 hour ran into a problem as it comes to the alter it crafts the runes but for some reason at some times it just thinks it still has runes in its inventory and its pouches so it just keeps clicking empty pouch over and over again then it just stands their untill i have to restart script =\

that bug was already present in 1.5, dunno if it was present in previous versions, has of 1.6, will be testing for some hours, will give my opinion tomorrow

Note
02-23-2012, 10:19 PM
that bug was already present in 1.5, dunno if it was present in previous versions, has of 1.6, will be testing for some hours, will give my opinion tomorrow

that bug never appeard to me in ver 1.5 though O_O

Mat
02-23-2012, 11:00 PM
That bug was never in 1.5, it happens to me too on 1.6.
Mat

Note
02-23-2012, 11:32 PM
That bug was never in 1.5, it happens to me too on 1.6.
Mat

i know why he's saying that.. if you start the script directly from the alter it will do that.. but if you start the script from either the teleport spwan or the bank the script is flawless , but yes overall that bug is only in 1.6 =|

Haider
02-23-2012, 11:38 PM
does simba support randoms yet?

Note
02-23-2012, 11:49 PM
does simba support randoms yet?

What do you mean? hasnt it allways?

wister1
02-24-2012, 12:05 AM
dont had much today unfortunatly, for what ive seen hes banking very well, ive noticed the same has reported, at altar, he thinks theres still pure ess in pouches and keeps trying to empty them... maybe you should make it only click once in the pouches avoiding clicking more than that

will run for more time tomorrow, too much work today at college...

Flight
02-24-2012, 12:44 AM
Ok, so the banking seems to work fine now, contact repair is back up and running, so I can check those two off the list. I'll do another slight modification to 1.6 to stop that spam-crafting. Not thinking, I made the failsafe local in the CraftRunes procedure, I should have made it global.

Note
02-24-2012, 02:53 AM
i stopped using 1.6 as it was a beta version so i took the Repair pouch function and the banking function also the left clicking function of emptying pouches and put it in the 1.5 version so it works fine for now ;)

Flight
02-24-2012, 03:49 AM
Version 1.6 released.

More accurate banker-finding
Update pouch-handling
Updated Contact-Repairing
Air & Water runes now supported for the 'payment rune'
Updated altar-finding
Slightly faster rune-crafting
Absolute failsafe to prevent spam-crafting at the altar


Lemme know how it works for you fellas. :)

Note
02-24-2012, 05:35 AM
Thanks Flight , will post proggys for 1.6 in 1hour :D

afastngr
02-24-2012, 07:02 AM
Script working fine just taking a while to bank no major issues though

Ezio Auditore da Firenze
02-24-2012, 07:38 AM
Silly question, "have your bank account maxed out (468 items?)" what will happen to the script if its not maxed?

Flight
02-24-2012, 07:47 AM
Silly question, "have your bank account maxed out (468 items?)" what will happen to the script if its not maxed?

All of your inventory items will be deposited when it opens the bank. For maxing out your bank I suggest buying 1-3 doses of low level throw-away potions, complete sets of low level armor, and complete sets of mystic. These are idle to use so when you need the bank space once again just head to the GE and re-package them. For potions, just decant them into single vials to free up space.

Ezio Auditore da Firenze
02-24-2012, 08:21 AM
All of your inventory items will be deposited when it opens the bank. For maxing out your bank I suggest buying 1-3 doses of low level throw-away potions, complete sets of low level armor, and complete sets of mystic. These are idle to use so when you need the bank space once again just head to the GE and re-package them. For potions, just decant them into single vials to free up space.

dammit, gotta fill up 206 spaces! Thanks though :) look forward to using the script.

Note
02-24-2012, 10:16 AM
Status: /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
Status: | SRL Randoms Report |
Status: | www.villavu.com |
Status: |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Status: | Pillory's Solved : 1 |
Status: | Reward Box Solved : 1 |
Status: \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/
[=======================================]
[ ZMI-Extreme 1.6 ]
[ by Flight ]
[=======================================]
[ Run Time : 4 Hr 42 Min 32 Sec ]
[ Exp Gained : 170358 ]
[ Loads Completed : 201 ]
[ Monkfish Ate : 59 ]
[ Pouches Repaired : 0 ]
[ Breaks : 0 ]
[=======================================]
[ ZMI-Extreme 1.6 ]
[=======================================]

Sogalishis
02-24-2012, 11:17 AM
for somereason in 1.6 i cant get it to use my pouches it just fills them but never uses them at later

afastngr
02-24-2012, 12:02 PM
I'm not sure why but it will do 4-5 runs successfully and then suddenly just fail to bank and just constantly right click stuff lol, like players (in the same spot) forcing me too log off, any clue why this happens?

grumpy ruby
02-24-2012, 12:27 PM
when it goes to empty pouches at altar it empties the giant but clicks same spot on giant to try open the other 3 but doesn't then u click 3 more times on altar and don't craft any more runes then teles you to start

Flight
02-24-2012, 12:42 PM
when it goes to empty pouches at altar it empties the giant but clicks same spot on giant to try open the other 3 but doesn't then u click 3 more times on altar and don't craft any more runes then teles you to start

You're gonna have to talk clear, I can't full understand what you're saying... Also, are you sure you set your 'Pouch Settings'? You might wanna double-check that. One other thing I'd like to know, which pouches are you using when this problem happens?

grumpy ruby
02-24-2012, 12:57 PM
if i only have 1 pouch and set others to 0 it does this same with 2 pouches selected and same if 3 are selected so basically if u dont have all 4 pouches it messes up

i played with pouch settings and found that putting pouches in slots 1 to 4 was only way it worked for me and putting those figures into the script

Flight
02-24-2012, 01:36 PM
if i only have 1 pouch and set others to 0 it does this same with 2 pouches selected and same if 3 are selected so basically if u dont have all 4 pouches it messes up

i played with pouch settings and found that putting pouches in slots 1 to 4 was only way it worked for me and putting those figures into the script

Yes I've been recommending everyone always have their pouches near the beginning of the inventory because every time a pouch is repaired, either through Contact or Spell repair, the pouch is automatically moved to the first available inventory slot.

grumpy ruby
02-24-2012, 01:39 PM
well this info is not listed on the OP nor in this forum section over placing at the start so glad i figured it out myself also hope u can fix the selection bit for those without all 4 pouches cos without all 4 its very robotic

Flight
02-24-2012, 03:28 PM
well this info is not listed on the OP nor in this forum section over placing at the start so glad i figured it out myself also hope u can fix the selection bit for those without all 4 pouches cos without all 4 its very robotic


Actually, I've made three posts as I recalling recommending people to put their pouches near the top of the inventory. Infact, by default, the pouch settings I use are already at the top of the inventory. So yes, the 'info' is listed & suggested in multiple areas.

Also: "hope u can fix the selection bit for those without all 4 pouches cos without all 4 its very robotic".... Elaborate on this please. What do you mean by 'selection bit', and what is very robotic? I asked previously only that one is to be detailed in any bug reports; this is a very simple task. Come back when you can achieve it.

Note
02-24-2012, 04:20 PM
Version 1.6 - i posted a proggy earlier for it was working fine but , this morning when i woke up .. i belive my charactor may have stood there right clicking the bank for more then 1hour i presume , im not sure why this happend , if any one else has had this please post, like i stated before i had no porblem with the banking in 1.5 so im just going to use that function in 1.6.

Mat
02-24-2012, 04:42 PM
Flight Here are the Problem I've been having with 1.6 <3:

Clicking Large Pouch twice.

Once on the pouch Once on the Altar and repeated twice.

Repeating crafting.

It crafts all pouches but keeps repeating endlessly none stop.


Only two bugs I've found.
Positives

Better Banking <3
NPC Contact fixed <3
One Click Pouches <3

Love the script :)
Mat
E:Testing New version :D Just seen OP :P

grumpy ruby
02-24-2012, 04:44 PM
I love your script don't get me wrong setup right its flawless ill post 6 hour proggy later for u but heres what i found

in your scipt version 1.6 you wrote this in it which clearly isn't the first few slots in your inventory even if u have the runes in the first 3 slots this didn't work for me

//Pouch settings
SS = 7; //Which slot # has your small pouch (0 for not using)
MS = 6; //Which slot # has your medium pouch (0 for not ing)
LS = 5; //Which slot # has your large pouch (0 for not using)
GS = 4; //Which slot # has your giant pouch (0 for not using)

if i put any 0's instead of the slots number then the script tries to empty the same pouch that u do have 4 times after each click on the exact same spot it then clicks the altar to try and craft more runes which it doesn't have then it clicks the exact same spot again and repeats till it thinks it has emptied all 4 pouches then it teles u and carries on as normal this clicking on the same spot is what i mean by robotic humans would find it difficult to click exact same spot 4 times

Mat
02-24-2012, 07:11 PM
Made a different Path, with more points :)
Mat

Note
02-24-2012, 07:31 PM
Made a different Path, with more points :)
Mat
erm im not sure what your meaning but for some reason its clicking to go to the long path and just spam clicks the lava O_O this is happning in 1.5 and 1.6 O_O restarted the script like 10x now still haveing the same problem

Mat
02-24-2012, 07:35 PM
Well What I mean is I created ZMI as its own SPS area which allowed me to use Path creator to make a path with many points so it can choice its furthest easier, 32 Point path in stead of 8 I think it was:)
I had that problem you sure the SPS Tol is on 0.5?
Mat

Note
02-24-2012, 07:45 PM
Well What I mean is I created ZMI as its own SPS area which allowed me to use Path creator to make a path with many points so it can choice its furthest easier, 32 Point path in stead of 8 I think it was:)
I had that problem you sure the SPS Tol is on 0.5?
Mat
O_O hehe mat im sure you did something fantastic xD * i have no clue what you said.* p.s thank you i just checked tol and somehow it came back to 0.2 O_O dont know how but yes thanks for letting me know again.

E- so im just curious , with what you just said does that mean he will run a lot quicker to the alter?

wister1
02-24-2012, 08:01 PM
testing the new version, will give my opinion later :D

Note
02-24-2012, 08:14 PM
testing the new version, will give my opinion later :D

Off topic sorry , wister how long did it take you to get from 70-91 runecrafting? O_O

Mat
02-24-2012, 09:04 PM
Big Man Well with the path its alot easier for him to walk I found sometimes it had to click a point really close to him self, but with 32 it allows it to have more choice of where to walk :) Just personal preference :)

wister1
02-24-2012, 09:35 PM
Off topic sorry , wister how long did it take you to get from 70-91 runecrafting? O_O

hmm like 2 weeks or so, but i use script for like 6-8hrs 2-3 days a week and 2-3hrs in the other(before going to bed)

ps: i dont know if it happens to others but hes taking some time to find the bank, clicking in the map when the banker is on screen

Note
02-24-2012, 09:40 PM
Big Man Well with the path its alot easier for him to walk I found sometimes it had to click a point really close to him self, but with 32 it allows it to have more choice of where to walk :) Just personal preference :)

ohk haha xD , is the codes only for u ;)? xD

Note
02-24-2012, 09:42 PM
hmm like 2 weeks or so, but i use script for like 6-8hrs 2-3 days a week and 2-3hrs in the other(before going to bed)

ps: i dont know if it happens to others but hes taking some time to find the bank, clicking in the map when the banker is on screen
oh haha i run it everyday O_O im tryna get 99 asap lol , erm yes it has done that to me sometimes , it like stands there for a while till the banker actually is around him or withing clicking range then he clicks but some times he clicks on the mini map a lil further up so he can see the banker so yeah ..

Mat
02-24-2012, 10:00 PM
One tip Big man uses the edit button or multi quote, Well its hard for me to just post it as it involves you changing the SPS file alot more than changing the tolerance, its not just copy my path and off you go. :/ I could explain if you really wanted.

Note
02-24-2012, 10:55 PM
One tip Big man uses the edit button or multi quote, Well its hard for me to just post it as it involves you changing the SPS file alot more than changing the tolerance, its not just copy my path and off you go. :/ I could explain if you really wanted.

Oh ok, sorry mat about the quoteing's erm , no you shouldn't explain it to me as im not that educated in program talkings or scripting knowledge , all i can do is just "fiddle" witha pre-written script and edit it a little to my likeing or sometimes if its easy i would try solveing some bugs. but thats about it, but thanks for replying :).

Edit- so saying copy one of the pre made sps area's " the 500x500 picture for zmi alter?" or am i completly off

Mat
02-25-2012, 12:47 AM
Well Tbh its not that hard, all you have to do is copy one of the pre made sps area's in sps.simba and modifiy it to suit yours.

Note
02-25-2012, 01:36 AM
Here i have attached a short clip of this bug i have found, could have just typed it but, it wouldnt have made sence so i just used a camstasia to make a short clip.
Virus scan if your in doubt http://virusscan.jotti.org/en/scanresult/92eb9e1af72d7f21af9b40732dcdd494ce22f2ac
14340 <--- Video clip

Brow
02-25-2012, 03:21 AM
I like the one-click method for emptying pouches in the new version, Flight... Just started using 1.6 now so hopefully a nice proggy soon enough :)

Just out of curiosity is there any way that it's possible to make it display XP/hour even with my XP Counter on "Lots!"? Lol... I mean I can get a rough estimate as to what it's getting for the fact that it shows Trips/hr but it'd still be nice to see XP lol... Thanks

-Brow

Flight
02-25-2012, 03:29 AM
I like the one-click method for emptying pouches in the new version, Flight... Just started using 1.6 now so hopefully a nice proggy soon enough :)

Just out of curiosity is there any way that it's possible to make it display XP/hour even with my XP Counter on "Lots!"? Lol... I mean I can get a rough estimate as to what it's getting for the fact that it shows Trips/hr but it'd still be nice to see XP lol... Thanks

-Brow

Hmmm, well someone once said there are multiple XP counters now, so if you can use one of those and reset it to 0 then it should work fine. Otherwise the only other way is to have the script manually check your exp via the Runecrafting skill tab, very un-human...

Andres
02-25-2012, 04:00 AM
Another great script Flight.

I've been using this all day, and it is amazing. Absolutely flawless.

Between this, your heavy rodder, and your granite miner, you are far and away my favorite scripter!

Thanks so much for this awesome script.

Edit: There is one small thing. It will only use the Repair Rune Pouch Spell if Cosmic Runes are located in the first tab by the Pure Essence. If the runes are in a different tab, it will make room for them in your inventory and go to the spell list, but it won't actually withdraw them and use the spell. It might be worth noting in the OP that Cosmics need to be in the first tab if you're using the spell, sorry if you mentioned it somewhere and I overlooked it.

Flight
02-25-2012, 04:18 AM
Edit: There is one small thing. It will only use the Repair Rune Pouch Spell if Cosmic Runes are located in the first tab by the Pure Essence. If the runes are in a different tab, it will make room for them in your inventory and go to the spell list, but it won't actually withdraw them and use the spell. It might be worth noting in the OP that Cosmics need to be in the first tab if you're using the spell, sorry if you mentioned it somewhere and I overlooked it.

Well I sure feel dumb... In all of my Runecrafting scripts I mention that your repair runes must be visible at the top of the first bank tab, why in the world did I not mention it here?... :duh: Added to the list, thank you Andres. :)

Andres
02-25-2012, 06:25 AM
Well I sure feel dumb... In all of my Runecrafting scripts I mention that your repair runes must be visible at the top of the first bank tab, why in the world did I not mention it here?... :duh: Added to the list, thank you Andres. :)

You bet, glad I could be of service :)