Jump to content

"BUT IT'S THE SAME THING!" Various questions about modding.


pandagoat

Recommended Posts

Hello Nexus community! This is my first time posting, so if I violate any rules please let me know through email. :smile:

I have a few questions and some head-splitting issues about(mostly) quests.

 

 

So I'll dive right into the issues I'm facing. My quest is 5 stages long.(two of them, 0 & 40, are my blank-beginning and end stages. three others are what the player sees.)

 

-At stage 10

I am given the quest, and must pick up a door key... Here's my first problem with that.

I have assigned the door key(Alias) to objective 10, but the navpoint(little arrow over objectives) doesn't appear.

Though the quest can continue on to the next stage.

 

-At stage 20

I must kill a unique NPC. The NPC(Alias) is assigned to objective 20. The navpoint shows above the NPC as normal. However the npc in question, when killed, doesn't advance the stage of the quest. The navpoint remains on him as if he is still alive.

 

-At stage 30

I have to talk to the unique NPC who gave me the quest. This part is largely undone because I wanted to make sure the first two stages are playable before tackling other aspects.

(The concept of this stage is to have the player forcegreet the quest giving NPC and then be sent to prison, or to a new location.)

 

 

I'm not quite sure what you want to look at, so I will try to detail what scripts are being, or attempting to, run for each stage.

 

[==========================================================================================]

 

Stage 10:

-Key (the object used to unlock door)

Has an Alias attached to object?: Yes(as Forced to the Key (AKA: selected in the render window))

Alias attached to appropriate Objective?: Yes

Is PAPYRUS attached to object?: Yes

PAPYRUS:

propertyname=AAArOPmainquest1 (which is also the name of my quest ID)

Scriptname aOPkeystealscript extends ObjectReference
Quest Property AAArOPmainquest1 Auto
Event OnContainerChanged(ObjectReference newcontainer, ObjectReference oldcontainer)
if (newcontainer == Game.GetPlayer())
AAArOPmainquest1.SetStage(20)
AAArOPmainquest1.SetObjectiveDisplayed(20)
AAArOPmainquest1.SetObjectiveCompleted(10)
Endif
EndEvent
[==========================================================================================]

Stage 20:

-NPC (Braotus, the NPC that the player must kill to advance the quest)

Has an Alias attached to object?: Yes(as Unique Actor to the NPC)

Alias attached to appropriate Objective?: Yes

Is PAPYRUS attached to object?: Yes

PAPYRUS:

propertyname=KillBraotusQuestAdvancement

Scriptname AAArOPBraotusDeath extends ObjectReference
Quest Property KillBraotusQuestAdvancement Auto
Event OnDeath(Actor killer)
KillBraotusQuestAdvancement.SetStage(30)
KillBraotusQuestAdvancement.SetObjectiveDisplayed(30)
KillBraotusQuestAdvancement.SetObjectiveCompleted(20)
EndEvent
[==========================================================================================]
Stage 30:
-NPC (Denosis, the NPC that the player will talk to and ultimately get arrested by)
Has an Alias attached to object?: Yes(as Unique Actor to the NPC)
Alias attached to appropriate Objective?: Yes
Is PAPYRUS attached to object?: No
PAPYRUS:
propertyname= nil
(None yet)

 

[==========================================================================================]

 

 

