Jump to content

[RELz] Snowy Dreams


Hana

Recommended Posts

  • Replies 119
  • Created
  • Last Reply

Top Posters In This Topic

  • Hana

    36

  • Dwip

    32

  • Conner

    31

  • Arthmoor

    20

Top Posters In This Topic

Bah. Just lost two days in bed with my back killing me. I'm so far behind.I think I'm ready to write the quest now. I've read a couple of tutorials, I understand the dialogue portion, and the journal updates, but what I'm missing is the quest pop-ups. How does one do that?(I'm assuming a blank quest stage with a script in the results box that triggers the messagebox?)

Link to comment
Share on other sites

Well, that does explain the silence from your quarter over the last couple days, though it's been longer than that by a fair bit since we actually heard from you. I'm sorry to hear that you were laid out for two days from back pain, I can relate all too well. Welcome back. :)

Link to comment
Share on other sites

The quest pop-ups happen when journal updates are made. When you set a quest stage to have a journal update, the player sees that as the pop-up. No journal update means a silent stage, which is useful to update variables behind the scenes.

Link to comment
Share on other sites

Well that sounds stupidly simple, yet none of the tutorials bother to mention that.Thanks Conner. The rest of my 'laying low' has been busy working on this. New models/textures... my not knowing when to say stop is going to get me in over my head. I'm already stressing.

Link to comment
Share on other sites

Yeah, I know, but my first mod release. :)I think I made a boo-boo. If I want to use the interior of North Country Stables to add an NPC specific for my quest, should I copy the cell and rename it as part of my mod? Or can I just drop an NPC into the existing cell and enable/disable him as needed?

Link to comment
Share on other sites

Drop the NPC in and enable/disable. The other is a huge compatability issue.There's a third way which I used a lot in AFK_Weye, which is to make a temp holding cell, have the NPC hang out in there, and then use MoveTo or MoveToMarker to dump them into the final cell. Probably not necessary to go to that level, though.As far as the over obsessing thing, my advice is to not go overboard with anything not focused on the central point. Focus on your basic quest/dialogue/cell decoration stuff first, then come back to new models/textures as you have the time unless said models/textures are absolutely mission critical. Focus on the things you absolutely need first, then go back and fill in. Sounds basic, I know, but it's easy to lose track of.

Link to comment
Share on other sites

The Rabbit God speaks true. There are a lot of way to make vanilla stuff do interesting things as well, something to consider before jumping into custom assets.

Link to comment
Share on other sites

