OmniBot

Additional botting resources. Addons may be either for the game itself or for the RoM bot.
Forum rules
Only post additional bot resources here. Please do not ask unrelated questions.
Post Reply
Message
Author
BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

OmniBot

#1 Post by BillDoorNZ » Wed Nov 23, 2011 4:37 am

hey guys

I've not been here that long but have noticed that a lot of the same questions are asked over and over and that we seem to have a mentality of
devs/'people in the know' write stuff and talk a lot about how to solve the problems people have or ideas they(we) have. This is great, it makes for a healthy community and a happy one (in general). But it also makes for a lot of wasted effort.

Rock5 and Lisa have done an incredible amount of work (and continue to) and have supported us all incredibly well. I for one truely appreciate the time and effort that they take - as a prof software architect myself, I know how much work they are putting in - and its a hell of a lot more than we see. Obviously they are passionate about what they do and enjoy helping the less fortunate ;)

Anyway, this leads me in to the real point of this post. There is a massive amount of wasted talent and effort here. We have people building waypoint files for running different quests, dailys, instances and mini's. Rock seems to have the code base under control and is very structured around managing it and how the classes & bot.lua work together. But there is no real coordination between waypoints etc. We have a rich set of userfunctions for different tasks to help us build stuff faster and more reliably too.

Building the waypoint files is very time-consuming in that it requires a lot of time to code and even more to test and tweak. Zangetsu is working on his jParty stuff, I have a my own stuff I fiddle with, Lisa also does the partyBot stuff. You can prolly see where I am going with all of this :)

People talk about the 1-10 waypoints and now we have the 22-44 ones from Mushroomstamp too. These things are gold.

