PDA

View Full Version : AeroLib Include



Pages : [1] 2 3 4

Flight
05-17-2014, 05:00 AM
http://i.imgur.com/eggPPfS.png
Version: 2.1
Revision: 1
Last updated: January 27, 2018

GitHub project page (https://github.com/J-Flight/AeroLib/)


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

Updated to run on Lape
S.M.A.R.T.-compatible
RSWalker positioning system by Slacky (https://villavu.com/forum/showthread.php?t=111914)
Stats (https://villavu.com/forum/showthread.php?t=111837)
Random-solvers (default set to 'dismiss')


Minor

Single-player only (at this time)
Slacky's OCR engine (http://villavu.com/forum/showthread.php?t=106987) (handling UpText)
TColEx color-finding routines, based on Janilabo's work (http://villavu.com/forum/showthread.php?t=101777)
RS Entities (http://villavu.com/forum/showthread.php?t=105064) (will be improved upon over time)
Unique handling of Players/NPCs/Items/Objects


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 (https://villavu.com/forum/forumdisplay.php?f=308) (I recommend Simba 1.2-rc6 32-bit version (http://nala.villavu.com/downloads/master/05a0dc6397ebfbf77d10eae153e58a5050678f87/Simba.i386-win32.exe))
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+

AeroLib is currently not maintained and could be outdated/broken
Downloads


AeroLibrary ([1.6] include only) (https://github.com/J-Flight/AeroLib/archive/master.zip)
AeroLib 2.1 (zipped) (https://sabercathost.com/9kz1/AeroLib_2.1_1.zip)
Plugins only (https://sabercathost.com/4Xlb/Plugins.zip)
WorldListChars07 font set (2.1+) (https://sabercathost.com/duJO/WorldListChars07.zip)
StatChars07 font set (2.1+) (https://sabercathost.com/duJN/StatChars07.zip)


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.

http://i.imgur.com/peV4o2L.png


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

https://i.imgur.com/sMjNltW.png


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

http://i.imgur.com/Y2dcpii.png


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.

https://i.imgur.com/LUZCy4g.png
https://i.imgur.com/iesvDCQ.png


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


AeroLibrary - Core functionality (https://villavu.com/forum/showthread.php?t=113715)
AeroLib - Interacting with the game interface (https://villavu.com/forum/showthread.php?t=118086)
Utilizing RSWalker (https://villavu.com/forum/showthread.php?t=111914)
Creating your first script (https://villavu.com/forum/showthread.php?t=117106) (by Dan the man)
Aerolib: Creating and using items (https://villavu.com/forum/showthread.php?t=117117) (by Dan the man)


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
05-17-2014, 05:03 AM
-Reserved post, just in case.

Brandon
05-17-2014, 05:23 AM
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
05-17-2014, 10:02 AM
Gratz on release flight!

masterBB
05-17-2014, 11:58 AM
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
05-17-2014, 12:11 PM
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
05-17-2014, 12:12 PM
Gratz on release, I was wonder when this would finally come out :)

Flight
05-17-2014, 12:57 PM
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
05-17-2014, 04:37 PM
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
05-17-2014, 04:53 PM
...
~FlightBeautiful release, Flight - fantastic work mate!

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

tls
05-17-2014, 09:05 PM
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
05-17-2014, 09:48 PM
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
05-17-2014, 11:08 PM
Looks cool! I'll check it out sometime!

Olly
05-18-2014, 12:26 AM
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
05-18-2014, 03:56 AM
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!


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.


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.


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
05-18-2014, 06:54 AM
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
05-18-2014, 07:07 AM
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
05-18-2014, 07:46 AM
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
05-18-2014, 10:31 AM
http://www.youtube.com/watch?v=ldBpdJefhYg#t=14

You can see that video in 2 different ways..

Olly
05-18-2014, 01:58 PM
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
05-18-2014, 03:03 PM
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
05-23-2014, 07:02 AM
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
05-29-2014, 09:42 AM
Has anyone at all tested this include? Because there's someone who's having a plugin-related error (http://villavu.com/forum/showthread.php?t=108971&p=1294723#post1294723) 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
05-29-2014, 10:17 AM
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
05-30-2014, 02:22 AM
I love this include, thank you so much for sharing this.

The Mayor
06-03-2014, 03:36 AM
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
06-03-2014, 06:53 AM
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
06-03-2014, 09:38 PM
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
06-04-2014, 02:33 AM
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
06-09-2014, 08:04 AM
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 (https://github.com/J-Flight/AeroLib) if you'd like to see the most recent changes.

Syntax
06-25-2014, 07:48 AM
Awesome release Flights, looks like you have gone to lots of effort.
You effort is appreciate :)

Unfold
07-22-2014, 01:16 AM
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
07-22-2014, 01:23 AM
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
07-22-2014, 01:42 AM
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
07-22-2014, 01:53 AM
...

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
07-26-2014, 02:04 PM
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
07-30-2014, 04:06 PM
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
07-31-2014, 12:37 PM
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
07-31-2014, 02:18 PM
Yes my testing with the SEWalker is near none infact, below I'll answer your questions individually.



- 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.



- 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.



- 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.



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.[/FONT]


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
08-09-2014, 06:43 AM
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
08-10-2014, 12:12 AM
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
09-05-2014, 02:11 PM
I can't load slackworlds's extension to get simbaext.rar, can anyone upload it for me somewhere?

Flight
09-06-2014, 12:42 AM
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
09-07-2014, 06:13 AM
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
09-12-2014, 07:19 PM
Is there a reflection include that works with lape? and more importantly with this include?

Harrier
09-12-2014, 08:44 PM
Is there a reflection include that works with lape? and more importantly with this include?
This is a colour only include.

Fitta
09-12-2014, 09:05 PM
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
09-12-2014, 09:07 PM
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
09-12-2014, 09:17 PM
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
09-19-2014, 11:04 PM
@Flight, If I was to make a some suggestions on the include, would that be here in this thread or via PM?

Harrier
09-26-2014, 08:50 PM
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
09-26-2014, 09:38 PM
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
09-27-2014, 07:19 AM
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
09-27-2014, 09:51 AM
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
09-27-2014, 10:36 AM
It still doesn't work, even if you disable it.

Flight
09-28-2014, 03:17 AM
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
09-28-2014, 07:16 AM
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
09-28-2014, 07:30 AM
Nice, can't wait!
Sure you can... It's not like your gonna die in the meanwhile :tongue:

Hoodz
09-28-2014, 02:01 PM
Sure you can... It's not like your gonna die in the meanwhile :tongue:

slacky pls..

ineedbot
09-30-2014, 04:57 AM
Once you know how to use SEWalker, it can be very accurate. Nice!

Shout
10-13-2014, 05:27 PM
Is this still being worked on? Would love to see some tutorials/example scripts to work from.

Flight
10-14-2014, 01:26 AM
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
10-14-2014, 02:20 PM
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
10-18-2014, 10:40 AM
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
10-18-2014, 02:05 PM
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
10-18-2014, 02:36 PM
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.


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
10-18-2014, 03:35 PM
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
10-18-2014, 03:47 PM
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
10-18-2014, 04:31 PM
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
10-18-2014, 05:08 PM
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
10-20-2014, 06:26 AM
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
10-20-2014, 10:34 AM
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
10-20-2014, 02:37 PM
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
10-21-2014, 07:19 AM
Thanks you for your time

Of course. :smile:


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
10-21-2014, 08:59 AM
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
10-21-2014, 10:39 AM
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
10-22-2014, 08:55 PM
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
10-22-2014, 09:39 PM
can anyone help?

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

http://i.gyazo.com/7235cf602485f77271596986c298727b.png

Flight
10-31-2014, 11:38 AM
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
11-07-2014, 06:44 PM
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
11-07-2014, 06:49 PM
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
11-07-2014, 06:53 PM
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
11-07-2014, 06:55 PM
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
11-07-2014, 09:10 PM
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
11-15-2014, 04:56 PM
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
11-15-2014, 05:00 PM
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
11-16-2014, 12:03 PM
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
11-16-2014, 01:17 PM
made a cooking script with aerolib:
http://puu.sh/cT3BL/97ae9dfe6a.png

still running :D

Flight
11-16-2014, 01:22 PM
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.


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
11-16-2014, 01:56 PM
Sure I'll give it a go.



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

Cheers!

Harrier
11-16-2014, 04:27 PM
Could you add something like WorldInfo := [];? So you can choose what world to log into?

Hoodz
11-16-2014, 05:52 PM
Could you add something like WorldInfo := [];? So you can choose what world to log into?

you can call changeWorld(world);

Harrier
11-16-2014, 07:46 PM
you can call changeWorld(world);

<33

Fitta
11-16-2014, 11:54 PM
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..

Zyt3x
11-17-2014, 05:15 PM
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
11-23-2014, 01:27 AM
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
11-23-2014, 12:32 PM
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
11-23-2014, 04:26 PM
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
11-23-2014, 05:12 PM
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
11-23-2014, 05:22 PM
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
11-23-2014, 05:54 PM
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
11-23-2014, 05:55 PM
...

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

Hoodz
11-23-2014, 05:55 PM
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
11-23-2014, 06:22 PM
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);"?


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
11-23-2014, 06:23 PM
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
11-23-2014, 06:24 PM
createCol(540243, 3, 0.10, 1.07)


CTS3? Pfft. waste of time!

Kyle
11-23-2014, 06:32 PM
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
11-23-2014, 06:33 PM
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
11-23-2014, 06:48 PM
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:

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
11-23-2014, 07:03 PM
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
11-23-2014, 07:12 PM
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
11-24-2014, 07:19 AM
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
11-24-2014, 01:30 PM
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
11-25-2014, 11:31 PM
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
11-26-2014, 07:35 PM
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
11-26-2014, 07:59 PM
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
11-27-2014, 02:59 PM
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
11-29-2014, 09:48 AM
https://dl.dropboxusercontent.com/s/ydsczou6ws8o8xn/2014-11-29_09-47-35.png?dl=0
You forgot to search for bank chests :p in openBankPoint()

Flight
11-29-2014, 01:24 PM
https://dl.dropboxusercontent.com/s/ydsczou6ws8o8xn/2014-11-29_09-47-35.png?dl=0
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
11-29-2014, 04:05 PM
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
11-29-2014, 04:13 PM
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
11-29-2014, 04:32 PM
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
11-29-2014, 04:46 PM
There must be a work-around?

Not that I know of, Olly; found a site (http://www.rawgit.com) 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
11-29-2014, 05:02 PM
Not that I know of, Olly; found a site (http://www.rawgit.com) 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
11-29-2014, 05:03 PM
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
11-29-2014, 05:07 PM
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
11-29-2014, 05:09 PM
Couldn't there just be a mirror over at googlecode?
Guess that would be the best method

Frement
11-29-2014, 05:26 PM
Also I see Ashaman88 is using it in his Ivy script atleast.

Kyle
11-29-2014, 06:19 PM
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
11-29-2014, 06:26 PM
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
11-30-2014, 02:17 AM
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
11-30-2014, 03:44 AM
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
11-30-2014, 03:52 AM
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
11-30-2014, 04:00 AM
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
11-30-2014, 04:15 AM
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
11-30-2014, 04:16 AM
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
11-30-2014, 04:25 AM
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
11-30-2014, 04:43 AM
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
11-30-2014, 04:45 AM
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
11-30-2014, 06:18 AM
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
11-30-2014, 10:31 AM
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
11-30-2014, 04:09 PM
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
11-30-2014, 05:09 PM
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
11-30-2014, 05:12 PM
That's good to hear. Who's working on the base?

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

slacky
11-30-2014, 05:27 PM
@Flight @Slacky I would like to help with this if possible
you could try to have a talk with Olly @ IRC (on #SRL (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=SRL) or #Simba (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=Simba)).
Tho I have feeling he wanna sit on what he have for a while longer.

Kyle
12-02-2014, 12:50 PM
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
12-02-2014, 03:14 PM
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
12-02-2014, 03:18 PM
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
12-02-2014, 04:39 PM
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
12-02-2014, 05:33 PM
..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
12-05-2014, 03:23 AM
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
12-07-2014, 02:34 PM
Flight, was is your take on moving/mirror'ing the project so we can have an auto updater?

Goobs
12-09-2014, 06:49 AM
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
12-09-2014, 08:17 AM
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
12-09-2014, 09:20 PM
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
12-09-2014, 09:23 PM
Even with SEW_Map_Size changed it still gives me the same exception.

slacky
12-10-2014, 12:33 AM
Even with SEW_Map_Size changed it still gives me the same exception.

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
12-10-2014, 01:04 PM
Even with SEW_Map_Size changed it still gives me the same exception.

Did you look over the example (https://villavu.com/forum/showthread.php?t=108953&p=1320083#post1320083) 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
12-10-2014, 04:19 PM
Did you look over the example (https://villavu.com/forum/showthread.php?t=108953&p=1320083#post1320083) 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
12-12-2014, 06:52 AM
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
12-12-2014, 01:01 PM
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
12-15-2014, 06:01 PM
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

24592

Olly
12-15-2014, 06:52 PM
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

24592

You need a bigger map man, alot bigger.

simo454
12-26-2014, 10:58 AM
hey flight, how do you start the script, everything compiles but how do i run it??

Harrier
12-26-2014, 01:20 PM
hey flight, how do you start the script, everything compiles but how do i run it??
You click run?

Flight
12-26-2014, 02:06 PM
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
12-26-2014, 05:08 PM
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
01-15-2015, 04:03 PM
Updated to revision #3 (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=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
01-25-2015, 04:25 PM
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
01-25-2015, 04:43 PM
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
01-30-2015, 08:13 PM
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
01-30-2015, 09:12 PM
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
01-30-2015, 09:27 PM
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
01-30-2015, 11:02 PM
there is no way to extract it. ive tried right clicking it. no way to open it or anything

Kyle
01-30-2015, 11:03 PM
there is no way to extract it. ive tried right clicking it. no way to open it or anything

Download 7zip..

bot under radar
01-31-2015, 07:28 PM
which one do i download? there are 4 of them

Flight
01-31-2015, 07:38 PM
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
01-31-2015, 08:38 PM
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 (http://www.e7z.org/free-download.htm). It'll make your life a bit easier (hah!).

grats
01-31-2015, 10:27 PM
He means 7-Zip.
bot under radar;, get this (http://www.e7z.org/free-download.htm). 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
01-31-2015, 11:54 PM
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
02-05-2015, 09:01 PM
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
02-05-2015, 09:16 PM
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.

http://i.imgur.com/5F9NXvX.jpg

Floor66
02-09-2015, 03:27 PM
Awesome job! I'll be sure to follow this closely :)

ineedbot
02-11-2015, 08:24 PM
Depositbox has been updated: http://i60.tinypic.com/2ros6ee.jpg

Flight
02-13-2015, 12:31 AM
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
02-13-2015, 02:14 AM
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
02-13-2015, 04:40 AM
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
02-13-2015, 03:16 PM
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 (https://villavu.com/forum/showthread.php?t=111914) 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
02-13-2015, 04:13 PM
Downloading! Nice work :-)

ineedbot
02-13-2015, 10:11 PM
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
02-14-2015, 12:27 PM
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
02-15-2015, 04:30 PM
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.



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.



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.



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


Fixed.



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.



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
02-16-2015, 01:47 PM
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
02-16-2015, 02:15 PM
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 (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=1) which just included bug fixes brought up by ineedbot.

Floor66
02-16-2015, 03:05 PM
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
02-16-2015, 06:47 PM
RSWalker received an update to fix OSBuddy read speeds, I think aerolib is using an older version.

Btw, thanks for implementing my suggestions.

Hackingmyself
02-18-2015, 07:08 PM
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
02-19-2015, 06:53 PM
RSWalker received an update to fix OSBuddy read speeds, I think aerolib is using an older version.

Btw, thanks for implementing my suggestions. Flight;

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
02-19-2015, 07:32 PM
Flight;


guess i can fix it.

:spot: Your the best.

Flight
02-21-2015, 02:53 PM
Updated to revision #2 (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=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) (http://stats.grats.pw/); 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 (http://stats.grats.pw/). 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 (https://villavu.com/forum/showthread.php?t=111837).


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
02-21-2015, 11:14 PM
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
02-22-2015, 12:21 AM
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
02-22-2015, 01:28 AM
Note that in order to "register a script on the home page" you have to be logged in.

honeyhoney
02-22-2015, 03:55 PM
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
02-22-2015, 04:12 PM
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
02-22-2015, 04:26 PM
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
02-24-2015, 04:25 PM
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
02-24-2015, 07:40 PM
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
02-24-2015, 08:18 PM
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
02-25-2015, 02:11 PM
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
02-25-2015, 02:28 PM
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
02-26-2015, 05:33 PM
Updated to revision #3 (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=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
02-26-2015, 10:52 PM
Exception in Script: Plugin(AND_TPA32) has not been found


what does this error mean?

KeepBotting
02-26-2015, 11:13 PM
Exception in Script: Plugin(AND_TPA32) has not been found


what does this error mean?
It means you didn't follow instructions.

Flight
02-26-2015, 11:14 PM
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
02-27-2015, 12:25 AM
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
02-27-2015, 12:28 AM
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
03-02-2015, 07:16 AM
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
03-02-2015, 01:36 PM
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
03-02-2015, 02:20 PM
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
03-04-2015, 10:50 PM
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
03-08-2015, 03:32 AM
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
03-08-2015, 08:00 PM
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
03-08-2015, 10:50 PM
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 (https://villavu.com/forum/usertag.php?do=list&action=hash&hash=4) in a couple minutes.

neeger
03-09-2015, 04:56 AM
2. That's to stop keyloggers

Oh, that's an awesome idea :p

Turpinator
03-09-2015, 05:01 AM
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
03-10-2015, 08:02 AM
Getting this error when attempting to load custom map and grab coords from OSBuddy.

http://prntscr.com/6eypeu

Flight
03-10-2015, 01:56 PM
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
03-10-2015, 02:25 PM
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?

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

BigRedJapan
03-10-2015, 04:50 PM
ive tried both ways still gives me that error!

Maybe my custom map is off??

Hoodz
03-10-2015, 05:04 PM
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
03-10-2015, 05:15 PM
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
03-10-2015, 06:13 PM
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 (https://villavu.com/forum/showthread.php?t=111914) 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
03-10-2015, 07:30 PM
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
03-11-2015, 07:41 AM
the map cant get any bigger thats the whole map.

Flight
03-11-2015, 02:00 PM
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
03-11-2015, 08:45 PM
So when you on smart it will grab the map for you??

Harrier
03-11-2015, 09:43 PM
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
03-12-2015, 08:39 PM
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
03-12-2015, 08:56 PM
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
03-12-2015, 09:17 PM
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
03-12-2015, 09:41 PM
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
03-12-2015, 09:46 PM
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('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEI AZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

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
03-12-2015, 10:12 PM
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('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEI AZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

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('m6wAAAHic42ZgYGADYm4g5oNiEJsViBkZEI AZiNmhahmhNCcQ8yLp4UDTx8jISDQmBTCSgJEAAIodAMo=');

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
03-12-2015, 10:41 PM
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:

Use `Walker.Init('custom', 'DraynorRoof', -1);` (I told you this already)
Don't use `Walker._GetPosCustom()`, use `Walker.GetMyPos()`.
Creating a new walker every time "loop" is dumb.
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:


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
03-12-2015, 10:52 PM
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 (`=`)


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


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
03-12-2015, 10:54 PM
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
03-12-2015, 10:59 PM
I hate lape why did everyone converting to lape. -_-

slacky
03-12-2015, 11:08 PM
I hate lape why did everyone converting to lape. -_-
Noob :p

BigRedJapan
03-12-2015, 11:49 PM
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;