Page 3 of 4

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 15, 2015 12:33 am
by rock5
I just thought of a really obvious solution. When you check the status of a quest on a board you have the exact name and quest group. The problem has been that "Old Friend" matches 2 quest but there is no reason why we couldn't turn the name into a pattern search, as I described before, when you know the name is exact. Eg.

Code: Select all

getQuestStatus("^"..nameOnBoard.."$", groupOnBoard)
That will probably do it. I'll try that.

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 15, 2015 6:25 am
by Bill D Cat
Rock5 wrote:I just thought of a really obvious solution. When you check the status of a quest on a board you have the exact name and quest group. The problem has been that "Old Friend" matches 2 quest but there is no reason why we couldn't turn the name into a pattern search, as I described before, when you know the name is exact.
That might work, but I strictly use the IDs so that my waypoint files are not language dependent. The bot turns in the right quest, but the IGF that checks the quest status is where it is getting converted to a text string and the pattern matching is happening. It is the value returned from the IGF that is causing the bot to lock up on that quest turn-in.
lisa wrote:I had a quick look at your WP, I am guessing you mean in YH_03_Taffrock.xml.

It gets changed to normal and then later gets changed back to travel, maybe the WP where it is meant to change back is being skipped?
That's the release version, not my internal testing version. Here's the section of code I am using now to avoid the elite Gargoylem. When I get to #64 and start harvesting the statue, the elite will notice me and locked on aggro and begin its attack. What I want to happen is to fly away if that attack interrupts the casting, but my character just starts attacking instead.

Code: Select all

	<!-- # 59 --><waypoint x="1209" z="1323" y="2981">
			__WPL:setForcedWaypointType("TRAVEL")
			fly()
	</waypoint>
	<!-- # 60 --><waypoint x="1344" z="1327" y="3417">	</waypoint>
	<!-- # 61 --><waypoint x="1628" z="1342" y="3557">	</waypoint>
	<!-- # 62 --><waypoint x="1885" z="1327" y="3491">	</waypoint>
	<!-- # 63 --><waypoint x="2083" z="1324" y="3237">	</waypoint>
	<!-- # 64 --><waypoint x="1923" z="1279" y="3006" tag="Princess">
			__WPL:setForcedWaypointType("TRAVEL")
			player:target_Object(120527) -- Morfantas Statue
			repeat
				yrest(500)
			until player.Casting == false
	</waypoint>
	<!-- # 65 --><waypoint x="1921" z="1296" y="3050">
			print("Begin pathing to evade Gargoylem")
	</waypoint>
	<!-- # 66 --><waypoint x="2162" z="1314" y="3114">	</waypoint>
	<!-- # 67 --><waypoint x="2423" z="1320" y="3239">	</waypoint>
	<!-- # 68 --><waypoint x="2616" z="1181" y="3292">	</waypoint>
	<!-- # 69 --><waypoint x="2785" z="1203" y="3393">	</waypoint>
	<!-- # 70 --><waypoint x="2904" z="1313" y="3476">
			print("Gargoylem should have dropped aggro and returned to his starting point.")
			if inventory:itemTotalCount(241048) > 0 and getQuestStatus(425081) == "complete" then
				__WPL:setWaypointIndex(__WPL:findWaypointTag("PrincessDone"))
			end
	</waypoint>
	<!-- # 71 --><waypoint x="2652" z="1371" y="3299">	</waypoint>
	<!-- # 72 --><waypoint x="2328" z="1331" y="3159">	</waypoint>
	<!-- # 73 --><waypoint x="1960" z="1293" y="3009">
				__WPL:setWaypointIndex(__WPL:findWaypointTag("Princess"))
	</waypoint>
	<!-- # 74 --><waypoint x="2430" z="1326" y="3074" tag="PrincessDone">	</waypoint>
	<!-- # 75 --><waypoint x="2705" z="1325" y="3074">
			flyoff()
			outside = GoThroughPortal(250)
			if outside == false then
				error("Failed to leave the instance: Taffrock Southern District.", 0)
			end
	</waypoint>

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 15, 2015 6:30 am
by Bill D Cat
rock5 wrote:Thanks for the example waypoint. You just missed accepting the boundary quest from the item.
Which item did I miss? I see the one I get from Saul Leighton's Bag.