What I would like to propose is a centralised, coordinated approach to create an OmniBot (first name that sprung to mind and I'm not attached to it at all). We have plenty of talented people and plenty of tested code, enough to patch together something greater than the whole. I'd prefer to take a much more structure approach to it tho and to do that I'd start with the requirements of what this thing would do.

So for me, I'd like to see this new bot do a heap of things that I will list below. Mostly it would be a customisation/refinement of all Rock5's amazing work (nothing like stealing other peoples reliable code ;). I would see that each of these thing be broken out and make their own project so as to satisfy the requirements for that project and not be built ad-hoc as things are needed.

* Support single/group modes (i.e. normal botting with 1 character or multi-botting with a party etc)
* character buffing
* Combat
* Move from point-to-point (perhaps as instructed by a navigation system based off existing waypointlists)
* Adjust/Randomise movement for less artificial behaviour (i.e. minimising bot detection)
* Looting and filtering of loot
* Selling/buying
* Levelling and skill ranking
* Questing
* Roles (i.e. Leader/Follower, RangedDPS/MeleeDPS/Tank/Healer/Buffer )
* Objectives (i.e. Harvesting/Collecting/RunningInstance/Questing etc)

I would see there being a central database of waypoints for the known world which would:

* facilitate movement between zones using transporters / movement.
* allow path determination to get bot to a specific NPC or type of NPC/MOB
* be a starting/ending point for all manually coded quests/waypoint files so the author says 'this quest start with npc Bob, so the bot can figure out how to get to npc bob from the central datastore, move there and then start the 'quest' waypoint, finishing up at a known point too.

I would imagine the db would contain a list of all major/useable NPC's, Quests, harvestable data etc. Much of this could perhap be pulled from some of the existing addons (QuestWiz, Harvester, DaileyNotes etc) and be stored in a standard format etc.

Consideration for partybots etc would have to be taken into account, along with IPC mechanisms.

As I mentioned earlier, each of these points / requirements I mention would itself be the starting point for a project in its own right, as none of this is trivial in iteself, let alone all working together. Care would have to be taken to allow the data to change as the game world changes and/or the game developers try to change things in light of this. Things like Questing would require a massive effort by a lot of people, but if we can start off with a central db with the major waypoints sorted out that the quests get tacked on to, then we'd find that anyone who can generate a waypoint file to complete a quest could then submit that to the db for inclusion etc.

Is this an ambitious project? hell yes! Will it even get off the ground? Dont know, but I dont see any reason why not.

Thoughts?? Other requirements? Shut up bill with your pipe dreams!?

User avatar
Zangetsu
Posts: 56
Joined: Fri Nov 11, 2011 5:45 pm

Re: OmniBot

#2 Post by Zangetsu » Thu Nov 24, 2011 1:03 am

Good idea you have here. Working together is always better than working alone. Moreover that alone it takes too damn loooooong time.

About your WP's idea, I'm currently working to get this into a database that the bot is asking through MM. I had a ton of idea like doing "Hotpoints" and way between these. Like 1 to 8, 2 to 3, and so on. But after coding some test, it's not working like I was waiting for.

My other idea is a way better but really need a lot of work.
It's to simply "map" the zone by putting waypoints each x distance and call them. Some WP could trigger actions, like sell NPC, quest NPC, harvest, etc...

I'm relaying of my knowledge of web application, database and network, the end user interface looks like a website where you can find informations about your bot currently botting. Like chat, where he is on the map, its health, inventory, etc...
Each member of this website got his own database and ask a common database where are saved WP, NPC, drops, etc...

Well, that's what I'm working at the moment.
With your software architect knowledge, it could add something. A client working with the database maybe? Too bad I have a lot of work these last days, I could focus this project more.

BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

Re: OmniBot

#3 Post by BillDoorNZ » Thu Nov 24, 2011 5:50 am

heh, I hear ya - never have enough time myself....after writing that post I thought I'd better take another look at Rock's todo list and realised he already had most of this stuff there and under control :(...should have checked with him first :)

The issue I see with the current approach, is that it is aimed at bots not cooperating without a heap of code and finger-crossing. This is definitely by design and really the most logical way to build a bot. Make it work for 1 character first, don't try to build the ultimate bot and do everything in 1 go.

I just feel that at the moment the bot is so advanced that in order to get any more gains, we need to take a step back and rethink the approach.

* Each character is controlled by 1 bot (character-controller).
* In order to allow bots to party effectively there needs to be communication between the controllers (definitely not via in-game systems as this will ultimately be more easily detected by GM's etc).
* A central party controller should direct 2 or more character-controllers and manage their cooperation etc
* Quest waypoints should fit into a more robust model where they can be started/stopped/restarted as required and be built on top of a common network of waypoints
* A central database of waypoints should be created for general travel and location of services (vendors, mailbox, ah, harvest nodes etc) and quests (yes, a huge db to do this, but entitely do-able and should contain basics to start with and get extended as we go)
* For efficiency, a party of characters should quest together, completing the same quests so as to maximise XP gain and level them all at once, not to mention make the quests easier by killing mobs easier/faster.
* character settings should be adjustable dynamically either by the character-controller or the party-director to enable characters to be 'configured' for the role they are to server.

The way I would see the DB being maintained, is that as characters move around, they use the CObject List to see what is around them, note it, and send it off to a central persistence service which looks at the objects, checks to see if they are already in the db, and updates/adds as necessary. We'd need to take into account pathing for mobile npcs and for monsters etc too. Along with things like what items merchants sell, what possible destinations each snoops has (not to mention how to select the correct option given their list changes depending on what your character knows).

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: OmniBot

#4 Post by rock5 » Thu Nov 24, 2011 6:07 am

BillDoorNZ wrote: I thought I'd better take another look at Rock's todo list and realised he already had most of this stuff there and under control ...should have checked with him first
I haven't updated my list in ages. You can tell how long it's been by looking at the date next to the comment at the bottom.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan

jasn
Posts: 70
Joined: Sat Jun 25, 2011 8:25 am
Location: Sweden

Re: OmniBot

#5 Post by jasn » Thu Nov 24, 2011 6:12 am

cant the runesdatabase.com be used for some of the things?
thinking of not inventing the wheel again sort of.

BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

Re: OmniBot

#6 Post by BillDoorNZ » Thu Nov 24, 2011 6:21 am

lol, I know Rock - I looked at it months and months back, but forgot to check it before my rant ;)

@jasn - I tend to agree with that, and had thought about it, but don't know (yet) how hard it would be to spider out all the data - as we'd need it locally so we aren't getting big lag-times while getting the info we need :)

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: OmniBot

#7 Post by lisa » Thu Nov 24, 2011 7:29 am

Just on the subject of web based character control.
I don't know about anyone else but I personally would never do that purely because botting is against any terms of use for any game and so when I bot I keep that info to myself. If a website has information about my accounts and character names, which it must have to do such a thing then I would feel at the mercy of who every runs the website, the person running the website could literally tell GM's the account info and bamm accounts banned.

Even if the person controlling the website is very honest and would never ever do anything like that, the account information would no doubt be stored somewhere on the websites space and we all know how safe that info would be. It would just take 1 person to give themselves access to the info and they can log on any account and wipe it clean.

I don't want to rain on anyones parade, I just thought I would point this part out as it may not be obvious to everyone.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

User avatar
Nero
Posts: 98
Joined: Wed Aug 10, 2011 9:07 am

Re: OmniBot

#8 Post by Nero » Thu Nov 24, 2011 8:04 am

Pretty much what lisa said.

And having hundreds persons data on one website? I suspect that it's not the best idea around.


Also, I don't think that doing any waypoint database would be smart to do. Call me selfish, but I don't want to release every little thing that I've ever done to some guy that I've never ever heard about, who just downloaded it to be cool, then ran bots 24/7 here flooding AH with stuff, making hyperinflation etc. If one wants to bot, on this forum he gets tons of stuff to make it easier for him, and most questions gets answered within one day - so as long as you're willing to learn a bit, you can code good things within a week.

Having such DB would also make it at least few times more dangerous to bot - it's one thing if 50 people use bot in malatina on their 3 chars each day, and it's another if 50 people use the same script when farming mats.


Where it would be very handy is the extended functionality - it's not hard to do waypoints, but it takes a long time to create a truly good one. Optimising it a bit is surely possible, and it's one of the things you're aiming at it seems.



One thing I've thought about that's similar to what you're thinking about is doing some monitor in rombot that would load different scripts when I whisper said character with certain keyword (isn't that hard to create I think), or even do it when away from PC - also should be doable without too much of a hassle.

