Good points Roboethicist. I agree, focus on single class, assuming appropriate gear for quest levels, skipping all dailies and xp pots. One thing I was thinking about last night was that early on, between levels 1 - 10 or possibly 1 - 20, kills may have an affect on your xp and how early you level so I would recommend that for at least the lower levels, we ensure that the quests alone will give enough to attain the desired level. For example, if at level 4 and there's a quest to kill mobs and gather 5 items, if it takes killing 10 mobs to get the 5 items, you might hit level up earlier than someone else running the script might. At higher levels, kill xp probably won't have much affect.
So, what is out next step? I was actually thinking about how convenient it would be to build out travel formulas for the zones but not sure how practical it would be, especially if we program this appropriately to drop/sell items frequently enough. Regardless, I was looking at how Rock5 built the GotoGuild function using the Dijkstra Algorithm. It would be really cool to be able to use this same formula to map out the zone so the bot could easily find it's way from wherever it is at, to wherever it needs to go (for instance, bags are full, need to sell items, or buy pots or arrows, it can find it's own way to appropriate vendor, get what it needs, and go back to where it was). In fact, was thinking the tables containing nodes could contain NPCs as well as Mob information. Imagine if we mapped out all the zones completely with all travel paths, NPCs, and mobs information. You pick up a quest to kill x MOB, then use the function to go to where that mob is based on the tables. when complete, it go to the quest turn in NPC based on the NPC information in the table. Now I know that later on in upper level main questlines, NPC tend to move around a lot so that wouldn't work there, but in some of the lower areas it could be handy.
For instance, based solely on information and questing path in pioneers colony, the table might look something like this:
Code: Select all
local Nodes = {
[1]={ Zone=1 , x=-4069 z=-8247, Links={[1]={Num=2},[2]={Num=3},}},
[2]={ Zone=1 , x=-4045 z=-8278, Links={[1]={Num=1},[2]={Num=3},}, NPCs={[1]={NPCID = 110484 , NPCNAME = "Laif Cindai"},}},
[3]={ Zone=1 , x=-3770 z=-8498, Links={[1]={Num=2},[2]={Num=4},}},
[4]={ Zone=1 , x=-3701 z=-8673, Links={[1]={Num=3},[2]={Num=5},[3]={Num=7},[4]={Num=8},[5]={Num=20},}, NPCs={[1]={NPCID = 110482 , NPCNAME = "Leighton"},}},
[5]={ Zone=1 , x=-3793 z=-8539, Links={[1]={Num=4},[2]={Num=6},}, NPCs={[1]={NPCID = 110658 , NPCNAME = "Mallor"},}},
[6]={ Zone=1 , x=-3785 z=-8562, Links={[1]={Num=5},[2]={Num=7},}, NPCs={[1]={NPCID = 110657 , NPCNAME = "Shamp"},}},
[7]={ Zone=1 , x=-3778 z=-8640, Links={[1]={Num=6},[2]={Num=4},}, NPCs={[1]={NPCID = 110489 , NPCNAME = "Reideen"},}},
[8]={ Zone=1 , x=-3696 z=-8528, Links={[1]={Num=4},[2]={Num=9},}, NPCs={[1]={NPCID = 110583 , NPCNAME = "Pioneers Colony Bulletin Board"},}},
[9]={ Zone=1 , x=-3668 z=-8608, Links={[1]={Num=8},[2]={Num=10},}},
[10]={ Zone=1 , x=-3466 z=-8684, Links={[1]={Num=9},[2]={Num=11},[3]={Num=17},}},
[11]={ Zone=1 , x=-3068 z=-8846, Links={[1]={Num=10},[2]={Num=12},[3]={Num=17},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBDifficulty = "Normal"},}},
[12]={ Zone=1 , x=-3021 z=-8993, Links={[1]={Num=11},[2]={Num=13},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBLevel = 1, MOBDifficulty = "Normal"},}},
[13]={ Zone=1 , x=-3034 z=-9131, Links={[1]={Num=12},[2]={Num=14},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBLevel = 1, MOBDifficulty = "Normal"},}},
[14]={ Zone=1 , x=-3045 z=-9270, Links={[1]={Num=13},[2]={Num=15},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBLevel = 1, MOBDifficulty = "Normal"},}},
[15]={ Zone=1 , x=-3204 z=-9059, Links={[1]={Num=14},[2]={Num=16},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBLevel = 1, MOBDifficulty = "Normal"},}},
[16]={ Zone=1 , x=-3166 z=-8983, Links={[1]={Num=15},[2]={Num=17},}, MOBs={[1]={MOBID = 100052, MOBName = "Fungus", MOBLevel = 1, MOBDifficulty = "Normal"},}},
[17]={ Zone=1 , x=-3224 z=-8832, Links={[1]={Num=16},[2]={Num=11},[3]={Num=18},}},
[18]={ Zone=1 , x=-3313 z=-8755, Links={[1]={Num=17},[2]={Num=19},}},
[19]={ Zone=1 , x=-3429 z=-8678, Links={[1]={Num=18},[2]={Num=20},}},
[20]={ Zone=1 , x=-3535 z=-8695, Links={[1]={Num=19},[2]={Num=4},}},
[21]={ Zone=1 , x=-3727 z=-8678, Links={[1]={Num=20},[2]={Num=22},}},
[22]={ Zone=1 , x=-3752 z=-8717, Links={[1]={Num=21},[2]={Num=23},}, NPCs={[1]={NPCID = 110490 , NPCNAME = "Port"},}},
[23]={ Zone=1 , x=-3695 z=-8666, Links={[1]={Num=22},[2]={Num=24},}},
[24]={ Zone=1 , x=-3667 z=-8712, Links={[1]={Num=23},[2]={Num=25},[3]={Num=41},}, NPCs={[1]={NPCID = 110073 , NPCNAME = "Shikha"},}},
[25]={ Zone=1 , x=-3471 z=-8685, Links={[1]={Num=24},[2]={Num=26},}},
[26]={ Zone=1 , x=-3286 z=-8774, Links={[1]={Num=25},[2]={Num=27},}},
[27]={ Zone=1 , x=-3122 z=-8878, Links={[1]={Num=26},[2]={Num=28},}},
[28]={ Zone=1 , x=-2835 z=-8996, Links={[1]={Num=27},[2]={Num=29},}},
[29]={ Zone=1 , x=-2551 z=-9057, Links={[1]={Num=28},[2]={Num=30},[3]={Num=37},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[30]={ Zone=1 , x=-2403 z=-9111, Links={[1]={Num=29},[2]={Num=31},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[31]={ Zone=1 , x=-2138 z=-9208, Links={[1]={Num=30},[2]={Num=32},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[32]={ Zone=1 , x=-2047 z=-9258, Links={[1]={Num=31},[2]={Num=33},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[33]={ Zone=1 , x=-2043 z=-9335, Links={[1]={Num=32},[2]={Num=34},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[34]={ Zone=1 , x=-2212 z=-9346, Links={[1]={Num=33},[2]={Num=35},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[35]={ Zone=1 , x=-2290 z=-9382, Links={[1]={Num=34},[2]={Num=36},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[36]={ Zone=1 , x=-2307 z=-9180, Links={[1]={Num=35},[2]={Num=37},}, MOBs={[1]={MOBID = 100054, MOBName = "Wolf", MOBLevel = 2, MOBDifficulty = "Normal"},}},
[37]={ Zone=1 , x=-2515 z=-9144, Links={[1]={Num=36},[2]={Num=38},[2]={Num=29},}},
[38]={ Zone=1 , x=-2852 z=-8993, Links={[1]={Num=37},[2]={Num=39},}},
[39]={ Zone=1 , x=-3154 z=-8839, Links={[1]={Num=38},[2]={Num=40},}},
[40]={ Zone=1 , x=-3380 z=-8729, Links={[1]={Num=39},[2]={Num=41},}},
[41]={ Zone=1 , x=-3492 z=-8737, Links={[1]={Num=40},[2]={Num=42},[3]={Num=24},}},
-- l4t_pioneer wp #20 is where i left off
}
You'll notice I added "MOBDifficulty" in the table. My thinking there was that if the bot had to figure out how to get somewehre, while figuring out shortest path, it could take into account player level and possible mob level and difficulty (Normal, Elite, or Boss) while figuring out the path.
Now, this isn't a full mapping of every square foot, but if we map enough of a zone to be able to complete all quests we're running in that zone, and be able to travel between NPCs, MOBS, and zones, it might make programming the quests easier. but it would be a lot of work to map it all out. Also, even though I have all this information, I haven't yet tried to figure out how to use any of it, but I know it can be done.
So what do you think? Do we want to work on mappings or just do straight quests like we typically do? If we just do the quests, we'll have to keep eyes on our bags and and stuff and make sure we provide ample visits to needed NPCs.
Also, curious here, has anyone ever created a waypoint script for completing the Tutorial at the beginning? I've never been able to find one for that and it would be nice to have.