Code: Select all

inventory:useItem(241044) -- Seal of Zurhidon
RoMScript("AcceptBorderQuest()") -- Enigmatic Seal

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 15, 2015 2:42 pm
by rock5
Bill D Cat wrote:That might work, but I strictly use the IDs so that my waypoint files are not language dependent. The bot turns in the right quest, but the IGF that checks the quest status is where it is getting converted to a text string and the pattern matching is happening. It is the value returned from the IGF that is causing the bot to lock up on that quest turn-in.
The problem is when you are going through the list of accept or complete quests choosing which to accept/complete, you are not going to have the id because you can't get the id from the board/dialog as far as I know. Using the exact name and group is a 100% reliable way to do it and allows you to use what you actually get from the board. I thought about using the originally supplied id if an id was used but it gets complicated and you still have the same issue if you used the name "Old Friend" instead. Trust me. When I get around to it, it will work.

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 15, 2015 5:45 pm
by Bill D Cat
Would something like this work? Always pass the translated text instead of the ID to the IGF to look for an exact match. Or would this possibly break something else that I'm not aware of?

Code: Select all

function getQuestStatus(_questnameorid,_questgroup)
	-- Used when you need to make 3 way decision, get quest, complete quest or gather quest items.
	if (bot.IgfAddon == false) then
		error(language[1004], 0)	-- Ingamefunctions addon (igf) is not installed
	end
	if type(tonumber(_questnameorid)) == "number" then
		_questnameorid = GetIdName(_questnameorid)
	end
	if type(_questnameorid) == "string" then
		_questnameorid = "\""..NormaliseString(_questnameorid).."\""
	else
		error("Invalid argument used with getQuestStatus(): Expected type 'number' or 'string'")
	end
	if _questgroup then
		if type(tonumber(_questgroup)) == "number" then
			_questgroup = ", " .. _questgroup
		else
			_questgroup = ", \"" .. _questgroup.."\""
		end
	else
		_questgroup = ""
	end

	return RoMScript("igf_questStatus(".._questnameorid.._questgroup..")")
end

Re: Yrvandis Hollows - All Zone Quests

Posted: Thu Jul 16, 2015 2:35 am
by rock5
I think that would break it because if a user uses an id with getQuestStatus to avoid problems with daily and public quests with the same name, then once the id is turned into a name there would be no way for it to know which one was meant.

Sorry It's taking me so long to get to this. I had a couple of things on my plate the last couple of days. It's clear now so I'll get to work on it. Although now I have 3 things on my to-do list. This shares the top of the list along side some needed changes to UMM_TakeMail function. Maybe the UMM_TakeMail might be a bit easier so I might do that first. Shouldn't take long though.

Re: Yrvandis Hollows - All Zone Quests

Posted: Thu Jul 16, 2015 5:22 am
by BlubBlab
Bill D Cat wrote:
Rock5 wrote:I just thought of a really obvious solution. When you check the status of a quest on a board you have the exact name and quest group. The problem has been that "Old Friend" matches 2 quest but there is no reason why we couldn't turn the name into a pattern search, as I described before, when you know the name is exact.
That might work, but I strictly use the IDs so that my waypoint files are not language dependent. The bot turns in the right quest, but the IGF that checks the quest status is where it is getting converted to a text string and the pattern matching is happening. It is the value returned from the IGF that is causing the bot to lock up on that quest turn-in.
lisa wrote:I had a quick look at your WP, I am guessing you mean in YH_03_Taffrock.xml.

