Mod:Creation Kit/Hello World

In this tutorial, we will make a mod that pops up a message box that says Hello World.

PreRequisites

 * 1) Install Creation Kit (From the Bethesda.net launcher)
 * 2) Update Fallout 4 to Mod:Creation Kit/Enable Loose Files
 * 3) Update Fallout 4 to Mod:Creation Kit/Enable Debug Logging

Steps

 * 1. Load Fallout 4 Resources
 * Start Creation Kit
 * File -> Data... -> Double Click Fallout4.esm
 * Hit [OK]


 * 2. Set a default namespace


 * When a namespace is set, the Creation Kit places all of the scripts you generate under Data/Scripts/. This is handy for keeping track of your which mods various scripts support.


 * File -> Preferences
 * Scroll to the right and select the "Scripts" Tab
 * Within "Default namespace", enter "HW". (HW are the initials for this mod)
 * Hit [Apply]


 * 3. Create a Mod:Creation Kit/Message


 * Click On/Highlight "Message"
 * Double Click "Blank Message" in the right pane
 * ID : HelloWorld
 * Title : Hello World Title
 * Short Title : Hello Title
 * Message Text : Hello World!
 * Check the Box : [x] Message Box
 * Hit [OK]
 * Hit [YES] when asked if you wish to create a new Form


 * 4. Create a Mod:Creation Kit/Quest
 * The best way to introduce content into the game is by creating a new Quest that adds the content or performs various actions.


 * Within the left pane of the Mod:Creation Kit/Object Window.
 * Click On/Highlight "Quest"
 * Within the right pane of the Object Window, Right-Click the background and select "New"
 * ID : HelloWorldQuest
 * NOTE : "Start Game Enabled" and "Run Once" are checked. For this example, the default values are fine.
 * Hit [OK] NOTE : Scripts are not enabled until the quest is created


 * 5. Create a Script for the Mod:Creation Kit/Quest and inject the HelloWorld Mod:Creation Kit/Message


 * Within the left pane of the "Object Window", Make sure "Character" -> "Quest" is selected
 * Enter "HelloWorld" into the Filter box
 * Within the right pane, re-open The "HelloWorldQuest"
 * Click on the "Scripts" Tab
 * Click [Add] => [New Script]
 * Name : HelloWorldQuestScript NOTE : You should see your "HW" in the Namesapce
 * When the Properties Window appears, click [Add Property]
 * Type : Message
 * Name : pHelloWorld
 * Hit [OK]
 * Hit [OK] (To exit Property editor)


 * NOTE : When Properties start with the letter "p", The CK searches all objects matching the TYPE for an obvious match. Since there is a MESSAGE named "HelloWorld", it automatically fills the property for you. If you had named the property something else, or given the message box a different ID, you would have needed to specify the specific MESSAGE to inject.


 * 6. Edit the script to show the message


 * Open up HelloWorldQuest and go to the script if you are not already there.
 * Right Click [HW:HelloWorldQuestScript] and Select "Edit Source"
 * Add the following to the bottom of the file
 * '' NOTE: Spacing is important. If you are pasting from this page, paste into NotePad first to eliminate format and then paste into the CK edit window.

Event OnInit pHelloWorld.Show Debug.MessageBox("Hello from a Debug MessageBox!") EndEvent


 * In the Edit Script Window, goto File -> Save (When you save, CK automatically attempts to compile the code)
 * Close the Script Editor
 * Hit [OK] on the HelloWorldQuest window
 * CK -> File -> Save
 * File name: HelloWorld
 * Save as type: TES Plugin Files (*.esp)
 * Hit [SAVE]
 * [Optional] Exit Creation Kit


 * 7. Test the Mod


 * Startup Fallout 4
 * Hit [Play]
 * Hit [Mods]
 * Hit [HOME] to bypass the user login
 * Select [HelloWorld], make sure it is checked
 * ESC to back out
 * Hit [OK] when it detects Mod change (reloads mods)
 * Load an existing save game or start a new game.


 * You should see 2 message boxes pop up. One from the Message you created and the other from the debug.

Lessons Learned

 * 1. Dependency Injection


 * Papyrus works off the principles of Dependency Injection: In general, you should create objects and Inject them into your script from within the Creation Kit.


 * 2. Avoid Debug.MessageBox


 * When scripts are archived into release archives, the Creation Kit will strip out all Mod:Creation Kit/Debug Script methods such as Debug.MessageBox, Debug.TraceAndBox, etc... This example creates and injects a MESSAGE object because it is technically required to get "Hello World" to show up in a released mod. You can not rely on Debug methods (specifically the message box function) as part of a mod.

If things aren't working

 * Make sure you enabled loose files. A common mistake is to edit the wrong INI file. Make sure you edit the file under Documents/My Games/Fallout 4.