Jump to content

Testing mods / scripts: Difference between "setstage" or "completequest" and actually playing through the quest?


Recommended Posts

Good evening everybody!

 

I am currently working on a mod that (among other things) has a script in it that should enable an "EnableMarker" when a certain quest is completed.

 

Pretty simple stuff ...

 

Basically the script goes like this:

Scriptname NRHQ_EnableOnQuestComplete extends ObjectReference
{Enables something when a specified quest is completed.}

ObjectReference Property ThingToEnable Auto
{The thing that gets enabled when a specified quest is done.}

Quest Property questToCheck Auto
{The Quest that will be checked for completion.}

Event OnLoad()
    if (questToCheck.IsCompleted())
        ThingToEnable.enable();
    endIf
endEvent

Now, does it make a difference if I just use console commands to "start" the quest, then "complete" the quest or actually play through the quest?

(Because when I use console commands, I get no "journal entry" for the quest ...)

Also, for this scirpt to work, I would have to "leave" the area and return (because it only "updates" onLoad), but since the player will be in an interior cell when the quest is completed, this won't be a problem ...

 

Or am I missing something here?

Is there any way to do this in a "more better" way?

Link to comment
Share on other sites

The more better way may be to have a known quet competion stage (convention is RunOnStart 10 and RunOnEnd 1000) ;

Self.RegisterForRemoteEvent(pTheQuest, "OnStageSet")

And then

Event Quest.OnStageSet(Quest  akSender, int auiStageID, int auiItemID)
   If (akSender == pTheQuest) && (auiStageID == iStageIamInterestedIn)
      Self.UnRegisterForRemoteEvent(pTheQuest, "OnStageSet")
      ;do stuff
   Endif
EndEvent

Then it doesnt matter how the quest gets there, its a simple stage trigger.

Link to comment
Share on other sites

Ok, but that brings up anohter questin:

 

Let's say that the quest "ends" at stage 500 and I make my script to check for that stage.

 

 

Does the game still "retain" that value even after the quest has ended?

Because the player might not immediatley go to the place where this script gets loaded ...

I have the script attached to the enable marker that should be enabled by the script. It's in an exterior cell somewhere.

And the script only gets loaded when that cell (and the object that the script is attached to) gets loaded, right?

 

Because if the quest is completed, there is no reeason for the game to keep the "current stage" - value, right?

Link to comment
Share on other sites

If a quest is running stages can be queried with GetStage() or GetStageDone(iStage)

 

Completed status does not affect this.

 

Stage and Objective info is only cleared if the quest is Reset() or Stop().

Link to comment
Share on other sites

If a quest is running stages can be queried with GetStage() or GetStageDone(iStage)

 

Completed status does not affect this.

 

Stage and Objective info is only cleared if the quest is Reset() or Stop().

Ok, got it!

So like "Radiant quests" might be reset when a new one starts or something like tht ...

 

The quest I wm planning on "checking" is a regualr quest, no a "repeating" one ...

 

Thanks for the explaination!

Link to comment
Share on other sites

  • Recently Browsing   0 members

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