Jump to content

Recommended Posts

Posted

I'm not a noob, been modding since Oldrim was released. However, I never found a decent forum where I could ask technical questions to knowledgable modders and actually get a response.

So, as a result, I'm mostly self-taught. I know a good bit, but there are a number of decent sized gaps in my knowledge.

I was looking for a forum I could ask CK and mod-creation questions, some advanced, some likely annoyingly simple, possibly answer a few where my knowledge gels...

I'm hoping this is the place, For now, I'll just soak up the posts and see what's here.  But first, a question:

Question:

I've tried many times to set up an automated dialog scene that would just play randomly. I've looked at the base-game scenes and see how the Story Manager sets it up to run a quest when the few conditions are met.

I managed to get scenes ... kindof... working. The story manager will occasionally play the scene just fine. Starts the quest, triggers the scene, scene plays and the quest shuts down ready for its next iteration.

Problem is, it appears at completely RANDOM times, the Story Manager will start the quest, and when the quest goes to start the scene... I get a Papyrus crash and the scene never starts, which soft-locks the scene quest because it never shuts down due to never starting the actual scene.

I can reset the quest and the next time it'll play just fine. But it's proved to be completely unreliable.

I ended up bypassing the Story Manager completely and using a simple {Idle} dialog to randomly kick off the scene. But I'd prefer something more... timely.

I was wondering if this was a known fault in the game? Is the Story Manager just unreliable, or is it just dialog scenes?

Posted

Not a fault, except in the documentation which is way too fragmentary.

When you say "play randomly", exactly what do you intend?  The story manager on its own does not do it, but it can still be a useful component to use.

I remember being in that same situation, wanting to run scenes at "intervals" and trying to use the "actor dialogue", "actor hello" and other SM events to trigger my scenes.  These event are triggered in specific situations with complex preconditions and it turns out poorly adapted to my needs.

Here's an idea which may help you, or not:

Use a quest script with an update loop (OnUpdate finishing with a call to RegisterForSingleUpdate) to periodically launch a SM "script event", which starts a quest to fill aliases and then start your scene.

I'll explain every step in detail if you need to.  PM me if you're shy.

  • Like 1
Posted

SM is just responsible for triggering a quest.  

Are you logging your Papyrus?  What is the nature of the crash?  Do you get a stack dump?   Have you added trace to your quest/stage scripts?

For example, rather that just flagging a scene to start when quest starts, you can add a starting stage fragment that will output the info about the quest and its aliases and then trigger the scene.

Have you tried it with just a dummy quest?

  • Like 1
Posted
40 minutes ago, xkkmEl said:

When you say "play randomly", exactly what do you intend?  The story manager on its own does not do it, but it can still be a useful component to use.

Just a randomly triggered scene, such as when Ysolda talks to Carlotta about the apples, if the actors are in place, it may trigger the short scene, it may not. I don't want anything scheduled or timed, just a random thing that may or may not play. Background scenery that's not always scheduled and on-time.

I ended up accomplishing something similar with an Idle dialog, which are also randomly played. I took the first line of the scene and placed it in an idle dialog, which then triggered the scene to play with a script fragment. The effect is very similar and it's ALWAYS worked.

Problem is, because the Story Manager proved unreliable with those dialog scenes, I've been highly reluctant to utilize it in any way ever since.

>scorrp10 Are you logging your Papyrus?   

I did, but this was like a year ago and don't remember the exact error. Something akin to "Papyrus error: cannot start scene" I've since taken pretty much everything out of the SM since.

But there are quite a lot of things the Story Manager can do, but as I said, I'm highly reluctant to use it if it's not reliable. Was wondering if that was justified or not.

I never considered having the SM initiated dialog quest to start() the scene with a script fragment instead of on Quest Start... Every base-game dialog scene always did it OnQuestStart. Perhaps I'll re-write one of the scenes that was more problematic and see if I can get the error again and try starting the scene the way you mentioned.

>xkkmEl

That was another question I was saving for later. I've used RegisterForSingleUpdate before... and it occurred to me that if I utilize that function in multiple quests or scripts, will they ... clash(?) with each other? Would multiple uses of it work independently of each other as long as they are limited to different scripts or quests?

Like use something like RegisterForSingleUpdate with a randomly generated time? Have that kick off the dialog quest?

...

