Leveling project - looking for some ppl

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Message
Author
noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#21 Post by noobbotter » Tue Feb 02, 2016 8:22 am

After a lot of work making a script that will help me mark nodes, NPCs, Mobs, and Objects, I'm realizing there's a lot of work left to do... and that's even before being able to make waypoints. Not only would I need to create proper functions to read all the node information into a table, but we would have to map out each zone. Then after that, we would also need to create a whole new version of createpath to make paths utilizing the mappings and custom userfunctions. And after all that, it would only help up as far as we start the main questline in Dalanis, at which point mapping out locations of NPCs who move around based on where you are in the questline would be quite difficult.

So to sum up, it may be easier to just use our normal way of creating waypoints and start knocking it out.

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#22 Post by noobbotter » Tue Feb 02, 2016 11:34 am

So, I began thinking about how to manage keeping the bags clean and how to manage leveling up skills. I'm creating a custom userfunction that can by used specifically with this series of quests we're going to work on.

For the bag cleanup, I have started creating a custom function that will first, sell anything it can sell (I need to work on, or acquire a script that will keep the best gear equipped... I think someone was working on that previously). Anything for the ItemShop bag will be moved to the item shop, and then it will drop other stuff. Things it won't drop include items in the "Other" category which tend to include things such as packages, gift bags, guild runes, Amulets of Life, etc..., Food items, potions (it will sell potions more than 10 levels below current level), and household items (such as the storage chest). I'll be testing this further as I go along.

For player skills, I am making a modified version of the levelupSkills1To10 function, (obviously will give it a new name, maybe 1to50?) so that the bot will continue to level up certain skills along the way. I think we need to come up with a consensus on what skills should be leveled up to level 50. Also, further down the road, we'll have to decide on an even more limited set of skills to level up higher (95?) for each of the classes. For now, though, we can work on what skills to take to 50. For example, for Rogue, I'm thinking of these: "ROGUE_SHADOWSTAB", "ROGUE_LOW_BLOW", "ROGUE_WOUND_ATTACK", "ROGUE_DAGGER_MASTERY". That still leaves plenty of room for the bot owner to utilize left over skill points on his own.

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

Re: Leveling project - looking for some ppl

#23 Post by lisa » Tue Feb 02, 2016 7:19 pm

The points for map pathing has been in discussion for a long time now.
Here is a simple example of it working.
http://www.solarstrike.net/phpBB3/viewt ... nks#p61745

End of the day though it means every map you intend to use this system on needs to be gone over with a fine tooth comb because you can't just walk around 100% of the map, there are fences, rocks, buildings and all sorts of stuff in the way, also cliffs which you can go down but not go up so that is 1 way pathing.

So to do what you want would take many many many hours of work to make each map work 100% of the time. Of course once a map is done then it is done, might need adjusting when they do events and put up xmas trees and such but otherwise it would be done. That would need doing on every single map though, which is pretty time consuming.
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

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#24 Post by noobbotter » Tue Feb 02, 2016 7:45 pm

Yeah, I've seen some of the previous topics on zone mapping. What I was doing with mapping, however, was a little different than 100% map coverage. Mine was going to include any areas needed in order to complete quests. So for instance, in howling mountains, I would map out a portion of area to the left of the colony for mushrooms. Then pioneers colony, then a wolf area, etc.

Got the mapping process pretty good with a createpath like script. But now need to build correct script to read it in and use the info.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Leveling project - looking for some ppl

#25 Post by beanybabe » Wed Feb 03, 2016 4:22 am

On you bag cleanup you might think about making it into a few functions. Here are some of my ideas I have been working on a bit.

One for cleanup of trash like runes under 4, ud gear under the current fusion stone making level, avoiding any items like the blue jewelry in the 95 zone. I would also use the disenchant on any items with low gold value and donate the low mats to guild if bag space low.

Another to handle quest dailys that might be sellable.

One for crafting mats wood ore herb and drops in mini and production runes. This one would need several names to receive the mats in mail or one name depending on needs. Some mats can just be donated to free bag space.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Leveling project - looking for some ppl

#26 Post by beanybabe » Wed Feb 03, 2016 4:31 am

on mapping I have been working on this idea.

create a table of the waypoints (x,y,p,x,y,p) the p is a pointer for going to the wp
I just make p for any wp that is near a npc.

Then create a sort of normal wp connecting things but its not actually used to move just to locate were to start if you crash. Each the wp near the vendors are given the p for for there coordinate if the bot crashes it can then follow the path to the nearest p and resume.