It gets changed to normal and then later gets changed back to travel, maybe the WP where it is meant to change back is being skipped?
That's the release version, not my internal testing version. Here's the section of code I am using now to avoid the elite Gargoylem. When I get to #64 and start harvesting the statue, the elite will notice me and locked on aggro and begin its attack. What I want to happen is to fly away if that attack interrupts the casting, but my character just starts attacking instead.

Code: Select all

	<!-- # 59 --><waypoint x="1209" z="1323" y="2981">
			__WPL:setForcedWaypointType("TRAVEL")
			fly()
	</waypoint>
	<!-- # 60 --><waypoint x="1344" z="1327" y="3417">	</waypoint>
	<!-- # 61 --><waypoint x="1628" z="1342" y="3557">	</waypoint>
	<!-- # 62 --><waypoint x="1885" z="1327" y="3491">	</waypoint>
	<!-- # 63 --><waypoint x="2083" z="1324" y="3237">	</waypoint>
	<!-- # 64 --><waypoint x="1923" z="1279" y="3006" tag="Princess">
			__WPL:setForcedWaypointType("TRAVEL")
			player:target_Object(120527) -- Morfantas Statue
			repeat
				yrest(500)
			until player.Casting == false
	</waypoint>
	<!-- # 65 --><waypoint x="1921" z="1296" y="3050">
			print("Begin pathing to evade Gargoylem")
	</waypoint>
	<!-- # 66 --><waypoint x="2162" z="1314" y="3114">	</waypoint>
	<!-- # 67 --><waypoint x="2423" z="1320" y="3239">	</waypoint>
	<!-- # 68 --><waypoint x="2616" z="1181" y="3292">	</waypoint>
	<!-- # 69 --><waypoint x="2785" z="1203" y="3393">	</waypoint>
	<!-- # 70 --><waypoint x="2904" z="1313" y="3476">
			print("Gargoylem should have dropped aggro and returned to his starting point.")
			if inventory:itemTotalCount(241048) > 0 and getQuestStatus(425081) == "complete" then
				__WPL:setWaypointIndex(__WPL:findWaypointTag("PrincessDone"))
			end
	</waypoint>
	<!-- # 71 --><waypoint x="2652" z="1371" y="3299">	</waypoint>
	<!-- # 72 --><waypoint x="2328" z="1331" y="3159">	</waypoint>
	<!-- # 73 --><waypoint x="1960" z="1293" y="3009">
				__WPL:setWaypointIndex(__WPL:findWaypointTag("Princess"))
	</waypoint>
	<!-- # 74 --><waypoint x="2430" z="1326" y="3074" tag="PrincessDone">	</waypoint>
	<!-- # 75 --><waypoint x="2705" z="1325" y="3074">
			flyoff()
			outside = GoThroughPortal(250)
			if outside == false then
				error("Failed to leave the instance: Taffrock Southern District.", 0)
			end
	</waypoint>
I'm not sure but __WPL:setForcedWaypointType("TRAVEL") overwrite the general settingfor the whole waypoint file but nothing means NORMAL in each waypoint maybe it has to do with this using a lua command isn't also the 'normal' way to do something like this mire like type="TRAVEL" in each effected waypoint at least that should work for sure or something is extremely wrong. Anyway I will test it later I must take my whole system apart because google ask constantly me if I'm a bot or not the last 2-3 days something is fishy.

By the way on Elve island in the second part there was a choice text which the bot could resolve

Re: Yrvandis Hollows - All Zone Quests

Posted: Thu Jul 16, 2015 6:05 am
by rock5
Yes, __WPL:setForcedWaypointType("TRAVEL") sets it permanently to travel until it is changed. It is saved in a separate variable though so you can return to the original type by canceling the forced waypoint type like this __WPL:setForcedWaypointType(). You can also force set it to normal __WPL:setForcedWaypointType("NORMAL")If you want to set the type of individual waypoints you can by setting the type in the waypoint element eg.

