ReverendFelix Posted December 7, 2021 Posted December 7, 2021 Is this a good place for this topic... IDK. I think there needs to be a modding topic category for individual games. Or at least a topic for making mods in general. Anyway... So as it says, I'm working on a mod that involves a short journal based quest. I have it basically all together using a custom trigger box to enable the quest. Then an object needs to be activated to start the quest. I have debug message boxes in place to let me know the TB and OBJ are firing their respective quests. Both return their message boxes, but the quest will not 'start'. Not on screen, or in the journal. Scripts for stage advancement so far; Spoiler At SetStage 10 the quest is supposed to kick off. Of course there was a lot more to it all. Like setting up the objectives and stages and blah blah. I have researched extensively online for the solution, but I can't find a tutorial that covers journal based side quests. So can someone either help me out here, or point me to a relative tutorial?
fishburger67 Posted December 7, 2021 Posted December 7, 2021 3 hours ago, ReverendFelix said: Is this a good place for this topic... IDK. I think there needs to be a modding topic category for individual games. Or at least a topic for making mods in general. Anyway... So as it says, I'm working on a mod that involves a short journal based quest. I have it basically all together using a custom trigger box to enable the quest. Then an object needs to be activated to start the quest. I have debug message boxes in place to let me know the TB and OBJ are firing their respective quests. Both return their message boxes, but the quest will not 'start'. Not on screen, or in the journal. Scripts for stage advancement so far; Reveal hidden contents At SetStage 10 the quest is supposed to kick off. Of course there was a lot more to it all. Like setting up the objectives and stages and blah blah. I have researched extensively online for the solution, but I can't find a tutorial that covers journal based side quests. So can someone either help me out here, or point me to a relative tutorial? There is no script in your spoiler, so it is hard to know how to help you. But, I will tell you this much. After you quest is supposed to have started, do sqv <yourquest> and see if it has started. If it has, then you likely need to have a "Quest Objective" at stage 10. The engine does not report a quest started if this is not the case.
ReverendFelix Posted December 7, 2021 Author Posted December 7, 2021 32 minutes ago, fishburger67 said: There is no script in your spoiler, so it is hard to know how to help you. But, I will tell you this much. After you quest is supposed to have started, do sqv <yourquest> and see if it has started. If it has, then you likely need to have a "Quest Objective" at stage 10. The engine does not report a quest started if this is not the case. Sorry my internet dropped on me while saving the post. I have made some progress on getting it to fire off right. But it is happening a stage too soon. It's skipping a part where an object needs to be activated to start the quest. I also have used the sqv command and it is running. I removed the debug messages from the scripts, and am trying a different approach to deal with the skip part problem. Here are the scripts; Spoiler This one is attached to a trigger box and enables the quest; Scriptname revWellKeyQuestTrigger extends ObjectReference Int RunOnce Quest Property revWellKeyQuest Auto Actor Property PlayerREF Auto Event OnTriggerEnter(ObjectReference akActionRef) If akActionRef == PlayerREF If RunOnce == 0 revWellKeyQuest.Start() revWellKeyQuest.SetStage(0) RunOnce = 1 EndIf EndIf EndEvent This one is supposed to start the quest when the object is activated; Scriptname revWellKeyQuest2 extends ObjectReference Int RunOnce Quest Property revWellKeyQuest Auto Actor Property PlayerREF Auto Message Property DoorMessage Auto Event OnActivate(ObjectReference akActionRef) If akActionRef == PlayerREF If RunOnce == 0 revWellKeyQuest.SetStage(10) RunOnce = 1 If akActionRef == PlayerRef DoorMessage.Show() EndIf EndIf EndIf EndEvent Actually the scripts just didn't show up in rich text format, from a direct copy/paste of my script editor.
fishburger67 Posted December 8, 2021 Posted December 8, 2021 55 minutes ago, ReverendFelix said: Sorry my internet dropped on me while saving the post. I have made some progress on getting it to fire off right. But it is happening a stage too soon. It's skipping a part where an object needs to be activated to start the quest. I also have used the sqv command and it is running. I removed the debug messages from the scripts, and am trying a different approach to deal with the skip part problem. Here are the scripts; Hide contents This one is attached to a trigger box and enables the quest; Scriptname revWellKeyQuestTrigger extends ObjectReference Int RunOnce Quest Property revWellKeyQuest Auto Actor Property PlayerREF Auto Event OnTriggerEnter(ObjectReference akActionRef) If akActionRef == PlayerREF If RunOnce == 0 revWellKeyQuest.Start() revWellKeyQuest.SetStage(0) RunOnce = 1 EndIf EndIf EndEvent This one is supposed to start the quest when the object is activated; Scriptname revWellKeyQuest2 extends ObjectReference Int RunOnce Quest Property revWellKeyQuest Auto Actor Property PlayerREF Auto Message Property DoorMessage Auto Event OnActivate(ObjectReference akActionRef) If akActionRef == PlayerREF If RunOnce == 0 revWellKeyQuest.SetStage(10) RunOnce = 1 If akActionRef == PlayerRef DoorMessage.Show() EndIf EndIf EndIf EndEvent Actually the scripts just didn't show up in rich text format, from a direct copy/paste of my script editor. Not sure what the Quest modifier in your property statement. I have never used it in thousands of lines of papyrus code. eg "int RunOnce Quest Property ..." I would normally write that as just int Property RunOnce = 0 Auto HIdden I am presuming that his all compiles, so it must be right, I have just never before seen it used and there is no document in CK for it. evWellKeyQuest.Start() revWellKeyQuest.SetStage(0) You don't need the setStage(0). Quests always start at your "startup" stage which I assume is 0 for you. This starts the quest, but does not make it show up in your quest log. So, assuming that you have a quest objective at stage 10, your revWellKeyQuest2 should have made the quest active in the log, but ONLY if you have a quest objective at stage 10 You code there would be better written as Auto STATE notActivated Event OnActivate(ObjectReference akActionRef) if akActionRef == PlayerREF revWellKeyQuest.SetStage(10) gotostate "activated" PlayerRef DoorMessage.Show() EndIf endState state activated ;Dummy state endstate You say above "Both return their message boxes". That tells me that the triggers happened. If the quest does not show up in your log and onscreen when setstage 10 is called, you don't have a quest objective there.
ReverendFelix Posted December 9, 2021 Author Posted December 9, 2021 Thanks for the info. I've been digesting what you've said, and trying to work out what I broke on my end. From what I can see, the triggerbox has stopped firing again. No idea why, I had everything working up to a point in the quest. Then I was trying to get the first quest marker to work. Somehow I borked the whole thing. The Int property controls the RunOnce function okay, but your suggestion looks more proper. I also thank you for the clarification regarding this; On 12/7/2021 at 4:07 PM, fishburger67 said: evWellKeyQuest.Start() revWellKeyQuest.SetStage(0) You don't need the setStage(0). Quests always start at your "startup" stage which I assume is 0 for you. This starts the quest, but does not make it show up in your quest log. I'll make adjustments there for sure. On 12/7/2021 at 4:07 PM, fishburger67 said: Auto STATE notActivated Event OnActivate(ObjectReference akActionRef) if akActionRef == PlayerREF revWellKeyQuest.SetStage(10) gotostate "activated" PlayerRef DoorMessage.Show() EndIf endState state activated ;Dummy state endstate This is simply elegant? You're a really good scripter. Edit; Regarding this bit you mentioned; "eg "int RunOnce Quest Property ..." it actually, int RunOnce Quest Property revWell... Actor Prop... I simply did my spacing wrong when posting.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.