Concerning general waypoint database, I've had a great idea lately (would be practically undetectable to normal players), but it would likely be hard to implement, if at all possible (I'm as much of a coder as what I've earned in past 2 months, which isn't all that much). But for now allow me to see whether my Mage got nerfed to hell and back and I'll post it later ;]

BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

Re: OmniBot

#9 Post by BillDoorNZ » Thu Nov 24, 2011 10:02 am

hmm, not sure where the whole storing-personal-data-on-website thing came in, but certainly wouldn't be looking to do that meself. I think Zangetsu wanted to write a web-frontend to control his bots, but I would cetainly not expect it to be 'standard'.

Getting a heap of people contributing to create a single db with everything in it may not be the greatest idea ;) Having said that, what we are currently doing is not really that different. We have a huge number of exisiting waypoints (all of which have taken a lot of hard work to get right) that are accessible to everyone that knows enough to set up mm and rombot. What I'm proposing wont make any of that any easier and in fact may make it even harder.

The main concept of the waypoint db, is not to hold every last waypoint (would simply be too much data), but to hold the waypoints for the main paths and npc's. This could easily be used for moving bot from zone to zone / city to instance etc at which point a hand-crafted waypoint list would be used (in the same way it currently is). I'd see a lot more integration of waypoints happening as a result tho and super waypoints which just tell the bot that once its finished with waypointList1, move to xyz and run waypointList2...thus, slowly over time and with a lot of community input you could set up hand-crafted waypoints for a reasonable number of quests (and maybe a long way off reach that nirvana of 1-70+ levelling).

I tend to write stuff to make what I do easier. Rom itself is relatively boring. Writing code to make it less boring is a lot more fun. I don't mind sharing that code or the results thereof. Does it matter to me if I spent 6 weeks making scripts for some quests / minis? yes it does. Will I hoard them scripts and not 'give back' to the community? No, I don't really care if 100 other people use my level1 to 70 script to level their characters. The only truely fun part of Rom (for me) is Siege - as this is not 'scripted' and 'predictable'.

User avatar
Zangetsu
Posts: 56
Joined: Fri Nov 11, 2011 5:45 pm

Re: OmniBot

#10 Post by Zangetsu » Thu Nov 24, 2011 10:19 am

@Lisa & Nero: You know that datas can be encrytped right? If I'm offering a service like that, of course I won't let "clear" datas on my database. This is a part of my job btw.
And, yeah Nero, I don't like the idea of the guy just using it without doing anything to help us to use the system. Maybe we could "select" these members after they actively participate on this forum (by adding new scripts, finding new adresses, etc...)