Code: Select all

<!-- # 73 --><waypoint x="1960" z="1293" y="3009" type="TRAVEL"></waypoint>

Re: Yrvandis Hollows - All Zone Quests

Posted: Thu Jul 16, 2015 6:12 am
by Bill D Cat
rock5 wrote:I think that would break it because if a user uses an id with getQuestStatus to avoid problems with daily and public quests with the same name, then once the id is turned into a name there would be no way for it to know which one was meant.
But isn't that why the _questgroup part of the function is there? To differentiate between a normal quest, daily or public.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sat Jul 18, 2015 2:36 pm
by BlubBlab
Bill D Cat wrote:
Rock5 wrote:I just thought of a really obvious solution. When you check the status of a quest on a board you have the exact name and quest group. The problem has been that "Old Friend" matches 2 quest but there is no reason why we couldn't turn the name into a pattern search, as I described before, when you know the name is exact.
That might work, but I strictly use the IDs so that my waypoint files are not language dependent. The bot turns in the right quest, but the IGF that checks the quest status is where it is getting converted to a text string and the pattern matching is happening. It is the value returned from the IGF that is causing the bot to lock up on that quest turn-in.
lisa wrote:I had a quick look at your WP, I am guessing you mean in YH_03_Taffrock.xml.

It gets changed to normal and then later gets changed back to travel, maybe the WP where it is meant to change back is being skipped?
That's the release version, not my internal testing version. Here's the section of code I am using now to avoid the elite Gargoylem. When I get to #64 and start harvesting the statue, the elite will notice me and locked on aggro and begin its attack. What I want to happen is to fly away if that attack interrupts the casting, but my character just starts attacking instead.

Code: Select all

	<!-- # 59 --><waypoint x="1209" z="1323" y="2981">
			__WPL:setForcedWaypointType("TRAVEL")
			fly()
	</waypoint>
	<!-- # 60 --><waypoint x="1344" z="1327" y="3417">	</waypoint>
	<!-- # 61 --><waypoint x="1628" z="1342" y="3557">	</waypoint>
	<!-- # 62 --><waypoint x="1885" z="1327" y="3491">	</waypoint>
	<!-- # 63 --><waypoint x="2083" z="1324" y="3237">	</waypoint>
	<!-- # 64 --><waypoint x="1923" z="1279" y="3006" tag="Princess">
			__WPL:setForcedWaypointType("TRAVEL")
			player:target_Object(120527) -- Morfantas Statue
			repeat
				yrest(500)
			until player.Casting == false
	</waypoint>
	<!-- # 65 --><waypoint x="1921" z="1296" y="3050">
			print("Begin pathing to evade Gargoylem")
	</waypoint>
	<!-- # 66 --><waypoint x="2162" z="1314" y="3114">	</waypoint>
	<!-- # 67 --><waypoint x="2423" z="1320" y="3239">	</waypoint>
	<!-- # 68 --><waypoint x="2616" z="1181" y="3292">	</waypoint>
	<!-- # 69 --><waypoint x="2785" z="1203" y="3393">	</waypoint>
	<!-- # 70 --><waypoint x="2904" z="1313" y="3476">
			print("Gargoylem should have dropped aggro and returned to his starting point.")
			if inventory:itemTotalCount(241048) > 0 and getQuestStatus(425081) == "complete" then
				__WPL:setWaypointIndex(__WPL:findWaypointTag("PrincessDone"))
			end
	</waypoint>
	<!-- # 71 --><waypoint x="2652" z="1371" y="3299">	</waypoint>
	<!-- # 72 --><waypoint x="2328" z="1331" y="3159">	</waypoint>
	<!-- # 73 --><waypoint x="1960" z="1293" y="3009">
				__WPL:setWaypointIndex(__WPL:findWaypointTag("Princess"))
	</waypoint>
	<!-- # 74 --><waypoint x="2430" z="1326" y="3074" tag="PrincessDone">	</waypoint>
	<!-- # 75 --><waypoint x="2705" z="1325" y="3074">
			flyoff()
			outside = GoThroughPortal(250)
			if outside == false then
				error("Failed to leave the instance: Taffrock Southern District.", 0)
			end
	</waypoint>
