SOLO (Leveling Bot) [Early Development]
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
SOLO (Leveling Bot) [Early Development]
SOLO - Solo Organized Leveling Operation
SOLO is a script for runes of magic, including specialized waypoints, profiles, functions, and probably its own addon eventually. I just started this yesterday, after scouring the internet for leveling waypoint files, and the very few I found were dissatisfactory to me in their inefficiency. I realize this is not a flaw on behalf of the waypoint developers, but on the general lack of leveling information available for the game (unlike World of Warcraft, which has specialized guides that number crunch every quest and mob for the absolute most optimal path). So this project is more complex than the average waypoint system as there's a lot of experimentation to be done.
My first waypoint pack I threw together over about 6 hours last night. It can take a new character from fresh out of the tutorial to level 10 and in the class hall at Varanas in 26 minutes (this time was achieved using a rogue, a druid took about 40 minutes). So far, I only have the elf side of the 1-10, and there's still more fine tuning to do. While developing this piece, however, I determined several challenges I would have to overcome for a true 0-70/70/70 bot to be a possibility. (Disclaimer: I am not stating this project will reach 0-triple70 status, but I intend to continue developing it for the foreseeable future in that direction.)
I realize that several of the challenges in the following list are already doable, I simply have to experiment a bit and learn the best way to do them. I would love any feedback from the community regarding these objectives, or the project as a whole, which is why I am posting this here pre-release. Once I have the 1-20 pack ready, there will be a release so that the community can begin testing (and using) it.
The challenges so far:
The Leveling Path:
A decent bot, even vanilla RoM Bot, fights far superior to the average player, and can therefore handle fights at a higher level than the average player could manually process. By leveraging this capability (carefully), a bot should be able to level MUCH faster than a human could. Additionally, a bot can take every shortcut, and never stops to rest (unless its to regain HP/MP, haha.) or get distracted. The hard part is that there is a blatant lack of quality analytics on the various quests and mobs and the experience they yield, or the experience algorithms in general. So there is a lot of trial and error and research to be done to create the optimal path, and it will likely need some maintenance over the years as patches come and go making tweaks to the system we aim to master. In addition to a numbers game, its also a race against the clock. It's not worth a 15 minute trek to save 5 minutes of grinding. So there will be a lot of calculations into what is at least damn close to the fastest path. The leveling path is the heart and soul of this project, so to speak.
Proper, Careful Return Paths:
I seem to find that this is where a lot of waypoint scripts fall short - the bot can often get stuck, or run through an inappropriate pack of mobs, either wasting time, aborting the bot, or worse, repeated deaths that were unneccessary. In addition to quality, careful return paths and AI management, it should also provide alternatives. One common issue is that you don't always end up at the graveyard you expect. When creating a return path, we need to either verify our position, or ensure that the entire normal waypoint leads to the same graveyard. In addition, if you die on a return path, take an alternate path next time. If that fails, use a transport or recall and take the long way back, rather than aborting, repeated death and XP debt, etc.
XP Debt Management:
In case the bot does run into issues, it should be able to manage its xp debt. If its more than 10 minutes of work to eliminate the debt, have it attempt to get an atonement from Newbie pet. If there are other repeatable ways to eliminate this debt that don't cost a speciality currency, attempt those too (even if it involves purchasing an item on the AH).
Thorough Testing:
The bot will need to be thoroughly tested and maintained - this is where the community comes in. I'll need reports of any problems, such as sticking, repeated deaths, or any inefficiency, so that I can improve the quality of the bot functionality anywhere possible.
DONE - Dynamic Target Ignore List:
I am still looking for a way to dynamically add/remove mobs from the ignore ("friend") list, for several reasons. I permanently ignored the Oil Lake Whistle Frogs, for example, because the bot likes to chase them out into the lake and pull crabs, which are far less efficient for that neck of leveling. Dynamic support would let me turn off these frogs only while in the area, rather than building a massive friends list to be in memory at all times. In addition, dynamic maintenance would let me ignore passive mobs that are below the desired level (like Burrow Cavys from 9-10), while still hunting them at appropriate levels (7-8).
Race Detection:
I'm sure this is an easy one, but I need a way to tell which race we are, for things that are race specific, such as the level 1-10 bracket, as the starting area is different, or whether or not the airship operator will allow me transport to Elven Island.
DONE - A way to operate the tutorial dialog boxes:
This should be simple, but I need a way to "accept" the tutorial, and manage the dialog boxes therein to complete the tutorial with no human input. This ensures the completeness and efficiency of the bot experience, as well as dynamically making the best choice of gear so the player can simply create a new character, fire up the bot, and walk away.
Auto Equip Best Equipment in Bag:
This is probably the hardest challenge in this list. I need a way to score equipment on a per-class basis (unusable items would automatically score 0). Then, I need to iterate the bag slots, and compare any equipment item scores to the currently equipped item score, equipping it if higher. While I can manually equip quest rewards and common drops, this ensures that any awesome and unexpected items go to use rather than simply being vendored.
Automatic Rune Application:
Need a per-class score of runes - while the bot won't go out of its way to aquire runes, it should take advantage of any rune slots with any runes it might have picked up recently. After all, better stats means faster kills, and faster kills means faster leveling. I assume runes would use a class-aware scoring system, similar to the equipment challenge above, only it would iterate the entire bag before applying as runes can't easily be changed.
Random Path Chaining:
Paths will be broken into "links" and chained together randomly, to emulate human behavior and reduce the "botty" feel. In addition, the paths themselves will be carefully designed to "feel" as human as possible. This should help with detection as well as "viewing pleasure" for the observer.
Mount Management:
If there are no permanent mounts available, the bot should be aware of any temporary mounts, and willing/able to rent a horse to make long runs MUCH faster.
Dynamic Ranged Pull Option:
This is another common fail point of many existing waypoint scripts: When the bot gets into a tight or hilly area, it tries to range pull through an obstacle, and can spent minutes or hours simply waiting for timeouts instead of leveling. In the event a bot needs to enter or pass through these areas, ranged pull should dynamically be turned off to avoid this aggrevating slowdown.
Auction House Management (Rudimentary):
Yes, that's right. The bot should be able to create its own auctions - only for quick selling, mid-value items, such as Magic Hormones, production runes, etc. The bot should underprice these to ensure they sell - after all, its only looking to make funds for basic survival, not trying to nickel and dime its way to billions. This is especially useful for items that are worthless to a vendor but could be a nice source of a little extra income. In addition, the bot needs to be able to retrieve AH money via a mailbox, and should track whether or not money came in while the bot is working (i.e. whether it should route to a mailbox at the next town).
Vendoring:
Equipment, especially at lower levels, is too complicated to sell on the AH for the bot to worry about. It should vendor any unwanted equipments, as well as any other useless items that aren't common enough to sell on the AH. In addition, it should maintain stock of the best potions it can use, selling the inferior potions to avoid buildup. It should also be capable of buying gear from vendors, only if its current gear is significantly dated (or missing). And of course, autorepair.
DONE - Automatic Profile Building:
The average user would have a hard time setting up a profile that is appropriate for this type of script, and the profile would need to change regularly anyway to remain optimal. So the profile will need to be built, and saved automatically as the bot progresses. The profile will also need to be aware of primary and secondary classes, in all possible combinations, as the secondary class skills and the elite skills can be quite useful.
Advance Class Selection:
Some way to specify what your desired second and third class are ahead of time, so that the bot can automatically take the classes for you. Keep in mind that while leveling, the bot will try not to spend many TP, rather just what it needs to remain most efficient at leveling. You should have plenty of TP to invest in specializing once the bot is finished with the character.
Elite Skill Certification:
The script should be able to complete the necessary quests to obtain elite skills automatically, and add these to the profile to be usable. By preparing and being aware of their requirements ahead of time, the bot can be ready to walk up and obtain the skill on the spot when it checks in at the certifying location.
Population Counter and Channel Switching:
Eventually, I'd like the bot to be able to track population of the current zone in the current channel. This way it could "smart" switch channels to the lowest population. In addition, I need a way to let the bot change channels automatically; if it has to spend a significant amount of time in the same place for some reason, semi-regular channel changing reduces the likelihood of a single player noticing a pattern.
DONE - Quest History Determination:
I need a way to determine if the character has previously completed a quest (as opposed to just not accepted, accepted, and ready for turnin, we need the 4th phase, already turned in) used for dynamic quest chaining in scenarios where questing is faster than grinding.
Optional Speed Hack and Suicide Hack:
This would only be an option for those that are interested, allowing the bot to move at 110% of normal speed (1.1), just slightly faster, which should decrease the time it takes to complete by 8% or so, while remaining hard to notice to the untrained eye. This would have to apply to mounted speed as well for optimal effect. The suicide hack would be used as a debt avoidance mechanism, as it is able to "kill" the player without incuring debt. It would fire just before an actual death occurs, to prevent the actual death from imposing debt. Debt avoidance speeds up the process for obvious reasons.
SOLO is a script for runes of magic, including specialized waypoints, profiles, functions, and probably its own addon eventually. I just started this yesterday, after scouring the internet for leveling waypoint files, and the very few I found were dissatisfactory to me in their inefficiency. I realize this is not a flaw on behalf of the waypoint developers, but on the general lack of leveling information available for the game (unlike World of Warcraft, which has specialized guides that number crunch every quest and mob for the absolute most optimal path). So this project is more complex than the average waypoint system as there's a lot of experimentation to be done.
My first waypoint pack I threw together over about 6 hours last night. It can take a new character from fresh out of the tutorial to level 10 and in the class hall at Varanas in 26 minutes (this time was achieved using a rogue, a druid took about 40 minutes). So far, I only have the elf side of the 1-10, and there's still more fine tuning to do. While developing this piece, however, I determined several challenges I would have to overcome for a true 0-70/70/70 bot to be a possibility. (Disclaimer: I am not stating this project will reach 0-triple70 status, but I intend to continue developing it for the foreseeable future in that direction.)
I realize that several of the challenges in the following list are already doable, I simply have to experiment a bit and learn the best way to do them. I would love any feedback from the community regarding these objectives, or the project as a whole, which is why I am posting this here pre-release. Once I have the 1-20 pack ready, there will be a release so that the community can begin testing (and using) it.
The challenges so far:
The Leveling Path:
A decent bot, even vanilla RoM Bot, fights far superior to the average player, and can therefore handle fights at a higher level than the average player could manually process. By leveraging this capability (carefully), a bot should be able to level MUCH faster than a human could. Additionally, a bot can take every shortcut, and never stops to rest (unless its to regain HP/MP, haha.) or get distracted. The hard part is that there is a blatant lack of quality analytics on the various quests and mobs and the experience they yield, or the experience algorithms in general. So there is a lot of trial and error and research to be done to create the optimal path, and it will likely need some maintenance over the years as patches come and go making tweaks to the system we aim to master. In addition to a numbers game, its also a race against the clock. It's not worth a 15 minute trek to save 5 minutes of grinding. So there will be a lot of calculations into what is at least damn close to the fastest path. The leveling path is the heart and soul of this project, so to speak.
Proper, Careful Return Paths:
I seem to find that this is where a lot of waypoint scripts fall short - the bot can often get stuck, or run through an inappropriate pack of mobs, either wasting time, aborting the bot, or worse, repeated deaths that were unneccessary. In addition to quality, careful return paths and AI management, it should also provide alternatives. One common issue is that you don't always end up at the graveyard you expect. When creating a return path, we need to either verify our position, or ensure that the entire normal waypoint leads to the same graveyard. In addition, if you die on a return path, take an alternate path next time. If that fails, use a transport or recall and take the long way back, rather than aborting, repeated death and XP debt, etc.
XP Debt Management:
In case the bot does run into issues, it should be able to manage its xp debt. If its more than 10 minutes of work to eliminate the debt, have it attempt to get an atonement from Newbie pet. If there are other repeatable ways to eliminate this debt that don't cost a speciality currency, attempt those too (even if it involves purchasing an item on the AH).
Thorough Testing:
The bot will need to be thoroughly tested and maintained - this is where the community comes in. I'll need reports of any problems, such as sticking, repeated deaths, or any inefficiency, so that I can improve the quality of the bot functionality anywhere possible.
DONE - Dynamic Target Ignore List:
I am still looking for a way to dynamically add/remove mobs from the ignore ("friend") list, for several reasons. I permanently ignored the Oil Lake Whistle Frogs, for example, because the bot likes to chase them out into the lake and pull crabs, which are far less efficient for that neck of leveling. Dynamic support would let me turn off these frogs only while in the area, rather than building a massive friends list to be in memory at all times. In addition, dynamic maintenance would let me ignore passive mobs that are below the desired level (like Burrow Cavys from 9-10), while still hunting them at appropriate levels (7-8).
Race Detection:
I'm sure this is an easy one, but I need a way to tell which race we are, for things that are race specific, such as the level 1-10 bracket, as the starting area is different, or whether or not the airship operator will allow me transport to Elven Island.
DONE - A way to operate the tutorial dialog boxes:
This should be simple, but I need a way to "accept" the tutorial, and manage the dialog boxes therein to complete the tutorial with no human input. This ensures the completeness and efficiency of the bot experience, as well as dynamically making the best choice of gear so the player can simply create a new character, fire up the bot, and walk away.
Auto Equip Best Equipment in Bag:
This is probably the hardest challenge in this list. I need a way to score equipment on a per-class basis (unusable items would automatically score 0). Then, I need to iterate the bag slots, and compare any equipment item scores to the currently equipped item score, equipping it if higher. While I can manually equip quest rewards and common drops, this ensures that any awesome and unexpected items go to use rather than simply being vendored.
Automatic Rune Application:
Need a per-class score of runes - while the bot won't go out of its way to aquire runes, it should take advantage of any rune slots with any runes it might have picked up recently. After all, better stats means faster kills, and faster kills means faster leveling. I assume runes would use a class-aware scoring system, similar to the equipment challenge above, only it would iterate the entire bag before applying as runes can't easily be changed.
Random Path Chaining:
Paths will be broken into "links" and chained together randomly, to emulate human behavior and reduce the "botty" feel. In addition, the paths themselves will be carefully designed to "feel" as human as possible. This should help with detection as well as "viewing pleasure" for the observer.
Mount Management:
If there are no permanent mounts available, the bot should be aware of any temporary mounts, and willing/able to rent a horse to make long runs MUCH faster.
Dynamic Ranged Pull Option:
This is another common fail point of many existing waypoint scripts: When the bot gets into a tight or hilly area, it tries to range pull through an obstacle, and can spent minutes or hours simply waiting for timeouts instead of leveling. In the event a bot needs to enter or pass through these areas, ranged pull should dynamically be turned off to avoid this aggrevating slowdown.
Auction House Management (Rudimentary):
Yes, that's right. The bot should be able to create its own auctions - only for quick selling, mid-value items, such as Magic Hormones, production runes, etc. The bot should underprice these to ensure they sell - after all, its only looking to make funds for basic survival, not trying to nickel and dime its way to billions. This is especially useful for items that are worthless to a vendor but could be a nice source of a little extra income. In addition, the bot needs to be able to retrieve AH money via a mailbox, and should track whether or not money came in while the bot is working (i.e. whether it should route to a mailbox at the next town).
Vendoring:
Equipment, especially at lower levels, is too complicated to sell on the AH for the bot to worry about. It should vendor any unwanted equipments, as well as any other useless items that aren't common enough to sell on the AH. In addition, it should maintain stock of the best potions it can use, selling the inferior potions to avoid buildup. It should also be capable of buying gear from vendors, only if its current gear is significantly dated (or missing). And of course, autorepair.
DONE - Automatic Profile Building:
The average user would have a hard time setting up a profile that is appropriate for this type of script, and the profile would need to change regularly anyway to remain optimal. So the profile will need to be built, and saved automatically as the bot progresses. The profile will also need to be aware of primary and secondary classes, in all possible combinations, as the secondary class skills and the elite skills can be quite useful.
Advance Class Selection:
Some way to specify what your desired second and third class are ahead of time, so that the bot can automatically take the classes for you. Keep in mind that while leveling, the bot will try not to spend many TP, rather just what it needs to remain most efficient at leveling. You should have plenty of TP to invest in specializing once the bot is finished with the character.
Elite Skill Certification:
The script should be able to complete the necessary quests to obtain elite skills automatically, and add these to the profile to be usable. By preparing and being aware of their requirements ahead of time, the bot can be ready to walk up and obtain the skill on the spot when it checks in at the certifying location.
Population Counter and Channel Switching:
Eventually, I'd like the bot to be able to track population of the current zone in the current channel. This way it could "smart" switch channels to the lowest population. In addition, I need a way to let the bot change channels automatically; if it has to spend a significant amount of time in the same place for some reason, semi-regular channel changing reduces the likelihood of a single player noticing a pattern.
DONE - Quest History Determination:
I need a way to determine if the character has previously completed a quest (as opposed to just not accepted, accepted, and ready for turnin, we need the 4th phase, already turned in) used for dynamic quest chaining in scenarios where questing is faster than grinding.
Optional Speed Hack and Suicide Hack:
This would only be an option for those that are interested, allowing the bot to move at 110% of normal speed (1.1), just slightly faster, which should decrease the time it takes to complete by 8% or so, while remaining hard to notice to the untrained eye. This would have to apply to mounted speed as well for optimal effect. The suicide hack would be used as a debt avoidance mechanism, as it is able to "kill" the player without incuring debt. It would fire just before an actual death occurs, to prevent the actual death from imposing debt. Debt avoidance speeds up the process for obvious reasons.
Last edited by Pathfinder on Thu Feb 23, 2012 7:49 am, edited 1 time in total.
- MiesterMan
- Posts: 543
- Joined: Tue Jul 06, 2010 9:15 pm
- Location: Between the Second and Third Circles of Hell
Re: SOLO (Leveling Bot) [Early Development]
Ambitious
They "best way to go about it" is still up for debate though. I'd come up with a theory for dynamic pathing based on recording to a massive database that we could all access. Using my node recorder, all objects would be recorded into the database with all related info, so if the bot detected a nearby available quest it could get the quest, get a path to do the quest, and get a path to complete a quest. This system would be dependant on recording walking paths for roads and interior structures. Personally I stopped progressing this idea what I found I was unable to locate objects like trees and fences, and other small obstructions as they would be a detriment to the system.
Still, I think it was BillNDoor or similar name that had created a system that records working paths and then creates new paths by linking them together. I personally try to avoid the wander bot though.
Good luck with this, I cant' say I'll be much help but if I fix the eq swapper feel free to use it.
They "best way to go about it" is still up for debate though. I'd come up with a theory for dynamic pathing based on recording to a massive database that we could all access. Using my node recorder, all objects would be recorded into the database with all related info, so if the bot detected a nearby available quest it could get the quest, get a path to do the quest, and get a path to complete a quest. This system would be dependant on recording walking paths for roads and interior structures. Personally I stopped progressing this idea what I found I was unable to locate objects like trees and fences, and other small obstructions as they would be a detriment to the system.
Still, I think it was BillNDoor or similar name that had created a system that records working paths and then creates new paths by linking them together. I personally try to avoid the wander bot though.
Good luck with this, I cant' say I'll be much help but if I fix the eq swapper feel free to use it.
My RoM Bot toys:
- Object Viewer: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2619
Teleporter Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2605
Waypoint Finder: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2616
Mail Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2612
Equipment Swapper(TempFixed): http://www.solarstrike.net/phpBB3/viewt ... =27&t=2571
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
For the most effective path for 1-10, this is the text version of what I've got so far.
startup - determines which race we are (edit: impossible I believe? maybe we can go by zone id [pioneer's colony vs. elven academy]?) and fires up the appropriate path (prefixed hereunder with elf_ and human_ accordingly)
elf_01-08_main - the main run from chargen location to the snoop outside veranas, branches off to handle the tutorial and leveling challenges
elf_01-02 - if we aren't level 2, branch off and fight spotted beetles and bright birds
elf_02-04 - if we aren't level 4, branch off and fight spores
elf_04-06 - if we aren't level 6, branch off and fight dust ostriches and weak ents
elf_06-08 - if we aren't level 8, branch off and fight monkey people
human_01-08_main - the main run from pioneer colony to the snoop outside veranas, branches off to handle the tutorial and leveling challenges
human_01-02 - if we aren't level 2, branch off and fight wolf cubs and young bears just before logar
human_02-04 - if we aren't level 4, branch off and fight the beetles just past Logar
human_04-06 - if we aren't level 6, branch off and fight wolves and bears just before silverspring
human_06-08 - if we aren't level 8, branch off and fight cow beetles just inside silverspring
08-10_main - if we aren't level 10, branch off and fight mutated wolves and mangy hogs at peerston's farm
10_classhall - from the snoop at veranas gates to the class hall, aquire secondary class if we don't already have one, update useful skills accordingly
10_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income (for second pass)
10_level_secondary - if both classes are not level 10- switch classes, backtrack to the beginning and run the 1-10 again (this step will be skipped next time)
10_switchback - now that both classes are level 10, acceptably geared, items have been vendored, gold has been collected, lets switch classes back to the original arrangement and proceed to veranas gates.
Edit: I know, no quests, right? I actually tried several different questing paths, and sadly, they all timed out slower than just grinding, for this neck anyway.
As for the common database, the problem with that is we'd need a new bot that could (I imagine) cURL request data all the time - and I foresee connection problems (timeouts etc) as more trouble than its worth. Alternatively, you'd have to download a massive database which has to be updated every patch. It's worth investigating, but thats even more ambitious than my existing plan, IMHO.
startup - determines which race we are (edit: impossible I believe? maybe we can go by zone id [pioneer's colony vs. elven academy]?) and fires up the appropriate path (prefixed hereunder with elf_ and human_ accordingly)
elf_01-08_main - the main run from chargen location to the snoop outside veranas, branches off to handle the tutorial and leveling challenges
elf_01-02 - if we aren't level 2, branch off and fight spotted beetles and bright birds
elf_02-04 - if we aren't level 4, branch off and fight spores
elf_04-06 - if we aren't level 6, branch off and fight dust ostriches and weak ents
elf_06-08 - if we aren't level 8, branch off and fight monkey people
human_01-08_main - the main run from pioneer colony to the snoop outside veranas, branches off to handle the tutorial and leveling challenges
human_01-02 - if we aren't level 2, branch off and fight wolf cubs and young bears just before logar
human_02-04 - if we aren't level 4, branch off and fight the beetles just past Logar
human_04-06 - if we aren't level 6, branch off and fight wolves and bears just before silverspring
human_06-08 - if we aren't level 8, branch off and fight cow beetles just inside silverspring
08-10_main - if we aren't level 10, branch off and fight mutated wolves and mangy hogs at peerston's farm
10_classhall - from the snoop at veranas gates to the class hall, aquire secondary class if we don't already have one, update useful skills accordingly
10_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income (for second pass)
10_level_secondary - if both classes are not level 10- switch classes, backtrack to the beginning and run the 1-10 again (this step will be skipped next time)
10_switchback - now that both classes are level 10, acceptably geared, items have been vendored, gold has been collected, lets switch classes back to the original arrangement and proceed to veranas gates.
Edit: I know, no quests, right? I actually tried several different questing paths, and sadly, they all timed out slower than just grinding, for this neck anyway.
As for the common database, the problem with that is we'd need a new bot that could (I imagine) cURL request data all the time - and I foresee connection problems (timeouts etc) as more trouble than its worth. Alternatively, you'd have to download a massive database which has to be updated every patch. It's worth investigating, but thats even more ambitious than my existing plan, IMHO.
- MiesterMan
- Posts: 543
- Joined: Tue Jul 06, 2010 9:15 pm
- Location: Between the Second and Third Circles of Hell
Re: SOLO (Leveling Bot) [Early Development]
I'd looked into a path for elves before. I'm pretty sure you're better off just grinding from 1-20 on the elf island.
My RoM Bot toys:
- Object Viewer: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2619
Teleporter Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2605
Waypoint Finder: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2616
Mail Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2612
Equipment Swapper(TempFixed): http://www.solarstrike.net/phpBB3/viewt ... =27&t=2571
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
1-20? Highest level mobs I could find there were the monkey people, and they're only 8-9. That would take quite awhile. Originally I was running 1-10 there, but even that was taking too long. I kicked over to Silverspring for the 8-10 and it goes about 10 minutes faster. Am I missing a part of elven island?
Edit: Sorry if this is n00bish, but how can I access zoneId (I see it in addresses.lua) from a waypoint file?
Edit 2: Meister I just looked through your scripts, and they would be a phenomenal help to this project. - edit 3: retracted, including would be unwise
Edit: Sorry if this is n00bish, but how can I access zoneId (I see it in addresses.lua) from a waypoint file?
Edit 2: Meister I just looked through your scripts, and they would be a phenomenal help to this project. - edit 3: retracted, including would be unwise
Last edited by Pathfinder on Thu Feb 16, 2012 5:28 pm, edited 1 time in total.
Re: SOLO (Leveling Bot) [Early Development]
This is a great project. I may not be the best in coding but if you ever need help with this I'd love to help, cause I'm tired of leveling my bots manually too.
Here is my gathering waypoints: http://solarstrike.net/phpBB3/viewtopic.php?f=27&t=3603
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
Alleexx - I would love some help, I need testing badly. I'll PM with a better contact option in case you're interested.
Here's the current leveling plan for 1-20/20/20. Still a lot to do to make this happen as smooth as its laid out here.
startup: determine our current zone (elven academy or pioneer colony) and fire up the human_ or elf_ path accordingly
elf_01-08_main - the main run from chargen location to the snoop outside veranas, branches off to handle the tutorial and leveling challenges and activate snoops
elf_01-02 - if we aren't level 2, branch off and fight spotted beetles and bright birds
elf_02-04 - if we aren't level 4, branch off and fight spores
elf_04-06 - if we aren't level 6, branch off and fight dust ostriches and weak ents
elf_06-08 - if we aren't level 8, branch off and fight monkey people
human_01-08_main - the main run from pioneer colony to the snoop outside veranas, branches off to handle the tutorial and leveling challenges and activate snoops
human_01-02 - if we aren't level 2, branch off and fight wolf cubs and young bears just before logar
human_02-04 - if we aren't level 4, branch off and fight the beetles just past Logar
human_04-06 - if we aren't level 6, branch off and fight wolves and bears just before silverspring
human_06-08 - if we aren't level 8, branch off and fight cow beetles just inside silverspring
08-10_main - if we aren't level 10, branch off and fight mutated wolves and mangy hogs at peerston's farm
10_class_add - from the snoop at veranas gates (talk to him to activate transport there) to the class hall, aquire secondary class if we don't already have one, update useful skills accordingly
10_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income (for second pass)
10_level_secondary - if both classes are not level 10- switch classes, backtrack to the beginning and run the 1-10 again (this step will be skipped next time)
10_switchback - now that both classes are level 10, acceptably geared, items have been vendored, gold has been collected, lets switch classes back to the original arrangement and proceed to veranas gates.
10-20_main - the main run from veranas gates to aslan's silverfall (ends at snoop in silverfall, after activating him to open transport there)
10-12 - grassland howling wolves and charging boars east of maidges farm
12-14 - poisonous dragonflies, around the south and east edge of the lake of magic mist
14-16 - tagena mobs (try to stick to mostly just patrolmen) just north of the lake of magic mist
16-18 - valley scavengers just inside Aslan Valley
18-20 - aslan dragonflies and scaly anteaters, north of the woodland of qilana
20_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income
20_level_secondary - if both classes are not level 20- take snoop transport back to veranas, switch classes, and run the 10-20 main again
20_class_add - if both classes are level 20, but we don't have a third class yet, take the transport to varanas, accept the third class, update useful skills, buy appropriate class starter gear, bank either class A or B's gear so we can use that equipment slot for class C (class priority: if class B is a healer class, it will be kept as secondary. Otherwise class A will be kept as secondary.) Switch classes to class C with the appropriate secondary. Equip the appropriate gear, and use Recall (which hasn't been changed from starting zone yet ) then run the 1-20 again.
20_elite_skills_prep - take the transport to Veranas, switch to class combo A/B, buy (or farm) required items for all six elite skills quests that are available at 20
20_elite_skills_main - the route from the housemaid to the elite skills master and back (and forth, etc...) for each class combo
20_elite_skills_ab - complete the elite skills quests for 15 and 20 for primary A secondary B
20_elite_skills_ac - complete the elite skills quests for 15 and 20 for primary A secondary C
20_elite_skills_ba - complete the elite skills quests for 15 and 20 for primary B secondary A
20_elite_skills_bc - complete the elite skills quests for 15 and 20 for primary B secondary C
20_elite_skills_ca - complete the elite skills quests for 15 and 20 for primary C secondary A
20_elite_skills_cb - complete the elite skills quests for 15 and 20 for primary C secondary B
20_finalize - as we close the first 1/4th of the leveling process, let's restore gear sets and class status to A/B with C banked, and move to Silverfall so we're ready for the next adventure.
Update: Got race detection, as well as the starting zone detection. thanks to MiesterMan for zone detection - his great teleport functions UF provides the getZoneID function which made that simple.
Here's the current leveling plan for 1-20/20/20. Still a lot to do to make this happen as smooth as its laid out here.
startup: determine our current zone (elven academy or pioneer colony) and fire up the human_ or elf_ path accordingly
elf_01-08_main - the main run from chargen location to the snoop outside veranas, branches off to handle the tutorial and leveling challenges and activate snoops
elf_01-02 - if we aren't level 2, branch off and fight spotted beetles and bright birds
elf_02-04 - if we aren't level 4, branch off and fight spores
elf_04-06 - if we aren't level 6, branch off and fight dust ostriches and weak ents
elf_06-08 - if we aren't level 8, branch off and fight monkey people
human_01-08_main - the main run from pioneer colony to the snoop outside veranas, branches off to handle the tutorial and leveling challenges and activate snoops
human_01-02 - if we aren't level 2, branch off and fight wolf cubs and young bears just before logar
human_02-04 - if we aren't level 4, branch off and fight the beetles just past Logar
human_04-06 - if we aren't level 6, branch off and fight wolves and bears just before silverspring
human_06-08 - if we aren't level 8, branch off and fight cow beetles just inside silverspring
08-10_main - if we aren't level 10, branch off and fight mutated wolves and mangy hogs at peerston's farm
10_class_add - from the snoop at veranas gates (talk to him to activate transport there) to the class hall, aquire secondary class if we don't already have one, update useful skills accordingly
10_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income (for second pass)
10_level_secondary - if both classes are not level 10- switch classes, backtrack to the beginning and run the 1-10 again (this step will be skipped next time)
10_switchback - now that both classes are level 10, acceptably geared, items have been vendored, gold has been collected, lets switch classes back to the original arrangement and proceed to veranas gates.
10-20_main - the main run from veranas gates to aslan's silverfall (ends at snoop in silverfall, after activating him to open transport there)
10-12 - grassland howling wolves and charging boars east of maidges farm
12-14 - poisonous dragonflies, around the south and east edge of the lake of magic mist
14-16 - tagena mobs (try to stick to mostly just patrolmen) just north of the lake of magic mist
16-18 - valley scavengers just inside Aslan Valley
18-20 - aslan dragonflies and scaly anteaters, north of the woodland of qilana
20_bags-gear - equip gear/runes, vendor crap items, AH valuables, replace any missing or horribly obsolete gear with gear available from vendors, repair, check mail for AH income
20_level_secondary - if both classes are not level 20- take snoop transport back to veranas, switch classes, and run the 10-20 main again
20_class_add - if both classes are level 20, but we don't have a third class yet, take the transport to varanas, accept the third class, update useful skills, buy appropriate class starter gear, bank either class A or B's gear so we can use that equipment slot for class C (class priority: if class B is a healer class, it will be kept as secondary. Otherwise class A will be kept as secondary.) Switch classes to class C with the appropriate secondary. Equip the appropriate gear, and use Recall (which hasn't been changed from starting zone yet ) then run the 1-20 again.
20_elite_skills_prep - take the transport to Veranas, switch to class combo A/B, buy (or farm) required items for all six elite skills quests that are available at 20
20_elite_skills_main - the route from the housemaid to the elite skills master and back (and forth, etc...) for each class combo
20_elite_skills_ab - complete the elite skills quests for 15 and 20 for primary A secondary B
20_elite_skills_ac - complete the elite skills quests for 15 and 20 for primary A secondary C
20_elite_skills_ba - complete the elite skills quests for 15 and 20 for primary B secondary A
20_elite_skills_bc - complete the elite skills quests for 15 and 20 for primary B secondary C
20_elite_skills_ca - complete the elite skills quests for 15 and 20 for primary C secondary A
20_elite_skills_cb - complete the elite skills quests for 15 and 20 for primary C secondary B
20_finalize - as we close the first 1/4th of the leveling process, let's restore gear sets and class status to A/B with C banked, and move to Silverfall so we're ready for the next adventure.
Update: Got race detection, as well as the starting zone detection. thanks to MiesterMan for zone detection - his great teleport functions UF provides the getZoneID function which made that simple.
Re: SOLO (Leveling Bot) [Early Development]
getZoneId() is a function in default bot.
I did this about a year ago it might help you a little.
http://www.solarstrike.net/phpBB3/viewt ... =21&t=2005
Can't remember if i released the final version or not, thought I had but I couldn't find it with a search.
End result did 1-10/10 without issue.
Reason I stopped there is because when you get to 20 you really need to upgrade gear and at the time we didn't have item stats to help with that.
I did this about a year ago it might help you a little.
http://www.solarstrike.net/phpBB3/viewt ... =21&t=2005
Can't remember if i released the final version or not, thought I had but I couldn't find it with a search.
End result did 1-10/10 without issue.
Reason I stopped there is because when you get to 20 you really need to upgrade gear and at the time we didn't have item stats to help with that.
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: SOLO (Leveling Bot) [Early Development]
I'd be happy to contribute as and when I can. I'm currently working on my stuff which is geared around a separate application telling the mmBot what it needs to be doing.
As part of that I've ripped all the item data from runesofmagic database along with quests (and also grabbed the quest data out of the questwiz addon) and a heap of npc data that my current bot auto-records anyway.
Movement wise, I have an xml database with a heap of waypoints for the zones I play in. Each waypoint knows which other waypoints it physically links to and which npc's are attached to it. NPC's know what type they are and transport/teleport ones have a script for each destination they link to, so the pathfinding algorithm uses all that to figure out best route to get to another node.
I mainly use it for travelling around the place. e.g. varanas to frontline camp etc (I play from work so can't spend time running manually .
Quest data is the hardest to get out of the client as the api only lets you get info on quests in your questbook. But I've written code to export that data to my external db via a tcp/ip connection anyway now.
What I'm currently working on is a windows service that will act as a REST type DB for my mmBot stuff (you send commands like: 'QUEST|GET|1' or 'ITEM|UPDATE|1|Sword of Fear|12000|....' and then just re-parse the results...anyway - getting sidetracked
All this data is of course necessary to build a controller that will look at your character, the quest database etc and figure out where to send the bot next, which is what I'll be doing once I have the data in a satisfactory state. I was planning on making it goal-driven, where you specify its overall goal (level, farm items, generate gold...) and then gear goals (get item-set XYZ, wear best for dps, wear best for survivability...).
Rune Management
I dont think anyone has done anything yet with rune optimisation, so thats gonna be a huge job.
Profile Management
I dont think this will be hard - simply decide what user-functions are a must, include those and determine from there what settings really need to be configurable.
Population
I see this being a bit of a nightmare - working out channel saturation from a specific area and extrapolating from that is really the only simple way I can see for it.
As part of that I've ripped all the item data from runesofmagic database along with quests (and also grabbed the quest data out of the questwiz addon) and a heap of npc data that my current bot auto-records anyway.
Movement wise, I have an xml database with a heap of waypoints for the zones I play in. Each waypoint knows which other waypoints it physically links to and which npc's are attached to it. NPC's know what type they are and transport/teleport ones have a script for each destination they link to, so the pathfinding algorithm uses all that to figure out best route to get to another node.
I mainly use it for travelling around the place. e.g. varanas to frontline camp etc (I play from work so can't spend time running manually .
Quest data is the hardest to get out of the client as the api only lets you get info on quests in your questbook. But I've written code to export that data to my external db via a tcp/ip connection anyway now.
What I'm currently working on is a windows service that will act as a REST type DB for my mmBot stuff (you send commands like: 'QUEST|GET|1' or 'ITEM|UPDATE|1|Sword of Fear|12000|....' and then just re-parse the results...anyway - getting sidetracked
All this data is of course necessary to build a controller that will look at your character, the quest database etc and figure out where to send the bot next, which is what I'll be doing once I have the data in a satisfactory state. I was planning on making it goal-driven, where you specify its overall goal (level, farm items, generate gold...) and then gear goals (get item-set XYZ, wear best for dps, wear best for survivability...).
Rune Management
I dont think anyone has done anything yet with rune optimisation, so thats gonna be a huge job.
Profile Management
I dont think this will be hard - simply decide what user-functions are a must, include those and determine from there what settings really need to be configurable.
Population
I see this being a bit of a nightmare - working out channel saturation from a specific area and extrapolating from that is really the only simple way I can see for it.
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
@Lisa:
Thanks! I didn't realize getZoneId was stock. I'm sure I'll still use the teleport functions for a couple other things down the road, but its good to know that for that specifically I can avoid the dependancy. I'll take a read through your waypoints to see what you've figured out that I haven't yet.
@BillDoorNZ:
Your database project sounds interesting, though it may or may not be useful for this specific project. I can see its uses in botting as a whole, which will be tremendous, but this is a very focused, tailored bot (though still complex in its own right), I don't see much room for *that much* freedom.
As for Rune Optimization, technically it could be done now with no extra addons at all, though slowly and horribly inefficient. It would basically involve storing the name of the appropriate runes for each class, in descending order, and attempting to apply them one by one. It would take 20 minutes to safely determine that all the appropriate runes are applied, which is unfortunate, but it should be a simple enough process to speed up via an addon, either to the game or to the bot.
As for population, that does seem nightmarish, seeing as there's no WoW-like "/who", which is unfortunate. It would be quite convenient though. Is there any online "server status indicator" that indicates overall population? Just thinking outside the box, if so there might be some way to use that for now.
As for profile management, the hardest challenge I've seen so far is how to add/remove "friendly" ignores on the fly, hence it being a seperate "challenge" in the list above. I see how to change most of the other options, all that's left is saving the options that are changed as the bot profile develops, to support proper suspending and resuming.
I've got to call it a night, but I'll be pretty active on this over the weekend. Thanks for the support so far guys.
Thanks! I didn't realize getZoneId was stock. I'm sure I'll still use the teleport functions for a couple other things down the road, but its good to know that for that specifically I can avoid the dependancy. I'll take a read through your waypoints to see what you've figured out that I haven't yet.
@BillDoorNZ:
Your database project sounds interesting, though it may or may not be useful for this specific project. I can see its uses in botting as a whole, which will be tremendous, but this is a very focused, tailored bot (though still complex in its own right), I don't see much room for *that much* freedom.
As for Rune Optimization, technically it could be done now with no extra addons at all, though slowly and horribly inefficient. It would basically involve storing the name of the appropriate runes for each class, in descending order, and attempting to apply them one by one. It would take 20 minutes to safely determine that all the appropriate runes are applied, which is unfortunate, but it should be a simple enough process to speed up via an addon, either to the game or to the bot.
As for population, that does seem nightmarish, seeing as there's no WoW-like "/who", which is unfortunate. It would be quite convenient though. Is there any online "server status indicator" that indicates overall population? Just thinking outside the box, if so there might be some way to use that for now.
As for profile management, the hardest challenge I've seen so far is how to add/remove "friendly" ignores on the fly, hence it being a seperate "challenge" in the list above. I see how to change most of the other options, all that's left is saving the options that are changed as the bot profile develops, to support proper suspending and resuming.
I've got to call it a night, but I'll be pretty active on this over the weekend. Thanks for the support so far guys.
Re: SOLO (Leveling Bot) [Early Development]
If you start with creating a 20/20 script everyone will love you. Because everytime you create a new account you have to create a 20/20 character before your other characters can go to Heffner for faster leveling.
- 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
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
Good point. I'll release at 20/20. Technically it already works but there are a few sticks and deaths to work out. Should have the release up this weekend.
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: SOLO (Leveling Bot) [Early Development]
Dynamic Target Ignore List:
Just a quick note on this. As the Friends and Mobs tables (settings.profile.mobs and settings.profile.friends) are just tables, you can simply add/remove entries as necessary. So doing this is very simple - dunno about my code for removing the target - seems a little long-winded and painful.
e.g.
Just a quick note on this. As the Friends and Mobs tables (settings.profile.mobs and settings.profile.friends) are just tables, you can simply add/remove entries as necessary. So doing this is very simple - dunno about my code for removing the target - seems a little long-winded and painful.
e.g.
Code: Select all
local function AddTargetToMobs(target)
if (settings.profile.mobs[target] ~= nil) then return; end;
table.insert(settings.profile.mobs, target);
end;
local function RemoveTargetFromMobs(target)
if (settings.profile.mobs[target] == nil) then return; end; --target not in list anyway
local idx = -1;
for i,v in pairs(settings.profile.mobs) do
if (v == target) then
idx = i;
break;
end;
end;
table.remove(settings.profile.mobs, idx);
end;
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
Excellent, thanks BillDoorNZ. That speeds up the 1-10 immensely as they are mostly passives and now I can change which mobs to focus on by level.
Re: SOLO (Leveling Bot) [Early Development]
lisa has a userfunction for that: http://www.solarstrike.net/phpBB3/viewt ... 18&p=34572
Here is my gathering waypoints: http://solarstrike.net/phpBB3/viewtopic.php?f=27&t=3603
Re: SOLO (Leveling Bot) [Early Development]
That function shouldn't work. Use Lisas one.
You are assuming the mobs and friends are listed by name, they are not. They are listed by numbers. When you insert a name into a table, eg,it actually increments the index and adds it. Lets say there were 4, it will add
So this will never return true.
To find out if a name already exists, to either decide whether you need to add it or to remove it, you have to search for it first, similar to what you do in "RemoveTargetFromMobs". So what you have to do is first search for it, then do the insert or remove.
You are assuming the mobs and friends are listed by name, they are not. They are listed by numbers. When you insert a name into a table, eg,
Code: Select all
table.insert(settings.profile.mobs, target)
Code: Select all
settings.profile.mobs[5] = target
Code: Select all
if (settings.profile.mobs[target] ~= nil)
- 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
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
So I've fallen behind a bit, sorry guys. Didn't have as much time this weekend as I expected.
I've got the initial 1-20 pretty solid and the secondary 1-10 smoothed out. Secondary 10-20 has a few kinks I'll smooth as soon as I can get some time. Have to work in the AM so it probably won't be until tommorow night or the next day.
Thanks Alleexx and rock5 for the advice about the mob table.
Any advice on the tutorial dialog boxes?
I've got the initial 1-20 pretty solid and the secondary 1-10 smoothed out. Secondary 10-20 has a few kinks I'll smooth as soon as I can get some time. Have to work in the AM so it probably won't be until tommorow night or the next day.
Thanks Alleexx and rock5 for the advice about the mob table.
Any advice on the tutorial dialog boxes?
Re: SOLO (Leveling Bot) [Early Development]
did you try
Code: Select all
sendMacro('StaticPopup_OnClick(StaticPopup1, 1);')
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
-
- Posts: 14
- Joined: Wed Feb 15, 2012 4:14 pm
Re: SOLO (Leveling Bot) [Early Development]
Did not. Didn't understand what "static popup" was. But that makes sense
I'll try it as soon as I get home from work.
I'll try it as soon as I get home from work.
-
- Posts: 61
- Joined: Sun Jul 10, 2011 10:39 pm
Re: SOLO (Leveling Bot) [Early Development]
Hi
I am very interested in how this goes, and keen to help where I can. I do not spend a lot of time playing or coding, but having been 'pottering' on my own solution to a 1-70 bot.
I have it to doing 1-50 so far. Its not perfect, bot still dies, and gets stuck sometimes, but each time I run a bot through it I tweak and smooth the bot, and add another function here and there as I learn more code.
I have worked on the theory or moving the bot from General Merchant to General Merchant (travel.xml and travelback.xml), as they are the person in the middle of a new area, and you visit often to repair, sell/buy.
I then run through a ToDo list to determine what the bot needs and can do while in the area of this General Merchant (potions/buy/sell, bank, mail, dailies, ammo, swap class, swap channel) and when that is complete, determine if the character needs to head to the next Merchant, or head out to mobs in this area (depending on player level)
I have a waypoint for each type of mob needed, so as it gains levels, it moves on to bigger mobs (standard stuff I think).
It is working well, but there are things that need work,
- like upgrading gear as it levels, this is not yet automated. The better the gear is, the bigger the mobs it can deal with, so the faster it gets XP. So the gear upgrade function will have a HUGE benefit to anyone's bot.
- Questing. I have been adding in daily quests as I go, but I have only a few quests, as I am still smoothing my existing waypoints.
Levelling a bot using quests will be significantly faster than just grinding alone.
These are the functions I have in my userfunctions.xml file. Slowly growing as I add abilities, and smooth things along:
and these are the xml file I use:
The todoblablabla.xml files work at any location, as the bot goes to the nearest waypoint when called, so the waypoints from each area can all be added to the same waypoint file. Takes a bit to create them, but once made, hugely simplify the process or moving around a town.
eg: todogeneralmerchant.xml
As I said, I'm keen to help where I can. I think the way I have approached it is much simpler, as my coding is my more basic. It then tends to mean the bot will be more simple.
I look forward to the 1-20 file you have, and how I could help or contribute. This forum has given me much, and I don't think I have yet paid it back.
I am very interested in how this goes, and keen to help where I can. I do not spend a lot of time playing or coding, but having been 'pottering' on my own solution to a 1-70 bot.
I have it to doing 1-50 so far. Its not perfect, bot still dies, and gets stuck sometimes, but each time I run a bot through it I tweak and smooth the bot, and add another function here and there as I learn more code.
I have worked on the theory or moving the bot from General Merchant to General Merchant (travel.xml and travelback.xml), as they are the person in the middle of a new area, and you visit often to repair, sell/buy.
I then run through a ToDo list to determine what the bot needs and can do while in the area of this General Merchant (potions/buy/sell, bank, mail, dailies, ammo, swap class, swap channel) and when that is complete, determine if the character needs to head to the next Merchant, or head out to mobs in this area (depending on player level)
I have a waypoint for each type of mob needed, so as it gains levels, it moves on to bigger mobs (standard stuff I think).
It is working well, but there are things that need work,
- like upgrading gear as it levels, this is not yet automated. The better the gear is, the bigger the mobs it can deal with, so the faster it gets XP. So the gear upgrade function will have a HUGE benefit to anyone's bot.
- Questing. I have been adding in daily quests as I go, but I have only a few quests, as I am still smoothing my existing waypoints.
Levelling a bot using quests will be significantly faster than just grinding alone.
These are the functions I have in my userfunctions.xml file. Slowly growing as I add abilities, and smooth things along:
Code: Select all
\micromacro\scripts\rom\userfunctions.lua (38 hits)
Line 5: function StartUp()
Line 63: function CheckEquipment(_nextdestination)
Line 112: function SetCustomSettings()
Line 145: function SetProfileOptions(_merchant)
Line 274: function AtMerchant(_merchantname)
Line 324: function SellItems(_merchantname)
Line 355: function ChangeChannel()
Line 387: function CheckLevel(_camefrom)
Line 672: function CheckClassSwap(_camefrom)
Line 697: function DisplayStats()
Line 864: function Travel()
Line 874: function Run()
Line 884: function Normal()
Line 896: function PrintLine(_color)
Line 917: function GoToTag(_tagname)
Line 933: function LoadWaypoints(_newpath)
Line 946: function LostMyWay(_errorcode)
Line 960: function GetStat(_whatstat)
Line 1094: function SwapClass(_housemaid)
Line 1132: function TeleSnoop()
Line 1153: function RentHorse(_merchant, _type)
Line 1180: function MountHorse()
Line 1211: function UseTeleporter(_merchant, _option1, _option2)
Line 1228: function UseASkill(_skill,_planb)
Line 1280: function BuffCheck(_buffname)
Line 1300: function CancelBuff(buffname)
Line 1322: function DisplayItemTypes()
Line 1350: function CheckToDoList(_location)
Line 1442: function UpdateToDoList(_location, _listoption)
Line 1642: function SendMail(_location)
Line 1703: function CheckQuests()
Line 1719: function CheckDailyQuests()
Line 1830: function DoDailyQuest(_location)
Line 1846: function CombatDistance(_distance)
Line 1865: function LevelUpSkills1To70(_loadonly)
Line 1974: function OpenGiftbags1To70(_player_level)
Line 2026: function LearnMonsterCards()
Line 2052: function BankItem(_banker, _option, _item)
Code: Select all
22/02/2012 03:45 p.m. <DIR> ..
11/01/2012 04:33 p.m. 4,252 aroundanteaters.xml
12/01/2012 02:36 p.m. 3,869 aroundanteaters2.xml
10/11/2011 01:46 p.m. 5,266 aroundants.xml
02/12/2011 03:31 p.m. 11,062 aroundants2.xml
22/02/2012 02:37 p.m. 6,426 aroundbats.xml
17/01/2012 09:20 a.m. 5,614 aroundboars.xml
15/02/2012 12:07 p.m. 5,424 aroundcyclops.xml
18/01/2012 01:25 p.m. 5,357 aroundents.xml
18/01/2012 03:54 p.m. 2,913 aroundflowers.xml
20/02/2012 05:09 p.m. 6,529 aroundminotaurs.xml
08/02/2012 03:01 p.m. 6,676 aroundmoose.xml
10/11/2011 01:46 p.m. 2,207 aroundostridge.xml
07/02/2012 05:33 p.m. 6,640 aroundreindeer.xml
10/11/2011 01:46 p.m. 2,380 aroundscooray.xml
10/11/2011 01:46 p.m. 3,462 aroundscorpions.xml
10/11/2011 01:46 p.m. 3,947 aroundscorpions2.xml
10/11/2011 01:46 p.m. 21,636 aroundscorpions3.xml
11/11/2011 05:53 p.m. 6,254 aroundscorpions4.xml
09/01/2012 01:02 p.m. 4,781 aroundtagena.xml
10/11/2011 01:48 p.m. 4,860 aroundwolves.xml
20/02/2012 01:33 p.m. 6,773 aroundyuri.xml
17/02/2012 10:34 a.m. 2,032 dailyHTP_MinotaurTrinkets.xml
16/02/2012 11:52 a.m. 943 dailyHTP_StrongMedicine.xml
16/02/2012 11:53 a.m. 827 dailyHTP_TheCyclopsMenace.xml
10/11/2011 01:48 p.m. 1,672 dailyOS_ANightmare.xml
11/11/2011 11:06 p.m. 2,777 dailyOS_NeverTooLateToMend.xml
01/02/2012 09:53 a.m. 7,258 dailySF_DemonVine.xml
31/01/2012 09:18 a.m. 819 dailySF_EnduringArmor.xml
18/01/2012 01:04 p.m. 995 dailySF_EntsDeadBranches.xml
05/01/2012 11:32 a.m. 20,314 l1-10.xml
13/02/2012 05:09 p.m. 24,081 Quest33SeaOfSnowPackage.xml
10/11/2011 01:48 p.m. 941 questOSAlbion.xml
13/01/2012 03:08 p.m. 1,057 questQCInvestigateanteaters.xml
03/02/2012 10:43 a.m. 8,295 questSFSoulContainer.xml
07/02/2012 10:23 a.m. 10,409 todobank.xml
13/01/2012 11:43 a.m. 1,988 todobuycloth.xml
22/02/2012 09:26 a.m. 14,087 tododailyquest.xml
17/02/2012 11:54 a.m. 10,934 todoGeneralMerchant.xml
07/02/2012 10:25 a.m. 5,037 todoHouseMaid.xml
07/02/2012 10:31 a.m. 12,048 todomailbox.xml
10/02/2012 04:55 p.m. 11,026 todoWeaponsVendor.xml
20/02/2012 12:57 p.m. 23,447 travel.xml
02/02/2012 03:26 p.m. 14,462 travelback.xml
10/02/2012 02:52 p.m. 10,414 travelfrostwood.xml
10/11/2011 01:48 p.m. 756 travelweapons.xml
eg: todogeneralmerchant.xml
Code: Select all
<waypoints>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Varanas -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At Weapon Vendor Aidan (Lower City East), teleport to Lower City West (LCW) -->
<!-- # 1 --><waypoint x="5027" z="-608" y="102"></waypoint>
<!-- # 2 --><waypoint x="4712" z="-671" y="102"></waypoint>
<!-- # 3 --><waypoint x="4478" z="-706" y="102"></waypoint>
<!-- # 4 --><waypoint x="4435" z="-668" y="106"></waypoint>
<!-- # 5 --><waypoint x="4409" z="-550" y="53"></waypoint>
<!-- # 6 --><waypoint x="4430" z="-500" y="53"></waypoint>
<!-- # 7 --><waypoint x="4557" z="-373" y="53"></waypoint>
<!-- # 8 --><waypoint x="4578" z="-330" y="53"></waypoint>
<!-- # 9 --><waypoint x="4579" z="-223" y="52"></waypoint>
<!-- # 10 --><waypoint x="4564" z="-69" y="52"></waypoint>
<!-- # 11 --><waypoint x="4521" z="-16" y="52">
Useteleporter("Dieve", 3); <!-- Teleport from Lower City West (LCE) to Lower City East (LCW) -->
GoToTag("teleporterLCW"); </waypoint>
<!-- # 1 --><waypoint x="5221" z="-2171" y="103"> </waypoint>
<!-- # 2 --><waypoint x="5114" z="-2042" y="103"> </waypoint>
<!-- # 3 --><waypoint x="5076" z="-2015" y="103"> </waypoint>
<!-- # 4 --><waypoint x="4984" z="-1994" y="113"> </waypoint>
<!-- # 5 --><waypoint x="4746" z="-1970" y="115">
UseTeleporter("Noreve", 3); <!-- Teleport from Central Plaza (VCP) to Lower City East (LCW) -->
GoToTag("teleporterLCW"); </waypoint>
<!-- At teleporter Bareve (Lower City West), now to General Merchant Jose-->
<!-- # 12 --><waypoint x="2908" z="-798" y="56" tag="teleporterLCW"></waypoint>
<!-- # 13 --><waypoint x="2895" z="-836" y="56"></waypoint>
<!-- # 14 --><waypoint x="2952" z="-1052" y="53"></waypoint>
<!-- # 15 --><waypoint x="2831" z="-1191" y="53">
GoToTag("generalmerchantLCW"); </waypoint>
<!-- At HouseMaid Marliss Sister (Lower City West), to General Merchant Jose-->
<!-- # 8 --><waypoint x="2897" z="-1558" y="53"></waypoint>
<!-- # 9 --><waypoint x="3272" z="-1302" y="53"></waypoint>
<!-- # 10 --><waypoint x="3282" z="-1223" y="53"></waypoint>
<!-- # 11 --><waypoint x="3132" z="-1003" y="53"></waypoint>
<!-- # 12 --><waypoint x="3012" z="-1039" y="53">
GoToTag("generalmerchantLCW");</waypoint>
<!-- At General Merchant Jose (Lower City West) -->
<!-- # 16 --><waypoint x="2831" z="-1191" y="53" tag="generalmerchantLCW">
AtMerchant("Jose");
UpdateToDoList("Jose");
CheckToDoList("Jose");
</waypoint>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Qilana Camp -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At Qilana Camp General Merchant Ottade, checking level -->
<!-- # 01 --><waypoint x="-2821" z="9270" y="-36" type="TRAVEL">
AtMerchant("Ottade");
UpdateToDoList("Ottade");
CheckToDoList("Ottade");
</waypoint>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Silverfall -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At Distillery House Maid Linda, heading back to Silverfall Merchant -->
<!-- # 10 --><waypoint x="-8636" z="838" y="603" type="TRAVEL"></waypoint>
<!-- # 11 --><waypoint x="-8602" z="822" y="600" type="TRAVEL"></waypoint>
<!-- # 12 --><waypoint x="-8539" z="877" y="600" type="TRAVEL"></waypoint>
<!-- # 13 --><waypoint x="-8437" z="965" y="594" type="TRAVEL"></waypoint>
<!-- # 14 --><waypoint x="-7610" z="1306" y="536" type="TRAVEL"></waypoint>
<!-- # 15 --><waypoint x="-6933" z="2134" y="555" type="TRAVEL"></waypoint>
<!-- # 16 --><waypoint x="-6186" z="2581" y="556" type="TRAVEL"></waypoint>
<!-- # 17 --><waypoint x="-5919" z="3111" y="586" type="TRAVEL"></waypoint>
<!-- # 18 --><waypoint x="-5600" z="3338" y="575" type="TRAVEL"></waypoint>
<!-- # 19 --><waypoint x="-5548" z="3302" y="577" type="TRAVEL">
GoToTag("AtgeneralmerchantSF"); </waypoint>
<!-- At Mailbox (Silverfall) -->
<!-- # 1 --><waypoint x="-5455" z="3051" y="557"></waypoint>
<!-- # 2 --><waypoint x="-5370" z="3093" y="549"></waypoint>
<!-- # 3 --><waypoint x="-5339" z="3155" y="548"></waypoint>
<!-- # 4 --><waypoint x="-5344" z="3198" y="553"></waypoint>
<!-- # 5 --><waypoint x="-5365" z="3240" y="556"></waypoint>
<!-- # 6 --><waypoint x="-5394" z="3266" y="558"></waypoint>
<!-- # 7 --><waypoint x="-5441" z="3293" y="560"></waypoint>
<!-- # 8 --><waypoint x="-5509" z="3310" y="562">
GoToTag("AtgeneralmerchantSF"); </waypoint>
<!-- At Weapons Vendor Carl (Silverfall) -->
<!-- # 1 --><waypoint x="-5415" z="3211" y="558"></waypoint>
<!-- # 2 --><waypoint x="-5421" z="3267" y="559"></waypoint>
<!-- # 3 --><waypoint x="-5470" z="3311" y="561"></waypoint>
<!-- # 4 --><waypoint x="-5507" z="3320" y="561"></waypoint>
<!-- # 8 --><waypoint x="-5509" z="3310" y="562">
GoToTag("AtgeneralmerchantSF"); </waypoint>
<!-- At Bulletin Board (Silverfall) -->
<!-- # 2 --><waypoint x="-5479" z="3402" y="586" type="TRAVEL">
GoToTag("AtgeneralmerchantSF"); </waypoint>
<!-- At Silverfall General Merchant Miles, checking level -->
<!-- # 01 --><waypoint x="-5542" z="3303" y="562" tag="AtgeneralmerchantSF">
AtMerchant("Miles");
UpdateToDoList("Miles");
CheckToDoList("Miles");
</waypoint>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Harf Trading Post -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At Mailbox next to Auction House -->
<!-- # 1 --><waypoint x="-13589" z="-525" y="773">
GoToTag("generalmerchantHTP"); </waypoint>
<!-- At Billboard -->
<!-- # 1 --><waypoint x="-14399" z="-370" y="792"></waypoint>
<!-- # 3 --><waypoint x="-14216" z="-482" y="791"></waypoint>
<!-- # 4 --><waypoint x="-14116" z="-484" y="786"></waypoint>
<!-- # 5 --><waypoint x="-13869" z="-361" y="775">
GoToTag("generalmerchantHTP"); </waypoint>
<!-- At HouseMaid Jeddar Mays -->
<!-- # 3 --><waypoint x="-13877" z="-68" y="801">
GoToTag("generalmerchantHTP"); </waypoint>
<!-- At Weapons Merchant Morgan -->
<!-- # 1 --><waypoint x="-13831" z="-418" y="780">
GoToTag("generalmerchantHTP"); </waypoint>
<!-- At General Merchant Jacques -->
<!-- # 3 --><waypoint x="-13731" z="-365" y="785" tag="generalmerchantHTP">
AtMerchant("Jacques");
UpdateToDoList("Jacques");
CheckToDoList("Jacques");
</waypoint>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Frostwood -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At General Merchant Loca Roco -->
<!-- # 59 --><waypoint x="-8194" z="-7782" y="666" type="RUN" tag="generalmerchantFV">
Run();
AtMerchant("Loca Roco");
UpdateToDoList("Loca Roco");
CheckToDoList("Loca Roco"); </waypoint>
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- Obsidian Stronghold -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- At Weapon Vendor Orsie (Mercenary Square), teleport to General Merchant area (Battle Square) -->
<!-- # 1 --><waypoint x="-21376" z="3750" y="-171"></waypoint>
<!-- # 2 --><waypoint x="-21469" z="3799" y="-179"></waypoint>
<!-- # 3 --><waypoint x="-21998" z="3635" y="-179">
Useteleporter("Macy", 3); <!-- Teleport from Mercenary Square to Battle Square -->
GoToTag("teleporterOS"); </waypoint>
<!-- At HouseMaid Mishia Sister (Mercenary Square), teleport to General Merchant area (Battle Square)-->
<!-- # 4 --><waypoint x="-21216" z="4098" y="-179"></waypoint>
<!-- # 5 --><waypoint x="-21600" z="4014" y="-179"></waypoint>
<!-- # 6 --><waypoint x="-21916" z="3786" y="-179"></waypoint>
<!-- # 7 --><waypoint x="-21998" z="3635" y="-179">
Useteleporter("Macy", 3); <!-- Teleport from Mercenary Square to Battle Square -->
GoToTag("teleporterOS"); </waypoint>
<!-- At Mailbox (Glory Hall), teleport to General Merchant area (Battle Square) -->
<!-- # 8 --><waypoint x="-23459" z="4074" y="-178"></waypoint>
<!-- # 9 --><waypoint x="-23233" z="4457" y="-260">
Useteleporter("Maylen", 2); <!-- Teleport from Glory Hall to Battle Square -->
GoToTag("teleporterOS"); </waypoint>
<!-- At Bulletin Board (Glory Hall), teleport to General Merchant area (Battle Square) -->
<!-- # 10 --><waypoint x="-23155" z="4523" y="-260"></waypoint>
<!-- # 11 --><waypoint x="-23204" z="4487" y="-260">
UseteleporterOS("Maylen", 2); <!-- Teleport from Glory Hall to Battle Square -->
GoToTag("teleporterOS"); </waypoint>
<!-- At Auction House Clerk (Glory Hall), teleport to General Merchant area (Battle Square) -->
<!-- # 12 --><waypoint x="-23728" z="3408" y="-206"></waypoint>
<!-- # 13 --><waypoint x="-23424" z="3630" y="-205"></waypoint>
<!-- # 14 --><waypoint x="-23467" z="3814" y="-198"></waypoint>
<!-- # 15 --><waypoint x="-23322" z="3948" y="-180"></waypoint>
<!-- # 16 --><waypoint x="-23102" z="4239" y="-259"></waypoint>
<!-- # 17 --><waypoint x="-23233" z="4457" y="-260">
Useteleporter("Maylen", 2); <!-- Teleport from Glory Hall to Battle Square -->
GoToTag("teleporterOS"); </waypoint>
<!-- At Horse Vendor Lawdon (Battle Square), straight path to General Merchant -->
<!-- # 18 --><waypoint x="-20582" z="6186" y="-223"></waypoint>
<!-- # 19 --><waypoint x="-20702" z="6344" y="-217">
GoToTag("generalmerchantOS"); </waypoint>
<!-- At teleporter Maylee (Battle Square), straight path to General Merchant-->
<!-- # 20 --><waypoint x="-20791" z="6210" y="-226" tag="teleporterOS">
GoToTag("generalmerchantOS"); </waypoint>
<!-- At General Merchant Raylinbas (Battle Square) -->
<!-- # 21 --><waypoint x="-20843" z="6306" y="-223" tag="generalmerchantOS">
AtMerchant("Raylinbas");
UpdateToDoList("Raylinbas");
CheckToDoList("Raylinbas");
</waypoint>
</waypoints>
I look forward to the 1-20 file you have, and how I could help or contribute. This forum has given me much, and I don't think I have yet paid it back.
Who is online
Users browsing this forum: Ahrefs [Bot] and 0 guests