jim87
New Member
- Joined
- Aug 26, 2011
- Messages
- 445
- Reaction score
- 7
Hello!
I don't have either the time nor the C# knowledge (even if I know some OO programming languages) to do this alone, nor I think it's something a single person can do alone.
FIRST OF ALL: do we need a new quest bot?
My answer is yes: I've played around the current one bundled with HB and I don't feel it's *human-like*, it does several things "the wrong way", and I think it's because several people worked on patching it rather than building it from grounds up.
I'd enumerate several bugs, from the "wait random seconds to select what to do" (i.e. bad scripting - several CPU cycles to take the choice) to the "do this quest but not the other one in the same area" to the "leave that quest alone and complete it 10 levels beyond". While part of these bugs are profile-related, I come with an idea that could revolution the entire concept of the behavior.
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).
Some data concept
This is just an example on how the DATA part should be filled. All the things a profiler should do would be to include the quest in their profile:
The bot should take care of the rest of the things.
Another more articulated quest "manifest":
This quest is as follows: first you need to explore a zone, then you have to kill a mob. Priority list should take care of this, avoiding killing the NPC before having discovered the place. The quest ends to the "overlay" question mark.
Other quest attributes may be "beforeQuestInChain" which should say which quest you need to complete before unlocking this one, so that the quest profiler could just fill his profile with the last-in-chain quest, leaving the bot the work of finding the best "quest path", maybe saving the state of previously-done quests (or searching for a "complete quests" array in the game, which I wouldn't be surprised to see in its memory).
It's not an easy task, I know, but it should be more "human intelligent". I've seen too many times the bot accepting only some quests leaving others behind, just to take them after 2-3 completed quests. In this way, proximity is the main rule: I've just got a quest, what is the nearest hotspot (note: hotspots are also quest givers)? Go there.
What do you think about?
I don't have either the time nor the C# knowledge (even if I know some OO programming languages) to do this alone, nor I think it's something a single person can do alone.
FIRST OF ALL: do we need a new quest bot?
My answer is yes: I've played around the current one bundled with HB and I don't feel it's *human-like*, it does several things "the wrong way", and I think it's because several people worked on patching it rather than building it from grounds up.
I'd enumerate several bugs, from the "wait random seconds to select what to do" (i.e. bad scripting - several CPU cycles to take the choice) to the "do this quest but not the other one in the same area" to the "leave that quest alone and complete it 10 levels beyond". While part of these bugs are profile-related, I come with an idea that could revolution the entire concept of the behavior.
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).
Some data concept
Code:
[item id='57677' droppedByNPC='45654' /]
[npc id='45654']
[hotSpot x="-110.9" y="4567.0" z="0" radius="50.0" /]
[hotSpot x="-160.9" y="4167.0" z="0" radius="20.0" /]
[/npc]
[!-- objective: use item 57677 near NPCs 7894 and 7895
who don't have aura ID 4567 --]
[quest id="1234" startFrom="npc" npcFromID="4321" endTo="npc" npcEndID="4321"]
[objective type="useItem" itemID='57677' times='2' nearNPC='7894, 7895' withAura='!4567' /]
[/quest]
This is just an example on how the DATA part should be filled. All the things a profiler should do would be to include the quest in their profile:
Code:
[quest id="1234" /]
Another more articulated quest "manifest":
Code:
[quest id="xyz" startFrom="item" itemFromID="987654" endTo="overlay"]
[objective type="explore" exploreID="6549874" priority="0" /]
[objective type="killNPC" npcID="556789" priority="1" /]
[/quest]
This quest is as follows: first you need to explore a zone, then you have to kill a mob. Priority list should take care of this, avoiding killing the NPC before having discovered the place. The quest ends to the "overlay" question mark.
Other quest attributes may be "beforeQuestInChain" which should say which quest you need to complete before unlocking this one, so that the quest profiler could just fill his profile with the last-in-chain quest, leaving the bot the work of finding the best "quest path", maybe saving the state of previously-done quests (or searching for a "complete quests" array in the game, which I wouldn't be surprised to see in its memory).
It's not an easy task, I know, but it should be more "human intelligent". I've seen too many times the bot accepting only some quests leaving others behind, just to take them after 2-3 completed quests. In this way, proximity is the main rule: I've just got a quest, what is the nearest hotspot (note: hotspots are also quest givers)? Go there.
What do you think about?