SRL Archive - Unofficial Development

AeroLib Include


Flight

2014-05-17 01:00:16

Version: 2.1
Revision: 1
Last updated: January 27, 2018

GitHub project page


Introduction

The AeroLibrary is designed to aid scripters in writing Simba scripts for Oldschool RS. Based off the SRL-OSR include, I began this simply as a collection of all my modifications implemented throughout, and over time it formed into something completely different. This particular include uses many ideas which could not be included in SRL-OSR as well as numerous revived bits of code.

What to expect

The most obvious is none of the current SRL-OSR scripts will work and it will take some time to update your scripts to run off AeroLib, but I fully intend to write tutorials covering each and every area. There's a lot to explain so please bear with me! Also keep in mind this is only the initial release of AeroLib, it is simply a base only. The advanced updates are yet to come but will be actively worked on.

Features

Major

Minor

Core
  • Realistic mouse-movements throughout the entire include
  • Gametabs reworked with the newest in-game interface
  • World-switcher (in-game)
  • MiniMap routines reworked (some basic map-walking included)
  • Animation-handling through pixel-shift
  • Basic anti-bans
  • Basic banking routines + handling in both standard & tabbed bank modes
  • Standard breaking (by Echo_)
  • Chat-handling & NPC talking
  • Basic interface handling
  • Menu-handling (also built from scratch, handled correctly)
  • Text & OCR (mostly taken from past SRL includes)
  • Timing functions for optimizing script speeds

Requirements

  • Newest Simba (I recommend Simba 1.2-rc6 32-bit version)
  • Plugins: SMART 8.5+, RSText, Layer
  • All newest font files for OSRS (generally included with '07' in their names)
  • WorldListChars07 font set for version 2.1+
[admin]AeroLib is currently not maintained and could be outdated/broken[/admin]
Downloads


How to install

Step 1:
First off download & install the newest Simba, this must be done before anything. Once installed go ahead and switch the interpreter to Lape.



Step 2:
Download the zipped include from the link above, placed the zipped file in your Includes folder and select "Extract here".



Step 3:
Download the zipped Plugins from the link above and extract them all to your Plugins folder (C:/Simba/Plugins/)



Step 4:
If using AeroLib 2.1+ (hopefully everyone by this point), download WorldListChars07 and (the new) StatChars07 font set from above, place the zipped files in Simba's Fonts directory and for each set choose "Extract to WorldListChars07/" / "Extract to StatChars07/" respectively. You'll probably be asked if you'd like to overwrite the previous files in "StatChars07", select Yes to replace your old with the updated fonts.



Step 5:
Run the test script, if you've followed the steps correctly this will compile and run without errors.

program RUNME;
{$DEFINE SMART}
{$DEFINE WALKER}

{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.

Tutorials


F.A.Q.

[Q]: I get an 'Access Violation' error when using this with the OSR-Reflection include
[A]: This is caused by the 'ProSocks' plugin being loaded twice. A quick solution is to remove the plugin-loading code from the Reflection include by deleting these 3 lines from Includes > Reflection > lib > misc > Misc.Simba:

{$IFNDEF Aerolib}
{$loadlib prosocks}
{$ENDIF}

[Q]: AeroLib cannot find Java to spawn SMART
[A]: This is most likely caused by Java being installed in the wrong spot on 64-bit operating systems, or the wrong version of Java. This can be solved by installing 32-bit Java JRE (newest) to your 32-bit Programs directory (C:/Program Files (x86)/Java/). Also don't forget to set your Path with your Java's 'bin' directory. For example, you have JRE 1.8.0_65 installed, you'd set your path to:

C:\Program Files (x86)\Java\jre1.8.0_65\bin
…along with whatever else you have there. And don't forget to always run Simba as administrator!

End note

I'd like to start off with apologizing for the long delay of releasing this, believe it or not it's been in (slow) development since last year. Now as I stated before this is just the base of which I'll be building off of but for now that's all I'm aiming for. More advanced content and major updates will follow in the future that should truly make AeroLib unique. This project is welcome to new ideas and suggestions so if you'd like to see something added or adjusted don't be afraid to inform me. The project will always be free for everyone, I just ask you recognize all the effort which has gone into making this, not just from what I've personally added but from all the SRL developers, as much of this library is based off the original work of the SRL Developers. With all of that out of the way I'd like to assure you that basic tutorials are on the way of writing scripts with AL, although many scripters I imagine will just need to skim through the include a couple times to get the feel of everything; it's really simple and organized for this reason.

Following AeroLib 2.0+, the auto-updater is disabled; I will only manually update the include. So occasionally return to this thread to check if AeroLib has received an update.

Cheerz,
~Flight

Flight

2014-05-17 01:03:26

-Reserved post, just in case.

Brandon

2014-05-17 01:23:03

Get latest simba.
Open a socket.
Query github file for version number.
Download your zipped project from github.
Unzip the file using: https://github.com/MerlijnWajer/Simba/commit/39c4485158d8eb12a9d60f6e774130830dfaff2d#diff-52c051816d6661ce77ce71301432cab5R144


Bam! updater complete.

Hoodz

2014-05-17 06:02:05

Gratz on release flight!

masterBB

2014-05-17 07:58:48

From: Brandon
Get latest simba.
Open a socket.
Query github file for version number.
Download your zipped project from github.
Unzip the file using: https://github.com/MerlijnWajer/Simba/commit/39c4485158d8eb12a9d60f6e774130830dfaff2d#diff-52c051816d6661ce77ce71301432cab5R144


Bam! updater complete.

I don't think it is hosted on github or google code though. There isn't a version control system in place at all when I look at it.

But this looks awesome! Good job! Just wondering, what made you pick pascalscript over lape?

Solar

2014-05-17 08:11:47

Congrats on the release! Seems like a long time coming, but great to see it's here now. Excellent work, will look at it more later.

rj

2014-05-17 08:12:40

Gratz on release, I was wonder when this would finally come out :)

Flight

2014-05-17 08:57:41

From: masterBB
I don't think it is hosted on github or google code though. There isn't a version control system in place at all when I look at it.

But this looks awesome! Good job! Just wondering, what made you pick pascalscript over lape?


Just a version-checker via Pastebin. The include does run in Lape and requires Simba's interpreter set to Lape, but obviously not everything is in that format; is that what you're referring to? Believe me, my intentions are to encourage people to use Lape over PS.

slacky

2014-05-17 12:37:29

Yey, was about time :P I am going to make a slight change (adding a {$IfNDef AeroLib}) to SimbaExt, so it's compatible with AeroLib. Theres only like 3 functions that does not get along.. TBox.Width, TBox.Height and ToBox, and those I can if-def out.

Your TBox.Width, and TBox.height is incorectly defined.

Function TBox.Width: Integer;
Begin
Result := Abs(Self.X2 - Self.X1);
End;

Function TBox.Height: Integer;
Begin
Result := Abs(Self.Y2 - Self.Y1);
End;

Where it should be 1px larger, and Abs() is not needed, as X2, and Y2 should always be larger then or equal to X1,Y1.

function TBox.Width(): Int32;
begin
Result := (Self.X2 - Self.X1 + 1);
end;

function TBox.Height(): Int32;
begin
Result := (Self.Y2- Self.Y1 + 1);
end;


I think you should Github AeroLib.
Edit: found it: https://github.com/J-Flight/AeroLib

Janilabo

2014-05-17 12:53:43

From: Flight
…
~Flight
Beautiful release, @Flight - fantastic work mate!

Need to take a little closer look at AeroLib soon.
-Jani

tls

2014-05-17 17:05:49

This is a really cool idea and has some excellent plans…but, doesn't it make more sense to just update osr-srl with this stuff?

Brandon

2014-05-17 17:48:38

I agree with mormanman but anyway.. here's a sample updater.. Install: http://nala.villavu.com/downloads/master/645c44d72849ead5066aab17fee95376e803b2c6/SimbaInstaller.i386-win32.exe to use it..


It downloads your github repo to Simba's includes as a zip file. It unzips it and deletes the zip file. Checks if newer versions exists or not. If it doesn't it'll download it otherwise it won't. If no version exists, it installs it fresh. Works for any and all repos. If an error occurs, it calls onUpdateComplete with Success set to false and Error string set to the error description. Otherwise it calls it with Success set to true and Error set to "Success".



Procedure onUpdateComplete(Success: Boolean; Error: String);
begin
if (Not Success) then
writeln('An error occurred: ' + Error)
else
writeln(Error);
end;

Procedure Update(GitURL: String; VersionFile: String; onComplete: Procedure(Success: Boolean; Error: String));
const
GitHead = 'https://github.com/';
RawGitHead = 'https://raw.githubusercontent.com/';
MasterHead = 'https://codeload.github.com/';
MasterFoot = '/zip/master';
var
hFile, hZip, I, J, P: Integer;
ZipData: String;
RepoName, VersionPath: String;
Version, Error, GitVersion: String;
Label DownloadLabel;
Begin
P := -1;
For I := 1 To Length(GitURL) Do
If (GitURL[I] = '/') Then
P := I + 1;

If (P <> -1) Then
Begin
RepoName := Copy(GitURL, P, Length(GitURL) - P + 1);
VersionPath := IncludePath + RepoName + '\' + VersionFile;

If (Not FileExists(VersionPath)) Then
Goto DownloadLabel;

hFile := OpenFile(VersionPath, True);
If (hFile = -1) Then
Begin
onUpdateComplete(False, 'Cannot Open File: ' + VersionPath);
Exit;
End;

SetLength(Version, 10);
If (Not ReadFileString(hFile, Version, 5)) Then
Begin
CloseFile(hFile);
onUpdateComplete(False, 'Cannot Read File: ' + VersionPath);
Exit;
End;

If (Length(Version) < 1) Then
Begin
CloseFile(hFile);
onUpdateComplete(False, 'File: ' + VersionPath + ' is empty.');
Exit;
End;

GitVersion := Copy(GitURL, Length(GitHead) + 1, Length(GitURL) - Length(GitHead) + 1);
GitVersion := RawGitHead + GitVersion + '/master/' + VersionFile;
VersionPath := GitVersion;
GitVersion := Trim(GetPage(VersionPath));

If ((Length(GitVersion) < 1) or (GitVersion = 'Not Found')) Then
Begin
CloseFile(hFile);
onUpdateComplete(False, 'File: ' + VersionPath + ' is empty or does not exist.');
Exit;
End;

If (GitVersion <> Version) Then
Begin
onUpdateComplete(True, 'Already up-to-date.');
Exit;
End;

DownloadLabel:
ZipData := Copy(GitURL, Length(GitHead) + 1, Length(GitURL) - Length(GitHead) + 1);
ZipData := GetPage(MasterHead + ZipData + MasterFoot);
hZip := RewriteFile(IncludePath + RepoName + '.zip', False);
If (hZip <> -1) Then
Begin

If (Not WriteFileString(hZip, ZipData)) Then
Begin
onUpdateComplete(False, 'Cannot write archive.');
Exit;
End;

If (hFile <> 0) Then
CloseFile(hFile);

CloseFile(hZip);
UnzipFile(IncludePath + RepoName + '.zip', IncludePath);
DeleteFile(IncludePath + RepoName + '.zip');
RenameFile(IncludePath + RepoName + '-master', IncludePath + RepoName);
onUpdateComplete(True, 'Successfully updated.');
Exit;
End Else
Begin
If (hFile <> 0) Then
CloseFile(hFile);

If (hZip <> 0) Then
CloseFile(hZip);

onUpdateComplete(False, 'Cannot open archive.');
Exit;
End;

If (hFile <> 0) Then
CloseFile(hFile);
End;
End;

begin
Update('https://github.com/J-Flight/AeroLib', 'VERSION', @onUpdateComplete);
end.

ineedbot

2014-05-17 19:08:20

Looks cool! I'll check it out sometime!

Olly

2014-05-17 20:26:24

Okay, the problem is replacing this with the srl-osr include would break every single script.. including reflection scripts.

IMO:

Reflection include should be "standalone" - not require any other includes.
SRL-OSR - should be re done in srl-6 style.. (object oriented) etc.

That's if I had my own way and no scripts were released.

Back to the point Flight good job, really nice as always.. you should have done it object oriented though! :p

Flight

2014-05-17 23:56:31

From: slacky
Yey, was about time :P I am going to make a slight change (adding a {$IfNDef AeroLib}) to SimbaExt, so it's compatible with AeroLib. Theres only like 3 functions that does not get along.. TBox.Width, TBox.Height and ToBox, and those I can if-def out.

Your TBox.Width, and TBox.height is incorectly defined.

Function TBox.Width: Integer;
Begin
Result := Abs(Self.X2 - Self.X1);
End;

Function TBox.Height: Integer;
Begin
Result := Abs(Self.Y2 - Self.Y1);
End;

Where it should be 1px larger, and Abs() is not needed, as X2, and Y2 should always be larger then or equal to X1,Y1.

function TBox.Width(): Int32;
begin
Result := (Self.X2 - Self.X1 + 1);
end;

function TBox.Height(): Int32;
begin
Result := (Self.Y2- Self.Y1 + 1);
end;


I think you should Github AeroLib.
Edit: found it: https://github.com/J-Flight/AeroLib


I'll make those changes right away. I'm not sure where I got those functions from however. Thank you for catching that!

From: tls
This is a really cool idea and has some excellent plans…but, doesn't it make more sense to just update osr-srl with this stuff?


The differences between the two is far too many. And much of this include is using my a lot of my own style and preference, I surely didn't not want to force everyone else to have to use something that I personally claim as "the right way to do it". That's my reasoning for starting this.

From: Brandon
I agree with mormanman but anyway.. here's a sample updater.. Install: http://nala.villavu.com/downloads/master/645c44d72849ead5066aab17fee95376e803b2c6/SimbaInstaller.i386-win32.exe to use it..


It downloads your github repo to Simba's includes as a zip file. It unzips it and deletes the zip file. Checks if newer versions exists or not. If it doesn't it'll download it otherwise it won't. If no version exists, it installs it fresh. Works for any and all repos. If an error occurs, it calls onUpdateComplete with Success set to false and Error string set to the error description. Otherwise it calls it with Success set to true and Error set to "Success".


Wonderful! Thanks to masterBB I've gotten around a snag on Github and I'll be able to keep that repo updated, so your updater method will work beautifully. I'm kinda booked for today but if I've time this evening I'll begin working on that, as well as Slacky's fixes. Thank you very much Brandon.

From: Olly
Okay, the problem is replacing this with the srl-osr include would break every single script.. including reflection scripts.

IMO:

Reflection include should be "standalone" - not require any other includes.
SRL-OSR - should be re done in srl-6 style.. (object oriented) etc.

That's if I had my own way and no scripts were released.

Back to the point Flight good job, really nice as always.. you should have done it object oriented though! :p


Breaking scripts is hardly the issue to worry about, I just feel the include is too custom to be what people officially use in Simba for creating and running OSR scripts. I like the idea of it being optional, however my own scripts, from here on out, will require this no doubt. Reflection scripts should be an issue because I'm assuming that include can quickly be modified to compile & run in Lape as well, while excluding a complete overhaul. And I absolutely agree with you about the reflection include, how it should be standalone as well, just as AeroLib is.

And yes… I know it's not all in the standard Lape format, infact very little is, but I tried to use what little knowledge of Lape I have throughout the include. If you've some obvious modifications that compile and run just fine do pass them along Olly, and I'll test them myself and push them to Github.



Also thank you all very much for the positive feedback, it really means a lot to me. :smile: I was nervous of what everyone would think, haha…

Nebula

2014-05-18 02:54:26

SPS… I have not seen that combination of letters for quite some time. Oh the joys of spending hours trying to custom make a map, then ending up on the other side of runescape after calling a simple sps_walktopoint. Flag problem after flag problem later, you can finally semi-navigate the trenches of gielinor without having to failsafe with radial-walking just to move a few screens away to bank your fish. The minimap never ever matches the compass direction, so when sps finally does return a position other than (-1,-1) , it's never accurate, always a solid 4-5 tiles off (or a few thousand tiles because fuck you, i'm sps, the alkharid desert looks the same as the grand tree to me). But then the real fun shit happens. That custom map you just spent all night working on? Worthless. Jagex likes to mess with the brightness of the minimap. One second it's bright and the next second it's dark. So you have to change sps_tolerance to a ridiculously high number while also adjusting sps_accuracy just to compensate. Then you get in an endless bounty hunt for that holy grail of accuracy and tolerance combination, which never actually comes but depresses you for days upon days until you finally give up. nowadays it's just r_walktotilemm.

Flight

2014-05-18 03:07:50

From: Nebula
SPS… I have not seen that combination of letters for quite some time. Oh the joys of spending hours trying to custom make a map, then ending up on the other side of runescape after calling a simple sps_walktopoint. Flag problem after flag problem later, you can finally semi-navigate the trenches of gielinor without having to failsafe with radial-walking just to move a few screens away to bank your fish. The minimap never ever matches the compass direction, so when sps finally does return a position other than (-1,-1) , it's never accurate, always a solid 4-5 tiles off (or a few thousand tiles because fuck you, i'm sps, the alkharid desert looks the same as the grand tree to me). But then the real fun shit happens. That custom map you just spent all night working on? Worthless. Jagex likes to mess with the brightness of the minimap. One second it's bright and the next second it's dark. So you have to change sps_tolerance to a ridiculously high number while also adjusting sps_accuracy just to compensate. Then you get in an endless bounty hunt for that holy grail of accuracy and tolerance combination, which never actually comes but depresses you for days upon days until you finally give up. nowadays it's just r_walktotilemm.


I must have done something right then because my SPS works very smooth with custom maps. I've a tool (which I'm still ironing out) for taking snapshots of the minimap and saving, at the moment, 9 perfectly sized map pieces to a bitmap to help make creating custom SPS maps easier. Also, Monkfishies has been using a light and dark version of a custom SPS map to handle all the walking throughout the Fishing Colony; you're welcome rag on SPS if you like but I've fished well over 400,000 Monkfish with it, and counting. I'd invite you to try out the version in AeroLib but I don't see that happening; that's fine.

Nebula

2014-05-18 03:46:29

From: Flight
I must have done something right then because my SPS works very smooth with custom maps. I've a tool (which I'm still ironing out) for taking snapshots of the minimap and saving, at the moment, 9 perfectly sized map pieces to a bitmap to help make creating custom SPS maps easier. Also, Monkfishies has been using a light and dark version of a custom SPS map to handle all the walking throughout the Fishing Colony; you're welcome rag on SPS if you like but I've fished well over 400,000 Monkfish with it, and counting. I'd invite you to try out the version in AeroLib but I don't see that happening; that's fine.


http://www.youtube.com/watch?v=ldBpdJefhYg#t=14

Hoodz

2014-05-18 06:31:23

From: Nebula
http://www.youtube.com/watch?v=ldBpdJefhYg#t=14


You can see that video in 2 different ways..

Olly

2014-05-18 09:58:45

Here's the only thing I don't really like :p

You have Interfaces[BANKSCREEN].isVisible(); Yet then you have like getBankMode(). Would have been nicer to have something like Interfaces[BANKSCREEN].getMode(); or even better, bankScreen.getMode() etc.

Regardless like you've said it's a very custom include to your liking, and that's fine :)

I might have a go at some random solvers once I get a new version of srl-6 + Simba pushed.. I know I said this before but I got bored pretty quickly! :p

Flight

2014-05-18 11:03:06

From: Olly
Here's the only thing I don't really like :p

You have Interfaces[BANKSCREEN].isVisible(); Yet then you have like getBankMode(). Would have been nicer to have something like Interfaces[BANKSCREEN].getMode(); or even better, bankScreen.getMode() etc.

Regardless like you've said it's a very custom include to your liking, and that's fine :)

I might have a go at some random solvers once I get a new version of srl-6 + Simba pushed.. I know I said this before but I got bored pretty quickly! :p


I'll keep that in mind, that's probably the best way to go. Yeah I'm always welcoming assistance with the random-solvers. If you even have some ideas drop me a line, perhaps I've already some input as well.

Krazy_Meerkat

2014-05-23 03:02:44

Gratz on release, Flight :)
Wow, what an impressive include! I'm gonna spend some time looking at it all, but I'd just like to say thanks for the effort first. I know your mouse functions were very focused on being human-like and I respect that. Looks like a great release! Good luck with the include, I'm sure a lot of people have been looking forward to this

Flight

2014-05-29 05:42:59

Has anyone at all tested this include? Because there's someone who's having a plugin-related error with my Catherby Cooker script and I'd like to know if it's a flaw in the plugin or if it's a user error. I don't want to release any more scripts/updates until I've gotten this sorted out.

It's a shame, I've already updated the world list and implemented some experimental mods to SPS and I'd like to get it out there ASAP.

Clarity

2014-05-29 06:17:39

Oh, really cool that you released this after all. While I don't do OSR I've heard great things about this, congratulations on release!

Dervish

2014-05-29 22:22:40

I love this include, thank you so much for sharing this.

The Mayor

2014-06-02 23:36:25

Great work Flight! I think what needs to happen is this should replace srl-osr and be written like srl6. Reflection also needs to be converted so all the includes are the same. This will make all the tutorials much easier to understand and people can script for both versions of the game without learning what seems like a multiple language.

Flight

2014-06-03 02:53:41

From: The Mayor
Great work Flight! I think what needs to happen is this should replace srl-osr and be written like srl6. Reflection also needs to be converted so all the includes are the same. This will make all the tutorials much easier to understand and people can script for both versions of the game without learning what seems like a multiple language.


That's a really good point. Thanks to Olly I've plans to really make AeroLib a more object-oriented library, which I assume is would SRL-6 scripters are already comfortable with. But there's already custom content in here that I assume wouldn't be appropriate for an official include, not to mention much more to come…

imgonnaeatu

2014-06-03 17:38:45

Hey man, im having trouble getting this include working.
I have followed the instructions multiple times, each time being precise and making sure to follow each step to completion. The problem is, that every time i try to run the test script, i gives me this error :
[Error] (3:1): Unable to register function function CreatePerspective(const sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3: Double): TPerspective; at line 3
Compiling failed.

I assume it has something to do with my SPS but even updating and re installing it, it still wont work.
any help would be greatly appreciated. :)

Flight

2014-06-03 22:33:06

From: imgonnaeatu
Hey man, im having trouble getting this include working.
I have followed the instructions multiple times, each time being precise and making sure to follow each step to completion. The problem is, that every time i try to run the test script, i gives me this error :
[Error] (3:1): Unable to register function function CreatePerspective(const sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3: Double): TPerspective; at line 3
Compiling failed.

I assume it has something to do with my SPS but even updating and re installing it, it still wont work.
any help would be greatly appreciated. :)


Yes I had another users who had this problem as well, you just need to switch your Interpreter to Lape rather than PascalScript. The instructions on how to do that are on the OP under How to install.

Flight

2014-06-09 04:04:20

I've updated the include with revision 0.1 which is mostly an update to make AeroLib more F2P friendly, but it also includes some modifications to SPS as well as other random files. You'll find the TPlayer now has a 'Member' variable which you should be setting in your DeclarePlayers procedure. This will allow the include to choose which worlds to log you into, should you choose to hop to a random world. It will also determine help if you've gotten a XP reward from a random event and you've not set your player's LampSkill to a F2P skill; the default for this will be Mining so if you don't want that be sure to set this manually before running your scripts. Of course the world list has also been updated.

SPS's accuracy has been increased a bit and at the moment Olly is working on a new color-based positioning system based off the work of Slacky. Should that project be a success then it will certainly be included in AeroLib in the near future.

Happy scripting! :smile:

P.S. AeroLib has been moved to GitHub so the absolute newest revisions will be uploaded there. This also might mean AL will get an updater in Simba; here's hoping. You can check out AeroLib's GitHub page if you'd like to see the most recent changes.

Syntax

2014-06-25 03:48:43

Awesome release Flights, looks like you have gone to lots of effort.
You effort is appreciate :)

Unfold

2014-07-21 21:16:13

From: Flight


Hey, amazing work man. Are you going to continue updating it? It hasn't been updated in a month :/ i really want fully random supported color include :p

can't wait

Flight

2014-07-21 21:23:38

From: Unfold
Hey, amazing work man. Are you going to continue updating it? It hasn't been updated in a month :/ i really want fully random supported color include :p

can't wait


