Jump to content

Photo

Quest/dialogue help


  • Please log in to reply
13 replies to this topic

#1
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts
Looking for a little assistance with quest stages and dialogue to advance the question stages.

Let me start by mentioning that I have used the creation kit for years and have moderate experience with dialogue, but never actually set up a quest until now. Yes, I have read and watched tutorials etc.

A brief description of the quest stages in progress, as listed by stage:
(10) set to "start game enabled"; talk to NPC to receive quest to find key at [random location].
(20) key has been found, now return to NPC
(30) returned to NPC to complete quest.

From testing, stage 10 works fine. I can talk to NPC to receive quest (or tell him no). Log entry is created and map is updated with the objective's random location. Then things are broken from there. I can't get the quest to advance past stage 20 with the next dialogue topic. I have the dialogue set up with scripts to advance the quest to the final stage, but when I change the conditions to display the player response only after finding the key (set up with "GetStage -> MyQuest -> == 20"), that makes none of the dialogue appear for the entire quest. Now the only way I can get the quest to begin is if I remove the quest stage condition.

Then comes the next issue: creation kit crashes the instant I try to look at the dialogue view. I can look at all the dialogue in the player dialogue tab, but crashes every time I try to open the dialogue view. However I can still open any dialogue views from any other quest with no problem. I know the creation kit is kinda wonky, but it seems there's something wrong with my quest.

Any advice would be appreciated! I can post screen shots if that's helpful.

Thanks,
Chew

#2
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts
Update. Still seeking advice.

I've got the quest going and able to be played and completed. However, there's still one thing I can't overcome: If the player has already found the key before speaking to the quest giver NPC, it skips the beginning dialogue that initiates the quest and is broken at that point. The dialogue option to complete the quest is available, but does not complete the quest.

What I'm after now is one of two things:
1. Disable the key until the NPC has been spoken to and the quest is accepted; or
2. Allow the quest to play out even with the key already obtained.

I've tried several attempts at both options and can't get either one to initiate properly. For option 1, I set the alias ("Object") to "initially disabled" and put a script on stage 10 to enable it. But going in-game, it can still be found before encountering the quest giver NPC. For option 2, I've tried a number of different script fragments in a number of different places, but to no avail. I have now spent many hours trying to reverse-engineer some of the game's quests and still can't achieve proper results. (Instability of the CK is not any help!)

I feel like either way should be pretty easy to accomplish. If someone can set me straight, I would be grateful!

Thanks,
Chew

#3
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts

Still at it...

 

I feel like I'm making progress. I restructured my quest to have a trigger to initiate the quest, rather than being start-game enabled. I've got a script attached to the trigger, and is functioning (almost) as desired. The trouble I'm still having (refer to original post) is in the event that the player finds the key before the quest begins. I've put a reference to the key in the startup script, but when I try to enter a condition to run a check to see if the player has obtained said key, as follows:

 

If Game.GetPlayer().GetItemCount(QuestKey) >= 1
  SetStage(20)
EndIf

 

...The compiler complains at me stating that "variable 'QuestKey' is undefined". Although I've seen this in use by other quests in the vanilla game.

 

The alternative solution of keeping the key disabled until starting the quest is also not working for me.

 

Again I am no master of Papyrus. In fact, the 30 years of HTML are probably interfering with my ability to learn.

 

Still in appreciation of any assistance.



#4
TyburnKetch

TyburnKetch

    Fan

  • Members
  • PipPipPip
  • 297 posts
Have you declared the key as a property in the script?

Key property questkey auto

Dont forget to fill the property with your key in the properties tab on the script.

Edited by TyburnKetch, 06 June 2022 - 07:41 AM.


#5
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts
Yes, I did that, exactly as you have it written. When I went to add the properties in the script in CK, it was already there (?). I wonder though, my script header is "scriptname myquestscript extends quest". Again I am no expert, but shouldn't there be an "ObjectReference" in there somewhere? If so, how do I accommodate for both?

#6
TyburnKetch

TyburnKetch

    Fan

  • Members
  • PipPipPip
  • 297 posts
No. Extends quest should be fine.

Try putting the line in brackets.

If (Game.GetPlayer().GetItemCount(QuestKey) >= 1)

Also look here, if you have not already:
https://www.creation...ObjectReference

#7
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts

Thanks a bunch for your help and feedback. Actually I lied, the script header has 'extends ObjectReference'.

 

I just went back and double-checked my work; recompiled the startup script (successfully), re-checked the appropriate properties, and tried again, with and without parentheses. I still get the same error when trying to compile the fragment. I feel like there's got to be something I'm missing or unaware of.

 

I assume the property (key property questkey auto) needs to be in the startup script, and not the fragment script?

 

By now I have looked at more forums, tutorials, and YouTube videos than I can count, including the link you posted above.

 

Thanks again,

Chew



#8
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts
Another question: I was doing some more research, and one of the forums I was looking in mentioned that the object to be referenced back to (in my case, "questkey") needs to be a placed object in game, and not just created in the object window (so that CK will recognize a usage count of >0). Is this true, even though the object is an alias? FWIW, I've also tried using the alias in the 'GetItemCount' fragment:

If Game.GetPlayer().GetItemCount(Alias_Object) >= 1
SetStage(20)
EndIf

...and the compiler returns a handful of errors, rather than just the 'property undefined' message.

#9
ChewNTobacca

ChewNTobacca

    Regular

  • Members
  • PipPip
  • 96 posts

So, after some more reverse-engineering, I think maybe I have identified the issue this whole time, I'm just not sure how to fix it.

 

I've got the startup script attached to a trigger I created around a specific area. When the player enters the area, the quest begins and is properly playable through the stages. So I know the quest is functional. However, all the vanilla quests I have looked at have the script attached to the quest. To clarify, in the object window in CK I go to "World Objects -> Activator -> (MyQuestStartupTrigger)" and open the edit dialog box to access the script and its properties. But when I look at some of the 'factory' quests, the only place I can see where they have the script is in by opening the actual quest dialog (i.e. "Quest -> MISC -> MS01 -> Scripts Tab" (The Forsworn Conspiracy)).

 

Based on that discovery, I wonder: do I have the script in the wrong place? If so, do I simply add it to the quest and define its properties there, or do I link them somehow?

 

Pardon my ignorance, that's why I'm here for help. :)

 

Thanks,

Chew



#10
TyburnKetch

TyburnKetch

    Fan

  • Members
  • PipPipPip
  • 297 posts
It really depends on what your script is doing and when you need to access it.

I think you need to post your script / scripts.




IPB skins by Skinbox
Page loaded in: 0.968 seconds