SRL Archive - News and General

Opinions about a plugin I'm considering


Grippy

2009-03-02 17:42:56

First, hi, I'm a noob, nice to meet you all.

I've been playing RS on-and-off for a few months and recently loaded up SCAR to see if it was interesting. Turns out it is, so I'm thinking about writing some tools for it.

I'm not really interested in leveling up characters quickly or amassing millions of coins, instead I'm interested in making my time playing the game less tedious. So my interest in autoing is in making a utility that can do certain tasks for me, but not necessarily completely unattended.

I'd like to be able to, for example, talk to another player while I'm running a mining, and to tell the script to pause while I perform some interaction. There is some capability for this already, but in the few scripts I've used it's a little hit-and-miss.

I'd also like to have a sort of 'runner' tool. Say I'm down by Lumbridge Swamp and I want to go to the GE, it's tedious to walk there, so I'd like to be able to easily instruct a tool to walk there for me, without having to do any further setup (I know, there are other ways to get around, this is just an example).

I'm curious if others would be interested in such a tool, and if something similar already exists. I have some tentative ideas for a plugin, but I don't want to reinvent this if someone already has something going.

edit: Forgot to mention, the plugin would mostly be focused on providing a few support functions for SRL-based scripts that would be computationally prohibitive to do in script.

NCDS

2009-03-02 17:49:05

From: Grippy




I'd also like to have a sort of 'runner' tool. Say I'm down by Lumbridge Swamp and I want to go to the GE, it's tedious to walk there, so I'd like to be able to easily instruct a tool to walk there for me, without having to do any further setup (I know, there are other ways to get around, this is just an example).

I'm curious if others would be interested in such a tool, and if something similar already exists. I have some tentative ideas for a plugin, but I don't want to reinvent this if someone already has something going.


NiCbaZ and MySelf have both already made this using Reflection.

Smartzkid

2009-03-02 18:39:00

Good idea, but it's really easy to do with reflection. Whenever I need such a tool for relocating an army, I just code it from scratch; that's how easy it is.

A good procedure with a list of common places and good walking system would be appreciated by many, though. If its coded well, it could become very popular.

Grippy

2009-03-02 19:46:55

From: N C D S
NiCbaZ and MySelf have both already made this using Reflection.


A link to more information would be appreciated. Unfortunately I'm not even a junior yet, so I perhaps will have to wait. I do look forward to checking out your work.

I should also mention that I prefer to do this without using Reflection. I have nothing against Reflection, but I like the idea of the challenge of doing the 'heavy lifting' completely through visual methods. I might use Reflection for automatically detecting failure, but I'd like to avoid it for the actual work.

I want to avoid Reflection mostly as a personal challenge. The project is supposed to be fun and imposing this restriction helps to keep me thinking in different ways. A bit like the field of constrained writing, sometimes it's just more interesting to not use the most efficient tool :)

Grippy

2009-03-02 19:56:37

From: Smartzkid
A good procedure with a list of common places and good walking system would be appreciated by many, though. If its coded well, it could become very popular.


That is part of the plan. I'd like to include a sort of map of various efficient ways to get from place to place as a network of nodes. Each interconnect would have a number of metrics included with it, such as travel time, resources required and cost. This would allow the tool to be useful for new characters as well as those that have greater access to travel options.

For example, the low cost path from Lumbridge to the GE for a low level player would most likely simply be a path consisting of a number of 'walk' nodes along a direct path (not necessarily the road). For a member account with a little more experience it might be faster to make a dugout to boat half way, then walk the rest. A member with sufficient agility might boat all the way to the tunnel shortcut northwest of the GE.

The resources metric on a node interconnect would specify what the character would need to use the route. A basic walking route might require no resources (or might be restricted to a certain level, to avoid highwaymen for example), or it might require an axe and a woodcutting level of 12, or perhaps it requires a Skull sceptre and has an associated cost of one Skull sceptre charge.

Such a system of intelligent auto-walking would remove a lot of the pain involved in doing various tasks, without completely removing the player from the game, as with, for example, a power-leveler script. It would make doing some quests more fun, as the tedium of running around trying to figure something out (if doing the quest without a walk-through as a guide) would be less of an issue.

