The Elder Scrolls V: Skyrim Special Edition

The Elder Scrolls V: Skyrim Special Edition

33 ratings
Creation Kit: Good Practices
By Altbert
Various good practices when creating new objects, configuring game settings and some small scripting examples.
2
2
   
Award
Favorite
Favorited
Unfavorite
Introduction
Yes, I know! For every wanted solution for the game, there will be a mod providing that solution. But, instead of several small mods I prefer a single mod which provides me with the solution I need, in particular when game settings are concerned. Sometimes a mod gives me a solution, but also solutions I may not want. There are many unusable crates and barrels, even in the player homes. Wouldn't it be nice to have a mannequine there, or a display case, or maybe a table, a wardrobe or a chest?

It's obvious that every option presented in this guide requires you to create a new mod, but personally I like a single, personal mod over an amount of mods, although maybe these can be merged into one, but still these might be providing options I don't want!

You can also use these practices when a mod is causing issues. Open the console with the tilde-key (~) or equivalent on a non-US keyboard, select the object which is causing the issue. The first two characters in the ID will provide you with the load order number of the mod in question. You can either correct the issue yourself (only for personal use) or inform the mod author about the issue.
Creating mannequins
The thing you need when creating a mannequin, is to find the proper spot to place the mannequin, preferably an interior cell. You can place the mannequin on the floor or on a pedestal, where ever you like. Next, you will need a PlayerHouseMannequin, found under Actors -> Actor in the Object Window, and an XMarkerHeading, found under WorldObjects -> Static in the Object Window. Place the mannequin at the spot where you want it to be seen in game. Place the marker near the mannequin, but don't let the mannequin be covered by the marker. Next you need to cover the mannequin in a trigger. Select the cube with a T inside in the icon bar under the menu bar, select MannequinActivateTrig and press OK. You should see something similar to the next picture.



Select the mannequin by right-clicking and select Edit in the pulldown menu. Select the Linked Ref tab and right-click in the area below Reference. In the new dialog window press Select Reference in Render Window and double-click on the XMarkerHeading and press OK in the dialog window.

Next select the Activate Parents tab, right-click in the area below Activate Parent Ref. In de new dialog window press Select Reference in Render Window, double-click on MannequinActivateTrig, check Parent Activate Only and press OK. See the images below.



Select the XMarkerHeading by right-clicking and select Edit in the pulldown menu. Select the Linked Ref tab, Right-click in the area under Reference, press Select Reference in Render Window, double-click on the mannequin and press OK.



Next right-click the MannequinActivateTrig and select Edit in the pulldown menu. Select the Primitive tab and check Player Activation. To cover the mannequin completely in the trigger, you may set the X, Y and Z bounds to 70, 50 and 150 respectively. The last thing to do is to move the XMarkerHeading onto the mannequin. The end result may look like this:



Issues
  • Mannequins are walking around. The mannequin is exactly facing north. Select the mannequin, select the 3D Data tab and change the Z-rotation with one-tenth of a degree in either direction. Do the same for the XMarkerHeading, but opposite to the mannequin.
  • The mannequin is still walking around. Navmesh under the mannequin may be connected to navmesh in the rest of the interior. Remove navmesh under and directly surrounding the mannequin. Best practice is to put the mannequin on a pedestal and remove navmesh on the pedestal.
  • Mannequins still keep moving around. You may have a mod conflict, and another mod, is overriding your settings. You may need to change load order or create a patch for the conflicting mod.

If you are having issues with mannequins, the most simple solution is to change a few settings for the ManakinRace (Object Window -> Race -> ManakinRace):
  • mark the race as immobile
  • unmark 'Swims'
  • unmark 'Walks'
  • unmark 'Use Head Track Anims'
  • unmark 'Allow Pickpocket'

More mannequins?
If you need more mannequins, there's no need to repeat the above procedure. Within the same interior cell, select the three objects (mannequin, marker and trigger) and press Ctrl-D. This will make a copy of the objects and the new objects will be selected (the colors of the marker and trigger will be more pronounced). Drag the new objects to their new location. If the objects have to be placed in a different interior cell press Ctrl-C instead, open the other interior cell, press Ctrl-V to place the objects, and drag the object to the desired location.
Create custom mannequins
Creating a custom mannequin is quite simple. Start the Creation Kit, open the Object Window, select the Actor node, type “mann” in the Filter field and the PlayerHouseMannequin should be visible on the right.

Select PlayerHouseMannequin, right-click and select Duplicate. A copy of the mannequin has been created and has Editor ID PlayerHouseMannequinDUPLICATE001.

You can leave the Editor ID as is, but I prefer to rename the copy. Click on the copy to select it, wait a moment, and then click again. Change the name to whatever you like and press Enter.

In the Create New Object? dialogue select No, because you already have created a new object, and in the Confirm Rename dialogue select Yes since you want to give your copy a new name.



To edit the copy of the mannequin, either double-click the Editor ID or select the copy, right-click and choose Edit.



Do not change anything inside the red box, except the ID. Don’t give your mannequin a name or short name, otherwise you won’t be able to activate the mannequin but only talk without any conversation!

Select the Traits tab, change the Race field into “HighElfRace” and check the box marked Female. You may see the Voice Type change into “DEFAULT (FemaleElfHaughty)”, but that will change back to “NONE” once you have selected another tab.

Don’t change anything in the other tabs, apart from the Character Gen Parts or the Character Gen Morphs if you are not that happy with the looks of the default female Altmer. Also, don't forget to generate FaceGenData for your custom mannequins. Select any custom mannequin and press Ctrl-F4.

As far as I know now you can only choose from races that have the ActorNPC keyword:
  • Altmer (HighElfRace)
  • Argonian (ArgonianRace)
  • Bosmer (WoodElfRace)
  • Breton (BretonRace)
  • Dremora (DremoraRace)
  • Dunmer (DarkElfRace)
  • Imperial (ImperialRace)
  • Nord (NordRace)
  • Orc (OrcRace)
  • Redguard (RedguardRace)
  • and their vampire counterparts.

The InvisibleRace also has the ActorNPC keyword, but there is no point in using this race, as you may not be able to find the mannequin unless you exactly know where you have located the mannequin.



If you want to create your own "Madame Tussaud" wax statues, don't use the trigger and the XMarkerHeading, but provide your statues with a default outfit.
Creating display cases
To create a display case you will need three objects: a display case, a rack display and a rack display activator, preferably the angled variant (large or small), simply because the flat variants do not have matching activators. In this guide we use the DisplayCaseLgAngled01 (WorldObjects -> Doors), the WeaponRackDisplayACTIVATORPlayerHouse (WorldObjects -> Activator) colored orange, and the WeaponRackDisplayPlayerHouse (WorldObjects -> Activator) colored blue. When dragging those objects into the Render Window be sure to always point at the floor, so all objects are positioned at the same height.

<img: displaycase_01.png>

Right-click the activator (orange), select the Linked Ref tab, right-click in the area below Reference, select New, press Select Reference in Render Window and double-click the rack display (blue). Before clicking OK select WRackTrigger as keyword.
Select the rack display (blue), select the Linked Ref tab, right-click in the area below Reference, select New, press Select Reference in Render Window and double-click the activator (orange). Before clicking OK select WRackActivator as keyword.

<img: displaycase_02.png> <img: displaycase_03.png>

Next join the three objects by moving the activator into and the rack display onto the display case.

<img: displaycase_04.png>

More display cases?
If you need more display cases of this type, you can use the same method as described with the mannequins (Ctrl-D, or Ctrl-C + Ctrl-V).

Other display cases
If you want to use another display case model, only use the angled table model. The non-angled models available, don't have the appropriate activators and rack displays.

When adding a display case to a room, always point to a floor part in the Render window. You still may have to change some settings, but it will be less work than adding the cases to a pedestal, table or cabinet.
Creating weapon racks and plaques
Weapon racks
To create a weapon rack you will need a WeaponRackMid (WorldObjects -> Activator), a WeaponRackMidActivator (WorldObjects -> Activator) and two WeaponRackEndCaps (WorldObjects -> Static).
Join the WeaponRackMid with the two end caps, and leave the WeaponRackMidActivator on the side.
Right-click the activator (orange), select Edit, select the Linked Ref tab, right-click below Reference, select New, press Select Reference in Render Window and double-click the WeaponRack Mid. Set the keyword to WRackTrigger.



Right-click the WeaponRackMid, select Edit, select the Linked Ref tab, right-click below Reference, select New, press Select Reference in Render Window and double-click the orange activator. Set the keyword to WRackActivator.



Join the activator with the weapon rack. This is best done with File -> Preferences ... -> Snap to Grid set to 16.



Weapon plaques
To create a weapon plaque you will need a WeaponRackPlaque and a WeaponRackPlaqueACTIVATOR (white). Place both on a wall, but apart from each other. Configure activator and plaque in the same way as the weapon rack, and then join the activator and the plaque.




Left, mid and right weapon plaques
Instead of using a single weapon plaque you can also use a weapon plaque that is divided into a left, mid and right part to display a shield and/or two weapons. Now you have to configure three parts of the plaque and three accompanying activators, but it works at exactly the same way as with single weapon plaques. You will need to use WeaponRackCOALeft, WeaponRackCOAMid, WeaponRackCOARight, WeaponRackCOALeftACTIVATOR, WeaponRackCOAMidACTIVATOR and WeaponRackCOARightACTIVATOR.



Link the left activator to the left plaque with keyword WRackTrigger, and the left plaque to the left activator with keyword WRackActivator. Do the same for the mid and right parts. The mid plaque is not visible to well and will eventually be covered by the left and right part of the plaque, but be sure the mid part is in the center of the left and right part. When done join the left and right plaque and cover with the activators.




Issues
  • Weapons or shields are not properly placed in game. Activators and racks or plaques are not properly aligned. Use a Snap to Grid setting of 16. When first placed on the wall or the floor, the X and Y positions may have decimals, such as X = -216.2848 and Y = 1295.7412. Just move the parts slightly and the decimals will be set to .0000. Also the back sides of activators and plaques or racks may not be properly aligned.
Creating Item Displays
Intro
There many ways to display your items and there are also various mods that may help you to display those items. Personally I prefer to use a method similar to the system in the Ayleid palaces and castles, simply because it is a consistent, easy and bug-free method, although it may take a lot of work.

For this method you will need:
  • a static version of the armor, book, miscelleneous object or weapon you want to display
  • an activator (trigger) linked to the static item
  • a script for the activator

NOTE: This is a quick and maybe a dirty guide. If you run into any issues, please let me know!

Creating Static Items
To create a new static item, select WorldObjects -> Static in the Objects Window and right-click in the right pane and select New. In the Static dialogue window provide a unique ID, and press Edit. In the Model Data dialogue window press Edit. In the Select Netimmerse Model either find the correct NIF model (if you have extracted all meshes from the BSA file) or enter the path in the File name box near the bottom (if you have not extracted the meshes). If you have the correct item, press OK twice.



The items I have used in the guide are:
  • armor\amuletsandrings\ancientnord\ancientnordamuletgo.nif
  • clutter\books\basicbook01.nif
  • clutter\ruins\ruinsdragonclawcoral01.nif
  • weapons\axeofysgramor\axeofysgramor.nif
Although you may see the use of capital letters in the Creation Kit, there is no need to use those. Pathing is not case sensitive.

Check WorldObjects -> Static for any item that already has a static equivalent. You can use that item instead of creating a new static item. I may save you some work.

Placing the static items
Place the items anywhere in an exterior or interior cell. Don't worry about the items dropping to the floor, since the items are statics, and you may even have the items floating in the air. All objects in the game have a ground level and you may have to change position and rotation. Right-click on the object, select Edit and change the X, Y and Z position and rotation in the Reference dialogue window. Do not change the scale of the objects as it needs to have the same scale as the original armor, book, misc. object or weapon. Be sure to mark all static objects you have created as Initially Disabled in the Reference dialogue window.

For the dragon claw I have used the PortGateBaseDwemer, for the Axe of Ysgramor the KeyPegHolder01, as object holders, which are static objects.



Create the activators (triggers)
Since using four different types of objects, I prefer to use four different named activators, one for each type. This allows me to add a script to each activator that is specifically written for a specific type of object. Select a static object and select Create Trigger, the black box with the black T. Select New to create specific object activators.



Create an activator/trigger for each type and uniquely name each activator, in my case:
  • ammArmorTrigger
  • ammBookTrigger
  • ammMiscObjectTrigger
  • ammWeaponTrigger
Any used underscores in naming the triggers will be removed.

As you will see in the next image, the Creation Kit may show resizing arrows. DO NOT USE THESE! Just press @/2 to get rid of those. When resizing the triggers, it will reposition the center of an object and the display of the object will not be as intended by the static, initially disabled, object.



Link the triggers to the objects that these cover. Select the object in the Render Window by right-clicking and select Edit. In the Reference dialogue window select the Linked Ref tab. In the References box right-click and select New. In the Choose Reference dialogue window select the cell and the reference.



For now, only add an activator/trigger to one object of each type. This will save some work later when adding more objects. Now that you have four different object with their respective activators linked to the objects, write the scripts for each type of activator.

The scripts
Each different activator will have its own script attached, and so you will need four scripts.
Each different activator will have its own script attached, and so you will need four scripts.

The Armor Activator Script

The Book Activator Script

The Misc Object Activator Script

The Weapon Activator Script


In each of these scripts there is one property that you can predefine for each of these four activators, a message to display when you don't have the required item in your inventory. Create a new message in the Object Window: Miscellaneous -> Message, with your required text. It's a fail message, notifying that you lack the required item.

Compile the scripts (GamePlay -> Compile Papyrus Scripts ...) and attach the respective scripts to the activators. Right-click the activator in the WorldObjects -> Activator in the Object Window and press Edit (or double-click the activator). In the Scripts box press Add and select the appropriate script. Select the script and press Properties. The only property that needs a value is the fail message. Once done for each of the four activators you are ready to add more objects for display and add your predefined activators according to the type of item.



When adding more objects to display, choose an activator that reflects the type of object, armor, book, misc. object or weapon. This way every displayable object has the correct activator, with the appropriate script attached and the message property already set. The only thing to do after the static object is covered by the activator is to right-click the trigger in the Render Window, select Edit, select the Scripts tab, select the script and press Properties. Change the objects property to the armor, book, misc. object or weapon you actually want to display. Do not change the other property, unless you want to differentiate between fail messages (just more work!).



Create Paintings
To create paintings with your own made screenshots on the canvas, you will need, apart from the Creation Kit:
  • Gimp 2
  • nVidea DDS Plugin for Gimp 2
Gimp is a free image editor, but Paintshop Pro can also be used. You will need a separate DDS plugin.

You will also need a good modder's resource which includes painting meshes, and textures for frames and canvas, both diffuse and normal maps. A good resource that includes all of these is Artisanix's Painting and Frames[www.nexusmods.com].

There are lots of frames in different colors and sizes to choose from, with fitting canvasses. Available sizes are 256x256, 256x512 and 512x 256.

Let's just pick one as an example, 256x512 for a landscape, assuming you have installed the meshes and textures to the correct folders (meshes -> ax -> paintings; textures -> ax -> paintings):
  • mesh: paintinglc0103.nif
  • blank canvas diffuse map texture: canvasmc01blank.dds
  • blank canvas normal map texture: canvasmc01blank_n.dds
  • frame diffuse map texture: frameuc0103.dds
  • frame normal map texture: frameuc0103_n.dds

The Start
This modder's resource provides three painting sizes: square 256x256, rectangular horizontal 512x256 and rectangular vertical 256x512. In the Creation Kit I prefer to create a base painting for each of these sizes as a static base object (Object Window -> WorldObjects -> Static). I also prefer to use a prefix for the Editor ID, which puts the object always on top. For the above example I would use 00ammPaintingRectHoriz.



In the right pane right-click and select New. In the Static dialog window name the ID and click Edit. In the next dialog window click Edit. Open the folder Meshes -> ax -> paintings and select "paintinglc0103.nif". All you will see is a purple rectangular, because we need to create the texture sets for both the frame and the canvas.

Frame texture set
At this point only create a texture set for the frame. Select Miscellaneous -> TextureSet and right-click in the right pane and select New. Give the texture set a name (e.g. 00ammPaintingRectHorizTS), select Diffuse, click Edit and select textures -> ax -> paintings -> frameuc0103.dds. Select Normal/Gloss, click Edit (same button but may have another caption) and select textures -> ax -> paintings -> frameuc0103_n.dds and click OK.

Open your base horizontal rectangular painting and click Edit. In the Model Data dialog window select Frame, click New and select the newly created texture set. By default you will always see the backside of the painting. Use the left mouse key to turn it around. The canvas is still purple. Leave it as it is, as you may want to add several landscapes to your game. This way you have a base painting that can be used to add more paintings to the game without doing the procedure all over again, except for creating the canvas for each painting.



The canvas
If you want to create more than one landscape painting, change the name of the base painting (e.g. 00ammPaintingRectHorizLandscape01). Create new object: Yes. The new painting needs a texture set for the canvas (e.g. 00ammPaintingRectHorizCanvasLandscape01TS).

First of all you will need an image of the correct size. Any picture will do, as long as it is supported by Gimp or Paintshop. In the image editor you will need the crop the image to the required size, in this example 512 wide and 256 high, or a multiple (1024x512, etc.) for higher resolutions. Save the file as a DDS file with Compression set to BC3/DXT5 and No Mipmaps. This DDS file will replace the default diffuse map and the default normal map remains unchanged.

Open your new painting, select Edit, select Canvas and attach the texture set to the canvas.



Last but not least
Last thing to do is to provide a spot for the painting. Select the new painting and drag it into the Render Window onto the wall of your choice. You may want to change the size and position of the painting by selecting the painting in the Render Window, right-click and select Edit. In the Edit dialog window, select the 3D Data tab and change Position, Rotation and or Scale.



Issues
  • The Gimp DDS plugin may sometimes export the texture with the wrong sizes by adding one or two pixels to height and/or width of the painting. When trying to add the ill sized texture to the diffuse map of the texture set, you will receive an error message and the Creation Kit will CTD upon clicking OK. This can be caused by rescaling a layer by hand using the 4 rescaling areas around the actual size of the layer. Be sure the actual layer is maximized to the size of the base layer, in the above example a maximum width of 512 and a maximum height of 256, and exactly placed inside the base layer.
Combine multiple images into a texture
This section will show you how to combine multiple images and text with Gimp 2 to create a single texture, and so it’s mostly about working with Gimp and not the Creation Kit. As an example I will show how to create a texture with a base layer, an image layer and a text layer, which I will be using in a new mod, The Alchemist.

Preparations
Obviously you will need Gimp 2 and the nVidea DDS Plugin for Gimp.

If you already have an idea, you may want to set back- and foreground colors, by default black foreground and white background color. For my mod I will be using F9F1BD for the background and 832023 for the foreground.



A new image
Select File -> New and set the height and width of the image, in this example 512 x 256 px. For this purpose I have copied the image of Ash Hopper Jelly[en.uesp.net] by right-clicking the image and select Copy Image, and in Gimp press Ctrl-Shift-V to open the image in a new tab. The size of the image is too big for my purpose. I want the image in the center of the top half of the base layer. The size should therefore be 256 / 2 = 128 x 128 px.



Select the tab with the image of the jelly, select Image -> Scale Image, set either of the sizes to 128 px and press the Scale button.



Add the image as a new layer to the base layer
In the tab with the image of the jelly, press Ctrl-C to copy the resized image. Select the tab with the base layer and select Edit -> Paste As -> New Layer. Do NOT use Ctrl-V, as then the image will be added to the center of the base layer and you will not be able to reposition it.



Be sure that the Rectangle Select Tool is selected, otherwise you will not be able to reposition the added layer. With the added layer active you can use the up, down, left and right arrow keys to position the layer. As I want the new layer in the top center, I will have to move the left side of the layer to position (512 / 2) – (128 / 2) = 192. That’s a little tricky (as I have not yet found any other way). Just move the layer with the right arrow key until it looks like it’s in the center. Now move the cursor onto the left vertical striped line to find the X-position under the vertical ruler (do not use any of the mouse buttons!), and you will know how many pixels you have to reposition the layer to the left or right. Since the jelly pot touches the top of the layer, I usually move the layer down a few pixels.

Adding a text layer
Once the image is correctly positioned, you can add a text layer under the image. Select the Text Tool. Change any Text settings to your liking. In this example, I have set the font to Calgary Italic, the font size to 75 and justify to centered.





The newly created text layer contains nine specific areas to make changes to position and size:
  • 1 area with the inserted text
  • 4 areas to the top, bottom, left and right of the text
  • 4 areas in the corners of the layer
If the text is too large to fit the base layer, select the text and reduce the font size, until the complete layer, including the extra areas, is within the base layer, but at least the text area should be within the boundaries of the base layer. If the text area would be 513 px wide in this case where the base layer is only 512 px wide, the created texture would measure 513 x 256 px and the Creation Kit would immediately CTD upon using that texture.

Create a single layer image
With all the previous steps done, it’s time to create a single layer image. Layers can be selected by using the PgUp and PgDn keys. Since the text layer is the last layer added, just select Layer -> Merge Down twice, otherwise use the PgUp and PgDn keys to select each layer and select Layer -> Merge Down.
Once all layers are merged down, the Merge Down option should be grayed out, otherwise you have missed a layer to merge down.

Create the texture
To create a texture from the single layer image, select File -> Export As and save the file with the .dds extension (Compression BC3/DXT5, No Mipmaps) somewhere in the \Data\textures\ folder, preferably somewhere where you know it can be found.

For possible use of the new texture, see the section Create Paintings.
Create Normal Texture Maps with GIMP 2
Introduction

For The Coffee House I have created the signage, based on the signage of the Bee & Barb and smr1957's text. For my new mod (Skyrim's Lost Settlements) I wanted to use a new wood texture, which ment that I also needed to create a normal map texture for the diffuse map. Easier said than done!

First things first. Obviously you need Gimp, but you will also need two plugins for Gimp:

https://www.gimp.org/downloads/
https://gimp-dds-plugin.software.informer.com/download/
https://code.google.com/archive/p/gimp-normalmap/downloads

Install Gimp by following directions given in the install procedure. Installing the plugins has to be done manually. The downloaded archive will most of the time contain a readme with install instructions. In general the EXE file will have to be dropped into the "C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins" folder and the DLL files have to be dropped in the "C:\Program Files\GIMP 2\bin" folder. To be absolutely sure, read the instructions! There's no need for additional actions in Gimp. Once all files are dropped into the appropriate folders, the plugins will be automatically recognized, although it may require a restart.

The Process

First you will need a diffuse map texture, a texture without the addition _n (normal map), _g (glow map), etc. Open this DDS file in Gimp, but be sure to uncheck "Load Mipmaps". From that point on, it's pretty straightforward. The only tricky part is setting brightness and contrast and the use of Gimp's Eraser tool.



1. Select Layer -> Transparency -> Remove Alpha Channel



2. Select Colors -> Desaturate



3. Select Colors -> Brightness/Contrast



Settings for brightness (<0) and constrast (>0) may need some experimenting as it will determine the end result of the normal map, either a very flat normal map or a extremely extinguished one. Once you have found a proper setting for a particular object, you can save that setting as a preset for similar projects. In the above image I have used settings -55 and +55, but later I changed it to -60 and +65.

3. Select Filters -> Map -> Normal Map





By using 3D Preview you can preview the results of your settings, including the brightness and contrast settings.

Select Layer -> Transparency - Add Alpha Channel





Select Eraser



Don't get disturbed when you see everything erased on your image, although on a closer look you may be able to see something.





Last but not least
Start the Creation Kit and set the mod in which you want to use the new diffuse and normal texture maps. Make a copy of the Bee & Barb signage mesh if you want the sign on both sides of object, or the Bannered Mare signage if you want the sign on just one side.

Create a new texture set (Object Window -> Miscellaneous -> TextureSet). Select Diffuse under Map, press Edit and choose your diffuse texture (without the _n.dds ending). Select Normal/Glow under Map, press the same button but now has something like "...Image" as caption, and select the normal texture (with the _n.dds ending). Select your new object and right-click behind one of the available textures (3D Name) and in the white space behind the 3D Name right-click and select New Texture. It may not always be very obvious which 3D Name to choose, so this may also mean a bit of experimenting.
Instead of creating texturesets
Instead of creating texturesets with the Creation Kit, you can also define the necessary textures directly to the mesh with NifSkope. You will need to download NifSkope 2.0 Dev 7 or later for Skyrim Special Edition.



Expand the "Block List" (the top-left pane under the icon bar). Easy to see here that "5 NiTriShape" is the frame of the painting and "9 NiTriShape" is the canvas. Beneath "BSLightingShaderProperty" you will see "BSShaderTextureSet". For each texture set you can define 9 textures, from top to bottom:
  • 0 - diffuse map (no postfix)
  • 1 - normal map (postfix _n)
By selecting a shader texture set in the "Block List" you will see the used diffuse and normal maps in "Block Details". If you can't see either, select those in the View menu.

Select the shader texture set for the canvas. You only need to change the texture for the diffuse map, unless of course you want to use another texture for the normal map. Save every changed mesh under its own name!





Nameless NiTriShapes
Not all NiTriShapes will be named, in which case you will have to select a NiTriShape to see which textures are applied to which parts of the mesh. The green lines in the right pane will show you which texture maps will be applied to the parts of the mesh between the green lines.

Game settings
Everytime I encounter something that annoys me in the game, I will search the Game Settings to see if there is a setting I can change to remove the annoyance.

Annoying or repeating remarks
Many NPCs will address the player with the same remarks, like Jon Battle-Born, Braith or Nazeem. This can be simply avoided by changing a game setting. Open Gameplay -> Settings in the menu bar and select EditorID fAIMinGreetingDistance. Change the default setting of 150.000000 to 0.0000 and you will get rid of those remarks.



Blood splatter on screen
If you want to get rid of the blood splatter on screen, change the following settings to 0.000000:

fBloodSplatterFlareMult, fBloodSplatterFlareOffsetScale, fBloodSplatterFlareSize, fBloodSplatterMaxSize and fBloodSplatterMinSize.

Other settings can be left as is. Default settings can be seen in the image.



Same walk and run speeds
To even the walk and speeds between player and NPCs set fFastWalkInterpolationBetweenWalkAndRun to 0.00 and fJogInterpolationBetweenWalkAndRun to 1.00. This has no effect when an NPC is speed walking, such as one of the Whiterun guards.



Respawn timing
Changing these settings is kind of a cheat. Change these settings to any value you like: iDaysToRespawnVendor (default 2 days), iHoursToRespawnCell (default 240 hours) and iHoursToRespawnCellCleared (default 720 hours). This has no effect on the Cleared flag for clearable locations. Do not use zero values!



Player leveling
Making skills legendary to be able to level up (indefinitely?) seems pretty strange, to say the least. You have done your utmost to level a skill to 100, and to get past level 81, and by making a skill legendary, all your experience goes down the drain. There is a simple solution to level up to level 252. In Game Settings find fXPLevelUpMult and change the value to 2.189200.

This allows you to level up to level 252 without having to make any of the skills legendary. Further leveling past level 252 is of no real use, since you are already the highest leveled character in the game. I have done some testruns with lower values, which gave my higher levels up to about 1200, but with those levels the game is no fun anymore.

EXPLANATION
There are 18 skills that can be leveled up to skill level 100. Of these, 16 skills start at skill level 15, while two other skills start at level 20 and 25, which is race dependent. In total you will need to level up skills 1,515 times to get each skill level at 100. To get player level from 81 to 251, you need 170 skill level ups. A little math: (170 / 15.15) * 2.1892 = 24.5653. This is little below the XP level multiplier of 25, meaning you will reach level 252 plus a little, about 10 to 15% towards the next level. The other way round, you could calculate the necessary XP level multiflier: (170 / 15.15) * lvlmult = 25 -> lvlmult = 25 / 11.22.11.22 = 2.2279741199. However this will most probably not allow you to level up the last skill to 100. From that point on, at leas for me, it was a little experimenting with other values for the level up multiplier, somewhere between 2.18 and 2.23, but you would get quite close to 2.19.
I have not experimented with skill leveling above 100. I might, if at all, do that another time.

NPC sandboxing
NPCs will normally only sandbox on the same floor and never walk up- or downstairs, unless they are forced to through an AI Package. This can be changed by setting fSandboxCylinderBottom to -576 (default -100) and fSandboxCylinderTop to 576 (default 150).


Clothing and armor from resource packs
Modder's resource packs can provide the things you want, but can be packed with other things you don't want. Resources can be offered as loose meshes (and textures) or packed in an BSA file, which will always be attached to an ESP file. In particular with clothing and armor it can be a little disturbing. As an example I will use the leather armor, consisting of boots, cuirass, gauntlets and helmet. When these items are dropped or looked at in inventory, they will look the same for males and females. This also applies to all enchanted variants of the armor. As meshes these are commonly defined as *GND.nif or *GO.nif (GrouND, or Ground Object?). Double-clicking any of the armor parts (Object Window -> Items -> Armor) will show the world model of that part. Notice the following:
  • Male World Model: Armor\Studded\Male\body_GO.nif (boots: ..\boots_GO.nif; gauntlets: ..\gloves_GO.nif; helmet: ..\helmet_GO.nif)
  • Playable: checked
  • Biped Object: 32 - BODY (boots: 37 - Feet; gauntlets: 33 - Hands; helmet: 31 - Hair, 42 - Circlet)
  • Models FullLeatherCuirassAA (boots: FullLeatherBootsAA; gauntlets: FullLeatherGlovesAA; helmet: FullLeatherHelmetAA )
  • Keywords: VendorItemArmor



What we see in game, when the player or an NPC is wearing that armor, is defined by the armor addons: FullLeatherCuirassAA, FullLeatherBootsAA, FullLeatherGlovesAA and FullLeatherHelmetAA (Object Window -> Items -> ArmorAddon). The armor addons define the biped models for both male and female, and both 1st person and 3rd person. The biped objects are defined more explicitly. In case of this cuirass: 32 - BODY, 34 - Forearms and 38 - Calves. Below Additional Races all races have to be selected that can wear this armor part. The default armor parts apply to all humanoid and beast races, but there are separate helmets for Argonians, Khajiit and Orcs.

Male: Armor\Studded\Male\body_1nif
Male: Armor\Studded\Male\1stPersonbody_1.nif
Female: Armor\Studded\Female\body_1.nif
Female: Armor\Studded\Female\1stPersonbody_1.nif



Removing the VendorArmorItem keyword is no guarantee not accidently selling your armor items. By removing this keyword, blacksmiths will never buy those armor parts, but general good merchants, such as Belethor, fences and some market merchants, such as Grelka, will. Adding the VendorNoSale keyword is not an option. Best practice is to favorite those items in your inventory, so you will be warned by the yellow star, but it still is no guarantee to prevent an accidental sale!

Issues
  • An armor part does not show, including the underlying body part(s). This means that the ArmorAddon for the armor part is missing or not properly configured: male/female, 1st person/3rd person, biped objects and/or applicable races.
  • Part of the forearm is missing. This issue is mainly caused by using armor or clothing for original Skyrim (Oldrim), including the Legendary Edition. This can be fixed by using "Oldrim CBBE Hands for SSE" as an ArmorAddon for the forearms (only for CBBE outfits).

Credits
If you are using free modders resources be sure to credit the mod author!
Personal key bindings
The following examples show you how to create your personal key bindings:

  1. Add a book to inventory without reading the book
  2. Make a manual (hard) save without using the system menu

What do you need?
  • A quest (Object Window -> Character -> Quest): Add a new quest and give the quest an ID (_amm_MyHotKeysQST) and a Name, and uncheck Run Once. Nothing else is needed for the moment, so click OK.
  • A global variable (Object Window -> Miscellaneous -> Global): add a global variable for each hot key binding so that you can change key binding by using the console. Set the values for the book key (_amm_BookKeyValue) to 48 (B) and the save key (_amm_SaveKeyValue) to 62 (F4).
  • A script to initialize and register the keys, and functionality to process the keypress.
  • SKSE64 (either the version for SE 1.5.x or SE 1.6.x)

The script
The script needs a name (_amm_MyHotKeysScript) and needs to extend Quest. Although properties can be declared anywhere in a script, but always outside events en functions, I prefer to declare these near the top of the script. The same applies to variables, unless their use is restricted to a single event or function. Import Game is needed for 2 functions declared in the Game script.


The event OnInit is needed to initialize and register the hotkeys:


The event OnKeyUp is needed to process the action when the bound key is released:


Finally the 2 functions that process the actions after releasing the key. To add a book to the player's inventory without reading the book:

This function requires the book to be under the crosshair, when it says onscreen to read the book. By pressing and releasing the bound key, the book will be added to the player's inventory.

By pressing and releasing the default F4-key, a manual (hard) save will be made. The Wait function is a precaution in case the key is used when inside a menu, as this function does not count time when inside a menu, and so the save is made once the menu is closed.

Finalizing
  • Save the script (_amm_MyHotKeysScript.psc) and compile the script (Gameplay -> Compile Papyrus Scripts ...).
  • Open the quest in the Creation Kit and select the Scripts tab. Click Add to add the compiled script to the quest and set the properties.


Click OK and save your new mod with the .ESP extension.

See this page[en.uesp.net] for an overview of keyboard keys used by the game, and this page[www.creationkit.com] for the DXScanCode which have to be used. Also check the mods you use for configured key bindings.
About properties and variables in scripts
As you may have seen in the "Personal Key Bindings" example, variables can be defined in different ways. This depends on the way these are used in the script. In programming we differentiate variables as global, modular or local. Another category are the constants, which value can't be changed.

Properties are global variables that have access to game objects not part of the script. Properties are the variables that are stored in the save files, once these have been used at least once and you have saved your game, the main reason why you should never uninstall mods mid playthrough, at least if the mod contains scripts with properties. Modular variables are variables that are defined outside any events or functions and can be accessed by every event or function in a script, and within states. Local variables are variables that can only be accessed inside an event or function in which these are used. This means that you can use a variable with the same name in another event or function, even as a function parameter, of course unless that variable is defined as modular.

Constants are variables with a fixed value, such as "Int iBook = 27" in the example.

Try to define less properties as possible. There is no restriction to the use of modular and local variables. These variables will not be stored in the save files and are only used internally by the script.
Permanent Night Eye Vision
Intro
For those of us with poor eyesight, in particular in dark environments, including myself, I have created a mod that provides permanent night eye vision by equipping an enchanted ring. By unequipping the ring the effect will be disabled. I have removed the blur around the edges of the screen and the blue coloring, giving the view more natural colors.

If you think it's too much work, you can always download the mod from AFK Mods: https://www.afkmods.com/index.php?/files/file/2512-ring-of-night-eye-se/

What is needed
  • a ring (any unenchanted ring will do); select the Editor ID of that ring and rename it; you may also want to change the Name of the ring
  • a magic effect
  • an enchantment
  • reconfigured Imagespace Modifiers: NightEyeImod, NightEyeImodIntro and NightImodOutro. Select the Editor ID of each of these modifiers and give these your own ID

Magic Effect
Select the NightEyeEffect and rename the Editor ID. Most important is to change the Effect Archetype to Script, and the Casting Type to Constant Effect. If you don't like the visual effect and sounds, you can set the effects and sound to NONE. Later you will need to add the script and set the properties.



Enchantment
Create a new Enchantment with type Enchantment and delivery Self or use an existing enchantment of type Apparel and delivery Self. If using an existing enchantment, remove any of the existing effects listed. Right-click in the empty effects box and select New. Choose your night eye magic effect and press OK.





Imagespace Modifiers: NightEyeImod



Change the settings of Tint RGBA and Fade RGBA to the values in the above image. Set the Radial Blur Str, Rampup and Start to 0.0000. If you are not happy with various settings, you can slightly change those settings and the settings for Brightness, Saturation and Contrast until you're happy with the result in game.

Imagespace Modifiers: NightEyeImodIntro



In this dialog window you only have to change the Tint, Fade and Radial Blur settings, when applicable. Change the Tint and Fade settings to the same values as for NightEyeImod.

Imagespace Modifiers: NightEyeImodOutro



In this dialog window you only have to change the Tint, Fade and Radial Blur settings, when applicable. Change the Tint and Fade settings to the same values as for NightEyeImod.

Script



Copy the above script and save it in your Data\Source\Scripts folder. I may sometimes be necessary to also save the script in the Data\Scripts\Source folder. Compile your script (Gameplay -> Compile Papyrus Scripts ...). Click Add to the right of the Papyrus Scripts box and select your compiled script.

The top of the script contains properties, which have to be tied to in game objects. Select the script and press properties. Attach the properties as follows:

MainFX: NightEyeImod (in the example _amm_NightEyeImod)
fDelay: don't change, leave at it's default
NightEyeTransitionGlobal: NightEyeTransitionGlobal
fIModStrength: don't change, leave at it's default
IntroFX: NightEyeImodIntro (in the example _amm_NightEyeImodIntro)
OutroFX: NightEyeImodOutro (in the example _amm_NightEyeImodOutro)

Place the ring in game
Place the ring somewhere in the game, of course after activating your new mod, preferrably on an easy to access spot. When the ring is in my inventory I prefer to attach it to one of the eight hot keys (below the function keys) by favoriting the ring (F) and attaching it to a hot key (Q).

Ready to use mod
If you don't want to create a new mod yourself, you can download my mod here[www.afkmods.com].
Unnecessary Quest Locks
Many locations in the game are quest locked, meaning that you will not have access to that location or parts of that location. However, some of those quest locks are not necessary at all, as related quests can still be completed, although not in the way the developers have intended. This section will show you how to remove those quest locks.

Kilkreath Ruins - The Break of Dawn
There is no need to pick up Meridia's beacon from the first possible boss chest you loot. Even if you do, there is no need to place the beacon in the pedestal at Meridia's statue. Enter Kilkreath Ruins and traverse the place as usual. At the end take Dawnbreaker and Meridia will lift you out of the ruins, name you her champion and the sword will be your reward.

In the exterior cell KilkreathRuinsExterior02 XMarker dunKilkreathBlockerMarker keeps the rubble and rocks blocking the front door of the ruins. Right-click the marker in the Render window, choose Edit or choose the marker in the Cell View window and mark it as Initially Disabled.

Orphan Rock - The Blessings of Nature
No need to talk to Danica Pure-Spring about the tree Gildergreen. Kill the 3 witches and the hagraven and loot Nettlebane from the hagraven's corpse. By doing so, the related quest will automatically start and you will be directed to Danica.

In exterior cell OrphanRockExterior03 UNmark T03OrphanRockEnableMarker as Initially Disabled.

NOTE
There is a mod available on NexusMods to unlock most of the questlocks and also to change many doors that require a key to a certain locklevel so those doors can be lockpicked: Skyrim Unlocked[www.nexusmods.com].
Activators
A new activator
When creating a new activator, either based on an existing activator or converting a MiscObject or Static object to an activator, you will notice that your new activator doesn't stay fixed at the position you have placed it in the Creation Kit. The object will fall to the ground if you don't take measures to keep the object in place.



Havok
The reason why activators are falling to ground level is caused by "havok settle". An example of such an object is the spigot on the Sleeping Tree. Even if you are using the original activator (as in the above image) the activator may not have the correct settings when dragged and dropped from the Object window to the Render window. This can be checked by selecting an activator in the Object window, right-click and select "Use Info". In the bottom pane of the Use Info window double-click to view an activator in the Render Window, right-click the activator and select "Edit".

As you can see in the following image, at the bottom, "Don't Havok Settle" needs to be checked and in the Scripts tab you will need to add the script "defaultDisableHavokOnLoad.psc".



The "defaultFakeHarvestableScript.psc" may need some adjustments. You can set the following properties for this script:

DaysToResetFakeHarvest (GlobalVariable)
FailureMessage (Message)
HarvestMessage (Message)
HarvestSound (Sound)
IngredientHarvested (Ingredient)
PotionHarvested (Potion)



The function to harvest is written in such a way that you can set both the properties for an Ingredient and a Potion.

Notes
  • There's no need to follow the above procedure for activators without a NIF model.
  • There's also no need to follow the above procedure for activators that do not need Havok Settle, such as certain traps; just check references in the Render window which are not at ground level.
  • You can set DaysToResetFakeHarvest to your own GlobalVariable; the value is a short integer that can only be set to full days (24 hours).
Positioning objects
When placing items on a table, on a shelf or otherwise, you may find those items to be not where these should be. A cup or tankard on a table may not be where you have placed those. It's quite simple the resolve this issue.

Once you have placed the item raise it a bit (increase the Z-position of the item). Once raised, press the F-key to align the item with the object on which it is supposed to be placed properly.

Images to show the differences will be added soon. But, you may already see the difference in the color of the yellow cross beneath the item before and after the use of the F-key.
Images in books and notes
Of course there is the possibility to use images provided by the Unofficial Elder Scrolls Pages, which are available under the CC BY-SA 2.5 DEED Attribution-SharAlike 2.5 Generic and later licenses.However, it requires you to mention this license when using the images.

What do you need?
  • The Creation KIt, whatever version
  • Gimp 2.0

In the Creation Kit find an object you wish to use in a book or note. Any object will do, whether actor, armor, weapon, or whatever.

Select the object, right-click and select Preview. By default the object, whatever it is, will be displayed with a gray background and a ground plane.

Uncheck "Ground plane - On" to remove the ground plane. If the object doesn't contain any grey foreground colors like the background colors, you can leave it as is, otherwise press the "SKY" button in the button bar once or twice until the background color changes from grey to blue. Be sure to have the "Toggle Lights" button (left of the 'SKY' button) turned on, and the object will have a clearer lighting.

Use the left mouse button in the preview window to position the object as you would like to present it, preferably in a way to create a square image. The preview window can be enlarged horizontally and vertically. If you're satisfied, press Alt-PrintScreen. Switch to Gimp and press Ctrl-V or Crtl-Shift-V if an image is already opened in Gimp.

Select the "Rectangle Select Tool" and select an area around the object, preferably a square or rectangular selection, whichever suites you.Your can resize your selection by using the areas between the corner blocks horizontally or vertically. Using the mouse in the center area will allow you to reposition the selection. Don't mind if the selection is just 1 or maybe 2 pixels off, in this case 592 x 593. Press Ctrl-C and Shift-Ctrl-V to copy the selection into a new image.

Select the "Color Tool" and select the blue or grey area around the object.Be sure the selected foreground color is white. Select the "Bucket Fill Tool" and left-click the blue or grey selected area. Don't forget any enclosed areas.

Of course you want your object to merge in with the color of the book or note page. Be sure the white background color is still selected. Choose "Layer", "Transparency" and "Color to Alpha...". Choose "Select", "None".

To resize the image choose "Image", "Scale image ..." and enter width and height, but be sure to keep the ascpect ratio the same.
The Courier
I always hated it when the courier visited the player at the most inconvenient places (the player in battle) or when the player was in sneak mode. Whatever, I just don't want the courier to address the player outside relatively safe settlements. The solution: just a couple of conditions that restrict the locations where the courier can address the player.

This simply means you have to add any required conditions to the WICourier quest.Under Quest Stages, select stage 0 and add any conditions in the Contitions box:



You can add or remove any location where you want the courier to visit the player with an important note or not.

Ofcourse you can use the Provincial Courier Service, but the first time the courier is trying to find the player, this can be when the player is in battle or in sneak mode, and sometimes even when you're awaking in your home (with the courier standing next to your bed).
Using NifSkope
This is not a guide on using NifSkope, just a few tips and hints, and refers to NifSkope version 2.0 Dev 7.

Textures
When first opening a NIF file in NifSope you may see the NIF file's 3D image in purple color, but not the use of any textures on the 3D image. If you want to see the used textures, in the icon bar select the icon with the light bulb, and in the drop down menu select the icon "Show Textures".

Change textures
To change the textures of a NIF file's 3D image, expand the "Block List" under the icon bar and look for blocks named "BSTriShape" (there may be more than one). Each BSTriShape will be marked on the 3D image with green lines, and the used textures can be change for that particular part of the NIF image. Under the BSTriShape you will see "BSShaderTextureSet" where you can define the textures that you want to use, a total of 9 different textures:
  • 0 - Diffuse: *.dds (sometimes *_d.dds)
  • 1 - Normal: *_n.dds
  • 2 - Emissive or Glow: *_g.dds or *_sk.dds
  • 3 - Height/Parallax: *_p.dds
  • 4 - Cubemap: *_e.dds
  • 5 - Reflection/Environment Mark: *_m.dds
  • 6 - Inner Layer Diffuse or Inner Layer Depth: ?
  • 7 - Subsurface: ?
  • 8 - ?

Not everything is known to me yet, or if any of those unknown texture settings are used in the game. As far as I know now at least diffuse, normal, glow, parallax and cubemap textures are used in the game. If anyone has additional information, feel free to correct me.

Additional information can be found at Arcance University: NIF Data Format[wiki.beyondskyrim.org]

I will add images in due time.
Useful things to know
When creating mods with the Creation Kit, you may sometimes encounter issues while testing your new mod. This section may provide some solutions.

Creation Kit
If you are using or going to use the latest version of the Creation Kit (v 1.6.1130), be sure to install the Creation Kit Extended Platform[www.nexusmods.com]. Apart from getting rid of all the annoying "Warnings", the top bar will show you if the mod you are creating is ESL capable. When it is, you will also see how many records are left to include in your mod. If the number exceeds 4096 records, the mod has to be an ESP or ESM for game version 1.6.1130 (and maybe also 1.6.1170). If the number of records left is less than 2048, the mod has to be an ESP or ESM for game version 1.6.640. To my regret I can't test this as I'm using game version 1.6.1130, and I will stay using this version until the possible "last" update.

Unused master files
When creating a new mod, you may want to remove unused masters, for whatever reason. This can be done with SSEEdit. Right-click your mod and in the menu choose "Clean Masters (= Remove all unused masters)". Have you generated any FaceGen data (Ctrl-F4) in the Creation Kit before removing masters? Then generate FaceGen Data again, otherwise your game will CTD when getting near any of the added NPCs in your mod, simply because reference IDs for those new NPCs will have changed after removing any masters.

Decompile PEX binaries
Often the source of scripts (PSC) is not included with the mod, but you want to know how the mod author solved an issue or problem by using scripts. That's where the Champollion Decompiler by Orvid comes in:

Champollion v1.1.3 decompiler[github.com]

I prefer to install Champollion in a subfolder of my Skyrim SE Tools folder. Actually it's not installing, but just extracting the ZIP file in that folder. I copy PEX files to this subfolder, where Champollion.exe resides, and use a small batchfile to deceompile all PEX files in this folder. I have tried the UI apps for Champollion, but found those too time consuming when I want to have a look at more than one PEX file. Create a batchfile (e.g. decompile.bat) in the same subfolder:

Champollion *.pex

When reading the source scripts, don't be alarmed by messages indicating that Champollion skipped compiler generated states, such as GetState or GotoState.

If you need additional info, you can add various parameters to this batch commandline. See the ReadMe.md on this page[github.com].

Script file locations
Sometimes you may encounter the "The parent script does not exist, please choose one that does" error. When trying to compile a source script this means that a parent script (a .psc file can't be found in the proper location, and the proper location may depend on the version of the game you are using.

By default script files are stored in
  • the /Data/Scripts/ folder if these are executables (PEX files)
  • the /Data/Source/Scripts/ folder these are source files (PSC files)

However, this can be different between game version. Just be sure that you have
  • executable script files in your /Data/Scripts/ folder
  • source script files in your /Data/Source/Scripts/ folder

If the error message persists
  • copy PSC source files from /Data/Source/Scripts/ to /Data/Scripts/Source/ and/or the other way round
56 Comments
Altbert  [author] 26 Jul @ 12:54pm 
New section: About properties and variables in scripts.
Altbert  [author] 9 Nov, 2023 @ 3:13pm 
It may be better to ask such questions here:
https://steamproxy.net/groups/SkyrimCKPublic
More users may be able to answer your questions.
Altbert  [author] 9 Nov, 2023 @ 3:10pm 
AI Packages need to be carefully designed. A generic sandbox always needs to be last in the package order. I think you mean sandbox 10x24 and sleep 20x8.For sandbox you can use Any day, any time, and make it last in package order.Use the < and > buttons to put it below any other AI package. As for NPCs just standing there, you may have assigned them a marker with radius = 0, which gives them no room to move around. For sandboxing location assign the cell (=appartment) so they can more around the appartment. For sleep assign them a particular bed to sleep in. That's all I can say for now with the information given.
Jmacc 9 Nov, 2023 @ 1:10pm 
I made a mod that adds an apartment building to markarth, I gave the citizens two AI packages each, sandboxing at 1024, and sleep20x8. But the npcs just stand there. Any tips?
Jmacc 28 Oct, 2023 @ 4:14pm 
oh, You are the first person i asked, once i get at least one more i might start a group
Altbert  [author] 28 Oct, 2023 @ 3:35pm 
That's a scripting (programming) language use for various purposes.
Jmacc 28 Oct, 2023 @ 2:29pm 
Could you tell me what that is?
Altbert  [author] 28 Oct, 2023 @ 2:25pm 
I might be available for Papyrus scripting.
Jmacc 28 Oct, 2023 @ 2:23pm 
whatever the majority of the group decides
Altbert  [author] 28 Oct, 2023 @ 2:22pm 
I could be interested, but it depends what you're up to!