A Couple Newbie Issues With Quests

Post » Fri Mar 08, 2013 9:37 pm

I have a quest set up with multiple stages and objectives. It has npcs with dialogue views and custom voice that work properly.

The problems are:
1. The quest won't initiate on start. I have "Start Game Enabled" checked, and also have a script attached to the quest that reads:
Scriptname HoS_Init
Quest Poperty HoSStartQuest Auto

Event OnInit()
HoSStartQuest.SetStage(0)
EndEvent
The issue may be with the script, I'm pretty new to scripting in the CK. I did add property on the script to create HoSStartQuest and linked that to the proper quest chain.

2. I added an NPC to start the quest so I could test some other functionality of it. After talking to the npc it sets the quest to stage 10. That works fine, however, the "Log Entry" does not display. Only the objective listed.

3. And lastly, I'm going to have objectives that I want to be able to appear when the player has talked to different npcs. So if player talks to NPC A, objective added to talk to NPC D, if player talks to NPC B objective added to talk to NPC E. But I want to make it so both of those can happen at the same time or only one. I figure both objectives should be in the same objective index, with different conditions. But I'm not sure how to set up a condition so that it will recognize when both have been talked to or each one.

Edit: Also, for npc subtitles, apostrophes ( ' ) are showing up as boxes. Is there a fix for that?
Edit Again: It appears only some apostrophes are turning into boxes? I have "I'm" in there and that one turns into a box, but I have "S'Kara" in there as well, and that one comes out fine...
User avatar
Amber Hubbard
 
Posts: 3537
Joined: Tue Dec 05, 2006 6:59 pm

Post » Fri Mar 08, 2013 6:24 pm

Have you generated an SEQ file? The dialogue bug prevents start-game-enabled quests from starting, and you need that SEQ file. To check for this, save and reload the game and see if the dialogue starts working. A quick search on the forum for "dialogue bug SEQ" will tell you how to generate the file.

For the log entry, are you using "SetObjectiveDisplayed(XX)" on the stage?

For the different objectives, you could do it one of a couple ways, and more advanced modders might want to chime in if I'm off base here. I think the simplest way would just be to add objectives and use the "SetObjectiveDisplayed" command in the dialogue fragment. Then you can use some conditionals and quest variables to decide what stage gets called.

So you create a new Quest script and call it HoSStartQuestScript. Add a Int property that is called "TalkedtoNPC1" and leave the value blank (make one of these properties for each NPC that you want to have a condition for). Then click on the script and select "Edit Source."

From here, you want to write "Conditional" after each property and the quest so the quest reads "Scriptname HOSStartQuestScript extends Quest Conditional". Compile and save.

Let's say you want an objective to talk to NPC3 after you've talked to NPC2 but ONLY if you have spoken to NPC1 already.

In the end fragment for NPC1's dialogue, add a script, give it the property "TalkedtoNPC1", and write the following:

HOSStartQuestScript QuestScript = GetOwningQuest() as HOSStartQuestscriptif (QuestScript.TalkedtoNPC1==0)	 QuestScript.TalkedtoNPC1=1endif

Then in NPC2's dialogue fragment, you would add a script with the property "TalkedtoNPC1" and put:
if (GetOwningQuest() as HOSStartQuestScript.TalkedtoNPC1==1)	 GetOwningQuest().SetObjectiveDisplayed(10)endif

Or alternatively the dialogue info could have a condition of "GetVMQuestVariable" for TalkedtoNPC1 so you wouldn't have to do the extra scripting.
User avatar
Dalia
 
Posts: 3488
Joined: Mon Oct 23, 2006 12:29 pm

Post » Fri Mar 08, 2013 7:56 pm

Have you generated an SEQ file?

Yes I have, I had to to make the dialogue work properly. And it still doesn't auto-initiate the quest.

For the log entry, are you using "SetObjectiveDisplayed(XX)" on the stage?

I have done it both using "SetObjectiveDisplayed(xx)" and not. The objectives are displaying fine in game, but the log entries are not. There is simply no shown log entry. I know the stage is updating because the conditions of each stage are effecting the dialogue appropriately for the npc's.

I am currently working on the scripts to see if I can make the objectives work how you said. Thank you

EDIT: Is it okay for the initial stage and objective to both be 0?
User avatar
Jade Payton
 
Posts: 3417
Joined: Mon Sep 11, 2006 1:01 pm

Post » Fri Mar 08, 2013 6:48 pm

Also, what's the purpose of adding the property again:
In the end fragment for NPC1's dialogue, add a script, give it the property "TalkedtoNPC1", and write the following:

When the property exists on the quest script? Won't there then be two separate properties with the same name or am I misunderstanding that?


I tried this as well:
Or alternatively the dialogue info could have a condition of "GetVMQuestVariable" for TalkedtoNPC1 so you wouldn't have to do the extra scripting.

However, when I tried to set it to TalkedToNPC1, the list is empty. I found my quest for the variable, but the parameters list is empty so I can't select TalkedToNPC1.


Edit: I now have the objectives and stages working properly. The only thing with them is the log entries basically never show up with this quest. I don't have any conditions on the log entries and it's my understanding that the most recent one should be displayed. So I don't get why none of them show at all when there is one for each stage.

Also I still have no idea what's going on with the apostrophe thing if anyone can help with that.
User avatar
ruCkii
 
Posts: 3360
Joined: Mon Mar 26, 2007 9:08 pm

Post » Fri Mar 08, 2013 7:58 pm

I do not think putting the property on the quest script will cause a problem, it's just two properties referring the same thing. If you look at vanilla quests (MS08 is a good one) you'll see that they did this.

Yeah, you probably found that you have to set the Quest for the VMQuestVariable then "OK" out of the dialogue screen before you can go back and select the conditional.

So you mean that the quest objective is showing up OK, but the entry in the journal is not. Try putting "SetObjectiveDisplayed(10, 1)" instead of "SetObjectiveDisplayed(10)" and see if that makes a difference.

As for the apostrophes I don't know what that could be. You're not using some kind of font mod, are you?
User avatar
jadie kell
 
Posts: 3497
Joined: Sat Jul 29, 2006 3:54 pm

Post » Fri Mar 08, 2013 10:40 pm

I'm not using any mods at all other than the one I'm making.

I didn't find that out with the VMQuestVariable, just found another way to do it. But that's very good to know.

All objectives show up fine in the journal. The "Log Entry" is what isn't showing. The text in game that shows up above the objectives. Usually like personal notes such as "I was told that I should speak with so and so". The things under the Quest Stages tab.

Still can't seem to find a fix for auto-initiating the quest either.
User avatar
Peter P Canning
 
Posts: 3531
Joined: Tue May 22, 2007 2:44 am

Post » Sat Mar 09, 2013 4:09 am

Did you try putting "SetObjectiveDisplayed(XX, 1)"?

I'm a little confused about what you mean. If you want the quest to start game enabled, it doesn't need a script telling it to start. You'd only need to do that if you're not starting it game enabled. You also say you generated the SEQ file to get the dialogue to work, which is does, but the quest doesn't initiate "properly." Can you explain what you mean? If the dialogue is working within a quest that means that the quest has initiated.

Sorry for the mix-up, I'm a easily confused :)

PS are you using dirty saves or coc-ing from the main menu?
User avatar
Katie Louise Ingram
 
Posts: 3437
Joined: Sat Nov 18, 2006 2:10 am

Post » Fri Mar 08, 2013 9:04 pm

Potentially dirt saves. I'll try CoCing too.

What I mean is that we want the quest to be added to the player on startup, without them doing anything. Right now we get it added by talking to a couple of the NPC's, but it starts past the first stage because of it. We want the player to get a journal update saying "ask around in this location" then they talk to those npcs and get more info. Right now you just talk to the npcs to get the quest. I don't have the script in there anymore for auto initiate because I couldn't get it to work properly. "Start Game Enabled" doesn't seem to have that desired effect either. But now that you say it that way, I'm thinking start game enabled just makes it so you can start the quest without any prerequisites or something?

I didn't try the xx,1 just because the objectives are working properly. As far as I can tell the objective isn't tied to the "Log Entry"

EDIT:

So when I did CoC, I spawn and one of the npcs starts talking like I'm in the conversation with him, and triggers the quest objectives... without me starting a conversation. He's on custom, not force greet, and the conversation doesn't act like I opened it either. So many quirks o.O

I also now understand what Start Game Enabled does. I thought it was something else, so nevermind the part about that. We are going to make the player pick up/use an item to start the quest anyways now. The log entry thing is still odd though as well as some other issues I have posted about.
User avatar
Ash
 
Posts: 3392
Joined: Tue Jun 13, 2006 8:59 am

Post » Sat Mar 09, 2013 3:21 am

I would suggest trying out the SetObjectiveDisplayed(XX, 1) just to see if it somehow does make the log entry show up. (I am getting this suggestion from the discussion page at the wiki http://www.creationkit.com/Talk:Bethesda_Tutorial_Quest_Objectives#Log_entries.2C_Aliases_and_Objective_Markers, where someone had the problem you are having with log entries and found a solution).

So you're saying you have an objective on stage 0 (a start-game-enabled quest), and on stage 0 of the quest you are calling SetObjectiveDisplayed and nothing happens?
User avatar
Beast Attire
 
Posts: 3456
Joined: Tue Oct 09, 2007 5:33 am


Return to V - Skyrim