Goal:
Create a quest where the bot simply goes to an appointed location and kills a specified number of pre-identified mobs.
1. Can a quest profile be created that does not utilize an actual in-game quest?
2. If #1 is possible, how would I "Start" such a quest?
3. If #1 is possible, how would I "Complete" such a quest?
===============
If anyone has a script sample that does this, or something similar, I'd really appreciate seeing it.
Thank you in advance!
Not currently.
I assume something like beastmen quests but this isnt currwntly setup for these.
The old task manager did something similar but isnt up to date atm
Thank you, Sebbs; response much appreciated.
Obviously I'm still looking for a way to gather specific items from mobs. May have to see if other bots offer some remedy.
Just go find a quest you havnt done yet.
Make a quest that has a start but no complete.
Start..
Kill if less that x item.
Nav to position if >= x item.
Well, Sebbs, I'm at a loss. I've tried variants of the following code, with varied level/classes of characters. They will move to the quest-giving NPC, interact, accept the quest; however, they immediately teleport to their respective zones to grind or do their hunt log (each of which is deselected in Settings or Quest Options. At this point I don't know whether there's something wrong with my script or Minion is hosed (for not being able to turn off grind and hunt log). I suspect it's my script, but there are too many variables for my limited knowledge. Hope someone can help.
PHP Code:
local obj1 = {
["names"] = {
};
["quests"] = {
[2206] = {
["level"] = 30;
["name"] = "A Journey to Remember";
["prereq"] = false;
["steps"] = {
[1] = {
["delay"] = 0;
["id"] = 1016143;
["itemreward"] = false;
["mapid"] = 128;
["meshname"] = "Limsa (Upper)";
["pos"] = {
["x"] = 13.962239265442;
["y"] = 40.000282287598;
["z"] = -2.0131545066833;
};
["type"] = "start";
};
[2] = {
["delay"] = 0;
["id"] = 1016143;
["index"] = 0;
["itemreward"] = false;
["mapid"] = 128;
["meshname"] = "Limsa (Upper)";
["pos"] = {
["x"] = 13.962239265442;
["y"] = 40.000282287598;
["z"] = -2.0131545066833;
};
["type"] = "interact";
};
[3] = {
["delay"] = 0;
["id"] = 1016143;
["index"] = 0;
["itemreward"] = false;
["mapid"] = 128;
["meshname"] = "Limsa (Upper)";
["pos"] = {
["x"] = 7.7857713699341;
["y"] = 40.000392913818;
["z"] = 14.795091629028;
};
["questid"] = 2206;
["type"] = "accept";
};
[4] = {
["delay"] = 0;
["id"] = 417;
["index"] = 0;
["itemreward"] = false;
["killcount"] = 10;
["mapid"] = 134;
["meshname"] = "Middle La Noscea";
["pos"] = {
["x"] = 7.256733417511;
["y"] = 46.768711090088;
["z"] = 77.889770507813;
};
["type"] = "kill";
};
[5] = {
["delay"] = 0;
["id"] = 1016143;
["itemreward"] = false;
["itemrewardslot"] = 0;
["mapid"] = 128;
["meshname"] = "Limsa (Upper)";
["pos"] = {
["x"] = 16.83137512207;
["y"] = 40.200004577637;
["z"] = -0.26901340484619;
};
["type"] = "complete";
};
};
};
};
["vars"] = {
};
}
return obj1
index is wrong .
index = 0 means start quest.
index = 255 = complete stage of quest.
step 1 = index 1 etc etc
what is the accept stage?
Code:
[2206] = {
["level"] = 30;
["name"] = "A Journey to Remember";
["prereq"] = false;
["steps"] = {
[1] = {
["delay"] = 0;
["id"] = 1016143;
["itemreward"] = false;
["mapid"] = 128;
["meshname"] = "Limsa (Upper)";
["pos"] = {
["x"] = 15.800399780273;
["y"] = 40.200004577637;
["z"] = -0.83973133563995;
};
["type"] = "start";
};
[2] = {
["delay"] = 0;
["id"] = 1016144;
["index"] = 1;
["itemreward"] = false;
["mapid"] = 137;
["meshname"] = "Eastern La Noscea";
["pos"] = {
["x"] = 503.23568725586;
["y"] = 16.529745101929;
["z"] = 454.83996582031;
};
["type"] = "interact";
};
};
};
if your doing a different quest / kill stage .. that entire index will be index = 1 because the original quest isnt actually progressing.
Thank you Sebbs. I made your recommended corrections, tried a number of quest-giving NPCs, and got it to work -- at least it will go to specified areas and kill things -- KIND OF. It's terribly wonky and bot-like, and I don't trust it.
For the time being I'm combing through my recipe database, identifying all kill drops and associated beasts, and will soon begin creating markers for them. Names, coordinates/zones for the markers will also go into a table and I'll at least be able to launch my bot to the appropriate targets, though it will remain a largely manual process. No great loss, as I've now gathered from every normal and unspoiled node (ARR and HW) in bot mode I've become much less confident about running unattended -- waaaaaaaaaaaaaaaaaay too many nav-path problems where the bot looks too much like a bot.
Not that anyone cares, but below is a graphic representation of where I'm headed with this little project. End goal is to auto-generate recipe-based scripts--perfect, fully customized LUA scripts in seconds for one or a dozen or more recipes at one time.
Code:
|---[tblMarkers]
|
[Quest Report in LUA *info format] |---[tblDrops]
| |
| |---[tblPurchasables]
|<---[Query]<---[tblRecipes]----|
| |---[tblCompounds]
| |
[Gather Report in LUA *lua format] |---[tblGathers]
|
|---[tblGatherNodes]
At present, I'm using the tblGathers and tblGatherNodes with MS Word's Mail Merge function to generate gathering profiles. Still infinitely faster than writing/editing scripts by hand, and the data-driven approach makes rapid customization a snap. But the real beauty is every script is flawless; no syntax issues and no typo issues with item names.
Oops -- forgot to mention Unspoiled nodes -- unique gathering profiles for unspoileds in seconds. Merely check off what's to be collected and when. Will ultimately mesh into the diagram above. Much easier with a database to ensure there are no timing issues. About 95% done with this one.