Remote control (here with a website/database) is permitting to bot from anywhere having a huge control. Imagine how receiving a lot of tells and managing it from the work would be really good to not make you character acting like a bot . Or changing path because you get followed by a certain member since too lot of time.
Moreover, website is (currently in dev) reserved to members. From a non registered/accepted person, it's showing anything.

About the database, I was seeing the thing like that:
1 common database accessing in read only with NPCs, drops, nodes, quests, etc... (Could be collected by anyone that is actually botting and completed by getting more datas from runedatabase.com by example)
1 personal database by account with read/write capabilities containing chat logs, inventory, etc...

About the waypoint, I'm seeing only 1 solution that is the best it's to add a sort of grid over the map with coordinates. When you're selecting what you actually wants, it's just creating the xml file and queuing WP after WP and action after action.
The hard part of this is to grid everywhere it's possible to travel easily dodging rocks, trees (won't put any "markers" on it) to not getting stuck. Also adding a function that send a vote when player is stuck (Like 5 stars and when a bot is getting stuck, it send a -1 to get a final note). This can be done easily and moreover we could track which coordoonate is giving problems.
I was thinking using Google Maps for coords (like this by example http://mapwow.com) I never used gmaps API before but it might not be too hard to play with.

Well, I know that my project looks very ambitious and time consuming but it's actually doable. I think it's worth it because MM can be adapted to multiple games.

User avatar
Nero
Posts: 98
Joined: Wed Aug 10, 2011 9:07 am

Re: OmniBot

#11 Post by Nero » Thu Nov 24, 2011 11:27 am

Any database, no matter how secure, isn't quite secure enough on the web in my opinion. I don't think that such database would be a good idea.



Also, every script that's not instance where other players can't see you isn't safe if more than 3 people use it on any server, especially if on more characters than one. Far better option would be some kind of 'code repository' - for example, our topic is KS bot, and all users post bits and pieces of code to save you the time that you'd waste when trying something new that other people already use.



About map - it is somewhat similar to what I've thought. It's pure guesswork on my part as I don't know how should we even start to go about it, but I've envisioned the 'general waypoint finder' to be something like this :

>all of the terrain would have to be mapped - for example we would have a long list of points in 3 dimensions, in the same difference in x and y. I can't exacly put it into words, so here's an example :

Code: Select all

x=0	y=0	z=15		x=50	y=0	z=27		x=100	y=0	z=52		...
x=0	y=50	z=21		x=50	y=50	z=42		x=100	y=50	z=64		...
...
etc etc. Some code to automatically grab those values as out characters move nearby should be made of course, as doing it manually would be maddening. Here some database would be beneficial, as bots are used almost everywhere, and if all people would send those coords it would be filled in a few days probably.

And yeah, that was the easier part.

The harder part would be to make a 3d map based on those points, and with proper algorithms it should 'color' the map - for example, if the colors would go from green to red, areas that are 'safe' (small changes in height, smooth hills) would be green,, big or sharp hills would be getting closer to the red spectrum. One should also be able to change parts of that map manually, as there are places where you jump from a hill or climb some stairs or something to make a shortcut.

If this map would prove to be reliable, then you add usage of teleporters, and you could just specify the starting point and the ending point of where do you want the bot to go, and the script would randomly choose some way to get there (or you could choose a few 'markers' to visit on your way, but the way between them would be created randomly).

If that would be possible, we could also add all harvesting nodes and have the ultimate harvester in our hands that would never go the exact same way twice ;]


Cons:
It might not be possible to do it, as it's definitely harder than doing some KS script
Things such as small tables, small fences etc would probably need to be added manually anyway, but that's not too much work
It might turn out to be more work than just doing large base of scripts to move around from various locations

Pros:
All paths will be random, no chance of detection due to bot-like behavior
Do it once, and it works forever for everyone without any effort
Harvest bot based on this tops any waypoint file
Inserting NPC's for various purposes would be easy with such a thing
If you want to go from CL to KS, then visit mailbox in Logar, then visit Dalanis - you set it up in two minutes instead of going to all locations manually and then testing it
If you farm in a set location that's outside of instances, you could just specify area on such a map where bot will run around
It would be awesome


So, yeah, basically a partially interactive 3d map model of rom. Would make our lives way easier, but would probably be a hell to make.

User avatar
Zangetsu
Posts: 56
Joined: Fri Nov 11, 2011 5:45 pm