Okay I tested it works at least 50% of the time :D

Re: Yrvandis Hollows - All Zone Quests

Posted: Sat Jul 18, 2015 5:40 pm
by Bill D Cat
Now if I could figure out how to keep the bot from fighting the elite, I think it would work 100% of the time. Nothing I've tried so far as prevented the bot from attacking. I even added the elite to the friends list, but it attacks because the elite attacked first.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sun Jul 19, 2015 1:37 am
by rock5
target_Object is a fairly complex function. One of the things it does is attack and kill something that interrupts it harvesting so it can try again. You might have to use a more simpler function such as player:target_NPC. You already have the "wait for casting to end" code so it should work.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sun Jul 19, 2015 12:09 pm
by Bill D Cat
Okay, I got this all to work finally. I had to modify my function moveAndGather() to emulate the player:target_Object() command, but without the in-combat checks. Now this will try as many times as needed to gather the statue, or fly away if the casting bar got interrupted. It took me a max of three attempts to get the statue and run for the exit.

You will need to download the updated version of my userfunction_questHelpers file as well or you will most surely die at the hands of the elite.

Updated waypoint files attached to the first message. See the links for my userfunction file.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sun Jul 19, 2015 10:07 pm
by TheAssasinOfDarkness
Awesome Work!!! But i need help i get this error lol by the way im new botting if u can help me Thanks

Re: Yrvandis Hollows - All Zone Quests

Posted: Mon Jul 20, 2015 6:21 am
by Bill D Cat
Get the userfunction_speedhack from the same topic as the userfunction_swimhack. Link is in the first post of this topic.

Re: Yrvandis Hollows - All Zone Quests

Posted: Tue Jul 21, 2015 11:20 am
by BlubBlab
BlubBlab wrote:I tested it a bit again I must say with the a champion I have less problems but with a warlock it seems impossible to catch mobs.
For the champion I simple added than he must put a away his weapons when the level of the char is bigger than 15.
I had also add 2 checks for if some quests are. complete. besied that:

103; 205 in run into a obstacle but evading to the right was always the right choice for the bot.(haven debugged that)
115 (Nina) your other quest which makes trouble needs a moveTo that NPC running around too much.

Besides for my personal choices I added a few item use

EDIT: Maybe Bill can compare his questHelper userfunction which he uploaded with his own I suspect he uploaded an old version because ItemQueueCount was misspelled inside.

Sry about the upload of the first part I realized I had still 115 as start point I reupload it

Part 2 seems to work flawless beside stuck between 241 and 242
Part 3 added some setting for resum but the problem is for goThroughPortal it seems to work sometimes and sometimes not
When I tested it yesterday it is like I feared through the level difference the same what goes for the warlock goes for the mage as well. He is simple too overpowered even with out staff one fireball and the mob is toast. You can capture a mop this way you have to hit him as MDD with your staff or fists to capture it when the level difference is too great.
Something like

Code: Select all

if((player.Level - pawn.Level) >= 10  and( player.class == MAGE or  player.class == PRIEST or player.class ==WARLOCK )then
	--if difference >= 20 dequip main weapon
	repeat
		attack()
		pawn:updateHP()
	until pawn.HP <= captureHP
end

By the way the rest works for me when you go through 10DQ's and had one more level up through it ( but somehow I didn't had the quest for the princess item quest I had to added it)


Re: Yrvandis Hollows - All Zone Quests