This allows for creating of complicated wp that can run around and make decisions if needed. This is only a working idea so far I have still to create a path using it.

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#27 Post by noobbotter » Wed Feb 03, 2016 1:00 pm

Well, I managed to figure it out. I was having trouble trying to figure out how I would store table data into a file, and then retrieve it later back into table data format. I found a function that will do that, so now I can create a table file that consists of the node's x & z coordinates, what other nodes it is connected to, what objects are nearby (such as plants to gather for quests), what NPCs are nearby (we can use this for both quest NPCs and vendor NPCs, or whatever else... it just store the NPC ID), and what mobs are located at the node. The table data would look like this:

very short example:

Code: Select all

local obj1 = {
	[1] = {
		["MOBs"] = {
		};
		["x"] = 7514;
		["z"] = 2448;
		["Objects"] = {
		};
		["NPCs"] = {
		};
		["Links"] = {
			[1] = 2;
			[2] = 3;
		};
	};
	[2] = {
		["MOBs"] = {
		};
		["x"] = -3644;
		["z"] = 642;
		["Objects"] = {
		};
		["NPCs"] = {
			[1] = 666555;
		};
		["Links"] = {
			[1] = 1;
		};
	};
	[3] = {
		["MOBs"] = {
		};
		["x"] = -696;
		["z"] = 4098;
		["Objects"] = {
		};
		["NPCs"] = {
		};
		["Links"] = {
			[1] = 1;
		};
	};
Now that I have a way of reading the saved mapfile back into a table, I can now use the data for doing quests and using the Djikstra Algorithm to find it's way where it needs to go.

What I need now is a custom createpaths script. I need one that will create the complete path in the <onload> section instead of using waypoints. Some of the menu options I'm looking for it to have include:

-- target merchant, repair and buy stuff
-- target NPC and open dialog waypoint
-- Insert Accept/Complete/ChoiceOption 'ByName' selection.
-- add Custom Code to last WP.
-- target an object and action it.
-- change waypoint type.
-- Save waypoint file.

I have already been writing some custom userfunctions, some of them based on BillDCat's custom questhelper functions. For instance, still have yet to test, but I wrote a function such as that uses only the questId as an argument and it will figure out what NPC it needs to talk to in order to accept that quest, and will automatically target the NPC to open the dialog with it, then accept the quest. I have a similar function for completing a quest. now with my mapping and waypointless navigation, I could possibly add in the function to goTo the NPC within the AcceptQuest() function.

With all that, all that would be needed inside an onload to do some quests would be something like this:

sample of what Howling Mountains Quest series would start out looking like:

Code: Select all

SureAcceptQuest(420660) -- Report In
SureCompleteQuest(420660) -- Report In
SureAcceptQuest(420661) -- Claiming Weapons
SureCompleteQuest(420661) -- Claiming Weapons
SureAcceptQuest(420662) -- Claiming Armor
SureCompleteQuest(420662) -- Claiming Armor
SureAcceptQuest(420663) -- Claim Your Potions
SureCompleteQuest(420663) -- Claim Your Potions
SureAcceptQuest(420665) -- Complete Preparations
SureCompleteQuest(420665) -- Complete Preparations
SureAcceptQuest(420666) -- Testing Your Skills
SureAcceptQuest(420712) -- Posting Quests
KillForQuest(420666)
	--This would look at the quest info, figure out what it needs to kill, look at the map info, and go to where those mobs are and kill until quest is complete
	--I could possibly use the same function to look at if any collecting of drops is needed for the quest and un accordingly.
SureCompleteQuest(420712) -- Posting Quests
SureCompleteQuest(420666) -- Testing Your Skills
So... who can help me write a custom createpaths script? I was looking at the current one and it's very confusing to me so I'm not sure how I would edit it do what I need. Even without a createpaths program, it should be fairly easy to create quest waypoint files with this. More work to do tonight on it though.

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#28 Post by noobbotter » Fri Feb 05, 2016 8:12 am

I've been able to successfully run the first few quests in howling mountains using my map table for auto navigation. I
Next, I am going to start building custom functions for various types of quests so that when using a createpath-type of script, after accepting a quest, I'll be able to use a sub menu to select the type of quest. Some of the types will be kill mob, collect items, collect from mobs, capture mob, and talk to NPC. After I build custom functions for those, I'll add others as I think of them.

After testing, I added functionality to save where you leave off (resume feature). I realized that having no waypoints would make this difficult so I'm making it where all questline actions will be indexed into a table. I have the resume feature working properly, and figuring out how to store and use functions within tables was a challenge.

My mapping function is working well. I can add waypoints, link current to previous, link current to specific waypoints, and I also have an option that will help you determine where certain nodes are at. When you select that option, it will make the camera face the direction of nearby waypoints and give the option of adding it as a neighbor node. Also any time a node is marked as a neighbor, it links those nodes in both directions. I will be adding onto this function to allow loading of previous maps and continue building onto it, so that you don't have to map the whole map in one session. Also, if you forget to map a certain area, you can add it in later.

Hopefully it won't be long and I'll be able to share everything. I just want to be sure that everything in it is ready prior to building out questline.

Buh
Posts: 45
Joined: Thu Dec 10, 2015 12:39 am

Re: Leveling project - looking for some ppl

#29 Post by Buh » Fri Feb 05, 2016 1:39 pm

Ok that makes me sad at now. I cannot handle it all :D

ehm yes. i think its a too large project. But if someone want to do, he/she can make scripts for leveling and just put it here into this thread. (if you really do, write here before what you do, so everyone knows it and can make other zones)

greetings

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

Re: Leveling project - looking for some ppl

#30 Post by BillDoorNZ » Sun Mar 06, 2016 8:04 pm

I started doing something similar to this a few years ago (when I was still playing). After fiddling around for a while I came to the conclusion that starting small and scaling out, while workable, ultimately will take a lot longer and that you really need to approach it as a project (yes, I work as a software dev/architect) and figure out what subsystems etc that you need.

This allows you to break the project down into achievable components and keep some momentum (and therefore motivation).

Movement

Movement from one place to another was easy enough to do, I just settled on a multi-linked-list type node based system where you create a node (x,y,z coords) to represent a point on the map, and then specify which nodes link to which other nodes on the map. So, node A might link to node B, and vice versa, or node A might link to node B, but node B not to node A (i.e. the character can run down a hill from node A to node B, but its too steep to go back up the other way - unless you are willing to flyhack/teleport it). Each connection between nodes also needs some sort of type (e.g. walking / teleporter). This allowed the bot to distinguish between walking from node A to B, vs using a Snoop to teleport from node A to B.

I also added the concept of 'distance' for each connections so I could add an A-Star algorithm to determine the shortest route from node A to node Z (which factored in teleporters, and also if the current character that was being run could use said teleporter).

NPC's

After this, I needed to record all NPC's (of relevance) at each node, and the coordinates thereof (you cant use a teleporter if you cant target the right npc!!) and recorded some data about them (e.g. an npc might open a store for you, allow you to teleport, give you buffs, open the auction house, mailbox, chests etc etc).

This leads to figuring out generic functions for interacting with each type of npc, selecting correct teleport locations (this was before Rock's fandangled teleport functions) and the like.

Quests
Once this was done, I then went on to build some functions to interact with quest givers. And from there some functions to read the quest book and determine which quests are the relevant to the current character - I seem to remember that the quest book could be queried across zones to find information about each quest. Each quest also told you who the quest giver is, which meant that the code could look through all the NPC's that had been recorded and locate the quest giver, from there identifying the closest node and then plot a route to that node from the bots current location.

The bot would then run to said location, pick up the quest and then look in the list of quest waypoint files (that I manually recorded...boy was that time consuming), load the quest file and execute it. Each quest file used some more standard functions I had written so all quest waypoint files were build pretty much the same way. Once the quest was complete, it should then have picked up the quest reward and with sold it for more money, or equipped it. I stopped playing at this point, but the next step was to get it to reliably then get the next appropriate quest etc and rinse and repeat - I'd also added some stuff for quest-lines so the bot wouldnt try to pick up a quest it didnt have access to because one of the previous pre-requisite quests needed to be done first.

All in all, it was a lot of fun and hard work :)

I spent a lot of time writing my original small-scale code and then throwing it all out and rebuilding it more generically and modularly. Building the quests the way I did made things a LOT easier to maintain and change. I had a lot of other stuff going on with it (I actually played from work, so had to have the bot run in the background and had a TCP/IP connection from it to a .NET app I'd written that I could send commands etc from) that all added to the complexity and timeframes. I spent a lot of time writing a visualiser for the nodes that showed where the bot was in relation to the nodes etc and let me do all sorts of other things (like letting me run random bits of code to sell all the crap you get from the daily where you kill that big rock elemental after defeating waves of other critters first...cant remember the location / name sorry!).

I never got around to getting it to handle dying better, or running instances effectively.


I think I uploaded a lot of that code a while ago.

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

Re: Leveling project - looking for some ppl

#31 Post by BillDoorNZ » Sun Mar 06, 2016 8:05 pm

noobbotter wrote:I've been able to successfully run the first few quests in howling mountains using my map table for auto navigation. I
Next, I am going to start building custom functions for various types of quests so that when using a createpath-type of script, after accepting a quest, I'll be able to use a sub menu to select the type of quest. Some of the types will be kill mob, collect items, collect from mobs, capture mob, and talk to NPC. After I build custom functions for those, I'll add others as I think of them.

After testing, I added functionality to save where you leave off (resume feature). I realized that having no waypoints would make this difficult so I'm making it where all questline actions will be indexed into a table. I have the resume feature working properly, and figuring out how to store and use functions within tables was a challenge.

My mapping function is working well. I can add waypoints, link current to previous, link current to specific waypoints, and I also have an option that will help you determine where certain nodes are at. When you select that option, it will make the camera face the direction of nearby waypoints and give the option of adding it as a neighbor node. Also any time a node is marked as a neighbor, it links those nodes in both directions. I will be adding onto this function to allow loading of previous maps and continue building onto it, so that you don't have to map the whole map in one session. Also, if you forget to map a certain area, you can add it in later.

Hopefully it won't be long and I'll be able to share everything. I just want to be sure that everything in it is ready prior to building out questline.
You can get the type of the quest from some of the quest helper functions.

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

Re: Leveling project - looking for some ppl

#32 Post by BillDoorNZ » Sun Mar 06, 2016 8:09 pm

Ah, here they are:

viewtopic.php?f=27&t=4067

noobbotter
Posts: 527
Joined: Fri Aug 31, 2012 1:15 pm

Re: Leveling project - looking for some ppl

#33 Post by noobbotter » Mon Mar 07, 2016 8:36 am

That's interesting BillDoorNZ... The other month I was working on this project some and did much of what it sounds like you did. I had created a mapping function to map out where all the NPCs, Objects, and mobs are. That map would be saved as a file. Then I made a new script for creating "waypoints".My waypoint creation system actually took all the waypoints you create and put them into a table, allowing for the whole series to be run in the onload section. The created waypoint file would load the map data previously saved so when it got a particular quest, it simply looked in the map table at where those mobs were at, and went to them to kill them. Then would look in quest data for who to turn in the quest to, look it up in the map table, then go and turn it in.

It was a lot of work and I learned a lot along the way, but it was taking way too much time and I still had a long ways to go, so I kind of gave up on it.

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

Re: Leveling project - looking for some ppl

#34 Post by BillDoorNZ » Wed Mar 16, 2016 1:51 pm

noobbotter wrote:That's interesting BillDoorNZ... The other month I was working on this project some and did much of what it sounds like you did. I had created a mapping function to map out where all the NPCs, Objects, and mobs are. That map would be saved as a file. Then I made a new script for creating "waypoints".My waypoint creation system actually took all the waypoints you create and put them into a table, allowing for the whole series to be run in the onload section. The created waypoint file would load the map data previously saved so when it got a particular quest, it simply looked in the map table at where those mobs were at, and went to them to kill them. Then would look in quest data for who to turn in the quest to, look it up in the map table, then go and turn it in.

It was a lot of work and I learned a lot along the way, but it was taking way too much time and I still had a long ways to go, so I kind of gave up on it.
Yeah, its a LOT of work, but quite fun/rewarding at the same time....the real time of course, is spent in building the quest specific routing stuff and then debugging it :(

And then of course, GW2 came out and I was off playing that and in WvW for days at a time and lost motivation to complete it all.

User avatar
beanybabe
Posts: 647
Joined: Wed Mar 06, 2013 1:27 am

Re: Leveling project - looking for some ppl

#35 Post by beanybabe » Thu Jul 07, 2016 12:09 pm

The mob difficulty is a good thing to consider. I know when I make normal wp I make the nodes to avoid and round around some mobs. I often thought if there was a way to load all the mobs into some matrix and plot the path that might be interesting. The problem is wondering mobs. I handle this my self by standing and watching them wonder as I lay out a path. My solution was to cross the wonder path with my path at an angle to my attack distance would catch the mob as it wondered. I do not plot my path directly on same path as mob moves.
I try to keep my char moving so it spends some time out of aggro range of mobs between each mob if possible in case of server lag and to give some hp mp regain.

I like the idea of travel in zones but some chars are just to weak to move thru some areas and not die. I have created lots of wp for specific mobs and often thought of making a travel wp to each of those. Many were created before I started using my method of wp I do now so they would need to be redone.

Post Reply

Who is online

Users browsing this forum: No registered users and 29 guests