I appreciate the help!  I now have a few new things to try... I tried for like 2 years to get it working properly before I gave up.

Posted

SM is reliable, once you understand what triggers it.  In fact, the only events that have obscure conditions are the spontaneous dialogue ones I mentioned earlier, and those that don't work at all.

RegisterForSingleUpdate works on the level of the Form.  If you have multiple scripts on the same object, they all share the same schedule.  Separate objects each have their own schedule.

You can indeed use registerForSingleUpdate with randomized times.  I use that a lot, with exponentially distributed wait times:

RegisterForSingleUpdate( -30.0 * Math.log( Utility.randomFloat())) ; exponential with 30.0s average; requires SKSE

Your method of chaining your scene after an initial greet is a good option.  If you have other, more complex cases, let us know.  There are many different ways to deal with all sorts of situations (and some situations for which there are no simple solutions, alas).

  • Like 1
Posted

I really like the idea though of using the randomized times on registerforsingleupdate to kick off the scene. I can then have MUCH greater control over how often it runs... I can randomize it for once a day but guarantee it'll run within the next 30 seconds say...

I had an issue with a quest just a few days ago. The quest was to kick off 3 days after the completion of the Burning of King Olaf quest. I originally wanted it to trigger by an Idle dialog from Aia Arria saying something simple like "Thanks for restoring the festival!" Something you'd ignore, but it triggers the register and three days later, you get a courier letter. Problem was, the Aia Arria's idle dialog wouldn't always fire timely. Sometimes wouldn't fire at all. I Ended up removing that and just assigning it to a location trigger that kicked off the register and then just disables itself.

But if I could use that to guarantee it'd run within the next 10-20 seconds... that would have worked decent.

I've never had more than one register working at the same time in a single quest. I've used it multiple times in a quest, but never at the same time, mostly to trigger the next stage and it stops when done. But I have multiple quests that use it, so as long as I don't use it more than once concurrently in a single quest or object, it should be fine to utilize in multiple quests.

To be honest, I got the idea of chaining the idle dialog to the scene from something I saw in a YT video by CadenBlackGaming. He was talking about triggering a quest stage from something like sitting in a chair and said you can even do it by an idle dialog to kick off randomly... which got me thinking about it.

I appreciate the help!

Posted

Those Misc commentaries are super unreliable, and should only be used for idle commentary and never relied upon to progress quests.   Vilja relies on these a lot, and it gets broken so easily it ain't funny. 

If there are potentially 3 things an NPC can say when player is near, you might get other two options 20+ times before getting the 3rd.

People also might have mods installed to either make NPCs comment a lot less.   Or to expand their repertoire.  And now your quest-triggering phrase becomes a lower priority option behind 30+ others.

SM is quite reliable, but it is one of more obscure and less documented mechanisms and user error is rather common.

My recommendation to have SM start the quest, and then quest start scene via script was mainly to isolate those events and see where things are failing.   

Posted

I noticed that. I couldn't get the misc idle dialog to fire reliably which is why I ended up just putting a location trigger across the exit that forces the player across it once the olaf quest completes.  The trigger disables itself once proper conditions are met but the script still runs from the beginning of the game until that point. I don't think it lags much at all, I made the script as tight as possible for non-player triggers... but I'd still rather not add to it. I suppose I might be able to set the trigger initially disabled and use the Story Manager to Enable the trigger once the quest completes? Maybe on location change testing for Olaf quest stage...

I'll look into the Story Manager method again. I still want to try the suggestion with using a script fragment MyScene.Start() instead of On Quest Start... See if that keeps papyrus from having a fit...

Posted

Tried starting the scene from the Story Manager again only using a stage fragment to start the scene.

Got the same Papyrus error:

[05/08/2025 - 01:23:00PM] Error:  (8A19ABC6): cannot start scene because its parent quest was not running.

And the quest was indeed running. The story manager started the quest just fine, but the scene refused to start with a papyrus error. As it almost always did.

If you use story manager to start a quest, any scenes will REFUSE to run. It's been doing that for years. As I said, unreliable.

Posted

If you can share your .esp somewhere, (and stage fragment script of the quest) we can take a look.    SM literally only triggers the quest.   So if you get that trace, it means SM is doing its job.   But something must be off in either the quest or the scene.    Oh, and a bit of an idea:  in the script, before the scene starting line, add 'Utility.Wait(3.0)'

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...
OSZAR »