wilwhitt56 Posted November 7, 2022 Share Posted November 7, 2022 (edited) Ok, so I made a NEW quest to replace the old one (it turns out it WAS the Aliases that were causing it, but i'm starting fresh). So far it's actually working, but as usual i've run into a snag. During stage 30, your suppose to talk to someone else after getting a ring. The problem is that the dialogue isn't popping up for him. The dialogue is in the right quest, and I'm pretty sure it's set up correctly. EDIT: the dialogue for HIS QUEST STAGE isnt working, the stuff in his actual dialogue in a separate quest works fine. This is the script that's in his end dialogue, that's suppose to jump to stage 40;GetOwningQuest().SetObjectiveDisplayed(30) GetOwningQuest().SetStage(40) The GetStage is in the first part of his dialogue like it should, and is set to 30. That's correct right, stage 30?His ID is set to him as well. This is the script for the Quest Stage: SetObjectiveCompleted(20)SetObjectiveDisplayed(30) There are no Alias at all for them, due to that being the problem in the first one. Would the quest have issues with using two separate people? Could that be the issue? Edited November 7, 2022 by wilwhitt56 Link to comment Share on other sites More sharing options...
wilwhitt56 Posted November 7, 2022 Author Share Posted November 7, 2022 I've decided to forgo the NPC in question, but now I see another problem. The tutorials I've seen talk about using Aliases for the quest, mainly the quest giver and the ring/amulet. I've benn having trouble with using these, as they cause the quest giver to not speak to me and the ring to not trigger the next stage of the quest. Is there a way to do the quest without using Aliases? Link to comment Share on other sites More sharing options...
wilwhitt56 Posted November 8, 2022 Author Share Posted November 8, 2022 Good news, the quest is now working! Bad news, I can't get the reward to work. I followed what this guys said and made a property for a MiscObject (Gold001) and put this script in the last stage:Game.GetPlayer() . AddItem(Gold001, 30) It keeps saying variable Gold001 is undefined I'm not sure what could make it undefined, so a little help would be appreciated, please. Link to comment Share on other sites More sharing options...
Sphered Posted November 8, 2022 Share Posted November 8, 2022 Eh just put AddItem(Game.GetForm(0xF),30) instead You didnt declare gold in a way that function sees it, but aside, gold is always FormID of 0xF so just go that route if you just want this problem to go away Link to comment Share on other sites More sharing options...
saintgrimm92 Posted November 10, 2022 Share Posted November 10, 2022 (edited) Good news, the quest is now working! Bad news, I can't get the reward to work. I followed what this guys said and made a property for a MiscObject (Gold001) and put this script in the last stage:Game.GetPlayer() . AddItem(Gold001, 30) It keeps saying variable Gold001 is undefined I'm not sure what could make it undefined, so a little help would be appreciated, please. If you want to use gold001, then on the script area of the stage, click properties, in the new window click "add property". For the property type, I'm pretty sure gold is a miscitem, name it gold001 (or anything really). If you use gold001, you should be able to use auto-fill to make it select the gold coin item. If you use anything else for property name, manually select the gold misc item for the property. As for your alias issues, a quest can completely fail to fire if you don't have your aliases set up properly. If the NPC is ever disabled, you MUST select the allow disabled box at the top of the alias window. If the NPC is essential, you MUST tick the box that says the alias is essential, if the NPC dies at any point, either killed by the player or through quest stages, anything like that, you must click the allow dead box, etc etc. If you're using the unique NPC alias type, I suggest against that. I had lots and lots of issues in the past trying to get aliases to work that way. Instead, load up the cell where the NPC is, make the alias a "specific reference". Click choose reference, a tiny box will pop up with another button very similar about choosing the reference, click that. Your mouse pointer will turn into like a target shape (circle with + in it). Just double click the NPC you want for the alias, click ok on the small window, double check you have the correct boxes ticked on the top of the alias window and then click ok on the alias window, all done. EDIT:For dialogue: It SOUNDS to me like you did it correctly. But let me go over how I make dialogue step by step anyway, maybe you'll find something you did differently and can fix your issue. I use dialogue views, if you're making the dialogue through "player dialogue" I have no idea. Never done it that way. Your dialogue SHOULD show up in both though I believe, such as if you added dialogue to the player dialogue tab, it should also show up in the dialogue views tab and vice versa (combat/favor/etc dialogue though has to be done on that specific tab. Only player dialogue/dialogue views overlap if I remember correctly). On the far left side under the words "Dialog Views" right click > New. You can name the new Dialogue view ID anything you want. I name it after the NPC and use 1 dialogue view for entirety of an NPC's dialogue. So let's just say the NPC's name is Zharkov and the quest ID is AAVampQuest01. I would name the ID: AAVampQuest01Zharkov Now that you've created a 'Dialog View', click the name of it. In this case, AAVampQuest01Zharkov. Now, right click anywhere on the blank white space to the right, click create branch. Because I use the same view for all dialogue with 1 NPC, I do a numbering system. The first branch will be named AAVampQuest01Zharkov01. The CK will then offer to name the first piece of dialogue for you, I always just use what it offers. In this case, it would offer "AAVampQuest01Zharkov01Topic". Double click the topic it named for you, a "topic" window will pop up. For "Topic Text" Type in what you want the player to have the option to say. In the big box taking up most of the space under topic text, right click > New. Another window will pop up where you type in what the NPC will say back to the player after the topic text is chosen in dialogue. After you type what the NPC replies with and hit ok, a topic info box will appear. I always click "force subtitles", but if you're recording voice, this isn't required. Under conditions, right click > new. On the condition window, you seem to know what to do. GetStage "AAVampQuest01" == 30 AND Next condition (this one will make it so ONLY your npc will be able to say these lines) GetIsID "AAVampKingRestored" == 1 AND. (AAVampKingRestored is my Zharkov NPC, although I figure you could probably guess that) Click ok. Reopen the topic info. Double click on what your NPC is going to say. Now you can record your audio, or if you're like me just record silence. If you just record silence + force subtitles, your mod won't require that "silent voice mod" to work. But make sure you record long enough silence for everyone to read the subtitles, remember not everyone reads at the same speeds. Now, if you want your NPC to say more without the player saying anything, click the "invisible continue" box on the top right of the topic info window. Right click inside the branch (yellow area that your 1st topic is sitting inside of) > add topic. This topic you'll need to name yourself. I keep with the same numbering system and just take a word/idea from what the topic text will be. If the player says "okay", then my topic text might be: "AAVampQuest01Zharkov01OK" You do NOT need to set condition for quest stage for any following dialogue. Only the FIRST piece of dialogue. So in the AAVampZharkov01 branch, the ONLY piece of dialogue that has getstage condition is AAVampQuest01Zharkov01Topic. The rest of the dialogue in the branch only has the condition of "GetIsID "AAVampKingRestored" == 1 AND". This is because all following dialogue is locked behind the first piece of dialogue. So if you can't access that first piece because you're not on that stage of the quest, none of the following dialogue will be accessible either. After you have all your dialogue for that branch, hover over one of the dialogue boxes on the branch. Your mouse pointer will turn into a white hand. Click and drag to the 2nd dialogue box. This will create an arrow from the first dialogue box to the 2nd. (Black for normal, where the player will talk again b4 the NPC continues, green for invisible continue, where the NPC continues talking without the player saying anything). On the final topic, where the NPC is done talking, click the goodbye checkbox and set the next stage in the "scripts > end > papyrus fragment" box. "GetOwningquest().SetStage(35)" for example. Now, say that NPC had you go do something, and you need to return to the NPC at stage 40 to give him the item he had you go find. Click the dialog view you already created for this NPC (or make a new one, it's entirely up to you, I think it's easier to keep straight for me personally to keep all the dialogue of a specific NPC inside one dialog view, but really I don't think it matters). Now right click in the white area again, NOT the yellow area from the branch you've already made and just repeat the process. Right click > new branch. This is the 2nd time talking to this NPC, so the branch ID will be: AAVampQuest01Zharkov02, the auto-name for first topic is fine, will be AAVampQuest01Zharkov02Topic. Set the getstage condition as 40 this time (or whatever stage you need it to be), and use the same getisid as the first branch (the NPC you're talking to). Here is a screenshot from a quest I've made's dialogue views tab. EDIT2: If you want options for the player to say, for example if the NPC asks them a question and you want to put 2 options for the player to reply. Make both topics, fill out what you want the player/NPC to say. Then, drag the arrow from the "question" box to the first answer you want displayed, and then repeat that to the 2nd box. The end result will look something like this: That can be seen here. The NPC Corvo is explaining some of the lore behind the mod (left topic). The player has the option to tell him to go on, where he describes the lore in full, or to skip the lore and go directly to the point. If you drag the arrow to the bottom box first, then when the dialogue is happening in-game, that bottom box will be the first option for the player to choose. So always drag the arrow to the FIRST option you want to appear in the dialogue. I want the top option (to continue lore) to be the first option for the player in the dialogue. So I drag the arrow from the left box to the top right box first. THEN I drag the arrow from the left box to the bottom right box. Edited November 10, 2022 by saintgrimm92 Link to comment Share on other sites More sharing options...
saintgrimm92 Posted November 10, 2022 Share Posted November 10, 2022 (edited) That was getting long, so I decided to make another post instead.I was reading through your problem with dialogue again, I still think you set it up properly, BUT if your quest is NOT start-game enabled (you can find this option on the very first tab on the quest window) dialogue will NOT work without a seq file.I don't remember how to generate a seq file though... I believe it's done in TES5edit? Just google "skyrim creation kit generate seq" and you should find all you need. It's an easy thing to do, I just don't remember the details.EDIT:Here ya go.https://wiki.beyondskyrim.org/wiki/Arcane_University:Seq_Guide EDIT2:I apologize for being all over the place here.For the ring to set the next stage when picked up, you need to put a script on the ring itself.You have 2 options as well. You can make the ring an alias, it's something I don't do often, so you'd need to look up exactly how, but from what I remember, in the alias for the ring you'd do something like:Fill type: create reference to object > Ring > create IN > NPC that drops the ring (or container if it's not dropped by NPC)But if the NPC you're killing doesn't respawn OR if you don't care if the player can keep getting the ring over and over, you can just place the ring inside of the NPC's inventory and not bother with an alias for the ring at all, and just use the NPC as an alias so you can make the quest compass point to the NPC.Either way, this script will work to set the stage when the item is picked up. The script goes on the actual item. In the properties of the script, just set the value of "QuestStage" property to the stage you want the quest to be on after the ring is picked up. and the "VampQuest" property to your quest. You can remove the int property if you want and just use #s for the quest stage. I just have this designed so I can use it on multiple items across multiple stages without having to re-write the script each item. Set up like this, the same script can be put on items that will all set the quest to different stages. Quest Property VampQuest Auto Int Property QuestStage Auto Event OnContainerChanged(ObjectReference NewContainer, ObjectReference OldContainer) If NewContainer == Game.GetPlayer() VampQuest.SetStage(QuestStage) EndIf EndEvent EDIT3:Actually, you may not be able to do the ring alias. I have no idea about this, you'll need to research it or get another modder's input.But when an alias is creating a reference of an item inside a container/npc inventory, does it retain it's scripts? Perhaps that's why your ring isn't setting the stage when picked up as an alias. Aliases can have scripts put on the alias directly, through the alias window. If you're making the ring an alias, using a script similar to the one I provided, and it's still not progressing the quest, perhaps try putting the script on the ring's alias instead. Might not work right, I have no idea. But something you can try if all else fails.I feel as if I've used an alias for an item with a script in the past and it worked though... So I feel like just having the script on the item should work. But that's been so long ago that I don't really trust my memory on it, so you probably shouldn't either lol. Edited November 10, 2022 by saintgrimm92 Link to comment Share on other sites More sharing options...
greyday01 Posted November 10, 2022 Share Posted November 10, 2022 If a NPC is unique, and no other mod is using the object does the NPC REALLY need to be an alias? I can see if using a vanilla character that you want to do something different during the quest or using standard items like a iron sword that you want to give a unique name for a fetch quest. For things like the elder scrolls where the items are unique it seems it causes more problems than help if they are made into aliases. Like you can't store them because the item in your inventory is an alias not a simple object. Link to comment Share on other sites More sharing options...
saintgrimm92 Posted November 10, 2022 Share Posted November 10, 2022 If a NPC is unique, and no other mod is using the object does the NPC REALLY need to be an alias? I can see if using a vanilla character that you want to do something different during the quest or using standard items like a iron sword that you want to give a unique name for a fetch quest. For things like the elder scrolls where the items are unique it seems it causes more problems than help if they are made into aliases. Like you can't store them because the item in your inventory is an alias not a simple object. If you want the quest compass to point toward the NPC, yes. As far as I know, the only way to make the little arrow on the compass and in-game point to an NPC, is by creating an alias for them, and making the objective point toward that Alias in the objective tab. If you're making a morrowind style quest without the "quest pointers" then yeah, you wouldn't need the alias. I've never personally done that. I always set up my quests to always have a quest pointer on the objective. So any time one of my quests tells the player to talk to an NPC, that NPC is an alias so they can have the quest arrow above their head/on the game compass/map. Link to comment Share on other sites More sharing options...
Recommended Posts