How do you make the bot smart enough to know that it needs to do some of the green quests because of the quest chain it will encounter in another level or 2?That's the point of the last part of the discussion, yes. But rather than making one hundred checkpoints, a more dynamic bot would make a simple setting able to skip quests knowing their minimum level and thus difficulty (eliminating checkpoints at all).
it checks the checkpoint by level, not each individual quest. if we had it randomly skipping quest just because your heirloom put you a little higher then you needed for the quest, you would run into issues where it would skip parts of the chain, and just break itself.I think that bot settings to allow dynamic quests skip would be better than making a checkpoint for every quest (because this is how you'd avoid green questing ATM), adding quest chain definitions (without it it's impossible to achieve this). You can even leave checkpoints where they are and add the possibility to add quest chain definitions to the profiles and add the bot options: if there is no quest chain definition and the user chooses not to do the green/grey quests, the bot will try to get quests of the chain in any case, but blacklist them if they're not on the gossip of the NPC.
SO, WHAT DO YOU HAVE IN MIND?
My idea is a quest bot which basically COMPLETES QUESTS ONLY. What I mean is: I have X quests in my quest log, complete them. How? Take the hotspots of every quest, mix them all and then do the tasks. Where to find the data? From an external repository (could be HB website itself).
<If Condition="HasQuest(12345)">
<Objective QuestName="Name" QuestId="12345" Type="KillMob" MobId="12345" KillCount="99" />
</If>
Well then it's just me who's doing green quests till level 30 (Stranglethorn Vale). I used profession buddy to raise mining and herbalism to the same level of the character one's zones, still the bot ignores the level and does green quests, making much lower xp/hour. But it must be just me, right?
A good feature would be to drop XML profiles at all, and switch to a LUA based profile making. LUA is better at data structures, its better and processing stuff. Better at beeing used as a markup language than XML itself, plus the processing and custumization. And easier to edit, use.
But i guess I shouldnt feed the trolls, since they are already pumped up with too much caffeine and will flame you when you suggest new features that dig deeper than their little brains can grasp.
Not exactly what world you live in where Lua is a markup language. (Especially given that XML is *only* a markup language [eXtensible Markup Language])
Lua will be no faster, and will only cause more issues since we'd have to write an entire parser to deal with it (thats assuming we come up with some form of structured table-system for profile writers to store things, which is just more confusing than what we have now)
If you're going to give reasons to switch to another language, please state *actual* reasons. (And not ones that are blatantly false, like Lua being a better "markup" language)
The only alternative to XML I see here is JSON, which is as fast as XML (there are studies that demonstrate it's even faster to be parsed, and there are already libraries and maybe even C# ones (JavaScriptParser thing, should be there in .NET 3.5 too)), but more human friendly (XML is known not to be).
<mynotes><dinner><![CDATA[Today I'm going to have dinner with my wife]]></dinner></mynotes>
{"dinner": "Today I'm going to have dinner with my wife"}
<While Condition="Me.Class == WoWClass.Hunter && !IsQuestCompleted(25139)">
<If Condition="!HasSpell(56641)">
<CustomBehavior File="ForceSetVendor" DoTrain="True" />
</If>
<CustomBehavior File="WaitTimer" WaitTime="1000"/>
<CustomBehavior File="CastSpellOn" QuestId="25139" NumOfTimes="5" SpellId="56641" MobId="44820" X="-579.9462" Y="-4240.132" Z="38.17958" />
<TurnIn QuestName="Steady Shot" QuestId="25139" TurnInName="Karranisha" TurnInId="39214" />
</While>
{ "While": {
"Condition": "Me.Class == WoWClass.Hunter && !IsQuestCompleted(25139)",
"sub-elements": [
{ "If": { "Condition": "!HasSpell(56641)",
"sub-elements": [
{ "CustomBehavior": {"File": "ForceSetVendor", "DoTrain": true } }
]
}
},
{ "CustomBehavior": { "File": "WaitTimer", "WaitTime": 1000 } },
{ "CustomBehavior": { "File": "CastSpellOn", "QuestId": 25139, "NumOfTimes": 5, "SpellId": 56641, "MobId": 44820, "X": -579.9462, "Y": -4240.132, "Z": 38.17958} },
{ "TurnIn": { "QuestName": "Steady Shot", "QuestId": 25139, "TurnInName": "Karranisha", "TurnInId": 39214 } }
]
}
}