Now, as far as I know, I am not reaching Stage 20 because NPC Braotus is still alive even after having his health cut to zero and his carcass falling with a "thump".(I've sent him to the afterlife many a time)

In addition, Stage 10's objective, the Key, isn't showing its navpoint to me, even though I am at the appropriate stage.

Stage 30 is still a bit away. Until I figure out what I've done wrong here I won't be advancing.

 

 

I've spent nearly 60 hours learning how to make quest and dialogue. Roughly 48 of those hours were without break.(48 straight hours of head bashing, though I learned a lot)

 

 

If you require extra information please let me know.

If anyone has any insight on my dilemma, please divine your wisdom to me! I really want to master the use of the creation kit and develop this mod to its fullest.

 

~Thank you for your patience and taking the time to read and consider all this!! :3

Link to comment
Share on other sites

-At stage 10

I am given the quest, and must pick up a door key... Here's my first problem with that.

I have assigned the door key(Alias) to objective 10, but the navpoint(little arrow over objectives) doesn't appear.

Though the quest can continue on to the next stage.

I've found that sometimes new quests can be a little buggy and cetrain things like dialogue and quest objectives won't show up. Sometimes the quest won't start at all. For this reason you should always test from a clean save EVERY time. This means a save without your mod active.

 

As for the script the only thing I can see that's odd about it is that you've left the ak's off however I'm not exactly sure if this matters but I always leave them on. You should also run SetObjectiveCompleted() BEFORE SetObjectiveDisplayed

Scriptname aOPkeystealscript extends ObjectReference  
 
Quest Property AAArOPmainquest1  Auto  
 
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
 if (akNewContainer == Game.GetPlayer())
  AAArOPmainquest1.SetStage(20)
  AAArOPmainquest1.SetObjectiveCompleted(10)
  AAArOPmainquest1.SetObjectiveDisplayed(20)
 Endif
EndEvent
For your stage 20 script use OnDying() instead of OnDeath(), It just seems to work better. Again, ObjectiveCompleted before displayed.
Scriptname AAArOPBraotusDeath extends ObjectReference  
 
Quest Property KillBraotusQuestAdvancement  Auto  
 
Event OnDying(Actor akKiller)
 KillBraotusQuestAdvancement.SetStage(30)
 KillBraotusQuestAdvancement.SetObjectiveCompleted(20)
 KillBraotusQuestAdvancement.SetObjectiveDisplayed(30)
EndEvent

Try those and if they don't work let me know. When you've written all your dialogue and such feel free to PM me if you need any help with the scripting. As I said I don't know if any of these fixes will work, the CK is a fickle thing, however I use many similar scripts in my own mod and they seem to work fine for me.

Link to comment
Share on other sites

 

Try those and if they don't work let me know. When you've written all your dialogue and such feel free to PM me if you need any help with the scripting. As I said I don't know if any of these fixes will work, the CK is a fickle thing, however I use many similar scripts in my own mod and they seem to work fine for me. 

Thanks for the swift reply, Anikma!

 

I followed your advice and placed the SetObjectiveCompleted() before the SetObjectiveDisplayed(), and used OnDying as opposed to OnDeath.

This has made my quest functional, save for when the quest is completed it doesn't enter the in-game category of finished quests. This is probably a simple fix as I've played with the settings in the quest for a while in a blind attempt to fix my bugs.

 

My quest now shows the appropriate navpoints, and advances the stages accordingly. (I've got you to thank for this :P)

 

Now there is a matter of my Stage 30. What I want to happen, once the player activates the topic, is to go through the dialogue found in my quest and then get arrested. By whom doesn't matter, so long as the effect of being spoken to, then read your rights and sent to jail is emulated.

 

The way I had tried to set this up was by using a custom faction, assigning it to NPC Braotus(who we kill) and to NPC Denosis(who we talk to in order to complete the quest), and have a guard of the same faction arrest you, or alert the faction of your crime.

This part admittedly was half-assed, as I never got to properly test it out within my quest.

 

​I am unsure how I should accomplish this. Currently I am playing around with the editor in order to create this "scene" without actually using scenes.

 

 

As a sidenote, you mentioned turning the ak's on and off. I don't understand what is meant by this. Is it a matter of removing the ak in, say, akKiller?

Again, thank you for your help. :)

 

 

Just an overview of what I wish to accomplish in this quest:

Player talks to NPC Denosis, gets quest.

Player is tasked with acquisition of a key.

Player acquires the key and is tasked with killing NPC Braotus.

Player kills NPC Braotus and is tasked to speak to NPC Denosis.

NPC Denosis(or any other NPC at this point) arrests the Player.

Link to comment
Share on other sites

I couldn't read sot of that last part b/c I'm on my phone and its navy background, but:

 

Your scripts should be ON the aliases and ergo extend ReferenceAlias. You can then also remove the quest property and change it to the function GetOwningQuest() b/c it's an alias.

 

I recommend moving the objective setting to the stage, and in the script, just setting the stage (so you'd put SetObjectiveDisplayed(10) in stage 10, and in the script JUST GetOwningQuest().SetStage(10) - same for the other script). In quest stages, you don't need a quest property or anything for that type of function, you just do SetObjectiveDisplayed(10), not myQuestProperty.SetObjectiveDisplayed(10) or anything like that.

 

Make sure you've generated an SEQ file if the quest is start game enabled. See the stickied thread "Dialogue Bug Workaround".

 

Stage 40 should have completes quest checked.

Link to comment
Share on other sites

I can't seem to get the hang of quoting. lol

 

@Matt, On the alias' papyrus you say? I'll have a go at it for the second quest, because the solution to my quest issue has been posted already. Your however presents a convenient alternative which I'll most likely employ in future quests. Thanks :)

The way I understand papyrus scripts is that they can be applied to any object, but they must be defined as the objects papyrus script.

 

I've done so already, as advised in many of the tutorials I've grind through.(Went back and checked if I had their load order wrong)

 

Spent a LONG time trying to figure that one out hahaha. Yes, I have a SEQ file.

Just so people reading this know: Make a SEQ file using tes5edit by loading your modfile into the tes5edit software, and right-clicking your mod on the loaded list(lefthand side), navigate to "other" and hit the generate SEQ file. bam. Wish I knew this before I started T.T

 

Sorry for that.. Getting used to computers and all. Never imagined myself asking for script help in a forum, as I always believed scripting to be out of my ability. My last post without navy background:

 

Try those and if they don't work let me know. When you've written all your dialogue and such feel free to PM me if you need any help with the scripting. As I said I don't know if any of these fixes will work, the CK is a fickle thing, however I use many similar scripts in my own mod and they seem to work fine for me. 

Thanks for the swift reply, Anik

 

I followed your advice and placed the SetObjectiveCompleted() before the SetObjectiveDisplayed(), and used OnDying as opposed to OnDeath.

This has made my quest functional, save for when the quest is completed it doesn't enter the in-game category of finished quests. This is probably a simple fix as I've played with the settings in the quest for a while in a blind attempt to fix my bugs.

 

My quest now shows the appropriate navpoints, and advances the stages accordingly. (I've got you to thank for this :tongue:)

 

Now there is a matter of my Stage 30. What I want to happen, once the player activates the topic, is to go through the dialogue found in my quest and then get arrested. By whom doesn't matter, so long as the effect of being spoken to, then read your rights and sent to jail is emulated.

 

The way I had tried to set this up was by using a custom faction, assigning it to NPC Braotus(who we kill) and to NPC Denosis(who we talk to in order to complete the quest), and have a guard of the same faction arrest you, or alert the faction of your crime.

This part admittedly was half-assed, as I never got to properly test it out within my quest.

 

​I am unsure how I should accomplish this. Currently I am playing around with the editor in order to create this "scene" without actually using scenes.

 

 

As a sidenote, you mentioned turning the ak's on and off. I don't understand what is meant by this. Is it a matter of removing the ak in, say, akKiller?

Again, thank you for your help. :smile:

 

 

Just an overview of what I wish to accomplish in this quest:

Player talks to NPC Denosis, gets quest.

Player is tasked with acquisition of a key.

Player acquires the key and is tasked with killing NPC Braotus.

Player kills NPC Braotus and is tasked to speak to NPC Denosis.

NPC Denosis(or any other NPC at this point) arrests the Player.

 

Link to comment
Share on other sites

You can put a script on anything as long as it extends the right thing. So a script on an Actor must extend Actor, on a reference must extend Reference, on a quest must extend Quest, on a weapon must extend Weapon, on an alias must extend ReferenceAlias/LocationAlias depending on what type of alias it is.

 

http://www.creationkit.com/Bethesda_Tutorial_Quest_Aliases

Link to comment
Share on other sites

Remember when scripting for dialogue you can't really add the script to the dialogue itself, as its just a fragment. What you can do is have GetOwningQuest().SetStage(#), then have all the required scripting in the particular stage. Here's what I would do in you shoes.

 

When you kill the guy the quest sets to stage 30. The guard you want to have arrest the player also has a Forcegreet AI package with the conditions set to stage 30. Upon completing his dialogue, the quest advances to stage 40 where the script runs moving the player into the dungeon or wherever. You can do this with a custom faction if you want but it may be a little difficult, especially if you only want it to be quest specific.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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