Re: OmniBot

#12 Post by Zangetsu » Thu Nov 24, 2011 11:58 am

Nero wrote:Any database, no matter how secure, isn't quite secure enough on the web in my opinion. I don't think that such database would be a good idea.
This is typically the concern that I meet every day with my customers. Then I ask them if they are more comfortable having their data "at home". They usually answer yes until in some minutes I'm starting some scripts on my netbook and show us how easy it is to entr "their home" and take control. Mind something: a server is only setup for 1 use and it's easy to protect, unlike your PC by example.
Well sorry to argue but I can't help since it is my job every day ;)

Nero wrote: All paths will be random, no chance of detection due to bot-like behavior
My current project is running the same path over and over. You can queue path but the main feature is working that way:
Select what kind of mobs you want to farm or what item you want to drop or harvest. And the system is offering you severals choice, and you queue these. It means, you aren't doing the same path twice in a session.
I also added a math.random() function that is simply swapping channel.
Nero wrote: So, yeah, basically a partially interactive 3d map model of rom. Would make our lives way easier, but would probably be a hell to make.
I saw something like that on another game, it was "drawing" things using DirectX iirc, and it was "fucking" nice. I'm not skilled enough to use Direct X :S

BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

Re: OmniBot

#13 Post by BillDoorNZ » Thu Nov 24, 2011 2:56 pm

When I first started my own pathing lists for my custom bot, I too thought that getting a grid map of the entire world would be the way to go. However, the problem soon arises of scale. The game world is big enough that you are talking about thousand's if not millions of waypoints. Perhaps even more, and the finer grained you get, the more points you require in an exponential way.

On top of that, you are talking about running pathing algorithms to determine how to get from a to b in a non repetitive manner. The calculations required for doing this sort of thing will very quickly immobilise the bot. It would end up being quicker to go home, log in to ROM and move the bot manually.

The best solution I could come up with was laying down paths along the main roads (generally) leading to all important npc's. Even that is bad enough for generating paths. I ended up pre-caching paths - building them when my app starts - for things like vendors, mailboxes, AH's, banks, housemaids etc. The code then just builds a waypoint file dynamically and tells the bot to run it.

User avatar
Zangetsu
Posts: 56
Joined: Fri Nov 11, 2011 5:45 pm

Re: OmniBot

#14 Post by Zangetsu » Thu Nov 24, 2011 3:59 pm

BillDoorNZ wrote:When I first started my own pathing lists for my custom bot, I too thought that getting a grid map of the entire world would be the way to go. However, the problem soon arises of scale. The game world is big enough that you are talking about thousand's if not millions of waypoints. Perhaps even more, and the finer grained you get, the more points you require in an exponential way.

On top of that, you are talking about running pathing algorithms to determine how to get from a to b in a non repetitive manner. The calculations required for doing this sort of thing will very quickly immobilise the bot. It would end up being quicker to go home, log in to ROM and move the bot manually.

The best solution I could come up with was laying down paths along the main roads (generally) leading to all important npc's. Even that is bad enough for generating paths. I ended up pre-caching paths - building them when my app starts - for things like vendors, mailboxes, AH's, banks, housemaids etc. The code then just builds a waypoint file dynamically and tells the bot to run it.

That's funny Bill because your best solution is my first idea which didn't work as expected and bring the second idea which sounds better to me and not for you ;)

It's not "this lot of calculations" really.
The grid have not to be really tight. The random is only after some action (Bot farm > Quest delivering > random > farm) The grid is the best way to make your bot go to where you want he go by adding these point on the grid to a queue of waypoint, but maybe a schema on a picture would be a better example. I'll do one asap.

BillDoorNZ
Posts: 446
Joined: Wed Aug 03, 2011 7:37 pm

Re: OmniBot

#15 Post by BillDoorNZ » Thu Nov 24, 2011 4:17 pm

yeah, I understand what you are saying, but the issue is that you then have to either

(a) add a lot of code to get the bot to figure out how to navigate around unexpected obstacles (fences, trees, cliffs etc)
(b) add in more nodes to navigate the bot around said obstacles

The way I do it is more difficult to set up, in that you must lay the waypoint network. But it is also a lot faster to build and use. The code required to implement navigation on a generic grid is non-trivial as the edge-cases are just too numerous and difficult.

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests