"Fixing" buggy quests (not bot specific)

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Post Reply
Message
Author
Jandrana
Posts: 187
Joined: Thu Jul 05, 2012 5:53 am

"Fixing" buggy quests (not bot specific)

#1 Post by Jandrana » Thu Jan 03, 2013 8:08 am

Perhaps you know that the quest "Raid plan" is currently buggy. If you have completed the quest, Morrok has a yellow check mark, but you cannot complete the quest, because Morrok does not open a dialog when you click it.

I'm asking myself if it would be possible to "fix" this using the experts here in the forum.

My question regarding this:
- who controls if a NPC opens a dialog window? Is this a "flag" of the pawn object? Maybe in our case the pawn object is simply missing this flag? In this case it should be easy to flip this flag in memory.

- I assume that the contents of a dialog are being transfered from the server. If the server does not send the quest dialog page, then it should be difficult to find a workaround. But maybe it is possible to copy a dialog page from another quest and plug it into the quest pawn for this quest.

Anybody knows more details how this does work and if any of the mentions hacks could possibly work?

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: "Fixing" buggy quests (not bot specific)

#2 Post by lisa » Thu Jan 03, 2013 9:54 am

Specific areas call a function for a specific purpose, this is how they decide if an NPC should be visible for you or not. The NPC is always there even if you are not up to that part of the quest chain but the function decides if you can see it or not.

An example,
if you haven't done the quest in autolia volcano that gives you the NPC in OS to teleport you to Dalanis you can convince the game that it should actually let you see the NPC.

Code: Select all

/script oldCheckQuest = CheckQuest CheckQuest = function(val) if val and val == 423017 then return 2 else return oldCheckQuest(val) end end
/wait 5
/script CheckQuest = oldCheckQuest
using that macro will make the NPC appear for 5 seconds and then disappear again. What it does is change the value of the returned function so that the game thinks you have actually done the quest even though you haven't.

How could this help you?
Well it may be possible to convince the NPC to give you the quest, as it should, even though it is bugged and not working properly.

How can you do this?
Honestly it would be a major pain purely because I can't remember the code we used way back when to print the values of the functions being called in the locations, it was like a year ago, maybe more.
Rock might remember it, or he might not.

BTW I saw your world chat about the quest ;)
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

Jandrana
Posts: 187
Joined: Thu Jul 05, 2012 5:53 am

Re: "Fixing" buggy quests (not bot specific)

#3 Post by Jandrana » Thu Jan 03, 2013 10:15 am

Well it may be possible to convince the NPC to give you the quest, as it should, even though it is bugged and not working properly.
The problem is not to accept the quest, but to complete the quest. The NPC is visible and has a yellow check mark over is head, if you completed the task. When clicking the NPC it should open the dialog to complete the quest.

The current bug is that is does not open any dialog.

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: "Fixing" buggy quests (not bot specific)

#4 Post by lisa » Thu Jan 03, 2013 10:34 am

it was just an example but the theory is the same, it is still a long shot though.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: "Fixing" buggy quests (not bot specific)

#5 Post by rock5 » Thu Jan 03, 2013 10:51 am

I think we got it from the cli script, in particular

Code: Select all

function LuaV_114777_114778()
	if CheckQuest( 423017 ) == 2 then
		return false
	end
	return true
end
As you can see Hajikar Mashes (114777) appears depending on the status of quest 423017.

Now the quest in question Raid Plan (423063) seems to have 2 functions associated with it.

Code: Select all

function LuaV_423063_0()
	if	CheckQuest(423062)==0	then
		return true
	end

	if	CheckQuest(423062)==1	and
		CheckFlag(543758)==0	then
		return true
	end

	if	CheckQuest(423063)==1	and
		CheckFlag(543711)==1	then
		return true
	end
	if	CheckQuest(423063)==2	then
		return true
	end
	return false
end
--¦b´ËªL¥~µ¥ªº­©ªø
function LuaV_423063_1()
	if	CheckQuest(423063)==0	then
		return true
	end
	if	CheckFlag(543752)==1	then
		return true
	end
	if	CheckQuest(423064)==2	then
		return true
	end
	return false
end
Probably one of those returned values, either a quest or flag check, is wrong. Without having the quest available to me, I don't know how I could check.

Instead of checking each value you could try changing the returned value of each of those functions, eg.

Code: Select all

/script old_423063_0 = LuaV_423063_0
/script function LuaV_423063_0() return false end -- Also try changing this to true
/wait 10
/script LuaV_423063_0 = old_423063_0
If you use this in a macro and run it, for 10 seconds that functions will return false (which I think is the desired value) and maybe you can complete the quest. If it doesn't work try changing it to true.

If it still doesn't work try the second function.

Code: Select all

/script old_423063_1 = LuaV_423063_1
/script function LuaV_423063_1() return false end -- Also try changing this to true
/wait 10
/script LuaV_423063_1 = old_423063_1
And repeat the steps above.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: "Fixing" buggy quests (not bot specific)

#6 Post by lisa » Thu Jan 03, 2013 11:17 am

Ahh yes now I vaguely remember we were going through those files lol
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

Jandrana
Posts: 187
Joined: Thu Jul 05, 2012 5:53 am

Re: "Fixing" buggy quests (not bot specific)

#7 Post by Jandrana » Thu Jan 03, 2013 11:50 am

Thx rock. I tried the functions like you suggested, but without success.

Normally if a NPC will talk to you and you move the mouse cursor over the NPC, the cursor changes into a small speech bubble. Currently already this speach bubble cursor does not appear.

I don't know what the functions you posted will do, but it looks like they check if the two steps of the quest have been completed. Probably this is not the bug, because the NPC shows the completed check mark over his head.

To me it looks like the Morrok pawn is in a "strange state", because he does not want to talk. I don't know if there is function that controls, if a NPC wants to talk or not.

@ Lisa
BTW I saw your world chat about the quest
Huh - I don't think so, because I never ever do any postings in world chat.


Edit: Anybody knows what the API function GC_SetDisableDisplayNPCTalk is good for?
Edit2: After digging in the fdb files, I found that SpeakFrame.lua should be responsible for the NPC dialog. Anybody knows an API call that will open this SpeakFrame for a targeted NPC?

ratzuk
Posts: 19
Joined: Wed Dec 01, 2010 7:39 am

Re: "Fixing" buggy quests (not bot specific)

#8 Post by ratzuk » Sat Jan 05, 2013 9:08 pm

Slightly off topic I know, but can't find another section similar to this

Has anybody investigated the possibility of modifying the client files to re-enable the crafting of runes such as Shield & Block or is this determined by the server?

8-)

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: "Fixing" buggy quests (not bot specific)

#9 Post by lisa » Sat Jan 05, 2013 10:19 pm

ratzuk wrote:Slightly off topic I know, but can't find another section similar to this

Has anybody investigated the possibility of modifying the client files to re-enable the crafting of runes such as Shield & Block or is this determined by the server?

8-)
determined by server.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

Jandrana
Posts: 187
Joined: Thu Jul 05, 2012 5:53 am

Re: "Fixing" buggy quests (not bot specific)

#10 Post by Jandrana » Mon Jan 07, 2013 12:16 pm

BTT.

I managed to find the function to open the SpeakFrame. The function is called:

SpeakFrame_LoadQuest().

The strange thing with this quest is: if I have Morrok targeted and call this function,
it opens the SpeakFrame for the last NPC I talked to.

This can be the NPC in Obsidian that transported me to Dalanis or any other NPC, that
I talked to before. If I select another NPC that likes to talk to me, the function
"SpeakFrame_LoadQuest()" opens a speak frame with the current quest stuff displayed.

Either this Morrok-Pawn has some bad internal state like "no quests available" or something,
which causes it being "unselectable" for the quest API. Selecting it via a MM script and
calling "SpeakFrame_LoadQuest()" from MM did not improve anything.

New ideas anybody?

Tamyra
Posts: 133
Joined: Tue Feb 01, 2011 6:09 pm

Re: "Fixing" buggy quests (not bot specific)

#11 Post by Tamyra » Mon Jan 07, 2013 1:26 pm

Jandrana wrote:New ideas anybody?
Dropping and re-accepting the quest since Morrok would then be the last NPC you talked to. It seems to get "conditions met" after you've already spoken to the centaurs the first time, so no need to talk to them again. Just be sure you have the disguise on as Morrok will tell you to put it on. Then seeing as he'd be the last NPC, using the

SpeakFrame_LoadQuest().

should open dialogue with him, right?

Edit:
Is this a rom script that can be made into an in-game macro?

Jandrana
Posts: 187
Joined: Thu Jul 05, 2012 5:53 am

Re: "Fixing" buggy quests (not bot specific)

#12 Post by Jandrana » Mon Jan 07, 2013 3:32 pm

Dropping and re-accepting the quest since Morrok would then be the last NPC you talked to.
Unfortunately not. You must talk to the centaur leader to complete the quest. So SpeakFrame_LoadQuest()
opens the dialog with the centaur leader again.
Is this a rom script that can be made into an in-game macro?
Yes, this is possible.

Tamyra
Posts: 133
Joined: Tue Feb 01, 2011 6:09 pm

Re: "Fixing" buggy quests (not bot specific)

#13 Post by Tamyra » Tue Jan 08, 2013 12:32 pm

Jandrana wrote:
Dropping and re-accepting the quest since Morrok would then be the last NPC you talked to.
Unfortunately not. You must talk to the centaur leader to complete the quest. So SpeakFrame_LoadQuest()
opens the dialog with the centaur leader again.
I have a character stuck at this same spot in game. When I have dropped the quest and re-accepted it by talking to Morrok, it has been telling me that conditions are met before I talk to the centaur, but only because I already spoke to the centaur, so what I'm suggesting is that because conditions were met the first time I tried it, that now conditions will be met w/o going back to the centaur. So, if you drop it and re-accept, in effect, Morrok would be the last person you spoke to.

Edit: I'm going to make a macro for this in game when I get home and see if this works.

Tamyra
Posts: 133
Joined: Tue Feb 01, 2011 6:09 pm

Re: "Fixing" buggy quests (not bot specific)

#14 Post by Tamyra » Tue Jan 08, 2013 8:49 pm

Well, I was right. It did cause Morrok's chat frame to open and it even had the quest with the checkmark and the 4 possible items available as a reward there, but I click on the "confirm" button after choosing one, and nothing happens. Think I'm gonna tweak my macro a bit and see if I can force it to auto complete the quest as well.

Code: Select all

/script SpeakFrame_LoadQuest()
/wait 1
/run OnClick_QuestListButton(3, 1)
/wait 1
/run SpeakFrame_ClickQuestReward(SpeakQuestReward1_Item1)
/wait 1
/run CompleteQuest()
This is what I have so far...no it is not working, see if there's anything anyone else can do with it.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests