logotype
22 -May -2013 - 18:25
Magic Cialis Online

Articles

The Elder Scrolls 5: Skyrim Modding Guides

Skyrim Quest Start of Game Bug Fix

User Rating:  / 0

The Skyrim Start Game Enabled Bug Fix

Also known by the misleading name "the Dialogue Bug" because missing dialogue is what most people see. What has actually happened is the entire quest, scripts and all fails to run, not just dialogue. Affected quests can still be run manually.

Introduction:

This guide is a compilation of fixes and work arounds for the Skyrim Start Game Enabled Bug that has affected quests made in the creation it since the release of the Skyrim 1.7 patch. The bug is also known as the Dialogue Bug to some. The issue is not actually a bug but a change to Skyrim introduced in the 1.7 patch that Bethesda failed to mention in the patch notes. Much to the frustration of modders such as my self who had to rework months of work to work around this issue.

I am going to share my own workaround for this issue along with some information Alexander J. Velicky and Arthmoor shared with the community on Bethesdas forum. Since posts on Bethesdas forum tend to disappear after 6 months, I am going to use this as a more permanent record of all fixes and workarounds I know about.

Do with it what you will.

Overview

The issue is by a missing SEQ file for quests marked start game enabled. The SEQ file is named after your mod so if your mod is called mymod, its SEQ file will be Mymod.SEQ. SEQ files are placed in a folder you need to create inside your Skyrim/data folder called SEQ.

The full path should look like this.

Steam\steamapps\common\skyrim\Data\SEQ

3 of these are fixes to the problem, 1 is a workaround that makes the problem obsolete and uses a system that does not need any SEQ files to work. I'll deal with the workaround first.

The Trigger Method

By Giskard

Find a trigger box in the world, they are the big square orange or red boxes you see in most city worldspaces. Select on and press CTRL C to copy it and then go to where you want to place your trigger and press CTRL V to paste it.

Double click on the trigger to open it, delete the Reference Editor ID and give it a name of your own. Then click on Edit Base and change the triggerbox ID to something unique and Ok the window, saying yes to any create new forum requests you get. Close the reference window and the triggers edit base window so all the trigger windows are closed. You have to do this because dragging new trigger boxes in to the world creates invisible trigger boxes that you cannot see to edit.

Double click on the trigger again to bring up the reference window and go to Primitive and use the X Y Z Bounds numbers to adjust the size of the box as needed. There are 2 black arrows that move the tabs left and right, if you cannot see primitive listed because other tabs like Location Ref Type is visible, use these black arrows to bring the Primitive tab in to view so you can select it and edit it.

Now click Edit Base to open up the trigger window up again and select the attached script and remove it.

Now click on ADD, then click on NEW Script and enter a name when prompted. Then press okay to add a new script to your trigger box. Once it appears listed under scripts, select and then right click and select source to edit the source file.

Then cut and paste this in to your new script under the line that says "Scriptname blarblarblar extends ObjectReference"

int doonce01
Quest Property MyQuest Auto

Event OnTriggerEnter(ObjectReference akActionRef)
if doonce01 == 0
;put your code in here
;example
MyQuest.start()
doonce01 = 1
endif
EndEvent

Now save the script and go back to the trigger window, select the script again, go to properties and select MYQuest then click on Edit Value. Find the quest you want to start and select it. MyQuest will become an alias for your quest name.

What the above script does is it checks if doonce01 equals zero, if it does, it starts MyQuest and then sets doonce01 to 1 so the next time the trigger runs, it does not try and to run MyQuest again.

If you want to add more quests to the trigger, try this example instead. You can keep on adding more quests using more doonce vars and more MyQuest properties.

int doonce01
int doonce02
Quest Property MyQuest01 Auto
Quest Property MyQuest02 Auto

Event OnTriggerEnter(ObjectReference akActionRef)
if doonce01 == 0
MyQuest01.start()
doonce01 = 1
endif

if doonce02 == 0
MyQuest02.start()
doonce02 = 1
endif

EndEvent

The beauty of this system is you can add several quests to it and have them all run from the same trigger. Its easy to update and test the trigger too, no messing around with SEQ files. Carefully placing the trigger where its needed and setting more conditions on the if doonce01 == 0 lines can control when a quest actually runs as well.

For example my Helgen mod uses this line in a trigger.

if (civwarrestore == 0) && (CWFinale.GetStage() >= 330)

This basically means wait until the end of the civil war quest line, then run this the next time the player enters this trigger. So you can delay start a quest using this method too. Very handy.

Trigger Placement:

If you place your trigger at the exit to the cave the player uses when leaving Helgen, it will run as soon as the player leaves Helgen during the opening sequence. But I advise against that for several reasons.

1) Alternative start mods would not be supported.
2) The papyrus script language is notoriously inefficient and having too many scripts running in the background from the start of game is not good for the in game performance. It can cause some serious performance issues so the Start Game Enabled option whilst useful, should not be used for every quest. This means the trigger method is actually more resource friendly for the player than the Start Game enabled method.

Your better off placing your trigger in an area where your quest needs the player to be in order to work. Like a door to a guild you made or a city the player has to visit to get your quests. This way the quests will start when they are needed and not sit in the background wasting CPU time.

The Steam Command Line Fix.

By Alexander J. Velicky and Arthmoor

To create an SEQ file the official way, try this tip. You must do this every time you make changes to your Start Game Enabled quests. Alex also made this video to explain it.

;

1. Open the main Steam window, and go to the Library tab.
2. Click the dropdown, and select 'Tools'.
3. Right click on Creation Kit in the list.
4. Select 'Properties'.
5. Click 'Set Launch Options...'
6. Type in -GenerateSEQ:PluginName.esp Where PluginName is the name of your plugin.
7. Click 'Okay'.
8. Open the Creation Kit. It should show the splash screen, and load some things. This may take a few minutes. When it's done, the Creation Kit will simply close.
9. Go back to 'Set Launch Options...' and remove the line we just typed in, allowing you to resume using the CK normally.
10. Navigate to your Skyrim folder, just above the Data folder.
11. You'll have a file called PluginName.SEQ. Move it to Data/SEQ. If that folder does not already exist (It shouldn't) create it.
12. You should now have "Skyrim/Data/SEQ/PluginName.SEQ" and you're good to go.

Note by Giskard: Because the SEQ system is basically a list of FormIDs, you need to run this when you create anything that creates a new formID such as a new topic. This way the new topics formID will be added to the SEQ File. But if your editing an existing form that already exists in the SEQ file. I do not believe running SEQ method will be needed to run again. But test it to be sure.

DOS Prompt SEQ Fix Method

By Alexander J. Velicky and Arthmoor

To create an SEQ file the DOS promopt method, try this tip. You must do this every time you make changes to your Start Game Enabled quests.

1. Open CMD.
2. Navigate your way to where Skyrim is installed. (By default: C:\Program Files\Steam\steamapps\common\skyrim)
3. Type in the following command: creationkit.exe -GenerateSEQ:pluginname.esp (Again, where pluginname.esp is the name of your mod file)
4. The Creation kit should open and should show the splash screen, and load some things. This may take a few minutes. When it's done, the Creation Kit will simply close.
5. Navigate to your Skyrim folder, just above the Data folder.
6. You'll have a file called PluginName.SEQ. Move it to Data/SEQ. If that folder does not already exist (It shouldn't) create it.
7. You should now have "Skyrim/Data/SEQ/PluginName.SEQ" and you're good to go

Note by Giskard: Because the SEQ system is basically a list of FormIDs, you need to run this when you create anything that creates a new formID such as a new topic. This way the new topics formID will be added to the SEQ File. But if your editing an existing form that already exists in the SEQ file. I do not believe running SEQ method will be needed to run again. But test it to be sure.

TESVEdit Method

By Zilav

I am told that future versions of TESVEdit will contain a button to automate the creation of SEQ files for you. So look out for that.

Combining the Trigger method with the SEQ method.

By Giskard

The trigger method can be used along side the SEQ methods if you so desire and there are advantages to this which I'll explain below.

You could have single Start Game Enabled Quest that is basically an empty quest with a script attached and a stage zero that runs a single function from your script. Run the SEQ method once so the ForumIDs of the Script and the basic quest are catalogue and work from the Start of game, then just keep updating script without adding topics to this quest. Because SEQ just lists the formIDs, and because the scripts formID is known, you should be able to edit the script as much as you like without running the SEQ system more than once.

Your master quest would handle the starting of all future quests you make and avoid the Start game enabled bug completely.

Like this...

First we need a start function.

Function StartMeUp()
RegisterForUpdate(15.0)
endfunction

If you only want to run something once after a delay, try this version of the above function instead.

function StartMeUp()
RegisterForSingleUpdate(15.0)
endfunction

When the StartMeUp() function is executed as part of stage zero of your quest, it would automatically start the scripts own OnUpdate function looping every 15 seconds. You can change this to any number of seconds you like, but its best not to have it running too quickly. You can only have one OnUpdate function btw.

The OnUpdate function just looks like this and is pasted in to the same script as the above StartMeUp() function.

Event OnUpdate()
; put your stuff here
endevent

You could use the trigger method to start your quests inside the OnUpdate system using this method. This way you can precisely control when and where your quests run without needing them all to run from the start of the game. You would have 1 master quest to run them all and the rest would sit patiently waiting for there turn to run from inside your quest script. Very CPU friendly way to do things for large quest mods. Not so useful for small quest mods with only a few quests.

Just remember to use the doonce trick to disable stuff after its run once, so it does not keep running over and over again. Here is a remind of what that would look like for an OnUpdate Script.

int doonce01
Quest Property MyQuest Auto

function StartMeUp()
RegisterForUpdate(15.0)
endfunction

Event OnUpdate()
if doonce01 == 0
MyQuest.start()
doonce01 = 1
endif
EndEvent

Very simply to the Trigger event but this is an OnUpdate event instead.

After that, you just have to start the StartMeUp() from stage ZERO of your quest by the usual method. Which is explained in my "Functions Explained Tutorial" and my "How to make a Quest" video tutorial. Both of which are required knowledge if your making quests anyway. So if you do not know how this works, best learn now, you cannot escape learning this stuff I am afraid.

Finally

When packing your mod, make sure the bsa file contains your mods SEQ file/s if you are using one of the SEQ fix Methods. If you are using the trigger method, you will not have an SEQ file to worry about. The creation kit does not always auto pack everything you need. As you know if you are using audio for dialogue, which is totally ignored by the creation kit.

Making your own crafting table (Video Tutorial).

User Rating:  / 1

In this tutorial we will look at how to make your own crafting table so only your own items appear as available to build on it. This is useful because nearly every armour or weapon maker out there currently adds his own stuff to the default smithy tools. This will allow you to have your own unique workbench or alchemy table or Enchantment table just for your own stuff. Or if you prefer, just as a way of keeping things organized better.

Here is video explaining it.

Best viewed in HD and in Full Screen Mode.

The Skyrim Armour Trick

User Rating:  / 0

The Skyrim Armour Trick

Introduction

This tutorial explains how to use armour from one mod in your own mod without ever needing to edit the original mod. It allows the original armour mod maker to maintain full control over his work and make updates as he sees fit, whilst enjoying the kudos as an independent modder, but at the same time getting his armour supported by other mods using a kind of proxy system.

The system works like this, I create a fake set of armour that is used by my mod if another modders work is not installed. In this tutorial lets assume my fake armour is based on Steel Plate Armour, so on its own, my mod users would see NPCs with Steel Plate Armour. But I add a little note saying Maty743's Medieval Armour is supported by my mod and players should run that mod after mine. Effectively letting Maty743's Medieval Armour override my mod in very specific ways.

To do it I clone the paths to Maty743's Medieval Armour nifs and put renamed steel plate armour nifs in my mod. Then when Matys own mod runs after mine, it overrides my steel plate armour and uses his armour instead. But if matys own armour is not installed, the player still gets steel plate.

This trick requires you use BSA files to work and not loose files but it allows one modder to use another modders work without ever editing the other persons mod. It also allows both modders to keep full control over their work and collect the kudos they deserve directly. Which just does not happen when you get a single line of credit at the bottom of some docs.

It also means you could support 100 armour mods in your mod, each one of them being 100meg in size and as long as you keep your mod below 100meg, Steam Workshop would accept it. Imagine 1 Gigs worth of Armour supported by your mod and Steam Workshop not batting an eye lid over it.

All because a little old Armour trick let you get away with it.

In this example I am using Maty743's Medieval Armour mod for this tutorial because his work is a modders resource and because we are planning a joint project that uses this trick, but you can adapt it to any set of armour, weapons or what ever by any modder.

I'll explain how as we go.

Please remember, that its still a good idea to ask the modder first if he minds you using this trick to support his work. Technically you are not touching his mod at all so you do not need his permission. But if he does not like you doing it, it only takes him 5 minutes for him to change his nif paths and stop your mod working with his armour. It takes you longer to add support for his mods than it takes him to break it.

So you really want to keep in the armour modders good books, so ask if he minds first, then do it. Not the other way around.

If you are an Armour mod maker and this has been done to you and you do not like it. You can teach the modder who did it a lesson by simply renaming the folder that contains your Armour mods nif files and redoing the paths to the nifs in your armour. A 5 minute job at most. The other modder will be there for a lot longer than that fixing it up again.

WARNING about loose files.

To work this trick assumes your mod uses a BSA file to store the nifs. If you use lose files this trick will not work. It may even override the armour mod you wanted to support, effectively breaking the mod your favourite armour maker created. This trick works best on mods found on Steam Workshop or mods uploaded else where that are packed in an ESP + BSA fashion and should not be used with LOOSE FILES.

Downloading the Armour you want to support.

First down the Armour you want to support and extract the BSA file some place safe so you can see the loose files. I am assuming your using Steam for this and that you have taken onboard the warning above.

I use the Fallout Mod Manager for extracting BSA files but you can use anything that does the same job. You can google it or get it from Source Forge. Just click on a bsa to get the Fallout mod manager to open it up and allow the files to be extracted. Once extracted you need to find the NIF files for the armour you want to support. We are not going to copy them, or use them or edit them in anyway. In fact all we need from the bsa is the file path to the nifs we want to use and the name of the nifs because we are going to recreate that path and use those file names for our fake armour.

Matys Medieval Armour uses this path, so that is the path you will see used in this mod.

Data\meshes\Matys Medieval Knights

and

Data\meshes\Matys Medieval Knights\menu

Other mods will place their armour nifs else where. All you need to do is look for the NIF files in the extracted bsa file to see the path your favourite armour mod uses. Then recreate all the folders in that path in your own Skyrim/Data/Meshes Directory. We will be placing fake nif files in those folders later.

So we go in to our Skyrim\data folder and create a meshes folder, then if we are to support Matys armor, we make a folder called "Matys Medieval Knights" too. Then finally inside that we make a folder called "menu". Now are ready to make a fake maty armour entry in our own mod.

Making some fake Armour Part 1.

Now we have a copy of Matys armour mod paths, we need a fake set of armour to put in it. Something that works without matys armour mod being installed but will be overridden by matys armour mod IF the player does have it installed. Since Maty makes heavy crusader armour, I have chosen to make my fake maty armour using Steel Plate Armour. So users that do not have matys armour mod get boring plate steel armour, but users who do have matys armour get the full monty maty special edition version of your mod with all the bells and whistles.

So the first thing I do is find Steel Plate Armor in the Armor list and duplicate the helmet, gauntlets, boots and cuirass. Then I rename them to anything I want. For this tutorial I will use the following names but you can replace these names with anything.

MyHeavyArmourBoots
MyHeavyArmourHelmet
MyHeavyArmourGauntlets
MyHeavyArmourCuirass

Now we need to find the nif files that our own fake armour uses, since we chose Steel Plate, its the Steel plate nifs we need to find. Before we can do that we need to extract the Skyrim - Meshes.bsa some place safe, again we use the Fallout Mod Manger for that or any other tool you have that can extract BSA files.

Once done, we look at MyHeavyArmourBoots entry listed under Armour in the Creation it and we make note of the following information listed in the armours window.

We find under Worldmodel is this.
Armor\NordPlate\Boots_GO.nif

That means it uses Boots_GO.nif found in the Armor\NordPlate\ folder. Since a nif file is a mesh, the full path is actually \meshes\Armor\NordPlate\.

Because we are editing Steel plate, further down under "models" you will see NordPlateBootsAA listed, if your editing some other armour, it will say something else. Now we double click on NordPlateBootsAA and a new window opens that lists the Biped model as...

Armor\NordPlate\NordBootsM_1.nif

That means the "models" file is NordBootsM_1.nif and once again its nif file and that means the FULL path for it is not Armor\NordPlate\ but meshes\Armor\NordPlate\.

Now we know the names of both nif files for Steel Plate and where to find them.

Load the original armour mod your trying to support.

Now you need to load up the original armour mod your trying to support, we need to know the name of the NIF files it uses and the path and the best way to get that information is to look it up in the armours own window like we did for Steel Plate Armour.

So find the Boots, Gauntlets, Cuirass and Helm entries under Armour and note down the full path and name of the nif used for Worldmodel someplace, then go to Models and do the same for the biped model. You should have 2 full paths to 2 NIF files.

For matys boots armour it was...

Data\meshes\Matys Medieval Knights\Menu\CRUBOOTS.nif

Data\meshes\Matys Medieval Knights\bootsm_1.nif

Lets summarise what we just did. We have noted down the full paths for the boot nifs for our original steel plate armour and our favourite modders armour. Now we need to make an exact fake of our favourite modders armour, the path names need to match and so does the file names. Each piece of armour has 2 NIF files for it, our plate steel nif files are going to be our fake files.

Making some fake Armour Part 2.

Time to create our fake armour nifs and fake armour file paths.

Because we chose Steel Plate our fake nif files are at the following locations.

Worldmodel:
Armor\NordPlate\Boots_GO.nif

Models:
Armor\NordPlate\NordBootsM_1.nif

The Armour are faking in this example is matys armour and his armour has these paths and filenames.

World Model
Matys Medieval Knights\menu\CRUBOOTS.nif

Model
Matys Medieval Knights\bootsm_1.nif

We now need to make sure we have matys full folder structure duplicated in our own mod. So make sure your mod has

Skyrim\data\meshes\Matys Medieval Knights\menu\ and then copy the steel plate Boots_GO.nif in to that folder and rename it too CRUBOOTS.nif.

Nexts we want to do the same for the MODELS nif which was in "Skyrim\data\meshes\Matys Medieval Knights\", so check you have that path recreated perfectly and then copy the NordBootsM_1.nif file across to it and rename it to bootsm_1.nif like maty used.

We now have a fake pair of maty armour boots that looks exactly like Steel Plate Boots, now you do the same for the Gauntlets, Cuirass and Helm and anything else you want to support. So go a head and repeat these steps for those items before moving on to the next stage.

Setting up the Fake Armour.

Next we need to change the nifs our fake armour uses by default, they should still be set to steel plate original nifs. We need to change those to our fake maty nifs or what ever fake armour your recreating. So we click on following armour entries in the Creation kit and one by one change the world model and model to our new fake nif files. As you do it, the editor will look in meshes for the file, so you should find them easily.

These are our files we need to change the nifs on.

MyHeavyArmourBoots
MyHeavyArmourHelmet
MyHeavyArmourGauntlets
MyHeavyArmourCuirass

We change MyHeavyArmourBoots to
Worldmodel = Matys Medieval Knights\menu\CRUBOOTS.nif

Before you do the models file, double click on the armour name listed under models to open the window and change the ID to something like MyHeavyArmourBootsAddon. Then ok the window and say yes to create new file (if you say no, it will edit the original instead and that would be a bad thing). Then select the original Armour addon and delete it from the models list. Finally right click and select new and find MyHeavyArmourBootsAddon or what ever you called it and add that to the models list.

When done, double click on MyHeavyArmourBootsAddon listed under models and change the Biped model to

Matys Medieval Knights\bootsm_1.nif

Now do the same for the rest of the armour pieces, in this example they are these.

MyHeavyArmourHelmet
MyHeavyArmourGauntlets
MyHeavyArmourCuirass

Once done save your mod.

Setting up an Outfit

If you want to give your fake maty armour to an NPC, you must make an outfit first. Look for the Outfit menu in the Object window and select it. Then find ArmorSteelPlateAllOutfit, right click on it and select duplicate (any outfit will do, we will be deleting everything in it anyway). When done, double click on the duplicate and give it a new ID such as MYFAKEMatyArmourSet.

Now delete all the existing armour listed in your new Outfit and whilst leaving the window open, go back to the object window and find Armour, then drag and drop 1 full set of your fake armour in to the outfit. In this example we want 1 of each of these.

MyHeavyArmourBoots
MyHeavyArmourHelmet
MyHeavyArmourGauntlets
MyHeavyArmourCuirass

Now okay the window, say NO when asked to create a file, we want to edit the name of the duplicate this time so its okay.

We can now assign our outfit to NPCs by setting it in their inventory screen. If you have an NPC prepared already, just change the default outfit to your MYFAKEMatyArmourSet that we created above. You will see a full set of Steel Plate Armour in the editor but with the stats you gave it. This is the fake stand in armour your mod users will see if they do not have matys armour installed.

Testing your fake armour.

Now you need to know a little about load orders and what the game loads as a priority.

1) Your favourite armour mod has to be loaded AFTER your mod for this to work.

2) You must pack your files in a BSA if this is to work.

3) Loose files are ALWAYS used if present, which stops this trick from working. That means to see if this works with our favourite armour mod, we must rename our data/meshes/Matys Medieval Knights folder to Matys Medieval Knights2 or something so the game cannot find our fake files is is forced to use Matys instead.

Now make sure Matys armour mod runs after your mod so it overrides your mod and load Skyrim.

You will find Matys armour appears on your NPC or where ever you placed his armour in your mod, yet you have not edited his mod in any way to achieve this. You merely support it indirectly.

IF you rename your "data/meshes/Matys Medieval Knights2" folder back to "data/meshes/Matys Medieval Knights" and run the test again, you will see what happens when your own fake files are used instead of your favourite armour mods files. Basically you will see standard steel plate armour instead.

Packing your mod.

In the creation kit, go to the file menu and choose Upload Plugin and Archive to Steam, then let it create a new bsa for you. You will have to manually drag and drop your nif files in to the packer to add them to the bsa for it to work. The BSA packs any new scripts you make or any edited scripts first, you have to add any custom textures, audio or nifs your self and if you change anything in those categories, you have to rebuild your bsa before updating your mod your mod users will get the old version of the BSA.

IF you just edited the esp, you can usually use the same BSA again and not have to pack it twice.

Special step for you mod makers.

Because you have the lose fake files on your system, the bsa override trick will not work for you. So to enjoy the benefits of your own mod, go to the data/meshes folder and rename your fake armour folder to something else so the game cannot find it. DO NOT DELETE IT. If you need to update the mod, you will need to rename the folder back to its original name, make a new bsa and then rename it to something else all over again. A pain but its what you have to do.

This step will force the game to use your BSA file instead and you can override that normally with your favourite armour mods BSA file by running your mod before your favourite Armour mod in your load order. The load order can be changes from the Skyrim splash screen, click on data, select the mod you want to move up or down the mod list and use the arrows to move it. If its above your mod, it will load first and your mod will override it (a bad thing), if it is moved below your mod, it will load last and your mod will be override by it (a good thing).

When your favourite armour mod loads last like this, the armour from that mod magically appears in your game in the position or on the NPCs you gave it too. But ONLY if it runs AFTER your mod.

Final words.

This trick can be performed without touching another modders work, you can directly support your favourite modders this way and still allow them full control over their work and full credit too. They can keep on updating their work, the worse that will happen if they change anything is their armour stops appearing in your mod and the default armour you choose, in this tutorial it was Steel Plate, will be used instead.

You just need to tell your mod users what armour mod you are supporting and tell them to run it after your mod to get the full benefit of it.

But understand, modders are artists, they have an artistic vision for their mods and your use of it may not be to their liking. So always ask of a modder minds you doing this before attempting it. Technically your not doing anything wrong by not asking because your not touching their work, but its good practice not to piss off the people who make the mods you like and use.

Since explaining it would take a while, just ask if they mind you directly supporting their mods in your work and tell them you do not need to edit their mods to do it. Then respect their decision even if its NO.

How to make a quest tutorial (Video)

User Rating:  / 0

This video will explain how to make a basic empty quest and access script functions from dialogue boxes. It explains common issues with the Skyrim scripting system and explains various workarounds.

Some parts of this tutorial are also covered in our Functions Explained Tutorial.

Skyrim Quest Making Tutorial

User Rating:  / 7

Introduction

Skyrim's quest making system is a lot different from Oblivions and even Fallout 3's because of the new scripting language. If the Creation kit had all the useless buggy stuff removed, learning the new language would not be too had. But the old obsolete commands are still in there, as are the buggy new commands and the wiki that attempts to explain how to use it is out right wrong in many places or forgets vital information in most other places. Making it practically impossible to learn how to make safe quest mods by following it. I know I tried for several months before giving up and learning this my self the hard way.

What follows will, I hope be a simple explanation for a very overly complicated quest building system. I will talk you around the bugs, I will point you at the pages where you need to look for specific information and given you an overview of the simplest and safest ways to make quests, and yes I will point you at the right wiki pages so you can learn to look things up your self, which is a requirement for all quest makers because we have to know a little bit about everything to make quests.

Chapter 1A: Creating an basic quest

I will now walk you through the process of making a basic empty quest in the Skyrim Creation Kit. Go to the Object Window in the Creation it and find the Quest menu, its under Character for some odd reason. Select Quest open it up so you can see the quests already included with the game in the right hand side of the window.

Right click and select New in the right hand window to make a new quest, once done, go to the ID tab and enter an ID name for your quest. The ID is the name the computer uses to refer to your quest, the QUEST NAME is the name the player sees in the game. So for ID have a name like myquest without spaces or attempts at proper gramma because this is for the computer not the player, and for the Quest Name, have a name like "My Quest" with spaces and proper gramma because this is for us humans to read.

Now give the quest a priority of 30, 20 is also good.

In the creation kit, I believe this determines where in the quest list the quest is displayed, 30 is near the top, 20 is in the middle.

You also need to go to TYPE and use the pull down menu to select what type of quest it is, you can choose from several options but the ones you should stick too at first are MAIN QUEST, SIDE QUEST and Miscellaneous.

Main Quest makes your quests name look bigger and puts it in the main quest window when the player hits the J Key.

Side Quest makes the name smaller but still puts it in the main quest window where the player hits the J key.

Miscellaneous puts the quest in the Miscellaneous list, so its not visible in the main quest list window until the player clicks on Miscellaneous to view all the Miscellaneous quests available.

You must now click on OK on the quest window to close it and then reopen it for all the other quest window functions to appear, so do that now and then reopen your quest by double clicking on it from the Object Windows Quest list.

Now we have to add script to our basic quest, so go to the last tab and click on script. Once the Script window is open, click on "ADD", then on [New Script], then on OK. You will notice Extends part of the window that appears is already filled in and says QUEST, where as the NAME part says Script, you need to change the Name part. I recommend copying your quests ID and adding the word script to the end. So if your quest ID was myquest, the script would be called myquestscript.

And that's it, you have a basic quest, it does absolutely nothing but this is the process you must follow when making any new quest before you can add anything else too it.

Chapter 1B: Objectives

Most quests need objectives and these objectives can be enabled and disabled via a script later in this tutorial in Chapter 3D: Making your own Functions. To make an objectives now, just go to the quest window and click on Quest Objectives. Right click and select new, then select the new object that appears and edit the index box to give the quest a number, 10 is a nice number for the first Objective. Now in the box next to the word Display, type the objective text that the player will see.

For example "Talk to Bob"

If you want the quest arrows to work, you also need aliases set up for Bob and assigned to the objectives you just created.

Click on the Quest Aliases Tab and right click and select new reference alias. The first thing you will notice is the Reference Alias window is far too big for most peoples monitors. So you cannot see what is at the bottom of the window. Personally I think there are aliens down there but not having seen the bottom of this window, I really cannot prove it. Dangling cheese just above the bottom of the monitor did produce some squeaking sounds so it might have been mice down there, or my computer fans starting to go.

Either way, it is a complete mystery what is at the bottom of this stupidly large window because my 23inch monitor is not big enough to see it.

In the reference alias window there is alias box to type a name into, if your objective is "Talk to Bob" and you want the quest arrow to point to him, enter a suitable name here such as bobalias and then where it says specific reference, tick the box and then select Bob in the game world. This assigns the bob in the game to the alias you just created.

Now click in the alias inventory box near the bottom if you cannot see the ok button either, and just hit return, this will close the window.

Now return to the Quest Objectives tab and select the "Talk to Bob" objective then in the box marked Target Ref, right click and select new. Then with the NO TARGET line selected, go to the Quest Target Data part where it says Target Alias NONE and find your Bobalias listed.

From now on, when ever the "Talk to Bob" objective is showing, the quest arrow will point to bob.

Now you just need to learn how turn objectives on and off, which we cover later on.

Chapter 2A: Adding Quest Dialogue

I'll now walk you around several editor bugs as we add dialogue to your quest mod.

In the quest you made in Chapter 1, go to the player dialogue tab. Ignore the Dialogue Views, its buggy as hell, stick to the Player Dialogue tab, that works. In the player dialogue window you have Branches and Topics. Many people have problems here because they do not know how this part works if your not using the Dialogue view tab. So I'll tell you.

You need 1 branch every time your dialogue switches to another NPC. That branch can have as many topics as you like, providing its the same NPC talking.

For example:

NPC A talks to NPC B and NPC B replies to NPC A who then says YES and the quest ends.

We need 3 Branches for that.

One for NPC As first topics.
One for NPC Bs reply to NPC A.
One for NPCs YES reply to NPC B.

If your going to have an NPC take money from the player or give money to the player, always do it in the last topic before you switch to a new branch to stop the player pressing escape and quitting the dialog, then re-asking the same question to get more money. Say Once is an option in the topics window that will stop that but it usually breaks quests too. So do not use Say Once unless the info is literally "say once" type of info, typically unimportant stuff.

Right click in the Branches area and select new, the branch will be named after your quest name, but you will find the name gets pretty long, so get in to the habit of shortening it. So MyQuest01 may become MQ01 for example. When have done this, go to topics and select new and make a new topic, again shorten the name to MQ01Topic01. Always add a 01 to the end, when you make a second topic for this branch, add a 02 to end and when you do the third, add a 03 to the end. This helps organise your topics and allows you to see the order they go in.

Another thing to remember is the first topic that gets displayed is the one listed under Branch Data, so always make sure the Starting Topic is set correctly.

If your going to ask a question with a yes or no answer, try adding A or B to the end of the number so you get mquest02a myquest02b as replies. It should help you stay organised.

Now you have a topic, the window to its right will be empty and the box next to the word TOPIC will probably be empty too. Edit that to say something else like "Tell me about your self". Those words will then appear in the game as a dialog option. If you forget to change it, you will see ... instead where the dialog should have been.

In the big white area under the word topic, right click and select NEW whilst your new topic is selected. This adds the topic your about to create to the topic title you just wrote. A new response window will appear, just close it, its actually too soon to be typing in dialog text. We want the next window anyway.

Chapter 2B: Working in the Topic Info Window

Now your looking at the Topic Info window. Probably the most important window for all quest makers. So lets have a little tour.

Topic TEXT is the topics primary title.

Prompt is an override title this one topic can be given, thus allowing you to change the title here if you wish.

Responses is where you right click and select new, this brings up the New Response window again allowing you to type in your dialogue but do not do it just yet.

You can experiment with the tick boxes but basically Say Once is the part I spoke about above, so do not use this for vital quests. Goodbye is good for quitting out of dialog and ending a chat with the player. I use this on the last line of my dialog to force an end to the conversation. The rest do other others that you can learn when your more experienced.

On the right there is a Link to window. This is where you right click and select add link in order to link the current topic to the next topic. In this way you can choose which topic will be displayed next. In the case of a yes and no reply, you add 2 topics as the next reply and let the player choose between them. They in turn would link to other topics, probably different topics to give different results. You can only link to topics within the same branch. Once you change branches, the branches own starting topic setting determines the next topic to be displayed.

Chapter 2C: Topic Info Window Conditions

Welcome to another bug fest, in the past the conditions where used to control everything, but now half the conditions you can choose from are obsolete and others do not work. Trying to guess why your new quest does not work when your learning can be a pain when you do not know the conditions are mostly foobarred now, so stick to a few you know work until you become more confident at making quest mods.

Here are some good conditions that do work.

GetStage

Typically it looks like this when set up, this is example showing stage 10. Use it to hide dialog when the quests stage is NOT at the stage indicated. This is a very important way to reveal and hide dialog based on quest stages.

S Getstage Quest:myquest == 10 AND

That says if my quest equals 10, this dialog option will appear to the player.

GetQuestcomplete

Typically I use this to turn off all a quests lines of dialogue once a quest is finished, otherwise some may remain visible. I also use this to enable or disable lines based on whether other quests have been completed or not.

Typically it looks like this.

S GetQuestComplete Quest:Myquest == 1

The 1 meaning YES, a 0 meaning NO. So the above example means myquest is finished, so display this line but the line below means my quest is not finished so display this line.

S GetQuestComplete Quest:Myquest == 0

GetIsID

This is a very important one because it tells us who should speak this line, we use it to literally name the speaking actor. Typically it looks like this.

S GetIsID Actor:Myactorsname == 1

Again the 1 means YES, and that line says, if the actor is myactorsname, then let him speak this line.

Some conditions for factions also work, so you can assign dialog via factions too.

Chapter 2D: Using Stages to control dialog.

In the quest window there is a Quest Stage tab, this is mostly obselete now but given how many bugs are in the editor, stages remain a good way to enable or disable dialogue in a reliable way. To do so you use this tab, just right click under index and add a bunch of stages from 0 upwards. You can add more later. No need to do anything else.

Then when you want a line of dialog to appear at stage 20 you would add a condition to the topic like this.

S Getstage Quest:myquest == 20 AND

At the end of the topic in the begin or end boxes mentioned below you would call to a function to change the stage again as explained later in this tutorial. Effectively disabling this topic so it does not appear again and enabling the next topic. This prevents all the topics from appearing at once. Which happens sometimes regardless of the link to options.

Chapter 2E: Scripts Beginning and End Boxes

Below the buggy conditions is the new way to handle things and it requires a new way of thinking too. So I'll give you an quick overview here. You cannot just type in commands anymore nor can you reply on conditions anymore. Even the current quest does not know whats in its own script unless you tell it. So the first thing you have to learn is how to access stuff in a script since its functions in a script that do the bulk of the work for quests in Skyrim and not conditions or begin or end boxes. All the begin or end boxes are for now is to call functions and do basic tasks. Thats about it.

An example of how to call a real quest scripts function from the same quests begin or end boxes, can be seen below.

(GetOwningQuest() as tegtelmq02script).cleanupquest()

If Iwas to spell it out for you based on what your actually looking at.

(GetOwningQuest() as My Quest Scripts name).A Function in my script()

That line calls the function and runs anything inside the function, thats how you do things in Skyrim, its very different from how things worked in Oblivion or Fallout.

Skyrim also uses objectives and you can manipulate them from the Begin or End boxes like this.

These next 3 commands are used to display objective 10, mark it complete or mark the whole quest as complete from a begin or end box.

GetOwningQuest().SetObjectiveDisplayed(10)
GetOwningQuest().SetObjectiveCompleted(10)
GetOwningQuest().CompleteQuest()

From a function in your quest script, those same commands would be used like this.

Function myfunction()
SetObjectiveDisplayed(10)
SetObjectiveCompleted(10)
CompleteQuest()
Endfunction

And executed like this from the begin or end box.

(GetOwningQuest() as tegtelmq02script).myfunction()

The Topic info window needs to be told it is the current quest these commands apply too, which is why the begin and end boxes need GetOwningQuest() first, but the script does not. So you drop the GetOwningQuest() part. I told you they made it more complicated than it needed to be, now you are starting to see why, it gets worse trust me.

To change stages in a quest, you use this command from the Begin or end boxes.

GetOwningQuest().SetCurrentStageID(10)

To change stages from a function in a script, you use this.

Function myfunction()
SetCurrentStageID(10)
Endfunction

Then execute it like this from a begin and end box.

(GetOwningQuest() as tegtelmq02script).myfunction()

Just as an example, I make a cleanup function to clear away any mess my quests leave behind once complete and it looks like this

Function cleanup()

endfunction

I call it from the Begin or end boxes like this.

(GetOwningQuest() as myquestscriptname).cleanup()

Some good things to put in my cleanup function is any stage changes or objective changes, for example, here is a real cleanup function from one of my own quests.

Function cleanup()
SetCurrentStageID(60)
tegtelollyactor.Disable()
SetObjectiveCompleted(50)
chest1.Disable()
chest2.Disable()
chest3.Disable()
endfunction

What your looking at is the clean up function changing the stage to stage 60, then disabling an actor called tegtelollyactor before marking objective 60 complete and disabling 3 chests. Standard clean up stuff basically. This stops me leaving the sort of mess behind that Bethesda often leave when their quests are completed.

That is of course a quick overview of how to use the begin and end boxes safely, we will go in to it in more depth later.

Chapter 2F: Recording some lines of Dialog

Wait until I tell you to record something before doing so, this is important!

Go the Topic Info Window and right click in responses and select new to open new response window, in the response text box type in what you want to say. Then go down to emotion and change it from neutral and enter a number between 0 and 99 for the emotion value. I have not seen emotion doing a whole lot in Skyrim so it may be obselete now or just broken, probably the latter.

At the bottom under the part that says Select Sound, you will see a white box, if your conditions have GetIsID set, or a faction, that NPC or every member of that faction that speaks this line will appear and X.. and W.. and Lip will get Y under them if you have an Xwma file or a Wave or a Lipsync file generated. You get the wave and lipsync by recording your voice line and clicking save. To convert them to XWMA you need a third party script to help.

I have one you can use on this website, it is in the Wave to XWM Guide but ignore it for now, you do that last anyway.

If every NPC in the game seems to be listed in the white box, it means you have not set GetIsID yet so lets do that now BEFORE we record any lines. After you type in the line you want to speak and set the emotion, OK the window and go back to the Topic Info window.

Right click in conditions, a window called Condition Item will appear, it defaults to GetIsID which is handy because we want that now. Where it says Invalid, click on it and where it says ObjectID, scroll and find an NPC you want to speak your line. It will tell you next to ObjectID if its an actor or something else, make sure its an Actor. Preferably one you created for your quest. Now make sure "comparison" says == and the value = 1.0000 (1 and 1.0 and 1.0000 all mean 1).

That's it, you just told the quest who should speak that line, now the game knows which folder to store the line in once its recorded. Had you skipped this part, it would have placed your recording in every single voicetype folder the game supports. Literally dozens of copies of the same line for all NPCs would have been made, not good.

Now go back to Responses and double click on your line and record it, be sure to preview it to make sure it sounds okay, then click save and finally okay to close the window. You have just added a line to your NPC.

To find the line, go to your Skyrim/data/sound/voice folder and look for a folder named after your mod. If you open the folder named after your mod, you will see the folders named after the voicetype you assigned to your NPC. All dialogue spoken by an NPC with that voice type will be stored in that folder. If you have several NPCs with several voice types and record lines for each of them. Then you will have several voicetype folders in here.

It is now that you would use that Wave to XWM Guide to change your large waves in to small XWM files for release.

Chapter 3A: The big scary Script.

If your making quests for Skyrim your best using the script to do most of the work and not the Topics info begin and end boxes because they are a pain and error prone. Its better to use these boxes for simples things or to call script functions from.

Functions called from scripts are the best way to work in Skyrim, so Chapter 3 will focus on teaching you the basics of that. That means you have to learn how to call functions from your quest script. This is scripting 101 for Skyrim and is 100x more complicated that it was under Oblivion, so do not say I did not warn you.

As I have already explained a basic function from a script that does nothing will look like this.

Function mybasicfunction()
;this one does nothing because there is nothing in it.
endfunction

In a full script called myquestscript, it would look like this.

Scriptname myquestscript extends Quest

Function mybasicfunction()
;this one does nothing because there is nothing in it.
endfunction

You would call mybasicfunction() from myquestscript we need to add a line like this to the topic info windows begin and end box, then put what ever stuff you wanted the function to do, inside the function it self. This is by far the most reliable way to do things in quests for Skyrim and like I keep saying it is complicated and a very steep learning curve but powerful once you learn it.

It offers a very tight control over things if you get it right, much better than the old system.

This is the exact line needed to run the above function in the above script.

(GetOwningQuest() as myquestscript).mybasicfunction()

I wrote a full tutorial on how to do this on this website, the tutorial is called Skyrim Papyrus Scripts, but also check out Skyrim Papyrus Tutorial: How to use OnUpdate and Skyrim Papyrus Tutorial: Functions Explained for detailed info on this. There are advanced ways to call scripts and functions from other quest that those tutorials cover that this one does not.

Chapter 3B: How to use real items in scripts.

Yes folks, even finding the commands your allowed to use is tricky in Skyrim, they made it so complicated you need a tutorial just to find your way around the wiki. But here is the basics.

As a rule anything you want to name or use in a script has to be added as a property to the script first. A property is those things you see when you go to script tab of your quest, select your script and click properties. Each type can be a different type of item and have a different default script controlling it and you have to know which is which and tell the editor what it is because the editor is stupid.

This is where it gets complicated very fast.

A good tip here when trying to find out what sort of property an item should be is to look at where the item is in the Object window of the creation kit. E.g. is it under books, under Weapons, Soul Gems or what ever ? If it is, that is the type of Property you need to use to add it as in your script before you can use it.

You do this by going to the script tab and selecting your script, then selecting properties and finally selecting add property and where it says type, scrolling up or down until you find the type of item you want to add to your script so it can use it, then give it name. Finally you okay it, select the property you just added and select edit and find the real item in the list and assign it to the property you just created, if the type matches, you will not get any errors. In this way, what ever name you gave it, points at the real item in the script.

This way, you can refer to the real item using a shorter property name.

So if the real item was called "myfantasticsword" but you called the property name mysword and pointed it at "myfantasticsword", from then on the script would only expect you to refer to "myfantasticsword" simple as "mysword" every time its mentioned in your script. But here is a cool tip for you. If you entered "myfantasticsword" as the name of the property, the property would autodetect that is the name of the real sword and automatically assign the real sword to the property for you. Allowing you to skip the finding the real sword part.

Anything you do from the properties window is automatically written to your script, so if you make a mistake, you have to right click on your script and select edit source and manually remove the line it added and save the script again. You will be told if there is an error when you try this.

Chapter 3C: How to find out what commands work with which item.

The properties you just learned about tells the game what an item is, the game needs to know this because it needs to know what default script works with that item. The default script may be a weapon script for weapons so by assigning your weapon as type weapon in properties, you have told the game which script to use.

Why is it important that the script match the item correctly ?

Because that default property script holds all the commands that will work on an it, if you get it wrong, like trying to tell an explosion to go for a swim, common sense should tell you its not going to work because explosions cannot do backstroke. But if the script assigned is correct, the commands that would work with explosions will be listed in it and the game will know explosions "Explode".

That is just an example btw but you get the idea.

A list of item scripts full to the brim with exciting functions and commands for you to use in your scripts can be found on the wiki page below. Just be warned, the wiki is wrong in many places and givens examples that do not work as described in many cases. Also finding this page is not easy so book mark it. The wiki is a hidious mess and very hard to navigate. If the link below breaks, seach the wiki for Script Objects instead.

Papyrus Script Objects

Before we move on, lets look at one or two objects and what commands they support that we can use. Lets start with the Actor Script, this covers all the commands/functions that work on NPCs or as Skyrim calls them Actors. Scrolling down the list on the Actor Script page of the wiki we can see the lots of commands available, including but not limited too.

AddToFaction(Faction akFaction)
Dismount()
Kill(Actor akKiller)

So when you want to see what commands/functions will work on something, you look at the objects script and browse the commands/functions list. Also in some cases you need to name the objects script before the command can be used. So for actor functions named above, you would type them like this.

Actor.AddToFaction(Faction akFaction)
Actor.Dismount()
Actor.Kill(Actor akKiller)

The game script holds the player commands, so we refer to the player as Game.GetPlayer() in papyrus rather than just player as we did back in the Oblivion days. The default script name for the item is what goes before the function or command. So here is another reason to learning which default script assigns to which object in the game.

A hidiously complicated system and a very hard one to learn for that reason, but stick with it.

Chapter 3D: Making your own Functions.

Now you know how to find out what commands work with what types of objects and how to add objects so you can use them in a script, and how to call a function from a topics begin or end boxes, lets look at some function examples.

All of these examples will use the same function name and script name, so the line below can be used to call them all from the topics begin and end boxes if you have a script called myquestscript and use function name called Function1(). If you changed those names, you must change the names in the line below too if you want to use these functions in your own quests.

(GetOwningQuest() as myquestscript).Function1()

Example functions.

You added a property of type weapon and give it the name myitem, then you point the property myitem to a glass battleaxe in the properties of the script. If you did that, this function would give the player 1 glass battle axe every time you called the function from your topic or anywhere else for that matter.

Function Function1()
Game.GetPlayer().AddItem( myitem, 1)
endfunction

And this would take the glass battleaxe away.

Function Function1()
Game.GetPlayer().Removeitem( myitem, 1)
endfunction

If you wanted to use the exact same script to add 1 gold to the player instead of a glass battleaxe, just use the properties to point myitem at gold001 as a miscitem (because gold001 is type miscitem) and the above examples would give the player 1 gold instead. By changing the 1 to 500, you can give the player 500 gold. Changing it again to a soul gem or a book or what ever, changes what the player receives when he clicks on the topic. You just change the property to do it.

If you wanted to enable or disable objectives, that's even easier. This example would mark objective 1 complete and show objective 2 as the next objective for the player to do. No properties need to be set up for this.

Function Function1()
SetObjectiveDisplayed(2)
SetObjectiveCompleted(1)
endfunction

Changing the stage of a quest can be done this way. This would change the stage to 10.

Function Function1()
SetCurrentStageID(10)
endfunction

Marking a quest complete, would be done this way.

Function Function1()
CompleteQuest()
endfunction

You can look up the commands available to you in each objects scripts and make far more interesting functions than these, but these will get you started.

Chapter 4: Final Words

The way to view Skyrim quest making is as a script heavy system where as the older Fallout and Oblivion systems still where GUI heavy or Window based quest making systems heavily reliant on the Topic info window. The older commands where more high level (SMART) commands but more limited, where as Skyrims commands are more low level (STUPID) but very flexible. So it takes more work to learn how to make quests and scripts in skyrim but you have more power at your finger tips once you do learn how it works.

2013  The Engineering Guild   globbersthemes joomla templates

EU law requires we tell you that this website uses cookies and requires we reveal what our cookies are used for. Our cookies are used to store your login details and preferences you set on this website. So you can log back in quickly and allow you to set up how the site appears to you. They are not used for anything else. The "remember me" button you see at login is used to tell the website if cookies should web used or not, tick it if you want cookies, ignore it of you do not.

To find out more about the cookies we use and how to delete them, see our privacy policy.

continue

EU Cookie Directive Module Information