(BTW, sorry about the multiple posts, I'm leveling up my post count :D )

Heysus

2009-03-02 20:24:08

That's a good idea…and i've thought about makeing something like that before…but it just seems like it would be too much work.

Mabye it would be possible with reflection, but walking without reflection is pretty hard and I just don't think it would be possible.

Grippy

2009-03-02 20:37:22

From: Heysus

Mabye it would be possible with reflection, but walking without reflection is pretty hard and I just don't think it would be possible.


I have an idea about that which, if it works, should let me walk anywhere nearly as reliably as with Reflection, but without touching the client software. It'll take some work and won't be script-based (the hard parts be in the plugin), but only because it would be too slow, in principle you could do it purely in script.

Smartzkid

2009-03-04 16:38:15

http://www.villavu.com/forum/showthread.php?t=7179?t=8272

A very good read, I think you will find that.

Heysus

2009-03-04 18:02:21

From: Smartzkid
http://www.villavu.com/forum/showthread.php?t=7179?t=8272

A very good read, I think you will find that.


In the members section :(

Grippy

2009-03-04 22:45:36

From: Smartzkid
http://www.villavu.com/forum/showthread.php?t=7179?t=8272

A very good read, I think you will find that.


Would love to review it, alas, I'm only a Jr. for now.
Guess I could apply, I imagine I can scrape together a reasonable script.

Smartzkid

2009-03-04 23:30:25

Copied with permission (SRL Member News: Project Preview- WebWalker - 03-17-2007):

From: Boreas
I wasn't planning on making this thread until I had more of it done, but it's my 2000th post, so I wanted to post more than 'you forgot setupsrl' hehe.

At the moment (March 17) we (Avaphi and I) don't have as much done as I would like to have had before making an alpha release, so consider this a preview. I am also posting this now because this you will be able to add to this project, and this way you can be thinking/working on your additions as soon as possible.

Anyway, a few of you know about WebWalker, but for those who don't, here is a short explanation. WebWalker will be a web of 'stations' spread out across the map, with walking paths joining them together.

Each station will have a detector function, which will return true when you are around that station. The paths will be walker functions, that are shorter and easier to write than city to city walkers. They can contain their own internal failsafe checkpoints, and of course have the station detector for the destination, so you will know when you get there.

This web design will allow you to wander around until the script recognizes that you are at a station, and then you will be able to walk to any other station. When this fails, there is always teleport to lumby, which of course will be a station. This design also allows (when there are enough stations and paths) for more than one route from point A to point B. Also, this design allows for expansion, as more stations and paths are added, the better it is.

For now, please keep this members only. Contributing to this project is members only, because most people that can write a walker can get into members. Using WebWalker may or may not be members only, I will decide that when there is enough done that it can be used.

If you are interested in contributing, then read on.

Like SRL, you will able to add what you want to your copy, but I will only post versions with working functions. I will think about a way for you to submit contributions so that they can be voted on or something.

The main functions will be

function RoutePicker (StartStation, EndStation:integer):array of integer;
function WalkRoute(Route:array of integer) : boolean;
function WhereAmI: integer;

Then each path will have its own function (returning a boolean if successful), and each station will have its own station detection function. The above 3 functions will combine them.

Each station has a unique number, which I will assign to it once you have submitted it. They will also have an x,y relative to lumbridge tele point, measured in pixels on a jpeg.This can be approximate, RoutePicker just needs it to know it's going in the right direction. They will also each have a unique name, and I'll write function NameToNumber(Name:string):integer to make using RoutePicker easier. BTW, you don't have to use RoutePicker, you can manually give WalkRoute your own list of stations.

IMPORTANT: Each station detector function will start with a FindSymbol. If want to go to a place with out a symbol, you will need to go the nearest station with WebWalker, and then go the rest of the way on your own. You can write detectors for places without symbols, but these will be checkpoints/failsafes within paths. This is because WhereAmI will work by detecting whether there is a symbol on the minimap, any symbol. Then it will determine which symbol, and look through the appropriate station detectors, which will be arrange in a case by symbol.

When writing station detectors, start with a symbol, and then get more specific, such as there are 2 doors nearby. Use stacked ifs with result:=false breaks. So as soon as it finds a condition that is not true, it will result false, and only result true if it all conditions result true. This step design will allow station detectors to be combined efficiently.
For example, imagine there were only 3 churn symbols
Station 1 has churn symbol, water symbol, and 2 doors
Station 2 has churn symbol, water symbol, and no doors
Station 3 has churn symbol, no water symbol
All others have no churn symbols

First the churn symbol would be determined, so WhereAmI would look at the branch with those 3. Then, it would see the water symbol and go down another level in the 'tree'. Then it would count the doors. If this is confusing, basically what I am saying is check one condition after another, going from simple to complicated to narrow it down.

(Hint: when writing detectors that start with a symbol that there only a few of (churn is a good example, tree is a bad example) all you have to do is eliminate the others.)

When writing paths, just make sure its a boolean function that returns false if it gets lost, and only returns true if the station detector of the destination returns true. Even though these paths will be shorter than city to city walkers, you should still use as many failsafes and checkpoints a possible.

Keep in mind that I will not add stations until they have at least one path to it from another known station. This means it will start from lumby and spread out. Also keep in mind that paths are one way, that is the path from station 1 to station 2 is a separate function to the one from station 2 to station 1.

BTW, it would be nice if everything was autocolor. I'm working on ladder atm, door is done, road and dirt road is done, pretty sure water works.

I will announce when the framework is finished, so don't feel rushed to complete paths and station detectors. As I said, I just wanted to give you notice so that you could think about it.

Please feel free to ask any questions, as I probably haven't explained things fully.

[/2000th post :spot: ]

Grippy

2009-03-05 03:12:12

Thank you!

Very nice. How's that project progressing?

It is very similar to what I'm thinking, but I'm going outside SRL for some of the work (mostly because I want to play with a specific technique).

There is substantial overlap in the walking paths portion of the two projects. I may be able to take advantage of some of that work. Has there been any discussion about the format for the data specifying the paths?

Smartzkid

2009-03-05 15:33:04

Sadly, it died not long after its creation. It did create some very interesting ideas, though.

http://www.villavu.com/forum/showthread.php?t=7680?t=8796
http://www.villavu.com/forum/showthread.php?t=4917?t=5744


Boreas never released the actual code, as it seemingly was never completed. If you PM/MSN him, I'm sure he will give it to you if he still has it.