Posted: Tue Jul 21, 2015 6:00 pm
by Bill D Cat
BlubBlab wrote:For the champion I simple added than he must put a away his weapons when the level of the char is bigger than 15.
I've been playing around with switching to bare-hand attacks when the player / mob level difference is more than a certain amount. I would also like to disable all skills if needed, or just have a "return false" in the onPreSkillCast() to not allow the bot to use any skills and rely only on white attacks leading up to the mob capture.
BlubBlab wrote:I had also add 2 checks for if some quests are complete.
I'll go through and see if there's any other points I can add sanity checks to make sure quests get completed. I've rarely run into any of them that have failed, but someone else might, so it's better to be prepared.
BlubBlab wrote:103; 205 in run into a obstacle but evading to the right was always the right choice for the bot.(haven debugged that)
115 (Nina) your other quest which makes trouble needs a moveTo that NPC running around too much.
Nina always was just running around a very small area just before you get to Snoop. I've never had an issue with the bot targeting her and completing the quest. But since she is mobile, it may be best to add a movement and target command inside a quest completion loop.
BlubBlab wrote:EDIT: Maybe Bill can compare his questHelper userfunction which he uploaded with his own I suspect he uploaded an old version because ItemQueueCount was misspelled inside.
That was one of the things that Rock added. I never noticed that it was not capitalized correctly.
BlubBlab wrote:Part 2 seems to work flawless beside stuck between 241 and 242
Yeah, I noticed the bot can run close to the instance entrance to target some of the mobs and then get stuck behind one of the walls. I think I've fixed that in the latest upload. If not, it should be easy enough to add another waypoint to the center of that opening so it gets back out correctly.
BlubBlab wrote:Part 3 added some setting for resum but the problem is for goThroughPortal it seems to work sometimes and sometimes not
The portal was never an issue for me, so I haven't needed to debug anything at that point.
BlubBlab wrote:When I tested it yesterday it is like I feared through the level difference the same what goes for the warlock goes for the mage as well. He is simple too overpowered even with out staff one fireball and the mob is toast. You can capture a mop this way you have to hit him as MDD with your staff or fists to capture it when the level difference is too great.
Something like

Code: Select all

if((player.Level - pawn.Level) >= 10  and( player.class == MAGE or  player.class == PRIEST or player.class ==WARLOCK )then
	--if difference >= 20 dequip main weapon
	repeat
		attack()
		pawn:updateHP()
	until pawn.HP <= captureHP
end

By the way the rest works for me when you go through 10DQ's and had one more level up through it ( but somehow I didn't had the quest for the princess item quest I had to added it)

I'll keep working on the mob capture routine to add level checks and estimate if anything else needs to be done so that you don't kill the mob before you can capture it. There's a few quests in Sascialia Steppes that need you to capture mobs, so I've got lots of areas to test this on.

Re: Yrvandis Hollows - All Zone Quests

Posted: Wed Jul 22, 2015 2:40 am
by rock5
Bill D Cat wrote: BlubBlab wrote:
EDIT: Maybe Bill can compare his questHelper userfunction which he uploaded with his own I suspect he uploaded an old version because ItemQueueCount was misspelled inside.

That was one of the things that Rock added. I never noticed that it was not capitalized correctly.
What's the problem? Did you spell it with a lower case first letter? The problem with the bot is that there is no 100% standard for the naming of variables or functions so in various places things will be capitalized 1 way and in other places they will be capitalized another way.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sat Aug 08, 2015 3:55 am
by beanybabe
Are there any dwarf daily's that are easy to port to and run for dwarfs. Where they don't need to run all the quests to be able to complete? Id like to add one for my daily function.

Re: Yrvandis Hollows - All Zone Quests

Posted: Sat Aug 08, 2015 8:21 am
by Bill D Cat
If I remember correctly, the few daily quests available in Yrvandis Hollows open up after you've completed the corresponding regular quest. The one I normally ran to get an extra level was Punishing the Food Theives. It's at the end of the zone, so you'd have to complete most of the zone quests before it was available. Other than that, I don't think there were many that I've ever bothered with in the zone.