I've mostly been a lurker on this forum however I figured I'd take another jump out of the shadows and propose that those of us interested in the botting of perfect world pool our efforts and work on something that the entire community can benefit from.
I have put a great deal of thought into an optimal botting solution and I think I've made some serious progress. As one of the greatest fears when running bots is that there may be malicious code inside I believe we can agree that releasing raw source in addition to a compiled binary is a good idea. I also believe that one of the main reasons for the relatively small number of bots is the effort it takes to write them as well as the complicated nature of memory reading, to this end I propose the following
Expanding upon my botting framework idea, the current implementation I've been working on involves a core program that performs the following
I have put a great deal of thought into an optimal botting solution and I think I've made some serious progress. As one of the greatest fears when running bots is that there may be malicious code inside I believe we can agree that releasing raw source in addition to a compiled binary is a good idea. I also believe that one of the main reasons for the relatively small number of bots is the effort it takes to write them as well as the complicated nature of memory reading, to this end I propose the following
- Botting framework that abstracts away the complicated and exposes an easy to use api for bot writers.
- Preferably a hosted SQLite database that can be downloaded by clients to update offsets. [if(current db pw version != current version) check for update]
- Have bot scripts written in Javascript as it is a popular and easy to use language allowing for rapid development. Using [Only registered and activated users can see links. Click Here To Register...] to handle javascript interpreting in a sandboxed environment we can help to ensure that scripts are safe for the user to run (only allow access to the necessary pw api functions, no local file access, no network access, etc) while simultaneously helping genuine AI writers reach a larger audience and develop faster.
Expanding upon my botting framework idea, the current implementation I've been working on involves a core program that performs the following
- Monitors Win32_ProcessStartTrace and Win32_ProcessStopTrace to detect when instances of elementclient.exe are started and stopped
- When an instance is detected it will spawn a thread to monitor that process.
- The process monitor will loop waiting for a character to log in
- When a character logs in will instantiate new instances of the bot scripts
- The process monitor then loops; reading process memory, calling the 'loop' function in each bot script, and then sleeping to maintain a desired 'tick' speed. Individual scripts can even specify a slower call speed causing them to only be called every x ticks instead of every tick (each script is also offset by an incremental amount to spread the load across ticks)