This very day I'll be adjusting quite a bit. The next revision will include a new color-based walking method designed by Olly which utilizes Slacky's SimbaExt library. I'm also getting to know this include as well, I believe, if used correctly, it will be a powerful tool in building more complex color random-solvers. Also the next revision will include some reflection for walking only. I actually only added this for my most recent work (Abyssal runecrafter) and when the new color walking system (SEWalker) is able to load multiple custom maps then I'll remove reflection from AeroLib to retain the state of color only. :thumbsup: Aside from that there will be a few logical changes here and there, and if there's time I'll work on some user-friendly tutorials on how to script with AeroLib.

Unfold

2014-07-21 21:42:56

From: Flight
This very day I'll be adjusting quite a bit. The next revision will include a new color-based walking method designed by Olly which utilizes Slacky's SimbaExt library. I'm also getting to know this include as well, I believe, if used correctly, it will be a powerful tool in building more complex color random-solvers. Also the next revision will include some reflection for walking only. I actually only added this for my most recent work (Abyssal runecrafter) and when the new color walking system (SEWalker) is able to load multiple custom maps then I'll remove reflection from AeroLib to retain the state of color only. :thumbsup: Aside from that there will be a few logical changes here and there, and if there's time I'll work on some user-friendly tutorials on how to script with AeroLib.

Awesome, Can't wait :P

Olly

2014-07-21 21:53:55

From: Flight
…


No-no no it's all slackys work, I only tested it quite alot and just passed it though to you :P

And can't you already do multiple maps?

var
map1: TSEWalker;
map2: TSEWalker;

begin
map1.create();
map2.create();
//etc..
end;

klew1102

2014-07-26 10:04:03

Am i suppose to include {$i AeroLib/AeroLib.Simba} infront of scripts because they mainly run on pascal.
Also my comp says the allinone zip is a virus but idk if I believe it.

Flight

2014-07-30 12:06:46

Finally pushed out revision 0.3 which is multiple fixes and adjustments as well as the addition of SEWalker, an alternative color-based positioning system which utilizes Slacky's SimbaExt include. Be sure to thank him for this, it's a masterpiece and really a shame it's not receiving more attention… In the future I'll experiment with it as I believe it'll be a powerful tool and I'd love to apply it to random-solvers. Anyways, be sure to update everyone.

Oh yeah… I believe this update may give compile errors for my already released AL-based scripts. I'll update these tomorrow night, I apologize for any issues users might be having because of this.

slacky

2014-07-31 08:37:11

It's awesome that you are using SimbaExt man :)
If I knew you where going to use that SEWalker, I would have made it more reliable, and less hacky.. like as it's now it's just some prototype code I wrote to "help"/show Olly.

Tho, I am skeptical about the changes you made to SEWalker:
I see some are for the better, but it's very hacky. Hopefully you did some proper tests with your changes.

- Like, making a var "sdist", which is staticly defined as 20px, instead of using the "SkipDist" variable in the record which was added for that purpose (and originally used), was just stupid, and gives the user less control, you could have just defaulted skipdist to default at 20px (however 20px skipdist is too much).
- You also removed the "blindwalk" thingy I added, which was utilized whenever the walker failed at finding the correct current position, that "blindwalk"-thingy made me able to walk from [Al-kharid > Lumby > Fally] and back through [Varrok > Al-kharid (bank)], all in one path. I do not think that will work now, as the "blindwalk" was utilized multiple times over that path.
- You also seem to have dropped using ValidatePath which is not so "scripter-friendly": It ensured that the distance between points in the "Path" was no more then "SEW_Outer", and told the scripter about this before it started walking, so that they KNOW why it would fail, rather then having to walk the path, and see it fail, and then having to guess why it failed…

And for no reason (what so ever), you randomly prefixed all the functions you added to IE: SEW_WalkPath(..) rather then following the object-oriented style the rest of the module was written with (SEWalker.WalkPath()).. That was just a dumb thing to do, and just makes it harder for users to use, it's much less CC-friendly versus having all record-methods related to SEWalker, under the SEWalker-type.



That's about all I have to bitch about right now.

Flight

2014-07-31 10:18:22

Yes my testing with the SEWalker is near none infact, below I'll answer your questions individually.

From: slacky

- Like, making a var "sdist", which is staticly defined as 20px, instead of using the "SkipDist" variable in the record which was added for that purpose (and originally used), was just stupid, and gives the user less control, you could have just defaulted skipdist to default at 20px (however 20px skipdist is too much).


Yes I added this parameter to work with the SEW_WalkPath function which would have acted the same as my previous forms of walking for SPS; tiles < the target tile, in a path, will have a greater flag distance before the next tile in the path is found and the last tile having a shorter flag distance. Cannot accomplish this with a static "SkipDist". It is, in fact, just the opposite of what you say of restricting user control.

From: slacky

- You also removed the "blindwalk" thingy I added, which was utilized whenever the walker failed at finding the correct current position, that "blindwalk"-thingy made me able to walk from [Al-kharid > Lumby > Fally] and back through [Varrok > Al-kharid (bank)], all in one path. I do not think that will work now, as the "blindwalk" was utilized multiple times over that path.


I'll look again at the original that was sent to me, I don't remember removing anything similar to that.

From: slacky

- You also seem to have dropped using ValidatePath which is not so "scripter-friendly": It ensured that the distance between points in the "Path" was no more then "SEW_Outer", and told the scripter about this before it started walking, so that they KNOW why it would fail, rather then having to walk the path, and see it fail, and then having to guess why it failed…


I believe I did this because of the new SEW_WalkPath function which needed SEW.WalkToPos to return if it was successful or not, and within that function already exist distance checkers, if I understood it correctly. Should SEW_WalkPath fail to walk to the next tile in a path for 10-12 seconds the function will also result false. It's my preference to use functions over procedures for the reason of appropriate fail-safes.

From: slacky

And for no reason (what so ever), you randomly prefixed all the functions you added to IE: SEW_WalkPath(..) rather then following the object-oriented style the rest of the module was written with (SEWalker.WalkPath()).. That was just a dumb thing to do, and just makes it harder for users to use, it's much less CC-friendly versus having all record-methods related to SEWalker, under the SEWalker-type.


Two functions, yes. This is because your SEWalker type already has your own version of "FFlag()" which does not function as the real, normal "FFlag". It would be more appropriate to rename yours to "flagPresent()". For this reason I was not able to use the standard "FFlag()" function with a distance parameter and had to make a separate function from the object-oriented SEWalker type, which excludes your "FFlag()".


Now, as I said at the top, I've tested this next to nothing. The changes I've made are mostly based off positioning & walking in a custom map so, granted, it's not fair to shape your include around a single style of usage. If you'd like I'll be happy to revert everything back to your original version, I don't mind it at all, and if you've adjustments and/or improvements to make then, again, I'll be more than happy to add them in. My work to the SEWalker.simba file clearly was not yet finished, and should it return to its original form then I imagine nearly all my scripts in the future which utilize it will have many overrides to your procedures, simply because I like A: Failsafes and B: more scripter-control. I'm not a fan of static code, as my include and scripts clearly reflect.

tomjerry

2014-08-09 02:43:43

hello.

I would like to report to you that whenever i use aerolib with this script [AL]DroiFletch in the fleching section( here's the link to it https://villavu.com/forum/showthread.php?t=109071), with all my details filled in username and password etc. It mixes the characters of my username and password in the runescape 2007 login screen. for example say in the script i have filled my username to be "tom" and my password is 123. When i run the script , it fills my username to 1t3 and password to o2m. all characters are there but it just mixes them up… again thanks in advance in looking for this problem. I have also posted this in script thread , your aerolib include thread so it could grab your attention quicker. Thanks

Flight

2014-08-09 20:12:10

From: tomjerry
hello.

I would like to report to you that whenever i use aerolib with this script [AL]DroiFletch in the fleching section( here's the link to it https://villavu.com/forum/showthread.php?t=109071), with all my details filled in username and password etc. It mixes the characters of my username and password in the runescape 2007 login screen. for example say in the script i have filled my username to be "tom" and my password is 123. When i run the script , it fills my username to 1t3 and password to o2m. all characters are there but it just mixes them up… again thanks in advance in looking for this problem. I have also posted this in script thread , your aerolib include thread so it could grab your attention quicker. Thanks


Thanks mate I got your PM as well. I won't be at home until late tonight but when I arrive I'll try recreating your problem so I can see what's going wrong. From what you told me before it's an issue when logging in via the browser; that's a start. Thank you for bringing it to my attention.

hakishakataki

2014-09-05 10:11:05

I can't load slackworlds's extension to get simbaext.rar, can anyone upload it for me somewhere?

Flight

2014-09-05 20:42:58

From: hakishakataki
I can't load slackworlds's extension to get simbaext.rar, can anyone upload it for me somewhere?


I just tested the download link, it works fine for me. Try it again and if you have trouble let me know; I'll re-upload it for you.

hakishakataki

2014-09-07 02:13:02

From: Flight
I just tested the download link, it works fine for me. Try it again and if you have trouble let me know; I'll re-upload it for you.

Sorry Flight, for some reason I still cant access the website. I have no idea what's up.

Fitta

2014-09-12 15:19:14

Is there a reflection include that works with lape? and more importantly with this include?

Harrier

2014-09-12 16:44:21

From: Fitta
Is there a reflection include that works with lape? and more importantly with this include?

This is a colour only include.

Fitta

2014-09-12 17:05:11

From: Harrier
This is a colour only include.


Captain Obvious heh..

Maybe I was unclear. Is there a reflection include you could COMBINE with this(that also runs with lape)?

3Garrett3

2014-09-12 17:07:39

From: Fitta
Captain Obvious heh..

Maybe I was unclear. Is there a reflection include you could COMBINE with this(that also runs with lape)?


We only have one reflection include in development and as far as I'm aware it's only PascalScript compatible unfortunately.

Harrier

2014-09-12 17:17:04

From: Fitta
Captain Obvious heh..

Maybe I was unclear. Is there a reflection include you could COMBINE with this(that also runs with lape)?

No, I meant there was no addons to make it reflection currently. Making it a 100% color only include.

Fitta

2014-09-19 19:04:23

@Flight, If I was to make a some suggestions on the include, would that be here in this thread or via PM?

Harrier

2014-09-26 16:50:46

Not sure if it's a AL bug or a simba offset bug (Using w8), but when using the normal rs client (Not smart) the login handler doesn't enter the username and enters the password in the user box :/

Hoodz

2014-09-26 17:38:53

From: Harrier
Not sure if it's a AL bug or a simba offset bug (Using w8), but when using the normal rs client (Not smart) the login handler doesn't enter the username and enters the password in the user box :/


i noticed it too, it tried it but it were all random letters (like it was typing my name and pass at the same time)

Harrier

2014-09-27 03:19:16

From: hoodz
i noticed it too, it tried it but it were all random letters (like it was typing my name and pass at the same time)

That's his anti-keylogger thing. It's meant to type 1-5 letters of each then change to the other box. Guess it's not changing for you :/

Hoodz

2014-09-27 05:51:54

From: Harrier
That's his anti-keylogger thing. It's meant to type 1-5 letters of each then change to the other box. Guess it's not changing for you :/


I believe you can turn it off

Fitta

2014-09-27 06:36:21

It still doesn't work, even if you disable it.

Flight

2014-09-27 23:17:29

From: Harrier
Not sure if it's a AL bug or a simba offset bug (Using w8), but when using the normal rs client (Not smart) the login handler doesn't enter the username and enters the password in the user box :/


It is indeed a bug in AL and it's been fixed but I don't believe I've uploaded that version yet. So far just Krazy_Meerkat has the newest version as I left it with him before I started moving. My internet access at the moment is extremely limited so I'm not sure if I've enough stability to upload the new version. If I have some free time I'll make some more changes to the include for another revision release. Hang in there…

Hoodz

2014-09-28 03:16:42

From: Flight
It is indeed a bug in AL and it's been fixed but I don't believe I've uploaded that version yet. So far just Krazy_Meerkat has the newest version as I left it with him before I started moving. My internet access at the moment is extremely limited so I'm not sure if I've enough stability to upload the new version. If I have some free time I'll make some more changes to the include for another revision release. Hang in there…


Nice, can't wait!

slacky

2014-09-28 03:30:01

From: hoodz
Nice, can't wait!

Sure you can… It's not like your gonna die in the meanwhile :tongue:

Hoodz

2014-09-28 10:01:23

From: slacky
Sure you can… It's not like your gonna die in the meanwhile :tongue:


slacky pls..

ineedbot

2014-09-30 00:57:56

Once you know how to use SEWalker, it can be very accurate. Nice!

Shout

2014-10-13 13:27:22

Is this still being worked on? Would love to see some tutorials/example scripts to work from.

Flight

2014-10-13 21:26:51

From: Shout
Is this still being worked on? Would love to see some tutorials/example scripts to work from.


Indeed it is, I've just been crazy busy and away from my laptop as well as changing locations. I'm only able to use internet off my phone's wifi. When I have time I work on bits and pieces of it, making improvements here and there. Again, sorry for the delay.

Fitta

2014-10-14 10:20:37

From: Flight
Indeed it is, I've just been crazy busy and away from my laptop as well as changing locations. I'm only able to use internet off my phone's wifi. When I have time I work on bits and pieces of it, making improvements here and there. Again, sorry for the delay.


Hey, take your time. The include is crazy good anyhow :f:

Fitta

2014-10-18 06:40:29

Trouble incoming!

Function name: getSkillXP
Located: Skills.simba
Error: The mouse function brakeMMouse random parameters goes out of bounds pretty radically.
Fix: Change it into a mousebox?

Function name: waitFindColors
Located: Timing.simba
Error: You missed something tiny
Fix:


function waitFindColors(var TPA: TPointArray; Color, Tol: Integer; Area: TBox; MaxTime: Integer): Boolean;
var
T: Timer;
begin
Result := False;
T.start();
while T.timeElapsed < MaxTime do
begin
if createCol(Color,Tol).findAllIn(Area, TPA) then
Exit(True);
Wait(10 + Random(6));
end;
end;


waitFindColors needs to be fixed in order for getSkillXP to work!

Hoodz

2014-10-18 10:05:36

I also found something: sometimes the setCompass(direction: variant); doesnt work

it will only work for example when you want to set the compass to 30 but not to 120.

if you need more information just tell me and ill give you screenshots etc

Flight

2014-10-18 10:36:14

From: Fitta
Trouble incoming!

Function name: getSkillXP
Located: Skills.simba
Error: The mouse function brakeMMouse random parameters goes out of bounds pretty radically.
Fix: Change it into a mousebox?

Function name: waitFindColors
Located: Timing.simba
Error: You missed something tiny
Fix:


function waitFindColors(var TPA: TPointArray; Color, Tol: Integer; Area: TBox; MaxTime: Integer): Boolean;
var
T: Timer;
begin
Result := False;
T.start();
while T.timeElapsed < MaxTime do
begin
if createCol(Color,Tol).findAllIn(Area, TPA) then
Exit(True);
Wait(10 + Random(6));
end;
end;


waitFindColors needs to be fixed in order for getSkillXP to work!


Great bug report, detail-filled, just the way I like it, but I didn't catch what's wrong with 'waitFindColors();'. Could you elaborate a bit on that? As for the first bug I'll take a look at it right now.

From: hoodz
I also found something: sometimes the setCompass(direction: variant); doesnt work

it will only work for example when you want to set the compass to 30 but not to 120.

if you need more information just tell me and ill give you screenshots etc


Thank you also for the bug report. Does this only occur at 120 or is this just an example? I'm not sure if this has been corrected in Rev. 0.4 or not, I've modified many bits and pieces over time that I've certainly forgotten about. I'll also take a look at this immediately.

Fitta

2014-10-18 11:35:05

From: Flight
Great bug report, detail-filled, just the way I like it, but I didn't catch what's wrong with 'waitFindColors();'. Could you elaborate a bit on that? As for the first bug I'll take a look at it right now.



Thank you also for the bug report. Does this only occur at 120 or is this just an example? I'm not sure if this has been corrected in Rev. 0.4 or not, I've modified many bits and pieces over time that I've certainly forgotten about. I'll also take a look at this immediately.


You missed

while T.timeElapsed < MaxTime do

< MaxTime
^ This ^



EDIT: If you wish for future reports(using your include quite heavily), I can supply you with a fix too?

Hoodz

2014-10-18 11:47:15

From: Flight
Thank you also for the bug report. Does this only occur at 120 or is this just an example? I'm not sure if this has been corrected in Rev. 0.4 or not, I've modified many bits and pieces over time that I've certainly forgotten about. I'll also take a look at this immediately.


it was just a random example.

Flight

2014-10-18 12:31:08

From: Fitta
You missed

while T.timeElapsed < MaxTime do

< MaxTime
^ This ^



EDIT: If you wish for future reports(using your include quite heavily), I can supply you with a fix too?


Perhaps I'm overlooking an obvious mistake, but I don't see an error with the logic:

T.start(); // New timer is triggered
while T.timeElapsed < MaxTime do // Until the timer's duration reaches the time limit do...

Fitta

2014-10-18 13:08:27

From: Flight
Perhaps I'm overlooking an obvious mistake, but I don't see an error with the logic:

T.start(); // New timer is triggered
while T.timeElapsed < MaxTime do // Until the timer's duration reaches the time limit do...


Maybe I have an old release, in my release it "< MaxTime" wasnt there.

EDIT:
This function was in my folder?

function waitFindColors(var TPA: TPointArray; Color, Tol: Integer; Area: TBox; MaxTime: Integer): Boolean;
var
T: Timer;
begin
Result := False;
T.start();
while T.timeElapsed do
begin
if createCol(Color,Tol).findAllIn(Area, TPA) then
Exit(True);
Wait(10 + Random(6));
end;
end;

Flight

2014-10-20 02:26:51

Fitta you're right, that was still an active bug in AeroLib even until Rev. 0.4. It's been fixed now; thank you. And Hoodz, I just checked the 'setCompass()' function with 120 as the parameter; it worked fine for me. I suspect it's a bug in 0.3 but i'ts certainly been fixed in the newest (unreleased) version.

At the moment I'm working on a 'GroundItems' entity extension. It will work similar to the MSObjects type; finding ground items on the MS via dual (or the optional single only) colors and size limits. AeroLib will also automatically load a database for some predefined ground items. There won't be many, just a few to set an example, so contributions would be great. I've also added a few more functions some of my later scripts will require.

Hoodz

2014-10-20 06:34:50

From: Flight
Fitta you're right, that was still an active bug in AeroLib even until Rev. 0.4. It's been fixed now; thank you. And Hoodz, I just checked the 'setCompass()' function with 120 as the parameter; it worked fine for me. I suspect it's a bug in 0.3 but i'ts certainly been fixed in the newest (unreleased) version.

At the moment I'm working on a 'GroundItems' entity extension. It will work similar to the MSObjects type; finding ground items on the MS via dual (or the optional single only) colors and size limits. AeroLib will also automatically load a database for some predefined ground items. There won't be many, just a few to set an example, so contributions would be great. I've also added a few more functions some of my later scripts will require.

Thank you for your time

Fitta

2014-10-20 10:37:41

From: Flight
Fitta you're right, that was still an active bug in AeroLib even until Rev. 0.4. It's been fixed now; thank you. And Hoodz, I just checked the 'setCompass()' function with 120 as the parameter; it worked fine for me. I suspect it's a bug in 0.3 but i'ts certainly been fixed in the newest (unreleased) version.

At the moment I'm working on a 'GroundItems' entity extension. It will work similar to the MSObjects type; finding ground items on the MS via dual (or the optional single only) colors and size limits. AeroLib will also automatically load a database for some predefined ground items. There won't be many, just a few to set an example, so contributions would be great. I've also added a few more functions some of my later scripts will require.


A little wishlist for Aerolib..

Input a integer and get the per hour rate, perfect for progress reports.

function perHour(I: Integer): integer;
begin
Result := Round((3600*(I))/(GetTimeRunning/1000));
end;

findxp.simba in the osrs include(Changed to work with lape), the following functions.. (TillLevel is not in the findxp.simba include)

{*******************************************************************************
function ConvertXpToLvl(Xp: Integer): Integer;
By: Brak, Flyboy
Description: Returns skill level based on xp level
*******************************************************************************}
function ConvertXpToLvl(xp: Integer): Integer;
var
level, exp: Integer;
begin
for level := 1 to 99 do
begin
exp := exp + Trunc(level + 300 * Pow(2.0, level / 7.0));
if ((exp / 4) > xp) then
begin
Result := level;
Exit;
end;
end;
Result := 99;
end;

{*******************************************************************************
function ConvertLvlToXP(Xp: Integer): Integer;
By: Ron
Description: Returns exp based on level
*******************************************************************************}
function ConvertLvlToXP(Level: Integer): Integer;
var
i, exp: Integer;
begin
for i := 1 to Level do
exp := exp + Trunc(i + 300 * Pow(2.0, i / 7.0));
Result := exp div 4;
end;

function TillLevel(CurrentXP: Integer): Integer;
begin
Result := ConvertLvlToXP(ConvertXpToLvl(CurrentXP))-CurrentXP;
end;

Flight

2014-10-21 03:19:13

From: hoodz
Thanks you for your time


Of course. :smile:

From: Fitta
A little wishlist for Aerolib..

Input a integer and get the per hour rate, perfect for progress reports.

function perHour(I: Integer): integer;
begin
Result := Round((3600*(I))/(GetTimeRunning/1000));
end;

findxp.simba in the osrs include(Changed to work with lape), the following functions.. (TillLevel is not in the findxp.simba include)

{*******************************************************************************
function ConvertXpToLvl(Xp: Integer): Integer;
By: Brak, Flyboy
Description: Returns skill level based on xp level
*******************************************************************************}
function ConvertXpToLvl(xp: Integer): Integer;
var
level, exp: Integer;
begin
for level := 1 to 99 do
begin
exp := exp + Trunc(level + 300 * Pow(2.0, level / 7.0));
if ((exp / 4) > xp) then
begin
Result := level;
Exit;
end;
end;
Result := 99;
end;

{*******************************************************************************
function ConvertLvlToXP(Xp: Integer): Integer;
By: Ron
Description: Returns exp based on level
*******************************************************************************}
function ConvertLvlToXP(Level: Integer): Integer;
var
i, exp: Integer;
begin
for i := 1 to Level do
exp := exp + Trunc(i + 300 * Pow(2.0, i / 7.0));
Result := exp div 4;
end;

function TillLevel(CurrentXP: Integer): Integer;
begin
Result := ConvertLvlToXP(ConvertXpToLvl(CurrentXP))-CurrentXP;
end;


I can certainly add those into the include. Perhaps there's also some other handy, commonly-used progress report snippets I can add into that directory. Thanks for the suggestions mate.

Hoodz

2014-10-21 04:59:54

From: Flight
Of course. :smile:


Flight could you add something to the include for me?
A function that returns the text if you hover about the combat styles (combat tab).
It should return a TStringArray.

Examples: ['shared xp']
['ranged xp', 'defence xp']

I tried it myself but im really bad with text recognising :(

Flight

2014-10-21 06:39:47

From: hoodz
Flight could you add something to the include for me?
A function that returns the text if you hover about the combat styles (combat tab).
It should return a TStringArray.

Examples: ['shared xp']
['ranged xp', 'defence xp']

I tried it myself but im really bad with text recognising :(


Sure pal, I'll see what I can do.

Fitta

2014-10-22 16:55:54

From: james10000
can anyone help?

when i try to run a aerolib script i get this error
Exception in Script: Unknown compiler directives at 5:3


Switch to lape :) search my dear friend!

Lipcot

2014-10-22 17:39:50

From: james10000
can anyone help?

when i try to run a aerolib script i get this error
Exception in Script: Unknown compiler directives at 5:3



Flight

2014-10-31 07:38:39

I noticed some people are having issues downloading SimbaExt from Slacky's website so I've added an uploaded version to my DropBox. The correct links can now be found on the OP.

Harrier

2014-11-07 13:44:22

Not sure if it's a problem on my end, if it is for the life of me I can't see it. For some reason it opens up the music tab, and keeps on flipping between the inv and music tab.

Hoodz

2014-11-07 13:49:58

From: Harrier
Not sure if it's a problem on my end, if it is for the life of me I can't see it. For some reason it opens up the music tab, and keeps on flipping between the inv and music tab.


mmh, are you calling random finding?

Harrier

2014-11-07 13:53:35

From: hoodz
mmh, are you calling random finding?

Nope :/ and I also tested it with Flights Catherby Cooker and found I had the same issue (Before and after removing all the random finding)

Hoodz

2014-11-07 13:55:25

From: Harrier
Nope :/ and I also tested it with Flights Catherby Cooker and found I had the same issue (Before and after removing all the random finding)


mmh weird, its working fine for me. what script were you using (not the cooker but the other one)

Harrier

2014-11-07 16:10:27

From: hoodz
mmh weird, its working fine for me. what script were you using (not the cooker but the other one)

Rogue cooker + I re-installed aerolib and it fixed it. I assume I must of edited something when looking around :p
Nvm; it seems to happen on some worlds, but not on world 2 :?

tzaro

2014-11-15 11:56:28

what does op stand for? I think I need that ext file to run the monkfisher. Im getting this error:

Error: Duplicate declaration "DrawText" at line 241
Compiling failed.

NKN

2014-11-15 12:00:01

From: tzaro
what does op stand for? I think I need that ext file to run the monkfisher. Im getting this error:

Error: Duplicate declaration "DrawText" at line 241
Compiling failed.


op means original post or original poster, depending on context.
(First post in the thread, the author of the thread.)

Fitta

2014-11-16 07:03:56

Wishlist time! These are pretty straight forward. Tab is just for the variety, and it looks super sexy. waitTab is crazy handy when dealing with spells which have a delay(Plank Making spell, Superheat, Alch etc..)


function Tab(i: integer): boolean;
begin
Case Random(8)of
0: Result := FTab(I);
1..7: Result := gameTab(I);
end;
end;

function waitTab(Tab, waitPerLoop, MaxWait: integer): boolean;
var
T: Timer;
begin
T.start;
repeat
Result := (getCurrentTab = Tab);
If Not Result then
Wait(waitPerLoop);
until(T.timeElapsed > MaxWait)or(Result);
end;

Hoodz

2014-11-16 08:17:07

made a cooking script with aerolib:


still running :D

Flight

2014-11-16 08:22:13

From: hoodz
Flight could you add something to the include for me?
A function that returns the text if you hover about the combat styles (combat tab).
It should return a TStringArray.

Examples: ['shared xp']
['ranged xp', 'defence xp']

I tried it myself but im really bad with text recognising :(


Sure I'll give it a go.

From: Fitta
Wishlist time! These are pretty straight forward. Tab is just for the variety, and it looks super sexy. waitTab is crazy handy when dealing with spells which have a delay(Plank Making spell, Superheat, Alch etc..)


function Tab(i: integer): boolean;
begin
Case Random(8)of
0: Result := FTab(I);
1..7: Result := gameTab(I);
end;
end;

function waitTab(Tab, waitPerLoop, MaxWait: integer): boolean;
var
T: Timer;
begin
T.start;
repeat
Result := (getCurrentTab = Tab);
If Not Result then
Wait(waitPerLoop);
until(T.timeElapsed > MaxWait)or(Result);
end;


I like the concept of 'waitTab', I'll add that in. Thanks for the suggestion!

Fitta

2014-11-16 08:56:02

From: Flight
Sure I'll give it a go.



I like the concept of 'waitTab', I'll add that in. Thanks for the suggestion!


Cheers!

Harrier

2014-11-16 11:27:35

Could you add something like WorldInfo := [];? So you can choose what world to log into?

Hoodz

2014-11-16 12:52:50

From: Harrier
Could you add something like WorldInfo := [];? So you can choose what world to log into?


you can call changeWorld(world);

Harrier

2014-11-16 14:46:55

From: hoodz
you can call changeWorld(world);


<33

Fitta

2014-11-16 18:54:36


function IntInArrEx(var index: integer; iarr: TIntegerArray; int: Integer): boolean;
var
I: Integer;
begin
For I:=0 to High(iarr)do
if iarr[I] = int then
begin
Result := True;
Index := I;
Exit;
end;

end;

function IntInArr(iarr: TIntegerArray; int: Integer): boolean;
var
t: Integer;
begin
Result := IntInArrEx(t, iarr, int);
end;

Is there something similar to this in your include? Can't seem to find these anywhere..

Gu3st...

2014-11-17 12:15:31

From: Fitta

function IntInArrEx(var index: integer; iarr: TIntegerArray; int: Integer): boolean;
var
I: Integer;
begin
For I:=0 to High(iarr)do
if iarr[I] = int then
begin
Result := True;
Index := I;
Exit;
end;

end;

function IntInArr(iarr: TIntegerArray; int: Integer): boolean;
var
t: Integer;
begin
Result := IntInArrEx(t, iarr, int);
end;

Is there something similar to this in your include? Can't seem to find these anywhere..
inIntArrayEx/inIntArray is in simba

or

begin
writeLn(1 in [1, 2, 3]);
end.
Compiled successfully in 359 ms.
True
Successfully executed.

ineedbot

2014-11-22 20:27:07

am I the only one to have problems with the login? It seems to click in random places and not type the username or password at all.

me.name and me.password are defined..

also getSkillXP and getSkillMaxLevel don't hover over the correct skill and they dont return anything.

Flight

2014-11-23 07:32:31

From: ineedbot
am I the only one to have problems with the login? It seems to click in random places and not type the username or password at all.

me.name and me.password are defined..

also getSkillXP and getSkillMaxLevel don't hover over the correct skill and they dont return anything.


Both fixed in the next revision mate.

Flight

2014-11-23 11:26:12

Just pushed rev. 0.4 through GitHub. Quite a few bug fixes (I can't recall them all over time), many small additions made, SEWalker now has (optional) SPS-style methods, and a GroundItems entity branch was added. A couple example items are added to the database.

If you have any issues with the newest version please be sure to make a post here.

Harrier

2014-11-23 12:12:08

From: Flight
Just pushed rev. 0.4 through GitHub. Quite a few bug fixes (I can't recall them all over time), many small additions made, SEWalker now has (optional) SPS-style methods, and a GroundItems entity branch was added. A couple example items are added to the database.

If you have any issues with the newest version please be sure to make a post here.

Error: Unknown declaration "toObj"
Why do you have to change things ;)

Flight

2014-11-23 12:22:47

From: Harrier
Error: Unknown declaration "toObj"
Why do you have to change things ;)


The whole include is slowing moving to the SRL-6 style; completely object-oriented. Here's an example of how to create (and use) a TMSObject:


procedure TMSObject.create(_Name: string; _UpText: TStringArray; _InnerCols, _OuterCols: Array of TColEx);


procedure openTheBank();
var
foundPoint : TPoint;
obj_BankBooth : TMSObject;
begin // Obj name Uptext array Array of TColEx (primary) Array of TColEx (secondary)
obj_BankBooth.create('BankBooth', ['ank B','nk bo','booth'], [createCol(540243, 3, 0.10, 1.07)], [createCol(3545, 10)]);

if obj_BankBooth.find(foundPoint) then
if openBankPoint(foundPoint, True) then
writeln('We opened the bank!')
else
writeln('Failed to open the bank')
else
writeln('Failed to find the bank booth');
end;

I apologize as I realize this will cause some minor compile issues but clearly it's simple to fix.

Edit:
I need to write a bunch of tutorials, unfortunately the PrintScreen button doesn't work on my laptop so I'll have to come up with something else to take snapshots for graphic tutorials.

Harrier

2014-11-23 12:54:57

From: Flight
The whole include is slowing moving to the SRL-6 style; completely object-oriented. Here's an example of how to create (and use) a TMSObject:


procedure TMSObject.create(_Name: string; _UpText: TStringArray; _InnerCols, _OuterCols: Array of TColEx);


procedure openTheBank();
var
foundPoint : TPoint;
obj_BankBooth : TMSObject;
begin // Obj name Uptext array Array of TColEx (primary) Array of TColEx (secondary)
obj_BankBooth.create('BankBooth', ['ank B','nk bo','booth'], [createCol(540243, 3, 0.10, 1.07)], [createCol(3545, 10)]);

if obj_BankBooth.find(foundPoint) then
if openBankPoint(foundPoint, True) then
writeln('We opened the bank!')
else
writeln('Failed to open the bank')
else
writeln('Failed to find the bank booth');
end;

I apologize as I realize this will cause some minor compile issues but clearly it's simple to fix.

Edit:
I need to write a bunch of tutorials, unfortunately the PrintScreen button doesn't work on my laptop so I'll have to come up with something else to take snapshots for graphic tutorials.

Use something like Sharex or puush?

Kyle

2014-11-23 12:55:02

From: Flight
…


logInPlayer(False); Doesn't work. It missclicks on the boxes and types both username and password in the username box.

Hoodz

2014-11-23 12:55:09

From: Flight
The whole include is slowing moving to the SRL-6 style; completely object-oriented. Here's an example of how to create (and use) a TMSObject:


procedure TMSObject.create(_Name: string; _UpText: TStringArray; _InnerCols, _OuterCols: Array of TColEx);


procedure openTheBank();
var
foundPoint : TPoint;
obj_BankBooth : TMSObject;
begin // Obj name Uptext array Array of TColEx (primary) Array of TColEx (secondary)
obj_BankBooth.create('BankBooth', ['ank B','nk bo','booth'], [createCol(540243, 3, 0.10, 1.07)], [createCol(3545, 10)]);

if obj_BankBooth.find(foundPoint) then
if openBankPoint(foundPoint, True) then
writeln('We opened the bank!')
else
writeln('Failed to open the bank')
else
writeln('Failed to find the bank booth');
end;

I apologize as I realize this will cause some minor compile issues but clearly it's simple to fix.

Edit:
I need to write a bunch of tutorials, unfortunately the PrintScreen button doesn't work on my laptop so I'll have to come up with something else to take snapshots for graphic tutorials.


you can use the snipping tool on your pc.

ps: didRedClick is not working 100% of the time.

edit: after debugging with bitmaps, i noticed that sometimes the red cross is behind an osbuddy layer this is why it wasnt working

Flight

2014-11-23 13:22:22

From: elfyyy
logInPlayer(False); Doesn't work. It missclicks on the boxes and types both username and password in the username box.


Are you using SMART? I can't imagine the coordinates being off. I haven't ran SMART in well over a month, I'll have to use a throw away account and test the login procedures for SMART. Have you tried using "logInPlayer(True);"?

From: hoodz
you can use the snipping tool on your pc.

ps: didRedClick is not working 100% of the time.

edit: after debugging with bitmaps, i noticed that sometimes the red cross is behind an osbuddy layer this is why it wasnt working


Yes the include doesn't handle anything from that client. You'll have to play with the colors in "didClick" function in InputHandler.

Harrier

2014-11-23 13:23:44

From: Flight
Are you using SMART? I can't imagine the coordinates being off. I haven't ran SMART in well over a month, I'll have to use a throw away account and test the login procedures for SMART. Have you tried using "logInPlayer(True);"?



Yes the include doesn't handle anything from that client. You'll have to play with the colors in "didClick" function in InputHandler.

If you want a throw away account, PM me.

Turpinator

2014-11-23 13:24:40

From: Flight

createCol(540243, 3, 0.10, 1.07)


CTS3? Pfft. waste of time!

Kyle

2014-11-23 13:32:36

From: Flight
Are you using SMART? I can't imagine the coordinates being off. I haven't ran SMART in well over a month, I'll have to use a throw away account and test the login procedures for SMART. Have you tried using "logInPlayer(True);"?


Yeah that's with SMART. 'True' does work but it just takes so long to login that way lol.

Hoodz

2014-11-23 13:33:17

From: Flight
Are you using SMART? I can't imagine the coordinates being off. I haven't ran SMART in well over a month, I'll have to use a throw away account and test the login procedures for SMART. Have you tried using "logInPlayer(True);"?



Yes the include doesn't handle anything from that client. You'll have to play with the colors in "didClick" function in InputHandler.


yes i already fixed it ;)

agility script is close to running smooth

Flight

2014-11-23 13:48:54

From: elfyyy
Yeah that's with SMART. 'True' does work but it just takes so long to login that way lol.


Ok, this should fix the login problem: Go to Login.simba (entities > player > Login) and line 373 I believe is the part that hits enter after typing in the username. Let's replace that with a simple mouseBox:


mouseBox(pBox, MOUSE_LEFT);

I thought there might be input problems between the browser and SMART but I just tested and they work fine, just in the login procedure is VK_ENTER not handled correctly by SMART. I'll send in the fixed file to GitHub now.


Edit:
Hoodz, I believe you'll find the GroundItems file very handy seeing as you have fighting scripts. I actually wrote this to aid combat-related scripts, I hope it helps.

Edit2:
From: Turpinator
CTS3? Pfft. waste of time!

You misinterpreted the parameters of that function. The second parameter is the color tolerance (CTS0-CTS2), CTS3 isn't supported for TColEx right now.

Hoodz

2014-11-23 14:03:49

From: Flight

Hoodz, I believe you'll find the GroundItems file very handy seeing as you have fighting scripts. I actually wrote this to aid combat-related scripts, I hope it helps.


mmh okay ill implement that if people want it. now working on some other fancy scripts.

Turpinator

2014-11-23 14:12:08

From: Flight
Edit2:

You misinterpreted the parameters of that function. The second parameter is the color tolerance (CTS0-CTS2), CTS3 isn't supported for TColEx right now.

I probably did. so… CST0 = 1, CST1 = 2, and CTS2 = 3?


Oh. just standard tolerance. :(

ineedbot

2014-11-24 02:19:01

a few bugs,

isInvFull (or getInvCount) returns 0 if in a deposit boxscreen

depositAllFrom (or depositItem) tries to look for 'Deposit-All', when in deposit boxes, its 'Deposit All'.

Flight

2014-11-24 08:30:04

From: ineedbot
a few bugs,

isInvFull (or getInvCount) returns 0 if in a deposit boxscreen

depositAllFrom (or depositItem) tries to look for 'Deposit-All', when in deposit boxes, its 'Deposit All'.


Alright, I didn't know the text would differ between bank screens and deposit boxes. Thanks a lot for letting me know, I'll fix that up and push it to GitHub.

Fitta

2014-11-25 18:31:17

Hello again,

Just wanted to see if there's a possibility to add this code into aeroLib?

Reason:
Hovering the skill to get the "start" experience/level is really stupid everytime we run scripts.

Explained:
It'll use getPage once, and then work out all the numbers for each variable(rank, level and experience). I didn't want to create a separate record for such a small function.

Code:

program Hiscore;
{$i AeroLib/AeroLib.Simba}

const
HISCORE_RANK = 0;
HISCORE_LEVEL = 1;
HISCORE_XP = 2;

function getHiscoreInfo(Username: String): T2DIntegerArray;
var
I, II: Integer;
S, tS: String;
sArr, skillArr: TStringArray;
begin
S := GetPage('http://services.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=' + Username);
skillArr := ['Attack', 'Defence', 'Strength', 'Hitpoints', 'Ranged', 'Prayer', 'Magic', 'Cooking', 'Woodcutting', 'Fletching', 'Fishing', 'Firemaking', 'Crafting', 'Smithing', 'Mining', 'Herblore', 'Agility', 'Thieving', 'Slayer', 'Farming', 'Runecraft', 'Hunter', 'Construction'];

SetLength(Result, 3);
For I:=0 to 2 do
SetLength(Result[I], 23);

For I:=SKILL_ATTACK to SKILL_CONSTRUCTION do
begin
If I = SKILL_CONSTRUCTION then
tS := Between(skillArr[I], '</table>', S)
else
tS := Between(skillArr[I], '<img class', S);

sArr := MultiBetween(tS, '="right">', '</td>');
For II:=0 to 2 do
Result[II][I] := StrToIntDef(GetNumbers(sArr[II]), -1);
end;
end;

var
CharInfo: T2DIntegerArray;

begin
initAL;
CharInfo := getHiscoreInfo('vestfold');
Writeln(CharInfo[HISCORE_LEVEL][SKILL_FIREMAKING]);
end.

Kyle

2014-11-26 14:35:09

Made a pull request for a couple commits. Mousebox needs a wait or it fails to click sometimes and now smart will be automatically enable upon start of script. @Flight;

Flight

2014-11-26 14:59:01

From: elfyyy
Made a pull request for a couple commits. Mousebox needs a wait or it fails to click sometimes and now smart will be automatically enable upon start of script. @Flight;


I've already made the adjustments. I'm going to look into a possible bug with SEWalker before I push the small bug fixes. Thanks for pointing that out, Elfyyy.

Flight

2014-11-27 09:59:46

Ok Elfyyy, I pushed your fixes you told me about and I also revived the moderator detection via the chat screen. It should detected both P-Mods and J-Mods and, by default, log out if either are seen in the chat screen. This is optional, however, and can be changed at the beginning of the script.

Harrier

2014-11-29 04:48:41

You forgot to search for bank chests :p in openBankPoint()

Flight

2014-11-29 08:24:42

From: Harrier
You forgot to search for bank chests :p in openBankPoint()


That's a wonderful issue to bring up. You're right, I absolutely forgot about bank chests. I'll add that in immediately and push it to GitHub. Also, thanks for the picture.

Edit:
I'm also going to fix a small issue with the bank symbol on the minimap. Apparently if the player has running enabled the include could detect this as a bank symbol.

Fitta

2014-11-29 11:05:13

From: Flight
Apparently if the player has running enabled the include could detect this as a bank symbol.


What are the odds of this? haha..


Flight, could you please make a global variable for updating the include by default directly from github when initAL is called?


program new;
{$i AeroLib/AeroLib.Simba}

begin
AL_ForceUpdate := True;
initAL;
end.

Would be extremely helpful.

Kyle

2014-11-29 11:13:50

From: Fitta
What are the odds of this? haha..


Flight, could you please make a global variable for updating the include by default directly from github when initAL is called?


program new;
{$i AeroLib/AeroLib.Simba}

begin
AL_ForceUpdate := True;
initAL;
end.

Would be extremely helpful.


Atm you really can't update through github with simba as simba can't resolve the https through github. It works for some computers but not for the rest.

Fitta

2014-11-29 11:32:05

From: elfyyy
Atm you really can't update through github with simba as simba can't resolve the https through github. It works for some computers but not for the rest.


There must be a work-around?

Kyle

2014-11-29 11:46:05

From: Fitta
There must be a work-around?


Not that I know of, @Olly; found a site that worked perfectly, but it saved a cached version from the first time you use it, which doesn't exactly help for making a updater!

Harrier

2014-11-29 12:02:38

From: elfyyy
Not that I know of, @Olly; found a site that worked perfectly, but it saved a cached version from the first time you use it, which doesn't exactly help for making a updater!

2 methods to get around it; make people download OpenSSL or setup a proxy/ask frement if we can use his proxy

Frement

2014-11-29 12:03:54

From: Harrier
2 methods to get around it; make people download OpenSSL or setup a proxy/ask frement if we can use his proxy


Well it's a public link, has no restrictions, 100% live, and the main reason why I made it.

Fitta

2014-11-29 12:07:04

From: Harrier
2 methods to get around it; make people download OpenSSL or setup a proxy/ask frement if we can use his proxy


Couldn't there just be a mirror over at googlecode?

Harrier

2014-11-29 12:09:47

From: Fitta
Couldn't there just be a mirror over at googlecode?

Guess that would be the best method

Frement

2014-11-29 12:26:14

Also I see Ashaman88 is using it in his Ivy script atleast.

Kyle

2014-11-29 13:19:34

From: Frement
Also I see Ashaman88 is using it in his Ivy script atleast.


Not sure what's wrong, but it doesn't seem to work for some shorter links on github. Maybe I'm missing something, but if you just delete the proxy it works fine.

http://static.frement.net/proxy.php?u=https://raw.githubusercontent.com/Elfyyy/reflection/master/Include%20Rev.txt

Frement

2014-11-29 13:26:09

From: elfyyy
Not sure what's wrong, but it doesn't seem to work for some shorter links on github. Maybe I'm missing something, but if you just delete the proxy it works fine.

http://static.frement.net/proxy.php?u=https://raw.githubusercontent.com/Elfyyy/reflection/master/Include%20Rev.txt


Thats because there is a space in the URL, I went ahead and fixed the problem.

Goobs

2014-11-29 21:17:50

So, I been making my own scripts again and I screwed up something… Found out that one of the methods I made actually was included in it… You made me post again =P I am so glad that it got used, though honestly MastaRaymond was the one who gave me the real bones of the function. A question, is there a tutorial for SEWalker? I have been using it, but it uses global maps instead of custom ones, and I haven't done mapwalking since SPS first came out, so.. Yes :) Thank you for making me post again, Flight! And a badass include you have prepared.

Flight

2014-11-29 22:44:20

From: ProphesyOfWolf
So, I been making my own scripts again and I screwed up something… Found out that one of the methods I made actually was included in it… You made me post again =P I am so glad that it got used, though honestly MastaRaymond was the one who gave me the real bones of the function. A question, is there a tutorial for SEWalker? I have been using it, but it uses global maps instead of custom ones, and I haven't done mapwalking since SPS first came out, so.. Yes :) Thank you for making me post again, Flight! And a badass include you have prepared.


I remember your function very well, I was, and still am impressed with it. I hope it's not an issue it was included in AeroLib; I made sure to fully credit you.

No I've not yet made any tutorials for using the include and especially none yet for SEWalker as that wasn't made by me. I don't know if I would qualify for making tutorials. But I can tell you how to do a custom map. Also it's important to remember SEWalker is designed object-oriented. Here's a short example:


program TestWalking;
{$DEFINE SEWalker}
{$i AeroLib/AeroLib.Simba}

Var
TargetTile : TPoint;
Walker : SEWalker;

begin
initAL();

TargetTile := point(245, 330);

// Loads a custom map named 'AbyssEdge' which as a length and width of 554/429
Walker.InitCustom('AbyssEdge', [554,429]);

Writeln('My current position is '+toStr(Walker.GetMyPos()));

if Walker.pointOnMM(TargetTile) then
begin
Writeln('Our destination is already nearby');
Walker.WalkToPos(TargetTile);
end else
begin
Writeln('We'#39're far from our destination, blind-walking...');
Walker.blindWalk(TargetTile);
end;

// Always free the SEWalker upon script termination
Walker.Free();
end.

That should give you a basic idea of how to use it.

Goobs

2014-11-29 22:52:26

From: Flight
I remember your function very well, I was, and still am impressed with it. I hope it's not an issue it was included in AeroLib; I made sure to fully credit you.

No I've not yet made any tutorials for using the include and especially none yet for SEWalker as that wasn't made by me. I don't know if I would qualify for making tutorials. But I can tell you how to do a custom map. Also it's important to remember SEWalker is designed object-oriented. Here's a short example:


program TestWalking;
{$DEFINE SEWalker}
{$i AeroLib/AeroLib.Simba}

Var
TargetTile : TPoint;
Walker : SEWalker;

begin
initAL();

TargetTile := point(245, 330);

// Loads a custom map named 'AbyssEdge' which as a length and width of 554/429
Walker.InitCustom('AbyssEdge', [554,429]);

Writeln('My current position is '+toStr(Walker.GetMyPos()));

if Walker.pointOnMM(TargetTile) then
begin
Writeln('Our destination is already nearby');
Walker.WalkToPos(TargetTile);
end else
begin
Writeln('We'#39're far from our destination, blind-walking...');
Walker.blindWalk(TargetTile);
end;

// Always free the SEWalker upon script termination
Walker.Free();
end.

That should give you a basic idea of how to use it.


Very nice. I suppose I mislead you earlier - I have been using the maps provided with SEWalker, and here's the relevant code to show you what I've been doin..

function WTTan: boolean;
begin
Result := True;
WalkMe.Walk([IntToPoint(4943, 3986), IntToPoint(4928, 3926)]);
while(IsPlayerWalking) do AntiBan;
end;

function WTBan: boolean;
begin
Result := True;
WalkMe.Walk([IntToPoint(4942, 3982), IntToPoint(4907, 4017)]);
while(IsPlayerWalking) do AntiBan;
Wait(randomrange(450, 750));
end;

In the main loop, I call:

WalkMe.init(['15_19', '16_19']); 

Which, when I call GetMyPos, gives me the coords on the global map, instead of the areas I have defined. I was wondering why init didn't work like I thought it would. It seems I should invest my time in making my own maps =P

Flight

2014-11-29 23:00:08

From: ProphesyOfWolf
Very nice. I suppose I mislead you earlier - I have been using the maps provided with SEWalker, and here's the relevant code to show you what I've been doin..

function WTTan: boolean;
begin
Result := True;
WalkMe.Walk([IntToPoint(4943, 3986), IntToPoint(4928, 3926)]);
while(IsPlayerWalking) do AntiBan;
end;

function WTBan: boolean;
begin
Result := True;
WalkMe.Walk([IntToPoint(4942, 3982), IntToPoint(4907, 4017)]);
while(IsPlayerWalking) do AntiBan;
Wait(randomrange(450, 750));
end;

In the main loop, I call:

WalkMe.init(['15_19', '16_19']); 

Which, when I call GetMyPos, gives me the coords on the global map, instead of the areas I have defined. I was wondering why init didn't work like I thought it would. It seems I should invest my time in making my own maps =P


I've actually never used the normal map files, I've always created and walked via my own custom maps so I'm not sure what good I'll do here. I believe Olly or Slacky would be the absolute best people to talk to for the SEWalker.


Edit:
This is for everyone: I just pushed some small updates to GitHub and I've changed the revision number to an actual number which will basically be a count of how many times I make updates to GitHub. Since 0.4 was released I've pushed 2 updates therefore the main version of AeroLib is still 1.0 but the revision number is 2. This should make things a lot more clear every time I make adjustments and updates via GitHub.

Goobs

2014-11-29 23:15:47

From: Flight
I've actually never used the normal map files, I've always created and walked via my own custom maps so I'm not sure what good I'll do here. I believe Olly or Slacky would be the absolute best people to talk to for the SEWalker.


Edit:
This is for everyone: I just pushed some small updates to GitHub and I've changed the revision number to an actual number which will basically be a count of how many times I make updates to GitHub. Since 0.4 was released I've pushed 2 updates therefore the main version of AeroLib is still 1.0 but the revision number is 2. This should make things a lot more clear every time I make adjustments and updates via GitHub.


It's probably best that people don't use the worldmap for traveling.. Honestly, it shouldn't even include them, but include instructions on how to make your own map with paint =P

slacky

2014-11-29 23:16:39

@ProphesyOfWolf
Only way with custom maps (atm) is to use a single map-image, you can't use multiple images. So you take the two pieces you want and combine em in to one piece then you use SEWalker.InitCustom with that custom map.
SEWalker.Init will always give you the global position.

Edit:
Also, you should just pass [250,250] to the last param in SEWalker.InitCustom that parameter has been added (by flight) for no reason, it doesn't do anything good.
@Flight why did you add that parameter? It's not used anywhere in SEWalker for custom maps. The constant (which you changed to a var) `SEW_Map_Size: TSize2D = [250,250];` is only used when assembling map-pieces which is only for "Init", and not for custom maps.
Be warned: If you do not pass 250,250 to InitCustom, you will break SEWalker if you have multiple walkers, where one of the walkers use Init(..). Flight, you should revert those changes you made to modify SEW_Map_Size (asap) that's a bad idea, and it does nothing good.

"We" can add a GetLocalPos() which does not compute the global position, that way they can use SEWalker.Init the way he wants to, can call GetLocalPos to get the local position based on the loaded maps.

Goobs

2014-11-29 23:25:35

From: slacky
@ProphesyOfWolf
Only way with custom maps (atm) is to use a single map-image, you can't use multiple images. So you take the two pieces you want and combine em in to one piece then you use SEWalker.InitCustom with that custom map.
SEWalker.Init will always give you the global position.


There should be a tutorial for this ;) I have seen talk of people wanting to combine SRL-OSR with Aerolib, which to me makes sense. It only requires testing and revamping, because all of the old functions are still there are only very slightly off of what they should be. They should be combined, and a scripting reference created so people understand what's going on (we could write a script similar to JavaDocs and post it like the SIMBA scripting reference is). A lot of shoulds and coulds, yes, but OSR is a goldmine waiting to be tapped, and as a community we should focus on working with it.

Incurable

2014-11-29 23:43:45

From: ProphesyOfWolf
There should be a tutorial for this ;) I have seen talk of people wanting to combine SRL-OSR with Aerolib, which to me makes sense. It only requires testing and revamping, because all of the old functions are still there are only very slightly off of what they should be. They should be combined, and a scripting reference created so people understand what's going on (we could write a script similar to JavaDocs and post it like the SIMBA scripting reference is). A lot of shoulds and coulds, yes, but OSR is a goldmine waiting to be tapped, and as a community we should focus on working with it.


If anything, a new include that combines SRL-OSR and SRL-6 should be created so that we can script for both versions of the game with the exact same include… the problem is that no one is willing to commit the time to do it (or they're like me and do, but lack the knowledge).

slacky

2014-11-29 23:45:55

From: Incurable
If anything, a new include that combines SRL-OSR and SRL-6 should be created so that we can script for both versions of the game with the exact same include… the problem is that no one is willing to commit the time to do it (or they're like me and do, but lack the knowledge).

There is already some work ongoing. The base just needs to be finished before it's commited to GitHub. Once that is done, the rs related work can start.

The Mayor

2014-11-30 01:18:21

From: slacky
There is already some work ongoing. The base just needs to be finished before it's commited to GitHub. Once that is done, the rs related work can start.


That's good to hear. Who's working on the base?

Flight

2014-11-30 05:31:17

From: slacky

Edit:
Also, you should just pass [250,250] to the last param in SEWalker.InitCustom that parameter has been added (by flight) for no reason, it doesn't do anything good.
@Flight why did you add that parameter? It's not used anywhere in SEWalker for custom maps. The constant (which you changed to a var) `SEW_Map_Size: TSize2D = [250,250];` is only used when assembling map-pieces which is only for "Init", and not for custom maps.
Be warned: If you do not pass 250,250 to InitCustom, you will break SEWalker if you have multiple walkers, where one of the walkers use Init(..). Flight, you should revert those changes you made to modify SEW_Map_Size (asap) that's a bad idea, and it does nothing good.

"We" can add a GetLocalPos() which does not compute the global position, that way they can use SEWalker.Init the way he wants to, can call GetLocalPos to get the local position based on the loaded maps.


Looking through SEWalker I see that SEW_Map_Size is only used for assembling maps therefore not required for iniCustom. I'll remove that extra parameter and set 'SEW_Map_Size' back to static. For what it's worth I've never had issues with that.

Goobs

2014-11-30 11:09:45

From: Flight
Looking through SEWalker I see that SEW_Map_Size is only used for assembling maps therefore not required for iniCustom. I'll remove that extra parameter and set 'SEW_Map_Size' back to static. For what it's worth I've never had issues with that.



Nifty nifty! Things are rolling along now :) I am not sure if this is just my computer or what, but sometimes Simba doesn't pair with SMART and it tries to open a new jar, which only works half of the time. So, one third of the time it works as expected, a second third it will bring up a java console and load a new smart, and the strangest third is when it tries to bring up a new window and then excepts. Maybe my computer is cursed =P

slacky

2014-11-30 12:09:33

From: Flight
Looking through SEWalker I see that SEW_Map_Size is only used for assembling maps therefore not required for iniCustom. I'll remove that extra parameter and set 'SEW_Map_Size' back to static. For what it's worth I've never had issues with that.


What could have failed can be explained like this:

WalkerA.InitCustom('somemap',[10,10])
--> SEW_Map_Size := [10,10];

WalkerB.Init([map_pieces...])
--> call AssembleMaps([map_pieces...])
//AssembleMaps:
----> ...
----> Result := Point(LX * SEW_Map_Size.W, LY * SEW_Map_Size.H); //ref link 1
//instead of Result := Point(LX*250, LY*250); it will yield Result := Point(LX*10, LY*10);
//it also uses the SEW_Map_Size to position each piece properly on the output image:
----> ...
----> Pos := Point((SX-LX) * SEW_Map_Size.W, (SY-LY) * SEW_Map_Size.H); //ref link 2
//that would also fail since SEW_Map_Size was now equal [10,10]
Ans so the positionioning of the map pieces would go to hell, and the TopLeft coordinate stored would be very off.
[1]: https://github.com/J-Flight/AeroLib/blob/master/core/minimap/SEWalker.simba#L219
[2]: https://github.com/J-Flight/AeroLib/blob/master/core/minimap/SEWalker.simba#L227

Hmm.. "function AssambleMaps", see the mistake? :P

Edit:
@ProphesyOfWolf: Come to think about it, you can probably just do:

WalkMe.Init(['15_19', '16_19']);
WalkMe.TopLeft := [0,0];
That should work like you want it to: GetMyPos should now return the local position based on the maps given, and not the global pos.

Goobs

2014-11-30 12:12:48

From: The Mayor
That's good to hear. Who's working on the base?


@Flight @Slacky I would like to help with this if possible

slacky

2014-11-30 12:27:48

From: ProphesyOfWolf
@Flight @Slacky I would like to help with this if possible

you could try to have a talk with Olly @ IRC (on #SRL or #Simba).
Tho I have feeling he wanna sit on what he have for a while longer.

Kyle

2014-12-02 07:50:21

@Flight;

Could you please remove from SimbaEx:
Procedure Pointer.Inc(Size: Int64);

It causes really weird errors when using Setlength within a function type. It can be removed with no errors and reflection won't run with it there. Thanks!

Flight

2014-12-02 10:14:07

From: elfyyy
@Flight;

Could you please remove from SimbaEx:
Procedure Pointer.Inc(Size: Int64);

It causes really weird errors when using Setlength within a function type. It can be removed with no errors and reflection won't run with it there. Thanks!


The SimbaExt include belongs to Slacky, I wouldn't add or remove anything to or from it. You'll have to talk with him directly about that.

Kyle

2014-12-02 10:18:03

From: Flight
The SimbaExt include belongs to Slacky, I wouldn't add or remove anything to or from it. You'll have to talk with him directly about that.


Already did, that's why I said to remove it :p @slacky;

Flight

2014-12-02 11:39:06

From: elfyyy
Already did, that's why I said to remove it :p @slacky;


..Or are you referring to Brandon's function in core > engine > SimbaEx.simba? :

Procedure Pointer.Inc(Size: Int64);
Begin
Self := Self + Size;
End;

If so tell me and I'll just remove it. I don't see where it's needed at this point in time.

Kyle

2014-12-02 12:33:27

From: Flight
..Or are you referring to Brandon's function in core > engine > SimbaEx.simba? :

Procedure Pointer.Inc(Size: Int64);
Begin
Self := Self + Size;
End;

If so tell me and I'll just remove it. I don't see where it's needed at this point in time.


Yeah that's what i'm referring to!

ineedbot

2014-12-04 22:23:05

A suggestion, could you add smartShowConsole just like srl-6 has where it allows the user to hide the smart console by allowing the smart target to 'javaw.exe' other than 'java.exe'.

As well as Me.Worldlist is unused, could it possible to get that going again? And world 308 and 316 count as f2p and f2p trial accounts can log on to them

levelUpEx doesn't work, even though I leveled up.

randomMovement; //Error: ActivateClient not available for this target at line 251

TSmart.GetWorld might return a world that isn't loadable,failing to init a smart client… i made a simple fix;
worlds := [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 25, 26,
27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 51, 52,
53, 54, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 75, 76, 77, 78,
81, 82, 83, 84, 93, 94];
result := intToStr(worlds[random(high(worlds))]);

OpenBankPoint sometimes fails on deposit boxes..

Fitta

2014-12-07 09:34:11

Flight, was is your take on moving/mirror'ing the project so we can have an auto updater?

Goobs

2014-12-09 01:49:31

From: slacky
What could have failed can be explained like this:

WalkerA.InitCustom('somemap',[10,10])
--> SEW_Map_Size := [10,10];

WalkerB.Init([map_pieces...])
--> call AssembleMaps([map_pieces...])
//AssembleMaps:
----> ...
----> Result := Point(LX * SEW_Map_Size.W, LY * SEW_Map_Size.H); //ref link 1
//instead of Result := Point(LX*250, LY*250); it will yield Result := Point(LX*10, LY*10);
//it also uses the SEW_Map_Size to position each piece properly on the output image:
----> ...
----> Pos := Point((SX-LX) * SEW_Map_Size.W, (SY-LY) * SEW_Map_Size.H); //ref link 2
//that would also fail since SEW_Map_Size was now equal [10,10]
Ans so the positionioning of the map pieces would go to hell, and the TopLeft coordinate stored would be very off.
[1]: https://github.com/J-Flight/AeroLib/blob/master/core/minimap/SEWalker.simba#L219
[2]: https://github.com/J-Flight/AeroLib/blob/master/core/minimap/SEWalker.simba#L227

Hmm.. "function AssambleMaps", see the mistake? :P

Edit:
@ProphesyOfWolf: Come to think about it, you can probably just do:

WalkMe.Init(['15_19', '16_19']);
WalkMe.TopLeft := [0,0];
That should work like you want it to: GetMyPos should now return the local position based on the maps given, and not the global pos.


It doesn't work for me, if I do initcustom or init and fudge the image into the surface folder with the same naming convention. Each way I do it, I get the following error:

[AL] Startup complete!
WARNING: Sub cannot be larger then Image
Error: Access violation at line 289
Execution failed.

Lines that executed:

begin
DeclarePlayers;
initAL();
WalkMe.initcustom('CathCook');
LoginPlayer(False);
SetAngle(0);
MouseSpeed := MouseSpeed * 3;
repeat
WriteLN(tostr(WalkMe.GetMyPos));
wait(10000);
until(false);
end.

Hoodz

2014-12-09 03:17:30

From: Probably Glitched
It doesn't work for me, if I do initcustom or init and fudge the image into the surface folder with the same naming convention. Each way I do it, I get the following error:

[AL] Startup complete!
WARNING: Sub cannot be larger then Image
Error: Access violation at line 289
Execution failed.

Lines that executed:

begin
DeclarePlayers;
initAL();
WalkMe.initcustom('CathCook');
LoginPlayer(False);
SetAngle(0);
MouseSpeed := MouseSpeed * 3;
repeat
WriteLN(tostr(WalkMe.GetMyPos));
wait(10000);
until(false);
end.


There are also params for the map size with initCustom

Goobs

2014-12-09 16:20:43

From: hoodz
There are also params for the map size with initCustom


Not in the newest master of it there isn't o.O

I'm assume it's SEW_Map_Size that needs to change, so I'll just write that in myself.

Goobs

2014-12-09 16:23:49

Even with SEW_Map_Size changed it still gives me the same exception.

slacky

2014-12-09 19:33:58

From: Probably Glitched
Even with SEW_Map_Size changed it still gives me the same exception.

From: hoodz
There are also params for the map size with initCustom

I said SEW_Map_Size should never be changed. It's ONLY needed for the orginal-map pack, and ONLY used along with the Init-function to assemble the pieces in the map-pack to one big image. InitCustom will never need it.


@Probably Glitched: Upload your map.
The issue is probably that you got a VERY small image (like less then 100x100 or so). Or that you did not give the correct path, or name, so that it didn't load.
Yout custom map must be in the Includes/AeroLib/maps/custom/ folder, and the extension must be a png. The name given to InitCustom is without the extension.

Flight

2014-12-10 08:04:25

From: Probably Glitched
Even with SEW_Map_Size changed it still gives me the same exception.


Did you look over the example I posted on the previous page? It should remain the same, just remove the size parameter I used in that. I'd also like to see the map you're wanting to use.

Hoodz

2014-12-10 11:19:08

From: Flight
Did you look over the example I posted on the previous page? It should remain the same, just remove the size parameter I used in that. I'd also like to see the map you're wanting to use.


it's probably his map since he could load my maps

Goobs

2014-12-12 01:52:12

Yes, my issue was fixed in that matter. My map was too small, so it failed out.

But I have come across another issue.. Consider the map png attached, of Lumbridge 3rd level and Lumbridge 2nd level. I carefully took several true north and near true north mm images and 'shopped them into my maps. Which I fudged into the maps folder so I could use the (in my mind) most reliable part of SEW. I have noticed, regardless of which map I use, there is a degree of.. slipping. I know that the minimap shift has an effect on the positioning of any color based system, but I have noticed severe shifts in tile walking. I.E. I have a stable walk method to the inside of the bank and I check it two hours later and they're walking outside of the bank. This swings from right to left, up to down, and I have to constantly adjust the tile TPoint in order for my script to not seem completely botted.

Anyways, tell me what you think of my maps, and what you think of what I said. Or, more importantly, how I can fix my troubles? It will shift for any points, not just one. So, maybe a point will be [10, 10] on my map. It will shift around 10 tiles in either direction (simply because SEWalker will determine the same position to be between 3 tiles of a central number), and it is impossible to let a script go on it's own due to the necessity of babysitting.

Flight

2014-12-12 08:01:40

From: Probably Glitched
Yes, my issue was fixed in that matter. My map was too small, so it failed out.

But I have come across another issue.. Consider the map png attached, of Lumbridge 3rd level and Lumbridge 2nd level. I carefully took several true north and near true north mm images and 'shopped them into my maps. Which I fudged into the maps folder so I could use the (in my mind) most reliable part of SEW. I have noticed, regardless of which map I use, there is a degree of.. slipping. I know that the minimap shift has an effect on the positioning of any color based system, but I have noticed severe shifts in tile walking. I.E. I have a stable walk method to the inside of the bank and I check it two hours later and they're walking outside of the bank. This swings from right to left, up to down, and I have to constantly adjust the tile TPoint in order for my script to not seem completely botted.

Anyways, tell me what you think of my maps, and what you think of what I said. Or, more importantly, how I can fix my troubles? It will shift for any points, not just one. So, maybe a point will be [10, 10] on my map. It will shift around 10 tiles in either direction (simply because SEWalker will determine the same position to be between 3 tiles of a central number), and it is impossible to let a script go on it's own due to the necessity of babysitting.


Have you tried merging the two maps into a single map and loading that? I believe areas like that will be hard to get an accurate read on as there's very little actual color to compare to your map.

If it were me I'd just use a set of minimap DTMs for positioning and walking in that area. One for the bank, one for the stars at the top level, one for the stairs at the level below and one for the spinning wheel (or use a MM symbol).

Goobs

2014-12-15 13:01:57

I managed to work with those as they are, and they're relatively accurate at the moment.

Now I am having issues with walking outside of the castle. When I try to take the first click (to get next to the bridge), it clicks waay up the river near the furnace instead of anywhere close to where I want it. I was a little lazy about removing a few symbols, but I have used the surface maps provided before that have symbols and it worked pretty accurately. This one doesn't work at all. Though at least it doesn't except =P

[ATTACH=CONFIG]24592[/ATTACH]

Olly

2014-12-15 13:52:37

From: Probably Glitched
I managed to work with those as they are, and they're relatively accurate at the moment.

Now I am having issues with walking outside of the castle. When I try to take the first click (to get next to the bridge), it clicks waay up the river near the furnace instead of anywhere close to where I want it. I was a little lazy about removing a few symbols, but I have used the surface maps provided before that have symbols and it worked pretty accurately. This one doesn't work at all. Though at least it doesn't except =P

[ATTACH=CONFIG]24592[/ATTACH]


You need a bigger map man, alot bigger.

simo454

2014-12-26 05:58:13

hey flight, how do you start the script, everything compiles but how do i run it??

Harrier

2014-12-26 08:20:54

From: simo454
hey flight, how do you start the script, everything compiles but how do i run it??

You click run?

Flight

2014-12-26 09:06:29

From: simo454
hey flight, how do you start the script, everything compiles but how do i run it??


This include is only a library of code and useful functions, it won't do anything on it's own. It's intended to make scripting much easier and efficient for OSRS. Unless you're referring to a script you've downloaded from the forums, in that case just hit the green arrow near the top of Simba to run the script.

simo454

2014-12-26 12:08:20

so I have every library download from your script, but do you some type of vid that shows how you would get old school client working on yours?

everything compiles, I just need to know if it runs the old school client?

Flight

2015-01-15 11:03:47

Updated to revision #3 . This is also just some updates to existing code and what not. There's also some updates to how SMART is loaded; the correct URL is called and you may also use your own useragent when loading the client. If not a default (updated) one is set but you can set your own like so:


program new;
{$DEFINE SMART}
{$i AeroLib/AeroLib.Simba}

begin
SMART_UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.62 Safari/537.36';
initAL();
end.


If anyone has any issues or suggestions be sure to post them here.

Flight

2015-01-25 11:25:41

Updated the include with another small revision. This one doesn't bring any new content but includes various tweaks to cut down on CPU usage.

Harrier

2015-01-25 11:43:09

From: Flight
Updated the include with another small revision. This one doesn't bring any new content but includes various tweaks to cut down on CPU usage.

Thanks :) And could you add something like bankScreen.open(BANK_CHEST); (I can get all the colours for each bank :))

bot under radar

2015-01-30 15:13:17

The zipped fie you say for SimbaExt, its a .rar its isnt zipped so mine wont work. only says "Exception in Script: Unable to find file 'SimbaExt/SimbaExt.simba' used from 'C:\Simba\Includes\AeroLib\AeroLib.Simba'"

Harrier

2015-01-30 16:12:23

From: bot under radar
The zipped fie you say for SimbaExt, its a .rar its isnt zipped so mine wont work. only says "Exception in Script: Unable to find file 'SimbaExt/SimbaExt.simba' used from 'C:\Simba\Includes\AeroLib\AeroLib.Simba'"

So, use something like 7zip to decompress it?

Kyle

2015-01-30 16:27:05

From: bot under radar
The zipped fie you say for SimbaExt, its a .rar its isnt zipped so mine wont work. only says "Exception in Script: Unable to find file 'SimbaExt/SimbaExt.simba' used from 'C:\Simba\Includes\AeroLib\AeroLib.Simba'"


A .rar is compressed. You need to extract it

bot under radar

2015-01-30 18:02:33

there is no way to extract it. ive tried right clicking it. no way to open it or anything

Kyle

2015-01-30 18:03:29

From: bot under radar
there is no way to extract it. ive tried right clicking it. no way to open it or anything


Download 7zip..

bot under radar

2015-01-31 14:28:11

which one do i download? there are 4 of them

Flight

2015-01-31 14:38:02

From: bot under radar
which one do i download? there are 4 of them


There's 3 under the Downloads text on the OP. Download them all and follow the detailed instructions for installation.

KeepBotting

2015-01-31 15:38:43

From: Flight
There's 3 under the Downloads text on the OP. Download them all and follow the detailed instructions for installation.


He means 7-Zip.
@bot under radar;, get this. It'll make your life a bit easier (hah!).

grats

2015-01-31 17:27:47

From: KeepBotting
He means 7-Zip.
@bot under radar;, get this. It'll make your life a bit easier (hah!).


Vouch
if 7zip team actually made what easy 7z is.. winrar wouldn't exist anymore, which it shouldn't.

KeepBotting

2015-01-31 18:54:14

From: grats
Vouch
if 7zip team actually made what easy 7z is.. winrar wouldn't exist anymore, which it shouldn't.


Agreed. WinRAR is annoying as balls. I put up with it for longer that I care to admit before making the switch to 7-Zip and subsequently Easy 7-Zip

bot under radar

2015-02-05 16:01:44

I dont freaking understand this foreign language >.<

Now its saying "Exception in Script: Unknown compiler directives at 5:3"

I've done everything exactly how its posted

Rlp

2015-02-05 16:16:04

From: bot under radar
I dont freaking understand this foreign language >.<

Now its saying "Exception in Script: Unknown compiler directives at 5:3"

I've done everything exactly how its posted


Not quite, you can fix it.


Floor66

2015-02-09 10:27:04

Awesome job! I'll be sure to follow this closely :)

ineedbot

2015-02-11 15:24:20

Depositbox has been updated:

Flight

2015-02-12 19:31:16

From: ineedbot
Depositbox has been updated:


Ok I added those three buttons. Does depositing items individually still work correctly? Was that changed in any way?

The changes will come along with the next release which I'm planning to do sometime soon.

ineedbot

2015-02-12 21:14:52

From: Flight
Ok I added those three buttons. Does depositing items individually still work correctly? Was that changed in any way?

The changes will come along with the next release which I'm planning to do sometime soon.


May have to redo the interface, OpenBankPoint doesn't return true when opening a depositbox. I guess Interface.IsVisible is outdated.

Flight

2015-02-12 23:40:02

From: ineedbot
May have to redo the interface, OpenBankPoint doesn't return true when opening a depositbox. I guess Interface.IsVisible is outdated.


Indeed it was, simple fix. I'm planning for tomorrow to for a major update to AL.

Flight

2015-02-13 10:16:23

Updated to version 1.1.

This was a bigger update to the include. Some of what was changed is listed as:
  • SEWalker, SPS and SimbaExt all removed from AeroLib
  • RSWalker integrated into AL
  • Bug fixes including banking, interfaces, login procedures and world lists
  • Highscores statistics grabbing

For those of you wanting to use RSWalker you'll find it's similar to setup as with SEWalker. Here's an example script:

program new;
{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}


Var
Walker : TRSWalker;

begin
initAL();

{$IFDEF SMART}
Walker.Init('surface', 'WorldMap', OS_SMART.ID);
{$ELSE}
Walker.Init('surface', 'WorldMap', w_getClientPID());
{$ENDIF}

Walker.skipClose := 30;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

writeln('MyPos: '+toStr(Walker.getMyPos()));
Walker.Free();
end.

I recommend users reading over Slacky's post regarding RSWalker for general information. Map files must be in PNG format and if you have custom map files you can add them to 'AeroLib > maps > custom'. If the GitHub version doesn't come with this folder just add it yourself in that directory. Loading a map in that folder will also require you to use "custom" as opposed to "surface" as a parameter while setting up RSW. An example of this:

{$IFDEF SMART}
Walker.Init('custom','EssenceMine', OS_SMART.ID); // Will load "EssenceMine.png" from the 'custom' maps directory
{$ELSE}
Walker.Init('custom','EssenceMine', w_getClientPID());
{$ENDIF}

Also in addition to Slacky's stock version, this RSW also comes with the handy 'blindWalk' function, which will create a randomly generated path to your target destination and walk you to that tile.


Be sure to notify me immediately of any issues related to AeroLib. Happy scripting.

Floor66

2015-02-13 11:13:08

Downloading! Nice work :-)

ineedbot

2015-02-13 17:11:51

Nice job, RSWalker is really something cool!

A few things I noticed; OpenBankPoint on rightclick on a deposit box will never open the box. And sometimes it thinks there is NPC dialog because of the chat at the bottom of the screen and sometimes clicks to continue when it shouldn't.

A suggestion, could you add smartShowConsole just like srl-6 has where it allows the user to hide the smart console by allowing the smart target to 'javaw.exe' other than 'java.exe'.

levelUpEx isn't working properly. Not returning true when it does level up.

With randomMovement I'm getting 'Error: ActivateClient not available for this target at line 251' on the Antiban.simba

For TSmart.GetWorld,
worlds := [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 25, 26,
27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 51, 52,
53, 54, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 75, 76, 77, 78,
81, 82, 83, 84, 93, 94];
result := intToStr(worlds[random(high(worlds))]);
Because some worlds don't exist, like world 7 for example.

Could we have a SMART_World var as well?

I noticed IgnoreWorlds have worlds 308 and 316 on ignore, but not the other f2p worlds.

Hoodz

2015-02-14 07:27:48

From: ineedbot

With randomMovement I'm getting 'Error: ActivateClient not available for this target at line 251' on the Antiban.simba

i got this as well. just remove the line and it should be fine.


ps: flight i told you i would pm you but there came something in between.. hopefully i can send it today.

Flight

2015-02-15 11:30:39

From: ineedbot

A few things I noticed; OpenBankPoint on rightclick on a deposit box will never open the box. And sometimes it thinks there is NPC dialog because of the chat at the bottom of the screen and sometimes clicks to continue when it shouldn't.


Ok I adjusted the 'openBankPoint' function and it should include correctly opening deposit boxes via right-click. The click-to-continue was added for one specific bank: the bank in Port Phasmatys if not wearing an amulet of Ghost Speak. I'll go ahead and remove that part on the function and leave it up to the scripter to handle that particular situation.

From: ineedbot

A suggestion, could you add smartShowConsole just like srl-6 has where it allows the user to hide the smart console by allowing the smart target to 'javaw.exe' other than 'java.exe'.


I could look into that later.

From: ineedbot

levelUpEx isn't working properly. Not returning true when it does level up.


I'm surprised to hear that. I looked it over and I don't see where it could go wrong. It should at the last line of chat in the chatbox for "You just advanced a —- level.". Unless that text has changed I think it should still function correctly.

From: ineedbot

With randomMovement I'm getting 'Error: ActivateClient not available for this target at line 251' on the Antiban.simba


Fixed.

From: ineedbot

For TSmart.GetWorld,
worlds := [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 25, 26,
27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 49, 50, 51, 52,
53, 54, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 75, 76, 77, 78,
81, 82, 83, 84, 93, 94];
result := intToStr(worlds[random(high(worlds))]);
Because some worlds don't exist, like world 7 for example.


That's a good suggestion, added.

From: ineedbot

Could we have a SMART_World var as well?

I noticed IgnoreWorlds have worlds 308 and 316 on ignore, but not the other f2p worlds.


Added SMART_World variable. It can be used the same way you'd load a custom useragent for SMART; defining it before "initAL()". And about the ignore worlds, I originally added those to the list because I thought they were free world-based high risk worlds. Even though this list can be set within the script as well I'll go ahead and remove them now.


Thank you very much for all your bug reports, ineedbot; it's helping me out a great deal. Keep 'em coming!

Floor66

2015-02-16 08:47:34

Flight I have to ask - looking at the code, it seems dismissing talking randoms should work fine. In reality, however I've yet to have foundRandoms(); properly detect and solve a talking random. Anything I could be doing wrong here? I've set Me.Nick.

Flight

2015-02-16 09:15:31

From: Floor66
Flight I have to ask - looking at the code, it seems dismissing talking randoms should work fine. In reality, however I've yet to have foundRandoms(); properly detect and solve a talking random. Anything I could be doing wrong here? I've set Me.Nick.


When random events were given the option to dismiss in-game I stopped development at that point. I can imagine if one wished to have AL solve the random event instead it would need to first start the chat with the NPC, choose the option (whatever that may be) to accept their challenge and wait until the random solver has detected we're in a random event. Then the solver would do its job. With that being said yes I can see where the solvers would no longer work even if they're set to solve randoms rather than dismiss them.

So no it's certainly not you, AL would fail to correctly enter the random event. But if you'd like to try anyways you could set "DISABLE_RANDOMS" to false in the beginning of your script before "initAL()".

begin
DISABLE_RANDOMS := False;
declarePlayer();
initAL();
end.


Edit:
Updated to revision #1 which just included bug fixes brought up by ineedbot.

Floor66

2015-02-16 10:05:05

Oh sorry for my incorrect wording. It's not even dismissing the randoms that I am getting either.

EDIT:
Should I declare my player (Me.xxx) before or after initAL();?

EDIT2:
Answered my own question while I got a random event running my script ;)

ineedbot

2015-02-16 13:47:57

RSWalker received an update to fix OSBuddy read speeds, I think aerolib is using an older version.

Btw, thanks for implementing my suggestions.

Hackingmyself

2015-02-18 14:08:55

Anyway to get previous versions? The current one has issues with hoodz fighter.

Error: Unknown declaration "os" at line 58
Compiling failed.
From function

function getSettings(): TStringArray;
var
s: String;
I: Integer;
begin
s := os.ReadFile(scriptPath + 'fightersettings.txt');
result := Explode(',', s);
end;

Hoodz

2015-02-19 13:53:11

From: ineedbot
RSWalker received an update to fix OSBuddy read speeds, I think aerolib is using an older version.

Btw, thanks for implementing my suggestions.
@Flight;
From: Hackingmyself
Anyway to get previous versions? The current one has issues with hoodz fighter.

Error: Unknown declaration "os" at line 58
Compiling failed.
From function

function getSettings(): TStringArray;
var
s: String;
I: Integer;
begin
s := os.ReadFile(scriptPath + 'fightersettings.txt');
result := Explode(',', s);
end;


guess i can fix it.

Hackingmyself

2015-02-19 14:32:51

From: hoodz
@Flight;


guess i can fix it.


:spot: Your the best.

Flight

2015-02-21 09:53:30

Updated to revision #2 . I forgot to announce it here last night but the update was pushed to Github and AL should have already known a minor update was available.

This update includes Stats (by Grats); similar to the old SRL Stats system for those of you familiar with it. A couple things that bot scripters and users need to know:

Scripters: The majority of the Stats code is built-in now so all you really need to do is first setup Stats using stats_Setup(SCRIPT_ID: string); just once. You'll get your ScriptID after you've registered a script on the Stats home page. Later inside your script you can add your stats_IncVariable(VariableID: string; Amount: integer); and commit with stats_Commit();. Committing is limited to 5 minutes meaning your accumulated variables won't be sent into Stats until at least 5 minutes has passed since your last commit, instead your variables will stack up until 5 minutes difference has passed. This timer exists within AL and the server itself.

Users: You don't need to enter your Stats ID & pass within the script, this info will be read from a single text file, located at Simba>Stats>Info.txt. If this directory & file doesn't already exist, calling stats_SetUp() will create it for you. After that you'll need to enter your user ID and password in the appropriate lines, DO NOT space after the "=" in the text file. Here's an example of how it should look:

[General]
Stats_ID=967
Stats_Pass=mypassword

Every script using Stats will read from this file, so you'll only ever need to enter your info once. For more information and tutorials on Stats be sure to read the guide by Grats.


Also, RSWalker has been updated to the most recent version and SMART has been given an extra variable for 'SMART_World' that you can specify before calling "InitAL();" to load SMART with a specific world. The function "isRunEnergyBoosted()" has been added to tell you if your player's run energy has been boosted via Stamina Potions.

honeyhoney

2015-02-21 18:14:03

What would be the best way to check if a specific interface is visible?

I've been considering adding additional functions/procedures to AeroLib myself but thought I would get some of your thoughts before I mess around with it - if only for the fact that I could potentially submit a pull request.

Flight

2015-02-21 19:21:49

From: honeyhoney
What would be the best way to check if a specific interface is visible?

I've been considering adding additional functions/procedures to AeroLib myself but thought I would get some of your thoughts before I mess around with it - if only for the fact that I could potentially submit a pull request.


Check out the Interface file (AeroLib>core>Interfaces.simba) and just take note of how they're defined/used there. I'm very open to suggestions so feel free to bring them up here.

grats

2015-02-21 20:28:55

Note that in order to "register a script on the home page" you have to be logged in.

honeyhoney

2015-02-22 10:55:42

From: Flight
Check out the Interface file (AeroLib>core>Interfaces.simba) and just take note of how they're defined/used there. I'm very open to suggestions so feel free to bring them up here.


I've already defined an interface that works absolutely fine for isInterfaceOpen() but there's no method for checking whether a specific interface is open. Were you planning on adding in a function for checking this? Happy to give it a shot myself.

Flight

2015-02-22 11:12:08

From: honeyhoney
I've already defined an interface that works absolutely fine for isInterfaceOpen() but there's no method for checking whether a specific interface is open. Were you planning on adding in a function for checking this? Happy to give it a shot myself.


Indeed there s:

Interfaces[INTERFACE_ID].isVisible();

honeyhoney

2015-02-22 11:26:32

From: Flight
Indeed there s:

Interfaces[INTERFACE_ID].isVisible();


Gotcha! I ended up just overloading the isInterfaceOpen() function to accept the interface we're looking for.

function isInterfaceOpen(i: Integer): Boolean; overload;
begin
result := Interfaces[i].isVisible();
end;

Thanks for clarifying.

samerdl

2015-02-24 11:25:57

Great job to all folks at SRL on this include and great job Flight! this looks awesome.

Was just curious why i am getting this error:


Error: Plugin(AND_TPA32) has not been found


when i compile on lape this:

program new;
{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.
What did i forget?, sorry i haven't learned lape usage yet, been out of the loop after i quit gaming

Solar

2015-02-24 14:40:39

From: samerdl
Great job to all folks at SRL on this include and great job Flight! this looks awesome.

Was just curious why i am getting this error:



when i compile on lape this:

program new;
{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.
What did i forget?, sorry i haven't learned lape usage yet, been out of the loop after i quit gaming


Think you need to put the plugins in the right place, that's all…

Hoodz

2015-02-24 15:18:08

From: samerdl
Great job to all folks at SRL on this include and great job Flight! this looks awesome.

Was just curious why i am getting this error:



when i compile on lape this:

program new;
{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.
What did i forget?, sorry i haven't learned lape usage yet, been out of the loop after i quit gaming


are you back? :)

samerdl

2015-02-25 09:11:54

From: hoodz
are you back? :)


Nah, i just check IRC & Forums and read runescape clan propaganda on zybez and on ancient fury's site, only slipped once since i quit gaming, played wolfenstein for 2 hours last month but for RUnescape i haven't played since sept 16th + i gave all my accounts away to af and made sure they change email/password info.. I sometimes miss the game and was really tempted to play around 6 weeks ago, fought off the urges :).

Do you use skype dude? I frequent it sometimes we can chat there. Oh yeah i didn't realize you had to make the plugin folder inside the include - easily hinted by the Plugin Folder for the OSRS include -.-, compiles and works this is a really neat and useful include gooood job & keep it up.

grats

2015-02-25 09:28:17

From: samerdl
Nah, i just check IRC & Forums and read runescape clan propaganda on zybez and on ancient fury's site, only slipped once since i quit gaming, played wolfenstein for 2 hours last month but for RUnescape i haven't played since sept 16th + i gave all my accounts away to af and made sure they change email/password info.. I sometimes miss the game and was really tempted to play around 6 weeks ago, fought off the urges :).

Do you use skype dude? I frequent it sometimes we can chat there. Oh yeah i didn't realize you had to make the plugin folder inside the include - easily hinted by the Plugin Folder for the OSRS include -.-, compiles and works this is a really neat and useful include gooood job & keep it up.


you can find peoples skypes under their names / trophies :P

Flight

2015-02-26 12:33:52

Updated to revision #3 . This includes interfaces for the main Grand Exchange page, the offer page (both buying & selling) and the collection page. Also AeroLib will now check, before logging in, if your currently selected world matches with your member status. For example if you're a F2P account (and this is correctly defined before "initAL()") and your current world on the login screen is a members world, AL will switch to a F2P world before logging in.

By the way, I've only lightly explored the Grand Exchange area personally, so if anything was changed or broken with the last OSRS update please be sure to notify me ASAP.

brett1997a

2015-02-26 17:52:18

Exception in Script: Plugin(AND_TPA32) has not been found


what does this error mean?

KeepBotting

2015-02-26 18:13:26

From: brett1997a
Exception in Script: Plugin(AND_TPA32) has not been found


what does this error mean?

It means you didn't follow instructions.

Flight

2015-02-26 18:14:06

From: brett1997a
Exception in Script: Plugin(AND_TPA32) has not been found


what does this error mean?


It means it couldn't find the AND_TPA32.dll plugin that you should have downloaded and installed in your 'Plugins' folder (Simba > Plugins/).

brett1997a

2015-02-26 19:25:29

Exception in Script: Unknown compiler directives at 6:3

how about this I feel like i've followed the directions well enough but idk

KeepBotting

2015-02-26 19:28:41

From: brett1997a
Exception in Script: Unknown compiler directives at 6:3

how about this I feel like i've followed the directions well enough but idk

Script > Interpreter > change it to whatever it's not already on

Lipcot

2015-03-02 02:16:35

i gave a deeper look at this include and its incredibly awesome! it has given me the will to play some osrs (besides, they have GE now so..) :)

so im creating an account right now to use your include and have some fun with it, maybe i'll make an abyss script or something fun.

Congrats on this flight! its really great work! keep it up!

Solar

2015-03-02 08:36:57

I've been trying to use interactSlot(i, mouse_right) but it sometimes gives me this error;

Error: You passed a wrong ye to a finder function: 15. The client has a height of 15, thus the ye is out of bounds. at line 97
Execution failed.

Flight

2015-03-02 09:20:14

From: Solar
I've been trying to use interactSlot(i, mouse_right) but it sometimes gives me this error;

Error: You passed a wrong ye to a finder function: 15. The client has a height of 15, thus the ye is out of bounds. at line 97
Execution failed.


Given the fact it thinks the client's max height is 15 I'd say you haven't correctly dragged Simba's crosshair onto the client.

Harrier

2015-03-04 17:50:04

I've just upgraded to java 8 update 40 (32 bit, used the offline installer) and I deleted my old java 7. When I load SMART I get this error
Best world found: 8
** Smart Cannot Spawn Clients **
Successfully executed.
But SMART does load and if I press play again on the script it will pair with the smart. Not to much of an issue, but it can be quite annoying.

Secondly, in my declareplayers I've got "Me.Member := True;" but it will still login to f2p worlds and not hop (I swear it did in the past tho :/)

E: My declareplayers is before initAL; as well

neeger

2015-03-07 22:32:01

Nice work! Updated all scripts to AeroLib :P

Few problems: 1. clickToContinue is true when someone has typed a longer line, switched it with OSRS SRL one.

2. any idea why loginPlayer(true) is so slow? it types 2-3 letters of name then types 2-3 letters of pw, then back to name? EDIT: strange it happens, used OSR-SRL function instead, added multiplayer opion also :P

3. it doesn't type @, types " instead. EDIT: fixed it, had to change keyboard to US.

Harrier

2015-03-08 16:00:52

From: neeger
Nice work! Updated all scripts to AeroLib :P

Few problems: 1. clickToContinue is true when someone has typed a longer line, switched it with OSRS SRL one.

2. any idea why loginPlayer(true) is so slow? it types 2-3 letters of name then types 2-3 letters of pw, then back to name? EDIT: strange it happens, used OSR-SRL function instead, added multiplayer opion also :P

3. it doesn't type @, types " instead. EDIT: fixed it, had to change keyboard to US.

2. That's to stop keyloggers
@Flight;
Not sure if you've seen but @Turpinator; has submitted a pull request which fixes the SMART loading errors with java 8 update 40 :D

Flight

2015-03-08 18:50:29

From: Hawker
2. That's to stop keyloggers
@Flight;
Not sure if you've seen but @Turpinator; has submitted a pull request which fixes the SMART loading errors with java 8 update 40 :D


Yep I worked that in there. I had quite a few issues when I did this so my version incorporates both Brandon's java path finding & the default java path as a backup for loading SMART. I'll go ahead and push revision #4 in a couple minutes.

neeger

2015-03-09 00:56:54

From: Hawker
2. That's to stop keyloggers

Oh, that's an awesome idea :p

Turpinator

2015-03-09 01:01:22

From: neeger
Oh, that's an awesome idea :p


except that given enough data you could probably still figure out a best possible guess at username/password.

BigRedJapan

2015-03-10 04:02:00

Getting this error when attempting to load custom map and grab coords from OSBuddy.

http://prntscr.com/6eypeu

Flight

2015-03-10 09:56:57

From: Rules of Joe
Getting this error when attempting to load custom map and grab coords from OSBuddy.

http://prntscr.com/6eypeu


Hm OSBuddy… Ok first of all did you save your map file in the correct location? (AeroLib > maps > custom > "YOURMAP.png") And when loading your map file & RSWalker are you loading the correct path?

Walker.Init('custom','YOUR_MAP', w_getClientPID());
^ Excluding ".png". And… did you remember to drag Simba's client-selector crosshair onto OSBuddy, and ran the script when you were already logged in?

Hoodz

2015-03-10 10:25:05

From: Rules of Joe
Getting this error when attempting to load custom map and grab coords from OSBuddy.

http://prntscr.com/6eypeu


From: Flight
Hm OSBuddy… Ok first of all did you save your map file in the correct location? (AeroLib > maps > custom > "YOURMAP.png") And when loading your map file & RSWalker are you loading the correct path?

Walker.Init('custom','YOUR_MAP', w_getClientPID());
^ Excluding ".png". And… did you remember to drag Simba's client-selector crosshair onto OSBuddy, and ran the script when you were already logged in?


i can confirm it works, just follow @Flight his instructions and it will work!

BigRedJapan

2015-03-10 12:50:13

ive tried both ways still gives me that error!

Maybe my custom map is off??

Hoodz

2015-03-10 13:04:54

From: Rules of Joe
ive tried both ways still gives me that error!

Maybe my custom map is off??


not sure, but a previous user had issues because his map was too small.

slacky

2015-03-10 13:15:28

From: Rules of Joe
ive tried both ways still gives me that error!

Maybe my custom map is off??

On a sidenote: Don't use the memory scanner with that map. That will (probably) fail. That means you should initialize with `-1` instead of for example `w_getClientPID()`.
The map also looks a little small, tho it might be big enough (when you do not use the memory scan stuff)..

Also, my fix for OSBuddy when using memory scanning didn't last, so generally whenever you use OSBuddy do NOT use the mom-scanner. I _might_ write a fix.. but I honestly don't give a fuck about OSBuddy. And I really do not understand why people use it for BOTTING.

Flight

2015-03-10 14:13:38

From: slacky
On a sidenote: Don't use the memory scanner with that map. That will (probably) fail. That means you should initialize with `-1` instead of for example `w_getClientPID()`.
The map also looks a little small, tho it might be big enough (when you do not use the memory scan stuff)..

Also, my fix for OSBuddy when using memory scanning didn't last, so generally whenever you use OSBuddy do NOT use the mom-scanner. I _might_ write a fix.. but I honestly don't give a fuck about OSBuddy. And I really do not understand why people use it for BOTTING.


This for sure.

That image is far too small, you should take a look at Slacky's tutorial on the correct use of map images. I also agree, I wouldn't recommend OSBuddy at all. I've seen Slacky's post on the amount of memory that client uses and it seems like you'd be killing your speed using the memory-scanning of RSWalker… :huh: I say stick with SMART or the browser, both will work smoothly.

BigRedJapan

2015-03-10 15:30:36

I only used it because it on ur walker thread someone said not to use smart and to use osbuddy cuz of the memory. -_-

BigRedJapan

2015-03-11 03:41:10

the map cant get any bigger thats the whole map.

Flight

2015-03-11 10:00:27

From: Rules of Joe
the map cant get any bigger thats the whole map.


Give me just a minute to load up SMART and I'll make a map for you.

Here ya go:
http://i.imgur.com/0S7XFfO.png

Also, it looks like your map was made with the camera at West, but maps should always be made at North.

BigRedJapan

2015-03-11 16:45:39

So when you on smart it will grab the map for you??

Harrier

2015-03-11 17:43:23

From: Rules of Joe
So when you on smart it will grab the map for you??

No, look on the git for RSWalker and there is a mapgrabber.

BigRedJapan

2015-03-12 16:39:36

I have another question with error.

my loop was working fine it just was rushing through without actually waiting until my char got to the pos.

so i added a not function if its not at the location it should begin that function all over.
Procedure Loop;
begin


{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

If AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope1 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope1 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope2 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope2 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Balance then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Balance then
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Jump then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if not Walker._GetPosCustom() := Jump then
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if Walker._GetPosCustom() := Gap then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Gap then
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Crate then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Crate then
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;

error:
Error: Operator "NOT" not compatible with "record [0]Int32; [4]Int32; end" at line 210
Compiling failed.

3Garrett3

2015-03-12 16:56:13

From: Rules of Joe
I have another question with error.

my loop was working fine it just was rushing through without actually waiting until my char got to the pos.

so i added a not function if its not at the location it should begin that function all over.
Procedure Loop;
begin


{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

If AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope1 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope1 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope2 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope2 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Balance then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Balance then
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Jump then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if not Walker._GetPosCustom() := Jump then
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if Walker._GetPosCustom() := Gap then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Gap then
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Crate then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Crate then
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;

error:
Error: Operator "NOT" not compatible with "record [0]Int32; [4]Int32; end" at line 210
Compiling failed.


It's because all your lines are "if Walker._GetPosCustom() := Rope1 then" when it should be "if Walker._GetPosCustom() = Rope1 then"

BigRedJapan

2015-03-12 17:17:43

nope that was not the issue.

Ive tried to change := to = it gives me an error saying that
Error: Operator "cmp_Equal" not compatible with types at line 204
Compiling failed.

the difference between if and if not is that if its at location it should do this , if its not at location it should start loop over.

3Garrett3

2015-03-12 17:41:11

From: Rules of Joe
nope that was not the issue.

Ive tried to change := to = it gives me an error saying that
Error: Operator "cmp_Equal" not compatible with types at line 204
Compiling failed.

the difference between if and if not is that if its at location it should do this , if its not at location it should start loop over.


I can say for sure though that YES, that was the issue, because I fixed your error. You just have ANOTHER error that has to be fixed now. Previously you were trying to assign the value of "Rope1" to a function, which you can't do so it broke. Now it's telling you that you're just comparing incompatible types of variables. Since you haven't shown me where you define "Rope1" etc. I can't say for sure what the problem is. I assume that "Walker._GetPosCustom()" gives you a TPoint and I can also assume that you don't have Rope1 set to be a TPoint.

BigRedJapan

2015-03-12 17:46:49

I have everything set.

program DraynorAgility;
{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}

//Made By Rules

Var
X, Y, Agility :Integer;
Walker : TRSWalker;


Const

//Locations
Rope1 := Point(214, 133);
Rope2 := Point(166, 149);
Balance := Point(173, 188);
Jump := Point(157, 207);
Gap := Point(157, 231);
Crate := Point(189, 228);


procedure declarePlayer();
begin
Me.Name := '';
Me.Pass := '';
Me.Pin := '';
Me.Nick := '';
Me.LampSkill := SKILL_FARMING;
Me.Member := True;
Me.Active := True;
end;


Procedure Login;
begin
loginPlayer(false)
end;

Procedure DTMz;
begin

Agility := DTMFromString('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEIAZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

end;


Function ClimbWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Climb', 'Rou', 'ough wa'], [858658, 2243147, 2045767], 6)then
if findMSObjectSimple([858658, 2243147, 2045767], ['Climb', 'Rou', 'ough wa']) then
begin
writeLn('Climbing Wall');
fastClick(mouse_Right);
WaitUpText('Cimb', randomrange(300, 400));
ChooseOptionMulti(['Cimb', 'Rou']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function CrossTightRope: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Cross', 'Tigh', 'rope'], [2504771, 3032659, 3493725], 6)then
if findMSObjectSimple([2504771, 3032659, 3493725], ['Cross', 'Tigh', 'rope']) then
begin
writeLn('Crossing Rope');
fastClick(mouse_Right);
WaitUpText('Cross', randomrange(300, 400));
ChooseOptionMulti(['Cross', 'Tighrope']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function BalanceNarrowWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Balance', 'Narrow', 'wall'], [14401, 605511, 13115], 6)then
if findMSObjectSimple([14401, 605511, 13115], ['Balance', 'Narrow', 'wall']) then
begin
writeLn('Balancing Wall');
fastClick(mouse_Right);
WaitUpText('Balance', randomrange(300, 400));
ChooseOptionMulti(['Balance', 'Narrow', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function JumpUpWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Jump', '-up', 'wall'], [7982, 4013377, 12347], 6)then
if findMSObjectSimple([7982, 4013377, 12347], ['Jump', '-up', 'wall']) then
begin
writeLn('Jumping Wall');
fastClick(mouse_Right);
WaitUpText('Jump', randomrange(300, 400));
ChooseOptionMulti(['Jump', '-up', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;

Function JumpGap: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Gap'], [3752543, 1845581, 1320014], 6)then
if findMSObjectSimple([3752543, 1845581, 1320014], ['Gap']) then
begin
writeLn('Jumping Gap');
fastClick(mouse_Right);
WaitUpText('Gap', randomrange(300, 400));
ChooseOptionMulti(['Gap']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function ClimbCrate: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Climb-','-down','Crate'], [6184542, 5658198, 5263440], 6)then
if findMSObjectSimple([6184542, 5658198, 5263440], ['Climb-','-down','Crate']) then
begin
writeLn('Climb Boxes');
fastClick(mouse_Right);
WaitUpText('Climb-', randomrange(300, 400));
ChooseOptionMulti(['Climb-','-down','Crate']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function AgilityIcon: Boolean;
var
mmPnt : TPoint;
begin
if DTM_findBestPointEx([Agility], AREA_MM, mmPnt) then
begin
Result := True;
mouse(mmPnt, 5, 5, MOUSE_LEFT);
end;
end;


Function WalkSetup: Boolean;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

writeln('MyPos: '+toStr(Walker.getMyPos()));
Walker.Free();

Result := True;
end;



Procedure FreeDTMz;
begin

FreeDTM(Agility);
Walker.Free();

end;

Procedure LoopFial;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

END;

Procedure Loop;
begin


{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

If AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope1 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope1 then
begin
Loop;
end;
if Walker._GetPosCustom() := Rope2 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope2 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Balance then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Balance then
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Jump then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if not Walker._GetPosCustom() := Jump then
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if Walker._GetPosCustom() := Gap then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Gap then
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Crate then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Crate then
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;


begin
DISABLE_RANDOMS := False;
declarePlayer();
initAL();
MouseSpeed:=30;
DTMz;

waitEx(1);

//MapTest;

repeat;
loop;
Until(False);

FreeDTMz;
end.

I have yet to work on failsafe need to figure loop out first.

3Garrett3

2015-03-12 18:12:57

From: Rules of Joe
I have everything set.

program DraynorAgility;
{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}

//Made By Rules

Var
X, Y, Agility :Integer;
Walker : TRSWalker;


Const

//Locations
Rope1 := Point(214, 133);
Rope2 := Point(166, 149);
Balance := Point(173, 188);
Jump := Point(157, 207);
Gap := Point(157, 231);
Crate := Point(189, 228);


procedure declarePlayer();
begin
Me.Name := '';
Me.Pass := '';
Me.Pin := '';
Me.Nick := '';
Me.LampSkill := SKILL_FARMING;
Me.Member := True;
Me.Active := True;
end;


Procedure Login;
begin
loginPlayer(false)
end;

Procedure DTMz;
begin

Agility := DTMFromString('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEIAZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

end;


Function ClimbWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Climb', 'Rou', 'ough wa'], [858658, 2243147, 2045767], 6)then
if findMSObjectSimple([858658, 2243147, 2045767], ['Climb', 'Rou', 'ough wa']) then
begin
writeLn('Climbing Wall');
fastClick(mouse_Right);
WaitUpText('Cimb', randomrange(300, 400));
ChooseOptionMulti(['Cimb', 'Rou']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function CrossTightRope: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Cross', 'Tigh', 'rope'], [2504771, 3032659, 3493725], 6)then
if findMSObjectSimple([2504771, 3032659, 3493725], ['Cross', 'Tigh', 'rope']) then
begin
writeLn('Crossing Rope');
fastClick(mouse_Right);
WaitUpText('Cross', randomrange(300, 400));
ChooseOptionMulti(['Cross', 'Tighrope']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function BalanceNarrowWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Balance', 'Narrow', 'wall'], [14401, 605511, 13115], 6)then
if findMSObjectSimple([14401, 605511, 13115], ['Balance', 'Narrow', 'wall']) then
begin
writeLn('Balancing Wall');
fastClick(mouse_Right);
WaitUpText('Balance', randomrange(300, 400));
ChooseOptionMulti(['Balance', 'Narrow', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function JumpUpWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Jump', '-up', 'wall'], [7982, 4013377, 12347], 6)then
if findMSObjectSimple([7982, 4013377, 12347], ['Jump', '-up', 'wall']) then
begin
writeLn('Jumping Wall');
fastClick(mouse_Right);
WaitUpText('Jump', randomrange(300, 400));
ChooseOptionMulti(['Jump', '-up', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;

Function JumpGap: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Gap'], [3752543, 1845581, 1320014], 6)then
if findMSObjectSimple([3752543, 1845581, 1320014], ['Gap']) then
begin
writeLn('Jumping Gap');
fastClick(mouse_Right);
WaitUpText('Gap', randomrange(300, 400));
ChooseOptionMulti(['Gap']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function ClimbCrate: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Climb-','-down','Crate'], [6184542, 5658198, 5263440], 6)then
if findMSObjectSimple([6184542, 5658198, 5263440], ['Climb-','-down','Crate']) then
begin
writeLn('Climb Boxes');
fastClick(mouse_Right);
WaitUpText('Climb-', randomrange(300, 400));
ChooseOptionMulti(['Climb-','-down','Crate']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function AgilityIcon: Boolean;
var
mmPnt : TPoint;
begin
if DTM_findBestPointEx([Agility], AREA_MM, mmPnt) then
begin
Result := True;
mouse(mmPnt, 5, 5, MOUSE_LEFT);
end;
end;


Function WalkSetup: Boolean;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

writeln('MyPos: '+toStr(Walker.getMyPos()));
Walker.Free();

Result := True;
end;



Procedure FreeDTMz;
begin

FreeDTM(Agility);
Walker.Free();

end;

Procedure LoopFial;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

END;

Procedure Loop;
begin


{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

If AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Rope1 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope1 then
begin
Loop;
end;
if Walker._GetPosCustom() := Rope2 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Rope2 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Balance then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Balance then
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Jump then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if not Walker._GetPosCustom() := Jump then
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if Walker._GetPosCustom() := Gap then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Gap then
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker._GetPosCustom() := Crate then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker._GetPosCustom() := Crate then
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;


begin
DISABLE_RANDOMS := False;
declarePlayer();
initAL();
MouseSpeed:=30;
DTMz;

waitEx(1);

//MapTest;

repeat;
loop;
Until(False);

FreeDTMz;
end.

I have yet to work on failsafe need to figure loop out first.


I don't have simba or really much time. Try compiling this and tell me if it works. No idea why you're using custom position functions and I don't even know what it returns but the regular one should work. I've changed all the assignes (:=) to equals (=) so that the script should compile, because you hadn't changed them in this version yet.


program DraynorAgility;
{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}

//Made By Rules

Var
X, Y, Agility :Integer;
Walker : TRSWalker;


Const

//Locations
Rope1 := Point(214, 133);
Rope2 := Point(166, 149);
Balance := Point(173, 188);
Jump := Point(157, 207);
Gap := Point(157, 231);
Crate := Point(189, 228);


procedure declarePlayer();
begin
Me.Name := '';
Me.Pass := '';
Me.Pin := '';
Me.Nick := '';
Me.LampSkill := SKILL_FARMING;
Me.Member := True;
Me.Active := True;
end;


Procedure Login;
begin
loginPlayer(false)
end;

Procedure DTMz;
begin

Agility := DTMFromString('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEIAZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

end;


Function ClimbWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Climb', 'Rou', 'ough wa'], [858658, 2243147, 2045767], 6)then
if findMSObjectSimple([858658, 2243147, 2045767], ['Climb', 'Rou', 'ough wa']) then
begin
writeLn('Climbing Wall');
fastClick(mouse_Right);
WaitUpText('Cimb', randomrange(300, 400));
ChooseOptionMulti(['Cimb', 'Rou']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function CrossTightRope: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Cross', 'Tigh', 'rope'], [2504771, 3032659, 3493725], 6)then
if findMSObjectSimple([2504771, 3032659, 3493725], ['Cross', 'Tigh', 'rope']) then
begin
writeLn('Crossing Rope');
fastClick(mouse_Right);
WaitUpText('Cross', randomrange(300, 400));
ChooseOptionMulti(['Cross', 'Tighrope']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function BalanceNarrowWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Balance', 'Narrow', 'wall'], [14401, 605511, 13115], 6)then
if findMSObjectSimple([14401, 605511, 13115], ['Balance', 'Narrow', 'wall']) then
begin
writeLn('Balancing Wall');
fastClick(mouse_Right);
WaitUpText('Balance', randomrange(300, 400));
ChooseOptionMulti(['Balance', 'Narrow', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function JumpUpWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Jump', '-up', 'wall'], [7982, 4013377, 12347], 6)then
if findMSObjectSimple([7982, 4013377, 12347], ['Jump', '-up', 'wall']) then
begin
writeLn('Jumping Wall');
fastClick(mouse_Right);
WaitUpText('Jump', randomrange(300, 400));
ChooseOptionMulti(['Jump', '-up', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;

Function JumpGap: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Gap'], [3752543, 1845581, 1320014], 6)then
if findMSObjectSimple([3752543, 1845581, 1320014], ['Gap']) then
begin
writeLn('Jumping Gap');
fastClick(mouse_Right);
WaitUpText('Gap', randomrange(300, 400));
ChooseOptionMulti(['Gap']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function ClimbCrate: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Climb-','-down','Crate'], [6184542, 5658198, 5263440], 6)then
if findMSObjectSimple([6184542, 5658198, 5263440], ['Climb-','-down','Crate']) then
begin
writeLn('Climb Boxes');
fastClick(mouse_Right);
WaitUpText('Climb-', randomrange(300, 400));
ChooseOptionMulti(['Climb-','-down','Crate']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function AgilityIcon: Boolean;
var
mmPnt : TPoint;
begin
if DTM_findBestPointEx([Agility], AREA_MM, mmPnt) then
begin
Result := True;
mouse(mmPnt, 5, 5, MOUSE_LEFT);
end;
end;


Function WalkSetup: Boolean;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

writeln('MyPos: '+toStr(Walker.getMyPos()));
Walker.Free();

Result := True;
end;



Procedure FreeDTMz;
begin

FreeDTM(Agility);
Walker.Free();

end;

Procedure LoopFial;
begin
{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

END;

Procedure Loop;
begin


{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}

Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

If AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker.getMyPos() = Rope1 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker.getMyPos() = Rope1 then
begin
Loop;
end;
if Walker.getMyPos() = Rope2 then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker.getMyPos() = Rope2 then
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker.getMyPos() = Balance then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker.getMyPos() = Balance then
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker.getMyPos() = Jump then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if not Walker.getMyPos() = Jump then
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end
if Walker.getMyPos() = Gap then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker.getMyPos() = Gap then
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Walker.getMyPos() = Crate then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if not Walker.getMyPos() = Crate then
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;
if Not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;


begin
DISABLE_RANDOMS := False;
declarePlayer();
initAL();
MouseSpeed:=30;
DTMz;

waitEx(1);

//MapTest;

repeat;
loop;
Until(False);

FreeDTMz;
end.

I'm not sure why you init and free the walker about 4 times throughout, I've never used it so I don't really know, I assume Slacky wouldn't write it to need that though because he would die from the inefficiency.

slacky

2015-03-12 18:41:03

From: Rules of Joe
I have everything set.

...

You should listen to the adiveces given…
>> if Walker._GetPosCustom() := Gap then
is simply not doing what you want, and should raise a BIG FAT ERROR, as that is invalid syntax.
You are trying to ASSIGN (`:=`) to the result of a function, while you want to COMPARE against that result (`=`)

Here is a small list of notes:
  1. Use `Walker.Init('custom', 'DraynorRoof', -1);` (I told you this already)
  2. Don't use `Walker._GetPosCustom()`, use `Walker.GetMyPos()`.
  3. Creating a new walker every time "loop" is dumb.
  4. You can't compare any structure types in Lape. That means statements like "if ThisPoint = ThatPoint then" is not supported.
  5. - That will raise "Operator "cmp_Equal" not compatible with "record [0]Int32; [4]Int32; end""
  6. For comparison of TPoints you are best of first assigning it, then compare each field, for example:

  7. var
    a,b:TPoint;
    begin
    a := Point(10,10);
    b := Point(31,2);
    WriteLn( (a.x = b.x) and (a.y = b.y) );
    end;
    or… you can cast the TPoint To `UInt64` and do the comparison:

    var
    a,b:TPoint;
    begin
    a := Point(10,10);
    b := Point(31,2);
    WriteLn( UInt64(a) = UInt64(b) );
    end;

However, you really wont get away with checking if your position is equal to a single point… such accuracy is impossible, that will NOT work..
You should grab the current position and check if it's in a box.

3Garrett3

2015-03-12 18:52:43

From: slacky
You should listen to the adiveces given…
>> if Walker._GetPosCustom() := Gap then
is simply not doing what you want, and should raise a BIG FAT ERROR, as that is invalid syntax.
You are trying to ASSIGN (`:=`) to a function, while you want to COMPARE (`=`)

  1. Use `Walker.Init('custom', 'DraynorRoof', -1);` (I told you this already)
  2. Don't use `Walker._GetPosCustom()`, use `Walker.GetMyPos()`.
  3. Creating a new walker every time "loop" is dumb.
  4. You can't compare any structure types in Lape. That means statements like "if ThisPoint = ThatPoint then" is not supported.
  5. - That will raise "Operator "NOT" not compatible with "record [0]Int32; [4]Int32; end""
  6. For comparison of TPoints you first assign it, then compare each item, for example:

  7. var
    a,b:TPoint;
    begin
    a := Point(10,10);
    b := Point(31,2);
    WriteLn( (a.x = b.x) and (a.y = b.y) );
    end;
    or… you can cast the TPoint To `Walker._GetPosCustom()` and do the comparison:

    var
    a,b:TPoint;
    begin
    a := Point(10,10);
    b := Point(31,2);
    WriteLn( UInt64(a) = UInt64(b) );
    end;

Also, you really wont get away with checking if your position is equal to a single point… such accuracy is impossible, that will NOT work..
You should grab the current position and check if it's in a box.


FINALLY SOMEONE WHO KNOWS SOMETHING.

I tried explaining most of that and it didn't work. Also I didn't know you couldn't compare points, I've never tried but I assumed it was possible. Thank you for cleaning up my mess of help with a concise post.

Flight

2015-03-12 18:54:53

From: 3Garrett3
I don't have simba or really much time. Try compiling this and tell me if it works. No idea why you're using custom position functions and I don't even know what it returns but the regular one should work. I've changed all the assignes (:=) to equals (=) so that the script should compile, because you hadn't changed them in this version yet.


stuff...

I'm not sure why you init and free the walker about 4 times throughout, I've never used it so I don't really know, I assume Slacky wouldn't write it to need that though because he would die from the inefficiency.


Thanks for helping out mate.

I guess in Lape you can't compare a TPoint with another to determine if they match, or at least I assume this is due to Lape. So we'll go another way with this script. Also, while RSWalker is a much more accurate than SPS it's still not pinpoint precises to a single tile, which means if you're wanting to determine you're standing on a specific tile you'll actually want to check if you're within a certain distance of that tile, as your position could vary +/-5 coordinates (depending on many variables).

And you're absolutely, there's no reason at all to load and free the RSWalker so many times. A loaded RSWalker should be treated like a DTM or Bitmap: loaded once, freed once. Give me just a second to edit this script and I'll simply patch the mistakes.

Edit:
Never mind, this will take a few minutes and I'm about to leave. I'll patch up the script when I return.

BigRedJapan

2015-03-12 18:59:40

I hate lape why did everyone converting to lape. -_-

slacky

2015-03-12 19:08:38

From: Rules of Joe
I hate lape why did everyone converting to lape. -_-

Noob :p

BigRedJapan

2015-03-12 19:49:26

Pshhhhhh, Lape is noob, it cant do hella functions Pascal could.

So in order for this to work my way i have to make more functions and then call them in loop?

You can't compare any structure types in Lape. That means statements like "if ThisPoint = ThatPoint then" is not supported.
- That will raise "Operator "cmp_Equal" not compatible with "record [0]Int32; [4]Int32; end""
For comparison of TPoints you are best of first assigning it, then compare each field, for example:
Code:
var
a,b:TPoint;
begin
a := Point(10,10);
b := Point(31,2);
WriteLn( (a.x = b.x) and (a.y = b.y) );
end;
or... you can cast the TPoint To `UInt64` and do the comparison:
Code:
var
a,b:TPoint;
begin
a := Point(10,10);
b := Point(31,2);
WriteLn( UInt64(a) = UInt64(b) );
end;

Flight

2015-03-12 21:19:24

From: Rules of Joe
Pshhhhhh, Lape is noob, it cant do hella functions Pascal could.

So in order for this to work my way i have to make more functions and then call them in loop?


Try this:

program DraynorAgility;
{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}

//Made By Rules

Var
X, Y, Agility :Integer;
Walker : TRSWalker;


Const

//Locations
Rope1 := Point(214, 133);
Rope2 := Point(166, 149);
Balance := Point(173, 188);
Jump := Point(157, 207);
Gap := Point(157, 231);
Crate := Point(189, 228);


procedure declarePlayer();
begin
Me.Name := '';
Me.Pass := '';
Me.Pin := '';
Me.Nick := '';
Me.LampSkill := SKILL_FARMING;
Me.Member := True;
Me.Active := True;
end;


Procedure Login;
begin
loginPlayer(false)
end;

Procedure DTMz;
begin
Agility := DTMFromString('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEIAZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');
end;

function pointsInDist(Pt1, Pt2: TPoint; Dist: Integer): Boolean;
begin
result := (distance(Pt1.X, Pt1.Y, Pt2.X, Pt2.Y) <= Dist);
end;

Function ClimbWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Climb', 'Rou', 'ough wa'], [858658, 2243147, 2045767], 6)then
if findMSObjectSimple([858658, 2243147, 2045767], ['Climb', 'Rou', 'ough wa']) then
begin
writeLn('Climbing Wall');
fastClick(mouse_Right);
WaitUpText('Cimb', randomrange(300, 400));
ChooseOptionMulti(['Cimb', 'Rou']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function CrossTightRope: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Cross', 'Tigh', 'rope'], [2504771, 3032659, 3493725], 6)then
if findMSObjectSimple([2504771, 3032659, 3493725], ['Cross', 'Tigh', 'rope']) then
begin
writeLn('Crossing Rope');
fastClick(mouse_Right);
WaitUpText('Cross', randomrange(300, 400));
ChooseOptionMulti(['Cross', 'Tighrope']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function BalanceNarrowWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Balance', 'Narrow', 'wall'], [14401, 605511, 13115], 6)then
if findMSObjectSimple([14401, 605511, 13115], ['Balance', 'Narrow', 'wall']) then
begin
writeLn('Balancing Wall');
fastClick(mouse_Right);
WaitUpText('Balance', randomrange(300, 400));
ChooseOptionMulti(['Balance', 'Narrow', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function JumpUpWall: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('W');
//if FindObjCustom(X, Y, ['Jump', '-up', 'wall'], [7982, 4013377, 12347], 6)then
if findMSObjectSimple([7982, 4013377, 12347], ['Jump', '-up', 'wall']) then
begin
writeLn('Jumping Wall');
fastClick(mouse_Right);
WaitUpText('Jump', randomrange(300, 400));
ChooseOptionMulti(['Jump', '-up', 'wall']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;

Function JumpGap: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Gap'], [3752543, 1845581, 1320014], 6)then
if findMSObjectSimple([3752543, 1845581, 1320014], ['Gap']) then
begin
writeLn('Jumping Gap');
fastClick(mouse_Right);
WaitUpText('Gap', randomrange(300, 400));
ChooseOptionMulti(['Gap']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function ClimbCrate: Boolean; // A boolean returns true or false.
begin
SetAngle(1);
setCompass('E');
//if FindObjCustom(X, Y, ['Climb-','-down','Crate'], [6184542, 5658198, 5263440], 6)then
if findMSObjectSimple([6184542, 5658198, 5263440], ['Climb-','-down','Crate']) then
begin
writeLn('Climb Boxes');
fastClick(mouse_Right);
WaitUpText('Climb-', randomrange(300, 400));
ChooseOptionMulti(['Climb-','-down','Crate']);
Result := True; // If it finds & clicks the judge, result is true.
end;
end;


Function AgilityIcon: Boolean;
var
mmPnt : TPoint;
begin
if DTM_findBestPointEx([Agility], AREA_MM, mmPnt) then
begin
Result := True;
mouse(mmPnt, 5, 5, MOUSE_LEFT);
end;
end;


Procedure WalkSetup;
begin

{$IFDEF SMART}
Walker.Init('custom', 'DraynorRoof', OS_SMART.ID);
{$ELSE}
Walker.Init('custom', 'DraynorRoof', w_getClientPID());
{$ENDIF}
Walker.skipClose := 5;
Walker.walkStyle := wsSPS;
Walker.anyAngle := True;

//writeln('MyPos: '+toStr(Walker.getMyPos()));
end;



Procedure FreeDTMz;
begin

FreeDTM(Agility);
Walker.Free();

end;

Procedure Loop;
begin
if AgilityIcon then
begin
ClimbWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;

if pointsInDist(Walker.getMyPos(), Rope1, 10) then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end else Exit;

if pointsInDist(Walker.getMyPos(), Rope2, 10) then
begin
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end else
begin
Wait(RandomRange(1500,2500));
CrossTightRope;
Wait(RandomRange(1000,1500));
setCompass('N');
end;

if pointsInDist(Walker.getMyPos(), Balance, 10) then
begin
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end else
begin
Wait(RandomRange(1500,2500));
BalanceNarrowWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end;

if pointsInDist(Walker.getMyPos(), Jump, 10) then
begin
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end else
begin
Wait(RandomRange(1500,2500));
JumpUpWall;
Wait(RandomRange(1000,1500));
setCompass('N');
end

if pointsInDist(Walker.getMyPos(), Gap, 10) then
begin
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end else
begin
Wait(RandomRange(1500,2500));
JumpGap;
Wait(RandomRange(1000,1500));
setCompass('N');
end;

if pointsInDist(Walker.getMyPos(), Crate, 10) then
begin
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end else
begin
Wait(RandomRange(1500,2500));
ClimbCrate;
Wait(RandomRange(1000,1500));
setCompass('N');
end;

if not AgilityIcon then
begin
AgilityIcon;
Wait(RandomRange(1000,1500));
ClimbWall;
Wait(RandomRange(1000,1500));
end;
end;


begin
DISABLE_RANDOMS := False;
declarePlayer();
initAL();
MouseSpeed:=30;
DTMz;
WalkSetup;
addOnTerminate('FreeDTMz');

waitEx(1);

//MapTest;

repeat;
loop;
Until(False);
end.

BigRedJapan

2015-03-13 03:25:17

Thank you very much. but still not doing it rigth.

Luv you for fixing error.

BigRedJapan

2015-03-13 21:44:10

Another Noob question, Im jsut so interested.

if i add an Exit; to every command in the loop will it exit the loop and restart looking for the next location.

I am trying to make the script stop until char is not moving then search location then start the function to climb, cross, or jump.

Flight

2015-03-13 22:29:39

From: Rules of Joe
Another Noob question, Im jsut so interested.

if i add an Exit; to every command in the loop will it exit the loop and restart looking for the next location.

I am trying to make the script stop until char is not moving then search location then start the function to climb, cross, or jump.


Yes but this isn't the place to ask for advice on how to make your script. This thread revolves around the include AeroLib.

Flight

2015-03-19 09:40:52

Updated to revision #5 . This update only brings small changes. Breaking (via brakeHandler()) can now be set to switch worlds after a break; it's default set not to switch worlds. Also on the subject of breaking there's a global variable for total break time which directly leads to the function getPerHour(). There's an extra parameter now for if you'd like to exclude the total break time from this function.

Also the annoying right-click adding players to the friends list bug has been fixed as well as the continueChat() function being added. This will serve the same purpose as clickToContinue except it uses the space bar. You can also have the function wait until the chat has changed if you choose.

On top of that there's some other miscellaneous patches. As always be sure to report any issues with the include here and I'll fix them ASAP.

Floor66

2015-03-19 11:29:16

oi where's my credit for finding that bug out :P
Just kidding :D

Btw, is there any chance that you can handle breaking and sleeping. As in break x mins every x hours, and then every x hours of runtime we will sleep for ~6-8 hours as a 'normal humon' would?

Flight

2015-03-19 12:04:18

From: Floor66
oi where's my credit for finding that bug out :P
Just kidding :D

Btw, is there any chance that you can handle breaking and sleeping. As in break x mins every x hours, and then every x hours of runtime we will sleep for ~6-8 hours as a 'normal humon' would?


Yes I forgot to mention that. Big thanks to Floor66 for pointing out that bug and how it was caused. It sure annoyed me and I wouldn't have found it had it not been for you.

About the breaking system. Such a system is in on my agenda, breaking times & duration based off times of the day, taking into consideration local time zones, common times we normally have meals, long breaks at night, and so on. It's certainly something I'd like to do in the near future.

Solar

2015-03-21 13:53:38

Not sure if it's just me that might be getting this or not, but I haven't changed or updated my java at all, only updated Aerolib.
Failed To Find Java.exe or Javaw.exe. Please add ...\JRE\Bin to your PATH environment variable.
Best world found: 42
Error while finding Java, using default path
Since getting this for the first time, I have added "…\JRE\Bin;" to the end of my path envir. var's and still get the same message.

Hoodz

2015-03-21 15:57:15

From: Solar
Not sure if it's just me that might be getting this or not, but I haven't changed or updated my java at all, only updated Aerolib.
Failed To Find Java.exe or Javaw.exe. Please add ...\JRE\Bin to your PATH environment variable.
Best world found: 42
Error while finding Java, using default path
Since getting this for the first time, I have added "…\JRE\Bin;" to the end of my path envir. var's and still get the same message.


whats your complete PATH var?

Solar

2015-03-22 05:45:05

Turns out it was just my computer that was acting up. Uninstalled and reinstalled java, went into path var's and cleared those up (deleting …\JRE\bin actually helped), and checked to see that the shortcuts in programData/oracle/ java/javaPath were correct after the reinstall, which they were.
Just in case anyone else gets the same thing, this cleared things up for me.

Hoodz

2015-03-22 06:12:56

From: Solar
Turns out it was just my computer that was acting up. Uninstalled and reinstalled java, went into path var's and cleared those up (deleting …\JRE\bin actually helped), and checked to see that the shortcuts in programData/oracle/ java/javaPath were correct after the reinstall, which they were.
Just in case anyone else gets the same thing, this cleared things up for me.


glad you figured it out.

mastah

2015-03-28 12:28:01

This is great! Which languages did you use to create this? Just pascal/lape?

KeepBotting

2015-03-28 12:32:23

From: mastah
This is great! Which languages did you use to create this? Just pascal/lape?


All major projects on the forums right now (sans SMART) are written in Pascal, most use the Lape interpreter. I think SRL-OSR is the only one that's still hanging on to PascalScript :)

flamingo1

2015-03-31 11:09:16

When switching bank tabs it seems to start moving the mouse while clicked (or the game thinks it's clicked) and it just drags tabs, I changed mine but it really does need a longer wait time

Goobs

2015-04-01 02:12:26

I been having an issue for a while, and while it would force my script to terminate, it was rare enough for me not to care. My script requires strenuous world hopping.

During selectWorld, it will go to the world select screen and then somehow gets lost. The script will time out due to the limitations of LoginPlayer, claiming that runescape isn't ready.

Also, I do not know if this has been addressed yet, but in the past I had to update the members world list because there were several errors in the list, including free worlds and not including members worlds.

TL;DR: Fix selectWorld so it doesn't "freeze" at the world select screen, and make sure that the world number lists are correct.

Flight

2015-04-01 10:22:00

From: flamingo1
When switching bank tabs it seems to start moving the mouse while clicked (or the game thinks it's clicked) and it just drags tabs, I changed mine but it really does need a longer wait time


Thanks for bringing that up, I'll look into it when I have a chance.

From: Probably Glitched

TL;DR: Fix selectWorld so it doesn't "freeze" at the world select screen, and make sure that the world number lists are correct.


Yeah I've also seen that happen with the multiple world switching. I'll take another look over the login procedure and see if I can fix that once and for all. And the world list is indeed correct, those couple extra F2P worlds are only temporary, so that's why I've not moved them from the Members world list to the F2P world list.

Goobs

2015-04-01 10:27:32

From: Flight
Thanks for bringing that up, I'll look into it when I have a chance.



Yeah I've also seen that happen with the multiple world switching. I'll take another look over the login procedure and see if I can fix that once and for all. And the world list is indeed correct, those couple extra F2P worlds are only temporary, so that's why I've not moved them from the Members world list to the F2P world list.



It's weird because some nights it can run for 10 hours no problem, and some it won't even last 5 hops. I'm moving today and I finally get access to broadband again, instead of this shyte satellite internet

Flight

2015-04-01 10:33:06

From: Probably Glitched
It's weird because some nights it can run for 10 hours no problem, and some it won't even last 5 hops. I'm moving today and I finally get access to broadband again, instead of this shyte satellite internet


Ha I can relate. I'm also far from the nearest town and satellite internet is my only option. But I have Exceed and it's both stable and fast, so no complaints from me.

/spam

chubeam

2015-04-02 17:02:45

Whenever I run the test script I get this:

Error: Plugin(AND_TPA32) has not been found
Compiling failed.

What am I doing wrong?

Lipcot

2015-04-02 17:06:10

From: chubeam
Whenever I run the test script I get this:

Error: Plugin(AND_TPA32) has not been found
Compiling failed.

What am I doing wrong?


https://www.dropbox.com/s/ue5c48oznk6fkiy/Plugins.zip

you didnt download that and put it in plugins folder?

chubeam

2015-04-02 17:08:34

From: Lipcot
https://www.dropbox.com/s/ue5c48oznk6fkiy/Plugins.zip

you didnt download that and put it in plugins folder?


I did. The only file with a similar name is AND_TPA.dll. Should I manually add the 32?

Lipcot

2015-04-02 22:52:44

From: chubeam
I did. The only file with a similar name is AND_TPA.dll. Should I manually add the 32?


Dont really know, do you have the latest simba release? have you updated plugins?

if not, just wait for flight to answer you, since this is his thread :P

chubeam

2015-04-03 00:49:40

From: Lipcot
Dont really know, do you have the latest simba release? have you updated plugins?

if not, just wait for flight to answer you, since this is his thread :P


I mistakenly placed the plugins files on the include folder. Now it works properly. Thanks

anoobis

2015-04-04 13:45:23

@Flight Would you mind switching world 301 from MemWorlds to FreeWorlds in \entities\player\login.Simba in the master. Every once in a blue moon my scripts would hit a snag with the new-isih breakhandler switching. Thanks!

Flight

2015-04-04 14:03:30

From: anoobis
@Flight Would you mind switching world 301 from MemWorlds to FreeWorlds in \entities\player\login.Simba in the master. Every once in a blue moon my scripts would hit a snag with the new-isih breakhandler switching. Thanks!


Yeah I guess I'll go ahead and make that adjustment. They said in the beginning it would just be temporary but it's been a long time since then. Also the Breakhandler only switches worlds after a break if you tell it to; by default it will log in the same world as where your player logged out.

msemtex

2015-04-05 16:00:20

Hi Flight!

Is there any Documentation of AeroLib? I want to learn how to implement AeroLib, I come from using Colour, DTMs and SPS for Navigation. I was having a look at your old "HumanMMouse", "BrakeMMouse" and "BreakWindMouse", very interesting functions for mouse movement!

Flight

2015-04-06 10:51:30

From: msemtex
Hi Flight!

Is there any Documentation of AeroLib? I want to learn how to implement AeroLib, I come from using Colour, DTMs and SPS for Navigation. I was having a look at your old "HumanMMouse", "BrakeMMouse" and "BreakWindMouse", very interesting functions for mouse movement!


I'm afraid I don't have any documentation for AeroLib and that's purely because of laziness. I do however hope to begin that one day along with some comprehensive tutorials on scripting with AL. I apologize for that, but the best way to learn in my opinion is just exploring the include and also reading over other AeroLib-based scripts as an example.

meodows92

2015-04-13 02:29:37

MY kaspersky scan one of the file called RSText.dll there is Trojan detected, may i know weather this arolib is collection any information to the user. Why does the anti virus detect it?

Hoodz

2015-04-13 05:03:33

From: meodows92
MY kaspersky scan one of the file called RSText.dll there is Trojan detected, may i know weather this arolib is collection any information to the user. Why does the anti virus detect it?


Dont know, but its safe.

Harrier

2015-04-13 05:19:19

From: meodows92
MY kaspersky scan one of the file called RSText.dll there is Trojan detected, may i know weather this arolib is collection any information to the user. Why does the anti virus detect it?

Calling @slacky;

slacky

2015-04-13 08:53:33

From: meodows92
MY kaspersky scan one of the file called RSText.dll there is Trojan detected, may i know weather this aerolib is collection any information to the user. Why does the anti virus detect it?

I wrote that thingy.. And I have no idea why Kaspersky detects it as a Trojan. The lib is safe to use, source is found here.
Kaspersky is probably like all other avir, where it as well detects some false positives.

Davi

2015-04-23 04:54:34

From: Flight
Yeah I guess I'll go ahead and make that adjustment. They said in the beginning it would just be temporary but it's been a long time since then. Also the Breakhandler only switches worlds after a break if you tell it to; by default it will log in the same world as where your player logged out.


World 335 and 326 are also listed as members when they're not. It also sometimes fails to select another world when choosing a world on the ignore list, which gets you stuck at login.
Also a really awesome feature would be the ability to cycle through the world list so that you log on only to worlds you haven't been on yet until it finishes the cycle and restarts. Would be extremely useful for money making scripts.

Edit: Or even better a world hop like OS buddies. Also today I found out that BankSearch misclicks the search button about 50% of the time resulting in you typing out the item to the world. In my case… multiple times as I had it in a loop til my inventory was full.

Flight

2015-04-27 09:42:29

Updated to revision 6. This mostly consists of adjustments but also brings a bit of new content.

First off the the 'OSRS.simba' was renamed to Highscores.simba and ItemInfo, by Hoodz, was added to grab an item's [buy, sell, average] price. Banking received some adjusting with the addition of a couple new functions named 'WithdrawItem' which will with a bank using a TItem parameter rather than a single TPoint, however both options are available. A bug with bank-searching has also been fixed.

The GroundItems system has been completely removed and merged into the TMSObject system instead. This gives more options to narrow down a specific object on the main screen based on: minimum number of inner colors found, height & width requirements as well as tolerance for the height and width. However using these new parameters are optional and not required to create,or search for a TMSObject.

And finally the world list for both Members and Free Users have been adjusted to include the temporary arrangement.


Please be sure to report any issues with the include here or to me directly.

Hoodz

2015-04-27 10:30:11

From: Flight
Updated to revision 6. This mostly consists of adjustments but also brings a bit of new content.

First off the the 'OSRS.simba' was renamed to Highscores.simba and ItemInfo, by Hoodz, was added to grab an item's [buy, sell, average] price. Banking received some adjusting with the addition of a couple new functions named 'WithdrawItem' which will with a bank using a TItem parameter rather than a single TPoint, however both options are available. A bug with bank-searching has also been fixed.

Please be sure to report any issues with the include here or to me directly.


thanks for the updates flight, great work!

currently working on some Grand Exchange functions, almost done.


let me know what you think.

Flight

2015-04-27 13:30:37

That's looking pretty good Hoodz, let me know how you progress through that and maybe we'll get it added in.

Davi

2015-04-27 13:49:57

Now that we have scrollToItem(TItem) and withdrawItem(TItem) can we have the logical culmination of scrollToAndWithdraw(TItem)?


Perhaps more important when looking for multiple items scrolling should stop at the first item it sees so that you don't have to scroll back up. Can we have a scrollToItems(TItemArray) ?

This would scroll to the first item in the array it sees and return it as a TItem, this would allow for stuff like


repeat
itemToRemove := scrollToItems(TItemArray);
withdrawItem(itemToRemove, quantity[itemToRemove.Name]);
TItemArray.remove(itemToRemove);
until (TItemArray.length() < 1)


Also I added one of the crafting interfaces for my AIO Jewellery script, I can also do others if you would like:

with Interfaces[JEWELLERYSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 39423;
ColorTol := 5;
Text := 'Rings';
TxtBounds := toBox(40, 28, 150, 110);
end;

Unfold

2015-04-29 17:04:35

Is there any drop item function?

woo hoo

2015-04-29 19:39:44

function waitForTabChange(Tab, TimeToWait: Integer): Boolean;
var
T : Timer;
begin
Result := false;
if ((not isBankOpen()) or (getBankMode = 'Standard')) then
Exit;

T.start();
while (T.timeElapsed() =< TimeToWait) do
if getCurrentBankTab() = Tab then
Exit(True);
end;

changed
(T.timeElapsed() >= TimeToWait)
to
(T.timeElapsed() <= TimeToWait)
and it started working for me

Lipcot

2015-04-30 16:05:59

Hey flight, i read on page 8 ineedbot suggested a smartshowconsole := false; to be able to hide it as SRL-6 . Its a nice suggestion :garfield: :garfield: :garfield: :garfield: :garfield: .

Harrier

2015-04-30 16:17:17

From: Lipcot
Hey flight, i read on page 8 ineedbot suggested a smartshowconsole := false; to be able to hide it as SRL-6 . Its a nice suggestion :garfield: :garfield: :garfield: :garfield: :garfield: .

So nice that it's already there ;)
SMART_ShowConsole := False;

Lipcot

2015-04-30 17:16:51

From: Hawker
So nice that it's already there ;)
SMART_ShowConsole := False;


extra nice! i searched for it ( obviously a bad search ) lol.

Flight

2015-04-30 23:20:33

From: woo hoo
function waitForTabChange(Tab, TimeToWait: Integer): Boolean;
var
T : Timer;
begin
Result := false;
if ((not isBankOpen()) or (getBankMode = 'Standard')) then
Exit;

T.start();
while (T.timeElapsed() =< TimeToWait) do
if getCurrentBankTab() = Tab then
Exit(True);
end;

changed
(T.timeElapsed() >= TimeToWait)
to
(T.timeElapsed() <= TimeToWait)
and it started working for me


Good catch! This is what happens when you go back and fourth between using different types of loops throughout multiple files. I'll adjust this for the future revision/update.

From: Hawker
So nice that it's already there ;)
SMART_ShowConsole := False;


Indeed, and by default it's set to include the SMART console but obviously can be toggled. This was introduced alongside a global variable for SMART's useragent, which one can also modify.

Davi

2015-05-01 11:16:11

I had to add the interface for the rangers guild target shooting competition for my rangers guild script:

with Interfaces[TARGETSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 4500223;
ColorTol := 5;
Text := 'arget';
TxtBounds := toBox(225, 30, 310, 50);
end;
end;

Unfold

2015-05-01 15:21:27

From: Davi
I had to add the interface for the rangers guild target shooting competition for my rangers guild script:

with Interfaces[TARGETSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 4500223;
ColorTol := 5;
Text := 'arget';
TxtBounds := toBox(225, 30, 310, 50);
end;
end;


Nice! I tried making a range guild script but it kept getting stuck/moving/accidentally clicking on the npc and dieing :/

Davi

2015-05-01 21:40:44

From: Unfold
Nice! I tried making a range guild script but it kept getting stuck/moving/accidentally clicking on the npc and dieing :/


Mine is currently on a 4 hour run, getting me more than 20k per/hour :P I'll release it after the interface gets included in a revision of AeroLib.

liams007

2015-05-02 20:16:07

Edit: Posted on wrong thread. Whoops

Davi

2015-05-05 17:59:07

From: Unfold
Nice! I tried making a range guild script but it kept getting stuck/moving/accidentally clicking on the npc and dieing :/


It's now released in the public OSRS section if you want.

I also added the tanning interface for my tanner, which is also released:


with Interfaces[TANNINGSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 2070783;
ColorTol := 5;
Text := 'hides';
TxtBounds := toBox(140, 30, 375, 50);
end;

Flight

2015-05-05 19:39:28

From: Davi
It's now released in the public OSRS section if you want.

I also added the tanning interface for my tanner, which is also released:


with Interfaces[TANNINGSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 2070783;
ColorTol := 5;
Text := 'hides';
TxtBounds := toBox(140, 30, 375, 50);
end;


Nicely done Davi. If you've any more interfaces go ahead and post 'em and we'll give AeroLib a revision update, along with Hoodz's Grand Exchange work.

Flight

2015-05-11 12:59:00

Updated to revision #7 . This was juts a couple small banking fixes along with the addition of Davi's interfaces. Hoodz I did not add your Grand Exchange system in yet as I've not had the chance to test it personally but I do plan to add it in sometime soon. If you have any updates on that just drop me a line or add them directly to that thread.

lolskilla

2015-05-11 13:07:13

From: Flight
Updated to revision #7 . This was juts a couple small banking fixes along with the addition of Davi's interfaces. Hoodz I did not add your Grand Exchange system in yet as I've not had the chance to test it personally but I do plan to add it in sometime soon. If you have any updates on that just drop me a line or add them directly to that thread.


That was very fast :O THanks for your efforts

Hoodz

2015-05-11 15:18:04

From: Flight
Updated to revision #7 . This was juts a couple small banking fixes along with the addition of Davi's interfaces. Hoodz I did not add your Grand Exchange system in yet as I've not had the chance to test it personally but I do plan to add it in sometime soon. If you have any updates on that just drop me a line or add them directly to that thread.


no problem, take your time.

xujnea

2015-05-12 11:16:02

After update Im getting error. It compiles successfully,but then i start it," Math tab opens " and i get this error :

Error: Invalid jump at line 451
Execution failed.

My bad,I declaredPlayers before InitAll.

woo hoo

2015-05-12 13:26:29

TRSWalker.walkpath function forces the inventory tab to be up during its run.

Pakyakkistan

2015-05-16 20:18:43

Does the GECOLLECTSCREEN also detect the Bank Collect Screen? If not I can grab the details on that to add it, if you'd like.
EDIT: It doesn't due to the text positions being in a slightly different position.

with Interfaces[BANKCOLLECTSCREEN] do
begin
FontType := 'UpChars07';
FontColor := 2070783;
ColorTol := 5;
Text := 'Collection';
TxtBounds := toBox(210, 54, 278, 73);
end;

Also, a change needs to be made to isInterfaceOpen from

function isInterfaceOpen(): Boolean;
var
i : Integer;
begin
for i:=BANKSCREEN to TARGETSCREEN do
if Interfaces[i].isVisible() then
Exit(true);
result := false;
end;
to

function isInterfaceOpen(): Boolean;
var
i : Integer;
begin
for i:=BANKSCREEN to TANNINGSCREEN do
if Interfaces[i].isVisible() then
Exit(true);
result := false;
end;
since you have added more interfaces past the TARGETSCREEN interface.

EDIT2:
There is also this possible snippet you could add to the interface section, although I think I have the timer things wrong.


function WaitForInterface(InterfaceID,
WaitPerLoop, Timeout: Integer): Boolean;
begin
Result := False;
Timer.Start;
while Interfaces[InterfaceID].isVisible = false do
begin
Wait(WaitPerLoop);
if (Timer.TimeElapsed >= Timeout) then
Exit;
end;
Result := True;
end;

davyraitt

2015-05-18 12:27:27

Just updated aerolib and I am now running this. Will let you know if I encounter any problems or have good proggies

Flight

2015-05-24 09:44:38

Updated to revision #8 . The most noteworthy addition here is the new WorldSwitcher, which you can find in "core > gametabs > WorldSwitcher.simba". This will handle switching worlds in-game without having to logout, choose a world then log back in. You can do this via function WS_switchWorlds(World: Integer) which will result True if the player was successfully switched to the target world.

Logging out has been fixed, a small issue with Interfaces has been fixed (as well as a version of Pakyakkistan's request for a "waitInterfaceOpen"), bank scrolling has been adjusted and windMouseDTM has been replaced with windMouseFunc which will continue moving the mouse until function "Func" has been reached. This will allow AL to utilize the function for much more than just scrolling the bank interface for items. As brought up by Woo Hoo, RSWalker (nor any randoms-checking function/procedure) should no longer force the Inventory gametab to be open.

I apologize for being late to push this update as I know it's critical to have logging out functional. I've been very busy with my new job but I hope I'll have time at least once a week to work on AeroLib and other projects. Thank you all for being patient.

woo hoo

2015-05-24 14:52:41

rev 8:
[AL] Connection lost, please wait..

This is reported on a loading screen while TRSWalker.Walkpath is running.

Also TRSWalker.Walkpath (wsSPS walkstyle) tends to click in proximity to or at the final point in a designated path 2-3 times.

Flight

2015-05-24 16:46:42

From: woo hoo
rev 8:

This is reported on a loading screen while TRSWalker.Walkpath is running.

Also TRSWalker.Walkpath (wsSPS walkstyle) tends to click in proximity to or at the final point in a designated path 2-3 times.


That's recognition of "Connection lost, please wait" or even loading of the new map area. And the multi-clicking on the last tile in a path doesn't seem to be an issue but if you'd like to remove it personally open up Walker (core > minimap > Walker.simba) and delete line 385 - 391.

ineedbot

2015-05-25 16:04:07

Hey, great work on the updates and everything;

A couple things I noticed is that using 'OpenBankPoint' doesn't work on the lumbridge castle cellar's bank chest, as the uptext for the chest is 'Bank Chest', and 'DepositItem' with doWait only works when the amount to deposit is -1, if it was, for example, 27, doWait is ignored.

And one more thing; you should add an auto updater, that would be great :)

Thanks!

dutchp0wner

2015-05-27 07:20:04

Is there a way to find the older versions of AeroLib?

Flight

2015-05-27 07:24:33

From: ineedbot
Hey, great work on the updates and everything;

A couple things I noticed is that using 'OpenBankPoint' doesn't work on the lumbridge castle cellar's bank chest, as the uptext for the chest is 'Bank Chest', and 'DepositItem' with doWait only works when the amount to deposit is -1, if it was, for example, 27, doWait is ignored.

And one more thing; you should add an auto updater, that would be great :)

Thanks!


I'm considering it mate.

From: dutchp0wner
Is there a way to find the older versions of AeroLib?


I'm afraid not, what in AeroLib are you looking for?

dutchp0wner

2015-05-27 07:28:23

The version which Fitta used for his Chaos Druids script, so around January
https://villavu.com/forum/showthread.php?t=111679

voltrbots

2015-05-30 08:05:47

program RUNME;
{$DEFINE SMART}
{$DEFINE WALKER}

{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.

so i run this and i get errors


Error: Unknown declaration "ocr" at line 3604
Compiling failed.
Error: Unknown declaration "ocr" at line 2975
Compiling failed.

everytime i run it the number changes any ideas?

Harrier

2015-05-30 08:38:05

From: voltrbots
program RUNME;
{$DEFINE SMART}
{$DEFINE WALKER}

{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.

so i run this and i get errors


Error: Unknown declaration "ocr" at line 3604
Compiling failed.
Error: Unknown declaration "ocr" at line 2975
Compiling failed.

everytime i run it the number changes any ideas?

Fyi: This doesn't seem to be a aerolib issue. Tv I him and installed the SRL include currently been developed and got the same sort of issue.

Flight

2015-05-30 09:13:30

What file is that opening when the error is thrown? That might be a plugin conflict with an older version of Simba, perhaps. I suggest getting the newest everything, Simba, SMART, AeroLib and its plugins.

Harrier

2015-05-30 09:22:06

From: Flight
What file is that opening when the error is thrown? That might be a plugin conflict with an older version of Simba, perhaps. I suggest getting the newest everything, Simba, SMART, AeroLib and its plugins.

No file is opened with this error (in either include).
Updated simba for him, then tried ollys version, then deleted all plugins and updated and reinstalled the ones on OP. Reinstalled aerolib (Got the newest version off git), I'm truly clueless on this lol.
Just to add on to this, on each compile the line the error is on changes, which is… odd.

iaks

2015-05-31 11:33:45

About banking. Hooking PINPENDING interface does not seem to work properly (maybe I just did it wrong?). A suggestion, perhaps add a function to handle the interface. Right now I wrote a really robust solution in a wc script as I have only 2 days left anyway. Could be a bummer when re-logging and stuck in bank. :D

ben5252

2015-05-31 12:46:59

From: voltrbots
program RUNME;
{$DEFINE SMART}
{$DEFINE WALKER}

{$i AeroLib/AeroLib.Simba}

begin
initAL();
end.

so i run this and i get errors


Error: Unknown declaration "ocr" at line 3604
Compiling failed.
Error: Unknown declaration "ocr" at line 2975
Compiling failed.

everytime i run it the number changes any ideas?


Go into your fonts folder and delete the folder named "OCR Items" for some reason it causes a problem with any program that doesn't use it. Happened to me on another script before and it to me a minute to re-figure it out. Going to have to unzip the OCR files again when I go back to use the other script. If anyone can figure out why this happens that would be fantastic.

xujnea

2015-05-31 14:46:55

If you get "Click here to play" message while switching with "WS_switchWorlds", script breaks and gives some kind of text error. Got it 3 times, but I forgot to make screen. ** i got it again,so i made a screen. **


Also made random world switcher,but it's not efficient enough. How can i make it go from 01 to 94,skipping memb worlds and then reapeat from start? :/

 
procedure FastSwitchRandomW
begin
WriteLn('Generuojamas Worldas');
case (random(11)) of
0: WS_switchWorlds(01);
1: WS_switchWorlds(08);
2: WS_switchWorlds(16);
3: WS_switchWorlds(26);
4: WS_switchWorlds(35);
5: WS_switchWorlds(81);
6: WS_switchWorlds(84);
7: WS_switchWorlds(83);
8: WS_switchWorlds(93);
9: WS_switchWorlds(94);
10: WS_switchWorlds(82);
end;
end;

Incurable

2015-06-01 09:14:13

I'm on a break from Uni now and have started learning how to script with AeroLib and Lape Reflection for 07, but progress has been slow without a tutorial. I know that you're busy, @Flight; but any updates on an AL tutorial being written? It'd be great to see how the include is intended to be used. :)

Hoodz

2015-06-01 11:02:18

From: Incurable
I'm on a break from Uni now and have started learning how to script with AeroLib and Lape Reflection for 07, but progress has been slow without a tutorial. I know that you're busy, @Flight; but any updates on an AL tutorial being written? It'd be great to see how the include is intended to be used. :)


you can skype me if you have questions.

Incurable

2015-06-01 11:45:16

From: hoodz
you can skype me if you have questions.


I may do that, thanks. :D

xujnea

2015-06-03 10:36:41

Hello, guys, I want to do 20min break after finding moderator in chat. Cause now,everytime he talks, I logout and my script keeps making screenshots and I want it to go on break instead of just logging off. How can I use this :
al_OnFindMod   = 1;  // After a player or Jagex mod is detected talking in the chat box.
I can't find actual procedure. Love new worldSwitch thingy, but it breaks if you get "Click here to play" message while switching with "WS_switchWorlds" and it happens every 10~30 mins. :)

Also what should I add in setupBreak(BreakIn, BreakFor, RanBreakIn, RanBreakFor: Integer); I tried adding miliseconds, and then put "breakhandler(false);" into my procedures. And it didn't work for me. I tried checking time with getTimeUntilBreak(): Integer;, but I get negative numbers. So how should I fill "setupBreak" correctly and should I add "breakhandler(false);" multiple times(like in procedures) or just once like on starting script procedure?

Flight

2015-06-03 18:56:53

From: xujnea
Hello, guys, I want to do 20min break after finding moderator in chat. Cause now,everytime he talks, I logout and my script keeps making screenshots and I want it to go on break instead of just logging off. How can I use this :
al_OnFindMod   = 1;  // After a player or Jagex mod is detected talking in the chat box.
I can't find actual procedure. Love new worldSwitch thingy, but it breaks if you get "Click here to play" message while switching with "WS_switchWorlds" and it happens every 10~30 mins. :)

Also what should I add in setupBreak(BreakIn, BreakFor, RanBreakIn, RanBreakFor: Integer); I tried adding miliseconds, and then put "breakhandler(false);" into my procedures. And it didn't work for me. I tried checking time with getTimeUntilBreak(): Integer;, but I get negative numbers. So how should I fill "setupBreak" correctly and should I add "breakhandler(false);" multiple times(like in procedures) or just once like on starting script procedure?


The procedure that detects & handles moderators and P-Mods is found in "misc > randomsolvers > Master.simba"; go do to line 649 and you'll see the "findMod()" procedure. Indeed the system is outdated and should dynamically handle mod-detection based on what the scripter choose. AKA, switch worlds, log out, or, as you mentioned, take a break. Perhaps I'll throw this in with the next major AeroLib update (1.2).

The "click here to play" message I'm unsure what you're referring to. Is this the big black splash screen you get after you've entered your name & pass and clicked 'Login'? If so I didn't know it was possible to get to that screen while using the World-switcher. And to answer your previous question for entering a set of worlds in order then repeating, I would personally make an (integer) array of those worlds and have a for…to..do loop to switch to each world, like so:

procedure hoppinWorldsLikeABoss();
var
i : Integer;
worlds : TIntegerArray;
label
Start;
begin
Start:
setArrayLength(worlds, 10);
worlds := [1,8,16,35,81,82,83,84,93,94];
for i:=0 to high(worlds) do
begin
warn('Hopping to world '+toStr(worlds[i]), WT_SCRIPT);
WS_switchWorlds(worlds[i]);
DOCOOLSTUFF();
end;
warn('Finsihed our world-switching, starting over'. WT_SCRIPT);
GoTo Start;
end;

Setting up the breakhandler goes like this: "BreakIn" means how long before a break will occur? (in minutes), "BreakFor" is how long the break will last (again, in minutes), "RanBreakIn" is a random amount (of minutes) to add or subtract to 'BreakIn", and "RanBreakFor" is the same but for the 'BreakFor'. You can call "BreakHanlder()" any time you want the script to check if it's time to take a break, and if it is then AeroLib will take over from there. It will also return 'True' if you took a break: "if BreakHandler() then writeln('Took a rest, ready to work again boss!');".


Any other questions, issues, or even suggestions for the include just post away or PM me directly. Since starting my job a few weeks ago my time is extremely limited compared to before but I'll try to put in some work on the weekend if I can. It seems the next obstacle to tackle will be the re-sizable mode and, if it's not released until next week, then this weekend I'll start (blindly) writing system to deal with it. I imagine it's going to be quite difficult and it's released on a week day then I'm sure AeroLib will but wounded until at least the following weekend.

xujnea

2015-06-04 09:05:37

From: Flight


The "click here to play" message I'm unsure what you're referring to. Is this the big black splash screen you get after you've entered your name & pass and clicked 'Login'? If so I didn't know it was possible to get to that screen while using the World-switcher. And to answer your previous question for entering a set of worlds in order then repeating, I would personally make an (integer) array of those worlds and have a for…to..do loop to switch to each world, like so:


Any other questions, issues, or even suggestions for the include just post away or PM me directly. Since starting my job a few weeks ago my time is extremely limited compared to before but I'll try to put in some work on the weekend if I can. It seems the next obstacle to tackle will be the re-sizable mode and, if it's not released until next week, then this weekend I'll start (blindly) writing system to deal with it. I imagine it's going to be quite difficult and it's released on a week day then I'm sure AeroLib will but wounded until at least the following weekend.


Thanks,Flight,your answer was very usefull to me. Yes you can get to splash screen( Black screen with red " Click here to play " button) while using WorldSwitcher,you can also get to splash screen while logging out now,even without using scripts, I think it's some kind of bug or something. Your procedure makes sense,thanks again.


procedure findMod();
var
X,Y : Integer;
begin
if not isLoggedIn() then Exit;
if not AL_HANDLEMODS then Exit;
if ((not cs_FindBitmapToleranceIn(BMP_PModChat, X, Y, 20, toBox(MCX1,MCY1,MCX1+50,MCY2), cs_CTS)) and
(not cs_FindBitmapToleranceIn(BMP_JModChat, X, Y, 20, toBox(MCX1,MCY1,MCX1+50,MCY2), cs_CTS))) then Exit;

warn('PMod detected, going into sleepmode for 10~20mins...', WT_RANDOM);


logoutPlayer();
Sleep(random(60000) + 60000); // <---------- I meet mods alot,lol. And my script was breaking,so i added this.
//Me.Active := False; // Would be better to pause script,is there a procedure for that? :)

WriteLn('Waking up after, Pmod Detect')
loginPlayer(true);
end;

woo hoo

2015-06-04 17:44:12

Regarding the splash screen on world hop:
Sometimes the game disconnects the client and forces a reconnect without a hop, so it brings up a splash screen instead. The same also happens with logouts. (press logout, reconnects and to splash instead of login screen)

xujnea

2015-06-07 10:04:29

Not sure,if you read my Pm,but I got more pics of "IsLoggedIn" error. When I get long option list,script sometimes thinks it's not logged in :/

[ATTACH=CONFIG]26089[/ATTACH]

[ATTACH=CONFIG]26090[/ATTACH]

ineedbot

2015-06-07 23:10:22

I'm sure you may know these already but toggleDataOrbs(true); and toggleRoofRemoval(true); need to be updated.

As well, could you possibly add a javaArg variable, just like you added userAgent var. Only for those who know how to use it can take advantage of it, thanks!

Oh! And it also seems that there isn't a bitmap not being freed. I know its not script related because my script isn't using any bitmaps.

Also 'getPrice' could fail if rsBuddy site is down, and getPage returns nothing. Then strToInt could error and halt the entire script.

Flight

2015-06-08 06:56:39

Revision #11 released. This a simple fix for the Settings gametab. It should also address the issue you've been having, xujnea with isLoggedIn() being corrupted by overly large right-click menus. And also should handle failing to grab an item's information if the RSbuddy website is down (untested).

xujnea

2015-06-08 08:52:03

From: Flight
Revision #11 released. This a simple fix for the Settings gametab. It should also address the issue you've been having, xujnea with isLoggedIn() being corrupted by overly large right-click menus. And also should handle failing to grab an item's information if the RSbuddy website is down (untested).


Thanks for update,bro. But it seems "loginPlayer(true); " doesnt work anymore. debugbox :

Best world found: 27
Loading SMART: World 27
[AL] Startup complete!
[15:39:22:851] [Reflection] [Status] Successfully setup!

It also changed world to one I have set and then just freezes. It seems,it cant find Login screen or something. Picture to make things more clear :
[ATTACH=CONFIG]26107[/ATTACH]

ineedbot

2015-06-08 16:19:11

Thanks flight, and one more thing, could you add an overload function for 'getPrice' to work with IDs, useful for those using reflection and already have the item ids.

Hoodz

2015-06-08 16:25:41

From: ineedbot
Thanks flight, and one more thing, could you add an overload function for 'getPrice' to work with IDs, useful for those using reflection and already have the item ids.


could use this: (credits to mocrosoft)

function getItemNameById(id : integer) : string; //Returns the Itemname (string) by inputting a id (integer) as a parameter
var
wikiaPage, priceString: string;
begin
wikiaPage := getPage('http://www.runelocus.com/item-details/?item_id=' + tostr(id));
priceString := between('<h2>Information about ''', '''</h2>', wikiaPage);
Result := priceString;
end;

Flight

2015-06-09 07:11:26

From: xujnea
Thanks for update,bro. But it seems "loginPlayer(true); " doesnt work anymore. debugbox :

Best world found: 27
Loading SMART: World 27
[AL] Startup complete!
[15:39:22:851] [Reflection] [Status] Successfully setup!

It also changed world to one I have set and then just freezes. It seems,it cant find Login screen or something. Picture to make things more clear :
[ATTACH=CONFIG]26107[/ATTACH]


Fixed and uploaded to GitHub. I didn't push it as a revision so you won't receive a notification that AeroLib was updated.

Warco

2015-06-10 14:41:02

From: Flight
Fixed and uploaded to GitHub. I didn't push it as a revision so you won't receive a notification that AeroLib was updated.


I've downloaded the new revision, but I'm getting the same issue as OP.

mocrosoft

2015-06-11 14:56:56

I'm still thinking why I should this over elffy reflection & osrs-srl

Warco

2015-06-11 16:36:02

My script will not run unless I take Aerolib out of my includes. It just prints this message:

Compiled successfully in 1576 ms.
[21:33:01:060] [Reflection] [Status] Paired with SMART client 31996.
[21:33:01:065] [Reflection] [Status] Successfully setup!
[21:33:39:831] [Reflection] [Status] All cached references free'd from memory
Successfully executed.

When I take Aerolib out of my script, everything works. I have updated to the latest revision (5 minutes ago). Anyone know what my issue is?

DeniedHacker

2015-06-12 11:41:58

Flight, I don't know if you know it yet, but if you change world with WS_switchWorlds and you get the splash screen, you will be returned in your old world.

For anyone wanting a quick fix until it's fixed.
In Simba under Functionlist, Go into Includes->WorldSwitcher.
Double click on «WS_switchWorlds;»

Inside the function : function WS_switchWorlds(World: Integer): Boolean;

Replace

if isSplashScreen() then
begin
mouseBox(toBox(WDx1,WDy1,WDx2,WDy2), MOUSE_LEFT);
while not isLoggedIn() do
wait(60);
end;

If you want the function to return false

if isSplashScreen() then
begin
mouseBox(toBox(WDx1,WDy1,WDx2,WDy2), MOUSE_LEFT);
while not isLoggedIn() do
wait(60);
Result := False;
Exit;
end;

If you want it to retry again in a Infinite Loop

if isSplashScreen() then
begin
mouseBox(toBox(WDx1,WDy1,WDx2,WDy2), MOUSE_LEFT);
while not isLoggedIn() do
wait(60);
Wait(Randomrange(500,5000));
WS_switchWorlds(World);
end;

XxAirWalker26xX

2015-06-15 16:53:42

DropBox Link isnt working for PLugins file

Flight

2015-06-15 19:11:28

From: XxAirWalker26xX
DropBox Link isnt working for PLugins file


I just tried it, downloaded without any problems. Are you getting an error when you use that link? Or problems downloading the zip file?

Rare Scripts

2015-06-17 13:35:35

Fixed Actions on login file:

863: Actions := ['Invalid Username / Password', 500, 10, 'Retry'];

1700: Actions := ['Members world', 500, 10, 'Switch'];

777: Actions := ['Login limit exceeded.', 500, 10, 'Switch'];

:)

Flight

2015-06-26 07:02:54

From: xujnea
Script cant log in , if I turnoff " IgnoreWorlds" (Pvp worlds). It seems script can't find "warning message", a message before logging in pvp w :). And is there efficient way to turn off "ignore worlds"? Cause i just deleted them now :S . Also I wanted to ask about "ChatOptionScreen", does it works with objects and human players? I get chat option screen with 2 options Yes and No. Function seems do not react to it, chat option screen looks like this : http://vignette1.wikia.nocookie.net/2007scape/images/0/03/Player_plants_flowers.png/revision/latest?cb=20130412204949 . Can't wait for your new update, peace o/

Warning message joining pvp worlds :



I've had such issues with chatOptionScreen() as well so I'll look over that this evening. Also, yes I've never made a procedure to handle the second enter-world interface for PvP worlds.

Flight

2015-10-04 17:12:46

Hey there everyone. Just dropping in for a minute to let you all know what's up. I've been quite busy with work for a while now but had a two-day weekend so I've been tinkering around with some things. I have a few additions and upgrades to do to AeroLib and, if I've the time I'll be pushing a new revision within the next week. It's just difficult to say when I'll have the time to do so, so for what it's worth I do apologize for being behind in updating AeroLib. If it becomes apparent that this'll be a continue issue then I'll have someone else, trusted, come and maintain the include in my absence. On that note if you're interested in doing so drop me a line.

So please be sure to post here any issues you're having with the include or anything new you'd like to see added. Thank you all for your feedback.

ineedbot

2016-01-06 17:18:46

Heres a debugger I came up with for AL. Works without SMART and will paint the debug on the debug img form:


Debugs a bunch of stuff and can easily add more to debug.

Also pressing return on your keyboard with the script running will dump the current minimap map to the includes folder. All the minimap debugging is from Slacky.

terrorbyte

2016-02-16 00:44:40

From: Flight
The compile error should be fixed now with rev.6.



I'm sorry but I don't see the problem here.:huh:


I meant I keep getting error while updating for Aerolib. My rev version doesn't update.

Joopi

2017-08-13 19:14:16

@Flight;

I think you should lay out the difference between Aerolib 1.6 and 2.0 in black and white.
My suggestion is to make an entire new thread for it and just barely mention it here in this thread, but I understand that that is a menial task noone is willing to do.

There have been several people on irc now who have confused the new AeroLib with the old, thinking that it is compatible with Reflection and whatnot, and thus consequently trashing the irc channel with avoidable "halps!!".

Doors

2019-04-06 04:05:51

Error: Operator "cmp_Equal" not compatible with types "Int32" and "(eZTagButton=0, eZTagCheckbox=1, eZTagCombobox=2, eZTagEdit=3, eZTagForm=4, eZTagGroupbox=5, eZTagImage=6, eZTagLabel=7, eZTagListBox=8, eZTagMemo=9, eZTagProgressBar=10, eZTagTab=11, eZTagTabList=12)" at line 71

what is this?

KeepBotting

2019-04-06 21:08:48

From: superfonz
[=================================]
| < Aero|Library > |
| —————- |
| Version : 1.2 |
| Revision : 6 |
[=================================]
[AL] Initiating AeroLib…
[AL] Checking version…
[AL] There's a major update available for AeroLib.
[AL] Updating AeroLib…
Error: Access violation at line 627
Execution failed.

I keep getting this, i already did the Reflection prosocks removal thing


{$loadlib prosocks}
function PS_GetPage(Url: string): string;
var
S: SSLSocket;
Res: ProMemoryStruct;
begin
S.init();
S.setURLFollow(true);
S.setURL(URL);
S.doGet(Res);
MemMove(Res.Memory^, Result[1], Res.Size); <- this is line 627
S.free;
end;


From: Doors
Error: Operator "cmp_Equal" not compatible with types "Int32" and "(eZTagButton=0, eZTagCheckbox=1, eZTagCombobox=2, eZTagEdit=3, eZTagForm=4, eZTagGroupbox=5, eZTagImage=6, eZTagLabel=7, eZTagListBox=8, eZTagMemo=9, eZTagProgressBar=10, eZTagTab=11, eZTagTabList=12)" at line 71

what is this?


Hi, AeroLib is not actively maintained. If you are having issues I'd refer you to the official include for OSRS, SRL.

darker2k

2019-09-25 12:12:45

Hi, I did al the steps and when I compiled I got the following error: File "Reflection/Reflection.simba" not found at line 3

{$I Reflection/Reflection.simba}

Another error that I'm getting on another script is:

Unknown declaration "CharsNPC" at line 405, column 14 in file "C:\Simba\Includes\AeroLib\core\engine\SimbaEx.simba"

I'm running Simba version 1.3 and the reason of why I'm doing this is because most of the free osrs scripts need AeroLib which I don't have and I can't run them, any tip?

Dan the man

2019-09-25 12:49:14

Dont think AL runs on Simba 1.3.
Try this version; I updated it for my NMZ script.
Only runs on 1.2.
http://s000.tinyupload.com/?file_id=34270621504217928031

darker2k

2019-09-25 15:33:55

From: Dan the man
Dont think AL runs on Simba 1.3.
Try this version; I updated it for my NMZ script.
Only runs on 1.2.
http://s000.tinyupload.com/?file_id=34270621504217928031


Hi, I just installed the version 1.2 and I'm still having issues, I followed the instructions from this post for version 1.2 and it works but when I extract your file into the Includes folder and try to run the script, it fails :(

Dan the man

2019-09-25 21:13:25

From: darker2k
Hi, I just installed the version 1.2 and I'm still having issues, I followed the instructions from this post for version 1.2 and it works but when I extract your file into the Includes folder and try to run the script, it fails :(


What is the error?

darker2k

2019-09-26 10:11:09

From: Dan the man
What is the error?


I'm trying to run this script ([AIO] vAgility) and when I compile I get this error:

Error: Unknown declaration "SSLSocket" at line 83
Compiling failed.

[ATTACH=CONFIG]28676[/ATTACH]

I have installed both AeroLib and Reflection but I can't run any script :(

Any help will be appreciated :)

Dan the man

2019-09-26 21:09:40

From: darker2k
I'm trying to run this script ([AIO] vAgility) and when I compile I get this error:

Error: Unknown declaration "SSLSocket" at line 83
Compiling failed.

[ATTACH=CONFIG]28676[/ATTACH]

I have installed both AeroLib and Reflection but I can't run any script :(

Any help will be appreciated :)


You are using a script that is in the out of date/broken section so I would assume it doesnt currently work.
Secondly, the script uses reflection, which has nothing to do with Aerolib.

The error you are recieving is related to reflection.

These are the current agility scripts: https://villavu.com/forum/forumdisplay.php?f=539
Cannot verify what is working at the moment though.

madnessguy

2020-08-12 00:34:22

gameTab(TAB_INV);


is not working ..
all other tabs works but TAB_INV doesn't, hours of debugging the core with no luck! ..
even tabExists(TAB_INV) or tabExists(4) / tabExists(24) and FTab(TAB_INV) returns false ..

using AEROLIB 2.1.1 and while i'm on INV tab i run WriteLn(getCurrentTab); outputs 24

weird! any fix .. maybe! hoping .. :)

Czepa

2022-12-17 04:20:25

the areolib filehosting is broken, it wont let me download it. also, for another script i have it saying srl.simba does not exist.

slacky

2022-12-17 11:20:55

> AeroLib is currently not maintained and could be outdated/broken
If you still want it:
https://github.com/J-Flight/AeroLib

As for you error.. That's another include. SRL. The two should not be compatible to run together, so I assume that's from another script.
Old SRL is located at https://github.com/SRL/SRL, new SRL is located here: https://github.com/villavu/SRL-Development

These includes are outdated by several years, except for SRL-development. Flight corrently maintains SRL-F, also found on his github.

Czepa

2022-12-19 02:08:54

Thankyou, i installed that with the simba package installer
From: slacky
> AeroLib is currently not maintained and could be outdated/broken
If you still want it:
https://github.com/J-Flight/AeroLib

As for you error.. That's another include. SRL. The two should not be compatible to run together, so I assume that's from another script.
Old SRL is located at https://github.com/SRL/SRL, new SRL is located here: https://github.com/villavu/SRL-Development

These includes are outdated by several years, except for SRL-development. Flight corrently maintains SRL-F, also found on his github.