Thanks Dwip, that's just the pep talk I needed right now. :)I think I'm making progress. I have dialogue! (And I'm pretty proud I got this far)I don't, however, have pop-ups or journal entries, except one journal entry that apparently 'starts' the quest after the dialogue with Santa. I expected to have three entries by that point. I have quest stages for each section, and checked Quest Start Enabled but I suspect I'm missing some kind of condition to get the pop-ups? Or something...

Link to comment
Share on other sites

Glad to oblige.Hard to know precisely what to tell you since I can't see it, but:1. Planning really helps here. Measure twice, cut once and all that bit. Samson largely disagrees with me on this point, but.2. To get your quest stage popups, you need to:- Have a quest stage (duh).- Have a journal entry written for that stage.- Use SetStage to set the stage. How you go about doing that is pretty variable and dependent on how you want things to go, but generally dialogue result scripts or scripts attached to objects. Sometimes conditions in the gamemode block of a quest script. Whatever works.3. Starting the quest enabled works. You'll obviously want to remember with your dialogue to add conditions restricting it to a quest stage or range of quest stages where appropriate.Does that help?

Link to comment
Share on other sites

Yes and no.1. Done. All written out.2. I have the quest stages. I have the journal entries written in. Using setstage I guess is the part I'm stuck. Yes, I used setstage as a result at the end of the dialogue, which is how I got the one and only journal entry (but no pop up). I've even put setstage in results of the just journal entries with no dialogue but they aren't working. And zero quest pop-ups all over the place.3. I'll add the quest stage condition to the dialogue.

Link to comment
Share on other sites

Samson largely disagrees with me on this point' date=' but.[/quote']Only in so far as pre-planning rarely suits my style. You can't argue with the results though. :)
Yes' date=' I used setstage as a result at the end of the dialogue, which is how I got the one and only journal entry (but no pop up). I've even put setstage in results of the just journal entries with no dialogue but they aren't working. And zero quest pop-ups all over the place.[/quote']You've found the one exception to the pop-up rule. Stages set via dialogue result scripts will not deliver the pop-up window. The journal entry will be made though, and the quest is advanced properly.One thing you may need to watch though is having a stage set via dialogue that has a setstage command in the journal's result script. Seems to have been the case for why the Bruma sanc quest held open after completion for some people in ABR.
Link to comment
Share on other sites

Ok, that's fine. The pop-up after the dialogue isn't important. The first few pop-ups are though.Since it's hard to explain I took pics. This is the quest data set up. And this is the very first quest stage. I want this info to pop-up when the player loads the game. No dialogue or anything, just a pop-up/journal entry.

Link to comment
Share on other sites

That's going to need to be handled by a script for the quest. When you set them to enabled at start, stage 0 is assumed to already be set.Something simple like this should work:

scn begin gamemode   if( getstage  

In the quest data tab, assign this new script to the quest.Your current stage 0 should be changed to be stage 5, and drop the result script from stage 0. You'll have to stick a semicolon in the result script field since the CS won't blank one that's been compiled.

Link to comment
Share on other sites

So you've got a few things going on here.0. I don't know that I've ever linked you to this, but there is a dissection of the parts of the quest SQ09 Go Fish that might prove to be of some use to you.1. Your Quest Data tab looks fine.2. One of these days we're going to have a conversation about naming conventions and aaa, but I'll forego that for the moment.3. As far as your stage 0 goes, the actual journal entry and the way it appears is fine, however:- The reason it's appearing is because all quests start at stage 0, and because your quest starts enabled, it's automatically appearing. I say this by way of explaining that your attempt to setstage in the result script to the same stage is ineffectual and does nothing. Stage result scripts run AFTER the stage has been reached, not before, and so you're telling it to do nothing there.- Somewhat in line with what Samson was saying, it's a bad idea to try to setstage commands in stage result scripts, and I'm fairly sure it doesn't work at all ever. The way to get around this, if you're going to be doing things that way, is, in the quest script to your quest, do something like this:

scn aaaSnowyDreamsQuestSCRIPTfloat fQuestDelayTimeshort StageChangebegin gamemodeif StageChange == 1  setstage aaaSnowDreamsQuest 10  set fQuestDelayTime to 5  set StageChange to 0endifend

In the quest stage result script box, in place of what you have, you'd want:

set fQuestDelayTime to 0.1set StageChange to 1What we're doing there is, after stage 0 runs, is set [url=http://cs.elderscrolls.com/constwiki/index.php/FQuestDelayTime]fQuestDelayTime[/url] to a very low number so it runs fast, and we're flipping a variable so that next time the gamemode block of the quest script runs (in 0.1 seconds), it will change the stage to 10.  Assuming, of course, that you wanted to change it to 10, and not, say, something else.- Having told you all of that, I'm now going to tell you that having stage 0 do anything other than deal with dialogue and run timers is generally a bad, or at least kind of an annoying move.  Likewise with having the quest start via popup, but given the context that's understandable.  On the one hand, there are more elegant ways, and as an advanced course version of this you'd actually want to script a cutscene, but that's for much later in your career.  On the other hand, by doing things as you are, people in the tutorial dungeon are going to get nonsensical popups, which is damned annoying.  The absolute bare minimum for this sort of thing is to check that the player is done with MQ01 before dropping in popups, which is the way all the DLC work.  An even better way to go is to add in a timer.The whole thing works roughly like so:[code]scn aaaSnowyDreamsQuestSCRIPTshort Doonceshort Doonce2if ( Doonce == 0 )  set startday to GameDaysPassed  set Doonce to 1endifif ( Doonce2 == 0 )  if GameDaysPassed >= ( startday + 1 ) && GetStageDone MQ01 100 == 1      setstage aaaSnowyDreamsQuest to 5      set Doonce2 to 1    endifendifend

There are more elegant ways to go about that, but this way works. You can see several examples of it in AFK_Weye. What we've done here is set it up so that at the beginning of the game, a timer gets initialized, which is that first block. In the second block, assuming it's been at least a day and the player has left the start dungeon, we fire off stage 5 of the quest.What you'd need to do then is make stage 0 a blank stage. Doesn't even need an entry. Move the journal entry from stage 0 to stage 5. Any dialogue that was set to happen at stage 0 now happens at stage 5.That make sense?Also, should chalet really be capitalized like that?

Link to comment
Share on other sites

Somewhat in line with what Samson was saying' date=' it's a bad idea to try to setstage commands in stage result scripts, and I'm fairly sure it doesn't work at all ever.[/quote']The only problem with that line of thinking is that we all finished ABR, and some of us hired Sanjani, right? I know for a fact that during testing that worked, but for some reason yet to be fathomed, it stopped for several people. I have a feeling now that I'll need to go check all my stuff to make sure I haven't done this. It's probably only specific to a setstage called while in dialogue that in turn calls a result script that does a setstage command.
Link to comment
Share on other sites

That may well be. It's been long enough since I've tried that I don't remember clearly. I do remember having plenty of trouble with it in the past, however, and for my money it's just better to not get in the habit of attempting to do things that way, sort of like how I never, ever use anything but AddTopic commands to add dialogue topics (you know about the add topic bug, right Hanaisse?).

Link to comment
Share on other sites

Your current stage 0 should be changed to be stage 5' date=' and drop the result script from stage 0. You'll have to stick a semicolon in the result script field since the CS won't blank one that's been compiled. [/quote']
I say this by way of explaining that your attempt to setstage in the result script to the same stage is ineffectual and does nothing.
Ok' date=' point taken. Adding the setstage in the result was my attempt to get the quest to fire. It didn't work without it either. And once it was there I couldn't get rid of it after I did realize it was a moot point trying to setstage to the same stage, so thanks for the tip. I also did, after my last post, change stage 0 to stage 5 and it still didn't work. I'm still really confused why such a basic quest doesn't want to start.
What we've done here is set it up so that at the beginning of the game' date=' a timer gets initialized, which is that first block. In the second block, assuming it's been at least a day and the player has left the start dungeon, we fire off stage 5 of the quest. [/quote']Woohoo! Success! I would never have thought of making sure the player is not in the tutorial dungeon to start, so thanks for that and the script. However, this is where I point out the flaws of your way. The script is missing the "begin gamemode", and I had to declare startday as a variable for it to work. It also didn't like the word "to" in this - setstage aaaSnowyDreamsQuest to 5.I'll be sure to remember this great tip for the future of my questing career.Note to self: Make an icon.Now to make the next stage fire off.
...sort of like how I never' date=' ever use anything but AddTopic commands to add dialogue topics (you know about the add topic bug, right Hanaisse?). [/quote']Ummm... I know not to change the GREETING topic and to always use that first. But let's have a conversation about this, it was a confusing part in the tutorial (on TESA and on CSWiki). They say to right click in the EditorID column and click New. I assumed it would add new blank topics in the editorID column that I could edit how I wanted. But no, it takes you to a Select Topic box filled with current topics. What the hell am I supposed to select? I just used the first few highlighted topics, a couple of EMPTY's and something about Abilities, and edited those, and then they disappear from the list. Is there a better way? Did I just create the addtopic bug in my quest? The dialogue does work.
Also' date=' should chalet really be capitalized like that?[/quote']Probably not in that context. Later on when it's part of the building name though, yes. I've changed it. Thanks for catching it.
I don't know that I've ever linked you to this' date=' but there is a dissection of the parts of the quest SQ09 Go Fish that might prove to be of some use to you. [/quote']I knew about this, and subsequently forgot about this. I had it bookmarked before the Win7 invasion and since lost it. Now that we have an index to all your tutorials (which is great) I know where to go for reference.
Link to comment
Share on other sites

Grrrrr. :headbang:I've been trying all morning but I can't get stage 10 to trigger. I see nothing wrong with this set up but I'm sure you experts will.I used getstage to make sure the quest has been initiated, and the mapmarker as reference to trigger the quest update when the chalet is "discovered". It just sounds very logical to me. Nothing happens. I've also tried using an xmarker and it doesn't work either.Also, how does one get compass markers?

Link to comment
Share on other sites

Ok, first, on adding topics. When you right click to add one to the list for the quest, and you get that box with the huge list of topics and the two empty slots, you have to right click in that box and select "new" in order to generate a completely new topic. Otherwise you're adding existing topics to your quest and altering them by adding your own response conditions, which is bad.For your stage 10, the two sets of conditions you have in the box don't need to be there. Quest stages must be triggered by a setstage command, they can't automatically call themselves up just because you're close to the target.The easiest way to get the stage to fire as you approach would be to use the script you created to add a condition check to. Using the GetDistance command to check how close the player is to whichever marker you're using. Probably the map marker would be logical. If the player is close enough, and the quest is still in stage 5, have the script do a setstage to 10 and that should do it.Compass markers are handled on the "quest targets" tab. If you right click and select "new" you'll then be able to use the "select reference in render window" button to pick something. Again, your map marker is probably the most logical thing. Use conditions to make sure each target displays only when you want them to.

Link to comment
Share on other sites

Thus you see the perils of attempting to write scripts at 3am or whenever I wrote them. Syntax errors FTW.

Ummm... I know not to change the GREETING topic and to always use that first. But let's have a conversation about this' date=' it was a confusing part in the tutorial (on TESA and on CSWiki). They say to right click in the EditorID column and click New. I assumed it would add new blank topics in the editorID column that I could edit how I wanted. But no, it takes you to a Select Topic box filled with current topics. What the hell am I supposed to select? I just used the first few highlighted topics, a couple of EMPTY's and something about Abilities, and edited those, and then they disappear from the list. Is there a better way? Did I just create the addtopic bug in my quest? The dialogue does work.[/quote']Assuming I understand what you just said correctly, you changed the name of the EMPTY topics and the Abilities topic to something other than EMPTY and Abilities? If so, that's bad. That will break things very badly, and we'll need to talk you through obliterating those changes via TES4Edit and redoing them. If that's not the case, then not to worry, but let me talk about a couple of concepts here.1. It's ok to, when you're in the select topic box, to left click any given topic and hit ok, thus adding it to your list. That's true for GREETING, and in fact you'll need to use GREETING at some point because it's the only way to have, you know, greetings. That having been said, what you need to make sure of is that you're using conditions to properly restrict your dialogue to your NPCs. That means stage checks, GetIsID checks, etc. There's nothing more annoying than somebody who forgets these things and has every NPC in the game speaking their lines. I think I talk about this in more detail in my SQ09 writeup.2. If you right click in the select topic box, you can add a new topic. Call it aaaSnowyDreamsBlerkTopic or whatever makes sense to you. It will appear in the list with an asterisk by it, which as always means it's something added/edited by your mod. Select it if it isn't, hit ok. Then you're good to go. If you want, you can right click and add a bunch of new topics, then use shift or ctrl + left click to select multiple topics and add them. Whatever works.3. Related to the whole "you can use GREETING but be careful" thing and the "the topic disappears from the list" thing, you should be aware if you're not that topics can exist across multiple quests. To get what I'm talking about, pop open the dialogue window from the toolbar at the top (the speech balloon button), and go find GREETING. You'll see a whole bunch of quests use it. Order in that list is controlled by the priority you set your quest to in the Quest Data tab, and again I talk about the meaning of that in my SQ09 writeup. As I just said, you should strive to restrict the responses in your topics to single/small groups of NPCs at specific points in quests, but you should know how that system works generally anyway.4. As I was saying about the Add Topic thing, when you add your aaaSnowyDreamsBlerkTopic, none of your NPCs will be able to use it until you actually add the topic to the list of topics the PC can use. There are two ways to go about this:- Add the topic by using another response in another topic the PC already has, usually a GREETING but not always. For example, if your NPC has a GREETING where they say "Hello, I'm Santa!" and you want to have another topic called aaaSnowyDreamsDeliverPresentsTopic or some such, you'd want to add a line in the results script box for the "Hello, I'm Santa!" response like this:
AddTopic aaaSnowyDreamsDeliverPresentsTopic

Since that's a script, you could also add it via quest stage result scripts, your quest script, object scripts, whatever makes sense. What you can't do, and this is what I was talking about originally, is use that nice box labeled Add Topics, because of the Add Topic Bug. Now, the bug is specifically related to using the Add Topics box in a GREETING, but like I said, I find it to be a better idea to just never use it for any reason whatsoever. Just use scripting, and you'll never forget.- Your other option is to use the Choices box, which takes a list of topics added to it and presents a list of possible responses for the player to pick from after the NPC speaks whatever response the choices are linked to. For example, for the "I'm Santa!" greeting, if you had aaaSnowyDreamsDeliverPresentsChoice (see what I did to the name there?) and aaaSnowyDreamsDieDieDieChoice as choices, the player would have to pick between the two choices to move forward in dialogue.I would recommend checking out post #6 as well as the SQ09 post in the Dwip's Guide to Scripting thread for a discussion of most of this with much better terminology on my part. Also so you can marvel at the syntax highlighting in code boxes at Bethsoft, and when the hell did that happen.

Link to comment
Share on other sites

Oh hey, stuff got added since I started writing.To add to what Samson said:- You pretty much never need to add conditions to quest stages like that unless you need to have multiple journal entries at that stage, which is fairly advanced class stuff. You can see examples of it in action in a few places, one of which I think is the Paranoia quest, another of which is the AFK_Weye quest A Wolf in the Fold (actually a ton of AFK_Weye quests, but).- To continue pimping my topic, I spend some time on quest targets in that tutorial in a couple spots, and it may make good reading for you.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...